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,
  }
}
