/**
 * 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;
