UNPKG

@luffalab/luffa-tron-sdk

Version:

luffa tron ts sdk

227 lines (220 loc) 7.37 kB
import tronWebModule, { TronWeb } from 'tronWeb'; import { TronWebOptions } from 'tronWeb/lib/esm/types'; type TronWebSDK = typeof tronWebModule; declare enum Network { MAINNET = "mainnet", TESTNET = "testnet", ETH = "eth", BSC = "bsc" } type IInitData = { colorMode?: 'light' | 'dark'; network: Network | string; fullnode?: string; indexer?: string; walletUrl?: string; prover?: string; callbackWalletName?: string; miniprogram?: Boolean; windowWidth?: number; }; type ChainData = { targetNet: 'endless' | 'eds' | 'eth' | 'eth_sepolia' | 'bsc' | 'bsc_testnet' | 'tron' | 'tron_nile'; }; declare enum UserResponseStatus { APPROVED = "Approved", REJECTED = "Rejected" } interface UserApproval<TResponseArgs> { status: UserResponseStatus.APPROVED; args: TResponseArgs; } interface UserRejection { status: UserResponseStatus.REJECTED; message?: string; } type UserResponse<TResponseArgs> = UserApproval<TResponseArgs> | UserRejection; interface AccountInfo { account: string; address: string; authKey: string; ansName?: string; } interface NetworkInfo { name: Network | string; chainId: number; url?: string; } type EndlessSignMessageInput = { address?: boolean; application?: boolean; chainId?: boolean; message: string; nonce?: string; }; type EndlessSignMessageOutput = { address?: string; application?: string; chainId?: number; fullMessage: string; publicKey: string; message: string; nonce: string; prefix: 'Endless'; signature: ''; }; interface EndlessSignAndSubmitTransactionInput { gasUnitPrice?: number; maxGasAmount?: number; payload: ''; options?: ''; } declare enum EndlessSendTransactionType { SIGNATURE_ONLY = "signatureOnly", SIGN_AND_SUBMIT = "signAndSubmit" } declare enum EndlessWalletTransactionType { SIMPLE = "simple", MULTI_AGENT = "multiAgent" } interface TronRequestArguments { readonly method: string; readonly params?: unknown[] | object; } interface ProviderRpcError extends Error { code: number; message: string; data?: unknown; } type TronEvent = 'connect' | 'disconnect' | 'chainChanged' | 'accountsChanged'; type TronConnectCallback = (data: { chainId: string; }) => void; type TronChainChangedCallback = TronConnectCallback; type TronDisconnectCallback = (error: ProviderRpcError) => void; type TronAccountsChangedCallback = (data: [string?]) => void; interface Tron { request(args: { method: 'eth_requestAccounts'; }): Promise<[string]>; request(args: TronRequestArguments): Promise<unknown>; on(event: 'connect', cb: TronConnectCallback): void; on(event: 'disconnect', cb: TronDisconnectCallback): void; on(event: 'chainChanged', cb: TronChainChangedCallback): void; on(event: 'accountsChanged', cb: TronAccountsChangedCallback): void; removeListener(event: TronEvent, cb: unknown): void; tronWeb: TronWeb | false; isTronLink: boolean; } declare global { const tronWeb: TronWeb; const TronWeb: TronWebSDK; const wx: any; interface Window { wx: any; webkit: any; endlessWallet?: { sendResponse: (response: any) => void; }; _endlessWallet?: { sendMessage: (data: any) => void; }; WeixinJSBridge: { invoke(api: string, data: any, callback: (res: any) => void): void; on(api: string, callback: (res: any) => void): void; }; tronWallet?: { sendResponse: (response: any) => void; }; _tronWallet?: { sendMessage: (data: any) => void; }; tron: Tron; tronWeb: TronWeb; TronWeb: TronWebSDK; } } interface IRequestData { method: MethodName; data?: unknown; initData?: IInitData; } declare enum EndLessSDKEvent { CONNECT = "connect", GETACCOUNT = "getAccount", DISCONNECT = "disconnect", ACCOUNT_CHANGE = "accountChange", NETWORK_CHANGE = "luffa_switchChain", CHAIN_CHANGED = "chainChanged" } type EndLessSDKEventType = (typeof EndLessSDKEvent)[keyof typeof EndLessSDKEvent]; interface EndLessSDKEventsMap { [EndLessSDKEvent.CONNECT]: AccountInfo; [EndLessSDKEvent.DISCONNECT]: void; [EndLessSDKEvent.ACCOUNT_CHANGE]: AccountInfo; [EndLessSDKEvent.GETACCOUNT]: AccountInfo[]; [EndLessSDKEvent.GETACCOUNT]: AccountInfo[]; [EndLessSDKEvent.NETWORK_CHANGE]: NetworkInfo; [EndLessSDKEvent.CHAIN_CHANGED]: string; } type EndLessSDKEventPayload<T extends EndLessSDKEventType> = T extends keyof EndLessSDKEventsMap ? EndLessSDKEventsMap[T] : undefined; declare const isLuffa: () => boolean; declare const isLuffaMiniProgramWebview: () => boolean; declare const isLuffaMiniProgram: () => boolean; interface Metadata { title: string; url: string; origin: string; icon: string; gameId: string; userId: string; walletAddress: string; } interface TronRequestParams { method: 'eth_requestAccounts' | string; params?: any; } declare enum MethodName { CONNECT = "connect", GETACCOUNT = "getAccount", DISCONNECT = "disconnect", NETWORK_CHANGE = "luffa_switchChain", SIGN_MESSAGE = "signMessage", SEND_TRANSACTION = "sendTransaction", SIGN_AND_SUBMIT_TRANSACTION = "signAndSubmitTransaction", SIGN_TRANSACTION = "signTransaction", SIGN_BUILD_TRANSACTION = "signBuildTransaction", EVM_APPROVE = "evmApprove", ACCOUNT_CHANGE = "accountChange" } declare class LuffaTronSdk { static readonly version: string; private static _instance; private message; private _metadata; private _initData; private accountAddress; private _wallet; static getIninData: () => IInitData; static getAccountAddress: () => string | null; static setAccountAddress: (accountAddress: string | null) => void; constructor(initData: TronWebOptions & { network: string; }); private initConfig; sendTransaction(params: any): Promise<any>; changeNetwork(chainData: ChainData): void; private getMetadata; request: (data: IRequestData, callback?: (data: unknown) => void) => void; getAccount: () => Promise<string[]>; connect: () => Promise<[string]>; disconnect: (callback?: (data: unknown) => void) => Promise<void>; signMessage: (data: EndlessSignMessageInput, callback?: (data: unknown) => void) => Promise<UserResponse<EndlessSignMessageOutput>>; on: <K extends EndLessSDKEventType>(methodName: K, callback: (payload: EndLessSDKEventPayload<K>) => void) => void; off: <K extends EndLessSDKEventType>(methodName: K, callback?: (payload: EndLessSDKEventPayload<K>) => void) => void; signAndSubmitTransaction: (params: any) => Promise<any>; signTransaction: (params: any, methodName?: MethodName) => Promise<any>; onAccountChange: (callback: (data: AccountInfo) => void) => void; onNetworkChange: (callback: (data: NetworkInfo) => void) => void; } export { type AccountInfo, EndLessSDKEvent, EndlessSendTransactionType, type EndlessSignAndSubmitTransactionInput, EndlessWalletTransactionType, LuffaTronSdk, type Metadata, MethodName, type TronRequestParams, type UserResponse, UserResponseStatus, isLuffa, isLuffaMiniProgram, isLuffaMiniProgramWebview };