@avalabs/fusion-sdk 0.6.0 → 0.8.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/constants.cjs +1 -1
- package/dist/constants.cjs.map +1 -1
- package/dist/constants.js +1 -1
- package/dist/constants.js.map +1 -1
- package/dist/mod.cjs +1 -1
- package/dist/mod.d.cts +3 -3
- package/dist/mod.d.ts +3 -3
- package/dist/mod.js +1 -1
- package/dist/transfer-manager.cjs +1 -1
- package/dist/transfer-manager.cjs.map +1 -1
- package/dist/transfer-manager.js +1 -1
- package/dist/transfer-manager.js.map +1 -1
- package/dist/transfer-service/avalanche-evm/_handlers/get-bridgeable-assets.cjs +2 -0
- package/dist/transfer-service/avalanche-evm/_handlers/get-bridgeable-assets.cjs.map +1 -0
- package/dist/transfer-service/avalanche-evm/_handlers/get-bridgeable-assets.js +2 -0
- package/dist/transfer-service/avalanche-evm/_handlers/get-bridgeable-assets.js.map +1 -0
- package/dist/transfer-service/avalanche-evm/_utils/get-config.cjs +1 -1
- package/dist/transfer-service/avalanche-evm/_utils/get-config.js +1 -1
- package/dist/transfer-service/avalanche-evm/avalanche-evm-service.cjs +1 -1
- package/dist/transfer-service/avalanche-evm/avalanche-evm-service.cjs.map +1 -1
- package/dist/transfer-service/avalanche-evm/avalanche-evm-service.js +1 -1
- package/dist/transfer-service/avalanche-evm/avalanche-evm-service.js.map +1 -1
- package/dist/transfer-service/lombard/_utils/asset.cjs +1 -1
- package/dist/transfer-service/lombard/_utils/asset.cjs.map +1 -1
- package/dist/transfer-service/lombard/_utils/asset.js +1 -1
- package/dist/transfer-service/lombard/_utils/asset.js.map +1 -1
- package/dist/transfer-service/lombard/btc-to-btcb/_handlers/get-bridgeable-assets.cjs +2 -0
- package/dist/transfer-service/lombard/btc-to-btcb/_handlers/get-bridgeable-assets.cjs.map +1 -0
- package/dist/transfer-service/lombard/btc-to-btcb/_handlers/get-bridgeable-assets.js +2 -0
- package/dist/transfer-service/lombard/btc-to-btcb/_handlers/get-bridgeable-assets.js.map +1 -0
- package/dist/transfer-service/lombard/btc-to-btcb/_handlers/stream-quotes.cjs +1 -1
- package/dist/transfer-service/lombard/btc-to-btcb/_handlers/stream-quotes.js +1 -1
- package/dist/transfer-service/lombard/btc-to-btcb-service.cjs +1 -1
- package/dist/transfer-service/lombard/btc-to-btcb-service.cjs.map +1 -1
- package/dist/transfer-service/lombard/btc-to-btcb-service.js +1 -1
- package/dist/transfer-service/lombard/btc-to-btcb-service.js.map +1 -1
- package/dist/transfer-service/lombard/btcb-to-btc/_handlers/get-bridgeable-assets.cjs +2 -0
- package/dist/transfer-service/lombard/btcb-to-btc/_handlers/get-bridgeable-assets.cjs.map +1 -0
- package/dist/transfer-service/lombard/btcb-to-btc/_handlers/get-bridgeable-assets.js +2 -0
- package/dist/transfer-service/lombard/btcb-to-btc/_handlers/get-bridgeable-assets.js.map +1 -0
- package/dist/transfer-service/lombard/btcb-to-btc/_handlers/stream-quotes.cjs +1 -1
- package/dist/transfer-service/lombard/btcb-to-btc/_handlers/stream-quotes.js +1 -1
- package/dist/transfer-service/lombard/btcb-to-btc-service.cjs +1 -1
- package/dist/transfer-service/lombard/btcb-to-btc-service.cjs.map +1 -1
- package/dist/transfer-service/lombard/btcb-to-btc-service.js +1 -1
- package/dist/transfer-service/lombard/btcb-to-btc-service.js.map +1 -1
- package/dist/transfer-service/lombard/constants.cjs +1 -1
- package/dist/transfer-service/lombard/constants.cjs.map +1 -1
- package/dist/transfer-service/lombard/constants.js +1 -1
- package/dist/transfer-service/lombard/constants.js.map +1 -1
- package/dist/transfer-service/markr/_api.cjs +1 -1
- package/dist/transfer-service/markr/_api.js +1 -1
- package/dist/transfer-service/markr/_handlers/analyze-support.cjs +1 -1
- package/dist/transfer-service/markr/_handlers/analyze-support.cjs.map +1 -1
- package/dist/transfer-service/markr/_handlers/analyze-support.js +1 -1
- package/dist/transfer-service/markr/_handlers/analyze-support.js.map +1 -1
- package/dist/transfer-service/markr/_handlers/get-bridgeable-assets.cjs +2 -0
- package/dist/transfer-service/markr/_handlers/get-bridgeable-assets.cjs.map +1 -0
- package/dist/transfer-service/markr/_handlers/get-bridgeable-assets.js +2 -0
- package/dist/transfer-service/markr/_handlers/get-bridgeable-assets.js.map +1 -0
- package/dist/transfer-service/markr/_handlers/stream-quotes.cjs +1 -1
- package/dist/transfer-service/markr/_handlers/stream-quotes.js +1 -1
- package/dist/transfer-service/markr/_handlers/track-transfer.cjs +1 -1
- package/dist/transfer-service/markr/_handlers/track-transfer.cjs.map +1 -1
- package/dist/transfer-service/markr/_handlers/track-transfer.js +1 -1
- package/dist/transfer-service/markr/_handlers/track-transfer.js.map +1 -1
- package/dist/transfer-service/markr/_schema.cjs +1 -1
- package/dist/transfer-service/markr/_schema.cjs.map +1 -1
- package/dist/transfer-service/markr/_schema.js +1 -1
- package/dist/transfer-service/markr/_schema.js.map +1 -1
- package/dist/transfer-service/markr/_utils.cjs +1 -1
- package/dist/transfer-service/markr/_utils.cjs.map +1 -1
- package/dist/transfer-service/markr/_utils.js +1 -1
- package/dist/transfer-service/markr/_utils.js.map +1 -1
- package/dist/transfer-service/markr/constants.cjs +1 -1
- package/dist/transfer-service/markr/constants.cjs.map +1 -1
- package/dist/transfer-service/markr/constants.js +1 -1
- package/dist/transfer-service/markr/constants.js.map +1 -1
- package/dist/transfer-service/markr/markr-service.cjs +1 -1
- package/dist/transfer-service/markr/markr-service.cjs.map +1 -1
- package/dist/transfer-service/markr/markr-service.js +1 -1
- package/dist/transfer-service/markr/markr-service.js.map +1 -1
- package/dist/transfer-service/wrap-unwrap/_handlers/get-bridgeable-assets.cjs +2 -0
- package/dist/transfer-service/wrap-unwrap/_handlers/get-bridgeable-assets.cjs.map +1 -0
- package/dist/transfer-service/wrap-unwrap/_handlers/get-bridgeable-assets.js +2 -0
- package/dist/transfer-service/wrap-unwrap/_handlers/get-bridgeable-assets.js.map +1 -0
- package/dist/transfer-service/wrap-unwrap/constants.cjs +1 -1
- package/dist/transfer-service/wrap-unwrap/constants.cjs.map +1 -1
- package/dist/transfer-service/wrap-unwrap/constants.js +1 -1
- package/dist/transfer-service/wrap-unwrap/constants.js.map +1 -1
- package/dist/transfer-service/wrap-unwrap/wrap-unwrap-service.cjs +1 -1
- package/dist/transfer-service/wrap-unwrap/wrap-unwrap-service.cjs.map +1 -1
- package/dist/transfer-service/wrap-unwrap/wrap-unwrap-service.js +1 -1
- package/dist/transfer-service/wrap-unwrap/wrap-unwrap-service.js.map +1 -1
- package/dist/types/asset.d.cts +6 -1
- package/dist/types/asset.d.ts +6 -1
- package/dist/types/service.d.cts +15 -2
- package/dist/types/service.d.ts +15 -2
- package/dist/types/transfer-manager.d.cts +10 -6
- package/dist/types/transfer-manager.d.ts +10 -6
- package/dist/utils/asset-id.cjs +2 -0
- package/dist/utils/asset-id.cjs.map +1 -0
- package/dist/utils/asset-id.js +2 -0
- package/dist/utils/asset-id.js.map +1 -0
- package/package.json +1 -1
- package/dist/_utils/merge-assets.cjs +0 -2
- package/dist/_utils/merge-assets.cjs.map +0 -1
- package/dist/_utils/merge-assets.js +0 -2
- package/dist/_utils/merge-assets.js.map +0 -1
package/dist/constants.cjs
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_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.TokensTransfer=`tokens-transfer`,e.WrapToken=`wrap-token`,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}({});const u={chainId:o.FUJI,chainName:`Avalanche Fuji`,networkToken:{type:t.NATIVE,name:`AVAX`,symbol:`AVAX`,decimals:18},rpcUrl:`https://api.avax-test.network/ext/bc/C/rpc`},d={chainId:o.MAINNET,chainName:`Avalanche Mainnet`,rpcUrl:`https://api.avax.network/ext/bc/C/rpc`,networkToken:{type:t.NATIVE,name:`AVAX`,symbol:`AVAX`,decimals:18}},f={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}},p={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}},m={chainId:c.TESTNET,chainName:`Bitcoin Testnet`,rpcUrl:``,networkToken:{type:t.NATIVE,name:`Bitcoin`,symbol:`BTC`,decimals:8}},h={chainId:c.MAINNET,chainName:`Bitcoin Mainnet`,rpcUrl:``,networkToken:{type:t.NATIVE,name:`Bitcoin`,symbol:`BTC`,decimals:8}},g={chainId:l.MAINNET,chainName:`Solana`,rpcUrl:`https://proxy-api.avax.network/proxy/nownodes/sol`,networkToken:{type:t.NATIVE,name:`SOL`,symbol:`SOL`,decimals:9}},_={chainId:l.DEVNET,chainName:`Solana (Devnet)`,rpcUrl:`https://api.devnet.solana.com`,networkToken:{type:t.NATIVE,name:`SOL`,symbol:`SOL`,decimals:9}},v={type:t.NATIVE,name:`Avalanche`,symbol:`AVAX`,decimals:18},y={type:t.NATIVE,name:`Ether`,symbol:`ETH`,decimals:18};let b=function(e){return e.AVALANCHE=`avalanche`,e.BITCOIN=`bitcoin`,e.ETHEREUM=`ethereum`,e.SOLANA=`solana`,e.UNKNOWN=`_unknown`,e}({}),x=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 S={slow:`low`,normal:`medium`,fast:`high`};exports.AVALANCHE_FUJI_CHAIN=u,exports.AVALANCHE_MAINNET_CHAIN=d,exports.AvalancheChainIds=o,exports.BITCOIN_MAINNET_CHAIN=h,exports.BITCOIN_TESTNET_CHAIN=m,exports.BTC_SERVICE_TYPES=r,exports.BitcoinChainIds=c,exports.Blockchain=b,exports.ERC_ZERO_ADDRESS=`0x0000000000000000000000000000000000000000`,exports.ETHEREUM_MAINNET_CHAIN=p,exports.ETHEREUM_SEPOLIA_CHAIN=f,exports.EVM_SERVICE_TYPES=i,exports.Environment=e,exports.EthereumChainIds=s,exports.EvmChainId=x,exports.FEE_RATE_TIER_TO_BITCOIN=S,exports.NATIVE_AVAX=v,exports.NATIVE_ETH=y,exports.SOLANA_DEVNET_CHAIN=_,exports.SOLANA_MAINNET_CHAIN=g,exports.SOL_MINT_ADDRESS=`So11111111111111111111111111111111111111112`,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_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.TokensTransfer=`tokens-transfer`,e.WrapToken=`wrap-token`,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}({});const u={chainId:o.FUJI,chainName:`Avalanche Fuji`,networkToken:{type:t.NATIVE,name:`AVAX`,symbol:`AVAX`,decimals:18},rpcUrl:`https://api.avax-test.network/ext/bc/C/rpc`},d={chainId:o.MAINNET,chainName:`Avalanche Mainnet`,rpcUrl:`https://api.avax.network/ext/bc/C/rpc`,networkToken:{type:t.NATIVE,name:`AVAX`,symbol:`AVAX`,decimals:18}},f={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}},p={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}},m={chainId:c.TESTNET,chainName:`Bitcoin Testnet`,rpcUrl:``,networkToken:{type:t.NATIVE,name:`Bitcoin`,symbol:`BTC`,decimals:8}},h={chainId:c.MAINNET,chainName:`Bitcoin Mainnet`,rpcUrl:``,networkToken:{type:t.NATIVE,name:`Bitcoin`,symbol:`BTC`,decimals:8}},g={chainId:l.MAINNET,chainName:`Solana`,rpcUrl:`https://proxy-api.avax.network/proxy/nownodes/sol`,networkToken:{type:t.NATIVE,name:`SOL`,symbol:`SOL`,decimals:9}},_={chainId:l.DEVNET,chainName:`Solana (Devnet)`,rpcUrl:`https://api.devnet.solana.com`,networkToken:{type:t.NATIVE,name:`SOL`,symbol:`SOL`,decimals:9}},v={type:t.NATIVE,name:`Avalanche`,symbol:`AVAX`,decimals:18,logoUri:`https://images.ctfassets.net/gcj8jwzm6086/5VHupNKwnDYJvqMENeV7iJ/fdd6326b7a82c8388e4ee9d4be7062d4/avalanche-avax-logo.svg`},y={type:t.NATIVE,name:`Ether`,symbol:`ETH`,decimals:18,logoUri:`https://images.ctfassets.net/gcj8jwzm6086/6l56QLVZmvacuBfjHBTThP/791d743dd2c526692562780c2325fedf/eth-circle__1_.svg`};let b=function(e){return e.AVALANCHE=`avalanche`,e.BITCOIN=`bitcoin`,e.ETHEREUM=`ethereum`,e.SOLANA=`solana`,e.UNKNOWN=`_unknown`,e}({}),x=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 S={slow:`low`,normal:`medium`,fast:`high`};exports.AVALANCHE_FUJI_CHAIN=u,exports.AVALANCHE_MAINNET_CHAIN=d,exports.AvalancheChainIds=o,exports.BITCOIN_MAINNET_CHAIN=h,exports.BITCOIN_TESTNET_CHAIN=m,exports.BTC_SERVICE_TYPES=r,exports.BitcoinChainIds=c,exports.Blockchain=b,exports.ERC_ZERO_ADDRESS=`0x0000000000000000000000000000000000000000`,exports.ETHEREUM_MAINNET_CHAIN=p,exports.ETHEREUM_SEPOLIA_CHAIN=f,exports.EVM_SERVICE_TYPES=i,exports.Environment=e,exports.EthereumChainIds=s,exports.EvmChainId=x,exports.FEE_RATE_TIER_TO_BITCOIN=S,exports.NATIVE_AVAX=v,exports.NATIVE_ETH=y,exports.SOLANA_DEVNET_CHAIN=_,exports.SOLANA_MAINNET_CHAIN=g,exports.SOL_MINT_ADDRESS=`So11111111111111111111111111111111111111112`,exports.ServiceType=n,exports.SolanaChainIds=l,exports.TokenType=t,exports.TransferSignatureReason=a;
|
|
2
2
|
//# sourceMappingURL=constants.cjs.map
|
package/dist/constants.cjs.map
CHANGED
|
@@ -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 { 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 /** 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 /** 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}\n\nexport const ERC_ZERO_ADDRESS: EvmAddress = '0x0000000000000000000000000000000000000000';\nexport const SOL_MINT_ADDRESS: SolAddress = 'So11111111111111111111111111111111111111112' 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\nexport const AVALANCHE_FUJI_CHAIN: Chain = {\n chainId: AvalancheChainIds.FUJI,\n chainName: 'Avalanche Fuji',\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',\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 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 = {
|
|
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 { 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 /** 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 /** 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}\n\nexport const ERC_ZERO_ADDRESS: EvmAddress = '0x0000000000000000000000000000000000000000';\nexport const SOL_MINT_ADDRESS: SolAddress = 'So11111111111111111111111111111111111111112' 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\nexport const AVALANCHE_FUJI_CHAIN: Chain = {\n chainId: AvalancheChainIds.FUJI,\n chainName: 'Avalanche Fuji',\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',\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 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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"}
|
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_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.TokensTransfer=`tokens-transfer`,e.WrapToken=`wrap-token`,e}({});const o=`0x0000000000000000000000000000000000000000`,s=`So11111111111111111111111111111111111111112`;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}({});const f={chainId:c.FUJI,chainName:`Avalanche Fuji`,networkToken:{type:t.NATIVE,name:`AVAX`,symbol:`AVAX`,decimals:18},rpcUrl:`https://api.avax-test.network/ext/bc/C/rpc`},p={chainId:c.MAINNET,chainName:`Avalanche Mainnet`,rpcUrl:`https://api.avax.network/ext/bc/C/rpc`,networkToken:{type:t.NATIVE,name:`AVAX`,symbol:`AVAX`,decimals:18}},m={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}},h={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}},g={chainId:u.TESTNET,chainName:`Bitcoin Testnet`,rpcUrl:``,networkToken:{type:t.NATIVE,name:`Bitcoin`,symbol:`BTC`,decimals:8}},_={chainId:u.MAINNET,chainName:`Bitcoin Mainnet`,rpcUrl:``,networkToken:{type:t.NATIVE,name:`Bitcoin`,symbol:`BTC`,decimals:8}},v={chainId:d.MAINNET,chainName:`Solana`,rpcUrl:`https://proxy-api.avax.network/proxy/nownodes/sol`,networkToken:{type:t.NATIVE,name:`SOL`,symbol:`SOL`,decimals:9}},y={chainId:d.DEVNET,chainName:`Solana (Devnet)`,rpcUrl:`https://api.devnet.solana.com`,networkToken:{type:t.NATIVE,name:`SOL`,symbol:`SOL`,decimals:9}},b={type:t.NATIVE,name:`Avalanche`,symbol:`AVAX`,decimals:18},x={type:t.NATIVE,name:`Ether`,symbol:`ETH`,decimals:18};let S=function(e){return e.AVALANCHE=`avalanche`,e.BITCOIN=`bitcoin`,e.ETHEREUM=`ethereum`,e.SOLANA=`solana`,e.UNKNOWN=`_unknown`,e}({}),C=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 w={slow:`low`,normal:`medium`,fast:`high`};export{f as AVALANCHE_FUJI_CHAIN,p as AVALANCHE_MAINNET_CHAIN,c as AvalancheChainIds,_ as BITCOIN_MAINNET_CHAIN,g as BITCOIN_TESTNET_CHAIN,r as BTC_SERVICE_TYPES,u as BitcoinChainIds,S as Blockchain,o as ERC_ZERO_ADDRESS,h as ETHEREUM_MAINNET_CHAIN,m as ETHEREUM_SEPOLIA_CHAIN,i as EVM_SERVICE_TYPES,e as Environment,l as EthereumChainIds,C as EvmChainId,w as FEE_RATE_TIER_TO_BITCOIN,b as NATIVE_AVAX,x as NATIVE_ETH,y as SOLANA_DEVNET_CHAIN,v as SOLANA_MAINNET_CHAIN,s as SOL_MINT_ADDRESS,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_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.TokensTransfer=`tokens-transfer`,e.WrapToken=`wrap-token`,e}({});const o=`0x0000000000000000000000000000000000000000`,s=`So11111111111111111111111111111111111111112`;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}({});const f={chainId:c.FUJI,chainName:`Avalanche Fuji`,networkToken:{type:t.NATIVE,name:`AVAX`,symbol:`AVAX`,decimals:18},rpcUrl:`https://api.avax-test.network/ext/bc/C/rpc`},p={chainId:c.MAINNET,chainName:`Avalanche Mainnet`,rpcUrl:`https://api.avax.network/ext/bc/C/rpc`,networkToken:{type:t.NATIVE,name:`AVAX`,symbol:`AVAX`,decimals:18}},m={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}},h={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}},g={chainId:u.TESTNET,chainName:`Bitcoin Testnet`,rpcUrl:``,networkToken:{type:t.NATIVE,name:`Bitcoin`,symbol:`BTC`,decimals:8}},_={chainId:u.MAINNET,chainName:`Bitcoin Mainnet`,rpcUrl:``,networkToken:{type:t.NATIVE,name:`Bitcoin`,symbol:`BTC`,decimals:8}},v={chainId:d.MAINNET,chainName:`Solana`,rpcUrl:`https://proxy-api.avax.network/proxy/nownodes/sol`,networkToken:{type:t.NATIVE,name:`SOL`,symbol:`SOL`,decimals:9}},y={chainId:d.DEVNET,chainName:`Solana (Devnet)`,rpcUrl:`https://api.devnet.solana.com`,networkToken:{type:t.NATIVE,name:`SOL`,symbol:`SOL`,decimals:9}},b={type:t.NATIVE,name:`Avalanche`,symbol:`AVAX`,decimals:18,logoUri:`https://images.ctfassets.net/gcj8jwzm6086/5VHupNKwnDYJvqMENeV7iJ/fdd6326b7a82c8388e4ee9d4be7062d4/avalanche-avax-logo.svg`},x={type:t.NATIVE,name:`Ether`,symbol:`ETH`,decimals:18,logoUri:`https://images.ctfassets.net/gcj8jwzm6086/6l56QLVZmvacuBfjHBTThP/791d743dd2c526692562780c2325fedf/eth-circle__1_.svg`};let S=function(e){return e.AVALANCHE=`avalanche`,e.BITCOIN=`bitcoin`,e.ETHEREUM=`ethereum`,e.SOLANA=`solana`,e.UNKNOWN=`_unknown`,e}({}),C=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 w={slow:`low`,normal:`medium`,fast:`high`};export{f as AVALANCHE_FUJI_CHAIN,p as AVALANCHE_MAINNET_CHAIN,c as AvalancheChainIds,_ as BITCOIN_MAINNET_CHAIN,g as BITCOIN_TESTNET_CHAIN,r as BTC_SERVICE_TYPES,u as BitcoinChainIds,S as Blockchain,o as ERC_ZERO_ADDRESS,h as ETHEREUM_MAINNET_CHAIN,m as ETHEREUM_SEPOLIA_CHAIN,i as EVM_SERVICE_TYPES,e as Environment,l as EthereumChainIds,C as EvmChainId,w as FEE_RATE_TIER_TO_BITCOIN,b as NATIVE_AVAX,x as NATIVE_ETH,y as SOLANA_DEVNET_CHAIN,v as SOLANA_MAINNET_CHAIN,s as SOL_MINT_ADDRESS,n as ServiceType,d as SolanaChainIds,t as TokenType,a as TransferSignatureReason};
|
|
2
2
|
//# sourceMappingURL=constants.js.map
|
package/dist/constants.js.map
CHANGED
|
@@ -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 { 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 /** 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 /** 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}\n\nexport const ERC_ZERO_ADDRESS: EvmAddress = '0x0000000000000000000000000000000000000000';\nexport const SOL_MINT_ADDRESS: SolAddress = 'So11111111111111111111111111111111111111112' 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\nexport const AVALANCHE_FUJI_CHAIN: Chain = {\n chainId: AvalancheChainIds.FUJI,\n chainName: 'Avalanche Fuji',\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',\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 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 = {
|
|
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 { 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 /** 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 /** 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}\n\nexport const ERC_ZERO_ADDRESS: EvmAddress = '0x0000000000000000000000000000000000000000';\nexport const SOL_MINT_ADDRESS: SolAddress = 'So11111111111111111111111111111111111111112' 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\nexport const AVALANCHE_FUJI_CHAIN: Chain = {\n chainId: AvalancheChainIds.FUJI,\n chainName: 'Avalanche Fuji',\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',\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 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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"}
|
package/dist/mod.cjs
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require(`./constants.cjs`),t=require(`./errors.cjs`),n=require(`./type-guards.cjs`),r=require(`./
|
|
1
|
+
Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require(`./constants.cjs`),t=require(`./errors.cjs`),n=require(`./type-guards.cjs`),r=require(`./transfer-manager.cjs`),i=require(`./utils/caip.cjs`),a=require(`./utils/transfer-utils.cjs`);exports.AVALANCHE_FUJI_CHAIN=e.AVALANCHE_FUJI_CHAIN,exports.AVALANCHE_MAINNET_CHAIN=e.AVALANCHE_MAINNET_CHAIN,exports.AbortedError=t.AbortedError,exports.AvalancheChainIds=e.AvalancheChainIds,exports.BITCOIN_MAINNET_CHAIN=e.BITCOIN_MAINNET_CHAIN,exports.BITCOIN_TESTNET_CHAIN=e.BITCOIN_TESTNET_CHAIN,exports.BTC_SERVICE_TYPES=e.BTC_SERVICE_TYPES,exports.BitcoinChainIds=e.BitcoinChainIds,exports.Blockchain=e.Blockchain,exports.ERC_ZERO_ADDRESS=e.ERC_ZERO_ADDRESS,exports.ETHEREUM_MAINNET_CHAIN=e.ETHEREUM_MAINNET_CHAIN,exports.ETHEREUM_SEPOLIA_CHAIN=e.ETHEREUM_SEPOLIA_CHAIN,exports.EVM_SERVICE_TYPES=e.EVM_SERVICE_TYPES,exports.Environment=e.Environment,exports.ErrorCode=t.ErrorCode,exports.ErrorReason=t.ErrorReason,exports.EthereumChainIds=e.EthereumChainIds,exports.EvmChainId=e.EvmChainId,exports.FEE_RATE_TIER_TO_BITCOIN=e.FEE_RATE_TIER_TO_BITCOIN,exports.HttpError=t.HttpError,exports.InvalidParamsError=t.InvalidParamsError,exports.NATIVE_AVAX=e.NATIVE_AVAX,exports.NATIVE_ETH=e.NATIVE_ETH,exports.ResponseValidationError=t.ResponseValidationError,exports.SOLANA_DEVNET_CHAIN=e.SOLANA_DEVNET_CHAIN,exports.SOLANA_MAINNET_CHAIN=e.SOLANA_MAINNET_CHAIN,exports.SOL_MINT_ADDRESS=e.SOL_MINT_ADDRESS,exports.SdkError=t.SdkError,exports.ServiceInitializationError=t.ServiceInitializationError,exports.ServiceType=e.ServiceType,exports.ServiceUnavailableError=t.ServiceUnavailableError,exports.SolanaChainIds=e.SolanaChainIds,exports.TimeoutError=t.TimeoutError,exports.TokenType=e.TokenType,exports.TransferSignatureReason=e.TransferSignatureReason,exports.caip2ToEip155ChainId=i.caip2ToEip155ChainId,exports.caip2ToEip155HexChainId=i.caip2ToEip155HexChainId,exports.createTransferManager=r.createTransferManager,exports.eip155ChainIdToCaip2=i.eip155ChainIdToCaip2,exports.isAbortedError=t.isAbortedError,exports.isCaip2ChainId=i.isCaip2ChainId,exports.isEnvironment=n.isEnvironment,exports.isErc20Asset=n.isErc20Asset,exports.isEvmBridgeInitializer=n.isEvmBridgeInitializer,exports.isHttpError=t.isHttpError,exports.isInvalidParamsError=t.isInvalidParamsError,exports.isLombardServiceInitializer=n.isLombardServiceInitializer,exports.isMarkrServiceInitializer=n.isMarkrServiceInitializer,exports.isNativeAsset=n.isNativeAsset,exports.isResponseValidationError=t.isResponseValidationError,exports.isSdkError=t.isSdkError,exports.isServiceInitializationError=t.isServiceInitializationError,exports.isServiceInitializer=n.isServiceInitializer,exports.isServiceUnavailableError=t.isServiceUnavailableError,exports.isSplAsset=n.isSplAsset,exports.isTimeoutError=t.isTimeoutError,exports.parseTransfer=a.parseTransfer,exports.splitCaip2ChainId=i.splitCaip2ChainId,exports.stringifyTransfer=a.stringifyTransfer;
|
package/dist/mod.d.cts
CHANGED
|
@@ -3,17 +3,17 @@ import { BitcoinFeeRateTier, BitcoinFunctions, BitcoinInputUTXO, BitcoinInputUTX
|
|
|
3
3
|
import { Chain } from "./types/chain.cjs";
|
|
4
4
|
import { FeeRateTier } from "./types/fee.cjs";
|
|
5
5
|
import { AVALANCHE_FUJI_CHAIN, AVALANCHE_MAINNET_CHAIN, AvalancheChainIds, BITCOIN_MAINNET_CHAIN, BITCOIN_TESTNET_CHAIN, BTC_SERVICE_TYPES, BitcoinChainIds, Blockchain, ERC_ZERO_ADDRESS, ETHEREUM_MAINNET_CHAIN, ETHEREUM_SEPOLIA_CHAIN, EVM_SERVICE_TYPES, Environment, EthereumChainIds, EvmChainId, FEE_RATE_TIER_TO_BITCOIN, NATIVE_AVAX, NATIVE_ETH, SOLANA_DEVNET_CHAIN, SOLANA_MAINNET_CHAIN, SOL_MINT_ADDRESS, ServiceType, SolanaChainIds, TokenType, TransferSignatureReason } from "./constants.cjs";
|
|
6
|
-
import { Asset, ChainAssetMap, DestinationInfo, Erc20Asset, NativeAsset, SplAsset, TransferableAsset } from "./types/asset.cjs";
|
|
6
|
+
import { Asset, BridgeableUiAsset, ChainAssetMap, DestinationInfo, Erc20Asset, NativeAsset, SplAsset, TransferableAsset } from "./types/asset.cjs";
|
|
7
7
|
import { Quote, QuoteFee, QuoteFeeToken, QuoteFeeType, QuoteFees, QuoterDoneReason, QuoterEventArgs, QuoterEventHandler, QuoterInterface, QuoterProps, QuotesTuple, ServiceQuoteEventArgs, ServiceQuoteEventHandler } from "./types/quote.cjs";
|
|
8
8
|
import { AbortedError, ErrorCode, ErrorReason, HttpError, InvalidParamsError, ResponseValidationError, SdkError, ServiceInitializationError, ServiceUnavailableError, TimeoutError, isAbortedError, isHttpError, isInvalidParamsError, isResponseValidationError, isSdkError, isServiceInitializationError, isServiceUnavailableError, isTimeoutError } from "./errors.cjs";
|
|
9
9
|
import { CompletedTransfer, FailedTransfer, SourceCompletedTransfer, SourcePendingTransfer, TargetPendingTransfer, Transfer, TransferBase, TransferSourceProgress, TransferStatus, TransferStepDetails, TransferTargetProgress } from "./types/transfer.cjs";
|
|
10
10
|
import { SolanaSendOptions, SolanaTransactionParams } from "./utils/solana-transaction.cjs";
|
|
11
11
|
import { BtcDispatch, BtcSign, BtcSigner, BtcTransactionRequest, EvmDispatch, EvmSign, EvmSignBatch, EvmSignMessage, EvmSigner, EvmSignerWithMessage, EvmTransactionRequest, Hex, SolanaSign, SolanaSigner } from "./types/signer.cjs";
|
|
12
12
|
import { ArrayElement, DeepMutable, Fetch, Mutable } from "./types/utility-types.cjs";
|
|
13
|
-
import { EstimateNativeFeeOptions, EvmServiceInitializer, GasSettings, GetMinimumTransferAmountProps, GetSupportedChainsResult, LombardServiceInitializer, MarkrServiceInitializer, MutableGetSupportedChainsResult, NativeFeeEstimate, ServiceInitializer, TrackTransferProps, TransferAssetProps, TransferService } from "./types/service.cjs";
|
|
13
|
+
import { EstimateNativeFeeOptions, EvmServiceInitializer, GasSettings, GetBridgeableAssetsProps, GetMinimumTransferAmountProps, GetSupportedChainsResult, LombardServiceInitializer, MarkrServiceInitializer, MutableGetSupportedChainsResult, NativeFeeEstimate, ServiceInitializer, TrackTransferProps, TransferAssetProps, TransferService } from "./types/service.cjs";
|
|
14
14
|
import { AssetBridgeMap, CreateTransferManagerOptions, ServiceStatus, ServiceStatusBaseRecord, ServiceStatusErrorRecord, ServiceStatusInitializedRecord, ServiceStatusRecord, ServiceStatusUnsupportedEnvironmentRecord, TransferManager, TransferManagerStatus, TransferManagerStatusServicesRecord } from "./types/transfer-manager.cjs";
|
|
15
15
|
import { isEnvironment, isErc20Asset, isEvmBridgeInitializer, isLombardServiceInitializer, isMarkrServiceInitializer, isNativeAsset, isServiceInitializer, isSplAsset } from "./type-guards.cjs";
|
|
16
16
|
import { createTransferManager } from "./transfer-manager.cjs";
|
|
17
17
|
import { caip2ToEip155ChainId, caip2ToEip155HexChainId, eip155ChainIdToCaip2, isCaip2ChainId, splitCaip2ChainId } from "./utils/caip.cjs";
|
|
18
18
|
import { parseTransfer, stringifyTransfer } from "./utils/transfer-utils.cjs";
|
|
19
|
-
export { AVALANCHE_FUJI_CHAIN, AVALANCHE_MAINNET_CHAIN, AbortedError, ArrayElement, Asset, AssetBridgeMap, AvalancheChainIds, BITCOIN_MAINNET_CHAIN, BITCOIN_TESTNET_CHAIN, BTC_SERVICE_TYPES, BitcoinChainIds, BitcoinFeeRateTier, BitcoinFunctions, BitcoinInputUTXO, BitcoinInputUTXOWithOptionalScript, BitcoinOutputUTXO, BitcoinTx, Blockchain, BtcDispatch, BtcSign, BtcSigner, BtcTransactionRequest, Caip10AccountId, Caip2ChainId, Chain, ChainAssetMap, CompletedTransfer, CreateTransferManagerOptions, DeepMutable, DestinationInfo, ERC_ZERO_ADDRESS, ETHEREUM_MAINNET_CHAIN, ETHEREUM_SEPOLIA_CHAIN, EVM_SERVICE_TYPES, Environment, Erc20Asset, ErrorCode, ErrorReason, EstimateNativeFeeOptions, EthereumChainIds, EvmChainId, EvmDispatch, EvmServiceInitializer, EvmSign, EvmSignBatch, EvmSignMessage, EvmSigner, EvmSignerWithMessage, EvmTransactionRequest, FEE_RATE_TIER_TO_BITCOIN, FailedTransfer, FeeRateTier, Fetch, GasSettings, GetMinimumTransferAmountProps, GetSupportedChainsResult, Hex, HttpError, InvalidParamsError, LombardServiceInitializer, MarkrServiceInitializer, Mutable, MutableGetSupportedChainsResult, NATIVE_AVAX, NATIVE_ETH, NativeAsset, NativeFeeEstimate, Quote, QuoteFee, QuoteFeeToken, QuoteFeeType, QuoteFees, QuoterDoneReason, QuoterEventArgs, QuoterEventHandler, QuoterInterface, QuoterProps, QuotesTuple, ResponseValidationError, SOLANA_DEVNET_CHAIN, SOLANA_MAINNET_CHAIN, SOL_MINT_ADDRESS, SdkError, ServiceInitializationError, ServiceInitializer, ServiceQuoteEventArgs, ServiceQuoteEventHandler, ServiceStatus, ServiceStatusBaseRecord, ServiceStatusErrorRecord, ServiceStatusInitializedRecord, ServiceStatusRecord, ServiceStatusUnsupportedEnvironmentRecord, ServiceType, ServiceUnavailableError, SolanaChainIds, SolanaSendOptions, SolanaSign, SolanaSigner, SolanaTransactionParams, SourceCompletedTransfer, SourcePendingTransfer, SplAsset, TargetPendingTransfer, TimeoutError, TokenType, TrackTransferProps, Transfer, TransferAssetProps, TransferBase, TransferManager, TransferManagerStatus, TransferManagerStatusServicesRecord, TransferService, TransferSignatureReason, TransferSourceProgress, TransferStatus, TransferStepDetails, TransferTargetProgress, TransferableAsset, caip2ToEip155ChainId, caip2ToEip155HexChainId, createTransferManager, eip155ChainIdToCaip2, isAbortedError, isCaip2ChainId, isEnvironment, isErc20Asset, isEvmBridgeInitializer, isHttpError, isInvalidParamsError, isLombardServiceInitializer, isMarkrServiceInitializer, isNativeAsset, isResponseValidationError, isSdkError, isServiceInitializationError, isServiceInitializer, isServiceUnavailableError, isSplAsset, isTimeoutError, parseTransfer, splitCaip2ChainId, stringifyTransfer };
|
|
19
|
+
export { AVALANCHE_FUJI_CHAIN, AVALANCHE_MAINNET_CHAIN, AbortedError, ArrayElement, Asset, AssetBridgeMap, AvalancheChainIds, BITCOIN_MAINNET_CHAIN, BITCOIN_TESTNET_CHAIN, BTC_SERVICE_TYPES, BitcoinChainIds, BitcoinFeeRateTier, BitcoinFunctions, BitcoinInputUTXO, BitcoinInputUTXOWithOptionalScript, BitcoinOutputUTXO, BitcoinTx, Blockchain, BridgeableUiAsset, BtcDispatch, BtcSign, BtcSigner, BtcTransactionRequest, Caip10AccountId, Caip2ChainId, Chain, ChainAssetMap, CompletedTransfer, CreateTransferManagerOptions, DeepMutable, DestinationInfo, ERC_ZERO_ADDRESS, ETHEREUM_MAINNET_CHAIN, ETHEREUM_SEPOLIA_CHAIN, EVM_SERVICE_TYPES, Environment, Erc20Asset, ErrorCode, ErrorReason, EstimateNativeFeeOptions, EthereumChainIds, EvmChainId, EvmDispatch, EvmServiceInitializer, EvmSign, EvmSignBatch, EvmSignMessage, EvmSigner, EvmSignerWithMessage, EvmTransactionRequest, FEE_RATE_TIER_TO_BITCOIN, FailedTransfer, FeeRateTier, Fetch, GasSettings, GetBridgeableAssetsProps, GetMinimumTransferAmountProps, GetSupportedChainsResult, Hex, HttpError, InvalidParamsError, LombardServiceInitializer, MarkrServiceInitializer, Mutable, MutableGetSupportedChainsResult, NATIVE_AVAX, NATIVE_ETH, NativeAsset, NativeFeeEstimate, Quote, QuoteFee, QuoteFeeToken, QuoteFeeType, QuoteFees, QuoterDoneReason, QuoterEventArgs, QuoterEventHandler, QuoterInterface, QuoterProps, QuotesTuple, ResponseValidationError, SOLANA_DEVNET_CHAIN, SOLANA_MAINNET_CHAIN, SOL_MINT_ADDRESS, SdkError, ServiceInitializationError, ServiceInitializer, ServiceQuoteEventArgs, ServiceQuoteEventHandler, ServiceStatus, ServiceStatusBaseRecord, ServiceStatusErrorRecord, ServiceStatusInitializedRecord, ServiceStatusRecord, ServiceStatusUnsupportedEnvironmentRecord, ServiceType, ServiceUnavailableError, SolanaChainIds, SolanaSendOptions, SolanaSign, SolanaSigner, SolanaTransactionParams, SourceCompletedTransfer, SourcePendingTransfer, SplAsset, TargetPendingTransfer, TimeoutError, TokenType, TrackTransferProps, Transfer, TransferAssetProps, TransferBase, TransferManager, TransferManagerStatus, TransferManagerStatusServicesRecord, TransferService, TransferSignatureReason, TransferSourceProgress, TransferStatus, TransferStepDetails, TransferTargetProgress, TransferableAsset, caip2ToEip155ChainId, caip2ToEip155HexChainId, createTransferManager, eip155ChainIdToCaip2, isAbortedError, isCaip2ChainId, isEnvironment, isErc20Asset, isEvmBridgeInitializer, isHttpError, isInvalidParamsError, isLombardServiceInitializer, isMarkrServiceInitializer, isNativeAsset, isResponseValidationError, isSdkError, isServiceInitializationError, isServiceInitializer, isServiceUnavailableError, isSplAsset, isTimeoutError, parseTransfer, splitCaip2ChainId, stringifyTransfer };
|
package/dist/mod.d.ts
CHANGED
|
@@ -3,17 +3,17 @@ import { BitcoinFeeRateTier, BitcoinFunctions, BitcoinInputUTXO, BitcoinInputUTX
|
|
|
3
3
|
import { Chain } from "./types/chain.js";
|
|
4
4
|
import { FeeRateTier } from "./types/fee.js";
|
|
5
5
|
import { AVALANCHE_FUJI_CHAIN, AVALANCHE_MAINNET_CHAIN, AvalancheChainIds, BITCOIN_MAINNET_CHAIN, BITCOIN_TESTNET_CHAIN, BTC_SERVICE_TYPES, BitcoinChainIds, Blockchain, ERC_ZERO_ADDRESS, ETHEREUM_MAINNET_CHAIN, ETHEREUM_SEPOLIA_CHAIN, EVM_SERVICE_TYPES, Environment, EthereumChainIds, EvmChainId, FEE_RATE_TIER_TO_BITCOIN, NATIVE_AVAX, NATIVE_ETH, SOLANA_DEVNET_CHAIN, SOLANA_MAINNET_CHAIN, SOL_MINT_ADDRESS, ServiceType, SolanaChainIds, TokenType, TransferSignatureReason } from "./constants.js";
|
|
6
|
-
import { Asset, ChainAssetMap, DestinationInfo, Erc20Asset, NativeAsset, SplAsset, TransferableAsset } from "./types/asset.js";
|
|
6
|
+
import { Asset, BridgeableUiAsset, ChainAssetMap, DestinationInfo, Erc20Asset, NativeAsset, SplAsset, TransferableAsset } from "./types/asset.js";
|
|
7
7
|
import { Quote, QuoteFee, QuoteFeeToken, QuoteFeeType, QuoteFees, QuoterDoneReason, QuoterEventArgs, QuoterEventHandler, QuoterInterface, QuoterProps, QuotesTuple, ServiceQuoteEventArgs, ServiceQuoteEventHandler } from "./types/quote.js";
|
|
8
8
|
import { AbortedError, ErrorCode, ErrorReason, HttpError, InvalidParamsError, ResponseValidationError, SdkError, ServiceInitializationError, ServiceUnavailableError, TimeoutError, isAbortedError, isHttpError, isInvalidParamsError, isResponseValidationError, isSdkError, isServiceInitializationError, isServiceUnavailableError, isTimeoutError } from "./errors.js";
|
|
9
9
|
import { CompletedTransfer, FailedTransfer, SourceCompletedTransfer, SourcePendingTransfer, TargetPendingTransfer, Transfer, TransferBase, TransferSourceProgress, TransferStatus, TransferStepDetails, TransferTargetProgress } from "./types/transfer.js";
|
|
10
10
|
import { SolanaSendOptions, SolanaTransactionParams } from "./utils/solana-transaction.js";
|
|
11
11
|
import { BtcDispatch, BtcSign, BtcSigner, BtcTransactionRequest, EvmDispatch, EvmSign, EvmSignBatch, EvmSignMessage, EvmSigner, EvmSignerWithMessage, EvmTransactionRequest, Hex, SolanaSign, SolanaSigner } from "./types/signer.js";
|
|
12
12
|
import { ArrayElement, DeepMutable, Fetch, Mutable } from "./types/utility-types.js";
|
|
13
|
-
import { EstimateNativeFeeOptions, EvmServiceInitializer, GasSettings, GetMinimumTransferAmountProps, GetSupportedChainsResult, LombardServiceInitializer, MarkrServiceInitializer, MutableGetSupportedChainsResult, NativeFeeEstimate, ServiceInitializer, TrackTransferProps, TransferAssetProps, TransferService } from "./types/service.js";
|
|
13
|
+
import { EstimateNativeFeeOptions, EvmServiceInitializer, GasSettings, GetBridgeableAssetsProps, GetMinimumTransferAmountProps, GetSupportedChainsResult, LombardServiceInitializer, MarkrServiceInitializer, MutableGetSupportedChainsResult, NativeFeeEstimate, ServiceInitializer, TrackTransferProps, TransferAssetProps, TransferService } from "./types/service.js";
|
|
14
14
|
import { AssetBridgeMap, CreateTransferManagerOptions, ServiceStatus, ServiceStatusBaseRecord, ServiceStatusErrorRecord, ServiceStatusInitializedRecord, ServiceStatusRecord, ServiceStatusUnsupportedEnvironmentRecord, TransferManager, TransferManagerStatus, TransferManagerStatusServicesRecord } from "./types/transfer-manager.js";
|
|
15
15
|
import { isEnvironment, isErc20Asset, isEvmBridgeInitializer, isLombardServiceInitializer, isMarkrServiceInitializer, isNativeAsset, isServiceInitializer, isSplAsset } from "./type-guards.js";
|
|
16
16
|
import { createTransferManager } from "./transfer-manager.js";
|
|
17
17
|
import { caip2ToEip155ChainId, caip2ToEip155HexChainId, eip155ChainIdToCaip2, isCaip2ChainId, splitCaip2ChainId } from "./utils/caip.js";
|
|
18
18
|
import { parseTransfer, stringifyTransfer } from "./utils/transfer-utils.js";
|
|
19
|
-
export { AVALANCHE_FUJI_CHAIN, AVALANCHE_MAINNET_CHAIN, AbortedError, ArrayElement, Asset, AssetBridgeMap, AvalancheChainIds, BITCOIN_MAINNET_CHAIN, BITCOIN_TESTNET_CHAIN, BTC_SERVICE_TYPES, BitcoinChainIds, BitcoinFeeRateTier, BitcoinFunctions, BitcoinInputUTXO, BitcoinInputUTXOWithOptionalScript, BitcoinOutputUTXO, BitcoinTx, Blockchain, BtcDispatch, BtcSign, BtcSigner, BtcTransactionRequest, Caip10AccountId, Caip2ChainId, Chain, ChainAssetMap, CompletedTransfer, CreateTransferManagerOptions, DeepMutable, DestinationInfo, ERC_ZERO_ADDRESS, ETHEREUM_MAINNET_CHAIN, ETHEREUM_SEPOLIA_CHAIN, EVM_SERVICE_TYPES, Environment, Erc20Asset, ErrorCode, ErrorReason, EstimateNativeFeeOptions, EthereumChainIds, EvmChainId, EvmDispatch, EvmServiceInitializer, EvmSign, EvmSignBatch, EvmSignMessage, EvmSigner, EvmSignerWithMessage, EvmTransactionRequest, FEE_RATE_TIER_TO_BITCOIN, FailedTransfer, FeeRateTier, Fetch, GasSettings, GetMinimumTransferAmountProps, GetSupportedChainsResult, Hex, HttpError, InvalidParamsError, LombardServiceInitializer, MarkrServiceInitializer, Mutable, MutableGetSupportedChainsResult, NATIVE_AVAX, NATIVE_ETH, NativeAsset, NativeFeeEstimate, Quote, QuoteFee, QuoteFeeToken, QuoteFeeType, QuoteFees, QuoterDoneReason, QuoterEventArgs, QuoterEventHandler, QuoterInterface, QuoterProps, QuotesTuple, ResponseValidationError, SOLANA_DEVNET_CHAIN, SOLANA_MAINNET_CHAIN, SOL_MINT_ADDRESS, SdkError, ServiceInitializationError, ServiceInitializer, ServiceQuoteEventArgs, ServiceQuoteEventHandler, ServiceStatus, ServiceStatusBaseRecord, ServiceStatusErrorRecord, ServiceStatusInitializedRecord, ServiceStatusRecord, ServiceStatusUnsupportedEnvironmentRecord, ServiceType, ServiceUnavailableError, SolanaChainIds, SolanaSendOptions, SolanaSign, SolanaSigner, SolanaTransactionParams, SourceCompletedTransfer, SourcePendingTransfer, SplAsset, TargetPendingTransfer, TimeoutError, TokenType, TrackTransferProps, Transfer, TransferAssetProps, TransferBase, TransferManager, TransferManagerStatus, TransferManagerStatusServicesRecord, TransferService, TransferSignatureReason, TransferSourceProgress, TransferStatus, TransferStepDetails, TransferTargetProgress, TransferableAsset, caip2ToEip155ChainId, caip2ToEip155HexChainId, createTransferManager, eip155ChainIdToCaip2, isAbortedError, isCaip2ChainId, isEnvironment, isErc20Asset, isEvmBridgeInitializer, isHttpError, isInvalidParamsError, isLombardServiceInitializer, isMarkrServiceInitializer, isNativeAsset, isResponseValidationError, isSdkError, isServiceInitializationError, isServiceInitializer, isServiceUnavailableError, isSplAsset, isTimeoutError, parseTransfer, splitCaip2ChainId, stringifyTransfer };
|
|
19
|
+
export { AVALANCHE_FUJI_CHAIN, AVALANCHE_MAINNET_CHAIN, AbortedError, ArrayElement, Asset, AssetBridgeMap, AvalancheChainIds, BITCOIN_MAINNET_CHAIN, BITCOIN_TESTNET_CHAIN, BTC_SERVICE_TYPES, BitcoinChainIds, BitcoinFeeRateTier, BitcoinFunctions, BitcoinInputUTXO, BitcoinInputUTXOWithOptionalScript, BitcoinOutputUTXO, BitcoinTx, Blockchain, BridgeableUiAsset, BtcDispatch, BtcSign, BtcSigner, BtcTransactionRequest, Caip10AccountId, Caip2ChainId, Chain, ChainAssetMap, CompletedTransfer, CreateTransferManagerOptions, DeepMutable, DestinationInfo, ERC_ZERO_ADDRESS, ETHEREUM_MAINNET_CHAIN, ETHEREUM_SEPOLIA_CHAIN, EVM_SERVICE_TYPES, Environment, Erc20Asset, ErrorCode, ErrorReason, EstimateNativeFeeOptions, EthereumChainIds, EvmChainId, EvmDispatch, EvmServiceInitializer, EvmSign, EvmSignBatch, EvmSignMessage, EvmSigner, EvmSignerWithMessage, EvmTransactionRequest, FEE_RATE_TIER_TO_BITCOIN, FailedTransfer, FeeRateTier, Fetch, GasSettings, GetBridgeableAssetsProps, GetMinimumTransferAmountProps, GetSupportedChainsResult, Hex, HttpError, InvalidParamsError, LombardServiceInitializer, MarkrServiceInitializer, Mutable, MutableGetSupportedChainsResult, NATIVE_AVAX, NATIVE_ETH, NativeAsset, NativeFeeEstimate, Quote, QuoteFee, QuoteFeeToken, QuoteFeeType, QuoteFees, QuoterDoneReason, QuoterEventArgs, QuoterEventHandler, QuoterInterface, QuoterProps, QuotesTuple, ResponseValidationError, SOLANA_DEVNET_CHAIN, SOLANA_MAINNET_CHAIN, SOL_MINT_ADDRESS, SdkError, ServiceInitializationError, ServiceInitializer, ServiceQuoteEventArgs, ServiceQuoteEventHandler, ServiceStatus, ServiceStatusBaseRecord, ServiceStatusErrorRecord, ServiceStatusInitializedRecord, ServiceStatusRecord, ServiceStatusUnsupportedEnvironmentRecord, ServiceType, ServiceUnavailableError, SolanaChainIds, SolanaSendOptions, SolanaSign, SolanaSigner, SolanaTransactionParams, SourceCompletedTransfer, SourcePendingTransfer, SplAsset, TargetPendingTransfer, TimeoutError, TokenType, TrackTransferProps, Transfer, TransferAssetProps, TransferBase, TransferManager, TransferManagerStatus, TransferManagerStatusServicesRecord, TransferService, TransferSignatureReason, TransferSourceProgress, TransferStatus, TransferStepDetails, TransferTargetProgress, TransferableAsset, caip2ToEip155ChainId, caip2ToEip155HexChainId, createTransferManager, eip155ChainIdToCaip2, isAbortedError, isCaip2ChainId, isEnvironment, isErc20Asset, isEvmBridgeInitializer, isHttpError, isInvalidParamsError, isLombardServiceInitializer, isMarkrServiceInitializer, isNativeAsset, isResponseValidationError, isSdkError, isServiceInitializationError, isServiceInitializer, isServiceUnavailableError, isSplAsset, isTimeoutError, parseTransfer, splitCaip2ChainId, stringifyTransfer };
|
package/dist/mod.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
import{AVALANCHE_FUJI_CHAIN as e,AVALANCHE_MAINNET_CHAIN as t,AvalancheChainIds as n,BITCOIN_MAINNET_CHAIN as r,BITCOIN_TESTNET_CHAIN as i,BTC_SERVICE_TYPES as a,BitcoinChainIds as o,Blockchain as s,ERC_ZERO_ADDRESS as c,ETHEREUM_MAINNET_CHAIN as l,ETHEREUM_SEPOLIA_CHAIN as u,EVM_SERVICE_TYPES as d,Environment as f,EthereumChainIds as p,EvmChainId as m,FEE_RATE_TIER_TO_BITCOIN as h,NATIVE_AVAX as g,NATIVE_ETH as _,SOLANA_DEVNET_CHAIN as v,SOLANA_MAINNET_CHAIN as y,SOL_MINT_ADDRESS as b,ServiceType as x,SolanaChainIds as S,TokenType as C,TransferSignatureReason as w}from"./constants.js";import{AbortedError as T,ErrorCode as E,ErrorReason as D,HttpError as O,InvalidParamsError as k,ResponseValidationError as A,SdkError as j,ServiceInitializationError as M,ServiceUnavailableError as N,TimeoutError as P,isAbortedError as F,isHttpError as I,isInvalidParamsError as L,isResponseValidationError as R,isSdkError as z,isServiceInitializationError as B,isServiceUnavailableError as V,isTimeoutError as H}from"./errors.js";import{isEnvironment as U,isErc20Asset as W,isEvmBridgeInitializer as G,isLombardServiceInitializer as K,isMarkrServiceInitializer as q,isNativeAsset as J,isServiceInitializer as Y,isSplAsset as X}from"./type-guards.js";import{
|
|
1
|
+
import{AVALANCHE_FUJI_CHAIN as e,AVALANCHE_MAINNET_CHAIN as t,AvalancheChainIds as n,BITCOIN_MAINNET_CHAIN as r,BITCOIN_TESTNET_CHAIN as i,BTC_SERVICE_TYPES as a,BitcoinChainIds as o,Blockchain as s,ERC_ZERO_ADDRESS as c,ETHEREUM_MAINNET_CHAIN as l,ETHEREUM_SEPOLIA_CHAIN as u,EVM_SERVICE_TYPES as d,Environment as f,EthereumChainIds as p,EvmChainId as m,FEE_RATE_TIER_TO_BITCOIN as h,NATIVE_AVAX as g,NATIVE_ETH as _,SOLANA_DEVNET_CHAIN as v,SOLANA_MAINNET_CHAIN as y,SOL_MINT_ADDRESS as b,ServiceType as x,SolanaChainIds as S,TokenType as C,TransferSignatureReason as w}from"./constants.js";import{AbortedError as T,ErrorCode as E,ErrorReason as D,HttpError as O,InvalidParamsError as k,ResponseValidationError as A,SdkError as j,ServiceInitializationError as M,ServiceUnavailableError as N,TimeoutError as P,isAbortedError as F,isHttpError as I,isInvalidParamsError as L,isResponseValidationError as R,isSdkError as z,isServiceInitializationError as B,isServiceUnavailableError as V,isTimeoutError as H}from"./errors.js";import{isEnvironment as U,isErc20Asset as W,isEvmBridgeInitializer as G,isLombardServiceInitializer as K,isMarkrServiceInitializer as q,isNativeAsset as J,isServiceInitializer as Y,isSplAsset as X}from"./type-guards.js";import{createTransferManager as Z}from"./transfer-manager.js";import{caip2ToEip155ChainId as Q,caip2ToEip155HexChainId as $,eip155ChainIdToCaip2 as ee,isCaip2ChainId as te,splitCaip2ChainId as ne}from"./utils/caip.js";import{parseTransfer as re,stringifyTransfer as ie}from"./utils/transfer-utils.js";export{e as AVALANCHE_FUJI_CHAIN,t as AVALANCHE_MAINNET_CHAIN,T as AbortedError,n as AvalancheChainIds,r as BITCOIN_MAINNET_CHAIN,i as BITCOIN_TESTNET_CHAIN,a as BTC_SERVICE_TYPES,o as BitcoinChainIds,s as Blockchain,c as ERC_ZERO_ADDRESS,l as ETHEREUM_MAINNET_CHAIN,u as ETHEREUM_SEPOLIA_CHAIN,d as EVM_SERVICE_TYPES,f as Environment,E as ErrorCode,D as ErrorReason,p as EthereumChainIds,m as EvmChainId,h as FEE_RATE_TIER_TO_BITCOIN,O as HttpError,k as InvalidParamsError,g as NATIVE_AVAX,_ as NATIVE_ETH,A as ResponseValidationError,v as SOLANA_DEVNET_CHAIN,y as SOLANA_MAINNET_CHAIN,b as SOL_MINT_ADDRESS,j as SdkError,M as ServiceInitializationError,x as ServiceType,N as ServiceUnavailableError,S as SolanaChainIds,P as TimeoutError,C as TokenType,w as TransferSignatureReason,Q as caip2ToEip155ChainId,$ as caip2ToEip155HexChainId,Z as createTransferManager,ee as eip155ChainIdToCaip2,F as isAbortedError,te as isCaip2ChainId,U as isEnvironment,W as isErc20Asset,G as isEvmBridgeInitializer,I as isHttpError,L as isInvalidParamsError,K as isLombardServiceInitializer,q as isMarkrServiceInitializer,J as isNativeAsset,R as isResponseValidationError,z as isSdkError,B as isServiceInitializationError,Y as isServiceInitializer,V as isServiceUnavailableError,X as isSplAsset,H as isTimeoutError,re as parseTransfer,ne as splitCaip2ChainId,ie as stringifyTransfer};
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
const e=require(`./constants.cjs`),t=require(`./errors.cjs`),n=require(`./type-guards.cjs`),r=require(`./quoter/quoter.cjs`),i=require(`./utils/
|
|
1
|
+
const e=require(`./constants.cjs`),t=require(`./errors.cjs`),n=require(`./type-guards.cjs`),r=require(`./quoter/quoter.cjs`),i=require(`./utils/asset-id.cjs`),a=e=>{if(!n.isEnvironment(e))throw new t.ServiceInitializationError(t.ErrorReason.ENVIRONMENT_NOT_SUPPORTED)},o=e=>{if(e.length===0)throw new t.ServiceInitializationError(`No service initializers provided.`);if(e.some(e=>!n.isServiceInitializer(e)))throw new t.ServiceInitializationError(`One or more service initializers are invalid.`);let r=new Set;for(let n of e){if(r.has(n.type))throw new t.ServiceInitializationError(t.ErrorReason.DUPLICATE_SERVICE_INITIALIZATION,`Service type "${n.type}" has been initialized more than once.`);r.add(n.type)}},s=async({environment:n,serviceInitializers:r,fetch:i})=>{let a=new Map,o={},s=(e,n)=>{if(n instanceof t.ServiceInitializationError)return n;let r=n instanceof Error?n.message:String(n);return new t.ServiceInitializationError(t.ErrorReason.UNKNOWN,`Failed to initialize service type "${e}". ${r}`,n)},c=async(e,t)=>{try{let n=await t();a.set(e,n),o[e]={status:`initialized`}}catch(t){o[e]={status:`error`,error:s(e,t)}}};for(let s of r){if(a.has(s.type))throw new t.ServiceInitializationError(t.ErrorReason.DUPLICATE_SERVICE_INITIALIZATION,`Service type "${s.type}" has been initialized more than once.`);switch(s.type){case e.ServiceType.AVALANCHE_EVM:await c(e.ServiceType.AVALANCHE_EVM,async()=>{let{createAvalancheEvmService:e}=await Promise.resolve().then(()=>require(`./transfer-service/avalanche-evm/avalanche-evm-service.cjs`));return await e({environment:n,evmSigner:s.evmSigner,fetch:i})});break;case e.ServiceType.LOMBARD_BTCB_TO_BTC:await c(e.ServiceType.LOMBARD_BTCB_TO_BTC,async()=>{let{createBtcbToBtcService:e}=await Promise.resolve().then(()=>require(`./transfer-service/lombard/btcb-to-btc-service.cjs`));return await e({bitcoinFunctions:s.btcFunctions,environment:n,evmSigner:s.evmSigner,fetch:i})});break;case e.ServiceType.LOMBARD_BTC_TO_BTCB:await c(e.ServiceType.LOMBARD_BTC_TO_BTCB,async()=>{let{createBtcToBtcbService:e}=await Promise.resolve().then(()=>require(`./transfer-service/lombard/btc-to-btcb-service.cjs`));return await e({bitcoinFunctions:s.btcFunctions,btcSigner:s.btcSigner,environment:n,evmSigner:s.evmSigner,fetch:i})});break;case e.ServiceType.MARKR:if(n!==e.Environment.PROD){o[e.ServiceType.MARKR]={status:`unsupported-environment`,message:`Service type "${e.ServiceType.MARKR}" is only supported in production environment.`};break}await c(e.ServiceType.MARKR,async()=>{let{createMarkrService:e}=await Promise.resolve().then(()=>require(`./transfer-service/markr/markr-service.cjs`));return await e({apiBaseUrl:s.markrApiUrl,apiToken:s.markrApiToken,appId:s.markrAppId,disableCrossChainSwaps:s.disableCrossChainSwaps,fetch:i,environment:n,evmSigner:s.evmSigner,getTargetChainAssets:s.getTargetChainAssets,solanaSigner:s.solanaSigner})});break;case e.ServiceType.WRAP_UNWRAP:await c(e.ServiceType.WRAP_UNWRAP,async()=>{let{createWrapUnwrapService:e}=await Promise.resolve().then(()=>require(`./transfer-service/wrap-unwrap/wrap-unwrap-service.cjs`));return await e({environment:n,evmSigner:s.evmSigner,fetch:i})});break;default:break}}return{services:a,status:{environment:n,services:o}}},c=async({environment:e,fetch:n,serviceInitializers:c})=>{a(e),o(c);let{services:l,status:u}=await s({environment:e,serviceInitializers:c,fetch:n});return{id:crypto.randomUUID(),estimateNativeFee:async(e,n)=>{let r=Math.floor(Date.now()/1e3);if(e.expiresAt<=r){let n=r-e.expiresAt;throw new t.InvalidParamsError(t.ErrorReason.QUOTE_EXPIRED,`Quote expired ${n} seconds ago.`)}let i=l.get(e.serviceType);if(!i)throw new t.ServiceUnavailableError(t.ErrorReason.SERVICE_TYPE_NOT_CONFIGURED);return await i.estimateNativeFee(e,n)},getBridgeableAssets:async({sourceAsset:e,sourceChainId:t,targetChainId:n})=>{let r=await Promise.allSettled(Array.from(l.values()).map(r=>r.getBridgeableAssets({sourceAsset:e,sourceChainId:t,targetChainId:n}))),a=new Map;for(let e of r)if(e.status===`fulfilled`)for(let t of e.value){let{bridgeProviders:e,...r}=t,o=i.getAssetId(n,r),s=a.get(o);if(s){let t=[...new Set([...s.bridgeProviders,...e])];a.set(o,{...s,bridgeProviders:t})}else a.set(o,{...r,bridgeProviders:[...e]})}return Array.from(a.values())},getMinimumTransferAmount:async e=>{let t={};for(let n of l.values())if(n.analyzeSupport(e)){let r=await n.getMinimumTransferAmount(e);t[n.type]=r}return Object.keys(t).length>0?t:null},getSupportedChains:async()=>{let e=new Map,t=await Promise.all(Array.from(l.values()).map(e=>e.getSupportedChains()));for(let n of t)for(let[t,r]of n.entries()){let n=e.get(t);n||(n=new Set,e.set(t,n));for(let e of r)n.add(e)}return e},getQuoter:(e,t)=>new r.Quoter(e,Array.from(l.values()),t),status:()=>u,trackTransfer:e=>{let{transfer:n}=e,r=l.get(n.type);if(!r)throw new t.ServiceUnavailableError(t.ErrorReason.SERVICE_TYPE_NOT_CONFIGURED);return r.trackTransfer(e)},transferAsset:async e=>{let{quote:n}=e,r=l.get(n.serviceType);if(!r)throw new t.ServiceUnavailableError(t.ErrorReason.SERVICE_TYPE_NOT_CONFIGURED);return await r.transferAsset(e)}}};exports.createTransferManager=c;
|
|
2
2
|
//# sourceMappingURL=transfer-manager.cjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"transfer-manager.cjs","names":["isEnvironment","ServiceInitializationError","ErrorReason","isServiceInitializer","ServiceType","Environment","mergeChainAssetMaps","InvalidParamsError","ServiceUnavailableError","TokenType","isCaip2ChainId","Quoter"],"sources":["../src/transfer-manager.ts"],"sourcesContent":["import { Environment, ServiceType, TokenType } from './constants';\nimport { ErrorReason, InvalidParamsError, ServiceInitializationError, ServiceUnavailableError } from './errors';\nimport type { Asset, ChainAssetMap } from './types/asset';\nimport { isEnvironment, isServiceInitializer } from './type-guards';\nimport type { MutableGetSupportedChainsResult, ServiceInitializer, TransferService } from './types/service';\nimport type {\n CreateTransferManagerOptions,\n TransferManager,\n TransferManagerStatus,\n TransferManagerStatusServicesRecord,\n} from './types/transfer-manager';\nimport { Quoter } from './quoter/quoter';\nimport { mergeChainAssetMaps } from './_utils/merge-assets';\nimport { isCaip2ChainId } from './utils/caip';\nimport type { Caip2ChainId } from './types/caip';\nimport type { Fetch } from './types/utility-types';\n\n/**\n * Validates the provided \"environment\" option.\n *\n * @throws {ServiceInitializationError} If the environment is invalid.\n */\nconst validateEnvironment = (environment: Environment): void => {\n if (!isEnvironment(environment)) {\n throw new ServiceInitializationError(ErrorReason.ENVIRONMENT_NOT_SUPPORTED);\n }\n};\n\n/**\n * Validates the provided \"serviceInitializers\" option.\n *\n * Checks for the following:\n * - At least one service initializer is provided.\n * - All service initializers are valid.\n * - No duplicate service types are initialized.\n *\n * @throws {ServiceInitializationError} If the service initializers are invalid.\n */\nconst validateServiceInitializers = (serviceInitializers: readonly ServiceInitializer[]): void => {\n if (serviceInitializers.length === 0) {\n throw new ServiceInitializationError('No service initializers provided.');\n }\n\n if (serviceInitializers.some((serviceInitializer) => !isServiceInitializer(serviceInitializer))) {\n throw new ServiceInitializationError('One or more service initializers are invalid.');\n }\n\n const serviceInitializerTypes = new Set<ServiceType>();\n for (const initializer of serviceInitializers) {\n if (serviceInitializerTypes.has(initializer.type)) {\n throw new ServiceInitializationError(\n ErrorReason.DUPLICATE_SERVICE_INITIALIZATION,\n `Service type \"${initializer.type}\" has been initialized more than once.`,\n );\n }\n serviceInitializerTypes.add(initializer.type);\n }\n};\n\nconst initializeServices = async ({\n environment,\n serviceInitializers,\n fetch: customFetch,\n}: {\n environment: Environment;\n serviceInitializers: readonly ServiceInitializer[];\n fetch?: Fetch;\n}): Promise<{\n services: Map<ServiceType, TransferService>;\n status: TransferManagerStatus;\n}> => {\n const initializedServicesMap: Map<ServiceType, TransferService> = new Map();\n const serviceStatuses: TransferManagerStatusServicesRecord = {};\n\n const wrapInitializationError = (serviceType: ServiceType, error: unknown): ServiceInitializationError => {\n if (error instanceof ServiceInitializationError) {\n return error;\n }\n\n const details = error instanceof Error ? error.message : String(error);\n\n return new ServiceInitializationError(\n ErrorReason.UNKNOWN,\n `Failed to initialize service type \"${serviceType}\". ${details}`,\n error,\n );\n };\n\n const initializeService = async (\n serviceType: ServiceType,\n initializer: () => Promise<TransferService>,\n ): Promise<void> => {\n try {\n const service = await initializer();\n initializedServicesMap.set(serviceType, service);\n serviceStatuses[serviceType] = { status: 'initialized' };\n } catch (error) {\n const wrappedError = wrapInitializationError(serviceType, error);\n\n serviceStatuses[serviceType] = {\n status: 'error',\n error: wrappedError,\n };\n }\n };\n\n for (const initializer of serviceInitializers) {\n // Error on duplicate initialization attempts.\n if (initializedServicesMap.has(initializer.type)) {\n throw new ServiceInitializationError(\n ErrorReason.DUPLICATE_SERVICE_INITIALIZATION,\n `Service type \"${initializer.type}\" has been initialized more than once.`,\n );\n }\n\n switch (initializer.type) {\n case ServiceType.AVALANCHE_EVM: {\n await initializeService(ServiceType.AVALANCHE_EVM, async () => {\n const { createAvalancheEvmService } = await import('./transfer-service/avalanche-evm/avalanche-evm-service');\n\n return await createAvalancheEvmService({\n environment,\n evmSigner: initializer.evmSigner,\n fetch: customFetch,\n });\n });\n\n break;\n }\n\n case ServiceType.LOMBARD_BTCB_TO_BTC: {\n await initializeService(ServiceType.LOMBARD_BTCB_TO_BTC, async () => {\n const { createBtcbToBtcService } = await import('./transfer-service/lombard/btcb-to-btc-service');\n\n return await createBtcbToBtcService({\n bitcoinFunctions: initializer.btcFunctions,\n environment,\n evmSigner: initializer.evmSigner,\n fetch: customFetch,\n });\n });\n\n break;\n }\n\n case ServiceType.LOMBARD_BTC_TO_BTCB: {\n await initializeService(ServiceType.LOMBARD_BTC_TO_BTCB, async () => {\n const { createBtcToBtcbService } = await import('./transfer-service/lombard/btc-to-btcb-service');\n\n return await createBtcToBtcbService({\n bitcoinFunctions: initializer.btcFunctions,\n btcSigner: initializer.btcSigner,\n environment,\n evmSigner: initializer.evmSigner,\n fetch: customFetch,\n });\n });\n\n break;\n }\n\n case ServiceType.MARKR: {\n if (environment !== Environment.PROD) {\n serviceStatuses[ServiceType.MARKR] = {\n status: 'unsupported-environment',\n message: `Service type \"${ServiceType.MARKR}\" is only supported in production environment.`,\n };\n break;\n }\n\n await initializeService(ServiceType.MARKR, async () => {\n const { createMarkrService } = await import('./transfer-service/markr/markr-service');\n\n return await createMarkrService({\n apiBaseUrl: initializer.markrApiUrl,\n apiToken: initializer.markrApiToken,\n appId: initializer.markrAppId,\n disableCrossChainSwaps: initializer.disableCrossChainSwaps,\n fetch: customFetch,\n environment,\n evmSigner: initializer.evmSigner,\n solanaSigner: initializer.solanaSigner,\n });\n });\n\n break;\n }\n\n case ServiceType.WRAP_UNWRAP: {\n await initializeService(ServiceType.WRAP_UNWRAP, async () => {\n const { createWrapUnwrapService } = await import('./transfer-service/wrap-unwrap/wrap-unwrap-service');\n\n return await createWrapUnwrapService({\n environment,\n evmSigner: initializer.evmSigner,\n fetch: customFetch,\n });\n });\n\n break;\n }\n\n default: {\n break;\n }\n }\n }\n\n return {\n services: initializedServicesMap,\n status: {\n environment,\n services: serviceStatuses,\n },\n };\n};\n\nconst _getAssets = async (services: Map<ServiceType, TransferService>): Promise<ChainAssetMap> => {\n const assetMaps: ChainAssetMap[] = [];\n\n for (const service of services.values()) {\n const serviceAssets = await service.getAssets();\n assetMaps.push(serviceAssets);\n }\n\n return mergeChainAssetMaps(assetMaps);\n};\n\n/**\n * Creates a TransferManager instance.\n *\n * @returns {Promise<TransferManager>} The TransferManager instance.\n * @throws {ServiceInitializationError} If the provided options are invalid.\n */\nexport const createTransferManager = async ({\n environment,\n fetch: customFetch,\n serviceInitializers,\n}: CreateTransferManagerOptions): Promise<TransferManager> => {\n // Validate environment.\n validateEnvironment(environment);\n validateServiceInitializers(serviceInitializers);\n\n const { services, status } = await initializeServices({ environment, serviceInitializers, fetch: customFetch });\n\n return {\n id: crypto.randomUUID(),\n estimateNativeFee: async (quote, options) => {\n const now = Math.floor(Date.now() / 1_000);\n\n if (quote.expiresAt <= now) {\n const expiredSecondsAgo = now - quote.expiresAt;\n\n throw new InvalidParamsError(ErrorReason.QUOTE_EXPIRED, `Quote expired ${expiredSecondsAgo} seconds ago.`);\n }\n\n const service = services.get(quote.serviceType);\n\n if (!service) {\n throw new ServiceUnavailableError(ErrorReason.SERVICE_TYPE_NOT_CONFIGURED);\n }\n\n return await service.estimateNativeFee(quote, options);\n },\n getAssetBridgeMap: async ({ sourceAsset, sourceChainId }) => {\n const assets = await _getAssets(services);\n\n const chainAssets = assets[sourceChainId];\n\n if (!chainAssets) {\n return null;\n }\n\n const chainAsset = chainAssets.find((asset) => {\n if (sourceAsset.type === TokenType.NATIVE) {\n return asset.type === TokenType.NATIVE;\n } else {\n return asset.type === sourceAsset.type && asset.address === sourceAsset.address;\n }\n });\n\n if (!chainAsset || !chainAsset.destinations) {\n return null;\n }\n\n const destinations = chainAsset.destinations;\n\n // map destinations to the required format, lookup bridged asset from assets map\n const result: {\n [chainId: string]: {\n bridgedAsset: Asset;\n bridgeProviders: readonly ServiceType[];\n };\n } = {};\n\n for (const [destChainId, destInfo] of Object.entries(destinations)) {\n if (!isCaip2ChainId(destChainId)) {\n continue;\n }\n\n const destChainAssets = assets[destChainId];\n\n if (!destChainAssets) {\n continue;\n }\n\n // bridgedAsset is the asset from the assets map that matches the destInfo address\n const bridgedAsset = destChainAssets.find((asset) => {\n if (destInfo.address === TokenType.NATIVE) {\n return asset.type === TokenType.NATIVE;\n }\n\n return asset.type !== TokenType.NATIVE && asset.address === destInfo.address;\n });\n\n if (!bridgedAsset) {\n continue;\n }\n\n // Convert the TransferableAsset to Asset by omitting the 'destinations' field\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n const { destinations: _omit, swapProviders: _omitSwapProviders, ...convertedBridgedAsset } = bridgedAsset;\n\n result[destChainId] = {\n bridgedAsset: convertedBridgedAsset,\n bridgeProviders: destInfo.bridgeProviders,\n };\n }\n\n return Object.keys(result).length > 0 ? result : null;\n },\n getMinimumTransferAmount: async (props) => {\n const serviceMinimums: { [key in ServiceType]?: bigint } = {};\n\n for (const service of services.values()) {\n if (service.analyzeSupport(props)) {\n const serviceMinAmount = await service.getMinimumTransferAmount(props);\n serviceMinimums[service.type] = serviceMinAmount;\n }\n }\n\n return Object.keys(serviceMinimums).length > 0 ? serviceMinimums : null;\n },\n getSupportedChains: async () => {\n const supportedChainsMap: MutableGetSupportedChainsResult = new Map();\n\n // Fetch supported chains from all configured services in parallel.\n const serviceResults = await Promise.all(\n Array.from(services.values()).map((service) => service.getSupportedChains()),\n );\n\n // Merge results: union destination sets for identical source chain IDs.\n for (const result of serviceResults) {\n for (const [sourceChainId, targetChainIds] of result.entries()) {\n let mergedTargets = supportedChainsMap.get(sourceChainId);\n if (!mergedTargets) {\n mergedTargets = new Set<Caip2ChainId>();\n supportedChainsMap.set(sourceChainId, mergedTargets);\n }\n\n for (const targetChainId of targetChainIds) {\n mergedTargets.add(targetChainId);\n }\n }\n }\n\n return supportedChainsMap;\n },\n getQuoter: (props, options) => {\n return new Quoter(props, Array.from(services.values()), options);\n },\n status: () => status,\n trackTransfer: (props) => {\n const { transfer } = props;\n const service = services.get(transfer.type);\n\n if (!service) {\n throw new ServiceUnavailableError(ErrorReason.SERVICE_TYPE_NOT_CONFIGURED);\n }\n\n return service.trackTransfer(props);\n },\n transferAsset: async (props) => {\n const { quote } = props;\n const service = services.get(quote.serviceType);\n\n if (!service) {\n throw new ServiceUnavailableError(ErrorReason.SERVICE_TYPE_NOT_CONFIGURED);\n }\n\n return await service.transferAsset(props);\n },\n } satisfies TransferManager;\n};\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"transfer-manager.cjs","names":["isEnvironment","ServiceInitializationError","ErrorReason","isServiceInitializer","ServiceType","Environment","InvalidParamsError","ServiceUnavailableError","getAssetId","Quoter"],"sources":["../src/transfer-manager.ts"],"sourcesContent":["import { Environment, ServiceType } from './constants';\nimport { ErrorReason, InvalidParamsError, ServiceInitializationError, ServiceUnavailableError } from './errors';\nimport type { BridgeableUiAsset } from './types/asset';\nimport { isEnvironment, isServiceInitializer } from './type-guards';\nimport type { MutableGetSupportedChainsResult, ServiceInitializer, TransferService } from './types/service';\nimport type {\n CreateTransferManagerOptions,\n TransferManager,\n TransferManagerStatus,\n TransferManagerStatusServicesRecord,\n} from './types/transfer-manager';\nimport { Quoter } from './quoter/quoter';\nimport { getAssetId } from './utils/asset-id';\nimport type { Caip2ChainId } from './types/caip';\nimport type { Fetch } from './types/utility-types';\n\n/**\n * Validates the provided \"environment\" option.\n *\n * @throws {ServiceInitializationError} If the environment is invalid.\n */\nconst validateEnvironment = (environment: Environment): void => {\n if (!isEnvironment(environment)) {\n throw new ServiceInitializationError(ErrorReason.ENVIRONMENT_NOT_SUPPORTED);\n }\n};\n\n/**\n * Validates the provided \"serviceInitializers\" option.\n *\n * Checks for the following:\n * - At least one service initializer is provided.\n * - All service initializers are valid.\n * - No duplicate service types are initialized.\n *\n * @throws {ServiceInitializationError} If the service initializers are invalid.\n */\nconst validateServiceInitializers = (serviceInitializers: readonly ServiceInitializer[]): void => {\n if (serviceInitializers.length === 0) {\n throw new ServiceInitializationError('No service initializers provided.');\n }\n\n if (serviceInitializers.some((serviceInitializer) => !isServiceInitializer(serviceInitializer))) {\n throw new ServiceInitializationError('One or more service initializers are invalid.');\n }\n\n const serviceInitializerTypes = new Set<ServiceType>();\n for (const initializer of serviceInitializers) {\n if (serviceInitializerTypes.has(initializer.type)) {\n throw new ServiceInitializationError(\n ErrorReason.DUPLICATE_SERVICE_INITIALIZATION,\n `Service type \"${initializer.type}\" has been initialized more than once.`,\n );\n }\n serviceInitializerTypes.add(initializer.type);\n }\n};\n\nconst initializeServices = async ({\n environment,\n serviceInitializers,\n fetch: customFetch,\n}: {\n environment: Environment;\n serviceInitializers: readonly ServiceInitializer[];\n fetch?: Fetch;\n}): Promise<{\n services: Map<ServiceType, TransferService>;\n status: TransferManagerStatus;\n}> => {\n const initializedServicesMap: Map<ServiceType, TransferService> = new Map();\n const serviceStatuses: TransferManagerStatusServicesRecord = {};\n\n const wrapInitializationError = (serviceType: ServiceType, error: unknown): ServiceInitializationError => {\n if (error instanceof ServiceInitializationError) {\n return error;\n }\n\n const details = error instanceof Error ? error.message : String(error);\n\n return new ServiceInitializationError(\n ErrorReason.UNKNOWN,\n `Failed to initialize service type \"${serviceType}\". ${details}`,\n error,\n );\n };\n\n const initializeService = async (\n serviceType: ServiceType,\n initializer: () => Promise<TransferService>,\n ): Promise<void> => {\n try {\n const service = await initializer();\n initializedServicesMap.set(serviceType, service);\n serviceStatuses[serviceType] = { status: 'initialized' };\n } catch (error) {\n const wrappedError = wrapInitializationError(serviceType, error);\n\n serviceStatuses[serviceType] = {\n status: 'error',\n error: wrappedError,\n };\n }\n };\n\n for (const initializer of serviceInitializers) {\n // Error on duplicate initialization attempts.\n if (initializedServicesMap.has(initializer.type)) {\n throw new ServiceInitializationError(\n ErrorReason.DUPLICATE_SERVICE_INITIALIZATION,\n `Service type \"${initializer.type}\" has been initialized more than once.`,\n );\n }\n\n switch (initializer.type) {\n case ServiceType.AVALANCHE_EVM: {\n await initializeService(ServiceType.AVALANCHE_EVM, async () => {\n const { createAvalancheEvmService } = await import('./transfer-service/avalanche-evm/avalanche-evm-service');\n\n return await createAvalancheEvmService({\n environment,\n evmSigner: initializer.evmSigner,\n fetch: customFetch,\n });\n });\n\n break;\n }\n\n case ServiceType.LOMBARD_BTCB_TO_BTC: {\n await initializeService(ServiceType.LOMBARD_BTCB_TO_BTC, async () => {\n const { createBtcbToBtcService } = await import('./transfer-service/lombard/btcb-to-btc-service');\n\n return await createBtcbToBtcService({\n bitcoinFunctions: initializer.btcFunctions,\n environment,\n evmSigner: initializer.evmSigner,\n fetch: customFetch,\n });\n });\n\n break;\n }\n\n case ServiceType.LOMBARD_BTC_TO_BTCB: {\n await initializeService(ServiceType.LOMBARD_BTC_TO_BTCB, async () => {\n const { createBtcToBtcbService } = await import('./transfer-service/lombard/btc-to-btcb-service');\n\n return await createBtcToBtcbService({\n bitcoinFunctions: initializer.btcFunctions,\n btcSigner: initializer.btcSigner,\n environment,\n evmSigner: initializer.evmSigner,\n fetch: customFetch,\n });\n });\n\n break;\n }\n\n case ServiceType.MARKR: {\n if (environment !== Environment.PROD) {\n serviceStatuses[ServiceType.MARKR] = {\n status: 'unsupported-environment',\n message: `Service type \"${ServiceType.MARKR}\" is only supported in production environment.`,\n };\n break;\n }\n\n await initializeService(ServiceType.MARKR, async () => {\n const { createMarkrService } = await import('./transfer-service/markr/markr-service');\n\n return await createMarkrService({\n apiBaseUrl: initializer.markrApiUrl,\n apiToken: initializer.markrApiToken,\n appId: initializer.markrAppId,\n disableCrossChainSwaps: initializer.disableCrossChainSwaps,\n fetch: customFetch,\n environment,\n evmSigner: initializer.evmSigner,\n getTargetChainAssets: initializer.getTargetChainAssets,\n solanaSigner: initializer.solanaSigner,\n });\n });\n\n break;\n }\n\n case ServiceType.WRAP_UNWRAP: {\n await initializeService(ServiceType.WRAP_UNWRAP, async () => {\n const { createWrapUnwrapService } = await import('./transfer-service/wrap-unwrap/wrap-unwrap-service');\n\n return await createWrapUnwrapService({\n environment,\n evmSigner: initializer.evmSigner,\n fetch: customFetch,\n });\n });\n\n break;\n }\n\n default: {\n break;\n }\n }\n }\n\n return {\n services: initializedServicesMap,\n status: {\n environment,\n services: serviceStatuses,\n },\n };\n};\n\n/**\n * Creates a TransferManager instance.\n *\n * @returns {Promise<TransferManager>} The TransferManager instance.\n * @throws {ServiceInitializationError} If the provided options are invalid.\n */\nexport const createTransferManager = async ({\n environment,\n fetch: customFetch,\n serviceInitializers,\n}: CreateTransferManagerOptions): Promise<TransferManager> => {\n // Validate environment.\n validateEnvironment(environment);\n validateServiceInitializers(serviceInitializers);\n\n const { services, status } = await initializeServices({ environment, serviceInitializers, fetch: customFetch });\n\n return {\n id: crypto.randomUUID(),\n estimateNativeFee: async (quote, options) => {\n const now = Math.floor(Date.now() / 1_000);\n\n if (quote.expiresAt <= now) {\n const expiredSecondsAgo = now - quote.expiresAt;\n\n throw new InvalidParamsError(ErrorReason.QUOTE_EXPIRED, `Quote expired ${expiredSecondsAgo} seconds ago.`);\n }\n\n const service = services.get(quote.serviceType);\n\n if (!service) {\n throw new ServiceUnavailableError(ErrorReason.SERVICE_TYPE_NOT_CONFIGURED);\n }\n\n return await service.estimateNativeFee(quote, options);\n },\n getBridgeableAssets: async ({ sourceAsset, sourceChainId, targetChainId }) => {\n const settledResults = await Promise.allSettled(\n Array.from(services.values()).map((service) =>\n service.getBridgeableAssets({ sourceAsset, sourceChainId, targetChainId }),\n ),\n );\n\n const merged = new Map<string, BridgeableUiAsset>();\n\n for (const settled of settledResults) {\n if (settled.status !== 'fulfilled') continue;\n for (const result of settled.value) {\n const { bridgeProviders, ...asset } = result;\n const key = getAssetId(targetChainId, asset);\n\n const existing = merged.get(key);\n if (existing) {\n const combined = [...new Set([...existing.bridgeProviders, ...bridgeProviders])];\n merged.set(key, { ...existing, bridgeProviders: combined });\n } else {\n merged.set(key, { ...asset, bridgeProviders: [...bridgeProviders] });\n }\n }\n }\n\n return Array.from(merged.values());\n },\n getMinimumTransferAmount: async (props) => {\n const serviceMinimums: { [key in ServiceType]?: bigint } = {};\n\n for (const service of services.values()) {\n if (service.analyzeSupport(props)) {\n const serviceMinAmount = await service.getMinimumTransferAmount(props);\n serviceMinimums[service.type] = serviceMinAmount;\n }\n }\n\n return Object.keys(serviceMinimums).length > 0 ? serviceMinimums : null;\n },\n getSupportedChains: async () => {\n const supportedChainsMap: MutableGetSupportedChainsResult = new Map();\n\n // Fetch supported chains from all configured services in parallel.\n const serviceResults = await Promise.all(\n Array.from(services.values()).map((service) => service.getSupportedChains()),\n );\n\n // Merge results: union destination sets for identical source chain IDs.\n for (const result of serviceResults) {\n for (const [sourceChainId, targetChainIds] of result.entries()) {\n let mergedTargets = supportedChainsMap.get(sourceChainId);\n if (!mergedTargets) {\n mergedTargets = new Set<Caip2ChainId>();\n supportedChainsMap.set(sourceChainId, mergedTargets);\n }\n\n for (const targetChainId of targetChainIds) {\n mergedTargets.add(targetChainId);\n }\n }\n }\n\n return supportedChainsMap;\n },\n getQuoter: (props, options) => {\n return new Quoter(props, Array.from(services.values()), options);\n },\n status: () => status,\n trackTransfer: (props) => {\n const { transfer } = props;\n const service = services.get(transfer.type);\n\n if (!service) {\n throw new ServiceUnavailableError(ErrorReason.SERVICE_TYPE_NOT_CONFIGURED);\n }\n\n return service.trackTransfer(props);\n },\n transferAsset: async (props) => {\n const { quote } = props;\n const service = services.get(quote.serviceType);\n\n if (!service) {\n throw new ServiceUnavailableError(ErrorReason.SERVICE_TYPE_NOT_CONFIGURED);\n }\n\n return await service.transferAsset(props);\n },\n } satisfies TransferManager;\n};\n"],"mappings":"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"}
|
package/dist/transfer-manager.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{Environment as e,ServiceType as t
|
|
1
|
+
import{Environment as e,ServiceType as t}from"./constants.js";import{ErrorReason as n,InvalidParamsError as r,ServiceInitializationError as i,ServiceUnavailableError as a}from"./errors.js";import{isEnvironment as o,isServiceInitializer as s}from"./type-guards.js";import{Quoter as c}from"./quoter/quoter.js";import{getAssetId as l}from"./utils/asset-id.js";const u=e=>{if(!o(e))throw new i(n.ENVIRONMENT_NOT_SUPPORTED)},d=e=>{if(e.length===0)throw new i(`No service initializers provided.`);if(e.some(e=>!s(e)))throw new i(`One or more service initializers are invalid.`);let t=new Set;for(let r of e){if(t.has(r.type))throw new i(n.DUPLICATE_SERVICE_INITIALIZATION,`Service type "${r.type}" has been initialized more than once.`);t.add(r.type)}},f=async({environment:r,serviceInitializers:a,fetch:o})=>{let s=new Map,c={},l=(e,t)=>{if(t instanceof i)return t;let r=t instanceof Error?t.message:String(t);return new i(n.UNKNOWN,`Failed to initialize service type "${e}". ${r}`,t)},u=async(e,t)=>{try{let n=await t();s.set(e,n),c[e]={status:`initialized`}}catch(t){c[e]={status:`error`,error:l(e,t)}}};for(let l of a){if(s.has(l.type))throw new i(n.DUPLICATE_SERVICE_INITIALIZATION,`Service type "${l.type}" has been initialized more than once.`);switch(l.type){case t.AVALANCHE_EVM:await u(t.AVALANCHE_EVM,async()=>{let{createAvalancheEvmService:e}=await import(`./transfer-service/avalanche-evm/avalanche-evm-service.js`);return await e({environment:r,evmSigner:l.evmSigner,fetch:o})});break;case t.LOMBARD_BTCB_TO_BTC:await u(t.LOMBARD_BTCB_TO_BTC,async()=>{let{createBtcbToBtcService:e}=await import(`./transfer-service/lombard/btcb-to-btc-service.js`);return await e({bitcoinFunctions:l.btcFunctions,environment:r,evmSigner:l.evmSigner,fetch:o})});break;case t.LOMBARD_BTC_TO_BTCB:await u(t.LOMBARD_BTC_TO_BTCB,async()=>{let{createBtcToBtcbService:e}=await import(`./transfer-service/lombard/btc-to-btcb-service.js`);return await e({bitcoinFunctions:l.btcFunctions,btcSigner:l.btcSigner,environment:r,evmSigner:l.evmSigner,fetch:o})});break;case t.MARKR:if(r!==e.PROD){c[t.MARKR]={status:`unsupported-environment`,message:`Service type "${t.MARKR}" is only supported in production environment.`};break}await u(t.MARKR,async()=>{let{createMarkrService:e}=await import(`./transfer-service/markr/markr-service.js`);return await e({apiBaseUrl:l.markrApiUrl,apiToken:l.markrApiToken,appId:l.markrAppId,disableCrossChainSwaps:l.disableCrossChainSwaps,fetch:o,environment:r,evmSigner:l.evmSigner,getTargetChainAssets:l.getTargetChainAssets,solanaSigner:l.solanaSigner})});break;case t.WRAP_UNWRAP:await u(t.WRAP_UNWRAP,async()=>{let{createWrapUnwrapService:e}=await import(`./transfer-service/wrap-unwrap/wrap-unwrap-service.js`);return await e({environment:r,evmSigner:l.evmSigner,fetch:o})});break;default:break}}return{services:s,status:{environment:r,services:c}}},p=async({environment:e,fetch:t,serviceInitializers:i})=>{u(e),d(i);let{services:o,status:s}=await f({environment:e,serviceInitializers:i,fetch:t});return{id:crypto.randomUUID(),estimateNativeFee:async(e,t)=>{let i=Math.floor(Date.now()/1e3);if(e.expiresAt<=i){let t=i-e.expiresAt;throw new r(n.QUOTE_EXPIRED,`Quote expired ${t} seconds ago.`)}let s=o.get(e.serviceType);if(!s)throw new a(n.SERVICE_TYPE_NOT_CONFIGURED);return await s.estimateNativeFee(e,t)},getBridgeableAssets:async({sourceAsset:e,sourceChainId:t,targetChainId:n})=>{let r=await Promise.allSettled(Array.from(o.values()).map(r=>r.getBridgeableAssets({sourceAsset:e,sourceChainId:t,targetChainId:n}))),i=new Map;for(let e of r)if(e.status===`fulfilled`)for(let t of e.value){let{bridgeProviders:e,...r}=t,a=l(n,r),o=i.get(a);if(o){let t=[...new Set([...o.bridgeProviders,...e])];i.set(a,{...o,bridgeProviders:t})}else i.set(a,{...r,bridgeProviders:[...e]})}return Array.from(i.values())},getMinimumTransferAmount:async e=>{let t={};for(let n of o.values())if(n.analyzeSupport(e)){let r=await n.getMinimumTransferAmount(e);t[n.type]=r}return Object.keys(t).length>0?t:null},getSupportedChains:async()=>{let e=new Map,t=await Promise.all(Array.from(o.values()).map(e=>e.getSupportedChains()));for(let n of t)for(let[t,r]of n.entries()){let n=e.get(t);n||(n=new Set,e.set(t,n));for(let e of r)n.add(e)}return e},getQuoter:(e,t)=>new c(e,Array.from(o.values()),t),status:()=>s,trackTransfer:e=>{let{transfer:t}=e,r=o.get(t.type);if(!r)throw new a(n.SERVICE_TYPE_NOT_CONFIGURED);return r.trackTransfer(e)},transferAsset:async e=>{let{quote:t}=e,r=o.get(t.serviceType);if(!r)throw new a(n.SERVICE_TYPE_NOT_CONFIGURED);return await r.transferAsset(e)}}};export{p as createTransferManager};
|
|
2
2
|
//# sourceMappingURL=transfer-manager.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"transfer-manager.js","names":[],"sources":["../src/transfer-manager.ts"],"sourcesContent":["import { Environment, ServiceType, TokenType } from './constants';\nimport { ErrorReason, InvalidParamsError, ServiceInitializationError, ServiceUnavailableError } from './errors';\nimport type { Asset, ChainAssetMap } from './types/asset';\nimport { isEnvironment, isServiceInitializer } from './type-guards';\nimport type { MutableGetSupportedChainsResult, ServiceInitializer, TransferService } from './types/service';\nimport type {\n CreateTransferManagerOptions,\n TransferManager,\n TransferManagerStatus,\n TransferManagerStatusServicesRecord,\n} from './types/transfer-manager';\nimport { Quoter } from './quoter/quoter';\nimport { mergeChainAssetMaps } from './_utils/merge-assets';\nimport { isCaip2ChainId } from './utils/caip';\nimport type { Caip2ChainId } from './types/caip';\nimport type { Fetch } from './types/utility-types';\n\n/**\n * Validates the provided \"environment\" option.\n *\n * @throws {ServiceInitializationError} If the environment is invalid.\n */\nconst validateEnvironment = (environment: Environment): void => {\n if (!isEnvironment(environment)) {\n throw new ServiceInitializationError(ErrorReason.ENVIRONMENT_NOT_SUPPORTED);\n }\n};\n\n/**\n * Validates the provided \"serviceInitializers\" option.\n *\n * Checks for the following:\n * - At least one service initializer is provided.\n * - All service initializers are valid.\n * - No duplicate service types are initialized.\n *\n * @throws {ServiceInitializationError} If the service initializers are invalid.\n */\nconst validateServiceInitializers = (serviceInitializers: readonly ServiceInitializer[]): void => {\n if (serviceInitializers.length === 0) {\n throw new ServiceInitializationError('No service initializers provided.');\n }\n\n if (serviceInitializers.some((serviceInitializer) => !isServiceInitializer(serviceInitializer))) {\n throw new ServiceInitializationError('One or more service initializers are invalid.');\n }\n\n const serviceInitializerTypes = new Set<ServiceType>();\n for (const initializer of serviceInitializers) {\n if (serviceInitializerTypes.has(initializer.type)) {\n throw new ServiceInitializationError(\n ErrorReason.DUPLICATE_SERVICE_INITIALIZATION,\n `Service type \"${initializer.type}\" has been initialized more than once.`,\n );\n }\n serviceInitializerTypes.add(initializer.type);\n }\n};\n\nconst initializeServices = async ({\n environment,\n serviceInitializers,\n fetch: customFetch,\n}: {\n environment: Environment;\n serviceInitializers: readonly ServiceInitializer[];\n fetch?: Fetch;\n}): Promise<{\n services: Map<ServiceType, TransferService>;\n status: TransferManagerStatus;\n}> => {\n const initializedServicesMap: Map<ServiceType, TransferService> = new Map();\n const serviceStatuses: TransferManagerStatusServicesRecord = {};\n\n const wrapInitializationError = (serviceType: ServiceType, error: unknown): ServiceInitializationError => {\n if (error instanceof ServiceInitializationError) {\n return error;\n }\n\n const details = error instanceof Error ? error.message : String(error);\n\n return new ServiceInitializationError(\n ErrorReason.UNKNOWN,\n `Failed to initialize service type \"${serviceType}\". ${details}`,\n error,\n );\n };\n\n const initializeService = async (\n serviceType: ServiceType,\n initializer: () => Promise<TransferService>,\n ): Promise<void> => {\n try {\n const service = await initializer();\n initializedServicesMap.set(serviceType, service);\n serviceStatuses[serviceType] = { status: 'initialized' };\n } catch (error) {\n const wrappedError = wrapInitializationError(serviceType, error);\n\n serviceStatuses[serviceType] = {\n status: 'error',\n error: wrappedError,\n };\n }\n };\n\n for (const initializer of serviceInitializers) {\n // Error on duplicate initialization attempts.\n if (initializedServicesMap.has(initializer.type)) {\n throw new ServiceInitializationError(\n ErrorReason.DUPLICATE_SERVICE_INITIALIZATION,\n `Service type \"${initializer.type}\" has been initialized more than once.`,\n );\n }\n\n switch (initializer.type) {\n case ServiceType.AVALANCHE_EVM: {\n await initializeService(ServiceType.AVALANCHE_EVM, async () => {\n const { createAvalancheEvmService } = await import('./transfer-service/avalanche-evm/avalanche-evm-service');\n\n return await createAvalancheEvmService({\n environment,\n evmSigner: initializer.evmSigner,\n fetch: customFetch,\n });\n });\n\n break;\n }\n\n case ServiceType.LOMBARD_BTCB_TO_BTC: {\n await initializeService(ServiceType.LOMBARD_BTCB_TO_BTC, async () => {\n const { createBtcbToBtcService } = await import('./transfer-service/lombard/btcb-to-btc-service');\n\n return await createBtcbToBtcService({\n bitcoinFunctions: initializer.btcFunctions,\n environment,\n evmSigner: initializer.evmSigner,\n fetch: customFetch,\n });\n });\n\n break;\n }\n\n case ServiceType.LOMBARD_BTC_TO_BTCB: {\n await initializeService(ServiceType.LOMBARD_BTC_TO_BTCB, async () => {\n const { createBtcToBtcbService } = await import('./transfer-service/lombard/btc-to-btcb-service');\n\n return await createBtcToBtcbService({\n bitcoinFunctions: initializer.btcFunctions,\n btcSigner: initializer.btcSigner,\n environment,\n evmSigner: initializer.evmSigner,\n fetch: customFetch,\n });\n });\n\n break;\n }\n\n case ServiceType.MARKR: {\n if (environment !== Environment.PROD) {\n serviceStatuses[ServiceType.MARKR] = {\n status: 'unsupported-environment',\n message: `Service type \"${ServiceType.MARKR}\" is only supported in production environment.`,\n };\n break;\n }\n\n await initializeService(ServiceType.MARKR, async () => {\n const { createMarkrService } = await import('./transfer-service/markr/markr-service');\n\n return await createMarkrService({\n apiBaseUrl: initializer.markrApiUrl,\n apiToken: initializer.markrApiToken,\n appId: initializer.markrAppId,\n disableCrossChainSwaps: initializer.disableCrossChainSwaps,\n fetch: customFetch,\n environment,\n evmSigner: initializer.evmSigner,\n solanaSigner: initializer.solanaSigner,\n });\n });\n\n break;\n }\n\n case ServiceType.WRAP_UNWRAP: {\n await initializeService(ServiceType.WRAP_UNWRAP, async () => {\n const { createWrapUnwrapService } = await import('./transfer-service/wrap-unwrap/wrap-unwrap-service');\n\n return await createWrapUnwrapService({\n environment,\n evmSigner: initializer.evmSigner,\n fetch: customFetch,\n });\n });\n\n break;\n }\n\n default: {\n break;\n }\n }\n }\n\n return {\n services: initializedServicesMap,\n status: {\n environment,\n services: serviceStatuses,\n },\n };\n};\n\nconst _getAssets = async (services: Map<ServiceType, TransferService>): Promise<ChainAssetMap> => {\n const assetMaps: ChainAssetMap[] = [];\n\n for (const service of services.values()) {\n const serviceAssets = await service.getAssets();\n assetMaps.push(serviceAssets);\n }\n\n return mergeChainAssetMaps(assetMaps);\n};\n\n/**\n * Creates a TransferManager instance.\n *\n * @returns {Promise<TransferManager>} The TransferManager instance.\n * @throws {ServiceInitializationError} If the provided options are invalid.\n */\nexport const createTransferManager = async ({\n environment,\n fetch: customFetch,\n serviceInitializers,\n}: CreateTransferManagerOptions): Promise<TransferManager> => {\n // Validate environment.\n validateEnvironment(environment);\n validateServiceInitializers(serviceInitializers);\n\n const { services, status } = await initializeServices({ environment, serviceInitializers, fetch: customFetch });\n\n return {\n id: crypto.randomUUID(),\n estimateNativeFee: async (quote, options) => {\n const now = Math.floor(Date.now() / 1_000);\n\n if (quote.expiresAt <= now) {\n const expiredSecondsAgo = now - quote.expiresAt;\n\n throw new InvalidParamsError(ErrorReason.QUOTE_EXPIRED, `Quote expired ${expiredSecondsAgo} seconds ago.`);\n }\n\n const service = services.get(quote.serviceType);\n\n if (!service) {\n throw new ServiceUnavailableError(ErrorReason.SERVICE_TYPE_NOT_CONFIGURED);\n }\n\n return await service.estimateNativeFee(quote, options);\n },\n getAssetBridgeMap: async ({ sourceAsset, sourceChainId }) => {\n const assets = await _getAssets(services);\n\n const chainAssets = assets[sourceChainId];\n\n if (!chainAssets) {\n return null;\n }\n\n const chainAsset = chainAssets.find((asset) => {\n if (sourceAsset.type === TokenType.NATIVE) {\n return asset.type === TokenType.NATIVE;\n } else {\n return asset.type === sourceAsset.type && asset.address === sourceAsset.address;\n }\n });\n\n if (!chainAsset || !chainAsset.destinations) {\n return null;\n }\n\n const destinations = chainAsset.destinations;\n\n // map destinations to the required format, lookup bridged asset from assets map\n const result: {\n [chainId: string]: {\n bridgedAsset: Asset;\n bridgeProviders: readonly ServiceType[];\n };\n } = {};\n\n for (const [destChainId, destInfo] of Object.entries(destinations)) {\n if (!isCaip2ChainId(destChainId)) {\n continue;\n }\n\n const destChainAssets = assets[destChainId];\n\n if (!destChainAssets) {\n continue;\n }\n\n // bridgedAsset is the asset from the assets map that matches the destInfo address\n const bridgedAsset = destChainAssets.find((asset) => {\n if (destInfo.address === TokenType.NATIVE) {\n return asset.type === TokenType.NATIVE;\n }\n\n return asset.type !== TokenType.NATIVE && asset.address === destInfo.address;\n });\n\n if (!bridgedAsset) {\n continue;\n }\n\n // Convert the TransferableAsset to Asset by omitting the 'destinations' field\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n const { destinations: _omit, swapProviders: _omitSwapProviders, ...convertedBridgedAsset } = bridgedAsset;\n\n result[destChainId] = {\n bridgedAsset: convertedBridgedAsset,\n bridgeProviders: destInfo.bridgeProviders,\n };\n }\n\n return Object.keys(result).length > 0 ? result : null;\n },\n getMinimumTransferAmount: async (props) => {\n const serviceMinimums: { [key in ServiceType]?: bigint } = {};\n\n for (const service of services.values()) {\n if (service.analyzeSupport(props)) {\n const serviceMinAmount = await service.getMinimumTransferAmount(props);\n serviceMinimums[service.type] = serviceMinAmount;\n }\n }\n\n return Object.keys(serviceMinimums).length > 0 ? serviceMinimums : null;\n },\n getSupportedChains: async () => {\n const supportedChainsMap: MutableGetSupportedChainsResult = new Map();\n\n // Fetch supported chains from all configured services in parallel.\n const serviceResults = await Promise.all(\n Array.from(services.values()).map((service) => service.getSupportedChains()),\n );\n\n // Merge results: union destination sets for identical source chain IDs.\n for (const result of serviceResults) {\n for (const [sourceChainId, targetChainIds] of result.entries()) {\n let mergedTargets = supportedChainsMap.get(sourceChainId);\n if (!mergedTargets) {\n mergedTargets = new Set<Caip2ChainId>();\n supportedChainsMap.set(sourceChainId, mergedTargets);\n }\n\n for (const targetChainId of targetChainIds) {\n mergedTargets.add(targetChainId);\n }\n }\n }\n\n return supportedChainsMap;\n },\n getQuoter: (props, options) => {\n return new Quoter(props, Array.from(services.values()), options);\n },\n status: () => status,\n trackTransfer: (props) => {\n const { transfer } = props;\n const service = services.get(transfer.type);\n\n if (!service) {\n throw new ServiceUnavailableError(ErrorReason.SERVICE_TYPE_NOT_CONFIGURED);\n }\n\n return service.trackTransfer(props);\n },\n transferAsset: async (props) => {\n const { quote } = props;\n const service = services.get(quote.serviceType);\n\n if (!service) {\n throw new ServiceUnavailableError(ErrorReason.SERVICE_TYPE_NOT_CONFIGURED);\n }\n\n return await service.transferAsset(props);\n },\n } satisfies TransferManager;\n};\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"transfer-manager.js","names":[],"sources":["../src/transfer-manager.ts"],"sourcesContent":["import { Environment, ServiceType } from './constants';\nimport { ErrorReason, InvalidParamsError, ServiceInitializationError, ServiceUnavailableError } from './errors';\nimport type { BridgeableUiAsset } from './types/asset';\nimport { isEnvironment, isServiceInitializer } from './type-guards';\nimport type { MutableGetSupportedChainsResult, ServiceInitializer, TransferService } from './types/service';\nimport type {\n CreateTransferManagerOptions,\n TransferManager,\n TransferManagerStatus,\n TransferManagerStatusServicesRecord,\n} from './types/transfer-manager';\nimport { Quoter } from './quoter/quoter';\nimport { getAssetId } from './utils/asset-id';\nimport type { Caip2ChainId } from './types/caip';\nimport type { Fetch } from './types/utility-types';\n\n/**\n * Validates the provided \"environment\" option.\n *\n * @throws {ServiceInitializationError} If the environment is invalid.\n */\nconst validateEnvironment = (environment: Environment): void => {\n if (!isEnvironment(environment)) {\n throw new ServiceInitializationError(ErrorReason.ENVIRONMENT_NOT_SUPPORTED);\n }\n};\n\n/**\n * Validates the provided \"serviceInitializers\" option.\n *\n * Checks for the following:\n * - At least one service initializer is provided.\n * - All service initializers are valid.\n * - No duplicate service types are initialized.\n *\n * @throws {ServiceInitializationError} If the service initializers are invalid.\n */\nconst validateServiceInitializers = (serviceInitializers: readonly ServiceInitializer[]): void => {\n if (serviceInitializers.length === 0) {\n throw new ServiceInitializationError('No service initializers provided.');\n }\n\n if (serviceInitializers.some((serviceInitializer) => !isServiceInitializer(serviceInitializer))) {\n throw new ServiceInitializationError('One or more service initializers are invalid.');\n }\n\n const serviceInitializerTypes = new Set<ServiceType>();\n for (const initializer of serviceInitializers) {\n if (serviceInitializerTypes.has(initializer.type)) {\n throw new ServiceInitializationError(\n ErrorReason.DUPLICATE_SERVICE_INITIALIZATION,\n `Service type \"${initializer.type}\" has been initialized more than once.`,\n );\n }\n serviceInitializerTypes.add(initializer.type);\n }\n};\n\nconst initializeServices = async ({\n environment,\n serviceInitializers,\n fetch: customFetch,\n}: {\n environment: Environment;\n serviceInitializers: readonly ServiceInitializer[];\n fetch?: Fetch;\n}): Promise<{\n services: Map<ServiceType, TransferService>;\n status: TransferManagerStatus;\n}> => {\n const initializedServicesMap: Map<ServiceType, TransferService> = new Map();\n const serviceStatuses: TransferManagerStatusServicesRecord = {};\n\n const wrapInitializationError = (serviceType: ServiceType, error: unknown): ServiceInitializationError => {\n if (error instanceof ServiceInitializationError) {\n return error;\n }\n\n const details = error instanceof Error ? error.message : String(error);\n\n return new ServiceInitializationError(\n ErrorReason.UNKNOWN,\n `Failed to initialize service type \"${serviceType}\". ${details}`,\n error,\n );\n };\n\n const initializeService = async (\n serviceType: ServiceType,\n initializer: () => Promise<TransferService>,\n ): Promise<void> => {\n try {\n const service = await initializer();\n initializedServicesMap.set(serviceType, service);\n serviceStatuses[serviceType] = { status: 'initialized' };\n } catch (error) {\n const wrappedError = wrapInitializationError(serviceType, error);\n\n serviceStatuses[serviceType] = {\n status: 'error',\n error: wrappedError,\n };\n }\n };\n\n for (const initializer of serviceInitializers) {\n // Error on duplicate initialization attempts.\n if (initializedServicesMap.has(initializer.type)) {\n throw new ServiceInitializationError(\n ErrorReason.DUPLICATE_SERVICE_INITIALIZATION,\n `Service type \"${initializer.type}\" has been initialized more than once.`,\n );\n }\n\n switch (initializer.type) {\n case ServiceType.AVALANCHE_EVM: {\n await initializeService(ServiceType.AVALANCHE_EVM, async () => {\n const { createAvalancheEvmService } = await import('./transfer-service/avalanche-evm/avalanche-evm-service');\n\n return await createAvalancheEvmService({\n environment,\n evmSigner: initializer.evmSigner,\n fetch: customFetch,\n });\n });\n\n break;\n }\n\n case ServiceType.LOMBARD_BTCB_TO_BTC: {\n await initializeService(ServiceType.LOMBARD_BTCB_TO_BTC, async () => {\n const { createBtcbToBtcService } = await import('./transfer-service/lombard/btcb-to-btc-service');\n\n return await createBtcbToBtcService({\n bitcoinFunctions: initializer.btcFunctions,\n environment,\n evmSigner: initializer.evmSigner,\n fetch: customFetch,\n });\n });\n\n break;\n }\n\n case ServiceType.LOMBARD_BTC_TO_BTCB: {\n await initializeService(ServiceType.LOMBARD_BTC_TO_BTCB, async () => {\n const { createBtcToBtcbService } = await import('./transfer-service/lombard/btc-to-btcb-service');\n\n return await createBtcToBtcbService({\n bitcoinFunctions: initializer.btcFunctions,\n btcSigner: initializer.btcSigner,\n environment,\n evmSigner: initializer.evmSigner,\n fetch: customFetch,\n });\n });\n\n break;\n }\n\n case ServiceType.MARKR: {\n if (environment !== Environment.PROD) {\n serviceStatuses[ServiceType.MARKR] = {\n status: 'unsupported-environment',\n message: `Service type \"${ServiceType.MARKR}\" is only supported in production environment.`,\n };\n break;\n }\n\n await initializeService(ServiceType.MARKR, async () => {\n const { createMarkrService } = await import('./transfer-service/markr/markr-service');\n\n return await createMarkrService({\n apiBaseUrl: initializer.markrApiUrl,\n apiToken: initializer.markrApiToken,\n appId: initializer.markrAppId,\n disableCrossChainSwaps: initializer.disableCrossChainSwaps,\n fetch: customFetch,\n environment,\n evmSigner: initializer.evmSigner,\n getTargetChainAssets: initializer.getTargetChainAssets,\n solanaSigner: initializer.solanaSigner,\n });\n });\n\n break;\n }\n\n case ServiceType.WRAP_UNWRAP: {\n await initializeService(ServiceType.WRAP_UNWRAP, async () => {\n const { createWrapUnwrapService } = await import('./transfer-service/wrap-unwrap/wrap-unwrap-service');\n\n return await createWrapUnwrapService({\n environment,\n evmSigner: initializer.evmSigner,\n fetch: customFetch,\n });\n });\n\n break;\n }\n\n default: {\n break;\n }\n }\n }\n\n return {\n services: initializedServicesMap,\n status: {\n environment,\n services: serviceStatuses,\n },\n };\n};\n\n/**\n * Creates a TransferManager instance.\n *\n * @returns {Promise<TransferManager>} The TransferManager instance.\n * @throws {ServiceInitializationError} If the provided options are invalid.\n */\nexport const createTransferManager = async ({\n environment,\n fetch: customFetch,\n serviceInitializers,\n}: CreateTransferManagerOptions): Promise<TransferManager> => {\n // Validate environment.\n validateEnvironment(environment);\n validateServiceInitializers(serviceInitializers);\n\n const { services, status } = await initializeServices({ environment, serviceInitializers, fetch: customFetch });\n\n return {\n id: crypto.randomUUID(),\n estimateNativeFee: async (quote, options) => {\n const now = Math.floor(Date.now() / 1_000);\n\n if (quote.expiresAt <= now) {\n const expiredSecondsAgo = now - quote.expiresAt;\n\n throw new InvalidParamsError(ErrorReason.QUOTE_EXPIRED, `Quote expired ${expiredSecondsAgo} seconds ago.`);\n }\n\n const service = services.get(quote.serviceType);\n\n if (!service) {\n throw new ServiceUnavailableError(ErrorReason.SERVICE_TYPE_NOT_CONFIGURED);\n }\n\n return await service.estimateNativeFee(quote, options);\n },\n getBridgeableAssets: async ({ sourceAsset, sourceChainId, targetChainId }) => {\n const settledResults = await Promise.allSettled(\n Array.from(services.values()).map((service) =>\n service.getBridgeableAssets({ sourceAsset, sourceChainId, targetChainId }),\n ),\n );\n\n const merged = new Map<string, BridgeableUiAsset>();\n\n for (const settled of settledResults) {\n if (settled.status !== 'fulfilled') continue;\n for (const result of settled.value) {\n const { bridgeProviders, ...asset } = result;\n const key = getAssetId(targetChainId, asset);\n\n const existing = merged.get(key);\n if (existing) {\n const combined = [...new Set([...existing.bridgeProviders, ...bridgeProviders])];\n merged.set(key, { ...existing, bridgeProviders: combined });\n } else {\n merged.set(key, { ...asset, bridgeProviders: [...bridgeProviders] });\n }\n }\n }\n\n return Array.from(merged.values());\n },\n getMinimumTransferAmount: async (props) => {\n const serviceMinimums: { [key in ServiceType]?: bigint } = {};\n\n for (const service of services.values()) {\n if (service.analyzeSupport(props)) {\n const serviceMinAmount = await service.getMinimumTransferAmount(props);\n serviceMinimums[service.type] = serviceMinAmount;\n }\n }\n\n return Object.keys(serviceMinimums).length > 0 ? serviceMinimums : null;\n },\n getSupportedChains: async () => {\n const supportedChainsMap: MutableGetSupportedChainsResult = new Map();\n\n // Fetch supported chains from all configured services in parallel.\n const serviceResults = await Promise.all(\n Array.from(services.values()).map((service) => service.getSupportedChains()),\n );\n\n // Merge results: union destination sets for identical source chain IDs.\n for (const result of serviceResults) {\n for (const [sourceChainId, targetChainIds] of result.entries()) {\n let mergedTargets = supportedChainsMap.get(sourceChainId);\n if (!mergedTargets) {\n mergedTargets = new Set<Caip2ChainId>();\n supportedChainsMap.set(sourceChainId, mergedTargets);\n }\n\n for (const targetChainId of targetChainIds) {\n mergedTargets.add(targetChainId);\n }\n }\n }\n\n return supportedChainsMap;\n },\n getQuoter: (props, options) => {\n return new Quoter(props, Array.from(services.values()), options);\n },\n status: () => status,\n trackTransfer: (props) => {\n const { transfer } = props;\n const service = services.get(transfer.type);\n\n if (!service) {\n throw new ServiceUnavailableError(ErrorReason.SERVICE_TYPE_NOT_CONFIGURED);\n }\n\n return service.trackTransfer(props);\n },\n transferAsset: async (props) => {\n const { quote } = props;\n const service = services.get(quote.serviceType);\n\n if (!service) {\n throw new ServiceUnavailableError(ErrorReason.SERVICE_TYPE_NOT_CONFIGURED);\n }\n\n return await service.transferAsset(props);\n },\n } satisfies TransferManager;\n};\n"],"mappings":"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"}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
const e=require(`../../../constants.cjs`),t=require(`../../../utils/asset-id.cjs`);function n({serviceAssets:n}){return async({sourceAsset:r,sourceChainId:i,targetChainId:a})=>{let o=n[i];if(!o)return[];let s=t.getAssetId(i,r),c=o.find(e=>t.getAssetId(i,e)===s);if(!c)return[];let l=c.destinations[a];if(!l)return[];let u=n[a];if(!u)return[];let d=u.find(e=>`address`in e&&e.address.toLowerCase()===l.address.toLowerCase());return d?[{type:d.type,name:d.name,symbol:d.symbol,decimals:d.decimals,...`address`in d&&{address:d.address},...d.logoUri!==void 0&&{logoUri:d.logoUri},bridgeProviders:[e.ServiceType.AVALANCHE_EVM]}]:[]}}exports.getBridgeableAssetsFactory=n;
|
|
2
|
+
//# sourceMappingURL=get-bridgeable-assets.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"get-bridgeable-assets.cjs","names":["getAssetId","ServiceType"],"sources":["../../../../src/transfer-service/avalanche-evm/_handlers/get-bridgeable-assets.ts"],"sourcesContent":["import { ServiceType } from '../../../constants';\nimport type { BridgeableUiAsset, ChainAssetMap } from '../../../types/asset';\nimport type { GetBridgeableAssetsProps, TransferService } from '../../../types/service';\nimport { getAssetId } from '../../../utils/asset-id';\n\nexport function getBridgeableAssetsFactory({\n serviceAssets,\n}: {\n serviceAssets: ChainAssetMap;\n}): TransferService['getBridgeableAssets'] {\n return async ({\n sourceAsset,\n sourceChainId,\n targetChainId,\n }: GetBridgeableAssetsProps): Promise<readonly BridgeableUiAsset[]> => {\n const sourceChainAssets = serviceAssets[sourceChainId];\n if (!sourceChainAssets) return [];\n\n const sourceId = getAssetId(sourceChainId, sourceAsset);\n const found = sourceChainAssets.find((a) => getAssetId(sourceChainId, a) === sourceId);\n if (!found) return [];\n\n const destination = found.destinations[targetChainId];\n if (!destination) return [];\n\n const targetChainAssets = serviceAssets[targetChainId];\n if (!targetChainAssets) return [];\n\n const target = targetChainAssets.find(\n (a) => 'address' in a && a.address.toLowerCase() === destination.address.toLowerCase(),\n );\n if (!target) return [];\n\n return [\n {\n type: target.type,\n name: target.name,\n symbol: target.symbol,\n decimals: target.decimals,\n ...('address' in target && { address: target.address }),\n ...(target.logoUri !== undefined && { logoUri: target.logoUri }),\n bridgeProviders: [ServiceType.AVALANCHE_EVM],\n } as BridgeableUiAsset,\n ];\n };\n}\n"],"mappings":"mFAKA,SAAgB,EAA2B,CACzC,iBAGyC,CACzC,OAAO,MAAO,CACZ,cACA,gBACA,mBACqE,CACrE,IAAM,EAAoB,EAAc,GACxC,GAAI,CAAC,EAAmB,MAAO,EAAE,CAEjC,IAAM,EAAWA,EAAAA,WAAW,EAAe,EAAY,CACjD,EAAQ,EAAkB,KAAM,GAAMA,EAAAA,WAAW,EAAe,EAAE,GAAK,EAAS,CACtF,GAAI,CAAC,EAAO,MAAO,EAAE,CAErB,IAAM,EAAc,EAAM,aAAa,GACvC,GAAI,CAAC,EAAa,MAAO,EAAE,CAE3B,IAAM,EAAoB,EAAc,GACxC,GAAI,CAAC,EAAmB,MAAO,EAAE,CAEjC,IAAM,EAAS,EAAkB,KAC9B,GAAM,YAAa,GAAK,EAAE,QAAQ,aAAa,GAAK,EAAY,QAAQ,aAAa,CACvF,CAGD,OAFK,EAEE,CACL,CACE,KAAM,EAAO,KACb,KAAM,EAAO,KACb,OAAQ,EAAO,OACf,SAAU,EAAO,SACjB,GAAI,YAAa,GAAU,CAAE,QAAS,EAAO,QAAS,CACtD,GAAI,EAAO,UAAY,IAAA,IAAa,CAAE,QAAS,EAAO,QAAS,CAC/D,gBAAiB,CAACC,EAAAA,YAAY,cAAc,CAC7C,CACF,CAZmB,EAAE"}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import{ServiceType as e}from"../../../constants.js";import{getAssetId as t}from"../../../utils/asset-id.js";function n({serviceAssets:n}){return async({sourceAsset:r,sourceChainId:i,targetChainId:a})=>{let o=n[i];if(!o)return[];let s=t(i,r),c=o.find(e=>t(i,e)===s);if(!c)return[];let l=c.destinations[a];if(!l)return[];let u=n[a];if(!u)return[];let d=u.find(e=>`address`in e&&e.address.toLowerCase()===l.address.toLowerCase());return d?[{type:d.type,name:d.name,symbol:d.symbol,decimals:d.decimals,...`address`in d&&{address:d.address},...d.logoUri!==void 0&&{logoUri:d.logoUri},bridgeProviders:[e.AVALANCHE_EVM]}]:[]}}export{n as getBridgeableAssetsFactory};
|
|
2
|
+
//# sourceMappingURL=get-bridgeable-assets.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"get-bridgeable-assets.js","names":[],"sources":["../../../../src/transfer-service/avalanche-evm/_handlers/get-bridgeable-assets.ts"],"sourcesContent":["import { ServiceType } from '../../../constants';\nimport type { BridgeableUiAsset, ChainAssetMap } from '../../../types/asset';\nimport type { GetBridgeableAssetsProps, TransferService } from '../../../types/service';\nimport { getAssetId } from '../../../utils/asset-id';\n\nexport function getBridgeableAssetsFactory({\n serviceAssets,\n}: {\n serviceAssets: ChainAssetMap;\n}): TransferService['getBridgeableAssets'] {\n return async ({\n sourceAsset,\n sourceChainId,\n targetChainId,\n }: GetBridgeableAssetsProps): Promise<readonly BridgeableUiAsset[]> => {\n const sourceChainAssets = serviceAssets[sourceChainId];\n if (!sourceChainAssets) return [];\n\n const sourceId = getAssetId(sourceChainId, sourceAsset);\n const found = sourceChainAssets.find((a) => getAssetId(sourceChainId, a) === sourceId);\n if (!found) return [];\n\n const destination = found.destinations[targetChainId];\n if (!destination) return [];\n\n const targetChainAssets = serviceAssets[targetChainId];\n if (!targetChainAssets) return [];\n\n const target = targetChainAssets.find(\n (a) => 'address' in a && a.address.toLowerCase() === destination.address.toLowerCase(),\n );\n if (!target) return [];\n\n return [\n {\n type: target.type,\n name: target.name,\n symbol: target.symbol,\n decimals: target.decimals,\n ...('address' in target && { address: target.address }),\n ...(target.logoUri !== undefined && { logoUri: target.logoUri }),\n bridgeProviders: [ServiceType.AVALANCHE_EVM],\n } as BridgeableUiAsset,\n ];\n };\n}\n"],"mappings":"4GAKA,SAAgB,EAA2B,CACzC,iBAGyC,CACzC,OAAO,MAAO,CACZ,cACA,gBACA,mBACqE,CACrE,IAAM,EAAoB,EAAc,GACxC,GAAI,CAAC,EAAmB,MAAO,EAAE,CAEjC,IAAM,EAAW,EAAW,EAAe,EAAY,CACjD,EAAQ,EAAkB,KAAM,GAAM,EAAW,EAAe,EAAE,GAAK,EAAS,CACtF,GAAI,CAAC,EAAO,MAAO,EAAE,CAErB,IAAM,EAAc,EAAM,aAAa,GACvC,GAAI,CAAC,EAAa,MAAO,EAAE,CAE3B,IAAM,EAAoB,EAAc,GACxC,GAAI,CAAC,EAAmB,MAAO,EAAE,CAEjC,IAAM,EAAS,EAAkB,KAC9B,GAAM,YAAa,GAAK,EAAE,QAAQ,aAAa,GAAK,EAAY,QAAQ,aAAa,CACvF,CAGD,OAFK,EAEE,CACL,CACE,KAAM,EAAO,KACb,KAAM,EAAO,KACb,OAAQ,EAAO,OACf,SAAU,EAAO,SACjB,GAAI,YAAa,GAAU,CAAE,QAAS,EAAO,QAAS,CACtD,GAAI,EAAO,UAAY,IAAA,IAAa,CAAE,QAAS,EAAO,QAAS,CAC/D,gBAAiB,CAAC,EAAY,cAAc,CAC7C,CACF,CAZmB,EAAE"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
const e=require(`../../../constants.cjs`),t=require(`../../../errors.cjs`),n=require(
|
|
1
|
+
const e=require(`../../../constants.cjs`),t=require(`../../../errors.cjs`),n=require(`./fee.cjs`),r=require(`../../../utils/evm-address.cjs`),i=require(`../../_warden-config.cjs`);async function a(e){return o(await i.getWardenConfig(e),e)}function o(i,a){let o=i.critical.assets,{ethereum:s,avalanche:c}=i.critical.networks;if(s===void 0||c===void 0)throw new t.ServiceInitializationError(t.ErrorReason.WARDEN_CONFIG_MISSING_NETWORK,`Critical networks info is missing from wardenConfig`);let l=i.critical.walletAddresses.avalanche,u=i.critical.walletAddresses.ethereum;if(!l||!u)throw new t.ServiceInitializationError(t.ErrorReason.CONFIG_NOT_AVAILABLE,`Wallet address is missing from the critical config.`);let d=Object.entries(o).reduce((t,[a,o])=>{let l=r.formatEvmAddress(o.nativeContractAddress),u={type:e.TokenType.ERC20,address:l,name:o.tokenName,symbol:a,decimals:o.denomination},d=i.nonCritical.wrapFeeApproximation[a];return t[l]={chainId:`eip155:${s}`,token:u,target:{chainId:`eip155:${c}`,tokenAddress:r.formatEvmAddress(o.wrappedContractAddress)},wrapFeeApproximation:n.isDynamicFee(d)?d:d?BigInt(d):void 0},t},{}),f=Object.values(d).find(e=>e.token.symbol===`WETH`);if(!f)throw new t.ServiceInitializationError(t.ErrorReason.CONFIG_NOT_AVAILABLE,`WETH info is missing from config`);let p=Object.entries(o).reduce((t,[a,o])=>{let l=r.formatEvmAddress(o.wrappedContractAddress),u={type:e.TokenType.ERC20,address:l,name:o.tokenName,symbol:`${a}.e`,decimals:o.denomination},d=i.nonCritical.unwrapFeeApproximation[a];return t[l]={chainId:`eip155:${c}`,token:u,target:{chainId:`eip155:${s}`,tokenAddress:r.formatEvmAddress(o.nativeContractAddress)},unwrapFeeApproximation:n.isDynamicFee(d)?d:d?BigInt(d):void 0},t},{}),m=p[f.target.tokenAddress];if(!m)throw new t.ServiceInitializationError(t.ErrorReason.CONFIG_NOT_AVAILABLE,`WETH.e info is missing from config`);let h=i.nonCritical.minimumConfirmations.avalanche,g=i.nonCritical.minimumConfirmations.ethereum;if(!h||!g)throw new t.ServiceInitializationError(t.ErrorReason.CONFIG_NOT_AVAILABLE,`Minimum confirmation info is missing`);return{addressBlocklist:i.critical.addressBlocklist,ethereumTokens:d,avalancheTokens:p,minimumConfirmations:{avalanche:h,ethereum:g},environment:a,walletAddresses:{avalanche:l,ethereum:u},nativeTokenConfig:{ethereumToken:f,avalancheToken:m}}}exports.getConfig=a;
|
|
2
2
|
//# sourceMappingURL=get-config.cjs.map
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{TokenType as e}from"../../../constants.js";import{ErrorReason as t,ServiceInitializationError as n}from"../../../errors.js";import{
|
|
1
|
+
import{TokenType as e}from"../../../constants.js";import{ErrorReason as t,ServiceInitializationError as n}from"../../../errors.js";import{isDynamicFee as r}from"./fee.js";import{formatEvmAddress as i}from"../../../utils/evm-address.js";import{getWardenConfig as a}from"../../_warden-config.js";async function o(e){return s(await a(e),e)}function s(a,o){let s=a.critical.assets,{ethereum:c,avalanche:l}=a.critical.networks;if(c===void 0||l===void 0)throw new n(t.WARDEN_CONFIG_MISSING_NETWORK,`Critical networks info is missing from wardenConfig`);let u=a.critical.walletAddresses.avalanche,d=a.critical.walletAddresses.ethereum;if(!u||!d)throw new n(t.CONFIG_NOT_AVAILABLE,`Wallet address is missing from the critical config.`);let f=Object.entries(s).reduce((t,[n,o])=>{let s=i(o.nativeContractAddress),u={type:e.ERC20,address:s,name:o.tokenName,symbol:n,decimals:o.denomination},d=a.nonCritical.wrapFeeApproximation[n];return t[s]={chainId:`eip155:${c}`,token:u,target:{chainId:`eip155:${l}`,tokenAddress:i(o.wrappedContractAddress)},wrapFeeApproximation:r(d)?d:d?BigInt(d):void 0},t},{}),p=Object.values(f).find(e=>e.token.symbol===`WETH`);if(!p)throw new n(t.CONFIG_NOT_AVAILABLE,`WETH info is missing from config`);let m=Object.entries(s).reduce((t,[n,o])=>{let s=i(o.wrappedContractAddress),u={type:e.ERC20,address:s,name:o.tokenName,symbol:`${n}.e`,decimals:o.denomination},d=a.nonCritical.unwrapFeeApproximation[n];return t[s]={chainId:`eip155:${l}`,token:u,target:{chainId:`eip155:${c}`,tokenAddress:i(o.nativeContractAddress)},unwrapFeeApproximation:r(d)?d:d?BigInt(d):void 0},t},{}),h=m[p.target.tokenAddress];if(!h)throw new n(t.CONFIG_NOT_AVAILABLE,`WETH.e info is missing from config`);let g=a.nonCritical.minimumConfirmations.avalanche,_=a.nonCritical.minimumConfirmations.ethereum;if(!g||!_)throw new n(t.CONFIG_NOT_AVAILABLE,`Minimum confirmation info is missing`);return{addressBlocklist:a.critical.addressBlocklist,ethereumTokens:f,avalancheTokens:m,minimumConfirmations:{avalanche:g,ethereum:_},environment:o,walletAddresses:{avalanche:u,ethereum:d},nativeTokenConfig:{ethereumToken:p,avalancheToken:h}}}export{o as getConfig};
|
|
2
2
|
//# sourceMappingURL=get-config.js.map
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
const e=require(`../../constants.cjs`),t=require(`./_handlers/analyze-support.cjs`),n=require(`./_constants.cjs`),r=require(`./_handlers/estimate-native-fee.cjs`),i=require(`./_handlers/get-assets.cjs`),a=require(`./_handlers/get-minimum-transfer-amount.cjs`),
|
|
1
|
+
const e=require(`../../constants.cjs`),t=require(`./_handlers/analyze-support.cjs`),n=require(`./_constants.cjs`),r=require(`./_handlers/estimate-native-fee.cjs`),i=require(`./_handlers/get-assets.cjs`),a=require(`./_handlers/get-bridgeable-assets.cjs`),o=require(`./_handlers/get-minimum-transfer-amount.cjs`),s=require(`./_handlers/get-supported-chains.cjs`),c=require(`./_handlers/stream-quotes.cjs`),l=require(`./_handlers/track-transfer.cjs`),u=require(`./_handlers/transfer-asset.cjs`),d=require(`./_utils/get-config.cjs`);async function f({environment:f,evmSigner:p,feeEstimationMultiplier:m=n.DEFAULT_AVALANCHE_EVM_FEE_ESTIMATION_MULTIPLIER}){let h=await d.getConfig(f),g=await i.getAssetsFactory({avalancheTokens:h.avalancheTokens,ethereumTokens:h.ethereumTokens,nativeTokenConfig:h.nativeTokenConfig})();return{analyzeSupport:t.analyzeSupportFactory({serviceAssets:g}),estimateNativeFee:r.estimateNativeFeeFactory({config:h}),getAssets:async()=>g,getBridgeableAssets:a.getBridgeableAssetsFactory({serviceAssets:g}),getMinimumTransferAmount:o.getMinimumTransferAmountFactory({config:h,feeEstimationMultiplier:m}),getSupportedChains:s.getSupportedChainsFactory({environment:f}),streamQuotes:c.streamQuotesFactory({config:h,feeEstimationMultiplier:m,serviceAssets:g}),trackTransfer:l.trackTransferFactory({config:h}),transferAsset:u.transferAssetFactory({config:h,evmSigner:p,feeEstimationMultiplier:m}),type:e.ServiceType.AVALANCHE_EVM}}exports.createAvalancheEvmService=f;
|
|
2
2
|
//# sourceMappingURL=avalanche-evm-service.cjs.map
|