@swapkit/helpers 1.5.0 → 1.6.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.js CHANGED
@@ -1,6 +1,6 @@
1
- var e=((x)=>typeof require!=="undefined"?require:typeof Proxy!=="undefined"?new Proxy(x,{get:(F,n)=>(typeof require!=="undefined"?require:F)[n]}):x)(function(x){if(typeof require!=="undefined")return require.apply(this,arguments);throw Error('Dynamic require of "'+x+'" is not supported')});export*from"@swapkit/contracts";var d;((P)=>{P.Arbitrum="https://arb1.arbitrum.io/rpc";P.Avalanche="https://node-router.thorswap.net/avalanche-c";P.BinanceSmartChain="https://bsc-dataseed.binance.org";P.Bitcoin="https://node-router.thorswap.net/bitcoin";P.BitcoinCash="https://node-router.thorswap.net/bitcoin-cash";P.Chainflip="wss://mainnet-archive.chainflip.io";P.Cosmos="https://node-router.thorswap.net/cosmos/rpc";P.Dash="https://node-router.thorswap.net/dash";P.Dogecoin="https://node-router.thorswap.net/dogecoin";P.Ethereum="https://node-router.thorswap.net/ethereum";P.Kujira="https://rpc-kujira.synergynodes.com/";P.Litecoin="https://node-router.thorswap.net/litecoin";P.Maya="https://tendermint.mayachain.info";P.MayaStagenet="https://stagenet.tendermint.mayachain.info";P.Optimism="https://mainnet.optimism.io";P.Polkadot="wss://rpc.polkadot.io";P.Polygon="https://polygon-rpc.com";P.Radix="https://radix-mainnet.rpc.grove.city/v1/326002fc/core";P.THORChain="https://rpc.thorswap.net";P.THORChainStagenet="https://stagenet-rpc.ninerealms.com";P.Solana="https://mainnet.helius-rpc.com/?api-key=2cbe3ae6-cfc5-4141-a093-0055d0fa3d80"})(d||={});var t;((k)=>{k.Arbitrum="https://arbiscan.io";k.Avalanche="https://snowtrace.io";k.BinanceSmartChain="https://bscscan.com";k.Bitcoin="https://blockchair.com/bitcoin";k.BitcoinCash="https://www.blockchair.com/bitcoin-cash";k.Chainflip="https://explorer.polkascan.io/polkadot";k.Cosmos="https://www.mintscan.io/cosmos";k.Dash="https://blockchair.com/dash";k.Dogecoin="https://blockchair.com/dogecoin";k.Ethereum="https://etherscan.io";k.Kujira="https://finder.kujira.network/kaiyo-1";k.Litecoin="https://blockchair.com/litecoin";k.Maya="https://www.mayascan.org";k.Optimism="https://optimistic.etherscan.io";k.Polkadot="https://polkadot.subscan.io";k.Polygon="https://polygonscan.com";k.Radix="https://dashboard.radixdlt.com";k.THORChain="https://runescan.io";k.Solana="https://solscan.io"})(t||={});var Y;((k)=>{k.Arbitrum="ARB";k.Avalanche="AVAX";k.BinanceSmartChain="BSC";k.Bitcoin="BTC";k.BitcoinCash="BCH";k.Cosmos="GAIA";k.Dash="DASH";k.Dogecoin="DOGE";k.Ethereum="ETH";k.Kujira="KUJI";k.Litecoin="LTC";k.Maya="MAYA";k.Optimism="OP";k.Polkadot="DOT";k.Chainflip="FLIP";k.Polygon="MATIC";k.Radix="XRD";k.THORChain="THOR";k.Solana="SOL"})(Y||={});var u;((A)=>{A.Arbitrum="42161";A.ArbitrumHex="0xa4b1";A.Avalanche="43114";A.AvalancheHex="0xa86a";A.BinanceSmartChain="56";A.BinanceSmartChainHex="0x38";A.Bitcoin="bitcoin";A.BitcoinCash="bitcoincash";A.Chainflip="chainflip";A.Cosmos="cosmoshub-4";A.Dash="dash";A.Dogecoin="dogecoin";A.Kujira="kaiyo-1";A.Ethereum="1";A.EthereumHex="0x1";A.Litecoin="litecoin";A.Maya="mayachain-mainnet-v1";A.MayaStagenet="mayachain-stagenet-v1";A.Optimism="10";A.OptimismHex="0xa";A.Polkadot="polkadot";A.Polygon="137";A.PolygonHex="0x89";A.Radix="radix-mainnet";A.THORChain="thorchain-mainnet-v1";A.THORChainStagenet="thorchain-stagenet-v2";A.Solana="solana"})(u||={});var kF={["0xa4b1"]:"ARB",["42161"]:"ARB",["0xa86a"]:"AVAX",["43114"]:"AVAX",["0x38"]:"BSC",["56"]:"BSC",["bitcoincash"]:"BCH",["bitcoin"]:"BTC",["chainflip"]:"FLIP",["cosmoshub-4"]:"GAIA",["dash"]:"DASH",["dogecoin"]:"DOGE",["0x1"]:"ETH",["kaiyo-1"]:"KUJI",["1"]:"ETH",["litecoin"]:"LTC",["mayachain-stagenet-v1"]:"MAYA",["mayachain-mainnet-v1"]:"MAYA",["0xa"]:"OP",["10"]:"OP",["polkadot"]:"DOT",["0x89"]:"MATIC",["137"]:"MATIC",["radix-mainnet"]:"XRD",["thorchain-stagenet-v2"]:"THOR",["thorchain-mainnet-v1"]:"THOR",["solana"]:"SOL"},$x=Object.keys(Y),C=Object.values(Y),z;((T)=>{T[T.ARB=18]="ARB";T[T.AVAX=18]="AVAX";T[T.BCH=8]="BCH";T[T.BSC=18]="BSC";T[T.BTC=8]="BTC";T[T.DASH=8]="DASH";T[T.DOGE=8]="DOGE";T[T.DOT=10]="DOT";T[T.ETH=18]="ETH";T[T.FLIP=18]="FLIP";T[T.GAIA=6]="GAIA";T[T.KUJI=6]="KUJI";T[T.LTC=8]="LTC";T[T.MATIC=18]="MATIC";T[T.MAYA=8]="MAYA";T[T.OP=18]="OP";T[T.SOL=9]="SOL";T[T.THOR=8]="THOR";T[T.XRD=18]="XRD";T[T.ZEC=8]="ZEC"})(z||={});var TF=["DOT","FLIP"],y=["ETH","AVAX","BSC","ARB","OP","MATIC"],_F=["BTC","BCH","DASH","DOGE","LTC"],GF=["GAIA","THOR","MAYA","KUJI"],LF=["AVAX","BSC","BTC","BCH","GAIA","DOGE","ETH","LTC","THOR"],AF=["ARB","DASH","ETH","KUJI","MAYA","THOR"],v=C.reduce((x,F)=>{const n=$x.find((H)=>Y[H]===F);if(n)x[F]=n;return x},{}),xx=C.reduce((x,F)=>{return x[F]=u[v[F]],x},{}),m=C.reduce((x,F)=>{return x[F]=d[v[F]],x},{}),OF=C.reduce((x,F)=>{const n=`${v[F]}Hex`;return x[F]=u[n],x},{}),PF=C.reduce((x,F)=>{return x[F]=t[v[F]],x},{});var Xx;((X)=>{X.TC_SUPPORTED_TO_TC_SUPPORTED="TC-TC";X.TC_SUPPORTED_TO_ETH="TC-ERC20";X.TC_SUPPORTED_TO_AVAX="TC-ARC20";X.TC_SUPPORTED_TO_BSC="TC-BEP20";X.ETH_TO_TC_SUPPORTED="ERC20-TC";X.ETH_TO_ETH="ERC20-ERC20";X.ETH_TO_AVAX="ERC20-ARC20";X.ETH_TO_BSC="ERC20-BEP20";X.AVAX_TO_TC_SUPPORTED="ARC20-TC";X.AVAX_TO_ETH="ARC20-ERC20";X.AVAX_TO_AVAX="ARC20-ARC20";X.AVAX_TO_BSC="ARC20-BEP20";X.BSC_TO_TC_SUPPORTED="BEP20-TC";X.BSC_TO_ETH="BEP20-ERC20";X.BSC_TO_AVAX="BEP20-ARC20";X.BSC_TO_BSC="BEP20-BEP20"})(Xx||={});var XF=["ERC20-ERC20","ARC20-ARC20","BEP20-BEP20"],jF=["ERC20-TC","ERC20-ARC20","ERC20-BEP20","ARC20-TC","ARC20-ERC20","ARC20-BEP20","BEP20-TC","BEP20-ERC20","BEP20-ARC20"],JF=["TC-TC","TC-ERC20","TC-ARC20","TC-BEP20"];var jx;((I)=>{I.ARB="0x0000000000000000000000000000000000000000";I.AVAX="0x0000000000000000000000000000000000000000";I.ETH="0x0000000000000000000000000000000000000000";I.BSC="0x0000000000000000000000000000000000000000";I.MATIC="0x0000000000000000000000000000000000001010";I.OP="0x4200000000000000000000000000000000000042"})(jx||={});var Jx;((k)=>{k.ARB="m/44'/60'/0'/0";k.AVAX="m/44'/60'/0'/0";k.BCH="m/44'/145'/0'/0";k.BSC="m/44'/60'/0'/0";k.BTC="m/84'/0'/0'/0";k.DASH="m/44'/5'/0'/0";k.DOGE="m/44'/3'/0'/0";k.DOT="////";k.ETH="m/44'/60'/0'/0";k.FLIP="////";k.GAIA="m/44'/118'/0'/0";k.KUJI="m/44'/118'/0'/0";k.LTC="m/84'/2'/0'/0";k.MATIC="m/44'/60'/0'/0";k.MAYA="m/44'/931'/0'/0";k.OP="m/44'/60'/0'/0";k.SOL="m/44'/501'/0'/0";k.THOR="m/44'/931'/0'/0";k.XRD="////"})(Jx||={});var s={ARB:[44,60,0,0,0],AVAX:[44,60,0,0,0],BCH:[44,145,0,0,0],BSC:[44,60,0,0,0],BTC:[84,0,0,0,0],DASH:[44,5,0,0,0],DOGE:[44,3,0,0,0],ETH:[44,60,0,0,0],GAIA:[44,118,0,0,0],KUJI:[44,118,0,0,0],LTC:[84,2,0,0,0],MATIC:[44,60,0,0,0],MAYA:[44,931,0,0,0],OP:[44,60,0,0,0],SOL:[44,501,0,0,0],THOR:[44,931,0,0,0],XRD:[0,0,0,0,0],DOT:[0,0,0,0,0],FLIP:[0,0,0,0,0]};var Fx;((T)=>{T.BRAVE="BRAVE";T.COINBASE_MOBILE="COINBASE_MOBILE";T.COINBASE_WEB="COINBASE_WEB";T.EIP6963="EIP6963";T.EXODUS="EXODUS";T.KEEPKEY="KEEPKEY";T.KEPLR="KEPLR";T.KEYSTORE="KEYSTORE";T.LEDGER="LEDGER";T.METAMASK="METAMASK";T.OKX="OKX";T.OKX_MOBILE="OKX_MOBILE";T.PHANTOM="PHANTOM";T.POLKADOT_JS="POLKADOT_JS";T.RADIX_WALLET="RADIX_WALLET";T.TREZOR="TREZOR";T.TALISMAN="TALISMAN";T.TRUSTWALLET_WEB="TRUSTWALLET_WEB";T.WALLETCONNECT="WALLETCONNECT";T.XDEFI="XDEFI"})(Fx||={});var zx;((H)=>{H[H.NoError=36864]="NoError";H[H.LockedDevice=21781]="LockedDevice";H[H.TC_NotFound=65535]="TC_NotFound"})(zx||={});var Zx;((H)=>{H.Average="average";H.Fast="fast";H.Fastest="fastest"})(Zx||={});var Yx;((n)=>{n.Approve="approve";n.CheckOnly="checkOnly"})(Yx||={});var nx;((L)=>{L.NAME_REGISTER="~";L.BOND="BOND";L.DEPOSIT="+";L.LEAVE="LEAVE";L.UNBOND="UNBOND";L.WITHDRAW="-";L.OPEN_LOAN="$+";L.CLOSE_LOAN="$-";L.RUNEPOOL_DEPOSIT="POOL+";L.RUNEPOOL_WITHDRAW="POOL-"})(nx||={});var wx;((h)=>{h.unknownError="unknownError";h.test_error="test_error";h.providerDetailsError="providerDetailsError";h.blockHeaderNotFound="blockHeaderNotFound";h.blockHashNotFoundAtHeight="blockHashNotFoundAtHeight";h.blockHashNotFoundAtHash="blockHashNotFoundAtHash";h.txHashMissing="txHashMissing";h.assetValueMissingInfo="assetValueMissingInfo";h.invalidAsset="invalidAsset";h.blockIsRequired="blockIsRequired";h.currentBlockHeaderNotFound="currentBlockHeaderNotFound";h.failedToRetrieveBalance="failedToRetrieveBalance";h.failedToRetrieveBlock="failedToRetrieveBlock";h.failedToRetrieveFees="failedToRetrieveFees";h.notImplementedBCH="notImplementedBCH";h.notImplementedDoge="notImplementedDoge";h.noPoolsFound="noPoolsFound";h.noVaultsFound="noVaultsFound";h.noTxFound="noTxFound";h.noInputCoinFound="noInputCoinFound";h.noBlockDataFound="noBlockDataFound";h.multipleCosmosMessages="multipleCosmosMessages";h.heightOrHashNotProvided="heightOrHashNotProvided";h.unknownDenom="unknownDenom";h.invalidBlockHeight="invalidBlockHeight";h.timestampExtrinsicNoArgumentsForBlock="timestampExtrinsicNoArgumentsForBlock";h.timestampExtrinsicNoTimestampForBlock="timestampExtrinsicNoTimestampForBlock";h.noTimestampExtrinsicForHash="noTimestampExtrinsicForHash";h.timestampExtrinsicNoArgumentsForHash="timestampExtrinsicNoArgumentsForHash";h.txMemoUndefined="txMemoUndefined";h.txMemoIncorrect="txMemoIncorrect";h.txTypeNotFound="txTypeNotFound";h.txNoMessage="txNoMessage";h.txNotFound="txNotFound";h.txReceiptNotFound="txReceiptNotFound";h.txParsingError="txParsingError";h.blockNotFound="blockNotFound";h.balanceNotFound="balanceNotFound";h.configError="configError";h.noQuoteResponse="noQuoteResponse";h.noPoolAssetsFound="noPoolAssetsFound";h.noThorchainPools="noThorchainPools";h.noMayachainPools="noMayachainPools";h.invalidAffiliateFee="invalidAffiliateFee";h.invalidBuyAssetAddress="invalidBuyAssetAddress";h.invalidSellAssetAddress="invalidSellAssetAddress";h.invalidSourceAddress="invalidSourceAddress";h.invalidDestinationAddress="invalidDestinationAddress";h.sourceAddressIsSmartContract="sourceAddressIsSmartContract";h.destinationAddressIsSmartContract="destinationAddressIsSmartContract";h.invalidChainId="invalidChainId";h.unsupportedChainId="unsupportedChainId";h.unsupportedEVMChainId="unsupportedEVMChainId";h.noWhitelistTokens="noWhitelistTokens";h.failedFetchGasPrice="failedFetchGasPrice";h.failedToCreateDepositChannel="failedToCreateDepositChannel";h.noProviderDetailsFound="noProviderDetailsFound";h.noTokenListsFound="noTokenListsFound";h.tokenNotFound="tokenNotFound";h.tokenPriceNotFound="tokenPriceNotFound";h.swapAmountTooSmall="swapAmountTooSmall";h.legsArrayIsEmpty="legsArrayIsEmpty";h.failedToFetchQuoteForLeg="failedToFetchQuoteForLeg";h.noBlockHeaderFound="noBlockHeaderFound";h.failedToSimulateSwap="failedToSimulateSwap";h.addressScreeningFailed="addressScreeningFailed";h.noLiquidtyProvidersFound="noLiquidtyProvidersFound";h.noSaversFound="noSaversFound";h.noInboundAddressesFound="noInboundAddressesFound";h.noInboundAddressFoundForChain="noInboundAddressFoundForChain";h.noLastBlocksFound="noLastBlocksFound";h.noVersionFound="noVersionFound";h.noConstantsFound="noConstantsFound";h.noMimirsFound="noMimirsFound";h.noRoutesFound="noRoutesFound";h.quoteNotFound="quoteNotFound";h.ledgerSignFailed="ledgerSignFailed";h.ledgerFetchSwapFailed="ledgerFetchSwapFailed";h.failedToFetchTx="failedToFetchTx";h.failedBuildTransactionDetails="failedBuildTransactionDetails";h.noLegsForRoute="noLegsForRoute";h.noRouterAddressFound="noRouterAddressFound";h.noAggregatorAddressFound="noAggregatorAddressFound";h.noContractInstanceFound="noContractInstanceFound";h.noContractAddressFound="noContractAddressFound";h.invalidAffiliate="invalidAffiliate";h.providerNotfound="No provider found";h.noRecordFound="No Record found";h.slippageTooLow="Slippage too low";h.tradingHalted="tradingHalted";h.noWrappedGasAsset="noWrappedGasAsset";h.aggregatorAddressNotFound="aggregatorAddressNotFound";h.routerAddressNotFound="routerAddressNotFound";h.dummyAddressNotFound="dummyAddressNotFound";h.trackerError="trackerError";h.noOhlcvDataFound="noOhlcvDataFound";h.noTradingPairs="noTradingPairs";h.noLoanPositionFound="noLoanPositionFound";h.noLendingAvailability="noLendingAvailability";h.lendingRepayTooSmall="lendingRepayTooSmall";h.missingState="missingState";h.ledgerSwapNotFound="ledgerSwapNotFound";h.ledgerSwapNotReadyForTracking="ledgerSwapNotReadyForTracking";h.errorEstimatingGas="errorEstimatingGas";h.apiKeyInvalid="apiKeyInvalid";h.apiKeyFailedToUpdate="apiKeyFailedToUpdate";h.apiKeyExpired="apiKeyExpired";h.unauthorized="unauthorized";h.failedToCreateMemo="failedToCreateMemo";h.radixIncorrectInstructions="radixIncorrectInstructions";h.invalidAddressForChain="invalidAddressForChain"})(wx||={});var Qx;((n)=>{n.highSlippage="highSlippage";n.highPriceImpact="highPriceImpact"})(Qx||={});var qx;((J)=>{J.CHAINFLIP="CHAINFLIP";J.MAYACHAIN="MAYACHAIN";J.MAYACHAIN_STREAMING="MAYACHAIN_STREAMING";J.ONEINCH="ONEINCH";J.PANCAKESWAP="PANCAKESWAP";J.PANGOLIN_V1="PANGOLIN_V1";J.SUSHISWAP_V2="SUSHISWAP_V2";J.THORCHAIN="THORCHAIN";J.THORCHAIN_STREAMING="THORCHAIN_STREAMING";J.TRADERJOE_V2="TRADERJOE_V2";J.UNISWAP_V2="UNISWAP_V2";J.UNISWAP_V3="UNISWAP_V3";J.CAVIAR_V1="CAVIAR_V1"})(qx||={});var Bx;((I)=>{I.LIQUIDITY="liquidity";I.NETWORK="network";I.INBOUND="inbound";I.OUTBOUND="outbound";I.AFFILIATE="affiliate";I.TAX="tax"})(Bx||={});import{red as kx,yellow as Vx}from"picocolors";var Wx={core_estimated_max_spendable_chain_not_supported:10002,core_extend_error:10003,core_inbound_data_not_found:10004,core_approve_asset_address_or_from_not_found:10005,core_plugin_not_found:10006,core_plugin_swap_not_found:10007,core_approve_asset_target_invalid:10008,core_explorer_unsupported_chain:10009,core_verify_message_not_supported:10010,core_chain_halted:10099,core_wallet_connection_not_found:10100,core_wallet_xdefi_not_installed:10101,core_wallet_evmwallet_not_installed:10102,core_wallet_walletconnect_not_installed:10103,core_wallet_keystore_not_installed:10104,core_wallet_ledger_not_installed:10105,core_wallet_trezor_not_installed:10106,core_wallet_keplr_not_installed:10107,core_wallet_okx_not_installed:10108,core_wallet_keepkey_not_installed:10109,core_wallet_talisman_not_installed:10110,core_wallet_not_keypair_wallet:10111,core_wallet_sign_message_not_supported:10110,core_swap_invalid_params:10200,core_swap_route_not_complete:10201,core_swap_asset_not_recognized:10202,core_swap_contract_not_found:10203,core_swap_route_transaction_not_found:10204,core_swap_contract_not_supported:10205,core_swap_transaction_error:10206,core_swap_quote_mode_not_supported:10207,core_transaction_deposit_error:10301,core_transaction_create_liquidity_base_error:10302,core_transaction_create_liquidity_asset_error:10303,core_transaction_create_liquidity_invalid_params:10304,core_transaction_add_liquidity_invalid_params:10305,core_transaction_add_liquidity_base_address:10306,core_transaction_add_liquidity_base_error:10307,core_transaction_add_liquidity_asset_error:10308,core_transaction_withdraw_error:10309,core_transaction_deposit_to_pool_error:10310,core_transaction_deposit_insufficient_funds_error:10311,core_transaction_deposit_gas_error:10312,core_transaction_invalid_sender_address:10313,core_transaction_deposit_server_error:10314,core_transaction_user_rejected:10315,core_transaction_failed:10316,wallet_connection_rejected_by_user:20000,wallet_missing_api_key:20001,wallet_chain_not_supported:20002,wallet_missing_params:20003,wallet_provider_not_found:20004,wallet_failed_to_add_or_switch_network:20005,wallet_ledger_connection_error:20101,wallet_ledger_connection_claimed:20102,wallet_ledger_get_address_error:20103,wallet_ledger_device_not_found:20104,wallet_ledger_device_locked:20105,wallet_phantom_not_found:20201,wallet_xdefi_not_found:20301,wallet_xdefi_send_transaction_no_address:20302,wallet_xdefi_contract_address_not_provided:20303,wallet_xdefi_asset_not_defined:20304,wallet_walletconnect_project_id_not_specified:20401,wallet_walletconnect_connection_not_established:20402,wallet_walletconnect_namespace_not_supported:20403,wallet_trezor_failed_to_sign_transaction:20501,wallet_trezor_derivation_path_not_supported:20502,wallet_trezor_failed_to_get_address:20503,wallet_talisman_not_enabled:20601,wallet_talisman_not_found:20602,wallet_polkadot_not_found:20701,chainflip_channel_error:30001,chainflip_unknown_asset:30002,chainflip_broker_invalid_params:30100,chainflip_broker_recipient_error:30101,chainflip_broker_register:30102,chainflip_broker_tx_error:30103,chainflip_broker_withdraw:30104,chainflip_broker_fund_only_flip_supported:30105,chainflip_broker_fund_invalid_address:30106,thorchain_chain_halted:40001,thorchain_trading_halted:40002,thorchain_swapin_router_required:40100,thorchain_swapin_vault_required:40101,thorchain_swapin_memo_required:40102,thorchain_swapin_token_required:40103,api_v2_invalid_response:50001,api_v2_server_error:50002,toolbox_cosmos_signer_not_defined:90101,toolbox_cosmos_no_accounts_found:90102,toolbox_cosmos_verify_signature_no_pubkey:90103,toolbox_evm_no_abi_fragment:90201,toolbox_evm_no_signer:90202,toolbox_evm_no_signer_address:90203,toolbox_evm_no_from_address:90204,toolbox_evm_no_contract_address:90205,toolbox_evm_no_fee_data:90206,toolbox_evm_no_gas_price:90207,toolbox_evm_no_to_address:90208,toolbox_evm_invalid_gas_asset_address:90209,toolbox_evm_provider_not_eip1193_compatible:90210,toolbox_evm_error_estimating_gas_limit:90211,toolbox_evm_error_sending_transaction:90212,helpers_invalid_number_different_decimals:99000,helpers_invalid_number_of_years:99001,helpers_invalid_identifier:99002,helpers_invalid_asset_url:99003,helpers_invalid_asset_identifier:99004,helpers_invalid_memo_type:99005,helpers_failed_to_switch_network:99103,helpers_not_found_provider:99200,not_implemented:99999};class j extends Error{static ErrorCode=Wx;constructor(x,F){const n=typeof x==="string",H=n?x:x.errorKey;if(F)console.error(F,{stack:F?.stack,message:F?.message});super(H,{cause:{code:j.ErrorCode[H],message:`${H}${n?"":`: ${JSON.stringify(x.info)}`}`}});Object.setPrototypeOf(this,j.prototype)}}function yF(x){if(x<0)throw new j({errorKey:"helpers_invalid_number_of_years",info:{numberOfYears:x}});return 10+x}function vF(x){if(x<0)throw new j({errorKey:"helpers_invalid_number_of_years",info:{numberOfYears:x}});return Math.round((10+x*1.0512)*10000000000)/10000000000}function oF(x,F){try{return x()}catch(n){if(F)throw new j(F,n);return console.error(n)}}function EF(x){switch(x){case"THOR":return`${x}.RUNE`;case"GAIA":return`${x}.ATOM`;case"BSC":return`${x}`;default:return`${x}.${x}`}}function Nx(x,F){if(!Kx&&x){if(Hx.has(F))return;Hx.add(F),console.warn(F)}}var Kx=["production","test"].includes("development"),Hx=new Set;function Rx(x=""){const F=x.toUpperCase(),[n]=F.split(".");if(hx.includes(n))return!0;const[H]=F.split("/");if(hx.includes(H))return!0;throw new j({errorKey:"helpers_invalid_identifier",info:{message:`Invalid identifier: ${x}. Expected format: <Chain>.<Ticker> or <Chain>.<Ticker>-<ContractAddress>`,identifier:x}})}function dF(x){if(x.length>30)return!1;const F=/^[a-zA-Z0-9+_-]+$/g;return!!x.match(F)}var hx=[...Object.values(Y),"TERRA"];function M({value:x,bigIntDecimal:F=U,decimal:n=U}){if(n===0)return x.toString();const H=x<0n;let N=x.toString().substring(H?1:0);const R=n-(N.length-1);if(R>0)N="0".repeat(R)+N;const I=N.length-n;let _=N.slice(-n);if(Number.parseInt(_[F]||"0")>=5)_=`${_.substring(0,F-1)}${(Number.parseInt(_[F-1]||"0")+1).toString()}`;else _=_.substring(0,F);return`${H?"-":""}${N.slice(0,I)}.${_}`.replace(/\.?0*$/,"")}function o(x){const n=`${typeof x==="number"?Mx.format(x):i(x)}`.replaceAll(",",".").split(".");return n.length>1?`${n.slice(0,-1).join("")}.${n.at(-1)}`:n[0]||"0"}function Ix(x){const F=x.split(".")[1]?.length||0;return Math.max(F,U)}function i(x){return typeof x==="object"?"getValue"in x?x.getValue("string"):x.value:x}var U=8,W=(x)=>10n**BigInt(x),S=(x)=>Math.log10(Number.parseFloat(x.toString()));class B{decimalMultiplier=10n**8n;bigIntValue=0n;decimal;static fromBigInt(x,F){return new B({decimal:F,value:M({value:x,bigIntDecimal:F,decimal:F})})}static shiftDecimals({value:x,from:F,to:n}){return B.fromBigInt(x.getBaseValue("bigint")*W(n)/W(F),n)}constructor(x){const F=i(x),n=typeof x==="object";this.decimal=n?x.decimal:void 0,this.decimalMultiplier=n&&"decimalMultiplier"in x?x.decimalMultiplier:W(Math.max(Ix(o(F)),this.decimal||0)),this.#N(F)}set(x){return new this.constructor({decimal:this.decimal,value:x,identifier:this.toString()})}add(...x){return this.#F("add",...x)}sub(...x){return this.#F("sub",...x)}mul(...x){return this.#F("mul",...x)}div(...x){return this.#F("div",...x)}gt(x){return this.#x("gt",x)}gte(x){return this.#x("gte",x)}lt(x){return this.#x("lt",x)}lte(x){return this.#x("lte",x)}eqValue(x){return this.#x("eqValue",x)}getValue(x){const F=this.formatBigIntToSafeValue(this.bigIntValue,this.decimal||S(this.decimalMultiplier));switch(x){case"number":return Number(F);case"string":return F;case"bigint":return this.bigIntValue*10n**BigInt(this.decimal||8n)/this.decimalMultiplier}}getBaseValue(x){const F=this.decimalMultiplier/W(this.decimal||8),n=this.bigIntValue/F;switch(x){case"number":return Number(n);case"string":return n.toString();case"bigint":return n}}getBigIntValue(x,F){if(!F&&typeof x==="object")return x.bigIntValue;const n=i(x),H=o(n);if(H==="0"||H==="undefined")return 0n;return this.#H(H,F)}toSignificant(x=6){const[F,n]=this.getValue("string").split("."),H=F||"",N=n||"";if((Number.parseInt(H)?H.length+N.length:N.length)<=x)return this.getValue("string");if(H.length>=x)return H.slice(0,x).padEnd(H.length,"0");if(Number.parseInt(H))return`${H}.${N.slice(0,x-H.length)}`.padEnd(x-H.length,"0");const I=Number.parseInt(N),_=`${I}`.slice(0,x);return`0.${_.padStart(N.length-`${I}`.length+_.length,"0")}`}toFixed(x=6){const[F,n]=this.getValue("string").split("."),H=F||"",N=n||"";if(Number.parseInt(H))return`${H}.${N.slice(0,x)}`.padEnd(x,"0");const R=Number.parseInt(N),I=`${R}`.slice(0,x);return`0.${I.padStart(N.length-`${R}`.length+I.length,"0")}`}toAbbreviation(x=2){const F=this.getValue("number"),n=["","K","M","B","T","Q","Qi","S"],H=Math.floor(Math.log10(Math.abs(F))/3),N=n[H];if(!N)return this.getValue("string");const R=10**(H*3);return`${(F/R).toFixed(x)}${N}`}toCurrency(x="$",{currencyPosition:F="start",decimal:n=2,decimalSeparator:H=".",thousandSeparator:N=","}={}){const R=this.getValue("number"),[I="",_=""]=R.toFixed(6).split("."),O=I.replace(/\B(?=(\d{3})+(?!\d))/g,N),G=I||_?I==="0"?`${Number.parseFloat(`0.${_}`)}`.replace(".",H):`${O}${Number.parseInt(_)?`${H}${_.slice(0,n)}`:""}`:"0.00";return`${F==="start"?x:""}${G}${F==="end"?x:""}`}formatBigIntToSafeValue(x,F){const n=F||this.decimal||U,H=Math.max(n,S(this.decimalMultiplier)),N=x<0n,R=x.toString().substring(N?1:0),I=H-(R.length-1),_=I>0?"0".repeat(I)+R:R,O=_.length-H;let G=_.slice(-H);if(Number.parseInt(G[n]||"0")>=5)G=`${G.substring(0,n-1)}${(Number.parseInt(G[n-1]||"0")+1).toString()}`;else G=G.substring(0,n);return`${N?"-":""}${_.slice(0,O)}.${G}`.replace(/\.?0*$/,"")}#F(x,...F){const n=this.#n(this,...F),H=Math.max(n,S(this.decimalMultiplier)),N=W(H),R=F.reduce((_,O)=>{const G=this.getBigIntValue(O,H);switch(x){case"add":return _+G;case"sub":return _-G;case"mul":return _*G/N;case"div":{if(G===0n)throw new RangeError("Division by zero");return _*N/G}default:return _}},this.bigIntValue*N/this.decimalMultiplier),I=M({bigIntDecimal:H,decimal:H,value:R});return new this.constructor({decimalMultiplier:W(H),decimal:this.decimal,value:I,identifier:this.toString()})}#x(x,...F){const n=this.#n(this,...F),H=this.getBigIntValue(F[0]||"0",n),N=this.getBigIntValue(this,n);switch(x){case"gt":return N>H;case"gte":return N>=H;case"lt":return N<H;case"lte":return N<=H;case"eqValue":return N===H}}#N(x){const F=o(x)||"0";this.bigIntValue=this.#H(F)}#n(...x){const F=x.map((n)=>{return typeof n==="object"?n.decimal||S(n.decimalMultiplier):Ix(o(n))}).filter(Boolean);return Math.max(...F,U)}#H(x,F){const n=F?W(F):this.decimalMultiplier,H=S(n),[N="",R=""]=x.split(".");return BigInt(`${N}${R.padEnd(H,"0")}`)}}var Mx=Intl.NumberFormat("fullwide",{useGrouping:!1,maximumFractionDigits:20});function nn(x){const F=$.from({chain:x});switch(x){case"BTC":case"LTC":case"BCH":case"DASH":return F.set(0.00010001);case"DOGE":return F.set(1.00000001);case"AVAX":case"ETH":case"ARB":case"BSC":return F.set(0.00000001);case"THOR":case"MAYA":return F.set(0);case"GAIA":case"KUJI":return F.set(0.000001);default:return F.set(0.00000001)}}async function Cx(x,F=0){Rx(x);const n=E.get(x.toUpperCase()),H=n?.decimal||await _x(l(x));if(!n)E.set(x.toUpperCase(),{identifier:x,decimal:H});return new $({decimal:H,value:b(F,H),identifier:x})}function Sx(x,F=0){const n=x.split(".")?.[0]?.toUpperCase(),H=n?["MAYA","THOR"].includes(n):!1,[N,R]=H?x.split(".").slice(1).join().split("/"):x.split("/");if(!(N&&R))throw new j({errorKey:"helpers_invalid_asset_identifier",info:{identifier:x}});return new $({decimal:8,value:b(F,8),identifier:`${n||"THOR"}.${N}/${R}`})}function b(x,F){return typeof x==="bigint"?M({value:x,bigIntDecimal:F,decimal:F}):x}function l(x){const F=x.slice(0,14).includes("/"),n=x.split(".")?.[0]?.toUpperCase()==="THOR",H=x.split(".")?.[0]?.toUpperCase()==="MAYA",[N,R=""]=n||H?x.split(".").slice(1).join().split("/"):x.split("/");if(F&&!(N&&R))throw new j({errorKey:"helpers_invalid_asset_identifier",info:{identifier:x}});const I=x.includes(".")&&!F?x:`${H?"MAYA":"THOR"}.${R}`,[_,...O]=I.split("."),G=F?R:O.join("."),L=G.split("-"),Z=L.length===1?L[0]:L.slice(0,-1).join("-"),Q=L.length===1?void 0:L[L.length-1];return{address:Q?.toLowerCase(),chain:_,isGasAsset:a({chain:_,symbol:G}),isSynthetic:F,ticker:Z,symbol:(F?`${N}/`:"")+(Q?`${Z}-${Q?.toLowerCase()??""}`:G)}}var E=new Map;class $ extends B{address;chain;isGasAsset=!1;isSynthetic=!1;symbol;tax;ticker;type;chainId;constructor({value:x,decimal:F,tax:n,chain:H,symbol:N,identifier:R}){super(typeof x==="object"?x:{decimal:F,value:x});const I=l(R||`${H}.${N}`);this.type=Lx(I),this.tax=n,this.chain=I.chain,this.ticker=I.ticker,this.symbol=I.symbol,this.address=I.address,this.isSynthetic=I.isSynthetic,this.isGasAsset=I.isGasAsset,this.chainId=xx[I.chain]}toString({includeSynthProtocol:x}={}){return this.isSynthetic&&!x?this.symbol:`${this.chain}.${this.symbol}`}toUrl(){return this.isSynthetic?`${this.chain}.${this.symbol.replace("/",".")}`:this.toString()}eqAsset({chain:x,symbol:F}){return this.chain===x&&this.symbol===F}eq(x){return this.eqAsset(x)&&this.eqValue(x)}static fromUrl(x,F=0){const[n,H,N]=x.split(".");if(!(n&&H))throw new j({errorKey:"helpers_invalid_asset_url",info:{urlAsset:x}});const R=n==="THOR"&&N?`${n}.${H}/${N}`:x;return $.from({asset:R,value:F})}static from({value:x=0,fromBaseDecimal:F,asyncTokenLookup:n,...H}){const N=x instanceof B?x.getValue("string"):x,R="chain"in H,I=R?H.chain:H.asset,_=R||Tx.includes(I),{identifier:O,decimal:G}=_?Gx(I):{identifier:I,decimal:void 0},{chain:L,isSynthetic:Z}=l(O),Q=E.get(O.toUpperCase()),J=Q?.decimal||G;Nx(!(n||J),Vx(`Couldn't find static decimal for ${kx(O)} (Using default ${kx(z[L])} decimal as fallback).
1
+ var e=((n)=>typeof require!=="undefined"?require:typeof Proxy!=="undefined"?new Proxy(n,{get:(h,t)=>(typeof require!=="undefined"?require:h)[t]}):n)(function(n){if(typeof require!=="undefined")return require.apply(this,arguments);throw Error('Dynamic require of "'+n+'" is not supported')});export*from"@swapkit/contracts";var a;((k)=>{k.Arbitrum="https://arb1.arbitrum.io/rpc";k.Avalanche="https://node-router.thorswap.net/avalanche-c";k.Base="https://base.llamarpc.com";k.BinanceSmartChain="https://bsc-dataseed.binance.org";k.Bitcoin="https://node-router.thorswap.net/bitcoin";k.BitcoinCash="https://node-router.thorswap.net/bitcoin-cash";k.Chainflip="wss://mainnet-archive.chainflip.io";k.Cosmos="https://node-router.thorswap.net/cosmos/rpc";k.Dash="https://node-router.thorswap.net/dash";k.Dogecoin="https://node-router.thorswap.net/dogecoin";k.Ethereum="https://node-router.thorswap.net/ethereum";k.Kujira="https://rpc-kujira.synergynodes.com/";k.Litecoin="https://node-router.thorswap.net/litecoin";k.Maya="https://tendermint.mayachain.info";k.MayaStagenet="https://stagenet.tendermint.mayachain.info";k.Optimism="https://mainnet.optimism.io";k.Polkadot="wss://rpc.polkadot.io";k.Polygon="https://polygon-rpc.com";k.Radix="https://radix-mainnet.rpc.grove.city/v1/326002fc/core";k.THORChain="https://rpc.thorswap.net";k.THORChainStagenet="https://stagenet-rpc.ninerealms.com";k.Solana="https://mainnet.helius-rpc.com/?api-key=2cbe3ae6-cfc5-4141-a093-0055d0fa3d80"})(a||={});var d;((s)=>{s.Arbitrum="https://arbiscan.io";s.Avalanche="https://snowtrace.io";s.Base="https://basescan.org";s.BinanceSmartChain="https://bscscan.com";s.Bitcoin="https://blockchair.com/bitcoin";s.BitcoinCash="https://www.blockchair.com/bitcoin-cash";s.Chainflip="https://explorer.polkascan.io/polkadot";s.Cosmos="https://www.mintscan.io/cosmos";s.Dash="https://blockchair.com/dash";s.Dogecoin="https://blockchair.com/dogecoin";s.Ethereum="https://etherscan.io";s.Kujira="https://finder.kujira.network/kaiyo-1";s.Litecoin="https://blockchair.com/litecoin";s.Maya="https://www.mayascan.org";s.Optimism="https://optimistic.etherscan.io";s.Polkadot="https://polkadot.subscan.io";s.Polygon="https://polygonscan.com";s.Radix="https://dashboard.radixdlt.com";s.THORChain="https://runescan.io";s.Solana="https://solscan.io"})(d||={});var G;((s)=>{s.Arbitrum="ARB";s.Avalanche="AVAX";s.Base="BASE";s.BinanceSmartChain="BSC";s.Bitcoin="BTC";s.BitcoinCash="BCH";s.Cosmos="GAIA";s.Dash="DASH";s.Dogecoin="DOGE";s.Ethereum="ETH";s.Kujira="KUJI";s.Litecoin="LTC";s.Maya="MAYA";s.Optimism="OP";s.Polkadot="DOT";s.Chainflip="FLIP";s.Polygon="MATIC";s.Radix="XRD";s.THORChain="THOR";s.Solana="SOL"})(G||={});var q;((A)=>{A.Arbitrum="42161";A.ArbitrumHex="0xa4b1";A.Avalanche="43114";A.AvalancheHex="0xa86a";A.Base="8453";A.BaseHex="0x2105";A.BinanceSmartChain="56";A.BinanceSmartChainHex="0x38";A.Bitcoin="bitcoin";A.BitcoinCash="bitcoincash";A.Chainflip="chainflip";A.Cosmos="cosmoshub-4";A.Dash="dash";A.Dogecoin="dogecoin";A.Kujira="kaiyo-1";A.Ethereum="1";A.EthereumHex="0x1";A.Litecoin="litecoin";A.Maya="mayachain-mainnet-v1";A.MayaStagenet="mayachain-stagenet-v1";A.Optimism="10";A.OptimismHex="0xa";A.Polkadot="polkadot";A.Polygon="137";A.PolygonHex="0x89";A.Radix="radix-mainnet";A.THORChain="thorchain-mainnet-v1";A.THORChainStagenet="thorchain-stagenet-v2";A.Solana="solana"})(q||={});var Fh={["0xa4b1"]:"ARB",["42161"]:"ARB",["0xa86a"]:"AVAX",["43114"]:"AVAX",["0x2105"]:"BASE",["8453"]:"BASE",["0x38"]:"BSC",["56"]:"BSC",["bitcoincash"]:"BCH",["bitcoin"]:"BTC",["chainflip"]:"FLIP",["cosmoshub-4"]:"GAIA",["dash"]:"DASH",["dogecoin"]:"DOGE",["0x1"]:"ETH",["kaiyo-1"]:"KUJI",["1"]:"ETH",["litecoin"]:"LTC",["mayachain-stagenet-v1"]:"MAYA",["mayachain-mainnet-v1"]:"MAYA",["0xa"]:"OP",["10"]:"OP",["polkadot"]:"DOT",["0x89"]:"MATIC",["137"]:"MATIC",["radix-mainnet"]:"XRD",["thorchain-stagenet-v2"]:"THOR",["thorchain-mainnet-v1"]:"THOR",["solana"]:"SOL"},On=Object.keys(G),w=Object.values(G),B={ARB:18,AVAX:18,BASE:18,BCH:8,BSC:18,BTC:8,DASH:8,DOGE:8,DOT:10,ETH:18,FLIP:18,GAIA:6,KUJI:6,LTC:8,MATIC:18,MAYA:8,OP:18,SOL:9,THOR:8,XRD:18},Ch=["DOT","FLIP"],Q=["ARB","AVAX","BASE","BSC","ETH","OP","MATIC"],Nh=["BTC","BCH","DASH","DOGE","LTC"],Ah=["GAIA","THOR","MAYA","KUJI"],Bh=["AVAX","BSC","BTC","BCH","GAIA","DOGE","ETH","LTC","THOR"],Th=["ARB","DASH","ETH","KUJI","MAYA","THOR"],W=w.reduce((n,h)=>{const t=On.find((o)=>G[o]===h);if(t)n[h]=t;return n},{}),l=w.reduce((n,h)=>{return n[h]=q[W[h]],n},{}),U=w.reduce((n,h)=>{return n[h]=a[W[h]],n},{}),kh=w.reduce((n,h)=>{const t=`${W[h]}Hex`;return n[h]=q[t],n},{}),Oh=w.reduce((n,h)=>{return n[h]=d[W[h]],n},{});var $n;(($)=>{$.TC_SUPPORTED_TO_TC_SUPPORTED="TC-TC";$.TC_SUPPORTED_TO_ETH="TC-ERC20";$.TC_SUPPORTED_TO_AVAX="TC-ARC20";$.TC_SUPPORTED_TO_BSC="TC-BEP20";$.ETH_TO_TC_SUPPORTED="ERC20-TC";$.ETH_TO_ETH="ERC20-ERC20";$.ETH_TO_AVAX="ERC20-ARC20";$.ETH_TO_BSC="ERC20-BEP20";$.AVAX_TO_TC_SUPPORTED="ARC20-TC";$.AVAX_TO_ETH="ARC20-ERC20";$.AVAX_TO_AVAX="ARC20-ARC20";$.AVAX_TO_BSC="ARC20-BEP20";$.BSC_TO_TC_SUPPORTED="BEP20-TC";$.BSC_TO_ETH="BEP20-ERC20";$.BSC_TO_AVAX="BEP20-ARC20";$.BSC_TO_BSC="BEP20-BEP20"})($n||={});var Ih=["ERC20-ERC20","ARC20-ARC20","BEP20-BEP20"],Lh=["ERC20-TC","ERC20-ARC20","ERC20-BEP20","ARC20-TC","ARC20-ERC20","ARC20-BEP20","BEP20-TC","BEP20-ERC20","BEP20-ARC20"],_h=["TC-TC","TC-ERC20","TC-ARC20","TC-BEP20"];var In;((F)=>{F.ARB="0x0000000000000000000000000000000000000000";F.AVAX="0x0000000000000000000000000000000000000000";F.BASE="0x0000000000000000000000000000000000000000";F.ETH="0x0000000000000000000000000000000000000000";F.BSC="0x0000000000000000000000000000000000000000";F.MATIC="0x0000000000000000000000000000000000001010";F.OP="0x4200000000000000000000000000000000000042"})(In||={});var Ln;((s)=>{s.ARB="m/44'/60'/0'/0";s.AVAX="m/44'/60'/0'/0";s.BASE="m/44'/60'/0'/0";s.BCH="m/44'/145'/0'/0";s.BSC="m/44'/60'/0'/0";s.BTC="m/84'/0'/0'/0";s.DASH="m/44'/5'/0'/0";s.DOGE="m/44'/3'/0'/0";s.DOT="////";s.ETH="m/44'/60'/0'/0";s.FLIP="////";s.GAIA="m/44'/118'/0'/0";s.KUJI="m/44'/118'/0'/0";s.LTC="m/84'/2'/0'/0";s.MATIC="m/44'/60'/0'/0";s.MAYA="m/44'/931'/0'/0";s.OP="m/44'/60'/0'/0";s.SOL="m/44'/501'/0'/0";s.THOR="m/44'/931'/0'/0";s.XRD="////"})(Ln||={});var i={ARB:[44,60,0,0,0],AVAX:[44,60,0,0,0],BASE:[44,60,0,0,0],BCH:[44,145,0,0,0],BSC:[44,60,0,0,0],BTC:[84,0,0,0,0],DASH:[44,5,0,0,0],DOGE:[44,3,0,0,0],ETH:[44,60,0,0,0],GAIA:[44,118,0,0,0],KUJI:[44,118,0,0,0],LTC:[84,2,0,0,0],MATIC:[44,60,0,0,0],MAYA:[44,931,0,0,0],OP:[44,60,0,0,0],SOL:[44,501,0,0,0],THOR:[44,931,0,0,0],XRD:[0,0,0,0,0],DOT:[0,0,0,0,0],FLIP:[0,0,0,0,0]};var nn;((s)=>{s.BRAVE="BRAVE";s.COINBASE_MOBILE="COINBASE_MOBILE";s.COINBASE_WEB="COINBASE_WEB";s.EIP6963="EIP6963";s.EXODUS="EXODUS";s.KEEPKEY="KEEPKEY";s.KEPLR="KEPLR";s.KEYSTORE="KEYSTORE";s.LEDGER="LEDGER";s.METAMASK="METAMASK";s.OKX="OKX";s.OKX_MOBILE="OKX_MOBILE";s.PHANTOM="PHANTOM";s.POLKADOT_JS="POLKADOT_JS";s.RADIX_WALLET="RADIX_WALLET";s.TREZOR="TREZOR";s.TALISMAN="TALISMAN";s.TRUSTWALLET_WEB="TRUSTWALLET_WEB";s.WALLETCONNECT="WALLETCONNECT";s.XDEFI="XDEFI"})(nn||={});var _n;((o)=>{o[o.NoError=36864]="NoError";o[o.LockedDevice=21781]="LockedDevice";o[o.TC_NotFound=65535]="TC_NotFound"})(_n||={});var Gn;((o)=>{o.Average="average";o.Fast="fast";o.Fastest="fastest"})(Gn||={});var gn;((t)=>{t.Approve="approve";t.CheckOnly="checkOnly"})(gn||={});var hn;((N)=>{N.NAME_REGISTER="~";N.BOND="BOND";N.DEPOSIT="+";N.LEAVE="LEAVE";N.UNBOND="UNBOND";N.WITHDRAW="-";N.OPEN_LOAN="$+";N.CLOSE_LOAN="$-";N.RUNEPOOL_DEPOSIT="POOL+";N.RUNEPOOL_WITHDRAW="POOL-"})(hn||={});var Pn;((c)=>{c.unknownError="unknownError";c.test_error="test_error";c.providerDetailsError="providerDetailsError";c.blockHeaderNotFound="blockHeaderNotFound";c.blockHashNotFoundAtHeight="blockHashNotFoundAtHeight";c.blockHashNotFoundAtHash="blockHashNotFoundAtHash";c.txHashMissing="txHashMissing";c.assetValueMissingInfo="assetValueMissingInfo";c.invalidAsset="invalidAsset";c.blockIsRequired="blockIsRequired";c.currentBlockHeaderNotFound="currentBlockHeaderNotFound";c.failedToRetrieveBalance="failedToRetrieveBalance";c.failedToRetrieveBlock="failedToRetrieveBlock";c.failedToRetrieveFees="failedToRetrieveFees";c.notImplementedBCH="notImplementedBCH";c.notImplementedDoge="notImplementedDoge";c.noPoolsFound="noPoolsFound";c.noVaultsFound="noVaultsFound";c.noTxFound="noTxFound";c.noInputCoinFound="noInputCoinFound";c.noBlockDataFound="noBlockDataFound";c.multipleCosmosMessages="multipleCosmosMessages";c.heightOrHashNotProvided="heightOrHashNotProvided";c.unknownDenom="unknownDenom";c.invalidBlockHeight="invalidBlockHeight";c.timestampExtrinsicNoArgumentsForBlock="timestampExtrinsicNoArgumentsForBlock";c.timestampExtrinsicNoTimestampForBlock="timestampExtrinsicNoTimestampForBlock";c.noTimestampExtrinsicForHash="noTimestampExtrinsicForHash";c.timestampExtrinsicNoArgumentsForHash="timestampExtrinsicNoArgumentsForHash";c.txMemoUndefined="txMemoUndefined";c.txMemoIncorrect="txMemoIncorrect";c.txTypeNotFound="txTypeNotFound";c.txNoMessage="txNoMessage";c.txNotFound="txNotFound";c.txReceiptNotFound="txReceiptNotFound";c.txParsingError="txParsingError";c.blockNotFound="blockNotFound";c.balanceNotFound="balanceNotFound";c.configError="configError";c.noQuoteResponse="noQuoteResponse";c.noPoolAssetsFound="noPoolAssetsFound";c.noThorchainPools="noThorchainPools";c.noMayachainPools="noMayachainPools";c.invalidAffiliateFee="invalidAffiliateFee";c.invalidBuyAssetAddress="invalidBuyAssetAddress";c.invalidSellAssetAddress="invalidSellAssetAddress";c.invalidSourceAddress="invalidSourceAddress";c.invalidDestinationAddress="invalidDestinationAddress";c.sourceAddressIsSmartContract="sourceAddressIsSmartContract";c.destinationAddressIsSmartContract="destinationAddressIsSmartContract";c.invalidChainId="invalidChainId";c.unsupportedChainId="unsupportedChainId";c.unsupportedEVMChainId="unsupportedEVMChainId";c.noWhitelistTokens="noWhitelistTokens";c.failedFetchGasPrice="failedFetchGasPrice";c.failedToCreateDepositChannel="failedToCreateDepositChannel";c.noProviderDetailsFound="noProviderDetailsFound";c.noTokenListsFound="noTokenListsFound";c.tokenNotFound="tokenNotFound";c.tokenPriceNotFound="tokenPriceNotFound";c.swapAmountTooSmall="swapAmountTooSmall";c.legsArrayIsEmpty="legsArrayIsEmpty";c.failedToFetchQuoteForLeg="failedToFetchQuoteForLeg";c.noBlockHeaderFound="noBlockHeaderFound";c.failedToSimulateSwap="failedToSimulateSwap";c.addressScreeningFailed="addressScreeningFailed";c.noLiquidtyProvidersFound="noLiquidtyProvidersFound";c.noSaversFound="noSaversFound";c.noInboundAddressesFound="noInboundAddressesFound";c.noInboundAddressFoundForChain="noInboundAddressFoundForChain";c.noLastBlocksFound="noLastBlocksFound";c.noVersionFound="noVersionFound";c.noConstantsFound="noConstantsFound";c.noMimirsFound="noMimirsFound";c.noRoutesFound="noRoutesFound";c.quoteNotFound="quoteNotFound";c.ledgerSignFailed="ledgerSignFailed";c.ledgerFetchSwapFailed="ledgerFetchSwapFailed";c.failedToFetchTx="failedToFetchTx";c.failedBuildTransactionDetails="failedBuildTransactionDetails";c.noLegsForRoute="noLegsForRoute";c.noRouterAddressFound="noRouterAddressFound";c.noAggregatorAddressFound="noAggregatorAddressFound";c.noContractInstanceFound="noContractInstanceFound";c.noContractAddressFound="noContractAddressFound";c.invalidAffiliate="invalidAffiliate";c.providerNotfound="No provider found";c.noRecordFound="No Record found";c.slippageTooLow="Slippage too low";c.tradingHalted="tradingHalted";c.noWrappedGasAsset="noWrappedGasAsset";c.aggregatorAddressNotFound="aggregatorAddressNotFound";c.routerAddressNotFound="routerAddressNotFound";c.dummyAddressNotFound="dummyAddressNotFound";c.trackerError="trackerError";c.noOhlcvDataFound="noOhlcvDataFound";c.noTradingPairs="noTradingPairs";c.noLoanPositionFound="noLoanPositionFound";c.noLendingAvailability="noLendingAvailability";c.lendingRepayTooSmall="lendingRepayTooSmall";c.missingState="missingState";c.ledgerSwapNotFound="ledgerSwapNotFound";c.ledgerSwapNotReadyForTracking="ledgerSwapNotReadyForTracking";c.errorEstimatingGas="errorEstimatingGas";c.apiKeyInvalid="apiKeyInvalid";c.apiKeyFailedToUpdate="apiKeyFailedToUpdate";c.apiKeyExpired="apiKeyExpired";c.unauthorized="unauthorized";c.failedToCreateMemo="failedToCreateMemo";c.radixIncorrectInstructions="radixIncorrectInstructions";c.invalidAddressForChain="invalidAddressForChain"})(Pn||={});var un;((t)=>{t.highSlippage="highSlippage";t.highPriceImpact="highPriceImpact"})(un||={});var Sn;((L)=>{L.CHAINFLIP="CHAINFLIP";L.MAYACHAIN="MAYACHAIN";L.MAYACHAIN_STREAMING="MAYACHAIN_STREAMING";L.ONEINCH="ONEINCH";L.PANCAKESWAP="PANCAKESWAP";L.PANGOLIN_V1="PANGOLIN_V1";L.SUSHISWAP_V2="SUSHISWAP_V2";L.THORCHAIN="THORCHAIN";L.THORCHAIN_STREAMING="THORCHAIN_STREAMING";L.TRADERJOE_V2="TRADERJOE_V2";L.UNISWAP_V2="UNISWAP_V2";L.UNISWAP_V3="UNISWAP_V3";L.CAVIAR_V1="CAVIAR_V1"})(Sn||={});var jn;((R)=>{R.LIQUIDITY="liquidity";R.NETWORK="network";R.INBOUND="inbound";R.OUTBOUND="outbound";R.AFFILIATE="affiliate";R.TAX="tax"})(jn||={});import{red as sn,yellow as wn}from"picocolors";var pn={core_estimated_max_spendable_chain_not_supported:10002,core_extend_error:10003,core_inbound_data_not_found:10004,core_approve_asset_address_or_from_not_found:10005,core_plugin_not_found:10006,core_plugin_swap_not_found:10007,core_approve_asset_target_invalid:10008,core_explorer_unsupported_chain:10009,core_verify_message_not_supported:10010,core_chain_halted:10099,core_wallet_connection_not_found:10100,core_wallet_xdefi_not_installed:10101,core_wallet_evmwallet_not_installed:10102,core_wallet_walletconnect_not_installed:10103,core_wallet_keystore_not_installed:10104,core_wallet_ledger_not_installed:10105,core_wallet_trezor_not_installed:10106,core_wallet_keplr_not_installed:10107,core_wallet_okx_not_installed:10108,core_wallet_keepkey_not_installed:10109,core_wallet_talisman_not_installed:10110,core_wallet_not_keypair_wallet:10111,core_wallet_sign_message_not_supported:10110,core_swap_invalid_params:10200,core_swap_route_not_complete:10201,core_swap_asset_not_recognized:10202,core_swap_contract_not_found:10203,core_swap_route_transaction_not_found:10204,core_swap_contract_not_supported:10205,core_swap_transaction_error:10206,core_swap_quote_mode_not_supported:10207,core_transaction_deposit_error:10301,core_transaction_create_liquidity_base_error:10302,core_transaction_create_liquidity_asset_error:10303,core_transaction_create_liquidity_invalid_params:10304,core_transaction_add_liquidity_invalid_params:10305,core_transaction_add_liquidity_base_address:10306,core_transaction_add_liquidity_base_error:10307,core_transaction_add_liquidity_asset_error:10308,core_transaction_withdraw_error:10309,core_transaction_deposit_to_pool_error:10310,core_transaction_deposit_insufficient_funds_error:10311,core_transaction_deposit_gas_error:10312,core_transaction_invalid_sender_address:10313,core_transaction_deposit_server_error:10314,core_transaction_user_rejected:10315,core_transaction_failed:10316,wallet_connection_rejected_by_user:20000,wallet_missing_api_key:20001,wallet_chain_not_supported:20002,wallet_missing_params:20003,wallet_provider_not_found:20004,wallet_failed_to_add_or_switch_network:20005,wallet_ledger_connection_error:20101,wallet_ledger_connection_claimed:20102,wallet_ledger_get_address_error:20103,wallet_ledger_device_not_found:20104,wallet_ledger_device_locked:20105,wallet_phantom_not_found:20201,wallet_xdefi_not_found:20301,wallet_xdefi_send_transaction_no_address:20302,wallet_xdefi_contract_address_not_provided:20303,wallet_xdefi_asset_not_defined:20304,wallet_walletconnect_project_id_not_specified:20401,wallet_walletconnect_connection_not_established:20402,wallet_walletconnect_namespace_not_supported:20403,wallet_trezor_failed_to_sign_transaction:20501,wallet_trezor_derivation_path_not_supported:20502,wallet_trezor_failed_to_get_address:20503,wallet_talisman_not_enabled:20601,wallet_talisman_not_found:20602,wallet_polkadot_not_found:20701,chainflip_channel_error:30001,chainflip_unknown_asset:30002,chainflip_broker_invalid_params:30100,chainflip_broker_recipient_error:30101,chainflip_broker_register:30102,chainflip_broker_tx_error:30103,chainflip_broker_withdraw:30104,chainflip_broker_fund_only_flip_supported:30105,chainflip_broker_fund_invalid_address:30106,thorchain_chain_halted:40001,thorchain_trading_halted:40002,thorchain_swapin_router_required:40100,thorchain_swapin_vault_required:40101,thorchain_swapin_memo_required:40102,thorchain_swapin_token_required:40103,api_v2_invalid_response:50001,api_v2_server_error:50002,toolbox_cosmos_signer_not_defined:90101,toolbox_cosmos_no_accounts_found:90102,toolbox_cosmos_verify_signature_no_pubkey:90103,toolbox_evm_no_abi_fragment:90201,toolbox_evm_no_signer:90202,toolbox_evm_no_signer_address:90203,toolbox_evm_no_from_address:90204,toolbox_evm_no_contract_address:90205,toolbox_evm_no_fee_data:90206,toolbox_evm_no_gas_price:90207,toolbox_evm_no_to_address:90208,toolbox_evm_invalid_gas_asset_address:90209,toolbox_evm_provider_not_eip1193_compatible:90210,toolbox_evm_error_estimating_gas_limit:90211,toolbox_evm_error_sending_transaction:90212,helpers_invalid_number_different_decimals:99000,helpers_invalid_number_of_years:99001,helpers_invalid_identifier:99002,helpers_invalid_asset_url:99003,helpers_invalid_asset_identifier:99004,helpers_invalid_memo_type:99005,helpers_failed_to_switch_network:99103,helpers_not_found_provider:99200,not_implemented:99999};class I extends Error{static ErrorCode=pn;constructor(n,h){const t=typeof n==="string",o=t?n:n.errorKey;if(h)console.error(h,{stack:h?.stack,message:h?.message});super(o,{cause:{code:I.ErrorCode[o],message:`${o}${t?"":`: ${JSON.stringify(n.info)}`}`}});Object.setPrototypeOf(this,I.prototype)}}function Mh(n){if(n<0)throw new I({errorKey:"helpers_invalid_number_of_years",info:{numberOfYears:n}});return 10+n}function Vh(n){if(n<0)throw new I({errorKey:"helpers_invalid_number_of_years",info:{numberOfYears:n}});return Math.round((10+n*1.0512)*10000000000)/10000000000}function bh(n,h){try{return n()}catch(t){if(h)throw new I(h,t);return console.error(t)}}function Kh(n){switch(n){case"THOR":return`${n}.RUNE`;case"GAIA":return`${n}.ATOM`;case"BSC":return`${n}`;default:return`${n}.${n}`}}function on(n,h){if(!Xn&&n){if(tn.has(h))return;tn.add(h),console.warn(h)}}var Xn=["production","test"].includes("development"),tn=new Set;function cn(n=""){const h=n.toUpperCase(),[t]=h.split(".");if(xn.includes(t))return!0;const[o]=h.split("/");if(xn.includes(o))return!0;throw new I({errorKey:"helpers_invalid_identifier",info:{message:`Invalid identifier: ${n}. Expected format: <Chain>.<Ticker> or <Chain>.<Ticker>-<ContractAddress>`,identifier:n}})}function Uh(n){if(n.length>30)return!1;const h=/^[a-zA-Z0-9+_-]+$/g;return!!n.match(h)}var xn=[...Object.values(G),"TERRA"];function X({value:n,bigIntDecimal:h=y,decimal:t=y}){if(t===0)return n.toString();const o=n<0n;let x=n.toString().substring(o?1:0);const H=t-(x.length-1);if(H>0)x="0".repeat(H)+x;const R=x.length-t;let F=x.slice(-t);if(Number.parseInt(F[h]||"0")>=5)F=`${F.substring(0,h-1)}${(Number.parseInt(F[h-1]||"0")+1).toString()}`;else F=F.substring(0,h);return`${o?"-":""}${x.slice(0,R)}.${F}`.replace(/\.?0*$/,"")}function M(n){const t=`${typeof n==="number"?Jn.format(n):E(n)}`.replaceAll(",",".").split(".");return t.length>1?`${t.slice(0,-1).join("")}.${t.at(-1)}`:t[0]||"0"}function Hn(n){const h=n.split(".")[1]?.length||0;return Math.max(h,y)}function E(n){return typeof n==="object"?"getValue"in n?n.getValue("string"):n.value:n}var y=8,j=(n)=>10n**BigInt(n),z=(n)=>Math.log10(Number.parseFloat(n.toString()));class S{decimalMultiplier=10n**8n;bigIntValue=0n;decimal;static fromBigInt(n,h){return new S({decimal:h,value:X({value:n,bigIntDecimal:h,decimal:h})})}static shiftDecimals({value:n,from:h,to:t}){return S.fromBigInt(n.getBaseValue("bigint")*j(t)/j(h),t)}constructor(n){const h=E(n),t=typeof n==="object";this.decimal=t?n.decimal:void 0,this.decimalMultiplier=t&&"decimalMultiplier"in n?n.decimalMultiplier:j(Math.max(Hn(M(h)),this.decimal||0)),this.#x(h)}set(n){return new this.constructor({decimal:this.decimal,value:n,identifier:this.toString()})}add(...n){return this.#h("add",...n)}sub(...n){return this.#h("sub",...n)}mul(...n){return this.#h("mul",...n)}div(...n){return this.#h("div",...n)}gt(n){return this.#n("gt",n)}gte(n){return this.#n("gte",n)}lt(n){return this.#n("lt",n)}lte(n){return this.#n("lte",n)}eqValue(n){return this.#n("eqValue",n)}getValue(n){const h=this.formatBigIntToSafeValue(this.bigIntValue,this.decimal||z(this.decimalMultiplier));switch(n){case"number":return Number(h);case"string":return h;case"bigint":return this.bigIntValue*10n**BigInt(this.decimal||8n)/this.decimalMultiplier}}getBaseValue(n){const h=this.decimalMultiplier/j(this.decimal||B.THOR),t=this.bigIntValue/h;switch(n){case"number":return Number(t);case"string":return t.toString();case"bigint":return t}}getBigIntValue(n,h){if(!h&&typeof n==="object")return n.bigIntValue;const t=E(n),o=M(t);if(o==="0"||o==="undefined")return 0n;return this.#o(o,h)}toSignificant(n=6){const[h,t]=this.getValue("string").split("."),o=h||"",x=t||"";if((Number.parseInt(o)?o.length+x.length:x.length)<=n)return this.getValue("string");if(o.length>=n)return o.slice(0,n).padEnd(o.length,"0");if(Number.parseInt(o))return`${o}.${x.slice(0,n-o.length)}`.padEnd(n-o.length,"0");const R=Number.parseInt(x),F=`${R}`.slice(0,n);return`0.${F.padStart(x.length-`${R}`.length+F.length,"0")}`}toFixed(n=6){const[h,t]=this.getValue("string").split("."),o=h||"",x=t||"";if(Number.parseInt(o))return`${o}.${x.slice(0,n)}`.padEnd(n,"0");const H=Number.parseInt(x),R=`${H}`.slice(0,n);return`0.${R.padStart(x.length-`${H}`.length+R.length,"0")}`}toAbbreviation(n=2){const h=this.getValue("number"),t=["","K","M","B","T","Q","Qi","S"],o=Math.floor(Math.log10(Math.abs(h))/3),x=t[o];if(!x)return this.getValue("string");const H=10**(o*3);return`${(h/H).toFixed(n)}${x}`}toCurrency(n="$",{currencyPosition:h="start",decimal:t=2,decimalSeparator:o=".",thousandSeparator:x=","}={}){const H=this.getValue("number"),[R="",F=""]=H.toFixed(6).split("."),T=R.replace(/\B(?=(\d{3})+(?!\d))/g,x),C=R||F?R==="0"?`${Number.parseFloat(`0.${F}`)}`.replace(".",o):`${T}${Number.parseInt(F)?`${o}${F.slice(0,t)}`:""}`:"0.00";return`${h==="start"?n:""}${C}${h==="end"?n:""}`}formatBigIntToSafeValue(n,h){const t=h||this.decimal||y,o=Math.max(t,z(this.decimalMultiplier)),x=n<0n,H=n.toString().substring(x?1:0),R=o-(H.length-1),F=R>0?"0".repeat(R)+H:H,T=F.length-o;let C=F.slice(-o);if(Number.parseInt(C[t]||"0")>=5)C=`${C.substring(0,t-1)}${(Number.parseInt(C[t-1]||"0")+1).toString()}`;else C=C.substring(0,t);return`${x?"-":""}${F.slice(0,T)}.${C}`.replace(/\.?0*$/,"")}#h(n,...h){const t=this.#t(this,...h),o=Math.max(t,z(this.decimalMultiplier)),x=j(o),H=h.reduce((F,T)=>{const C=this.getBigIntValue(T,o);switch(n){case"add":return F+C;case"sub":return F-C;case"mul":return F*C/x;case"div":{if(C===0n)throw new RangeError("Division by zero");return F*x/C}default:return F}},this.bigIntValue*x/this.decimalMultiplier),R=X({bigIntDecimal:o,decimal:o,value:H});return new this.constructor({decimalMultiplier:j(o),decimal:this.decimal,value:R,identifier:this.toString()})}#n(n,...h){const t=this.#t(this,...h),o=this.getBigIntValue(h[0]||"0",t),x=this.getBigIntValue(this,t);switch(n){case"gt":return x>o;case"gte":return x>=o;case"lt":return x<o;case"lte":return x<=o;case"eqValue":return x===o}}#x(n){const h=M(n)||"0";this.bigIntValue=this.#o(h)}#t(...n){const h=n.map((t)=>{return typeof t==="object"?t.decimal||z(t.decimalMultiplier):Hn(M(t))}).filter(Boolean);return Math.max(...h,y)}#o(n,h){const t=h?j(h):this.decimalMultiplier,o=z(t),[x="",H=""]=n.split(".");return BigInt(`${x}${H.padEnd(o,"0")}`)}}var Jn=Intl.NumberFormat("fullwide",{useGrouping:!1,maximumFractionDigits:20});function ot(n){const h=O.from({chain:n});switch(n){case"BTC":case"LTC":case"BCH":case"DASH":return h.set(0.00010001);case"DOGE":return h.set(1.00000001);case"AVAX":case"ETH":case"ARB":case"BSC":return h.set(0.00000001);case"THOR":case"MAYA":return h.set(0);case"GAIA":case"KUJI":return h.set(0.000001);default:return h.set(0.00000001)}}async function zn(n,h=0){cn(n);const t=V.get(n.toUpperCase()),o=t?.decimal||await Fn(v(n));if(!t)V.set(n.toUpperCase(),{identifier:n,decimal:o});return new O({decimal:o,value:b(h,o),identifier:n})}function yn(n,h=0){const t=n.split(".")?.[0]?.toUpperCase(),o=t?["MAYA","THOR"].includes(t):!1,[x,H]=o?n.split(".").slice(1).join().split("/"):n.split("/");if(!(x&&H))throw new I({errorKey:"helpers_invalid_asset_identifier",info:{identifier:n}});return new O({decimal:8,value:b(h,8),identifier:`${t||"THOR"}.${x}/${H}`})}function b(n,h){return typeof n==="bigint"?X({value:n,bigIntDecimal:h,decimal:h}):n}function v(n){const h=n.slice(0,14).includes("/"),t=n.split(".")?.[0]?.toUpperCase()==="THOR",o=n.split(".")?.[0]?.toUpperCase()==="MAYA",[x,H=""]=t||o?n.split(".").slice(1).join().split("/"):n.split("/");if(h&&!(x&&H))throw new I({errorKey:"helpers_invalid_asset_identifier",info:{identifier:n}});const R=n.includes(".")&&!h?n:`${o?"MAYA":"THOR"}.${H}`,[F,...T]=R.split("."),C=h?H:T.join("."),N=C.split("-"),_=N.length===1?N[0]:N.slice(0,-1).join("-"),P=N.length===1?void 0:N[N.length-1];return{address:P?.toLowerCase(),chain:F,isGasAsset:m({chain:F,symbol:C}),isSynthetic:h,ticker:_,symbol:(h?`${x}/`:"")+(P?`${_}-${P?.toLowerCase()??""}`:C)}}var V=new Map;class O extends S{address;chain;isGasAsset=!1;isSynthetic=!1;symbol;tax;ticker;type;chainId;constructor({value:n,decimal:h,tax:t,chain:o,symbol:x,identifier:H}){super(typeof n==="object"?n:{decimal:h,value:n});const R=v(H||`${o}.${x}`);this.type=Nn(R),this.tax=t,this.chain=R.chain,this.ticker=R.ticker,this.symbol=R.symbol,this.address=R.address,this.isSynthetic=R.isSynthetic,this.isGasAsset=R.isGasAsset,this.chainId=l[R.chain]}toString({includeSynthProtocol:n}={}){return this.isSynthetic&&!n?this.symbol:`${this.chain}.${this.symbol}`}toUrl(){return this.isSynthetic?`${this.chain}.${this.symbol.replace("/",".")}`:this.toString()}eqAsset({chain:n,symbol:h}){return this.chain===n&&this.symbol===h}eq(n){return this.eqAsset(n)&&this.eqValue(n)}static fromUrl(n,h=0){const[t,o,x]=n.split(".");if(!(t&&o))throw new I({errorKey:"helpers_invalid_asset_url",info:{urlAsset:n}});const H=t==="THOR"&&x?`${t}.${o}/${x}`:n;return O.from({asset:H,value:h})}static from({value:n=0,fromBaseDecimal:h,asyncTokenLookup:t,...o}){const x=n instanceof S?n.getValue("string"):n,H="chain"in o,R=H?o.chain:o.asset,F=H||Rn.includes(R),{identifier:T,decimal:C}=F?Cn(R):{identifier:R,decimal:void 0},{chain:N,isSynthetic:_}=v(T),P=V.get(T.toUpperCase()),L=P?.decimal||C;on(!(t||L),wn(`Couldn't find static decimal for ${sn(T)} (Using default ${sn(B[N])} decimal as fallback).
2
2
  This can result in incorrect calculations and mess with amount sent on transactions.
3
3
  You can load static assets by installing @swapkit/tokens package and calling AssetValue.loadStaticAssets()
4
- or by passing asyncTokenLookup: true to the from() function, which will make it async and return a promise.`));const{decimal:p,identifier:V,tax:X}=Q||{decimal:J||z[L],identifier:O},K=F?b(BigInt(N),F):b(N,p);return n?Cx(V,F?K:N):Z?Sx(V,K):new $({tax:X,decimal:p,identifier:V,value:K})}static loadStaticAssets(){return new Promise((x,F)=>{try{import("@swapkit/tokens").then((n)=>{for(let H of Object.values(n))for(let{identifier:N,chain:R,...I}of H.tokens)E.set(N.toUpperCase(),{identifier:N,decimal:"decimals"in I?I.decimals:z[R]});x({ok:!0})})}catch(n){console.error(n),F({ok:!1,error:n,message:"Couldn't load static assets. Ensure you have installed @swapkit/tokens package"})}})}static fromString(x,F=0){return $.from({asset:x,value:F,asyncTokenLookup:!0})}static fromIdentifier(x,F=0){return $.from({asset:x,value:F,asyncTokenLookup:!0})}static fromStringSync(x,F=0){return $.from({asset:x,value:F})}static fromStringWithBase(x,F=0n,n=8){return $.from({asyncTokenLookup:!0,asset:x,value:F,fromBaseDecimal:n})}static fromStringWithBaseSync(x,F=0n,n=8){return $.from({asset:x,value:F,fromBaseDecimal:n})}static fromIdentifierSync(x,F=0){return $.from({asset:x,value:F})}static fromChainOrSignature(x,F=0){if(Object.values(Y).includes(x))return $.from({chain:x,value:F});return $.from({asset:x,value:F})}}function Nn({apiKey:x,...F}){r={...F,apiKey:x}}async function D(x,F){const{apiKey:n,...H}=r,{searchParams:N,json:R,body:I}=F,_={...Ux,...H.headers,...F.headers,...R?{"Content-Type":"application/json"}:{}},O=R?JSON.stringify(R):I,G=new URL(x);if(N)G.search=new URLSearchParams(N).toString();if(n)_["x-api-key"]=n;try{const Z=await(await fetch(G.toString(),{...H,...F,body:O,headers:_})).json();if(F.responseHandler)return F.responseHandler(Z);return Z}catch(L){if(F.onError)return F.onError(L);console.error(L)}}var r={},Ux=typeof window!=="undefined"?{}:{referrer:"https://sk.thorswap.net",referer:"https://sk.thorswap.net"},c={get:async(x,F)=>D(x,{...F,method:"GET"}),post:async(x,F)=>D(x,{...F,method:"POST"}),extend:(x)=>{const F={...r,...x};return{get:async(n,H)=>D(n,{...F,...H,method:"GET"}),post:async(n,H)=>D(n,{...F,...H,method:"POST"}),extend:(n)=>c.extend({...F,...n})}}};async function Ln(x){const F=await import("@swapkit/tokens");for(let n of Object.values(F))for(let{identifier:H,chain:N,...R}of n.tokens){if("identifier"in x&&H===x.identifier)return H;if("address"in R&&"chain"in x&&N===x.chain&&R.address.toLowerCase()===x.contract.toLowerCase())return H}return}var fx="0x313ce567",Tx=[`${"MAYA"}.MAYA`,`${"ETH"}.THOR`,`${"ETH"}.vTHOR`,`${"KUJI"}.USK`],Ax=async({chain:x,to:F})=>{try{const{result:n}=await c.post(m[x],{headers:{accept:"*/*","content-type":"application/json","cache-control":"no-cache"},body:JSON.stringify({id:44,jsonrpc:"2.0",method:"eth_call",params:[{to:F.toLowerCase(),data:fx},"latest"]})});return Number.parseInt(BigInt(n||z[x]).toString())}catch(n){return console.error(n),z[x]}},px=async({symbol:x})=>{try{const F=x.split("-")[1]?.toLowerCase(),{manager:n}=await c.post(`${m["XRD"]}/state/resource`,{headers:{Accept:"*/*","Content-Type":"application/json"},body:JSON.stringify({network:"mainnet",resource_address:F})});return n.divisibility.value.divisibility}catch(F){return console.error(F),z["XRD"]}},gx=(x)=>{if(x==="ETH")return 18;const F=x.split("-"),n=F.length===1?void 0:F[F.length-1]?.toLowerCase();return n?.startsWith("0x")?Ax({chain:"ETH",to:n}):18},ux=(x)=>{const F=x.split("-"),n=F.length===1?void 0:F[F.length-1];return n?.startsWith("0x")?Ax({chain:"AVAX",to:n.toLowerCase()}):18},yx=(x)=>{if(x==="BSC")return 18;return 18},vx=(x)=>{if(x==="XRD")return 18;return px({symbol:x})},_x=({chain:x,symbol:F})=>{switch(x){case"ETH":return gx(F);case"AVAX":return ux(F);case"BSC":return yx(F);case"XRD":return vx(F);default:return z[x]}},Tn=({chain:x})=>{switch(x){case"ARB":case"OP":return $.from({asset:`${x}.ETH`});case"MAYA":return $.from({asset:`${x}.CACAO`});case"GAIA":return $.from({asset:`${x}.ATOM`});case"BSC":return $.from({asset:`${x}.BNB`});case"THOR":return $.from({asset:`${x}.RUNE`});default:return $.from({asset:`${x}.${x}`})}},a=({chain:x,symbol:F})=>{switch(x){case"ARB":case"OP":return F==="ETH";case"MAYA":return F==="CACAO";case"GAIA":return F==="ATOM";case"BSC":return F==="BNB";case"THOR":return F==="RUNE";default:return F===x}},Gx=(x)=>{switch(x){case"ARB":case"OP":return{identifier:`${x}.ETH`,decimal:z[x]};case`${"ETH"}.THOR`:return{identifier:"ETH.THOR-0xa5f2211b9b8170f694421f2046281775e8468044",decimal:18};case`${"ETH"}.vTHOR`:return{identifier:"ETH.vTHOR-0x815c23eca83261b6ec689b60cc4a58b54bc24d8d",decimal:18};case"GAIA":return{identifier:`${x}.ATOM`,decimal:z[x]};case"THOR":return{identifier:`${x}.RUNE`,decimal:z[x]};case"BSC":return{identifier:`${x}.BNB`,decimal:z[x]};case"MAYA":return{identifier:`${x}.CACAO`,decimal:10};case"XRD":return{identifier:`${"XRD"}.XRD`,decimal:z[x]};case`${"MAYA"}.MAYA`:return{identifier:x,decimal:4};case`${"KUJI"}.USK`:return{identifier:x,decimal:6};default:return{identifier:`${x}.${x}`,decimal:z[x]}}},Lx=({chain:x,symbol:F})=>{if(F.includes("/"))return"Synth";switch(x){case"GAIA":return F==="ATOM"?"Native":"GAIA";case"KUJI":return F==="KUJI"?"Native":"KUJI";case"BSC":return F==="BNB"?"Native":"BEP20";case"ETH":return F==="ETH"?"Native":"ERC20";case"AVAX":return F==="AVAX"?"Native":"AVAX";case"MATIC":return F==="MATIC"?"Native":"POLYGON";case"ARB":return["ETH","ARB"].includes(F)?"Native":"ARBITRUM";case"OP":return["ETH","OP"].includes(F)?"Native":"OPTIMISM";case"XRD":return F==="XRD"?"Native":"RADIX";default:return"Native"}},_n=(x)=>{const[F,...n]=x.split("."),H=x.includes("/"),N=n.join("."),R=N?.split("-"),I=R?.length?R.length===1?R[0]:R.slice(0,-1).join("-"):void 0;return{chain:F,symbol:N,ticker:I,synth:H}},ox=new RegExp(/(.)\1{6}|\.ORG|\.NET|\.FINANCE|\.COM|WWW|HTTP|\\\\|\/\/|[\s$%:[\]]/,"gmi"),Ex=(x)=>{const[F,n]=x.split(".");if(!y.includes(F))return!0;const H=n.split("-"),N=H.length===1?void 0:H[H.length-1];return a({chain:F,symbol:n})||!!N},Gn=(x)=>x.filter(({chain:F,value:n,symbol:H})=>{const N=`${F}.${H}`;return!ox.test(N)&&Ex(N)&&n!=="0"});function Pn([x,F,n,H,N]){return`m/${x}'/${F}'/${n}'/${H}${typeof N!=="number"?"":`/${N}`}`}function $n({chain:x,index:F,addressIndex:n=0,type:H}){if(y.includes(x)){if(H==="legacy")return[44,60,0,F];if(H==="ledgerLive")return[44,60,F,0,n];return Ox(s[x],F)}const N=x==="LTC"?2:0;switch(H){case"nativeSegwitMiddleAccount":return[84,N,F,0,n];case"segwit":return[49,N,0,0,F];case"legacy":return[44,N,0,0,F];default:return Ox(s[x],F)}}function Xn(x){const[F,n,H]=x.split("/").map((N)=>Number.parseInt(N,10));switch(n){case 44:return"legacy";case 49:return"p2sh";default:return"bech32"}}var Ox=(x,F)=>{return[...x.slice(0,x.length-1),F]};function bx({liquidityUnits:x,poolUnits:F,runeDepth:n}){const H=w(x),N=w(F),R=w(n),I=H.mul(R),_=N.mul(N).mul(2),O=N.mul(H).mul(2),G=H.mul(H),L=N.mul(N).mul(N);return I.mul(_.sub(O).add(G)).div(L)}function Dx({liquidityUnits:x,poolUnits:F,assetDepth:n}){const H=w(x),N=w(F),R=w(n),I=H.mul(R),_=N.mul(N).mul(2),O=N.mul(H).mul(2),G=H.mul(H),L=I.mul(_.sub(O).add(G)),Z=N.mul(N).mul(N);return L.div(Z)}function Zn({percent:x,runeDepth:F,liquidityUnits:n,poolUnits:H}){return bx({runeDepth:F,liquidityUnits:n,poolUnits:H}).mul(x)}function Yn({percent:x,assetDepth:F,liquidityUnits:n,poolUnits:H}){return Dx({assetDepth:F,liquidityUnits:n,poolUnits:H}).mul(x)}function w(x){return q.fromBigInt(BigInt(x),8)}function cx({liquidityUnits:x,poolUnits:F,runeDepth:n,assetDepth:H}){return{assetAmount:w(H).mul(x).div(F),runeAmount:w(n).mul(x).div(F)}}function wn({liquidityUnits:x,poolUnits:F,runeDepth:n,assetDepth:H,percent:N}){return Object.fromEntries(Object.entries(cx({liquidityUnits:x,poolUnits:F,runeDepth:n,assetDepth:H})).map(([R,I])=>[R,I.mul(N)]))}function Qn({runeDepth:x,poolUnits:F,assetDepth:n,liquidityUnits:H,runeAmount:N,assetAmount:R}){const I=new q({value:x,decimal:8}),_=new q({value:n,decimal:8}),O=new q({value:F,decimal:8}),G=new q({value:N,decimal:8}),L=new q({value:R,decimal:8}),Z=G.mul(_),Q=L.mul(I),J=G.mul(L),p=I.mul(_),V=O.mul(Z.add(Q.add(J.mul(2)))),X=Z.add(Q.add(p.mul(2))),K=V.div(X),g=w(H).add(K);if(K.getBaseValue("number")===0)return g.div(O).getBaseValue("number");const k=O.add(g);return g.div(k).getBaseValue("number")}function qn({runeAmount:x,assetAmount:F,runeDepth:n,assetDepth:H}){if(x==="0"||F==="0"||n==="0"||H==="0")return 0;const N=w(n),R=w(H),I=w(F),_=w(x),O=I.mul(N).sub(R.mul(_)),G=R.mul(_).add(N.mul(R));return Math.abs(O.div(G).getBaseValue("number"))}function dx({type:x,address:F}){return`${x}:${F}`}function tx({address:x,unbondAmount:F}){return`${"UNBOND"}:${x}:${F}`}function Vn(x){return f("POOL+",x)}function mx({chain:x,symbol:F,...n}){return f(`${"+"}:${x}/${F}`,n)}function sx({chain:x,symbol:F,address:n,...H}){const N=ex({chain:x,symbol:F}),R=n?`:${n}:`:":";return f(`${"+"}:${N}${R}`,H)}function ix({chain:x,symbol:F,basisPoints:n}){return`${"-"}:${x}/${F}:${n}`}function lx({chain:x,symbol:F,ticker:n,basisPoints:H,targetAsset:N}){const R=x==="ETH"&&n!=="ETH"?`${n}-${F.slice(-3)}`:F,I=N?`:${N}`:"";return`${"-"}:${x}.${R}:${H}${I}`}function Cn({basisPoints:x,...F}){return f(`${"POOL-"}:${x}`,F)}function ax({name:x,chain:F,address:n,owner:H}){const N=`${"~"}:${x}:${F}:${n}`,R=H?`:${H}`:"";return`${N}${R}`}function Sn({name:x,chain:F,asset:n,payout:H,owner:N}){return`${"~"}:${x}:${F}:${H}:${N}:${n}`}function rx(x,{asset:F,address:n,minAmount:H,...N}){const R=`${x}:${F}:${n}`,I=H?`:${H}`:"";return f(`${R}${I}`,N)}function f(x,{affiliateAddress:F,affiliateBasisPoints:n}={}){const H=`${x}${F?`:${F}:${n||0}`:""}`;return H.endsWith(":")?H.slice(0,-1):H}function ex({chain:x,symbol:F}){switch(x){case"BTC":case"DOGE":case"LTC":return x.slice(0,1).toLowerCase();case"BCH":return"c";default:return`${x}.${F}`}}var Un=(x,F)=>{switch(x){case"LEAVE":case"BOND":return dx({type:x,address:F?.address});case"UNBOND":return tx({address:F?.address,unbondAmount:F?.unbondAmount});case"~":return ax(F);case"$+":case"$-":return rx(x,F);case"+":{const{chain:n,symbol:H,address:N,singleSide:R}=F;if(R)return mx({chain:n,symbol:H});return sx({chain:n,symbol:H,address:N})}case"-":{const{chain:n,ticker:H,symbol:N,basisPoints:R,targetAssetString:I,singleSide:_}=F;if(_)return ix({chain:n,symbol:N,basisPoints:R});return lx({chain:n,ticker:H,symbol:N,basisPoints:R,targetAsset:I})}default:throw new j({errorKey:"helpers_invalid_memo_type",info:{memoType:x}})}};function bn({chain:x,covalentApiKey:F,ethplorerApiKey:n}){const H=x!=="ETH"&&!F?"covalentApiKey":n?void 0:"ethplorerApiKey";if(H)throw new j({errorKey:"wallet_missing_api_key",info:{missingKey:H}});return{covalentApiKey:F,ethplorerApiKey:n}}function Dn(){const x=[];function F(H){if(x.map((N)=>N.info.uuid).includes(H.detail.info.uuid))return;x.push(H.detail)}window.addEventListener("eip6963:announceProvider",F),window.dispatchEvent(new Event("eip6963:requestProvider"));function n(){window.removeEventListener("eip6963:announceProvider",F)}return{providers:x,removeEIP6963EventListener:n}}var xF=["approve","approvedAmount","call","sendTransaction","transfer","isApproved","approvedAmount","EIP1193SendTransaction","getFeeData","broadcastTransaction","estimateCall","estimateGasLimit","estimateGasPrices","createContractTxObject"],FF=(x,F,n)=>async(...H)=>{try{await nF(F,n)}catch(N){throw new j({errorKey:"helpers_failed_to_switch_network",info:{error:N}})}return x(...H)},Px=({provider:x,params:F,method:n})=>{if(!x?.send)throw new j("helpers_not_found_provider");const H=F?Array.isArray(F)?F:[F]:[];return x.send(n,H)},un=({toolbox:x,chainId:F,provider:n=window.ethereum})=>{const H=xF.reduce((N,R)=>{if(!x[R])return N;const I=x[R];if(typeof I!=="function")return N;return{...N,[R]:FF(I,n,F)}},{});return{...x,...H}},yn=(x,F)=>Px({provider:x,method:"wallet_addEthereumChain",params:[F]}),nF=(x,F="0x1")=>Px({provider:x,method:"wallet_switchEthereumChain",params:[{chainId:F}]}),vn=(x)=>{window.ethereum?.on("accountsChanged",()=>x()),window.xfi?.ethereum.on("accountsChanged",()=>x())},on=()=>{const{isTrust:x,isBraveWallet:F,__XDEFI:n,overrideIsMetaMask:H,selectedProvider:N}=window?.ethereum||{};if(x)return"TRUSTWALLET_WEB";if(F)return"BRAVE";if(H&&N?.isCoinbaseWallet)return"COINBASE_WEB";if(n)"XDEFI";return"METAMASK"},En=(x)=>{return HF().includes(x)},HF=()=>{const x=window?.ethereum&&!window.ethereum?.isBraveWallet,F=window?.xfi||window?.ethereum?.__XDEFI,n=window?.ethereum?.isBraveWallet,H=window?.ethereum?.isTrust||window?.trustwallet,N=window?.ethereum?.overrideIsMetaMask&&window?.ethereum?.selectedProvider?.isCoinbaseWallet||window?.coinbaseWalletExtension,R=[];if(x)R.push("METAMASK");if(F)R.push("XDEFI");if(n)R.push("BRAVE");if(H)R.push("TRUSTWALLET_WEB");if(N)R.push("COINBASE_WEB");if(NF())R.push("OKX_MOBILE");return R},NF=()=>{const x=navigator.userAgent,F=/iphone|ipad|ipod|ios/i.test(x),n=/android|XiaoMi|MiuiBrowser/i.test(x),H=F||n,N=/OKApp/i.test(x);return H&&N},cn=()=>typeof window.ethereum!=="undefined";class q extends B{eq(x){return this.eqValue(x)}static fromBigInt(x,F){return new q({decimal:F,value:M({value:x,bigIntDecimal:F,decimal:F})})}}export{oF as wrapWithThrow,FF as wrapMethodWithNetworkSwitch,Nx as warnOnce,dF as validateTNS,Rx as validateIdentifier,nF as switchEVMWalletNetwork,Nn as setRequestClientConfig,un as prepareNetworkSwitch,NF as okxMobileEnabled,HF as listWeb3EVMWallets,cn as isWeb3Detected,a as isGasAsset,En as isDetected,Xn as getWalletFormatFor,yF as getTHORNameCost,wn as getSymmetricWithdraw,cx as getSymmetricPoolShare,nn as getMinAmountByChain,lx as getMemoForWithdraw,tx as getMemoForUnbond,ix as getMemoForSaverWithdraw,mx as getMemoForSaverDeposit,Cn as getMemoForRunePoolWithdraw,Vn as getMemoForRunePoolDeposit,ax as getMemoForNameRegister,Sn as getMemoForNamePreferredAssetRegister,rx as getMemoForLoan,dx as getMemoForLeaveAndBond,sx as getMemoForDeposit,Un as getMemoFor,vF as getMAYANameCost,qn as getLiquiditySlippage,Tn as getGasAsset,Qn as getEstimatedPoolShare,on as getETHDefaultWallet,Dn as getEIP6963Wallets,$n as getDerivationPathFor,_x as getDecimal,Gx as getCommonAssetInfo,EF as getChainIdentifier,Zn as getAsymmetricRuneWithdrawAmount,bx as getAsymmetricRuneShare,Yn as getAsymmetricAssetWithdrawAmount,Dx as getAsymmetricAssetShare,Lx as getAssetType,M as formatBigIntToSafeValue,Ln as findAssetBy,Gn as filterAssets,bn as ensureEVMApiKeys,Pn as derivationPathToString,Ux as defaultRequestHeaders,_n as assetFromString,yn as addEVMWalletNetwork,vn as addAccountsChangedCallback,Qx as WarningCodeEnum,Fx as WalletOption,_F as UTXOChains,LF as TCSupportedChains,q as SwapKitNumber,j as SwapKitError,TF as SubstrateChains,JF as SWAP_OUT,jF as SWAP_IN,c as RequestClient,d as RPCUrl,Xx as QuoteMode,qx as ProviderName,s as NetworkDerivationPath,nx as MemoType,AF as MAYASupportedChains,zx as LedgerErrorCode,Bx as FeeTypeEnum,Zx as FeeOption,t as ExplorerUrl,wx as ErrorCode,y as EVMChains,Jx as DerivationPath,GF as CosmosChains,jx as ContractAddress,Tx as CommonAssetStrings,m as ChainToRPC,OF as ChainToHexChainId,PF as ChainToExplorerUrl,xx as ChainToChainId,kF as ChainIdToChain,u as ChainId,Y as Chain,B as BigIntArithmetics,z as BaseDecimal,$ as AssetValue,Yx as ApproveMode,XF as AGG_SWAP};
4
+ or by passing asyncTokenLookup: true to the from() function, which will make it async and return a promise.`));const{decimal:f,identifier:J,tax:$}=P||{decimal:L||B[N],identifier:T},p=h?b(BigInt(x),h):b(x,f);return t?zn(J,h?p:x):_?yn(J,p):new O({tax:$,decimal:f,identifier:J,value:p})}static loadStaticAssets(){return new Promise((n,h)=>{try{import("@swapkit/tokens").then((t)=>{for(let o of Object.values(t))for(let{identifier:x,chain:H,...R}of o.tokens)V.set(x.toUpperCase(),{identifier:x,decimal:"decimals"in R?R.decimals:B[H]});n({ok:!0})})}catch(t){console.error(t),h({ok:!1,error:t,message:"Couldn't load static assets. Ensure you have installed @swapkit/tokens package"})}})}static fromString(n,h=0){return O.from({asset:n,value:h,asyncTokenLookup:!0})}static fromIdentifier(n,h=0){return O.from({asset:n,value:h,asyncTokenLookup:!0})}static fromStringSync(n,h=0){return O.from({asset:n,value:h})}static fromStringWithBase(n,h=0n,t=B.THOR){return O.from({asyncTokenLookup:!0,asset:n,value:h,fromBaseDecimal:t})}static fromStringWithBaseSync(n,h=0n,t=B.THOR){return O.from({asset:n,value:h,fromBaseDecimal:t})}static fromIdentifierSync(n,h=0){return O.from({asset:n,value:h})}static fromChainOrSignature(n,h=0){if(Object.values(G).includes(n))return O.from({chain:n,value:h});return O.from({asset:n,value:h})}}function ct({apiKey:n,...h}){r={...h,apiKey:n}}async function K(n,h){const{apiKey:t,...o}=r,{searchParams:x,json:H,body:R}=h,F={...Zn,...o.headers,...h.headers,...H?{"Content-Type":"application/json"}:{}},T=H?JSON.stringify(H):R,C=new URL(n);if(x)C.search=new URLSearchParams(x).toString();if(t)F["x-api-key"]=t;try{const _=await(await fetch(C.toString(),{...o,...h,body:T,headers:F})).json();if(h.responseHandler)return h.responseHandler(_);return _}catch(N){if(h.onError)return h.onError(N);console.error(N)}}var r={},Zn=typeof window!=="undefined"?{}:{referrer:"https://sk.thorswap.net",referer:"https://sk.thorswap.net"},D={get:async(n,h)=>K(n,{...h,method:"GET"}),post:async(n,h)=>K(n,{...h,method:"POST"}),extend:(n)=>{const h={...r,...n};return{get:async(t,o)=>K(t,{...h,...o,method:"GET"}),post:async(t,o)=>K(t,{...h,...o,method:"POST"}),extend:(t)=>D.extend({...h,...t})}}};async function Bt(n){const h=await import("@swapkit/tokens");for(let t of Object.values(h))for(let{identifier:o,chain:x,...H}of t.tokens){if("identifier"in n&&o===n.identifier)return o;if("address"in H&&"chain"in n&&x===n.chain&&H.address.toLowerCase()===n.contract.toLowerCase())return o}return}var fn="0x313ce567",Rn=[`${"MAYA"}.MAYA`,`${"ETH"}.THOR`,`${"ETH"}.vTHOR`,`${"KUJI"}.USK`],An=async({chain:n,to:h})=>{try{const{result:t}=await D.post(U[n],{headers:{accept:"*/*","content-type":"application/json","cache-control":"no-cache"},body:JSON.stringify({id:44,jsonrpc:"2.0",method:"eth_call",params:[{to:h.toLowerCase(),data:fn},"latest"]})});return Number.parseInt(BigInt(t||B[n]).toString())}catch(t){return console.error(t),B[n]}},Yn=async({symbol:n})=>{try{const h=n.split("-")[1]?.toLowerCase(),{manager:t}=await D.post(`${U["XRD"]}/state/resource`,{headers:{Accept:"*/*","Content-Type":"application/json"},body:JSON.stringify({network:"mainnet",resource_address:h})});return t.divisibility.value.divisibility}catch(h){return console.error(h),B["XRD"]}},qn=(n)=>{if(n==="ETH")return B.ETH;const h=n.split("-"),t=h.length===1?void 0:h[h.length-1]?.toLowerCase();return t?.startsWith("0x")?An({chain:"ETH",to:t}):B.ETH},Qn=(n)=>{const h=n.split("-"),t=h.length===1?void 0:h[h.length-1];return t?.startsWith("0x")?An({chain:"AVAX",to:t.toLowerCase()}):B.AVAX},Wn=(n)=>{if(n==="BSC")return B.BSC;return B.BSC},Mn=(n)=>{if(n==="XRD")return B.XRD;return Yn({symbol:n})},Fn=({chain:n,symbol:h})=>{switch(n){case"ETH":return qn(h);case"AVAX":return Qn(h);case"BSC":return Wn(h);case"XRD":return Mn(h);default:return B[n]}},Ct=({chain:n})=>{switch(n){case"ARB":case"BASE":case"OP":return O.from({asset:`${n}.ETH`});case"MAYA":return O.from({asset:`${n}.CACAO`});case"GAIA":return O.from({asset:`${n}.ATOM`});case"BSC":return O.from({asset:`${n}.BNB`});case"THOR":return O.from({asset:`${n}.RUNE`});default:return O.from({asset:`${n}.${n}`})}},m=({chain:n,symbol:h})=>{switch(n){case"ARB":case"BASE":case"OP":return h==="ETH";case"MAYA":return h==="CACAO";case"GAIA":return h==="ATOM";case"BSC":return h==="BNB";case"THOR":return h==="RUNE";default:return h===n}},Cn=(n)=>{switch(n){case"ARB":case"BASE":case"OP":return{identifier:`${n}.ETH`,decimal:B[n]};case`${"ETH"}.THOR`:return{identifier:"ETH.THOR-0xa5f2211b9b8170f694421f2046281775e8468044",decimal:18};case`${"ETH"}.vTHOR`:return{identifier:"ETH.vTHOR-0x815c23eca83261b6ec689b60cc4a58b54bc24d8d",decimal:18};case"GAIA":return{identifier:`${n}.ATOM`,decimal:B[n]};case"THOR":return{identifier:`${n}.RUNE`,decimal:B[n]};case"BSC":return{identifier:`${n}.BNB`,decimal:B[n]};case"MAYA":return{identifier:`${n}.CACAO`,decimal:10};case"XRD":return{identifier:`${"XRD"}.XRD`,decimal:B[n]};case`${"MAYA"}.MAYA`:return{identifier:n,decimal:4};case`${"KUJI"}.USK`:return{identifier:n,decimal:6};default:return{identifier:`${n}.${n}`,decimal:B[n]}}},Nn=({chain:n,symbol:h})=>{if(h.includes("/"))return"Synth";switch(n){case"ARB":case"OP":case"BASE":return h==="ETH"?"Native":n;case"GAIA":return h==="ATOM"?"Native":n;case"BSC":return h==="BNB"?"Native":n;case"MAYA":return h==="CACAO"?"Native":n;case"THOR":return h==="RUNE"?"Native":n;default:return h===n?"Native":n}},Nt=(n)=>{const[h,...t]=n.split("."),o=n.includes("/"),x=t.join("."),H=x?.split("-"),R=H?.length?H.length===1?H[0]:H.slice(0,-1).join("-"):void 0;return{chain:h,symbol:x,ticker:R,synth:o}},Vn=new RegExp(/(.)\1{6}|\.ORG|\.NET|\.FINANCE|\.COM|WWW|HTTP|\\\\|\/\/|[\s$%:[\]]/,"gmi"),bn=(n)=>{const[h,t]=n.split(".");if(!Q.includes(h))return!0;const o=t.split("-"),x=o.length===1?void 0:o[o.length-1];return m({chain:h,symbol:t})||!!x},At=(n)=>n.filter(({chain:h,value:t,symbol:o})=>{const x=`${h}.${o}`;return!Vn.test(x)&&bn(x)&&t!=="0"});function Ot([n,h,t,o,x]){return`m/${n}'/${h}'/${t}'/${o}${typeof x!=="number"?"":`/${x}`}`}function $t({chain:n,index:h,addressIndex:t=0,type:o}){if(Q.includes(n)){if(o==="legacy")return[44,60,0,h];if(o==="ledgerLive")return[44,60,h,0,t];return Bn(i[n],h)}const x=n==="LTC"?2:0;switch(o){case"nativeSegwitMiddleAccount":return[84,x,h,0,t];case"segwit":return[49,x,0,0,h];case"legacy":return[44,x,0,0,h];default:return Bn(i[n],h)}}function It(n){const[h,t,o]=n.split("/").map((x)=>Number.parseInt(x,10));switch(t){case 44:return"legacy";case 49:return"p2sh";default:return"bech32"}}var Bn=(n,h)=>{return[...n.slice(0,n.length-1),h]};function Kn({liquidityUnits:n,poolUnits:h,runeDepth:t}){const o=g(n),x=g(h),H=g(t),R=o.mul(H),F=x.mul(x).mul(2),T=x.mul(o).mul(2),C=o.mul(o),N=x.mul(x).mul(x);return R.mul(F.sub(T).add(C)).div(N)}function Dn({liquidityUnits:n,poolUnits:h,assetDepth:t}){const o=g(n),x=g(h),H=g(t),R=o.mul(H),F=x.mul(x).mul(2),T=x.mul(o).mul(2),C=o.mul(o),N=R.mul(F.sub(T).add(C)),_=x.mul(x).mul(x);return N.div(_)}function gt({percent:n,runeDepth:h,liquidityUnits:t,poolUnits:o}){return Kn({runeDepth:h,liquidityUnits:t,poolUnits:o}).mul(n)}function Pt({percent:n,assetDepth:h,liquidityUnits:t,poolUnits:o}){return Dn({assetDepth:h,liquidityUnits:t,poolUnits:o}).mul(n)}function g(n){return u.fromBigInt(BigInt(n),B.THOR)}function an({liquidityUnits:n,poolUnits:h,runeDepth:t,assetDepth:o}){return{assetAmount:g(o).mul(n).div(h),runeAmount:g(t).mul(n).div(h)}}function ut({liquidityUnits:n,poolUnits:h,runeDepth:t,assetDepth:o,percent:x}){return Object.fromEntries(Object.entries(an({liquidityUnits:n,poolUnits:h,runeDepth:t,assetDepth:o})).map(([H,R])=>[H,R.mul(x)]))}function St({runeDepth:n,poolUnits:h,assetDepth:t,liquidityUnits:o,runeAmount:x,assetAmount:H}){const R=new u({value:n,decimal:8}),F=new u({value:t,decimal:8}),T=new u({value:h,decimal:8}),C=new u({value:x,decimal:8}),N=new u({value:H,decimal:8}),_=C.mul(F),P=N.mul(R),L=C.mul(N),f=R.mul(F),J=T.mul(_.add(P.add(L.mul(2)))),$=_.add(P.add(f.mul(2))),p=J.div($),Y=g(o).add(p);if(p.getBaseValue("number")===0)return Y.div(T).getBaseValue("number");const kn=T.add(Y);return Y.div(kn).getBaseValue("number")}function jt({runeAmount:n,assetAmount:h,runeDepth:t,assetDepth:o}){if(n==="0"||h==="0"||t==="0"||o==="0")return 0;const x=g(t),H=g(o),R=g(h),F=g(n),T=R.mul(x).sub(H.mul(F)),C=H.mul(F).add(x.mul(H));return Math.abs(T.div(C).getBaseValue("number"))}function dn({type:n,address:h}){return`${n}:${h}`}function Un({address:n,unbondAmount:h}){return`${"UNBOND"}:${n}:${h}`}function zt(n){return Z("POOL+",n)}function En({chain:n,symbol:h,...t}){return Z(`${"+"}:${n}/${h}`,t)}function vn({chain:n,symbol:h,address:t,...o}){const x=nh({chain:n,symbol:h}),H=t?`:${t}:`:":";return Z(`${"+"}:${x}${H}`,o)}function mn({chain:n,symbol:h,basisPoints:t}){return`${"-"}:${n}/${h}:${t}`}function rn({chain:n,symbol:h,ticker:t,basisPoints:o,targetAsset:x}){const H=n==="ETH"&&t!=="ETH"?`${t}-${h.slice(-3)}`:h,R=x?`:${x}`:"";return`${"-"}:${n}.${H}:${o}${R}`}function yt({basisPoints:n,...h}){return Z(`${"POOL-"}:${n}`,h)}function en({name:n,chain:h,address:t,owner:o}){const x=`${"~"}:${n}:${h}:${t}`,H=o?`:${o}`:"";return`${x}${H}`}function Zt({name:n,chain:h,asset:t,payout:o,owner:x}){return`${"~"}:${n}:${h}:${o}:${x}:${t}`}function ln(n,{asset:h,address:t,minAmount:o,...x}){const H=`${n}:${h}:${t}`,R=o?`:${o}`:"";return Z(`${H}${R}`,x)}function Z(n,{affiliateAddress:h,affiliateBasisPoints:t}={}){const o=`${n}${h?`:${h}:${t||0}`:""}`;return o.endsWith(":")?o.slice(0,-1):o}function nh({chain:n,symbol:h}){switch(n){case"BTC":case"DOGE":case"LTC":return n.slice(0,1).toLowerCase();case"BCH":return"c";default:return`${n}.${h}`}}var ft=(n,h)=>{switch(n){case"LEAVE":case"BOND":return dn({type:n,address:h?.address});case"UNBOND":return Un({address:h?.address,unbondAmount:h?.unbondAmount});case"~":return en(h);case"$+":case"$-":return ln(n,h);case"+":{const{chain:t,symbol:o,address:x,singleSide:H}=h;if(H)return En({chain:t,symbol:o});return vn({chain:t,symbol:o,address:x})}case"-":{const{chain:t,ticker:o,symbol:x,basisPoints:H,targetAssetString:R,singleSide:F}=h;if(F)return mn({chain:t,symbol:x,basisPoints:H});return rn({chain:t,ticker:o,symbol:x,basisPoints:H,targetAsset:R})}default:throw new I({errorKey:"helpers_invalid_memo_type",info:{memoType:n}})}};function Dt({chain:n,covalentApiKey:h,ethplorerApiKey:t}){const o=n!=="ETH"&&!h?"covalentApiKey":t?void 0:"ethplorerApiKey";if(o)throw new I({errorKey:"wallet_missing_api_key",info:{missingKey:o}});return{covalentApiKey:h,ethplorerApiKey:t}}function at(){const n=[];function h(o){if(n.map((x)=>x.info.uuid).includes(o.detail.info.uuid))return;n.push(o.detail)}window.addEventListener("eip6963:announceProvider",h),window.dispatchEvent(new Event("eip6963:requestProvider"));function t(){window.removeEventListener("eip6963:announceProvider",h)}return{providers:n,removeEIP6963EventListener:t}}var hh=["approve","approvedAmount","call","sendTransaction","transfer","isApproved","approvedAmount","EIP1193SendTransaction","getFeeData","broadcastTransaction","estimateCall","estimateGasLimit","estimateGasPrices","createContractTxObject"],th=(n,h,t)=>async(...o)=>{try{await oh(h,t)}catch(x){throw new I({errorKey:"helpers_failed_to_switch_network",info:{error:x}})}return n(...o)},Tn=({provider:n,params:h,method:t})=>{if(!n?.send)throw new I("helpers_not_found_provider");const o=h?Array.isArray(h)?h:[h]:[];return n.send(t,o)},Wt=({toolbox:n,chainId:h,provider:t=window.ethereum})=>{const o=hh.reduce((x,H)=>{if(!n[H])return x;const R=n[H];if(typeof R!=="function")return x;return{...x,[H]:th(R,t,h)}},{});return{...n,...o}},Mt=(n,h)=>Tn({provider:n,method:"wallet_addEthereumChain",params:[h]}),oh=(n,h="0x1")=>Tn({provider:n,method:"wallet_switchEthereumChain",params:[{chainId:h}]}),Vt=(n)=>{window.ethereum?.on("accountsChanged",()=>n()),window.xfi?.ethereum.on("accountsChanged",()=>n())},bt=()=>{const{isTrust:n,isBraveWallet:h,__XDEFI:t,overrideIsMetaMask:o,selectedProvider:x}=window?.ethereum||{};if(n)return"TRUSTWALLET_WEB";if(h)return"BRAVE";if(o&&x?.isCoinbaseWallet)return"COINBASE_WEB";if(t)"XDEFI";return"METAMASK"},Kt=(n)=>{return xh().includes(n)},xh=()=>{const n=window?.ethereum&&!window.ethereum?.isBraveWallet,h=window?.xfi||window?.ethereum?.__XDEFI,t=window?.ethereum?.isBraveWallet,o=window?.ethereum?.isTrust||window?.trustwallet,x=window?.ethereum?.overrideIsMetaMask&&window?.ethereum?.selectedProvider?.isCoinbaseWallet||window?.coinbaseWalletExtension,H=[];if(n)H.push("METAMASK");if(h)H.push("XDEFI");if(t)H.push("BRAVE");if(o)H.push("TRUSTWALLET_WEB");if(x)H.push("COINBASE_WEB");if(ch())H.push("OKX_MOBILE");return H},ch=()=>{const n=navigator.userAgent,h=/iphone|ipad|ipod|ios/i.test(n),t=/android|XiaoMi|MiuiBrowser/i.test(n),o=h||t,x=/OKApp/i.test(n);return o&&x},dt=()=>typeof window.ethereum!=="undefined";class u extends S{eq(n){return this.eqValue(n)}static fromBigInt(n,h){return new u({decimal:h,value:X({value:n,bigIntDecimal:h,decimal:h})})}}export{bh as wrapWithThrow,th as wrapMethodWithNetworkSwitch,on as warnOnce,Uh as validateTNS,cn as validateIdentifier,oh as switchEVMWalletNetwork,ct as setRequestClientConfig,Wt as prepareNetworkSwitch,ch as okxMobileEnabled,xh as listWeb3EVMWallets,dt as isWeb3Detected,m as isGasAsset,Kt as isDetected,It as getWalletFormatFor,Mh as getTHORNameCost,ut as getSymmetricWithdraw,an as getSymmetricPoolShare,ot as getMinAmountByChain,rn as getMemoForWithdraw,Un as getMemoForUnbond,mn as getMemoForSaverWithdraw,En as getMemoForSaverDeposit,yt as getMemoForRunePoolWithdraw,zt as getMemoForRunePoolDeposit,en as getMemoForNameRegister,Zt as getMemoForNamePreferredAssetRegister,ln as getMemoForLoan,dn as getMemoForLeaveAndBond,vn as getMemoForDeposit,ft as getMemoFor,Vh as getMAYANameCost,jt as getLiquiditySlippage,Ct as getGasAsset,St as getEstimatedPoolShare,bt as getETHDefaultWallet,at as getEIP6963Wallets,$t as getDerivationPathFor,Fn as getDecimal,Cn as getCommonAssetInfo,Kh as getChainIdentifier,gt as getAsymmetricRuneWithdrawAmount,Kn as getAsymmetricRuneShare,Pt as getAsymmetricAssetWithdrawAmount,Dn as getAsymmetricAssetShare,Nn as getAssetType,X as formatBigIntToSafeValue,Bt as findAssetBy,At as filterAssets,Dt as ensureEVMApiKeys,Ot as derivationPathToString,Zn as defaultRequestHeaders,Nt as assetFromString,Mt as addEVMWalletNetwork,Vt as addAccountsChangedCallback,un as WarningCodeEnum,nn as WalletOption,Nh as UTXOChains,Bh as TCSupportedChains,u as SwapKitNumber,I as SwapKitError,Ch as SubstrateChains,_h as SWAP_OUT,Lh as SWAP_IN,D as RequestClient,a as RPCUrl,$n as QuoteMode,Sn as ProviderName,i as NetworkDerivationPath,hn as MemoType,Th as MAYASupportedChains,_n as LedgerErrorCode,jn as FeeTypeEnum,Gn as FeeOption,d as ExplorerUrl,Pn as ErrorCode,Q as EVMChains,Ln as DerivationPath,Ah as CosmosChains,In as ContractAddress,Rn as CommonAssetStrings,U as ChainToRPC,kh as ChainToHexChainId,Oh as ChainToExplorerUrl,l as ChainToChainId,Fh as ChainIdToChain,q as ChainId,G as Chain,S as BigIntArithmetics,B as BaseDecimal,O as AssetValue,gn as ApproveMode,Ih as AGG_SWAP};
5
5
 
6
- //# debugId=60845FF4BDBE5C1164756E2164756E21
6
+ //# debugId=7BCCE44FE6AAA7A764756E2164756E21
package/dist/index.js.map CHANGED
@@ -3,12 +3,12 @@
3
3
  "sources": ["../src/index.ts", "../src/types/network.ts", "../src/types/chains.ts", "../src/types/commonTypes.ts", "../src/types/derivationPath.ts", "../src/types/wallet.ts", "../src/types/sdk.ts", "../src/types/quotes.ts", "../src/modules/assetValue.ts", "../src/modules/swapKitError.ts", "../src/helpers/others.ts", "../src/helpers/validators.ts", "../src/modules/bigIntArithmetics.ts", "../src/modules/requestClient.ts", "../src/helpers/asset.ts", "../src/helpers/derivationPath.ts", "../src/helpers/liquidity.ts", "../src/helpers/memo.ts", "../src/helpers/web3wallets.ts", "../src/modules/swapKitNumber.ts"],
4
4
  "sourcesContent": [
5
5
  "export * from \"@swapkit/contracts\";\nexport * from \"./types/index.ts\";\n\n/**\n * Helpers\n */\nexport * from \"./helpers/asset.ts\";\nexport * from \"./helpers/derivationPath.ts\";\nexport * from \"./helpers/liquidity.ts\";\nexport * from \"./helpers/memo.ts\";\nexport * from \"./helpers/others.ts\";\nexport * from \"./helpers/validators.ts\";\nexport * from \"./helpers/web3wallets.ts\";\n\n/**\n * Modules\n */\nexport * from \"./modules/assetValue.ts\";\nexport * from \"./modules/bigIntArithmetics.ts\";\nexport * from \"./modules/requestClient.ts\";\nexport * from \"./modules/swapKitError.ts\";\nexport * from \"./modules/swapKitNumber.ts\";\n",
6
- "export enum RPCUrl {\n Arbitrum = \"https://arb1.arbitrum.io/rpc\",\n Avalanche = \"https://node-router.thorswap.net/avalanche-c\",\n BinanceSmartChain = \"https://bsc-dataseed.binance.org\",\n Bitcoin = \"https://node-router.thorswap.net/bitcoin\",\n BitcoinCash = \"https://node-router.thorswap.net/bitcoin-cash\",\n Chainflip = \"wss://mainnet-archive.chainflip.io\",\n Cosmos = \"https://node-router.thorswap.net/cosmos/rpc\",\n Dash = \"https://node-router.thorswap.net/dash\",\n Dogecoin = \"https://node-router.thorswap.net/dogecoin\",\n Ethereum = \"https://node-router.thorswap.net/ethereum\",\n Kujira = \"https://rpc-kujira.synergynodes.com/\",\n Litecoin = \"https://node-router.thorswap.net/litecoin\",\n Maya = \"https://tendermint.mayachain.info\",\n MayaStagenet = \"https://stagenet.tendermint.mayachain.info\",\n Optimism = \"https://mainnet.optimism.io\",\n Polkadot = \"wss://rpc.polkadot.io\",\n Polygon = \"https://polygon-rpc.com\",\n Radix = \"https://radix-mainnet.rpc.grove.city/v1/326002fc/core\",\n THORChain = \"https://rpc.thorswap.net\",\n THORChainStagenet = \"https://stagenet-rpc.ninerealms.com\",\n Solana = \"https://mainnet.helius-rpc.com/?api-key=2cbe3ae6-cfc5-4141-a093-0055d0fa3d80\",\n}\n\nexport enum ExplorerUrl {\n Arbitrum = \"https://arbiscan.io\",\n Avalanche = \"https://snowtrace.io\",\n BinanceSmartChain = \"https://bscscan.com\",\n Bitcoin = \"https://blockchair.com/bitcoin\",\n BitcoinCash = \"https://www.blockchair.com/bitcoin-cash\",\n Chainflip = \"https://explorer.polkascan.io/polkadot\",\n Cosmos = \"https://www.mintscan.io/cosmos\",\n Dash = \"https://blockchair.com/dash\",\n Dogecoin = \"https://blockchair.com/dogecoin\",\n Ethereum = \"https://etherscan.io\",\n Kujira = \"https://finder.kujira.network/kaiyo-1\",\n Litecoin = \"https://blockchair.com/litecoin\",\n Maya = \"https://www.mayascan.org\",\n Optimism = \"https://optimistic.etherscan.io\",\n Polkadot = \"https://polkadot.subscan.io\",\n Polygon = \"https://polygonscan.com\",\n Radix = \"https://dashboard.radixdlt.com\",\n THORChain = \"https://runescan.io\",\n Solana = \"https://solscan.io\",\n}\n",
7
- "import { ExplorerUrl, RPCUrl } from \"./network\";\n\nexport enum Chain {\n Arbitrum = \"ARB\",\n Avalanche = \"AVAX\",\n BinanceSmartChain = \"BSC\",\n Bitcoin = \"BTC\",\n BitcoinCash = \"BCH\",\n Cosmos = \"GAIA\",\n Dash = \"DASH\",\n Dogecoin = \"DOGE\",\n Ethereum = \"ETH\",\n Kujira = \"KUJI\",\n Litecoin = \"LTC\",\n Maya = \"MAYA\",\n Optimism = \"OP\",\n Polkadot = \"DOT\",\n Chainflip = \"FLIP\",\n Polygon = \"MATIC\",\n Radix = \"XRD\",\n THORChain = \"THOR\",\n Solana = \"SOL\",\n}\n\nexport type WalletChain = Exclude<Chain, Chain.Chainflip | Chain.Radix>;\n\nexport enum ChainId {\n Arbitrum = \"42161\",\n ArbitrumHex = \"0xa4b1\",\n Avalanche = \"43114\",\n AvalancheHex = \"0xa86a\",\n BinanceSmartChain = \"56\",\n BinanceSmartChainHex = \"0x38\",\n Bitcoin = \"bitcoin\",\n BitcoinCash = \"bitcoincash\",\n Chainflip = \"chainflip\",\n Cosmos = \"cosmoshub-4\",\n Dash = \"dash\",\n Dogecoin = \"dogecoin\",\n Kujira = \"kaiyo-1\",\n Ethereum = \"1\",\n EthereumHex = \"0x1\",\n Litecoin = \"litecoin\",\n Maya = \"mayachain-mainnet-v1\",\n MayaStagenet = \"mayachain-stagenet-v1\",\n Optimism = \"10\",\n OptimismHex = \"0xa\",\n Polkadot = \"polkadot\",\n Polygon = \"137\",\n PolygonHex = \"0x89\",\n Radix = \"radix-mainnet\",\n THORChain = \"thorchain-mainnet-v1\",\n THORChainStagenet = \"thorchain-stagenet-v2\",\n Solana = \"solana\",\n}\n\nexport const ChainIdToChain: Record<ChainId, Chain> = {\n [ChainId.ArbitrumHex]: Chain.Arbitrum,\n [ChainId.Arbitrum]: Chain.Arbitrum,\n [ChainId.AvalancheHex]: Chain.Avalanche,\n [ChainId.Avalanche]: Chain.Avalanche,\n [ChainId.BinanceSmartChainHex]: Chain.BinanceSmartChain,\n [ChainId.BinanceSmartChain]: Chain.BinanceSmartChain,\n [ChainId.BitcoinCash]: Chain.BitcoinCash,\n [ChainId.Bitcoin]: Chain.Bitcoin,\n [ChainId.Chainflip]: Chain.Chainflip,\n [ChainId.Cosmos]: Chain.Cosmos,\n [ChainId.Dash]: Chain.Dash,\n [ChainId.Dogecoin]: Chain.Dogecoin,\n [ChainId.EthereumHex]: Chain.Ethereum,\n [ChainId.Kujira]: Chain.Kujira,\n [ChainId.Ethereum]: Chain.Ethereum,\n [ChainId.Litecoin]: Chain.Litecoin,\n [ChainId.MayaStagenet]: Chain.Maya,\n [ChainId.Maya]: Chain.Maya,\n [ChainId.OptimismHex]: Chain.Optimism,\n [ChainId.Optimism]: Chain.Optimism,\n [ChainId.Polkadot]: Chain.Polkadot,\n [ChainId.PolygonHex]: Chain.Polygon,\n [ChainId.Polygon]: Chain.Polygon,\n [ChainId.Radix]: Chain.Radix,\n [ChainId.THORChainStagenet]: Chain.THORChain,\n [ChainId.THORChain]: Chain.THORChain,\n [ChainId.Solana]: Chain.Solana,\n};\n\ntype ChainNameType = keyof typeof Chain;\nconst chainNames = Object.keys(Chain) as ChainNameType[];\nconst chains = Object.values(Chain) as Chain[];\n\nexport enum BaseDecimal {\n ARB = 18,\n AVAX = 18,\n BCH = 8,\n BSC = 18,\n BTC = 8,\n DASH = 8,\n DOGE = 8,\n DOT = 10,\n ETH = 18,\n FLIP = 18,\n GAIA = 6,\n KUJI = 6,\n LTC = 8,\n MATIC = 18,\n MAYA = 8,\n OP = 18,\n SOL = 9,\n THOR = 8,\n XRD = 18,\n ZEC = 8,\n}\n\nexport type SubstrateChain = Chain.Polkadot | Chain.Chainflip;\nexport const SubstrateChains = [Chain.Polkadot, Chain.Chainflip];\n\nexport type EVMChain =\n | Chain.Ethereum\n | Chain.Avalanche\n | Chain.BinanceSmartChain\n | Chain.Arbitrum\n | Chain.Optimism\n | Chain.Polygon;\nexport const EVMChains = [\n Chain.Ethereum,\n Chain.Avalanche,\n Chain.BinanceSmartChain,\n Chain.Arbitrum,\n Chain.Optimism,\n Chain.Polygon,\n] as const;\n\nexport type UTXOChain =\n | Chain.Bitcoin\n | Chain.BitcoinCash\n | Chain.Dash\n | Chain.Dogecoin\n | Chain.Litecoin;\nexport const UTXOChains = [\n Chain.Bitcoin,\n Chain.BitcoinCash,\n Chain.Dash,\n Chain.Dogecoin,\n Chain.Litecoin,\n] as const;\n\nexport type CosmosChain = Chain.Cosmos | Chain.THORChain | Chain.Maya | Chain.Kujira;\nexport const CosmosChains = [Chain.Cosmos, Chain.THORChain, Chain.Maya, Chain.Kujira] as const;\n\nexport const TCSupportedChains = [\n Chain.Avalanche,\n Chain.BinanceSmartChain,\n Chain.Bitcoin,\n Chain.BitcoinCash,\n Chain.Cosmos,\n Chain.Dogecoin,\n Chain.Ethereum,\n Chain.Litecoin,\n Chain.THORChain,\n] as const;\n\nexport const MAYASupportedChains = [\n Chain.Arbitrum,\n Chain.Dash,\n Chain.Ethereum,\n Chain.Kujira,\n Chain.Maya,\n Chain.THORChain,\n] as const;\n\nconst ChainToChainName = chains.reduce(\n (acc, chain) => {\n const chainName = chainNames.find((key) => Chain[key as ChainNameType] === chain);\n\n if (chainName) acc[chain] = chainName;\n\n return acc;\n },\n {} as { [key in Chain]: ChainNameType },\n);\n\nexport const ChainToChainId = chains.reduce(\n (acc, chain) => {\n acc[chain] = ChainId[ChainToChainName[chain]];\n return acc;\n },\n {} as { [key in Chain]: ChainId },\n);\n\nexport const ChainToRPC = chains.reduce(\n (acc, chain) => {\n acc[chain] = RPCUrl[ChainToChainName[chain]];\n return acc;\n },\n {} as { [key in Chain]: RPCUrl },\n);\n\nexport const ChainToHexChainId = chains.reduce(\n (acc, chain) => {\n const chainString = `${ChainToChainName[chain]}Hex` as keyof typeof ChainId;\n\n acc[chain] = ChainId[chainString];\n return acc;\n },\n {} as { [key in Chain]: ChainId },\n);\n\nexport const ChainToExplorerUrl = chains.reduce(\n (acc, chain) => {\n acc[chain] = ExplorerUrl[ChainToChainName[chain]];\n return acc;\n },\n {} as { [key in Chain]: string },\n);\n",
6
+ "export enum RPCUrl {\n Arbitrum = \"https://arb1.arbitrum.io/rpc\",\n Avalanche = \"https://node-router.thorswap.net/avalanche-c\",\n Base = \"https://base.llamarpc.com\",\n BinanceSmartChain = \"https://bsc-dataseed.binance.org\",\n Bitcoin = \"https://node-router.thorswap.net/bitcoin\",\n BitcoinCash = \"https://node-router.thorswap.net/bitcoin-cash\",\n Chainflip = \"wss://mainnet-archive.chainflip.io\",\n Cosmos = \"https://node-router.thorswap.net/cosmos/rpc\",\n Dash = \"https://node-router.thorswap.net/dash\",\n Dogecoin = \"https://node-router.thorswap.net/dogecoin\",\n Ethereum = \"https://node-router.thorswap.net/ethereum\",\n Kujira = \"https://rpc-kujira.synergynodes.com/\",\n Litecoin = \"https://node-router.thorswap.net/litecoin\",\n Maya = \"https://tendermint.mayachain.info\",\n MayaStagenet = \"https://stagenet.tendermint.mayachain.info\",\n Optimism = \"https://mainnet.optimism.io\",\n Polkadot = \"wss://rpc.polkadot.io\",\n Polygon = \"https://polygon-rpc.com\",\n Radix = \"https://radix-mainnet.rpc.grove.city/v1/326002fc/core\",\n THORChain = \"https://rpc.thorswap.net\",\n THORChainStagenet = \"https://stagenet-rpc.ninerealms.com\",\n Solana = \"https://mainnet.helius-rpc.com/?api-key=2cbe3ae6-cfc5-4141-a093-0055d0fa3d80\",\n}\n\nexport enum ExplorerUrl {\n Arbitrum = \"https://arbiscan.io\",\n Avalanche = \"https://snowtrace.io\",\n Base = \"https://basescan.org\",\n BinanceSmartChain = \"https://bscscan.com\",\n Bitcoin = \"https://blockchair.com/bitcoin\",\n BitcoinCash = \"https://www.blockchair.com/bitcoin-cash\",\n Chainflip = \"https://explorer.polkascan.io/polkadot\",\n Cosmos = \"https://www.mintscan.io/cosmos\",\n Dash = \"https://blockchair.com/dash\",\n Dogecoin = \"https://blockchair.com/dogecoin\",\n Ethereum = \"https://etherscan.io\",\n Kujira = \"https://finder.kujira.network/kaiyo-1\",\n Litecoin = \"https://blockchair.com/litecoin\",\n Maya = \"https://www.mayascan.org\",\n Optimism = \"https://optimistic.etherscan.io\",\n Polkadot = \"https://polkadot.subscan.io\",\n Polygon = \"https://polygonscan.com\",\n Radix = \"https://dashboard.radixdlt.com\",\n THORChain = \"https://runescan.io\",\n Solana = \"https://solscan.io\",\n}\n",
7
+ "import { ExplorerUrl, RPCUrl } from \"./network\";\n\nexport enum Chain {\n Arbitrum = \"ARB\",\n Avalanche = \"AVAX\",\n Base = \"BASE\",\n BinanceSmartChain = \"BSC\",\n Bitcoin = \"BTC\",\n BitcoinCash = \"BCH\",\n Cosmos = \"GAIA\",\n Dash = \"DASH\",\n Dogecoin = \"DOGE\",\n Ethereum = \"ETH\",\n Kujira = \"KUJI\",\n Litecoin = \"LTC\",\n Maya = \"MAYA\",\n Optimism = \"OP\",\n Polkadot = \"DOT\",\n Chainflip = \"FLIP\",\n Polygon = \"MATIC\",\n Radix = \"XRD\",\n THORChain = \"THOR\",\n Solana = \"SOL\",\n}\n\nexport type WalletChain = Exclude<Chain, Chain.Chainflip | Chain.Radix>;\n\nexport enum ChainId {\n Arbitrum = \"42161\",\n ArbitrumHex = \"0xa4b1\",\n Avalanche = \"43114\",\n AvalancheHex = \"0xa86a\",\n Base = \"8453\",\n BaseHex = \"0x2105\",\n BinanceSmartChain = \"56\",\n BinanceSmartChainHex = \"0x38\",\n Bitcoin = \"bitcoin\",\n BitcoinCash = \"bitcoincash\",\n Chainflip = \"chainflip\",\n Cosmos = \"cosmoshub-4\",\n Dash = \"dash\",\n Dogecoin = \"dogecoin\",\n Kujira = \"kaiyo-1\",\n Ethereum = \"1\",\n EthereumHex = \"0x1\",\n Litecoin = \"litecoin\",\n Maya = \"mayachain-mainnet-v1\",\n MayaStagenet = \"mayachain-stagenet-v1\",\n Optimism = \"10\",\n OptimismHex = \"0xa\",\n Polkadot = \"polkadot\",\n Polygon = \"137\",\n PolygonHex = \"0x89\",\n Radix = \"radix-mainnet\",\n THORChain = \"thorchain-mainnet-v1\",\n THORChainStagenet = \"thorchain-stagenet-v2\",\n Solana = \"solana\",\n}\n\nexport const ChainIdToChain: Record<ChainId, Chain> = {\n [ChainId.ArbitrumHex]: Chain.Arbitrum,\n [ChainId.Arbitrum]: Chain.Arbitrum,\n [ChainId.AvalancheHex]: Chain.Avalanche,\n [ChainId.Avalanche]: Chain.Avalanche,\n [ChainId.BaseHex]: Chain.Base,\n [ChainId.Base]: Chain.Base,\n [ChainId.BinanceSmartChainHex]: Chain.BinanceSmartChain,\n [ChainId.BinanceSmartChain]: Chain.BinanceSmartChain,\n [ChainId.BitcoinCash]: Chain.BitcoinCash,\n [ChainId.Bitcoin]: Chain.Bitcoin,\n [ChainId.Chainflip]: Chain.Chainflip,\n [ChainId.Cosmos]: Chain.Cosmos,\n [ChainId.Dash]: Chain.Dash,\n [ChainId.Dogecoin]: Chain.Dogecoin,\n [ChainId.EthereumHex]: Chain.Ethereum,\n [ChainId.Kujira]: Chain.Kujira,\n [ChainId.Ethereum]: Chain.Ethereum,\n [ChainId.Litecoin]: Chain.Litecoin,\n [ChainId.MayaStagenet]: Chain.Maya,\n [ChainId.Maya]: Chain.Maya,\n [ChainId.OptimismHex]: Chain.Optimism,\n [ChainId.Optimism]: Chain.Optimism,\n [ChainId.Polkadot]: Chain.Polkadot,\n [ChainId.PolygonHex]: Chain.Polygon,\n [ChainId.Polygon]: Chain.Polygon,\n [ChainId.Radix]: Chain.Radix,\n [ChainId.THORChainStagenet]: Chain.THORChain,\n [ChainId.THORChain]: Chain.THORChain,\n [ChainId.Solana]: Chain.Solana,\n};\n\ntype ChainNameType = keyof typeof Chain;\nconst chainNames = Object.keys(Chain) as ChainNameType[];\nconst chains = Object.values(Chain) as Chain[];\n\nexport const BaseDecimal: Record<Chain, number> = {\n ARB: 18,\n AVAX: 18,\n BASE: 18,\n BCH: 8,\n BSC: 18,\n BTC: 8,\n DASH: 8,\n DOGE: 8,\n DOT: 10,\n ETH: 18,\n FLIP: 18,\n GAIA: 6,\n KUJI: 6,\n LTC: 8,\n MATIC: 18,\n MAYA: 8,\n OP: 18,\n SOL: 9,\n THOR: 8,\n XRD: 18,\n};\n\nexport type SubstrateChain = Chain.Polkadot | Chain.Chainflip;\nexport const SubstrateChains = [Chain.Polkadot, Chain.Chainflip];\n\nexport type EVMChain =\n | Chain.Arbitrum\n | Chain.Avalanche\n | Chain.Base\n | Chain.BinanceSmartChain\n | Chain.Ethereum\n | Chain.Optimism\n | Chain.Polygon;\nexport const EVMChains = [\n Chain.Arbitrum,\n Chain.Avalanche,\n Chain.Base,\n Chain.BinanceSmartChain,\n Chain.Ethereum,\n Chain.Optimism,\n Chain.Polygon,\n] as const;\n\nexport type UTXOChain =\n | Chain.Bitcoin\n | Chain.BitcoinCash\n | Chain.Dash\n | Chain.Dogecoin\n | Chain.Litecoin;\nexport const UTXOChains = [\n Chain.Bitcoin,\n Chain.BitcoinCash,\n Chain.Dash,\n Chain.Dogecoin,\n Chain.Litecoin,\n] as const;\n\nexport type CosmosChain = Chain.Cosmos | Chain.THORChain | Chain.Maya | Chain.Kujira;\nexport const CosmosChains = [Chain.Cosmos, Chain.THORChain, Chain.Maya, Chain.Kujira] as const;\n\nexport const TCSupportedChains = [\n Chain.Avalanche,\n Chain.BinanceSmartChain,\n Chain.Bitcoin,\n Chain.BitcoinCash,\n Chain.Cosmos,\n Chain.Dogecoin,\n Chain.Ethereum,\n Chain.Litecoin,\n Chain.THORChain,\n] as const;\n\nexport const MAYASupportedChains = [\n Chain.Arbitrum,\n Chain.Dash,\n Chain.Ethereum,\n Chain.Kujira,\n Chain.Maya,\n Chain.THORChain,\n] as const;\n\nconst ChainToChainName = chains.reduce(\n (acc, chain) => {\n const chainName = chainNames.find((key) => Chain[key as ChainNameType] === chain);\n\n if (chainName) acc[chain] = chainName;\n\n return acc;\n },\n {} as { [key in Chain]: ChainNameType },\n);\n\nexport const ChainToChainId = chains.reduce(\n (acc, chain) => {\n acc[chain] = ChainId[ChainToChainName[chain]];\n return acc;\n },\n {} as { [key in Chain]: ChainId },\n);\n\nexport const ChainToRPC = chains.reduce(\n (acc, chain) => {\n acc[chain] = RPCUrl[ChainToChainName[chain]];\n return acc;\n },\n {} as { [key in Chain]: RPCUrl },\n);\n\nexport const ChainToHexChainId = chains.reduce(\n (acc, chain) => {\n const chainString = `${ChainToChainName[chain]}Hex` as keyof typeof ChainId;\n\n acc[chain] = ChainId[chainString];\n return acc;\n },\n {} as { [key in Chain]: ChainId },\n);\n\nexport const ChainToExplorerUrl = chains.reduce(\n (acc, chain) => {\n acc[chain] = ExplorerUrl[ChainToChainName[chain]];\n return acc;\n },\n {} as { [key in Chain]: string },\n);\n",
8
8
  "import type { Chain } from \"./chains.ts\";\nimport type { ChainApis } from \"./sdk.ts\";\nimport type { ChainWallet } from \"./wallet.ts\";\n\nexport type ConnectConfig = {\n stagenet?: boolean;\n /**\n * @required\n */\n thorswapApiKey?: string;\n /**\n * @required for AVAX & BSC\n */\n covalentApiKey?: string;\n /**\n * @required for ETH\n */\n ethplorerApiKey?: string;\n /**\n * @required for BTC, BCH, LTC, DOGE\n */\n blockchairApiKey?: string;\n /**\n * @required for Walletconnect\n */\n walletConnectProjectId?: string;\n /**\n * @optional for Trezor config\n */\n trezorManifest?: {\n email: string;\n appUrl: string;\n };\n /**\n * @optional for KeepKey config\n */\n keepkeyConfig?: {\n apiKey: string;\n pairingInfo: {\n name: string;\n imageUrl: string;\n basePath: string;\n url: string;\n };\n };\n /**\n * @optional for setting the chainflip broker url\n */\n chainflipBrokerUrl?: string;\n};\n\nexport type ConnectWalletParams<M = { [key in string]: NotWorth }> = {\n addChain: <T extends Chain>(params: ChainWallet<T> & M) => void;\n apis: ChainApis;\n config: ConnectConfig;\n rpcUrls: { [chain in Chain]?: string };\n};\n\nexport type Witness = {\n value: number;\n script: Buffer;\n};\n\nexport enum QuoteMode {\n TC_SUPPORTED_TO_TC_SUPPORTED = \"TC-TC\",\n TC_SUPPORTED_TO_ETH = \"TC-ERC20\",\n TC_SUPPORTED_TO_AVAX = \"TC-ARC20\",\n TC_SUPPORTED_TO_BSC = \"TC-BEP20\",\n ETH_TO_TC_SUPPORTED = \"ERC20-TC\",\n ETH_TO_ETH = \"ERC20-ERC20\",\n ETH_TO_AVAX = \"ERC20-ARC20\",\n ETH_TO_BSC = \"ERC20-BEP20\",\n AVAX_TO_TC_SUPPORTED = \"ARC20-TC\",\n AVAX_TO_ETH = \"ARC20-ERC20\",\n AVAX_TO_AVAX = \"ARC20-ARC20\",\n AVAX_TO_BSC = \"ARC20-BEP20\",\n BSC_TO_TC_SUPPORTED = \"BEP20-TC\",\n BSC_TO_ETH = \"BEP20-ERC20\",\n BSC_TO_AVAX = \"BEP20-ARC20\",\n BSC_TO_BSC = \"BEP20-BEP20\",\n}\n\nexport type Asset = {\n chain: Chain;\n symbol: string;\n ticker: string;\n synth?: boolean;\n};\n\nexport const AGG_SWAP = [QuoteMode.ETH_TO_ETH, QuoteMode.AVAX_TO_AVAX, QuoteMode.BSC_TO_BSC];\n\nexport const SWAP_IN = [\n QuoteMode.ETH_TO_TC_SUPPORTED,\n QuoteMode.ETH_TO_AVAX,\n QuoteMode.ETH_TO_BSC,\n QuoteMode.AVAX_TO_TC_SUPPORTED,\n QuoteMode.AVAX_TO_ETH,\n QuoteMode.AVAX_TO_BSC,\n QuoteMode.BSC_TO_TC_SUPPORTED,\n QuoteMode.BSC_TO_ETH,\n QuoteMode.BSC_TO_AVAX,\n];\n\nexport const SWAP_OUT = [\n QuoteMode.TC_SUPPORTED_TO_TC_SUPPORTED,\n QuoteMode.TC_SUPPORTED_TO_ETH,\n QuoteMode.TC_SUPPORTED_TO_AVAX,\n QuoteMode.TC_SUPPORTED_TO_BSC,\n];\n",
9
- "import type { Chain } from \"./chains\";\n\nexport enum ContractAddress {\n ARB = \"0x0000000000000000000000000000000000000000\",\n AVAX = \"0x0000000000000000000000000000000000000000\",\n ETH = \"0x0000000000000000000000000000000000000000\",\n BSC = \"0x0000000000000000000000000000000000000000\",\n MATIC = \"0x0000000000000000000000000000000000001010\",\n OP = \"0x4200000000000000000000000000000000000042\",\n}\n\nexport enum DerivationPath {\n ARB = \"m/44'/60'/0'/0\",\n AVAX = \"m/44'/60'/0'/0\",\n BCH = \"m/44'/145'/0'/0\",\n BSC = \"m/44'/60'/0'/0\",\n BTC = \"m/84'/0'/0'/0\",\n DASH = \"m/44'/5'/0'/0\",\n DOGE = \"m/44'/3'/0'/0\",\n DOT = \"////\",\n ETH = \"m/44'/60'/0'/0\",\n FLIP = \"////\",\n GAIA = \"m/44'/118'/0'/0\",\n KUJI = \"m/44'/118'/0'/0\",\n LTC = \"m/84'/2'/0'/0\",\n MATIC = \"m/44'/60'/0'/0\",\n MAYA = \"m/44'/931'/0'/0\",\n OP = \"m/44'/60'/0'/0\",\n SOL = \"m/44'/501'/0'/0\",\n THOR = \"m/44'/931'/0'/0\",\n XRD = \"////\",\n}\n\nexport type DerivationPathArray = [number, number, number, number, number?];\n\nexport const NetworkDerivationPath: Record<Chain, DerivationPathArray> = {\n ARB: [44, 60, 0, 0, 0],\n AVAX: [44, 60, 0, 0, 0],\n BCH: [44, 145, 0, 0, 0],\n BSC: [44, 60, 0, 0, 0],\n BTC: [84, 0, 0, 0, 0],\n DASH: [44, 5, 0, 0, 0],\n DOGE: [44, 3, 0, 0, 0],\n ETH: [44, 60, 0, 0, 0],\n GAIA: [44, 118, 0, 0, 0],\n KUJI: [44, 118, 0, 0, 0],\n LTC: [84, 2, 0, 0, 0],\n MATIC: [44, 60, 0, 0, 0],\n MAYA: [44, 931, 0, 0, 0],\n OP: [44, 60, 0, 0, 0],\n SOL: [44, 501, 0, 0, 0],\n THOR: [44, 931, 0, 0, 0],\n\n // Polkadot and related network derivation path is not number based\n XRD: [0, 0, 0, 0, 0],\n DOT: [0, 0, 0, 0, 0],\n FLIP: [0, 0, 0, 0, 0],\n};\n",
9
+ "import type { Chain } from \"./chains\";\n\nexport enum ContractAddress {\n ARB = \"0x0000000000000000000000000000000000000000\",\n AVAX = \"0x0000000000000000000000000000000000000000\",\n BASE = \"0x0000000000000000000000000000000000000000\",\n ETH = \"0x0000000000000000000000000000000000000000\",\n BSC = \"0x0000000000000000000000000000000000000000\",\n MATIC = \"0x0000000000000000000000000000000000001010\",\n OP = \"0x4200000000000000000000000000000000000042\",\n}\n\nexport enum DerivationPath {\n ARB = \"m/44'/60'/0'/0\",\n AVAX = \"m/44'/60'/0'/0\",\n BASE = \"m/44'/60'/0'/0\",\n BCH = \"m/44'/145'/0'/0\",\n BSC = \"m/44'/60'/0'/0\",\n BTC = \"m/84'/0'/0'/0\",\n DASH = \"m/44'/5'/0'/0\",\n DOGE = \"m/44'/3'/0'/0\",\n DOT = \"////\",\n ETH = \"m/44'/60'/0'/0\",\n FLIP = \"////\",\n GAIA = \"m/44'/118'/0'/0\",\n KUJI = \"m/44'/118'/0'/0\",\n LTC = \"m/84'/2'/0'/0\",\n MATIC = \"m/44'/60'/0'/0\",\n MAYA = \"m/44'/931'/0'/0\",\n OP = \"m/44'/60'/0'/0\",\n SOL = \"m/44'/501'/0'/0\",\n THOR = \"m/44'/931'/0'/0\",\n XRD = \"////\",\n}\n\nexport type DerivationPathArray = [number, number, number, number, number?];\n\nexport const NetworkDerivationPath: Record<Chain, DerivationPathArray> = {\n ARB: [44, 60, 0, 0, 0],\n AVAX: [44, 60, 0, 0, 0],\n BASE: [44, 60, 0, 0, 0],\n BCH: [44, 145, 0, 0, 0],\n BSC: [44, 60, 0, 0, 0],\n BTC: [84, 0, 0, 0, 0],\n DASH: [44, 5, 0, 0, 0],\n DOGE: [44, 3, 0, 0, 0],\n ETH: [44, 60, 0, 0, 0],\n GAIA: [44, 118, 0, 0, 0],\n KUJI: [44, 118, 0, 0, 0],\n LTC: [84, 2, 0, 0, 0],\n MATIC: [44, 60, 0, 0, 0],\n MAYA: [44, 931, 0, 0, 0],\n OP: [44, 60, 0, 0, 0],\n SOL: [44, 501, 0, 0, 0],\n THOR: [44, 931, 0, 0, 0],\n\n // Polkadot and related network derivation path is not number based\n XRD: [0, 0, 0, 0, 0],\n DOT: [0, 0, 0, 0, 0],\n FLIP: [0, 0, 0, 0, 0],\n};\n",
10
10
  "import type { CosmosWallets, ThorchainWallets } from \"@swapkit/toolbox-cosmos\";\nimport type { EVMWallets } from \"@swapkit/toolbox-evm\";\nimport type { SolanaWallet } from \"@swapkit/toolbox-solana\";\nimport type { SubstrateWallets } from \"@swapkit/toolbox-substrate\";\nimport type { UTXOWallets } from \"@swapkit/toolbox-utxo\";\nimport type { Eip1193Provider } from \"ethers\";\n\nimport type { AssetValue } from \"../modules/assetValue\";\nimport type { Chain } from \"./chains\";\nimport type { ConnectWalletParams } from \"./commonTypes\";\n\ndeclare global {\n interface WindowEventMap {\n \"eip6963:announceProvider\": CustomEvent;\n }\n}\n\nexport type { CosmosWallets, ThorchainWallets, EVMWallets, SubstrateWallets, UTXOWallets };\n\nexport enum WalletOption {\n BRAVE = \"BRAVE\",\n COINBASE_MOBILE = \"COINBASE_MOBILE\",\n COINBASE_WEB = \"COINBASE_WEB\",\n EIP6963 = \"EIP6963\",\n EXODUS = \"EXODUS\",\n KEEPKEY = \"KEEPKEY\",\n KEPLR = \"KEPLR\",\n KEYSTORE = \"KEYSTORE\",\n LEDGER = \"LEDGER\",\n METAMASK = \"METAMASK\",\n OKX = \"OKX\",\n OKX_MOBILE = \"OKX_MOBILE\",\n PHANTOM = \"PHANTOM\",\n POLKADOT_JS = \"POLKADOT_JS\",\n RADIX_WALLET = \"RADIX_WALLET\",\n TREZOR = \"TREZOR\",\n TALISMAN = \"TALISMAN\",\n TRUSTWALLET_WEB = \"TRUSTWALLET_WEB\",\n WALLETCONNECT = \"WALLETCONNECT\",\n XDEFI = \"XDEFI\",\n}\n\nexport enum LedgerErrorCode {\n NoError = 0x9000,\n LockedDevice = 0x5515,\n TC_NotFound = 65535,\n}\n\nexport type ChainWallet<T extends Chain> = {\n chain: T;\n address: string;\n balance: AssetValue[];\n walletType: WalletOption;\n disconnect?: () => void;\n signMessage?: (message: string) => Promise<string>;\n};\n\nexport type EmptyWallet = { [key in Chain]?: unknown };\nexport type BaseWallet<T extends EmptyWallet | Record<string, unknown>> = {\n [key in Chain]: ChainWallet<key> & (T extends EmptyWallet ? T[key] : never);\n};\n\nexport type FullWallet = BaseWallet<\n EVMWallets & UTXOWallets & CosmosWallets & ThorchainWallets & SubstrateWallets & SolanaWallet\n>;\n\n/**\n * @deprecated use FullWallet instead\n */\nexport type Wallet = FullWallet;\n\nexport type SwapKitWallet<ConnectParams extends Todo[]> = (\n params: ConnectWalletParams,\n) => (...connectParams: ConnectParams) => boolean | Promise<boolean>;\n\nexport type SwapKitPluginParams<Config = {}> = {\n getWallet: <T extends Chain>(chain: T) => FullWallet[T];\n stagenet?: boolean;\n config: Config;\n};\n\nexport type EIP6963ProviderInfo = {\n walletId: string;\n uuid: string;\n name: string;\n icon: string;\n};\n\nexport type EIP6963ProviderDetail = {\n info: EIP6963ProviderInfo;\n provider: Eip1193Provider;\n};\n\nexport type EIP6963Provider = {\n info: EIP6963ProviderInfo;\n provider: Eip1193Provider;\n};\n\n// This type represents the structure of an event dispatched by a wallet to announce its presence based on EIP-6963.\nexport type EIP6963AnnounceProviderEvent = Event & {\n detail: EIP6963Provider;\n};\n",
11
- "import type { CovalentApiType, EthplorerApiType } from \"@swapkit/toolbox-evm\";\nimport type { BlockchairApiType } from \"@swapkit/toolbox-utxo\";\n\nimport type { AssetValue } from \"../modules/assetValue\";\nimport type { Chain, CosmosChain, UTXOChain } from \"./chains\";\n\ntype CovalentChains =\n | Chain.BinanceSmartChain\n | Chain.Polygon\n | Chain.Avalanche\n | Chain.Arbitrum\n | Chain.Optimism;\n\nexport type ChainApis = { [key in CovalentChains]?: CovalentApiType } & {\n [key in Chain.Ethereum]?: EthplorerApiType;\n} & {\n [key in UTXOChain]?: BlockchairApiType;\n} & {\n [key in CosmosChain | Chain.Solana | Chain.Radix | Chain.Polkadot]?: string;\n};\n\nexport type GenericSwapParams<T = unknown> = {\n buyAsset?: AssetValue;\n sellAsset?: AssetValue;\n recipient?: string;\n feeOptionKey?: FeeOption;\n route: T;\n};\n\nexport type SwapParams<PluginNames = string, R = unknown> = GenericSwapParams<R> & {\n pluginName?: PluginNames;\n};\n\nexport enum FeeOption {\n Average = \"average\",\n Fast = \"fast\",\n Fastest = \"fastest\",\n}\n\nexport enum ApproveMode {\n Approve = \"approve\",\n CheckOnly = \"checkOnly\",\n}\n\nexport type ApproveReturnType<T extends ApproveMode> = T extends \"checkOnly\"\n ? Promise<boolean>\n : Promise<string>;\n\nexport type WalletTxParams = {\n feeOptionKey?: FeeOption;\n from?: string;\n memo?: string; // optional memo to pass\n recipient: string;\n};\n\nexport enum MemoType {\n NAME_REGISTER = \"~\",\n BOND = \"BOND\",\n DEPOSIT = \"+\",\n LEAVE = \"LEAVE\",\n UNBOND = \"UNBOND\",\n WITHDRAW = \"-\",\n OPEN_LOAN = \"$+\",\n CLOSE_LOAN = \"$-\",\n RUNEPOOL_DEPOSIT = \"POOL+\",\n RUNEPOOL_WITHDRAW = \"POOL-\",\n}\n",
11
+ "import type { CovalentApiType, EthplorerApiType } from \"@swapkit/toolbox-evm\";\nimport type { BlockchairApiType } from \"@swapkit/toolbox-utxo\";\n\nimport type { AssetValue } from \"../modules/assetValue\";\nimport type { Chain, CosmosChain, UTXOChain } from \"./chains\";\n\ntype CovalentChains =\n | Chain.Base\n | Chain.BinanceSmartChain\n | Chain.Polygon\n | Chain.Avalanche\n | Chain.Arbitrum\n | Chain.Optimism;\n\nexport type ChainApis = { [key in CovalentChains]?: CovalentApiType } & {\n [key in Chain.Ethereum]?: EthplorerApiType;\n} & {\n [key in UTXOChain]?: BlockchairApiType;\n} & {\n [key in CosmosChain | Chain.Solana | Chain.Radix | Chain.Polkadot]?: string;\n};\n\nexport type GenericSwapParams<T = unknown> = {\n buyAsset?: AssetValue;\n sellAsset?: AssetValue;\n recipient?: string;\n feeOptionKey?: FeeOption;\n route: T;\n};\n\nexport type SwapParams<PluginNames = string, R = unknown> = GenericSwapParams<R> & {\n pluginName?: PluginNames;\n};\n\nexport enum FeeOption {\n Average = \"average\",\n Fast = \"fast\",\n Fastest = \"fastest\",\n}\n\nexport enum ApproveMode {\n Approve = \"approve\",\n CheckOnly = \"checkOnly\",\n}\n\nexport type ApproveReturnType<T extends ApproveMode> = T extends \"checkOnly\"\n ? Promise<boolean>\n : Promise<string>;\n\nexport type WalletTxParams = {\n feeOptionKey?: FeeOption;\n from?: string;\n memo?: string; // optional memo to pass\n recipient: string;\n};\n\nexport enum MemoType {\n NAME_REGISTER = \"~\",\n BOND = \"BOND\",\n DEPOSIT = \"+\",\n LEAVE = \"LEAVE\",\n UNBOND = \"UNBOND\",\n WITHDRAW = \"-\",\n OPEN_LOAN = \"$+\",\n CLOSE_LOAN = \"$-\",\n RUNEPOOL_DEPOSIT = \"POOL+\",\n RUNEPOOL_WITHDRAW = \"POOL-\",\n}\n",
12
12
  "export enum ErrorCode {\n unknownError = \"unknownError\",\n test_error = \"test_error\",\n providerDetailsError = \"providerDetailsError\",\n blockHeaderNotFound = \"blockHeaderNotFound\",\n blockHashNotFoundAtHeight = \"blockHashNotFoundAtHeight\",\n blockHashNotFoundAtHash = \"blockHashNotFoundAtHash\",\n txHashMissing = \"txHashMissing\",\n assetValueMissingInfo = \"assetValueMissingInfo\",\n invalidAsset = \"invalidAsset\",\n blockIsRequired = \"blockIsRequired\",\n currentBlockHeaderNotFound = \"currentBlockHeaderNotFound\",\n failedToRetrieveBalance = \"failedToRetrieveBalance\",\n failedToRetrieveBlock = \"failedToRetrieveBlock\",\n failedToRetrieveFees = \"failedToRetrieveFees\",\n notImplementedBCH = \"notImplementedBCH\",\n notImplementedDoge = \"notImplementedDoge\",\n noPoolsFound = \"noPoolsFound\",\n noVaultsFound = \"noVaultsFound\",\n noTxFound = \"noTxFound\",\n noInputCoinFound = \"noInputCoinFound\",\n noBlockDataFound = \"noBlockDataFound\",\n multipleCosmosMessages = \"multipleCosmosMessages\",\n heightOrHashNotProvided = \"heightOrHashNotProvided\",\n unknownDenom = \"unknownDenom\",\n invalidBlockHeight = \"invalidBlockHeight\",\n timestampExtrinsicNoArgumentsForBlock = \"timestampExtrinsicNoArgumentsForBlock\",\n timestampExtrinsicNoTimestampForBlock = \"timestampExtrinsicNoTimestampForBlock\",\n noTimestampExtrinsicForHash = \"noTimestampExtrinsicForHash\",\n timestampExtrinsicNoArgumentsForHash = \"timestampExtrinsicNoArgumentsForHash\",\n txMemoUndefined = \"txMemoUndefined\",\n txMemoIncorrect = \"txMemoIncorrect\",\n txTypeNotFound = \"txTypeNotFound\",\n txNoMessage = \"txNoMessage\",\n txNotFound = \"txNotFound\",\n txReceiptNotFound = \"txReceiptNotFound\",\n txParsingError = \"txParsingError\",\n blockNotFound = \"blockNotFound\",\n balanceNotFound = \"balanceNotFound\",\n configError = \"configError\",\n noQuoteResponse = \"noQuoteResponse\",\n noPoolAssetsFound = \"noPoolAssetsFound\",\n noThorchainPools = \"noThorchainPools\",\n noMayachainPools = \"noMayachainPools\",\n invalidAffiliateFee = \"invalidAffiliateFee\",\n invalidBuyAssetAddress = \"invalidBuyAssetAddress\",\n invalidSellAssetAddress = \"invalidSellAssetAddress\",\n invalidSourceAddress = \"invalidSourceAddress\",\n invalidDestinationAddress = \"invalidDestinationAddress\",\n sourceAddressIsSmartContract = \"sourceAddressIsSmartContract\",\n destinationAddressIsSmartContract = \"destinationAddressIsSmartContract\",\n invalidChainId = \"invalidChainId\",\n unsupportedChainId = \"unsupportedChainId\",\n unsupportedEVMChainId = \"unsupportedEVMChainId\",\n noWhitelistTokens = \"noWhitelistTokens\",\n failedFetchGasPrice = \"failedFetchGasPrice\",\n failedToCreateDepositChannel = \"failedToCreateDepositChannel\",\n noProviderDetailsFound = \"noProviderDetailsFound\",\n noTokenListsFound = \"noTokenListsFound\",\n tokenNotFound = \"tokenNotFound\",\n tokenPriceNotFound = \"tokenPriceNotFound\",\n swapAmountTooSmall = \"swapAmountTooSmall\",\n legsArrayIsEmpty = \"legsArrayIsEmpty\",\n failedToFetchQuoteForLeg = \"failedToFetchQuoteForLeg\",\n noBlockHeaderFound = \"noBlockHeaderFound\",\n failedToSimulateSwap = \"failedToSimulateSwap\",\n addressScreeningFailed = \"addressScreeningFailed\",\n noLiquidtyProvidersFound = \"noLiquidtyProvidersFound\",\n noSaversFound = \"noSaversFound\",\n noInboundAddressesFound = \"noInboundAddressesFound\",\n noInboundAddressFoundForChain = \"noInboundAddressFoundForChain\",\n noLastBlocksFound = \"noLastBlocksFound\",\n noVersionFound = \"noVersionFound\",\n noConstantsFound = \"noConstantsFound\",\n noMimirsFound = \"noMimirsFound\",\n noRoutesFound = \"noRoutesFound\",\n quoteNotFound = \"quoteNotFound\",\n ledgerSignFailed = \"ledgerSignFailed\",\n ledgerFetchSwapFailed = \"ledgerFetchSwapFailed\",\n failedToFetchTx = \"failedToFetchTx\",\n failedBuildTransactionDetails = \"failedBuildTransactionDetails\",\n noLegsForRoute = \"noLegsForRoute\",\n noRouterAddressFound = \"noRouterAddressFound\",\n noAggregatorAddressFound = \"noAggregatorAddressFound\",\n noContractInstanceFound = \"noContractInstanceFound\",\n noContractAddressFound = \"noContractAddressFound\",\n invalidAffiliate = \"invalidAffiliate\",\n providerNotfound = \"No provider found\",\n noRecordFound = \"No Record found\",\n slippageTooLow = \"Slippage too low\",\n tradingHalted = \"tradingHalted\",\n noWrappedGasAsset = \"noWrappedGasAsset\",\n aggregatorAddressNotFound = \"aggregatorAddressNotFound\",\n routerAddressNotFound = \"routerAddressNotFound\",\n dummyAddressNotFound = \"dummyAddressNotFound\",\n trackerError = \"trackerError\",\n noOhlcvDataFound = \"noOhlcvDataFound\",\n noTradingPairs = \"noTradingPairs\",\n noLoanPositionFound = \"noLoanPositionFound\",\n noLendingAvailability = \"noLendingAvailability\",\n lendingRepayTooSmall = \"lendingRepayTooSmall\",\n missingState = \"missingState\",\n ledgerSwapNotFound = \"ledgerSwapNotFound\",\n ledgerSwapNotReadyForTracking = \"ledgerSwapNotReadyForTracking\",\n errorEstimatingGas = \"errorEstimatingGas\",\n apiKeyInvalid = \"apiKeyInvalid\",\n apiKeyFailedToUpdate = \"apiKeyFailedToUpdate\",\n apiKeyExpired = \"apiKeyExpired\",\n unauthorized = \"unauthorized\",\n failedToCreateMemo = \"failedToCreateMemo\",\n radixIncorrectInstructions = \"radixIncorrectInstructions\",\n invalidAddressForChain = \"invalidAddressForChain\",\n}\n\nexport enum WarningCodeEnum {\n highSlippage = \"highSlippage\",\n highPriceImpact = \"highPriceImpact\",\n}\n\nexport enum ProviderName {\n CHAINFLIP = \"CHAINFLIP\",\n MAYACHAIN = \"MAYACHAIN\",\n MAYACHAIN_STREAMING = \"MAYACHAIN_STREAMING\",\n ONEINCH = \"ONEINCH\",\n PANCAKESWAP = \"PANCAKESWAP\",\n PANGOLIN_V1 = \"PANGOLIN_V1\",\n SUSHISWAP_V2 = \"SUSHISWAP_V2\",\n THORCHAIN = \"THORCHAIN\",\n THORCHAIN_STREAMING = \"THORCHAIN_STREAMING\",\n TRADERJOE_V2 = \"TRADERJOE_V2\",\n UNISWAP_V2 = \"UNISWAP_V2\",\n UNISWAP_V3 = \"UNISWAP_V3\",\n CAVIAR_V1 = \"CAVIAR_V1\",\n}\n\nexport enum FeeTypeEnum {\n LIQUIDITY = \"liquidity\",\n NETWORK = \"network\",\n INBOUND = \"inbound\",\n OUTBOUND = \"outbound\",\n AFFILIATE = \"affiliate\",\n TAX = \"tax\",\n}\n",
13
13
  "import { red, yellow } from \"picocolors\";\nimport {\n type CommonAssetString,\n CommonAssetStrings,\n getAssetType,\n getCommonAssetInfo,\n getDecimal,\n isGasAsset,\n} from \"../helpers/asset.ts\";\nimport { warnOnce } from \"../helpers/others.ts\";\nimport { validateIdentifier } from \"../helpers/validators.ts\";\nimport { BaseDecimal, Chain, type ChainId, ChainToChainId } from \"../types/chains.ts\";\nimport type { TokenNames, TokenTax } from \"../types/tokens.ts\";\n\nimport type { NumberPrimitives } from \"./bigIntArithmetics.ts\";\nimport { BigIntArithmetics, formatBigIntToSafeValue } from \"./bigIntArithmetics.ts\";\nimport { SwapKitError } from \"./swapKitError.ts\";\nimport type { SwapKitValueType } from \"./swapKitNumber.ts\";\n\nconst staticTokensMap = new Map<\n TokenNames,\n { tax?: TokenTax; decimal: number; identifier: string }\n>();\n\ntype ConditionalAssetValueReturn<T extends { asyncTokenLookup?: boolean }> =\n T[\"asyncTokenLookup\"] extends true ? Promise<AssetValue> : AssetValue;\n\ntype AssetIdentifier =\n | { asset: CommonAssetString }\n | { asset: TokenNames }\n | { asset: string }\n | { chain: Chain };\n\ntype AssetValueFromParams = AssetIdentifier & {\n value?: NumberPrimitives | SwapKitValueType;\n fromBaseDecimal?: number;\n asyncTokenLookup?: boolean;\n};\n\nexport class AssetValue extends BigIntArithmetics {\n address?: string;\n chain: Chain;\n isGasAsset = false;\n isSynthetic = false;\n symbol: string;\n tax?: TokenTax;\n ticker: string;\n type: ReturnType<typeof getAssetType>;\n chainId: ChainId;\n\n constructor({\n value,\n decimal,\n tax,\n chain,\n symbol,\n identifier,\n }: { decimal: number; value: SwapKitValueType; tax?: TokenTax } & (\n | { chain: Chain; symbol: string; identifier?: never }\n | { identifier: string; chain?: never; symbol?: never }\n )) {\n super(typeof value === \"object\" ? value : { decimal, value });\n\n const assetInfo = getAssetInfo(identifier || `${chain}.${symbol}`);\n\n this.type = getAssetType(assetInfo);\n this.tax = tax;\n this.chain = assetInfo.chain;\n this.ticker = assetInfo.ticker;\n this.symbol = assetInfo.symbol;\n this.address = assetInfo.address;\n this.isSynthetic = assetInfo.isSynthetic;\n this.isGasAsset = assetInfo.isGasAsset;\n this.chainId = ChainToChainId[assetInfo.chain];\n }\n\n toString({ includeSynthProtocol }: { includeSynthProtocol?: boolean } = {}) {\n return this.isSynthetic && !includeSynthProtocol ? this.symbol : `${this.chain}.${this.symbol}`;\n }\n\n toUrl() {\n return this.isSynthetic ? `${this.chain}.${this.symbol.replace(\"/\", \".\")}` : this.toString();\n }\n\n eqAsset({ chain, symbol }: { chain: Chain; symbol: string }) {\n return this.chain === chain && this.symbol === symbol;\n }\n\n eq(assetValue: AssetValue) {\n return this.eqAsset(assetValue) && this.eqValue(assetValue);\n }\n\n // THOR.RUNE\n // THOR.ETH.ETH\n // ETH.THOR-0x1234567890\n static fromUrl(urlAsset: string, value: NumberPrimitives = 0) {\n const [chain, ticker, symbol] = urlAsset.split(\".\");\n if (!(chain && ticker)) {\n throw new SwapKitError({\n errorKey: \"helpers_invalid_asset_url\",\n info: { urlAsset },\n });\n }\n\n const asset = chain === Chain.THORChain && symbol ? `${chain}.${ticker}/${symbol}` : urlAsset;\n\n return AssetValue.from({ asset, value });\n }\n\n static from<T extends {}>({\n value = 0,\n fromBaseDecimal,\n asyncTokenLookup,\n ...fromAssetOrChain\n }: T & AssetValueFromParams): ConditionalAssetValueReturn<T> {\n const parsedValue = value instanceof BigIntArithmetics ? value.getValue(\"string\") : value;\n const isFromChain = \"chain\" in fromAssetOrChain;\n const assetOrChain = isFromChain ? fromAssetOrChain.chain : fromAssetOrChain.asset;\n\n const isFromCommonAssetOrChain =\n isFromChain ||\n CommonAssetStrings.includes(assetOrChain as (typeof CommonAssetStrings)[number]);\n\n const { identifier: unsafeIdentifier, decimal: commonAssetDecimal } = isFromCommonAssetOrChain\n ? getCommonAssetInfo(assetOrChain as CommonAssetString)\n : { identifier: assetOrChain, decimal: undefined };\n\n const { chain, isSynthetic } = getAssetInfo(unsafeIdentifier);\n const token = staticTokensMap.get(unsafeIdentifier.toUpperCase() as TokenNames);\n const tokenDecimal = token?.decimal || commonAssetDecimal;\n\n warnOnce(\n !(asyncTokenLookup || tokenDecimal),\n yellow(\n `Couldn't find static decimal for ${red(unsafeIdentifier)} (Using default ${red(BaseDecimal[chain])} decimal as fallback).\nThis can result in incorrect calculations and mess with amount sent on transactions.\nYou can load static assets by installing @swapkit/tokens package and calling AssetValue.loadStaticAssets()\nor by passing asyncTokenLookup: true to the from() function, which will make it async and return a promise.`,\n ),\n );\n\n const { decimal, identifier, tax } = token || {\n decimal: tokenDecimal || BaseDecimal[chain],\n identifier: unsafeIdentifier,\n };\n\n const adjustedValue = fromBaseDecimal\n ? safeValue(BigInt(parsedValue), fromBaseDecimal)\n : safeValue(parsedValue, decimal);\n\n const assetValue = asyncTokenLookup\n ? createAssetValue(identifier, fromBaseDecimal ? adjustedValue : parsedValue)\n : isSynthetic\n ? createSyntheticAssetValue(identifier, adjustedValue)\n : new AssetValue({ tax, decimal, identifier, value: adjustedValue });\n\n return assetValue as ConditionalAssetValueReturn<T>;\n }\n\n static loadStaticAssets() {\n return new Promise<{ ok: true } | { ok: false; message: string; error: Todo }>(\n (resolve, reject) => {\n try {\n import(\"@swapkit/tokens\").then((tokenPackages) => {\n for (const tokenList of Object.values(tokenPackages)) {\n for (const { identifier, chain, ...rest } of tokenList.tokens) {\n staticTokensMap.set(identifier.toUpperCase() as TokenNames, {\n identifier,\n decimal: \"decimals\" in rest ? rest.decimals : BaseDecimal[chain as Chain],\n });\n }\n }\n\n resolve({ ok: true });\n });\n } catch (error) {\n console.error(error);\n reject({\n ok: false,\n error,\n message:\n \"Couldn't load static assets. Ensure you have installed @swapkit/tokens package\",\n });\n }\n },\n );\n }\n\n /**\n * @deprecated use AssetValue.from({ asset, value, asyncTokenLookup: true })\n */\n static fromString(asset: string, value: NumberPrimitives = 0) {\n return AssetValue.from({ asset, value, asyncTokenLookup: true });\n }\n /**\n * @deprecated use AssetValue.from({ asset, value, asyncTokenLookup: true })\n */\n static fromIdentifier(\n asset: `${Chain}.${string}` | `${Chain}/${string}` | TokenNames,\n value: NumberPrimitives = 0,\n ) {\n return AssetValue.from({ asset: asset as TokenNames, value, asyncTokenLookup: true });\n }\n /**\n * @deprecated use AssetValue.from({ asset, value })\n */\n static fromStringSync(asset: string, value: NumberPrimitives = 0) {\n return AssetValue.from({ asset, value });\n }\n /**\n * @deprecated use AssetValue.from({ asset, value, fromBaseDecimal, asyncTokenLookup: true })\n */\n static fromStringWithBase(\n asset: string,\n value: string | bigint = 0n,\n fromBaseDecimal: number = BaseDecimal.THOR,\n ) {\n return AssetValue.from({ asyncTokenLookup: true, asset, value, fromBaseDecimal });\n }\n /**\n * @deprecated use AssetValue.from({ asset, value, fromBaseDecimal, asyncTokenLookup: true })\n */\n static fromStringWithBaseSync(\n asset: string,\n value: string | bigint = 0n,\n fromBaseDecimal: number = BaseDecimal.THOR,\n ) {\n return AssetValue.from({ asset, value, fromBaseDecimal });\n }\n /**\n * @deprecated use AssetValue.from({ asset, value })\n */\n static fromIdentifierSync(asset: TokenNames, value: NumberPrimitives = 0) {\n return AssetValue.from({ asset, value });\n }\n /**\n * @deprecated use AssetValue.from({ asset, value }) or AssetValue.from({ chain, value })\n */\n static fromChainOrSignature(assetOrChain: CommonAssetString, value: NumberPrimitives = 0) {\n if (Object.values(Chain).includes(assetOrChain as Chain)) {\n return AssetValue.from({ chain: assetOrChain as Chain, value });\n }\n return AssetValue.from({ asset: assetOrChain, value });\n }\n}\n\nexport function getMinAmountByChain(chain: Chain) {\n const asset = AssetValue.from({ chain });\n\n switch (chain) {\n case Chain.Bitcoin:\n case Chain.Litecoin:\n case Chain.BitcoinCash:\n case Chain.Dash:\n return asset.set(0.00010001);\n\n case Chain.Dogecoin:\n return asset.set(1.00000001);\n\n case Chain.Avalanche:\n case Chain.Ethereum:\n case Chain.Arbitrum:\n case Chain.BinanceSmartChain:\n return asset.set(0.00000001);\n\n case Chain.THORChain:\n case Chain.Maya:\n return asset.set(0);\n\n case Chain.Cosmos:\n case Chain.Kujira:\n return asset.set(0.000001);\n\n default:\n return asset.set(0.00000001);\n }\n}\n\nasync function createAssetValue(identifier: string, value: NumberPrimitives = 0) {\n validateIdentifier(identifier);\n\n const staticToken = staticTokensMap.get(identifier.toUpperCase() as TokenNames);\n const decimal = staticToken?.decimal || (await getDecimal(getAssetInfo(identifier)));\n if (!staticToken) {\n staticTokensMap.set(identifier.toUpperCase() as TokenNames, { identifier, decimal });\n }\n\n return new AssetValue({ decimal, value: safeValue(value, decimal), identifier });\n}\n\nfunction createSyntheticAssetValue(identifier: string, value: NumberPrimitives = 0) {\n const chain = identifier.split(\".\")?.[0]?.toUpperCase() as Chain | undefined;\n const isMayaOrThor = chain ? [Chain.Maya, Chain.THORChain].includes(chain) : false;\n\n const [synthChain, symbol] = isMayaOrThor\n ? identifier.split(\".\").slice(1).join().split(\"/\")\n : identifier.split(\"/\");\n\n if (!(synthChain && symbol)) {\n throw new SwapKitError({\n errorKey: \"helpers_invalid_asset_identifier\",\n info: { identifier },\n });\n }\n\n return new AssetValue({\n decimal: 8,\n value: safeValue(value, 8),\n identifier: `${chain || Chain.THORChain}.${synthChain}/${symbol}`,\n });\n}\n\nfunction safeValue(value: NumberPrimitives, decimal: number) {\n return typeof value === \"bigint\"\n ? formatBigIntToSafeValue({ value, bigIntDecimal: decimal, decimal })\n : value;\n}\n\n// TODO refactor & split into smaller functions\nfunction getAssetInfo(identifier: string) {\n const isSynthetic = identifier.slice(0, 14).includes(\"/\");\n\n const isThorchain = identifier.split(\".\")?.[0]?.toUpperCase() === Chain.THORChain;\n const isMaya = identifier.split(\".\")?.[0]?.toUpperCase() === Chain.Maya;\n\n const [synthChain, synthSymbol = \"\"] =\n isThorchain || isMaya\n ? identifier.split(\".\").slice(1).join().split(\"/\")\n : identifier.split(\"/\");\n\n if (isSynthetic && !(synthChain && synthSymbol)) {\n throw new SwapKitError({\n errorKey: \"helpers_invalid_asset_identifier\",\n info: { identifier },\n });\n }\n\n const adjustedIdentifier =\n identifier.includes(\".\") && !isSynthetic\n ? identifier\n : `${isMaya ? Chain.Maya : Chain.THORChain}.${synthSymbol}`;\n\n const [chain, ...rest] = adjustedIdentifier.split(\".\") as [Chain, string];\n\n const symbol = isSynthetic ? synthSymbol : rest.join(\".\");\n const splitSymbol = symbol.split(\"-\");\n const ticker = (\n splitSymbol.length === 1 ? splitSymbol[0] : splitSymbol.slice(0, -1).join(\"-\")\n ) as string;\n const address = splitSymbol.length === 1 ? undefined : splitSymbol[splitSymbol.length - 1];\n\n return {\n address: address?.toLowerCase(),\n chain,\n isGasAsset: isGasAsset({ chain, symbol }),\n isSynthetic,\n ticker,\n symbol:\n (isSynthetic ? `${synthChain}/` : \"\") +\n (address ? `${ticker}-${address?.toLowerCase() ?? \"\"}` : symbol),\n };\n}\n",
14
14
  "const errorCodes = {\n /**\n * Core\n */\n core_estimated_max_spendable_chain_not_supported: 10002,\n core_extend_error: 10003,\n core_inbound_data_not_found: 10004,\n core_approve_asset_address_or_from_not_found: 10005,\n core_plugin_not_found: 10006,\n core_plugin_swap_not_found: 10007,\n core_approve_asset_target_invalid: 10008,\n core_explorer_unsupported_chain: 10009,\n core_verify_message_not_supported: 10010,\n core_chain_halted: 10099,\n /**\n * Core - Wallet\n */\n core_wallet_connection_not_found: 10100,\n core_wallet_xdefi_not_installed: 10101,\n core_wallet_evmwallet_not_installed: 10102,\n core_wallet_walletconnect_not_installed: 10103,\n core_wallet_keystore_not_installed: 10104,\n core_wallet_ledger_not_installed: 10105,\n core_wallet_trezor_not_installed: 10106,\n core_wallet_keplr_not_installed: 10107,\n core_wallet_okx_not_installed: 10108,\n core_wallet_keepkey_not_installed: 10109,\n core_wallet_talisman_not_installed: 10110,\n core_wallet_not_keypair_wallet: 10111,\n core_wallet_sign_message_not_supported: 10110,\n /**\n * Core - Swap\n */\n core_swap_invalid_params: 10200,\n core_swap_route_not_complete: 10201,\n core_swap_asset_not_recognized: 10202,\n core_swap_contract_not_found: 10203,\n core_swap_route_transaction_not_found: 10204,\n core_swap_contract_not_supported: 10205,\n core_swap_transaction_error: 10206,\n core_swap_quote_mode_not_supported: 10207,\n /**\n * Core - Transaction\n */\n core_transaction_deposit_error: 10301,\n core_transaction_create_liquidity_base_error: 10302,\n core_transaction_create_liquidity_asset_error: 10303,\n core_transaction_create_liquidity_invalid_params: 10304,\n core_transaction_add_liquidity_invalid_params: 10305,\n core_transaction_add_liquidity_base_address: 10306,\n core_transaction_add_liquidity_base_error: 10307,\n core_transaction_add_liquidity_asset_error: 10308,\n core_transaction_withdraw_error: 10309,\n core_transaction_deposit_to_pool_error: 10310,\n core_transaction_deposit_insufficient_funds_error: 10311,\n core_transaction_deposit_gas_error: 10312,\n core_transaction_invalid_sender_address: 10313,\n core_transaction_deposit_server_error: 10314,\n core_transaction_user_rejected: 10315,\n core_transaction_failed: 10316,\n /**\n * Wallets\n */\n wallet_connection_rejected_by_user: 20000,\n wallet_missing_api_key: 20001,\n wallet_chain_not_supported: 20002,\n wallet_missing_params: 20003,\n wallet_provider_not_found: 20004,\n wallet_failed_to_add_or_switch_network: 20005,\n wallet_ledger_connection_error: 20101,\n wallet_ledger_connection_claimed: 20102,\n wallet_ledger_get_address_error: 20103,\n wallet_ledger_device_not_found: 20104,\n wallet_ledger_device_locked: 20105,\n wallet_phantom_not_found: 20201,\n wallet_xdefi_not_found: 20301,\n wallet_xdefi_send_transaction_no_address: 20302,\n wallet_xdefi_contract_address_not_provided: 20303,\n wallet_xdefi_asset_not_defined: 20304,\n wallet_walletconnect_project_id_not_specified: 20401,\n wallet_walletconnect_connection_not_established: 20402,\n wallet_walletconnect_namespace_not_supported: 20403,\n wallet_trezor_failed_to_sign_transaction: 20501,\n wallet_trezor_derivation_path_not_supported: 20502,\n wallet_trezor_failed_to_get_address: 20503,\n wallet_talisman_not_enabled: 20601,\n wallet_talisman_not_found: 20602,\n wallet_polkadot_not_found: 20701,\n /**\n * Chainflip\n */\n chainflip_channel_error: 30001,\n chainflip_unknown_asset: 30002,\n chainflip_broker_invalid_params: 30100,\n chainflip_broker_recipient_error: 30101,\n chainflip_broker_register: 30102,\n chainflip_broker_tx_error: 30103,\n chainflip_broker_withdraw: 30104,\n chainflip_broker_fund_only_flip_supported: 30105,\n chainflip_broker_fund_invalid_address: 30106,\n /**\n * THORChain\n */\n thorchain_chain_halted: 40001,\n thorchain_trading_halted: 40002,\n thorchain_swapin_router_required: 40100,\n thorchain_swapin_vault_required: 40101,\n thorchain_swapin_memo_required: 40102,\n thorchain_swapin_token_required: 40103,\n /**\n * SwapKit API\n */\n api_v2_invalid_response: 50001,\n api_v2_server_error: 50002,\n /**\n * Toolboxes\n */\n toolbox_cosmos_signer_not_defined: 90101,\n toolbox_cosmos_no_accounts_found: 90102,\n toolbox_cosmos_verify_signature_no_pubkey: 90103,\n toolbox_evm_no_abi_fragment: 90201,\n toolbox_evm_no_signer: 90202,\n toolbox_evm_no_signer_address: 90203,\n toolbox_evm_no_from_address: 90204,\n toolbox_evm_no_contract_address: 90205,\n toolbox_evm_no_fee_data: 90206,\n toolbox_evm_no_gas_price: 90207,\n toolbox_evm_no_to_address: 90208,\n toolbox_evm_invalid_gas_asset_address: 90209,\n toolbox_evm_provider_not_eip1193_compatible: 90210,\n toolbox_evm_error_estimating_gas_limit: 90211,\n toolbox_evm_error_sending_transaction: 90212,\n /**\n * Helpers\n */\n helpers_invalid_number_different_decimals: 99000,\n helpers_invalid_number_of_years: 99001,\n helpers_invalid_identifier: 99002,\n helpers_invalid_asset_url: 99003,\n helpers_invalid_asset_identifier: 99004,\n helpers_invalid_memo_type: 99005,\n helpers_failed_to_switch_network: 99103,\n helpers_not_found_provider: 99200,\n /**\n * Anything else\n */\n not_implemented: 99999,\n} as const;\n\nexport type ErrorKeys = keyof typeof errorCodes;\n\nexport class SwapKitError extends Error {\n static ErrorCode = errorCodes;\n\n constructor(\n errorOrErrorKey: ErrorKeys | { errorKey: ErrorKeys; info?: Record<string, NotWorth> },\n sourceError?: NotWorth,\n ) {\n const isErrorString = typeof errorOrErrorKey === \"string\";\n\n const errorKey = isErrorString ? errorOrErrorKey : errorOrErrorKey.errorKey;\n\n if (sourceError) {\n console.error(sourceError, {\n stack: sourceError?.stack,\n message: sourceError?.message,\n });\n }\n\n super(errorKey, {\n cause: {\n code: SwapKitError.ErrorCode[errorKey],\n message: `${errorKey}${isErrorString ? \"\" : `: ${JSON.stringify(errorOrErrorKey.info)}`}`,\n },\n });\n\n Object.setPrototypeOf(this, SwapKitError.prototype);\n }\n}\n",
@@ -16,14 +16,14 @@
16
16
  "import { SwapKitError } from \"../modules/swapKitError\";\nimport { Chain } from \"../types/chains\";\n\n// Backward compatibility\nconst supportedChains = [...Object.values(Chain), \"TERRA\"];\n\nexport function validateIdentifier(identifier = \"\") {\n const uppercasedIdentifier = identifier.toUpperCase();\n\n const [chain] = uppercasedIdentifier.split(\".\") as [Chain, string];\n if (supportedChains.includes(chain)) return true;\n\n const [synthChain] = uppercasedIdentifier.split(\"/\") as [Chain, string];\n if (supportedChains.includes(synthChain)) return true;\n\n throw new SwapKitError({\n errorKey: \"helpers_invalid_identifier\",\n info: {\n message: `Invalid identifier: ${identifier}. Expected format: <Chain>.<Ticker> or <Chain>.<Ticker>-<ContractAddress>`,\n identifier,\n },\n });\n}\n\nexport function validateTNS(name: string) {\n if (name.length > 30) return false;\n\n const regex = /^[a-zA-Z0-9+_-]+$/g;\n\n return !!name.match(regex);\n}\n",
17
17
  "import { BaseDecimal } from \"../types/chains.ts\";\nimport type { SwapKitNumber } from \"./swapKitNumber.ts\";\n\ntype NumberPrimitivesType = {\n bigint: bigint;\n number: number;\n string: string;\n};\nexport type NumberPrimitives = bigint | number | string;\ntype InitialisationValueType = NumberPrimitives | BigIntArithmetics | SwapKitNumber;\n\ntype SKBigIntParams = InitialisationValueType | { decimal?: number; value: number | string };\ntype AllowedNumberTypes = \"bigint\" | \"number\" | \"string\";\n\nconst DEFAULT_DECIMAL = 8;\nconst toMultiplier = (decimal: number) => 10n ** BigInt(decimal);\nconst decimalFromMultiplier = (multiplier: bigint) =>\n Math.log10(Number.parseFloat(multiplier.toString()));\n\nexport function formatBigIntToSafeValue({\n value,\n bigIntDecimal = DEFAULT_DECIMAL,\n decimal = DEFAULT_DECIMAL,\n}: {\n value: bigint;\n bigIntDecimal?: number;\n decimal?: number;\n}) {\n if (decimal === 0) return value.toString();\n const isNegative = value < 0n;\n let valueString = value.toString().substring(isNegative ? 1 : 0);\n\n const padLength = decimal - (valueString.length - 1);\n\n if (padLength > 0) {\n valueString = \"0\".repeat(padLength) + valueString;\n }\n\n const decimalIndex = valueString.length - decimal;\n let decimalString = valueString.slice(-decimal);\n\n // Check if we need to round up\n if (Number.parseInt(decimalString[bigIntDecimal] || \"0\") >= 5) {\n // Increment the last decimal place and slice off the rest\n decimalString = `${decimalString.substring(0, bigIntDecimal - 1)}${(Number.parseInt(decimalString[bigIntDecimal - 1] || \"0\") + 1).toString()}`;\n } else {\n // Just slice off the extra digits\n decimalString = decimalString.substring(0, bigIntDecimal);\n }\n\n return `${isNegative ? \"-\" : \"\"}${valueString.slice(0, decimalIndex)}.${decimalString}`.replace(\n /\\.?0*$/,\n \"\",\n );\n}\n\nexport class BigIntArithmetics {\n decimalMultiplier: bigint = 10n ** 8n;\n bigIntValue = 0n;\n decimal?: number;\n\n static fromBigInt(value: bigint, decimal?: number) {\n return new BigIntArithmetics({\n decimal,\n value: formatBigIntToSafeValue({ value, bigIntDecimal: decimal, decimal }),\n });\n }\n\n static shiftDecimals({\n value,\n from,\n to,\n }: {\n value: InstanceType<typeof SwapKitNumber>;\n from: number;\n to: number;\n }) {\n return BigIntArithmetics.fromBigInt(\n (value.getBaseValue(\"bigint\") * toMultiplier(to)) / toMultiplier(from),\n to,\n );\n }\n\n constructor(params: SKBigIntParams) {\n const value = getStringValue(params);\n const isComplex = typeof params === \"object\";\n this.decimal = isComplex ? params.decimal : undefined;\n\n // use the multiplier to keep track of decimal point - defaults to 8 if lower than 8\n this.decimalMultiplier =\n isComplex && \"decimalMultiplier\" in params\n ? params.decimalMultiplier\n : toMultiplier(Math.max(getFloatDecimals(toSafeValue(value)), this.decimal || 0));\n this.#setValue(value);\n }\n\n set(value: SKBigIntParams): this {\n // @ts-expect-error False positive\n return new this.constructor({ decimal: this.decimal, value, identifier: this.toString() });\n }\n add(...args: InitialisationValueType[]) {\n return this.#arithmetics(\"add\", ...args);\n }\n sub(...args: InitialisationValueType[]) {\n return this.#arithmetics(\"sub\", ...args);\n }\n mul(...args: InitialisationValueType[]) {\n return this.#arithmetics(\"mul\", ...args);\n }\n div(...args: InitialisationValueType[]) {\n return this.#arithmetics(\"div\", ...args);\n }\n gt(value: InitialisationValueType) {\n return this.#comparison(\"gt\", value);\n }\n gte(value: InitialisationValueType) {\n return this.#comparison(\"gte\", value);\n }\n lt(value: InitialisationValueType) {\n return this.#comparison(\"lt\", value);\n }\n lte(value: InitialisationValueType) {\n return this.#comparison(\"lte\", value);\n }\n eqValue(value: InitialisationValueType) {\n return this.#comparison(\"eqValue\", value);\n }\n\n // @ts-expect-error False positive\n getValue<T extends AllowedNumberTypes>(type: T): NumberPrimitivesType[T] {\n const value = this.formatBigIntToSafeValue(\n this.bigIntValue,\n this.decimal || decimalFromMultiplier(this.decimalMultiplier),\n );\n\n switch (type) {\n case \"number\":\n return Number(value) as NumberPrimitivesType[T];\n case \"string\":\n return value as NumberPrimitivesType[T];\n case \"bigint\":\n return ((this.bigIntValue * 10n ** BigInt(this.decimal || 8n)) /\n this.decimalMultiplier) as NumberPrimitivesType[T];\n }\n }\n\n // @ts-expect-error\n getBaseValue<T extends AllowedNumberTypes>(type: T): NumberPrimitivesType[T] {\n const divisor = this.decimalMultiplier / toMultiplier(this.decimal || BaseDecimal.THOR);\n const baseValue = this.bigIntValue / divisor;\n\n switch (type) {\n case \"number\":\n return Number(baseValue) as NumberPrimitivesType[T];\n case \"string\":\n return baseValue.toString() as NumberPrimitivesType[T];\n case \"bigint\":\n return baseValue as NumberPrimitivesType[T];\n }\n }\n\n getBigIntValue(value: InitialisationValueType, decimal?: number) {\n if (!decimal && typeof value === \"object\") return value.bigIntValue;\n\n const stringValue = getStringValue(value);\n const safeValue = toSafeValue(stringValue);\n\n if (safeValue === \"0\" || safeValue === \"undefined\") return 0n;\n return this.#toBigInt(safeValue, decimal);\n }\n\n toSignificant(significantDigits = 6) {\n const [int, dec] = this.getValue(\"string\").split(\".\");\n const integer = int || \"\";\n const decimal = dec || \"\";\n const valueLength = Number.parseInt(integer) ? integer.length + decimal.length : decimal.length;\n\n if (valueLength <= significantDigits) {\n return this.getValue(\"string\");\n }\n\n if (integer.length >= significantDigits) {\n return integer.slice(0, significantDigits).padEnd(integer.length, \"0\");\n }\n\n if (Number.parseInt(integer)) {\n return `${integer}.${decimal.slice(0, significantDigits - integer.length)}`.padEnd(\n significantDigits - integer.length,\n \"0\",\n );\n }\n\n const trimmedDecimal = Number.parseInt(decimal);\n const slicedDecimal = `${trimmedDecimal}`.slice(0, significantDigits);\n\n return `0.${slicedDecimal.padStart(\n decimal.length - `${trimmedDecimal}`.length + slicedDecimal.length,\n \"0\",\n )}`;\n }\n\n toFixed(fixedDigits = 6) {\n const [int, dec] = this.getValue(\"string\").split(\".\");\n const integer = int || \"\";\n const decimal = dec || \"\";\n\n if (Number.parseInt(integer)) {\n return `${integer}.${decimal.slice(0, fixedDigits)}`.padEnd(fixedDigits, \"0\");\n }\n\n const trimmedDecimal = Number.parseInt(decimal);\n const slicedDecimal = `${trimmedDecimal}`.slice(0, fixedDigits);\n\n return `0.${slicedDecimal.padStart(\n decimal.length - `${trimmedDecimal}`.length + slicedDecimal.length,\n \"0\",\n )}`;\n }\n\n toAbbreviation(digits = 2) {\n const value = this.getValue(\"number\");\n const abbreviations = [\"\", \"K\", \"M\", \"B\", \"T\", \"Q\", \"Qi\", \"S\"];\n const tier = Math.floor(Math.log10(Math.abs(value)) / 3);\n const suffix = abbreviations[tier];\n\n if (!suffix) return this.getValue(\"string\");\n\n const scale = 10 ** (tier * 3);\n const scaled = value / scale;\n\n return `${scaled.toFixed(digits)}${suffix}`;\n }\n\n toCurrency(\n currency = \"$\",\n {\n currencyPosition = \"start\",\n decimal = 2,\n decimalSeparator = \".\",\n thousandSeparator = \",\",\n } = {},\n ) {\n const value = this.getValue(\"number\");\n const [int = \"\", dec = \"\"] = value.toFixed(6).split(\".\");\n const integer = int.replace(/\\B(?=(\\d{3})+(?!\\d))/g, thousandSeparator);\n\n const parsedValue =\n int || dec\n ? int === \"0\"\n ? `${Number.parseFloat(`0.${dec}`)}`.replace(\".\", decimalSeparator)\n : `${integer}${Number.parseInt(dec) ? `${decimalSeparator}${dec.slice(0, decimal)}` : \"\"}`\n : \"0.00\";\n\n return `${currencyPosition === \"start\" ? currency : \"\"}${parsedValue}${\n currencyPosition === \"end\" ? currency : \"\"\n }`;\n }\n\n formatBigIntToSafeValue(value: bigint, decimal?: number) {\n const bigIntDecimal = decimal || this.decimal || DEFAULT_DECIMAL;\n const decimalToUseForConversion = Math.max(\n bigIntDecimal,\n decimalFromMultiplier(this.decimalMultiplier),\n );\n const isNegative = value < 0n;\n\n const valueString = value.toString().substring(isNegative ? 1 : 0);\n const padLength = decimalToUseForConversion - (valueString.length - 1);\n\n const parsedValueString = padLength > 0 ? \"0\".repeat(padLength) + valueString : valueString;\n\n const decimalIndex = parsedValueString.length - decimalToUseForConversion;\n let decimalString = parsedValueString.slice(-decimalToUseForConversion);\n\n // Check if we need to round up\n if (Number.parseInt(decimalString[bigIntDecimal] || \"0\") >= 5) {\n // Increment the last decimal place and slice off the rest\n decimalString = `${decimalString.substring(0, bigIntDecimal - 1)}${(Number.parseInt(decimalString[bigIntDecimal - 1] || \"0\") + 1).toString()}`;\n } else {\n // Just slice off the extra digits\n decimalString = decimalString.substring(0, bigIntDecimal);\n }\n\n return `${isNegative ? \"-\" : \"\"}${parsedValueString.slice(\n 0,\n decimalIndex,\n )}.${decimalString}`.replace(/\\.?0*$/, \"\");\n }\n\n #arithmetics(method: \"add\" | \"sub\" | \"mul\" | \"div\", ...args: InitialisationValueType[]): this {\n const precisionDecimal = this.#retrievePrecisionDecimal(this, ...args);\n const decimal = Math.max(precisionDecimal, decimalFromMultiplier(this.decimalMultiplier));\n const precisionDecimalMultiplier = toMultiplier(decimal);\n\n const result = args.reduce(\n (acc: bigint, arg) => {\n const value = this.getBigIntValue(arg, decimal);\n\n switch (method) {\n case \"add\":\n return acc + value;\n case \"sub\":\n return acc - value;\n /**\n * Multiplication & division would end up with wrong result if we don't adjust the value\n * 200000000n * 200000000n => 40000000000000000n\n * 200000000n / 200000000n => 1n\n * So we do the following:\n * 200000000n * 200000000n = 40000000000000000n / 100000000n (decimals) => 400000000n\n * (200000000n * 100000000n (decimals)) / 200000000n => 100000000n\n */\n case \"mul\":\n return (acc * value) / precisionDecimalMultiplier;\n case \"div\": {\n if (value === 0n) throw new RangeError(\"Division by zero\");\n return (acc * precisionDecimalMultiplier) / value;\n }\n default:\n return acc;\n }\n },\n //normalize is to precision multiplier base\n (this.bigIntValue * precisionDecimalMultiplier) / this.decimalMultiplier,\n );\n\n const value = formatBigIntToSafeValue({\n bigIntDecimal: decimal,\n decimal,\n value: result,\n });\n\n // @ts-expect-error False positive\n return new this.constructor({\n decimalMultiplier: toMultiplier(decimal),\n decimal: this.decimal,\n value,\n identifier: this.toString(),\n });\n }\n\n #comparison(method: \"gt\" | \"gte\" | \"lt\" | \"lte\" | \"eqValue\", ...args: InitialisationValueType[]) {\n const decimal = this.#retrievePrecisionDecimal(this, ...args);\n const value = this.getBigIntValue(args[0] || \"0\", decimal);\n const compareToValue = this.getBigIntValue(this, decimal);\n\n switch (method) {\n case \"gt\":\n return compareToValue > value;\n case \"gte\":\n return compareToValue >= value;\n case \"lt\":\n return compareToValue < value;\n case \"lte\":\n return compareToValue <= value;\n case \"eqValue\":\n return compareToValue === value;\n }\n }\n\n #setValue(value: InitialisationValueType) {\n const safeValue = toSafeValue(value) || \"0\";\n this.bigIntValue = this.#toBigInt(safeValue);\n }\n\n #retrievePrecisionDecimal(...args: InitialisationValueType[]) {\n const decimals = args\n .map((arg) => {\n const isObject = typeof arg === \"object\";\n const value = isObject\n ? arg.decimal || decimalFromMultiplier(arg.decimalMultiplier)\n : getFloatDecimals(toSafeValue(arg));\n\n return value;\n })\n .filter(Boolean) as number[];\n\n return Math.max(...decimals, DEFAULT_DECIMAL);\n }\n\n #toBigInt(value: string, decimal?: number) {\n const multiplier = decimal ? toMultiplier(decimal) : this.decimalMultiplier;\n const padDecimal = decimalFromMultiplier(multiplier);\n const [integerPart = \"\", decimalPart = \"\"] = value.split(\".\");\n\n return BigInt(`${integerPart}${decimalPart.padEnd(padDecimal, \"0\")}`);\n }\n}\n\nconst numberFormatter = Intl.NumberFormat(\"fullwide\", {\n useGrouping: false,\n maximumFractionDigits: 20,\n});\n\nfunction toSafeValue(value: InitialisationValueType) {\n const parsedValue =\n typeof value === \"number\" ? numberFormatter.format(value) : getStringValue(value);\n const splitValue = `${parsedValue}`.replaceAll(\",\", \".\").split(\".\");\n\n return splitValue.length > 1\n ? `${splitValue.slice(0, -1).join(\"\")}.${splitValue.at(-1)}`\n : splitValue[0] || \"0\";\n}\n\nfunction getFloatDecimals(value: string) {\n const decimals = value.split(\".\")[1]?.length || 0;\n return Math.max(decimals, DEFAULT_DECIMAL);\n}\n\nfunction getStringValue(param: SKBigIntParams) {\n return typeof param === \"object\"\n ? \"getValue\" in param\n ? param.getValue(\"string\")\n : param.value\n : param;\n}\n",
18
18
  "type Options = Parameters<typeof fetch>[1] & {\n headers?: Record<string, string>;\n apiKey?: string;\n method?: \"GET\" | \"POST\";\n onError?: (error: NotWorth) => NotWorth;\n responseHandler?: (response: NotWorth) => NotWorth;\n searchParams?: Record<string, string>;\n json?: unknown;\n};\n\nlet clientConfig: Options = {};\n\nexport const defaultRequestHeaders =\n typeof window !== \"undefined\"\n ? ({} as Record<string, string>)\n : { referrer: \"https://sk.thorswap.net\", referer: \"https://sk.thorswap.net\" };\n\nexport function setRequestClientConfig({ apiKey, ...config }: Options) {\n clientConfig = { ...config, apiKey };\n}\n\nasync function fetchWithConfig(url: string, options: Options) {\n const { apiKey, ...config } = clientConfig;\n const { searchParams, json, body } = options;\n const headers = {\n ...defaultRequestHeaders,\n ...config.headers,\n ...options.headers,\n ...(json ? { \"Content-Type\": \"application/json\" } : {}),\n } as Record<string, string>;\n\n const bodyToSend = json ? JSON.stringify(json) : body;\n\n const urlInstance = new URL(url);\n if (searchParams) {\n urlInstance.search = new URLSearchParams(searchParams).toString();\n }\n\n if (apiKey) headers[\"x-api-key\"] = apiKey;\n\n try {\n const response = await fetch(urlInstance.toString(), {\n ...config,\n ...options,\n body: bodyToSend,\n headers,\n });\n const body = await response.json();\n\n if (options.responseHandler) return options.responseHandler(body);\n\n return body;\n } catch (error) {\n if (options.onError) return options.onError(error);\n\n console.error(error);\n }\n}\n\nexport const RequestClient = {\n get: async <T>(url: string, options?: Options): Promise<T> =>\n fetchWithConfig(url, { ...options, method: \"GET\" }),\n post: async <T>(url: string, options?: Options): Promise<T> =>\n fetchWithConfig(url, { ...options, method: \"POST\" }),\n extend: (options: Options) => {\n const extendedConfig = { ...clientConfig, ...options };\n return {\n get: async <T>(url: string, options?: Options): Promise<T> =>\n fetchWithConfig(url, { ...extendedConfig, ...options, method: \"GET\" }),\n post: async <T>(url: string, options?: Options): Promise<T> =>\n fetchWithConfig(url, { ...extendedConfig, ...options, method: \"POST\" }),\n extend: (newOptions: Options) => RequestClient.extend({ ...extendedConfig, ...newOptions }),\n };\n },\n};\n",
19
- "import { AssetValue } from \"../modules/assetValue.ts\";\nimport { RequestClient } from \"../modules/requestClient.ts\";\nimport { BaseDecimal, Chain, ChainToRPC, type EVMChain, EVMChains } from \"../types/chains.ts\";\nimport type { RadixCoreStateResourceDTO } from \"../types/radix.ts\";\nimport type { TokenNames } from \"../types/tokens.ts\";\n\nconst getDecimalMethodHex = \"0x313ce567\";\n\nexport type CommonAssetString = (typeof CommonAssetStrings)[number] | Chain;\n\nexport type ConditionalAssetValueReturn<T extends boolean> = T extends true\n ? Promise<AssetValue[]>\n : AssetValue[];\n\nexport const CommonAssetStrings = [\n `${Chain.Maya}.MAYA`,\n `${Chain.Ethereum}.THOR`,\n `${Chain.Ethereum}.vTHOR`,\n `${Chain.Kujira}.USK`,\n] as const;\n\nconst getContractDecimals = async ({ chain, to }: { chain: EVMChain; to: string }) => {\n try {\n const { result } = await RequestClient.post<{ result: string }>(ChainToRPC[chain], {\n headers: {\n accept: \"*/*\",\n \"content-type\": \"application/json\",\n \"cache-control\": \"no-cache\",\n },\n body: JSON.stringify({\n id: 44,\n jsonrpc: \"2.0\",\n method: \"eth_call\",\n params: [{ to: to.toLowerCase(), data: getDecimalMethodHex }, \"latest\"],\n }),\n });\n\n return Number.parseInt(BigInt(result || BaseDecimal[chain]).toString());\n } catch (error) {\n console.error(error);\n return BaseDecimal[chain];\n }\n};\n\nconst getRadixResourceDecimals = async ({ symbol }: { symbol: string }) => {\n try {\n const resourceAddress = symbol.split(\"-\")[1]?.toLowerCase();\n\n const { manager } = await RequestClient.post<RadixCoreStateResourceDTO>(\n `${ChainToRPC[Chain.Radix]}/state/resource`,\n {\n headers: {\n Accept: \"*/*\",\n \"Content-Type\": \"application/json\",\n },\n body: JSON.stringify({\n network: \"mainnet\",\n resource_address: resourceAddress,\n }),\n },\n );\n\n return manager.divisibility.value.divisibility;\n } catch (error) {\n console.error(error);\n return BaseDecimal[Chain.Radix];\n }\n};\n\nconst getETHAssetDecimal = (symbol: string) => {\n if (symbol === Chain.Ethereum) return BaseDecimal.ETH;\n const splitSymbol = symbol.split(\"-\");\n const address =\n splitSymbol.length === 1 ? undefined : splitSymbol[splitSymbol.length - 1]?.toLowerCase();\n\n return address?.startsWith(\"0x\")\n ? getContractDecimals({ chain: Chain.Ethereum, to: address })\n : BaseDecimal.ETH;\n};\n\nconst getAVAXAssetDecimal = (symbol: string) => {\n const splitSymbol = symbol.split(\"-\");\n const address = splitSymbol.length === 1 ? undefined : splitSymbol[splitSymbol.length - 1];\n\n return address?.startsWith(\"0x\")\n ? getContractDecimals({ chain: Chain.Avalanche, to: address.toLowerCase() })\n : BaseDecimal.AVAX;\n};\n\nconst getBSCAssetDecimal = (symbol: string) => {\n if (symbol === Chain.BinanceSmartChain) return BaseDecimal.BSC;\n\n return BaseDecimal.BSC;\n};\n\nconst getRadixAssetDecimal = (symbol: string) => {\n if (symbol === Chain.Radix) return BaseDecimal.XRD;\n\n return getRadixResourceDecimals({ symbol });\n};\n\nexport const getDecimal = ({ chain, symbol }: { chain: Chain; symbol: string }) => {\n switch (chain) {\n case Chain.Ethereum:\n return getETHAssetDecimal(symbol);\n case Chain.Avalanche:\n return getAVAXAssetDecimal(symbol);\n case Chain.BinanceSmartChain:\n return getBSCAssetDecimal(symbol);\n case Chain.Radix:\n return getRadixAssetDecimal(symbol);\n default:\n return BaseDecimal[chain];\n }\n};\n\nexport const getGasAsset = ({ chain }: { chain: Chain }) => {\n switch (chain) {\n case Chain.Arbitrum:\n case Chain.Optimism:\n return AssetValue.from({ asset: `${chain}.ETH` });\n case Chain.Maya:\n return AssetValue.from({ asset: `${chain}.CACAO` });\n case Chain.Cosmos:\n return AssetValue.from({ asset: `${chain}.ATOM` });\n case Chain.BinanceSmartChain:\n return AssetValue.from({ asset: `${chain}.BNB` });\n case Chain.THORChain:\n return AssetValue.from({ asset: `${chain}.RUNE` });\n\n default:\n return AssetValue.from({ asset: `${chain}.${chain}` });\n }\n};\n\nexport const isGasAsset = ({ chain, symbol }: { chain: Chain; symbol: string }) => {\n switch (chain) {\n case Chain.Arbitrum:\n case Chain.Optimism:\n return symbol === \"ETH\";\n case Chain.Maya:\n return symbol === \"CACAO\";\n case Chain.Cosmos:\n return symbol === \"ATOM\";\n case Chain.BinanceSmartChain:\n return symbol === \"BNB\";\n case Chain.THORChain:\n return symbol === \"RUNE\";\n\n default:\n return symbol === chain;\n }\n};\n\nexport const getCommonAssetInfo = (\n assetString: CommonAssetString,\n): { identifier: string; decimal: number } => {\n switch (assetString) {\n case Chain.Arbitrum:\n case Chain.Optimism:\n return { identifier: `${assetString}.ETH`, decimal: BaseDecimal[assetString] };\n\n case `${Chain.Ethereum}.THOR`:\n return { identifier: \"ETH.THOR-0xa5f2211b9b8170f694421f2046281775e8468044\", decimal: 18 };\n case `${Chain.Ethereum}.vTHOR`:\n return { identifier: \"ETH.vTHOR-0x815c23eca83261b6ec689b60cc4a58b54bc24d8d\", decimal: 18 };\n case Chain.Cosmos:\n return { identifier: `${assetString}.ATOM`, decimal: BaseDecimal[assetString] };\n case Chain.THORChain:\n return { identifier: `${assetString}.RUNE`, decimal: BaseDecimal[assetString] };\n case Chain.BinanceSmartChain:\n return { identifier: `${assetString}.BNB`, decimal: BaseDecimal[assetString] };\n case Chain.Maya:\n return { identifier: `${assetString}.CACAO`, decimal: 10 };\n case Chain.Radix:\n return { identifier: `${Chain.Radix}.XRD`, decimal: BaseDecimal[assetString] };\n\n case `${Chain.Maya}.MAYA`:\n return { identifier: assetString, decimal: 4 };\n case `${Chain.Kujira}.USK`:\n return { identifier: assetString, decimal: 6 };\n\n default:\n return { identifier: `${assetString}.${assetString}`, decimal: BaseDecimal[assetString] };\n }\n};\n\n// biome-ignore lint/complexity/noExcessiveCognitiveComplexity: TODO: Refactor\nexport const getAssetType = ({ chain, symbol }: { chain: Chain; symbol: string }) => {\n if (symbol.includes(\"/\")) return \"Synth\";\n\n switch (chain) {\n case Chain.Cosmos:\n return symbol === \"ATOM\" ? \"Native\" : Chain.Cosmos;\n case Chain.Kujira:\n return symbol === Chain.Kujira ? \"Native\" : Chain.Kujira;\n case Chain.BinanceSmartChain:\n return symbol === \"BNB\" ? \"Native\" : \"BEP20\";\n case Chain.Ethereum:\n return symbol === Chain.Ethereum ? \"Native\" : \"ERC20\";\n case Chain.Avalanche:\n return symbol === Chain.Avalanche ? \"Native\" : Chain.Avalanche;\n case Chain.Polygon:\n return symbol === Chain.Polygon ? \"Native\" : \"POLYGON\";\n case Chain.Arbitrum:\n return [Chain.Ethereum, Chain.Arbitrum].includes(symbol as Chain) ? \"Native\" : \"ARBITRUM\";\n case Chain.Optimism:\n return [Chain.Ethereum, Chain.Optimism].includes(symbol as Chain) ? \"Native\" : \"OPTIMISM\";\n case Chain.Radix:\n return symbol === Chain.Radix ? \"Native\" : \"RADIX\";\n\n default:\n return \"Native\";\n }\n};\n\nexport const assetFromString = (assetString: string) => {\n const [chain, ...symbolArray] = assetString.split(\".\") as [Chain, ...(string | undefined)[]];\n const synth = assetString.includes(\"/\");\n const symbol = symbolArray.join(\".\");\n const splitSymbol = symbol?.split(\"-\");\n const ticker = splitSymbol?.length\n ? splitSymbol.length === 1\n ? splitSymbol[0]\n : splitSymbol.slice(0, -1).join(\"-\")\n : undefined;\n\n return { chain, symbol, ticker, synth };\n};\n\nconst potentialScamRegex = new RegExp(\n /(.)\\1{6}|\\.ORG|\\.NET|\\.FINANCE|\\.COM|WWW|HTTP|\\\\\\\\|\\/\\/|[\\s$%:[\\]]/,\n \"gmi\",\n);\n\nconst evmAssetHasAddress = (assetString: string) => {\n const [chain, symbol] = assetString.split(\".\") as [EVMChain, string];\n if (!EVMChains.includes(chain as EVMChain)) return true;\n const splitSymbol = symbol.split(\"-\");\n const address = splitSymbol.length === 1 ? undefined : splitSymbol[splitSymbol.length - 1];\n\n return isGasAsset({ chain: chain as Chain, symbol }) || !!address;\n};\n\nexport const filterAssets = (\n tokens: {\n value: string;\n decimal: number;\n chain: Chain;\n symbol: string;\n }[],\n) =>\n tokens.filter(({ chain, value, symbol }) => {\n const assetString = `${chain}.${symbol}`;\n\n return (\n !potentialScamRegex.test(assetString) && evmAssetHasAddress(assetString) && value !== \"0\"\n );\n });\n\nexport async function findAssetBy(\n params:\n | { chain: EVMChain | Chain.Radix; contract: string }\n | { identifier: `${Chain}.${string}` },\n) {\n const tokenPackages = await import(\"@swapkit/tokens\");\n\n for (const tokenList of Object.values(tokenPackages)) {\n for (const { identifier, chain: tokenChain, ...rest } of tokenList.tokens) {\n if (\"identifier\" in params && identifier === params.identifier) {\n return identifier as TokenNames;\n }\n\n if (\n \"address\" in rest &&\n \"chain\" in params &&\n tokenChain === params.chain &&\n rest.address.toLowerCase() === params.contract.toLowerCase()\n )\n return identifier as TokenNames;\n }\n }\n\n return;\n}\n",
20
- "import {\n Chain,\n type DerivationPathArray,\n type EVMChain,\n EVMChains,\n NetworkDerivationPath,\n} from \"../types\";\n\ntype Params = {\n chain: Chain;\n index: number;\n addressIndex?: number;\n type?: \"legacy\" | \"ledgerLive\" | \"nativeSegwitMiddleAccount\" | \"segwit\";\n};\n\nconst updatedLastIndex = (path: DerivationPathArray, index: number) => {\n const newPath = [...path.slice(0, path.length - 1), index];\n return newPath as DerivationPathArray;\n};\n\nexport function derivationPathToString([network, chainId, account, change, index]:\n | [number, number, number, number, number | undefined]\n | DerivationPathArray) {\n const shortPath = typeof index !== \"number\";\n\n return `m/${network}'/${chainId}'/${account}'/${change}${shortPath ? \"\" : `/${index}`}`;\n}\n\nexport function getDerivationPathFor({ chain, index, addressIndex = 0, type }: Params) {\n if (EVMChains.includes(chain as EVMChain)) {\n if (type === \"legacy\") return [44, 60, 0, index] as DerivationPathArray;\n if (type === \"ledgerLive\") return [44, 60, index, 0, addressIndex] as DerivationPathArray;\n return updatedLastIndex(NetworkDerivationPath[chain], index);\n }\n\n const chainId = chain === Chain.Litecoin ? 2 : 0;\n\n switch (type) {\n case \"nativeSegwitMiddleAccount\":\n return [84, chainId, index, 0, addressIndex] as DerivationPathArray;\n case \"segwit\":\n return [49, chainId, 0, 0, index] as DerivationPathArray;\n case \"legacy\":\n return [44, chainId, 0, 0, index] as DerivationPathArray;\n default:\n return updatedLastIndex(NetworkDerivationPath[chain], index);\n }\n}\n\nexport function getWalletFormatFor(path: string) {\n const [_, purpose, chainId] = path.split(\"/\").map((p) => Number.parseInt(p, 10));\n\n if (chainId === 145) \"cashaddr\";\n\n switch (purpose) {\n case 44:\n return \"legacy\";\n case 49:\n return \"p2sh\";\n default:\n return \"bech32\";\n }\n}\n",
19
+ "import { AssetValue } from \"../modules/assetValue.ts\";\nimport { RequestClient } from \"../modules/requestClient.ts\";\nimport { BaseDecimal, Chain, ChainToRPC, type EVMChain, EVMChains } from \"../types/chains.ts\";\nimport type { RadixCoreStateResourceDTO } from \"../types/radix.ts\";\nimport type { TokenNames } from \"../types/tokens.ts\";\n\nconst getDecimalMethodHex = \"0x313ce567\";\n\nexport type CommonAssetString = (typeof CommonAssetStrings)[number] | Chain;\n\nexport type ConditionalAssetValueReturn<T extends boolean> = T extends true\n ? Promise<AssetValue[]>\n : AssetValue[];\n\nexport const CommonAssetStrings = [\n `${Chain.Maya}.MAYA`,\n `${Chain.Ethereum}.THOR`,\n `${Chain.Ethereum}.vTHOR`,\n `${Chain.Kujira}.USK`,\n] as const;\n\nconst getContractDecimals = async ({ chain, to }: { chain: EVMChain; to: string }) => {\n try {\n const { result } = await RequestClient.post<{ result: string }>(ChainToRPC[chain], {\n headers: {\n accept: \"*/*\",\n \"content-type\": \"application/json\",\n \"cache-control\": \"no-cache\",\n },\n body: JSON.stringify({\n id: 44,\n jsonrpc: \"2.0\",\n method: \"eth_call\",\n params: [{ to: to.toLowerCase(), data: getDecimalMethodHex }, \"latest\"],\n }),\n });\n\n return Number.parseInt(BigInt(result || BaseDecimal[chain]).toString());\n } catch (error) {\n console.error(error);\n return BaseDecimal[chain];\n }\n};\n\nconst getRadixResourceDecimals = async ({ symbol }: { symbol: string }) => {\n try {\n const resourceAddress = symbol.split(\"-\")[1]?.toLowerCase();\n\n const { manager } = await RequestClient.post<RadixCoreStateResourceDTO>(\n `${ChainToRPC[Chain.Radix]}/state/resource`,\n {\n headers: {\n Accept: \"*/*\",\n \"Content-Type\": \"application/json\",\n },\n body: JSON.stringify({\n network: \"mainnet\",\n resource_address: resourceAddress,\n }),\n },\n );\n\n return manager.divisibility.value.divisibility;\n } catch (error) {\n console.error(error);\n return BaseDecimal[Chain.Radix];\n }\n};\n\nconst getETHAssetDecimal = (symbol: string) => {\n if (symbol === Chain.Ethereum) return BaseDecimal.ETH;\n const splitSymbol = symbol.split(\"-\");\n const address =\n splitSymbol.length === 1 ? undefined : splitSymbol[splitSymbol.length - 1]?.toLowerCase();\n\n return address?.startsWith(\"0x\")\n ? getContractDecimals({ chain: Chain.Ethereum, to: address })\n : BaseDecimal.ETH;\n};\n\nconst getAVAXAssetDecimal = (symbol: string) => {\n const splitSymbol = symbol.split(\"-\");\n const address = splitSymbol.length === 1 ? undefined : splitSymbol[splitSymbol.length - 1];\n\n return address?.startsWith(\"0x\")\n ? getContractDecimals({ chain: Chain.Avalanche, to: address.toLowerCase() })\n : BaseDecimal.AVAX;\n};\n\nconst getBSCAssetDecimal = (symbol: string) => {\n if (symbol === Chain.BinanceSmartChain) return BaseDecimal.BSC;\n\n return BaseDecimal.BSC;\n};\n\nconst getRadixAssetDecimal = (symbol: string) => {\n if (symbol === Chain.Radix) return BaseDecimal.XRD;\n\n return getRadixResourceDecimals({ symbol });\n};\n\nexport const getDecimal = ({ chain, symbol }: { chain: Chain; symbol: string }) => {\n switch (chain) {\n case Chain.Ethereum:\n return getETHAssetDecimal(symbol);\n case Chain.Avalanche:\n return getAVAXAssetDecimal(symbol);\n case Chain.BinanceSmartChain:\n return getBSCAssetDecimal(symbol);\n case Chain.Radix:\n return getRadixAssetDecimal(symbol);\n default:\n return BaseDecimal[chain];\n }\n};\n\nexport const getGasAsset = ({ chain }: { chain: Chain }) => {\n switch (chain) {\n case Chain.Arbitrum:\n case Chain.Base:\n case Chain.Optimism:\n return AssetValue.from({ asset: `${chain}.ETH` });\n case Chain.Maya:\n return AssetValue.from({ asset: `${chain}.CACAO` });\n case Chain.Cosmos:\n return AssetValue.from({ asset: `${chain}.ATOM` });\n case Chain.BinanceSmartChain:\n return AssetValue.from({ asset: `${chain}.BNB` });\n case Chain.THORChain:\n return AssetValue.from({ asset: `${chain}.RUNE` });\n\n default:\n return AssetValue.from({ asset: `${chain}.${chain}` });\n }\n};\n\nexport const isGasAsset = ({ chain, symbol }: { chain: Chain; symbol: string }) => {\n switch (chain) {\n case Chain.Arbitrum:\n case Chain.Base:\n case Chain.Optimism:\n return symbol === \"ETH\";\n case Chain.Maya:\n return symbol === \"CACAO\";\n case Chain.Cosmos:\n return symbol === \"ATOM\";\n case Chain.BinanceSmartChain:\n return symbol === \"BNB\";\n case Chain.THORChain:\n return symbol === \"RUNE\";\n\n default:\n return symbol === chain;\n }\n};\n\nexport const getCommonAssetInfo = (\n assetString: CommonAssetString,\n): { identifier: string; decimal: number } => {\n switch (assetString) {\n case Chain.Arbitrum:\n case Chain.Base:\n case Chain.Optimism:\n return { identifier: `${assetString}.ETH`, decimal: BaseDecimal[assetString] };\n\n case `${Chain.Ethereum}.THOR`:\n return { identifier: \"ETH.THOR-0xa5f2211b9b8170f694421f2046281775e8468044\", decimal: 18 };\n case `${Chain.Ethereum}.vTHOR`:\n return { identifier: \"ETH.vTHOR-0x815c23eca83261b6ec689b60cc4a58b54bc24d8d\", decimal: 18 };\n case Chain.Cosmos:\n return { identifier: `${assetString}.ATOM`, decimal: BaseDecimal[assetString] };\n case Chain.THORChain:\n return { identifier: `${assetString}.RUNE`, decimal: BaseDecimal[assetString] };\n case Chain.BinanceSmartChain:\n return { identifier: `${assetString}.BNB`, decimal: BaseDecimal[assetString] };\n case Chain.Maya:\n return { identifier: `${assetString}.CACAO`, decimal: 10 };\n case Chain.Radix:\n return { identifier: `${Chain.Radix}.XRD`, decimal: BaseDecimal[assetString] };\n\n case `${Chain.Maya}.MAYA`:\n return { identifier: assetString, decimal: 4 };\n case `${Chain.Kujira}.USK`:\n return { identifier: assetString, decimal: 6 };\n\n default:\n return { identifier: `${assetString}.${assetString}`, decimal: BaseDecimal[assetString] };\n }\n};\n\nexport const getAssetType = ({ chain, symbol }: { chain: Chain; symbol: string }) => {\n if (symbol.includes(\"/\")) return \"Synth\";\n\n switch (chain) {\n case Chain.Arbitrum:\n case Chain.Optimism:\n case Chain.Base:\n return symbol === Chain.Ethereum ? \"Native\" : chain;\n\n case Chain.Cosmos:\n return symbol === \"ATOM\" ? \"Native\" : chain;\n case Chain.BinanceSmartChain:\n return symbol === \"BNB\" ? \"Native\" : chain;\n case Chain.Maya:\n return symbol === \"CACAO\" ? \"Native\" : chain;\n case Chain.THORChain:\n return symbol === \"RUNE\" ? \"Native\" : chain;\n\n default:\n return symbol === chain ? \"Native\" : chain;\n }\n};\n\nexport const assetFromString = (assetString: string) => {\n const [chain, ...symbolArray] = assetString.split(\".\") as [Chain, ...(string | undefined)[]];\n const synth = assetString.includes(\"/\");\n const symbol = symbolArray.join(\".\");\n const splitSymbol = symbol?.split(\"-\");\n const ticker = splitSymbol?.length\n ? splitSymbol.length === 1\n ? splitSymbol[0]\n : splitSymbol.slice(0, -1).join(\"-\")\n : undefined;\n\n return { chain, symbol, ticker, synth };\n};\n\nconst potentialScamRegex = new RegExp(\n /(.)\\1{6}|\\.ORG|\\.NET|\\.FINANCE|\\.COM|WWW|HTTP|\\\\\\\\|\\/\\/|[\\s$%:[\\]]/,\n \"gmi\",\n);\n\nconst evmAssetHasAddress = (assetString: string) => {\n const [chain, symbol] = assetString.split(\".\") as [EVMChain, string];\n if (!EVMChains.includes(chain as EVMChain)) return true;\n const splitSymbol = symbol.split(\"-\");\n const address = splitSymbol.length === 1 ? undefined : splitSymbol[splitSymbol.length - 1];\n\n return isGasAsset({ chain: chain as Chain, symbol }) || !!address;\n};\n\nexport const filterAssets = (\n tokens: {\n value: string;\n decimal: number;\n chain: Chain;\n symbol: string;\n }[],\n) =>\n tokens.filter(({ chain, value, symbol }) => {\n const assetString = `${chain}.${symbol}`;\n\n return (\n !potentialScamRegex.test(assetString) && evmAssetHasAddress(assetString) && value !== \"0\"\n );\n });\n\nexport async function findAssetBy(\n params:\n | { chain: EVMChain | Chain.Radix; contract: string }\n | { identifier: `${Chain}.${string}` },\n) {\n const tokenPackages = await import(\"@swapkit/tokens\");\n\n for (const tokenList of Object.values(tokenPackages)) {\n for (const { identifier, chain: tokenChain, ...rest } of tokenList.tokens) {\n if (\"identifier\" in params && identifier === params.identifier) {\n return identifier as TokenNames;\n }\n\n if (\n \"address\" in rest &&\n \"chain\" in params &&\n tokenChain === params.chain &&\n rest.address.toLowerCase() === params.contract.toLowerCase()\n )\n return identifier as TokenNames;\n }\n }\n\n return;\n}\n",
20
+ "import {\n Chain,\n type DerivationPathArray,\n type EVMChain,\n EVMChains,\n NetworkDerivationPath,\n} from \"../types\";\n\ntype Params = {\n chain: Chain;\n index: number;\n addressIndex?: number;\n type?: \"legacy\" | \"ledgerLive\" | \"nativeSegwitMiddleAccount\" | \"segwit\";\n};\n\nconst updatedLastIndex = (path: DerivationPathArray, index: number) => {\n const newPath = [...path.slice(0, path.length - 1), index];\n return newPath as DerivationPathArray;\n};\n\nexport function derivationPathToString([network, chainId, account, change, index]:\n | [number, number, number, number, number?]\n | DerivationPathArray) {\n const shortPath = typeof index !== \"number\";\n\n return `m/${network}'/${chainId}'/${account}'/${change}${shortPath ? \"\" : `/${index}`}`;\n}\n\nexport function getDerivationPathFor({ chain, index, addressIndex = 0, type }: Params) {\n if (EVMChains.includes(chain as EVMChain)) {\n if (type === \"legacy\") return [44, 60, 0, index] as DerivationPathArray;\n if (type === \"ledgerLive\") return [44, 60, index, 0, addressIndex] as DerivationPathArray;\n return updatedLastIndex(NetworkDerivationPath[chain], index);\n }\n\n const chainId = chain === Chain.Litecoin ? 2 : 0;\n\n switch (type) {\n case \"nativeSegwitMiddleAccount\":\n return [84, chainId, index, 0, addressIndex] as DerivationPathArray;\n case \"segwit\":\n return [49, chainId, 0, 0, index] as DerivationPathArray;\n case \"legacy\":\n return [44, chainId, 0, 0, index] as DerivationPathArray;\n default:\n return updatedLastIndex(NetworkDerivationPath[chain], index);\n }\n}\n\nexport function getWalletFormatFor(path: string) {\n const [_, purpose, chainId] = path.split(\"/\").map((p) => Number.parseInt(p, 10));\n\n if (chainId === 145) \"cashaddr\";\n\n switch (purpose) {\n case 44:\n return \"legacy\";\n case 49:\n return \"p2sh\";\n default:\n return \"bech32\";\n }\n}\n",
21
21
  "import { SwapKitNumber } from \"../index.ts\";\nimport { BaseDecimal } from \"../types/chains.ts\";\n\ntype ShareParams<T extends {}> = T & {\n liquidityUnits: string;\n poolUnits: string;\n};\n\ntype PoolParams = {\n runeAmount: string;\n assetAmount: string;\n runeDepth: string;\n assetDepth: string;\n};\n\n/**\n * Ref: https://gitlab.com/thorchain/thornode/-/issues/657\n * share = (s * A * (2 * T^2 - 2 * T * s + s^2))/T^3\n * s = stakeUnits for member (after factoring in withdrawBasisPoints)\n * T = totalPoolUnits for pool\n * A = assetDepth to be withdrawn\n *\n * Formula:\n * share = (s * A * (2 * T^2 - 2 * T * s + s^2))/T^3\n * (part1 * (part2 - part3 + part4)) / part5\n */\nexport function getAsymmetricRuneShare({\n liquidityUnits,\n poolUnits,\n runeDepth,\n}: ShareParams<{ runeDepth: string }>) {\n const s = toTCSwapKitNumber(liquidityUnits);\n const T = toTCSwapKitNumber(poolUnits);\n const A = toTCSwapKitNumber(runeDepth);\n\n const part1 = s.mul(A);\n const part2 = T.mul(T).mul(2);\n const part3 = T.mul(s).mul(2);\n const part4 = s.mul(s);\n const part5 = T.mul(T).mul(T);\n\n const numerator = part1.mul(part2.sub(part3).add(part4));\n\n return numerator.div(part5);\n}\n\nexport function getAsymmetricAssetShare({\n liquidityUnits,\n poolUnits,\n assetDepth,\n}: ShareParams<{ assetDepth: string }>) {\n const s = toTCSwapKitNumber(liquidityUnits);\n const T = toTCSwapKitNumber(poolUnits);\n const A = toTCSwapKitNumber(assetDepth);\n\n const part1 = s.mul(A);\n const part2 = T.mul(T).mul(2);\n const part3 = T.mul(s).mul(2);\n const part4 = s.mul(s);\n const numerator = part1.mul(part2.sub(part3).add(part4));\n const part5 = T.mul(T).mul(T);\n\n return numerator.div(part5);\n}\n\nexport function getAsymmetricRuneWithdrawAmount({\n percent,\n runeDepth,\n liquidityUnits,\n poolUnits,\n}: ShareParams<{ percent: number; runeDepth: string }>) {\n return getAsymmetricRuneShare({ runeDepth, liquidityUnits, poolUnits }).mul(percent);\n}\n\nexport function getAsymmetricAssetWithdrawAmount({\n percent,\n assetDepth,\n liquidityUnits,\n poolUnits,\n}: ShareParams<{ percent: number; assetDepth: string }>) {\n return getAsymmetricAssetShare({ assetDepth, liquidityUnits, poolUnits }).mul(percent);\n}\n\nfunction toTCSwapKitNumber(value: string) {\n return SwapKitNumber.fromBigInt(BigInt(value), BaseDecimal.THOR);\n}\n\nexport function getSymmetricPoolShare({\n liquidityUnits,\n poolUnits,\n runeDepth,\n assetDepth,\n}: ShareParams<{\n runeDepth: string;\n assetDepth: string;\n}>) {\n return {\n assetAmount: toTCSwapKitNumber(assetDepth).mul(liquidityUnits).div(poolUnits),\n runeAmount: toTCSwapKitNumber(runeDepth).mul(liquidityUnits).div(poolUnits),\n };\n}\n\nexport function getSymmetricWithdraw({\n liquidityUnits,\n poolUnits,\n runeDepth,\n assetDepth,\n percent,\n}: ShareParams<{\n runeDepth: string;\n assetDepth: string;\n percent: number;\n}>) {\n return Object.fromEntries(\n Object.entries(getSymmetricPoolShare({ liquidityUnits, poolUnits, runeDepth, assetDepth })).map(\n ([name, value]) => [name, value.mul(percent)],\n ),\n );\n}\n\nexport function getEstimatedPoolShare({\n runeDepth,\n poolUnits,\n assetDepth,\n liquidityUnits,\n runeAmount,\n assetAmount,\n}: ShareParams<{\n runeAmount: string;\n assetAmount: string;\n runeDepth: string;\n assetDepth: string;\n}>) {\n const R = new SwapKitNumber({ value: runeDepth, decimal: 8 });\n const A = new SwapKitNumber({ value: assetDepth, decimal: 8 });\n const P = new SwapKitNumber({ value: poolUnits, decimal: 8 });\n const runeAddAmount = new SwapKitNumber({ value: runeAmount, decimal: 8 });\n const assetAddAmount = new SwapKitNumber({ value: assetAmount, decimal: 8 });\n\n // liquidityUnits = P * (r*A + a*R + 2*r*a) / (r*A + a*R + 2*R*A)\n const rA = runeAddAmount.mul(A);\n const aR = assetAddAmount.mul(R);\n const ra = runeAddAmount.mul(assetAddAmount);\n const RA = R.mul(A);\n const numerator = P.mul(rA.add(aR.add(ra.mul(2))));\n const denominator = rA.add(aR.add(RA.mul(2)));\n const liquidityUnitsAfterAdd = numerator.div(denominator);\n const estimatedLiquidityUnits = toTCSwapKitNumber(liquidityUnits).add(liquidityUnitsAfterAdd);\n\n if (liquidityUnitsAfterAdd.getBaseValue(\"number\") === 0) {\n return estimatedLiquidityUnits.div(P).getBaseValue(\"number\");\n }\n\n // get pool units after add\n const newPoolUnits = P.add(estimatedLiquidityUnits);\n\n return estimatedLiquidityUnits.div(newPoolUnits).getBaseValue(\"number\");\n}\n\nexport function getLiquiditySlippage({\n runeAmount,\n assetAmount,\n runeDepth,\n assetDepth,\n}: PoolParams) {\n if (runeAmount === \"0\" || assetAmount === \"0\" || runeDepth === \"0\" || assetDepth === \"0\")\n return 0;\n // formula: (t * R - T * r)/ (T*r + R*T)\n const R = toTCSwapKitNumber(runeDepth);\n const T = toTCSwapKitNumber(assetDepth);\n const assetAddAmount = toTCSwapKitNumber(assetAmount);\n const runeAddAmount = toTCSwapKitNumber(runeAmount);\n\n const numerator = assetAddAmount.mul(R).sub(T.mul(runeAddAmount));\n const denominator = T.mul(runeAddAmount).add(R.mul(T));\n\n // set absolute value of percent, no negative allowed\n return Math.abs(numerator.div(denominator).getBaseValue(\"number\"));\n}\n",
22
22
  "import { SwapKitError } from \"../modules/swapKitError\";\nimport { Chain } from \"../types/chains\";\nimport { MemoType } from \"../types/sdk\";\n\nexport function getMemoForLeaveAndBond({ type, address }: BondOrLeaveParams) {\n return `${type}:${address}`;\n}\n\nexport function getMemoForUnbond({ address, unbondAmount }: UnbondParams) {\n return `${MemoType.UNBOND}:${address}:${unbondAmount}`;\n}\n\n/**\n * Deposit\n */\nexport function getMemoForRunePoolDeposit(affiliate?: WithAffiliate<{}>) {\n return addAffiliate(MemoType.RUNEPOOL_DEPOSIT, affiliate);\n}\n\nexport function getMemoForSaverDeposit({\n chain,\n symbol,\n ...affiliate\n}: WithAffiliate<{ chain: Chain; symbol: string }>) {\n return addAffiliate(`${MemoType.DEPOSIT}:${chain}/${symbol}`, affiliate);\n}\n\nexport function getMemoForDeposit({\n chain,\n symbol,\n address,\n ...affiliate\n}: WithAffiliate<{\n chain: Chain;\n symbol: string;\n address?: string;\n}>) {\n const poolIdentifier = getPoolIdentifier({ chain, symbol });\n const addressPart = address ? `:${address}:` : \":\";\n\n return addAffiliate(`${MemoType.DEPOSIT}:${poolIdentifier}${addressPart}`, affiliate);\n}\n\n/**\n * Withdraw\n */\nexport function getMemoForSaverWithdraw({\n chain,\n symbol,\n basisPoints,\n}: { chain: Chain; symbol: string; basisPoints: number }) {\n return `${MemoType.WITHDRAW}:${chain}/${symbol}:${basisPoints}`;\n}\n\nexport function getMemoForWithdraw({\n chain,\n symbol,\n ticker,\n basisPoints,\n targetAsset,\n}: WithdrawParams) {\n const shortenedSymbol =\n chain === \"ETH\" && ticker !== \"ETH\" ? `${ticker}-${symbol.slice(-3)}` : symbol;\n const targetPart = targetAsset ? `:${targetAsset}` : \"\";\n\n return `${MemoType.WITHDRAW}:${chain}.${shortenedSymbol}:${basisPoints}${targetPart}`;\n}\n\nexport function getMemoForRunePoolWithdraw({\n basisPoints,\n ...affiliate\n}: WithAffiliate<{ basisPoints: number }>) {\n return addAffiliate(`${MemoType.RUNEPOOL_WITHDRAW}:${basisPoints}`, affiliate);\n}\n\n/**\n * TNS\n */\nexport function getMemoForNameRegister({ name, chain, address, owner }: NameRegisterParams) {\n const baseMemo = `${MemoType.NAME_REGISTER}:${name}:${chain}:${address}`;\n const ownerAssignmentOrChangePart = owner ? `:${owner}` : \"\";\n\n return `${baseMemo}${ownerAssignmentOrChangePart}`;\n}\n\nexport function getMemoForNamePreferredAssetRegister({\n name,\n chain,\n asset,\n payout,\n owner,\n}: PreferredAssetRegisterParams) {\n return `${MemoType.NAME_REGISTER}:${name}:${chain}:${payout}:${owner}:${asset}`;\n}\n\nexport function getMemoForLoan(\n memoType: MemoType.OPEN_LOAN | MemoType.CLOSE_LOAN,\n {\n asset,\n address,\n minAmount,\n ...affiliate\n }: WithAffiliate<{ address: string; asset: string; minAmount?: string }>,\n) {\n const baseMemo = `${memoType}:${asset}:${address}`;\n const minAmountPart = minAmount ? `:${minAmount}` : \"\";\n\n return addAffiliate(`${baseMemo}${minAmountPart}`, affiliate);\n}\n\n/**\n * Internal helpers\n */\nfunction addAffiliate(\n memo: string,\n { affiliateAddress, affiliateBasisPoints }: WithAffiliate<{}> = {},\n) {\n const affiliatedMemo = `${memo}${affiliateAddress ? `:${affiliateAddress}:${affiliateBasisPoints || 0}` : \"\"}`;\n\n return affiliatedMemo.endsWith(\":\") ? affiliatedMemo.slice(0, -1) : affiliatedMemo;\n}\n\nfunction getPoolIdentifier({\n chain,\n symbol,\n}: {\n chain: Chain;\n symbol: string;\n}) {\n switch (chain) {\n case Chain.Bitcoin:\n case Chain.Dogecoin:\n case Chain.Litecoin:\n return chain.slice(0, 1).toLowerCase();\n case Chain.BitcoinCash:\n return \"c\";\n\n default:\n return `${chain}.${symbol}`;\n }\n}\n\ntype WithAffiliate<T extends {}> = T & {\n affiliateAddress?: string;\n affiliateBasisPoints?: number;\n};\n\ntype BondOrLeaveParams = { type: MemoType.BOND | MemoType.LEAVE; address: string };\ntype UnbondParams = { address: string; unbondAmount: number };\ntype NameRegisterParams = { name: string; chain: string; address: string; owner?: string };\ntype PreferredAssetRegisterParams = {\n name: string;\n chain: Chain;\n asset: string;\n payout: string;\n owner: string;\n};\ntype WithdrawParams = {\n chain: Chain;\n symbol: string;\n ticker: string;\n basisPoints: number;\n targetAsset?: string;\n};\n\n/**\n * @deprecated - Use separate functions per each memo type like getMemoForDeposit, getMemoForWithdraw, etc.\n */\nexport const getMemoFor = <T extends MemoType>(memoType: T, options: NotWorth) => {\n switch (memoType) {\n case MemoType.LEAVE:\n case MemoType.BOND: {\n return getMemoForLeaveAndBond({ type: memoType, address: options?.address });\n }\n\n case MemoType.UNBOND: {\n return getMemoForUnbond({ address: options?.address, unbondAmount: options?.unbondAmount });\n }\n\n case MemoType.NAME_REGISTER: {\n return getMemoForNameRegister(options);\n }\n\n case MemoType.OPEN_LOAN:\n case MemoType.CLOSE_LOAN: {\n return getMemoForLoan(memoType, options);\n }\n\n case MemoType.DEPOSIT: {\n const { chain, symbol, address, singleSide } = options;\n\n if (singleSide) {\n return getMemoForSaverDeposit({ chain, symbol });\n }\n\n return getMemoForDeposit({ chain, symbol, address });\n }\n\n case MemoType.WITHDRAW: {\n const {\n chain,\n ticker,\n symbol,\n basisPoints,\n targetAssetString: targetAsset,\n singleSide,\n } = options;\n\n if (singleSide) {\n return getMemoForSaverWithdraw({ chain, symbol, basisPoints });\n }\n\n return getMemoForWithdraw({\n chain,\n ticker,\n symbol,\n basisPoints,\n targetAsset,\n });\n }\n\n default:\n throw new SwapKitError({\n errorKey: \"helpers_invalid_memo_type\",\n info: { memoType },\n });\n }\n};\n",
23
23
  "import type { BrowserProvider } from \"ethers\";\nimport { SwapKitError } from \"../modules/swapKitError\";\nimport {\n Chain,\n ChainId,\n type EIP6963AnnounceProviderEvent,\n type EIP6963Provider,\n WalletOption,\n} from \"../types\";\n\nexport type EthereumWindowProvider = BrowserProvider & {\n __XDEFI?: boolean;\n isBraveWallet?: boolean;\n isCoinbaseWallet?: boolean;\n isMetaMask?: boolean;\n isOkxWallet?: boolean;\n isTrust?: boolean;\n isTalisman?: boolean;\n on: (event: string, callback?: () => void) => void;\n overrideIsMetaMask?: boolean;\n request: <T = unknown>(args: { method: string; params?: unknown[] }) => Promise<T>;\n selectedProvider?: EthereumWindowProvider;\n};\n\ndeclare const window: {\n ethereum: EthereumWindowProvider;\n trustwallet: EthereumWindowProvider;\n coinbaseWalletExtension: EthereumWindowProvider;\n braveSolana: Todo;\n} & Window;\n\ntype NetworkParams = {\n chainId: ChainId;\n chainName: string;\n nativeCurrency: {\n name: string;\n symbol: string;\n decimals: number;\n };\n rpcUrls: string[];\n blockExplorerUrls: string[];\n};\n\ntype ProviderRequestParams = {\n provider?: BrowserProvider;\n params?: Todo;\n method:\n | \"wallet_addEthereumChain\"\n | \"wallet_switchEthereumChain\"\n | \"eth_requestAccounts\"\n | \"eth_sendTransaction\"\n | \"eth_signTransaction\";\n};\n\nconst methodsToWrap = [\n \"approve\",\n \"approvedAmount\",\n \"call\",\n \"sendTransaction\",\n \"transfer\",\n \"isApproved\",\n \"approvedAmount\",\n \"EIP1193SendTransaction\",\n \"getFeeData\",\n \"broadcastTransaction\",\n \"estimateCall\",\n \"estimateGasLimit\",\n \"estimateGasPrices\",\n \"createContractTxObject\",\n];\n\nexport const wrapMethodWithNetworkSwitch = <T extends (...args: Todo[]) => Todo>(\n func: T,\n provider: BrowserProvider,\n chainId: ChainId,\n) =>\n (async (...args: Todo[]) => {\n try {\n await switchEVMWalletNetwork(provider, chainId);\n } catch (error) {\n throw new SwapKitError({\n errorKey: \"helpers_failed_to_switch_network\",\n info: { error },\n });\n }\n return func(...args);\n }) as unknown as T;\n\nconst providerRequest = ({ provider, params, method }: ProviderRequestParams) => {\n if (!provider?.send) {\n throw new SwapKitError(\"helpers_not_found_provider\");\n }\n\n const providerParams = params ? (Array.isArray(params) ? params : [params]) : [];\n return provider.send(method, providerParams);\n};\n\nexport const prepareNetworkSwitch = <T extends { [key: string]: (...args: Todo[]) => Todo }>({\n toolbox,\n chainId,\n provider = window.ethereum,\n}: {\n toolbox: T;\n chainId: ChainId;\n provider?: BrowserProvider;\n}) => {\n const wrappedMethods = methodsToWrap.reduce((object, methodName) => {\n if (!toolbox[methodName]) return object;\n const method = toolbox[methodName];\n\n if (typeof method !== \"function\") return object;\n\n return {\n // biome-ignore lint/performance/noAccumulatingSpread: This is a valid use case\n ...object,\n [methodName]: wrapMethodWithNetworkSwitch<typeof method>(method, provider, chainId),\n };\n }, {});\n\n return { ...toolbox, ...wrappedMethods };\n};\n\nexport const addEVMWalletNetwork = (provider: BrowserProvider, networkParams: NetworkParams) =>\n providerRequest({ provider, method: \"wallet_addEthereumChain\", params: [networkParams] });\n\nexport const switchEVMWalletNetwork = (provider: BrowserProvider, chainId = ChainId.EthereumHex) =>\n providerRequest({ provider, method: \"wallet_switchEthereumChain\", params: [{ chainId }] });\n\nexport const addAccountsChangedCallback = (callback: () => void) => {\n window.ethereum?.on(\"accountsChanged\", () => callback());\n // @ts-expect-error that should be implemented in xdefi and hooked up via swapkit core\n window.xfi?.ethereum.on(\"accountsChanged\", () => callback());\n};\n\nexport const getETHDefaultWallet = () => {\n const { isTrust, isBraveWallet, __XDEFI, overrideIsMetaMask, selectedProvider } =\n window?.ethereum || {};\n if (isTrust) return WalletOption.TRUSTWALLET_WEB;\n if (isBraveWallet) return WalletOption.BRAVE;\n if (overrideIsMetaMask && selectedProvider?.isCoinbaseWallet) return WalletOption.COINBASE_WEB;\n if (__XDEFI) WalletOption.XDEFI;\n return WalletOption.METAMASK;\n};\n\nexport const isDetected = (walletOption: WalletOption) => {\n return listWeb3EVMWallets().includes(walletOption);\n};\n\nexport const listWeb3EVMWallets = () => {\n const metamaskEnabled = window?.ethereum && !window.ethereum?.isBraveWallet;\n // @ts-ignore that should be implemented in xdefi and hooked up via swapkit core\n const xdefiEnabled = window?.xfi || window?.ethereum?.__XDEFI;\n const braveEnabled = window?.ethereum?.isBraveWallet;\n const trustEnabled = window?.ethereum?.isTrust || window?.trustwallet;\n const coinbaseEnabled =\n (window?.ethereum?.overrideIsMetaMask &&\n window?.ethereum?.selectedProvider?.isCoinbaseWallet) ||\n window?.coinbaseWalletExtension;\n\n const wallets = [];\n if (metamaskEnabled) wallets.push(WalletOption.METAMASK);\n if (xdefiEnabled) wallets.push(WalletOption.XDEFI);\n if (braveEnabled) wallets.push(WalletOption.BRAVE);\n if (trustEnabled) wallets.push(WalletOption.TRUSTWALLET_WEB);\n if (coinbaseEnabled) wallets.push(WalletOption.COINBASE_WEB);\n if (okxMobileEnabled()) wallets.push(WalletOption.OKX_MOBILE);\n\n return wallets;\n};\n\nexport function ensureEVMApiKeys({\n chain,\n covalentApiKey,\n ethplorerApiKey,\n}: { chain: Chain; covalentApiKey?: string; ethplorerApiKey?: string }) {\n const missingKey =\n chain !== Chain.Ethereum && !covalentApiKey\n ? \"covalentApiKey\"\n : ethplorerApiKey\n ? undefined\n : \"ethplorerApiKey\";\n\n if (missingKey) {\n throw new SwapKitError({ errorKey: \"wallet_missing_api_key\", info: { missingKey } });\n }\n\n return { covalentApiKey: covalentApiKey as string, ethplorerApiKey: ethplorerApiKey as string };\n}\n\nexport function getEIP6963Wallets() {\n const providers: EIP6963Provider[] = [];\n\n function onAnnouncement(event: EIP6963AnnounceProviderEvent) {\n if (providers.map((p) => p.info.uuid).includes(event.detail.info.uuid)) return;\n providers.push(event.detail);\n }\n\n window.addEventListener(\"eip6963:announceProvider\", onAnnouncement);\n window.dispatchEvent(new Event(\"eip6963:requestProvider\"));\n\n function removeEIP6963EventListener() {\n window.removeEventListener(\"eip6963:announceProvider\", onAnnouncement);\n }\n\n return { providers, removeEIP6963EventListener };\n}\n\nexport const okxMobileEnabled = () => {\n const ua = navigator.userAgent;\n const isIOS = /iphone|ipad|ipod|ios/i.test(ua);\n const isAndroid = /android|XiaoMi|MiuiBrowser/i.test(ua);\n const isMobile = isIOS || isAndroid;\n const isOKApp = /OKApp/i.test(ua);\n\n return isMobile && isOKApp;\n};\n\nexport const isWeb3Detected = () => typeof window.ethereum !== \"undefined\";\n",
24
24
  "import { BigIntArithmetics, formatBigIntToSafeValue } from \"./bigIntArithmetics.ts\";\n\nexport type SwapKitValueType = BigIntArithmetics | string | number;\n\nexport class SwapKitNumber extends BigIntArithmetics {\n eq(value: SwapKitValueType) {\n return this.eqValue(value);\n }\n\n static fromBigInt(value: bigint, decimal?: number) {\n return new SwapKitNumber({\n decimal,\n value: formatBigIntToSafeValue({ value, bigIntDecimal: decimal, decimal }),\n });\n }\n}\n"
25
25
  ],
26
- "mappings": "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",
27
- "debugId": "60845FF4BDBE5C1164756E2164756E21",
26
+ "mappings": "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",
27
+ "debugId": "7BCCE44FE6AAA7A764756E2164756E21",
28
28
  "names": []
29
29
  }
package/package.json CHANGED
@@ -7,12 +7,12 @@
7
7
  "picocolors": "1.0.1"
8
8
  },
9
9
  "devDependencies": {
10
- "@swapkit/toolbox-cosmos": "1.0.22",
11
- "@swapkit/toolbox-evm": "1.2.3",
12
- "@swapkit/toolbox-solana": "1.0.20",
13
- "@swapkit/toolbox-radix": "1.0.20",
14
- "@swapkit/toolbox-substrate": "1.1.15",
15
- "@swapkit/toolbox-utxo": "1.1.3"
10
+ "@swapkit/toolbox-cosmos": "1.1.0",
11
+ "@swapkit/toolbox-evm": "1.3.0",
12
+ "@swapkit/toolbox-solana": "1.0.22",
13
+ "@swapkit/toolbox-radix": "1.0.22",
14
+ "@swapkit/toolbox-substrate": "1.2.0",
15
+ "@swapkit/toolbox-utxo": "1.1.5"
16
16
  },
17
17
  "files": [
18
18
  "src/",
@@ -37,5 +37,5 @@
37
37
  },
38
38
  "type": "module",
39
39
  "types": "./src/index.ts",
40
- "version": "1.5.0"
40
+ "version": "1.6.0"
41
41
  }
@@ -7,6 +7,10 @@ const tickerMap: Record<string, string> = {
7
7
  [Chain.THORChain]: "RUNE",
8
8
  [Chain.Cosmos]: "ATOM",
9
9
  [Chain.BinanceSmartChain]: "BNB",
10
+ [Chain.Maya]: "CACAO",
11
+ [Chain.Optimism]: "ETH",
12
+ [Chain.Arbitrum]: "ETH",
13
+ [Chain.Base]: "ETH",
10
14
  };
11
15
 
12
16
  describe("getAssetType", () => {
@@ -18,7 +22,7 @@ describe("getAssetType", () => {
18
22
  });
19
23
 
20
24
  describe("when isSynth is false", () => {
21
- describe("for native chains and their assets", () => {
25
+ describe("for gas assets on given chain", () => {
22
26
  for (const chain of Object.values(Chain)) {
23
27
  test(`should return "Native" for chain ${chain} asset`, () => {
24
28
  const ticker = tickerMap[chain] || chain;
@@ -29,39 +33,14 @@ describe("getAssetType", () => {
29
33
  }
30
34
  });
31
35
 
32
- describe("for Cosmos chain", () => {
33
- test('should return "GAIA" for non-ATOM tickers', () => {
34
- const result = getAssetType({ chain: Chain.Cosmos, symbol: "NOT_ATOM" });
35
- expect(result).toBe("GAIA");
36
- });
37
- });
38
-
39
- describe("for Binance Smart Chain", () => {
40
- test('should return "BEP20" for non-BNB tickers', () => {
41
- const result = getAssetType({ chain: Chain.BinanceSmartChain, symbol: "NOT_BNB" });
42
- expect(result).toBe("BEP20");
43
- });
44
- });
45
-
46
- describe("for Ethereum chain", () => {
47
- test('should return "ERC20" for non-ETH tickers', () => {
48
- const result = getAssetType({ chain: Chain.Ethereum, symbol: "NOT_ETH" });
49
- expect(result).toBe("ERC20");
50
- });
51
- });
52
-
53
- describe("for Avalanche chain", () => {
54
- test('should return "AVAX" for non-AVAX tickers', () => {
55
- const result = getAssetType({ chain: Chain.Avalanche, symbol: "NOT_AVAX" });
56
- expect(result).toBe("AVAX");
57
- });
58
- });
36
+ describe("for non-gas assets on given chain", () => {
37
+ for (const chain of Object.values(Chain)) {
38
+ test(`should return ${chain} for chain ${chain} asset`, () => {
39
+ const result = getAssetType({ chain: chain as Chain, symbol: "USDT" });
59
40
 
60
- describe("for Radix chain", () => {
61
- test('should return "RADIX" for non-XRD tickers', () => {
62
- const result = getAssetType({ chain: Chain.Radix, symbol: "NOT_XRD" });
63
- expect(result).toBe("RADIX");
64
- });
41
+ expect(result).toBe(chain);
42
+ });
43
+ }
65
44
  });
66
45
  });
67
46
  });
@@ -117,6 +117,7 @@ export const getDecimal = ({ chain, symbol }: { chain: Chain; symbol: string })
117
117
  export const getGasAsset = ({ chain }: { chain: Chain }) => {
118
118
  switch (chain) {
119
119
  case Chain.Arbitrum:
120
+ case Chain.Base:
120
121
  case Chain.Optimism:
121
122
  return AssetValue.from({ asset: `${chain}.ETH` });
122
123
  case Chain.Maya:
@@ -136,6 +137,7 @@ export const getGasAsset = ({ chain }: { chain: Chain }) => {
136
137
  export const isGasAsset = ({ chain, symbol }: { chain: Chain; symbol: string }) => {
137
138
  switch (chain) {
138
139
  case Chain.Arbitrum:
140
+ case Chain.Base:
139
141
  case Chain.Optimism:
140
142
  return symbol === "ETH";
141
143
  case Chain.Maya:
@@ -157,6 +159,7 @@ export const getCommonAssetInfo = (
157
159
  ): { identifier: string; decimal: number } => {
158
160
  switch (assetString) {
159
161
  case Chain.Arbitrum:
162
+ case Chain.Base:
160
163
  case Chain.Optimism:
161
164
  return { identifier: `${assetString}.ETH`, decimal: BaseDecimal[assetString] };
162
165
 
@@ -185,32 +188,26 @@ export const getCommonAssetInfo = (
185
188
  }
186
189
  };
187
190
 
188
- // biome-ignore lint/complexity/noExcessiveCognitiveComplexity: TODO: Refactor
189
191
  export const getAssetType = ({ chain, symbol }: { chain: Chain; symbol: string }) => {
190
192
  if (symbol.includes("/")) return "Synth";
191
193
 
192
194
  switch (chain) {
193
- case Chain.Cosmos:
194
- return symbol === "ATOM" ? "Native" : Chain.Cosmos;
195
- case Chain.Kujira:
196
- return symbol === Chain.Kujira ? "Native" : Chain.Kujira;
197
- case Chain.BinanceSmartChain:
198
- return symbol === "BNB" ? "Native" : "BEP20";
199
- case Chain.Ethereum:
200
- return symbol === Chain.Ethereum ? "Native" : "ERC20";
201
- case Chain.Avalanche:
202
- return symbol === Chain.Avalanche ? "Native" : Chain.Avalanche;
203
- case Chain.Polygon:
204
- return symbol === Chain.Polygon ? "Native" : "POLYGON";
205
195
  case Chain.Arbitrum:
206
- return [Chain.Ethereum, Chain.Arbitrum].includes(symbol as Chain) ? "Native" : "ARBITRUM";
207
196
  case Chain.Optimism:
208
- return [Chain.Ethereum, Chain.Optimism].includes(symbol as Chain) ? "Native" : "OPTIMISM";
209
- case Chain.Radix:
210
- return symbol === Chain.Radix ? "Native" : "RADIX";
197
+ case Chain.Base:
198
+ return symbol === Chain.Ethereum ? "Native" : chain;
199
+
200
+ case Chain.Cosmos:
201
+ return symbol === "ATOM" ? "Native" : chain;
202
+ case Chain.BinanceSmartChain:
203
+ return symbol === "BNB" ? "Native" : chain;
204
+ case Chain.Maya:
205
+ return symbol === "CACAO" ? "Native" : chain;
206
+ case Chain.THORChain:
207
+ return symbol === "RUNE" ? "Native" : chain;
211
208
 
212
209
  default:
213
- return "Native";
210
+ return symbol === chain ? "Native" : chain;
214
211
  }
215
212
  };
216
213
 
@@ -19,7 +19,7 @@ const updatedLastIndex = (path: DerivationPathArray, index: number) => {
19
19
  };
20
20
 
21
21
  export function derivationPathToString([network, chainId, account, change, index]:
22
- | [number, number, number, number, number | undefined]
22
+ | [number, number, number, number, number?]
23
23
  | DerivationPathArray) {
24
24
  const shortPath = typeof index !== "number";
25
25
 
@@ -3,6 +3,7 @@ import { ExplorerUrl, RPCUrl } from "./network";
3
3
  export enum Chain {
4
4
  Arbitrum = "ARB",
5
5
  Avalanche = "AVAX",
6
+ Base = "BASE",
6
7
  BinanceSmartChain = "BSC",
7
8
  Bitcoin = "BTC",
8
9
  BitcoinCash = "BCH",
@@ -29,6 +30,8 @@ export enum ChainId {
29
30
  ArbitrumHex = "0xa4b1",
30
31
  Avalanche = "43114",
31
32
  AvalancheHex = "0xa86a",
33
+ Base = "8453",
34
+ BaseHex = "0x2105",
32
35
  BinanceSmartChain = "56",
33
36
  BinanceSmartChainHex = "0x38",
34
37
  Bitcoin = "bitcoin",
@@ -59,6 +62,8 @@ export const ChainIdToChain: Record<ChainId, Chain> = {
59
62
  [ChainId.Arbitrum]: Chain.Arbitrum,
60
63
  [ChainId.AvalancheHex]: Chain.Avalanche,
61
64
  [ChainId.Avalanche]: Chain.Avalanche,
65
+ [ChainId.BaseHex]: Chain.Base,
66
+ [ChainId.Base]: Chain.Base,
62
67
  [ChainId.BinanceSmartChainHex]: Chain.BinanceSmartChain,
63
68
  [ChainId.BinanceSmartChain]: Chain.BinanceSmartChain,
64
69
  [ChainId.BitcoinCash]: Chain.BitcoinCash,
@@ -88,44 +93,46 @@ type ChainNameType = keyof typeof Chain;
88
93
  const chainNames = Object.keys(Chain) as ChainNameType[];
89
94
  const chains = Object.values(Chain) as Chain[];
90
95
 
91
- export enum BaseDecimal {
92
- ARB = 18,
93
- AVAX = 18,
94
- BCH = 8,
95
- BSC = 18,
96
- BTC = 8,
97
- DASH = 8,
98
- DOGE = 8,
99
- DOT = 10,
100
- ETH = 18,
101
- FLIP = 18,
102
- GAIA = 6,
103
- KUJI = 6,
104
- LTC = 8,
105
- MATIC = 18,
106
- MAYA = 8,
107
- OP = 18,
108
- SOL = 9,
109
- THOR = 8,
110
- XRD = 18,
111
- ZEC = 8,
112
- }
96
+ export const BaseDecimal: Record<Chain, number> = {
97
+ ARB: 18,
98
+ AVAX: 18,
99
+ BASE: 18,
100
+ BCH: 8,
101
+ BSC: 18,
102
+ BTC: 8,
103
+ DASH: 8,
104
+ DOGE: 8,
105
+ DOT: 10,
106
+ ETH: 18,
107
+ FLIP: 18,
108
+ GAIA: 6,
109
+ KUJI: 6,
110
+ LTC: 8,
111
+ MATIC: 18,
112
+ MAYA: 8,
113
+ OP: 18,
114
+ SOL: 9,
115
+ THOR: 8,
116
+ XRD: 18,
117
+ };
113
118
 
114
119
  export type SubstrateChain = Chain.Polkadot | Chain.Chainflip;
115
120
  export const SubstrateChains = [Chain.Polkadot, Chain.Chainflip];
116
121
 
117
122
  export type EVMChain =
118
- | Chain.Ethereum
123
+ | Chain.Arbitrum
119
124
  | Chain.Avalanche
125
+ | Chain.Base
120
126
  | Chain.BinanceSmartChain
121
- | Chain.Arbitrum
127
+ | Chain.Ethereum
122
128
  | Chain.Optimism
123
129
  | Chain.Polygon;
124
130
  export const EVMChains = [
125
- Chain.Ethereum,
131
+ Chain.Arbitrum,
126
132
  Chain.Avalanche,
133
+ Chain.Base,
127
134
  Chain.BinanceSmartChain,
128
- Chain.Arbitrum,
135
+ Chain.Ethereum,
129
136
  Chain.Optimism,
130
137
  Chain.Polygon,
131
138
  ] as const;
@@ -3,6 +3,7 @@ import type { Chain } from "./chains";
3
3
  export enum ContractAddress {
4
4
  ARB = "0x0000000000000000000000000000000000000000",
5
5
  AVAX = "0x0000000000000000000000000000000000000000",
6
+ BASE = "0x0000000000000000000000000000000000000000",
6
7
  ETH = "0x0000000000000000000000000000000000000000",
7
8
  BSC = "0x0000000000000000000000000000000000000000",
8
9
  MATIC = "0x0000000000000000000000000000000000001010",
@@ -12,6 +13,7 @@ export enum ContractAddress {
12
13
  export enum DerivationPath {
13
14
  ARB = "m/44'/60'/0'/0",
14
15
  AVAX = "m/44'/60'/0'/0",
16
+ BASE = "m/44'/60'/0'/0",
15
17
  BCH = "m/44'/145'/0'/0",
16
18
  BSC = "m/44'/60'/0'/0",
17
19
  BTC = "m/84'/0'/0'/0",
@@ -36,6 +38,7 @@ export type DerivationPathArray = [number, number, number, number, number?];
36
38
  export const NetworkDerivationPath: Record<Chain, DerivationPathArray> = {
37
39
  ARB: [44, 60, 0, 0, 0],
38
40
  AVAX: [44, 60, 0, 0, 0],
41
+ BASE: [44, 60, 0, 0, 0],
39
42
  BCH: [44, 145, 0, 0, 0],
40
43
  BSC: [44, 60, 0, 0, 0],
41
44
  BTC: [84, 0, 0, 0, 0],
@@ -1,6 +1,7 @@
1
1
  export enum RPCUrl {
2
2
  Arbitrum = "https://arb1.arbitrum.io/rpc",
3
3
  Avalanche = "https://node-router.thorswap.net/avalanche-c",
4
+ Base = "https://base.llamarpc.com",
4
5
  BinanceSmartChain = "https://bsc-dataseed.binance.org",
5
6
  Bitcoin = "https://node-router.thorswap.net/bitcoin",
6
7
  BitcoinCash = "https://node-router.thorswap.net/bitcoin-cash",
@@ -25,6 +26,7 @@ export enum RPCUrl {
25
26
  export enum ExplorerUrl {
26
27
  Arbitrum = "https://arbiscan.io",
27
28
  Avalanche = "https://snowtrace.io",
29
+ Base = "https://basescan.org",
28
30
  BinanceSmartChain = "https://bscscan.com",
29
31
  Bitcoin = "https://blockchair.com/bitcoin",
30
32
  BitcoinCash = "https://www.blockchair.com/bitcoin-cash",
package/src/types/sdk.ts CHANGED
@@ -5,6 +5,7 @@ import type { AssetValue } from "../modules/assetValue";
5
5
  import type { Chain, CosmosChain, UTXOChain } from "./chains";
6
6
 
7
7
  type CovalentChains =
8
+ | Chain.Base
8
9
  | Chain.BinanceSmartChain
9
10
  | Chain.Polygon
10
11
  | Chain.Avalanche