@luffalab/luffa-tron-sdk
Version:
luffa tron ts sdk
150 lines (132 loc) • 3.78 kB
text/typescript
import type tronWebModule from 'tronWeb';
import type { TronWeb } from 'tronWeb';
type TronWebSDK = typeof tronWebModule;
export enum Network {
MAINNET = "mainnet",
TESTNET = "testnet",
ETH = 'eth',
BSC = 'bsc',
}
export type IInitData = {
colorMode?: 'light' | 'dark';
network: Network | string;
fullnode?: string;
indexer?: string;
walletUrl?: string;
prover?: string;
callbackWalletName?: string;
miniprogram?: Boolean;
windowWidth?: number;
};
export type ChainData = {
targetNet: 'endless' | 'eds' | 'eth' | 'eth_sepolia' | 'bsc' | 'bsc_testnet' | 'tron' | 'tron_nile';
}
export enum UserResponseStatus {
APPROVED = 'Approved',
REJECTED = 'Rejected'
}
export interface UserApproval<TResponseArgs> {
status: UserResponseStatus.APPROVED;
args: TResponseArgs;
}
export interface UserRejection {
status: UserResponseStatus.REJECTED;
message?: string;
}
export type UserResponse<TResponseArgs> = UserApproval<TResponseArgs> | UserRejection;
export interface AccountInfo {
account: string;
address: string;
authKey: string;
ansName?: string;
}
export interface NetworkInfo {
name: Network | string;
chainId: number;
url?: string;
}
export type EndlessSignMessageInput = {
address?: boolean;
application?: boolean;
chainId?: boolean;
message: string;
nonce?: string;
};
export type EndlessSignMessageOutput = {
address?: string;
application?: string;
chainId?: number;
fullMessage: string;
publicKey: string;
message: string;
nonce: string;
prefix: 'Endless';
signature: '';
};
export interface EndlessSignAndSubmitTransactionInput {
gasUnitPrice?: number; // defaults to estimated gas unit price
maxGasAmount?: number; // defaults to estimated max gas amount
payload: ''; // the transaction payload
options?: '';
}
export enum EndlessSendTransactionType {
SIGNATURE_ONLY = 'signatureOnly',
SIGN_AND_SUBMIT = 'signAndSubmit'
}
export 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';
export type TronConnectCallback = (data: { chainId: string }) => void;
export type TronChainChangedCallback = TronConnectCallback;
export type TronDisconnectCallback = (error: ProviderRpcError) => void;
export type TronAccountsChangedCallback = (data: [string?]) => void;
export 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;
}
}