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;
}
