@luffalab/luffa-tron-sdk
Version:
luffa tron ts sdk
54 lines (48 loc) • 1.47 kB
text/typescript
import { MethodName } from '../index';
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: unknown
}
export interface IResponseMessageData {
uuid: string,
status: string,
data: any,
methodName: string,
errMsg?: string
}
export interface IRequestData {
method: MethodName,
data?: unknown,
initData?: IInitData,
}
export enum TronSDKEvent {
CONNECT = 'connect',
GETACCOUNT = 'getAccount',
DISCONNECT = 'disconnect',
ACCOUNT_CHANGE = 'accountChange',
NETWORK_CHANGE ='luffa_switchChain',
CHAIN_CHANGED ='chainChanged',
};
export type TronSDKEventType = (typeof TronSDKEvent)[keyof typeof TronSDKEvent];
export interface TronSDKEventsMap {
[TronSDKEvent.CONNECT]: AccountInfo;
[TronSDKEvent.DISCONNECT]: void;
[TronSDKEvent.ACCOUNT_CHANGE]: AccountInfo;
[TronSDKEvent.GETACCOUNT]: AccountInfo[];
[TronSDKEvent.NETWORK_CHANGE]: NetworkInfo;
[TronSDKEvent.CHAIN_CHANGED]: string;
}
export type TronSDKEventPayload<T extends TronSDKEventType> = T extends keyof TronSDKEventsMap ? TronSDKEventsMap[T] : undefined;
export type TronSDKEventListenersType = {
[K in TronSDKEventType]?: Array<(payload: TronSDKEventPayload<K>) => void>;
};