@luffalab/luffa-tron-sdk
Version:
luffa tron ts sdk
208 lines (201 loc) • 6.83 kB
text/typescript
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;
}
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 TronSDKEvent {
CONNECT = "connect",
GETACCOUNT = "getAccount",
DISCONNECT = "disconnect",
ACCOUNT_CHANGE = "accountChange",
NETWORK_CHANGE = "luffa_switchChain",
CHAIN_CHANGED = "chainChanged"
}
type TronSDKEventType = (typeof TronSDKEvent)[keyof typeof TronSDKEvent];
interface TronSDKEventsMap {
[TronSDKEvent.CONNECT]: AccountInfo;
[TronSDKEvent.DISCONNECT]: void;
[TronSDKEvent.ACCOUNT_CHANGE]: AccountInfo;
[TronSDKEvent.GETACCOUNT]: AccountInfo[];
[TronSDKEvent.NETWORK_CHANGE]: NetworkInfo;
[TronSDKEvent.CHAIN_CHANGED]: string;
}
type TronSDKEventPayload<T extends TronSDKEventType> = T extends keyof TronSDKEventsMap ? TronSDKEventsMap[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>;
on: <K extends TronSDKEventType>(methodName: K, callback: (payload: TronSDKEventPayload<K>) => void) => void;
off: <K extends TronSDKEventType>(methodName: K, callback?: (payload: TronSDKEventPayload<K>) => void) => void;
signAndSubmitTransaction: (params: any) => Promise<any>;
signTransaction: (params: any, methodName?: MethodName) => Promise<any>;
signMessage: (data: string, callback?: (data: unknown) => void) => Promise<UserResponse<any>>;
onAccountChange: (callback: (data: AccountInfo) => void) => void;
onNetworkChange: (callback: (data: NetworkInfo) => void) => void;
}
export { type AccountInfo, EndlessSendTransactionType, type EndlessSignAndSubmitTransactionInput, EndlessWalletTransactionType, LuffaTronSdk, type Metadata, MethodName, type TronRequestParams, TronSDKEvent, type UserResponse, UserResponseStatus, isLuffa, isLuffaMiniProgram, isLuffaMiniProgramWebview };