@swapkit/helpers 6.4.2 → 6.5.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.
@@ -90,6 +90,7 @@ export type CustomApiEndpoints = {
90
90
  getQuote: (json: QuoteRequest) => Promise<QuoteResponse>;
91
91
  getRouteWithTx: (json: {
92
92
  destinationAddress: string;
93
+ enableSweep?: boolean;
93
94
  routeId: string;
94
95
  sourceAddress: string;
95
96
  }) => Promise<SwapRouteV2Response>;
package/package.json CHANGED
@@ -3,11 +3,11 @@
3
3
  "dependencies": {
4
4
  "@noble/hashes": "2.2.0",
5
5
  "@swapkit/contracts": "5.0.0",
6
- "@swapkit/tokens": "5.0.18",
6
+ "@swapkit/tokens": "5.0.20",
7
7
  "@swapkit/types": "2.1.0"
8
8
  },
9
9
  "description": "SwapKit - Helpers",
10
- "devDependencies": { "@swapkit/toolboxes": "6.6.0" },
10
+ "devDependencies": { "@swapkit/toolboxes": "6.6.2" },
11
11
  "exports": {
12
12
  ".": { "default": "./dist/index.js", "types": "./dist/types/index.d.ts" },
13
13
  "./api": { "default": "./dist/api/index.js", "types": "./dist/types/api/index.d.ts" },
@@ -30,5 +30,5 @@
30
30
  "type-check:go": "tsgo"
31
31
  },
32
32
  "type": "module",
33
- "version": "6.4.2"
33
+ "version": "6.5.0"
34
34
  }
