import { MethodName } from 'src'; import type { AccountInfo, NetworkInfo } from '../types'; export interface PromiseMap { [messageId: string]: { resolve?: (value: any) => void; reject: (reason?: any) => void; }; } export interface IMetaData { gameId: string; userId: string; walletAddress: string; } export interface IMessageData { uuid: string, methodName: string, metadata: IMetaData, data: unknown } export interface IRequestData { method: MethodName, data?: unknown } export enum EndLessSDKEvent { INIT = 'init', WALLET_INIT_LOAD = 'walletInitLoad', CONNECT = 'connect', GETACCOUNT = 'getAccount', DISCONNECT = 'disconnect', ACCOUNT_CHANGE = 'accountChange', NETWORK_CHANGE ='networkChange', COLOR_MODE_CHANGE ='colorModeChange', OPEN = 'open', CLOSE = 'close' }; export type EndLessSDKEventType = (typeof EndLessSDKEvent)[keyof typeof EndLessSDKEvent]; export interface EndLessSDKEventsMap { [EndLessSDKEvent.CONNECT]: AccountInfo; [EndLessSDKEvent.DISCONNECT]: void; [EndLessSDKEvent.ACCOUNT_CHANGE]: AccountInfo; [EndLessSDKEvent.GETACCOUNT]: AccountInfo[]; [EndLessSDKEvent.COLOR_MODE_CHANGE]: { colorMode: string }; [EndLessSDKEvent.NETWORK_CHANGE]: NetworkInfo; } export type EndLessSDKEventPayload = T extends keyof EndLessSDKEventsMap ? EndLessSDKEventsMap[T] : undefined; export type EndLessSDKEventListenersType = { [K in EndLessSDKEventType]?: Array<(payload: EndLessSDKEventPayload) => void>; };