UNPKG

@b3dotfun/leaderboards

Version:

SDK to interact with leaderboards smart contract

77 lines (76 loc) 3.28 kB
import type { Address, EIP1193Provider, WriteContractReturnType } from "viem"; import { SupportedChainId } from "./config"; import type { LeaderboardProperties, Score } from "./types"; export declare class Leaderboard { private contract; private contractAddress; private chain; private walletKey; constructor(chainId: SupportedChainId, walletKey?: string, contractAddress?: string); connect(provider?: EIP1193Provider): boolean; private handleError; addAdmin(newAdmin: Address): Promise<WriteContractReturnType>; removeAdmin(admin: Address): Promise<WriteContractReturnType>; updateLeaderboard(startTime: number, endTime: number, title: string): Promise<WriteContractReturnType>; incrementScores(inputs: Array<{ user: Address; score: number; timestamp: number; }>): Promise<WriteContractReturnType>; decrementScores(inputs: Array<{ user: Address; score: number; timestamp: number; }>): Promise<WriteContractReturnType>; updateScores(inputs: Array<{ user: Address; score: number; timestamp: number; }>): Promise<WriteContractReturnType>; overwriteScores(inputs: Array<{ user: Address; score: number; timestamp: number; }>): Promise<WriteContractReturnType>; blacklistUsers(users: Address[]): Promise<WriteContractReturnType>; unblacklistUser(user: Address): Promise<WriteContractReturnType>; addEligibleUsers(users: Address[]): Promise<WriteContractReturnType>; removeEligibleUsers(users: Address[]): Promise<WriteContractReturnType>; increaseUserAttempts(user: Address, amount: number): Promise<WriteContractReturnType>; decreaseUserAttempts(user: Address, amount: number): Promise<WriteContractReturnType>; getUserAttempts(user: Address): Promise<number | undefined>; /** * Get all users and their scores, sorted by score in descending order */ getAllScores(): Promise<Score[]>; /** * Get top N users and their scores * @param limit Number of top users to return */ getTopScores(limit: number, startIndex?: number): Promise<Score[]>; /** * Get player ranking and score * @param userAddress Address of the player to look up */ getPlayerRanking(userAddress: Address): Promise<Score | undefined>; getUserScore(user: Address): Promise<{ score: number; lastUpdated: number; } | undefined>; getLeaderboardUserCount(): Promise<number | undefined>; getLeaderboardStartTime(): Promise<number | undefined>; getLeaderboardEndTime(): Promise<number | undefined>; isLeaderboardActive(): Promise<boolean>; isLeaderboardEnded(): Promise<boolean>; isPrivate(): Promise<boolean>; isUserBlacklisted(user: Address): Promise<boolean>; isUserEligible(user: Address): Promise<boolean>; getEligibleUsers(): Promise<string[]>; getAdmins(): Promise<string[]>; getBlacklistUsers(): Promise<string[]>; getLeaderboardProperties(): Promise<LeaderboardProperties | undefined>; getRemainingTime(): Promise<number | undefined>; getTimeUntilStart(): Promise<number | undefined>; getSlug(): Promise<string | undefined>; getTitle(): Promise<string | undefined>; }