epicleaderboard-ts
Version:
Universal TypeScript SDK for EpicLeaderboard - Works in Node.js and browsers
86 lines (85 loc) • 2.59 kB
TypeScript
/**
* 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;