@luffalab/luffa-evm-sdk
Version:
luffa evm ts sdk
55 lines (49 loc) • 1.48 kB
text/typescript
import type { AccountInfo, NetworkInfo, IInitData } from '../types';
export interface IMetaData {
gameId: string;
userId: string;
walletAddress: string;
}
export interface IMessageData {
uuid: string,
methodName: string,
from?: string | null,
metadata: IMetaData,
initData?: IInitData,
data: any
}
export interface IResponseMessageData {
uuid: string,
status: string,
data: any,
methodName: string,
errMsg?: string
}
export interface IRequestData {
initData?: IInitData,
method: string;
params: any;
}
export enum EvmSDKEvent {
CONNECT = 'connect',
GETACCOUNT = 'getAccount',
DISCONNECT = 'disconnect',
ACCOUNT_CHANGE = 'accountChange',
ACCOUNTS_CHANGE = 'accountsChanged',
NETWORK_CHANGE ='luffa_switchChain',
CHAIN_CHANGED ='chainChanged',
};
export type EvmSDKEventType = (typeof EvmSDKEvent)[keyof typeof EvmSDKEvent];
export interface EvmSDKEventsMap {
[EvmSDKEvent.CONNECT]: string[];
[EvmSDKEvent.DISCONNECT]: void;
[EvmSDKEvent.ACCOUNT_CHANGE]: AccountInfo;
[EvmSDKEvent.ACCOUNTS_CHANGE]: string[];
[EvmSDKEvent.GETACCOUNT]: AccountInfo[];
[EvmSDKEvent.NETWORK_CHANGE]: NetworkInfo;
[EvmSDKEvent.CHAIN_CHANGED]: string;
}
export type EvmSDKEventPayload<T extends EvmSDKEventType> = T extends keyof EvmSDKEventsMap ? EvmSDKEventsMap[T] : undefined;
export type EvmSDKEventListenersType = {
[K in EvmSDKEventType]?: Array<(payload: EvmSDKEventPayload<K>) => void>;
};