type MessageName = string; type Payload = unknown; type MessageHandler = (payload: T) => void; /** * Strongly typed event map where keys are message names and values are payload types. */ type MessageSchema = Record; type Hex = `#${string}`; interface ThemeColors { background: Hex; foreground: Hex; card: Hex; cardForeground: Hex; popover: Hex; popoverForeground: Hex; primary: Hex; primaryForeground: Hex; secondary: Hex; secondaryForeground: Hex; muted: Hex; mutedForeground: Hex; accent: Hex; accentForeground: Hex; destructive: Hex; destructiveForeground: Hex; border: Hex; input: Hex; ring: Hex; } interface ColorScheme { light?: Partial; dark?: Partial; } declare enum PublicMessage { AppReady = "AppReady", TransferCreated = "TransferCreated", TransferConfirmed = "TransferConfirmed", TransferRejected = "TransferRejected", SessionExpired = "SessionExpired" } declare enum InternalMessage { AppConfig = "AppConfig" } interface PublicMessageSchema extends MessageSchema { [PublicMessage.AppReady]: undefined; [PublicMessage.TransferCreated]: { referenceId: string; amount: number; currency: string; }; [PublicMessage.TransferConfirmed]: undefined; [PublicMessage.TransferRejected]: undefined; } interface InternalMessageSchema extends MessageSchema { [InternalMessage.AppConfig]: { hashToken: string; colorScheme: ColorScheme; }; } declare enum Environment { Localhost = "Localhost", Development = "Development", Staging = "Staging", Production = "Production" } interface SdkConfig { containerId: string; hashToken: string; environment?: Environment; apiUrl?: string; width?: string; height?: string; colorScheme?: ColorScheme; } /** * XpaidWalletSdk - A robust, event-driven SDK for seamless iframe-based wallet interactions. */ declare class XpaidWalletSdk { private static iframeManager; private static messageBus; private static sdkConfig; private static messageQueue; private static subscriptionsQueue; /** * Initializes the SDK, setting up the iframe and message listeners. * @param {SdkConfig} sdkConfig - The SDK configuration object. */ static initialize(sdkConfig: SdkConfig): void; /** * Cleans up the SDK, removing message listeners and destroying the iframe. */ static destroy(): void; /** * Subscribes to wallet messages. * @param {PublicMessage} messageType - The message type. * @param {MessageHandler} handler - The callback function to execute on receiving the message. */ static subscribe(messageType: Message, handler: MessageHandler): void; /** * Unsubscribes from wallet messages. * @param {PublicMessage} messageType - The message type to remove. * @param {MessageHandler} handler - The callback function to execute on receiving the message. */ static unsubscribe(messageType: Message, handler: MessageHandler): void; static publish(messageType: Message, ...payload: (PublicMessageSchema & InternalMessageSchema)[Message] extends undefined ? [] : [(PublicMessageSchema & InternalMessageSchema)[Message]]): void; /** * Checks if the SDK is initialized. * @returns {boolean} - Whether the SDK is initialized. */ private static isInitialized; /** * Logs messages with different levels. * @param {string} message - The log message. * @param {'log' | 'warn' | 'error'} level - The log level. */ private static log; } export { type ColorScheme, Environment, PublicMessage as Message, type PublicMessageSchema as MessageSchema, type SdkConfig, XpaidWalletSdk };