@myria/leaderboard-ts-sdk
Version:
Myria Leaderboard typescripts SDK which will manage leaderboard for game developers
145 lines (144 loc) • 3.57 kB
TypeScript
import { GetLeaderboardDetailsInfo } from './ILeaderboard.types';
export interface RewardDetail {
type: string;
tokenAddress: string;
amount: string;
}
export interface RankRange {
min: number;
max: number;
}
export interface RewardItem {
name: string;
detail: RewardDetail;
rank: RankRange;
}
export declare enum DistributionType {
FIXED = "FIXED",
PERCENTAGE = "PERCENTAGE"
}
export interface RewardItemUpdate extends RewardItem {
id?: string;
}
export interface RewardDistribution {
distributionType: DistributionType;
period: number;
isApplyRewardAllPeriods: boolean;
rewardPoolAmount: number;
items: RewardItem[] | RewardItemUpdate[];
}
export interface RewardData {
name: string;
detail: RewardDetail;
rank: RankRange;
period: number;
updatedAt: string;
createdAt: string;
id: number;
metadata: Record<string, any>;
}
export interface Rewards {
[key: string]: RewardPeriod;
}
export interface RewardDataResponse {
data: RewardData[];
}
export interface RewardDistributionConfigParams {
leaderboardId: string;
rewardConfig: RewardDistribution;
}
export interface Accumulate {
claimedAmount: number;
availableAmount: number;
tokenIcon: string;
tokenSymbol: string;
availableRewardIds: number[];
}
export interface RewardDetailsItem {
reward: RewardData;
createdAt: string;
id: number;
rewardId: number;
userId: string;
status: string;
period: number;
metadata: {
amount: string;
claimedAt: string;
transactionHash: string;
};
}
export interface PaginatedMeta {
totalItems: number;
itemCount: number;
itemsPerPage: number;
totalPages: number;
currentPage: number;
}
export interface GetRewardData {
items: RewardDetailsItem[];
meta: PaginatedMeta;
accumulate: Accumulate;
}
export interface GetRewardsParams {
userId: string;
leaderboardId: number;
rewardStatus?: string;
page?: number;
limit?: number;
}
export interface CommonHeaderAuthorization {
xSignature: string;
xStarkKey: string;
xTimestamp: string;
}
export interface PreClaimParams extends CommonHeaderAuthorization {
userId: string;
leaderboardId: number;
rewardIds: number[];
}
export interface PreClaimData {
rewardClaimClientId: string;
rewardClaimContractAddress: string;
rewardTokenContractAddress: string;
rewards: RewardData[];
message?: string;
}
export interface PostClaimRewardParams extends CommonHeaderAuthorization {
userId: string;
leaderboardId: number;
rewardIds: number[];
transactionHash?: string;
errorMessage?: string;
}
export interface RewardPeriod {
rewardPoolAmount: number;
distributionType: DistributionType;
items: RewardData[];
}
export interface RewardDistributionData {
isApplyRewardAllPeriods: boolean;
currentPeriod: number;
rewardPoolAmountInCurrentPeriod: number;
data: Rewards;
}
export interface SimplifiedRewardDistributionData {
distributionType: DistributionType;
period: number;
isApplyRewardAllPeriods: boolean;
rewardPoolAmount: number;
items: RewardItem[];
}
export interface RewardInCurrentPeriod {
isApplyRewardAllPeriods: boolean;
currentPeriod: number;
data: RewardPeriod;
}
export interface RewardInPeriod {
isApplyRewardAllPeriods: boolean;
period: number;
data: RewardPeriod;
}
export interface GetRewardsByPeriod extends GetLeaderboardDetailsInfo {
period: number;
}