/**
 * Game Iframe SDK - Main Entry Point
 *
 * @packageDocumentation
 * @module game-iframe-sdk
 *
 * Architecture:
 * - types.ts:         Type definitions
 * - mappers.ts:       Data transformation/mapping
 * - EventEmitter.ts:  Simple typed event emitter
 * - MessageHandler.ts: Handle incoming messages from iframe
 * - MessageSender.ts:  Send messages to iframe
 * - GameIframeSDK.ts:  Main SDK (composes above layers)
 * - useGameIframeSDK.ts: React hook
 *
 * @example Browser/Vanilla JS
 * ```typescript
 * import { GameIframeSDK } from 'game-iframe-sdk';
 *
 * const sdk = new GameIframeSDK({
 *     iframeOrigin: 'http://senaai.vn:1357',
 *     debug: true
 * });
 *
 * sdk.setIframe(document.getElementById('gameIframe'));
 *
 * sdk.on('gameReady', () => {
 *     sdk.sendGameData({ game_id: 'xxx', user_id: 'yyy', questions: [...] });
 * });
 * ```
 *
 * @example React
 * ```tsx
 * import { useGameIframeSDK } from 'game-iframe-sdk';
 *
 * function GamePlayer() {
 *     const iframeRef = useRef<HTMLIFrameElement>(null);
 *
 *     const { isReady, sendGameData } = useGameIframeSDK({
 *         iframeRef,
 *         iframeOrigin: 'http://senaai.vn:1357',
 *         onAnswerReport: (data) => submitToServer(data),
 *     });
 *
 *     return <iframe ref={iframeRef} src={gameUrl} />;
 * }
 * ```
 */
export { GameIframeSDK, createGameIframeSDK, getGameIframeSDK, destroyGameIframeSDK, } from './GameIframeSDK';
export { MessageHandler } from './MessageHandler';
export type { MessageHandlerConfig, MessageHandlerEvents } from './MessageHandler';
export { MessageSender } from './MessageSender';
export type { MessageSenderConfig, SendResult } from './MessageSender';
export { EventEmitter } from './EventEmitter';
export { useGameIframeSDK } from './useGameIframeSDK';
export type { UseGameIframeSDKOptions, UseGameIframeSDKReturn } from './useGameIframeSDK';
export { MESSAGE_TYPES, type MessageType, type PushDataPayload, type CompletedQuestionInfo, type AnswerReportData, type FinalResultData, type LeaderboardPlayer, type LeaderboardData, type GameIframeSDKConfig, DEFAULT_CONFIG, type SDKEvents, type SDKEventName, type SDKEventHandler, } from './types';
import * as Kit from './kit';
export { Kit };
import * as Client from './client';
export { Client };
export { GameClientSDK, getGameClientSDK, destroyGameClientSDK, type ClientMode, type ClientSDKConfig, type URLParams, type GameDataPayload, type AnswerResult as ClientAnswerResult, type FinalResult as ClientFinalResult, type ClientSDKEvents, } from './client';
import * as SdkIframe from './sdk-iframe';
export { SdkIframe };
export { SdkIframeCore, SDK_MESSAGE_TYPES, type SdkMessageType, type SdkMessage, type SdkInitPayload, type SdkPushDataPayload, type SdkCheckAnswerPayload, type SdkReadyPayload, type SdkDataReadyPayload, type SdkAnswerResultPayload, type SdkSyncStatusPayload, type SdkSyncErrorPayload, type SdkFinalResultPayload, type SdkErrorPayload, } from './sdk-iframe';
import * as GameBridgeModule from './game-bridge';
export { GameBridgeModule };
export { GameBridge, getGameBridge, destroyGameBridge, type GameBridgeConfig, type GameBridgeEvents, } from './game-bridge';
//# sourceMappingURL=index.d.ts.map