UNPKG

epicleaderboard-ts

Version:

Universal TypeScript SDK for EpicLeaderboard - Works in Node.js and browsers

86 lines (85 loc) 2.59 kB
/** * EpicLeaderboard TypeScript SDK * Universal leaderboard solution for games * Works in both Node.js and browser environments */ export interface EpicLeaderboardGame { gameID: string; gameKey: string; } export interface EpicLeaderboardConfig { primaryID: string; secondaryID: string; } export interface EpicLeaderboardEntry { rank: number; username: string; score: string; country: string; meta: Record<string, string>; } export interface EpicLeaderboardGetEntriesResponse { entries: EpicLeaderboardEntry[]; playerEntry: EpicLeaderboardEntry | null; } export declare enum Timeframe { AllTime = 0, Year = 1, Month = 2, Week = 3, Day = 4 } export declare enum TimeframeUpdateResult { None = 0, AllTime = 1,// 1 Year = 2,// 2 Month = 4,// 4 Week = 8,// 8 Day = 16 } export declare enum IsUsernameAvailableResponse { Available = 0, Invalid = 1, Profanity = 2, Taken = 3 } export declare class EpicLeaderboardUtils { /** * Constructs URL parameters from a key-value map */ static constructParamsURL(params: Record<string, string>): string; /** * Serializes a metadata map to JSON string */ static serializeMap(metadata: Record<string, string>): string; /** * Deserializes a JSON string to a metadata map */ static deserializeMap(json: string): Record<string, string>; } export declare class EpicLeaderboardError extends Error { statusCode?: number | undefined; constructor(message: string, statusCode?: number | undefined); } export declare class EpicLeaderboard { private baseURL; constructor(baseURL?: string); /** * Gets leaderboard entries */ getLeaderboardEntries(game: EpicLeaderboardGame, leaderboard: EpicLeaderboardConfig, username: string, timeframe?: Timeframe, aroundPlayer?: boolean, local?: boolean): Promise<EpicLeaderboardGetEntriesResponse>; /** * Submits a leaderboard entry with metadata */ submitLeaderboardEntry(game: EpicLeaderboardGame, leaderboard: EpicLeaderboardConfig, username: string, score: number, metadata?: Record<string, string>): Promise<TimeframeUpdateResult>; /** * Checks if a username is available */ isUsernameAvailable(game: EpicLeaderboardGame, username: string): Promise<IsUsernameAvailableResponse>; /** * Makes HTTP requests using fetch API (available in both Node.js 18+ and browsers) */ private makeRequest; } export default EpicLeaderboard; export declare const epicleaderboard: EpicLeaderboard;