@avalabs/fusion-sdk 0.25.0 → 0.26.1

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.
@@ -1,2 +1,2 @@
1
- let e=function(e){return e.DEV=`dev`,e.PROD=`production`,e.TEST=`test`,e}({}),t=function(e){return e.NATIVE=`native`,e.ERC20=`erc20`,e.SPL=`spl`,e}({}),n=function(e){return e.AVALANCHE_CCT=`avalanche-cct`,e.AVALANCHE_EVM=`avalanche-evm`,e.LOMBARD_BTC_TO_BTCB=`lombard-btc-to-btcb`,e.LOMBARD_BTCB_TO_BTC=`lombard-btcb-to-btc`,e.MARKR=`markr`,e.WRAP_UNWRAP=`wrap-unwrap`,e}({});const r=[n.LOMBARD_BTCB_TO_BTC,n.LOMBARD_BTC_TO_BTCB],i=[n.AVALANCHE_EVM,n.WRAP_UNWRAP];let a=function(e){return e.AddressOwnership=`address-ownership`,e.AllowanceApproval=`allowance-approval`,e.AvalancheCrossChainExport=`avalanche-cross-chain-export`,e.AvalancheCrossChainImport=`avalanche-cross-chain-import`,e.TokensTransfer=`tokens-transfer`,e.WrapToken=`wrap-token`,e.HyperliquidAuthorize=`hyperliquid-authorize`,e.HyperliquidSendAsset=`hyperliquid-send-asset`,e.ScheduleRecurringSwap=`schedule-recurring-swap`,e.PauseRecurringSwap=`pause-recurring-swap`,e.ResumeRecurringSwap=`resume-recurring-swap`,e.CancelRecurringSwap=`cancel-recurring-swap`,e}({}),o=function(e){return e.FUJI=`eip155:43113`,e.MAINNET=`eip155:43114`,e}({}),s=function(e){return e.MAINNET=`eip155:1`,e.SEPOLIA=`eip155:11155111`,e}({}),c=function(e){return e.MAINNET=`bip122:000000000019d6689c085ae165831e93`,e.TESTNET=`bip122:000000000933ea01ad0ee984209779ba`,e}({}),l=function(e){return e.MAINNET=`solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp`,e.DEVNET=`solana:EtWTRABZaYq6iMfeYKouRu166VU2xqa1`,e}({}),u=function(e){return e.MAINNET=`eip155:1337`,e}({}),d=function(e){return e.MAINNET=`eip155:8453`,e.SEPOLIA=`eip155:84532`,e}({}),f=function(e){return e.MAINNET=`eip155:137`,e.AMOY=`eip155:80002`,e}({});const p={C:o.MAINNET,P:`avax:Rr9hnPVPxuUvrdCul-vjEsU1zmqKqRDo`,X:`avax:imji8papUf2EhV3le337w1vgFauqkJg-`},m={C:o.FUJI,P:`avax:Sj7NVE3jXTbJvwFAiu7OEUo_8g8ctXMG`,X:`avax:8AJTpRj3SAqv1e80Mtl9em08LhvKEbkl`},h={C:`2q9e4r6Mu3U68nU1fYjgbR6JvwrRx36CohpAX5UQxse55x1Q5`,P:`11111111111111111111111111111111LpoYY`,X:`2oYMBNV4eNHyqk2fjjV5nVQLDbtmNJzq5s3qs3Lo6ftnC6FByM`},g={C:`yH8D7ThNJkxmtkuv2jgBa4P1Rn3Qpr4pPr7QYNfcdoS6k6HWp`,P:`11111111111111111111111111111111LpoYY`,X:`2JVSBoinj9C2J33VntvzYtVJNZdN2NKiwwKjcumHUWEb5DbBrm`},_={mainnet:{[p.C]:h.C,[p.P]:h.P,[p.X]:h.X},fuji:{[m.C]:g.C,[m.P]:g.P,[m.X]:g.X}},v={chainId:o.FUJI,chainName:`Avalanche Fuji (C-Chain)`,networkToken:{type:t.NATIVE,name:`AVAX`,symbol:`AVAX`,decimals:18},rpcUrl:`https://api.avax-test.network/ext/bc/C/rpc`},y={chainId:o.MAINNET,chainName:`Avalanche Mainnet (C-Chain)`,rpcUrl:`https://api.avax.network/ext/bc/C/rpc`,networkToken:{type:t.NATIVE,name:`AVAX`,symbol:`AVAX`,decimals:18}},b={chainId:p.P,chainName:`Avalanche Mainnet (P-Chain)`,rpcUrl:`https://api.avax.network/ext/bc/P`,networkToken:{type:t.NATIVE,name:`AVAX`,symbol:`AVAX`,decimals:9}},x={chainId:m.P,chainName:`Avalanche Fuji (P-Chain)`,rpcUrl:`https://api.avax-test.network/ext/bc/P`,networkToken:{type:t.NATIVE,name:`AVAX`,symbol:`AVAX`,decimals:9}},S={chainId:p.X,chainName:`Avalanche Mainnet (X-Chain)`,rpcUrl:`https://api.avax.network/ext/bc/X`,networkToken:{type:t.NATIVE,name:`AVAX`,symbol:`AVAX`,decimals:9}},C={chainId:m.X,chainName:`Avalanche Fuji (X-Chain)`,rpcUrl:`https://api.avax-test.network/ext/bc/X`,networkToken:{type:t.NATIVE,name:`AVAX`,symbol:`AVAX`,decimals:9}},w={chainId:s.SEPOLIA,chainName:`Ethereum Sepolia`,rpcUrl:`https://proxy-api.avax.network/proxy/infura/sepolia`,networkToken:{type:t.NATIVE,name:`ETH`,symbol:`ETH`,decimals:18}},T={chainId:s.MAINNET,chainName:`Ethereum Mainnet`,rpcUrl:`https://proxy-api.avax.network/proxy/infura/mainnet`,networkToken:{type:t.NATIVE,name:`ETH`,symbol:`ETH`,decimals:18}},E={chainId:c.TESTNET,chainName:`Bitcoin Testnet`,rpcUrl:``,networkToken:{type:t.NATIVE,name:`Bitcoin`,symbol:`BTC`,decimals:8}},D={chainId:c.MAINNET,chainName:`Bitcoin Mainnet`,rpcUrl:``,networkToken:{type:t.NATIVE,name:`Bitcoin`,symbol:`BTC`,decimals:8}},O={chainId:l.MAINNET,chainName:`Solana`,rpcUrl:`https://proxy-api.avax.network/proxy/nownodes/sol`,networkToken:{type:t.NATIVE,name:`SOL`,symbol:`SOL`,decimals:9}},k={chainId:l.DEVNET,chainName:`Solana (Devnet)`,rpcUrl:`https://api.devnet.solana.com`,networkToken:{type:t.NATIVE,name:`SOL`,symbol:`SOL`,decimals:9}},A={type:t.NATIVE,name:`Avalanche`,symbol:`AVAX`,decimals:18,logoUri:`https://images.ctfassets.net/gcj8jwzm6086/5VHupNKwnDYJvqMENeV7iJ/fdd6326b7a82c8388e4ee9d4be7062d4/avalanche-avax-logo.svg`},j={type:t.NATIVE,name:`Ether`,symbol:`ETH`,decimals:18,logoUri:`https://images.ctfassets.net/gcj8jwzm6086/6l56QLVZmvacuBfjHBTThP/791d743dd2c526692562780c2325fedf/eth-circle__1_.svg`};let M=function(e){return e.AVALANCHE=`avalanche`,e.BITCOIN=`bitcoin`,e.ETHEREUM=`ethereum`,e.SOLANA=`solana`,e.UNKNOWN=`_unknown`,e}({}),N=function(e){return e[e.AVALANCHE_MAINNET=43114]=`AVALANCHE_MAINNET`,e[e.AVALANCHE_TESTNET=43113]=`AVALANCHE_TESTNET`,e[e.ETHEREUM_HOMESTEAD=1]=`ETHEREUM_HOMESTEAD`,e[e.ETHEREUM_TEST_SEPOLIA=11155111]=`ETHEREUM_TEST_SEPOLIA`,e[e.BITCOIN=0xfffffffffffeb]=`BITCOIN`,e[e.BITCOIN_TESTNET=0xfffffffffffea]=`BITCOIN_TESTNET`,e}({});const P={slow:`low`,normal:`medium`,fast:`high`};exports.AVALANCHE_CAIP2_TO_BLOCKCHAIN_ID_BY_NETWORK=_,exports.AVALANCHE_FUJI_CHAIN=v,exports.AVALANCHE_FUJI_P_CHAIN=x,exports.AVALANCHE_FUJI_X_CHAIN=C,exports.AVALANCHE_MAINNET_CHAIN=y,exports.AVALANCHE_MAINNET_P_CHAIN=b,exports.AVALANCHE_MAINNET_X_CHAIN=S,exports.AvalancheChainIds=o,exports.AvalancheFujiBlockchainChainIds=m,exports.AvalancheFujiBlockchainIds=g,exports.AvalancheMainnetBlockchainChainIds=p,exports.AvalancheMainnetBlockchainIds=h,exports.BITCOIN_MAINNET_CHAIN=D,exports.BITCOIN_TESTNET_CHAIN=E,exports.BTC_SERVICE_TYPES=r,exports.BaseChainIds=d,exports.BitcoinChainIds=c,exports.Blockchain=M,exports.ERC_ZERO_ADDRESS=`0x0000000000000000000000000000000000000000`,exports.ETHEREUM_MAINNET_CHAIN=T,exports.ETHEREUM_SEPOLIA_CHAIN=w,exports.EVM_SERVICE_TYPES=i,exports.Environment=e,exports.EthereumChainIds=s,exports.EvmChainId=N,exports.FEE_RATE_TIER_TO_BITCOIN=P,exports.HyperliquidChainIds=u,exports.NATIVE_AVAX=A,exports.NATIVE_ETH=j,exports.NATIVE_SOL_ADDRESS=`11111111111111111111111111111111`,exports.PolygonChainIds=f,exports.SOLANA_DEVNET_CHAIN=k,exports.SOLANA_MAINNET_CHAIN=O,exports.ServiceType=n,exports.SolanaChainIds=l,exports.TokenType=t,exports.TransferSignatureReason=a;
1
+ let e=function(e){return e.DEV=`dev`,e.PROD=`production`,e.TEST=`test`,e}({}),t=function(e){return e.NATIVE=`native`,e.ERC20=`erc20`,e.SPL=`spl`,e}({}),n=function(e){return e.AVALANCHE_CCT=`avalanche-cct`,e.AVALANCHE_EVM=`avalanche-evm`,e.LOMBARD_BTC_TO_BTCB=`lombard-btc-to-btcb`,e.LOMBARD_BTCB_TO_BTC=`lombard-btcb-to-btc`,e.MARKR=`markr`,e.WRAP_UNWRAP=`wrap-unwrap`,e}({});const r=[n.LOMBARD_BTCB_TO_BTC,n.LOMBARD_BTC_TO_BTCB],i=[n.AVALANCHE_EVM,n.WRAP_UNWRAP];let a=function(e){return e.AddressOwnership=`address-ownership`,e.AllowanceApproval=`allowance-approval`,e.AvalancheCrossChainExport=`avalanche-cross-chain-export`,e.AvalancheCrossChainImport=`avalanche-cross-chain-import`,e.TokensTransfer=`tokens-transfer`,e.WrapToken=`wrap-token`,e.HyperliquidAuthorize=`hyperliquid-authorize`,e.HyperliquidSendAsset=`hyperliquid-send-asset`,e.ScheduleRecurringSwap=`schedule-recurring-swap`,e.PauseRecurringSwap=`pause-recurring-swap`,e.ResumeRecurringSwap=`resume-recurring-swap`,e.CancelRecurringSwap=`cancel-recurring-swap`,e}({}),o=function(e){return e.FUJI=`eip155:43113`,e.MAINNET=`eip155:43114`,e}({}),s=function(e){return e.MAINNET=`eip155:1`,e.SEPOLIA=`eip155:11155111`,e}({}),c=function(e){return e.MAINNET=`bip122:000000000019d6689c085ae165831e93`,e.TESTNET=`bip122:000000000933ea01ad0ee984209779ba`,e}({}),l=function(e){return e.MAINNET=`solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp`,e.DEVNET=`solana:EtWTRABZaYq6iMfeYKouRu166VU2xqa1`,e}({}),u=function(e){return e.MAINNET=`eip155:1337`,e}({}),d=function(e){return e.MAINNET=`eip155:8453`,e.SEPOLIA=`eip155:84532`,e}({}),f=function(e){return e.MAINNET=`eip155:137`,e.AMOY=`eip155:80002`,e}({});const p={C:o.MAINNET,P:`avax:Rr9hnPVPxuUvrdCul-vjEsU1zmqKqRDo`,X:`avax:imji8papUf2EhV3le337w1vgFauqkJg-`},m={C:o.FUJI,P:`avax:Sj7NVE3jXTbJvwFAiu7OEUo_8g8ctXMG`,X:`avax:8AJTpRj3SAqv1e80Mtl9em08LhvKEbkl`},h={C:`2q9e4r6Mu3U68nU1fYjgbR6JvwrRx36CohpAX5UQxse55x1Q5`,P:`11111111111111111111111111111111LpoYY`,X:`2oYMBNV4eNHyqk2fjjV5nVQLDbtmNJzq5s3qs3Lo6ftnC6FByM`},g={C:`yH8D7ThNJkxmtkuv2jgBa4P1Rn3Qpr4pPr7QYNfcdoS6k6HWp`,P:`11111111111111111111111111111111LpoYY`,X:`2JVSBoinj9C2J33VntvzYtVJNZdN2NKiwwKjcumHUWEb5DbBrm`},_={mainnet:{[p.C]:h.C,[p.P]:h.P,[p.X]:h.X},fuji:{[m.C]:g.C,[m.P]:g.P,[m.X]:g.X}},v={chainId:o.FUJI,chainName:`Avalanche Fuji (C-Chain)`,networkToken:{type:t.NATIVE,name:`AVAX`,symbol:`AVAX`,decimals:18,logoUri:`https://images.ctfassets.net/gcj8jwzm6086/5VHupNKwnDYJvqMENeV7iJ/adb596bcc935136c0a1a587ede372f5b/avalanche-avax-logo.svg`},rpcUrl:`https://api.avax-test.network/ext/bc/C/rpc`},y={chainId:o.MAINNET,chainName:`Avalanche Mainnet (C-Chain)`,rpcUrl:`https://api.avax.network/ext/bc/C/rpc`,networkToken:{type:t.NATIVE,name:`AVAX`,symbol:`AVAX`,decimals:18,logoUri:`https://images.ctfassets.net/gcj8jwzm6086/5VHupNKwnDYJvqMENeV7iJ/adb596bcc935136c0a1a587ede372f5b/avalanche-avax-logo.svg`}},b={chainId:p.P,chainName:`Avalanche Mainnet (P-Chain)`,rpcUrl:`https://api.avax.network/ext/bc/P`,networkToken:{type:t.NATIVE,name:`AVAX`,symbol:`AVAX`,decimals:9,logoUri:`https://images.ctfassets.net/gcj8jwzm6086/5VHupNKwnDYJvqMENeV7iJ/adb596bcc935136c0a1a587ede372f5b/avalanche-avax-logo.svg`}},x={chainId:m.P,chainName:`Avalanche Fuji (P-Chain)`,rpcUrl:`https://api.avax-test.network/ext/bc/P`,networkToken:{type:t.NATIVE,name:`AVAX`,symbol:`AVAX`,decimals:9,logoUri:`https://images.ctfassets.net/gcj8jwzm6086/5VHupNKwnDYJvqMENeV7iJ/adb596bcc935136c0a1a587ede372f5b/avalanche-avax-logo.svg`}},S={chainId:p.X,chainName:`Avalanche Mainnet (X-Chain)`,rpcUrl:`https://api.avax.network/ext/bc/X`,networkToken:{type:t.NATIVE,name:`AVAX`,symbol:`AVAX`,decimals:9,logoUri:`https://images.ctfassets.net/gcj8jwzm6086/5VHupNKwnDYJvqMENeV7iJ/adb596bcc935136c0a1a587ede372f5b/avalanche-avax-logo.svg`}},C={chainId:m.X,chainName:`Avalanche Fuji (X-Chain)`,rpcUrl:`https://api.avax-test.network/ext/bc/X`,networkToken:{type:t.NATIVE,name:`AVAX`,symbol:`AVAX`,decimals:9,logoUri:`https://images.ctfassets.net/gcj8jwzm6086/5VHupNKwnDYJvqMENeV7iJ/adb596bcc935136c0a1a587ede372f5b/avalanche-avax-logo.svg`}},w={chainId:s.SEPOLIA,chainName:`Ethereum Sepolia`,rpcUrl:`https://proxy-api.avax.network/proxy/infura/sepolia`,networkToken:{type:t.NATIVE,name:`ETH`,symbol:`ETH`,decimals:18,logoUri:`https://images.ctfassets.net/gcj8jwzm6086/6l56QLVZmvacuBfjHBTThP/791d743dd2c526692562780c2325fedf/eth-circle__1_.svg`}},T={chainId:s.MAINNET,chainName:`Ethereum Mainnet`,rpcUrl:`https://proxy-api.avax.network/proxy/infura/mainnet`,networkToken:{type:t.NATIVE,name:`ETH`,symbol:`ETH`,decimals:18,logoUri:`https://images.ctfassets.net/gcj8jwzm6086/6l56QLVZmvacuBfjHBTThP/791d743dd2c526692562780c2325fedf/eth-circle__1_.svg`}},E={chainId:c.TESTNET,chainName:`Bitcoin Testnet`,rpcUrl:``,networkToken:{type:t.NATIVE,name:`Bitcoin`,symbol:`BTC`,decimals:8,logoUri:`https://images.ctfassets.net/gcj8jwzm6086/32zG83beysuk3j6ye3kdF2/6b7ea715d521e5a89a0280973e929cce/bitcoin-btc-logo__1_.svg`}},D={chainId:c.MAINNET,chainName:`Bitcoin Mainnet`,rpcUrl:``,networkToken:{type:t.NATIVE,name:`Bitcoin`,symbol:`BTC`,decimals:8,logoUri:`https://images.ctfassets.net/gcj8jwzm6086/32zG83beysuk3j6ye3kdF2/6b7ea715d521e5a89a0280973e929cce/bitcoin-btc-logo__1_.svg`}},O={chainId:l.MAINNET,chainName:`Solana`,rpcUrl:`https://proxy-api.avax.network/proxy/nownodes/sol`,networkToken:{type:t.NATIVE,name:`SOL`,symbol:`SOL`,decimals:9,logoUri:`https://images.ctfassets.net/gcj8jwzm6086/4VgCue74mbrtME1ZqEj7Y1/d9d29c801f8c2aab9fe4c6c69166364b/Network_Solana.svg`}},k={chainId:l.DEVNET,chainName:`Solana (Devnet)`,rpcUrl:`https://api.devnet.solana.com`,networkToken:{type:t.NATIVE,name:`SOL`,symbol:`SOL`,decimals:9,logoUri:`https://images.ctfassets.net/gcj8jwzm6086/4VgCue74mbrtME1ZqEj7Y1/d9d29c801f8c2aab9fe4c6c69166364b/Network_Solana.svg`}},A={type:t.NATIVE,name:`Avalanche`,symbol:`AVAX`,decimals:18,logoUri:`https://images.ctfassets.net/gcj8jwzm6086/5VHupNKwnDYJvqMENeV7iJ/adb596bcc935136c0a1a587ede372f5b/avalanche-avax-logo.svg`},j={type:t.NATIVE,name:`Ether`,symbol:`ETH`,decimals:18,logoUri:`https://images.ctfassets.net/gcj8jwzm6086/6l56QLVZmvacuBfjHBTThP/791d743dd2c526692562780c2325fedf/eth-circle__1_.svg`};let M=function(e){return e.AVALANCHE=`avalanche`,e.BITCOIN=`bitcoin`,e.ETHEREUM=`ethereum`,e.SOLANA=`solana`,e.UNKNOWN=`_unknown`,e}({}),N=function(e){return e[e.AVALANCHE_MAINNET=43114]=`AVALANCHE_MAINNET`,e[e.AVALANCHE_TESTNET=43113]=`AVALANCHE_TESTNET`,e[e.ETHEREUM_HOMESTEAD=1]=`ETHEREUM_HOMESTEAD`,e[e.ETHEREUM_TEST_SEPOLIA=11155111]=`ETHEREUM_TEST_SEPOLIA`,e[e.BITCOIN=0xfffffffffffeb]=`BITCOIN`,e[e.BITCOIN_TESTNET=0xfffffffffffea]=`BITCOIN_TESTNET`,e}({});const P={slow:`low`,normal:`medium`,fast:`high`};exports.AVALANCHE_CAIP2_TO_BLOCKCHAIN_ID_BY_NETWORK=_,exports.AVALANCHE_FUJI_CHAIN=v,exports.AVALANCHE_FUJI_P_CHAIN=x,exports.AVALANCHE_FUJI_X_CHAIN=C,exports.AVALANCHE_MAINNET_CHAIN=y,exports.AVALANCHE_MAINNET_P_CHAIN=b,exports.AVALANCHE_MAINNET_X_CHAIN=S,exports.AvalancheChainIds=o,exports.AvalancheFujiBlockchainChainIds=m,exports.AvalancheFujiBlockchainIds=g,exports.AvalancheMainnetBlockchainChainIds=p,exports.AvalancheMainnetBlockchainIds=h,exports.BITCOIN_MAINNET_CHAIN=D,exports.BITCOIN_TESTNET_CHAIN=E,exports.BTC_SERVICE_TYPES=r,exports.BaseChainIds=d,exports.BitcoinChainIds=c,exports.Blockchain=M,exports.ERC_ZERO_ADDRESS=`0x0000000000000000000000000000000000000000`,exports.ETHEREUM_MAINNET_CHAIN=T,exports.ETHEREUM_SEPOLIA_CHAIN=w,exports.EVM_SERVICE_TYPES=i,exports.Environment=e,exports.EthereumChainIds=s,exports.EvmChainId=N,exports.FEE_RATE_TIER_TO_BITCOIN=P,exports.HyperliquidChainIds=u,exports.NATIVE_AVAX=A,exports.NATIVE_ETH=j,exports.NATIVE_SOL_ADDRESS=`11111111111111111111111111111111`,exports.PolygonChainIds=f,exports.SOLANA_DEVNET_CHAIN=k,exports.SOLANA_MAINNET_CHAIN=O,exports.ServiceType=n,exports.SolanaChainIds=l,exports.TokenType=t,exports.TransferSignatureReason=a;
2
2
  //# sourceMappingURL=constants.cjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"constants.cjs","names":[],"sources":["../src/constants.ts"],"sourcesContent":["import type { Address as SolAddress } from '@solana/kit';\nimport type { Address as EvmAddress } from 'viem';\nimport type { NativeAsset } from './types/asset';\nimport type { BitcoinFeeRateTier } from './types/bitcoin';\nimport type { Caip2ChainId } from './types/caip';\nimport type { Chain } from './types/chain';\nimport type { FeeRateTier } from './types/fee';\n\nexport enum Environment {\n DEV = 'dev',\n PROD = 'production',\n TEST = 'test',\n}\n\nexport enum TokenType {\n NATIVE = 'native',\n ERC20 = 'erc20',\n SPL = 'spl',\n}\n\nexport enum ServiceType {\n /** Avalanche Cross-chain transfer service. Export/import between C/P/X Avalanche chains. */\n AVALANCHE_CCT = 'avalanche-cct',\n /** Bridge between EVM chains within Avalanche (or EVM-compatible flows). */\n AVALANCHE_EVM = 'avalanche-evm',\n /** Bitcoin → Avalanche. */\n LOMBARD_BTC_TO_BTCB = 'lombard-btc-to-btcb',\n /** Avalanche → Bitcoin. */\n LOMBARD_BTCB_TO_BTC = 'lombard-btcb-to-btc',\n MARKR = 'markr',\n /** Same-chain wrap/unwrap of native ETH ↔ WETH and AVAX ↔ WAVAX. */\n WRAP_UNWRAP = 'wrap-unwrap',\n}\n\nexport const BTC_SERVICE_TYPES: readonly [ServiceType.LOMBARD_BTCB_TO_BTC, ServiceType.LOMBARD_BTC_TO_BTCB] = [\n ServiceType.LOMBARD_BTCB_TO_BTC,\n ServiceType.LOMBARD_BTC_TO_BTCB,\n];\n\nexport const EVM_SERVICE_TYPES: readonly [ServiceType.AVALANCHE_EVM, ServiceType.WRAP_UNWRAP] = [\n ServiceType.AVALANCHE_EVM,\n ServiceType.WRAP_UNWRAP,\n];\n\n/** Reasons for user signatures during execution. */\nexport enum TransferSignatureReason {\n AddressOwnership = 'address-ownership',\n /** ERC-20 allowance approval for router/bridge. */\n AllowanceApproval = 'allowance-approval',\n /** Primary signature for cross-chain export transaction. */\n AvalancheCrossChainExport = 'avalanche-cross-chain-export',\n /** Primary signature for cross-chain import transaction. */\n AvalancheCrossChainImport = 'avalanche-cross-chain-import',\n /** The primary token movement call (swap or bridge submit). */\n TokensTransfer = 'tokens-transfer',\n /** Optional wrap/unwrap step for native token handling. */\n WrapToken = 'wrap-token',\n /** Hyperliquid 2-phase withdrawal: step 1, nonce-mapping authorization (Relay protocol). */\n HyperliquidAuthorize = 'hyperliquid-authorize',\n /** Hyperliquid 2-phase withdrawal: step 2, the `sendAsset` transfer. */\n HyperliquidSendAsset = 'hyperliquid-send-asset',\n /** Markr recurring: first-fill swap that schedules the recurring order on-chain. */\n ScheduleRecurringSwap = 'schedule-recurring-swap',\n /** Markr recurring: pause an active schedule (preserves allowance). */\n PauseRecurringSwap = 'pause-recurring-swap',\n /** Markr recurring: resume (unpause) a paused schedule. */\n ResumeRecurringSwap = 'resume-recurring-swap',\n /** Markr recurring: cancel an active or paused schedule. */\n CancelRecurringSwap = 'cancel-recurring-swap',\n}\n\nexport const ERC_ZERO_ADDRESS: EvmAddress = '0x0000000000000000000000000000000000000000';\nexport const NATIVE_SOL_ADDRESS: SolAddress = '11111111111111111111111111111111' as SolAddress;\n\nexport enum AvalancheChainIds {\n FUJI = 'eip155:43113',\n MAINNET = 'eip155:43114',\n}\n\nexport enum EthereumChainIds {\n MAINNET = 'eip155:1',\n SEPOLIA = 'eip155:11155111',\n}\n\nexport enum BitcoinChainIds {\n MAINNET = 'bip122:000000000019d6689c085ae165831e93',\n TESTNET = 'bip122:000000000933ea01ad0ee984209779ba',\n}\n\nexport enum SolanaChainIds {\n MAINNET = 'solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp',\n DEVNET = 'solana:EtWTRABZaYq6iMfeYKouRu166VU2xqa1',\n}\n\n/**\n * Hyperliquid is identified by CAIP-2 `eip155:1337` per Relay's convention.\n * It's an EVM-namespaced chain ID but has no real EVM execution — withdrawals\n * use a two-signature EIP-712 flow against Hyperliquid's `/exchange` API.\n */\nexport enum HyperliquidChainIds {\n MAINNET = 'eip155:1337',\n}\n\nexport enum BaseChainIds {\n MAINNET = 'eip155:8453',\n SEPOLIA = 'eip155:84532',\n}\n\nexport enum PolygonChainIds {\n MAINNET = 'eip155:137',\n AMOY = 'eip155:80002',\n}\n\nexport type AvalancheBlockchainAlias = 'C' | 'P' | 'X';\n\nexport const AvalancheMainnetBlockchainChainIds: Readonly<Record<AvalancheBlockchainAlias, Caip2ChainId>> = {\n C: AvalancheChainIds.MAINNET,\n P: 'avax:Rr9hnPVPxuUvrdCul-vjEsU1zmqKqRDo',\n X: 'avax:imji8papUf2EhV3le337w1vgFauqkJg-',\n};\n\nexport const AvalancheFujiBlockchainChainIds: Readonly<Record<AvalancheBlockchainAlias, Caip2ChainId>> = {\n C: AvalancheChainIds.FUJI,\n P: 'avax:Sj7NVE3jXTbJvwFAiu7OEUo_8g8ctXMG',\n X: 'avax:8AJTpRj3SAqv1e80Mtl9em08LhvKEbkl',\n};\n\nexport const AvalancheMainnetBlockchainIds: Readonly<Record<AvalancheBlockchainAlias, string>> = {\n C: '2q9e4r6Mu3U68nU1fYjgbR6JvwrRx36CohpAX5UQxse55x1Q5',\n P: '11111111111111111111111111111111LpoYY',\n X: '2oYMBNV4eNHyqk2fjjV5nVQLDbtmNJzq5s3qs3Lo6ftnC6FByM',\n};\n\nexport const AvalancheFujiBlockchainIds: Readonly<Record<AvalancheBlockchainAlias, string>> = {\n C: 'yH8D7ThNJkxmtkuv2jgBa4P1Rn3Qpr4pPr7QYNfcdoS6k6HWp',\n P: '11111111111111111111111111111111LpoYY',\n X: '2JVSBoinj9C2J33VntvzYtVJNZdN2NKiwwKjcumHUWEb5DbBrm',\n};\n\nexport const AVALANCHE_CAIP2_TO_BLOCKCHAIN_ID_BY_NETWORK: Readonly<{\n mainnet: Readonly<Record<Caip2ChainId, string>>;\n fuji: Readonly<Record<Caip2ChainId, string>>;\n}> = {\n mainnet: {\n [AvalancheMainnetBlockchainChainIds.C]: AvalancheMainnetBlockchainIds.C,\n [AvalancheMainnetBlockchainChainIds.P]: AvalancheMainnetBlockchainIds.P,\n [AvalancheMainnetBlockchainChainIds.X]: AvalancheMainnetBlockchainIds.X,\n },\n fuji: {\n [AvalancheFujiBlockchainChainIds.C]: AvalancheFujiBlockchainIds.C,\n [AvalancheFujiBlockchainChainIds.P]: AvalancheFujiBlockchainIds.P,\n [AvalancheFujiBlockchainChainIds.X]: AvalancheFujiBlockchainIds.X,\n },\n};\n\nexport const AVALANCHE_FUJI_CHAIN: Chain = {\n chainId: AvalancheChainIds.FUJI,\n chainName: 'Avalanche Fuji (C-Chain)',\n networkToken: {\n type: TokenType.NATIVE,\n name: 'AVAX',\n symbol: 'AVAX',\n decimals: 18,\n },\n rpcUrl: 'https://api.avax-test.network/ext/bc/C/rpc',\n};\n\nexport const AVALANCHE_MAINNET_CHAIN: Chain = {\n chainId: AvalancheChainIds.MAINNET,\n chainName: 'Avalanche Mainnet (C-Chain)',\n rpcUrl: 'https://api.avax.network/ext/bc/C/rpc',\n networkToken: {\n type: TokenType.NATIVE,\n name: 'AVAX',\n symbol: 'AVAX',\n decimals: 18,\n },\n};\n\nexport const AVALANCHE_MAINNET_P_CHAIN: Chain = {\n chainId: AvalancheMainnetBlockchainChainIds.P,\n chainName: 'Avalanche Mainnet (P-Chain)',\n rpcUrl: 'https://api.avax.network/ext/bc/P',\n networkToken: {\n type: TokenType.NATIVE,\n name: 'AVAX',\n symbol: 'AVAX',\n decimals: 9,\n },\n};\n\nexport const AVALANCHE_FUJI_P_CHAIN: Chain = {\n chainId: AvalancheFujiBlockchainChainIds.P,\n chainName: 'Avalanche Fuji (P-Chain)',\n rpcUrl: 'https://api.avax-test.network/ext/bc/P',\n networkToken: {\n type: TokenType.NATIVE,\n name: 'AVAX',\n symbol: 'AVAX',\n decimals: 9,\n },\n};\n\nexport const AVALANCHE_MAINNET_X_CHAIN: Chain = {\n chainId: AvalancheMainnetBlockchainChainIds.X,\n chainName: 'Avalanche Mainnet (X-Chain)',\n rpcUrl: 'https://api.avax.network/ext/bc/X',\n networkToken: {\n type: TokenType.NATIVE,\n name: 'AVAX',\n symbol: 'AVAX',\n decimals: 9,\n },\n};\n\nexport const AVALANCHE_FUJI_X_CHAIN: Chain = {\n chainId: AvalancheFujiBlockchainChainIds.X,\n chainName: 'Avalanche Fuji (X-Chain)',\n rpcUrl: 'https://api.avax-test.network/ext/bc/X',\n networkToken: {\n type: TokenType.NATIVE,\n name: 'AVAX',\n symbol: 'AVAX',\n decimals: 9,\n },\n};\n\nexport const ETHEREUM_SEPOLIA_CHAIN: Chain = {\n chainId: EthereumChainIds.SEPOLIA,\n chainName: 'Ethereum Sepolia',\n rpcUrl: 'https://proxy-api.avax.network/proxy/infura/sepolia',\n networkToken: {\n type: TokenType.NATIVE,\n name: 'ETH',\n symbol: 'ETH',\n decimals: 18,\n },\n};\n\nexport const ETHEREUM_MAINNET_CHAIN: Chain = {\n chainId: EthereumChainIds.MAINNET,\n chainName: 'Ethereum Mainnet',\n rpcUrl: 'https://proxy-api.avax.network/proxy/infura/mainnet',\n networkToken: {\n type: TokenType.NATIVE,\n name: 'ETH',\n symbol: 'ETH',\n decimals: 18,\n },\n};\n\nexport const BITCOIN_TESTNET_CHAIN: Chain = {\n chainId: BitcoinChainIds.TESTNET,\n chainName: 'Bitcoin Testnet',\n rpcUrl: '',\n networkToken: {\n type: TokenType.NATIVE,\n name: 'Bitcoin',\n symbol: 'BTC',\n decimals: 8,\n },\n};\n\nexport const BITCOIN_MAINNET_CHAIN: Chain = {\n chainId: BitcoinChainIds.MAINNET,\n chainName: 'Bitcoin Mainnet',\n rpcUrl: '',\n networkToken: {\n type: TokenType.NATIVE,\n name: 'Bitcoin',\n symbol: 'BTC',\n decimals: 8,\n },\n};\n\nexport const SOLANA_MAINNET_CHAIN: Chain = {\n chainId: SolanaChainIds.MAINNET,\n chainName: 'Solana',\n rpcUrl: 'https://proxy-api.avax.network/proxy/nownodes/sol',\n networkToken: {\n type: TokenType.NATIVE,\n name: 'SOL',\n symbol: 'SOL',\n decimals: 9,\n },\n};\n\nexport const SOLANA_DEVNET_CHAIN: Chain = {\n chainId: SolanaChainIds.DEVNET,\n chainName: 'Solana (Devnet)',\n rpcUrl: 'https://api.devnet.solana.com',\n networkToken: {\n type: TokenType.NATIVE,\n name: 'SOL',\n symbol: 'SOL',\n decimals: 9,\n },\n};\nexport const NATIVE_AVAX: NativeAsset = {\n type: TokenType.NATIVE,\n name: 'Avalanche',\n symbol: 'AVAX',\n decimals: 18,\n logoUri:\n 'https://images.ctfassets.net/gcj8jwzm6086/5VHupNKwnDYJvqMENeV7iJ/fdd6326b7a82c8388e4ee9d4be7062d4/avalanche-avax-logo.svg',\n};\nexport const NATIVE_ETH: NativeAsset = {\n type: TokenType.NATIVE,\n name: 'Ether',\n symbol: 'ETH',\n decimals: 18,\n logoUri:\n 'https://images.ctfassets.net/gcj8jwzm6086/6l56QLVZmvacuBfjHBTThP/791d743dd2c526692562780c2325fedf/eth-circle__1_.svg',\n};\n\nexport enum Blockchain {\n AVALANCHE = 'avalanche',\n BITCOIN = 'bitcoin',\n ETHEREUM = 'ethereum',\n SOLANA = 'solana',\n UNKNOWN = '_unknown',\n}\n\nexport enum EvmChainId {\n AVALANCHE_MAINNET = 43114,\n AVALANCHE_TESTNET = 43113,\n ETHEREUM_HOMESTEAD = 1,\n ETHEREUM_TEST_SEPOLIA = 11155111,\n /**\n * This is not a real chain ID, as Bitcoin does not have a chain ID.\n * It is used internally to represent Bitcoin in a way that avoids\n * conflicts with real EVM chain IDs.\n */\n BITCOIN = 4_503_599_627_370_476 - 1,\n /**\n * This is not a real chain ID, as Bitcoin does not have a chain ID.\n * It is used internally to represent Bitcoin in a way that avoids\n * conflicts with real EVM chain IDs.\n */\n BITCOIN_TESTNET = 4_503_599_627_370_476 - 2,\n}\n\n/**\n * Maps the unified {@link FeeRateTier} to the Bitcoin-specific\n * {@link BitcoinFeeRateTier} (`low | medium | high`).\n */\nexport const FEE_RATE_TIER_TO_BITCOIN: Record<FeeRateTier, BitcoinFeeRateTier> = {\n slow: 'low',\n normal: 'medium',\n fast: 'high',\n};\n"],"mappings":"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"}
