@swapkit/helpers 2.2.0 → 2.3.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 _n=Object.create;var{getPrototypeOf:Pn,defineProperty:tn,getOwnPropertyNames:$n}=Object;var Ln=Object.prototype.hasOwnProperty;var on=(n,h,t)=>{t=n!=null?_n(Pn(n)):{};let o=h||!n||!n.__esModule?tn(t,"default",{value:n,enumerable:!0}):t;for(let c of $n(n))if(!Ln.call(o,c))tn(o,c,{get:()=>n[c],enumerable:!0});return o};var cn=((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 _;((x)=>{x.Arbitrum="ARB";x.Avalanche="AVAX";x.Base="BASE";x.BinanceSmartChain="BSC";x.Bitcoin="BTC";x.BitcoinCash="BCH";x.Cosmos="GAIA";x.Dash="DASH";x.Dogecoin="DOGE";x.Ethereum="ETH";x.Fiat="FIAT";x.Kujira="KUJI";x.Litecoin="LTC";x.Maya="MAYA";x.Optimism="OP";x.Polkadot="DOT";x.Chainflip="FLIP";x.Polygon="MATIC";x.Radix="XRD";x.THORChain="THOR";x.Solana="SOL"})(_||={});var v;((t)=>{t.THORChain="THOR_STAGENET";t.Maya="MAYA_STAGENET"})(v||={});var f;((H)=>{H.Arbitrum="42161";H.ArbitrumHex="0xa4b1";H.Avalanche="43114";H.AvalancheHex="0xa86a";H.Base="8453";H.BaseHex="0x2105";H.BinanceSmartChain="56";H.BinanceSmartChainHex="0x38";H.Bitcoin="bitcoin";H.BitcoinCash="bitcoincash";H.Chainflip="chainflip";H.Cosmos="cosmoshub-4";H.Dash="dash";H.Dogecoin="dogecoin";H.Kujira="kaiyo-1";H.Ethereum="1";H.EthereumHex="0x1";H.Fiat="fiat";H.Litecoin="litecoin";H.Maya="mayachain-mainnet-v1";H.MayaStagenet="mayachain-stagenet-v1";H.Optimism="10";H.OptimismHex="0xa";H.Polkadot="polkadot";H.Polygon="137";H.PolygonHex="0x89";H.Radix="radix-mainnet";H.THORChain="thorchain-1";H.THORChainStagenet="thorchain-stagenet-v2";H.Solana="solana"})(f||={});var _h={["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",["fiat"]:"FIAT",["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-1"]:"THOR",["solana"]:"SOL"},jn=Object.keys(_),z=Object.values(_),F={ARB:18,AVAX:18,BASE:18,BCH:8,BSC:18,BTC:8,DASH:8,DOGE:8,DOT:10,ETH:18,FIAT:2,FLIP:18,GAIA:6,KUJI:6,LTC:8,MATIC:18,MAYA:8,OP:18,SOL:9,THOR:8,XRD:18},Ph={["ARB"]:0.3,["AVAX"]:3,["BASE"]:2,["BSC"]:3,["BTC"]:600,["BCH"]:600,["FLIP"]:5,["GAIA"]:2,["DASH"]:150,["DOGE"]:600,["ETH"]:12.5,["FIAT"]:60,["KUJI"]:2.2,["LTC"]:150,["MAYA"]:6,["OP"]:2,["DOT"]:6,["MATIC"]:2.1,["XRD"]:5,["SOL"]:0.4,["THOR"]:6},$h=["DOT","FLIP"],Q=["ARB","AVAX","BASE","BSC","ETH","OP","MATIC"],Lh=["BTC","BCH","DASH","DOGE","LTC"],jh=["GAIA","THOR","MAYA","KUJI"],Gh=["AVAX","BSC","BTC","BCH","GAIA","DOGE","ETH","LTC","THOR"],Ih=["ARB","DASH","ETH","KUJI","MAYA","THOR"],Cn={["ARB"]:"https://arb1.arbitrum.io/rpc",["AVAX"]:"https://avalanche-c-chain-rpc.publicnode.com",["BASE"]:"https://base.llamarpc.com",["BSC"]:"https://bsc-dataseed.binance.org",["BTC"]:"https://bitcoin-rpc.publicnode.com",["BCH"]:"https://node-router.thorswap.net/bitcoin-cash",["FLIP"]:"wss://mainnet-archive.chainflip.io",["GAIA"]:"https://node-router.thorswap.net/cosmos/rpc",["DASH"]:"https://dash-rpc.publicnode.com",["DOGE"]:"https://node-router.thorswap.net/dogecoin",["ETH"]:"https://ethereum-rpc.publicnode.com",["FIAT"]:"",["KUJI"]:"https://rpc-kujira.synergynodes.com/",["LTC"]:"https://node-router.thorswap.net/litecoin",["MAYA"]:"https://tendermint.mayachain.info",["OP"]:"https://mainnet.optimism.io",["DOT"]:"wss://rpc.polkadot.io",["MATIC"]:"https://polygon-rpc.com",["XRD"]:"https://radix-mainnet.rpc.grove.city/v1/326002fc/core",["THOR"]:"https://rpc.thorswap.net",["THOR_STAGENET"]:"https://stagenet-rpc.ninerealms.com",["MAYA_STAGENET"]:"https://stagenet.tendermint.mayachain.info",["SOL"]:"https://solana-rpc.publicnode.com"},Gn={["ARB"]:["https://arb-mainnet.g.alchemy.com/v2/demo","https://arbitrum.blockpi.network/v1/rpc/public"],["AVAX"]:["https://api.avax.network/ext/bc/C/rpc","https://avalanche-c-chain-rpc.publicnode.com"],["BASE"]:["https://base.blockpi.network/v1/rpc/public","https://1rpc.io/base"],["BSC"]:["https://bsc-rpc.gateway.pokt.network","https://bsc-dataseed2.binance.org"],["BTC"]:["https://bitcoin.publicnode.com"],["BCH"]:["https://bch-dataseed.binance.org","https://bch.getblock.io/mainnet"],["FLIP"]:["wss://archive-1.mainnet.chainflip.io","wss://archive-2.mainnet.chainflip.io"],["GAIA"]:["https://cosmos-rpc.quickapi.com","https://cosmos-rpc.publicnode.com"],["DASH"]:["https://dash-rpc.publicnode.com"],["DOGE"]:["https://doge.getblock.io/mainnet","https://dogecoin.publicnode.com"],["ETH"]:["https://eth.llamarpc.com","https://rpc.ankr.com/eth"],["FIAT"]:[],["KUJI"]:["https://kujira-rpc.polkachu.com","https://kujira-rpc.ibs.team"],["LTC"]:["https://ltc.getblock.io/mainnet","https://litecoin.publicnode.com"],["MAYA"]:["https://tendermint.mayachain.info","https://maya-tendermint.publicnode.com"],["MAYA_STAGENET"]:[],["OP"]:["https://optimism.llamarpc.com","https://1rpc.io/op"],["DOT"]:["wss://polkadot-rpc.dwellir.com","wss://polkadot.api.onfinality.io/public-ws"],["MATIC"]:["https://polygon.llamarpc.com","https://rpc.ankr.com/polygon"],["XRD"]:["https://mainnet.radixdlt.com","https://radix-mainnet.rpc.grove.city/v1"],["THOR"]:["https://thornode.ninerealms.com","https://thornode.thorswap.net"],["THOR_STAGENET"]:[],["SOL"]:["https://api.mainnet-beta.solana.com","https://rpc.ankr.com/solana"]},In={["ARB"]:"https://arbiscan.io",["AVAX"]:"https://snowtrace.io",["BASE"]:"https://basescan.org",["BSC"]:"https://bscscan.com",["BTC"]:"https://blockchair.com/bitcoin",["BCH"]:"https://www.blockchair.com/bitcoin-cash",["FLIP"]:"https://explorer.polkascan.io/polkadot",["GAIA"]:"https://www.mintscan.io/cosmos",["DASH"]:"https://blockchair.com/dash",["DOGE"]:"https://blockchair.com/dogecoin",["ETH"]:"https://etherscan.io",["FIAT"]:"",["KUJI"]:"https://finder.kujira.network/kaiyo-1",["LTC"]:"https://blockchair.com/litecoin",["MAYA"]:"https://www.mayascan.org",["OP"]:"https://optimistic.etherscan.io",["DOT"]:"https://polkadot.subscan.io",["MATIC"]:"https://polygonscan.com",["XRD"]:"https://dashboard.radixdlt.com",["THOR"]:"https://runescan.io",["SOL"]:"https://solscan.io"},d=Cn,W=(n)=>{return d[n]},yn=(n)=>{switch(n){case"ARB":case"AVAX":case"BASE":case"BSC":case"ETH":case"OP":case"MATIC":return{jsonrpc:"2.0",method:"eth_blockNumber",params:[],id:1};case"BTC":case"DOGE":case"BCH":case"DASH":case"LTC":return{jsonrpc:"1.0",id:"test",method:"getblockchaininfo",params:[]};case"GAIA":case"KUJI":case"MAYA":case"THOR":case"MAYA_STAGENET":case"THOR_STAGENET":return{id:1,jsonrpc:"2.0",method:"status",params:{}};case"DOT":return{jsonrpc:"2.0",id:1,method:"system_health",params:[]};case"XRD":return"";case"SOL":return{jsonrpc:"2.0",id:1,method:"getHealth"};default:throw new Error(`Unsupported chain: ${n}`)}};function wn(n){switch(n){case"XRD":return"/status/network-configuration";default:return""}}var sn=async(n,h)=>{try{let t=h.startsWith("wss")?h.replace("wss","https"):h;return(await fetch(`${t}${wn(n)}`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(yn(n)),signal:AbortSignal.timeout(3000)})).ok}catch{return!1}},Xn=async(n)=>{let h=Cn[n];if(await sn(n,h))return h;for(let t of Gn[n])if(await sn(n,t))return t;return h},yh=async(n=[...Object.values(_),...Object.values(v)])=>{let h={};await Promise.all(n.map(async(t)=>{let o=await Xn(t);h[t]=o})),d={...d,...h}},an=z.reduce((n,h)=>{let t=jn.find((o)=>_[o]===h);if(t)n[h]=t;return n},{}),xn=z.reduce((n,h)=>{return n[h]=f[an[h]],n},{}),E=z.reduce((n,h)=>{return n[h]=W(h),n},{}),wh=z.reduce((n,h)=>{let t=`${an[h]}Hex`;return n[h]=f[t],n},{}),Xh=z.reduce((n,h)=>{return n[h]=In[h],n},{});var bn;((T)=>{T.TC_SUPPORTED_TO_TC_SUPPORTED="TC-TC";T.TC_SUPPORTED_TO_ETH="TC-ERC20";T.TC_SUPPORTED_TO_AVAX="TC-ARC20";T.TC_SUPPORTED_TO_BSC="TC-BEP20";T.ETH_TO_TC_SUPPORTED="ERC20-TC";T.ETH_TO_ETH="ERC20-ERC20";T.ETH_TO_AVAX="ERC20-ARC20";T.ETH_TO_BSC="ERC20-BEP20";T.AVAX_TO_TC_SUPPORTED="ARC20-TC";T.AVAX_TO_ETH="ARC20-ERC20";T.AVAX_TO_AVAX="ARC20-ARC20";T.AVAX_TO_BSC="ARC20-BEP20";T.BSC_TO_TC_SUPPORTED="BEP20-TC";T.BSC_TO_ETH="BEP20-ERC20";T.BSC_TO_AVAX="BEP20-ARC20";T.BSC_TO_BSC="BEP20-BEP20"})(bn||={});var Jh=["ERC20-ERC20","ARC20-ARC20","BEP20-BEP20"],fh=["ERC20-TC","ERC20-ARC20","ERC20-BEP20","ARC20-TC","ARC20-ERC20","ARC20-BEP20","BEP20-TC","BEP20-ERC20","BEP20-ARC20"],zh=["TC-TC","TC-ERC20","TC-ARC20","TC-BEP20"];var Jn;((i)=>{i.ARB="0x0000000000000000000000000000000000000000";i.AVAX="0x0000000000000000000000000000000000000000";i.BASE="0x0000000000000000000000000000000000000000";i.ETH="0x0000000000000000000000000000000000000000";i.BSC="0x0000000000000000000000000000000000000000";i.MATIC="0x0000000000000000000000000000000000001010";i.OP="0x4200000000000000000000000000000000000042"})(Jn||={});var fn;((x)=>{x.ARB="m/44'/60'/0'/0";x.AVAX="m/44'/60'/0'/0";x.BASE="m/44'/60'/0'/0";x.BCH="m/44'/145'/0'/0";x.BSC="m/44'/60'/0'/0";x.BTC="m/84'/0'/0'/0";x.DASH="m/44'/5'/0'/0";x.DOGE="m/44'/3'/0'/0";x.DOT="////";x.ETH="m/44'/60'/0'/0";x.FLIP="////";x.GAIA="m/44'/118'/0'/0";x.KUJI="m/44'/118'/0'/0";x.LTC="m/84'/2'/0'/0";x.MATIC="m/44'/60'/0'/0";x.MAYA="m/44'/931'/0'/0";x.OP="m/44'/60'/0'/0";x.SOL="m/44'/501'/0'/0";x.THOR="m/44'/931'/0'/0";x.XRD="////";x.FIAT="////"})(fn||={});var K={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],DOT:[0,0,0,0,0],FIAT:[0,0,0,0,0],FLIP:[0,0,0,0,0],XRD:[0,0,0,0,0]};var zn;((N)=>{N.Arbitrum="https://arb1.arbitrum.io/rpc";N.Avalanche="https://avalanche-c-chain-rpc.publicnode.com";N.Base="https://base.llamarpc.com";N.BinanceSmartChain="https://bsc-dataseed.binance.org";N.Bitcoin="https://bitcoin-rpc.publicnode.com";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://dash-rpc.publicnode.com";N.Dogecoin="https://node-router.thorswap.net/dogecoin";N.Ethereum="https://ethereum-rpc.publicnode.com";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://solana-rpc.publicnode.com"})(zn||={});var Zn;((g)=>{g.Arbitrum="https://arbiscan.io";g.Avalanche="https://snowtrace.io";g.Base="https://basescan.org";g.BinanceSmartChain="https://bscscan.com";g.Bitcoin="https://blockchair.com/bitcoin";g.BitcoinCash="https://www.blockchair.com/bitcoin-cash";g.Chainflip="https://explorer.polkascan.io/polkadot";g.Cosmos="https://www.mintscan.io/cosmos";g.Dash="https://blockchair.com/dash";g.Dogecoin="https://blockchair.com/dogecoin";g.Ethereum="https://etherscan.io";g.Kujira="https://finder.kujira.network/kaiyo-1";g.Litecoin="https://blockchair.com/litecoin";g.Maya="https://www.mayascan.org";g.Optimism="https://optimistic.etherscan.io";g.Polkadot="https://polkadot.subscan.io";g.Polygon="https://polygonscan.com";g.Radix="https://dashboard.radixdlt.com";g.THORChain="https://runescan.io";g.Solana="https://solscan.io"})(Zn||={});var Rn;((B)=>{B.BITGET="BITGET";B.BRAVE="BRAVE";B.COINBASE_MOBILE="COINBASE_MOBILE";B.COINBASE_WEB="COINBASE_WEB";B.CTRL="CTRL";B.EIP6963="EIP6963";B.EXODUS="EXODUS";B.KEEPKEY="KEEPKEY";B.KEEPKEY_BEX="KEEPKEY_BEX";B.KEPLR="KEPLR";B.KEYSTORE="KEYSTORE";B.LEAP="LEAP";B.LEDGER="LEDGER";B.LEDGER_LIVE="LEDGER_LIVE";B.METAMASK="METAMASK";B.OKX="OKX";B.OKX_MOBILE="OKX_MOBILE";B.PHANTOM="PHANTOM";B.POLKADOT_JS="POLKADOT_JS";B.RADIX_WALLET="RADIX_WALLET";B.TREZOR="TREZOR";B.TALISMAN="TALISMAN";B.TRUSTWALLET_WEB="TRUSTWALLET_WEB";B.WALLETCONNECT="WALLETCONNECT"})(Rn||={});var Yn;((o)=>{o[o.NoError=36864]="NoError";o[o.LockedDevice=21781]="LockedDevice";o[o.TC_NotFound=65535]="TC_NotFound"})(Yn||={});var Mn;((o)=>{o.Average="average";o.Fast="fast";o.Fastest="fastest"})(Mn||={});var qn;((t)=>{t.Approve="approve";t.CheckOnly="checkOnly"})(qn||={});var Hn;((p)=>{p.NAME_REGISTER="~";p.BOND="BOND";p.DEPOSIT="+";p.LEAVE="LEAVE";p.UNBOND="UNBOND";p.WITHDRAW="-";p.OPEN_LOAN="$+";p.CLOSE_LOAN="$-";p.RUNEPOOL_DEPOSIT="POOL+";p.RUNEPOOL_WITHDRAW="POOL-"})(Hn||={});var Qn;((s)=>{s.unknownError="unknownError";s.test_error="test_error";s.providerDetailsError="providerDetailsError";s.blockHeaderNotFound="blockHeaderNotFound";s.blockHashNotFoundAtHeight="blockHashNotFoundAtHeight";s.blockHashNotFoundAtHash="blockHashNotFoundAtHash";s.txHashMissing="txHashMissing";s.assetValueMissingInfo="assetValueMissingInfo";s.invalidAsset="invalidAsset";s.blockIsRequired="blockIsRequired";s.currentBlockHeaderNotFound="currentBlockHeaderNotFound";s.failedToRetrieveBalance="failedToRetrieveBalance";s.failedToRetrieveBlock="failedToRetrieveBlock";s.failedToRetrieveFees="failedToRetrieveFees";s.notImplementedBCH="notImplementedBCH";s.notImplementedDoge="notImplementedDoge";s.noPoolsFound="noPoolsFound";s.noVaultsFound="noVaultsFound";s.noTxFound="noTxFound";s.noInputCoinFound="noInputCoinFound";s.noBlockDataFound="noBlockDataFound";s.multipleCosmosMessages="multipleCosmosMessages";s.heightOrHashNotProvided="heightOrHashNotProvided";s.unknownDenom="unknownDenom";s.invalidBlockHeight="invalidBlockHeight";s.timestampExtrinsicNoArgumentsForBlock="timestampExtrinsicNoArgumentsForBlock";s.timestampExtrinsicNoTimestampForBlock="timestampExtrinsicNoTimestampForBlock";s.noTimestampExtrinsicForHash="noTimestampExtrinsicForHash";s.timestampExtrinsicNoArgumentsForHash="timestampExtrinsicNoArgumentsForHash";s.txMemoUndefined="txMemoUndefined";s.txMemoIncorrect="txMemoIncorrect";s.txTypeNotFound="txTypeNotFound";s.txNoMessage="txNoMessage";s.txNotFound="txNotFound";s.txReceiptNotFound="txReceiptNotFound";s.txParsingError="txParsingError";s.txLogsParsingError="txLogsParsingError";s.blockNotFound="blockNotFound";s.balanceNotFound="balanceNotFound";s.configError="configError";s.synthSwapDisallowed="synthSwapDisallowed";s.providerQuoteTimeout="providerQuoteTimeout";s.noQuoteResponse="noQuoteResponse";s.noPoolAssetsFound="noPoolAssetsFound";s.noThorchainPools="noThorchainPools";s.noMayachainPools="noMayachainPools";s.noThorchainNetworkInfo="noThorchainNetworkInfo";s.invalidAffiliateFee="invalidAffiliateFee";s.invalidBuyAssetAddress="invalidBuyAssetAddress";s.invalidSellAssetAddress="invalidSellAssetAddress";s.invalidSourceAddress="invalidSourceAddress";s.invalidDestinationAddress="invalidDestinationAddress";s.sourceAddressIsSmartContract="sourceAddressIsSmartContract";s.destinationAddressIsSmartContract="destinationAddressIsSmartContract";s.invalidChainId="invalidChainId";s.unsupportedChainId="unsupportedChainId";s.unsupportedEVMChainId="unsupportedEVMChainId";s.unsupportedMethod="unsupportedMethod";s.unsupportedProvider="unsupportedProvider";s.invalidParamsForMethod="invalidParamsForMethod";s.unsupportedAdapter="unsupportedAdapter";s.noWhitelistTokens="noWhitelistTokens";s.failedFetchGasPrice="failedFetchGasPrice";s.failedToCreateDepositChannel="failedToCreateDepositChannel";s.noProviderDetailsFound="noProviderDetailsFound";s.noTokenListsFound="noTokenListsFound";s.tokenNotFound="tokenNotFound";s.tokenPriceNotFound="tokenPriceNotFound";s.tokenPriceFailedToUpdate="tokenPriceFailedToUpdate";s.swapAmountTooSmall="swapAmountTooSmall";s.legsArrayIsEmpty="legsArrayIsEmpty";s.failedToFetchQuoteForLeg="failedToFetchQuoteForLeg";s.noBlockHeaderFound="noBlockHeaderFound";s.failedToSimulateSwap="failedToSimulateSwap";s.addressScreeningFailed="addressScreeningFailed";s.noLiquidtyProvidersFound="noLiquidtyProvidersFound";s.insufficientLiquidity="insufficientLiquidity";s.noSaversFound="noSaversFound";s.noInboundDataFound="noInbounDataFound";s.noInboundAddressesFound="noInboundAddressesFound";s.noInboundAddressFoundForChain="noInboundAddressFoundForChain";s.noLastBlocksFound="noLastBlocksFound";s.noVersionFound="noVersionFound";s.noConstantsFound="noConstantsFound";s.noMimirsFound="noMimirsFound";s.noRoutesFound="noRoutesFound";s.quoteNotFound="quoteNotFound";s.ledgerSignFailed="ledgerSignFailed";s.ledgerWrongPayload="ledgerWrongPayload";s.ledgerFetchSwapFailed="ledgerFetchSwapFailed";s.failedToFetchTx="failedToFetchTx";s.failedBuildTransactionDetails="failedBuildTransactionDetails";s.noLegsForRoute="noLegsForRoute";s.noRouterAddressFound="noRouterAddressFound";s.noAggregatorAddressFound="noAggregatorAddressFound";s.noContractInstanceFound="noContractInstanceFound";s.noContractAddressFound="noContractAddressFound";s.invalidAffiliate="invalidAffiliate";s.thornameAffiliate="thornameAffiliate";s.providerNotfound="No provider found";s.noRecordFound="No Record found";s.slippageTooLow="Slippage too low";s.tradingHalted="tradingHalted";s.noWrappedGasAsset="noWrappedGasAsset";s.aggregatorAddressNotFound="aggregatorAddressNotFound";s.routerAddressNotFound="routerAddressNotFound";s.dummyAddressNotFound="dummyAddressNotFound";s.trackerError="trackerError";s.thorchainPoolUnavailable="thorchainPoolUnavailable";s.noOhlcvDataFound="noOhlcvDataFound";s.noTradingPairs="noTradingPairs";s.noLoanPositionFound="noLoanPositionFound";s.noLendingAvailability="noLendingAvailability";s.lendingRepayTooSmall="lendingRepayTooSmall";s.missingState="missingState";s.ledgerSwapNotFound="ledgerSwapNotFound";s.ledgerSwapNotReadyForTracking="ledgerSwapNotReadyForTracking";s.errorEstimatingGas="errorEstimatingGas";s.apiKeyInvalid="apiKeyInvalid";s.apiKeyFailedToUpdate="apiKeyFailedToUpdate";s.apiKeyExpired="apiKeyExpired";s.unauthorized="unauthorized";s.failedToCreateMemo="failedToCreateMemo";s.radixIncorrectInstructions="radixIncorrectInstructions";s.radixTxMissedParam="radixTxMissedParam";s.radixTxMissedAccount="radixTxMissedAccount";s.radixManifestParseError="radixManifestParseError";s.radixManifestBuildError="radixManifestBuildError";s.invalidAddressForChain="invalidAddressForChain";s.riskyAddress="riskyAddress";s.noRoutesToProcess="noRoutesToProcess";s.sellAssetAmountTooSmall="sellAssetAmountTooSmall";s.missingPrivateKey="missingPrivateKey";s.noMemoPriceProtection="noMemoPriceProtection"})(Qn||={});var Wn;((t)=>{t.highSlippage="highSlippage";t.highPriceImpact="highPriceImpact"})(Wn||={});var Kn;((k)=>{k.CAVIAR_V1="CAVIAR_V1";k.CAMELOT_V3="CAMELOT_V3";k.CHAINFLIP="CHAINFLIP";k.CHAINFLIP_STREAMING="CHAINFLIP_STREAMING";k.JUPITER="JUPITER";k.MAYACHAIN="MAYACHAIN";k.MAYACHAIN_STREAMING="MAYACHAIN_STREAMING";k.OCISWAP_V1="OCISWAP_V1";k.ONEINCH="ONEINCH";k.OPENOCEAN_V2="OPENOCEAN_V2";k.PANCAKESWAP="PANCAKESWAP";k.PANGOLIN_V1="PANGOLIN_V1";k.SUSHISWAP_V2="SUSHISWAP_V2";k.THORCHAIN="THORCHAIN";k.THORCHAIN_STREAMING="THORCHAIN_STREAMING";k.TRADERJOE_V2="TRADERJOE_V2";k.UNISWAP_V2="UNISWAP_V2";k.UNISWAP_V3="UNISWAP_V3";k.KADO="KADO"})(Kn||={});var Vn;((i)=>{i.LIQUIDITY="liquidity";i.NETWORK="network";i.INBOUND="inbound";i.OUTBOUND="outbound";i.AFFILIATE="affiliate";i.TAX="tax";i.PRIORITY="priority"})(Vn||={});var l={},mn=typeof window!=="undefined"?{}:{referrer:"https://sk.thorswap.net",referer:"https://sk.thorswap.net"};function eh({apiKey:n,...h}){l={...h,apiKey:n}}async function V(n,h){let{apiKey:t,...o}=l,{searchParams:c,json:C,body:a}=h,i={...mn,...o.headers,...h.headers,...C?{"Content-Type":"application/json"}:{}},A=C?JSON.stringify(C):a,R=new URL(n);if(c)R.search=new URLSearchParams(c).toString();if(t)i["x-api-key"]=t;try{let S=await(await fetch(R.toString(),{...o,...h,body:A,headers:i})).json();if(h.responseHandler)return h.responseHandler(S);return S}catch(p){if(h.onError)return h.onError(p);console.error(p)}}var b={get:async(n,h)=>V(n,{...h,method:"GET"}),post:async(n,h)=>V(n,{...h,method:"POST"}),extend:(n)=>{let h={...l,...n};return{get:async(t,o)=>V(t,{...h,...o,method:"GET"}),post:async(t,o)=>V(t,{...h,...o,method:"POST"}),extend:(t)=>b.extend({...h,...t})}}};var Un={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_ctrl_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,core_transaction_invalid_recipient_address:10317,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_ctrl_not_found:20301,wallet_ctrl_send_transaction_no_address:20302,wallet_ctrl_contract_address_not_provided:20303,wallet_ctrl_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,wallet_radix_not_found:20801,wallet_radix_transaction_failed:20802,wallet_keepkey_not_found:20900,wallet_keepkey_asset_not_defined:20901,wallet_keepkey_contract_address_not_provided:20902,wallet_keepkey_send_transaction_no_address:20903,wallet_bitkeep_not_found:21001,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,thorchain_preferred_asset_payout_required:40104,api_v2_invalid_response:50001,api_v2_server_error:50002,api_v2_invalid_method_key_hash:50003,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,toolbox_radix_signer_not_defined:90301,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 u extends Error{static ErrorCode=Un;constructor(n,h){let t=typeof n==="string",o=t?n:n.errorKey;if(h)console.error(h,{stack:h?.stack,message:h?.message});super(o,{cause:{code:u.ErrorCode[o],message:`${o}${t?"":`: ${JSON.stringify(n.info)}`}`}});Object.setPrototypeOf(this,u.prototype)}}function st(n){if(n<0)throw new u({errorKey:"helpers_invalid_number_of_years",info:{numberOfYears:n}});return 10+n}function Ct(n){if(n<0)throw new u({errorKey:"helpers_invalid_number_of_years",info:{numberOfYears:n}});return Math.round((10+n*1.0512)*10000000000)/10000000000}function at(n,h){try{return n()}catch(t){if(h)throw new u(h,t);return console.error(t)}}function it(n){switch(n){case"THOR":return`${n}.RUNE`;case"GAIA":return`${n}.ATOM`;case"BSC":return`${n}`;default:return`${n}.${n}`}}var Dn=["production","test"].includes("development"),pn=new Set;function Fn(n,h){if(!Dn&&n){if(pn.has(h))return;pn.add(h),console.warn(h)}}async function xt(n="thorchain-1"){if(!["thorchain-stagenet-v2","thorchain-1","thorchain-mainnet-v1"].includes(n))return n;try{return(await b.get(`${n!=="thorchain-1"?W("THOR_STAGENET"):W("THOR")}/status`)).result.node_info.network}catch(h){return n}}var An=[...Object.values(_),"TERRA"];function Bn(n=""){let h=n.toUpperCase(),[t]=h.split(".");if(An.includes(t))return!0;let[o]=h.split("/");if(An.includes(o))return!0;throw new u({errorKey:"helpers_invalid_identifier",info:{message:`Invalid identifier: ${n}. Expected format: <Chain>.<Ticker> or <Chain>.<Ticker>-<ContractAddress>`,identifier:n}})}function Ft(n){if(n.length>30)return!1;let h=/^[a-zA-Z0-9+_-]+$/g;return!!n.match(h)}var Y=8,X=(n)=>10n**BigInt(n),Z=(n)=>Math.log10(Number.parseFloat(n.toString()));function J({value:n,bigIntDecimal:h=Y,decimal:t=Y}){if(t===0)return n.toString();let o=n<0n,c=n.toString().substring(o?1:0),C=t-(c.length-1);if(C>0)c="0".repeat(C)+c;let a=c.length-t,i=c.slice(-t);if(Number.parseInt(i[h]||"0")>=5)i=`${i.substring(0,h-1)}${(Number.parseInt(i[h-1]||"0")+1).toString()}`;else i=i.substring(0,h);return`${o?"-":""}${c.slice(0,a)}.${i}`.replace(/\.?0*$/,"")}class G{decimalMultiplier=10n**8n;bigIntValue=0n;decimal;static fromBigInt(n,h){return new G({decimal:h,value:J({value:n,bigIntDecimal:h,decimal:h})})}static shiftDecimals({value:n,from:h,to:t}){return G.fromBigInt(n.getBaseValue("bigint")*X(t)/X(h),t)}constructor(n){let h=r(n),t=typeof n==="object";this.decimal=t?n.decimal:void 0,this.decimalMultiplier=t&&"decimalMultiplier"in n?n.decimalMultiplier:X(Math.max(Tn(m(h)),this.decimal||0)),this.#c(h)}set(n){return new this.constructor({decimal:this.decimal,value:n,identifier:this.toString({includeSynthProtocol:!0})})}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,h){let t=this.formatBigIntToSafeValue(this.bigIntValue,h||this.decimal||Z(this.decimalMultiplier));switch(n){case"number":return Number(t);case"string":return t;case"bigint":return this.bigIntValue*10n**BigInt(this.decimal||8n)/this.decimalMultiplier}}getBaseValue(n,h){let t=this.decimalMultiplier/X(h||this.decimal||F.THOR),o=this.bigIntValue/t;switch(n){case"number":return Number(o);case"string":return o.toString();case"bigint":return o}}getBigIntValue(n,h){if(!h&&typeof n==="object")return n.bigIntValue;let t=r(n),o=m(t);if(o==="0"||o==="undefined")return 0n;return this.#o(o,h)}toSignificant(n=6){let[h,t]=this.getValue("string").split("."),o=h||"",c=t||"";if((Number.parseInt(o)?o.length+c.length:c.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}.${c.slice(0,n-o.length)}`.padEnd(n-o.length,"0");let a=Number.parseInt(c),i=`${a}`.slice(0,n);return`0.${i.padStart(c.length-`${a}`.length+i.length,"0")}`}toFixed(n=6){let[h,t]=this.getValue("string").split("."),o=h||"",c=t||"";if(Number.parseInt(o))return`${o}.${c.slice(0,n)}`.padEnd(n,"0");let C=Number.parseInt(c),a=`${C}`.slice(0,n);return`0.${a.padStart(c.length-`${C}`.length+a.length,"0")}`}toAbbreviation(n=2){let h=this.getValue("number"),t=["","K","M","B","T","Q","Qi","S"],o=Math.floor(Math.log10(Math.abs(h))/3),c=t[o];if(!c)return this.getValue("string");let C=10**(o*3);return`${(h/C).toFixed(n)}${c}`}toCurrency(n="$",{currencyPosition:h="start",decimal:t=2,decimalSeparator:o=".",thousandSeparator:c=","}={}){let C=this.getValue("number"),[a="",i=""]=C.toFixed(6).split("."),A=a.replace(/\B(?=(\d{3})+(?!\d))/g,c),R=a||i?a==="0"?`${Number.parseFloat(`0.${i}`)}`.replace(".",o):`${A}${Number.parseInt(i)?`${o}${i.slice(0,t)}`:""}`:"0.00";return`${h==="start"?n:""}${R}${h==="end"?n:""}`}formatBigIntToSafeValue(n,h){let t=h||this.decimal||Y,o=Math.max(t,Z(this.decimalMultiplier)),c=n<0n,C=n.toString().substring(c?1:0),a=o-(C.length-1),i=a>0?"0".repeat(a)+C:C,A=i.length-o,R=i.slice(-o);if(Number.parseInt(R[t]||"0")>=5)R=`${R.substring(0,t-1)}${(Number.parseInt(R[t-1]||"0")+1).toString()}`;else R=R.substring(0,t);return`${c?"-":""}${i.slice(0,A)}.${R}`.replace(/\.?0*$/,"")}#h(n,...h){let t=this.#t(this,...h),o=Math.max(t,Z(this.decimalMultiplier)),c=X(o),C=h.reduce((i,A)=>{let R=this.getBigIntValue(A,o);switch(n){case"add":return i+R;case"sub":return i-R;case"mul":return i*R/c;case"div":{if(R===0n)throw new RangeError("Division by zero");return i*c/R}default:return i}},this.bigIntValue*c/this.decimalMultiplier),a=J({bigIntDecimal:o,decimal:o,value:C});return new this.constructor({decimalMultiplier:X(o),decimal:this.decimal,value:a,identifier:this.toString()})}#n(n,...h){let t=this.#t(this,...h),o=this.getBigIntValue(h[0]||"0",t),c=this.getBigIntValue(this,t);switch(n){case"gt":return c>o;case"gte":return c>=o;case"lt":return c<o;case"lte":return c<=o;case"eqValue":return c===o}}#c(n){let h=m(n)||"0";this.bigIntValue=this.#o(h)}#t(...n){let h=n.map((t)=>{return typeof t==="object"?t.decimal||Z(t.decimalMultiplier):Tn(m(t))}).filter(Boolean);return Math.max(...h,Y)}#o(n,h){let t=h?X(h):this.decimalMultiplier,o=Z(t),[c="",C=""]=n.split(".");return BigInt(`${c}${C.padEnd(o,"0")}`)}}var dn=Intl.NumberFormat("fullwide",{useGrouping:!1,maximumFractionDigits:20});function m(n){let t=`${typeof n==="number"?dn.format(n):r(n)}`.replaceAll(",",".").split(".");return t.length>1?`${t.slice(0,-1).join("")}.${t.at(-1)}`:t[0]||"0"}function Tn(n){let h=n.split(".")[1]?.length||0;return Math.max(h,Y)}function r(n){return typeof n==="object"?"getValue"in n?n.getValue("string"):n.value:n}var U=new Map;class O extends G{address;chain;isGasAsset=!1;isSynthetic=!1;isTradeAsset=!1;symbol;tax;ticker;type;chainId;constructor({value:n,decimal:h,tax:t,chain:o,symbol:c,identifier:C}){super(typeof n==="object"?n:{decimal:h,value:n});let a=e(C||`${o}.${c}`);this.type=gn(a),this.tax=t,this.chain=a.chain,this.ticker=a.ticker,this.symbol=a.symbol,this.address=a.address,this.isSynthetic=a.isSynthetic,this.isTradeAsset=a.isTradeAsset,this.isGasAsset=a.isGasAsset,this.chainId=xn[a.chain]}toString({includeSynthProtocol:n}={}){return(this.isSynthetic||this.isTradeAsset)&&!n?this.symbol:`${this.chain}.${this.symbol}`}toUrl(){return this.isSynthetic?`${this.chain}.${this.symbol.replace("/",".")}`:this.isTradeAsset?`${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){let[t,o,c]=n.split(".");if(!(t&&o))throw new u({errorKey:"helpers_invalid_asset_url",info:{urlAsset:n}});let C=t==="THOR"&&c?`${t}.${o}/${c}`:n;return O.from({asset:C,value:h})}static from({value:n=0,fromBaseDecimal:h,asyncTokenLookup:t,...o}){let c=n instanceof G?n.getValue("string"):n,C="chain"in o,a=C?o.chain:o.asset,i=C||kn.includes(a),{identifier:A,decimal:R}=i?On(a):{identifier:a,decimal:void 0},{chain:p,isSynthetic:S,isTradeAsset:$}=e(A),I=U.get(p==="SOL"?A:A.toUpperCase()),y=I?.decimal||R;Fn(!(t||y),`Couldn't find static decimal for ${A} (Using default ${F[p]} decimal as fallback).
1
+ var _n=Object.create;var{getPrototypeOf:$n,defineProperty:tn,getOwnPropertyNames:Ln}=Object;var Pn=Object.prototype.hasOwnProperty;var on=(n,h,t)=>{t=n!=null?_n($n(n)):{};let o=h||!n||!n.__esModule?tn(t,"default",{value:n,enumerable:!0}):t;for(let c of Ln(n))if(!Pn.call(o,c))tn(o,c,{get:()=>n[c],enumerable:!0});return o};var cn=((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 _;((x)=>{x.Arbitrum="ARB";x.Avalanche="AVAX";x.Base="BASE";x.BinanceSmartChain="BSC";x.Bitcoin="BTC";x.BitcoinCash="BCH";x.Cosmos="GAIA";x.Dash="DASH";x.Dogecoin="DOGE";x.Ethereum="ETH";x.Fiat="FIAT";x.Kujira="KUJI";x.Litecoin="LTC";x.Maya="MAYA";x.Optimism="OP";x.Polkadot="DOT";x.Chainflip="FLIP";x.Polygon="MATIC";x.Radix="XRD";x.THORChain="THOR";x.Solana="SOL"})(_||={});var v;((t)=>{t.THORChain="THOR_STAGENET";t.Maya="MAYA_STAGENET"})(v||={});var J;((R)=>{R.Arbitrum="42161";R.ArbitrumHex="0xa4b1";R.Avalanche="43114";R.AvalancheHex="0xa86a";R.Base="8453";R.BaseHex="0x2105";R.BinanceSmartChain="56";R.BinanceSmartChainHex="0x38";R.Bitcoin="bitcoin";R.BitcoinCash="bitcoincash";R.Chainflip="chainflip";R.Cosmos="cosmoshub-4";R.Dash="dash";R.Dogecoin="dogecoin";R.Kujira="kaiyo-1";R.Ethereum="1";R.EthereumHex="0x1";R.Fiat="fiat";R.Litecoin="litecoin";R.Maya="mayachain-mainnet-v1";R.MayaStagenet="mayachain-stagenet-v1";R.Optimism="10";R.OptimismHex="0xa";R.Polkadot="polkadot";R.Polygon="137";R.PolygonHex="0x89";R.Radix="radix-mainnet";R.THORChain="thorchain-1";R.THORChainStagenet="thorchain-stagenet-v2";R.Solana="solana"})(J||={});var $h={["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",["fiat"]:"FIAT",["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-1"]:"THOR",["solana"]:"SOL"},jn=Object.keys(_),z=Object.values(_),F={ARB:18,AVAX:18,BASE:18,BCH:8,BSC:18,BTC:8,DASH:8,DOGE:8,DOT:10,ETH:18,FIAT:2,FLIP:18,GAIA:6,KUJI:6,LTC:8,MATIC:18,MAYA:8,OP:18,SOL:9,THOR:8,XRD:18},Lh={["ARB"]:0.3,["AVAX"]:3,["BASE"]:2,["BSC"]:3,["BTC"]:600,["BCH"]:600,["FLIP"]:5,["GAIA"]:2,["DASH"]:150,["DOGE"]:600,["ETH"]:12.5,["FIAT"]:60,["KUJI"]:2.2,["LTC"]:150,["MAYA"]:6,["OP"]:2,["DOT"]:6,["MATIC"]:2.1,["XRD"]:5,["SOL"]:0.4,["THOR"]:6},Ph=["DOT","FLIP"],Q=["ARB","AVAX","BASE","BSC","ETH","OP","MATIC"],jh=["BTC","BCH","DASH","DOGE","LTC"],yh=["GAIA","THOR","MAYA","KUJI"],Gh=["AVAX","BSC","BTC","BCH","GAIA","DOGE","ETH","LTC","THOR"],Ih=["ARB","DASH","ETH","KUJI","MAYA","THOR"],Cn={["ARB"]:"https://arb1.arbitrum.io/rpc",["AVAX"]:"https://avalanche-c-chain-rpc.publicnode.com",["BASE"]:"https://base-rpc.publicnode.com",["BSC"]:"https://bsc-dataseed.binance.org",["BTC"]:"https://bitcoin-rpc.publicnode.com",["BCH"]:"https://node-router.thorswap.net/bitcoin-cash",["FLIP"]:"wss://mainnet-archive.chainflip.io",["GAIA"]:"https://node-router.thorswap.net/cosmos/rpc",["DASH"]:"https://dash-rpc.publicnode.com",["DOGE"]:"https://node-router.thorswap.net/dogecoin",["ETH"]:"https://ethereum-rpc.publicnode.com",["FIAT"]:"",["KUJI"]:"https://rpc-kujira.synergynodes.com/",["LTC"]:"https://node-router.thorswap.net/litecoin",["MAYA"]:"https://tendermint.mayachain.info",["OP"]:"https://mainnet.optimism.io",["DOT"]:"wss://rpc.polkadot.io",["MATIC"]:"https://polygon-rpc.com",["XRD"]:"https://radix-mainnet.rpc.grove.city/v1/326002fc/core",["THOR"]:"https://rpc.thorswap.net",["THOR_STAGENET"]:"https://stagenet-rpc.ninerealms.com",["MAYA_STAGENET"]:"https://stagenet.tendermint.mayachain.info",["SOL"]:"https://solana-rpc.publicnode.com"},yn={["ARB"]:["https://arb-mainnet.g.alchemy.com/v2/demo","https://arbitrum.blockpi.network/v1/rpc/public"],["AVAX"]:["https://api.avax.network/ext/bc/C/rpc","https://avalanche-c-chain-rpc.publicnode.com"],["BASE"]:["https://base.blockpi.network/v1/rpc/public","https://1rpc.io/base"],["BSC"]:["https://bsc-rpc.gateway.pokt.network","https://bsc-dataseed2.binance.org"],["BTC"]:["https://bitcoin.publicnode.com"],["BCH"]:["https://bch-dataseed.binance.org","https://bch.getblock.io/mainnet"],["FLIP"]:["wss://archive-1.mainnet.chainflip.io","wss://archive-2.mainnet.chainflip.io"],["GAIA"]:["https://cosmos-rpc.quickapi.com","https://cosmos-rpc.publicnode.com"],["DASH"]:["https://dash-rpc.publicnode.com"],["DOGE"]:["https://doge.getblock.io/mainnet","https://dogecoin.publicnode.com"],["ETH"]:["https://eth.llamarpc.com","https://rpc.ankr.com/eth"],["FIAT"]:[],["KUJI"]:["https://kujira-rpc.polkachu.com","https://kujira-rpc.ibs.team"],["LTC"]:["https://ltc.getblock.io/mainnet","https://litecoin.publicnode.com"],["MAYA"]:["https://tendermint.mayachain.info","https://maya-tendermint.publicnode.com"],["MAYA_STAGENET"]:[],["OP"]:["https://optimism.llamarpc.com","https://1rpc.io/op"],["DOT"]:["wss://polkadot-rpc.dwellir.com","wss://polkadot.api.onfinality.io/public-ws"],["MATIC"]:["https://polygon.llamarpc.com","https://rpc.ankr.com/polygon"],["XRD"]:["https://mainnet.radixdlt.com","https://radix-mainnet.rpc.grove.city/v1"],["THOR"]:["https://thornode.ninerealms.com","https://thornode.thorswap.net"],["THOR_STAGENET"]:[],["SOL"]:["https://api.mainnet-beta.solana.com","https://rpc.ankr.com/solana"]},Gn={["ARB"]:"https://arbiscan.io",["AVAX"]:"https://snowtrace.io",["BASE"]:"https://basescan.org",["BSC"]:"https://bscscan.com",["BTC"]:"https://blockchair.com/bitcoin",["BCH"]:"https://www.blockchair.com/bitcoin-cash",["FLIP"]:"https://explorer.polkascan.io/polkadot",["GAIA"]:"https://www.mintscan.io/cosmos",["DASH"]:"https://blockchair.com/dash",["DOGE"]:"https://blockchair.com/dogecoin",["ETH"]:"https://etherscan.io",["FIAT"]:"",["KUJI"]:"https://finder.kujira.network/kaiyo-1",["LTC"]:"https://blockchair.com/litecoin",["MAYA"]:"https://www.mayascan.org",["OP"]:"https://optimistic.etherscan.io",["DOT"]:"https://polkadot.subscan.io",["MATIC"]:"https://polygonscan.com",["XRD"]:"https://dashboard.radixdlt.com",["THOR"]:"https://runescan.io",["SOL"]:"https://solscan.io"},d=Cn,W=(n)=>{return d[n]},In=(n)=>{switch(n){case"ARB":case"AVAX":case"BASE":case"BSC":case"ETH":case"OP":case"MATIC":return{jsonrpc:"2.0",method:"eth_blockNumber",params:[],id:1};case"BTC":case"DOGE":case"BCH":case"DASH":case"LTC":return{jsonrpc:"1.0",id:"test",method:"getblockchaininfo",params:[]};case"GAIA":case"KUJI":case"MAYA":case"THOR":case"MAYA_STAGENET":case"THOR_STAGENET":return{id:1,jsonrpc:"2.0",method:"status",params:{}};case"DOT":return{jsonrpc:"2.0",id:1,method:"system_health",params:[]};case"XRD":return"";case"SOL":return{jsonrpc:"2.0",id:1,method:"getHealth"};default:throw new Error(`Unsupported chain: ${n}`)}};function wn(n){switch(n){case"XRD":return"/status/network-configuration";default:return""}}var sn=async(n,h)=>{try{let t=h.startsWith("wss")?h.replace("wss","https"):h;return(await fetch(`${t}${wn(n)}`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(In(n)),signal:AbortSignal.timeout(3000)})).ok}catch{return!1}},fn=async(n)=>{let h=Cn[n];if(await sn(n,h))return h;for(let t of yn[n])if(await sn(n,t))return t;return h},wh=async(n=[...Object.values(_),...Object.values(v)])=>{let h={};await Promise.all(n.map(async(t)=>{let o=await fn(t);h[t]=o})),d={...d,...h}},an=z.reduce((n,h)=>{let t=jn.find((o)=>_[o]===h);if(t)n[h]=t;return n},{}),xn=z.reduce((n,h)=>{return n[h]=J[an[h]],n},{}),E=z.reduce((n,h)=>{return n[h]=W(h),n},{}),fh=z.reduce((n,h)=>{let t=`${an[h]}Hex`;return n[h]=J[t],n},{}),Xh=z.reduce((n,h)=>{return n[h]=Gn[h],n},{});var Xn;((B)=>{B.TC_SUPPORTED_TO_TC_SUPPORTED="TC-TC";B.TC_SUPPORTED_TO_ETH="TC-ERC20";B.TC_SUPPORTED_TO_AVAX="TC-ARC20";B.TC_SUPPORTED_TO_BSC="TC-BEP20";B.ETH_TO_TC_SUPPORTED="ERC20-TC";B.ETH_TO_ETH="ERC20-ERC20";B.ETH_TO_AVAX="ERC20-ARC20";B.ETH_TO_BSC="ERC20-BEP20";B.AVAX_TO_TC_SUPPORTED="ARC20-TC";B.AVAX_TO_ETH="ARC20-ERC20";B.AVAX_TO_AVAX="ARC20-ARC20";B.AVAX_TO_BSC="ARC20-BEP20";B.BSC_TO_TC_SUPPORTED="BEP20-TC";B.BSC_TO_ETH="BEP20-ERC20";B.BSC_TO_AVAX="BEP20-ARC20";B.BSC_TO_BSC="BEP20-BEP20"})(Xn||={});var Jh=["ERC20-ERC20","ARC20-ARC20","BEP20-BEP20"],zh=["ERC20-TC","ERC20-ARC20","ERC20-BEP20","ARC20-TC","ARC20-ERC20","ARC20-BEP20","BEP20-TC","BEP20-ERC20","BEP20-ARC20"],Zh=["TC-TC","TC-ERC20","TC-ARC20","TC-BEP20"];var bn;((i)=>{i.ARB="0x0000000000000000000000000000000000000000";i.AVAX="0x0000000000000000000000000000000000000000";i.BASE="0x0000000000000000000000000000000000000000";i.ETH="0x0000000000000000000000000000000000000000";i.BSC="0x0000000000000000000000000000000000000000";i.MATIC="0x0000000000000000000000000000000000001010";i.OP="0x4200000000000000000000000000000000000042"})(bn||={});var Jn;((x)=>{x.ARB="m/44'/60'/0'/0";x.AVAX="m/44'/60'/0'/0";x.BASE="m/44'/60'/0'/0";x.BCH="m/44'/145'/0'/0";x.BSC="m/44'/60'/0'/0";x.BTC="m/84'/0'/0'/0";x.DASH="m/44'/5'/0'/0";x.DOGE="m/44'/3'/0'/0";x.DOT="////";x.ETH="m/44'/60'/0'/0";x.FLIP="////";x.GAIA="m/44'/118'/0'/0";x.KUJI="m/44'/118'/0'/0";x.LTC="m/84'/2'/0'/0";x.MATIC="m/44'/60'/0'/0";x.MAYA="m/44'/931'/0'/0";x.OP="m/44'/60'/0'/0";x.SOL="m/44'/501'/0'/0";x.THOR="m/44'/931'/0'/0";x.XRD="////";x.FIAT="////"})(Jn||={});var K={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],DOT:[0,0,0,0,0],FIAT:[0,0,0,0,0],FLIP:[0,0,0,0,0],XRD:[0,0,0,0,0]};var zn;((k)=>{k.Arbitrum="https://arb1.arbitrum.io/rpc";k.Avalanche="https://avalanche-c-chain-rpc.publicnode.com";k.Base="https://base.llamarpc.com";k.BinanceSmartChain="https://bsc-dataseed.binance.org";k.Bitcoin="https://bitcoin-rpc.publicnode.com";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://dash-rpc.publicnode.com";k.Dogecoin="https://node-router.thorswap.net/dogecoin";k.Ethereum="https://ethereum-rpc.publicnode.com";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://solana-rpc.publicnode.com"})(zn||={});var Zn;((u)=>{u.Arbitrum="https://arbiscan.io";u.Avalanche="https://snowtrace.io";u.Base="https://basescan.org";u.BinanceSmartChain="https://bscscan.com";u.Bitcoin="https://blockchair.com/bitcoin";u.BitcoinCash="https://www.blockchair.com/bitcoin-cash";u.Chainflip="https://explorer.polkascan.io/polkadot";u.Cosmos="https://www.mintscan.io/cosmos";u.Dash="https://blockchair.com/dash";u.Dogecoin="https://blockchair.com/dogecoin";u.Ethereum="https://etherscan.io";u.Kujira="https://finder.kujira.network/kaiyo-1";u.Litecoin="https://blockchair.com/litecoin";u.Maya="https://www.mayascan.org";u.Optimism="https://optimistic.etherscan.io";u.Polkadot="https://polkadot.subscan.io";u.Polygon="https://polygonscan.com";u.Radix="https://dashboard.radixdlt.com";u.THORChain="https://runescan.io";u.Solana="https://solscan.io"})(Zn||={});var pn;((T)=>{T.BITGET="BITGET";T.BRAVE="BRAVE";T.COINBASE_MOBILE="COINBASE_MOBILE";T.COINBASE_WEB="COINBASE_WEB";T.CTRL="CTRL";T.EIP6963="EIP6963";T.EXODUS="EXODUS";T.KEEPKEY="KEEPKEY";T.KEEPKEY_BEX="KEEPKEY_BEX";T.KEPLR="KEPLR";T.KEYSTORE="KEYSTORE";T.LEAP="LEAP";T.LEDGER="LEDGER";T.LEDGER_LIVE="LEDGER_LIVE";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"})(pn||={});var Yn;((o)=>{o[o.NoError=36864]="NoError";o[o.LockedDevice=21781]="LockedDevice";o[o.TC_NotFound=65535]="TC_NotFound"})(Yn||={});var Mn;((o)=>{o.Average="average";o.Fast="fast";o.Fastest="fastest"})(Mn||={});var qn;((t)=>{t.Approve="approve";t.CheckOnly="checkOnly"})(qn||={});var Rn;((H)=>{H.NAME_REGISTER="~";H.BOND="BOND";H.DEPOSIT="+";H.LEAVE="LEAVE";H.UNBOND="UNBOND";H.WITHDRAW="-";H.OPEN_LOAN="$+";H.CLOSE_LOAN="$-";H.RUNEPOOL_DEPOSIT="POOL+";H.RUNEPOOL_WITHDRAW="POOL-"})(Rn||={});var Qn;((s)=>{s.unknownError="unknownError";s.test_error="test_error";s.providerDetailsError="providerDetailsError";s.blockHeaderNotFound="blockHeaderNotFound";s.blockHashNotFoundAtHeight="blockHashNotFoundAtHeight";s.blockHashNotFoundAtHash="blockHashNotFoundAtHash";s.txHashMissing="txHashMissing";s.assetValueMissingInfo="assetValueMissingInfo";s.invalidAsset="invalidAsset";s.blockIsRequired="blockIsRequired";s.currentBlockHeaderNotFound="currentBlockHeaderNotFound";s.failedToRetrieveBalance="failedToRetrieveBalance";s.failedToRetrieveBlock="failedToRetrieveBlock";s.failedToRetrieveFees="failedToRetrieveFees";s.notImplementedBCH="notImplementedBCH";s.notImplementedDoge="notImplementedDoge";s.noPoolsFound="noPoolsFound";s.noVaultsFound="noVaultsFound";s.noTxFound="noTxFound";s.noInputCoinFound="noInputCoinFound";s.noBlockDataFound="noBlockDataFound";s.multipleCosmosMessages="multipleCosmosMessages";s.heightOrHashNotProvided="heightOrHashNotProvided";s.unknownDenom="unknownDenom";s.invalidBlockHeight="invalidBlockHeight";s.timestampExtrinsicNoArgumentsForBlock="timestampExtrinsicNoArgumentsForBlock";s.timestampExtrinsicNoTimestampForBlock="timestampExtrinsicNoTimestampForBlock";s.noTimestampExtrinsicForHash="noTimestampExtrinsicForHash";s.timestampExtrinsicNoArgumentsForHash="timestampExtrinsicNoArgumentsForHash";s.txMemoUndefined="txMemoUndefined";s.txMemoIncorrect="txMemoIncorrect";s.txTypeNotFound="txTypeNotFound";s.txNoMessage="txNoMessage";s.txNotFound="txNotFound";s.txReceiptNotFound="txReceiptNotFound";s.txParsingError="txParsingError";s.txLogsParsingError="txLogsParsingError";s.blockNotFound="blockNotFound";s.balanceNotFound="balanceNotFound";s.configError="configError";s.synthSwapDisallowed="synthSwapDisallowed";s.providerQuoteTimeout="providerQuoteTimeout";s.noQuoteResponse="noQuoteResponse";s.noPoolAssetsFound="noPoolAssetsFound";s.noThorchainPools="noThorchainPools";s.noMayachainPools="noMayachainPools";s.noThorchainNetworkInfo="noThorchainNetworkInfo";s.invalidAffiliateFee="invalidAffiliateFee";s.invalidBuyAssetAddress="invalidBuyAssetAddress";s.invalidSellAssetAddress="invalidSellAssetAddress";s.invalidSourceAddress="invalidSourceAddress";s.invalidDestinationAddress="invalidDestinationAddress";s.sourceAddressIsSmartContract="sourceAddressIsSmartContract";s.destinationAddressIsSmartContract="destinationAddressIsSmartContract";s.invalidChainId="invalidChainId";s.unsupportedChainId="unsupportedChainId";s.unsupportedEVMChainId="unsupportedEVMChainId";s.unsupportedMethod="unsupportedMethod";s.unsupportedProvider="unsupportedProvider";s.invalidParamsForMethod="invalidParamsForMethod";s.unsupportedAdapter="unsupportedAdapter";s.noWhitelistTokens="noWhitelistTokens";s.failedFetchGasPrice="failedFetchGasPrice";s.failedToCreateDepositChannel="failedToCreateDepositChannel";s.noProviderDetailsFound="noProviderDetailsFound";s.noTokenListsFound="noTokenListsFound";s.tokenNotFound="tokenNotFound";s.tokenPriceNotFound="tokenPriceNotFound";s.tokenPriceFailedToUpdate="tokenPriceFailedToUpdate";s.swapAmountTooSmall="swapAmountTooSmall";s.legsArrayIsEmpty="legsArrayIsEmpty";s.failedToFetchQuoteForLeg="failedToFetchQuoteForLeg";s.noBlockHeaderFound="noBlockHeaderFound";s.failedToSimulateSwap="failedToSimulateSwap";s.addressScreeningFailed="addressScreeningFailed";s.noLiquidtyProvidersFound="noLiquidtyProvidersFound";s.insufficientLiquidity="insufficientLiquidity";s.noSaversFound="noSaversFound";s.noInboundDataFound="noInbounDataFound";s.noInboundAddressesFound="noInboundAddressesFound";s.noInboundAddressFoundForChain="noInboundAddressFoundForChain";s.noLastBlocksFound="noLastBlocksFound";s.noVersionFound="noVersionFound";s.noConstantsFound="noConstantsFound";s.noMimirsFound="noMimirsFound";s.noRoutesFound="noRoutesFound";s.quoteNotFound="quoteNotFound";s.ledgerSignFailed="ledgerSignFailed";s.ledgerWrongPayload="ledgerWrongPayload";s.ledgerFetchSwapFailed="ledgerFetchSwapFailed";s.failedToFetchTx="failedToFetchTx";s.failedBuildTransactionDetails="failedBuildTransactionDetails";s.noLegsForRoute="noLegsForRoute";s.noRouterAddressFound="noRouterAddressFound";s.noAggregatorAddressFound="noAggregatorAddressFound";s.noContractInstanceFound="noContractInstanceFound";s.noContractAddressFound="noContractAddressFound";s.invalidAffiliate="invalidAffiliate";s.thornameAffiliate="thornameAffiliate";s.providerNotfound="No provider found";s.noRecordFound="No Record found";s.slippageTooLow="Slippage too low";s.tradingHalted="tradingHalted";s.noWrappedGasAsset="noWrappedGasAsset";s.aggregatorAddressNotFound="aggregatorAddressNotFound";s.routerAddressNotFound="routerAddressNotFound";s.dummyAddressNotFound="dummyAddressNotFound";s.trackerError="trackerError";s.thorchainPoolUnavailable="thorchainPoolUnavailable";s.noOhlcvDataFound="noOhlcvDataFound";s.noTradingPairs="noTradingPairs";s.noLoanPositionFound="noLoanPositionFound";s.noLendingAvailability="noLendingAvailability";s.lendingRepayTooSmall="lendingRepayTooSmall";s.missingState="missingState";s.ledgerSwapNotFound="ledgerSwapNotFound";s.ledgerSwapNotReadyForTracking="ledgerSwapNotReadyForTracking";s.errorEstimatingGas="errorEstimatingGas";s.apiKeyInvalid="apiKeyInvalid";s.apiKeyFailedToUpdate="apiKeyFailedToUpdate";s.apiKeyExpired="apiKeyExpired";s.unauthorized="unauthorized";s.failedToCreateMemo="failedToCreateMemo";s.radixIncorrectInstructions="radixIncorrectInstructions";s.radixTxMissedParam="radixTxMissedParam";s.radixTxMissedAccount="radixTxMissedAccount";s.radixManifestParseError="radixManifestParseError";s.radixManifestBuildError="radixManifestBuildError";s.invalidAddressForChain="invalidAddressForChain";s.riskyAddress="riskyAddress";s.noRoutesToProcess="noRoutesToProcess";s.sellAssetAmountTooSmall="sellAssetAmountTooSmall";s.missingPrivateKey="missingPrivateKey";s.noMemoPriceProtection="noMemoPriceProtection"})(Qn||={});var Wn;((t)=>{t.highSlippage="highSlippage";t.highPriceImpact="highPriceImpact"})(Wn||={});var Kn;((N)=>{N.CAVIAR_V1="CAVIAR_V1";N.CAMELOT_V3="CAMELOT_V3";N.CHAINFLIP="CHAINFLIP";N.CHAINFLIP_STREAMING="CHAINFLIP_STREAMING";N.JUPITER="JUPITER";N.MAYACHAIN="MAYACHAIN";N.MAYACHAIN_STREAMING="MAYACHAIN_STREAMING";N.OCISWAP_V1="OCISWAP_V1";N.ONEINCH="ONEINCH";N.OPENOCEAN_V2="OPENOCEAN_V2";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.KADO="KADO"})(Kn||={});var Vn;((i)=>{i.LIQUIDITY="liquidity";i.NETWORK="network";i.INBOUND="inbound";i.OUTBOUND="outbound";i.AFFILIATE="affiliate";i.TAX="tax";i.PRIORITY="priority"})(Vn||={});var l={},mn=typeof window!=="undefined"?{}:{referrer:"https://sk.thorswap.net",referer:"https://sk.thorswap.net"};function nt({apiKey:n,...h}){l={...h,apiKey:n}}async function V(n,h){let{apiKey:t,...o}=l,{searchParams:c,json:C,body:a}=h,i={...mn,...o.headers,...h.headers,...C?{"Content-Type":"application/json"}:{}},A=C?JSON.stringify(C):a,p=new URL(n);if(c)p.search=new URLSearchParams(c).toString();if(t)i["x-api-key"]=t;try{let S=await(await fetch(p.toString(),{...o,...h,body:A,headers:i})).json();if(h.responseHandler)return h.responseHandler(S);return S}catch(H){if(h.onError)return h.onError(H);console.error(H)}}var X={get:async(n,h)=>V(n,{...h,method:"GET"}),post:async(n,h)=>V(n,{...h,method:"POST"}),extend:(n)=>{let h={...l,...n};return{get:async(t,o)=>V(t,{...h,...o,method:"GET"}),post:async(t,o)=>V(t,{...h,...o,method:"POST"}),extend:(t)=>X.extend({...h,...t})}}};var Un={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_ctrl_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,core_transaction_invalid_recipient_address:10317,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_ctrl_not_found:20301,wallet_ctrl_send_transaction_no_address:20302,wallet_ctrl_contract_address_not_provided:20303,wallet_ctrl_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,wallet_radix_not_found:20801,wallet_radix_transaction_failed:20802,wallet_keepkey_not_found:20900,wallet_keepkey_asset_not_defined:20901,wallet_keepkey_contract_address_not_provided:20902,wallet_keepkey_send_transaction_no_address:20903,wallet_bitkeep_not_found:21001,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,thorchain_preferred_asset_payout_required:40104,api_v2_invalid_response:50001,api_v2_server_error:50002,api_v2_invalid_method_key_hash:50003,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,toolbox_radix_signer_not_defined:90301,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 g extends Error{static ErrorCode=Un;constructor(n,h){let t=typeof n==="string",o=t?n:n.errorKey;if(h)console.error(h,{stack:h?.stack,message:h?.message});super(o,{cause:{code:g.ErrorCode[o],message:`${o}${t?"":`: ${JSON.stringify(n.info)}`}`}});Object.setPrototypeOf(this,g.prototype)}}function Ct(n){if(n<0)throw new g({errorKey:"helpers_invalid_number_of_years",info:{numberOfYears:n}});return 10+n}function at(n){if(n<0)throw new g({errorKey:"helpers_invalid_number_of_years",info:{numberOfYears:n}});return Math.round((10+n*1.0512)*10000000000)/10000000000}function it(n,h){try{return n()}catch(t){if(h)throw new g(h,t);return console.error(t)}}function xt(n){switch(n){case"THOR":return`${n}.RUNE`;case"GAIA":return`${n}.ATOM`;case"BSC":return`${n}`;default:return`${n}.${n}`}}var Dn=["production","test"].includes("development"),Hn=new Set;function Fn(n,h){if(!Dn&&n){if(Hn.has(h))return;Hn.add(h),console.warn(h)}}async function pt(n="thorchain-1"){if(!["thorchain-stagenet-v2","thorchain-1","thorchain-mainnet-v1"].includes(n))return n;try{return(await X.get(`${n!=="thorchain-1"?W("THOR_STAGENET"):W("THOR")}/status`)).result.node_info.network}catch(h){return n}}var An=[...Object.values(_),"TERRA"];function Tn(n=""){let h=n.toUpperCase(),[t]=h.split(".");if(An.includes(t))return!0;let[o]=h.split("/");if(An.includes(o))return!0;throw new g({errorKey:"helpers_invalid_identifier",info:{message:`Invalid identifier: ${n}. Expected format: <Chain>.<Ticker> or <Chain>.<Ticker>-<ContractAddress>`,identifier:n}})}function At(n){if(n.length>30)return!1;let h=/^[a-zA-Z0-9+_-]+$/g;return!!n.match(h)}var Y=8,f=(n)=>10n**BigInt(n),Z=(n)=>Math.log10(Number.parseFloat(n.toString()));function b({value:n,bigIntDecimal:h=Y,decimal:t=Y}){if(t===0)return n.toString();let o=n<0n,c=n.toString().substring(o?1:0),C=t-(c.length-1);if(C>0)c="0".repeat(C)+c;let a=c.length-t,i=c.slice(-t);if(Number.parseInt(i[h]||"0")>=5)i=`${i.substring(0,h-1)}${(Number.parseInt(i[h-1]||"0")+1).toString()}`;else i=i.substring(0,h);return`${o?"-":""}${c.slice(0,a)}.${i}`.replace(/\.?0*$/,"")}class y{decimalMultiplier=10n**8n;bigIntValue=0n;decimal;static fromBigInt(n,h){return new y({decimal:h,value:b({value:n,bigIntDecimal:h,decimal:h})})}static shiftDecimals({value:n,from:h,to:t}){return y.fromBigInt(n.getBaseValue("bigint")*f(t)/f(h),t)}constructor(n){let h=r(n),t=typeof n==="object";this.decimal=t?n.decimal:void 0,this.decimalMultiplier=t&&"decimalMultiplier"in n?n.decimalMultiplier:f(Math.max(Bn(m(h)),this.decimal||0)),this.#c(h)}set(n){return new this.constructor({decimal:this.decimal,value:n,identifier:this.toString({includeSynthProtocol:!0})})}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,h){let t=this.formatBigIntToSafeValue(this.bigIntValue,h||this.decimal||Z(this.decimalMultiplier));switch(n){case"number":return Number(t);case"string":return t;case"bigint":return this.bigIntValue*10n**BigInt(this.decimal||8n)/this.decimalMultiplier}}getBaseValue(n,h){let t=this.decimalMultiplier/f(h||this.decimal||F.THOR),o=this.bigIntValue/t;switch(n){case"number":return Number(o);case"string":return o.toString();case"bigint":return o}}getBigIntValue(n,h){if(!h&&typeof n==="object")return n.bigIntValue;let t=r(n),o=m(t);if(o==="0"||o==="undefined")return 0n;return this.#o(o,h)}toSignificant(n=6){let[h,t]=this.getValue("string").split("."),o=h||"",c=t||"";if((Number.parseInt(o)?o.length+c.length:c.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}.${c.slice(0,n-o.length)}`.padEnd(n-o.length,"0");let a=Number.parseInt(c),i=`${a}`.slice(0,n);return`0.${i.padStart(c.length-`${a}`.length+i.length,"0")}`}toFixed(n=6){let[h,t]=this.getValue("string").split("."),o=h||"",c=t||"";if(Number.parseInt(o))return`${o}.${c.slice(0,n)}`.padEnd(n,"0");let C=Number.parseInt(c),a=`${C}`.slice(0,n);return`0.${a.padStart(c.length-`${C}`.length+a.length,"0")}`}toAbbreviation(n=2){let h=this.getValue("number"),t=["","K","M","B","T","Q","Qi","S"],o=Math.floor(Math.log10(Math.abs(h))/3),c=t[o];if(!c)return this.getValue("string");let C=10**(o*3);return`${(h/C).toFixed(n)}${c}`}toCurrency(n="$",{currencyPosition:h="start",decimal:t=2,decimalSeparator:o=".",thousandSeparator:c=","}={}){let C=this.getValue("number"),[a="",i=""]=C.toFixed(6).split("."),A=a.replace(/\B(?=(\d{3})+(?!\d))/g,c),p=a||i?a==="0"?`${Number.parseFloat(`0.${i}`)}`.replace(".",o):`${A}${Number.parseInt(i)?`${o}${i.slice(0,t)}`:""}`:"0.00";return`${h==="start"?n:""}${p}${h==="end"?n:""}`}formatBigIntToSafeValue(n,h){let t=h||this.decimal||Y,o=Math.max(t,Z(this.decimalMultiplier)),c=n<0n,C=n.toString().substring(c?1:0),a=o-(C.length-1),i=a>0?"0".repeat(a)+C:C,A=i.length-o,p=i.slice(-o);if(Number.parseInt(p[t]||"0")>=5)p=`${p.substring(0,t-1)}${(Number.parseInt(p[t-1]||"0")+1).toString()}`;else p=p.substring(0,t);return`${c?"-":""}${i.slice(0,A)}.${p}`.replace(/\.?0*$/,"")}#h(n,...h){let t=this.#t(this,...h),o=Math.max(t,Z(this.decimalMultiplier)),c=f(o),C=h.reduce((i,A)=>{let p=this.getBigIntValue(A,o);switch(n){case"add":return i+p;case"sub":return i-p;case"mul":return i*p/c;case"div":{if(p===0n)throw new RangeError("Division by zero");return i*c/p}default:return i}},this.bigIntValue*c/this.decimalMultiplier),a=b({bigIntDecimal:o,decimal:o,value:C});return new this.constructor({decimalMultiplier:f(o),decimal:this.decimal,value:a,identifier:this.toString()})}#n(n,...h){let t=this.#t(this,...h),o=this.getBigIntValue(h[0]||"0",t),c=this.getBigIntValue(this,t);switch(n){case"gt":return c>o;case"gte":return c>=o;case"lt":return c<o;case"lte":return c<=o;case"eqValue":return c===o}}#c(n){let h=m(n)||"0";this.bigIntValue=this.#o(h)}#t(...n){let h=n.map((t)=>{return typeof t==="object"?t.decimal||Z(t.decimalMultiplier):Bn(m(t))}).filter(Boolean);return Math.max(...h,Y)}#o(n,h){let t=h?f(h):this.decimalMultiplier,o=Z(t),[c="",C=""]=n.split(".");return BigInt(`${c}${C.padEnd(o,"0")}`)}}var dn=Intl.NumberFormat("fullwide",{useGrouping:!1,maximumFractionDigits:20});function m(n){let t=`${typeof n==="number"?dn.format(n):r(n)}`.replaceAll(",",".").split(".");return t.length>1?`${t.slice(0,-1).join("")}.${t.at(-1)}`:t[0]||"0"}function Bn(n){let h=n.split(".")[1]?.length||0;return Math.max(h,Y)}function r(n){return typeof n==="object"?"getValue"in n?n.getValue("string"):n.value:n}var U=new Map;class O extends y{address;chain;isGasAsset=!1;isSynthetic=!1;isTradeAsset=!1;symbol;tax;ticker;type;chainId;constructor({value:n,decimal:h,tax:t,chain:o,symbol:c,identifier:C}){super(typeof n==="object"?n:{decimal:h,value:n});let a=e(C||`${o}.${c}`);this.type=On(a),this.tax=t,this.chain=a.chain,this.ticker=a.ticker,this.symbol=a.symbol,this.address=a.address,this.isSynthetic=a.isSynthetic,this.isTradeAsset=a.isTradeAsset,this.isGasAsset=a.isGasAsset,this.chainId=xn[a.chain]}toString({includeSynthProtocol:n}={}){return(this.isSynthetic||this.isTradeAsset)&&!n?this.symbol:`${this.chain}.${this.symbol}`}toUrl(){return this.isSynthetic?`${this.chain}.${this.symbol.replace("/",".")}`:this.isTradeAsset?`${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){let[t,o,c]=n.split(".");if(!(t&&o))throw new g({errorKey:"helpers_invalid_asset_url",info:{urlAsset:n}});let C=t==="THOR"&&c?`${t}.${o}/${c}`:n;return O.from({asset:C,value:h})}static from({value:n=0,fromBaseDecimal:h,asyncTokenLookup:t,...o}){let c=n instanceof y?n.getValue("string"):n,C="chain"in o,a=C?o.chain:o.asset,i=C||Nn.includes(a),{identifier:A,decimal:p}=i?gn(a):{identifier:a,decimal:void 0},{chain:H,isSynthetic:S,isTradeAsset:L}=e(A),G=U.get(H==="SOL"?A:A.toUpperCase()),I=G?.decimal||p;Fn(!(t||I),`Couldn't find static decimal for ${A} (Using default ${F[H]} 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.`);let{decimal:j,identifier:T,tax:q}=I||{decimal:y||F[p],identifier:A},w=h?D(BigInt(c),h):D(c,j);return t?vn(T,h?w:c):S||$?En(T,w):new O({tax:q,decimal:j,identifier:T,value:w})}static loadStaticAssets(){return new Promise((n,h)=>{try{import("@swapkit/tokens").then((t)=>{for(let o of Object.values(t))for(let{identifier:c,chain:C,...a}of o.tokens)U.set(C!=="SOL"?c.toUpperCase():c,{identifier:c,decimal:"decimals"in a?a.decimals:F[C]});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=F.THOR){return O.from({asyncTokenLookup:!0,asset:n,value:h,fromBaseDecimal:t})}static fromStringWithBaseSync(n,h=0n,t=F.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(_).includes(n))return O.from({chain:n,value:h});return O.from({asset:n,value:h})}}function _t(n){let 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 vn(n,h=0){Bn(n);let o=n.includes("SOL.")?n:n.toUpperCase(),c=U.get(o),C=c?.decimal||await Nn(e(n));if(!c)U.set(o,{identifier:n,decimal:C});return new O({decimal:C,value:D(h,C),identifier:n})}function En(n,h=0){let t=n.includes(".")?n.split(".")?.[0]?.toUpperCase():void 0,o=t?["MAYA","THOR"].includes(t):!1,c=n.slice(0,14).includes("~")?"~":"/",[C,a]=o?n.split(".").slice(1).join().split(c):n.split(c);if(!(C&&a))throw new u({errorKey:"helpers_invalid_asset_identifier",info:{identifier:n}});return new O({decimal:8,value:D(h,8),identifier:`${t||"THOR"}.${C}${c}${a}`})}function D(n,h){return typeof n==="bigint"?J({value:n,bigIntDecimal:h,decimal:h}):n}function e(n){let h=n.slice(0,14).includes("/"),t=n.slice(0,14).includes("~"),o=t?"~":"/",c=n.split(".")?.[0]?.toUpperCase()==="THOR",C=n.split(".")?.[0]?.toUpperCase()==="MAYA",[a,i=""]=c||C?n.split(".").slice(1).join().split(o):n.split(o);if((h||t)&&!(a&&i))throw new u({errorKey:"helpers_invalid_asset_identifier",info:{identifier:n}});let A=n.includes(".")&&!h&&!t?n:`${C?"MAYA":"THOR"}.${i}`,[R,...p]=A.split("."),S=h||t?i:p.join("."),$=S.split("-"),I=$.length===1?$[0]:$.slice(0,-1).join("-"),y=$.length===1?void 0:$[$.length-1],j=R==="SOL"?y:y?.toLowerCase();return{address:j,chain:R,isGasAsset:nn({chain:R,symbol:S}),isSynthetic:h,isTradeAsset:t,ticker:I,symbol:(h||t?`${a}${o}`:"")+(j?`${I}-${j??""}`:S)}}var ln="0x313ce567",kn=[`${"MAYA"}.MAYA`,`${"ETH"}.THOR`,`${"ETH"}.vTHOR`,`${"KUJI"}.USK`],un=async({chain:n,to:h})=>{try{let{result:t}=await b.post(E[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:ln},"latest"]})});return Number.parseInt(BigInt(t||F[n]).toString())}catch(t){return console.error(t),F[n]}},rn=async({symbol:n})=>{try{let h=n.split("-")[1]?.toLowerCase(),{manager:t}=await b.post(`${E["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),F["XRD"]}},en=(n)=>{if(n==="ETH")return F.ETH;let h=n.split("-"),t=h.length===1?void 0:h[h.length-1]?.toLowerCase();return t?.startsWith("0x")?un({chain:"ETH",to:t}):F.ETH},nh=(n)=>{let h=n.split("-"),t=h.length===1?void 0:h[h.length-1];return t?.startsWith("0x")?un({chain:"AVAX",to:t.toLowerCase()}):F.AVAX},hh=(n)=>{if(n==="BSC")return F.BSC;return F.BSC},th=(n)=>{if(n==="XRD")return F.XRD;return rn({symbol:n})},Nn=({chain:n,symbol:h})=>{switch(n){case"ETH":return en(h);case"AVAX":return nh(h);case"BSC":return hh(h);case"XRD":return th(h);default:return F[n]}},Gt=({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}`})}},nn=({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}},On=(n)=>{switch(n){case"ARB":case"BASE":case"OP":return{identifier:`${n}.ETH`,decimal:F[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:F[n]};case"THOR":return{identifier:`${n}.RUNE`,decimal:F[n]};case"BSC":return{identifier:`${n}.BNB`,decimal:F[n]};case"MAYA":return{identifier:`${n}.CACAO`,decimal:10};case"XRD":return{identifier:`${"XRD"}.XRD`,decimal:F[n]};case`${"MAYA"}.MAYA`:return{identifier:n,decimal:4};case`${"KUJI"}.USK`:return{identifier:n,decimal:6};default:return{identifier:`${n}.${n}`,decimal:F[n]}}},gn=({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}},It=(n)=>{let[h,...t]=n.split("."),o=n.includes("/"),c=t.join("."),C=c?.split("-"),a=C?.length?C.length===1?C[0]:C.slice(0,-1).join("-"):void 0;return{chain:h,symbol:c,ticker:a,synth:o}},oh=new RegExp(/(.)\1{6}|\.ORG|\.NET|\.FINANCE|\.COM|WWW|HTTP|\\\\|\/\/|[\s$%:[\]]/,"gmi"),ch=(n)=>{let[h,t]=n.split(".");if(!Q.includes(h))return!0;let o=t.split("-"),c=o.length===1?void 0:o[o.length-1];return nn({chain:h,symbol:t})||!!c},yt=(n)=>n.filter(({chain:h,value:t,symbol:o})=>{let c=`${h}.${o}`;return!oh.test(c)&&ch(c)&&t!=="0"});async function wt(n){let h=await import("@swapkit/tokens");for(let t of Object.values(h))for(let{identifier:o,chain:c,...C}of t.tokens){if("identifier"in n&&o===n.identifier)return o;if("address"in C&&"chain"in n&&c===n.chain&&C.address.toLowerCase()===n.contract.toLowerCase())return o}return}var Xt={ARB:1,AVAX:3,BASE:1,BSC:3,BTC:600,BCH:600,FLIP:5,GAIA:1.5,DASH:150,DOGE:600,ETH:12.5,FIAT:60,KUJI:2.2,LTC:150,MAYA:6,OP:1,DOT:6,MATIC:2.1,XRD:5,SOL:1,THOR:6};var hn=(n,h)=>{return[...n.slice(0,n.length-1),h]};function ft([n,h,t,o,c]){return`m/${n}'/${h}'/${t}'/${o}${typeof c!=="number"?"":`/${c}`}`}function zt({chain:n,index:h,addressIndex:t=0,type:o}){if(Q.includes(n)){if(o&&["legacy","account"].includes(o))return[44,60,0,h];if(o==="ledgerLive")return[44,60,h,0,t];return hn(K[n],h)}if(n==="SOL"){if(o==="account")return[44,501,0,h];return hn(K[n],h)}let c=n==="LTC"?2:0;switch(o){case"nativeSegwitMiddleAccount":return[84,c,h,0,t];case"segwit":return[49,c,0,0,h];case"legacy":return[44,c,0,0,h];default:return hn(K[n],h)}}function Zt(n){let[h,t,o]=n.split("/").map((c)=>Number.parseInt(c,10));switch(t){case 44:return"legacy";case 49:return"p2sh";default:return"bech32"}}function sh({liquidityUnits:n,poolUnits:h,runeDepth:t}){let o=P(n),c=P(h),C=P(t),a=o.mul(C),i=c.mul(c).mul(2),A=c.mul(o).mul(2),R=o.mul(o),p=c.mul(c).mul(c);return a.mul(i.sub(A).add(R)).div(p)}function Ch({liquidityUnits:n,poolUnits:h,assetDepth:t}){let o=P(n),c=P(h),C=P(t),a=o.mul(C),i=c.mul(c).mul(2),A=c.mul(o).mul(2),R=o.mul(o),p=a.mul(i.sub(A).add(R)),S=c.mul(c).mul(c);return p.div(S)}function Qt({percent:n,runeDepth:h,liquidityUnits:t,poolUnits:o}){return sh({runeDepth:h,liquidityUnits:t,poolUnits:o}).mul(n)}function Wt({percent:n,assetDepth:h,liquidityUnits:t,poolUnits:o}){return Ch({assetDepth:h,liquidityUnits:t,poolUnits:o}).mul(n)}function P(n){return L.fromBigInt(BigInt(n),F.THOR)}function ah({liquidityUnits:n,poolUnits:h,runeDepth:t,assetDepth:o}){return{assetAmount:P(o).mul(n).div(h),runeAmount:P(t).mul(n).div(h)}}function Kt({liquidityUnits:n,poolUnits:h,runeDepth:t,assetDepth:o,percent:c}){return Object.fromEntries(Object.entries(ah({liquidityUnits:n,poolUnits:h,runeDepth:t,assetDepth:o})).map(([C,a])=>[C,a.mul(c)]))}function Vt({runeDepth:n,poolUnits:h,assetDepth:t,liquidityUnits:o,runeAmount:c,assetAmount:C}){let a=new L({value:n,decimal:8}),i=new L({value:t,decimal:8}),A=new L({value:h,decimal:8}),R=new L({value:c,decimal:8}),p=new L({value:C,decimal:8}),S=R.mul(i),$=p.mul(a),I=R.mul(p),y=a.mul(i),j=A.mul(S.add($.add(I.mul(2)))),T=S.add($.add(y.mul(2))),q=j.div(T),w=P(o).add(q);if(q.getBaseValue("number")===0)return w.div(A).getBaseValue("number");let k=A.add(w);return w.div(k).getBaseValue("number")}function mt({runeAmount:n,assetAmount:h,runeDepth:t,assetDepth:o}){if(n==="0"||h==="0"||t==="0"||o==="0")return 0;let c=P(t),C=P(o),a=P(h),i=P(n),A=a.mul(c).sub(C.mul(i)),R=C.mul(i).add(c.mul(C));return Math.abs(A.div(R).getBaseValue("number"))}function ih({type:n,address:h}){return`${n}:${h}`}function xh({address:n,unbondAmount:h}){return`${"UNBOND"}:${n}:${h}`}function Et(n){return M("POOL+",n)}function Rh({chain:n,symbol:h,...t}){return M(`${"+"}:${n}/${h}`,t)}function Hh({chain:n,symbol:h,address:t,...o}){let c=Th({chain:n,symbol:h}),C=t?`:${t}:`:":";return M(`${"+"}:${c}${C}`,o)}function ph({chain:n,symbol:h,basisPoints:t}){return`${"-"}:${n}/${h}:${t}`}function Fh({chain:n,symbol:h,ticker:t,basisPoints:o,targetAsset:c}){let C=n==="ETH"&&t!=="ETH"?`${t}-${h.slice(-3)}`:h,a=c?`:${c}`:"";return`${"-"}:${n}.${C}:${o}${a}`}function lt({basisPoints:n,...h}){return M(`${"POOL-"}:${n}`,h)}function Ah({name:n,chain:h,address:t,owner:o}){let c=`${"~"}:${n}:${h}:${t}`,C=o?`:${o}`:"";return`${c}${C}`}function rt({name:n,chain:h,asset:t,payout:o,owner:c}){return`${"~"}:${n}:${h}:${o}:${c}:${t}`}function Bh(n,{asset:h,address:t,minAmount:o,...c}){let C=`${n}:${h}:${t}`,a=o?`:${o}`:"";return M(`${C}${a}`,c)}function M(n,{affiliateAddress:h,affiliateBasisPoints:t}={}){let o=`${n}${h?`:${h}:${t||0}`:""}`;return o.endsWith(":")?o.slice(0,-1):o}function Th({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 et=(n,h)=>{switch(n){case"LEAVE":case"BOND":return ih({type:n,address:h?.address});case"UNBOND":return xh({address:h?.address,unbondAmount:h?.unbondAmount});case"~":return Ah(h);case"$+":case"$-":return Bh(n,h);case"+":{let{chain:t,symbol:o,address:c,singleSide:C}=h;if(C)return Rh({chain:t,symbol:o});return Hh({chain:t,symbol:o,address:c})}case"-":{let{chain:t,ticker:o,symbol:c,basisPoints:C,targetAssetString:a,singleSide:i}=h;if(i)return ph({chain:t,symbol:c,basisPoints:C});return Fh({chain:t,ticker:o,symbol:c,basisPoints:C,targetAsset:a})}default:throw new u({errorKey:"helpers_invalid_memo_type",info:{memoType:n}})}};var kh=["approve","approvedAmount","call","sendTransaction","transfer","isApproved","approvedAmount","EIP1193SendTransaction","getFeeData","broadcastTransaction","estimateCall","estimateGasLimit","estimateGasPrices","createContractTxObject"],Nh=(n,h,t)=>async(...o)=>{try{await Oh(h,t)}catch(c){throw new u({errorKey:"helpers_failed_to_switch_network",info:{error:c}})}return n(...o)},Sn=({provider:n,params:h,method:t})=>{if(!n?.send)throw new u("helpers_not_found_provider");let o=h?Array.isArray(h)?h:[h]:[];return n.send(t,o)},oo=({toolbox:n,chainId:h,provider:t=window.ethereum})=>{let o=kh.reduce((c,C)=>{if(!n[C])return c;let a=n[C];if(typeof a!=="function")return c;return{...c,[C]:Nh(a,t,h)}},{});return{...n,...o}},co=(n,h)=>Sn({provider:n,method:"wallet_addEthereumChain",params:[h]}),Oh=(n,h="0x1")=>Sn({provider:n,method:"wallet_switchEthereumChain",params:[{chainId:h}]}),so=(n)=>{window.ethereum?.on("accountsChanged",()=>n()),window.xfi?.ethereum.on("accountsChanged",()=>n())},Co=()=>{let{isTrust:n,isBraveWallet:h,__XDEFI:t,overrideIsMetaMask:o,selectedProvider:c}=window?.ethereum||{};if(n)return"TRUSTWALLET_WEB";if(h)return"BRAVE";if(o&&c?.isCoinbaseWallet)return"COINBASE_WEB";if(t)"CTRL";return"METAMASK"},ao=(n)=>{return gh().includes(n)},gh=()=>{let n=window?.ethereum&&!window.ethereum?.isBraveWallet,h=window?.xfi||window?.ethereum?.__XDEFI,t=window?.ethereum?.isBraveWallet,o=window?.ethereum?.isTrust||window?.trustwallet,c=window?.ethereum?.overrideIsMetaMask&&window?.ethereum?.selectedProvider?.isCoinbaseWallet||window?.coinbaseWalletExtension,C=[];if(n)C.push("METAMASK");if(h)C.push("CTRL");if(t)C.push("BRAVE");if(o)C.push("TRUSTWALLET_WEB");if(c)C.push("COINBASE_WEB");if(uh())C.push("OKX_MOBILE");return C};function io({chain:n,covalentApiKey:h,ethplorerApiKey:t}){let o=n!=="ETH"&&!h?"covalentApiKey":t?void 0:"ethplorerApiKey";if(o)throw new u({errorKey:"wallet_missing_api_key",info:{missingKey:o}});return{covalentApiKey:h,ethplorerApiKey:t}}function xo(){let n=[];function h(o){if(n.map((c)=>c.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 uh=()=>{let n=navigator.userAgent,h=/iphone|ipad|ipod|ios/i.test(n),t=/android|XiaoMi|MiuiBrowser/i.test(n),o=h||t,c=/OKApp/i.test(n);return o&&c},Ro=()=>typeof window.ethereum!=="undefined";class L extends G{eq(n){return this.eqValue(n)}static fromBigInt(n,h){return new L({decimal:h,value:J({value:n,bigIntDecimal:h,decimal:h})})}}export{at as wrapWithThrow,Nh as wrapMethodWithNetworkSwitch,Fn as warnOnce,Ft as validateTNS,Bn as validateIdentifier,hn as updatedLastIndex,Oh as switchEVMWalletNetwork,eh as setRequestClientConfig,oo as prepareNetworkSwitch,uh as okxMobileEnabled,gh as listWeb3EVMWallets,Ro as isWeb3Detected,nn as isGasAsset,ao as isDetected,yh as initializeRPCUrlsWithFallback,Zt as getWalletFormatFor,st as getTHORNameCost,Kt as getSymmetricWithdraw,ah as getSymmetricPoolShare,W as getRPCUrl,_t as getMinAmountByChain,Fh as getMemoForWithdraw,xh as getMemoForUnbond,ph as getMemoForSaverWithdraw,Rh as getMemoForSaverDeposit,lt as getMemoForRunePoolWithdraw,Et as getMemoForRunePoolDeposit,Ah as getMemoForNameRegister,rt as getMemoForNamePreferredAssetRegister,Bh as getMemoForLoan,ih as getMemoForLeaveAndBond,Hh as getMemoForDeposit,et as getMemoFor,Ct as getMAYANameCost,mt as getLiquiditySlippage,Gt as getGasAsset,Vt as getEstimatedPoolShare,Co as getETHDefaultWallet,xo as getEIP6963Wallets,xt as getDynamicChainId,zt as getDerivationPathFor,Nn as getDecimal,On as getCommonAssetInfo,it as getChainIdentifier,Qt as getAsymmetricRuneWithdrawAmount,sh as getAsymmetricRuneShare,Wt as getAsymmetricAssetWithdrawAmount,Ch as getAsymmetricAssetShare,gn as getAssetType,J as formatBigIntToSafeValue,wt as findAssetBy,yt as filterAssets,io as ensureEVMApiKeys,ft as derivationPathToString,mn as defaultRequestHeaders,Xt as blockTimes,It as assetFromString,co as addEVMWalletNetwork,so as addAccountsChangedCallback,Wn as WarningCodeEnum,Rn as WalletOption,Lh as UTXOChains,Gh as TCSupportedChains,L as SwapKitNumber,u as SwapKitError,$h as SubstrateChains,v as StagenetChain,zh as SWAP_OUT,fh as SWAP_IN,b as RequestClient,Cn as RPC_URLS,zn as RPCUrl,bn as QuoteMode,Kn as ProviderName,K as NetworkDerivationPath,Hn as MemoType,Ih as MAYASupportedChains,Yn as LedgerErrorCode,Vn as FeeTypeEnum,Mn as FeeOption,Gn as FALLBACK_URLS,Zn as ExplorerUrl,Qn as ErrorCode,In as EXPLORER_URLS,Q as EVMChains,fn as DerivationPath,jh as CosmosChains,Jn as ContractAddress,kn as CommonAssetStrings,E as ChainToRPC,wh as ChainToHexChainId,Xh as ChainToExplorerUrl,xn as ChainToChainId,_h as ChainIdToChain,f as ChainId,_ as Chain,Ph as BlockTimes,G as BigIntArithmetics,F as BaseDecimal,O as AssetValue,qn as ApproveMode,Jh as AGG_SWAP};
4
+ or by passing asyncTokenLookup: true to the from() function, which will make it async and return a promise.`);let{decimal:j,identifier:B,tax:q}=G||{decimal:I||F[H],identifier:A},w=h?D(BigInt(c),h):D(c,j);return t?vn(B,h?w:c):S||L?En(B,w):new O({tax:q,decimal:j,identifier:B,value:w})}static loadStaticAssets(){return new Promise((n,h)=>{try{import("@swapkit/tokens").then((t)=>{for(let o of Object.values(t.tokenLists))for(let{identifier:c,chain:C,...a}of o.tokens)U.set(C!=="SOL"?c.toUpperCase():c,{identifier:c,decimal:"decimals"in a?a.decimals:F[C]});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=F.THOR){return O.from({asyncTokenLookup:!0,asset:n,value:h,fromBaseDecimal:t})}static fromStringWithBaseSync(n,h=0n,t=F.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(_).includes(n))return O.from({chain:n,value:h});return O.from({asset:n,value:h})}}function $t(n){let 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 vn(n,h=0){Tn(n);let o=n.includes("SOL.")?n:n.toUpperCase(),c=U.get(o),C=c?.decimal||await kn(e(n));if(!c)U.set(o,{identifier:n,decimal:C});return new O({decimal:C,value:D(h,C),identifier:n})}function En(n,h=0){let t=n.includes(".")?n.split(".")?.[0]?.toUpperCase():void 0,o=t?["MAYA","THOR"].includes(t):!1,c=n.slice(0,14).includes("~")?"~":"/",[C,a]=o?n.split(".").slice(1).join().split(c):n.split(c);if(!(C&&a))throw new g({errorKey:"helpers_invalid_asset_identifier",info:{identifier:n}});return new O({decimal:8,value:D(h,8),identifier:`${t||"THOR"}.${C}${c}${a}`})}function D(n,h){return typeof n==="bigint"?b({value:n,bigIntDecimal:h,decimal:h}):n}function e(n){let h=n.slice(0,14).includes("/"),t=n.slice(0,14).includes("~"),o=t?"~":"/",c=n.split(".")?.[0]?.toUpperCase()==="THOR",C=n.split(".")?.[0]?.toUpperCase()==="MAYA",[a,i=""]=c||C?n.split(".").slice(1).join().split(o):n.split(o);if((h||t)&&!(a&&i))throw new g({errorKey:"helpers_invalid_asset_identifier",info:{identifier:n}});let A=n.includes(".")&&!h&&!t?n:`${C?"MAYA":"THOR"}.${i}`,[p,...H]=A.split("."),S=h||t?i:H.join("."),L=S.split("-"),G=L.length===1?L[0]:L.slice(0,-1).join("-"),I=L.length===1?void 0:L[L.length-1],j=p==="SOL"?I:I?.toLowerCase();return{address:j,chain:p,isGasAsset:nn({chain:p,symbol:S}),isSynthetic:h,isTradeAsset:t,ticker:G,symbol:(h||t?`${a}${o}`:"")+(j?`${G}-${j??""}`:S)}}var ln="0x313ce567",Nn=[`${"MAYA"}.MAYA`,`${"ETH"}.THOR`,`${"ETH"}.vTHOR`,`${"KUJI"}.USK`],un=async({chain:n,to:h})=>{try{let{result:t}=await X.post(E[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:ln},"latest"]})});return Number.parseInt(BigInt(t||F[n]).toString())}catch(t){return console.error(t),F[n]}},rn=async({symbol:n})=>{try{let h=n.split("-")[1]?.toLowerCase(),{manager:t}=await X.post(`${E["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),F["XRD"]}},en=(n)=>{if(n==="ETH")return F.ETH;let h=n.split("-"),t=h.length===1?void 0:h[h.length-1]?.toLowerCase();return t?.startsWith("0x")?un({chain:"ETH",to:t}):F.ETH},nh=(n)=>{let h=n.split("-"),t=h.length===1?void 0:h[h.length-1];return t?.startsWith("0x")?un({chain:"AVAX",to:t.toLowerCase()}):F.AVAX},hh=(n)=>{if(n==="BSC")return F.BSC;return F.BSC},th=(n)=>{if(n==="XRD")return F.XRD;return rn({symbol:n})},kn=({chain:n,symbol:h})=>{switch(n){case"ETH":return en(h);case"AVAX":return nh(h);case"BSC":return hh(h);case"XRD":return th(h);default:return F[n]}},Gt=({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}`})}},nn=({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}},gn=(n)=>{switch(n){case"ARB":case"BASE":case"OP":return{identifier:`${n}.ETH`,decimal:F[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:F[n]};case"THOR":return{identifier:`${n}.RUNE`,decimal:F[n]};case"BSC":return{identifier:`${n}.BNB`,decimal:F[n]};case"MAYA":return{identifier:`${n}.CACAO`,decimal:10};case"XRD":return{identifier:`${"XRD"}.XRD`,decimal:F[n]};case`${"MAYA"}.MAYA`:return{identifier:n,decimal:4};case`${"KUJI"}.USK`:return{identifier:n,decimal:6};default:return{identifier:`${n}.${n}`,decimal:F[n]}}},On=({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}},It=(n)=>{let[h,...t]=n.split("."),o=n.includes("/"),c=t.join("."),C=c?.split("-"),a=C?.length?C.length===1?C[0]:C.slice(0,-1).join("-"):void 0;return{chain:h,symbol:c,ticker:a,synth:o}},oh=new RegExp(/(.)\1{6}|\.ORG|\.NET|\.FINANCE|\.COM|WWW|HTTP|\\\\|\/\/|[\s$%:[\]]/,"gmi"),ch=(n)=>{let[h,t]=n.split(".");if(!Q.includes(h))return!0;let o=t.split("-"),c=o.length===1?void 0:o[o.length-1];return nn({chain:h,symbol:t})||!!c},wt=(n)=>n.filter(({chain:h,value:t,symbol:o})=>{let c=`${h}.${o}`;return!oh.test(c)&&ch(c)&&t!=="0"});async function ft(n){let h=await import("@swapkit/tokens");for(let t of Object.values(h.tokenLists))for(let{identifier:o,chain:c,...C}of t.tokens){if("identifier"in n&&o===n.identifier)return o;if("address"in C&&"chain"in n&&c===n.chain&&C.address.toLowerCase()===n.contract.toLowerCase())return o}return}var Xt={ARB:1,AVAX:3,BASE:1,BSC:3,BTC:600,BCH:600,FLIP:5,GAIA:1.5,DASH:150,DOGE:600,ETH:12.5,FIAT:60,KUJI:2.2,LTC:150,MAYA:6,OP:1,DOT:6,MATIC:2.1,XRD:5,SOL:1,THOR:6};var hn=(n,h)=>{return[...n.slice(0,n.length-1),h]};function zt([n,h,t,o,c]){return`m/${n}'/${h}'/${t}'/${o}${typeof c!=="number"?"":`/${c}`}`}function Zt({chain:n,index:h,addressIndex:t=0,type:o}){if(Q.includes(n)){if(o&&["legacy","account"].includes(o))return[44,60,0,h];if(o==="ledgerLive")return[44,60,h,0,t];return hn(K[n],h)}if(n==="SOL"){if(o==="account")return[44,501,0,h];return hn(K[n],h)}let c=n==="LTC"?2:0;switch(o){case"nativeSegwitMiddleAccount":return[84,c,h,0,t];case"segwit":return[49,c,0,0,h];case"legacy":return[44,c,0,0,h];default:return hn(K[n],h)}}function Yt(n){let[h,t,o]=n.split("/").map((c)=>Number.parseInt(c,10));switch(t){case 44:return"legacy";case 49:return"p2sh";default:return"bech32"}}function sh({liquidityUnits:n,poolUnits:h,runeDepth:t}){let o=$(n),c=$(h),C=$(t),a=o.mul(C),i=c.mul(c).mul(2),A=c.mul(o).mul(2),p=o.mul(o),H=c.mul(c).mul(c);return a.mul(i.sub(A).add(p)).div(H)}function Ch({liquidityUnits:n,poolUnits:h,assetDepth:t}){let o=$(n),c=$(h),C=$(t),a=o.mul(C),i=c.mul(c).mul(2),A=c.mul(o).mul(2),p=o.mul(o),H=a.mul(i.sub(A).add(p)),S=c.mul(c).mul(c);return H.div(S)}function Wt({percent:n,runeDepth:h,liquidityUnits:t,poolUnits:o}){return sh({runeDepth:h,liquidityUnits:t,poolUnits:o}).mul(n)}function Kt({percent:n,assetDepth:h,liquidityUnits:t,poolUnits:o}){return Ch({assetDepth:h,liquidityUnits:t,poolUnits:o}).mul(n)}function $(n){return P.fromBigInt(BigInt(n),F.THOR)}function ah({liquidityUnits:n,poolUnits:h,runeDepth:t,assetDepth:o}){return{assetAmount:$(o).mul(n).div(h),runeAmount:$(t).mul(n).div(h)}}function Vt({liquidityUnits:n,poolUnits:h,runeDepth:t,assetDepth:o,percent:c}){return Object.fromEntries(Object.entries(ah({liquidityUnits:n,poolUnits:h,runeDepth:t,assetDepth:o})).map(([C,a])=>[C,a.mul(c)]))}function mt({runeDepth:n,poolUnits:h,assetDepth:t,liquidityUnits:o,runeAmount:c,assetAmount:C}){let a=new P({value:n,decimal:8}),i=new P({value:t,decimal:8}),A=new P({value:h,decimal:8}),p=new P({value:c,decimal:8}),H=new P({value:C,decimal:8}),S=p.mul(i),L=H.mul(a),G=p.mul(H),I=a.mul(i),j=A.mul(S.add(L.add(G.mul(2)))),B=S.add(L.add(I.mul(2))),q=j.div(B),w=$(o).add(q);if(q.getBaseValue("number")===0)return w.div(A).getBaseValue("number");let N=A.add(w);return w.div(N).getBaseValue("number")}function Ut({runeAmount:n,assetAmount:h,runeDepth:t,assetDepth:o}){if(n==="0"||h==="0"||t==="0"||o==="0")return 0;let c=$(t),C=$(o),a=$(h),i=$(n),A=a.mul(c).sub(C.mul(i)),p=C.mul(i).add(c.mul(C));return Math.abs(A.div(p).getBaseValue("number"))}function ih({type:n,address:h}){return`${n}:${h}`}function xh({address:n,unbondAmount:h}){return`${"UNBOND"}:${n}:${h}`}function lt(n){return M("POOL+",n)}function ph({chain:n,symbol:h,...t}){return M(`${"+"}:${n}/${h}`,t)}function Rh({chain:n,symbol:h,address:t,...o}){let c=Bh({chain:n,symbol:h}),C=t?`:${t}:`:":";return M(`${"+"}:${c}${C}`,o)}function Hh({chain:n,symbol:h,basisPoints:t}){return`${"-"}:${n}/${h}:${t}`}function Fh({chain:n,symbol:h,ticker:t,basisPoints:o,targetAsset:c}){let C=n==="ETH"&&t!=="ETH"?`${t}-${h.slice(-3)}`:h,a=c?`:${c}`:"";return`${"-"}:${n}.${C}:${o}${a}`}function rt({basisPoints:n,...h}){return M(`${"POOL-"}:${n}`,h)}function Ah({name:n,chain:h,address:t,owner:o}){let c=`${"~"}:${n}:${h}:${t}`,C=o?`:${o}`:"";return`${c}${C}`}function et({name:n,chain:h,asset:t,payout:o,owner:c}){return`${"~"}:${n}:${h}:${o}:${c}:${t}`}function Th(n,{asset:h,address:t,minAmount:o,...c}){let C=`${n}:${h}:${t}`,a=o?`:${o}`:"";return M(`${C}${a}`,c)}function M(n,{affiliateAddress:h,affiliateBasisPoints:t}={}){let o=`${n}${h?`:${h}:${t||0}`:""}`;return o.endsWith(":")?o.slice(0,-1):o}function Bh({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 no=(n,h)=>{switch(n){case"LEAVE":case"BOND":return ih({type:n,address:h?.address});case"UNBOND":return xh({address:h?.address,unbondAmount:h?.unbondAmount});case"~":return Ah(h);case"$+":case"$-":return Th(n,h);case"+":{let{chain:t,symbol:o,address:c,singleSide:C}=h;if(C)return ph({chain:t,symbol:o});return Rh({chain:t,symbol:o,address:c})}case"-":{let{chain:t,ticker:o,symbol:c,basisPoints:C,targetAssetString:a,singleSide:i}=h;if(i)return Hh({chain:t,symbol:c,basisPoints:C});return Fh({chain:t,ticker:o,symbol:c,basisPoints:C,targetAsset:a})}default:throw new g({errorKey:"helpers_invalid_memo_type",info:{memoType:n}})}};var Nh=["approve","approvedAmount","call","sendTransaction","transfer","isApproved","approvedAmount","EIP1193SendTransaction","getFeeData","broadcastTransaction","estimateCall","estimateGasLimit","estimateGasPrices","createContractTxObject"],kh=(n,h,t)=>async(...o)=>{try{await Oh(h,t)}catch(c){throw new g({errorKey:"helpers_failed_to_switch_network",info:{error:c}})}return n(...o)},Sn=({provider:n,params:h,method:t})=>{if(!n?.send)throw new g("helpers_not_found_provider");let o=h?Array.isArray(h)?h:[h]:[];return n.send(t,o)},co=({toolbox:n,chainId:h,provider:t=window.ethereum})=>{let o=Nh.reduce((c,C)=>{if(!n[C])return c;let a=n[C];if(typeof a!=="function")return c;return{...c,[C]:kh(a,t,h)}},{});return{...n,...o}},gh=(n,h)=>Sn({provider:n,method:"wallet_addEthereumChain",params:[h]}),Oh=(n,h="0x1",t)=>{try{Sn({provider:n,method:"wallet_switchEthereumChain",params:[{chainId:h}]})}catch(o){if(!t)throw new Error("Failed to switch network, networkParams not provided");gh(n,t)}},so=(n)=>{window.ethereum?.on("accountsChanged",()=>n()),window.xfi?.ethereum.on("accountsChanged",()=>n())},Co=()=>{let{isTrust:n,isBraveWallet:h,__XDEFI:t,overrideIsMetaMask:o,selectedProvider:c}=window?.ethereum||{};if(n)return"TRUSTWALLET_WEB";if(h)return"BRAVE";if(o&&c?.isCoinbaseWallet)return"COINBASE_WEB";if(t)"CTRL";return"METAMASK"},ao=(n)=>{return uh().includes(n)},uh=()=>{let n=window?.ethereum&&!window.ethereum?.isBraveWallet,h=window?.xfi||window?.ethereum?.__XDEFI,t=window?.ethereum?.isBraveWallet,o=window?.ethereum?.isTrust||window?.trustwallet,c=window?.ethereum?.overrideIsMetaMask&&window?.ethereum?.selectedProvider?.isCoinbaseWallet||window?.coinbaseWalletExtension,C=window?.bitkeep?.ethereum,a=[];if(n)a.push("METAMASK");if(h)a.push("CTRL");if(t)a.push("BRAVE");if(o)a.push("TRUSTWALLET_WEB");if(c)a.push("COINBASE_WEB");if(Sh())a.push("OKX_MOBILE");if(C)a.push("BITGET");return a};function io({chain:n,covalentApiKey:h,ethplorerApiKey:t}){let o=n!=="ETH"&&!h?"covalentApiKey":t?void 0:"ethplorerApiKey";if(o)throw new g({errorKey:"wallet_missing_api_key",info:{missingKey:o}});return{covalentApiKey:h,ethplorerApiKey:t}}function xo(){let n=[];function h(o){if(n.map((c)=>c.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 Sh=()=>{let n=navigator.userAgent,h=/iphone|ipad|ipod|ios/i.test(n),t=/android|XiaoMi|MiuiBrowser/i.test(n),o=h||t,c=/OKApp/i.test(n);return o&&c},po=()=>typeof window.ethereum!=="undefined";class P extends y{eq(n){return this.eqValue(n)}static fromBigInt(n,h){return new P({decimal:h,value:b({value:n,bigIntDecimal:h,decimal:h})})}}function To(n,h,t){let o=n.filter((C)=>h.includes(C));if(o.length===0)throw new g("wallet_chain_not_supported",{wallet:t,chain:n.join(", ")});let c=n.filter((C)=>!h.includes(C));if(c.length>0)console.warn(`${t} wallet does not support the following chains: ${c.join(", ")}. These chains will be ignored.`);return o}export{it as wrapWithThrow,kh as wrapMethodWithNetworkSwitch,Fn as warnOnce,At as validateTNS,Tn as validateIdentifier,hn as updatedLastIndex,Oh as switchEVMWalletNetwork,nt as setRequestClientConfig,co as prepareNetworkSwitch,Sh as okxMobileEnabled,uh as listWeb3EVMWallets,po as isWeb3Detected,nn as isGasAsset,ao as isDetected,wh as initializeRPCUrlsWithFallback,Yt as getWalletFormatFor,Ct as getTHORNameCost,Vt as getSymmetricWithdraw,ah as getSymmetricPoolShare,W as getRPCUrl,$t as getMinAmountByChain,Fh as getMemoForWithdraw,xh as getMemoForUnbond,Hh as getMemoForSaverWithdraw,ph as getMemoForSaverDeposit,rt as getMemoForRunePoolWithdraw,lt as getMemoForRunePoolDeposit,Ah as getMemoForNameRegister,et as getMemoForNamePreferredAssetRegister,Th as getMemoForLoan,ih as getMemoForLeaveAndBond,Rh as getMemoForDeposit,no as getMemoFor,at as getMAYANameCost,Ut as getLiquiditySlippage,Gt as getGasAsset,mt as getEstimatedPoolShare,Co as getETHDefaultWallet,xo as getEIP6963Wallets,pt as getDynamicChainId,Zt as getDerivationPathFor,kn as getDecimal,gn as getCommonAssetInfo,xt as getChainIdentifier,Wt as getAsymmetricRuneWithdrawAmount,sh as getAsymmetricRuneShare,Kt as getAsymmetricAssetWithdrawAmount,Ch as getAsymmetricAssetShare,On as getAssetType,b as formatBigIntToSafeValue,ft as findAssetBy,To as filterSupportedChains,wt as filterAssets,io as ensureEVMApiKeys,zt as derivationPathToString,mn as defaultRequestHeaders,Xt as blockTimes,It as assetFromString,gh as addEVMWalletNetwork,so as addAccountsChangedCallback,Wn as WarningCodeEnum,pn as WalletOption,jh as UTXOChains,Gh as TCSupportedChains,P as SwapKitNumber,g as SwapKitError,Ph as SubstrateChains,v as StagenetChain,Zh as SWAP_OUT,zh as SWAP_IN,X as RequestClient,Cn as RPC_URLS,zn as RPCUrl,Xn as QuoteMode,Kn as ProviderName,K as NetworkDerivationPath,Rn as MemoType,Ih as MAYASupportedChains,Yn as LedgerErrorCode,Vn as FeeTypeEnum,Mn as FeeOption,yn as FALLBACK_URLS,Zn as ExplorerUrl,Qn as ErrorCode,Gn as EXPLORER_URLS,Q as EVMChains,Jn as DerivationPath,yh as CosmosChains,bn as ContractAddress,Nn as CommonAssetStrings,E as ChainToRPC,fh as ChainToHexChainId,Xh as ChainToExplorerUrl,xn as ChainToChainId,$h as ChainIdToChain,J as ChainId,_ as Chain,Lh as BlockTimes,y as BigIntArithmetics,F as BaseDecimal,O as AssetValue,qn as ApproveMode,Jh as AGG_SWAP};
5
5
 
6
- //# debugId=7B50A0F694C71F7164756E2164756E21
6
+ //# debugId=EA7BEB74CB5ADB6F64756E2164756E21
package/dist/index.js.map CHANGED
@@ -1,9 +1,9 @@
1
1
  {
2
2
  "version": 3,
3
- "sources": ["../src/index.ts", "../src/types/chains.ts", "../src/types/commonTypes.ts", "../src/types/derivationPath.ts", "../src/types/network.ts", "../src/types/wallet.ts", "../src/types/sdk.ts", "../src/types/quotes.ts", "../src/modules/requestClient.ts", "../src/modules/swapKitError.ts", "../src/helpers/others.ts", "../src/helpers/validators.ts", "../src/modules/bigIntArithmetics.ts", "../src/modules/assetValue.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"],
3
+ "sources": ["../src/index.ts", "../src/types/chains.ts", "../src/types/commonTypes.ts", "../src/types/derivationPath.ts", "../src/types/network.ts", "../src/types/wallet.ts", "../src/types/sdk.ts", "../src/types/quotes.ts", "../src/modules/requestClient.ts", "../src/modules/swapKitError.ts", "../src/helpers/others.ts", "../src/helpers/validators.ts", "../src/modules/bigIntArithmetics.ts", "../src/modules/assetValue.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", "../src/modules/walletUtils.ts"],
4
4
  "sourcesContent": [
5
- "export * from \"@swapkit/contracts\";\nexport * from \"./types/index\";\n\n/**\n * Helpers\n */\nexport * from \"./helpers/asset\";\nexport * from \"./helpers/derivationPath\";\nexport * from \"./helpers/liquidity\";\nexport * from \"./helpers/memo\";\nexport * from \"./helpers/others\";\nexport * from \"./helpers/validators\";\nexport * from \"./helpers/web3wallets\";\n\n/**\n * Modules\n */\nexport * from \"./modules/assetValue\";\nexport * from \"./modules/bigIntArithmetics\";\nexport * from \"./modules/requestClient\";\nexport * from \"./modules/swapKitError\";\nexport * from \"./modules/swapKitNumber\";\n",
6
- "export 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 Fiat = \"FIAT\",\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 enum StagenetChain {\n THORChain = \"THOR_STAGENET\",\n Maya = \"MAYA_STAGENET\",\n}\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 Fiat = \"fiat\",\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-1\",\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.Fiat]: Chain.Fiat,\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 FIAT: 2,\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 const BlockTimes: Record<Partial<Chain>, number> = {\n [Chain.Arbitrum]: 0.3,\n [Chain.Avalanche]: 3,\n [Chain.Base]: 2,\n [Chain.BinanceSmartChain]: 3,\n [Chain.Bitcoin]: 600,\n [Chain.BitcoinCash]: 600,\n [Chain.Chainflip]: 5,\n [Chain.Cosmos]: 2,\n [Chain.Dash]: 150,\n [Chain.Dogecoin]: 600,\n [Chain.Ethereum]: 12.5,\n [Chain.Fiat]: 60,\n [Chain.Kujira]: 2.2,\n [Chain.Litecoin]: 150,\n [Chain.Maya]: 6,\n [Chain.Optimism]: 2,\n [Chain.Polkadot]: 6,\n [Chain.Polygon]: 2.1,\n [Chain.Radix]: 5,\n [Chain.Solana]: 0.4,\n [Chain.THORChain]: 6,\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\nexport const RPC_URLS: Record<Chain | StagenetChain, string> = {\n [Chain.Arbitrum]: \"https://arb1.arbitrum.io/rpc\",\n [Chain.Avalanche]: \"https://avalanche-c-chain-rpc.publicnode.com\",\n [Chain.Base]: \"https://base.llamarpc.com\",\n [Chain.BinanceSmartChain]: \"https://bsc-dataseed.binance.org\",\n [Chain.Bitcoin]: \"https://bitcoin-rpc.publicnode.com\",\n [Chain.BitcoinCash]: \"https://node-router.thorswap.net/bitcoin-cash\",\n [Chain.Chainflip]: \"wss://mainnet-archive.chainflip.io\",\n [Chain.Cosmos]: \"https://node-router.thorswap.net/cosmos/rpc\",\n [Chain.Dash]: \"https://dash-rpc.publicnode.com\",\n [Chain.Dogecoin]: \"https://node-router.thorswap.net/dogecoin\",\n [Chain.Ethereum]: \"https://ethereum-rpc.publicnode.com\",\n [Chain.Fiat]: \"\",\n [Chain.Kujira]: \"https://rpc-kujira.synergynodes.com/\",\n [Chain.Litecoin]: \"https://node-router.thorswap.net/litecoin\",\n [Chain.Maya]: \"https://tendermint.mayachain.info\",\n [Chain.Optimism]: \"https://mainnet.optimism.io\",\n [Chain.Polkadot]: \"wss://rpc.polkadot.io\",\n [Chain.Polygon]: \"https://polygon-rpc.com\",\n [Chain.Radix]: \"https://radix-mainnet.rpc.grove.city/v1/326002fc/core\",\n [Chain.THORChain]: \"https://rpc.thorswap.net\",\n [StagenetChain.THORChain]: \"https://stagenet-rpc.ninerealms.com\",\n [StagenetChain.Maya]: \"https://stagenet.tendermint.mayachain.info\",\n [Chain.Solana]: \"https://solana-rpc.publicnode.com\",\n};\n\nexport const FALLBACK_URLS: Record<Chain | StagenetChain, string[]> = {\n [Chain.Arbitrum]: [\n \"https://arb-mainnet.g.alchemy.com/v2/demo\",\n \"https://arbitrum.blockpi.network/v1/rpc/public\",\n ],\n [Chain.Avalanche]: [\n \"https://api.avax.network/ext/bc/C/rpc\",\n \"https://avalanche-c-chain-rpc.publicnode.com\",\n ],\n [Chain.Base]: [\"https://base.blockpi.network/v1/rpc/public\", \"https://1rpc.io/base\"],\n [Chain.BinanceSmartChain]: [\n \"https://bsc-rpc.gateway.pokt.network\",\n \"https://bsc-dataseed2.binance.org\",\n ],\n [Chain.Bitcoin]: [\"https://bitcoin.publicnode.com\"],\n [Chain.BitcoinCash]: [\"https://bch-dataseed.binance.org\", \"https://bch.getblock.io/mainnet\"],\n [Chain.Chainflip]: [\n \"wss://archive-1.mainnet.chainflip.io\",\n \"wss://archive-2.mainnet.chainflip.io\",\n ],\n [Chain.Cosmos]: [\"https://cosmos-rpc.quickapi.com\", \"https://cosmos-rpc.publicnode.com\"],\n [Chain.Dash]: [\"https://dash-rpc.publicnode.com\"],\n [Chain.Dogecoin]: [\"https://doge.getblock.io/mainnet\", \"https://dogecoin.publicnode.com\"],\n [Chain.Ethereum]: [\"https://eth.llamarpc.com\", \"https://rpc.ankr.com/eth\"],\n [Chain.Fiat]: [],\n [Chain.Kujira]: [\"https://kujira-rpc.polkachu.com\", \"https://kujira-rpc.ibs.team\"],\n [Chain.Litecoin]: [\"https://ltc.getblock.io/mainnet\", \"https://litecoin.publicnode.com\"],\n [Chain.Maya]: [\"https://tendermint.mayachain.info\", \"https://maya-tendermint.publicnode.com\"],\n [StagenetChain.Maya]: [],\n [Chain.Optimism]: [\"https://optimism.llamarpc.com\", \"https://1rpc.io/op\"],\n [Chain.Polkadot]: [\n \"wss://polkadot-rpc.dwellir.com\",\n \"wss://polkadot.api.onfinality.io/public-ws\",\n ],\n [Chain.Polygon]: [\"https://polygon.llamarpc.com\", \"https://rpc.ankr.com/polygon\"],\n [Chain.Radix]: [\"https://mainnet.radixdlt.com\", \"https://radix-mainnet.rpc.grove.city/v1\"],\n [Chain.THORChain]: [\"https://thornode.ninerealms.com\", \"https://thornode.thorswap.net\"],\n [StagenetChain.THORChain]: [],\n [Chain.Solana]: [\"https://api.mainnet-beta.solana.com\", \"https://rpc.ankr.com/solana\"],\n};\n\nexport const EXPLORER_URLS: Record<Chain, string> = {\n [Chain.Arbitrum]: \"https://arbiscan.io\",\n [Chain.Avalanche]: \"https://snowtrace.io\",\n [Chain.Base]: \"https://basescan.org\",\n [Chain.BinanceSmartChain]: \"https://bscscan.com\",\n [Chain.Bitcoin]: \"https://blockchair.com/bitcoin\",\n [Chain.BitcoinCash]: \"https://www.blockchair.com/bitcoin-cash\",\n [Chain.Chainflip]: \"https://explorer.polkascan.io/polkadot\",\n [Chain.Cosmos]: \"https://www.mintscan.io/cosmos\",\n [Chain.Dash]: \"https://blockchair.com/dash\",\n [Chain.Dogecoin]: \"https://blockchair.com/dogecoin\",\n [Chain.Ethereum]: \"https://etherscan.io\",\n [Chain.Fiat]: \"\",\n [Chain.Kujira]: \"https://finder.kujira.network/kaiyo-1\",\n [Chain.Litecoin]: \"https://blockchair.com/litecoin\",\n [Chain.Maya]: \"https://www.mayascan.org\",\n [Chain.Optimism]: \"https://optimistic.etherscan.io\",\n [Chain.Polkadot]: \"https://polkadot.subscan.io\",\n [Chain.Polygon]: \"https://polygonscan.com\",\n [Chain.Radix]: \"https://dashboard.radixdlt.com\",\n [Chain.THORChain]: \"https://runescan.io\",\n [Chain.Solana]: \"https://solscan.io\",\n};\n\nlet RPCUrlsMerged = RPC_URLS;\n\nexport const getRPCUrl = (chain: Chain | StagenetChain) => {\n return RPCUrlsMerged[chain];\n};\n\nconst getRpcBody = (chain: Chain | StagenetChain) => {\n switch (chain) {\n case Chain.Arbitrum:\n case Chain.Avalanche:\n case Chain.Base:\n case Chain.BinanceSmartChain:\n case Chain.Ethereum:\n case Chain.Optimism:\n case Chain.Polygon:\n return {\n jsonrpc: \"2.0\",\n method: \"eth_blockNumber\",\n params: [],\n id: 1,\n };\n case Chain.Bitcoin:\n case Chain.Dogecoin:\n case Chain.BitcoinCash:\n case Chain.Dash:\n case Chain.Litecoin:\n return {\n jsonrpc: \"1.0\",\n id: \"test\",\n method: \"getblockchaininfo\",\n params: [],\n };\n case Chain.Cosmos:\n case Chain.Kujira:\n case Chain.Maya:\n case Chain.THORChain:\n case StagenetChain.Maya:\n case StagenetChain.THORChain:\n return {\n id: 1,\n jsonrpc: \"2.0\",\n method: \"status\",\n params: {},\n };\n case Chain.Polkadot:\n return {\n jsonrpc: \"2.0\",\n id: 1,\n method: \"system_health\",\n params: [],\n };\n case Chain.Radix:\n return \"\";\n case Chain.Solana:\n return {\n jsonrpc: \"2.0\",\n id: 1,\n method: \"getHealth\",\n };\n default:\n throw new Error(`Unsupported chain: ${chain}`);\n }\n};\n\nfunction getChainStatusEndpoint(chain: Chain | StagenetChain) {\n switch (chain) {\n case Chain.Radix:\n return \"/status/network-configuration\";\n default:\n return \"\";\n }\n}\n\nconst testRPCConnection = async (chain: Chain | StagenetChain, url: string) => {\n try {\n const endpoint = url.startsWith(\"wss\") ? url.replace(\"wss\", \"https\") : url;\n const response = await fetch(`${endpoint}${getChainStatusEndpoint(chain)}`, {\n method: \"POST\",\n headers: { \"Content-Type\": \"application/json\" },\n body: JSON.stringify(getRpcBody(chain)),\n signal: AbortSignal.timeout(3000),\n });\n\n return response.ok;\n } catch {\n return false;\n }\n};\n\nconst getRPCUrlWithFallback = async (chain: Chain | StagenetChain) => {\n const primaryUrl = RPC_URLS[chain];\n\n if (await testRPCConnection(chain, primaryUrl)) {\n return primaryUrl;\n }\n\n for (const fallbackUrl of FALLBACK_URLS[chain]) {\n if (await testRPCConnection(chain, fallbackUrl)) {\n return fallbackUrl;\n }\n }\n\n return primaryUrl;\n};\n\nexport const initializeRPCUrlsWithFallback = async (\n chains: (Chain | StagenetChain)[] = [...Object.values(Chain), ...Object.values(StagenetChain)],\n) => {\n const workingUrls: Record<Chain | StagenetChain, string> = {} as Record<\n Chain | StagenetChain,\n string\n >;\n\n await Promise.all(\n chains.map(async (chain) => {\n const workingUrl = await getRPCUrlWithFallback(chain);\n workingUrls[chain] = workingUrl;\n }),\n );\n\n RPCUrlsMerged = { ...RPCUrlsMerged, ...workingUrls };\n};\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] = getRPCUrl(chain);\n return acc;\n },\n {} as { [key in Chain]: string },\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] = EXPLORER_URLS[chain];\n return acc;\n },\n {} as { [key in Chain]: string },\n);\n",
5
+ "export * from \"@swapkit/contracts\";\nexport * from \"./types/index\";\n\n/**\n * Helpers\n */\nexport * from \"./helpers/asset\";\nexport * from \"./helpers/derivationPath\";\nexport * from \"./helpers/liquidity\";\nexport * from \"./helpers/memo\";\nexport * from \"./helpers/others\";\nexport * from \"./helpers/validators\";\nexport * from \"./helpers/web3wallets\";\n\n/**\n * Modules\n */\nexport * from \"./modules/assetValue\";\nexport * from \"./modules/bigIntArithmetics\";\nexport * from \"./modules/requestClient\";\nexport * from \"./modules/swapKitError\";\nexport * from \"./modules/swapKitNumber\";\nexport * from \"./modules/walletUtils\";\n",
6
+ "export 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 Fiat = \"FIAT\",\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 enum StagenetChain {\n THORChain = \"THOR_STAGENET\",\n Maya = \"MAYA_STAGENET\",\n}\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 Fiat = \"fiat\",\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-1\",\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.Fiat]: Chain.Fiat,\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 FIAT: 2,\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 const BlockTimes: Record<Partial<Chain>, number> = {\n [Chain.Arbitrum]: 0.3,\n [Chain.Avalanche]: 3,\n [Chain.Base]: 2,\n [Chain.BinanceSmartChain]: 3,\n [Chain.Bitcoin]: 600,\n [Chain.BitcoinCash]: 600,\n [Chain.Chainflip]: 5,\n [Chain.Cosmos]: 2,\n [Chain.Dash]: 150,\n [Chain.Dogecoin]: 600,\n [Chain.Ethereum]: 12.5,\n [Chain.Fiat]: 60,\n [Chain.Kujira]: 2.2,\n [Chain.Litecoin]: 150,\n [Chain.Maya]: 6,\n [Chain.Optimism]: 2,\n [Chain.Polkadot]: 6,\n [Chain.Polygon]: 2.1,\n [Chain.Radix]: 5,\n [Chain.Solana]: 0.4,\n [Chain.THORChain]: 6,\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\nexport const RPC_URLS: Record<Chain | StagenetChain, string> = {\n [Chain.Arbitrum]: \"https://arb1.arbitrum.io/rpc\",\n [Chain.Avalanche]: \"https://avalanche-c-chain-rpc.publicnode.com\",\n [Chain.Base]: \"https://base-rpc.publicnode.com\",\n [Chain.BinanceSmartChain]: \"https://bsc-dataseed.binance.org\",\n [Chain.Bitcoin]: \"https://bitcoin-rpc.publicnode.com\",\n [Chain.BitcoinCash]: \"https://node-router.thorswap.net/bitcoin-cash\",\n [Chain.Chainflip]: \"wss://mainnet-archive.chainflip.io\",\n [Chain.Cosmos]: \"https://node-router.thorswap.net/cosmos/rpc\",\n [Chain.Dash]: \"https://dash-rpc.publicnode.com\",\n [Chain.Dogecoin]: \"https://node-router.thorswap.net/dogecoin\",\n [Chain.Ethereum]: \"https://ethereum-rpc.publicnode.com\",\n [Chain.Fiat]: \"\",\n [Chain.Kujira]: \"https://rpc-kujira.synergynodes.com/\",\n [Chain.Litecoin]: \"https://node-router.thorswap.net/litecoin\",\n [Chain.Maya]: \"https://tendermint.mayachain.info\",\n [Chain.Optimism]: \"https://mainnet.optimism.io\",\n [Chain.Polkadot]: \"wss://rpc.polkadot.io\",\n [Chain.Polygon]: \"https://polygon-rpc.com\",\n [Chain.Radix]: \"https://radix-mainnet.rpc.grove.city/v1/326002fc/core\",\n [Chain.THORChain]: \"https://rpc.thorswap.net\",\n [StagenetChain.THORChain]: \"https://stagenet-rpc.ninerealms.com\",\n [StagenetChain.Maya]: \"https://stagenet.tendermint.mayachain.info\",\n [Chain.Solana]: \"https://solana-rpc.publicnode.com\",\n};\n\nexport const FALLBACK_URLS: Record<Chain | StagenetChain, string[]> = {\n [Chain.Arbitrum]: [\n \"https://arb-mainnet.g.alchemy.com/v2/demo\",\n \"https://arbitrum.blockpi.network/v1/rpc/public\",\n ],\n [Chain.Avalanche]: [\n \"https://api.avax.network/ext/bc/C/rpc\",\n \"https://avalanche-c-chain-rpc.publicnode.com\",\n ],\n [Chain.Base]: [\"https://base.blockpi.network/v1/rpc/public\", \"https://1rpc.io/base\"],\n [Chain.BinanceSmartChain]: [\n \"https://bsc-rpc.gateway.pokt.network\",\n \"https://bsc-dataseed2.binance.org\",\n ],\n [Chain.Bitcoin]: [\"https://bitcoin.publicnode.com\"],\n [Chain.BitcoinCash]: [\"https://bch-dataseed.binance.org\", \"https://bch.getblock.io/mainnet\"],\n [Chain.Chainflip]: [\n \"wss://archive-1.mainnet.chainflip.io\",\n \"wss://archive-2.mainnet.chainflip.io\",\n ],\n [Chain.Cosmos]: [\"https://cosmos-rpc.quickapi.com\", \"https://cosmos-rpc.publicnode.com\"],\n [Chain.Dash]: [\"https://dash-rpc.publicnode.com\"],\n [Chain.Dogecoin]: [\"https://doge.getblock.io/mainnet\", \"https://dogecoin.publicnode.com\"],\n [Chain.Ethereum]: [\"https://eth.llamarpc.com\", \"https://rpc.ankr.com/eth\"],\n [Chain.Fiat]: [],\n [Chain.Kujira]: [\"https://kujira-rpc.polkachu.com\", \"https://kujira-rpc.ibs.team\"],\n [Chain.Litecoin]: [\"https://ltc.getblock.io/mainnet\", \"https://litecoin.publicnode.com\"],\n [Chain.Maya]: [\"https://tendermint.mayachain.info\", \"https://maya-tendermint.publicnode.com\"],\n [StagenetChain.Maya]: [],\n [Chain.Optimism]: [\"https://optimism.llamarpc.com\", \"https://1rpc.io/op\"],\n [Chain.Polkadot]: [\n \"wss://polkadot-rpc.dwellir.com\",\n \"wss://polkadot.api.onfinality.io/public-ws\",\n ],\n [Chain.Polygon]: [\"https://polygon.llamarpc.com\", \"https://rpc.ankr.com/polygon\"],\n [Chain.Radix]: [\"https://mainnet.radixdlt.com\", \"https://radix-mainnet.rpc.grove.city/v1\"],\n [Chain.THORChain]: [\"https://thornode.ninerealms.com\", \"https://thornode.thorswap.net\"],\n [StagenetChain.THORChain]: [],\n [Chain.Solana]: [\"https://api.mainnet-beta.solana.com\", \"https://rpc.ankr.com/solana\"],\n};\n\nexport const EXPLORER_URLS: Record<Chain, string> = {\n [Chain.Arbitrum]: \"https://arbiscan.io\",\n [Chain.Avalanche]: \"https://snowtrace.io\",\n [Chain.Base]: \"https://basescan.org\",\n [Chain.BinanceSmartChain]: \"https://bscscan.com\",\n [Chain.Bitcoin]: \"https://blockchair.com/bitcoin\",\n [Chain.BitcoinCash]: \"https://www.blockchair.com/bitcoin-cash\",\n [Chain.Chainflip]: \"https://explorer.polkascan.io/polkadot\",\n [Chain.Cosmos]: \"https://www.mintscan.io/cosmos\",\n [Chain.Dash]: \"https://blockchair.com/dash\",\n [Chain.Dogecoin]: \"https://blockchair.com/dogecoin\",\n [Chain.Ethereum]: \"https://etherscan.io\",\n [Chain.Fiat]: \"\",\n [Chain.Kujira]: \"https://finder.kujira.network/kaiyo-1\",\n [Chain.Litecoin]: \"https://blockchair.com/litecoin\",\n [Chain.Maya]: \"https://www.mayascan.org\",\n [Chain.Optimism]: \"https://optimistic.etherscan.io\",\n [Chain.Polkadot]: \"https://polkadot.subscan.io\",\n [Chain.Polygon]: \"https://polygonscan.com\",\n [Chain.Radix]: \"https://dashboard.radixdlt.com\",\n [Chain.THORChain]: \"https://runescan.io\",\n [Chain.Solana]: \"https://solscan.io\",\n};\n\nlet RPCUrlsMerged = RPC_URLS;\n\nexport const getRPCUrl = (chain: Chain | StagenetChain) => {\n return RPCUrlsMerged[chain];\n};\n\nconst getRpcBody = (chain: Chain | StagenetChain) => {\n switch (chain) {\n case Chain.Arbitrum:\n case Chain.Avalanche:\n case Chain.Base:\n case Chain.BinanceSmartChain:\n case Chain.Ethereum:\n case Chain.Optimism:\n case Chain.Polygon:\n return {\n jsonrpc: \"2.0\",\n method: \"eth_blockNumber\",\n params: [],\n id: 1,\n };\n case Chain.Bitcoin:\n case Chain.Dogecoin:\n case Chain.BitcoinCash:\n case Chain.Dash:\n case Chain.Litecoin:\n return {\n jsonrpc: \"1.0\",\n id: \"test\",\n method: \"getblockchaininfo\",\n params: [],\n };\n case Chain.Cosmos:\n case Chain.Kujira:\n case Chain.Maya:\n case Chain.THORChain:\n case StagenetChain.Maya:\n case StagenetChain.THORChain:\n return {\n id: 1,\n jsonrpc: \"2.0\",\n method: \"status\",\n params: {},\n };\n case Chain.Polkadot:\n return {\n jsonrpc: \"2.0\",\n id: 1,\n method: \"system_health\",\n params: [],\n };\n case Chain.Radix:\n return \"\";\n case Chain.Solana:\n return {\n jsonrpc: \"2.0\",\n id: 1,\n method: \"getHealth\",\n };\n default:\n throw new Error(`Unsupported chain: ${chain}`);\n }\n};\n\nfunction getChainStatusEndpoint(chain: Chain | StagenetChain) {\n switch (chain) {\n case Chain.Radix:\n return \"/status/network-configuration\";\n default:\n return \"\";\n }\n}\n\nconst testRPCConnection = async (chain: Chain | StagenetChain, url: string) => {\n try {\n const endpoint = url.startsWith(\"wss\") ? url.replace(\"wss\", \"https\") : url;\n const response = await fetch(`${endpoint}${getChainStatusEndpoint(chain)}`, {\n method: \"POST\",\n headers: { \"Content-Type\": \"application/json\" },\n body: JSON.stringify(getRpcBody(chain)),\n signal: AbortSignal.timeout(3000),\n });\n\n return response.ok;\n } catch {\n return false;\n }\n};\n\nconst getRPCUrlWithFallback = async (chain: Chain | StagenetChain) => {\n const primaryUrl = RPC_URLS[chain];\n\n if (await testRPCConnection(chain, primaryUrl)) {\n return primaryUrl;\n }\n\n for (const fallbackUrl of FALLBACK_URLS[chain]) {\n if (await testRPCConnection(chain, fallbackUrl)) {\n return fallbackUrl;\n }\n }\n\n return primaryUrl;\n};\n\nexport const initializeRPCUrlsWithFallback = async (\n chains: (Chain | StagenetChain)[] = [...Object.values(Chain), ...Object.values(StagenetChain)],\n) => {\n const workingUrls: Record<Chain | StagenetChain, string> = {} as Record<\n Chain | StagenetChain,\n string\n >;\n\n await Promise.all(\n chains.map(async (chain) => {\n const workingUrl = await getRPCUrlWithFallback(chain);\n workingUrls[chain] = workingUrl;\n }),\n );\n\n RPCUrlsMerged = { ...RPCUrlsMerged, ...workingUrls };\n};\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] = getRPCUrl(chain);\n return acc;\n },\n {} as { [key in Chain]: string },\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] = EXPLORER_URLS[chain];\n return acc;\n },\n {} as { [key in Chain]: string },\n);\n",
7
7
  "import type { RadixNetwork } from \"@swapkit/toolbox-radix\";\nimport type { Chain } from \"./chains\";\nimport type { ChainApis } from \"./sdk\";\nimport type { ChainWallet, CryptoChain } from \"./wallet\";\n\n/**\n * @optional for swapkit API access\n */\ntype SwapkitConfig = {\n swapkitConfig?: {\n isDev?: boolean;\n swapkitApiKey?: string;\n useHashedApiKey?: boolean;\n referer?: string;\n };\n swapkitApiKey?: string;\n};\n\nexport type ConnectConfig = SwapkitConfig & {\n stagenet?: boolean;\n /**\n * @required for AVAX & BSC\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 * @deprecated use chainflipBrokerConfig\n * @optional for setting the chainflip broker url\n */\n chainflipBrokerUrl?: string;\n /**\n * @optional for setting the chainflip broker url\n */\n chainflipBrokerConfig?: {\n useChainflipSDKBroker?: boolean;\n chainflipBrokerUrl: string;\n };\n /**\n * @optional for setting the radix wallet\n */\n radixDappConfig?: {\n dAppDefinitionAddress: string;\n applicationName: string;\n applicationVersion: string;\n network: RadixNetwork;\n };\n\n /**\n * @optional for setting the kado api key\n */\n kadoApiKey?: string;\n};\n\nexport type ConnectWalletParams<M = { [key in string]: any }> = {\n addChain: <T extends CryptoChain>(params: ChainWallet<T> & M) => void;\n apis: ChainApis;\n config: ConnectConfig;\n rpcUrls: { [chain in CryptoChain]?: 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",
8
8
  "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 FIAT = \"////\",\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 DOT: [0, 0, 0, 0, 0],\n FIAT: [0, 0, 0, 0, 0],\n FLIP: [0, 0, 0, 0, 0],\n XRD: [0, 0, 0, 0, 0],\n};\n",
9
9
  "/** @deprecated Use getRPCUrl or RPC_URLS instead */\nexport enum RPCUrl {\n Arbitrum = \"https://arb1.arbitrum.io/rpc\",\n Avalanche = \"https://avalanche-c-chain-rpc.publicnode.com\",\n Base = \"https://base.llamarpc.com\",\n BinanceSmartChain = \"https://bsc-dataseed.binance.org\",\n Bitcoin = \"https://bitcoin-rpc.publicnode.com\",\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://dash-rpc.publicnode.com\",\n Dogecoin = \"https://node-router.thorswap.net/dogecoin\",\n Ethereum = \"https://ethereum-rpc.publicnode.com\",\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://solana-rpc.publicnode.com\",\n}\n\n/** @deprecated Use EXPLORER_URLS instead */\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",
@@ -15,15 +15,16 @@
15
15
  "import { RequestClient } from \"../modules/requestClient\";\nimport { type ErrorKeys, SwapKitError } from \"../modules/swapKitError\";\nimport { Chain, ChainId, StagenetChain, getRPCUrl } from \"../types\";\n\n// 10 rune for register, 1 rune per year\n// MINIMUM_REGISTRATION_FEE = 11\nexport function getTHORNameCost(numberOfYears: number) {\n if (numberOfYears < 0)\n throw new SwapKitError({\n errorKey: \"helpers_invalid_number_of_years\",\n info: { numberOfYears },\n });\n return 10 + numberOfYears;\n}\n\n// 10 CACAO for register\n// 1.0512 CACAO per year\nexport function getMAYANameCost(numberOfYears: number) {\n if (numberOfYears < 0)\n throw new SwapKitError({\n errorKey: \"helpers_invalid_number_of_years\",\n info: { numberOfYears },\n });\n // round to max 10 decimals\n return Math.round((10 + numberOfYears * 1.0512) * 1e10) / 1e10;\n}\n\nexport function wrapWithThrow<T>(fn: () => T, errorKey?: ErrorKeys) {\n try {\n return fn();\n } catch (error) {\n if (errorKey) {\n throw new SwapKitError(errorKey, error);\n }\n\n return console.error(error);\n }\n}\n\nexport function getChainIdentifier<T extends Chain>(chain: T) {\n switch (chain) {\n case Chain.THORChain:\n return `${chain}.RUNE`;\n\n case Chain.Cosmos:\n return `${chain}.ATOM`;\n\n case Chain.BinanceSmartChain:\n return `${chain}`;\n\n default:\n return `${chain}.${chain}`;\n }\n}\n\nconst skipWarnings = [\"production\", \"test\"].includes(process.env.NODE_ENV || \"\");\nconst warnings = new Set();\nexport function warnOnce(condition: boolean, warning: string) {\n if (!skipWarnings && condition) {\n if (warnings.has(warning)) {\n return;\n }\n\n warnings.add(warning);\n console.warn(warning);\n }\n}\n\nexport async function getDynamicChainId(chainId: ChainId = ChainId.THORChain) {\n if (![ChainId.THORChainStagenet, ChainId.THORChain, \"thorchain-mainnet-v1\"].includes(chainId))\n return chainId;\n try {\n const response = await RequestClient.get<{ result: { node_info: { network: string } } }>(\n `${chainId !== ChainId.THORChain ? getRPCUrl(StagenetChain.THORChain) : getRPCUrl(Chain.THORChain)}/status`,\n );\n return response.result.node_info.network as ChainId;\n } catch (_error) {\n return chainId;\n }\n}\n",
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\";\nimport type { SwapKitNumber } from \"./swapKitNumber\";\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({\n decimal: this.decimal,\n value,\n // @ts-expect-error False positive\n identifier: this.toString({ includeSynthProtocol: true }),\n });\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, decimal?: number): NumberPrimitivesType[T] {\n const value = this.formatBigIntToSafeValue(\n this.bigIntValue,\n decimal || 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, decimal?: number): NumberPrimitivesType[T] {\n const divisor =\n this.decimalMultiplier / toMultiplier(decimal || 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
- "import {\n type CommonAssetString,\n CommonAssetStrings,\n getAssetType,\n getCommonAssetInfo,\n getDecimal,\n isGasAsset,\n} from \"../helpers/asset\";\nimport { warnOnce } from \"../helpers/others\";\nimport { validateIdentifier } from \"../helpers/validators\";\nimport { BaseDecimal, Chain, type ChainId, ChainToChainId } from \"../types/chains\";\nimport type { TokenNames, TokenTax } from \"../types/tokens\";\n\nimport type { NumberPrimitives } from \"./bigIntArithmetics\";\nimport { BigIntArithmetics, formatBigIntToSafeValue } from \"./bigIntArithmetics\";\nimport { SwapKitError } from \"./swapKitError\";\nimport type { SwapKitValueType } from \"./swapKitNumber\";\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 isTradeAsset = 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.isTradeAsset = assetInfo.isTradeAsset;\n this.isGasAsset = assetInfo.isGasAsset;\n this.chainId = ChainToChainId[assetInfo.chain];\n }\n\n toString({ includeSynthProtocol }: { includeSynthProtocol?: boolean } = {}) {\n return (this.isSynthetic || this.isTradeAsset) && !includeSynthProtocol\n ? this.symbol\n : `${this.chain}.${this.symbol}`;\n }\n\n toUrl() {\n return this.isSynthetic\n ? `${this.chain}.${this.symbol.replace(\"/\", \".\")}`\n : this.isTradeAsset\n ? `${this.chain}.${this.symbol.replace(\"~\", \"..\")}`\n : 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, isTradeAsset } = getAssetInfo(unsafeIdentifier);\n const token = staticTokensMap.get(\n chain === Chain.Solana\n ? (unsafeIdentifier as TokenNames)\n : (unsafeIdentifier.toUpperCase() as TokenNames),\n );\n const tokenDecimal = token?.decimal || commonAssetDecimal;\n\n warnOnce(\n !(asyncTokenLookup || tokenDecimal),\n `Couldn't find static decimal for ${unsafeIdentifier} (Using default ${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 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 || isTradeAsset\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: any }>(\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(\n chain !== \"SOL\" ? (identifier.toUpperCase() as TokenNames) : identifier,\n {\n identifier,\n decimal: \"decimals\" in rest ? rest.decimals : BaseDecimal[chain as Chain],\n },\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 isCaseSensitiveChain = identifier.includes(\"SOL.\");\n\n const modifiedIdentifier = isCaseSensitiveChain\n ? (identifier as TokenNames)\n : (identifier.toUpperCase() as TokenNames);\n\n const staticToken = staticTokensMap.get(modifiedIdentifier);\n const decimal = staticToken?.decimal || (await getDecimal(getAssetInfo(identifier)));\n if (!staticToken) {\n staticTokensMap.set(modifiedIdentifier, { 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.includes(\".\")\n ? (identifier.split(\".\")?.[0]?.toUpperCase() as Chain)\n : undefined;\n const isMayaOrThor = chain ? [Chain.Maya, Chain.THORChain].includes(chain) : false;\n\n const assetSeperator = identifier.slice(0, 14).includes(\"~\") ? \"~\" : \"/\";\n\n const [synthChain, symbol] = isMayaOrThor\n ? identifier.split(\".\").slice(1).join().split(assetSeperator)\n : identifier.split(assetSeperator);\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}${assetSeperator}${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 const isTradeAsset = identifier.slice(0, 14).includes(\"~\");\n const assetSeperator = isTradeAsset ? \"~\" : \"/\";\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(assetSeperator)\n : identifier.split(assetSeperator);\n\n if ((isSynthetic || isTradeAsset) && !(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 && !isTradeAsset\n ? identifier\n : `${isMaya ? Chain.Maya : Chain.THORChain}.${synthSymbol}`;\n\n const [chain, ...rest] = adjustedIdentifier.split(\".\") as [Chain, string];\n\n const symbol = isSynthetic || isTradeAsset ? 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 unformattedAddress =\n splitSymbol.length === 1 ? undefined : splitSymbol[splitSymbol.length - 1];\n\n const address = chain === Chain.Solana ? unformattedAddress : unformattedAddress?.toLowerCase();\n\n return {\n address,\n chain,\n isGasAsset: isGasAsset({ chain, symbol }),\n isSynthetic,\n isTradeAsset,\n ticker,\n symbol:\n (isSynthetic || isTradeAsset ? `${synthChain}${assetSeperator}` : \"\") +\n (address ? `${ticker}-${address ?? \"\"}` : symbol),\n };\n}\n",
19
- "import { AssetValue } from \"../modules/assetValue\";\nimport { RequestClient } from \"../modules/requestClient\";\nimport { BaseDecimal, Chain, ChainToRPC, type EVMChain, EVMChains } from \"../types/chains\";\nimport type { RadixCoreStateResourceDTO } from \"../types/radix\";\nimport type { TokenNames } from \"../types/tokens\";\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 = (assetString: CommonAssetString) => {\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 | Chain.Solana; 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\nexport const blockTimes = {\n [Chain.Arbitrum]: 1,\n [Chain.Avalanche]: 3,\n [Chain.Base]: 1,\n [Chain.BinanceSmartChain]: 3,\n [Chain.Bitcoin]: 600,\n [Chain.BitcoinCash]: 600,\n [Chain.Chainflip]: 5,\n [Chain.Cosmos]: 1.5,\n [Chain.Dash]: 150,\n [Chain.Dogecoin]: 600,\n [Chain.Ethereum]: 12.5,\n [Chain.Fiat]: 60,\n [Chain.Kujira]: 2.2,\n [Chain.Litecoin]: 150,\n [Chain.Maya]: 6,\n [Chain.Optimism]: 1,\n [Chain.Polkadot]: 6,\n [Chain.Polygon]: 2.1,\n [Chain.Radix]: 5,\n [Chain.Solana]: 1,\n [Chain.THORChain]: 6,\n};\n",
18
+ "import {\n type CommonAssetString,\n CommonAssetStrings,\n getAssetType,\n getCommonAssetInfo,\n getDecimal,\n isGasAsset,\n} from \"../helpers/asset\";\nimport { warnOnce } from \"../helpers/others\";\nimport { validateIdentifier } from \"../helpers/validators\";\nimport { BaseDecimal, Chain, type ChainId, ChainToChainId } from \"../types/chains\";\nimport type { TokenNames, TokenTax } from \"../types/tokens\";\n\nimport type { NumberPrimitives } from \"./bigIntArithmetics\";\nimport { BigIntArithmetics, formatBigIntToSafeValue } from \"./bigIntArithmetics\";\nimport { SwapKitError } from \"./swapKitError\";\nimport type { SwapKitValueType } from \"./swapKitNumber\";\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 isTradeAsset = 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.isTradeAsset = assetInfo.isTradeAsset;\n this.isGasAsset = assetInfo.isGasAsset;\n this.chainId = ChainToChainId[assetInfo.chain];\n }\n\n toString({ includeSynthProtocol }: { includeSynthProtocol?: boolean } = {}) {\n return (this.isSynthetic || this.isTradeAsset) && !includeSynthProtocol\n ? this.symbol\n : `${this.chain}.${this.symbol}`;\n }\n\n toUrl() {\n return this.isSynthetic\n ? `${this.chain}.${this.symbol.replace(\"/\", \".\")}`\n : this.isTradeAsset\n ? `${this.chain}.${this.symbol.replace(\"~\", \"..\")}`\n : 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, isTradeAsset } = getAssetInfo(unsafeIdentifier);\n const token = staticTokensMap.get(\n chain === Chain.Solana\n ? (unsafeIdentifier as TokenNames)\n : (unsafeIdentifier.toUpperCase() as TokenNames),\n );\n const tokenDecimal = token?.decimal || commonAssetDecimal;\n\n warnOnce(\n !(asyncTokenLookup || tokenDecimal),\n `Couldn't find static decimal for ${unsafeIdentifier} (Using default ${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 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 || isTradeAsset\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: any }>(\n (resolve, reject) => {\n try {\n import(\"@swapkit/tokens\").then((tokenPackage) => {\n for (const tokenList of Object.values(tokenPackage.tokenLists)) {\n for (const { identifier, chain, ...rest } of tokenList.tokens) {\n staticTokensMap.set(\n chain !== \"SOL\" ? (identifier.toUpperCase() as TokenNames) : identifier,\n {\n identifier,\n decimal: \"decimals\" in rest ? rest.decimals : BaseDecimal[chain as Chain],\n },\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 isCaseSensitiveChain = identifier.includes(\"SOL.\");\n\n const modifiedIdentifier = isCaseSensitiveChain\n ? (identifier as TokenNames)\n : (identifier.toUpperCase() as TokenNames);\n\n const staticToken = staticTokensMap.get(modifiedIdentifier);\n const decimal = staticToken?.decimal || (await getDecimal(getAssetInfo(identifier)));\n if (!staticToken) {\n staticTokensMap.set(modifiedIdentifier, { 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.includes(\".\")\n ? (identifier.split(\".\")?.[0]?.toUpperCase() as Chain)\n : undefined;\n const isMayaOrThor = chain ? [Chain.Maya, Chain.THORChain].includes(chain) : false;\n\n const assetSeperator = identifier.slice(0, 14).includes(\"~\") ? \"~\" : \"/\";\n\n const [synthChain, symbol] = isMayaOrThor\n ? identifier.split(\".\").slice(1).join().split(assetSeperator)\n : identifier.split(assetSeperator);\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}${assetSeperator}${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 const isTradeAsset = identifier.slice(0, 14).includes(\"~\");\n const assetSeperator = isTradeAsset ? \"~\" : \"/\";\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(assetSeperator)\n : identifier.split(assetSeperator);\n\n if ((isSynthetic || isTradeAsset) && !(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 && !isTradeAsset\n ? identifier\n : `${isMaya ? Chain.Maya : Chain.THORChain}.${synthSymbol}`;\n\n const [chain, ...rest] = adjustedIdentifier.split(\".\") as [Chain, string];\n\n const symbol = isSynthetic || isTradeAsset ? 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 unformattedAddress =\n splitSymbol.length === 1 ? undefined : splitSymbol[splitSymbol.length - 1];\n\n const address = chain === Chain.Solana ? unformattedAddress : unformattedAddress?.toLowerCase();\n\n return {\n address,\n chain,\n isGasAsset: isGasAsset({ chain, symbol }),\n isSynthetic,\n isTradeAsset,\n ticker,\n symbol:\n (isSynthetic || isTradeAsset ? `${synthChain}${assetSeperator}` : \"\") +\n (address ? `${ticker}-${address ?? \"\"}` : symbol),\n };\n}\n",
19
+ "import { AssetValue } from \"../modules/assetValue\";\nimport { RequestClient } from \"../modules/requestClient\";\nimport { BaseDecimal, Chain, ChainToRPC, type EVMChain, EVMChains } from \"../types/chains\";\nimport type { RadixCoreStateResourceDTO } from \"../types/radix\";\nimport type { TokenNames } from \"../types/tokens\";\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 = (assetString: CommonAssetString) => {\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 | Chain.Solana; contract: string }\n | { identifier: `${Chain}.${string}` },\n) {\n const tokenPackages = await import(\"@swapkit/tokens\");\n\n for (const tokenList of Object.values(tokenPackages.tokenLists)) {\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\nexport const blockTimes = {\n [Chain.Arbitrum]: 1,\n [Chain.Avalanche]: 3,\n [Chain.Base]: 1,\n [Chain.BinanceSmartChain]: 3,\n [Chain.Bitcoin]: 600,\n [Chain.BitcoinCash]: 600,\n [Chain.Chainflip]: 5,\n [Chain.Cosmos]: 1.5,\n [Chain.Dash]: 150,\n [Chain.Dogecoin]: 600,\n [Chain.Ethereum]: 12.5,\n [Chain.Fiat]: 60,\n [Chain.Kujira]: 2.2,\n [Chain.Litecoin]: 150,\n [Chain.Maya]: 6,\n [Chain.Optimism]: 1,\n [Chain.Polkadot]: 6,\n [Chain.Polygon]: 2.1,\n [Chain.Radix]: 5,\n [Chain.Solana]: 1,\n [Chain.THORChain]: 6,\n};\n",
20
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\" | \"account\";\n};\n\nexport const 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\n// TODO @towan - sort this out and make it more readable\nexport function getDerivationPathFor({ chain, index, addressIndex = 0, type }: Params) {\n if (EVMChains.includes(chain as EVMChain)) {\n if (type && [\"legacy\", \"account\"].includes(type))\n 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 if (chain === Chain.Solana) {\n if (type === \"account\") return [44, 501, 0, index] 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\";\nimport { BaseDecimal } from \"../types/chains\";\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: any) => {\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
- "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 isKeepKeyWallet?: 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: any;\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?: any;\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: any[]) => any>(\n func: T,\n provider: BrowserProvider,\n chainId: ChainId,\n) =>\n (async (...args: any[]) => {\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: any[]) => any }>({\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 ctrl 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.CTRL;\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 ctrl and hooked up via swapkit core\n const ctrlEnabled = 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 (ctrlEnabled) wallets.push(WalletOption.CTRL);\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
- "import { BigIntArithmetics, formatBigIntToSafeValue } from \"./bigIntArithmetics\";\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"
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 isKeepKeyWallet?: 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: any;\n bitkeep?: { ethereum: EthereumWindowProvider };\n xfi?: { ethereum: EthereumWindowProvider };\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?: any;\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: any[]) => any>(\n func: T,\n provider: BrowserProvider,\n chainId: ChainId,\n) =>\n (async (...args: any[]) => {\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: any[]) => any }>({\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 = (\n provider: BrowserProvider,\n chainId = ChainId.EthereumHex,\n networkParams?: NetworkParams,\n) => {\n try {\n providerRequest({ provider, method: \"wallet_switchEthereumChain\", params: [{ chainId }] });\n } catch (_error) {\n if (!networkParams) {\n throw new Error(\"Failed to switch network, networkParams not provided\");\n }\n addEVMWalletNetwork(provider, networkParams);\n }\n};\n\nexport const addAccountsChangedCallback = (callback: () => void) => {\n window.ethereum?.on(\"accountsChanged\", () => callback());\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.CTRL;\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 ctrl and hooked up via swapkit core\n const ctrlEnabled = 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 const bitgetEnabled = window?.bitkeep?.ethereum;\n\n const wallets = [];\n if (metamaskEnabled) wallets.push(WalletOption.METAMASK);\n if (ctrlEnabled) wallets.push(WalletOption.CTRL);\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 if (bitgetEnabled) wallets.push(WalletOption.BITGET);\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
+ "import { BigIntArithmetics, formatBigIntToSafeValue } from \"./bigIntArithmetics\";\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
+ "import type { Chain } from \"../types/chains\";\nimport type { WalletOption } from \"../types/wallet\";\nimport { SwapKitError } from \"./swapKitError\";\n\nexport function filterSupportedChains<T extends Chain>(\n chains: Chain[],\n supportedChains: readonly T[],\n walletOption: WalletOption,\n) {\n const supported = chains.filter((chain): chain is T => supportedChains.includes(chain as T));\n\n if (supported.length === 0) {\n throw new SwapKitError(\"wallet_chain_not_supported\", {\n wallet: walletOption,\n chain: chains.join(\", \"),\n });\n }\n\n const unsupported = chains.filter((chain) => !supportedChains.includes(chain as T));\n\n if (unsupported.length > 0) {\n console.warn(\n `${walletOption} wallet does not support the following chains: ${unsupported.join(\n \", \",\n )}. These chains will be ignored.`,\n );\n }\n\n return supported;\n}\n"
25
26
  ],
26
- "mappings": "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",
27
- "debugId": "7B50A0F694C71F7164756E2164756E21",
27
+ "mappings": "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",
28
+ "debugId": "EA7BEB74CB5ADB6F64756E2164756E21",
28
29
  "names": []
29
30
  }
package/package.json CHANGED
@@ -3,15 +3,15 @@
3
3
  "description": "SwapKit - Helpers",
4
4
  "dependencies": {
5
5
  "@swapkit/contracts": "1.0.6",
6
- "@swapkit/tokens": "1.11.0"
6
+ "@swapkit/tokens": "2.0.0"
7
7
  },
8
8
  "devDependencies": {
9
- "@swapkit/toolbox-cosmos": "1.6.4",
10
- "@swapkit/toolbox-evm": "1.7.10",
11
- "@swapkit/toolbox-radix": "1.2.26",
12
- "@swapkit/toolbox-solana": "1.3.10",
13
- "@swapkit/toolbox-substrate": "1.3.10",
14
- "@swapkit/toolbox-utxo": "1.2.10"
9
+ "@swapkit/toolbox-cosmos": "1.8.0",
10
+ "@swapkit/toolbox-evm": "1.8.0",
11
+ "@swapkit/toolbox-radix": "1.2.28",
12
+ "@swapkit/toolbox-solana": "1.4.0",
13
+ "@swapkit/toolbox-substrate": "1.3.12",
14
+ "@swapkit/toolbox-utxo": "1.2.12"
15
15
  },
16
16
  "files": [
17
17
  "src/",
@@ -35,5 +35,5 @@
35
35
  },
36
36
  "type": "module",
37
37
  "types": "./src/index.ts",
38
- "version": "2.2.0"
38
+ "version": "2.3.0"
39
39
  }
@@ -260,7 +260,7 @@ export async function findAssetBy(
260
260
  ) {
261
261
  const tokenPackages = await import("@swapkit/tokens");
262
262
 
263
- for (const tokenList of Object.values(tokenPackages)) {
263
+ for (const tokenList of Object.values(tokenPackages.tokenLists)) {
264
264
  for (const { identifier, chain: tokenChain, ...rest } of tokenList.tokens) {
265
265
  if ("identifier" in params && identifier === params.identifier) {
266
266
  return identifier as TokenNames;
@@ -28,6 +28,8 @@ declare const window: {
28
28
  trustwallet: EthereumWindowProvider;
29
29
  coinbaseWalletExtension: EthereumWindowProvider;
30
30
  braveSolana: any;
31
+ bitkeep?: { ethereum: EthereumWindowProvider };
32
+ xfi?: { ethereum: EthereumWindowProvider };
31
33
  } & Window;
32
34
 
33
35
  type NetworkParams = {
@@ -124,12 +126,23 @@ export const prepareNetworkSwitch = <T extends { [key: string]: (...args: any[])
124
126
  export const addEVMWalletNetwork = (provider: BrowserProvider, networkParams: NetworkParams) =>
125
127
  providerRequest({ provider, method: "wallet_addEthereumChain", params: [networkParams] });
126
128
 
127
- export const switchEVMWalletNetwork = (provider: BrowserProvider, chainId = ChainId.EthereumHex) =>
128
- providerRequest({ provider, method: "wallet_switchEthereumChain", params: [{ chainId }] });
129
+ export const switchEVMWalletNetwork = (
130
+ provider: BrowserProvider,
131
+ chainId = ChainId.EthereumHex,
132
+ networkParams?: NetworkParams,
133
+ ) => {
134
+ try {
135
+ providerRequest({ provider, method: "wallet_switchEthereumChain", params: [{ chainId }] });
136
+ } catch (_error) {
137
+ if (!networkParams) {
138
+ throw new Error("Failed to switch network, networkParams not provided");
139
+ }
140
+ addEVMWalletNetwork(provider, networkParams);
141
+ }
142
+ };
129
143
 
130
144
  export const addAccountsChangedCallback = (callback: () => void) => {
131
145
  window.ethereum?.on("accountsChanged", () => callback());
132
- // @ts-expect-error that should be implemented in ctrl and hooked up via swapkit core
133
146
  window.xfi?.ethereum.on("accountsChanged", () => callback());
134
147
  };
135
148
 
@@ -157,6 +170,7 @@ export const listWeb3EVMWallets = () => {
157
170
  (window?.ethereum?.overrideIsMetaMask &&
158
171
  window?.ethereum?.selectedProvider?.isCoinbaseWallet) ||
159
172
  window?.coinbaseWalletExtension;
173
+ const bitgetEnabled = window?.bitkeep?.ethereum;
160
174
 
161
175
  const wallets = [];
162
176
  if (metamaskEnabled) wallets.push(WalletOption.METAMASK);
@@ -165,6 +179,7 @@ export const listWeb3EVMWallets = () => {
165
179
  if (trustEnabled) wallets.push(WalletOption.TRUSTWALLET_WEB);
166
180
  if (coinbaseEnabled) wallets.push(WalletOption.COINBASE_WEB);
167
181
  if (okxMobileEnabled()) wallets.push(WalletOption.OKX_MOBILE);
182
+ if (bitgetEnabled) wallets.push(WalletOption.BITGET);
168
183
 
169
184
  return wallets;
170
185
  };
package/src/index.ts CHANGED
@@ -20,3 +20,4 @@ export * from "./modules/bigIntArithmetics";
20
20
  export * from "./modules/requestClient";
21
21
  export * from "./modules/swapKitError";
22
22
  export * from "./modules/swapKitNumber";
23
+ export * from "./modules/walletUtils";
@@ -170,8 +170,8 @@ or by passing asyncTokenLookup: true to the from() function, which will make it
170
170
  return new Promise<{ ok: true } | { ok: false; message: string; error: any }>(
171
171
  (resolve, reject) => {
172
172
  try {
173
- import("@swapkit/tokens").then((tokenPackages) => {
174
- for (const tokenList of Object.values(tokenPackages)) {
173
+ import("@swapkit/tokens").then((tokenPackage) => {
174
+ for (const tokenList of Object.values(tokenPackage.tokenLists)) {
175
175
  for (const { identifier, chain, ...rest } of tokenList.tokens) {
176
176
  staticTokensMap.set(
177
177
  chain !== "SOL" ? (identifier.toUpperCase() as TokenNames) : identifier,
@@ -0,0 +1,30 @@
1
+ import type { Chain } from "../types/chains";
2
+ import type { WalletOption } from "../types/wallet";
3
+ import { SwapKitError } from "./swapKitError";
4
+
5
+ export function filterSupportedChains<T extends Chain>(
6
+ chains: Chain[],
7
+ supportedChains: readonly T[],
8
+ walletOption: WalletOption,
9
+ ) {
10
+ const supported = chains.filter((chain): chain is T => supportedChains.includes(chain as T));
11
+
12
+ if (supported.length === 0) {
13
+ throw new SwapKitError("wallet_chain_not_supported", {
14
+ wallet: walletOption,
15
+ chain: chains.join(", "),
16
+ });
17
+ }
18
+
19
+ const unsupported = chains.filter((chain) => !supportedChains.includes(chain as T));
20
+
21
+ if (unsupported.length > 0) {
22
+ console.warn(
23
+ `${walletOption} wallet does not support the following chains: ${unsupported.join(
24
+ ", ",
25
+ )}. These chains will be ignored.`,
26
+ );
27
+ }
28
+
29
+ return supported;
30
+ }
@@ -207,7 +207,7 @@ export const MAYASupportedChains = [
207
207
  export const RPC_URLS: Record<Chain | StagenetChain, string> = {
208
208
  [Chain.Arbitrum]: "https://arb1.arbitrum.io/rpc",
209
209
  [Chain.Avalanche]: "https://avalanche-c-chain-rpc.publicnode.com",
210
- [Chain.Base]: "https://base.llamarpc.com",
210
+ [Chain.Base]: "https://base-rpc.publicnode.com",
211
211
  [Chain.BinanceSmartChain]: "https://bsc-dataseed.binance.org",
212
212
  [Chain.Bitcoin]: "https://bitcoin-rpc.publicnode.com",
213
213
  [Chain.BitcoinCash]: "https://node-router.thorswap.net/bitcoin-cash",
@@ -1,34 +1,20 @@
1
- import type {
2
- CaviarV1List,
3
- ChainflipList,
4
- JupiterList,
5
- MayaList,
6
- // OciswapV1List,
7
- OneInchList,
8
- OpenOceanV2List,
9
- PancakeswapList,
10
- PangolinList,
11
- SushiswapList,
12
- ThorchainList,
13
- TraderjoeV2List,
14
- UniswapV2List,
15
- UniswapV3List,
16
- } from "@swapkit/tokens";
1
+ import type { tokenLists } from "@swapkit/tokens";
17
2
 
18
3
  export type TokenTax = { buy: number; sell: number };
19
4
 
20
5
  export type TokenNames =
21
- | (typeof CaviarV1List)["tokens"][number]["identifier"]
22
- | (typeof ChainflipList)["tokens"][number]["identifier"]
23
- | (typeof JupiterList)["tokens"][number]["identifier"]
24
- | (typeof MayaList)["tokens"][number]["identifier"]
25
- // | (typeof OciswapV1List)["tokens"][number]["identifier"]
26
- | (typeof OneInchList)["tokens"][number]["identifier"]
27
- | (typeof OpenOceanV2List)["tokens"][number]["identifier"]
28
- | (typeof PancakeswapList)["tokens"][number]["identifier"]
29
- | (typeof PangolinList)["tokens"][number]["identifier"]
30
- | (typeof SushiswapList)["tokens"][number]["identifier"]
31
- | (typeof ThorchainList)["tokens"][number]["identifier"]
32
- | (typeof TraderjoeV2List)["tokens"][number]["identifier"]
33
- | (typeof UniswapV2List)["tokens"][number]["identifier"]
34
- | (typeof UniswapV3List)["tokens"][number]["identifier"];
6
+ | (typeof tokenLists)["CaviarV1List"]["tokens"][number]["identifier"]
7
+ | (typeof tokenLists)["ChainflipList"]["tokens"][number]["identifier"]
8
+ | (typeof tokenLists)["JupiterList"]["tokens"][number]["identifier"]
9
+ | (typeof tokenLists)["KadoList"]["tokens"][number]["identifier"]
10
+ | (typeof tokenLists)["MayaList"]["tokens"][number]["identifier"]
11
+ // | (typeof tokenLists)['OciswapV1List']["tokens"][number]["identifier"]
12
+ | (typeof tokenLists)["OneInchList"]["tokens"][number]["identifier"]
13
+ | (typeof tokenLists)["OpenOceanV2List"]["tokens"][number]["identifier"]
14
+ | (typeof tokenLists)["PancakeswapList"]["tokens"][number]["identifier"]
15
+ | (typeof tokenLists)["PangolinList"]["tokens"][number]["identifier"]
16
+ | (typeof tokenLists)["SushiswapList"]["tokens"][number]["identifier"]
17
+ | (typeof tokenLists)["ThorchainList"]["tokens"][number]["identifier"]
18
+ | (typeof tokenLists)["TraderjoeV2List"]["tokens"][number]["identifier"]
19
+ | (typeof tokenLists)["UniswapV2List"]["tokens"][number]["identifier"]
20
+ | (typeof tokenLists)["UniswapV3List"]["tokens"][number]["identifier"];