/**
 * Game Iframe SDK - Core
 * SDK chính - compose các layers: MessageHandler, MessageSender
 */
import { EventEmitter } from './EventEmitter';
import { MessageHandler } from './MessageHandler';
import { MessageSender } from './MessageSender';
import { GameIframeSDKConfig, SDKEvents, PushDataPayload, LeaderboardData } from './types';
/**
 * GameIframeSDK - Main SDK class
 * Composes MessageHandler và MessageSender
 */
export declare class GameIframeSDK extends EventEmitter<SDKEvents> {
    private config;
    private messageHandler;
    private messageSender;
    private pendingData;
    private isReady;
    constructor(config: GameIframeSDKConfig);
    /**
     * Set iframe element reference
     */
    setIframe(iframe: HTMLIFrameElement | null): this;
    /**
     * Get current iframe
     */
    getIframe(): HTMLIFrameElement | null;
    /**
     * Check if game is ready
     */
    isGameReady(): boolean;
    /**
     * Check if sender is ready (iframe available)
     */
    isSenderReady(): boolean;
    /**
     * Send game data to iframe
     */
    sendGameData(data: PushDataPayload): boolean;
    /**
     * Send leaderboard data to iframe
     */
    sendLeaderboard(data: LeaderboardData): boolean;
    /**
     * Queue data to be sent when game is ready
     */
    queueGameData(data: PushDataPayload): this;
    /**
     * Clear queued data
     */
    clearQueuedData(): this;
    /**
     * Force reload iframe
     */
    reloadIframe(): boolean;
    /**
     * Cleanup and destroy SDK
     */
    destroy(): void;
    /**
     * Get MessageHandler instance for advanced usage
     */
    getMessageHandler(): MessageHandler;
    /**
     * Get MessageSender instance for advanced usage
     */
    getMessageSender(): MessageSender;
    /**
     * Setup event forwarding from MessageHandler to SDK events
     */
    private setupEventForwarding;
    /**
     * Send queued data
     */
    private sendQueuedData;
    /**
     * Internal logging
     */
    private log;
}
/**
 * Create SDK instance
 */
export declare function createGameIframeSDK(config: GameIframeSDKConfig): GameIframeSDK;
/**
 * Get or create default SDK instance
 */
export declare function getGameIframeSDK(config?: GameIframeSDKConfig): GameIframeSDK;
/**
 * Destroy default instance
 */
export declare function destroyGameIframeSDK(): void;
//# sourceMappingURL=GameIframeSDK.d.ts.map