1
+ {"version":3,"file":"constants.cjs","names":[],"sources":["../src/constants.ts"],"sourcesContent":["import type { Address as SolAddress } from '@solana/kit';\nimport type { Address as EvmAddress } from 'viem';\nimport type { NativeAsset } from './types/asset';\nimport type { BitcoinFeeRateTier } from './types/bitcoin';\nimport type { Caip2ChainId } from './types/caip';\nimport type { Chain } from './types/chain';\nimport type { FeeRateTier } from './types/fee';\n\nexport enum Environment {\n DEV = 'dev',\n PROD = 'production',\n TEST = 'test',\n}\n\nexport enum TokenType {\n NATIVE = 'native',\n ERC20 = 'erc20',\n SPL = 'spl',\n}\n\nexport enum ServiceType {\n /** Avalanche Cross-chain transfer service. Export/import between C/P/X Avalanche chains. */\n AVALANCHE_CCT = 'avalanche-cct',\n /** Bridge between EVM chains within Avalanche (or EVM-compatible flows). */\n AVALANCHE_EVM = 'avalanche-evm',\n /** Bitcoin → Avalanche. */\n LOMBARD_BTC_TO_BTCB = 'lombard-btc-to-btcb',\n /** Avalanche → Bitcoin. */\n LOMBARD_BTCB_TO_BTC = 'lombard-btcb-to-btc',\n MARKR = 'markr',\n /** Same-chain wrap/unwrap of native ETH ↔ WETH and AVAX ↔ WAVAX. */\n WRAP_UNWRAP = 'wrap-unwrap',\n}\n\nexport const BTC_SERVICE_TYPES: readonly [ServiceType.LOMBARD_BTCB_TO_BTC, ServiceType.LOMBARD_BTC_TO_BTCB] = [\n ServiceType.LOMBARD_BTCB_TO_BTC,\n ServiceType.LOMBARD_BTC_TO_BTCB,\n];\n\nexport const EVM_SERVICE_TYPES: readonly [ServiceType.AVALANCHE_EVM, ServiceType.WRAP_UNWRAP] = [\n ServiceType.AVALANCHE_EVM,\n ServiceType.WRAP_UNWRAP,\n];\n\n/** Reasons for user signatures during execution. */\nexport enum TransferSignatureReason {\n AddressOwnership = 'address-ownership',\n /** ERC-20 allowance approval for router/bridge. */\n AllowanceApproval = 'allowance-approval',\n /** Primary signature for cross-chain export transaction. */\n AvalancheCrossChainExport = 'avalanche-cross-chain-export',\n /** Primary signature for cross-chain import transaction. */\n AvalancheCrossChainImport = 'avalanche-cross-chain-import',\n /** The primary token movement call (swap or bridge submit). */\n TokensTransfer = 'tokens-transfer',\n /** Optional wrap/unwrap step for native token handling. */\n WrapToken = 'wrap-token',\n /** Hyperliquid 2-phase withdrawal: step 1, nonce-mapping authorization (Relay protocol). */\n HyperliquidAuthorize = 'hyperliquid-authorize',\n /** Hyperliquid 2-phase withdrawal: step 2, the `sendAsset` transfer. */\n HyperliquidSendAsset = 'hyperliquid-send-asset',\n /** Markr recurring: first-fill swap that schedules the recurring order on-chain. */\n ScheduleRecurringSwap = 'schedule-recurring-swap',\n /** Markr recurring: pause an active schedule (preserves allowance). */\n PauseRecurringSwap = 'pause-recurring-swap',\n /** Markr recurring: resume (unpause) a paused schedule. */\n ResumeRecurringSwap = 'resume-recurring-swap',\n /** Markr recurring: cancel an active or paused schedule. */\n CancelRecurringSwap = 'cancel-recurring-swap',\n}\n\nexport const ERC_ZERO_ADDRESS: EvmAddress = '0x0000000000000000000000000000000000000000';\nexport const NATIVE_SOL_ADDRESS: SolAddress = '11111111111111111111111111111111' as SolAddress;\n\nexport enum AvalancheChainIds {\n FUJI = 'eip155:43113',\n MAINNET = 'eip155:43114',\n}\n\nexport enum EthereumChainIds {\n MAINNET = 'eip155:1',\n SEPOLIA = 'eip155:11155111',\n}\n\nexport enum BitcoinChainIds {\n MAINNET = 'bip122:000000000019d6689c085ae165831e93',\n TESTNET = 'bip122:000000000933ea01ad0ee984209779ba',\n}\n\nexport enum SolanaChainIds {\n MAINNET = 'solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp',\n DEVNET = 'solana:EtWTRABZaYq6iMfeYKouRu166VU2xqa1',\n}\n\n/**\n * Hyperliquid is identified by CAIP-2 `eip155:1337` per Relay's convention.\n * It's an EVM-namespaced chain ID but has no real EVM execution — withdrawals\n * use a two-signature EIP-712 flow against Hyperliquid's `/exchange` API.\n */\nexport enum HyperliquidChainIds {\n MAINNET = 'eip155:1337',\n}\n\nexport enum BaseChainIds {\n MAINNET = 'eip155:8453',\n SEPOLIA = 'eip155:84532',\n}\n\nexport enum PolygonChainIds {\n MAINNET = 'eip155:137',\n AMOY = 'eip155:80002',\n}\n\nexport type AvalancheBlockchainAlias = 'C' | 'P' | 'X';\n\nexport const AvalancheMainnetBlockchainChainIds: Readonly<Record<AvalancheBlockchainAlias, Caip2ChainId>> = {\n C: AvalancheChainIds.MAINNET,\n P: 'avax:Rr9hnPVPxuUvrdCul-vjEsU1zmqKqRDo',\n X: 'avax:imji8papUf2EhV3le337w1vgFauqkJg-',\n};\n\nexport const AvalancheFujiBlockchainChainIds: Readonly<Record<AvalancheBlockchainAlias, Caip2ChainId>> = {\n C: AvalancheChainIds.FUJI,\n P: 'avax:Sj7NVE3jXTbJvwFAiu7OEUo_8g8ctXMG',\n X: 'avax:8AJTpRj3SAqv1e80Mtl9em08LhvKEbkl',\n};\n\nexport const AvalancheMainnetBlockchainIds: Readonly<Record<AvalancheBlockchainAlias, string>> = {\n C: '2q9e4r6Mu3U68nU1fYjgbR6JvwrRx36CohpAX5UQxse55x1Q5',\n P: '11111111111111111111111111111111LpoYY',\n X: '2oYMBNV4eNHyqk2fjjV5nVQLDbtmNJzq5s3qs3Lo6ftnC6FByM',\n};\n\nexport const AvalancheFujiBlockchainIds: Readonly<Record<AvalancheBlockchainAlias, string>> = {\n C: 'yH8D7ThNJkxmtkuv2jgBa4P1Rn3Qpr4pPr7QYNfcdoS6k6HWp',\n P: '11111111111111111111111111111111LpoYY',\n X: '2JVSBoinj9C2J33VntvzYtVJNZdN2NKiwwKjcumHUWEb5DbBrm',\n};\n\nexport const AVALANCHE_CAIP2_TO_BLOCKCHAIN_ID_BY_NETWORK: Readonly<{\n mainnet: Readonly<Record<Caip2ChainId, string>>;\n fuji: Readonly<Record<Caip2ChainId, string>>;\n}> = {\n mainnet: {\n [AvalancheMainnetBlockchainChainIds.C]: AvalancheMainnetBlockchainIds.C,\n [AvalancheMainnetBlockchainChainIds.P]: AvalancheMainnetBlockchainIds.P,\n [AvalancheMainnetBlockchainChainIds.X]: AvalancheMainnetBlockchainIds.X,\n },\n fuji: {\n [AvalancheFujiBlockchainChainIds.C]: AvalancheFujiBlockchainIds.C,\n [AvalancheFujiBlockchainChainIds.P]: AvalancheFujiBlockchainIds.P,\n [AvalancheFujiBlockchainChainIds.X]: AvalancheFujiBlockchainIds.X,\n },\n};\n\nexport const AVALANCHE_FUJI_CHAIN: Chain = {\n chainId: AvalancheChainIds.FUJI,\n chainName: 'Avalanche Fuji (C-Chain)',\n networkToken: {\n type: TokenType.NATIVE,\n name: 'AVAX',\n symbol: 'AVAX',\n decimals: 18,\n logoUri:\n 'https://images.ctfassets.net/gcj8jwzm6086/5VHupNKwnDYJvqMENeV7iJ/adb596bcc935136c0a1a587ede372f5b/avalanche-avax-logo.svg',\n },\n rpcUrl: 'https://api.avax-test.network/ext/bc/C/rpc',\n};\n\nexport const AVALANCHE_MAINNET_CHAIN: Chain = {\n chainId: AvalancheChainIds.MAINNET,\n chainName: 'Avalanche Mainnet (C-Chain)',\n rpcUrl: 'https://api.avax.network/ext/bc/C/rpc',\n networkToken: {\n type: TokenType.NATIVE,\n name: 'AVAX',\n symbol: 'AVAX',\n decimals: 18,\n logoUri:\n 'https://images.ctfassets.net/gcj8jwzm6086/5VHupNKwnDYJvqMENeV7iJ/adb596bcc935136c0a1a587ede372f5b/avalanche-avax-logo.svg',\n },\n};\n\nexport const AVALANCHE_MAINNET_P_CHAIN: Chain = {\n chainId: AvalancheMainnetBlockchainChainIds.P,\n chainName: 'Avalanche Mainnet (P-Chain)',\n rpcUrl: 'https://api.avax.network/ext/bc/P',\n networkToken: {\n type: TokenType.NATIVE,\n name: 'AVAX',\n symbol: 'AVAX',\n decimals: 9,\n logoUri:\n 'https://images.ctfassets.net/gcj8jwzm6086/5VHupNKwnDYJvqMENeV7iJ/adb596bcc935136c0a1a587ede372f5b/avalanche-avax-logo.svg',\n },\n};\n\nexport const AVALANCHE_FUJI_P_CHAIN: Chain = {\n chainId: AvalancheFujiBlockchainChainIds.P,\n chainName: 'Avalanche Fuji (P-Chain)',\n rpcUrl: 'https://api.avax-test.network/ext/bc/P',\n networkToken: {\n type: TokenType.NATIVE,\n name: 'AVAX',\n symbol: 'AVAX',\n decimals: 9,\n logoUri:\n 'https://images.ctfassets.net/gcj8jwzm6086/5VHupNKwnDYJvqMENeV7iJ/adb596bcc935136c0a1a587ede372f5b/avalanche-avax-logo.svg',\n },\n};\n\nexport const AVALANCHE_MAINNET_X_CHAIN: Chain = {\n chainId: AvalancheMainnetBlockchainChainIds.X,\n chainName: 'Avalanche Mainnet (X-Chain)',\n rpcUrl: 'https://api.avax.network/ext/bc/X',\n networkToken: {\n type: TokenType.NATIVE,\n name: 'AVAX',\n symbol: 'AVAX',\n decimals: 9,\n logoUri:\n 'https://images.ctfassets.net/gcj8jwzm6086/5VHupNKwnDYJvqMENeV7iJ/adb596bcc935136c0a1a587ede372f5b/avalanche-avax-logo.svg',\n },\n};\n\nexport const AVALANCHE_FUJI_X_CHAIN: Chain = {\n chainId: AvalancheFujiBlockchainChainIds.X,\n chainName: 'Avalanche Fuji (X-Chain)',\n rpcUrl: 'https://api.avax-test.network/ext/bc/X',\n networkToken: {\n type: TokenType.NATIVE,\n name: 'AVAX',\n symbol: 'AVAX',\n decimals: 9,\n logoUri:\n 'https://images.ctfassets.net/gcj8jwzm6086/5VHupNKwnDYJvqMENeV7iJ/adb596bcc935136c0a1a587ede372f5b/avalanche-avax-logo.svg',\n },\n};\n\nexport const ETHEREUM_SEPOLIA_CHAIN: Chain = {\n chainId: EthereumChainIds.SEPOLIA,\n chainName: 'Ethereum Sepolia',\n rpcUrl: 'https://proxy-api.avax.network/proxy/infura/sepolia',\n networkToken: {\n type: TokenType.NATIVE,\n name: 'ETH',\n symbol: 'ETH',\n decimals: 18,\n logoUri:\n 'https://images.ctfassets.net/gcj8jwzm6086/6l56QLVZmvacuBfjHBTThP/791d743dd2c526692562780c2325fedf/eth-circle__1_.svg',\n },\n};\n\nexport const ETHEREUM_MAINNET_CHAIN: Chain = {\n chainId: EthereumChainIds.MAINNET,\n chainName: 'Ethereum Mainnet',\n rpcUrl: 'https://proxy-api.avax.network/proxy/infura/mainnet',\n networkToken: {\n type: TokenType.NATIVE,\n name: 'ETH',\n symbol: 'ETH',\n decimals: 18,\n logoUri:\n 'https://images.ctfassets.net/gcj8jwzm6086/6l56QLVZmvacuBfjHBTThP/791d743dd2c526692562780c2325fedf/eth-circle__1_.svg',\n },\n};\n\nexport const BITCOIN_TESTNET_CHAIN: Chain = {\n chainId: BitcoinChainIds.TESTNET,\n chainName: 'Bitcoin Testnet',\n rpcUrl: '',\n networkToken: {\n type: TokenType.NATIVE,\n name: 'Bitcoin',\n symbol: 'BTC',\n decimals: 8,\n logoUri:\n 'https://images.ctfassets.net/gcj8jwzm6086/32zG83beysuk3j6ye3kdF2/6b7ea715d521e5a89a0280973e929cce/bitcoin-btc-logo__1_.svg',\n },\n};\n\nexport const BITCOIN_MAINNET_CHAIN: Chain = {\n chainId: BitcoinChainIds.MAINNET,\n chainName: 'Bitcoin Mainnet',\n rpcUrl: '',\n networkToken: {\n type: TokenType.NATIVE,\n name: 'Bitcoin',\n symbol: 'BTC',\n decimals: 8,\n logoUri:\n 'https://images.ctfassets.net/gcj8jwzm6086/32zG83beysuk3j6ye3kdF2/6b7ea715d521e5a89a0280973e929cce/bitcoin-btc-logo__1_.svg',\n },\n};\n\nexport const SOLANA_MAINNET_CHAIN: Chain = {\n chainId: SolanaChainIds.MAINNET,\n chainName: 'Solana',\n rpcUrl: 'https://proxy-api.avax.network/proxy/nownodes/sol',\n networkToken: {\n type: TokenType.NATIVE,\n name: 'SOL',\n symbol: 'SOL',\n decimals: 9,\n logoUri:\n 'https://images.ctfassets.net/gcj8jwzm6086/4VgCue74mbrtME1ZqEj7Y1/d9d29c801f8c2aab9fe4c6c69166364b/Network_Solana.svg',\n },\n};\n\nexport const SOLANA_DEVNET_CHAIN: Chain = {\n chainId: SolanaChainIds.DEVNET,\n chainName: 'Solana (Devnet)',\n rpcUrl: 'https://api.devnet.solana.com',\n networkToken: {\n type: TokenType.NATIVE,\n name: 'SOL',\n symbol: 'SOL',\n decimals: 9,\n logoUri:\n 'https://images.ctfassets.net/gcj8jwzm6086/4VgCue74mbrtME1ZqEj7Y1/d9d29c801f8c2aab9fe4c6c69166364b/Network_Solana.svg',\n },\n};\nexport const NATIVE_AVAX: NativeAsset = {\n type: TokenType.NATIVE,\n name: 'Avalanche',\n symbol: 'AVAX',\n decimals: 18,\n logoUri:\n 'https://images.ctfassets.net/gcj8jwzm6086/5VHupNKwnDYJvqMENeV7iJ/adb596bcc935136c0a1a587ede372f5b/avalanche-avax-logo.svg',\n};\nexport const NATIVE_ETH: NativeAsset = {\n type: TokenType.NATIVE,\n name: 'Ether',\n symbol: 'ETH',\n decimals: 18,\n logoUri:\n 'https://images.ctfassets.net/gcj8jwzm6086/6l56QLVZmvacuBfjHBTThP/791d743dd2c526692562780c2325fedf/eth-circle__1_.svg',\n};\n\nexport enum Blockchain {\n AVALANCHE = 'avalanche',\n BITCOIN = 'bitcoin',\n ETHEREUM = 'ethereum',\n SOLANA = 'solana',\n UNKNOWN = '_unknown',\n}\n\nexport enum EvmChainId {\n AVALANCHE_MAINNET = 43114,\n AVALANCHE_TESTNET = 43113,\n ETHEREUM_HOMESTEAD = 1,\n ETHEREUM_TEST_SEPOLIA = 11155111,\n /**\n * This is not a real chain ID, as Bitcoin does not have a chain ID.\n * It is used internally to represent Bitcoin in a way that avoids\n * conflicts with real EVM chain IDs.\n */\n BITCOIN = 4_503_599_627_370_476 - 1,\n /**\n * This is not a real chain ID, as Bitcoin does not have a chain ID.\n * It is used internally to represent Bitcoin in a way that avoids\n * conflicts with real EVM chain IDs.\n */\n BITCOIN_TESTNET = 4_503_599_627_370_476 - 2,\n}\n\n/**\n * Maps the unified {@link FeeRateTier} to the Bitcoin-specific\n * {@link BitcoinFeeRateTier} (`low | medium | high`).\n */\nexport const FEE_RATE_TIER_TO_BITCOIN: Record<FeeRateTier, BitcoinFeeRateTier> = {\n slow: 'low',\n normal: 'medium',\n fast: 'high',\n};\n"],"mappings":"AAQA,IAAY,EAAL,SAAA,EAAA,OACL,GAAA,IAAA,MACA,EAAA,KAAA,aACA,EAAA,KAAA,aACD,CAEW,EAAL,SAAA,EAAA,OACL,GAAA,OAAA,SACA,EAAA,MAAA,QACA,EAAA,IAAA,YACD,CAEW,EAAL,SAAA,EAAA,OAEL,GAAA,cAAA,gBAEA,EAAA,cAAA,gBAEA,EAAA,oBAAA,sBAEA,EAAA,oBAAA,sBACA,EAAA,MAAA,QAEA,EAAA,YAAA,oBACD,CAED,MAAa,EAAiG,CAC5G,EAAY,oBACZ,EAAY,oBACb,CAEY,EAAmF,CAC9F,EAAY,cACZ,EAAY,YACb,CAGD,IAAY,EAAL,SAAA,EAAA,OACL,GAAA,iBAAA,oBAEA,EAAA,kBAAA,qBAEA,EAAA,0BAAA,+BAEA,EAAA,0BAAA,+BAEA,EAAA,eAAA,kBAEA,EAAA,UAAA,aAEA,EAAA,qBAAA,wBAEA,EAAA,qBAAA,yBAEA,EAAA,sBAAA,0BAEA,EAAA,mBAAA,uBAEA,EAAA,oBAAA,wBAEA,EAAA,oBAAA,8BACD,CAKW,EAAL,SAAA,EAAA,OACL,GAAA,KAAA,eACA,EAAA,QAAA,qBACD,CAEW,EAAL,SAAA,EAAA,OACL,GAAA,QAAA,WACA,EAAA,QAAA,wBACD,CAEW,EAAL,SAAA,EAAA,OACL,GAAA,QAAA,0CACA,EAAA,QAAA,gDACD,CAEW,EAAL,SAAA,EAAA,OACL,GAAA,QAAA,0CACA,EAAA,OAAA,gDACD,CAOW,EAAL,SAAA,EAAA,OACL,GAAA,QAAA,oBACD,CAEW,EAAL,SAAA,EAAA,OACL,GAAA,QAAA,cACA,EAAA,QAAA,qBACD,CAEW,EAAL,SAAA,EAAA,OACL,GAAA,QAAA,aACA,EAAA,KAAA,qBACD,CAID,MAAa,EAA+F,CAC1G,EAAG,EAAkB,QACrB,EAAG,wCACH,EAAG,wCACJ,CAEY,EAA4F,CACvG,EAAG,EAAkB,KACrB,EAAG,wCACH,EAAG,wCACJ,CAEY,EAAoF,CAC/F,EAAG,oDACH,EAAG,wCACH,EAAG,qDACJ,CAEY,EAAiF,CAC5F,EAAG,oDACH,EAAG,wCACH,EAAG,qDACJ,CAEY,EAGR,CACH,QAAS,EACN,EAAmC,GAAI,EAA8B,GACrE,EAAmC,GAAI,EAA8B,GACrE,EAAmC,GAAI,EAA8B,EACvE,CACD,KAAM,EACH,EAAgC,GAAI,EAA2B,GAC/D,EAAgC,GAAI,EAA2B,GAC/D,EAAgC,GAAI,EAA2B,EACjE,CACF,CAEY,EAA8B,CACzC,QAAS,EAAkB,KAC3B,UAAW,2BACX,aAAc,CACZ,KAAM,EAAU,OAChB,KAAM,OACN,OAAQ,OACR,SAAU,GACV,QACE,4HACH,CACD,OAAQ,6CACT,CAEY,EAAiC,CAC5C,QAAS,EAAkB,QAC3B,UAAW,8BACX,OAAQ,wCACR,aAAc,CACZ,KAAM,EAAU,OAChB,KAAM,OACN,OAAQ,OACR,SAAU,GACV,QACE,4HACH,CACF,CAEY,EAAmC,CAC9C,QAAS,EAAmC,EAC5C,UAAW,8BACX,OAAQ,oCACR,aAAc,CACZ,KAAM,EAAU,OAChB,KAAM,OACN,OAAQ,OACR,SAAU,EACV,QACE,4HACH,CACF,CAEY,EAAgC,CAC3C,QAAS,EAAgC,EACzC,UAAW,2BACX,OAAQ,yCACR,aAAc,CACZ,KAAM,EAAU,OAChB,KAAM,OACN,OAAQ,OACR,SAAU,EACV,QACE,4HACH,CACF,CAEY,EAAmC,CAC9C,QAAS,EAAmC,EAC5C,UAAW,8BACX,OAAQ,oCACR,aAAc,CACZ,KAAM,EAAU,OAChB,KAAM,OACN,OAAQ,OACR,SAAU,EACV,QACE,4HACH,CACF,CAEY,EAAgC,CAC3C,QAAS,EAAgC,EACzC,UAAW,2BACX,OAAQ,yCACR,aAAc,CACZ,KAAM,EAAU,OAChB,KAAM,OACN,OAAQ,OACR,SAAU,EACV,QACE,4HACH,CACF,CAEY,EAAgC,CAC3C,QAAS,EAAiB,QAC1B,UAAW,mBACX,OAAQ,sDACR,aAAc,CACZ,KAAM,EAAU,OAChB,KAAM,MACN,OAAQ,MACR,SAAU,GACV,QACE,uHACH,CACF,CAEY,EAAgC,CAC3C,QAAS,EAAiB,QAC1B,UAAW,mBACX,OAAQ,sDACR,aAAc,CACZ,KAAM,EAAU,OAChB,KAAM,MACN,OAAQ,MACR,SAAU,GACV,QACE,uHACH,CACF,CAEY,EAA+B,CAC1C,QAAS,EAAgB,QACzB,UAAW,kBACX,OAAQ,GACR,aAAc,CACZ,KAAM,EAAU,OAChB,KAAM,UACN,OAAQ,MACR,SAAU,EACV,QACE,6HACH,CACF,CAEY,EAA+B,CAC1C,QAAS,EAAgB,QACzB,UAAW,kBACX,OAAQ,GACR,aAAc,CACZ,KAAM,EAAU,OAChB,KAAM,UACN,OAAQ,MACR,SAAU,EACV,QACE,6HACH,CACF,CAEY,EAA8B,CACzC,QAAS,EAAe,QACxB,UAAW,SACX,OAAQ,oDACR,aAAc,CACZ,KAAM,EAAU,OAChB,KAAM,MACN,OAAQ,MACR,SAAU,EACV,QACE,uHACH,CACF,CAEY,EAA6B,CACxC,QAAS,EAAe,OACxB,UAAW,kBACX,OAAQ,gCACR,aAAc,CACZ,KAAM,EAAU,OAChB,KAAM,MACN,OAAQ,MACR,SAAU,EACV,QACE,uHACH,CACF,CACY,EAA2B,CACtC,KAAM,EAAU,OAChB,KAAM,YACN,OAAQ,OACR,SAAU,GACV,QACE,4HACH,CACY,EAA0B,CACrC,KAAM,EAAU,OAChB,KAAM,QACN,OAAQ,MACR,SAAU,GACV,QACE,uHACH,CAED,IAAY,EAAL,SAAA,EAAA,OACL,GAAA,UAAA,YACA,EAAA,QAAA,UACA,EAAA,SAAA,WACA,EAAA,OAAA,SACA,EAAA,QAAA,iBACD,CAEW,EAAL,SAAA,EAAA,OACL,GAAA,EAAA,kBAAA,OAAA,oBACA,EAAA,EAAA,kBAAA,OAAA,oBACA,EAAA,EAAA,mBAAA,GAAA,qBACA,EAAA,EAAA,sBAAA,UAAA,wBAMA,EAAA,EAAA,QAAA,iBAAA,UAMA,EAAA,EAAA,gBAAA,iBAAA,wBACD,CAMD,MAAa,EAAoE,CAC/E,KAAM,MACN,OAAQ,SACR,KAAM,OACP"}
package/dist/constants.js CHANGED
@@ -1,2 +1,2 @@
1
- let e=function(e){return e.DEV=`dev`,e.PROD=`production`,e.TEST=`test`,e}({}),t=function(e){return e.NATIVE=`native`,e.ERC20=`erc20`,e.SPL=`spl`,e}({}),n=function(e){return e.AVALANCHE_CCT=`avalanche-cct`,e.AVALANCHE_EVM=`avalanche-evm`,e.LOMBARD_BTC_TO_BTCB=`lombard-btc-to-btcb`,e.LOMBARD_BTCB_TO_BTC=`lombard-btcb-to-btc`,e.MARKR=`markr`,e.WRAP_UNWRAP=`wrap-unwrap`,e}({});const r=[n.LOMBARD_BTCB_TO_BTC,n.LOMBARD_BTC_TO_BTCB],i=[n.AVALANCHE_EVM,n.WRAP_UNWRAP];let a=function(e){return e.AddressOwnership=`address-ownership`,e.AllowanceApproval=`allowance-approval`,e.AvalancheCrossChainExport=`avalanche-cross-chain-export`,e.AvalancheCrossChainImport=`avalanche-cross-chain-import`,e.TokensTransfer=`tokens-transfer`,e.WrapToken=`wrap-token`,e.HyperliquidAuthorize=`hyperliquid-authorize`,e.HyperliquidSendAsset=`hyperliquid-send-asset`,e.ScheduleRecurringSwap=`schedule-recurring-swap`,e.PauseRecurringSwap=`pause-recurring-swap`,e.ResumeRecurringSwap=`resume-recurring-swap`,e.CancelRecurringSwap=`cancel-recurring-swap`,e}({});const o=`0x0000000000000000000000000000000000000000`,s=`11111111111111111111111111111111`;let c=function(e){return e.FUJI=`eip155:43113`,e.MAINNET=`eip155:43114`,e}({}),l=function(e){return e.MAINNET=`eip155:1`,e.SEPOLIA=`eip155:11155111`,e}({}),u=function(e){return e.MAINNET=`bip122:000000000019d6689c085ae165831e93`,e.TESTNET=`bip122:000000000933ea01ad0ee984209779ba`,e}({}),d=function(e){return e.MAINNET=`solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp`,e.DEVNET=`solana:EtWTRABZaYq6iMfeYKouRu166VU2xqa1`,e}({}),f=function(e){return e.MAINNET=`eip155:1337`,e}({}),p=function(e){return e.MAINNET=`eip155:8453`,e.SEPOLIA=`eip155:84532`,e}({}),m=function(e){return e.MAINNET=`eip155:137`,e.AMOY=`eip155:80002`,e}({});const h={C:c.MAINNET,P:`avax:Rr9hnPVPxuUvrdCul-vjEsU1zmqKqRDo`,X:`avax:imji8papUf2EhV3le337w1vgFauqkJg-`},g={C:c.FUJI,P:`avax:Sj7NVE3jXTbJvwFAiu7OEUo_8g8ctXMG`,X:`avax:8AJTpRj3SAqv1e80Mtl9em08LhvKEbkl`},_={C:`2q9e4r6Mu3U68nU1fYjgbR6JvwrRx36CohpAX5UQxse55x1Q5`,P:`11111111111111111111111111111111LpoYY`,X:`2oYMBNV4eNHyqk2fjjV5nVQLDbtmNJzq5s3qs3Lo6ftnC6FByM`},v={C:`yH8D7ThNJkxmtkuv2jgBa4P1Rn3Qpr4pPr7QYNfcdoS6k6HWp`,P:`11111111111111111111111111111111LpoYY`,X:`2JVSBoinj9C2J33VntvzYtVJNZdN2NKiwwKjcumHUWEb5DbBrm`},y={mainnet:{[h.C]:_.C,[h.P]:_.P,[h.X]:_.X},fuji:{[g.C]:v.C,[g.P]:v.P,[g.X]:v.X}},b={chainId:c.FUJI,chainName:`Avalanche Fuji (C-Chain)`,networkToken:{type:t.NATIVE,name:`AVAX`,symbol:`AVAX`,decimals:18},rpcUrl:`https://api.avax-test.network/ext/bc/C/rpc`},x={chainId:c.MAINNET,chainName:`Avalanche Mainnet (C-Chain)`,rpcUrl:`https://api.avax.network/ext/bc/C/rpc`,networkToken:{type:t.NATIVE,name:`AVAX`,symbol:`AVAX`,decimals:18}},S={chainId:h.P,chainName:`Avalanche Mainnet (P-Chain)`,rpcUrl:`https://api.avax.network/ext/bc/P`,networkToken:{type:t.NATIVE,name:`AVAX`,symbol:`AVAX`,decimals:9}},C={chainId:g.P,chainName:`Avalanche Fuji (P-Chain)`,rpcUrl:`https://api.avax-test.network/ext/bc/P`,networkToken:{type:t.NATIVE,name:`AVAX`,symbol:`AVAX`,decimals:9}},w={chainId:h.X,chainName:`Avalanche Mainnet (X-Chain)`,rpcUrl:`https://api.avax.network/ext/bc/X`,networkToken:{type:t.NATIVE,name:`AVAX`,symbol:`AVAX`,decimals:9}},T={chainId:g.X,chainName:`Avalanche Fuji (X-Chain)`,rpcUrl:`https://api.avax-test.network/ext/bc/X`,networkToken:{type:t.NATIVE,name:`AVAX`,symbol:`AVAX`,decimals:9}},E={chainId:l.SEPOLIA,chainName:`Ethereum Sepolia`,rpcUrl:`https://proxy-api.avax.network/proxy/infura/sepolia`,networkToken:{type:t.NATIVE,name:`ETH`,symbol:`ETH`,decimals:18}},D={chainId:l.MAINNET,chainName:`Ethereum Mainnet`,rpcUrl:`https://proxy-api.avax.network/proxy/infura/mainnet`,networkToken:{type:t.NATIVE,name:`ETH`,symbol:`ETH`,decimals:18}},O={chainId:u.TESTNET,chainName:`Bitcoin Testnet`,rpcUrl:``,networkToken:{type:t.NATIVE,name:`Bitcoin`,symbol:`BTC`,decimals:8}},k={chainId:u.MAINNET,chainName:`Bitcoin Mainnet`,rpcUrl:``,networkToken:{type:t.NATIVE,name:`Bitcoin`,symbol:`BTC`,decimals:8}},A={chainId:d.MAINNET,chainName:`Solana`,rpcUrl:`https://proxy-api.avax.network/proxy/nownodes/sol`,networkToken:{type:t.NATIVE,name:`SOL`,symbol:`SOL`,decimals:9}},j={chainId:d.DEVNET,chainName:`Solana (Devnet)`,rpcUrl:`https://api.devnet.solana.com`,networkToken:{type:t.NATIVE,name:`SOL`,symbol:`SOL`,decimals:9}},M={type:t.NATIVE,name:`Avalanche`,symbol:`AVAX`,decimals:18,logoUri:`https://images.ctfassets.net/gcj8jwzm6086/5VHupNKwnDYJvqMENeV7iJ/fdd6326b7a82c8388e4ee9d4be7062d4/avalanche-avax-logo.svg`},N={type:t.NATIVE,name:`Ether`,symbol:`ETH`,decimals:18,logoUri:`https://images.ctfassets.net/gcj8jwzm6086/6l56QLVZmvacuBfjHBTThP/791d743dd2c526692562780c2325fedf/eth-circle__1_.svg`};let P=function(e){return e.AVALANCHE=`avalanche`,e.BITCOIN=`bitcoin`,e.ETHEREUM=`ethereum`,e.SOLANA=`solana`,e.UNKNOWN=`_unknown`,e}({}),F=function(e){return e[e.AVALANCHE_MAINNET=43114]=`AVALANCHE_MAINNET`,e[e.AVALANCHE_TESTNET=43113]=`AVALANCHE_TESTNET`,e[e.ETHEREUM_HOMESTEAD=1]=`ETHEREUM_HOMESTEAD`,e[e.ETHEREUM_TEST_SEPOLIA=11155111]=`ETHEREUM_TEST_SEPOLIA`,e[e.BITCOIN=0xfffffffffffeb]=`BITCOIN`,e[e.BITCOIN_TESTNET=0xfffffffffffea]=`BITCOIN_TESTNET`,e}({});const I={slow:`low`,normal:`medium`,fast:`high`};export{y as AVALANCHE_CAIP2_TO_BLOCKCHAIN_ID_BY_NETWORK,b as AVALANCHE_FUJI_CHAIN,C as AVALANCHE_FUJI_P_CHAIN,T as AVALANCHE_FUJI_X_CHAIN,x as AVALANCHE_MAINNET_CHAIN,S as AVALANCHE_MAINNET_P_CHAIN,w as AVALANCHE_MAINNET_X_CHAIN,c as AvalancheChainIds,g as AvalancheFujiBlockchainChainIds,v as AvalancheFujiBlockchainIds,h as AvalancheMainnetBlockchainChainIds,_ as AvalancheMainnetBlockchainIds,k as BITCOIN_MAINNET_CHAIN,O as BITCOIN_TESTNET_CHAIN,r as BTC_SERVICE_TYPES,p as BaseChainIds,u as BitcoinChainIds,P as Blockchain,o as ERC_ZERO_ADDRESS,D as ETHEREUM_MAINNET_CHAIN,E as ETHEREUM_SEPOLIA_CHAIN,i as EVM_SERVICE_TYPES,e as Environment,l as EthereumChainIds,F as EvmChainId,I as FEE_RATE_TIER_TO_BITCOIN,f as HyperliquidChainIds,M as NATIVE_AVAX,N as NATIVE_ETH,s as NATIVE_SOL_ADDRESS,m as PolygonChainIds,j as SOLANA_DEVNET_CHAIN,A as SOLANA_MAINNET_CHAIN,n as ServiceType,d as SolanaChainIds,t as TokenType,a as TransferSignatureReason};
1
+ let e=function(e){return e.DEV=`dev`,e.PROD=`production`,e.TEST=`test`,e}({}),t=function(e){return e.NATIVE=`native`,e.ERC20=`erc20`,e.SPL=`spl`,e}({}),n=function(e){return e.AVALANCHE_CCT=`avalanche-cct`,e.AVALANCHE_EVM=`avalanche-evm`,e.LOMBARD_BTC_TO_BTCB=`lombard-btc-to-btcb`,e.LOMBARD_BTCB_TO_BTC=`lombard-btcb-to-btc`,e.MARKR=`markr`,e.WRAP_UNWRAP=`wrap-unwrap`,e}({});const r=[n.LOMBARD_BTCB_TO_BTC,n.LOMBARD_BTC_TO_BTCB],i=[n.AVALANCHE_EVM,n.WRAP_UNWRAP];let a=function(e){return e.AddressOwnership=`address-ownership`,e.AllowanceApproval=`allowance-approval`,e.AvalancheCrossChainExport=`avalanche-cross-chain-export`,e.AvalancheCrossChainImport=`avalanche-cross-chain-import`,e.TokensTransfer=`tokens-transfer`,e.WrapToken=`wrap-token`,e.HyperliquidAuthorize=`hyperliquid-authorize`,e.HyperliquidSendAsset=`hyperliquid-send-asset`,e.ScheduleRecurringSwap=`schedule-recurring-swap`,e.PauseRecurringSwap=`pause-recurring-swap`,e.ResumeRecurringSwap=`resume-recurring-swap`,e.CancelRecurringSwap=`cancel-recurring-swap`,e}({});const o=`0x0000000000000000000000000000000000000000`,s=`11111111111111111111111111111111`;let c=function(e){return e.FUJI=`eip155:43113`,e.MAINNET=`eip155:43114`,e}({}),l=function(e){return e.MAINNET=`eip155:1`,e.SEPOLIA=`eip155:11155111`,e}({}),u=function(e){return e.MAINNET=`bip122:000000000019d6689c085ae165831e93`,e.TESTNET=`bip122:000000000933ea01ad0ee984209779ba`,e}({}),d=function(e){return e.MAINNET=`solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp`,e.DEVNET=`solana:EtWTRABZaYq6iMfeYKouRu166VU2xqa1`,e}({}),f=function(e){return e.MAINNET=`eip155:1337`,e}({}),p=function(e){return e.MAINNET=`eip155:8453`,e.SEPOLIA=`eip155:84532`,e}({}),m=function(e){return e.MAINNET=`eip155:137`,e.AMOY=`eip155:80002`,e}({});const h={C:c.MAINNET,P:`avax:Rr9hnPVPxuUvrdCul-vjEsU1zmqKqRDo`,X:`avax:imji8papUf2EhV3le337w1vgFauqkJg-`},g={C:c.FUJI,P:`avax:Sj7NVE3jXTbJvwFAiu7OEUo_8g8ctXMG`,X:`avax:8AJTpRj3SAqv1e80Mtl9em08LhvKEbkl`},_={C:`2q9e4r6Mu3U68nU1fYjgbR6JvwrRx36CohpAX5UQxse55x1Q5`,P:`11111111111111111111111111111111LpoYY`,X:`2oYMBNV4eNHyqk2fjjV5nVQLDbtmNJzq5s3qs3Lo6ftnC6FByM`},v={C:`yH8D7ThNJkxmtkuv2jgBa4P1Rn3Qpr4pPr7QYNfcdoS6k6HWp`,P:`11111111111111111111111111111111LpoYY`,X:`2JVSBoinj9C2J33VntvzYtVJNZdN2NKiwwKjcumHUWEb5DbBrm`},y={mainnet:{[h.C]:_.C,[h.P]:_.P,[h.X]:_.X},fuji:{[g.C]:v.C,[g.P]:v.P,[g.X]:v.X}},b={chainId:c.FUJI,chainName:`Avalanche Fuji (C-Chain)`,networkToken:{type:t.NATIVE,name:`AVAX`,symbol:`AVAX`,decimals:18,logoUri:`https://images.ctfassets.net/gcj8jwzm6086/5VHupNKwnDYJvqMENeV7iJ/adb596bcc935136c0a1a587ede372f5b/avalanche-avax-logo.svg`},rpcUrl:`https://api.avax-test.network/ext/bc/C/rpc`},x={chainId:c.MAINNET,chainName:`Avalanche Mainnet (C-Chain)`,rpcUrl:`https://api.avax.network/ext/bc/C/rpc`,networkToken:{type:t.NATIVE,name:`AVAX`,symbol:`AVAX`,decimals:18,logoUri:`https://images.ctfassets.net/gcj8jwzm6086/5VHupNKwnDYJvqMENeV7iJ/adb596bcc935136c0a1a587ede372f5b/avalanche-avax-logo.svg`}},S={chainId:h.P,chainName:`Avalanche Mainnet (P-Chain)`,rpcUrl:`https://api.avax.network/ext/bc/P`,networkToken:{type:t.NATIVE,name:`AVAX`,symbol:`AVAX`,decimals:9,logoUri:`https://images.ctfassets.net/gcj8jwzm6086/5VHupNKwnDYJvqMENeV7iJ/adb596bcc935136c0a1a587ede372f5b/avalanche-avax-logo.svg`}},C={chainId:g.P,chainName:`Avalanche Fuji (P-Chain)`,rpcUrl:`https://api.avax-test.network/ext/bc/P`,networkToken:{type:t.NATIVE,name:`AVAX`,symbol:`AVAX`,decimals:9,logoUri:`https://images.ctfassets.net/gcj8jwzm6086/5VHupNKwnDYJvqMENeV7iJ/adb596bcc935136c0a1a587ede372f5b/avalanche-avax-logo.svg`}},w={chainId:h.X,chainName:`Avalanche Mainnet (X-Chain)`,rpcUrl:`https://api.avax.network/ext/bc/X`,networkToken:{type:t.NATIVE,name:`AVAX`,symbol:`AVAX`,decimals:9,logoUri:`https://images.ctfassets.net/gcj8jwzm6086/5VHupNKwnDYJvqMENeV7iJ/adb596bcc935136c0a1a587ede372f5b/avalanche-avax-logo.svg`}},T={chainId:g.X,chainName:`Avalanche Fuji (X-Chain)`,rpcUrl:`https://api.avax-test.network/ext/bc/X`,networkToken:{type:t.NATIVE,name:`AVAX`,symbol:`AVAX`,decimals:9,logoUri:`https://images.ctfassets.net/gcj8jwzm6086/5VHupNKwnDYJvqMENeV7iJ/adb596bcc935136c0a1a587ede372f5b/avalanche-avax-logo.svg`}},E={chainId:l.SEPOLIA,chainName:`Ethereum Sepolia`,rpcUrl:`https://proxy-api.avax.network/proxy/infura/sepolia`,networkToken:{type:t.NATIVE,name:`ETH`,symbol:`ETH`,decimals:18,logoUri:`https://images.ctfassets.net/gcj8jwzm6086/6l56QLVZmvacuBfjHBTThP/791d743dd2c526692562780c2325fedf/eth-circle__1_.svg`}},D={chainId:l.MAINNET,chainName:`Ethereum Mainnet`,rpcUrl:`https://proxy-api.avax.network/proxy/infura/mainnet`,networkToken:{type:t.NATIVE,name:`ETH`,symbol:`ETH`,decimals:18,logoUri:`https://images.ctfassets.net/gcj8jwzm6086/6l56QLVZmvacuBfjHBTThP/791d743dd2c526692562780c2325fedf/eth-circle__1_.svg`}},O={chainId:u.TESTNET,chainName:`Bitcoin Testnet`,rpcUrl:``,networkToken:{type:t.NATIVE,name:`Bitcoin`,symbol:`BTC`,decimals:8,logoUri:`https://images.ctfassets.net/gcj8jwzm6086/32zG83beysuk3j6ye3kdF2/6b7ea715d521e5a89a0280973e929cce/bitcoin-btc-logo__1_.svg`}},k={chainId:u.MAINNET,chainName:`Bitcoin Mainnet`,rpcUrl:``,networkToken:{type:t.NATIVE,name:`Bitcoin`,symbol:`BTC`,decimals:8,logoUri:`https://images.ctfassets.net/gcj8jwzm6086/32zG83beysuk3j6ye3kdF2/6b7ea715d521e5a89a0280973e929cce/bitcoin-btc-logo__1_.svg`}},A={chainId:d.MAINNET,chainName:`Solana`,rpcUrl:`https://proxy-api.avax.network/proxy/nownodes/sol`,networkToken:{type:t.NATIVE,name:`SOL`,symbol:`SOL`,decimals:9,logoUri:`https://images.ctfassets.net/gcj8jwzm6086/4VgCue74mbrtME1ZqEj7Y1/d9d29c801f8c2aab9fe4c6c69166364b/Network_Solana.svg`}},j={chainId:d.DEVNET,chainName:`Solana (Devnet)`,rpcUrl:`https://api.devnet.solana.com`,networkToken:{type:t.NATIVE,name:`SOL`,symbol:`SOL`,decimals:9,logoUri:`https://images.ctfassets.net/gcj8jwzm6086/4VgCue74mbrtME1ZqEj7Y1/d9d29c801f8c2aab9fe4c6c69166364b/Network_Solana.svg`}},M={type:t.NATIVE,name:`Avalanche`,symbol:`AVAX`,decimals:18,logoUri:`https://images.ctfassets.net/gcj8jwzm6086/5VHupNKwnDYJvqMENeV7iJ/adb596bcc935136c0a1a587ede372f5b/avalanche-avax-logo.svg`},N={type:t.NATIVE,name:`Ether`,symbol:`ETH`,decimals:18,logoUri:`https://images.ctfassets.net/gcj8jwzm6086/6l56QLVZmvacuBfjHBTThP/791d743dd2c526692562780c2325fedf/eth-circle__1_.svg`};let P=function(e){return e.AVALANCHE=`avalanche`,e.BITCOIN=`bitcoin`,e.ETHEREUM=`ethereum`,e.SOLANA=`solana`,e.UNKNOWN=`_unknown`,e}({}),F=function(e){return e[e.AVALANCHE_MAINNET=43114]=`AVALANCHE_MAINNET`,e[e.AVALANCHE_TESTNET=43113]=`AVALANCHE_TESTNET`,e[e.ETHEREUM_HOMESTEAD=1]=`ETHEREUM_HOMESTEAD`,e[e.ETHEREUM_TEST_SEPOLIA=11155111]=`ETHEREUM_TEST_SEPOLIA`,e[e.BITCOIN=0xfffffffffffeb]=`BITCOIN`,e[e.BITCOIN_TESTNET=0xfffffffffffea]=`BITCOIN_TESTNET`,e}({});const I={slow:`low`,normal:`medium`,fast:`high`};export{y as AVALANCHE_CAIP2_TO_BLOCKCHAIN_ID_BY_NETWORK,b as AVALANCHE_FUJI_CHAIN,C as AVALANCHE_FUJI_P_CHAIN,T as AVALANCHE_FUJI_X_CHAIN,x as AVALANCHE_MAINNET_CHAIN,S as AVALANCHE_MAINNET_P_CHAIN,w as AVALANCHE_MAINNET_X_CHAIN,c as AvalancheChainIds,g as AvalancheFujiBlockchainChainIds,v as AvalancheFujiBlockchainIds,h as AvalancheMainnetBlockchainChainIds,_ as AvalancheMainnetBlockchainIds,k as BITCOIN_MAINNET_CHAIN,O as BITCOIN_TESTNET_CHAIN,r as BTC_SERVICE_TYPES,p as BaseChainIds,u as BitcoinChainIds,P as Blockchain,o as ERC_ZERO_ADDRESS,D as ETHEREUM_MAINNET_CHAIN,E as ETHEREUM_SEPOLIA_CHAIN,i as EVM_SERVICE_TYPES,e as Environment,l as EthereumChainIds,F as EvmChainId,I as FEE_RATE_TIER_TO_BITCOIN,f as HyperliquidChainIds,M as NATIVE_AVAX,N as NATIVE_ETH,s as NATIVE_SOL_ADDRESS,m as PolygonChainIds,j as SOLANA_DEVNET_CHAIN,A as SOLANA_MAINNET_CHAIN,n as ServiceType,d as SolanaChainIds,t as TokenType,a as TransferSignatureReason};
2
2
  //# sourceMappingURL=constants.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"constants.js","names":[],"sources":["../src/constants.ts"],"sourcesContent":["import type { Address as SolAddress } from '@solana/kit';\nimport type { Address as EvmAddress } from 'viem';\nimport type { NativeAsset } from './types/asset';\nimport type { BitcoinFeeRateTier } from './types/bitcoin';\nimport type { Caip2ChainId } from './types/caip';\nimport type { Chain } from './types/chain';\nimport type { FeeRateTier } from './types/fee';\n\nexport enum Environment {\n DEV = 'dev',\n PROD = 'production',\n TEST = 'test',\n}\n\nexport enum TokenType {\n NATIVE = 'native',\n ERC20 = 'erc20',\n SPL = 'spl',\n}\n\nexport enum ServiceType {\n /** Avalanche Cross-chain transfer service. Export/import between C/P/X Avalanche chains. */\n AVALANCHE_CCT = 'avalanche-cct',\n /** Bridge between EVM chains within Avalanche (or EVM-compatible flows). */\n AVALANCHE_EVM = 'avalanche-evm',\n /** Bitcoin → Avalanche. */\n LOMBARD_BTC_TO_BTCB = 'lombard-btc-to-btcb',\n /** Avalanche → Bitcoin. */\n LOMBARD_BTCB_TO_BTC = 'lombard-btcb-to-btc',\n MARKR = 'markr',\n /** Same-chain wrap/unwrap of native ETH ↔ WETH and AVAX ↔ WAVAX. */\n WRAP_UNWRAP = 'wrap-unwrap',\n}\n\nexport const BTC_SERVICE_TYPES: readonly [ServiceType.LOMBARD_BTCB_TO_BTC, ServiceType.LOMBARD_BTC_TO_BTCB] = [\n ServiceType.LOMBARD_BTCB_TO_BTC,\n ServiceType.LOMBARD_BTC_TO_BTCB,\n];\n\nexport const EVM_SERVICE_TYPES: readonly [ServiceType.AVALANCHE_EVM, ServiceType.WRAP_UNWRAP] = [\n ServiceType.AVALANCHE_EVM,\n ServiceType.WRAP_UNWRAP,\n];\n\n/** Reasons for user signatures during execution. */\nexport enum TransferSignatureReason {\n AddressOwnership = 'address-ownership',\n /** ERC-20 allowance approval for router/bridge. */\n AllowanceApproval = 'allowance-approval',\n /** Primary signature for cross-chain export transaction. */\n AvalancheCrossChainExport = 'avalanche-cross-chain-export',\n /** Primary signature for cross-chain import transaction. */\n AvalancheCrossChainImport = 'avalanche-cross-chain-import',\n /** The primary token movement call (swap or bridge submit). */\n TokensTransfer = 'tokens-transfer',\n /** Optional wrap/unwrap step for native token handling. */\n WrapToken = 'wrap-token',\n /** Hyperliquid 2-phase withdrawal: step 1, nonce-mapping authorization (Relay protocol). */\n HyperliquidAuthorize = 'hyperliquid-authorize',\n /** Hyperliquid 2-phase withdrawal: step 2, the `sendAsset` transfer. */\n HyperliquidSendAsset = 'hyperliquid-send-asset',\n /** Markr recurring: first-fill swap that schedules the recurring order on-chain. */\n ScheduleRecurringSwap = 'schedule-recurring-swap',\n /** Markr recurring: pause an active schedule (preserves allowance). */\n PauseRecurringSwap = 'pause-recurring-swap',\n /** Markr recurring: resume (unpause) a paused schedule. */\n ResumeRecurringSwap = 'resume-recurring-swap',\n /** Markr recurring: cancel an active or paused schedule. */\n CancelRecurringSwap = 'cancel-recurring-swap',\n}\n\nexport const ERC_ZERO_ADDRESS: EvmAddress = '0x0000000000000000000000000000000000000000';\nexport const NATIVE_SOL_ADDRESS: SolAddress = '11111111111111111111111111111111' as SolAddress;\n\nexport enum AvalancheChainIds {\n FUJI = 'eip155:43113',\n MAINNET = 'eip155:43114',\n}\n\nexport enum EthereumChainIds {\n MAINNET = 'eip155:1',\n SEPOLIA = 'eip155:11155111',\n}\n\nexport enum BitcoinChainIds {\n MAINNET = 'bip122:000000000019d6689c085ae165831e93',\n TESTNET = 'bip122:000000000933ea01ad0ee984209779ba',\n}\n\nexport enum SolanaChainIds {\n MAINNET = 'solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp',\n DEVNET = 'solana:EtWTRABZaYq6iMfeYKouRu166VU2xqa1',\n}\n\n/**\n * Hyperliquid is identified by CAIP-2 `eip155:1337` per Relay's convention.\n * It's an EVM-namespaced chain ID but has no real EVM execution — withdrawals\n * use a two-signature EIP-712 flow against Hyperliquid's `/exchange` API.\n */\nexport enum HyperliquidChainIds {\n MAINNET = 'eip155:1337',\n}\n\nexport enum BaseChainIds {\n MAINNET = 'eip155:8453',\n SEPOLIA = 'eip155:84532',\n}\n\nexport enum PolygonChainIds {\n MAINNET = 'eip155:137',\n AMOY = 'eip155:80002',\n}\n\nexport type AvalancheBlockchainAlias = 'C' | 'P' | 'X';\n\nexport const AvalancheMainnetBlockchainChainIds: Readonly<Record<AvalancheBlockchainAlias, Caip2ChainId>> = {\n C: AvalancheChainIds.MAINNET,\n P: 'avax:Rr9hnPVPxuUvrdCul-vjEsU1zmqKqRDo',\n X: 'avax:imji8papUf2EhV3le337w1vgFauqkJg-',\n};\n\nexport const AvalancheFujiBlockchainChainIds: Readonly<Record<AvalancheBlockchainAlias, Caip2ChainId>> = {\n C: AvalancheChainIds.FUJI,\n P: 'avax:Sj7NVE3jXTbJvwFAiu7OEUo_8g8ctXMG',\n X: 'avax:8AJTpRj3SAqv1e80Mtl9em08LhvKEbkl',\n};\n\nexport const AvalancheMainnetBlockchainIds: Readonly<Record<AvalancheBlockchainAlias, string>> = {\n C: '2q9e4r6Mu3U68nU1fYjgbR6JvwrRx36CohpAX5UQxse55x1Q5',\n P: '11111111111111111111111111111111LpoYY',\n X: '2oYMBNV4eNHyqk2fjjV5nVQLDbtmNJzq5s3qs3Lo6ftnC6FByM',\n};\n\nexport const AvalancheFujiBlockchainIds: Readonly<Record<AvalancheBlockchainAlias, string>> = {\n C: 'yH8D7ThNJkxmtkuv2jgBa4P1Rn3Qpr4pPr7QYNfcdoS6k6HWp',\n P: '11111111111111111111111111111111LpoYY',\n X: '2JVSBoinj9C2J33VntvzYtVJNZdN2NKiwwKjcumHUWEb5DbBrm',\n};\n\nexport const AVALANCHE_CAIP2_TO_BLOCKCHAIN_ID_BY_NETWORK: Readonly<{\n mainnet: Readonly<Record<Caip2ChainId, string>>;\n fuji: Readonly<Record<Caip2ChainId, string>>;\n}> = {\n mainnet: {\n [AvalancheMainnetBlockchainChainIds.C]: AvalancheMainnetBlockchainIds.C,\n [AvalancheMainnetBlockchainChainIds.P]: AvalancheMainnetBlockchainIds.P,\n [AvalancheMainnetBlockchainChainIds.X]: AvalancheMainnetBlockchainIds.X,\n },\n fuji: {\n [AvalancheFujiBlockchainChainIds.C]: AvalancheFujiBlockchainIds.C,\n [AvalancheFujiBlockchainChainIds.P]: AvalancheFujiBlockchainIds.P,\n [AvalancheFujiBlockchainChainIds.X]: AvalancheFujiBlockchainIds.X,\n },\n};\n\nexport const AVALANCHE_FUJI_CHAIN: Chain = {\n chainId: AvalancheChainIds.FUJI,\n chainName: 'Avalanche Fuji (C-Chain)',\n networkToken: {\n type: TokenType.NATIVE,\n name: 'AVAX',\n symbol: 'AVAX',\n decimals: 18,\n },\n rpcUrl: 'https://api.avax-test.network/ext/bc/C/rpc',\n};\n\nexport const AVALANCHE_MAINNET_CHAIN: Chain = {\n chainId: AvalancheChainIds.MAINNET,\n chainName: 'Avalanche Mainnet (C-Chain)',\n rpcUrl: 'https://api.avax.network/ext/bc/C/rpc',\n networkToken: {\n type: TokenType.NATIVE,\n name: 'AVAX',\n symbol: 'AVAX',\n decimals: 18,\n },\n};\n\nexport const AVALANCHE_MAINNET_P_CHAIN: Chain = {\n chainId: AvalancheMainnetBlockchainChainIds.P,\n chainName: 'Avalanche Mainnet (P-Chain)',\n rpcUrl: 'https://api.avax.network/ext/bc/P',\n networkToken: {\n type: TokenType.NATIVE,\n name: 'AVAX',\n symbol: 'AVAX',\n decimals: 9,\n },\n};\n\nexport const AVALANCHE_FUJI_P_CHAIN: Chain = {\n chainId: AvalancheFujiBlockchainChainIds.P,\n chainName: 'Avalanche Fuji (P-Chain)',\n rpcUrl: 'https://api.avax-test.network/ext/bc/P',\n networkToken: {\n type: TokenType.NATIVE,\n name: 'AVAX',\n symbol: 'AVAX',\n decimals: 9,\n },\n};\n\nexport const AVALANCHE_MAINNET_X_CHAIN: Chain = {\n chainId: AvalancheMainnetBlockchainChainIds.X,\n chainName: 'Avalanche Mainnet (X-Chain)',\n rpcUrl: 'https://api.avax.network/ext/bc/X',\n networkToken: {\n type: TokenType.NATIVE,\n name: 'AVAX',\n symbol: 'AVAX',\n decimals: 9,\n },\n};\n\nexport const AVALANCHE_FUJI_X_CHAIN: Chain = {\n chainId: AvalancheFujiBlockchainChainIds.X,\n chainName: 'Avalanche Fuji (X-Chain)',\n rpcUrl: 'https://api.avax-test.network/ext/bc/X',\n networkToken: {\n type: TokenType.NATIVE,\n name: 'AVAX',\n symbol: 'AVAX',\n decimals: 9,\n },\n};\n\nexport const ETHEREUM_SEPOLIA_CHAIN: Chain = {\n chainId: EthereumChainIds.SEPOLIA,\n chainName: 'Ethereum Sepolia',\n rpcUrl: 'https://proxy-api.avax.network/proxy/infura/sepolia',\n networkToken: {\n type: TokenType.NATIVE,\n name: 'ETH',\n symbol: 'ETH',\n decimals: 18,\n },\n};\n\nexport const ETHEREUM_MAINNET_CHAIN: Chain = {\n chainId: EthereumChainIds.MAINNET,\n chainName: 'Ethereum Mainnet',\n rpcUrl: 'https://proxy-api.avax.network/proxy/infura/mainnet',\n networkToken: {\n type: TokenType.NATIVE,\n name: 'ETH',\n symbol: 'ETH',\n decimals: 18,\n },\n};\n\nexport const BITCOIN_TESTNET_CHAIN: Chain = {\n chainId: BitcoinChainIds.TESTNET,\n chainName: 'Bitcoin Testnet',\n rpcUrl: '',\n networkToken: {\n type: TokenType.NATIVE,\n name: 'Bitcoin',\n symbol: 'BTC',\n decimals: 8,\n },\n};\n\nexport const BITCOIN_MAINNET_CHAIN: Chain = {\n chainId: BitcoinChainIds.MAINNET,\n chainName: 'Bitcoin Mainnet',\n rpcUrl: '',\n networkToken: {\n type: TokenType.NATIVE,\n name: 'Bitcoin',\n symbol: 'BTC',\n decimals: 8,\n },\n};\n\nexport const SOLANA_MAINNET_CHAIN: Chain = {\n chainId: SolanaChainIds.MAINNET,\n chainName: 'Solana',\n rpcUrl: 'https://proxy-api.avax.network/proxy/nownodes/sol',\n networkToken: {\n type: TokenType.NATIVE,\n name: 'SOL',\n symbol: 'SOL',\n decimals: 9,\n },\n};\n\nexport const SOLANA_DEVNET_CHAIN: Chain = {\n chainId: SolanaChainIds.DEVNET,\n chainName: 'Solana (Devnet)',\n rpcUrl: 'https://api.devnet.solana.com',\n networkToken: {\n type: TokenType.NATIVE,\n name: 'SOL',\n symbol: 'SOL',\n decimals: 9,\n },\n};\nexport const NATIVE_AVAX: NativeAsset = {\n type: TokenType.NATIVE,\n name: 'Avalanche',\n symbol: 'AVAX',\n decimals: 18,\n logoUri:\n 'https://images.ctfassets.net/gcj8jwzm6086/5VHupNKwnDYJvqMENeV7iJ/fdd6326b7a82c8388e4ee9d4be7062d4/avalanche-avax-logo.svg',\n};\nexport const NATIVE_ETH: NativeAsset = {\n type: TokenType.NATIVE,\n name: 'Ether',\n symbol: 'ETH',\n decimals: 18,\n logoUri:\n 'https://images.ctfassets.net/gcj8jwzm6086/6l56QLVZmvacuBfjHBTThP/791d743dd2c526692562780c2325fedf/eth-circle__1_.svg',\n};\n\nexport enum Blockchain {\n AVALANCHE = 'avalanche',\n BITCOIN = 'bitcoin',\n ETHEREUM = 'ethereum',\n SOLANA = 'solana',\n UNKNOWN = '_unknown',\n}\n\nexport enum EvmChainId {\n AVALANCHE_MAINNET = 43114,\n AVALANCHE_TESTNET = 43113,\n ETHEREUM_HOMESTEAD = 1,\n ETHEREUM_TEST_SEPOLIA = 11155111,\n /**\n * This is not a real chain ID, as Bitcoin does not have a chain ID.\n * It is used internally to represent Bitcoin in a way that avoids\n * conflicts with real EVM chain IDs.\n */\n BITCOIN = 4_503_599_627_370_476 - 1,\n /**\n * This is not a real chain ID, as Bitcoin does not have a chain ID.\n * It is used internally to represent Bitcoin in a way that avoids\n * conflicts with real EVM chain IDs.\n */\n BITCOIN_TESTNET = 4_503_599_627_370_476 - 2,\n}\n\n/**\n * Maps the unified {@link FeeRateTier} to the Bitcoin-specific\n * {@link BitcoinFeeRateTier} (`low | medium | high`).\n */\nexport const FEE_RATE_TIER_TO_BITCOIN: Record<FeeRateTier, BitcoinFeeRateTier> = {\n slow: 'low',\n normal: 'medium',\n fast: 'high',\n};\n"],"mappings":"AAQA,IAAY,EAAL,SAAA,EAAA,OACL,GAAA,IAAA,MACA,EAAA,KAAA,aACA,EAAA,KAAA,aACD,CAEW,EAAL,SAAA,EAAA,OACL,GAAA,OAAA,SACA,EAAA,MAAA,QACA,EAAA,IAAA,YACD,CAEW,EAAL,SAAA,EAAA,OAEL,GAAA,cAAA,gBAEA,EAAA,cAAA,gBAEA,EAAA,oBAAA,sBAEA,EAAA,oBAAA,sBACA,EAAA,MAAA,QAEA,EAAA,YAAA,oBACD,CAED,MAAa,EAAiG,CAC5G,EAAY,oBACZ,EAAY,oBACb,CAEY,EAAmF,CAC9F,EAAY,cACZ,EAAY,YACb,CAGD,IAAY,EAAL,SAAA,EAAA,OACL,GAAA,iBAAA,oBAEA,EAAA,kBAAA,qBAEA,EAAA,0BAAA,+BAEA,EAAA,0BAAA,+BAEA,EAAA,eAAA,kBAEA,EAAA,UAAA,aAEA,EAAA,qBAAA,wBAEA,EAAA,qBAAA,yBAEA,EAAA,sBAAA,0BAEA,EAAA,mBAAA,uBAEA,EAAA,oBAAA,wBAEA,EAAA,oBAAA,8BACD,CAED,MAAa,EAA+B,6CAC/B,EAAiC,mCAE9C,IAAY,EAAL,SAAA,EAAA,OACL,GAAA,KAAA,eACA,EAAA,QAAA,qBACD,CAEW,EAAL,SAAA,EAAA,OACL,GAAA,QAAA,WACA,EAAA,QAAA,wBACD,CAEW,EAAL,SAAA,EAAA,OACL,GAAA,QAAA,0CACA,EAAA,QAAA,gDACD,CAEW,EAAL,SAAA,EAAA,OACL,GAAA,QAAA,0CACA,EAAA,OAAA,gDACD,CAOW,EAAL,SAAA,EAAA,OACL,GAAA,QAAA,oBACD,CAEW,EAAL,SAAA,EAAA,OACL,GAAA,QAAA,cACA,EAAA,QAAA,qBACD,CAEW,EAAL,SAAA,EAAA,OACL,GAAA,QAAA,aACA,EAAA,KAAA,qBACD,CAID,MAAa,EAA+F,CAC1G,EAAG,EAAkB,QACrB,EAAG,wCACH,EAAG,wCACJ,CAEY,EAA4F,CACvG,EAAG,EAAkB,KACrB,EAAG,wCACH,EAAG,wCACJ,CAEY,EAAoF,CAC/F,EAAG,oDACH,EAAG,wCACH,EAAG,qDACJ,CAEY,EAAiF,CAC5F,EAAG,oDACH,EAAG,wCACH,EAAG,qDACJ,CAEY,EAGR,CACH,QAAS,EACN,EAAmC,GAAI,EAA8B,GACrE,EAAmC,GAAI,EAA8B,GACrE,EAAmC,GAAI,EAA8B,EACvE,CACD,KAAM,EACH,EAAgC,GAAI,EAA2B,GAC/D,EAAgC,GAAI,EAA2B,GAC/D,EAAgC,GAAI,EAA2B,EACjE,CACF,CAEY,EAA8B,CACzC,QAAS,EAAkB,KAC3B,UAAW,2BACX,aAAc,CACZ,KAAM,EAAU,OAChB,KAAM,OACN,OAAQ,OACR,SAAU,GACX,CACD,OAAQ,6CACT,CAEY,EAAiC,CAC5C,QAAS,EAAkB,QAC3B,UAAW,8BACX,OAAQ,wCACR,aAAc,CACZ,KAAM,EAAU,OAChB,KAAM,OACN,OAAQ,OACR,SAAU,GACX,CACF,CAEY,EAAmC,CAC9C,QAAS,EAAmC,EAC5C,UAAW,8BACX,OAAQ,oCACR,aAAc,CACZ,KAAM,EAAU,OAChB,KAAM,OACN,OAAQ,OACR,SAAU,EACX,CACF,CAEY,EAAgC,CAC3C,QAAS,EAAgC,EACzC,UAAW,2BACX,OAAQ,yCACR,aAAc,CACZ,KAAM,EAAU,OAChB,KAAM,OACN,OAAQ,OACR,SAAU,EACX,CACF,CAEY,EAAmC,CAC9C,QAAS,EAAmC,EAC5C,UAAW,8BACX,OAAQ,oCACR,aAAc,CACZ,KAAM,EAAU,OAChB,KAAM,OACN,OAAQ,OACR,SAAU,EACX,CACF,CAEY,EAAgC,CAC3C,QAAS,EAAgC,EACzC,UAAW,2BACX,OAAQ,yCACR,aAAc,CACZ,KAAM,EAAU,OAChB,KAAM,OACN,OAAQ,OACR,SAAU,EACX,CACF,CAEY,EAAgC,CAC3C,QAAS,EAAiB,QAC1B,UAAW,mBACX,OAAQ,sDACR,aAAc,CACZ,KAAM,EAAU,OAChB,KAAM,MACN,OAAQ,MACR,SAAU,GACX,CACF,CAEY,EAAgC,CAC3C,QAAS,EAAiB,QAC1B,UAAW,mBACX,OAAQ,sDACR,aAAc,CACZ,KAAM,EAAU,OAChB,KAAM,MACN,OAAQ,MACR,SAAU,GACX,CACF,CAEY,EAA+B,CAC1C,QAAS,EAAgB,QACzB,UAAW,kBACX,OAAQ,GACR,aAAc,CACZ,KAAM,EAAU,OAChB,KAAM,UACN,OAAQ,MACR,SAAU,EACX,CACF,CAEY,EAA+B,CAC1C,QAAS,EAAgB,QACzB,UAAW,kBACX,OAAQ,GACR,aAAc,CACZ,KAAM,EAAU,OAChB,KAAM,UACN,OAAQ,MACR,SAAU,EACX,CACF,CAEY,EAA8B,CACzC,QAAS,EAAe,QACxB,UAAW,SACX,OAAQ,oDACR,aAAc,CACZ,KAAM,EAAU,OAChB,KAAM,MACN,OAAQ,MACR,SAAU,EACX,CACF,CAEY,EAA6B,CACxC,QAAS,EAAe,OACxB,UAAW,kBACX,OAAQ,gCACR,aAAc,CACZ,KAAM,EAAU,OAChB,KAAM,MACN,OAAQ,MACR,SAAU,EACX,CACF,CACY,EAA2B,CACtC,KAAM,EAAU,OAChB,KAAM,YACN,OAAQ,OACR,SAAU,GACV,QACE,4HACH,CACY,EAA0B,CACrC,KAAM,EAAU,OAChB,KAAM,QACN,OAAQ,MACR,SAAU,GACV,QACE,uHACH,CAED,IAAY,EAAL,SAAA,EAAA,OACL,GAAA,UAAA,YACA,EAAA,QAAA,UACA,EAAA,SAAA,WACA,EAAA,OAAA,SACA,EAAA,QAAA,iBACD,CAEW,EAAL,SAAA,EAAA,OACL,GAAA,EAAA,kBAAA,OAAA,oBACA,EAAA,EAAA,kBAAA,OAAA,oBACA,EAAA,EAAA,mBAAA,GAAA,qBACA,EAAA,EAAA,sBAAA,UAAA,wBAMA,EAAA,EAAA,QAAA,iBAAA,UAMA,EAAA,EAAA,gBAAA,iBAAA,wBACD,CAMD,MAAa,EAAoE,CAC/E,KAAM,MACN,OAAQ,SACR,KAAM,OACP"}
