import { Rewards } from './IReward.types';
export interface InitLeaderboardParams {
    env: any;
    apiKey: string;
}
export interface CreateLeaderboardParams {
    name: string;
    description: string;
    updateScoreStrategy: string;
    gameName: string;
    totalPeriods: number;
    livePeriodInDays: number;
    availableAt?: string;
    enableMetadata: boolean;
}
export interface Whitelist {
    createdAt: string;
    updatedAt: string;
    developerId: string;
    walletId: string;
    apiKey: string;
    name: string;
    status: string;
}
export interface LeaderboardData {
    name: string;
    description: string;
    updateScoreStrategy: string;
    gameName: string;
    totalPeriods?: number;
    livePeriodInDays: number;
    availableAt?: string;
    enableMetadata?: boolean;
    developerId?: string;
    status: string;
    currentPeriod: number;
    dataPersistenceInDays: number;
    expireAt: string;
    gameMetadata: JsonObject;
    configMetadata: JsonObject;
    updatedAt?: string;
    createdAt?: string;
    id: number;
    enablePeriodRefresh?: boolean;
    isApplyRewardAllPeriods: boolean;
    metadata?: Record<string, any>;
    airdropContractAddress: string;
    daysToNextPeriod: string;
    whitelist?: Whitelist;
    rewards?: Rewards;
}
export interface GetLeaderboardDetailsInfo {
    leaderboardIdOrName: string;
}
type JsonValue = string | number | boolean | null | JsonObject | JsonArray;
interface JsonObject {
    [key: string]: JsonValue;
}
interface JsonArray extends Array<JsonValue> {
}
export interface SetGameMetadataParams {
    leaderboardId: number;
    gameMetadata: JsonObject;
}
export interface SetConfigMetadataParams {
    leaderboardId: number;
    configMetadata: JsonObject;
}
export interface SetGlobalMetadataParams {
    leaderboardId: number;
    configMetadata: JsonObject;
    gameMetadata: JsonObject;
}
export interface IQueryLeaderboardsParams {
    page?: number;
    limit?: number;
}
export declare enum EOrderBy {
    ASC = "ASC",
    DESC = "DESC"
}
export interface QueryFilter {
    userId?: string;
    period?: number;
}
export interface IQueryScoreParams {
    leaderboardId: number;
    period?: number;
    limit?: number;
    page?: number;
    sortingField?: string;
    orderBy?: EOrderBy;
    filters?: QueryFilter;
}
export interface IQueryScoreByPlayerParams {
    leaderboardId: number;
    userId: string;
    period?: number;
}
export interface IQueryScoresResp {
    id: number;
    userId: string;
    leaderboardId: number;
    period: number;
    score: number;
    createdAt: string;
    updatedAt: string;
    rank: number;
}
export interface IScoreByUserResp {
    score: number;
    leaderboardId: number;
    userId: string;
    period?: number;
    leaderboard: LeaderboardData;
    user: IUserLeaderboard;
}
export interface IUserLeaderboard {
    userId: string;
    username: string;
    displayName?: string;
    avatarUrl?: string;
}
export interface IUpdateUserInfoParams {
    userId: string;
    username: string;
    displayName?: string;
    avatarUrl?: string;
}
export interface IItemsPostScore {
    userId: string;
    score: number;
    username?: string;
    displayName?: string;
}
export interface IPostScoreParams {
    leaderboardId: number;
    items: IItemsPostScore[];
}
export interface IPostScoreItemResp {
    id: number;
    score: number;
    userId: string;
    username: string;
    displayName: string;
}
export interface IPostScoreResponse {
    success: IPostScoreItemResp[];
    failed: IPostScoreItemResp[];
}
export {};
