@luffalab/luffa-tron-sdk
Version:
luffa tron ts sdk
100 lines (92 loc) • 2.35 kB
text/typescript
export const isLuffa = () => {
return window && window?._endlessWallet !== undefined || window?.webkit?.messageHandlers?._endlessWallet !== undefined || false;
}
export const isLuffaMiniProgramWebview = () => {
const userAgent = window && window?.navigator?.userAgent || '';
return Boolean(userAgent.includes('miniProgram'));
}
export const isLuffaMiniProgram = () => {
return Boolean(window?.wx && window?.wx?.getSystemInfoSync);
}
export const networkMap: Partial<Record<string, string>> = {
['mainnet']: 'endless',
['testnet']: 'eds',
}
export const getChain = (chainId: string) => {
const chainIdNumber = parseInt(chainId, 16);
let chain = '';
switch (chainIdNumber) {
case 728126428:
chain = 'tron';
break;
case 3448148188:
chain = 'tron_nile';
break;
case 1:
chain = 'eth';
break;
case 11155111:
chain = 'eth_sepolia';
break;
case 56:
chain = 'bsc';
break;
case 97:
chain = 'bsc_test';
break;
case 220:
chain = 'endless';
break;
case 221:
chain = 'eds';
break;
}
return chain;
};
export const getChainIdByName = (chainName: string) => {
let chainId;
switch (chainName) {
case 'eth':
chainId = 1;
break;
case 'eth_sepolia':
chainId = 11155111;
break;
case 'bsc':
chainId = 56;
break;
case 'bsc_test':
chainId = 97;
break;
case 'tron':
chainId = 728126428;
break;
case 'tron_nile':
chainId = 3448148188;
break;
case 'endless':
chainId = 220;
break;
case 'eds':
chainId = 221;
break;
}
return chainId;
};
export const isApproveTx = (tx: any) => {
const contract = tx.raw_data?.contract?.[0];
if (!contract || contract.type !== 'TriggerSmartContract') return { isApprove: false, spender: '' };
const methodId = contract.parameter?.value?.data?.slice(0, 8);
const isApprove = methodId === '095ea7b3';
let spender = '';
if (isApprove) {
try {
spender = window.tronWeb.address.fromHex('41' + tx.raw_data.contract[0].parameter.value.data.slice(8 + 24, 8 + 64));
} catch (e) {
}
}
return {
isApprove,
spender,
}
}