1
+ {"version":3,"file":"constants.js","names":[],"sources":["../src/constants.ts"],"sourcesContent":["import type { Address as SolAddress } from '@solana/kit';\nimport type { Address as EvmAddress } from 'viem';\nimport type { NativeAsset } from './types/asset';\nimport type { BitcoinFeeRateTier } from './types/bitcoin';\nimport type { Caip2ChainId } from './types/caip';\nimport type { Chain } from './types/chain';\nimport type { FeeRateTier } from './types/fee';\n\nexport enum Environment {\n DEV = 'dev',\n PROD = 'production',\n TEST = 'test',\n}\n\nexport enum TokenType {\n NATIVE = 'native',\n ERC20 = 'erc20',\n SPL = 'spl',\n}\n\nexport enum ServiceType {\n /** Avalanche Cross-chain transfer service. Export/import between C/P/X Avalanche chains. */\n AVALANCHE_CCT = 'avalanche-cct',\n /** Bridge between EVM chains within Avalanche (or EVM-compatible flows). */\n AVALANCHE_EVM = 'avalanche-evm',\n /** Bitcoin → Avalanche. */\n LOMBARD_BTC_TO_BTCB = 'lombard-btc-to-btcb',\n /** Avalanche → Bitcoin. */\n LOMBARD_BTCB_TO_BTC = 'lombard-btcb-to-btc',\n MARKR = 'markr',\n /** Same-chain wrap/unwrap of native ETH ↔ WETH and AVAX ↔ WAVAX. */\n WRAP_UNWRAP = 'wrap-unwrap',\n}\n\nexport const BTC_SERVICE_TYPES: readonly [ServiceType.LOMBARD_BTCB_TO_BTC, ServiceType.LOMBARD_BTC_TO_BTCB] = [\n ServiceType.LOMBARD_BTCB_TO_BTC,\n ServiceType.LOMBARD_BTC_TO_BTCB,\n];\n\nexport const EVM_SERVICE_TYPES: readonly [ServiceType.AVALANCHE_EVM, ServiceType.WRAP_UNWRAP] = [\n ServiceType.AVALANCHE_EVM,\n ServiceType.WRAP_UNWRAP,\n];\n\n/** Reasons for user signatures during execution. */\nexport enum TransferSignatureReason {\n AddressOwnership = 'address-ownership',\n /** ERC-20 allowance approval for router/bridge. */\n AllowanceApproval = 'allowance-approval',\n /** Primary signature for cross-chain export transaction. */\n AvalancheCrossChainExport = 'avalanche-cross-chain-export',\n /** Primary signature for cross-chain import transaction. */\n AvalancheCrossChainImport = 'avalanche-cross-chain-import',\n /** The primary token movement call (swap or bridge submit). */\n TokensTransfer = 'tokens-transfer',\n /** Optional wrap/unwrap step for native token handling. */\n WrapToken = 'wrap-token',\n /** Hyperliquid 2-phase withdrawal: step 1, nonce-mapping authorization (Relay protocol). */\n HyperliquidAuthorize = 'hyperliquid-authorize',\n /** Hyperliquid 2-phase withdrawal: step 2, the `sendAsset` transfer. */\n HyperliquidSendAsset = 'hyperliquid-send-asset',\n /** Markr recurring: first-fill swap that schedules the recurring order on-chain. */\n ScheduleRecurringSwap = 'schedule-recurring-swap',\n /** Markr recurring: pause an active schedule (preserves allowance). */\n PauseRecurringSwap = 'pause-recurring-swap',\n /** Markr recurring: resume (unpause) a paused schedule. */\n ResumeRecurringSwap = 'resume-recurring-swap',\n /** Markr recurring: cancel an active or paused schedule. */\n CancelRecurringSwap = 'cancel-recurring-swap',\n}\n\nexport const ERC_ZERO_ADDRESS: EvmAddress = '0x0000000000000000000000000000000000000000';\nexport const NATIVE_SOL_ADDRESS: SolAddress = '11111111111111111111111111111111' as SolAddress;\n\nexport enum AvalancheChainIds {\n FUJI = 'eip155:43113',\n MAINNET = 'eip155:43114',\n}\n\nexport enum EthereumChainIds {\n MAINNET = 'eip155:1',\n SEPOLIA = 'eip155:11155111',\n}\n\nexport enum BitcoinChainIds {\n MAINNET = 'bip122:000000000019d6689c085ae165831e93',\n TESTNET = 'bip122:000000000933ea01ad0ee984209779ba',\n}\n\nexport enum SolanaChainIds {\n MAINNET = 'solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp',\n DEVNET = 'solana:EtWTRABZaYq6iMfeYKouRu166VU2xqa1',\n}\n\n/**\n * Hyperliquid is identified by CAIP-2 `eip155:1337` per Relay's convention.\n * It's an EVM-namespaced chain ID but has no real EVM execution — withdrawals\n * use a two-signature EIP-712 flow against Hyperliquid's `/exchange` API.\n */\nexport enum HyperliquidChainIds {\n MAINNET = 'eip155:1337',\n}\n\nexport enum BaseChainIds {\n MAINNET = 'eip155:8453',\n SEPOLIA = 'eip155:84532',\n}\n\nexport enum PolygonChainIds {\n MAINNET = 'eip155:137',\n AMOY = 'eip155:80002',\n}\n\nexport type AvalancheBlockchainAlias = 'C' | 'P' | 'X';\n\nexport const AvalancheMainnetBlockchainChainIds: Readonly<Record<AvalancheBlockchainAlias, Caip2ChainId>> = {\n C: AvalancheChainIds.MAINNET,\n P: 'avax:Rr9hnPVPxuUvrdCul-vjEsU1zmqKqRDo',\n X: 'avax:imji8papUf2EhV3le337w1vgFauqkJg-',\n};\n\nexport const AvalancheFujiBlockchainChainIds: Readonly<Record<AvalancheBlockchainAlias, Caip2ChainId>> = {\n C: AvalancheChainIds.FUJI,\n P: 'avax:Sj7NVE3jXTbJvwFAiu7OEUo_8g8ctXMG',\n X: 'avax:8AJTpRj3SAqv1e80Mtl9em08LhvKEbkl',\n};\n\nexport const AvalancheMainnetBlockchainIds: Readonly<Record<AvalancheBlockchainAlias, string>> = {\n C: '2q9e4r6Mu3U68nU1fYjgbR6JvwrRx36CohpAX5UQxse55x1Q5',\n P: '11111111111111111111111111111111LpoYY',\n X: '2oYMBNV4eNHyqk2fjjV5nVQLDbtmNJzq5s3qs3Lo6ftnC6FByM',\n};\n\nexport const AvalancheFujiBlockchainIds: Readonly<Record<AvalancheBlockchainAlias, string>> = {\n C: 'yH8D7ThNJkxmtkuv2jgBa4P1Rn3Qpr4pPr7QYNfcdoS6k6HWp',\n P: '11111111111111111111111111111111LpoYY',\n X: '2JVSBoinj9C2J33VntvzYtVJNZdN2NKiwwKjcumHUWEb5DbBrm',\n};\n\nexport const AVALANCHE_CAIP2_TO_BLOCKCHAIN_ID_BY_NETWORK: Readonly<{\n mainnet: Readonly<Record<Caip2ChainId, string>>;\n fuji: Readonly<Record<Caip2ChainId, string>>;\n}> = {\n mainnet: {\n [AvalancheMainnetBlockchainChainIds.C]: AvalancheMainnetBlockchainIds.C,\n [AvalancheMainnetBlockchainChainIds.P]: AvalancheMainnetBlockchainIds.P,\n [AvalancheMainnetBlockchainChainIds.X]: AvalancheMainnetBlockchainIds.X,\n },\n fuji: {\n [AvalancheFujiBlockchainChainIds.C]: AvalancheFujiBlockchainIds.C,\n [AvalancheFujiBlockchainChainIds.P]: AvalancheFujiBlockchainIds.P,\n [AvalancheFujiBlockchainChainIds.X]: AvalancheFujiBlockchainIds.X,\n },\n};\n\nexport const AVALANCHE_FUJI_CHAIN: Chain = {\n chainId: AvalancheChainIds.FUJI,\n chainName: 'Avalanche Fuji (C-Chain)',\n networkToken: {\n type: TokenType.NATIVE,\n name: 'AVAX',\n symbol: 'AVAX',\n decimals: 18,\n logoUri:\n 'https://images.ctfassets.net/gcj8jwzm6086/5VHupNKwnDYJvqMENeV7iJ/adb596bcc935136c0a1a587ede372f5b/avalanche-avax-logo.svg',\n },\n rpcUrl: 'https://api.avax-test.network/ext/bc/C/rpc',\n};\n\nexport const AVALANCHE_MAINNET_CHAIN: Chain = {\n chainId: AvalancheChainIds.MAINNET,\n chainName: 'Avalanche Mainnet (C-Chain)',\n rpcUrl: 'https://api.avax.network/ext/bc/C/rpc',\n networkToken: {\n type: TokenType.NATIVE,\n name: 'AVAX',\n symbol: 'AVAX',\n decimals: 18,\n logoUri:\n 'https://images.ctfassets.net/gcj8jwzm6086/5VHupNKwnDYJvqMENeV7iJ/adb596bcc935136c0a1a587ede372f5b/avalanche-avax-logo.svg',\n },\n};\n\nexport const AVALANCHE_MAINNET_P_CHAIN: Chain = {\n chainId: AvalancheMainnetBlockchainChainIds.P,\n chainName: 'Avalanche Mainnet (P-Chain)',\n rpcUrl: 'https://api.avax.network/ext/bc/P',\n networkToken: {\n type: TokenType.NATIVE,\n name: 'AVAX',\n symbol: 'AVAX',\n decimals: 9,\n logoUri:\n 'https://images.ctfassets.net/gcj8jwzm6086/5VHupNKwnDYJvqMENeV7iJ/adb596bcc935136c0a1a587ede372f5b/avalanche-avax-logo.svg',\n },\n};\n\nexport const AVALANCHE_FUJI_P_CHAIN: Chain = {\n chainId: AvalancheFujiBlockchainChainIds.P,\n chainName: 'Avalanche Fuji (P-Chain)',\n rpcUrl: 'https://api.avax-test.network/ext/bc/P',\n networkToken: {\n type: TokenType.NATIVE,\n name: 'AVAX',\n symbol: 'AVAX',\n decimals: 9,\n logoUri:\n 'https://images.ctfassets.net/gcj8jwzm6086/5VHupNKwnDYJvqMENeV7iJ/adb596bcc935136c0a1a587ede372f5b/avalanche-avax-logo.svg',\n },\n};\n\nexport const AVALANCHE_MAINNET_X_CHAIN: Chain = {\n chainId: AvalancheMainnetBlockchainChainIds.X,\n chainName: 'Avalanche Mainnet (X-Chain)',\n rpcUrl: 'https://api.avax.network/ext/bc/X',\n networkToken: {\n type: TokenType.NATIVE,\n name: 'AVAX',\n symbol: 'AVAX',\n decimals: 9,\n logoUri:\n 'https://images.ctfassets.net/gcj8jwzm6086/5VHupNKwnDYJvqMENeV7iJ/adb596bcc935136c0a1a587ede372f5b/avalanche-avax-logo.svg',\n },\n};\n\nexport const AVALANCHE_FUJI_X_CHAIN: Chain = {\n chainId: AvalancheFujiBlockchainChainIds.X,\n chainName: 'Avalanche Fuji (X-Chain)',\n rpcUrl: 'https://api.avax-test.network/ext/bc/X',\n networkToken: {\n type: TokenType.NATIVE,\n name: 'AVAX',\n symbol: 'AVAX',\n decimals: 9,\n logoUri:\n 'https://images.ctfassets.net/gcj8jwzm6086/5VHupNKwnDYJvqMENeV7iJ/adb596bcc935136c0a1a587ede372f5b/avalanche-avax-logo.svg',\n },\n};\n\nexport const ETHEREUM_SEPOLIA_CHAIN: Chain = {\n chainId: EthereumChainIds.SEPOLIA,\n chainName: 'Ethereum Sepolia',\n rpcUrl: 'https://proxy-api.avax.network/proxy/infura/sepolia',\n networkToken: {\n type: TokenType.NATIVE,\n name: 'ETH',\n symbol: 'ETH',\n decimals: 18,\n logoUri:\n 'https://images.ctfassets.net/gcj8jwzm6086/6l56QLVZmvacuBfjHBTThP/791d743dd2c526692562780c2325fedf/eth-circle__1_.svg',\n },\n};\n\nexport const ETHEREUM_MAINNET_CHAIN: Chain = {\n chainId: EthereumChainIds.MAINNET,\n chainName: 'Ethereum Mainnet',\n rpcUrl: 'https://proxy-api.avax.network/proxy/infura/mainnet',\n networkToken: {\n type: TokenType.NATIVE,\n name: 'ETH',\n symbol: 'ETH',\n decimals: 18,\n logoUri:\n 'https://images.ctfassets.net/gcj8jwzm6086/6l56QLVZmvacuBfjHBTThP/791d743dd2c526692562780c2325fedf/eth-circle__1_.svg',\n },\n};\n\nexport const BITCOIN_TESTNET_CHAIN: Chain = {\n chainId: BitcoinChainIds.TESTNET,\n chainName: 'Bitcoin Testnet',\n rpcUrl: '',\n networkToken: {\n type: TokenType.NATIVE,\n name: 'Bitcoin',\n symbol: 'BTC',\n decimals: 8,\n logoUri:\n 'https://images.ctfassets.net/gcj8jwzm6086/32zG83beysuk3j6ye3kdF2/6b7ea715d521e5a89a0280973e929cce/bitcoin-btc-logo__1_.svg',\n },\n};\n\nexport const BITCOIN_MAINNET_CHAIN: Chain = {\n chainId: BitcoinChainIds.MAINNET,\n chainName: 'Bitcoin Mainnet',\n rpcUrl: '',\n networkToken: {\n type: TokenType.NATIVE,\n name: 'Bitcoin',\n symbol: 'BTC',\n decimals: 8,\n logoUri:\n 'https://images.ctfassets.net/gcj8jwzm6086/32zG83beysuk3j6ye3kdF2/6b7ea715d521e5a89a0280973e929cce/bitcoin-btc-logo__1_.svg',\n },\n};\n\nexport const SOLANA_MAINNET_CHAIN: Chain = {\n chainId: SolanaChainIds.MAINNET,\n chainName: 'Solana',\n rpcUrl: 'https://proxy-api.avax.network/proxy/nownodes/sol',\n networkToken: {\n type: TokenType.NATIVE,\n name: 'SOL',\n symbol: 'SOL',\n decimals: 9,\n logoUri:\n 'https://images.ctfassets.net/gcj8jwzm6086/4VgCue74mbrtME1ZqEj7Y1/d9d29c801f8c2aab9fe4c6c69166364b/Network_Solana.svg',\n },\n};\n\nexport const SOLANA_DEVNET_CHAIN: Chain = {\n chainId: SolanaChainIds.DEVNET,\n chainName: 'Solana (Devnet)',\n rpcUrl: 'https://api.devnet.solana.com',\n networkToken: {\n type: TokenType.NATIVE,\n name: 'SOL',\n symbol: 'SOL',\n decimals: 9,\n logoUri:\n 'https://images.ctfassets.net/gcj8jwzm6086/4VgCue74mbrtME1ZqEj7Y1/d9d29c801f8c2aab9fe4c6c69166364b/Network_Solana.svg',\n },\n};\nexport const NATIVE_AVAX: NativeAsset = {\n type: TokenType.NATIVE,\n name: 'Avalanche',\n symbol: 'AVAX',\n decimals: 18,\n logoUri:\n 'https://images.ctfassets.net/gcj8jwzm6086/5VHupNKwnDYJvqMENeV7iJ/adb596bcc935136c0a1a587ede372f5b/avalanche-avax-logo.svg',\n};\nexport const NATIVE_ETH: NativeAsset = {\n type: TokenType.NATIVE,\n name: 'Ether',\n symbol: 'ETH',\n decimals: 18,\n logoUri:\n 'https://images.ctfassets.net/gcj8jwzm6086/6l56QLVZmvacuBfjHBTThP/791d743dd2c526692562780c2325fedf/eth-circle__1_.svg',\n};\n\nexport enum Blockchain {\n AVALANCHE = 'avalanche',\n BITCOIN = 'bitcoin',\n ETHEREUM = 'ethereum',\n SOLANA = 'solana',\n UNKNOWN = '_unknown',\n}\n\nexport enum EvmChainId {\n AVALANCHE_MAINNET = 43114,\n AVALANCHE_TESTNET = 43113,\n ETHEREUM_HOMESTEAD = 1,\n ETHEREUM_TEST_SEPOLIA = 11155111,\n /**\n * This is not a real chain ID, as Bitcoin does not have a chain ID.\n * It is used internally to represent Bitcoin in a way that avoids\n * conflicts with real EVM chain IDs.\n */\n BITCOIN = 4_503_599_627_370_476 - 1,\n /**\n * This is not a real chain ID, as Bitcoin does not have a chain ID.\n * It is used internally to represent Bitcoin in a way that avoids\n * conflicts with real EVM chain IDs.\n */\n BITCOIN_TESTNET = 4_503_599_627_370_476 - 2,\n}\n\n/**\n * Maps the unified {@link FeeRateTier} to the Bitcoin-specific\n * {@link BitcoinFeeRateTier} (`low | medium | high`).\n */\nexport const FEE_RATE_TIER_TO_BITCOIN: Record<FeeRateTier, BitcoinFeeRateTier> = {\n slow: 'low',\n normal: 'medium',\n fast: 'high',\n};\n"],"mappings":"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"}
@@ -1,2 +1,2 @@
1
- const e=require(`../../../constants.cjs`),t=require(`../../../errors.cjs`),n=require(`../../_utils.cjs`),r=require(`../constants.cjs`),i=require(`../_utils.cjs`),a=require(`../../_transfer-utilities.cjs`),o=require(`../_utils/p-chain.cjs`),s=require(`../_utils/polling.cjs`),c=require(`../_utils/transactions.cjs`),l=require(`../_utils/fees.cjs`),u=require(`../_utils/addresses.cjs`);function d({ajsContext:n,avalancheSendTx:r,environment:o,getCoreEthAddress:c,getAtomicUtxos:l,getUtxos:d,getWalletAddressesForChainAlias:m,getWalletChangeAddressForChainAlias:_}){return async({onStepChange:v,quote:y})=>{if(y.serviceType!==e.ServiceType.AVALANCHE_CCT)throw new t.SdkError(t.ErrorReason.INCORRECT_PROVIDER_PROVIDED,t.ErrorCode.INVALID_PARAMS);let b=i.getEnvironmentIsTestnet(o),x=i.getChainAlias(y.sourceChain.chainId,b),S=i.getChainAlias(y.targetChain.chainId,b),C=u.getExportFromAddressEvm(y.fromAddress,x),w=x===`C`?void 0:u.assertXpAddress(y.fromAddress),T=await u.getExportToAddress({destinationChainAlias:S,getCoreEthAddress:c,quoteToAddress:y.toAddress}),E=u.getImportToAddress(y.toAddress,S),D=S===`C`?T:u.assertXpAddress(y.toAddress),O=y.amountIn>0n,k=O?2:1,A=Date.now(),j=f(y,o),M;if(O){v?.({currentSignature:1,currentSignatureReason:e.TransferSignatureReason.AvalancheCrossChainExport,quote:y,requiredSignatures:k});let c=await i.tryOrThrow(()=>h({ajsContext:n,environment:o,getUtxos:d,getWalletAddressesForChainAlias:m,getWalletChangeAddressForChainAlias:_,quoteAmountIn:y.amountIn,sourceChainAlias:x,destinationChainAlias:S,fromAddress:C,requiredFromAddress:w,toAddress:T}),e=>new t.SdkError(`Failed to build Avalanche export transaction.`,t.ErrorCode.UNKNOWN,{cause:e}));M=await i.tryOrThrow(()=>r({baseFeeInNanoAvax:c.baseFeeInNanoAvax,chainAlias:x,txType:`export`,unsignedTx:c.unsignedTx}),e=>new t.SdkError(`Failed to sign/send Avalanche export transaction.`,t.ErrorCode.SIGNING_FAILED,{cause:e}));let l;try{l=await s.pollPrimaryNetworkTxStatus({chainAlias:x,environment:o,txId:M})}catch{return a.sourcePendingTransferFromQuote(y,{environment:o,requiredConfirmationCount:1,startedAtMs:A,txHash:M})}if(!l)return p({errorCode:t.ErrorCode.TRANSACTION_REVERTED,errorReason:`Export transaction was not accepted by Avalanche.`,sourceStartedAtMs:A,sourceTxHash:M,transferBase:j})}let N=await i.tryOrThrow(async()=>(await l(S,x)).getUTXOs(),e=>new t.SdkError(`Failed to fetch Avalanche atomic UTXOs.`,t.ErrorCode.UNKNOWN,{cause:e}));if(N.length===0)return p({errorCode:t.ErrorCode.INVALID_PARAMS,errorReason:`No atomic UTXOs available to import for this route.`,sourceStartedAtMs:A,sourceTxHash:M,transferBase:j});v?.({currentSignature:O?2:1,currentSignatureReason:e.TransferSignatureReason.AvalancheCrossChainImport,quote:y,requiredSignatures:k});let P=await i.tryOrThrow(()=>g({ajsContext:n,atomicUtxos:N,destinationChainAlias:S,environment:o,getWalletAddressesForChainAlias:m,getWalletChangeAddressForChainAlias:_,sourceChainAlias:x,requiredFromAddress:D,toAddress:E}),e=>new t.SdkError(`Failed to build Avalanche import transaction.`,t.ErrorCode.UNKNOWN,{cause:e})),F=await i.tryOrThrow(()=>r({baseFeeInNanoAvax:P.baseFeeInNanoAvax,chainAlias:S,txType:`import`,unsignedTx:P.unsignedTx}),e=>new t.SdkError(`Failed to sign/send Avalanche import transaction.`,t.ErrorCode.SIGNING_FAILED,{cause:e}));return{...j,source:{confirmationCount:M?1:0,requiredConfirmationCount:1,startedAtMs:A,txHash:M??F},status:`target-pending`,target:{confirmationCount:0,requiredConfirmationCount:1,startedAtMs:Date.now(),txHash:F}}}}function f(e,t){return{amountIn:e.amountIn,amountOut:e.amountOut,environment:t,fees:e.fees,fromAddress:e.fromAddress,id:e.id,partnerFeeBps:e.partnerFeeBps,sourceAsset:e.assetIn,sourceChain:e.sourceChain,targetAsset:e.assetOut,targetChain:e.targetChain,toAddress:e.toAddress,type:e.serviceType}}function p({errorCode:e,errorReason:t,sourceStartedAtMs:n,sourceTxHash:r,transferBase:i}){return{...i,errorCode:e,errorReason:t,failedAtMs:Date.now(),...r?{source:{confirmationCount:0,requiredConfirmationCount:1,startedAtMs:n,txHash:r}}:{},status:`failed`}}function m(e,t){return e===`C`?t/r.WEI_PER_NANO_AVAX_BIGINT:t}async function h({ajsContext:r,destinationChainAlias:i,environment:a,fromAddress:s,getUtxos:d,getWalletAddressesForChainAlias:f,getWalletChangeAddressForChainAlias:p,quoteAmountIn:h,requiredFromAddress:g,sourceChainAlias:_,toAddress:v}){let y=m(_,h);switch(_){case`C`:{if(i===`C`)throw new t.InvalidParamsError(`Source and destination chain aliases must be different.`);if(!s)throw new t.InvalidParamsError(`fromAddress must be an EVM address when exporting from C-Chain.`);let o=n.getEvmClientForChain({chain:a===e.Environment.TEST?e.AVALANCHE_FUJI_CHAIN:e.AVALANCHE_MAINNET_CHAIN}),[u,d]=await Promise.all([o.getTransactionCount({address:s}),l.getCChainBaseFeeInNanoAvax(a)]);return{baseFeeInNanoAvax:d,unsignedTx:c.exportTx({amountInNanoAvax:y,baseFeeInNanoAvax:d,context:r,destinationChainAlias:i,fromAddress:s,nonce:BigInt(u),sourceChainAlias:_,toAddress:v})}}case`P`:{if(i===`P`)throw new t.InvalidParamsError(`Source and destination chain aliases must be different.`);let[e,n,s,l]=await Promise.all([u.getWalletChangeAddress({chainAlias:_,getWalletChangeAddressForChainAlias:p}),o.getFeeState(a),u.getWalletFromAddresses({chainAlias:_,getWalletAddressesForChainAlias:f,requiredAddress:g}),d(`P`)]);return{baseFeeInNanoAvax:n.price,unsignedTx:c.exportTx({amountInNanoAvax:y,changeAddress:e,context:r,destinationChainAlias:i,feeState:n,fromAddresses:s,sourceChainAlias:_,toAddress:v,utxos:l.getUTXOs()})}}case`X`:{if(i===`X`)throw new t.InvalidParamsError(`Source and destination chain aliases must be different.`);let[e,n,a]=await Promise.all([u.getWalletChangeAddress({chainAlias:_,getWalletChangeAddressForChainAlias:p}),u.getWalletFromAddresses({chainAlias:_,getWalletAddressesForChainAlias:f,requiredAddress:g}),d(`X`)]);return{baseFeeInNanoAvax:r.baseTxFee,unsignedTx:c.exportTx({amountInNanoAvax:y,changeAddress:e,context:r,destinationChainAlias:i,fromAddresses:n,sourceChainAlias:_,toAddress:v,utxos:a.getUTXOs()})}}}}async function g({ajsContext:e,atomicUtxos:n,destinationChainAlias:r,environment:i,getWalletAddressesForChainAlias:a,getWalletChangeAddressForChainAlias:s,requiredFromAddress:d,sourceChainAlias:f,toAddress:p}){switch(r){case`C`:{if(f===`C`)throw new t.InvalidParamsError(`Source and destination chain aliases must be different.`);let[o,s]=await Promise.all([l.getCChainBaseFeeInNanoAvax(i),u.getWalletFromAddresses({chainAlias:r,getWalletAddressesForChainAlias:a,requiredAddress:d})]);return{baseFeeInNanoAvax:o,unsignedTx:c.importTx({atomicUtxos:n,baseFeeInNanoAvax:o,context:e,destinationChainAlias:r,fromAddresses:s,sourceChainAlias:f,toAddress:u.getImportToAddress(p,`C`)})}}case`P`:{if(f===`P`)throw new t.InvalidParamsError(`Source and destination chain aliases must be different.`);let[s,l]=await Promise.all([o.getFeeState(i),u.getWalletFromAddresses({chainAlias:r,getWalletAddressesForChainAlias:a,requiredAddress:d})]);return{baseFeeInNanoAvax:s.price,unsignedTx:c.importTx({atomicUtxos:n,context:e,destinationChainAlias:r,feeState:s,fromAddresses:l,sourceChainAlias:f,toAddress:u.getImportToAddress(p,`P`)})}}case`X`:{if(f===`X`)throw new t.InvalidParamsError(`Source and destination chain aliases must be different.`);let[i,o]=await Promise.all([u.getWalletChangeAddress({chainAlias:r,getWalletChangeAddressForChainAlias:s}),u.getWalletFromAddresses({chainAlias:r,getWalletAddressesForChainAlias:a,requiredAddress:d})]);return{baseFeeInNanoAvax:e.baseTxFee,unsignedTx:c.importTx({atomicUtxos:n,changeAddress:i,context:e,destinationChainAlias:r,fromAddresses:o,sourceChainAlias:f,toAddress:u.getImportToAddress(p,`X`)})}}}}exports.transferAssetFactory=d;
1
+ const e=require(`../../../constants.cjs`),t=require(`../../../errors.cjs`),n=require(`../../_utils.cjs`),r=require(`../constants.cjs`),i=require(`../_utils.cjs`),a=require(`../../_transfer-utilities.cjs`),o=require(`../_utils/p-chain.cjs`),s=require(`../_utils/polling.cjs`),c=require(`../_utils/transactions.cjs`),l=require(`../_utils/fees.cjs`),u=require(`../_utils/addresses.cjs`);function d({ajsContext:n,avalancheSendTx:r,environment:o,getCoreEthAddress:c,getAtomicUtxos:l,getUtxos:d,getWalletAddressesForChainAlias:m,getWalletChangeAddressForChainAlias:_}){return async({onStepChange:v,quote:y})=>{if(y.serviceType!==e.ServiceType.AVALANCHE_CCT)throw new t.SdkError(t.ErrorReason.INCORRECT_PROVIDER_PROVIDED,t.ErrorCode.INVALID_PARAMS);let b=i.getEnvironmentIsTestnet(o),x=i.getChainAlias(y.sourceChain.chainId,b),S=i.getChainAlias(y.targetChain.chainId,b),C=u.getExportFromAddressEvm(y.fromAddress,x),w=x===`C`?void 0:u.assertXpAddress(y.fromAddress),T=await u.getExportToAddress({destinationChainAlias:S,getCoreEthAddress:c,quoteToAddress:y.toAddress}),E=u.getImportToAddress(y.toAddress,S),D=S===`C`?T:u.assertXpAddress(y.toAddress),O=y.amountIn>0n,k=O?2:1,A=Date.now(),j=f(y,o),M;if(O){let c={currentSignature:1,currentSignatureReason:e.TransferSignatureReason.AvalancheCrossChainExport,quote:y,requiredSignatures:k};v?.(c);let l=await i.tryOrThrow(()=>h({ajsContext:n,environment:o,getUtxos:d,getWalletAddressesForChainAlias:m,getWalletChangeAddressForChainAlias:_,quoteAmountIn:y.amountIn,sourceChainAlias:x,destinationChainAlias:S,fromAddress:C,requiredFromAddress:w,toAddress:T}),e=>new t.SdkError(`Failed to build Avalanche export transaction.`,t.ErrorCode.UNKNOWN,{cause:e}));M=await i.tryOrThrow(()=>r({baseFeeInNanoAvax:l.baseFeeInNanoAvax,chainAlias:x,txType:`export`,unsignedTx:l.unsignedTx},c),e=>new t.SdkError(`Failed to sign/send Avalanche export transaction.`,t.ErrorCode.SIGNING_FAILED,{cause:e}));let u;try{u=await s.pollPrimaryNetworkTxStatus({chainAlias:x,environment:o,txId:M})}catch{return a.sourcePendingTransferFromQuote(y,{environment:o,requiredConfirmationCount:1,startedAtMs:A,txHash:M})}if(!u)return p({errorCode:t.ErrorCode.TRANSACTION_REVERTED,errorReason:`Export transaction was not accepted by Avalanche.`,sourceStartedAtMs:A,sourceTxHash:M,transferBase:j})}let N=await i.tryOrThrow(async()=>(await l(S,x)).getUTXOs(),e=>new t.SdkError(`Failed to fetch Avalanche atomic UTXOs.`,t.ErrorCode.UNKNOWN,{cause:e}));if(N.length===0)return p({errorCode:t.ErrorCode.INVALID_PARAMS,errorReason:`No atomic UTXOs available to import for this route.`,sourceStartedAtMs:A,sourceTxHash:M,transferBase:j});let P={currentSignature:O?2:1,currentSignatureReason:e.TransferSignatureReason.AvalancheCrossChainImport,quote:y,requiredSignatures:k};v?.(P);let F=await i.tryOrThrow(()=>g({ajsContext:n,atomicUtxos:N,destinationChainAlias:S,environment:o,getWalletAddressesForChainAlias:m,getWalletChangeAddressForChainAlias:_,sourceChainAlias:x,requiredFromAddress:D,toAddress:E}),e=>new t.SdkError(`Failed to build Avalanche import transaction.`,t.ErrorCode.UNKNOWN,{cause:e})),I=await i.tryOrThrow(()=>r({baseFeeInNanoAvax:F.baseFeeInNanoAvax,chainAlias:S,txType:`import`,unsignedTx:F.unsignedTx},P),e=>new t.SdkError(`Failed to sign/send Avalanche import transaction.`,t.ErrorCode.SIGNING_FAILED,{cause:e}));return{...j,source:{confirmationCount:M?1:0,requiredConfirmationCount:1,startedAtMs:A,txHash:M??I},status:`target-pending`,target:{confirmationCount:0,requiredConfirmationCount:1,startedAtMs:Date.now(),txHash:I}}}}function f(e,t){return{amountIn:e.amountIn,amountOut:e.amountOut,environment:t,fees:e.fees,fromAddress:e.fromAddress,id:e.id,partnerFeeBps:e.partnerFeeBps,sourceAsset:e.assetIn,sourceChain:e.sourceChain,targetAsset:e.assetOut,targetChain:e.targetChain,toAddress:e.toAddress,type:e.serviceType}}function p({errorCode:e,errorReason:t,sourceStartedAtMs:n,sourceTxHash:r,transferBase:i}){return{...i,errorCode:e,errorReason:t,failedAtMs:Date.now(),...r?{source:{confirmationCount:0,requiredConfirmationCount:1,startedAtMs:n,txHash:r}}:{},status:`failed`}}function m(e,t){return e===`C`?t/r.WEI_PER_NANO_AVAX_BIGINT:t}async function h({ajsContext:r,destinationChainAlias:i,environment:a,fromAddress:s,getUtxos:d,getWalletAddressesForChainAlias:f,getWalletChangeAddressForChainAlias:p,quoteAmountIn:h,requiredFromAddress:g,sourceChainAlias:_,toAddress:v}){let y=m(_,h);switch(_){case`C`:{if(i===`C`)throw new t.InvalidParamsError(`Source and destination chain aliases must be different.`);if(!s)throw new t.InvalidParamsError(`fromAddress must be an EVM address when exporting from C-Chain.`);let o=n.getEvmClientForChain({chain:a===e.Environment.TEST?e.AVALANCHE_FUJI_CHAIN:e.AVALANCHE_MAINNET_CHAIN}),[u,d]=await Promise.all([o.getTransactionCount({address:s}),l.getCChainBaseFeeInNanoAvax(a)]);return{baseFeeInNanoAvax:d,unsignedTx:c.exportTx({amountInNanoAvax:y,baseFeeInNanoAvax:d,context:r,destinationChainAlias:i,fromAddress:s,nonce:BigInt(u),sourceChainAlias:_,toAddress:v})}}case`P`:{if(i===`P`)throw new t.InvalidParamsError(`Source and destination chain aliases must be different.`);let[e,n,s,l]=await Promise.all([u.getWalletChangeAddress({chainAlias:_,getWalletChangeAddressForChainAlias:p}),o.getFeeState(a),u.getWalletFromAddresses({chainAlias:_,getWalletAddressesForChainAlias:f,requiredAddress:g}),d(`P`)]);return{baseFeeInNanoAvax:n.price,unsignedTx:c.exportTx({amountInNanoAvax:y,changeAddress:e,context:r,destinationChainAlias:i,feeState:n,fromAddresses:s,sourceChainAlias:_,toAddress:v,utxos:l.getUTXOs()})}}case`X`:{if(i===`X`)throw new t.InvalidParamsError(`Source and destination chain aliases must be different.`);let[e,n,a]=await Promise.all([u.getWalletChangeAddress({chainAlias:_,getWalletChangeAddressForChainAlias:p}),u.getWalletFromAddresses({chainAlias:_,getWalletAddressesForChainAlias:f,requiredAddress:g}),d(`X`)]);return{baseFeeInNanoAvax:r.baseTxFee,unsignedTx:c.exportTx({amountInNanoAvax:y,changeAddress:e,context:r,destinationChainAlias:i,fromAddresses:n,sourceChainAlias:_,toAddress:v,utxos:a.getUTXOs()})}}}}async function g({ajsContext:e,atomicUtxos:n,destinationChainAlias:r,environment:i,getWalletAddressesForChainAlias:a,getWalletChangeAddressForChainAlias:s,requiredFromAddress:d,sourceChainAlias:f,toAddress:p}){switch(r){case`C`:{if(f===`C`)throw new t.InvalidParamsError(`Source and destination chain aliases must be different.`);let[o,s]=await Promise.all([l.getCChainBaseFeeInNanoAvax(i),u.getWalletFromAddresses({chainAlias:r,getWalletAddressesForChainAlias:a,requiredAddress:d})]);return{baseFeeInNanoAvax:o,unsignedTx:c.importTx({atomicUtxos:n,baseFeeInNanoAvax:o,context:e,destinationChainAlias:r,fromAddresses:s,sourceChainAlias:f,toAddress:u.getImportToAddress(p,`C`)})}}case`P`:{if(f===`P`)throw new t.InvalidParamsError(`Source and destination chain aliases must be different.`);let[s,l]=await Promise.all([o.getFeeState(i),u.getWalletFromAddresses({chainAlias:r,getWalletAddressesForChainAlias:a,requiredAddress:d})]);return{baseFeeInNanoAvax:s.price,unsignedTx:c.importTx({atomicUtxos:n,context:e,destinationChainAlias:r,feeState:s,fromAddresses:l,sourceChainAlias:f,toAddress:u.getImportToAddress(p,`P`)})}}case`X`:{if(f===`X`)throw new t.InvalidParamsError(`Source and destination chain aliases must be different.`);let[i,o]=await Promise.all([u.getWalletChangeAddress({chainAlias:r,getWalletChangeAddressForChainAlias:s}),u.getWalletFromAddresses({chainAlias:r,getWalletAddressesForChainAlias:a,requiredAddress:d})]);return{baseFeeInNanoAvax:e.baseTxFee,unsignedTx:c.importTx({atomicUtxos:n,changeAddress:i,context:e,destinationChainAlias:r,fromAddresses:o,sourceChainAlias:f,toAddress:u.getImportToAddress(p,`X`)})}}}}exports.transferAssetFactory=d;
2
2
  //# sourceMappingURL=transfer-asset.cjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"transfer-asset.cjs","names":["ServiceType","SdkError","ErrorReason","ErrorCode","getEnvironmentIsTestnet","getChainAlias","getExportFromAddressEvm","assertXpAddress","getExportToAddress","getImportToAddress","TransferSignatureReason","tryOrThrow","pollPrimaryNetworkTxStatus","sourcePendingTransferFromQuote","WEI_PER_NANO_AVAX_BIGINT","InvalidParamsError","getEvmClientForChain","Environment","AVALANCHE_FUJI_CHAIN","AVALANCHE_MAINNET_CHAIN","getCChainBaseFeeInNanoAvax","exportTx","getWalletChangeAddress","getFeeState","getWalletFromAddresses","importTx"],"sources":["../../../../src/transfer-service/avalanche-cct/_handlers/transfer-asset.ts"],"sourcesContent":["import type { Context, Utxo } from '@avalabs/avalanchejs';\nimport type { Address as EvmAddress } from 'viem';\nimport {\n AVALANCHE_FUJI_CHAIN,\n AVALANCHE_MAINNET_CHAIN,\n Environment,\n ServiceType,\n TransferSignatureReason,\n type AvalancheBlockchainAlias,\n} from '../../../constants';\nimport { ErrorCode, ErrorReason, InvalidParamsError, SdkError } from '../../../errors';\nimport { sourcePendingTransferFromQuote } from '../../_transfer-utilities';\nimport { getEvmClientForChain } from '../../_utils';\nimport type { AvalancheSendTxFunction, TransferService } from '../../../types/service';\nimport type { FailedTransfer, TargetPendingTransfer, TransferBase } from '../../../types/transfer';\nimport { getFeeState } from '../_utils/p-chain';\nimport { pollPrimaryNetworkTxStatus } from '../_utils/polling';\nimport { exportTx, importTx } from '../_utils/transactions';\nimport type {\n GetAtomicUtxosCallback,\n GetCoreEthAddressCallback,\n GetUtxosCallback,\n GetWalletAddressesForChainAliasCallback,\n GetWalletChangeAddressForChainAliasCallback,\n XpAddress,\n} from '../types';\nimport { getChainAlias, getEnvironmentIsTestnet, tryOrThrow } from '../_utils';\nimport { getCChainBaseFeeInNanoAvax } from '../_utils/fees';\nimport { WEI_PER_NANO_AVAX_BIGINT } from '../constants';\nimport {\n assertXpAddress,\n getExportFromAddressEvm,\n getExportToAddress,\n getImportToAddress,\n getWalletChangeAddress,\n getWalletFromAddresses,\n} from '../_utils/addresses';\n\ntype BuiltTx = {\n baseFeeInNanoAvax: bigint;\n unsignedTx: Parameters<AvalancheSendTxFunction>[0]['unsignedTx'];\n};\n\nexport interface TransferAssetFactoryOptions {\n ajsContext: Context.Context;\n avalancheSendTx: AvalancheSendTxFunction;\n environment: Environment;\n getCoreEthAddress: GetCoreEthAddressCallback;\n getAtomicUtxos: GetAtomicUtxosCallback;\n getUtxos: GetUtxosCallback;\n getWalletAddressesForChainAlias: GetWalletAddressesForChainAliasCallback;\n getWalletChangeAddressForChainAlias: GetWalletChangeAddressForChainAliasCallback;\n}\n\nexport function transferAssetFactory({\n ajsContext,\n avalancheSendTx,\n environment,\n getCoreEthAddress,\n getAtomicUtxos,\n getUtxos,\n getWalletAddressesForChainAlias,\n getWalletChangeAddressForChainAlias,\n}: TransferAssetFactoryOptions): TransferService['transferAsset'] {\n return async ({ onStepChange, quote }) => {\n if (quote.serviceType !== ServiceType.AVALANCHE_CCT) {\n throw new SdkError(ErrorReason.INCORRECT_PROVIDER_PROVIDED, ErrorCode.INVALID_PARAMS);\n }\n\n const isTestnet = getEnvironmentIsTestnet(environment);\n const sourceChainAlias: AvalancheBlockchainAlias = getChainAlias(quote.sourceChain.chainId, isTestnet);\n const destinationChainAlias: AvalancheBlockchainAlias = getChainAlias(quote.targetChain.chainId, isTestnet);\n const exportFromAddressEvm = getExportFromAddressEvm(quote.fromAddress, sourceChainAlias);\n const exportRequiredFromAddress = sourceChainAlias === 'C' ? undefined : assertXpAddress(quote.fromAddress);\n const exportToAddress = await getExportToAddress({\n destinationChainAlias,\n getCoreEthAddress,\n quoteToAddress: quote.toAddress,\n });\n const importToAddress = getImportToAddress(quote.toAddress, destinationChainAlias);\n const importRequiredFromAddress =\n destinationChainAlias === 'C' ? exportToAddress : assertXpAddress(quote.toAddress);\n\n const hasExport = quote.amountIn > 0n;\n const requiredSignatures = hasExport ? 2 : 1;\n const startedAtMs = Date.now();\n const transferBase = getTransferBase(quote, environment);\n\n let exportTxId: string | undefined;\n\n if (hasExport) {\n onStepChange?.({\n currentSignature: 1,\n currentSignatureReason: TransferSignatureReason.AvalancheCrossChainExport,\n quote,\n requiredSignatures,\n });\n\n const builtExportTx = await tryOrThrow(\n () =>\n buildExportTx({\n ajsContext,\n environment,\n getUtxos,\n getWalletAddressesForChainAlias,\n getWalletChangeAddressForChainAlias,\n quoteAmountIn: quote.amountIn,\n sourceChainAlias,\n destinationChainAlias,\n fromAddress: exportFromAddressEvm,\n requiredFromAddress: exportRequiredFromAddress,\n toAddress: exportToAddress,\n }),\n (error) => new SdkError('Failed to build Avalanche export transaction.', ErrorCode.UNKNOWN, { cause: error }),\n );\n\n exportTxId = await tryOrThrow(\n () =>\n avalancheSendTx({\n baseFeeInNanoAvax: builtExportTx.baseFeeInNanoAvax,\n chainAlias: sourceChainAlias,\n txType: 'export',\n unsignedTx: builtExportTx.unsignedTx,\n }),\n (error) =>\n new SdkError('Failed to sign/send Avalanche export transaction.', ErrorCode.SIGNING_FAILED, {\n cause: error,\n }),\n );\n\n let didExportSucceed: boolean;\n try {\n didExportSucceed = await pollPrimaryNetworkTxStatus({\n chainAlias: sourceChainAlias,\n environment,\n txId: exportTxId,\n });\n } catch {\n return sourcePendingTransferFromQuote(quote, {\n environment,\n requiredConfirmationCount: 1,\n startedAtMs,\n txHash: exportTxId,\n });\n }\n\n if (!didExportSucceed) {\n return buildFailedTransfer({\n errorCode: ErrorCode.TRANSACTION_REVERTED,\n errorReason: 'Export transaction was not accepted by Avalanche.',\n sourceStartedAtMs: startedAtMs,\n sourceTxHash: exportTxId,\n transferBase,\n });\n }\n }\n\n const atomicUtxos = await tryOrThrow(\n async () => (await getAtomicUtxos(destinationChainAlias, sourceChainAlias)).getUTXOs(),\n (error) => new SdkError('Failed to fetch Avalanche atomic UTXOs.', ErrorCode.UNKNOWN, { cause: error }),\n );\n\n if (atomicUtxos.length === 0) {\n return buildFailedTransfer({\n errorCode: ErrorCode.INVALID_PARAMS,\n errorReason: 'No atomic UTXOs available to import for this route.',\n sourceStartedAtMs: startedAtMs,\n sourceTxHash: exportTxId,\n transferBase,\n });\n }\n\n onStepChange?.({\n currentSignature: hasExport ? 2 : 1,\n currentSignatureReason: TransferSignatureReason.AvalancheCrossChainImport,\n quote,\n requiredSignatures,\n });\n\n const builtImportTx = await tryOrThrow(\n () =>\n buildImportTx({\n ajsContext,\n atomicUtxos,\n destinationChainAlias,\n environment,\n getWalletAddressesForChainAlias,\n getWalletChangeAddressForChainAlias,\n sourceChainAlias,\n requiredFromAddress: importRequiredFromAddress,\n toAddress: importToAddress,\n }),\n (error) => new SdkError('Failed to build Avalanche import transaction.', ErrorCode.UNKNOWN, { cause: error }),\n );\n\n const importTxId = await tryOrThrow(\n () =>\n avalancheSendTx({\n baseFeeInNanoAvax: builtImportTx.baseFeeInNanoAvax,\n chainAlias: destinationChainAlias,\n txType: 'import',\n unsignedTx: builtImportTx.unsignedTx,\n }),\n (error) =>\n new SdkError('Failed to sign/send Avalanche import transaction.', ErrorCode.SIGNING_FAILED, {\n cause: error,\n }),\n );\n\n return {\n ...transferBase,\n source: {\n confirmationCount: exportTxId ? 1 : 0,\n requiredConfirmationCount: 1,\n startedAtMs,\n txHash: exportTxId ?? importTxId,\n },\n status: 'target-pending',\n target: {\n confirmationCount: 0,\n requiredConfirmationCount: 1,\n startedAtMs: Date.now(),\n txHash: importTxId,\n },\n } satisfies TargetPendingTransfer;\n };\n}\n\nfunction getTransferBase(\n quote: Parameters<TransferService['transferAsset']>[0]['quote'],\n environment: Environment,\n): Omit<TransferBase, 'status'> {\n return {\n amountIn: quote.amountIn,\n amountOut: quote.amountOut,\n environment,\n fees: quote.fees,\n fromAddress: quote.fromAddress,\n id: quote.id,\n partnerFeeBps: quote.partnerFeeBps,\n sourceAsset: quote.assetIn,\n sourceChain: quote.sourceChain,\n targetAsset: quote.assetOut,\n targetChain: quote.targetChain,\n toAddress: quote.toAddress,\n type: quote.serviceType,\n };\n}\n\nfunction buildFailedTransfer({\n errorCode,\n errorReason,\n sourceStartedAtMs,\n sourceTxHash,\n transferBase,\n}: {\n errorCode: ErrorCode;\n errorReason: string;\n sourceStartedAtMs: number;\n sourceTxHash?: string;\n transferBase: Omit<TransferBase, 'status'>;\n}): FailedTransfer {\n return {\n ...transferBase,\n errorCode,\n errorReason,\n failedAtMs: Date.now(),\n ...(sourceTxHash\n ? {\n source: {\n confirmationCount: 0,\n requiredConfirmationCount: 1,\n startedAtMs: sourceStartedAtMs,\n txHash: sourceTxHash,\n },\n }\n : {}),\n status: 'failed',\n };\n}\n\nfunction getExportAmountInNanoAvax(sourceChainAlias: AvalancheBlockchainAlias, quoteAmountIn: bigint): bigint {\n return sourceChainAlias === 'C' ? quoteAmountIn / WEI_PER_NANO_AVAX_BIGINT : quoteAmountIn;\n}\n\nasync function buildExportTx({\n ajsContext,\n destinationChainAlias,\n environment,\n fromAddress,\n getUtxos,\n getWalletAddressesForChainAlias,\n getWalletChangeAddressForChainAlias,\n quoteAmountIn,\n requiredFromAddress,\n sourceChainAlias,\n toAddress,\n}: {\n ajsContext: Context.Context;\n destinationChainAlias: AvalancheBlockchainAlias;\n environment: Environment;\n fromAddress: EvmAddress | null;\n getUtxos: GetUtxosCallback;\n getWalletAddressesForChainAlias: GetWalletAddressesForChainAliasCallback;\n getWalletChangeAddressForChainAlias: GetWalletChangeAddressForChainAliasCallback;\n quoteAmountIn: bigint;\n requiredFromAddress?: XpAddress;\n sourceChainAlias: AvalancheBlockchainAlias;\n toAddress: XpAddress;\n}): Promise<BuiltTx> {\n const amountInNanoAvax = getExportAmountInNanoAvax(sourceChainAlias, quoteAmountIn);\n\n switch (sourceChainAlias) {\n case 'C': {\n if (destinationChainAlias === 'C') {\n throw new InvalidParamsError('Source and destination chain aliases must be different.');\n }\n\n if (!fromAddress) {\n throw new InvalidParamsError('fromAddress must be an EVM address when exporting from C-Chain.');\n }\n\n const cChain = environment === Environment.TEST ? AVALANCHE_FUJI_CHAIN : AVALANCHE_MAINNET_CHAIN;\n const cChainClient = getEvmClientForChain({ chain: cChain });\n const [nonce, baseFeeInNanoAvax] = await Promise.all([\n cChainClient.getTransactionCount({\n address: fromAddress,\n }),\n getCChainBaseFeeInNanoAvax(environment),\n ]);\n\n return {\n baseFeeInNanoAvax,\n unsignedTx: exportTx({\n amountInNanoAvax,\n baseFeeInNanoAvax,\n context: ajsContext,\n destinationChainAlias,\n fromAddress,\n nonce: BigInt(nonce),\n sourceChainAlias,\n toAddress,\n }),\n };\n }\n\n case 'P': {\n if (destinationChainAlias === 'P') {\n throw new InvalidParamsError('Source and destination chain aliases must be different.');\n }\n\n const [changeAddress, feeState, fromAddresses, pUtxoSet] = await Promise.all([\n getWalletChangeAddress({\n chainAlias: sourceChainAlias,\n getWalletChangeAddressForChainAlias,\n }),\n getFeeState(environment),\n getWalletFromAddresses({\n chainAlias: sourceChainAlias,\n getWalletAddressesForChainAlias,\n requiredAddress: requiredFromAddress,\n }),\n getUtxos('P'),\n ]);\n\n return {\n baseFeeInNanoAvax: feeState.price,\n unsignedTx: exportTx({\n amountInNanoAvax,\n changeAddress,\n context: ajsContext,\n destinationChainAlias,\n feeState,\n fromAddresses,\n sourceChainAlias,\n toAddress,\n utxos: pUtxoSet.getUTXOs(),\n }),\n };\n }\n\n case 'X': {\n if (destinationChainAlias === 'X') {\n throw new InvalidParamsError('Source and destination chain aliases must be different.');\n }\n\n const [changeAddress, fromAddresses, xUtxoSet] = await Promise.all([\n getWalletChangeAddress({\n chainAlias: sourceChainAlias,\n getWalletChangeAddressForChainAlias,\n }),\n getWalletFromAddresses({\n chainAlias: sourceChainAlias,\n getWalletAddressesForChainAlias,\n requiredAddress: requiredFromAddress,\n }),\n getUtxos('X'),\n ]);\n\n return {\n baseFeeInNanoAvax: ajsContext.baseTxFee,\n unsignedTx: exportTx({\n amountInNanoAvax,\n changeAddress,\n context: ajsContext,\n destinationChainAlias,\n fromAddresses,\n sourceChainAlias,\n toAddress,\n utxos: xUtxoSet.getUTXOs(),\n }),\n };\n }\n }\n}\n\nasync function buildImportTx({\n ajsContext,\n atomicUtxos,\n destinationChainAlias,\n environment,\n getWalletAddressesForChainAlias,\n getWalletChangeAddressForChainAlias,\n requiredFromAddress,\n sourceChainAlias,\n toAddress,\n}: {\n ajsContext: Context.Context;\n atomicUtxos: Utxo[];\n destinationChainAlias: AvalancheBlockchainAlias;\n environment: Environment;\n getWalletAddressesForChainAlias: GetWalletAddressesForChainAliasCallback;\n getWalletChangeAddressForChainAlias: GetWalletChangeAddressForChainAliasCallback;\n requiredFromAddress: XpAddress;\n sourceChainAlias: AvalancheBlockchainAlias;\n toAddress: string;\n}): Promise<BuiltTx> {\n switch (destinationChainAlias) {\n case 'C': {\n if (sourceChainAlias === 'C') {\n throw new InvalidParamsError('Source and destination chain aliases must be different.');\n }\n\n const [baseFeeInNanoAvax, fromAddresses] = await Promise.all([\n getCChainBaseFeeInNanoAvax(environment),\n getWalletFromAddresses({\n chainAlias: destinationChainAlias,\n getWalletAddressesForChainAlias,\n requiredAddress: requiredFromAddress,\n }),\n ]);\n\n return {\n baseFeeInNanoAvax,\n unsignedTx: importTx({\n atomicUtxos,\n baseFeeInNanoAvax,\n context: ajsContext,\n destinationChainAlias,\n fromAddresses,\n sourceChainAlias,\n toAddress: getImportToAddress(toAddress, 'C'),\n }),\n };\n }\n\n case 'P': {\n if (sourceChainAlias === 'P') {\n throw new InvalidParamsError('Source and destination chain aliases must be different.');\n }\n\n const [feeState, fromAddresses] = await Promise.all([\n getFeeState(environment),\n getWalletFromAddresses({\n chainAlias: destinationChainAlias,\n getWalletAddressesForChainAlias,\n requiredAddress: requiredFromAddress,\n }),\n ]);\n\n return {\n baseFeeInNanoAvax: feeState.price,\n unsignedTx: importTx({\n atomicUtxos,\n context: ajsContext,\n destinationChainAlias,\n feeState,\n fromAddresses,\n sourceChainAlias,\n toAddress: getImportToAddress(toAddress, 'P'),\n }),\n };\n }\n\n case 'X': {\n if (sourceChainAlias === 'X') {\n throw new InvalidParamsError('Source and destination chain aliases must be different.');\n }\n\n const [changeAddress, fromAddresses] = await Promise.all([\n getWalletChangeAddress({\n chainAlias: destinationChainAlias,\n getWalletChangeAddressForChainAlias,\n }),\n getWalletFromAddresses({\n chainAlias: destinationChainAlias,\n getWalletAddressesForChainAlias,\n requiredAddress: requiredFromAddress,\n }),\n ]);\n\n return {\n baseFeeInNanoAvax: ajsContext.baseTxFee,\n unsignedTx: importTx({\n atomicUtxos,\n changeAddress,\n context: ajsContext,\n destinationChainAlias,\n fromAddresses,\n sourceChainAlias,\n toAddress: getImportToAddress(toAddress, 'X'),\n }),\n };\n }\n }\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"transfer-asset.cjs","names":["ServiceType","SdkError","ErrorReason","ErrorCode","getEnvironmentIsTestnet","getChainAlias","getExportFromAddressEvm","assertXpAddress","getExportToAddress","getImportToAddress","TransferSignatureReason","tryOrThrow","pollPrimaryNetworkTxStatus","sourcePendingTransferFromQuote","WEI_PER_NANO_AVAX_BIGINT","InvalidParamsError","getEvmClientForChain","Environment","AVALANCHE_FUJI_CHAIN","AVALANCHE_MAINNET_CHAIN","getCChainBaseFeeInNanoAvax","exportTx","getWalletChangeAddress","getFeeState","getWalletFromAddresses","importTx"],"sources":["../../../../src/transfer-service/avalanche-cct/_handlers/transfer-asset.ts"],"sourcesContent":["import type { Context, Utxo } from '@avalabs/avalanchejs';\nimport type { Address as EvmAddress } from 'viem';\nimport {\n AVALANCHE_FUJI_CHAIN,\n AVALANCHE_MAINNET_CHAIN,\n Environment,\n ServiceType,\n TransferSignatureReason,\n type AvalancheBlockchainAlias,\n} from '../../../constants';\nimport { ErrorCode, ErrorReason, InvalidParamsError, SdkError } from '../../../errors';\nimport { sourcePendingTransferFromQuote } from '../../_transfer-utilities';\nimport { getEvmClientForChain } from '../../_utils';\nimport type { AvalancheSendTxFunction, TransferService } from '../../../types/service';\nimport type { FailedTransfer, TargetPendingTransfer, TransferBase, TransferStepDetails } from '../../../types/transfer';\nimport { getFeeState } from '../_utils/p-chain';\nimport { pollPrimaryNetworkTxStatus } from '../_utils/polling';\nimport { exportTx, importTx } from '../_utils/transactions';\nimport type {\n GetAtomicUtxosCallback,\n GetCoreEthAddressCallback,\n GetUtxosCallback,\n GetWalletAddressesForChainAliasCallback,\n GetWalletChangeAddressForChainAliasCallback,\n XpAddress,\n} from '../types';\nimport { getChainAlias, getEnvironmentIsTestnet, tryOrThrow } from '../_utils';\nimport { getCChainBaseFeeInNanoAvax } from '../_utils/fees';\nimport { WEI_PER_NANO_AVAX_BIGINT } from '../constants';\nimport {\n assertXpAddress,\n getExportFromAddressEvm,\n getExportToAddress,\n getImportToAddress,\n getWalletChangeAddress,\n getWalletFromAddresses,\n} from '../_utils/addresses';\n\ntype BuiltTx = {\n baseFeeInNanoAvax: bigint;\n unsignedTx: Parameters<AvalancheSendTxFunction>[0]['unsignedTx'];\n};\n\nexport interface TransferAssetFactoryOptions {\n ajsContext: Context.Context;\n avalancheSendTx: AvalancheSendTxFunction;\n environment: Environment;\n getCoreEthAddress: GetCoreEthAddressCallback;\n getAtomicUtxos: GetAtomicUtxosCallback;\n getUtxos: GetUtxosCallback;\n getWalletAddressesForChainAlias: GetWalletAddressesForChainAliasCallback;\n getWalletChangeAddressForChainAlias: GetWalletChangeAddressForChainAliasCallback;\n}\n\nexport function transferAssetFactory({\n ajsContext,\n avalancheSendTx,\n environment,\n getCoreEthAddress,\n getAtomicUtxos,\n getUtxos,\n getWalletAddressesForChainAlias,\n getWalletChangeAddressForChainAlias,\n}: TransferAssetFactoryOptions): TransferService['transferAsset'] {\n return async ({ onStepChange, quote }) => {\n if (quote.serviceType !== ServiceType.AVALANCHE_CCT) {\n throw new SdkError(ErrorReason.INCORRECT_PROVIDER_PROVIDED, ErrorCode.INVALID_PARAMS);\n }\n\n const isTestnet = getEnvironmentIsTestnet(environment);\n const sourceChainAlias: AvalancheBlockchainAlias = getChainAlias(quote.sourceChain.chainId, isTestnet);\n const destinationChainAlias: AvalancheBlockchainAlias = getChainAlias(quote.targetChain.chainId, isTestnet);\n const exportFromAddressEvm = getExportFromAddressEvm(quote.fromAddress, sourceChainAlias);\n const exportRequiredFromAddress = sourceChainAlias === 'C' ? undefined : assertXpAddress(quote.fromAddress);\n const exportToAddress = await getExportToAddress({\n destinationChainAlias,\n getCoreEthAddress,\n quoteToAddress: quote.toAddress,\n });\n const importToAddress = getImportToAddress(quote.toAddress, destinationChainAlias);\n const importRequiredFromAddress =\n destinationChainAlias === 'C' ? exportToAddress : assertXpAddress(quote.toAddress);\n\n const hasExport = quote.amountIn > 0n;\n const requiredSignatures = hasExport ? 2 : 1;\n const startedAtMs = Date.now();\n const transferBase = getTransferBase(quote, environment);\n\n let exportTxId: string | undefined;\n\n if (hasExport) {\n const exportStep: TransferStepDetails = {\n currentSignature: 1,\n currentSignatureReason: TransferSignatureReason.AvalancheCrossChainExport,\n quote,\n requiredSignatures,\n };\n\n onStepChange?.(exportStep);\n\n const builtExportTx = await tryOrThrow(\n () =>\n buildExportTx({\n ajsContext,\n environment,\n getUtxos,\n getWalletAddressesForChainAlias,\n getWalletChangeAddressForChainAlias,\n quoteAmountIn: quote.amountIn,\n sourceChainAlias,\n destinationChainAlias,\n fromAddress: exportFromAddressEvm,\n requiredFromAddress: exportRequiredFromAddress,\n toAddress: exportToAddress,\n }),\n (error) => new SdkError('Failed to build Avalanche export transaction.', ErrorCode.UNKNOWN, { cause: error }),\n );\n\n exportTxId = await tryOrThrow(\n () =>\n avalancheSendTx(\n {\n baseFeeInNanoAvax: builtExportTx.baseFeeInNanoAvax,\n chainAlias: sourceChainAlias,\n txType: 'export',\n unsignedTx: builtExportTx.unsignedTx,\n },\n exportStep,\n ),\n (error) =>\n new SdkError('Failed to sign/send Avalanche export transaction.', ErrorCode.SIGNING_FAILED, {\n cause: error,\n }),\n );\n\n let didExportSucceed: boolean;\n try {\n didExportSucceed = await pollPrimaryNetworkTxStatus({\n chainAlias: sourceChainAlias,\n environment,\n txId: exportTxId,\n });\n } catch {\n return sourcePendingTransferFromQuote(quote, {\n environment,\n requiredConfirmationCount: 1,\n startedAtMs,\n txHash: exportTxId,\n });\n }\n\n if (!didExportSucceed) {\n return buildFailedTransfer({\n errorCode: ErrorCode.TRANSACTION_REVERTED,\n errorReason: 'Export transaction was not accepted by Avalanche.',\n sourceStartedAtMs: startedAtMs,\n sourceTxHash: exportTxId,\n transferBase,\n });\n }\n }\n\n const atomicUtxos = await tryOrThrow(\n async () => (await getAtomicUtxos(destinationChainAlias, sourceChainAlias)).getUTXOs(),\n (error) => new SdkError('Failed to fetch Avalanche atomic UTXOs.', ErrorCode.UNKNOWN, { cause: error }),\n );\n\n if (atomicUtxos.length === 0) {\n return buildFailedTransfer({\n errorCode: ErrorCode.INVALID_PARAMS,\n errorReason: 'No atomic UTXOs available to import for this route.',\n sourceStartedAtMs: startedAtMs,\n sourceTxHash: exportTxId,\n transferBase,\n });\n }\n\n const importStep: TransferStepDetails = {\n currentSignature: hasExport ? 2 : 1,\n currentSignatureReason: TransferSignatureReason.AvalancheCrossChainImport,\n quote,\n requiredSignatures,\n };\n\n onStepChange?.(importStep);\n\n const builtImportTx = await tryOrThrow(\n () =>\n buildImportTx({\n ajsContext,\n atomicUtxos,\n destinationChainAlias,\n environment,\n getWalletAddressesForChainAlias,\n getWalletChangeAddressForChainAlias,\n sourceChainAlias,\n requiredFromAddress: importRequiredFromAddress,\n toAddress: importToAddress,\n }),\n (error) => new SdkError('Failed to build Avalanche import transaction.', ErrorCode.UNKNOWN, { cause: error }),\n );\n\n const importTxId = await tryOrThrow(\n () =>\n avalancheSendTx(\n {\n baseFeeInNanoAvax: builtImportTx.baseFeeInNanoAvax,\n chainAlias: destinationChainAlias,\n txType: 'import',\n unsignedTx: builtImportTx.unsignedTx,\n },\n importStep,\n ),\n (error) =>\n new SdkError('Failed to sign/send Avalanche import transaction.', ErrorCode.SIGNING_FAILED, {\n cause: error,\n }),\n );\n\n return {\n ...transferBase,\n source: {\n confirmationCount: exportTxId ? 1 : 0,\n requiredConfirmationCount: 1,\n startedAtMs,\n txHash: exportTxId ?? importTxId,\n },\n status: 'target-pending',\n target: {\n confirmationCount: 0,\n requiredConfirmationCount: 1,\n startedAtMs: Date.now(),\n txHash: importTxId,\n },\n } satisfies TargetPendingTransfer;\n };\n}\n\nfunction getTransferBase(\n quote: Parameters<TransferService['transferAsset']>[0]['quote'],\n environment: Environment,\n): Omit<TransferBase, 'status'> {\n return {\n amountIn: quote.amountIn,\n amountOut: quote.amountOut,\n environment,\n fees: quote.fees,\n fromAddress: quote.fromAddress,\n id: quote.id,\n partnerFeeBps: quote.partnerFeeBps,\n sourceAsset: quote.assetIn,\n sourceChain: quote.sourceChain,\n targetAsset: quote.assetOut,\n targetChain: quote.targetChain,\n toAddress: quote.toAddress,\n type: quote.serviceType,\n };\n}\n\nfunction buildFailedTransfer({\n errorCode,\n errorReason,\n sourceStartedAtMs,\n sourceTxHash,\n transferBase,\n}: {\n errorCode: ErrorCode;\n errorReason: string;\n sourceStartedAtMs: number;\n sourceTxHash?: string;\n transferBase: Omit<TransferBase, 'status'>;\n}): FailedTransfer {\n return {\n ...transferBase,\n errorCode,\n errorReason,\n failedAtMs: Date.now(),\n ...(sourceTxHash\n ? {\n source: {\n confirmationCount: 0,\n requiredConfirmationCount: 1,\n startedAtMs: sourceStartedAtMs,\n txHash: sourceTxHash,\n },\n }\n : {}),\n status: 'failed',\n };\n}\n\nfunction getExportAmountInNanoAvax(sourceChainAlias: AvalancheBlockchainAlias, quoteAmountIn: bigint): bigint {\n return sourceChainAlias === 'C' ? quoteAmountIn / WEI_PER_NANO_AVAX_BIGINT : quoteAmountIn;\n}\n\nasync function buildExportTx({\n ajsContext,\n destinationChainAlias,\n environment,\n fromAddress,\n getUtxos,\n getWalletAddressesForChainAlias,\n getWalletChangeAddressForChainAlias,\n quoteAmountIn,\n requiredFromAddress,\n sourceChainAlias,\n toAddress,\n}: {\n ajsContext: Context.Context;\n destinationChainAlias: AvalancheBlockchainAlias;\n environment: Environment;\n fromAddress: EvmAddress | null;\n getUtxos: GetUtxosCallback;\n getWalletAddressesForChainAlias: GetWalletAddressesForChainAliasCallback;\n getWalletChangeAddressForChainAlias: GetWalletChangeAddressForChainAliasCallback;\n quoteAmountIn: bigint;\n requiredFromAddress?: XpAddress;\n sourceChainAlias: AvalancheBlockchainAlias;\n toAddress: XpAddress;\n}): Promise<BuiltTx> {\n const amountInNanoAvax = getExportAmountInNanoAvax(sourceChainAlias, quoteAmountIn);\n\n switch (sourceChainAlias) {\n case 'C': {\n if (destinationChainAlias === 'C') {\n throw new InvalidParamsError('Source and destination chain aliases must be different.');\n }\n\n if (!fromAddress) {\n throw new InvalidParamsError('fromAddress must be an EVM address when exporting from C-Chain.');\n }\n\n const cChain = environment === Environment.TEST ? AVALANCHE_FUJI_CHAIN : AVALANCHE_MAINNET_CHAIN;\n const cChainClient = getEvmClientForChain({ chain: cChain });\n const [nonce, baseFeeInNanoAvax] = await Promise.all([\n cChainClient.getTransactionCount({\n address: fromAddress,\n }),\n getCChainBaseFeeInNanoAvax(environment),\n ]);\n\n return {\n baseFeeInNanoAvax,\n unsignedTx: exportTx({\n amountInNanoAvax,\n baseFeeInNanoAvax,\n context: ajsContext,\n destinationChainAlias,\n fromAddress,\n nonce: BigInt(nonce),\n sourceChainAlias,\n toAddress,\n }),\n };\n }\n\n case 'P': {\n if (destinationChainAlias === 'P') {\n throw new InvalidParamsError('Source and destination chain aliases must be different.');\n }\n\n const [changeAddress, feeState, fromAddresses, pUtxoSet] = await Promise.all([\n getWalletChangeAddress({\n chainAlias: sourceChainAlias,\n getWalletChangeAddressForChainAlias,\n }),\n getFeeState(environment),\n getWalletFromAddresses({\n chainAlias: sourceChainAlias,\n getWalletAddressesForChainAlias,\n requiredAddress: requiredFromAddress,\n }),\n getUtxos('P'),\n ]);\n\n return {\n baseFeeInNanoAvax: feeState.price,\n unsignedTx: exportTx({\n amountInNanoAvax,\n changeAddress,\n context: ajsContext,\n destinationChainAlias,\n feeState,\n fromAddresses,\n sourceChainAlias,\n toAddress,\n utxos: pUtxoSet.getUTXOs(),\n }),\n };\n }\n\n case 'X': {\n if (destinationChainAlias === 'X') {\n throw new InvalidParamsError('Source and destination chain aliases must be different.');\n }\n\n const [changeAddress, fromAddresses, xUtxoSet] = await Promise.all([\n getWalletChangeAddress({\n chainAlias: sourceChainAlias,\n getWalletChangeAddressForChainAlias,\n }),\n getWalletFromAddresses({\n chainAlias: sourceChainAlias,\n getWalletAddressesForChainAlias,\n requiredAddress: requiredFromAddress,\n }),\n getUtxos('X'),\n ]);\n\n return {\n baseFeeInNanoAvax: ajsContext.baseTxFee,\n unsignedTx: exportTx({\n amountInNanoAvax,\n changeAddress,\n context: ajsContext,\n destinationChainAlias,\n fromAddresses,\n sourceChainAlias,\n toAddress,\n utxos: xUtxoSet.getUTXOs(),\n }),\n };\n }\n }\n}\n\nasync function buildImportTx({\n ajsContext,\n atomicUtxos,\n destinationChainAlias,\n environment,\n getWalletAddressesForChainAlias,\n getWalletChangeAddressForChainAlias,\n requiredFromAddress,\n sourceChainAlias,\n toAddress,\n}: {\n ajsContext: Context.Context;\n atomicUtxos: Utxo[];\n destinationChainAlias: AvalancheBlockchainAlias;\n environment: Environment;\n getWalletAddressesForChainAlias: GetWalletAddressesForChainAliasCallback;\n getWalletChangeAddressForChainAlias: GetWalletChangeAddressForChainAliasCallback;\n requiredFromAddress: XpAddress;\n sourceChainAlias: AvalancheBlockchainAlias;\n toAddress: string;\n}): Promise<BuiltTx> {\n switch (destinationChainAlias) {\n case 'C': {\n if (sourceChainAlias === 'C') {\n throw new InvalidParamsError('Source and destination chain aliases must be different.');\n }\n\n const [baseFeeInNanoAvax, fromAddresses] = await Promise.all([\n getCChainBaseFeeInNanoAvax(environment),\n getWalletFromAddresses({\n chainAlias: destinationChainAlias,\n getWalletAddressesForChainAlias,\n requiredAddress: requiredFromAddress,\n }),\n ]);\n\n return {\n baseFeeInNanoAvax,\n unsignedTx: importTx({\n atomicUtxos,\n baseFeeInNanoAvax,\n context: ajsContext,\n destinationChainAlias,\n fromAddresses,\n sourceChainAlias,\n toAddress: getImportToAddress(toAddress, 'C'),\n }),\n };\n }\n\n case 'P': {\n if (sourceChainAlias === 'P') {\n throw new InvalidParamsError('Source and destination chain aliases must be different.');\n }\n\n const [feeState, fromAddresses] = await Promise.all([\n getFeeState(environment),\n getWalletFromAddresses({\n chainAlias: destinationChainAlias,\n getWalletAddressesForChainAlias,\n requiredAddress: requiredFromAddress,\n }),\n ]);\n\n return {\n baseFeeInNanoAvax: feeState.price,\n unsignedTx: importTx({\n atomicUtxos,\n context: ajsContext,\n destinationChainAlias,\n feeState,\n fromAddresses,\n sourceChainAlias,\n toAddress: getImportToAddress(toAddress, 'P'),\n }),\n };\n }\n\n case 'X': {\n if (sourceChainAlias === 'X') {\n throw new InvalidParamsError('Source and destination chain aliases must be different.');\n }\n\n const [changeAddress, fromAddresses] = await Promise.all([\n getWalletChangeAddress({\n chainAlias: destinationChainAlias,\n getWalletChangeAddressForChainAlias,\n }),\n getWalletFromAddresses({\n chainAlias: destinationChainAlias,\n getWalletAddressesForChainAlias,\n requiredAddress: requiredFromAddress,\n }),\n ]);\n\n return {\n baseFeeInNanoAvax: ajsContext.baseTxFee,\n unsignedTx: importTx({\n atomicUtxos,\n changeAddress,\n context: ajsContext,\n destinationChainAlias,\n fromAddresses,\n sourceChainAlias,\n toAddress: getImportToAddress(toAddress, 'X'),\n }),\n };\n }\n }\n}\n"],"mappings":"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"}
