@b3dotfun/leaderboards
Version:
SDK to interact with leaderboards smart contract
77 lines (76 loc) • 3.28 kB
TypeScript
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>;
}