@@ -1,5 +0,0 @@
1
- var yn=Object.defineProperty;var bn=(e)=>e;function Sn(e,t){this[e]=bn.bind(null,t)}var nt=(e,t)=>{for(var r in t)yn(e,r,{get:t[r],enumerable:!0,configurable:!0,set:Sn.bind(t,r)})};var rt=((e)=>typeof require<"u"?require:typeof Proxy<"u"?new Proxy(e,{get:(t,r)=>(typeof require<"u"?require:t)[r]}):e)(function(e){if(typeof require<"u")return require.apply(this,arguments);throw Error('Dynamic require of "'+e+'" is not supported')});import{Chain as Ce,getChainConfig as fr}from"@swapkit/types";import{AllChains as sr,Chain as R,EVMChains as or,getChainConfig as ce}from"@swapkit/types";import{match as Be}from"ts-pattern";import{Chain as u,EVMChains as Wn,getChainConfig as j,UTXOChains as Gn}from"@swapkit/types";import{match as le}from"ts-pattern";import{AllChains as at,Chain as ot,getChainConfig as In,MAYAConfig as Cn,THORConfig as On}from"@swapkit/types";import{createStore as kn}from"zustand/vanilla";import{AllChains as An,getChainConfig as Tn}from"@swapkit/types";var Rs=Object.freeze(Object.fromEntries(An.map((e)=>[e,Object.freeze(Tn(e).networkDerivationPath)])));var oe;((l)=>{l.unknownError="unknownError";l.test_error="test_error";l.providerDetailsError="providerDetailsError";l.blockHeaderNotFound="blockHeaderNotFound";l.blockHashNotFoundAtHeight="blockHashNotFoundAtHeight";l.blockHashNotFoundAtHash="blockHashNotFoundAtHash";l.txHashMissing="txHashMissing";l.assetValueMissingInfo="assetValueMissingInfo";l.invalidAsset="invalidAsset";l.blockIsRequired="blockIsRequired";l.currentBlockHeaderNotFound="currentBlockHeaderNotFound";l.failedToRetrieveBalance="failedToRetrieveBalance";l.failedToRetrieveBlock="failedToRetrieveBlock";l.failedToRetrieveFees="failedToRetrieveFees";l.notImplementedBCH="notImplementedBCH";l.notImplementedDoge="notImplementedDoge";l.noPoolsFound="noPoolsFound";l.noVaultsFound="noVaultsFound";l.noTxFound="noTxFound";l.noInputCoinFound="noInputCoinFound";l.noBlockDataFound="noBlockDataFound";l.multipleCosmosMessages="multipleCosmosMessages";l.heightOrHashNotProvided="heightOrHashNotProvided";l.unknownDenom="unknownDenom";l.invalidBlockHeight="invalidBlockHeight";l.timestampExtrinsicNoArgumentsForBlock="timestampExtrinsicNoArgumentsForBlock";l.timestampExtrinsicNoTimestampForBlock="timestampExtrinsicNoTimestampForBlock";l.noTimestampExtrinsicForHash="noTimestampExtrinsicForHash";l.timestampExtrinsicNoArgumentsForHash="timestampExtrinsicNoArgumentsForHash";l.txMemoUndefined="txMemoUndefined";l.txMemoIncorrect="txMemoIncorrect";l.txTypeNotFound="txTypeNotFound";l.txNoMessage="txNoMessage";l.txNotFound="txNotFound";l.txReceiptNotFound="txReceiptNotFound";l.txParsingError="txParsingError";l.txLogsParsingError="txLogsParsingError";l.blockNotFound="blockNotFound";l.balanceNotFound="balanceNotFound";l.configError="configError";l.synthSwapDisallowed="synthSwapDisallowed";l.providerQuoteTimeout="providerQuoteTimeout";l.noQuoteResponse="noQuoteResponse";l.noPoolAssetsFound="noPoolAssetsFound";l.noThorchainPools="noThorchainPools";l.noMayachainPools="noMayachainPools";l.noThorchainNetworkInfo="noThorchainNetworkInfo";l.invalidAffiliateFee="invalidAffiliateFee";l.invalidBuyAssetAddress="invalidBuyAssetAddress";l.invalidSellAssetAddress="invalidSellAssetAddress";l.invalidSourceAddress="invalidSourceAddress";l.invalidDestinationAddress="invalidDestinationAddress";l.sourceAddressIsSmartContract="sourceAddressIsSmartContract";l.destinationAddressIsSmartContract="destinationAddressIsSmartContract";l.invalidChainId="invalidChainId";l.unsupportedChainId="unsupportedChainId";l.unsupportedEVMChainId="unsupportedEVMChainId";l.unsupportedMethod="unsupportedMethod";l.unsupportedProvider="unsupportedProvider";l.invalidParamsForMethod="invalidParamsForMethod";l.unsupportedAdapter="unsupportedAdapter";l.noWhitelistTokens="noWhitelistTokens";l.failedFetchGasPrice="failedFetchGasPrice";l.failedToCreateDepositChannel="failedToCreateDepositChannel";l.noProviderDetailsFound="noProviderDetailsFound";l.noTokenListsFound="noTokenListsFound";l.tokenNotFound="tokenNotFound";l.tokenPriceNotFound="tokenPriceNotFound";l.tokenPriceFailedToUpdate="tokenPriceFailedToUpdate";l.swapAmountTooSmall="swapAmountTooSmall";l.legsArrayIsEmpty="legsArrayIsEmpty";l.failedToFetchQuoteForLeg="failedToFetchQuoteForLeg";l.noBlockHeaderFound="noBlockHeaderFound";l.failedToSimulateSwap="failedToSimulateSwap";l.addressScreeningFailed="addressScreeningFailed";l.noLiquidtyProvidersFound="noLiquidtyProvidersFound";l.insufficientLiquidity="insufficientLiquidity";l.noInboundDataFound="noInbounDataFound";l.noInboundAddressesFound="noInboundAddressesFound";l.noInboundAddressFoundForChain="noInboundAddressFoundForChain";l.noLastBlocksFound="noLastBlocksFound";l.noVersionFound="noVersionFound";l.noConstantsFound="noConstantsFound";l.noMimirsFound="noMimirsFound";l.noRoutesFound="noRoutesFound";l.quoteNotFound="quoteNotFound";l.ledgerSignFailed="ledgerSignFailed";l.ledgerWrongPayload="ledgerWrongPayload";l.ledgerFetchSwapFailed="ledgerFetchSwapFailed";l.failedToFetchTx="failedToFetchTx";l.failedBuildTransactionDetails="failedBuildTransactionDetails";l.noLegsForRoute="noLegsForRoute";l.noRouterAddressFound="noRouterAddressFound";l.noAggregatorAddressFound="noAggregatorAddressFound";l.noContractInstanceFound="noContractInstanceFound";l.noContractAddressFound="noContractAddressFound";l.invalidAffiliate="invalidAffiliate";l.thornameAffiliate="thornameAffiliate";l.providerNotfound="No provider found";l.noRecordFound="No Record found";l.slippageTooLow="Slippage too low";l.tradingHalted="tradingHalted";l.noWrappedGasAsset="noWrappedGasAsset";l.aggregatorAddressNotFound="aggregatorAddressNotFound";l.routerAddressNotFound="routerAddressNotFound";l.dummyAddressNotFound="dummyAddressNotFound";l.trackerError="trackerError";l.thorchainPoolUnavailable="thorchainPoolUnavailable";l.noOhlcvDataFound="noOhlcvDataFound";l.noTradingPairs="noTradingPairs";l.noLendingAvailability="noLendingAvailability";l.lendingRepayTooSmall="lendingRepayTooSmall";l.missingState="missingState";l.ledgerSwapNotFound="ledgerSwapNotFound";l.ledgerSwapNotReadyForTracking="ledgerSwapNotReadyForTracking";l.errorEstimatingGas="errorEstimatingGas";l.apiKeyInvalid="apiKeyInvalid";l.apiKeyFailedToUpdate="apiKeyFailedToUpdate";l.apiKeyExpired="apiKeyExpired";l.unauthorized="unauthorized";l.failedToCreateMemo="failedToCreateMemo";l.radixIncorrectInstructions="radixIncorrectInstructions";l.radixTxMissedParam="radixTxMissedParam";l.radixTxMissedAccount="radixTxMissedAccount";l.radixManifestParseError="radixManifestParseError";l.radixManifestBuildError="radixManifestBuildError";l.invalidAddressForChain="invalidAddressForChain";l.riskyAddress="riskyAddress";l.noRoutesToProcess="noRoutesToProcess";l.sellAssetAmountTooSmall="sellAssetAmountTooSmall";l.missingPrivateKey="missingPrivateKey";l.noMemoPriceProtection="noMemoPriceProtection"})(oe||={});var Le;((i)=>{i.highSlippage="highSlippage";i.highPriceImpact="highPriceImpact";i.insufficientBalance="insufficientBalance"})(Le||={});var O;((x)=>{x.CHAINFLIP="CHAINFLIP";x.CHAINFLIP_STREAMING="CHAINFLIP_STREAMING";x.JUPITER="JUPITER";x.MAYACHAIN="MAYACHAIN";x.MAYACHAIN_STREAMING="MAYACHAIN_STREAMING";x.ONEINCH="ONEINCH";x.PANCAKESWAP="PANCAKESWAP";x.SUSHISWAP_V2="SUSHISWAP_V2";x.THORCHAIN="THORCHAIN";x.THORCHAIN_STREAMING="THORCHAIN_STREAMING";x.TRADERJOE_V2="TRADERJOE_V2";x.UNISWAP_V2="UNISWAP_V2";x.UNISWAP_V3="UNISWAP_V3";x.NEAR="NEAR";x.GARDEN="GARDEN";x.OKX="OKX";x.HARBOR="HARBOR";x.FLASHNET="FLASHNET";x.MAYAN="MAYAN";x.PACTSWAP="PACTSWAP";x.RELAY="RELAY"})(O||={});var _e;((g)=>{g.LIQUIDITY="liquidity";g.NETWORK="network";g.INBOUND="inbound";g.OUTBOUND="outbound";g.AFFILIATE="affiliate";g.TAX="tax";g.PRIORITY="priority";g.SERVICE="service"})(_e||={});var wn;((i)=>{i.Average="average";i.Fast="fast";i.Fastest="fastest"})(wn||={});var xn;((r)=>{r.Approve="approve";r.CheckOnly="checkOnly"})(xn||={});var Rn;((w)=>{w.NAME_REGISTER="~";w.BOND="BOND";w.DEPOSIT="+";w.LEAVE="LEAVE";w.UNBOND="UNBOND";w.WITHDRAW="-";w.RUNEPOOL_DEPOSIT="POOL+";w.RUNEPOOL_WITHDRAW="POOL-";w.CLAIM_TCY="tcy";w.STAKE_TCY="tcy+";w.UNSTAKE_TCY="tcy-"})(Rn||={});var it={core_estimated_max_spendable_chain_not_supported:10001,core_extend_error:10002,core_inbound_data_not_found:10003,core_approve_asset_address_or_from_not_found:10004,core_plugin_not_found:10005,core_plugin_swap_not_found:10006,core_approve_asset_target_invalid:10007,core_explorer_unsupported_chain:10008,core_verify_message_not_supported:10009,core_chain_halted:10010,core_wallet_connection_not_found:10101,core_wallet_evmwallet_not_installed:10103,core_wallet_walletconnect_not_installed:10104,core_wallet_keystore_not_installed:10105,core_wallet_ledger_not_installed:10106,core_wallet_trezor_not_installed:10107,core_wallet_keplr_not_installed:10108,core_wallet_okx_not_installed:10109,core_wallet_keepkey_not_installed:10110,core_wallet_talisman_not_installed:10111,core_wallet_not_keypair_wallet:10112,core_wallet_sign_message_not_supported:10113,core_wallet_connection_failed:10114,core_wallet_create_not_supported:10115,core_wallet_sign_typed_data_not_supported:10116,core_swap_invalid_params:10201,core_swap_route_not_complete:10202,core_swap_asset_not_recognized:10203,core_swap_contract_not_found:10204,core_swap_route_transaction_not_found:10205,core_swap_contract_not_supported:10206,core_swap_transaction_error:10207,core_swap_quote_mode_not_supported:10208,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:20001,wallet_missing_api_key:20002,wallet_chain_not_supported:20003,wallet_missing_params:20004,wallet_provider_not_found:20005,wallet_failed_to_add_or_switch_network:20006,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_ledger_transport_error:20106,wallet_ledger_public_key_error:20107,wallet_ledger_derivation_path_error:20108,wallet_ledger_signing_error:20109,wallet_ledger_app_not_open:20110,wallet_ledger_invalid_response:20111,wallet_ledger_method_not_supported:20112,wallet_ledger_invalid_params:20113,wallet_ledger_invalid_signature:20114,wallet_ledger_no_provider:20115,wallet_ledger_pubkey_not_found:20116,wallet_ledger_transport_not_defined:20117,wallet_ledger_webusb_not_supported:20118,wallet_ledger_chain_not_supported:20119,wallet_ledger_invalid_asset:20120,wallet_ledger_invalid_account:20121,wallet_ledger_address_not_found:20122,wallet_ledger_failed_to_get_address:20123,wallet_ledger_webhid_not_supported:20124,wallet_phantom_not_found:20201,wallet_walletconnect_project_id_not_specified:20401,wallet_walletconnect_connection_not_established:20402,wallet_walletconnect_namespace_not_supported:20403,wallet_walletconnect_chain_not_supported:20404,wallet_walletconnect_invalid_method:20405,wallet_walletconnect_method_not_supported:20406,wallet_trezor_failed_to_sign_transaction:20501,wallet_trezor_derivation_path_not_supported:20502,wallet_trezor_failed_to_get_address:20503,wallet_trezor_transport_error:20504,wallet_trezor_method_not_supported:20505,wallet_trezor_failed_to_get_public_key:20506,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_radix_invalid_manifest:20803,wallet_radix_method_not_supported:20804,wallet_radix_no_account:20805,wallet_keepkey_not_found:20901,wallet_keepkey_asset_not_defined:20902,wallet_keepkey_contract_address_not_provided:20903,wallet_keepkey_send_transaction_no_address:20904,wallet_keepkey_derivation_path_error:20905,wallet_keepkey_signing_error:20906,wallet_keepkey_transport_error:20907,wallet_keepkey_unsupported_chain:20908,wallet_keepkey_invalid_response:20909,wallet_keepkey_chain_not_supported:20910,wallet_keepkey_signer_not_found:20911,wallet_keepkey_no_accounts:20912,wallet_keepkey_method_not_supported:20913,wallet_keepkey_invalid_params:20914,wallet_keepkey_config_not_found:20915,wallet_keepkey_no_provider:20916,wallet_keepkey_account_not_found:20917,wallet_keepkey_failed_to_get_public_key:20918,wallet_bitkeep_not_found:21001,wallet_bitkeep_failed_to_switch_network:21002,wallet_bitkeep_no_accounts:21003,wallet_passkeys_sign_transaction_error:21101,wallet_passkeys_not_found:21102,wallet_passkeys_no_address:21103,wallet_passkeys_request_canceled:21104,wallet_passkeys_signature_canceled:21105,wallet_passkeys_failed_to_switch_network:21106,wallet_passkeys_chain_not_supported:21107,wallet_passkeys_instance_missing:21108,wallet_onekey_not_found:21201,wallet_onekey_sign_transaction_error:21202,wallet_okx_not_found:21301,wallet_okx_chain_not_supported:21302,wallet_okx_failed_to_switch_network:21303,wallet_okx_no_accounts:21304,wallet_keplr_not_found:21401,wallet_keplr_chain_not_supported:21402,wallet_keplr_signer_not_found:21403,wallet_keplr_no_accounts:21404,wallet_cosmostation_not_found:21501,wallet_cosmostation_chain_not_supported:21502,wallet_cosmostation_evm_provider_not_found:21503,wallet_cosmostation_keplr_provider_not_found:21504,wallet_cosmostation_no_accounts:21505,wallet_cosmostation_no_evm_accounts:21506,wallet_cosmostation_no_evm_address:21507,wallet_cosmostation_signer_not_found:21508,wallet_passkey_not_supported:21601,wallet_passkey_connection_failed:21602,wallet_coinbase_not_found:21701,wallet_coinbase_chain_not_supported:21702,wallet_coinbase_method_not_supported:21703,wallet_coinbase_no_accounts:21704,wallet_evm_extensions_failed_to_switch_network:21801,wallet_evm_extensions_no_provider:21802,wallet_evm_extensions_not_found:21803,wallet_keystore_invalid_password:21901,wallet_keystore_unsupported_version:21902,wallet_keystore_invalid_word_count:21903,wallet_near_extensions_failed_to_switch_network:22001,wallet_near_extensions_no_provider:22002,wallet_near_extensions_not_found:22003,wallet_near_method_not_supported:22004,wallet_petra_not_found:22201,wallet_vultisig_not_found:22101,wallet_vultisig_contract_address_not_provided:22102,wallet_vultisig_asset_not_defined:22103,wallet_vultisig_send_transaction_no_address:22104,wallet_xaman_not_configured:23001,wallet_xaman_not_connected:23002,wallet_xaman_auth_failed:23003,wallet_xaman_connection_failed:23004,wallet_xaman_transaction_failed:23005,wallet_xaman_monitoring_failed:23006,wallet_tronlink_request_accounts_failed:24001,wallet_tronlink_locked:24002,chainflip_channel_error:30001,chainflip_unknown_asset:30002,chainflip_broker_invalid_params:30101,chainflip_broker_recipient_error:30102,chainflip_broker_register:30103,chainflip_broker_tx_error:30104,chainflip_broker_withdraw:30105,chainflip_broker_fund_only_flip_supported:30106,chainflip_broker_fund_invalid_address:30107,thorchain_chain_halted:40001,thorchain_trading_halted:40002,thorchain_asset_is_not_tcy:40003,thorchain_swapin_router_required:40101,thorchain_swapin_vault_required:40102,thorchain_swapin_memo_required:40103,thorchain_swapin_token_required:40104,thorchain_preferred_asset_payout_required:40105,toolbox_cosmos_account_not_found:50101,toolbox_cosmos_invalid_fee:50102,toolbox_cosmos_invalid_params:50103,toolbox_cosmos_no_signer:50104,toolbox_cosmos_not_supported:50105,toolbox_cosmos_signer_not_defined:50106,toolbox_cosmos_validate_address_prefix_not_found:50107,toolbox_cosmos_verify_signature_no_pubkey:50108,toolbox_evm_error_estimating_gas_limit:50201,toolbox_evm_error_sending_transaction:50202,toolbox_evm_gas_estimation_error:50203,toolbox_evm_invalid_gas_asset_address:50204,toolbox_evm_invalid_params:50205,toolbox_evm_invalid_transaction:50206,toolbox_evm_no_abi_fragment:50207,toolbox_evm_no_contract_address:50208,toolbox_evm_no_fee_data:50209,toolbox_evm_no_from_address:50210,toolbox_evm_no_gas_price:50211,toolbox_evm_no_signer_address:50212,toolbox_evm_no_signer:50213,toolbox_evm_no_to_address:50214,toolbox_evm_not_supported:50215,toolbox_evm_provider_not_eip1193_compatible:50216,toolbox_evm_invalid_eip7702_authorization:50217,toolbox_evm_nonce_conflict:50218,toolbox_evm_tx_already_known:50219,toolbox_evm_typed_data_domain_mismatch:50220,toolbox_utxo_api_error:50301,toolbox_utxo_broadcast_failed:50302,toolbox_utxo_insufficient_balance:50303,toolbox_utxo_invalid_address:50304,toolbox_utxo_invalid_params:50305,toolbox_utxo_invalid_transaction:50306,toolbox_utxo_no_signer:50307,toolbox_utxo_not_supported:50308,toolbox_utxo_tx_not_found:50309,toolbox_utxo_rbf_not_supported:50310,toolbox_utxo_tx_not_replaceable:50311,toolbox_utxo_tx_already_confirmed:50312,toolbox_utxo_rbf_fee_too_low:50313,toolbox_utxo_rbf_insufficient_change:50314,toolbox_utxo_unsupported_script_type:50315,toolbox_solana_no_signer:50401,toolbox_solana_insufficient_balance:50402,toolbox_solana_unsupported_token_program:50403,toolbox_substrate_not_supported:50501,toolbox_substrate_transfer_error:50502,toolbox_radix_method_not_supported:50601,toolbox_ripple_get_balance_error:50701,toolbox_ripple_rpc_not_configured:50702,toolbox_ripple_signer_not_found:50703,toolbox_ripple_asset_not_supported:50704,toolbox_ripple_broadcast_error:50705,toolbox_ripple_get_trust_lines_error:50706,toolbox_ripple_invalid_trust_line_limit:50707,toolbox_tron_no_signer:50801,toolbox_tron_invalid_token_identifier:50802,toolbox_tron_token_transfer_failed:50803,toolbox_tron_transaction_creation_failed:50804,toolbox_tron_trongrid_api_error:50805,toolbox_tron_approve_failed:50806,toolbox_tron_invalid_token_contract:50807,toolbox_tron_allowance_check_failed:50808,toolbox_tron_invalid_transaction_integrity:50809,toolbox_tron_broadcast_failed:50810,toolbox_tron_insufficient_balance:50811,toolbox_hypercore_no_signer:51001,toolbox_hypercore_payload_mismatch:51002,toolbox_hypercore_insufficient_balance:51003,toolbox_hypercore_destination_sanctioned:51004,toolbox_hypercore_transfer_hash_not_found:51005,toolbox_hypercore_pre_transfer_check_failed:51006,toolbox_cardano_sign_transaction_failed:50901,toolbox_near_no_signer:90601,toolbox_near_invalid_address:90602,toolbox_near_invalid_amount:90603,toolbox_near_transfer_failed:90604,toolbox_near_access_key_error:90605,toolbox_near_no_rpc_url:90606,toolbox_near_empty_batch:90607,toolbox_near_balance_failed:90608,toolbox_near_invalid_name:90609,toolbox_near_missing_contract_address:90610,toolbox_near_no_account:90611,toolbox_near_invalid_gas_params:90612,toolbox_near_no_public_key_found:90613,toolbox_near_sign_transaction_failed:90614,toolbox_sui_address_required:90701,toolbox_sui_keypair_required:90702,toolbox_sui_balance_error:90703,toolbox_sui_transaction_creation_error:90704,toolbox_sui_signing_error:90705,toolbox_sui_broadcast_error:90706,toolbox_sui_no_signer:90707,toolbox_sui_no_sender:90708,toolbox_sui_missing_coin_type:90709,toolbox_sui_no_coins_found:90710,toolbox_sui_insufficient_balance:90711,toolbox_starknet_no_signer:90801,toolbox_starknet_invalid_address:90802,toolbox_starknet_fee_estimation_failed:90803,toolbox_starknet_account_not_deployed:90804,toolbox_starknet_transaction_failed:90805,toolbox_ton_no_signer:90901,toolbox_ton_invalid_address:90902,toolbox_ton_missing_jetton_address:90903,toolbox_ton_jetton_transfer_failed:90904,toolbox_ton_transaction_failed:90905,toolbox_aptos_address_required:91001,toolbox_aptos_keypair_required:91002,toolbox_aptos_balance_error:91003,toolbox_aptos_transaction_creation_error:91004,toolbox_aptos_signing_error:91005,toolbox_aptos_broadcast_error:91006,toolbox_aptos_no_signer:91007,toolbox_aptos_no_sender:91008,toolbox_aptos_missing_asset_type:91009,toolbox_aptos_insufficient_balance:91010,toolbox_stellar_no_signer:91101,toolbox_stellar_broadcast_error:91102,toolbox_stellar_invalid_address:91103,toolbox_stellar_account_not_found:91104,toolbox_stellar_transaction_failed:91105,toolbox_stellar_balance_error:91106,toolbox_stellar_trustline_asset_invalid:91112,toolbox_aleo_no_signer:91201,toolbox_aleo_invalid_address:91202,toolbox_aleo_balance_error:91203,toolbox_aleo_fee_estimation_failed:91204,toolbox_aleo_broadcast_error:91205,toolbox_aleo_transaction_failed:91206,toolbox_aleo_wasm_init_failed:91207,toolbox_aleo_unsupported_token:91208,toolbox_aleo_token_transfer_rejected:91209,toolbox_aleo_insufficient_fee_balance:91210,toolbox_aleo_no_unspent_records:91211,toolbox_aleo_conflicting_signers:91212,toolbox_aleo_no_rpc_urls:91213,toolbox_lightspark_missing_credentials:91301,toolbox_lightspark_invalid_invoice:91302,toolbox_lightspark_invoice_amount_mismatch:91303,toolbox_lightspark_invoice_destination_mismatch:91304,toolbox_lightspark_invoice_expired:91305,toolbox_lightspark_invoice_already_settled:91306,toolbox_lightspark_fee_limit_exceeded:91307,toolbox_lightspark_invalid_params:91308,toolbox_lightspark_api_error:91309,toolbox_lightspark_invalid_amount:91310,toolbox_lightspark_invalid_destination:91311,toolbox_lightspark_network_mismatch:91312,toolbox_lightspark_signing_key_unavailable:91313,toolbox_not_supported:59901,toolbox_fee_estimation_failed:59902,toolbox_sweep_amount_too_low:59903,toolbox_derivation_slot_unsupported:59904,plugin_near_invalid_name:41001,plugin_near_no_connection:41002,plugin_near_name_unavailable:41003,plugin_near_registration_failed:41004,plugin_near_transfer_failed:41005,plugin_garden_missing_data:42001,plugin_swapkit_swap_invalid_data:43001,plugin_swapkit_invalid_transaction:43002,plugin_swapkit_stellar_destination_wallet_not_found:43003,plugin_swapkit_unsupported_tx_type:43004,plugin_swapkit_limit_order_invalid_build:43005,plugin_swapkit_limit_order_unsupported_sign_shape:43006,plugin_swapkit_limit_order_unsupported_cancel_shape:43007,plugin_swapkit_limit_order_wallet_cannot_sign:43008,plugin_swapkit_limit_order_no_signable_provider:43009,plugin_swapkit_limit_order_submit_failed:43010,plugin_swapkit_limit_order_cancel_submit_failed:43011,api_v2_invalid_response:60001,api_v2_server_error:60002,api_v2_invalid_method_key_hash:60003,helpers_invalid_number_different_decimals:70001,helpers_invalid_number_of_years:70002,helpers_invalid_identifier:70003,helpers_invalid_asset_url:70004,helpers_invalid_asset_identifier:70005,helpers_invalid_memo_type:70006,helpers_failed_to_switch_network:70007,helpers_not_found_provider:70008,helpers_chain_not_supported:70009,helpers_invalid_params:70010,helpers_invalid_response:70011,helpers_chain_no_public_or_set_rpc_url:70012,helpers_chain_rpc_connection_failed:70013,mcp_wallet_not_configured:90001,not_implemented:99999};function Ee(e){return JSON.stringify(e,(t,r)=>typeof r==="bigint"?r.toString():r)}class b extends Error{static ErrorCode=it;errorKey;info;constructor(e,t){let r=typeof e==="string",i=r?e:e.errorKey,s=r?void 0:e.info,a=`${i}${s?`: ${Ee(s)}`:""}`;super(a);if(Object.setPrototypeOf(this,b.prototype),this.name="SwapKitError",this.errorKey=i,this.info=s,this.cause=t,t){let d=t instanceof Error?`${t.message}${t.cause?` (${t.cause})`:""}`:Ee(t);console.error(`SwapKitError [${i}]: ${d}`)}else if(s)console.error(`SwapKitError [${i}]: ${Ee(s)}`)}}function Os(e){let t=it;for(let[r,i]of Object.entries(e)){if(Object.hasOwn(t,r)){if(t[r]===i)continue;throw new b({errorKey:"helpers_invalid_params",info:{code:i,existingCode:t[r],key:r}})}let s=Object.keys(t).find((a)=>t[a]===i);if(s)throw new b({errorKey:"helpers_invalid_params",info:{code:i,existingKey:s,key:r}});t[r]=i}}var he={BITGET:"BITGET",BRAVE:"BRAVE",COINBASE_MOBILE:"COINBASE_MOBILE",COINBASE_WEB:"COINBASE_WEB",COSMOSTATION:"COSMOSTATION",EIP6963:"EIP6963",EXODUS:"EXODUS",KEEPKEY:"KEEPKEY",KEEPKEY_BEX:"KEEPKEY_BEX",KEPLR:"KEPLR",KEYSTORE:"KEYSTORE",LEDGER:"LEDGER",METAMASK:"METAMASK",OKX:"OKX",OKX_MOBILE:"OKX_MOBILE",ONEKEY:"ONEKEY",PASSKEY_WALLET:"PASSKEY_WALLET",PASSKEYS:"PASSKEYS",PETRA:"PETRA",PHANTOM:"PHANTOM",POLKADOT_JS:"POLKADOT_JS",RADIX_WALLET:"RADIX_WALLET",TALISMAN:"TALISMAN",TREZOR:"TREZOR",TRONLINK:"TRONLINK",TRUSTWALLET_WEB:"TRUSTWALLET_WEB",VULTISIG:"VULTISIG",WALLET_SELECTOR:"WALLET_SELECTOR",WALLETCONNECT:"WALLETCONNECT",XAMAN:"XAMAN"},Ne=new Set;function st(e){return Ne.add(e),()=>Ne.delete(e)}function Ls(e,t){let r=he;if(Object.hasOwn(r,e)){if(r[e]===t)return;throw new b({errorKey:"helpers_invalid_params",info:{existingValue:r[e],key:e,value:t}})}r[e]=t;for(let i of Ne)i(t)}var vn;((i)=>{i[i.NoError=36864]="NoError";i[i.LockedDevice=21781]="LockedDevice";i[i.TC_NotFound=65535]="TC_NotFound"})(vn||={});var Es={BtcMessage:"btcMessage",Direct:"direct",TypedData:"typedData"};var Pn=at.reduce((e,t)=>(e[t]=In(t).rpcUrls,e),{}),Ln={[ot.THORChain]:On.nodeUrl,[ot.Maya]:Cn.nodeUrl},lt={apiKeys:{blockchair:"",keepKey:"",passkeys:"",swapKit:"",walletConnectProjectId:"",xaman:""},blockchairApiUrl:"",chains:at,endpoints:{},envs:{apiUrl:"https://api.swapkit.dev",devApiUrl:"https://dev-api.swapkit.dev",isDev:!1},feeMultipliers:void 0,integrations:{radix:{applicationName:"Swapkit Playground",applicationVersion:"0.0.1",dAppDefinitionAddress:"account_rdx128r289p58222hcvev7frs6kue76pl7pdcnw8725aw658v0zggkh9ws",network:{dashboardBase:"https://dashboard.radixdlt.com",networkId:1,networkName:"mainnet"}}},localMode:{enabled:!1,quoteUrl:"http://localhost:3000",swapUrl:"http://localhost:3001"},requestOptions:{retry:{backoffMultiplier:2,baseDelay:300,maxDelay:5000,maxRetries:3},timeoutMs:30000},rpcUrls:Pn,thornodeUrls:Ln,v3SwapFlow:{enabled:typeof process<"u"&&process.env?.SWAPKIT_V3_SWAP_FLOW==="true"},wallets:Object.values(he),widgetId:"",widgetKey:""},E=kn((e)=>({...lt,setApiKey:(t,r)=>e((i)=>({apiKeys:{...i.apiKeys,[t]:r}})),setConfig:(t)=>e((r)=>({apiKeys:{...r.apiKeys,...t?.apiKeys},blockchairApiUrl:t?.blockchairApiUrl||r.blockchairApiUrl,chains:r.chains.concat(t?.chains||[]),endpoints:{...r.endpoints,...t?.endpoints},envs:{...r.envs,...t?.envs},feeMultipliers:t?.feeMultipliers||r.feeMultipliers,integrations:{...r.integrations,...t?.integrations},localMode:{...r.localMode,...t?.localMode},rpcUrls:{...r.rpcUrls,...t?.rpcUrls},thornodeUrls:{...r.thornodeUrls,...t?.thornodeUrls},v3SwapFlow:{...r.v3SwapFlow,...t?.v3SwapFlow},wallets:r.wallets.concat(t?.wallets||[]),widgetId:t?.widgetId||r.widgetId,widgetKey:t?.widgetKey||r.widgetKey})),setEndpoint:(t,r)=>e((i)=>({endpoints:{...i.endpoints,[t]:r}})),setEnv:(t,r)=>e((i)=>({envs:{...i.envs,[t]:r}})),setFeeMultipliers:(t)=>e(()=>({feeMultipliers:t})),setIntegrationConfig:(t,r)=>e((i)=>({integrations:{...i.integrations,[t]:r}})),setRequestOptions:(t)=>e((r)=>({requestOptions:{retry:{...r.requestOptions.retry,...t.retry},timeoutMs:t.timeoutMs||r.requestOptions.timeoutMs}})),setRpcUrl:(t,r)=>e((i)=>({rpcUrls:{...i.rpcUrls,[t]:r}})),setThornodeUrl:(t,r)=>e((i)=>({thornodeUrls:{...i.thornodeUrls,[t]:r}})),setWidgetId:(t)=>e({widgetId:t}),setWidgetKey:(t)=>e({widgetKey:t})}));st((e)=>{E.setState((t)=>t.wallets.includes(e)?t:{wallets:[...t.wallets,e]})});var A={get:(e)=>E.getState()[e],getState:E.getState,reinitialize:()=>E.setState({...lt,wallets:Object.values(he)}),set:(e)=>E.getState().setConfig(e),setApiKey:(e,t)=>E.getState().setApiKey(e,t),setEndpoint:(e,t)=>E.getState().setEndpoint(e,t),setEnv:(e,t)=>E.getState().setEnv(e,t),setFeeMultipliers:(e)=>E.getState().setFeeMultipliers(e),setIntegrationConfig:(e,t)=>E.getState().setIntegrationConfig(e,t),setRequestOptions:(e)=>E.getState().setRequestOptions(e),setRpcUrl:(e,t)=>E.getState().setRpcUrl(e,t),setThornodeUrl:(e,t)=>E.getState().setThornodeUrl(e,t),setWidgetId:(e)=>E.getState().setWidgetId(e),setWidgetKey:(e)=>E.getState().setWidgetKey(e)};var En=(e)=>new Promise((t)=>setTimeout(t,e)),Nn=(e,{baseDelay:t,backoffMultiplier:r,maxDelay:i})=>Math.min(t*r**e,i);function Dn(e,t){if(e instanceof Error&&e.name==="AbortError")return!0;if(e instanceof TypeError)return!0;if(t===429)return!0;if(t&&t>=500&&t<600)return!0;return!1}var Mn=async(e,t)=>{let r=await fetch(e,t),i;try{i=await r.json()}catch{if(!r.ok)throw new b({errorKey:"helpers_invalid_response",info:{status:r.status,statusText:r.statusText}},{status:r.status,statusText:r.statusText});return{}}if(!r.ok){let a={data:i?.data,error:i?.error,message:i?.message,status:r.status};throw new b({errorKey:i?.error||"helpers_invalid_response",info:a},a)}let s=i?.routes?.length||i?.result||i?.data&&!i?.error;if(i?.error&&!s){let a={data:i.data,error:i.error,message:i.message,status:r.status};throw new b({errorKey:i.error,info:a},a)}if(i?.providerErrors?.length||i?.error&&s)console.warn("[SwapKit] Partial errors in response:",i.providerErrors||i.error);return i};function fe(e,t={}){return async function(i,s={}){let{searchParams:a,json:d,body:p,headers:g,dynamicHeader:S,retry:f,timeoutMs:w,abortController:L,onError:T,onSuccess:N,...I}={...t,...s},C=A.get("requestOptions"),Q={...C.retry,...f},ue=!!d||i.endsWith(".json"),me=Hn(i,a),Ze=S?await S():{},x=Vn(ue,{...g,...Ze}),X=ue?JSON.stringify(d):p,Pe;for(let ge=0;ge<=Q.maxRetries;ge++){let et=L||new AbortController,tt=setTimeout(()=>et.abort(),w||C.timeoutMs);try{let G=await Mn(me,{...I,body:X,headers:x,method:e,signal:et.signal});return clearTimeout(tt),N?.(G)||G}catch(G){clearTimeout(tt),Pe=G;let fn=G?.cause?.status;if(ge>=Q.maxRetries||!Dn(G,fn))return T?T(G):Promise.reject(G);await En(Nn(ge,Q))}}return T?T(Pe):Promise.reject(Pe)}}function Vn(e,t){return{...t,...e&&{"Content-Type":"application/json"}}}function Hn(e,t){let r=new URL(e);if(t)r.search=new URLSearchParams(t).toString();return r.toString()}var _={extend:(e)=>({extend:(t)=>_.extend({...e,...t}),get:fe("GET",e),post:fe("POST",e)}),get:fe("GET"),post:fe("POST")};async function dt(e,t,r,i){let s=`${t}:${r}:${i}`,a=new TextEncoder,d=await crypto.subtle.importKey("raw",a.encode(e),{hash:"SHA-256",name:"HMAC"},!1,["sign"]),p=await crypto.subtle.sign("HMAC",d,a.encode(s));return Array.from(new Uint8Array(p)).map((g)=>g.toString(16).padStart(2,"0")).join("")}import{Chain as y,CosmosChains as gt,EVMChains as _t,getChainConfig as ht,SubstrateChains as Un,UTXOChains as ft}from"@swapkit/types";import{match as ye}from"ts-pattern";function zs(e,t){try{return e()}catch(r){if(t)throw new b(t,r);return}}var ct=new Set;function ae({condition:e,id:t,warning:r}){if(e){if(ct.has(t))return;console.warn(r),ct.add(t)}}function Bn(e){return ye(e).with(..._t,()=>({id:1,jsonrpc:"2.0",method:"eth_blockNumber",params:[]})).with(...ft,()=>({id:"test",jsonrpc:"1.0",method:"getblockchaininfo",params:[]})).with(...gt,()=>({id:1,jsonrpc:"2.0",method:"status",params:{}})).with(y.Polkadot,y.Chainflip,()=>({id:1,jsonrpc:"2.0",method:"system_health",params:[]})).with(y.Solana,()=>({id:1,jsonrpc:"2.0",method:"getHealth"})).with(y.Sui,()=>({id:1,jsonrpc:"2.0",method:"sui_getSystemState",params:[]})).with(y.Ton,()=>({id:1,jsonrpc:"2.0",method:"getMasterchainInfo",params:{}})).with(y.Aleo,y.Aptos,y.Tron,y.Radix,y.Stellar,()=>"").with(y.Hype,()=>({type:"meta"})).with(y.Near,()=>({id:"dontcare",jsonrpc:"2.0",method:"status",params:[]})).with(y.Ripple,()=>({id:1,jsonrpc:"2.0",method:"ping",params:[{}]})).with(y.Starknet,()=>({id:1,jsonrpc:"2.0",method:"starknet_chainId",params:[]})).otherwise(()=>{throw new b("helpers_chain_not_supported",{chain:e})})}function pt(e){return ye(e).with(y.Aptos,()=>"/-/healthy").with(y.Aleo,()=>"/mainnet/block/height/latest").with(y.Hype,()=>"/info").with(y.Radix,()=>"/status/network-configuration").with(y.Stellar,()=>"").with(y.Tron,()=>"/wallet/getnowblock").otherwise(()=>"")}function ut(e){if(e.ok)return"up";return e.status===429?"rateLimited":"down"}async function mt(e,t){try{let r=t.startsWith("wss")?t.replace("wss","https"):t;if(e===y.Aleo||e===y.Stellar){let s=await fetch(`${r}${pt(e)}`,{cache:"no-store",method:"GET",signal:AbortSignal.timeout(3000)});return ut(s)}let i=await fetch(`${r}${pt(e)}`,{body:JSON.stringify(Bn(e)),cache:"no-store",headers:{"Content-Type":"application/json"},method:"POST",signal:AbortSignal.timeout(3000)});return ut(i)}catch{return"down"}}var De=new Map,$n=120000;function Fn(e){let[t=""]=A.get("rpcUrls")[e];if(!t)throw ae({condition:!0,id:"helpers_chain_no_public_or_set_rpc_url",warning:`No public or set RPC URL found for chain. Please ensure you configured rpcUrls for ${e}.`}),new b("helpers_chain_no_public_or_set_rpc_url",{chain:e});let r=De.get(e);if(r&&Date.now()-r.timestamp<$n)return r.url;return De.set(e,{timestamp:Date.now(),url:t}),t}async function J(e,{allowRateLimited:t=!1}={}){let r=Fn(e),[,...i]=A.get("rpcUrls")[e],s=await mt(e,r);if(s==="up")return r;let a=s==="rateLimited"?r:void 0;for(let d of i){let p=await mt(e,d);if(p==="up")return De.set(e,{timestamp:Date.now(),url:d}),d;a??=p==="rateLimited"?d:void 0}if(t&&a)return a;throw new b("helpers_chain_rpc_connection_failed",{chain:e,fallbackUrls:i,primaryRpcUrl:r})}function no({chain:e,txHash:t}){let{explorerUrl:r}=ht(e);return ye(e).with(...gt,y.Solana,()=>`${r}/tx/${t.startsWith("0x")?t.slice(2):t}`).with(..._t,...Un,()=>`${r}/tx/${t.startsWith("0x")?t:`0x${t}`}`).with(...ft,y.Radix,y.Tron,()=>`${r}/transaction/${t.toLowerCase()}`).with(y.Near,()=>`${r}/txns/${t}`).with(y.Ripple,()=>`${r}/transactions/${t}`).with(y.Stellar,()=>`${r}/explorer/public/tx/${t}`).with(y.Sui,()=>`${r}/txblock/${t}`).with(y.Cardano,y.Hype,y.Spark,y.Ton,()=>`${r}/tx/${t}`).otherwise(()=>"")}function ro({chain:e,address:t}){let{explorerUrl:r}=ht(e);return ye(e).with(y.Solana,y.Sui,y.Radix,()=>`${r}/account/${t}`).with(y.Stellar,()=>`${r}/explorer/public/account/${t}`).otherwise(()=>`${r}/address/${t}`)}function io(e){switch(e){case y.THORChain:return`${e}.RUNE`;case y.Cosmos:return`${e}.ATOM`;case y.BinanceSmartChain:return`${e}`;default:return`${e}.${e}`}}import{keccak_256 as Kn}from"@noble/hashes/sha3.js";import{bytesToHex as qn}from"@noble/hashes/utils.js";var yt=/^(0x)?[0-9a-fA-F]{40}$/;function be(e){if(typeof e!=="string"||!yt.test(e))throw Error(`invalid address: ${e}`);let t=e.toLowerCase().replace(/^0x/,""),r=qn(Kn(new TextEncoder().encode(t))),i=[...t].map((a,d)=>Number.parseInt(r[d]??"0",16)>=8?a.toUpperCase():a).join(""),s=e.replace(/^0x/,"");if(/[A-F]/.test(s)&&/[a-f]/.test(s)&&s!==i)throw Error(`bad address checksum: ${e}`);return`0x${i}`}function bt(e){if(typeof e!=="string"||!yt.test(e))return!1;try{return be(e),!0}catch{return!1}}var ho=[`${u.Maya}.MAYA`,`${u.Maya}.CACAO`,`${u.Ethereum}.THOR`,`${u.Ethereum}.vTHOR`,`${u.Kujira}.USK`,`${u.Ethereum}.FLIP`,`${u.Radix}.XRD`],jn=[u.Arbitrum,u.Aurora,u.Base,u.Ethereum,u.Optimism,u.Robinhood];async function Yn(e){let{baseDecimal:t}=j(u.Radix);try{let r=await J(u.Radix),{manager:i}=await _.post(`${r}/state/resource`,{body:JSON.stringify({network:"mainnet",resource_address:e}),headers:{Accept:"*/*","Content-Type":"application/json"}});return i?.divisibility?.value?.divisibility}catch(r){let i=r instanceof Error?r.message:String(r);return console.warn(`Failed to fetch Radix asset decimals for ${e}: ${i}`),t}}async function zn(e){try{let t=await J(u.Radix);return(await _.post(`${t}/state/entity/details`,{body:JSON.stringify({addresses:[e],opt_ins:{explicit_metadata:["symbol"]}}),headers:{Accept:"*/*","Content-Type":"application/json"}})).items[0]?.explicit_metadata?.items.find((s)=>s.key==="symbol")?.value.typed.value||void 0}catch(t){let r=t instanceof Error?t.message:String(t);return console.warn(`Failed to fetch Radix asset symbol for ${e}: ${r}`),""}}async function Tt({chain:e,address:t,methodHex:r,id:i}){let s=await J(e);return _.post(s,{body:JSON.stringify({id:i,jsonrpc:"2.0",method:"eth_call",params:[{data:r,to:t.toLowerCase()},"latest"]}),headers:{accept:"*/*","cache-control":"no-cache","content-type":"application/json"}})}function Qn(e){if(!e||e==="0x")return"UNKNOWN";try{return wt(e.replace(/^0x/,""))?.trim()||"UNKNOWN"}catch(t){return console.warn(`Failed to decode ABI string from ${e}: ${t}`),"UNKNOWN"}}function Xn(e,t){if(!e||e==="0x")return t;try{return Number(e)}catch(r){return console.warn(`Failed to decode ABI uint8 from ${e}: ${r}`),t}}async function Jn({chain:e,address:t}){let{baseDecimal:r}=j(e),i=t.toLowerCase();if(t===""||!i.startsWith("0x"))return r;let s=await Tt({address:t,chain:e,id:2,methodHex:"0x313ce567"}).catch((d)=>(console.warn(`Could not fetch decimals for ${t} on ${e}: ${d.message}`),{result:""}));return Xn(s.result,r)}async function Zn({chain:e,address:t}){let r=t.toLowerCase();if(r===""||!r.startsWith("0x"))return;let i=await Tt({address:t,chain:e,id:1,methodHex:"0x95d89b41"}).catch((a)=>(console.warn(`Could not fetch symbol for ${t} on ${e}: ${a.message}`),{result:""}));return Qn(i.result)}async function St({rpcUrl:e,contractAddress:t,functionSelector:r}){return(await _.post(`${e}/wallet/triggerconstantcontract`,{body:JSON.stringify({contract_address:t,function_selector:r,owner_address:t,parameter:"",visible:!0}),headers:{accept:"application/json","content-type":"application/json"}}).catch(()=>{return}))?.constant_result?.[0]}function At(e){let t=e.match(/.{2}/g)?.map((r)=>Number.parseInt(r,16))??[];return new TextDecoder().decode(new Uint8Array(t))}function wt(e){return le(e).with(void 0,()=>{return}).when((t)=>t.length>=128,(t)=>{let r=Number.parseInt(t.slice(64,128),16),i=t.slice(128,128+r*2).replace(/(00)+$/,"");return i?At(i):void 0}).when((t)=>t.length===64,(t)=>{let r=t.replace(/(00)+$/,"");if(r.length>0&&r.length%2===0)return At(r);return}).otherwise(()=>{return})}function xt({chain:e,address:t}){let{baseDecimal:r}=j(e),i={decimals:r,ticker:void 0};return le(e).with(...Wn,async()=>{try{if(!bt(t.replace(/^0X/,"0x")))return i;let[s,a]=await Promise.all([Zn({address:t,chain:e}),Jn({address:t,chain:e})]);return{decimals:a,ticker:s}}catch(s){return console.warn(`Failed to fetch token info for ${t} on ${e}: ${s?.code} ${s?.message}`),i}}).with(u.Solana,async()=>{if(!t)return i;try{let s=await fetch(`https://lite-api.jup.ag/tokens/v2/search?query=${t}`);if(s.ok){let a=await s.json(),d=Array.isArray(a)?a[0]:a;if(d)return{decimals:d.decimals??r,ticker:d.symbol||void 0}}}catch(s){console.warn(`Failed to fetch Solana token info for ${t}: ${s?.code} ${s?.message}`)}return i}).with(u.Tron,async()=>{if(!t)return i;try{let s=await J(u.Tron),[a,d]=await Promise.all([St({contractAddress:t,functionSelector:"symbol()",rpcUrl:s}),St({contractAddress:t,functionSelector:"decimals()",rpcUrl:s})]),p=wt(a);return{decimals:a!==void 0&&d?Number(BigInt(`0x${d}`)):r,ticker:p}}catch(s){let a=s instanceof Error?s.message:String(s);return console.warn(`Failed to fetch Tron token info for ${t}: ${a}`),i}}).with(u.Near,async()=>{if(!t)return i;try{let s=await J(u.Near),a=await _.post(s,{body:JSON.stringify({id:"dontcare",jsonrpc:"2.0",method:"query",params:{account_id:t,args_base64:"e30=",finality:"final",method_name:"ft_metadata",request_type:"call_function"}}),headers:{accept:"application/json","content-type":"application/json"}});if(!a.result?.result)throw Error("NEAR ft_metadata returned no result");let d=JSON.parse(new TextDecoder().decode(new Uint8Array(a.result.result)));return{decimals:d?.decimals||r,ticker:d?.symbol}}catch(s){let a=s instanceof Error?s.message:String(s);return console.warn(`Failed to fetch Near token info for ${t}: ${a}`),i}}).with(u.Radix,async()=>{if(!t)return i;try{let[s,a]=await Promise.all([zn(t),Yn(t)]);return{decimals:a,ticker:s}}catch(s){let a=s instanceof Error?s.message:String(s);return console.warn(`Failed to fetch Radix token info for ${t}: ${a}`),i}}).otherwise(async()=>i)}function Me(e){let t=j(e);return t.chain===e?t.nativeCurrency:void 0}function Rt({chain:e,symbol:t}){return le(e).with(u.Gnosis,()=>t==="xDAI"||t==="XDAI").with(u.Ton,()=>t==="GRAM"||t==="TON").with(u.Radix,()=>`${e}.${t}`===Se(e).identifier).otherwise(()=>t===(Me(e)??e))}var Se=(e)=>{let{baseDecimal:t}=j(e);return le(e.toUpperCase()).with(...jn,(i)=>({decimal:t,identifier:`${i}.ETH`})).with(u.Arc,(i)=>({decimal:t,identifier:`${i}.USDC`})).with(u.THORChain,(i)=>({decimal:t,identifier:`${i}.RUNE`})).with(u.Cosmos,(i)=>({decimal:t,identifier:`${i}.ATOM`})).with(u.Maya,(i)=>({decimal:10,identifier:`${i}.CACAO`})).with(u.BinanceSmartChain,(i)=>({decimal:t,identifier:`${i}.BNB`})).with(u.Monad,(i)=>({decimal:t,identifier:`${i}.MON`})).with(u.Avalanche,(i)=>({decimal:t,identifier:`${i}.AVAX`})).with(u.Gnosis,(i)=>({decimal:t,identifier:`${i}.xDAI`})).with(u.XLayer,(i)=>({decimal:t,identifier:`${i}.OKB`})).with(u.Berachain,(i)=>({decimal:t,identifier:`${i}.BERA`})).with(u.Hyperevm,(i)=>({decimal:t,identifier:`${i}.HYPE`})).with(u.Hype,(i)=>({decimal:t,identifier:`${i}.HYPE`})).with(u.Spark,(i)=>({decimal:t,identifier:`${i}.BTC`})).with(u.Tron,(i)=>({decimal:t,identifier:`${i}.TRX`})).with(u.Ton,(i)=>({decimal:t,identifier:`${i}.GRAM`})).with(u.Solana,u.Chainflip,u.Kujira,u.Ripple,u.Polkadot,u.Near,...Gn,(i)=>({decimal:t,identifier:`${i}.${i}`})).with(u.Radix,"XRD.XRD",()=>({decimal:t,identifier:"XRD.XRD"})).with(u.Polygon,"POL.POL",()=>({decimal:t,identifier:"POL.POL"})).with("KUJI.USK",(i)=>({decimal:6,identifier:i})).with("ETH.FLIP",()=>({decimal:j(u.Ethereum).baseDecimal,identifier:"ETH.FLIP-0x826180541412D574cf1336d22c0C0a287822678A"})).with("ETH.THOR",()=>({decimal:j(u.Ethereum).baseDecimal,identifier:"ETH.THOR-0xa5f2211b9b8170f694421f2046281775e8468044"})).with("ETH.vTHOR",()=>({decimal:j(u.Ethereum).baseDecimal,identifier:"ETH.vTHOR-0x815c23eca83261b6ec689b60cc4a58b54bc24d8d"})).with("MAYA.CACAO",(i)=>({decimal:10,identifier:i})).with("MAYA.MAYA",(i)=>({decimal:4,identifier:i})).otherwise(()=>{let i=Me(e);return{decimal:t,identifier:i?`${e}.${i}`:e}})};function Ve({chain:e,symbol:t}){if(t.includes("/"))return"Synth";if(t.includes("~"))return"Trade";return le(e).with(u.Radix,()=>t===u.Radix||`${e}.${t}`===Se(e).identifier).with(u.Ton,()=>t==="GRAM"||t==="TON").with(u.Gnosis,()=>t===u.Gnosis).otherwise(()=>t===(Me(e)??e))?"Native":e}var Y=(e)=>{let[t,...r]=e.split("."),i=e.includes("/"),s=r.join("."),a=s?.split("-"),d=a?.length?a.length===1?a[0]:a.slice(0,-1).join("-"):void 0;return{chain:t,symbol:s,synth:i,ticker:d}};function de(e,t){let i=t===u.Near?e.indexOf("-"):e.lastIndexOf("-");if(i===-1)return{address:void 0,ticker:e};return{address:e.slice(i+1),ticker:e.slice(0,i)}}function fo(e){return`https://tokens.swapkit.dev/images/${e.toLowerCase()}.png`}async function yo(e){let{loadTokenLists:t}=await import("./tokens.js"),r=await t(void 0,{source:A.get("envs").isDev?"dev":"prod"}),i=Object.values(r).flatMap((a)=>a.tokens);if("identifier"in e)return i.find((a)=>a.identifier===e.identifier)?.identifier;let s=e.contract.toLowerCase();for(let a of i){let{chain:d,symbol:p}=Y(a.identifier);if(d!==e.chain)continue;let{address:g}=de(p,d);if(g?.toLowerCase()===s)return a.identifier}return}import{match as Ae}from"ts-pattern";var z=8,er=10,tr=64;function Z({value:e,bigIntDecimal:t=z,decimal:r=z}){if(r===0)return e.toString();let i=Math.min(t,r),s=i<r?vt(e,F(r-i)):e,a=s<0n,d=(a?-s:s).toString().padStart(i+1,"0"),p=d.length-i;return`${a?"-":""}${d.slice(0,p)}.${d.slice(p)}`.replace(/\.?0*$/,"")}class K{decimalMultiplier=10n**8n;bigIntValue=0n;decimal;static fromBigInt(e,t){return new K({decimal:t,value:Z({bigIntDecimal:t,decimal:t,value:e})})}static shiftDecimals({value:e,from:t,to:r}){return K.fromBigInt(e.getBaseValue("bigint")*F(r)/F(t),r)}constructor(e){this.decimal=typeof e==="object"?e.decimal:void 0;let t=Te(typeof e==="object"&&"value"in e?e.value:e),r=typeof e==="object"&&"decimalMultiplier"in e?e.decimalMultiplier:F(this.decimal??0);this.decimalMultiplier=r!==void 0&&r>t.decimalMultiplier?r:t.decimalMultiplier,this.bigIntValue=t.bigIntValue*this.decimalMultiplier/t.decimalMultiplier}toString(e={}){return this.getValue("string")}set(e){return this.#n({decimal:this.decimal,value:new K(e)})}#n(e){return new this.constructor({...e,identifier:this.toString({includeSynthProtocol:!0})})}add(...e){return this.#t("add",...e)}sub(...e){return this.#t("sub",...e)}mul(...e){return this.#t("mul",...e)}div(...e){return this.#t("div",...e)}gt(e){return this.#e("gt",e)}gte(e){return this.#e("gte",e)}lt(e){return this.#e("lt",e)}lte(e){return this.#e("lte",e)}eqValue(e){return this.#e("eqValue",e)}getValue(e,t){let r=we(this.decimalMultiplier),i=t!==void 0?t:this.decimal,s=i!==void 0?i:r;if(i!==void 0&&i<r){if(this.formatBigIntToSafeValue(this.bigIntValue,i)==="0"&&this.bigIntValue!==0n)s=r}let a=this.formatBigIntToSafeValue(this.bigIntValue,s);return Ae(e).with("number",()=>Number(a)).with("string",()=>a).with("bigint",()=>this.bigIntValue*F(this.decimal??z)/this.decimalMultiplier).otherwise(()=>a)}getBaseValue(e,t){let r=F(t??this.decimal??z),i=vt(this.bigIntValue*r,this.decimalMultiplier);return Ae(e).with("number",()=>Number(i)).with("string",()=>i.toString()).otherwise(()=>i)}getBigIntValue(e,t){if(t===void 0&&typeof e==="object")return e.bigIntValue;let r=Te(e),i=t===void 0?this.decimalMultiplier:F(t);return r.bigIntValue*i/r.decimalMultiplier}toSignificant(e=6){let t=this.getValue("string"),r=t.startsWith("-"),i=r?t.slice(1):t,[s="",a=""]=i.split("."),d=Number.parseInt(s,10)>0;if((d?s.length+a.length:a.length)<=e)return B(r,i);if(s.length>=e)return B(r,s.slice(0,e).padEnd(s.length,"0"));if(d)return B(r,`${s}.${a.slice(0,e-s.length)}`);let g=a.replace(/^0+/,"")||"0",S=g.slice(0,e),f=a.length-g.length;return B(r,`0.${S.padStart(f+S.length,"0")}`)}toFixed(e=6){let t=this.getValue("string"),r=t.startsWith("-"),[i="0",s=""]=(r?t.slice(1):t).split(".");if(e===0){if(i==="0"&&!s)return"0";let f=s&&Number.parseInt(s[0]||"0",10)>=5?`${BigInt(i)+1n}.0`:`${i}.0`;return B(r,f)}if(!s)return B(r,`${i}.${"0".repeat(e)}`);let a=s[e];if(!(a&&Number.parseInt(a,10)>=5))return B(r,`${i}.${s.slice(0,e).padEnd(e,"0")}`);let p=BigInt(s.slice(0,e).padEnd(e,"0"))+1n,g=10n**BigInt(e);if(p>=g)return B(r,`${BigInt(i)+1n}.${"0".repeat(e)}`);return B(r,`${i}.${p.toString().padStart(e,"0")}`)}toAbbreviation(e=2){let t=this.getValue("string"),r=Number(t),i=["","K","M","B","T","Q","Qi","S"],s=Math.floor(Math.log10(Math.abs(r))/3);if(s===0||!i[s])return t;return`${(r/10**(s*3)).toFixed(e)}${i[s]}`}toCurrency(e="$",{currencyPosition:t="start",decimal:r=2,decimalSeparator:i=".",thousandSeparator:s=",",trimTrailingZeros:a=!0}={}){let d=this.toFixed(r),p=t==="end",[g="0",S=""]=d.split("."),f=g.replace(/\B(?=(\d{3})+(?!\d))/g,s),w=S&&Number.parseInt(S,10)>0,L=w?`${f}${i}${S}`:f,N=L.length<100&&a&&w?L.replace(/\.?0*$/,""):L;return p?`${N}${e}`:`${e}${N}`}formatBigIntToSafeValue(e,t){return Z({bigIntDecimal:t||this.decimal||z,decimal:we(this.decimalMultiplier),value:e})}#t(e,...t){let r=t.map(Te),i=Math.max(z,we(this.decimalMultiplier),...r.map(({decimalMultiplier:S})=>we(S))),s=Math.min(i+er,tr),a=F(s),d=r.reduce((S,f)=>{let w=S.decimalMultiplier*f.decimalMultiplier,L=Ae(e).with("add",()=>S.bigIntValue*f.decimalMultiplier+f.bigIntValue*S.decimalMultiplier).with("sub",()=>S.bigIntValue*f.decimalMultiplier-f.bigIntValue*S.decimalMultiplier).with("mul",()=>S.bigIntValue*f.bigIntValue).with("div",()=>{if(f.bigIntValue===0n)throw RangeError("Division by zero");return S.bigIntValue*f.decimalMultiplier}).exhaustive(),T=e==="div"?S.decimalMultiplier*f.bigIntValue:w;return{bigIntValue:L*a/T,decimalMultiplier:a}},this),p=this.decimal===void 0?void 0:Math.min(this.decimal,s),g=d.decimalMultiplier===a?d:{bigIntValue:d.bigIntValue*a/d.decimalMultiplier,decimalMultiplier:a};return this.#n({decimal:p,value:g})}#e(e,t){let r=Te(t),i=this.bigIntValue*r.decimalMultiplier,s=r.bigIntValue*this.decimalMultiplier;return Ae(e).with("gt",()=>i>s).with("gte",()=>i>=s).with("lt",()=>i<s).with("lte",()=>i<=s).with("eqValue",()=>i===s).exhaustive()}}var nr=Intl.NumberFormat("fullwide",{maximumFractionDigits:20,useGrouping:!1});function rr(e){let r=`${typeof e==="number"?nr.format(e):e}`.replaceAll(",",".").split(".");return r.length>1?`${r.slice(0,-1).join("")}.${r.at(-1)}`:r[0]||"0"}function ir(e){let t=e.split(".")[1]?.length||0;return Math.max(t,z)}function Te(e){if(typeof e==="object")return e;let t=e==="undefined"?"0":rr(e),r=ir(t),[i="",s=""]=t.split(".");return{bigIntValue:BigInt(`${i}${s.padEnd(r,"0")}`),decimalMultiplier:F(r)}}function B(e,t){return e&&!/^0(?:\.0*)?$/.test(t)?`-${t}`:t}function vt(e,t){if(t===0n)throw Error("Cannot divide by zero");let r=t/2n;return e>=0n&&t>=0n||e<0n&&t<0n?(e+r)/t:(e-r)/t}function F(e){return 10n**BigInt(e)}function we(e){return e.toString().length-1}function ar(e=""){let t=e.toUpperCase(),r=A.get("chains"),[i]=t.split(".");if(r.includes(i))return!0;let[s]=t.split("/");if(r.includes(s))return!0;throw new b({errorKey:"helpers_invalid_identifier",info:{identifier:e,message:`Invalid identifier: ${e}. Expected format: <Chain>.<Ticker> or <Chain>.<Ticker>-<ContractAddress>`}})}var ne=[R.Hype,R.Near,R.Ripple,R.Solana,R.Stellar,R.Sui,R.Ton,R.Tron],$e=[R.THORChain,R.Maya];function xe(e,t){return ne.includes(e)?t:t.toUpperCase()}var ee=new Map,Re=new Map,te=new Map,lr=3600000;function dr(e){let t=te.get(e);if(t?.timestamp&&Date.now()-t.timestamp>lr){te.delete(e);return}return t}function cr(e,t){if(te.size>1000){let r=te.keys().next().value;if(r)te.delete(r)}te.set(e,{...t,timestamp:Date.now()})}class D extends K{address;chain;isGasAsset=!1;isSynthetic=!1;isTradeAsset=!1;symbol;tax;ticker;type;chainId;constructor({value:e,decimal:t,tax:r,chain:i,symbol:s,identifier:a}){super({decimal:t,value:e});let d=It(a||`${i}.${s}`);this.type=Ve(d),this.tax=r,this.chain=d.chain,this.ticker=d.ticker,this.symbol=d.symbol,this.address=d.address,this.isSynthetic=d.isSynthetic,this.isTradeAsset=d.isTradeAsset,this.isGasAsset=d.isGasAsset,this.chainId=ce(d.chain).chainId}toString({includeSynthProtocol:e}={}){return(this.isSynthetic||this.isTradeAsset)&&!e?this.symbol:`${this.chain}.${this.symbol}`}toUrl(){if(this.isSynthetic)return`${this.chain}.${this.symbol.replace(/\//g,".")}`;if(this.isTradeAsset)return`${this.chain}.${this.symbol.replace(/~/g,"..")}`;let e=this.symbol.replace(/\./g,"__");return`${this.chain}.${e}`}getIconUrl(){return ee.get(xe(this.chain,this.toString()))?.logoURI}eqAsset({chain:e,symbol:t}){return this.chain===e&&this.symbol===t}eq(e){return this.eqAsset(e)&&this.eqValue(e)}static fromUrl(e,t=0){let r=e.indexOf(".");if(r===-1)throw new b({errorKey:"helpers_invalid_asset_url",info:{urlAsset:e}});let i=e.slice(0,r),s=e.slice(r+1),a=Be({chain:i,rest:s}).when(({rest:d})=>d.includes(".."),({chain:d,rest:p})=>`${d}.${p.replace(/\.\./g,"~")}`).when(({chain:d,rest:p})=>$e.includes(d)&&p.includes("."),({chain:d,rest:p})=>`${d}.${p.replace(/\./g,"/")}`).otherwise(({chain:d,rest:p})=>`${d}.${p.replace(/__/g,".")}`);return D.from({asset:a,value:t})}static from({value:e=0,fromBaseDecimal:t,asyncTokenLookup:r,...i}){let s="address"in i&&"chain"in i,a=gr(i);if(a===null&&r&&s){let{chain:x,address:X}=i;return ur({address:X,chain:x,fromBaseDecimal:t,parsedValue:e})}let d=s&&!a?`${i.chain}.UNKNOWN-${i.address}`:a,{identifier:p,decimal:g}=Se(d),{chain:S,isSynthetic:f,isTradeAsset:w,address:L}=It(p),{baseDecimal:T}=ce(S),N=ee.get(xe(S,p));if(!N&&r&&!f&&!w)return(async()=>{let{ticker:x}=Y(p),X=await Ct({address:L,chain:S,ticker:x});return He({decimal:X.decimals,identifier:X.identifier,value:t?Ue(e,t):e})})();let I=N?.decimal||g;ae({condition:!I&&!r,id:`assetValue_static_decimal_not_found_${S}`,warning:`Couldn't find static decimal for one or more tokens on ${S} (Using default ${T} decimal as fallback).
2
- This can result in incorrect calculations and mess with amount sent on transactions.
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:C,identifier:Q,tax:ue}=N||{decimal:I||T,identifier:p},me=t?Ue(e,t):ve(e,C);return f||w?pr(Q,me):He({decimal:C,identifier:Q,tax:ue,value:me})}static async loadStaticAssets(e){let{loadTokenLists:t}=await import("@swapkit/tokens"),r=await t(e,{source:A.get("envs").isDev?"dev":"prod"});for(let{tokens:i}of Object.values(r))for(let s of i){let{identifier:a}=s,{chain:d,symbol:p}=Y(a),{address:g}=de(p,d),{baseDecimal:S}=ce(d),f=xe(d,a),w="decimals"in s&&s.decimals!==void 0?s.decimals:S,L="logoURI"in s&&s.logoURI?s.logoURI:`https://tokens.swapkit.dev/images/${a.toLowerCase()}.png`,T={decimal:w,identifier:a,logoURI:L,tax:"tax"in s?s.tax:void 0};if(ee.set(f,T),g){let N=ne.includes(d)?`${d}:${g}`:`${d}:${g.toUpperCase()}`;Re.set(N,a)}}return!0}static setStaticAssets(e){ee.clear(),Re.clear();for(let[t,r]of e.entries()){let{identifier:i}=r,{chain:s,symbol:a}=Y(i),{address:d}=de(a,s),{baseDecimal:p}=ce(s),g=r.chain??s,S=r.address??d,f=xe(g,i),w=r.decimals??r.decimal??p,L=r.logoURI??`https://tokens.swapkit.dev/images/${i.toLowerCase()}.png`,T={decimal:w,identifier:f,logoURI:L,tax:r.tax};if(ee.set(f,T),S){let N=ne.includes(g)?`${g}:${S}`:`${g}:${S.toUpperCase()}`;Re.set(N,i)}}return!0}static get staticAssets(){return ee}}function ko(e){let t=D.from({chain:e});return Be(e).with(R.Bitcoin,R.Litecoin,R.BitcoinCash,R.Dash,()=>t.set(0.00010001)).with(R.Zcash,()=>t.set(0.00015001)).with(R.Dogecoin,()=>t.set(1.00000001)).with(R.Avalanche,R.Ethereum,R.Arbitrum,R.BinanceSmartChain,()=>t.set(0.00000001)).with(R.THORChain,R.Maya,()=>t.set(0)).with(R.Cosmos,R.Kujira,()=>t.set(0.000001)).otherwise(()=>t.set(0.00000001))}async function Ct({chain:e,address:t,ticker:r}){let s=ne.includes(e)?`${e}:${t||r}`:`${e}:${t||r}`.toUpperCase(),a=dr(s);if(a)return a;if(!t){let{baseDecimal:g}=ce(e);return{decimals:g,identifier:`${e}.${r||"UNKNOWN"}`}}let d=await xt({address:t,chain:e}),p=`${e}.${d.ticker||r||"UNKNOWN"}-${t}`;return ae({condition:!!(!d.ticker&&r),id:`async_token_lookup_failed_${e}_${t}`,warning:`Could not fetch token metadata for ${e}:${t} from chain. Using user-provided ticker (${r}) with baseDecimal (${d.decimals}).`}),d.ticker&&cr(s,{decimals:d.decimals,identifier:p}),{decimals:d.decimals,identifier:p}}function He({identifier:e,decimal:t,value:r,tax:i}){return ar(e),new D({decimal:t,identifier:e,tax:i,value:ve(r,t)})}function pr(e,t=0){let r=e.includes(".")?e.split(".")[0]?.toUpperCase():void 0,i=r&&!/[/~]/.test(r)?r:void 0,a=(i?$e.includes(i):!1)?e.slice(e.indexOf(".")+1):e;return new D({decimal:8,identifier:`${i||R.THORChain}.${a}`,value:ve(t,8)})}async function ur({address:e,chain:t,fromBaseDecimal:r,parsedValue:i}){let{decimals:s,identifier:a}=await Ct({address:e,chain:t}),d=r?Ue(i,r):i;return He({decimal:s,identifier:a,value:d})}function Ue(e,t){let r=e instanceof K?e.getValue("string"):e;return ve(BigInt(r),t)}function ve(e,t){return typeof e==="bigint"?Z({bigIntDecimal:t,decimal:t,value:e}):e}function mr(e){let t=Be(e).when((r)=>("chain"in r)&&r.chain!==void 0,({chain:r})=>r).otherwise((r)=>{let i=Y(r.asset);return i.synth?R.THORChain:i.chain});if(!sr.includes(t.toUpperCase())){let r="asset"in e?e.asset:t;throw new b({errorKey:"helpers_invalid_asset_identifier",info:{identifier:r,message:`Unsupported chain "${t}" - use the AssetValue constructor directly`}})}}function gr(e){if(mr(e),"chain"in e){let{chain:s,address:a}=e;if(a){let d=ne.includes(s)?`${s}:${a}`:`${s}:${a.toUpperCase()}`,p=Re.get(d);if(p)return p;return null}return s}let{chain:t,symbol:r}=Y(e.asset);return Ve({chain:t,symbol:r})==="Native"?t:e.asset}function _r(e,t,r){let i=e.split("."),s=i[0]?.toUpperCase(),a=$e.includes(s),d=r?"~":"/",p=a?i.slice(1).join("."):e,[g,...S]=p.split(d);if(!g||!S.length||S.some((I)=>!I))throw new b({errorKey:"helpers_invalid_asset_identifier",info:{identifier:e}});let f=S.join(d),w=t&&g.toUpperCase()==="X",{ticker:L,address:T}=w?{address:void 0,ticker:f}:Ot({chain:g,symbol:f}),N=`${g}${d}${f}`;return{address:T,chain:s,isGasAsset:!1,isSynthetic:t,isTradeAsset:r,symbol:N,ticker:L}}function hr(e){let t=e.indexOf("."),r=(t===-1?e:e.slice(0,t)).toUpperCase(),i=t===-1?e:e.slice(t+1),{address:s,ticker:a}=Ot({chain:r,symbol:i}),d;try{d=s&&or.includes(r)&&be(s)?be(s):s}catch{d=s}let p=d?`${a}-${d}`:i;return{address:d,chain:r,isGasAsset:Rt({chain:r,symbol:i}),isSynthetic:!1,isTradeAsset:!1,symbol:p,ticker:a}}function It(e){let t=e.slice(0,14),r=t.includes("/"),i=t.includes("~");if(r||i)return _r(e,r,i);return hr(e)}function Ot({symbol:e,chain:t}){let{ticker:r,address:i}=de(e,t);return{address:i&&!ne.includes(t)?i.toLowerCase():i,ticker:r}}class Ie extends K{eq(e){return this.eqValue(e)}static fromBigInt(e,t){return new Ie({decimal:t,value:Z({bigIntDecimal:t,decimal:t,value:e})})}}function kt(e=!0){return e?"https://gateway.liquify.com/chain/thorchain_midgard":"https://midgard.mayachain.info"}function yr(e=!0){let t=kt(e);return e?`${t}/v2/thorname`:`${t}/v2/mayaname`}function br(e){return function(r){let i=r?`?status=${r}`:"";return _.get(`${e}/v2/pools${i}`)}}function Sr(e){return function(r){return _.get(`${e}/v2/pool/${r}`)}}function Ar(e){return function(r,i){let s=i?`?period=${i}`:"";return _.get(`${e}/v2/pool/${r}/stats${s}`)}}function Tr(e){return function(r,i){let s=new URLSearchParams;if(i?.interval)s.append("interval",i.interval);if(i?.count)s.append("count",i.count.toString());if(i?.from)s.append("from",i.from.toString());if(i?.to)s.append("to",i.to.toString());let a=s.toString()?`?${s.toString()}`:"";return _.get(`${e}/v2/history/depths/${r}${a}`)}}function wr(e){return function(){return _.get(`${e}/v2/network`)}}function xr(e){return function(){return _.get(`${e}/v2/health`)}}function Rr(e){return function(){return _.get(`${e}/v2/nodes`)}}function vr(e){return function(r){return _.get(`${e}/v2/node/${r}`)}}function Ir(e){return function(){return _.get(`${e}/v2/mimir/votes`)}}function Cr(e){return function(){return _.get(`${e}/v2/mimir`)}}function Or(e){return function(){return _.get(`${e}/v2/constants`)}}function kr(e){return function(){return _.get(`${e}/v2/stats`)}}function Pr(e){return function(r){let i=new URLSearchParams;if(r?.interval)i.append("interval",r.interval);if(r?.count)i.append("count",r.count.toString());if(r?.from)i.append("from",r.from.toString());if(r?.to)i.append("to",r.to.toString());let s=i.toString()?`?${i.toString()}`:"";return _.get(`${e}/v2/history/earnings${s}`)}}function Lr(e){return function(r,i){let s=new URLSearchParams;if(i?.interval)s.append("interval",i.interval);if(i?.count)s.append("count",i.count.toString());if(i?.from)s.append("from",i.from.toString());if(i?.to)s.append("to",i.to.toString());let a=s.toString()?`?${s.toString()}`:"",d=r?`/swaps/${r}`:"/swaps";return _.get(`${e}/v2/history${d}${a}`)}}function Er(e){return function(r){let i=new URLSearchParams;if(r?.interval)i.append("interval",r.interval);if(r?.count)i.append("count",r.count.toString());if(r?.from)i.append("from",r.from.toString());if(r?.to)i.append("to",r.to.toString());let s=i.toString()?`?${i.toString()}`:"";return _.get(`${e}/v2/history/tvl${s}`)}}function Nr(e){if(!e)return"";let t=new URLSearchParams,r=(i,s)=>{if(s!==void 0)t.append(i,typeof s==="number"?s.toString():s)};return r("address",e.address),r("txid",e.txid),r("asset",e.asset),r("type",e.type),r("affiliate",e.affiliate),r("limit",e.limit),r("offset",e.offset),t.toString()?`?${t.toString()}`:""}function Dr(e){return function(r){let i=Nr(r);return _.get(`${e}/v2/actions${i}`)}}function Mr(e){return function(r){return _.get(`${e}/v2/member/${r}`)}}function Vr(e){return function(r){let i=r?`/${r}`:"";return _.get(`${e}/v2/members${i}`)}}function Hr(e){return function(r,i){let s=i?`&asset=${i}`:"";return _.get(`${e}/v2/saver/${r}${s?`?${s.substring(1)}`:""}`)}}function Ur(e){return function(r){return _.get(`${e}/v2/savers/${r}`)}}function Br(e){return function(r,i){let s=new URLSearchParams;if(i?.interval)s.append("interval",i.interval);if(i?.count)s.append("count",i.count.toString());if(i?.from)s.append("from",i.from.toString());if(i?.to)s.append("to",i.to.toString());let a=s.toString()?`?${s.toString()}`:"",d=r?`/savers/${r}`:"/savers";return _.get(`${e}/v2/history${d}${a}`)}}function $r(e){return function(r){return _.get(`${e}/v2/balance/${r}`)}}function Fr(e){return async function(r){let i=(s)=>{if(s?.cause?.status===404)return;throw s};return await _.get(`${e}/lookup/${r}`,{onError:i,retry:{maxRetries:1}})}}function Kr(e){return async function(r){let i=(s)=>{if(s?.cause?.status===404)return[];throw s};return await _.get(`${e}/rlookup/${r}`,{onError:i,retry:{maxRetries:1}})}}function qr(e){return async function(r){let i=(s)=>{if(s?.cause?.status===404)return[];throw s};return await _.get(`${e}/owner/${r}`,{onError:i,retry:{maxRetries:1}})}}function re({asset:e,value:t}){return D.from({asset:e,fromBaseDecimal:fr(Ce.THORChain).baseDecimal,value:t})}function Wr({liquidityPositionGetter:e,isThorchain:t}){return async function(i){let s=await e(i),a=t?"rune":"cacao";return s.pools.map((d)=>({[`${a}Pending`]:re({asset:"THOR.RUNE",value:d.runePending}),[`${a}RegisteredAddress`]:d.runeAddress,[`${a}Withdrawn`]:re({asset:"THOR.RUNE",value:d.runeWithdrawn}),[a]:re({asset:"THOR.RUNE",value:d.runeAdded}),asset:re({asset:d.pool,value:d.assetAdded}),assetPending:re({asset:d.pool,value:d.assetPending}),assetRegisteredAddress:d.assetAddress,assetWithdrawn:re({asset:d.pool,value:d.assetWithdrawn}),dateFirstAdded:d.dateFirstAdded,dateLastAdded:d.dateLastAdded,poolShare:new Ie(d.liquidityUnits).div(d.pool)}))}}function Pt(e){let t=e===Ce.THORChain,r=kt(t),i=yr(t),s=Mr(r);return{getActions:Dr(r),getBalance:$r(r),getConstants:Or(r),getEarningsHistory:Pr(r),getHealth:xr(r),getLiquidityPosition:Wr({isThorchain:t,liquidityPositionGetter:s}),getLiquidityPositionRaw:s,getMembers:Vr(r),getMimir:Cr(r),getMimirVotes:Ir(r),getNameDetails:Fr(i),getNamesByAddress:Kr(i),getNamesByOwner:qr(i),getNetworkInfo:wr(r),getNode:vr(r),getNodes:Rr(r),getPool:Sr(r),getPoolDepthHistory:Tr(r),getPoolStats:Ar(r),getPools:br(r),getSaverDetails:Hr(r),getSavers:Ur(r),getSaversHistory:Br(r),getStats:kr(r),getSwapHistory:Lr(r),getTVLHistory:Er(r)}}var Lt=Pt(Ce.THORChain),Et=Pt(Ce.Maya);var Xe={};nt(Xe,{SKRequestClient:()=>P,buildLimitOrder:()=>Zi,buildLimitOrderCancel:()=>rs,getChainBalance:()=>Fi,getChainflipDepositChannel:()=>zi,getGasRate:()=>Yi,getLimitOrder:()=>ns,getLimitOrderQuote:()=>Ji,getLimitOrderTokens:()=>Xi,getLimitOrders:()=>ts,getNearDepositChannel:()=>Qi,getPrice:()=>ji,getRouteWithTx:()=>$i,getSwapQuote:()=>Bi,getSwapTo:()=>ds,getTokenApproval:()=>Ki,getTokenList:()=>Wi,getTokenListProviders:()=>qi,getTrackerDetails:()=>Ui,searchTokens:()=>Gi,submitLimitOrder:()=>es,submitLimitOrderCancel:()=>is});import{EVMChains as Qe}from"@swapkit/types";import{match as Hi,P as pe}from"ts-pattern";import{Chain as Oe,ChainId as q}from"@swapkit/types";import{array as v,boolean as U,coerce as Vt,number as h,object as m,optional as c,string as o,union as Fe,unknown as Ke,z as n}from"zod";var Ht;((i)=>{i.CHEAPEST="CHEAPEST";i.FASTEST="FASTEST";i.RECOMMENDED="RECOMMENDED"})(Ht||={});var ke;((f)=>{f.PSBT="PSBT";f.EVM="EVM";f.COSMOS="COSMOS";f.RADIX="RADIX";f.NEAR="NEAR";f.STELLAR="STELLAR";f.TON="TON";f.TRON="TRON";f.EIP_712_HYPE_SEND_ASSET="EIP_712_HYPE_SEND_ASSET";f.EIP_712_HYPE_WITHDRAW="EIP_712_HYPE_WITHDRAW"})(ke||={});var Ut;((C)=>{C.approve="approve";C.claim="claim";C.deposit="deposit";C.donate="donate";C.lending="lending";C.lp_action="lp_action";C.native_contract_call="native_contract_call";C.native_send="native_send";C.stake="stake";C.streaming_swap="streaming_swap";C.swap="swap";C.thorname_action="thorname_action";C.token_contract_call="token_contract_call";C.token_transfer="token_transfer";C.unknown="unknown";C.unstake="unstake"})(Ut||={});var Bt;((T)=>{T.swap="swap";T.aggregation="aggregation";T.addLiquidity="addLiquidity";T.withdrawLiquidity="withdrawLiquidity";T.addSavers="addSavers";T.withdrawSavers="withdrawSavers";T.borrow="borrow";T.repay="repay";T.name="name";T.donate="donate";T.claim="claim";T.stake="stake";T.unstake="unstake"})(Bt||={});var $t;((p)=>{p.unknown="unknown";p.not_started="not_started";p.pending="pending";p.swapping="swapping";p.completed="completed";p.refunded="refunded";p.failed="failed"})($t||={});var Ft;((I)=>{I.not_started="not_started";I.starting="starting";I.broadcasted="broadcasted";I.mempool="mempool";I.inbound="inbound";I.outbound="outbound";I.swapping="swapping";I.completed="completed";I.refunded="refunded";I.partially_refunded="partially_refunded";I.dropped="dropped";I.reverted="reverted";I.replaced="replaced";I.retries_exceeded="retries_exceeded";I.parsing_error="parsing_error"})(Ft||={});var Fo=m({address:c(o()),chain:n.enum(Oe).optional(),chainId:n.enum(q),coingeckoId:c(o()),decimals:Vt.number(),extensions:c(n.looseObject({})),identifier:o(),logoURI:c(o()),name:c(o()),shortCode:c(o()),symbol:c(o()),ticker:o()}),Ko=n.object({block:n.optional(n.number().describe("Block number. Required for Polkadot chain. e.g. `123456`")),chainId:n.optional(n.string().describe("ChainId for the hash. e.g. `thorchain-1`")),depositChannelId:n.optional(n.string().describe("Deposit channel ID, required for Chainflip if tx was broadcasted without wallet connection")),hash:n.optional(n.string().describe("Hash for the first transaction broadcasted by the end user. e.g. `88D1819378ECD09E5284C54937CDC1E99B52F253C007617A02DD1200710CE677`"))}).refine((e)=>e.hash&&e.chainId||e.depositChannelId,{message:"Either `hash` and `chainId` or `depositChannelId` must be provided"}),qo=n.object({forceUpdate:n.string().toLowerCase().transform((e)=>e==="true").pipe(n.boolean()).optional()}),Wo=m({error:o(),message:o()}),ie=m({address:c(o()),chain:n.enum(Oe),decimal:c(h()),isGasAsset:U(),isSynthetic:U(),symbol:o(),tax:c(m({buy:h(),sell:h()})),ticker:o()}),Kt=m({id:o(),market_cap:h(),name:o(),price_change_24h_usd:h(),price_change_percentage_24h_usd:h(),sparkline_in_7d:v(h()),timestamp:o(),total_volume:h()}).partial(),Go=m({cg:c(Kt),identifier:o(),price_usd:h(),provider:o(),timestamp:h()}),qt=v(m({cg:c(Kt),identifier:o(),price_usd:h(),provider:o(),timestamp:h()}).partial()),jo=m({affiliate:c(o().describe("Affiliate thorname")),affiliateFee:c(h().describe("Affiliate fee in basis points").refine((e)=>e===Math.floor(e)&&e>=0,{message:"affiliateFee must be a positive integer",path:["affiliateFee"]})),allowSmartContractReceiver:c(U().describe("Allow smart contract as recipient")),allowSmartContractSender:c(U().describe("Allow smart contract as sender")),buyAsset:o().describe("Asset to buy"),cfBoost:c(U().describe("Set to true to enable CF boost to speed up Chainflip swaps. BTC only.")),destinationAddress:c(o().describe("Address to send asset to")),disableSecurityChecks:c(U().describe("Disable security checks")),includeTx:c(U().describe("Set to true to include an transaction object (EVM only)")),providers:c(v(o().describe("List of providers to use").refine((e)=>O[e]!==void 0,{message:"Invalid provider",path:["providers"]}))),referrer:c(o().describe("Referrer address (referral program)")),sellAmount:o().describe("Amount of asset to sell").refine((e)=>+e>0,{message:"sellAmount must be greater than 0",path:["sellAmount"]}),sellAsset:o().describe("Asset to sell"),slippage:c(h().describe("Slippage tolerance as a percentage. Default is 3%.")),sourceAddress:c(o().describe("Address to send asset from"))}).refine((e)=>e.sellAsset!==e.buyAsset,{message:"Must be different",path:["sellAsset","buyAsset"]}),Yo=m({metadata:U(),tokens:v(m({identifier:o()}))}),Wt=m({destinationAddress:o()}),Gr=Wt.extend({affiliateFees:v(m({brokerAddress:o(),feeBps:h()})).optional(),brokerCommissionBps:h().optional(),buyAsset:m({asset:o(),chain:o()}),channelMetadata:m({cfParameters:o().optional(),gasBudget:o().optional(),message:o().optional()}).optional(),dcaParameters:m({chunkInterval:h().optional(),numberOfChunks:h().optional()}).optional(),maxBoostFeeBps:h().optional(),refundParameters:m({minPrice:o().optional(),refundAddress:o().optional(),retryDuration:h().optional()}).optional(),sellAsset:m({asset:o(),chain:o()})}),Gt=m({channelId:o(),depositAddress:o()}),Nt=Wt.extend({affiliateFees:m({feeBps:h(),nearId:o()}).optional(),buyAsset:o(),sellAmount:o(),sellAsset:o(),slippage:Vt.number(),sourceAddress:o()}),Dt=m({amountIn:o(),amountInFormatted:o(),amountInUsd:o(),amountOut:o(),amountOutFormatted:o(),amountOutUsd:o(),deadline:o().optional(),minAmountIn:o(),minAmountOut:o(),timeEstimate:h().optional(),timeWhenInactive:o().optional()}),zo=Dt.extend({depositAddress:o(),quote:Dt,signature:o(),timestamp:o(),tx:Ke()}),jt=m({buyAsset:o(),buyAssetAmount:o(),buyAssetAmountMaxSlippage:o(),deadline:o().optional(),depositAddress:o(),depositAmount:o(),depositAsset:o(),tx:Ke()}),jr=m({evmCalldata:n.optional(n.string()),intentHash:n.optional(n.string()),logs:n.optional(n.unknown()),manifest:n.optional(n.unknown()),memo:n.optional(n.string()),spender:n.optional(n.string()),thorname:n.optional(n.string())}),Yr=m({currentStage:o(),inboundConfirmation:h(),inboundObservation:h(),outboundDelay:h(),outboundObservation:h(),streamingSwap:h()}),zr=m({count:c(h()),interval:c(h()),quantity:c(h()),subSwapsMap:c(v(h()))}),Qr=n.object({currentLegIndex:n.optional(n.number()),estimatedTimeToComplete:n.number(),estimates:n.optional(Yr),providerDetails:n.optional(n.object({streamingDetails:n.optional(zr)}))}),Xr=m({affiliate:c(ie),liquidity:c(ie),network:c(ie),protocol:c(ie),tax:c(ie)}),Jr=m({affiliate:o(),bps:o(),isReferrer:U()}),Zr=m({affiliate:c(o()),affiliateFees:c(v(Jr)),broadcastedAt:c(h()),explorerUrl:c(o()),fees:c(Xr),images:c(m({chain:c(o()),from:c(o()),provider:c(o()),to:c(o())})),provider:c(n.enum(O)),providerAction:n.optional(n.enum(Bt)),quoteId:c(o()),wallet:c(o())}),se=n.object({block:n.number(),chainId:n.enum(q),finalAddress:n.optional(n.string()),finalAsset:n.optional(ie),finalisedAt:n.number(),fromAddress:n.string(),fromAmount:n.string(),fromAsset:n.string(),hash:n.string(),meta:n.optional(Zr),payload:n.optional(jr),status:n.enum($t),toAddress:n.string(),toAmount:n.string(),toAsset:n.string(),trackingStatus:n.optional(n.enum(Ft)),transient:n.optional(Qr),type:n.enum(Ut)}),Yt=se.extend({legs:n.array(se)}),Qo=se.extend({legs:v(se)}),Xo=se.extend({legs:v(se)}),qe=v(m({amount:o(),asset:o(),chain:o(),protocol:n.enum(O),type:n.enum(_e)})),We=n.object({inbound:n.optional(n.number().describe("Time to receive inbound asset in seconds")),outbound:n.optional(n.number().describe("Time to receive outbound asset in seconds")),swap:n.optional(n.number().describe("Time to swap assets in seconds")),total:n.number().describe("Total time in seconds")}),ei=/^(?:0x[0-9a-fA-F]+|[0-9]+)$/;function ti(e){return e===""||ei.test(e)}function Jo(e){return e?BigInt(e):0n}function Zo(e){let t=typeof e==="bigint"?e:BigInt(e);return t>0n?`0x${t.toString(16)}`:"0x0"}var H=o().refine(ti,{message:"Value must be a base-10 integer string or 0x-prefixed hex integer string"}).describe("Value to send in base units as a base-10 integer string or 0x-prefixed hex integer string"),ni=m({data:o().describe("Data to send"),from:o().describe("Address of the sender"),to:o().describe("Address of the recipient"),value:H}),ri=n.object({data:n.string().optional(),raw_data:n.object({contract:n.any(),data:n.string().optional(),expiration:n.number(),fee_limit:n.number().optional(),ref_block_bytes:n.string(),ref_block_hash:n.string(),timestamp:n.number()}).passthrough(),raw_data_hex:n.string(),txID:n.string(),value:H.optional(),visible:n.boolean()}),ii=v(Fe([o(),h(),v(o()),m({from:o(),value:H}).describe("Parameters to pass to the contract method")])),ea=m({approvalSpender:c(o().describe("Address of the spender to approve")),approvalToken:c(o().describe("Address of the token to approve spending of")),contractAddress:o().describe("Address of the contract to interact with"),contractMethod:o().describe("Name of the method to call"),contractParamNames:v(o().describe("Names of the parameters to pass to the contract method")),contractParams:ii}),si=m({typeUrl:o("/types.MsgDeposit"),value:m({coins:v(m({amount:o(),asset:m({chain:o(),symbol:o(),synth:U(),ticker:o()})})),memo:o(),signer:o()})}),oi=m({typeUrl:o("/types.MsgSend"),value:m({amount:v(m({amount:o(),denom:o()})),fromAddress:o(),toAddress:o()})}),ai=m({typeUrl:o(),value:oi.shape.value.or(si.shape.value)}),li=m({amount:v(m({amount:o(),denom:o()})),gas:o()}),di=m({accountNumber:h(),chainId:n.enum(q),fee:li,memo:o(),msgs:v(ai),sequence:h()}),ci=n.array(n.object({calldata:n.array(n.string()),contractAddress:n.string(),entrypoint:n.string()})),pi=n.object({address:n.string().describe("Destination address in friendly format"),amount:n.string().describe("Amount in nanotons"),payload:n.string().optional().describe("Base64 BOC of body cell"),stateInit:n.string().optional().describe("Base64 BOC of state init")}),ui=n.object({messages:n.array(pi),sendMode:n.number().describe("TON wallet send mode for the whole transfer")}),ta="USDC:0x6d1e7cde53ba9467b783cb7c530ce054",mi=n.looseObject({domain:n.looseObject({chainId:c(Fe([h(),o()])),name:c(o()),verifyingContract:c(o()),version:c(o())}),message:n.record(o(),Ke()),primaryType:o(),types:n.record(o(),v(n.looseObject({name:o(),type:o()})))}),gi=n.looseObject({amount:o(),destination:o(),destinationDex:o(),fromSubAccount:o(),hyperliquidChain:o(),nonce:h().int(),signatureChainId:o(),sourceDex:o(),token:o(),type:n.literal("sendAsset")}),zt=n.looseObject({action:n.looseObject({type:o()}),submitTo:o(),typedData:mi}),na=zt.extend({action:gi}),Qt=Fe([ni,di,ri,ui,zt,o()]),_i=Qt.or(ci),hi=m({affiliate:o().describe("Affiliate address").optional(),affiliateFee:h().describe("Affiliate fee").optional(),buyAsset:o().describe("Asset to buy"),destinationAddress:o().describe("Destination address"),estimatedTime:We.optional(),provider:n.enum(O),sellAsset:o().describe("Asset to sell"),slipPercentage:h().describe("Slippage as a percentage"),sourceAddress:o().describe("Source address")}),ra=hi.omit({destinationAddress:!0,slipPercentage:!0,sourceAddress:!0}),fi=m({asset:o().describe("Asset name"),image:o().describe("Asset image"),price:h().describe("Price in USD")}),yi=Gr,Xt=m({assets:c(v(fi)),maxStreamingQuantity:h().optional(),referrer:o().optional(),streamingInterval:h().optional(),tags:v(n.enum(Ht))}),Jt=Xt.extend({affiliate:c(o()),affiliateFee:c(o()),approvalAddress:c(o().describe("Approval address for swap")),chainflip:yi.optional(),garden:Nt.optional(),near:Nt.optional(),priceImpact:c(h().describe("Price impact")),referrer:c(o()),txType:c(n.enum(ke))}),Zt=v(m({code:n.enum(Le),display:o(),tooltip:o().optional()})),bi=m({buyAmount:o().describe("Buy amount"),buyAmountMaxSlippage:o().describe("Buy amount max slippage"),buyAsset:o().describe("Asset to buy"),fees:c(qe),provider:n.enum(O),sellAmount:o().describe("Sell amount"),sellAsset:o().describe("Asset to sell")}),Si=m({buyAsset:o().describe("Asset to buy"),destinationAddress:c(o().describe("Destination address")),estimatedTime:c(We),expectedBuyAmount:o().describe("Expected Buy amount"),expectedBuyAmountMaxSlippage:o().describe("Expected Buy amount max slippage"),expiration:c(o().describe("Expiration")),fees:qe,inboundAddress:c(o().describe("Inbound address")),legs:v(bi),memo:c(o().describe("Memo")),meta:Jt,providers:v(n.enum(O)),routeId:o().describe("Route ID"),sellAmount:o().describe("Sell amount"),sellAsset:o().describe("Asset to sell"),sourceAddress:c(o().describe("Source address")),targetAddress:c(o().describe("Target address")),totalSlippageBps:h().describe("Total slippage in bps"),tx:c(_i),txType:c(n.enum(ke)),warnings:Zt}),en=m({error:c(o().describe("Error message")),providerErrors:c(v(m({errorCode:c(n.enum(oe)),message:c(o()),provider:n.enum(O).optional()}))),quoteId:o().describe("Quote ID"),routes:v(Si)}),tn=n.object({chainId:n.enum(q),createdAt:n.date(),id:n.number(),unit:n.string(),value:n.string()}),Ai=n.array(tn),nn=n.union([tn,Ai]),ia=v(m({chain:n.enum(Oe),decimal:h(),identifier:o(),symbol:o(),ticker:o(),value:o()})),sa=n.union([n.object({amount:n.string(),spender:n.string(),tokenIdentifier:n.string(),userWalletAddress:n.string()}),n.object({amount:n.string(),chainId:n.enum(q),spender:n.string(),tokenContractAddress:n.string(),userWalletAddress:n.string()}),n.object({routeId:n.string()})]),oa=n.object({approvalTransaction:n.optional(n.object({data:n.string(),from:n.string(),gasLimit:n.optional(n.string()),gasPrice:n.optional(n.string()),to:n.string(),value:H})),approvedAmount:n.string(),isApproved:n.boolean()}),Ti=n.object({data:n.string().describe("Encoded approval call data"),from:n.string().describe("User wallet address"),gasLimit:n.string().optional().describe("Estimated gas limit"),gasPrice:n.string().optional().describe("Current gas price"),to:n.string().describe("Token contract address"),value:H.describe("ETH value (always '0' for approvals)")}),wi=n.object({tx:n.string(),txType:n.literal("STELLAR")}),xi=n.union([Ti,wi]),Mt=n.object({buyAmount:n.string().describe("Buy amount").optional(),buyAmountMaxSlippage:n.string().describe("Buy amount max slippage").optional(),buyAsset:n.string().describe("Asset to buy"),expectedBuyAmount:n.string().describe("Expected Buy amount").optional(),expectedBuyAmountMaxSlippage:n.string().describe("Expected Buy amount max slippage").optional(),fees:qe,provider:n.enum(O),sellAmount:n.string().describe("Sell amount"),sellAsset:n.string().describe("Asset to sell")}),rn=Mt.extend({estimatedTime:n.optional(We),expiration:n.optional(n.string().describe("Expiration")),legs:n.array(Mt),providers:n.array(n.enum(O)),routeId:n.string().describe("Route ID"),totalSlippageBps:n.number().describe("Total slippage in bps"),warnings:Zt}).omit({provider:!0}),sn=n.object({method:n.string(),payload:n.optional(n.unknown()),url:n.string()}),Ri=rn.extend({meta:Xt,nextActions:n.optional(n.array(sn))}),aa=n.object({error:n.optional(n.string().describe("Error message")),providerErrors:n.optional(n.array(n.object({errorCode:n.optional(n.enum(oe)),message:n.optional(n.string()),provider:n.enum(O).optional()}))),quoteId:n.string().describe("Quote ID"),routes:n.array(Ri)}),la=n.object({providers:n.array(n.enum(O)).optional().describe("Optional list of providers to query for trading pairs"),sellAsset:n.string().describe("Asset identifier to sell (e.g., 'BTC.BTC' or 'ETH.ETH')")}),vi=n.object({chain:n.enum(Oe).describe("Chain the asset is on"),identifier:n.string().describe("Asset identifier (e.g., 'ETH.USDC-0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48')"),providers:n.array(n.enum(O)).describe("Providers that support this trading pair"),symbol:n.string().describe("Asset symbol"),ticker:n.string().describe("Asset ticker")}),da=n.object({buyAssets:n.array(vi).describe("List of assets that can be swapped to"),sellAsset:n.string().describe("The input sell asset identifier")}),on=rn.extend({destinationAddress:n.string().describe("Destination address"),inboundAddress:n.optional(n.string().describe("Inbound address")),memo:n.optional(n.string().describe("Memo to include in the transaction")),meta:Jt,sourceAddress:n.string().describe("Source address"),targetAddress:n.optional(n.string().describe("Target address")),tx:c(Qt),txType:n.optional(n.enum(ke))}),Ii=n.object({data:n.optional(n.record(n.string(),n.string().optional())),errorCode:n.enum(oe),message:n.string().optional(),provider:n.enum(O).optional()}),ca=n.object({error:n.optional(n.string().describe("Error message")),providerErrors:n.optional(n.array(Ii)),quoteId:n.string().describe("Quote ID"),routes:n.array(on)}),an=on.extend({approvalTx:xi.optional().describe("Optional approval transaction required before swap execution"),nextActions:n.optional(n.array(sn)),swapId:n.string().describe("The unique swap ID for tracking")}),Ci={CANCELLED:"CANCELLED",EXPIRED:"EXPIRED",FAILED:"FAILED",FILLED:"FILLED",OPEN:"OPEN",PARTIAL:"PARTIAL",PENDING:"PENDING",SUBMITTED:"SUBMITTED"},Oi={Cardano:"cardano",Evm:"evm",Near:"near",Psbt:"psbt",Ripple:"ripple",Solana:"solana",Starknet:"starknet",Stellar:"stellar",Sui:"sui",Ton:"ton",Tron:"tron"};function M(e){return n.union([e,n.string()])}var Ge=M(n.enum(Ci)),je=n.object({method:n.string(),payload:n.optional(n.unknown()),url:n.string()}),ln=n.array(n.object({code:n.string(),display:n.string(),tooltip:n.string().optional()})),dn=n.array(n.object({amount:n.string(),amountBps:n.number().optional(),asset:n.string(),chain:n.string(),protocol:M(n.enum(O)),type:M(n.enum(_e))})),cn=n.object({crossChain:n.array(n.object({assets:n.array(n.string()),chainIds:n.array(M(n.enum(q))),provider:M(n.enum(O))})),singleChain:n.array(n.object({assets:n.array(n.string()),chainId:M(n.enum(q)),provider:M(n.enum(O))}))}),pa=n.object({affiliateFee:n.number().min(0).max(1000).optional(),buyAmount:n.string().optional(),buyAsset:n.string(),destinationAddress:n.string().optional(),expiresAt:n.number().int().positive().optional(),limitPrice:n.string().optional().describe("buyAsset per 1 sellAsset"),providers:n.array(n.enum(O)).optional(),sellAmount:n.string().optional(),sellAsset:n.string(),sourceAddress:n.string().optional()}),ki=n.object({buyAmount:n.string(),buyAsset:n.string(),effectiveFillPrice:n.string(),fees:dn.optional(),integratorFeeBps:n.number(),limitPrice:n.string(),maxExpirationSeconds:n.number(),minExpirationSeconds:n.number(),nextActions:n.optional(n.array(je)),provider:M(n.enum(O)),routeId:n.string(),sellAmount:n.string(),sellAsset:n.string(),spotPrice:n.string(),spotPriceDeviationBps:n.number(),takerFeeBps:n.number(),warnings:ln.optional()}),pn=n.object({error:n.string().optional(),providerErrors:n.optional(n.array(n.object({errorCode:n.optional(n.string()),message:n.optional(n.string()),provider:M(n.enum(O)).optional()}))),quoteId:n.string(),routes:n.array(ki)}),ua=n.object({allowMultipleFills:n.boolean().optional(),allowPartialFill:n.boolean().optional(),destinationAddress:n.string().min(1),expiresAt:n.number().int().positive().describe("Unix timestamp in seconds"),routeId:n.string(),sourceAddress:n.string().min(1)}),Pi=n.object({domain:n.looseObject({chainId:n.number(),name:n.string(),verifyingContract:n.string(),version:n.string()}),message:n.record(n.string(),n.unknown()),primaryType:n.string(),types:n.record(n.string(),n.array(n.object({name:n.string(),type:n.string()})))}),Li=n.strictObject({data:n.string(),from:n.string().optional(),gas:H.optional(),gasPrice:H.optional(),maxFeePerGas:H.optional(),maxPriorityFeePerGas:H.optional(),to:n.string(),type:H.optional(),value:H}),Ei=n.object({chainId:n.number().optional(),memo:n.string().optional(),txType:n.enum(Oi)}),Ni=n.object({data:n.string(),from:n.string(),gasLimit:n.string().optional(),gasPrice:n.string().optional(),to:n.string(),value:n.string()}),un=n.object({approvalTx:Ni.optional(),depositAddress:n.string().optional(),depositAmount:n.string().optional(),depositMemo:n.string().optional(),isApproved:n.boolean().optional(),nextActions:n.array(je),orderHash:n.string(),orderId:n.string(),tx:n.union([n.string(),Li,n.record(n.string(),n.unknown()),n.array(n.unknown())]).nullable(),txMeta:Ei.nullable(),typedData:Pi.nullable(),warnings:ln.optional()}),mn=n.object({createdAt:n.string(),orderHash:n.string(),orderId:n.string(),status:Ge}),Di=n.object({blockNumber:n.number().int().optional(),chainId:M(n.enum(q)),txHash:n.string(),type:M(n.enum(["fill","cancel","deposit","withdraw","refund"]))}),Ye=n.object({buyAmount:n.string(),buyAsset:n.string(),cancelRequestedAt:n.string().optional(),chainId:M(n.enum(q)),createdAt:n.string(),depositHash:n.string().optional(),expiresAt:n.string(),fees:dn,filledBuyAmount:n.string(),filledSellAmount:n.string(),limitPrice:n.string(),maker:n.string(),orderHash:n.string(),orderId:n.string(),provider:M(n.enum(O)),receiver:n.string().nullable(),sellAmount:n.string(),sellAsset:n.string(),status:Ge,txHashes:n.array(Di).optional(),updatedAt:n.string(),usdValueClose:n.string().nullable().optional(),usdValueOpen:n.string().nullable().optional(),withdrawHash:n.string().optional()}),ze=n.object({nextCursor:n.string().optional(),orders:n.array(Ye)}),Mi=n.object({domain:n.looseObject({name:n.string(),version:n.string()}),message:n.looseObject({action:n.literal("cancel_and_withdraw"),chain:n.string(),expiry:n.number(),l1Address:n.string(),nonce:n.number(),payload:n.looseObject({orderId:n.string()})}),primaryType:n.literal("CancelAndWithdraw"),types:n.looseObject({CancelAndWithdraw:n.array(n.object({name:n.string(),type:n.string()})),CancelAndWithdrawPayload:n.array(n.object({name:n.string(),type:n.string()})),EIP712Domain:n.array(n.object({name:n.string(),type:n.string()}))})}),Vi=n.strictObject({chainId:n.number(),data:n.string(),from:n.string(),to:n.string(),value:n.string()}),gn=n.object({btcSignaturePreimage:n.string().nullable(),cancelTx:Vi.nullable(),nextActions:n.array(je),orderId:n.string(),typedData:Mi.nullable()}),_n=n.object({cancelRequestedAt:n.string().optional(),orderId:n.string(),status:Ge,txHash:n.string().optional(),withdrawId:n.string().optional()});var P=_.extend({dynamicHeader:async()=>{let e=A.get("widgetId"),t=A.get("widgetKey");if(e&&t&&typeof window<"u"){let i=Math.floor(Date.now()/1000),s=window.location.origin,a=await dt(t,e,s,i);return{Origin:s,"X-Signature":a,"X-Timestamp":i.toString(),"x-widget-id":e}}let{swapKit:r}=A.get("apiKeys");return r?{"x-api-key":r}:{}}});async function Ui(e){let t=await P.post(k("/track"),{json:e});try{let r=Yt.safeParse(t);if(!r.success)throw new b("api_v2_invalid_response",r.error);return r.data}catch(r){return t}}async function Bi(e){let{getQuote:t}=A.get("endpoints");if(t)return t(e);let i=A.get("v3SwapFlow")?.enabled?"/v3/quote":"/quote",s=await P.post(k(i),{json:e});if(s.error)throw new b("api_v2_server_error",{message:s.error});try{let a=en.safeParse(s);if(!a.success)throw new b("api_v2_invalid_response",a.error);return a.data}catch{return s}}async function $i(e){let{getRouteWithTx:t}=A.get("endpoints");if(t)return t(e);let i=A.get("v3SwapFlow")?.enabled?"/v3/swap":"/swap",s=await P.post(k(i),{json:e});try{let a=an.safeParse(s);if(!a.success)throw new b("api_v2_invalid_response",a.error);return a.data}catch(a){return console.error(new b("api_v2_invalid_response",a)),s}}async function Fi({chain:e,address:t,scamFilter:r=!0}){let{getBalance:i}=A.get("endpoints");if(i)return i({address:t,chain:e});let s=k(`/balance?chain=${e}&address=${t}`),a=await P.get(s),d=Array.isArray(a)?a:[];return r?ls(d):d}function Ki(e){let t=Hi(e).with({routeId:pe.string,spender:pe.string},({routeId:r,spender:i})=>k(`/approve?routeId=${r}&sourceAddress=${i}`)).with({assetValue:pe.instanceOf(D),spender:pe.string,userWallet:pe.string},({spender:r,userWallet:i,assetValue:s})=>k(`/approve?tokenIdentifier=${s.toString()}&userWalletAddress=${i}&spender=${r}&amount=${s.getValue("string")}`)).exhaustive();return P.get(t)}function qi(){let e=k("/providers");return P.get(e)}function Wi(e){let t=k(`/tokens?provider=${e}`);return P.get(t)}function Gi({query:e,chain:t,page:r,limit:i}){let s=new URLSearchParams({query:e});if(t!==void 0)s.set("chain",t);if(r!==void 0)s.set("page",r.toString());if(i!==void 0)s.set("limit",i.toString());let a=k(`/tokens/search?${s.toString()}`);return P.get(a)}async function ji(e){let t=k("/price"),r=await P.post(t,{json:e});try{let i=qt.safeParse(r);if(!i.success)throw new b("api_v2_invalid_response",i.error);return i.data}catch(i){throw new b("api_v2_invalid_response",i)}}async function Yi(){let e=k("/gas"),t=await P.get(e);try{let r=nn.safeParse(t);if(!r.success)throw new b("api_v2_invalid_response",r.error);return Array.isArray(r)?r:[r]}catch(r){throw new b("api_v2_invalid_response",r)}}async function zi(e){let{destinationAddress:t}=e;if(!t)throw new b("chainflip_broker_invalid_params");let r=A.get("integrations").chainflip?.brokerUrl||k("/chainflip/broker/channel"),i=await P.post(r,{json:e});try{let s=Gt.safeParse(i);if(!s.success)throw new b("api_v2_invalid_response",s.error);return s.data}catch(s){throw new b("api_v2_invalid_response",s)}}async function Qi(e){let{destinationAddress:t}=e;if(!t)throw new b("chainflip_broker_invalid_params");let r=k("/near/channel"),i=await P.post(r,{json:e});try{let s=jt.safeParse(i);if(!s.success)throw new b("api_v2_invalid_response",s.error);return s.data}catch(s){throw new b("api_v2_invalid_response",s)}}function W(e,t){let r=e.safeParse(t);if(!r.success)throw new b("api_v2_invalid_response",r.error);return r.data}async function Xi(){let{getLimitOrderTokens:e}=A.get("endpoints"),t=e?await e():await P.get(k("/v3/limit/tokens"));return W(cn,t)}async function Ji(e){let{getLimitOrderQuote:t}=A.get("endpoints"),r=t?await t(e):await P.post(k("/v3/limit/quote"),{json:e});return W(pn,r)}async function Zi(e){let{buildLimitOrder:t}=A.get("endpoints"),r=t?await t(e):await P.post(k("/v3/limit/build"),{json:e,retry:{maxRetries:0}});return W(un,r)}async function es(e){let{submitLimitOrder:t}=A.get("endpoints"),r=t?await t(e):await P.post(k("/v3/limit/submit"),{json:e,retry:{maxRetries:0}});return W(mn,r)}async function ts(e={}){let{getLimitOrders:t}=A.get("endpoints");if(t)return W(ze,await t(e));let{status:r,...i}=e,s=new URLSearchParams;for(let[p,g]of Object.entries(i))if(g!==void 0)s.set(p,String(g));for(let p of r===void 0?[]:[r].flat())s.append("status",p);let a=s.toString(),d=await P.get(k(`/v3/limit/orders${a?`?${a}`:""}`));return W(ze,d)}async function ns(e){let{getLimitOrder:t}=A.get("endpoints"),r=t?await t(e):await P.get(k(`/v3/limit/orders/${encodeURIComponent(e)}`));return W(Ye,r)}async function rs(e){let{buildLimitOrderCancel:t}=A.get("endpoints"),r=t?await t(e):await P.post(k("/v3/limit/cancel/build"),{json:e,retry:{maxRetries:0}});return W(gn,r)}async function is(e){let{submitLimitOrderCancel:t}=A.get("endpoints"),r=t?await t(e):await P.post(k("/v3/limit/cancel/submit"),{json:e,retry:{maxRetries:0}});return W(_n,r)}function k(e){let{isDev:t,apiUrl:r,devApiUrl:i}=A.get("envs"),{enabled:s,quoteUrl:a,swapUrl:d}=A.get("localMode");if(s&&e){let[g]=e.split("?");if(g==="/quote"||g==="/v3/quote")return`${a}${e}`;if(g==="/swap"||g==="/v3/swap")return`${d}${e}`}return`${t?i:r}${e}`}function ss(e){try{return D.from({asset:e.identifier})}catch{return}}var os=new Set(["OP.OP"]),as=/(.)\1{6}|\.ORG|\.NET|\.FINANCE|\.COM|WWW|HTTP|\\\\|\/\/|[\s$%:[\]]/im;function ls(e){return e.filter((t)=>{let r=ss(t);if(!r)return!1;if(os.has(r.toString().toUpperCase()))return!0;return(!Qe.includes(r.chain)||r.isGasAsset||!!r.address)&&!as.test(r.ticker)})}async function ds(e){let{getSwapTo:t}=A.get("endpoints");if(t)return t(e);let r=new URLSearchParams({sellAsset:e.sellAsset});if(e.providers?.length)for(let d of e.providers)r.append("providers",d);let i=k(`/swapTo?${r.toString()}`),s=await P.get(i);if(!Array.isArray(s))return{buyAssets:[],sellAsset:e.sellAsset};let a=[];for(let d of s)try{let p=D.from({asset:d});a.push({chain:p.chain,identifier:p.toString(),providers:[],symbol:p.symbol,ticker:p.ticker})}catch{}return{buyAssets:a,sellAsset:e.sellAsset}}var Je={};nt(Je,{getInboundAddresses:()=>_s,getLastBlock:()=>ps,getMimirInfo:()=>gs,getNodes:()=>ms,getRunePoolInfo:()=>fs,getRunePoolProviderInfo:()=>ys,getTHORNodeTNSDetails:()=>hn,getTNSPreferredAsset:()=>hs,getTcyClaimer:()=>As,getTcyClaimers:()=>Ts,getTcyStaker:()=>bs,getTcyStakers:()=>Ss,getThorchainQueue:()=>us});function V(e){let t=A.get("thornodeUrls");return`${e==="mayachain"?t.MAYA:t.THOR}/${e??"thorchain"}`}function cs(e){let t=e==="mayachain"?"mayaname":"thorname";return`${V(e)}/${t}`}function ps(e="thorchain"){return _.get(`${V(e)}/lastblock`)}function us(e){return _.get(`${V(e)}/queue`)}function ms(e){return _.get(`${V(e)}/nodes`)}function gs(e){return _.get(`${V(e)}/mimir`)}function _s(e){return _.get(`${V(e)}/inbound_addresses`)}async function hn({type:e,name:t}){try{return await _.get(`${cs(e)}/${t}`)}catch{return{affiliate_collector_rune:"",aliases:[],expire_block_height:0,name:t,owner:"",preferred_asset:""}}}async function hs({type:e,tns:t}){let r=await hn({name:t,type:e});if(!r.preferred_asset||r.preferred_asset===".")return;return D.from({asset:r.preferred_asset,asyncTokenLookup:!0})}function fs(e){return _.get(`${V(e)}/runepool`)}function ys({type:e,thorAddress:t}){return _.get(`${V(e)}/rune_provider/${t}`)}function bs({type:e,address:t}){return _.get(`${V(e)}/tcy_staker/${t}`)}function Ss(e){return _.get(`${V(e)}/tcy_stakers`)}function As({type:e,address:t}){return _.get(`${V(e)}/tcy_claimer/${t}`)}function Ts(e){return _.get(`${V(e)}/tcy_claimers`)}var Ra={...Xe,mayachainMidgard:Et,thorchainMidgard:Lt,thornode:Je};
5
- export{Rs as a,oe as b,Le as c,O as d,_e as e,wn as f,xn as g,Rn as h,b as i,Os as j,he as k,st as l,Ls as m,vn as n,Es as o,E as p,A as q,_ as r,dt as s,zs as t,ae as u,De as v,Fn as w,J as x,no as y,ro as z,io as A,ho as B,Qn as C,wt as D,xt as E,Rt as F,Se as G,Ve as H,Y as I,de as J,fo as K,yo as L,Z as M,K as N,ar as O,D as P,ko as Q,Ie as R,Ht as S,ke as T,Ut as U,Bt as V,$t as W,Ft as X,Fo as Y,Ko as Z,qo as _,Wo as $,ie as aa,Kt as ba,Go as ca,qt as da,jo as ea,Yo as fa,Wt as ga,Gr as ha,Gt as ia,Nt as ja,zo as ka,jt as la,Yt as ma,Qo as na,Xo as oa,qe as pa,We as qa,ti as ra,Jo as sa,Zo as ta,ni as ua,ri as va,ii as wa,ea as xa,di as ya,ci as za,pi as Aa,ui as Ba,ta as Ca,mi as Da,gi as Ea,zt as Fa,na as Ga,hi as Ha,ra as Ia,fi as Ja,yi as Ka,Xt as La,Jt as Ma,Zt as Na,Si as Oa,en as Pa,tn as Qa,nn as Ra,sa as Sa,oa as Ta,Ti as Ua,wi as Va,xi as Wa,aa as Xa,la as Ya,vi as Za,da as _a,on as $a,Ii as ab,ca as bb,an as cb,Ci as db,Oi as eb,cn as fb,pa as gb,ki as hb,pn as ib,ua as jb,Pi as kb,Li as lb,Ei as mb,Ni as nb,un as ob,mn as pb,Di as qb,Ye as rb,ze as sb,Mi as tb,Vi as ub,gn as vb,_n as wb,Ra as xb};