@@ -1,2 +1,2 @@
1
- import{AVALANCHE_FUJI_CHAIN as e,AVALANCHE_MAINNET_CHAIN as t,Environment as n,ServiceType as r,TransferSignatureReason as i}from"../../../constants.js";import{ErrorCode as a,ErrorReason as o,InvalidParamsError as s,SdkError as c}from"../../../errors.js";import{getEvmClientForChain as l}from"../../_utils.js";import{WEI_PER_NANO_AVAX_BIGINT as u}from"../constants.js";import{getChainAlias as d,getEnvironmentIsTestnet as f,tryOrThrow as p}from"../_utils.js";import{sourcePendingTransferFromQuote as m}from"../../_transfer-utilities.js";import{getFeeState as h}from"../_utils/p-chain.js";import{pollPrimaryNetworkTxStatus as g}from"../_utils/polling.js";import{exportTx as _,importTx as v}from"../_utils/transactions.js";import{getCChainBaseFeeInNanoAvax as y}from"../_utils/fees.js";import{assertXpAddress as b,getExportFromAddressEvm as x,getExportToAddress as S,getImportToAddress as C,getWalletChangeAddress as w,getWalletFromAddresses as T}from"../_utils/addresses.js";function E({ajsContext:e,avalancheSendTx:t,environment:n,getCoreEthAddress:s,getAtomicUtxos:l,getUtxos:u,getWalletAddressesForChainAlias:h,getWalletChangeAddressForChainAlias:_}){return async({onStepChange:v,quote:y})=>{if(y.serviceType!==r.AVALANCHE_CCT)throw new c(o.INCORRECT_PROVIDER_PROVIDED,a.INVALID_PARAMS);let w=f(n),T=d(y.sourceChain.chainId,w),E=d(y.targetChain.chainId,w),k=x(y.fromAddress,T),M=T===`C`?void 0:b(y.fromAddress),N=await S({destinationChainAlias:E,getCoreEthAddress:s,quoteToAddress:y.toAddress}),P=C(y.toAddress,E),F=E===`C`?N:b(y.toAddress),I=y.amountIn>0n,L=I?2:1,R=Date.now(),z=D(y,n),B;if(I){v?.({currentSignature:1,currentSignatureReason:i.AvalancheCrossChainExport,quote:y,requiredSignatures:L});let r=await p(()=>A({ajsContext:e,environment:n,getUtxos:u,getWalletAddressesForChainAlias:h,getWalletChangeAddressForChainAlias:_,quoteAmountIn:y.amountIn,sourceChainAlias:T,destinationChainAlias:E,fromAddress:k,requiredFromAddress:M,toAddress:N}),e=>new c(`Failed to build Avalanche export transaction.`,a.UNKNOWN,{cause:e}));B=await p(()=>t({baseFeeInNanoAvax:r.baseFeeInNanoAvax,chainAlias:T,txType:`export`,unsignedTx:r.unsignedTx}),e=>new c(`Failed to sign/send Avalanche export transaction.`,a.SIGNING_FAILED,{cause:e}));let o;try{o=await g({chainAlias:T,environment:n,txId:B})}catch{return m(y,{environment:n,requiredConfirmationCount:1,startedAtMs:R,txHash:B})}if(!o)return O({errorCode:a.TRANSACTION_REVERTED,errorReason:`Export transaction was not accepted by Avalanche.`,sourceStartedAtMs:R,sourceTxHash:B,transferBase:z})}let V=await p(async()=>(await l(E,T)).getUTXOs(),e=>new c(`Failed to fetch Avalanche atomic UTXOs.`,a.UNKNOWN,{cause:e}));if(V.length===0)return O({errorCode:a.INVALID_PARAMS,errorReason:`No atomic UTXOs available to import for this route.`,sourceStartedAtMs:R,sourceTxHash:B,transferBase:z});v?.({currentSignature:I?2:1,currentSignatureReason:i.AvalancheCrossChainImport,quote:y,requiredSignatures:L});let H=await p(()=>j({ajsContext:e,atomicUtxos:V,destinationChainAlias:E,environment:n,getWalletAddressesForChainAlias:h,getWalletChangeAddressForChainAlias:_,sourceChainAlias:T,requiredFromAddress:F,toAddress:P}),e=>new c(`Failed to build Avalanche import transaction.`,a.UNKNOWN,{cause:e})),U=await p(()=>t({baseFeeInNanoAvax:H.baseFeeInNanoAvax,chainAlias:E,txType:`import`,unsignedTx:H.unsignedTx}),e=>new c(`Failed to sign/send Avalanche import transaction.`,a.SIGNING_FAILED,{cause:e}));return{...z,source:{confirmationCount:B?1:0,requiredConfirmationCount:1,startedAtMs:R,txHash:B??U},status:`target-pending`,target:{confirmationCount:0,requiredConfirmationCount:1,startedAtMs:Date.now(),txHash:U}}}}function D(e,t){return{amountIn:e.amountIn,amountOut:e.amountOut,environment:t,fees:e.fees,fromAddress:e.fromAddress,id:e.id,partnerFeeBps:e.partnerFeeBps,sourceAsset:e.assetIn,sourceChain:e.sourceChain,targetAsset:e.assetOut,targetChain:e.targetChain,toAddress:e.toAddress,type:e.serviceType}}function O({errorCode:e,errorReason:t,sourceStartedAtMs:n,sourceTxHash:r,transferBase:i}){return{...i,errorCode:e,errorReason:t,failedAtMs:Date.now(),...r?{source:{confirmationCount:0,requiredConfirmationCount:1,startedAtMs:n,txHash:r}}:{},status:`failed`}}function k(e,t){return e===`C`?t/u:t}async function A({ajsContext:r,destinationChainAlias:i,environment:a,fromAddress:o,getUtxos:c,getWalletAddressesForChainAlias:u,getWalletChangeAddressForChainAlias:d,quoteAmountIn:f,requiredFromAddress:p,sourceChainAlias:m,toAddress:g}){let v=k(m,f);switch(m){case`C`:{if(i===`C`)throw new s(`Source and destination chain aliases must be different.`);if(!o)throw new s(`fromAddress must be an EVM address when exporting from C-Chain.`);let c=l({chain:a===n.TEST?e:t}),[u,d]=await Promise.all([c.getTransactionCount({address:o}),y(a)]);return{baseFeeInNanoAvax:d,unsignedTx:_({amountInNanoAvax:v,baseFeeInNanoAvax:d,context:r,destinationChainAlias:i,fromAddress:o,nonce:BigInt(u),sourceChainAlias:m,toAddress:g})}}case`P`:{if(i===`P`)throw new s(`Source and destination chain aliases must be different.`);let[e,t,n,o]=await Promise.all([w({chainAlias:m,getWalletChangeAddressForChainAlias:d}),h(a),T({chainAlias:m,getWalletAddressesForChainAlias:u,requiredAddress:p}),c(`P`)]);return{baseFeeInNanoAvax:t.price,unsignedTx:_({amountInNanoAvax:v,changeAddress:e,context:r,destinationChainAlias:i,feeState:t,fromAddresses:n,sourceChainAlias:m,toAddress:g,utxos:o.getUTXOs()})}}case`X`:{if(i===`X`)throw new s(`Source and destination chain aliases must be different.`);let[e,t,n]=await Promise.all([w({chainAlias:m,getWalletChangeAddressForChainAlias:d}),T({chainAlias:m,getWalletAddressesForChainAlias:u,requiredAddress:p}),c(`X`)]);return{baseFeeInNanoAvax:r.baseTxFee,unsignedTx:_({amountInNanoAvax:v,changeAddress:e,context:r,destinationChainAlias:i,fromAddresses:t,sourceChainAlias:m,toAddress:g,utxos:n.getUTXOs()})}}}}async function j({ajsContext:e,atomicUtxos:t,destinationChainAlias:n,environment:r,getWalletAddressesForChainAlias:i,getWalletChangeAddressForChainAlias:a,requiredFromAddress:o,sourceChainAlias:c,toAddress:l}){switch(n){case`C`:{if(c===`C`)throw new s(`Source and destination chain aliases must be different.`);let[a,u]=await Promise.all([y(r),T({chainAlias:n,getWalletAddressesForChainAlias:i,requiredAddress:o})]);return{baseFeeInNanoAvax:a,unsignedTx:v({atomicUtxos:t,baseFeeInNanoAvax:a,context:e,destinationChainAlias:n,fromAddresses:u,sourceChainAlias:c,toAddress:C(l,`C`)})}}case`P`:{if(c===`P`)throw new s(`Source and destination chain aliases must be different.`);let[a,u]=await Promise.all([h(r),T({chainAlias:n,getWalletAddressesForChainAlias:i,requiredAddress:o})]);return{baseFeeInNanoAvax:a.price,unsignedTx:v({atomicUtxos:t,context:e,destinationChainAlias:n,feeState:a,fromAddresses:u,sourceChainAlias:c,toAddress:C(l,`P`)})}}case`X`:{if(c===`X`)throw new s(`Source and destination chain aliases must be different.`);let[r,u]=await Promise.all([w({chainAlias:n,getWalletChangeAddressForChainAlias:a}),T({chainAlias:n,getWalletAddressesForChainAlias:i,requiredAddress:o})]);return{baseFeeInNanoAvax:e.baseTxFee,unsignedTx:v({atomicUtxos:t,changeAddress:r,context:e,destinationChainAlias:n,fromAddresses:u,sourceChainAlias:c,toAddress:C(l,`X`)})}}}}export{E as transferAssetFactory};
1
+ import{AVALANCHE_FUJI_CHAIN as e,AVALANCHE_MAINNET_CHAIN as t,Environment as n,ServiceType as r,TransferSignatureReason as i}from"../../../constants.js";import{ErrorCode as a,ErrorReason as o,InvalidParamsError as s,SdkError as c}from"../../../errors.js";import{getEvmClientForChain as l}from"../../_utils.js";import{WEI_PER_NANO_AVAX_BIGINT as u}from"../constants.js";import{getChainAlias as d,getEnvironmentIsTestnet as f,tryOrThrow as p}from"../_utils.js";import{sourcePendingTransferFromQuote as m}from"../../_transfer-utilities.js";import{getFeeState as h}from"../_utils/p-chain.js";import{pollPrimaryNetworkTxStatus as g}from"../_utils/polling.js";import{exportTx as _,importTx as v}from"../_utils/transactions.js";import{getCChainBaseFeeInNanoAvax as y}from"../_utils/fees.js";import{assertXpAddress as b,getExportFromAddressEvm as x,getExportToAddress as S,getImportToAddress as C,getWalletChangeAddress as w,getWalletFromAddresses as T}from"../_utils/addresses.js";function E({ajsContext:e,avalancheSendTx:t,environment:n,getCoreEthAddress:s,getAtomicUtxos:l,getUtxos:u,getWalletAddressesForChainAlias:h,getWalletChangeAddressForChainAlias:_}){return async({onStepChange:v,quote:y})=>{if(y.serviceType!==r.AVALANCHE_CCT)throw new c(o.INCORRECT_PROVIDER_PROVIDED,a.INVALID_PARAMS);let w=f(n),T=d(y.sourceChain.chainId,w),E=d(y.targetChain.chainId,w),k=x(y.fromAddress,T),M=T===`C`?void 0:b(y.fromAddress),N=await S({destinationChainAlias:E,getCoreEthAddress:s,quoteToAddress:y.toAddress}),P=C(y.toAddress,E),F=E===`C`?N:b(y.toAddress),I=y.amountIn>0n,L=I?2:1,R=Date.now(),z=D(y,n),B;if(I){let r={currentSignature:1,currentSignatureReason:i.AvalancheCrossChainExport,quote:y,requiredSignatures:L};v?.(r);let o=await p(()=>A({ajsContext:e,environment:n,getUtxos:u,getWalletAddressesForChainAlias:h,getWalletChangeAddressForChainAlias:_,quoteAmountIn:y.amountIn,sourceChainAlias:T,destinationChainAlias:E,fromAddress:k,requiredFromAddress:M,toAddress:N}),e=>new c(`Failed to build Avalanche export transaction.`,a.UNKNOWN,{cause:e}));B=await p(()=>t({baseFeeInNanoAvax:o.baseFeeInNanoAvax,chainAlias:T,txType:`export`,unsignedTx:o.unsignedTx},r),e=>new c(`Failed to sign/send Avalanche export transaction.`,a.SIGNING_FAILED,{cause:e}));let s;try{s=await g({chainAlias:T,environment:n,txId:B})}catch{return m(y,{environment:n,requiredConfirmationCount:1,startedAtMs:R,txHash:B})}if(!s)return O({errorCode:a.TRANSACTION_REVERTED,errorReason:`Export transaction was not accepted by Avalanche.`,sourceStartedAtMs:R,sourceTxHash:B,transferBase:z})}let V=await p(async()=>(await l(E,T)).getUTXOs(),e=>new c(`Failed to fetch Avalanche atomic UTXOs.`,a.UNKNOWN,{cause:e}));if(V.length===0)return O({errorCode:a.INVALID_PARAMS,errorReason:`No atomic UTXOs available to import for this route.`,sourceStartedAtMs:R,sourceTxHash:B,transferBase:z});let H={currentSignature:I?2:1,currentSignatureReason:i.AvalancheCrossChainImport,quote:y,requiredSignatures:L};v?.(H);let U=await p(()=>j({ajsContext:e,atomicUtxos:V,destinationChainAlias:E,environment:n,getWalletAddressesForChainAlias:h,getWalletChangeAddressForChainAlias:_,sourceChainAlias:T,requiredFromAddress:F,toAddress:P}),e=>new c(`Failed to build Avalanche import transaction.`,a.UNKNOWN,{cause:e})),W=await p(()=>t({baseFeeInNanoAvax:U.baseFeeInNanoAvax,chainAlias:E,txType:`import`,unsignedTx:U.unsignedTx},H),e=>new c(`Failed to sign/send Avalanche import transaction.`,a.SIGNING_FAILED,{cause:e}));return{...z,source:{confirmationCount:B?1:0,requiredConfirmationCount:1,startedAtMs:R,txHash:B??W},status:`target-pending`,target:{confirmationCount:0,requiredConfirmationCount:1,startedAtMs:Date.now(),txHash:W}}}}function D(e,t){return{amountIn:e.amountIn,amountOut:e.amountOut,environment:t,fees:e.fees,fromAddress:e.fromAddress,id:e.id,partnerFeeBps:e.partnerFeeBps,sourceAsset:e.assetIn,sourceChain:e.sourceChain,targetAsset:e.assetOut,targetChain:e.targetChain,toAddress:e.toAddress,type:e.serviceType}}function O({errorCode:e,errorReason:t,sourceStartedAtMs:n,sourceTxHash:r,transferBase:i}){return{...i,errorCode:e,errorReason:t,failedAtMs:Date.now(),...r?{source:{confirmationCount:0,requiredConfirmationCount:1,startedAtMs:n,txHash:r}}:{},status:`failed`}}function k(e,t){return e===`C`?t/u:t}async function A({ajsContext:r,destinationChainAlias:i,environment:a,fromAddress:o,getUtxos:c,getWalletAddressesForChainAlias:u,getWalletChangeAddressForChainAlias:d,quoteAmountIn:f,requiredFromAddress:p,sourceChainAlias:m,toAddress:g}){let v=k(m,f);switch(m){case`C`:{if(i===`C`)throw new s(`Source and destination chain aliases must be different.`);if(!o)throw new s(`fromAddress must be an EVM address when exporting from C-Chain.`);let c=l({chain:a===n.TEST?e:t}),[u,d]=await Promise.all([c.getTransactionCount({address:o}),y(a)]);return{baseFeeInNanoAvax:d,unsignedTx:_({amountInNanoAvax:v,baseFeeInNanoAvax:d,context:r,destinationChainAlias:i,fromAddress:o,nonce:BigInt(u),sourceChainAlias:m,toAddress:g})}}case`P`:{if(i===`P`)throw new s(`Source and destination chain aliases must be different.`);let[e,t,n,o]=await Promise.all([w({chainAlias:m,getWalletChangeAddressForChainAlias:d}),h(a),T({chainAlias:m,getWalletAddressesForChainAlias:u,requiredAddress:p}),c(`P`)]);return{baseFeeInNanoAvax:t.price,unsignedTx:_({amountInNanoAvax:v,changeAddress:e,context:r,destinationChainAlias:i,feeState:t,fromAddresses:n,sourceChainAlias:m,toAddress:g,utxos:o.getUTXOs()})}}case`X`:{if(i===`X`)throw new s(`Source and destination chain aliases must be different.`);let[e,t,n]=await Promise.all([w({chainAlias:m,getWalletChangeAddressForChainAlias:d}),T({chainAlias:m,getWalletAddressesForChainAlias:u,requiredAddress:p}),c(`X`)]);return{baseFeeInNanoAvax:r.baseTxFee,unsignedTx:_({amountInNanoAvax:v,changeAddress:e,context:r,destinationChainAlias:i,fromAddresses:t,sourceChainAlias:m,toAddress:g,utxos:n.getUTXOs()})}}}}async function j({ajsContext:e,atomicUtxos:t,destinationChainAlias:n,environment:r,getWalletAddressesForChainAlias:i,getWalletChangeAddressForChainAlias:a,requiredFromAddress:o,sourceChainAlias:c,toAddress:l}){switch(n){case`C`:{if(c===`C`)throw new s(`Source and destination chain aliases must be different.`);let[a,u]=await Promise.all([y(r),T({chainAlias:n,getWalletAddressesForChainAlias:i,requiredAddress:o})]);return{baseFeeInNanoAvax:a,unsignedTx:v({atomicUtxos:t,baseFeeInNanoAvax:a,context:e,destinationChainAlias:n,fromAddresses:u,sourceChainAlias:c,toAddress:C(l,`C`)})}}case`P`:{if(c===`P`)throw new s(`Source and destination chain aliases must be different.`);let[a,u]=await Promise.all([h(r),T({chainAlias:n,getWalletAddressesForChainAlias:i,requiredAddress:o})]);return{baseFeeInNanoAvax:a.price,unsignedTx:v({atomicUtxos:t,context:e,destinationChainAlias:n,feeState:a,fromAddresses:u,sourceChainAlias:c,toAddress:C(l,`P`)})}}case`X`:{if(c===`X`)throw new s(`Source and destination chain aliases must be different.`);let[r,u]=await Promise.all([w({chainAlias:n,getWalletChangeAddressForChainAlias:a}),T({chainAlias:n,getWalletAddressesForChainAlias:i,requiredAddress:o})]);return{baseFeeInNanoAvax:e.baseTxFee,unsignedTx:v({atomicUtxos:t,changeAddress:r,context:e,destinationChainAlias:n,fromAddresses:u,sourceChainAlias:c,toAddress:C(l,`X`)})}}}}export{E as transferAssetFactory};
2
2
  //# sourceMappingURL=transfer-asset.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"transfer-asset.js","names":[],"sources":["../../../../src/transfer-service/avalanche-cct/_handlers/transfer-asset.ts"],"sourcesContent":["import type { Context, Utxo } from '@avalabs/avalanchejs';\nimport type { Address as EvmAddress } from 'viem';\nimport {\n AVALANCHE_FUJI_CHAIN,\n AVALANCHE_MAINNET_CHAIN,\n Environment,\n ServiceType,\n TransferSignatureReason,\n type AvalancheBlockchainAlias,\n} from '../../../constants';\nimport { ErrorCode, ErrorReason, InvalidParamsError, SdkError } from '../../../errors';\nimport { sourcePendingTransferFromQuote } from '../../_transfer-utilities';\nimport { getEvmClientForChain } from '../../_utils';\nimport type { AvalancheSendTxFunction, TransferService } from '../../../types/service';\nimport type { FailedTransfer, TargetPendingTransfer, TransferBase } from '../../../types/transfer';\nimport { getFeeState } from '../_utils/p-chain';\nimport { pollPrimaryNetworkTxStatus } from '../_utils/polling';\nimport { exportTx, importTx } from '../_utils/transactions';\nimport type {\n GetAtomicUtxosCallback,\n GetCoreEthAddressCallback,\n GetUtxosCallback,\n GetWalletAddressesForChainAliasCallback,\n GetWalletChangeAddressForChainAliasCallback,\n XpAddress,\n} from '../types';\nimport { getChainAlias, getEnvironmentIsTestnet, tryOrThrow } from '../_utils';\nimport { getCChainBaseFeeInNanoAvax } from '../_utils/fees';\nimport { WEI_PER_NANO_AVAX_BIGINT } from '../constants';\nimport {\n assertXpAddress,\n getExportFromAddressEvm,\n getExportToAddress,\n getImportToAddress,\n getWalletChangeAddress,\n getWalletFromAddresses,\n} from '../_utils/addresses';\n\ntype BuiltTx = {\n baseFeeInNanoAvax: bigint;\n unsignedTx: Parameters<AvalancheSendTxFunction>[0]['unsignedTx'];\n};\n\nexport interface TransferAssetFactoryOptions {\n ajsContext: Context.Context;\n avalancheSendTx: AvalancheSendTxFunction;\n environment: Environment;\n getCoreEthAddress: GetCoreEthAddressCallback;\n getAtomicUtxos: GetAtomicUtxosCallback;\n getUtxos: GetUtxosCallback;\n getWalletAddressesForChainAlias: GetWalletAddressesForChainAliasCallback;\n getWalletChangeAddressForChainAlias: GetWalletChangeAddressForChainAliasCallback;\n}\n\nexport function transferAssetFactory({\n ajsContext,\n avalancheSendTx,\n environment,\n getCoreEthAddress,\n getAtomicUtxos,\n getUtxos,\n getWalletAddressesForChainAlias,\n getWalletChangeAddressForChainAlias,\n}: TransferAssetFactoryOptions): TransferService['transferAsset'] {\n return async ({ onStepChange, quote }) => {\n if (quote.serviceType !== ServiceType.AVALANCHE_CCT) {\n throw new SdkError(ErrorReason.INCORRECT_PROVIDER_PROVIDED, ErrorCode.INVALID_PARAMS);\n }\n\n const isTestnet = getEnvironmentIsTestnet(environment);\n const sourceChainAlias: AvalancheBlockchainAlias = getChainAlias(quote.sourceChain.chainId, isTestnet);\n const destinationChainAlias: AvalancheBlockchainAlias = getChainAlias(quote.targetChain.chainId, isTestnet);\n const exportFromAddressEvm = getExportFromAddressEvm(quote.fromAddress, sourceChainAlias);\n const exportRequiredFromAddress = sourceChainAlias === 'C' ? undefined : assertXpAddress(quote.fromAddress);\n const exportToAddress = await getExportToAddress({\n destinationChainAlias,\n getCoreEthAddress,\n quoteToAddress: quote.toAddress,\n });\n const importToAddress = getImportToAddress(quote.toAddress, destinationChainAlias);\n const importRequiredFromAddress =\n destinationChainAlias === 'C' ? exportToAddress : assertXpAddress(quote.toAddress);\n\n const hasExport = quote.amountIn > 0n;\n const requiredSignatures = hasExport ? 2 : 1;\n const startedAtMs = Date.now();\n const transferBase = getTransferBase(quote, environment);\n\n let exportTxId: string | undefined;\n\n if (hasExport) {\n onStepChange?.({\n currentSignature: 1,\n currentSignatureReason: TransferSignatureReason.AvalancheCrossChainExport,\n quote,\n requiredSignatures,\n });\n\n const builtExportTx = await tryOrThrow(\n () =>\n buildExportTx({\n ajsContext,\n environment,\n getUtxos,\n getWalletAddressesForChainAlias,\n getWalletChangeAddressForChainAlias,\n quoteAmountIn: quote.amountIn,\n sourceChainAlias,\n destinationChainAlias,\n fromAddress: exportFromAddressEvm,\n requiredFromAddress: exportRequiredFromAddress,\n toAddress: exportToAddress,\n }),\n (error) => new SdkError('Failed to build Avalanche export transaction.', ErrorCode.UNKNOWN, { cause: error }),\n );\n\n exportTxId = await tryOrThrow(\n () =>\n avalancheSendTx({\n baseFeeInNanoAvax: builtExportTx.baseFeeInNanoAvax,\n chainAlias: sourceChainAlias,\n txType: 'export',\n unsignedTx: builtExportTx.unsignedTx,\n }),\n (error) =>\n new SdkError('Failed to sign/send Avalanche export transaction.', ErrorCode.SIGNING_FAILED, {\n cause: error,\n }),\n );\n\n let didExportSucceed: boolean;\n try {\n didExportSucceed = await pollPrimaryNetworkTxStatus({\n chainAlias: sourceChainAlias,\n environment,\n txId: exportTxId,\n });\n } catch {\n return sourcePendingTransferFromQuote(quote, {\n environment,\n requiredConfirmationCount: 1,\n startedAtMs,\n txHash: exportTxId,\n });\n }\n\n if (!didExportSucceed) {\n return buildFailedTransfer({\n errorCode: ErrorCode.TRANSACTION_REVERTED,\n errorReason: 'Export transaction was not accepted by Avalanche.',\n sourceStartedAtMs: startedAtMs,\n sourceTxHash: exportTxId,\n transferBase,\n });\n }\n }\n\n const atomicUtxos = await tryOrThrow(\n async () => (await getAtomicUtxos(destinationChainAlias, sourceChainAlias)).getUTXOs(),\n (error) => new SdkError('Failed to fetch Avalanche atomic UTXOs.', ErrorCode.UNKNOWN, { cause: error }),\n );\n\n if (atomicUtxos.length === 0) {\n return buildFailedTransfer({\n errorCode: ErrorCode.INVALID_PARAMS,\n errorReason: 'No atomic UTXOs available to import for this route.',\n sourceStartedAtMs: startedAtMs,\n sourceTxHash: exportTxId,\n transferBase,\n });\n }\n\n onStepChange?.({\n currentSignature: hasExport ? 2 : 1,\n currentSignatureReason: TransferSignatureReason.AvalancheCrossChainImport,\n quote,\n requiredSignatures,\n });\n\n const builtImportTx = await tryOrThrow(\n () =>\n buildImportTx({\n ajsContext,\n atomicUtxos,\n destinationChainAlias,\n environment,\n getWalletAddressesForChainAlias,\n getWalletChangeAddressForChainAlias,\n sourceChainAlias,\n requiredFromAddress: importRequiredFromAddress,\n toAddress: importToAddress,\n }),\n (error) => new SdkError('Failed to build Avalanche import transaction.', ErrorCode.UNKNOWN, { cause: error }),\n );\n\n const importTxId = await tryOrThrow(\n () =>\n avalancheSendTx({\n baseFeeInNanoAvax: builtImportTx.baseFeeInNanoAvax,\n chainAlias: destinationChainAlias,\n txType: 'import',\n unsignedTx: builtImportTx.unsignedTx,\n }),\n (error) =>\n new SdkError('Failed to sign/send Avalanche import transaction.', ErrorCode.SIGNING_FAILED, {\n cause: error,\n }),\n );\n\n return {\n ...transferBase,\n source: {\n confirmationCount: exportTxId ? 1 : 0,\n requiredConfirmationCount: 1,\n startedAtMs,\n txHash: exportTxId ?? importTxId,\n },\n status: 'target-pending',\n target: {\n confirmationCount: 0,\n requiredConfirmationCount: 1,\n startedAtMs: Date.now(),\n txHash: importTxId,\n },\n } satisfies TargetPendingTransfer;\n };\n}\n\nfunction getTransferBase(\n quote: Parameters<TransferService['transferAsset']>[0]['quote'],\n environment: Environment,\n): Omit<TransferBase, 'status'> {\n return {\n amountIn: quote.amountIn,\n amountOut: quote.amountOut,\n environment,\n fees: quote.fees,\n fromAddress: quote.fromAddress,\n id: quote.id,\n partnerFeeBps: quote.partnerFeeBps,\n sourceAsset: quote.assetIn,\n sourceChain: quote.sourceChain,\n targetAsset: quote.assetOut,\n targetChain: quote.targetChain,\n toAddress: quote.toAddress,\n type: quote.serviceType,\n };\n}\n\nfunction buildFailedTransfer({\n errorCode,\n errorReason,\n sourceStartedAtMs,\n sourceTxHash,\n transferBase,\n}: {\n errorCode: ErrorCode;\n errorReason: string;\n sourceStartedAtMs: number;\n sourceTxHash?: string;\n transferBase: Omit<TransferBase, 'status'>;\n}): FailedTransfer {\n return {\n ...transferBase,\n errorCode,\n errorReason,\n failedAtMs: Date.now(),\n ...(sourceTxHash\n ? {\n source: {\n confirmationCount: 0,\n requiredConfirmationCount: 1,\n startedAtMs: sourceStartedAtMs,\n txHash: sourceTxHash,\n },\n }\n : {}),\n status: 'failed',\n };\n}\n\nfunction getExportAmountInNanoAvax(sourceChainAlias: AvalancheBlockchainAlias, quoteAmountIn: bigint): bigint {\n return sourceChainAlias === 'C' ? quoteAmountIn / WEI_PER_NANO_AVAX_BIGINT : quoteAmountIn;\n}\n\nasync function buildExportTx({\n ajsContext,\n destinationChainAlias,\n environment,\n fromAddress,\n getUtxos,\n getWalletAddressesForChainAlias,\n getWalletChangeAddressForChainAlias,\n quoteAmountIn,\n requiredFromAddress,\n sourceChainAlias,\n toAddress,\n}: {\n ajsContext: Context.Context;\n destinationChainAlias: AvalancheBlockchainAlias;\n environment: Environment;\n fromAddress: EvmAddress | null;\n getUtxos: GetUtxosCallback;\n getWalletAddressesForChainAlias: GetWalletAddressesForChainAliasCallback;\n getWalletChangeAddressForChainAlias: GetWalletChangeAddressForChainAliasCallback;\n quoteAmountIn: bigint;\n requiredFromAddress?: XpAddress;\n sourceChainAlias: AvalancheBlockchainAlias;\n toAddress: XpAddress;\n}): Promise<BuiltTx> {\n const amountInNanoAvax = getExportAmountInNanoAvax(sourceChainAlias, quoteAmountIn);\n\n switch (sourceChainAlias) {\n case 'C': {\n if (destinationChainAlias === 'C') {\n throw new InvalidParamsError('Source and destination chain aliases must be different.');\n }\n\n if (!fromAddress) {\n throw new InvalidParamsError('fromAddress must be an EVM address when exporting from C-Chain.');\n }\n\n const cChain = environment === Environment.TEST ? AVALANCHE_FUJI_CHAIN : AVALANCHE_MAINNET_CHAIN;\n const cChainClient = getEvmClientForChain({ chain: cChain });\n const [nonce, baseFeeInNanoAvax] = await Promise.all([\n cChainClient.getTransactionCount({\n address: fromAddress,\n }),\n getCChainBaseFeeInNanoAvax(environment),\n ]);\n\n return {\n baseFeeInNanoAvax,\n unsignedTx: exportTx({\n amountInNanoAvax,\n baseFeeInNanoAvax,\n context: ajsContext,\n destinationChainAlias,\n fromAddress,\n nonce: BigInt(nonce),\n sourceChainAlias,\n toAddress,\n }),\n };\n }\n\n case 'P': {\n if (destinationChainAlias === 'P') {\n throw new InvalidParamsError('Source and destination chain aliases must be different.');\n }\n\n const [changeAddress, feeState, fromAddresses, pUtxoSet] = await Promise.all([\n getWalletChangeAddress({\n chainAlias: sourceChainAlias,\n getWalletChangeAddressForChainAlias,\n }),\n getFeeState(environment),\n getWalletFromAddresses({\n chainAlias: sourceChainAlias,\n getWalletAddressesForChainAlias,\n requiredAddress: requiredFromAddress,\n }),\n getUtxos('P'),\n ]);\n\n return {\n baseFeeInNanoAvax: feeState.price,\n unsignedTx: exportTx({\n amountInNanoAvax,\n changeAddress,\n context: ajsContext,\n destinationChainAlias,\n feeState,\n fromAddresses,\n sourceChainAlias,\n toAddress,\n utxos: pUtxoSet.getUTXOs(),\n }),\n };\n }\n\n case 'X': {\n if (destinationChainAlias === 'X') {\n throw new InvalidParamsError('Source and destination chain aliases must be different.');\n }\n\n const [changeAddress, fromAddresses, xUtxoSet] = await Promise.all([\n getWalletChangeAddress({\n chainAlias: sourceChainAlias,\n getWalletChangeAddressForChainAlias,\n }),\n getWalletFromAddresses({\n chainAlias: sourceChainAlias,\n getWalletAddressesForChainAlias,\n requiredAddress: requiredFromAddress,\n }),\n getUtxos('X'),\n ]);\n\n return {\n baseFeeInNanoAvax: ajsContext.baseTxFee,\n unsignedTx: exportTx({\n amountInNanoAvax,\n changeAddress,\n context: ajsContext,\n destinationChainAlias,\n fromAddresses,\n sourceChainAlias,\n toAddress,\n utxos: xUtxoSet.getUTXOs(),\n }),\n };\n }\n }\n}\n\nasync function buildImportTx({\n ajsContext,\n atomicUtxos,\n destinationChainAlias,\n environment,\n getWalletAddressesForChainAlias,\n getWalletChangeAddressForChainAlias,\n requiredFromAddress,\n sourceChainAlias,\n toAddress,\n}: {\n ajsContext: Context.Context;\n atomicUtxos: Utxo[];\n destinationChainAlias: AvalancheBlockchainAlias;\n environment: Environment;\n getWalletAddressesForChainAlias: GetWalletAddressesForChainAliasCallback;\n getWalletChangeAddressForChainAlias: GetWalletChangeAddressForChainAliasCallback;\n requiredFromAddress: XpAddress;\n sourceChainAlias: AvalancheBlockchainAlias;\n toAddress: string;\n}): Promise<BuiltTx> {\n switch (destinationChainAlias) {\n case 'C': {\n if (sourceChainAlias === 'C') {\n throw new InvalidParamsError('Source and destination chain aliases must be different.');\n }\n\n const [baseFeeInNanoAvax, fromAddresses] = await Promise.all([\n getCChainBaseFeeInNanoAvax(environment),\n getWalletFromAddresses({\n chainAlias: destinationChainAlias,\n getWalletAddressesForChainAlias,\n requiredAddress: requiredFromAddress,\n }),\n ]);\n\n return {\n baseFeeInNanoAvax,\n unsignedTx: importTx({\n atomicUtxos,\n baseFeeInNanoAvax,\n context: ajsContext,\n destinationChainAlias,\n fromAddresses,\n sourceChainAlias,\n toAddress: getImportToAddress(toAddress, 'C'),\n }),\n };\n }\n\n case 'P': {\n if (sourceChainAlias === 'P') {\n throw new InvalidParamsError('Source and destination chain aliases must be different.');\n }\n\n const [feeState, fromAddresses] = await Promise.all([\n getFeeState(environment),\n getWalletFromAddresses({\n chainAlias: destinationChainAlias,\n getWalletAddressesForChainAlias,\n requiredAddress: requiredFromAddress,\n }),\n ]);\n\n return {\n baseFeeInNanoAvax: feeState.price,\n unsignedTx: importTx({\n atomicUtxos,\n context: ajsContext,\n destinationChainAlias,\n feeState,\n fromAddresses,\n sourceChainAlias,\n toAddress: getImportToAddress(toAddress, 'P'),\n }),\n };\n }\n\n case 'X': {\n if (sourceChainAlias === 'X') {\n throw new InvalidParamsError('Source and destination chain aliases must be different.');\n }\n\n const [changeAddress, fromAddresses] = await Promise.all([\n getWalletChangeAddress({\n chainAlias: destinationChainAlias,\n getWalletChangeAddressForChainAlias,\n }),\n getWalletFromAddresses({\n chainAlias: destinationChainAlias,\n getWalletAddressesForChainAlias,\n requiredAddress: requiredFromAddress,\n }),\n ]);\n\n return {\n baseFeeInNanoAvax: ajsContext.baseTxFee,\n unsignedTx: importTx({\n atomicUtxos,\n changeAddress,\n context: ajsContext,\n destinationChainAlias,\n fromAddresses,\n sourceChainAlias,\n toAddress: getImportToAddress(toAddress, 'X'),\n }),\n };\n }\n }\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"transfer-asset.js","names":[],"sources":["../../../../src/transfer-service/avalanche-cct/_handlers/transfer-asset.ts"],"sourcesContent":["import type { Context, Utxo } from '@avalabs/avalanchejs';\nimport type { Address as EvmAddress } from 'viem';\nimport {\n AVALANCHE_FUJI_CHAIN,\n AVALANCHE_MAINNET_CHAIN,\n Environment,\n ServiceType,\n TransferSignatureReason,\n type AvalancheBlockchainAlias,\n} from '../../../constants';\nimport { ErrorCode, ErrorReason, InvalidParamsError, SdkError } from '../../../errors';\nimport { sourcePendingTransferFromQuote } from '../../_transfer-utilities';\nimport { getEvmClientForChain } from '../../_utils';\nimport type { AvalancheSendTxFunction, TransferService } from '../../../types/service';\nimport type { FailedTransfer, TargetPendingTransfer, TransferBase, TransferStepDetails } from '../../../types/transfer';\nimport { getFeeState } from '../_utils/p-chain';\nimport { pollPrimaryNetworkTxStatus } from '../_utils/polling';\nimport { exportTx, importTx } from '../_utils/transactions';\nimport type {\n GetAtomicUtxosCallback,\n GetCoreEthAddressCallback,\n GetUtxosCallback,\n GetWalletAddressesForChainAliasCallback,\n GetWalletChangeAddressForChainAliasCallback,\n XpAddress,\n} from '../types';\nimport { getChainAlias, getEnvironmentIsTestnet, tryOrThrow } from '../_utils';\nimport { getCChainBaseFeeInNanoAvax } from '../_utils/fees';\nimport { WEI_PER_NANO_AVAX_BIGINT } from '../constants';\nimport {\n assertXpAddress,\n getExportFromAddressEvm,\n getExportToAddress,\n getImportToAddress,\n getWalletChangeAddress,\n getWalletFromAddresses,\n} from '../_utils/addresses';\n\ntype BuiltTx = {\n baseFeeInNanoAvax: bigint;\n unsignedTx: Parameters<AvalancheSendTxFunction>[0]['unsignedTx'];\n};\n\nexport interface TransferAssetFactoryOptions {\n ajsContext: Context.Context;\n avalancheSendTx: AvalancheSendTxFunction;\n environment: Environment;\n getCoreEthAddress: GetCoreEthAddressCallback;\n getAtomicUtxos: GetAtomicUtxosCallback;\n getUtxos: GetUtxosCallback;\n getWalletAddressesForChainAlias: GetWalletAddressesForChainAliasCallback;\n getWalletChangeAddressForChainAlias: GetWalletChangeAddressForChainAliasCallback;\n}\n\nexport function transferAssetFactory({\n ajsContext,\n avalancheSendTx,\n environment,\n getCoreEthAddress,\n getAtomicUtxos,\n getUtxos,\n getWalletAddressesForChainAlias,\n getWalletChangeAddressForChainAlias,\n}: TransferAssetFactoryOptions): TransferService['transferAsset'] {\n return async ({ onStepChange, quote }) => {\n if (quote.serviceType !== ServiceType.AVALANCHE_CCT) {\n throw new SdkError(ErrorReason.INCORRECT_PROVIDER_PROVIDED, ErrorCode.INVALID_PARAMS);\n }\n\n const isTestnet = getEnvironmentIsTestnet(environment);\n const sourceChainAlias: AvalancheBlockchainAlias = getChainAlias(quote.sourceChain.chainId, isTestnet);\n const destinationChainAlias: AvalancheBlockchainAlias = getChainAlias(quote.targetChain.chainId, isTestnet);\n const exportFromAddressEvm = getExportFromAddressEvm(quote.fromAddress, sourceChainAlias);\n const exportRequiredFromAddress = sourceChainAlias === 'C' ? undefined : assertXpAddress(quote.fromAddress);\n const exportToAddress = await getExportToAddress({\n destinationChainAlias,\n getCoreEthAddress,\n quoteToAddress: quote.toAddress,\n });\n const importToAddress = getImportToAddress(quote.toAddress, destinationChainAlias);\n const importRequiredFromAddress =\n destinationChainAlias === 'C' ? exportToAddress : assertXpAddress(quote.toAddress);\n\n const hasExport = quote.amountIn > 0n;\n const requiredSignatures = hasExport ? 2 : 1;\n const startedAtMs = Date.now();\n const transferBase = getTransferBase(quote, environment);\n\n let exportTxId: string | undefined;\n\n if (hasExport) {\n const exportStep: TransferStepDetails = {\n currentSignature: 1,\n currentSignatureReason: TransferSignatureReason.AvalancheCrossChainExport,\n quote,\n requiredSignatures,\n };\n\n onStepChange?.(exportStep);\n\n const builtExportTx = await tryOrThrow(\n () =>\n buildExportTx({\n ajsContext,\n environment,\n getUtxos,\n getWalletAddressesForChainAlias,\n getWalletChangeAddressForChainAlias,\n quoteAmountIn: quote.amountIn,\n sourceChainAlias,\n destinationChainAlias,\n fromAddress: exportFromAddressEvm,\n requiredFromAddress: exportRequiredFromAddress,\n toAddress: exportToAddress,\n }),\n (error) => new SdkError('Failed to build Avalanche export transaction.', ErrorCode.UNKNOWN, { cause: error }),\n );\n\n exportTxId = await tryOrThrow(\n () =>\n avalancheSendTx(\n {\n baseFeeInNanoAvax: builtExportTx.baseFeeInNanoAvax,\n chainAlias: sourceChainAlias,\n txType: 'export',\n unsignedTx: builtExportTx.unsignedTx,\n },\n exportStep,\n ),\n (error) =>\n new SdkError('Failed to sign/send Avalanche export transaction.', ErrorCode.SIGNING_FAILED, {\n cause: error,\n }),\n );\n\n let didExportSucceed: boolean;\n try {\n didExportSucceed = await pollPrimaryNetworkTxStatus({\n chainAlias: sourceChainAlias,\n environment,\n txId: exportTxId,\n });\n } catch {\n return sourcePendingTransferFromQuote(quote, {\n environment,\n requiredConfirmationCount: 1,\n startedAtMs,\n txHash: exportTxId,\n });\n }\n\n if (!didExportSucceed) {\n return buildFailedTransfer({\n errorCode: ErrorCode.TRANSACTION_REVERTED,\n errorReason: 'Export transaction was not accepted by Avalanche.',\n sourceStartedAtMs: startedAtMs,\n sourceTxHash: exportTxId,\n transferBase,\n });\n }\n }\n\n const atomicUtxos = await tryOrThrow(\n async () => (await getAtomicUtxos(destinationChainAlias, sourceChainAlias)).getUTXOs(),\n (error) => new SdkError('Failed to fetch Avalanche atomic UTXOs.', ErrorCode.UNKNOWN, { cause: error }),\n );\n\n if (atomicUtxos.length === 0) {\n return buildFailedTransfer({\n errorCode: ErrorCode.INVALID_PARAMS,\n errorReason: 'No atomic UTXOs available to import for this route.',\n sourceStartedAtMs: startedAtMs,\n sourceTxHash: exportTxId,\n transferBase,\n });\n }\n\n const importStep: TransferStepDetails = {\n currentSignature: hasExport ? 2 : 1,\n currentSignatureReason: TransferSignatureReason.AvalancheCrossChainImport,\n quote,\n requiredSignatures,\n };\n\n onStepChange?.(importStep);\n\n const builtImportTx = await tryOrThrow(\n () =>\n buildImportTx({\n ajsContext,\n atomicUtxos,\n destinationChainAlias,\n environment,\n getWalletAddressesForChainAlias,\n getWalletChangeAddressForChainAlias,\n sourceChainAlias,\n requiredFromAddress: importRequiredFromAddress,\n toAddress: importToAddress,\n }),\n (error) => new SdkError('Failed to build Avalanche import transaction.', ErrorCode.UNKNOWN, { cause: error }),\n );\n\n const importTxId = await tryOrThrow(\n () =>\n avalancheSendTx(\n {\n baseFeeInNanoAvax: builtImportTx.baseFeeInNanoAvax,\n chainAlias: destinationChainAlias,\n txType: 'import',\n unsignedTx: builtImportTx.unsignedTx,\n },\n importStep,\n ),\n (error) =>\n new SdkError('Failed to sign/send Avalanche import transaction.', ErrorCode.SIGNING_FAILED, {\n cause: error,\n }),\n );\n\n return {\n ...transferBase,\n source: {\n confirmationCount: exportTxId ? 1 : 0,\n requiredConfirmationCount: 1,\n startedAtMs,\n txHash: exportTxId ?? importTxId,\n },\n status: 'target-pending',\n target: {\n confirmationCount: 0,\n requiredConfirmationCount: 1,\n startedAtMs: Date.now(),\n txHash: importTxId,\n },\n } satisfies TargetPendingTransfer;\n };\n}\n\nfunction getTransferBase(\n quote: Parameters<TransferService['transferAsset']>[0]['quote'],\n environment: Environment,\n): Omit<TransferBase, 'status'> {\n return {\n amountIn: quote.amountIn,\n amountOut: quote.amountOut,\n environment,\n fees: quote.fees,\n fromAddress: quote.fromAddress,\n id: quote.id,\n partnerFeeBps: quote.partnerFeeBps,\n sourceAsset: quote.assetIn,\n sourceChain: quote.sourceChain,\n targetAsset: quote.assetOut,\n targetChain: quote.targetChain,\n toAddress: quote.toAddress,\n type: quote.serviceType,\n };\n}\n\nfunction buildFailedTransfer({\n errorCode,\n errorReason,\n sourceStartedAtMs,\n sourceTxHash,\n transferBase,\n}: {\n errorCode: ErrorCode;\n errorReason: string;\n sourceStartedAtMs: number;\n sourceTxHash?: string;\n transferBase: Omit<TransferBase, 'status'>;\n}): FailedTransfer {\n return {\n ...transferBase,\n errorCode,\n errorReason,\n failedAtMs: Date.now(),\n ...(sourceTxHash\n ? {\n source: {\n confirmationCount: 0,\n requiredConfirmationCount: 1,\n startedAtMs: sourceStartedAtMs,\n txHash: sourceTxHash,\n },\n }\n : {}),\n status: 'failed',\n };\n}\n\nfunction getExportAmountInNanoAvax(sourceChainAlias: AvalancheBlockchainAlias, quoteAmountIn: bigint): bigint {\n return sourceChainAlias === 'C' ? quoteAmountIn / WEI_PER_NANO_AVAX_BIGINT : quoteAmountIn;\n}\n\nasync function buildExportTx({\n ajsContext,\n destinationChainAlias,\n environment,\n fromAddress,\n getUtxos,\n getWalletAddressesForChainAlias,\n getWalletChangeAddressForChainAlias,\n quoteAmountIn,\n requiredFromAddress,\n sourceChainAlias,\n toAddress,\n}: {\n ajsContext: Context.Context;\n destinationChainAlias: AvalancheBlockchainAlias;\n environment: Environment;\n fromAddress: EvmAddress | null;\n getUtxos: GetUtxosCallback;\n getWalletAddressesForChainAlias: GetWalletAddressesForChainAliasCallback;\n getWalletChangeAddressForChainAlias: GetWalletChangeAddressForChainAliasCallback;\n quoteAmountIn: bigint;\n requiredFromAddress?: XpAddress;\n sourceChainAlias: AvalancheBlockchainAlias;\n toAddress: XpAddress;\n}): Promise<BuiltTx> {\n const amountInNanoAvax = getExportAmountInNanoAvax(sourceChainAlias, quoteAmountIn);\n\n switch (sourceChainAlias) {\n case 'C': {\n if (destinationChainAlias === 'C') {\n throw new InvalidParamsError('Source and destination chain aliases must be different.');\n }\n\n if (!fromAddress) {\n throw new InvalidParamsError('fromAddress must be an EVM address when exporting from C-Chain.');\n }\n\n const cChain = environment === Environment.TEST ? AVALANCHE_FUJI_CHAIN : AVALANCHE_MAINNET_CHAIN;\n const cChainClient = getEvmClientForChain({ chain: cChain });\n const [nonce, baseFeeInNanoAvax] = await Promise.all([\n cChainClient.getTransactionCount({\n address: fromAddress,\n }),\n getCChainBaseFeeInNanoAvax(environment),\n ]);\n\n return {\n baseFeeInNanoAvax,\n unsignedTx: exportTx({\n amountInNanoAvax,\n baseFeeInNanoAvax,\n context: ajsContext,\n destinationChainAlias,\n fromAddress,\n nonce: BigInt(nonce),\n sourceChainAlias,\n toAddress,\n }),\n };\n }\n\n case 'P': {\n if (destinationChainAlias === 'P') {\n throw new InvalidParamsError('Source and destination chain aliases must be different.');\n }\n\n const [changeAddress, feeState, fromAddresses, pUtxoSet] = await Promise.all([\n getWalletChangeAddress({\n chainAlias: sourceChainAlias,\n getWalletChangeAddressForChainAlias,\n }),\n getFeeState(environment),\n getWalletFromAddresses({\n chainAlias: sourceChainAlias,\n getWalletAddressesForChainAlias,\n requiredAddress: requiredFromAddress,\n }),\n getUtxos('P'),\n ]);\n\n return {\n baseFeeInNanoAvax: feeState.price,\n unsignedTx: exportTx({\n amountInNanoAvax,\n changeAddress,\n context: ajsContext,\n destinationChainAlias,\n feeState,\n fromAddresses,\n sourceChainAlias,\n toAddress,\n utxos: pUtxoSet.getUTXOs(),\n }),\n };\n }\n\n case 'X': {\n if (destinationChainAlias === 'X') {\n throw new InvalidParamsError('Source and destination chain aliases must be different.');\n }\n\n const [changeAddress, fromAddresses, xUtxoSet] = await Promise.all([\n getWalletChangeAddress({\n chainAlias: sourceChainAlias,\n getWalletChangeAddressForChainAlias,\n }),\n getWalletFromAddresses({\n chainAlias: sourceChainAlias,\n getWalletAddressesForChainAlias,\n requiredAddress: requiredFromAddress,\n }),\n getUtxos('X'),\n ]);\n\n return {\n baseFeeInNanoAvax: ajsContext.baseTxFee,\n unsignedTx: exportTx({\n amountInNanoAvax,\n changeAddress,\n context: ajsContext,\n destinationChainAlias,\n fromAddresses,\n sourceChainAlias,\n toAddress,\n utxos: xUtxoSet.getUTXOs(),\n }),\n };\n }\n }\n}\n\nasync function buildImportTx({\n ajsContext,\n atomicUtxos,\n destinationChainAlias,\n environment,\n getWalletAddressesForChainAlias,\n getWalletChangeAddressForChainAlias,\n requiredFromAddress,\n sourceChainAlias,\n toAddress,\n}: {\n ajsContext: Context.Context;\n atomicUtxos: Utxo[];\n destinationChainAlias: AvalancheBlockchainAlias;\n environment: Environment;\n getWalletAddressesForChainAlias: GetWalletAddressesForChainAliasCallback;\n getWalletChangeAddressForChainAlias: GetWalletChangeAddressForChainAliasCallback;\n requiredFromAddress: XpAddress;\n sourceChainAlias: AvalancheBlockchainAlias;\n toAddress: string;\n}): Promise<BuiltTx> {\n switch (destinationChainAlias) {\n case 'C': {\n if (sourceChainAlias === 'C') {\n throw new InvalidParamsError('Source and destination chain aliases must be different.');\n }\n\n const [baseFeeInNanoAvax, fromAddresses] = await Promise.all([\n getCChainBaseFeeInNanoAvax(environment),\n getWalletFromAddresses({\n chainAlias: destinationChainAlias,\n getWalletAddressesForChainAlias,\n requiredAddress: requiredFromAddress,\n }),\n ]);\n\n return {\n baseFeeInNanoAvax,\n unsignedTx: importTx({\n atomicUtxos,\n baseFeeInNanoAvax,\n context: ajsContext,\n destinationChainAlias,\n fromAddresses,\n sourceChainAlias,\n toAddress: getImportToAddress(toAddress, 'C'),\n }),\n };\n }\n\n case 'P': {\n if (sourceChainAlias === 'P') {\n throw new InvalidParamsError('Source and destination chain aliases must be different.');\n }\n\n const [feeState, fromAddresses] = await Promise.all([\n getFeeState(environment),\n getWalletFromAddresses({\n chainAlias: destinationChainAlias,\n getWalletAddressesForChainAlias,\n requiredAddress: requiredFromAddress,\n }),\n ]);\n\n return {\n baseFeeInNanoAvax: feeState.price,\n unsignedTx: importTx({\n atomicUtxos,\n context: ajsContext,\n destinationChainAlias,\n feeState,\n fromAddresses,\n sourceChainAlias,\n toAddress: getImportToAddress(toAddress, 'P'),\n }),\n };\n }\n\n case 'X': {\n if (sourceChainAlias === 'X') {\n throw new InvalidParamsError('Source and destination chain aliases must be different.');\n }\n\n const [changeAddress, fromAddresses] = await Promise.all([\n getWalletChangeAddress({\n chainAlias: destinationChainAlias,\n getWalletChangeAddressForChainAlias,\n }),\n getWalletFromAddresses({\n chainAlias: destinationChainAlias,\n getWalletAddressesForChainAlias,\n requiredAddress: requiredFromAddress,\n }),\n ]);\n\n return {\n baseFeeInNanoAvax: ajsContext.baseTxFee,\n unsignedTx: importTx({\n atomicUtxos,\n changeAddress,\n context: ajsContext,\n destinationChainAlias,\n fromAddresses,\n sourceChainAlias,\n toAddress: getImportToAddress(toAddress, 'X'),\n }),\n };\n }\n }\n}\n"],"mappings":"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"}
