/**
 * Game Iframe SDK - Types Definition
 */
export declare const MESSAGE_TYPES: {
    readonly SERVER_PUSH_DATA: "SERVER_PUSH_DATA";
    readonly SERVER_PUSH_LEADERBOARD: "SERVER_PUSH_LEADERBOARD";
    readonly GAME_READY: "GAME_READY";
    readonly ANSWER_REPORT: "ANSWER_REPORT";
    readonly FINAL_RESULT: "FINAL_RESULT";
    readonly GET_LEADERBOARD: "GET_LEADERBOARD";
};
export type MessageType = typeof MESSAGE_TYPES[keyof typeof MESSAGE_TYPES];
/**
 * Payload sent in SERVER_PUSH_DATA
 */
export interface PushDataPayload {
    /** Game ID */
    game_id: string;
    /**
     * List of items - dynamic structure
     */
    data?: any[];
    /** Resume data */
    completed_question_ids?: Array<{
        id: string;
        result: 0 | 1;
        [key: string]: any;
    }>;
    [key: string]: any;
}
export interface CompletedQuestionInfo {
    id: string;
    result: 0 | 1;
    [key: string]: any;
}
export interface AnswerReportData {
    question_id: string;
    question_index?: number;
    choice: string | number;
    result: 0 | 1;
    time_spent?: number;
    [key: string]: any;
}
export interface FinalResultData {
    score: number;
    total: number;
    correct: number;
    wrong: number;
    details?: any[];
    [key: string]: any;
}
export interface LeaderboardPlayer {
    rank: number;
    name: string;
    score: number;
    [key: string]: any;
}
export interface LeaderboardData {
    top_players: LeaderboardPlayer[];
    user_rank?: LeaderboardPlayer | null;
}
export interface GameIframeSDKConfig {
    iframeOrigin: string;
    readyDelay?: number;
    autoSendOnReady?: boolean;
    debug?: boolean;
}
export declare const DEFAULT_CONFIG: Required<GameIframeSDKConfig>;
export interface SDKEvents {
    gameReady: void;
    answerReport: AnswerReportData;
    finalResult: FinalResultData;
    leaderboardRequest: {
        top: number;
    };
    error: {
        message: string;
        error?: any;
    };
    log: {
        level: string;
        message: string;
        data?: any;
    };
}
export type SDKEventName = keyof SDKEvents;
export type SDKEventHandler<T extends SDKEventName> = (data: SDKEvents[T]) => void;
//# sourceMappingURL=types.d.ts.map