@@ -1,2 +1,2 @@
1
- const e=require(`../../constants.cjs`),t={type:e.TokenType.NATIVE,decimals:18,name:`Avalanche`,symbol:`AVAX`},n={type:e.TokenType.NATIVE,decimals:9,name:`Avalanche`,symbol:`AVAX`},r=RegExp(`^(${[`C-`,`P-`,`X-`].join(`|`)})`,`i`),i={fuji:`https://api.avax-test.network`,mainnet:`https://api.avax.network`};exports.AVALANCHE_API_URIS=i,exports.AVALANCHE_C_CHAIN_NATIVE_ASSET=t,exports.AVALANCHE_PX_CHAIN_NATIVE_ASSET=n,exports.CHAIN_PREFIXES_REGEX=r,exports.WEI_PER_NANO_AVAX_BIGINT=1000000000n;
1
+ const e=require(`../../constants.cjs`),t={type:e.TokenType.NATIVE,decimals:18,name:`Avalanche`,symbol:`AVAX`,logoUri:`https://images.ctfassets.net/gcj8jwzm6086/5VHupNKwnDYJvqMENeV7iJ/adb596bcc935136c0a1a587ede372f5b/avalanche-avax-logo.svg`},n={type:e.TokenType.NATIVE,decimals:9,name:`Avalanche`,symbol:`AVAX`,logoUri:`https://images.ctfassets.net/gcj8jwzm6086/5VHupNKwnDYJvqMENeV7iJ/adb596bcc935136c0a1a587ede372f5b/avalanche-avax-logo.svg`},r=RegExp(`^(${[`C-`,`P-`,`X-`].join(`|`)})`,`i`),i={fuji:`https://api.avax-test.network`,mainnet:`https://api.avax.network`};exports.AVALANCHE_API_URIS=i,exports.AVALANCHE_C_CHAIN_NATIVE_ASSET=t,exports.AVALANCHE_PX_CHAIN_NATIVE_ASSET=n,exports.CHAIN_PREFIXES_REGEX=r,exports.WEI_PER_NANO_AVAX_BIGINT=1000000000n;
2
2
  //# sourceMappingURL=constants.cjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"constants.cjs","names":["TokenType"],"sources":["../../../src/transfer-service/avalanche-cct/constants.ts"],"sourcesContent":["import { TokenType, type AvalancheBlockchainAlias } from '../../constants';\nimport type { NativeAsset } from '../../types/asset';\n\nexport const AVALANCHE_C_CHAIN_NATIVE_ASSET: NativeAsset = {\n type: TokenType.NATIVE,\n decimals: 18,\n name: 'Avalanche',\n symbol: 'AVAX',\n};\n\nexport const AVALANCHE_PX_CHAIN_NATIVE_ASSET: NativeAsset = {\n type: TokenType.NATIVE,\n decimals: 9,\n name: 'Avalanche',\n symbol: 'AVAX',\n};\n\nexport type ChainPrefix = `${AvalancheBlockchainAlias}-`;\n\nexport const CHAIN_PREFIXES: readonly ChainPrefix[] = ['C-', 'P-', 'X-'] as const;\n\nexport const CHAIN_PREFIXES_REGEX: RegExp = new RegExp(`^(${CHAIN_PREFIXES.join('|')})`, 'i');\n\nexport const AVALANCHE_API_URIS = {\n fuji: 'https://api.avax-test.network',\n mainnet: 'https://api.avax.network',\n} as const;\n\nexport const WEI_PER_NANO_AVAX_BIGINT = 1_000_000_000n;\nexport const NANO_AVAX_DECIMALS = 9;\n"],"mappings":"uCAGa,EAA8C,CACzD,KAAMA,EAAAA,UAAU,OAChB,SAAU,GACV,KAAM,YACN,OAAQ,OACT,CAEY,EAA+C,CAC1D,KAAMA,EAAAA,UAAU,OAChB,SAAU,EACV,KAAM,YACN,OAAQ,OACT,CAMY,EAAmC,OAAO,KAFD,CAAC,KAAM,KAAM,KAAK,CAEG,KAAK,IAAI,CAAC,GAAI,IAAI,CAEhF,EAAqB,CAChC,KAAM,gCACN,QAAS,2BACV"}
1
+ {"version":3,"file":"constants.cjs","names":["TokenType"],"sources":["../../../src/transfer-service/avalanche-cct/constants.ts"],"sourcesContent":["import { TokenType, type AvalancheBlockchainAlias } from '../../constants';\nimport type { NativeAsset } from '../../types/asset';\n\nexport const AVALANCHE_C_CHAIN_NATIVE_ASSET: NativeAsset = {\n type: TokenType.NATIVE,\n decimals: 18,\n name: 'Avalanche',\n symbol: 'AVAX',\n logoUri:\n 'https://images.ctfassets.net/gcj8jwzm6086/5VHupNKwnDYJvqMENeV7iJ/adb596bcc935136c0a1a587ede372f5b/avalanche-avax-logo.svg',\n};\n\nexport const AVALANCHE_PX_CHAIN_NATIVE_ASSET: NativeAsset = {\n type: TokenType.NATIVE,\n decimals: 9,\n name: 'Avalanche',\n symbol: 'AVAX',\n logoUri:\n 'https://images.ctfassets.net/gcj8jwzm6086/5VHupNKwnDYJvqMENeV7iJ/adb596bcc935136c0a1a587ede372f5b/avalanche-avax-logo.svg',\n};\n\nexport type ChainPrefix = `${AvalancheBlockchainAlias}-`;\n\nexport const CHAIN_PREFIXES: readonly ChainPrefix[] = ['C-', 'P-', 'X-'] as const;\n\nexport const CHAIN_PREFIXES_REGEX: RegExp = new RegExp(`^(${CHAIN_PREFIXES.join('|')})`, 'i');\n\nexport const AVALANCHE_API_URIS = {\n fuji: 'https://api.avax-test.network',\n mainnet: 'https://api.avax.network',\n} as const;\n\nexport const WEI_PER_NANO_AVAX_BIGINT = 1_000_000_000n;\nexport const NANO_AVAX_DECIMALS = 9;\n"],"mappings":"uCAGa,EAA8C,CACzD,KAAMA,EAAAA,UAAU,OAChB,SAAU,GACV,KAAM,YACN,OAAQ,OACR,QACE,4HACH,CAEY,EAA+C,CAC1D,KAAMA,EAAAA,UAAU,OAChB,SAAU,EACV,KAAM,YACN,OAAQ,OACR,QACE,4HACH,CAMY,EAAmC,OAAO,KAFD,CAAC,KAAM,KAAM,KAAK,CAEG,KAAK,IAAI,CAAC,GAAI,IAAI,CAEhF,EAAqB,CAChC,KAAM,gCACN,QAAS,2BACV"}
@@ -1,2 +1,2 @@
1
- import{TokenType as e}from"../../constants.js";const t={type:e.NATIVE,decimals:18,name:`Avalanche`,symbol:`AVAX`},n={type:e.NATIVE,decimals:9,name:`Avalanche`,symbol:`AVAX`},r=RegExp(`^(${[`C-`,`P-`,`X-`].join(`|`)})`,`i`),i={fuji:`https://api.avax-test.network`,mainnet:`https://api.avax.network`},a=1000000000n;export{i as AVALANCHE_API_URIS,t as AVALANCHE_C_CHAIN_NATIVE_ASSET,n as AVALANCHE_PX_CHAIN_NATIVE_ASSET,r as CHAIN_PREFIXES_REGEX,a as WEI_PER_NANO_AVAX_BIGINT};
1
+ import{TokenType as e}from"../../constants.js";const t={type:e.NATIVE,decimals:18,name:`Avalanche`,symbol:`AVAX`,logoUri:`https://images.ctfassets.net/gcj8jwzm6086/5VHupNKwnDYJvqMENeV7iJ/adb596bcc935136c0a1a587ede372f5b/avalanche-avax-logo.svg`},n={type:e.NATIVE,decimals:9,name:`Avalanche`,symbol:`AVAX`,logoUri:`https://images.ctfassets.net/gcj8jwzm6086/5VHupNKwnDYJvqMENeV7iJ/adb596bcc935136c0a1a587ede372f5b/avalanche-avax-logo.svg`},r=RegExp(`^(${[`C-`,`P-`,`X-`].join(`|`)})`,`i`),i={fuji:`https://api.avax-test.network`,mainnet:`https://api.avax.network`},a=1000000000n;export{i as AVALANCHE_API_URIS,t as AVALANCHE_C_CHAIN_NATIVE_ASSET,n as AVALANCHE_PX_CHAIN_NATIVE_ASSET,r as CHAIN_PREFIXES_REGEX,a as WEI_PER_NANO_AVAX_BIGINT};
2
2
  //# sourceMappingURL=constants.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"constants.js","names":[],"sources":["../../../src/transfer-service/avalanche-cct/constants.ts"],"sourcesContent":["import { TokenType, type AvalancheBlockchainAlias } from '../../constants';\nimport type { NativeAsset } from '../../types/asset';\n\nexport const AVALANCHE_C_CHAIN_NATIVE_ASSET: NativeAsset = {\n type: TokenType.NATIVE,\n decimals: 18,\n name: 'Avalanche',\n symbol: 'AVAX',\n};\n\nexport const AVALANCHE_PX_CHAIN_NATIVE_ASSET: NativeAsset = {\n type: TokenType.NATIVE,\n decimals: 9,\n name: 'Avalanche',\n symbol: 'AVAX',\n};\n\nexport type ChainPrefix = `${AvalancheBlockchainAlias}-`;\n\nexport const CHAIN_PREFIXES: readonly ChainPrefix[] = ['C-', 'P-', 'X-'] as const;\n\nexport const CHAIN_PREFIXES_REGEX: RegExp = new RegExp(`^(${CHAIN_PREFIXES.join('|')})`, 'i');\n\nexport const AVALANCHE_API_URIS = {\n fuji: 'https://api.avax-test.network',\n mainnet: 'https://api.avax.network',\n} as const;\n\nexport const WEI_PER_NANO_AVAX_BIGINT = 1_000_000_000n;\nexport const NANO_AVAX_DECIMALS = 9;\n"],"mappings":"+CAGA,MAAa,EAA8C,CACzD,KAAM,EAAU,OAChB,SAAU,GACV,KAAM,YACN,OAAQ,OACT,CAEY,EAA+C,CAC1D,KAAM,EAAU,OAChB,SAAU,EACV,KAAM,YACN,OAAQ,OACT,CAMY,EAAmC,OAAO,KAFD,CAAC,KAAM,KAAM,KAAK,CAEG,KAAK,IAAI,CAAC,GAAI,IAAI,CAEhF,EAAqB,CAChC,KAAM,gCACN,QAAS,2BACV,CAEY,EAA2B"}
1
+ {"version":3,"file":"constants.js","names":[],"sources":["../../../src/transfer-service/avalanche-cct/constants.ts"],"sourcesContent":["import { TokenType, type AvalancheBlockchainAlias } from '../../constants';\nimport type { NativeAsset } from '../../types/asset';\n\nexport const AVALANCHE_C_CHAIN_NATIVE_ASSET: NativeAsset = {\n type: TokenType.NATIVE,\n decimals: 18,\n name: 'Avalanche',\n symbol: 'AVAX',\n logoUri:\n 'https://images.ctfassets.net/gcj8jwzm6086/5VHupNKwnDYJvqMENeV7iJ/adb596bcc935136c0a1a587ede372f5b/avalanche-avax-logo.svg',\n};\n\nexport const AVALANCHE_PX_CHAIN_NATIVE_ASSET: NativeAsset = {\n type: TokenType.NATIVE,\n decimals: 9,\n name: 'Avalanche',\n symbol: 'AVAX',\n logoUri:\n 'https://images.ctfassets.net/gcj8jwzm6086/5VHupNKwnDYJvqMENeV7iJ/adb596bcc935136c0a1a587ede372f5b/avalanche-avax-logo.svg',\n};\n\nexport type ChainPrefix = `${AvalancheBlockchainAlias}-`;\n\nexport const CHAIN_PREFIXES: readonly ChainPrefix[] = ['C-', 'P-', 'X-'] as const;\n\nexport const CHAIN_PREFIXES_REGEX: RegExp = new RegExp(`^(${CHAIN_PREFIXES.join('|')})`, 'i');\n\nexport const AVALANCHE_API_URIS = {\n fuji: 'https://api.avax-test.network',\n mainnet: 'https://api.avax.network',\n} as const;\n\nexport const WEI_PER_NANO_AVAX_BIGINT = 1_000_000_000n;\nexport const NANO_AVAX_DECIMALS = 9;\n"],"mappings":"+CAGA,MAAa,EAA8C,CACzD,KAAM,EAAU,OAChB,SAAU,GACV,KAAM,YACN,OAAQ,OACR,QACE,4HACH,CAEY,EAA+C,CAC1D,KAAM,EAAU,OAChB,SAAU,EACV,KAAM,YACN,OAAQ,OACR,QACE,4HACH,CAMY,EAAmC,OAAO,KAFD,CAAC,KAAM,KAAM,KAAK,CAEG,KAAK,IAAI,CAAC,GAAI,IAAI,CAEhF,EAAqB,CAChC,KAAM,gCACN,QAAS,2BACV,CAEY,EAA2B"}
@@ -220,7 +220,7 @@ type AvalancheSendTxParams = {
220
220
  txType: "export" | "import";
221
221
  unsignedTx: UnsignedTx;
222
222
  };
223
- type AvalancheSendTxFunction = (params: AvalancheSendTxParams) => Promise<string>;
223
+ type AvalancheSendTxFunction = (params: AvalancheSendTxParams, step: TransferStepDetails) => Promise<string>;
224
224
  type AvalancheCctInitializer = {
225
225
  type: ServiceType.AVALANCHE_CCT;
226
226
  /**
@@ -220,7 +220,7 @@ type AvalancheSendTxParams = {
220
220
  txType: "export" | "import";
221
221
  unsignedTx: UnsignedTx;
222
222
  };
223
- type AvalancheSendTxFunction = (params: AvalancheSendTxParams) => Promise<string>;
223
+ type AvalancheSendTxFunction = (params: AvalancheSendTxParams, step: TransferStepDetails) => Promise<string>;
224
224
  type AvalancheCctInitializer = {
225
225
  type: ServiceType.AVALANCHE_CCT;
226
226
  /**
@@ -1,2 +1,2 @@
1
- require(`../_virtual/_rolldown/runtime.cjs`);const e=require(`../constants.cjs`);let t=require(`zod`);const n=`__type`,r=`bigint`,i=`value`;function a(e){return JSON.stringify(e,(e,t)=>typeof t==`bigint`?{[n]:r,[i]:t.toString()}:t)}function o(e){let t=JSON.parse(e,(e,t)=>t&&typeof t==`object`&&t[n]===r&&typeof t[i]==`string`?BigInt(t[i]):t),a=p.safeParse(t);if(!a.success)throw Error(`Failed to parse transfer: ${a.error.message}`);return a.data}const s=t.z.object({name:t.z.string(),symbol:t.z.string(),decimals:t.z.int().nonnegative(),type:t.z.enum(e.TokenType)}),c=s.extend({type:t.z.literal(e.TokenType.NATIVE)}),l=s.extend({type:t.z.literal(e.TokenType.ERC20),address:t.z.string()}),u=s.extend({type:t.z.literal(e.TokenType.SPL),address:t.z.string()}),d=t.z.discriminatedUnion(`type`,[c,l,u]),f=t.z.object({chainId:t.z.string(),chainName:t.z.string(),networkToken:c,rpcUrl:t.z.string(),utilityAddresses:t.z.object({multicall:t.z.string()}).optional()}),p=t.z.object({amountIn:t.z.bigint().nonnegative(),amountOut:t.z.bigint().nonnegative(),completedAtMs:t.z.int().nonnegative().optional(),environment:t.z.enum(e.Environment),errorCode:t.z.number().optional(),errorReason:t.z.string().optional(),failedAtMs:t.z.int().nonnegative().optional(),fees:t.z.array(t.z.object({type:t.z.enum([`partner`,`protocol`,`gas`,`bridge`,`slippage`,`swap`,`other`,`relay`]),fundingModel:t.z.enum([`included`,`additive`]).default(`included`),name:t.z.string(),amount:t.z.bigint().nonnegative(),chainId:t.z.string(),token:t.z.discriminatedUnion(`type`,[t.z.object({type:t.z.literal(e.TokenType.NATIVE)}),t.z.object({type:t.z.literal(e.TokenType.ERC20),address:t.z.string()}),t.z.object({type:t.z.literal(e.TokenType.SPL),address:t.z.string()})])})),fromAddress:t.z.string(),id:t.z.string(),metadata:t.z.record(t.z.string(),t.z.unknown()).optional(),partnerFeeBps:t.z.int().nonnegative().nullable(),refund:t.z.object({amount:t.z.bigint().nonnegative(),asset:d.nullable(),chainId:t.z.string(),txHash:t.z.string().nullable(),timestampMs:t.z.int().nonnegative()}).optional(),source:t.z.object({confirmationCount:t.z.int().nonnegative(),requiredConfirmationCount:t.z.int().nonnegative(),startedAtMs:t.z.int().nonnegative(),targetStartBlockNumber:t.z.bigint().nonnegative().optional(),txHash:t.z.string()}).optional(),target:t.z.object({confirmationCount:t.z.int().nonnegative(),requiredConfirmationCount:t.z.int().nonnegative(),startedAtMs:t.z.int().nonnegative(),txHash:t.z.string().optional()}).nullable().optional(),sourceAsset:d,sourceChain:f,status:t.z.enum([`created`,`source-pending`,`source-completed`,`target-pending`,`refunded`,`completed`,`failed`]),targetAsset:d,targetChain:f,toAddress:t.z.string(),type:t.z.enum(e.ServiceType)});exports.parseTransfer=o,exports.stringifyTransfer=a;
1
+ require(`../_virtual/_rolldown/runtime.cjs`);const e=require(`../constants.cjs`);let t=require(`zod`);const n=`__type`,r=`bigint`,i=`value`;function a(e){return JSON.stringify(e,(e,t)=>typeof t==`bigint`?{[n]:r,[i]:t.toString()}:t)}function o(e){let t=JSON.parse(e,(e,t)=>t&&typeof t==`object`&&t[n]===r&&typeof t[i]==`string`?BigInt(t[i]):t),a=p.safeParse(t);if(!a.success)throw Error(`Failed to parse transfer: ${a.error.message}`);return a.data}const s=t.z.object({name:t.z.string(),symbol:t.z.string(),decimals:t.z.int().nonnegative(),type:t.z.enum(e.TokenType),logoUri:t.z.string().optional()}),c=s.extend({type:t.z.literal(e.TokenType.NATIVE)}),l=s.extend({type:t.z.literal(e.TokenType.ERC20),address:t.z.string()}),u=s.extend({type:t.z.literal(e.TokenType.SPL),address:t.z.string()}),d=t.z.discriminatedUnion(`type`,[c,l,u]),f=t.z.object({chainId:t.z.string(),chainName:t.z.string(),networkToken:c,rpcUrl:t.z.string(),utilityAddresses:t.z.object({multicall:t.z.string()}).optional()}),p=t.z.object({amountIn:t.z.bigint().nonnegative(),amountOut:t.z.bigint().nonnegative(),completedAtMs:t.z.int().nonnegative().optional(),environment:t.z.enum(e.Environment),errorCode:t.z.number().optional(),errorReason:t.z.string().optional(),failedAtMs:t.z.int().nonnegative().optional(),fees:t.z.array(t.z.object({type:t.z.enum([`partner`,`protocol`,`gas`,`bridge`,`slippage`,`swap`,`other`,`relay`]),fundingModel:t.z.enum([`included`,`additive`]).default(`included`),name:t.z.string(),amount:t.z.bigint().nonnegative(),chainId:t.z.string(),token:t.z.discriminatedUnion(`type`,[t.z.object({type:t.z.literal(e.TokenType.NATIVE)}),t.z.object({type:t.z.literal(e.TokenType.ERC20),address:t.z.string()}),t.z.object({type:t.z.literal(e.TokenType.SPL),address:t.z.string()})])})),fromAddress:t.z.string(),id:t.z.string(),metadata:t.z.record(t.z.string(),t.z.unknown()).optional(),partnerFeeBps:t.z.int().nonnegative().nullable(),refund:t.z.object({amount:t.z.bigint().nonnegative(),asset:d.nullable(),chainId:t.z.string(),txHash:t.z.string().nullable(),timestampMs:t.z.int().nonnegative()}).optional(),source:t.z.object({confirmationCount:t.z.int().nonnegative(),requiredConfirmationCount:t.z.int().nonnegative(),startedAtMs:t.z.int().nonnegative(),targetStartBlockNumber:t.z.bigint().nonnegative().optional(),txHash:t.z.string()}).optional(),target:t.z.object({confirmationCount:t.z.int().nonnegative(),requiredConfirmationCount:t.z.int().nonnegative(),startedAtMs:t.z.int().nonnegative(),txHash:t.z.string().optional()}).nullable().optional(),sourceAsset:d,sourceChain:f,status:t.z.enum([`created`,`source-pending`,`source-completed`,`target-pending`,`refunded`,`completed`,`failed`]),targetAsset:d,targetChain:f,toAddress:t.z.string(),type:t.z.enum(e.ServiceType)});exports.parseTransfer=o,exports.stringifyTransfer=a;
2
2
  //# sourceMappingURL=transfer-utils.cjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"transfer-utils.cjs","names":["z","TokenType","Environment","ServiceType"],"sources":["../../src/utils/transfer-utils.ts"],"sourcesContent":["import { z } from 'zod';\nimport { Environment, ServiceType, TokenType } from '../constants';\nimport type { Transfer } from '../types/transfer';\n\nconst STRINGIFY_TYPE_TAG = '__type';\nconst BIGINT_TYPE = 'bigint';\nconst STRINGIFY_VALUE = 'value';\n\nexport function stringifyTransfer(transfer: Transfer): string {\n return JSON.stringify(transfer, (_key, value) => {\n if (typeof value === 'bigint') {\n return { [STRINGIFY_TYPE_TAG]: BIGINT_TYPE, [STRINGIFY_VALUE]: value.toString() };\n }\n\n return value;\n });\n}\n\nexport function parseTransfer(transferString: string): Transfer {\n const rawJSON = JSON.parse(transferString, (_key, value) => {\n if (\n value &&\n typeof value === 'object' &&\n value[STRINGIFY_TYPE_TAG] === BIGINT_TYPE &&\n typeof value[STRINGIFY_VALUE] === 'string'\n ) {\n return BigInt(value[STRINGIFY_VALUE]);\n }\n\n return value;\n });\n\n const parsed = LooseTransferSchema.safeParse(rawJSON);\n\n if (!parsed.success) {\n throw new Error(`Failed to parse transfer: ${parsed.error.message}`);\n }\n\n return parsed.data as Transfer;\n}\n\nconst AssetBaseSchema = z.object({\n name: z.string(),\n symbol: z.string(),\n decimals: z.int().nonnegative(),\n type: z.enum(TokenType),\n});\n\nconst NativeAssetSchema = AssetBaseSchema.extend({\n type: z.literal(TokenType.NATIVE),\n});\n\nconst LooseErc20AssetSchema = AssetBaseSchema.extend({\n type: z.literal(TokenType.ERC20),\n address: z.string(),\n});\n\nconst LooseSplAssetSchema = AssetBaseSchema.extend({\n type: z.literal(TokenType.SPL),\n address: z.string(),\n});\n\nconst LooseAssetSchema = z.discriminatedUnion('type', [NativeAssetSchema, LooseErc20AssetSchema, LooseSplAssetSchema]);\n\nconst ChainSchema = z.object({\n chainId: z.string(),\n chainName: z.string(),\n networkToken: NativeAssetSchema,\n rpcUrl: z.string(),\n utilityAddresses: z\n .object({\n multicall: z.string(),\n })\n .optional(),\n});\n\nconst LooseTransferSchema = z.object({\n amountIn: z.bigint().nonnegative(),\n amountOut: z.bigint().nonnegative(),\n completedAtMs: z.int().nonnegative().optional(),\n environment: z.enum(Environment),\n errorCode: z.number().optional(),\n errorReason: z.string().optional(),\n failedAtMs: z.int().nonnegative().optional(),\n fees: z.array(\n z.object({\n type: z.enum(['partner', 'protocol', 'gas', 'bridge', 'slippage', 'swap', 'other', 'relay']),\n fundingModel: z.enum(['included', 'additive']).default('included'),\n name: z.string(),\n amount: z.bigint().nonnegative(),\n chainId: z.string(),\n token: z.discriminatedUnion('type', [\n z.object({\n type: z.literal(TokenType.NATIVE),\n }),\n z.object({\n type: z.literal(TokenType.ERC20),\n address: z.string(),\n }),\n z.object({\n type: z.literal(TokenType.SPL),\n address: z.string(),\n }),\n ]),\n }),\n ),\n fromAddress: z.string(),\n id: z.string(),\n metadata: z.record(z.string(), z.unknown()).optional(),\n partnerFeeBps: z.int().nonnegative().nullable(),\n refund: z\n .object({\n amount: z.bigint().nonnegative(),\n asset: LooseAssetSchema.nullable(),\n chainId: z.string(),\n txHash: z.string().nullable(),\n timestampMs: z.int().nonnegative(),\n })\n .optional(),\n source: z\n .object({\n confirmationCount: z.int().nonnegative(),\n requiredConfirmationCount: z.int().nonnegative(),\n startedAtMs: z.int().nonnegative(),\n targetStartBlockNumber: z.bigint().nonnegative().optional(),\n txHash: z.string(),\n })\n .optional(),\n target: z\n .object({\n confirmationCount: z.int().nonnegative(),\n requiredConfirmationCount: z.int().nonnegative(),\n startedAtMs: z.int().nonnegative(),\n txHash: z.string().optional(),\n })\n .nullable()\n .optional(),\n sourceAsset: LooseAssetSchema,\n sourceChain: ChainSchema,\n status: z.enum([\n 'created',\n 'source-pending',\n 'source-completed',\n 'target-pending',\n 'refunded',\n 'completed',\n 'failed',\n ]),\n targetAsset: LooseAssetSchema,\n targetChain: ChainSchema,\n toAddress: z.string(),\n type: z.enum(ServiceType),\n});\n"],"mappings":"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"}
1
+ {"version":3,"file":"transfer-utils.cjs","names":["z","TokenType","Environment","ServiceType"],"sources":["../../src/utils/transfer-utils.ts"],"sourcesContent":["import { z } from 'zod';\nimport { Environment, ServiceType, TokenType } from '../constants';\nimport type { Transfer } from '../types/transfer';\n\nconst STRINGIFY_TYPE_TAG = '__type';\nconst BIGINT_TYPE = 'bigint';\nconst STRINGIFY_VALUE = 'value';\n\nexport function stringifyTransfer(transfer: Transfer): string {\n return JSON.stringify(transfer, (_key, value) => {\n if (typeof value === 'bigint') {\n return { [STRINGIFY_TYPE_TAG]: BIGINT_TYPE, [STRINGIFY_VALUE]: value.toString() };\n }\n\n return value;\n });\n}\n\nexport function parseTransfer(transferString: string): Transfer {\n const rawJSON = JSON.parse(transferString, (_key, value) => {\n if (\n value &&\n typeof value === 'object' &&\n value[STRINGIFY_TYPE_TAG] === BIGINT_TYPE &&\n typeof value[STRINGIFY_VALUE] === 'string'\n ) {\n return BigInt(value[STRINGIFY_VALUE]);\n }\n\n return value;\n });\n\n const parsed = LooseTransferSchema.safeParse(rawJSON);\n\n if (!parsed.success) {\n throw new Error(`Failed to parse transfer: ${parsed.error.message}`);\n }\n\n return parsed.data as Transfer;\n}\n\nconst AssetBaseSchema = z.object({\n name: z.string(),\n symbol: z.string(),\n decimals: z.int().nonnegative(),\n type: z.enum(TokenType),\n logoUri: z.string().optional(),\n});\n\nconst NativeAssetSchema = AssetBaseSchema.extend({\n type: z.literal(TokenType.NATIVE),\n});\n\nconst LooseErc20AssetSchema = AssetBaseSchema.extend({\n type: z.literal(TokenType.ERC20),\n address: z.string(),\n});\n\nconst LooseSplAssetSchema = AssetBaseSchema.extend({\n type: z.literal(TokenType.SPL),\n address: z.string(),\n});\n\nconst LooseAssetSchema = z.discriminatedUnion('type', [NativeAssetSchema, LooseErc20AssetSchema, LooseSplAssetSchema]);\n\nconst ChainSchema = z.object({\n chainId: z.string(),\n chainName: z.string(),\n networkToken: NativeAssetSchema,\n rpcUrl: z.string(),\n utilityAddresses: z\n .object({\n multicall: z.string(),\n })\n .optional(),\n});\n\nconst LooseTransferSchema = z.object({\n amountIn: z.bigint().nonnegative(),\n amountOut: z.bigint().nonnegative(),\n completedAtMs: z.int().nonnegative().optional(),\n environment: z.enum(Environment),\n errorCode: z.number().optional(),\n errorReason: z.string().optional(),\n failedAtMs: z.int().nonnegative().optional(),\n fees: z.array(\n z.object({\n type: z.enum(['partner', 'protocol', 'gas', 'bridge', 'slippage', 'swap', 'other', 'relay']),\n fundingModel: z.enum(['included', 'additive']).default('included'),\n name: z.string(),\n amount: z.bigint().nonnegative(),\n chainId: z.string(),\n token: z.discriminatedUnion('type', [\n z.object({\n type: z.literal(TokenType.NATIVE),\n }),\n z.object({\n type: z.literal(TokenType.ERC20),\n address: z.string(),\n }),\n z.object({\n type: z.literal(TokenType.SPL),\n address: z.string(),\n }),\n ]),\n }),\n ),\n fromAddress: z.string(),\n id: z.string(),\n metadata: z.record(z.string(), z.unknown()).optional(),\n partnerFeeBps: z.int().nonnegative().nullable(),\n refund: z\n .object({\n amount: z.bigint().nonnegative(),\n asset: LooseAssetSchema.nullable(),\n chainId: z.string(),\n txHash: z.string().nullable(),\n timestampMs: z.int().nonnegative(),\n })\n .optional(),\n source: z\n .object({\n confirmationCount: z.int().nonnegative(),\n requiredConfirmationCount: z.int().nonnegative(),\n startedAtMs: z.int().nonnegative(),\n targetStartBlockNumber: z.bigint().nonnegative().optional(),\n txHash: z.string(),\n })\n .optional(),\n target: z\n .object({\n confirmationCount: z.int().nonnegative(),\n requiredConfirmationCount: z.int().nonnegative(),\n startedAtMs: z.int().nonnegative(),\n txHash: z.string().optional(),\n })\n .nullable()\n .optional(),\n sourceAsset: LooseAssetSchema,\n sourceChain: ChainSchema,\n status: z.enum([\n 'created',\n 'source-pending',\n 'source-completed',\n 'target-pending',\n 'refunded',\n 'completed',\n 'failed',\n ]),\n targetAsset: LooseAssetSchema,\n targetChain: ChainSchema,\n toAddress: z.string(),\n type: z.enum(ServiceType),\n});\n"],"mappings":"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"}
@@ -1,2 +1,2 @@
1
- import{Environment as e,ServiceType as t,TokenType as n}from"../constants.js";import{z as r}from"zod";const i=`__type`,a=`bigint`,o=`value`;function s(e){return JSON.stringify(e,(e,t)=>typeof t==`bigint`?{[i]:a,[o]:t.toString()}:t)}function c(e){let t=JSON.parse(e,(e,t)=>t&&typeof t==`object`&&t[i]===a&&typeof t[o]==`string`?BigInt(t[o]):t),n=h.safeParse(t);if(!n.success)throw Error(`Failed to parse transfer: ${n.error.message}`);return n.data}const l=r.object({name:r.string(),symbol:r.string(),decimals:r.int().nonnegative(),type:r.enum(n)}),u=l.extend({type:r.literal(n.NATIVE)}),d=l.extend({type:r.literal(n.ERC20),address:r.string()}),f=l.extend({type:r.literal(n.SPL),address:r.string()}),p=r.discriminatedUnion(`type`,[u,d,f]),m=r.object({chainId:r.string(),chainName:r.string(),networkToken:u,rpcUrl:r.string(),utilityAddresses:r.object({multicall:r.string()}).optional()}),h=r.object({amountIn:r.bigint().nonnegative(),amountOut:r.bigint().nonnegative(),completedAtMs:r.int().nonnegative().optional(),environment:r.enum(e),errorCode:r.number().optional(),errorReason:r.string().optional(),failedAtMs:r.int().nonnegative().optional(),fees:r.array(r.object({type:r.enum([`partner`,`protocol`,`gas`,`bridge`,`slippage`,`swap`,`other`,`relay`]),fundingModel:r.enum([`included`,`additive`]).default(`included`),name:r.string(),amount:r.bigint().nonnegative(),chainId:r.string(),token:r.discriminatedUnion(`type`,[r.object({type:r.literal(n.NATIVE)}),r.object({type:r.literal(n.ERC20),address:r.string()}),r.object({type:r.literal(n.SPL),address:r.string()})])})),fromAddress:r.string(),id:r.string(),metadata:r.record(r.string(),r.unknown()).optional(),partnerFeeBps:r.int().nonnegative().nullable(),refund:r.object({amount:r.bigint().nonnegative(),asset:p.nullable(),chainId:r.string(),txHash:r.string().nullable(),timestampMs:r.int().nonnegative()}).optional(),source:r.object({confirmationCount:r.int().nonnegative(),requiredConfirmationCount:r.int().nonnegative(),startedAtMs:r.int().nonnegative(),targetStartBlockNumber:r.bigint().nonnegative().optional(),txHash:r.string()}).optional(),target:r.object({confirmationCount:r.int().nonnegative(),requiredConfirmationCount:r.int().nonnegative(),startedAtMs:r.int().nonnegative(),txHash:r.string().optional()}).nullable().optional(),sourceAsset:p,sourceChain:m,status:r.enum([`created`,`source-pending`,`source-completed`,`target-pending`,`refunded`,`completed`,`failed`]),targetAsset:p,targetChain:m,toAddress:r.string(),type:r.enum(t)});export{c as parseTransfer,s as stringifyTransfer};
1
+ import{Environment as e,ServiceType as t,TokenType as n}from"../constants.js";import{z as r}from"zod";const i=`__type`,a=`bigint`,o=`value`;function s(e){return JSON.stringify(e,(e,t)=>typeof t==`bigint`?{[i]:a,[o]:t.toString()}:t)}function c(e){let t=JSON.parse(e,(e,t)=>t&&typeof t==`object`&&t[i]===a&&typeof t[o]==`string`?BigInt(t[o]):t),n=h.safeParse(t);if(!n.success)throw Error(`Failed to parse transfer: ${n.error.message}`);return n.data}const l=r.object({name:r.string(),symbol:r.string(),decimals:r.int().nonnegative(),type:r.enum(n),logoUri:r.string().optional()}),u=l.extend({type:r.literal(n.NATIVE)}),d=l.extend({type:r.literal(n.ERC20),address:r.string()}),f=l.extend({type:r.literal(n.SPL),address:r.string()}),p=r.discriminatedUnion(`type`,[u,d,f]),m=r.object({chainId:r.string(),chainName:r.string(),networkToken:u,rpcUrl:r.string(),utilityAddresses:r.object({multicall:r.string()}).optional()}),h=r.object({amountIn:r.bigint().nonnegative(),amountOut:r.bigint().nonnegative(),completedAtMs:r.int().nonnegative().optional(),environment:r.enum(e),errorCode:r.number().optional(),errorReason:r.string().optional(),failedAtMs:r.int().nonnegative().optional(),fees:r.array(r.object({type:r.enum([`partner`,`protocol`,`gas`,`bridge`,`slippage`,`swap`,`other`,`relay`]),fundingModel:r.enum([`included`,`additive`]).default(`included`),name:r.string(),amount:r.bigint().nonnegative(),chainId:r.string(),token:r.discriminatedUnion(`type`,[r.object({type:r.literal(n.NATIVE)}),r.object({type:r.literal(n.ERC20),address:r.string()}),r.object({type:r.literal(n.SPL),address:r.string()})])})),fromAddress:r.string(),id:r.string(),metadata:r.record(r.string(),r.unknown()).optional(),partnerFeeBps:r.int().nonnegative().nullable(),refund:r.object({amount:r.bigint().nonnegative(),asset:p.nullable(),chainId:r.string(),txHash:r.string().nullable(),timestampMs:r.int().nonnegative()}).optional(),source:r.object({confirmationCount:r.int().nonnegative(),requiredConfirmationCount:r.int().nonnegative(),startedAtMs:r.int().nonnegative(),targetStartBlockNumber:r.bigint().nonnegative().optional(),txHash:r.string()}).optional(),target:r.object({confirmationCount:r.int().nonnegative(),requiredConfirmationCount:r.int().nonnegative(),startedAtMs:r.int().nonnegative(),txHash:r.string().optional()}).nullable().optional(),sourceAsset:p,sourceChain:m,status:r.enum([`created`,`source-pending`,`source-completed`,`target-pending`,`refunded`,`completed`,`failed`]),targetAsset:p,targetChain:m,toAddress:r.string(),type:r.enum(t)});export{c as parseTransfer,s as stringifyTransfer};
2
2
  //# sourceMappingURL=transfer-utils.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"transfer-utils.js","names":[],"sources":["../../src/utils/transfer-utils.ts"],"sourcesContent":["import { z } from 'zod';\nimport { Environment, ServiceType, TokenType } from '../constants';\nimport type { Transfer } from '../types/transfer';\n\nconst STRINGIFY_TYPE_TAG = '__type';\nconst BIGINT_TYPE = 'bigint';\nconst STRINGIFY_VALUE = 'value';\n\nexport function stringifyTransfer(transfer: Transfer): string {\n return JSON.stringify(transfer, (_key, value) => {\n if (typeof value === 'bigint') {\n return { [STRINGIFY_TYPE_TAG]: BIGINT_TYPE, [STRINGIFY_VALUE]: value.toString() };\n }\n\n return value;\n });\n}\n\nexport function parseTransfer(transferString: string): Transfer {\n const rawJSON = JSON.parse(transferString, (_key, value) => {\n if (\n value &&\n typeof value === 'object' &&\n value[STRINGIFY_TYPE_TAG] === BIGINT_TYPE &&\n typeof value[STRINGIFY_VALUE] === 'string'\n ) {\n return BigInt(value[STRINGIFY_VALUE]);\n }\n\n return value;\n });\n\n const parsed = LooseTransferSchema.safeParse(rawJSON);\n\n if (!parsed.success) {\n throw new Error(`Failed to parse transfer: ${parsed.error.message}`);\n }\n\n return parsed.data as Transfer;\n}\n\nconst AssetBaseSchema = z.object({\n name: z.string(),\n symbol: z.string(),\n decimals: z.int().nonnegative(),\n type: z.enum(TokenType),\n});\n\nconst NativeAssetSchema = AssetBaseSchema.extend({\n type: z.literal(TokenType.NATIVE),\n});\n\nconst LooseErc20AssetSchema = AssetBaseSchema.extend({\n type: z.literal(TokenType.ERC20),\n address: z.string(),\n});\n\nconst LooseSplAssetSchema = AssetBaseSchema.extend({\n type: z.literal(TokenType.SPL),\n address: z.string(),\n});\n\nconst LooseAssetSchema = z.discriminatedUnion('type', [NativeAssetSchema, LooseErc20AssetSchema, LooseSplAssetSchema]);\n\nconst ChainSchema = z.object({\n chainId: z.string(),\n chainName: z.string(),\n networkToken: NativeAssetSchema,\n rpcUrl: z.string(),\n utilityAddresses: z\n .object({\n multicall: z.string(),\n })\n .optional(),\n});\n\nconst LooseTransferSchema = z.object({\n amountIn: z.bigint().nonnegative(),\n amountOut: z.bigint().nonnegative(),\n completedAtMs: z.int().nonnegative().optional(),\n environment: z.enum(Environment),\n errorCode: z.number().optional(),\n errorReason: z.string().optional(),\n failedAtMs: z.int().nonnegative().optional(),\n fees: z.array(\n z.object({\n type: z.enum(['partner', 'protocol', 'gas', 'bridge', 'slippage', 'swap', 'other', 'relay']),\n fundingModel: z.enum(['included', 'additive']).default('included'),\n name: z.string(),\n amount: z.bigint().nonnegative(),\n chainId: z.string(),\n token: z.discriminatedUnion('type', [\n z.object({\n type: z.literal(TokenType.NATIVE),\n }),\n z.object({\n type: z.literal(TokenType.ERC20),\n address: z.string(),\n }),\n z.object({\n type: z.literal(TokenType.SPL),\n address: z.string(),\n }),\n ]),\n }),\n ),\n fromAddress: z.string(),\n id: z.string(),\n metadata: z.record(z.string(), z.unknown()).optional(),\n partnerFeeBps: z.int().nonnegative().nullable(),\n refund: z\n .object({\n amount: z.bigint().nonnegative(),\n asset: LooseAssetSchema.nullable(),\n chainId: z.string(),\n txHash: z.string().nullable(),\n timestampMs: z.int().nonnegative(),\n })\n .optional(),\n source: z\n .object({\n confirmationCount: z.int().nonnegative(),\n requiredConfirmationCount: z.int().nonnegative(),\n startedAtMs: z.int().nonnegative(),\n targetStartBlockNumber: z.bigint().nonnegative().optional(),\n txHash: z.string(),\n })\n .optional(),\n target: z\n .object({\n confirmationCount: z.int().nonnegative(),\n requiredConfirmationCount: z.int().nonnegative(),\n startedAtMs: z.int().nonnegative(),\n txHash: z.string().optional(),\n })\n .nullable()\n .optional(),\n sourceAsset: LooseAssetSchema,\n sourceChain: ChainSchema,\n status: z.enum([\n 'created',\n 'source-pending',\n 'source-completed',\n 'target-pending',\n 'refunded',\n 'completed',\n 'failed',\n ]),\n targetAsset: LooseAssetSchema,\n targetChain: ChainSchema,\n toAddress: z.string(),\n type: z.enum(ServiceType),\n});\n"],"mappings":"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"}
1
+ {"version":3,"file":"transfer-utils.js","names":[],"sources":["../../src/utils/transfer-utils.ts"],"sourcesContent":["import { z } from 'zod';\nimport { Environment, ServiceType, TokenType } from '../constants';\nimport type { Transfer } from '../types/transfer';\n\nconst STRINGIFY_TYPE_TAG = '__type';\nconst BIGINT_TYPE = 'bigint';\nconst STRINGIFY_VALUE = 'value';\n\nexport function stringifyTransfer(transfer: Transfer): string {\n return JSON.stringify(transfer, (_key, value) => {\n if (typeof value === 'bigint') {\n return { [STRINGIFY_TYPE_TAG]: BIGINT_TYPE, [STRINGIFY_VALUE]: value.toString() };\n }\n\n return value;\n });\n}\n\nexport function parseTransfer(transferString: string): Transfer {\n const rawJSON = JSON.parse(transferString, (_key, value) => {\n if (\n value &&\n typeof value === 'object' &&\n value[STRINGIFY_TYPE_TAG] === BIGINT_TYPE &&\n typeof value[STRINGIFY_VALUE] === 'string'\n ) {\n return BigInt(value[STRINGIFY_VALUE]);\n }\n\n return value;\n });\n\n const parsed = LooseTransferSchema.safeParse(rawJSON);\n\n if (!parsed.success) {\n throw new Error(`Failed to parse transfer: ${parsed.error.message}`);\n }\n\n return parsed.data as Transfer;\n}\n\nconst AssetBaseSchema = z.object({\n name: z.string(),\n symbol: z.string(),\n decimals: z.int().nonnegative(),\n type: z.enum(TokenType),\n logoUri: z.string().optional(),\n});\n\nconst NativeAssetSchema = AssetBaseSchema.extend({\n type: z.literal(TokenType.NATIVE),\n});\n\nconst LooseErc20AssetSchema = AssetBaseSchema.extend({\n type: z.literal(TokenType.ERC20),\n address: z.string(),\n});\n\nconst LooseSplAssetSchema = AssetBaseSchema.extend({\n type: z.literal(TokenType.SPL),\n address: z.string(),\n});\n\nconst LooseAssetSchema = z.discriminatedUnion('type', [NativeAssetSchema, LooseErc20AssetSchema, LooseSplAssetSchema]);\n\nconst ChainSchema = z.object({\n chainId: z.string(),\n chainName: z.string(),\n networkToken: NativeAssetSchema,\n rpcUrl: z.string(),\n utilityAddresses: z\n .object({\n multicall: z.string(),\n })\n .optional(),\n});\n\nconst LooseTransferSchema = z.object({\n amountIn: z.bigint().nonnegative(),\n amountOut: z.bigint().nonnegative(),\n completedAtMs: z.int().nonnegative().optional(),\n environment: z.enum(Environment),\n errorCode: z.number().optional(),\n errorReason: z.string().optional(),\n failedAtMs: z.int().nonnegative().optional(),\n fees: z.array(\n z.object({\n type: z.enum(['partner', 'protocol', 'gas', 'bridge', 'slippage', 'swap', 'other', 'relay']),\n fundingModel: z.enum(['included', 'additive']).default('included'),\n name: z.string(),\n amount: z.bigint().nonnegative(),\n chainId: z.string(),\n token: z.discriminatedUnion('type', [\n z.object({\n type: z.literal(TokenType.NATIVE),\n }),\n z.object({\n type: z.literal(TokenType.ERC20),\n address: z.string(),\n }),\n z.object({\n type: z.literal(TokenType.SPL),\n address: z.string(),\n }),\n ]),\n }),\n ),\n fromAddress: z.string(),\n id: z.string(),\n metadata: z.record(z.string(), z.unknown()).optional(),\n partnerFeeBps: z.int().nonnegative().nullable(),\n refund: z\n .object({\n amount: z.bigint().nonnegative(),\n asset: LooseAssetSchema.nullable(),\n chainId: z.string(),\n txHash: z.string().nullable(),\n timestampMs: z.int().nonnegative(),\n })\n .optional(),\n source: z\n .object({\n confirmationCount: z.int().nonnegative(),\n requiredConfirmationCount: z.int().nonnegative(),\n startedAtMs: z.int().nonnegative(),\n targetStartBlockNumber: z.bigint().nonnegative().optional(),\n txHash: z.string(),\n })\n .optional(),\n target: z\n .object({\n confirmationCount: z.int().nonnegative(),\n requiredConfirmationCount: z.int().nonnegative(),\n startedAtMs: z.int().nonnegative(),\n txHash: z.string().optional(),\n })\n .nullable()\n .optional(),\n sourceAsset: LooseAssetSchema,\n sourceChain: ChainSchema,\n status: z.enum([\n 'created',\n 'source-pending',\n 'source-completed',\n 'target-pending',\n 'refunded',\n 'completed',\n 'failed',\n ]),\n targetAsset: LooseAssetSchema,\n targetChain: ChainSchema,\n toAddress: z.string(),\n type: z.enum(ServiceType),\n});\n"],"mappings":"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"}
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@avalabs/fusion-sdk",
3
3
  "license": "Limited Ecosystem License",
4
- "version": "0.25.0",
4
+ "version": "0.26.1",
5
5
  "type": "module",
6
6
  "main": "./dist/mod.cjs",
7
7
  "module": "./dist/mod.js",
@@ -49,8 +49,8 @@
49
49
  "vitest": "4.0.6",
50
50
  "tsdown": "0.21.4",
51
51
  "zod": "4.1.12",
52
- "eslint-config-custom": "0.1.0",
53
- "@internal/tsdown-config": "0.0.1"
52
+ "@internal/tsdown-config": "0.0.1",
53
+ "eslint-config-custom": "0.1.0"
54
54
  },
55
55
  "sideEffects": false,
56
56
  "scripts": {