@swapkit/toolboxes 1.0.0-beta.9 → 4.0.0-beta.36

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.
Files changed (132) hide show
  1. package/dist/chunk-4yap1fvd.js +1 -0
  2. package/dist/{chunk-fjfxga2v.js → chunk-5yxc1e69.js} +2 -1
  3. package/dist/{chunk-fjfxga2v.js.map → chunk-5yxc1e69.js.map} +1 -1
  4. package/dist/chunk-6f98phv2.js +5 -0
  5. package/dist/{chunk-0h4xdrwz.js.map → chunk-6f98phv2.js.map} +2 -2
  6. package/dist/{chunk-0f0249b1.js → chunk-9bqegm61.js} +2 -1
  7. package/dist/chunk-fazw0jvt.js +1 -0
  8. package/dist/{chunk-p1kdg37m.js → chunk-s47y8512.js} +3 -2
  9. package/dist/{chunk-p1kdg37m.js.map → chunk-s47y8512.js.map} +1 -1
  10. package/dist/chunk-vtd17cje.js +4 -0
  11. package/dist/chunk-vtd17cje.js.map +10 -0
  12. package/dist/chunk-zcdeg6h9.js +5 -0
  13. package/dist/chunk-zcdeg6h9.js.map +10 -0
  14. package/dist/src/cosmos/index.cjs +4 -0
  15. package/dist/src/cosmos/index.cjs.map +16 -0
  16. package/dist/src/cosmos/index.js +4 -0
  17. package/dist/src/cosmos/index.js.map +16 -0
  18. package/dist/src/evm/index.cjs +4 -0
  19. package/dist/src/evm/index.cjs.map +18 -0
  20. package/dist/src/evm/index.js +4 -0
  21. package/dist/src/evm/index.js.map +18 -0
  22. package/dist/src/index.cjs +4 -0
  23. package/dist/src/index.cjs.map +10 -0
  24. package/dist/src/index.js +4 -0
  25. package/dist/src/index.js.map +10 -0
  26. package/dist/src/near/index.cjs +4 -0
  27. package/dist/src/near/index.cjs.map +13 -0
  28. package/dist/src/near/index.js +4 -0
  29. package/dist/src/near/index.js.map +13 -0
  30. package/dist/{radix → src/radix}/index.cjs +3 -2
  31. package/dist/src/radix/index.cjs.map +10 -0
  32. package/dist/src/radix/index.js +4 -0
  33. package/dist/src/radix/index.js.map +10 -0
  34. package/dist/src/ripple/index.cjs +4 -0
  35. package/dist/src/ripple/index.cjs.map +10 -0
  36. package/dist/src/ripple/index.js +4 -0
  37. package/dist/src/ripple/index.js.map +10 -0
  38. package/dist/src/solana/index.cjs +4 -0
  39. package/dist/src/solana/index.cjs.map +10 -0
  40. package/dist/src/solana/index.js +4 -0
  41. package/dist/src/solana/index.js.map +10 -0
  42. package/dist/src/substrate/index.cjs +4 -0
  43. package/dist/src/substrate/index.cjs.map +12 -0
  44. package/dist/src/substrate/index.js +4 -0
  45. package/dist/src/substrate/index.js.map +12 -0
  46. package/dist/src/tron/index.cjs +4 -0
  47. package/dist/src/tron/index.cjs.map +11 -0
  48. package/dist/src/tron/index.js +4 -0
  49. package/dist/src/tron/index.js.map +11 -0
  50. package/dist/src/utxo/index.cjs +6 -0
  51. package/dist/src/utxo/index.cjs.map +17 -0
  52. package/dist/src/utxo/index.js +6 -0
  53. package/dist/src/utxo/index.js.map +17 -0
  54. package/package.json +92 -43
  55. package/src/cosmos/thorchainUtils/addressFormat.ts +4 -1
  56. package/src/cosmos/thorchainUtils/messages.ts +2 -2
  57. package/src/cosmos/thorchainUtils/registry.ts +3 -3
  58. package/src/cosmos/toolbox/cosmos.ts +35 -16
  59. package/src/cosmos/toolbox/index.ts +2 -2
  60. package/src/cosmos/toolbox/thorchain.ts +11 -9
  61. package/src/cosmos/util.ts +87 -7
  62. package/src/evm/__tests__/address-validation.test.ts +86 -0
  63. package/src/evm/__tests__/ethereum.test.ts +1 -1
  64. package/src/evm/helpers.ts +4 -3
  65. package/src/evm/toolbox/baseEVMToolbox.ts +34 -24
  66. package/src/evm/toolbox/index.ts +2 -2
  67. package/src/evm/toolbox/op.ts +21 -7
  68. package/src/index.ts +118 -100
  69. package/src/near/__tests__/core.test.ts +80 -0
  70. package/src/near/helpers/contractFactory.ts +22 -0
  71. package/src/near/helpers/core.ts +89 -0
  72. package/src/near/helpers/gasEstimation.ts +110 -0
  73. package/src/near/helpers/index.ts +5 -0
  74. package/src/near/helpers/nep141.ts +110 -0
  75. package/src/near/index.ts +24 -0
  76. package/src/near/toolbox.ts +498 -0
  77. package/src/near/types/contract.ts +48 -0
  78. package/src/near/types/nep141.ts +66 -0
  79. package/src/near/types.ts +57 -0
  80. package/src/radix/index.ts +8 -2
  81. package/src/ripple/index.ts +14 -21
  82. package/src/solana/toolbox.ts +73 -2
  83. package/src/substrate/balance.ts +92 -0
  84. package/src/substrate/substrate.ts +7 -5
  85. package/src/tron/__tests__/toolbox.test.ts +147 -0
  86. package/src/tron/helpers/trc20.abi.ts +40 -0
  87. package/src/tron/index.ts +16 -0
  88. package/src/tron/toolbox.ts +336 -0
  89. package/src/tron/types.ts +31 -0
  90. package/src/utxo/__tests__/zcash-integration.test.ts +114 -0
  91. package/src/utxo/helpers/api.ts +66 -16
  92. package/src/utxo/helpers/bchaddrjs.ts +8 -8
  93. package/src/utxo/helpers/coinselect.ts +4 -2
  94. package/src/utxo/helpers/txSize.ts +4 -3
  95. package/src/utxo/index.ts +1 -0
  96. package/src/utxo/toolbox/bitcoinCash.ts +21 -13
  97. package/src/utxo/toolbox/index.ts +16 -4
  98. package/src/utxo/toolbox/utxo.ts +42 -27
  99. package/src/utxo/toolbox/zcash.ts +208 -0
  100. package/dist/chunk-0h4xdrwz.js +0 -4
  101. package/dist/cosmos/index.cjs +0 -3
  102. package/dist/cosmos/index.cjs.map +0 -16
  103. package/dist/cosmos/index.js +0 -3
  104. package/dist/cosmos/index.js.map +0 -16
  105. package/dist/evm/index.cjs +0 -3
  106. package/dist/evm/index.cjs.map +0 -18
  107. package/dist/evm/index.js +0 -3
  108. package/dist/evm/index.js.map +0 -18
  109. package/dist/index.cjs +0 -3
  110. package/dist/index.cjs.map +0 -10
  111. package/dist/index.js +0 -3
  112. package/dist/index.js.map +0 -10
  113. package/dist/radix/index.cjs.map +0 -10
  114. package/dist/radix/index.js +0 -3
  115. package/dist/radix/index.js.map +0 -10
  116. package/dist/ripple/index.cjs +0 -3
  117. package/dist/ripple/index.cjs.map +0 -10
  118. package/dist/ripple/index.js +0 -3
  119. package/dist/ripple/index.js.map +0 -10
  120. package/dist/solana/index.cjs +0 -3
  121. package/dist/solana/index.cjs.map +0 -10
  122. package/dist/solana/index.js +0 -3
  123. package/dist/solana/index.js.map +0 -10
  124. package/dist/substrate/index.cjs +0 -3
  125. package/dist/substrate/index.cjs.map +0 -11
  126. package/dist/substrate/index.js +0 -3
  127. package/dist/substrate/index.js.map +0 -11
  128. package/dist/utxo/index.cjs +0 -3
  129. package/dist/utxo/index.cjs.map +0 -16
  130. package/dist/utxo/index.js +0 -3
  131. package/dist/utxo/index.js.map +0 -16
  132. /package/dist/{chunk-0f0249b1.js.map → chunk-9bqegm61.js.map} +0 -0
@@ -0,0 +1,18 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../src/evm/api.ts", "../src/evm/helpers.ts", "../src/evm/toolbox/baseEVMToolbox.ts", "../src/evm/types.ts", "../src/evm/toolbox/index.ts", "../src/evm/toolbox/evm.ts", "../src/evm/contracts/eth/multicall.ts", "../src/evm/toolbox/op.ts", "../src/evm/contracts/op/gasOracle.ts"],
4
+ "sourcesContent": [
5
+ "import { type EVMChain, SKConfig, warnOnce } from \"@swapkit/helpers\";\nimport { getBalance } from \"../utils\";\n\nexport function getEvmApi(chain: EVMChain) {\n const customEvmApi = SKConfig.get(\"apis\")[chain];\n\n if (customEvmApi) {\n warnOnce(true, \"Using custom EVM API. Be sure to implement all methods to avoid issues.\");\n return customEvmApi as ReturnType<typeof evmApi>;\n }\n\n return evmApi(chain);\n}\n\nexport function createCustomEvmApi(methods: ReturnType<typeof getEvmApi>) {\n return methods;\n}\n\nfunction evmApi(chain: EVMChain) {\n return { getBalance: getBalance(chain) };\n}\n",
6
+ "import {\n AssetValue,\n BaseDecimal,\n Chain,\n ChainToExplorerUrl,\n ChainToHexChainId,\n type EVMChain,\n FeeOption,\n type NetworkParams,\n SKConfig,\n SwapKitError,\n SwapKitNumber,\n} from \"@swapkit/helpers\";\nimport type { BrowserProvider, Provider } from \"ethers\";\n\nimport { getEstimateGasPrices } from \"./toolbox/baseEVMToolbox\";\nimport type { EIP1559TxParams, EVMMaxSendableAmountsParams } from \"./types\";\n\nexport async function getProvider(chain: EVMChain, customUrl?: string) {\n const { JsonRpcProvider } = await import(\"ethers\");\n\n return new JsonRpcProvider(customUrl || SKConfig.get(\"rpcUrls\")[chain]);\n}\n\n/**\n * @deprecated\n */\nexport const estimateMaxSendableAmount = async ({\n from,\n memo = \"\",\n feeOptionKey = FeeOption.Fastest,\n assetValue,\n abi,\n funcName,\n funcParams,\n contractAddress,\n txOverrides,\n}: EVMMaxSendableAmountsParams): Promise<AssetValue> => {\n const { getEvmToolbox } = await import(\"@swapkit/toolboxes/evm\");\n const toolbox = await getEvmToolbox(assetValue.chain as EVMChain);\n\n const balances = await toolbox.getBalance(from);\n const balance = balances.find(({ symbol, chain }) =>\n assetValue ? symbol === assetValue.symbol : symbol === AssetValue.from({ chain })?.symbol,\n );\n\n const gasRate = (await toolbox.estimateGasPrices())[feeOptionKey];\n\n if (!balance) return AssetValue.from({ chain: assetValue.chain });\n\n if (assetValue && (balance.chain !== assetValue.chain || balance.symbol !== assetValue?.symbol)) {\n return balance;\n }\n\n const gasLimit =\n abi && funcName && funcParams && contractAddress\n ? await toolbox.estimateCall({\n contractAddress,\n abi,\n funcName,\n funcParams,\n txOverrides,\n })\n : await toolbox.estimateGasLimit({\n sender: from,\n recipient: from,\n memo,\n assetValue,\n });\n\n const isFeeEIP1559Compatible = \"maxFeePerGas\" in gasRate;\n const isFeeEVMLegacyCompatible = \"gasPrice\" in gasRate && gasRate.gasPrice !== undefined;\n\n if (!(gasRate && (isFeeEVMLegacyCompatible || isFeeEIP1559Compatible))) {\n throw new SwapKitError(\"toolbox_evm_no_fee_data\");\n }\n\n const gasPrice = isFeeEIP1559Compatible\n ? (gasRate.maxFeePerGas || 1n) + (gasRate.maxPriorityFeePerGas || 1n)\n : gasRate.gasPrice || 1n;\n\n const fee = gasLimit * gasPrice;\n const maxSendableAmount = SwapKitNumber.fromBigInt(balance.getBaseValue(\"bigint\")).sub(\n fee.toString(),\n );\n\n return AssetValue.from({ chain: balance.chain, value: maxSendableAmount.getValue(\"string\") });\n};\n\nexport function toHexString(value: bigint) {\n return value > 0n ? `0x${value.toString(16)}` : \"0x0\";\n}\n\nexport function getEstimateTransactionFee({\n provider,\n isEIP1559Compatible = true,\n}: { provider: Provider | BrowserProvider; isEIP1559Compatible?: boolean; chain: EVMChain }) {\n return async function estimateTransactionFee({\n feeOption = FeeOption.Fast,\n chain,\n ...txObject\n }: EIP1559TxParams & { feeOption: FeeOption; chain: EVMChain }) {\n const estimateGasPrices = getEstimateGasPrices({ provider, isEIP1559Compatible, chain });\n const gasPrices = await estimateGasPrices();\n const gasLimit = await provider.estimateGas(txObject);\n\n const assetValue = AssetValue.from({ chain });\n const { gasPrice, maxFeePerGas, maxPriorityFeePerGas } = gasPrices[feeOption];\n\n if (!isEIP1559Compatible && gasPrice) {\n return assetValue.set(SwapKitNumber.fromBigInt(gasPrice * gasLimit, assetValue.decimal));\n }\n\n if (maxFeePerGas && maxPriorityFeePerGas) {\n const fee = (maxFeePerGas + maxPriorityFeePerGas) * gasLimit;\n\n return assetValue.set(SwapKitNumber.fromBigInt(fee, assetValue.decimal));\n }\n\n throw new SwapKitError(\"toolbox_evm_no_gas_price\");\n };\n}\n\nexport function getNetworkParams<C extends EVMChain>(chain: C) {\n return () =>\n (Chain.Ethereum === chain\n ? undefined\n : {\n ...getNetworkInfo({ chain }),\n chainId: ChainToHexChainId[chain],\n rpcUrls: [SKConfig.get(\"rpcUrls\")[chain]],\n blockExplorerUrls: [ChainToExplorerUrl[chain]],\n }) as C extends Chain.Ethereum ? undefined : NetworkParams;\n}\n\nexport function getIsEIP1559Compatible<C extends EVMChain>(chain: C) {\n const notCompatible = [Chain.Arbitrum, Chain.BinanceSmartChain];\n\n return !notCompatible.includes(chain);\n}\n\nfunction getNetworkInfo<C extends EVMChain>({ chain }: { chain: C }) {\n const decimals = BaseDecimal[chain];\n\n switch (chain) {\n case Chain.Arbitrum:\n return {\n chainName: \"Arbitrum One\",\n nativeCurrency: { name: \"Ethereum\", symbol: Chain.Ethereum, decimals },\n };\n case Chain.Avalanche:\n return {\n chainName: \"Avalanche Network\",\n nativeCurrency: { name: \"Avalanche\", symbol: chain, decimals },\n };\n case Chain.Base:\n return {\n chainName: \"Base Mainnet\",\n nativeCurrency: { name: \"Ethereum\", symbol: Chain.Ethereum, decimals },\n };\n case Chain.BinanceSmartChain:\n return {\n chainName: \"BNB Chain\",\n nativeCurrency: { name: \"Binance Coin\", symbol: \"BNB\", decimals },\n };\n case Chain.Polygon:\n return {\n chainName: \"Polygon Mainnet\",\n nativeCurrency: { name: \"Polygon\", symbol: Chain.Polygon, decimals },\n };\n default:\n throw new SwapKitError(\"toolbox_evm_not_supported\", { chain });\n }\n}\n",
7
+ "import {\n type Asset,\n type AssetValue,\n Chain,\n type ChainSigner,\n ContractAddress,\n type EVMChain,\n FeeOption,\n SwapKitError,\n SwapKitNumber,\n applyFeeMultiplierToBigInt,\n isGasAsset,\n} from \"@swapkit/helpers\";\nimport { erc20ABI } from \"@swapkit/helpers/contracts\";\nimport {\n BrowserProvider,\n Contract,\n type ContractTransaction,\n type Fragment,\n type HDNodeWallet,\n Interface,\n type JsonFragment,\n type JsonRpcSigner,\n type Provider,\n type Signer,\n getAddress,\n} from \"ethers\";\n\nimport { getL1GasPriceFetcher, toHexString } from \"../index\";\nimport type {\n ApproveParams,\n CallParams,\n EIP1559TxParams,\n EVMCreateTransactionParams,\n EVMTransferParams,\n EVMTxParams,\n EstimateCallParams,\n IsApprovedParams,\n LegacyEVMTxParams,\n} from \"../types\";\n\ntype ToolboxWrapParams<P = Provider | BrowserProvider, T = {}> = T & {\n isEIP1559Compatible?: boolean;\n provider: P;\n signer?: Signer;\n chain: EVMChain;\n};\n\nexport const MAX_APPROVAL = BigInt(\n \"0x7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff\",\n);\n\nexport function BaseEVMToolbox<\n P extends Provider | BrowserProvider,\n S extends\n | (ChainSigner<EVMTransferParams, string> & Signer)\n | JsonRpcSigner\n | HDNodeWallet\n | undefined,\n>({\n chain = Chain.Ethereum,\n provider,\n signer,\n isEIP1559Compatible = true,\n}: { signer: S; provider: P; isEIP1559Compatible?: boolean; chain?: EVMChain }) {\n return {\n getAddress: () => {\n return signer ? signer.getAddress() : undefined;\n },\n call: getCall({ provider, signer, isEIP1559Compatible, chain }),\n estimateCall: getEstimateCall({ provider, signer }),\n EIP1193SendTransaction: getEIP1193SendTransaction(provider),\n approve: getApprove({ provider, signer, isEIP1559Compatible, chain }),\n approvedAmount: getApprovedAmount({ provider, chain }),\n broadcastTransaction: provider.broadcastTransaction,\n createApprovalTx: getCreateApprovalTx({ provider, signer, chain }),\n createContract: getCreateContract({ provider, chain }),\n createContractTxObject: getCreateContractTxObject({ provider, chain }),\n createTransferTx: getCreateTransferTx({ provider, signer, chain }),\n createTransaction: getCreateTransferTx({ provider, signer, chain }),\n estimateGasLimit: getEstimateGasLimit({ provider, signer, chain }),\n estimateGasPrices: getEstimateGasPrices({ chain, provider, isEIP1559Compatible }),\n isApproved: getIsApproved({ provider, chain }),\n sendTransaction: getSendTransaction({ provider, signer, isEIP1559Compatible, chain }),\n signMessage: signer?.signMessage,\n transfer: getTransfer({ provider, signer, isEIP1559Compatible, chain }),\n validateAddress: (address: string) => evmValidateAddress({ address }),\n };\n}\n\nexport function evmValidateAddress({ address }: { address: string }) {\n try {\n getAddress(address);\n return true;\n } catch (_error) {\n return false;\n }\n}\n\nexport function isBrowserProvider(provider: any) {\n return provider instanceof BrowserProvider;\n}\n\nexport function createContract(\n address: string,\n abi: readonly (JsonFragment | Fragment)[],\n provider: Provider,\n) {\n return new Contract(address, Interface.from(abi), provider);\n}\n\nexport function getCreateContract({ provider }: ToolboxWrapParams) {\n return function createContract(address: string, abi: readonly (JsonFragment | Fragment)[]) {\n return new Contract(address, Interface.from(abi), provider);\n };\n}\n\nconst stateMutable = [\"payable\", \"nonpayable\"];\n// const nonStateMutable = ['view', 'pure'];\nexport function isStateChangingCall({\n abi,\n funcName,\n}: { abi: readonly JsonFragment[]; funcName: string }) {\n const abiFragment = abi.find((fragment: any) => fragment.name === funcName) as any;\n if (!abiFragment) throw new SwapKitError(\"toolbox_evm_no_abi_fragment\", { funcName });\n return abiFragment.stateMutability && stateMutable.includes(abiFragment.stateMutability);\n}\n\nexport function toChecksumAddress(address: string) {\n return getAddress(address);\n}\n\nexport function getEIP1193SendTransaction(provider: Provider | BrowserProvider) {\n return function EIP1193SendTransaction({\n value,\n ...params\n }: EVMTxParams | ContractTransaction): Promise<string> {\n if (!isBrowserProvider(provider)) {\n throw new SwapKitError(\"toolbox_evm_provider_not_eip1193_compatible\");\n }\n\n return (provider as BrowserProvider).send(\"eth_sendTransaction\", [\n { value: toHexString(BigInt(value || 0)), ...params } as any,\n ]);\n };\n}\n\nexport function getChecksumAddressFromAsset(asset: Asset, chain: EVMChain) {\n const assetAddress = getTokenAddress(asset, chain);\n\n if (assetAddress) {\n return getAddress(assetAddress.toLowerCase());\n }\n\n throw new SwapKitError(\"toolbox_evm_invalid_gas_asset_address\");\n}\n\nconst baseAssetAddress: Record<EVMChain, string> = {\n [Chain.Arbitrum]: ContractAddress.ARB,\n [Chain.Avalanche]: ContractAddress.AVAX,\n [Chain.Base]: ContractAddress.BASE,\n [Chain.BinanceSmartChain]: ContractAddress.BSC,\n [Chain.Ethereum]: ContractAddress.ETH,\n [Chain.Optimism]: ContractAddress.OP,\n [Chain.Polygon]: ContractAddress.MATIC,\n};\nexport function getTokenAddress({ chain, symbol, ticker }: Asset, baseAssetChain: EVMChain) {\n try {\n const isBSCBNB = chain === Chain.BinanceSmartChain && symbol === \"BNB\" && ticker === \"BNB\";\n const isBaseAsset =\n chain === baseAssetChain && symbol === baseAssetChain && ticker === baseAssetChain;\n const isEVMAsset =\n [Chain.Arbitrum, Chain.Base].includes(chain) && symbol === \"ETH\" && ticker === \"ETH\";\n\n if (isBaseAsset || isBSCBNB || isEVMAsset) {\n return baseAssetAddress[baseAssetChain];\n }\n\n // strip 0X only - 0x is still valid\n return getAddress(symbol.slice(ticker.length + 1).replace(/^0X/, \"\"));\n } catch (_error) {\n return null;\n }\n}\n\nexport function getCreateContractTxObject({ provider }: ToolboxWrapParams) {\n return async ({ contractAddress, abi, funcName, funcParams = [], txOverrides }: CallParams) =>\n createContract(contractAddress, abi, provider)\n .getFunction(funcName)\n .populateTransaction(\n ...funcParams.concat(txOverrides).filter((p) => typeof p !== \"undefined\"),\n );\n}\n\nexport function getEstimateGasPrices({\n chain,\n provider,\n isEIP1559Compatible = true,\n}: { provider: Provider; isEIP1559Compatible?: boolean; chain: EVMChain }): () => Promise<{\n [key in FeeOption]: {\n l1GasPrice?: bigint;\n gasPrice?: bigint;\n maxFeePerGas?: bigint;\n maxPriorityFeePerGas?: bigint;\n };\n}> {\n if (chain === Chain.Arbitrum) {\n return async function estimateGasPrices() {\n try {\n const { gasPrice } = await provider.getFeeData();\n\n if (!gasPrice) throw new SwapKitError(\"toolbox_evm_no_fee_data\");\n\n return {\n [FeeOption.Average]: { gasPrice },\n [FeeOption.Fast]: { gasPrice },\n [FeeOption.Fastest]: { gasPrice },\n };\n } catch (error) {\n throw new SwapKitError(\"toolbox_evm_gas_estimation_error\", {\n error: (error as any).msg ?? (error as any).toString(),\n });\n }\n };\n }\n\n if (chain === Chain.Optimism) {\n return async function estimateGasPrices() {\n try {\n const { maxFeePerGas, maxPriorityFeePerGas, gasPrice } = await provider.getFeeData();\n const l1GasPrice = getL1GasPriceFetcher(provider)();\n const price = gasPrice as bigint;\n\n if (!(maxFeePerGas && maxPriorityFeePerGas)) {\n throw new SwapKitError(\"toolbox_evm_no_fee_data\");\n }\n\n return {\n [FeeOption.Average]: {\n l1GasPrice,\n gasPrice: price,\n maxFeePerGas,\n maxPriorityFeePerGas,\n },\n [FeeOption.Fast]: {\n l1GasPrice: applyFeeMultiplierToBigInt(l1GasPrice || 0n, FeeOption.Fast),\n gasPrice: applyFeeMultiplierToBigInt(price, FeeOption.Fast),\n maxFeePerGas,\n maxPriorityFeePerGas: applyFeeMultiplierToBigInt(maxPriorityFeePerGas, FeeOption.Fast),\n },\n [FeeOption.Fastest]: {\n l1GasPrice: applyFeeMultiplierToBigInt(l1GasPrice || 0n, FeeOption.Fastest),\n gasPrice: applyFeeMultiplierToBigInt(price, FeeOption.Fastest),\n maxFeePerGas,\n maxPriorityFeePerGas: applyFeeMultiplierToBigInt(\n maxPriorityFeePerGas,\n FeeOption.Fastest,\n ),\n },\n };\n } catch (error) {\n throw new SwapKitError(\"toolbox_evm_gas_estimation_error\", {\n error: (error as any).msg ?? (error as any).toString(),\n });\n }\n };\n }\n\n return async function estimateGasPrices() {\n try {\n const { maxFeePerGas, maxPriorityFeePerGas, gasPrice } = await provider.getFeeData();\n\n if (isEIP1559Compatible) {\n if (maxFeePerGas === null || maxPriorityFeePerGas === null)\n throw new SwapKitError(\"toolbox_evm_no_fee_data\");\n\n return {\n [FeeOption.Average]: { maxFeePerGas, maxPriorityFeePerGas },\n [FeeOption.Fast]: {\n maxFeePerGas: applyFeeMultiplierToBigInt(maxFeePerGas, FeeOption.Fast),\n maxPriorityFeePerGas: applyFeeMultiplierToBigInt(maxPriorityFeePerGas, FeeOption.Fast),\n },\n [FeeOption.Fastest]: {\n maxFeePerGas: applyFeeMultiplierToBigInt(maxFeePerGas, FeeOption.Fastest),\n maxPriorityFeePerGas: applyFeeMultiplierToBigInt(\n maxPriorityFeePerGas,\n FeeOption.Fastest,\n ),\n },\n };\n }\n if (!gasPrice) throw new SwapKitError(\"toolbox_evm_no_gas_price\");\n\n return {\n [FeeOption.Average]: { gasPrice },\n [FeeOption.Fast]: { gasPrice: applyFeeMultiplierToBigInt(gasPrice, FeeOption.Fast) },\n [FeeOption.Fastest]: { gasPrice: applyFeeMultiplierToBigInt(gasPrice, FeeOption.Fastest) },\n };\n } catch (error) {\n throw new SwapKitError(\"toolbox_evm_gas_estimation_error\", {\n error: (error as any).msg ?? (error as any).toString(),\n });\n }\n };\n}\n\nfunction getCall({ provider, isEIP1559Compatible, signer, chain }: ToolboxWrapParams) {\n /**\n * @info call contract function\n * When using this method to make a non state changing call to the blockchain, like a isApproved call,\n * the signer needs to be set to undefined\n */\n // biome-ignore lint/complexity/noExcessiveCognitiveComplexity: TODO reduce complexity\n return async function call<T>({\n callProvider,\n contractAddress,\n abi,\n funcName,\n funcParams = [],\n txOverrides = {},\n feeOption = FeeOption.Fast,\n }: CallParams): Promise<T> {\n const contractProvider = callProvider || provider;\n if (!contractAddress)\n throw new SwapKitError(\"toolbox_evm_invalid_params\", {\n error: \"contractAddress must be provided\",\n });\n\n const isStateChanging = isStateChangingCall({ abi, funcName });\n\n if (isStateChanging && isBrowserProvider(contractProvider) && signer) {\n const createTx = getCreateContractTxObject({ provider: contractProvider, chain });\n const from = txOverrides?.from || (await signer?.getAddress());\n const txObject = await createTx({\n contractAddress,\n abi,\n funcName,\n funcParams,\n txOverrides: { ...txOverrides, from },\n });\n const sendTx = getEIP1193SendTransaction(contractProvider);\n\n return sendTx(txObject) as Promise<T>;\n }\n const contract = createContract(contractAddress, abi, contractProvider);\n\n // only use signer if the contract function is state changing\n if (isStateChanging) {\n if (!signer) throw new SwapKitError(\"toolbox_evm_no_signer\");\n\n const from = txOverrides?.from || (await signer.getAddress());\n if (!from) throw new SwapKitError(\"toolbox_evm_no_signer_address\");\n\n const connectedContract = contract.connect(signer);\n const estimateGasPrices = getEstimateGasPrices({\n provider,\n isEIP1559Compatible,\n chain: chain as Chain.Ethereum,\n });\n const { maxFeePerGas, maxPriorityFeePerGas, gasPrice } = (await estimateGasPrices())[\n feeOption\n ];\n\n const gasLimit = await contract.getFunction(funcName).estimateGas(...funcParams, txOverrides);\n\n // @ts-expect-error\n const result = await connectedContract[funcName](...funcParams, {\n ...txOverrides,\n gasLimit,\n maxFeePerGas,\n maxPriorityFeePerGas,\n gasPrice,\n /**\n * nonce must be set due to a possible bug with ethers.js,\n * expecting a synchronous nonce while the JsonRpcProvider delivers Promise\n */\n nonce: txOverrides?.nonce || (await contractProvider.getTransactionCount(from)),\n });\n\n return typeof result?.hash === \"string\" ? result?.hash : result;\n }\n\n const result = await contract[funcName]?.(...funcParams);\n\n return typeof result?.hash === \"string\" ? result?.hash : result;\n };\n}\n\nfunction getApprovedAmount({ provider, chain }: ToolboxWrapParams) {\n return function approveAmount({ assetAddress, spenderAddress, from }: IsApprovedParams) {\n const call = getCall({ provider, isEIP1559Compatible: true, chain });\n\n return call<bigint>({\n contractAddress: assetAddress,\n abi: erc20ABI,\n funcName: \"allowance\",\n funcParams: [from, spenderAddress],\n });\n };\n}\n\nfunction getIsApproved({ provider, chain }: ToolboxWrapParams) {\n return async function isApproved({\n assetAddress,\n spenderAddress,\n from,\n amount = MAX_APPROVAL,\n }: IsApprovedParams) {\n const approvedAmount = await getApprovedAmount({ provider, chain })({\n assetAddress,\n spenderAddress,\n from,\n });\n\n return SwapKitNumber.fromBigInt(approvedAmount).gte(SwapKitNumber.fromBigInt(BigInt(amount)));\n };\n}\n\nfunction getApprove({ signer, isEIP1559Compatible = true, provider, chain }: ToolboxWrapParams) {\n return async function approve({\n assetAddress,\n spenderAddress,\n feeOptionKey = FeeOption.Fast,\n amount,\n gasLimitFallback,\n from: fromParam,\n nonce,\n }: ApproveParams) {\n const funcParams = [spenderAddress, BigInt(amount || MAX_APPROVAL)];\n const from = (await signer?.getAddress()) || fromParam;\n\n const functionCallParams = {\n contractAddress: assetAddress,\n abi: erc20ABI,\n funcName: \"approve\",\n funcParams,\n signer,\n txOverrides: { from },\n };\n\n if (isBrowserProvider(provider)) {\n const createTx = getCreateContractTxObject({ provider, chain });\n const sendTx = getEIP1193SendTransaction(provider);\n const txObject = await createTx(functionCallParams);\n\n return sendTx(txObject);\n }\n\n const call = getCall({ provider, isEIP1559Compatible, signer, chain });\n\n return call<string>({\n ...functionCallParams,\n funcParams,\n txOverrides: {\n from,\n nonce,\n gasLimit: gasLimitFallback ? BigInt(gasLimitFallback.toString()) : undefined,\n },\n feeOption: feeOptionKey,\n });\n };\n}\n\nfunction getTransfer({ signer, isEIP1559Compatible = true, provider }: ToolboxWrapParams) {\n return async function transfer({\n assetValue,\n memo,\n recipient,\n feeOptionKey = FeeOption.Fast,\n sender,\n // data,\n // from: fromOverride,\n // maxFeePerGas,\n // maxPriorityFeePerGas,\n // gasPrice,\n ...tx\n }: EVMTransferParams) {\n const { hexlify, toUtf8Bytes } = await import(\"ethers\");\n const txAmount = assetValue.getBaseValue(\"bigint\");\n const chain = assetValue.chain as EVMChain;\n const from = sender || (await signer?.getAddress());\n const sendTx = getSendTransaction({ provider, signer, isEIP1559Compatible, chain });\n\n if (!from) throw new SwapKitError(\"toolbox_evm_no_from_address\");\n\n if (assetValue.isGasAsset) {\n const transaction = {\n ...tx,\n from,\n to: recipient,\n value: txAmount,\n data: hexlify(toUtf8Bytes(memo || \"\")),\n feeOptionKey,\n };\n\n return sendTx(transaction);\n }\n\n // const call = getCall({ signer, provider, isEIP1559Compatible });\n const contractAddress = getTokenAddress(assetValue, chain);\n if (!contractAddress) throw new SwapKitError(\"toolbox_evm_no_contract_address\");\n\n const { maxFeePerGas, maxPriorityFeePerGas, gasPrice } = (\n await getEstimateGasPrices({\n provider,\n isEIP1559Compatible,\n chain,\n })()\n )[feeOptionKey];\n\n const transaction = await getCreateTransferTx({ provider, signer, chain })({\n assetValue,\n memo,\n recipient,\n data: hexlify(toUtf8Bytes(memo || \"\")),\n sender: from,\n maxFeePerGas,\n maxPriorityFeePerGas,\n gasPrice,\n });\n\n return sendTx(transaction);\n };\n}\n\nfunction getEstimateCall({ provider, signer }: { signer?: Signer; provider: Provider }) {\n return function estimateCall({\n contractAddress,\n abi,\n funcName,\n funcParams = [],\n txOverrides,\n }: EstimateCallParams) {\n if (!contractAddress) throw new SwapKitError(\"toolbox_evm_no_contract_address\");\n\n const contract = createContract(contractAddress, abi, provider);\n return signer\n ? contract\n .connect(signer)\n .getFunction(funcName)\n .estimateGas(...funcParams, txOverrides)\n : contract.getFunction(funcName).estimateGas(...funcParams, txOverrides);\n };\n}\n\nfunction getEstimateGasLimit({ provider, signer }: ToolboxWrapParams) {\n return async function estimateGasLimit({\n assetValue,\n recipient,\n memo,\n data,\n sender,\n funcName,\n funcParams,\n txOverrides,\n }: EVMTransferParams & {\n assetValue: AssetValue;\n funcName?: string;\n funcParams?: unknown[];\n txOverrides?: EVMTxParams;\n data?: string;\n }) {\n // const value = assetValue.getBaseValue(\"bigint\");\n const value = assetValue.bigIntValue;\n\n const assetAddress = assetValue.isGasAsset\n ? null\n : getTokenAddress(assetValue, assetValue.chain as EVMChain);\n\n if (assetAddress && funcName) {\n const estimateCall = getEstimateCall({ provider, signer });\n // ERC20 gas estimate\n return estimateCall({\n contractAddress: assetAddress,\n abi: erc20ABI,\n funcName,\n funcParams,\n txOverrides,\n });\n }\n\n const { hexlify, toUtf8Bytes } = await import(\"ethers\");\n\n return provider.estimateGas({\n from: sender,\n to: recipient,\n value,\n data: data ? data : memo ? hexlify(toUtf8Bytes(memo)) : undefined,\n });\n };\n}\n\nconst isEIP1559Transaction = (tx: EVMTxParams) =>\n (tx as EIP1559TxParams).type === 2 ||\n !!(tx as EIP1559TxParams).maxFeePerGas ||\n !!(tx as EIP1559TxParams).maxPriorityFeePerGas;\n\nfunction getSendTransaction({\n provider,\n signer,\n isEIP1559Compatible = true,\n chain,\n}: ToolboxWrapParams) {\n // biome-ignore lint/complexity/noExcessiveCognitiveComplexity: TODO reduce complexity\n return async function sendTransaction({\n feeOptionKey = FeeOption.Fast,\n ...tx\n }: EVMTxParams & { feeOptionKey?: FeeOption }) {\n const { from, to, data, value, ...transaction } = tx;\n\n if (!signer) throw new SwapKitError(\"toolbox_evm_no_signer\");\n if (!to) throw new SwapKitError(\"toolbox_evm_no_to_address\");\n\n const parsedTxObject = {\n ...transaction,\n data: data || \"0x\",\n to,\n from,\n value: BigInt(value || 0),\n };\n\n // early return to skip gas estimation if provider is EIP-1193\n if (isBrowserProvider(provider)) {\n const sendTx = getEIP1193SendTransaction(provider);\n return sendTx(parsedTxObject);\n }\n\n const address = from || (await signer.getAddress());\n const nonce = tx.nonce || (await provider.getTransactionCount(address));\n const chainId = (await provider.getNetwork()).chainId;\n\n const isEIP1559 = isEIP1559Transaction(parsedTxObject) || isEIP1559Compatible;\n const estimateGasPrices = getEstimateGasPrices({ provider, isEIP1559Compatible, chain });\n\n const feeData =\n (isEIP1559 &&\n !(\n (parsedTxObject as EIP1559TxParams).maxFeePerGas &&\n (parsedTxObject as EIP1559TxParams).maxPriorityFeePerGas\n )) ||\n !(parsedTxObject as LegacyEVMTxParams).gasPrice\n ? Object.entries((await estimateGasPrices())[feeOptionKey]).reduce(\n // biome-ignore lint/performance/noAccumulatingSpread: this is a small object\n (acc, [k, v]) => ({ ...acc, [k]: toHexString(BigInt(v)) }),\n {} as {\n maxFeePerGas?: string;\n maxPriorityFeePerGas?: string;\n gasPrice?: string;\n },\n )\n : {};\n let gasLimit: string;\n try {\n gasLimit = toHexString(\n parsedTxObject.gasLimit || ((await provider.estimateGas(parsedTxObject)) * 11n) / 10n,\n );\n } catch (error) {\n throw new SwapKitError(\"toolbox_evm_error_estimating_gas_limit\", { error });\n }\n\n try {\n const txObject = {\n ...parsedTxObject,\n chainId,\n type: isEIP1559 ? 2 : 0,\n gasLimit,\n nonce,\n ...feeData,\n };\n\n try {\n const response = await signer.sendTransaction(txObject);\n return response.hash;\n } catch (_error) {\n const txHex = await signer.signTransaction({\n ...txObject,\n from: address,\n });\n const response = await provider.broadcastTransaction(txHex);\n return response.hash;\n }\n } catch (error) {\n throw new SwapKitError(\"toolbox_evm_error_sending_transaction\", { error });\n }\n };\n}\n\nfunction getCreateTransferTx({ provider, signer }: ToolboxWrapParams) {\n return async function createTransferTx({\n assetValue,\n memo,\n recipient,\n data,\n sender: fromOverride,\n maxFeePerGas,\n maxPriorityFeePerGas,\n gasPrice,\n ...tx\n }: EVMCreateTransactionParams) {\n const txAmount = assetValue.getBaseValue(\"bigint\");\n const chain = assetValue.chain as EVMChain;\n const from = fromOverride || (await signer?.getAddress());\n\n if (!from) throw new SwapKitError(\"toolbox_evm_no_from_address\");\n\n if (isGasAsset(assetValue)) {\n const { hexlify, toUtf8Bytes } = await import(\"ethers\");\n\n return {\n ...tx,\n from,\n to: recipient,\n value: txAmount,\n data: data || hexlify(toUtf8Bytes(memo || \"\")),\n };\n }\n\n const contractAddress = getTokenAddress(assetValue, chain);\n if (!contractAddress) throw new SwapKitError(\"toolbox_evm_no_contract_address\");\n const createTx = getCreateContractTxObject({ provider, chain: assetValue.chain as EVMChain });\n\n return createTx({\n contractAddress,\n abi: erc20ABI,\n funcName: \"transfer\",\n funcParams: [recipient, txAmount],\n txOverrides: { from, maxFeePerGas, maxPriorityFeePerGas, gasPrice },\n });\n };\n}\n\nfunction getCreateApprovalTx({ provider, signer, chain }: ToolboxWrapParams) {\n return async function createApprovalTx({\n assetAddress,\n spenderAddress,\n amount,\n from: fromParam,\n }: ApproveParams) {\n const from = (await signer?.getAddress()) || fromParam;\n\n const createTx = getCreateContractTxObject({ provider, chain });\n const funcParams = [spenderAddress, BigInt(amount || MAX_APPROVAL)];\n\n const txObject = await createTx({\n contractAddress: assetAddress,\n abi: erc20ABI,\n funcName: \"approve\",\n funcParams,\n txOverrides: { from },\n });\n\n return txObject;\n };\n}\n",
8
+ "import type {\n AssetValue,\n ChainSigner,\n DerivationPathArray,\n FeeOption,\n GenericCreateTransactionParams,\n GenericTransferParams,\n} from \"@swapkit/helpers\";\nimport { Chain } from \"@swapkit/helpers\";\nimport type {\n BigNumberish,\n BrowserProvider,\n JsonFragment,\n JsonRpcProvider,\n JsonRpcSigner,\n Signer,\n Transaction,\n} from \"ethers\";\nimport type {\n ARBToolbox,\n AVAXToolbox,\n BASEToolbox,\n BSCToolbox,\n ETHToolbox,\n MATICToolbox,\n OPToolbox,\n} from \"./toolbox\";\n\nimport type { getProvider } from \"./index\";\n\nexport enum EthNetwork {\n Test = \"goerli\",\n Main = \"homestead\",\n}\n\nexport type ApproveParams = {\n assetAddress: string;\n spenderAddress: string;\n feeOptionKey?: FeeOption;\n amount?: BigNumberish;\n from?: string;\n // Optional fallback in case estimation for gas limit fails\n gasLimitFallback?: BigNumberish;\n nonce?: number;\n};\n\nexport type ApprovedParams = {\n assetAddress: string;\n spenderAddress: string;\n from: string;\n};\n\nexport type IsApprovedParams = ApprovedParams & {\n amount?: BigNumberish;\n};\n\nexport type CallParams = {\n callProvider?: Awaited<ReturnType<typeof getProvider>>;\n contractAddress: string;\n abi: readonly JsonFragment[];\n funcName: string;\n funcParams?: unknown[];\n txOverrides?: Partial<Transaction>;\n feeOption?: FeeOption;\n};\n\nexport type EstimateCallParams = Pick<\n CallParams,\n \"contractAddress\" | \"abi\" | \"funcName\" | \"funcParams\" | \"txOverrides\"\n>;\n\nexport type EVMTransferParams = GenericTransferParams & {\n sender?: string;\n};\n\nexport type EVMCreateTransactionParams = Omit<GenericCreateTransactionParams, \"feeRate\"> & {\n gasLimit?: bigint;\n gasPrice?: bigint;\n maxFeePerGas?: bigint;\n maxPriorityFeePerGas?: bigint;\n data?: string;\n nonce?: number;\n};\n\nexport type EVMMaxSendableAmountsParams = {\n from: string;\n assetValue: AssetValue;\n feeOptionKey?: FeeOption;\n memo?: string;\n abi?: readonly JsonFragment[];\n funcName?: string;\n contractAddress?: string;\n funcParams?: unknown[];\n txOverrides?: Partial<Transaction>;\n};\n\nexport type EVMTxBaseParams<T = bigint> = {\n to?: string;\n from?: string;\n nonce?: number;\n gasLimit?: T;\n data?: string;\n value?: T;\n chainId?: T;\n};\n\nexport type EIP1559TxParams<T = bigint> = EVMTxBaseParams<T> & {\n type?: number;\n maxFeePerGas?: T;\n maxPriorityFeePerGas?: T;\n};\n\nexport type LegacyEVMTxParams<T = bigint> = EVMTxBaseParams<T> & {\n gasPrice?: T;\n};\n\nexport type EVMTxParams = EIP1559TxParams | LegacyEVMTxParams;\n\nexport type EVMToolboxParams = {\n provider?: BrowserProvider | JsonRpcProvider;\n} & (\n | {\n signer?: (ChainSigner<EVMTransferParams, string> & Signer) | JsonRpcSigner;\n }\n | {\n phrase?: string;\n derivationPath?: DerivationPathArray;\n index?: number;\n }\n);\n\nexport type EVMToolboxes = {\n [Chain.Arbitrum]: Awaited<ReturnType<typeof ARBToolbox>>;\n [Chain.Avalanche]: Awaited<ReturnType<typeof AVAXToolbox>>;\n [Chain.Base]: Awaited<ReturnType<typeof BASEToolbox>>;\n [Chain.BinanceSmartChain]: Awaited<ReturnType<typeof BSCToolbox>>;\n [Chain.Ethereum]: Awaited<ReturnType<typeof ETHToolbox>>;\n [Chain.Optimism]: Awaited<ReturnType<typeof OPToolbox>>;\n [Chain.Polygon]: Awaited<ReturnType<typeof MATICToolbox>>;\n};\n",
9
+ "import { Chain, type EVMChain, SwapKitError } from \"@swapkit/helpers\";\n\nimport { getProvider } from \"../helpers\";\nimport type { EVMToolboxParams } from \"../types\";\nimport { ARBToolbox, AVAXToolbox, BASEToolbox, BSCToolbox, ETHToolbox, MATICToolbox } from \"./evm\";\nimport { OPToolbox } from \"./op\";\n\nexport async function getEvmToolbox<T extends EVMChain>(chain: T, params?: EVMToolboxParams) {\n const toolboxParams = {\n ...params,\n provider: params?.provider || (await getProvider(chain)),\n };\n\n switch (chain) {\n case Chain.Avalanche:\n return AVAXToolbox(toolboxParams);\n case Chain.Arbitrum:\n return ARBToolbox(toolboxParams);\n case Chain.Base:\n return BASEToolbox(toolboxParams);\n case Chain.Optimism:\n return OPToolbox(toolboxParams);\n case Chain.Polygon:\n return MATICToolbox(toolboxParams);\n case Chain.BinanceSmartChain:\n return BSCToolbox(toolboxParams);\n case Chain.Ethereum:\n return ETHToolbox(toolboxParams);\n default:\n throw new SwapKitError(\"toolbox_evm_not_supported\", { chain });\n }\n}\n\nexport * from \"./baseEVMToolbox\";\nexport * from \"./evm\";\nexport * from \"./op\";\n",
10
+ "import { Chain, type EVMChain, FeeOption, SKConfig } from \"@swapkit/helpers\";\nimport { HDNodeWallet } from \"ethers\";\nimport { P, match } from \"ts-pattern\";\nimport { getEvmApi } from \"../api\";\nimport { multicallAbi } from \"../contracts/eth/multicall\";\nimport {\n getEstimateTransactionFee,\n getIsEIP1559Compatible,\n getNetworkParams,\n getProvider,\n} from \"../helpers\";\nimport type { EVMToolboxParams } from \"../types\";\nimport { BaseEVMToolbox } from \"./baseEVMToolbox\";\n\nexport async function ETHToolbox({ provider, ...signer }: EVMToolboxParams) {\n const evmToolbox = await createEvmToolbox(Chain.Ethereum)({\n provider,\n ...signer,\n });\n async function multicall(\n callTuples: { address: string; data: string }[],\n multicallAddress = \"0x5ba1e12693dc8f9c48aad8770482f4739beed696\",\n funcName = \"aggregate\",\n feeOptionKey: FeeOption = FeeOption.Fast,\n ) {\n const txObject = await evmToolbox.createContractTxObject({\n contractAddress: multicallAddress,\n abi: multicallAbi,\n funcName,\n funcParams: [callTuples],\n });\n\n return evmToolbox.sendTransaction({ ...txObject, feeOptionKey });\n }\n\n return { ...evmToolbox, multicall };\n}\n\nexport const ARBToolbox = createEvmToolbox(Chain.Arbitrum);\nexport const AVAXToolbox = createEvmToolbox(Chain.Avalanche);\nexport const BASEToolbox = createEvmToolbox(Chain.Base);\nexport const BSCToolbox = createEvmToolbox(Chain.BinanceSmartChain);\nexport const MATICToolbox = createEvmToolbox(Chain.Polygon);\n\nfunction createEvmToolbox<C extends EVMChain>(chain: C) {\n return async function createEvmToolbox({\n provider: providerParam,\n ...toolboxSignerParams\n }: EVMToolboxParams) {\n const rpcUrl = SKConfig.get(\"rpcUrls\")[chain];\n\n const provider = providerParam || (await getProvider(chain, rpcUrl));\n\n const isEIP1559Compatible = getIsEIP1559Compatible(chain);\n const signer = match(toolboxSignerParams)\n .with({ phrase: P.string }, ({ phrase }) => HDNodeWallet.fromPhrase(phrase).connect(provider))\n .with({ signer: P.any }, ({ signer }) => signer)\n .otherwise(() => undefined);\n\n const evmToolbox = BaseEVMToolbox({ provider, signer, isEIP1559Compatible, chain });\n\n return {\n ...evmToolbox,\n estimateTransactionFee: getEstimateTransactionFee({ provider, isEIP1559Compatible, chain }),\n getNetworkParams: getNetworkParams(chain),\n getBalance: getEvmApi(chain).getBalance,\n };\n };\n}\n",
11
+ "export const multicallAbi = [\n {\n inputs: [\n {\n components: [\n { internalType: \"address\", name: \"target\", type: \"address\" },\n { internalType: \"bytes\", name: \"callData\", type: \"bytes\" },\n ],\n internalType: \"struct Multicall2.Call[]\",\n name: \"calls\",\n type: \"tuple[]\",\n },\n ],\n name: \"aggregate\",\n outputs: [\n { internalType: \"uint256\", name: \"blockNumber\", type: \"uint256\" },\n { internalType: \"bytes[]\", name: \"returnData\", type: \"bytes[]\" },\n ],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [\n {\n components: [\n { internalType: \"address\", name: \"target\", type: \"address\" },\n { internalType: \"bytes\", name: \"callData\", type: \"bytes\" },\n ],\n internalType: \"struct Multicall2.Call[]\",\n name: \"calls\",\n type: \"tuple[]\",\n },\n ],\n name: \"blockAndAggregate\",\n outputs: [\n { internalType: \"uint256\", name: \"blockNumber\", type: \"uint256\" },\n { internalType: \"bytes32\", name: \"blockHash\", type: \"bytes32\" },\n {\n components: [\n { internalType: \"bool\", name: \"success\", type: \"bool\" },\n { internalType: \"bytes\", name: \"returnData\", type: \"bytes\" },\n ],\n internalType: \"struct Multicall2.Result[]\",\n name: \"returnData\",\n type: \"tuple[]\",\n },\n ],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [{ internalType: \"uint256\", name: \"blockNumber\", type: \"uint256\" }],\n name: \"getBlockHash\",\n outputs: [{ internalType: \"bytes32\", name: \"blockHash\", type: \"bytes32\" }],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [],\n name: \"getBlockNumber\",\n outputs: [{ internalType: \"uint256\", name: \"blockNumber\", type: \"uint256\" }],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [],\n name: \"getCurrentBlockCoinbase\",\n outputs: [{ internalType: \"address\", name: \"coinbase\", type: \"address\" }],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [],\n name: \"getCurrentBlockDifficulty\",\n outputs: [{ internalType: \"uint256\", name: \"difficulty\", type: \"uint256\" }],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [],\n name: \"getCurrentBlockGasLimit\",\n outputs: [{ internalType: \"uint256\", name: \"gaslimit\", type: \"uint256\" }],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [],\n name: \"getCurrentBlockTimestamp\",\n outputs: [{ internalType: \"uint256\", name: \"timestamp\", type: \"uint256\" }],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [{ internalType: \"address\", name: \"addr\", type: \"address\" }],\n name: \"getEthBalance\",\n outputs: [{ internalType: \"uint256\", name: \"balance\", type: \"uint256\" }],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [],\n name: \"getLastBlockHash\",\n outputs: [{ internalType: \"bytes32\", name: \"blockHash\", type: \"bytes32\" }],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [\n { internalType: \"bool\", name: \"requireSuccess\", type: \"bool\" },\n {\n components: [\n { internalType: \"address\", name: \"target\", type: \"address\" },\n { internalType: \"bytes\", name: \"callData\", type: \"bytes\" },\n ],\n internalType: \"struct Multicall2.Call[]\",\n name: \"calls\",\n type: \"tuple[]\",\n },\n ],\n name: \"tryAggregate\",\n outputs: [\n {\n components: [\n { internalType: \"bool\", name: \"success\", type: \"bool\" },\n { internalType: \"bytes\", name: \"returnData\", type: \"bytes\" },\n ],\n internalType: \"struct Multicall2.Result[]\",\n name: \"returnData\",\n type: \"tuple[]\",\n },\n ],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [\n { internalType: \"bool\", name: \"requireSuccess\", type: \"bool\" },\n {\n components: [\n { internalType: \"address\", name: \"target\", type: \"address\" },\n { internalType: \"bytes\", name: \"callData\", type: \"bytes\" },\n ],\n internalType: \"struct Multicall2.Call[]\",\n name: \"calls\",\n type: \"tuple[]\",\n },\n ],\n name: \"tryBlockAndAggregate\",\n outputs: [\n { internalType: \"uint256\", name: \"blockNumber\", type: \"uint256\" },\n { internalType: \"bytes32\", name: \"blockHash\", type: \"bytes32\" },\n {\n components: [\n { internalType: \"bool\", name: \"success\", type: \"bool\" },\n { internalType: \"bytes\", name: \"returnData\", type: \"bytes\" },\n ],\n internalType: \"struct Multicall2.Result[]\",\n name: \"returnData\",\n type: \"tuple[]\",\n },\n ],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n];\n",
12
+ "import {\n BaseDecimal,\n Chain,\n ChainId,\n ChainToExplorerUrl,\n SKConfig,\n SwapKitError,\n} from \"@swapkit/helpers\";\nimport type {\n Authorization,\n BrowserProvider,\n JsonRpcProvider,\n Provider,\n TransactionRequest,\n} from \"ethers\";\nimport { Contract, HDNodeWallet } from \"ethers\";\n\nimport { P } from \"ts-pattern\";\nimport { match } from \"ts-pattern\";\nimport { getEvmApi } from \"../api\";\nimport { gasOracleAbi } from \"../contracts/op/gasOracle\";\nimport { getProvider } from \"../helpers\";\nimport type { EVMToolboxParams } from \"../types\";\nimport { BaseEVMToolbox } from \"./baseEVMToolbox\";\n\nconst GAS_PRICE_ORACLE_ADDRESS = \"0x420000000000000000000000000000000000000f\";\n\nfunction connectGasPriceOracle<P extends Provider>(provider: P) {\n return new Contract(GAS_PRICE_ORACLE_ADDRESS, gasOracleAbi, provider);\n}\n\nexport function getL1GasPriceFetcher<P extends Provider>(provider: P) {\n return function getL1GasPrice() {\n const gasPriceOracle = connectGasPriceOracle(provider);\n\n if (gasPriceOracle && \"l1BaseFee\" in gasPriceOracle) {\n return gasPriceOracle?.l1BaseFee() as unknown as bigint;\n }\n\n return undefined;\n };\n}\n\nfunction serializeTx<P extends JsonRpcProvider | BrowserProvider>(provider: P) {\n return async function serializeTx({ from, to, nonce, ...tx }: TransactionRequest) {\n const { Transaction } = await import(\"ethers\");\n\n if (!to)\n throw new SwapKitError(\"toolbox_evm_invalid_transaction\", { error: \"Missing to address\" });\n\n return Transaction.from({\n ...tx,\n authorizationList: tx.authorizationList as Authorization[],\n to: to as string,\n nonce: nonce ? nonce : from ? await provider.getTransactionCount(from) : 0,\n }).serialized;\n };\n}\n\nfunction estimateL1GasCost<P extends JsonRpcProvider | BrowserProvider>(provider: P) {\n return async function estimateL1GasCost(tx: TransactionRequest) {\n const gasPriceOracle = connectGasPriceOracle(provider);\n const serializedTx = await serializeTx(provider)(tx);\n\n if (gasPriceOracle && \"getL1Fee\" in gasPriceOracle) {\n return gasPriceOracle.getL1Fee(serializedTx);\n }\n };\n}\n\nfunction estimateL2GasCost<P extends JsonRpcProvider | BrowserProvider>(provider: P) {\n return async function estimateL2GasCost(tx: TransactionRequest) {\n const l2GasPrice = await provider.send(\"eth_gasPrice\", []);\n const l2GasCost = await provider.estimateGas(tx);\n return l2GasPrice.mul(l2GasCost);\n };\n}\n\nfunction estimateTotalGasCost<P extends JsonRpcProvider | BrowserProvider>(provider: P) {\n return async function estimateTotalGasCost(tx: TransactionRequest) {\n const l1GasCost = await estimateL1GasCost(provider)(tx);\n const l2GasCost = await estimateL2GasCost(provider)(tx);\n return l1GasCost.add(l2GasCost);\n };\n}\n\nexport function estimateL1Gas<P extends JsonRpcProvider | BrowserProvider>(provider: P) {\n return async function estimateL1Gas(tx: TransactionRequest) {\n const gasPriceOracle = connectGasPriceOracle(provider);\n const serializedTx = await serializeTx(provider)(tx);\n\n if (gasPriceOracle && \"getL1GasUsed\" in gasPriceOracle) {\n return gasPriceOracle.getL1GasUsed(serializedTx);\n }\n };\n}\n\nconst getNetworkParams = () => ({\n chainId: ChainId.OptimismHex,\n chainName: \"Optimism\",\n nativeCurrency: { name: \"Ethereum\", symbol: Chain.Ethereum, decimals: BaseDecimal.ETH },\n rpcUrls: [SKConfig.get(\"rpcUrls\")[Chain.Optimism]],\n blockExplorerUrls: [ChainToExplorerUrl[Chain.Optimism]],\n});\n\nexport async function OPToolbox({\n provider: providerParam,\n ...toolboxSignerParams\n}: EVMToolboxParams) {\n const chain = Chain.Optimism;\n const rpcUrl = SKConfig.get(\"rpcUrls\")[chain];\n const provider = providerParam || (await getProvider(chain, rpcUrl));\n const signer = match(toolboxSignerParams)\n .with({ phrase: P.string }, ({ phrase }) => HDNodeWallet.fromPhrase(phrase).connect(provider))\n .with({ signer: P.any }, ({ signer }) => signer)\n .otherwise(() => undefined);\n\n const evmToolbox = BaseEVMToolbox({ provider, signer });\n const getL1GasPrice = getL1GasPriceFetcher(provider);\n\n return {\n ...evmToolbox,\n estimateL1Gas: estimateL1Gas(provider),\n estimateL1GasCost: estimateL1GasCost(provider),\n estimateL2GasCost: estimateL2GasCost(provider),\n estimateTotalGasCost: estimateTotalGasCost(provider),\n getBalance: getEvmApi(Chain.Optimism).getBalance,\n getL1GasPrice,\n getNetworkParams,\n };\n}\n",
13
+ "export const gasOracleAbi = [\n {\n inputs: [{ internalType: \"address\", name: \"_owner\", type: \"address\" }],\n stateMutability: \"nonpayable\",\n type: \"constructor\",\n },\n {\n anonymous: false,\n inputs: [{ indexed: false, internalType: \"uint256\", name: \"\", type: \"uint256\" }],\n name: \"DecimalsUpdated\",\n type: \"event\",\n },\n {\n anonymous: false,\n inputs: [{ indexed: false, internalType: \"uint256\", name: \"\", type: \"uint256\" }],\n name: \"GasPriceUpdated\",\n type: \"event\",\n },\n {\n anonymous: false,\n inputs: [{ indexed: false, internalType: \"uint256\", name: \"\", type: \"uint256\" }],\n name: \"L1BaseFeeUpdated\",\n type: \"event\",\n },\n {\n anonymous: false,\n inputs: [{ indexed: false, internalType: \"uint256\", name: \"\", type: \"uint256\" }],\n name: \"OverheadUpdated\",\n type: \"event\",\n },\n {\n anonymous: false,\n inputs: [\n { indexed: true, internalType: \"address\", name: \"previousOwner\", type: \"address\" },\n { indexed: true, internalType: \"address\", name: \"newOwner\", type: \"address\" },\n ],\n name: \"OwnershipTransferred\",\n type: \"event\",\n },\n {\n anonymous: false,\n inputs: [{ indexed: false, internalType: \"uint256\", name: \"\", type: \"uint256\" }],\n name: \"ScalarUpdated\",\n type: \"event\",\n },\n {\n inputs: [],\n name: \"decimals\",\n outputs: [{ internalType: \"uint256\", name: \"\", type: \"uint256\" }],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [],\n name: \"gasPrice\",\n outputs: [{ internalType: \"uint256\", name: \"\", type: \"uint256\" }],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [{ internalType: \"bytes\", name: \"_data\", type: \"bytes\" }],\n name: \"getL1Fee\",\n outputs: [{ internalType: \"uint256\", name: \"\", type: \"uint256\" }],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [{ internalType: \"bytes\", name: \"_data\", type: \"bytes\" }],\n name: \"getL1GasUsed\",\n outputs: [{ internalType: \"uint256\", name: \"\", type: \"uint256\" }],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [],\n name: \"l1BaseFee\",\n outputs: [{ internalType: \"uint256\", name: \"\", type: \"uint256\" }],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [],\n name: \"overhead\",\n outputs: [{ internalType: \"uint256\", name: \"\", type: \"uint256\" }],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [],\n name: \"owner\",\n outputs: [{ internalType: \"address\", name: \"\", type: \"address\" }],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [],\n name: \"renounceOwnership\",\n outputs: [],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [],\n name: \"scalar\",\n outputs: [{ internalType: \"uint256\", name: \"\", type: \"uint256\" }],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [{ internalType: \"uint256\", name: \"_decimals\", type: \"uint256\" }],\n name: \"setDecimals\",\n outputs: [],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [{ internalType: \"uint256\", name: \"_gasPrice\", type: \"uint256\" }],\n name: \"setGasPrice\",\n outputs: [],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [{ internalType: \"uint256\", name: \"_baseFee\", type: \"uint256\" }],\n name: \"setL1BaseFee\",\n outputs: [],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [{ internalType: \"uint256\", name: \"_overhead\", type: \"uint256\" }],\n name: \"setOverhead\",\n outputs: [],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [{ internalType: \"uint256\", name: \"_scalar\", type: \"uint256\" }],\n name: \"setScalar\",\n outputs: [],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [{ internalType: \"address\", name: \"newOwner\", type: \"address\" }],\n name: \"transferOwnership\",\n outputs: [],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n];\n"
14
+ ],
15
+ "mappings": "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",
16
+ "debugId": "4FF5D94E59789B6C64756E2164756E21",
17
+ "names": []
18
+ }
@@ -0,0 +1,4 @@
1
+ var g={};u(g,{getToolbox:()=>x,getFeeEstimator:()=>f,getAddressValidator:()=>d});module.exports=C(g);var o=require("@swapkit/helpers");async function d(){let{match:r}=await import("ts-pattern"),{cosmosValidateAddress:i}=await import("@swapkit/toolboxes/cosmos"),{evmValidateAddress:n}=await import("@swapkit/toolboxes/evm"),{substrateValidateAddress:a}=await import("@swapkit/toolboxes/substrate"),{getUTXOAddressValidator:e}=await import("@swapkit/toolboxes/utxo"),{getSolanaAddressValidator:l}=await import("@swapkit/toolboxes/solana"),{validateNearAddress:p}=await import("@swapkit/toolboxes/near"),{rippleValidateAddress:m}=await import("@swapkit/toolboxes/ripple"),{radixValidateAddress:c}=await import("@swapkit/toolboxes/radix"),{getTronAddressValidator:b}=await import("@swapkit/toolboxes/tron"),y=await l(),h=await e(),w=await b();return function P({address:s,chain:T}){return r(T).with(o.Chain.Arbitrum,o.Chain.Avalanche,o.Chain.Optimism,o.Chain.BinanceSmartChain,o.Chain.Base,o.Chain.Polygon,o.Chain.Ethereum,()=>n({address:s})).with(o.Chain.Litecoin,o.Chain.Dash,o.Chain.Dogecoin,o.Chain.BitcoinCash,o.Chain.Bitcoin,()=>h({address:s,chain:T})).with(o.Chain.Cosmos,o.Chain.Kujira,o.Chain.Maya,o.Chain.THORChain,()=>i({address:s,chain:T})).with(o.Chain.Chainflip,o.Chain.Polkadot,()=>a({address:s,chain:T})).with(o.Chain.Radix,()=>c(s)).with(o.Chain.Near,()=>p(s)).with(o.Chain.Ripple,()=>m(s)).with(o.Chain.Solana,()=>y(s)).with(o.Chain.Tron,()=>w(s)).otherwise(()=>!1)}}function f(r){return async function i(n){let{match:a}=await import("ts-pattern");return a(r).returnType().with(o.Chain.Arbitrum,o.Chain.Avalanche,o.Chain.Optimism,o.Chain.BinanceSmartChain,o.Chain.Base,o.Chain.Polygon,o.Chain.Ethereum,async(e)=>{let l=await x(e),p=await l.createTransaction(n);return l.estimateTransactionFee({...p,feeOption:n.feeOptionKey||o.FeeOption.Fast,chain:e})}).with(o.Chain.Bitcoin,o.Chain.BitcoinCash,o.Chain.Dogecoin,o.Chain.Dash,o.Chain.Litecoin,o.Chain.Polkadot,o.Chain.Solana,o.Chain.Ripple,o.Chain.Tron,o.Chain.Near,async(e)=>{return(await x(e)).estimateTransactionFee(n)}).with(o.Chain.THORChain,o.Chain.Maya,o.Chain.Kujira,o.Chain.Cosmos,async()=>{let{estimateTransactionFee:e}=await import("@swapkit/toolboxes/cosmos");return e(n)}).otherwise(async()=>o.AssetValue.from({chain:r}))}}async function x(r,i){let{match:n}=await import("ts-pattern");return n(r).returnType().with(o.Chain.Arbitrum,o.Chain.Avalanche,o.Chain.Optimism,o.Chain.BinanceSmartChain,o.Chain.Base,o.Chain.Polygon,o.Chain.Ethereum,async()=>{let{getEvmToolbox:a}=await import("@swapkit/toolboxes/evm");return await a(r,i)}).with(o.Chain.Litecoin,o.Chain.Dash,o.Chain.Dogecoin,o.Chain.BitcoinCash,o.Chain.Bitcoin,o.Chain.Zcash,async()=>{let{getUtxoToolbox:a}=await import("@swapkit/toolboxes/utxo");return await a(r,i)}).with(o.Chain.Cosmos,o.Chain.Kujira,o.Chain.Maya,o.Chain.THORChain,async()=>{let{getCosmosToolbox:a}=await import("@swapkit/toolboxes/cosmos");return await a(r,i)}).with(o.Chain.Chainflip,o.Chain.Polkadot,async()=>{let{getSubstrateToolbox:a}=await import("@swapkit/toolboxes/substrate");return await a(r,i)}).with(o.Chain.Radix,async()=>{let{RadixToolbox:a}=await import("@swapkit/toolboxes/radix");return await a(i)}).with(o.Chain.Ripple,async()=>{let{getRippleToolbox:a}=await import("@swapkit/toolboxes/ripple");return await a(i)}).with(o.Chain.Solana,async()=>{let{getSolanaToolbox:a}=await import("@swapkit/toolboxes/solana");return await a(i)}).with(o.Chain.Tron,async()=>{let{createTronToolbox:a}=await import("@swapkit/toolboxes/tron");return await a(i)}).with(o.Chain.Near,async()=>{let{getNearToolbox:a}=await import("@swapkit/toolboxes/near");return await a(i)}).otherwise(()=>{throw new o.SwapKitError("toolbox_not_supported",{chain:r})})}
2
+
3
+ //# debugId=E213B61B029A580264756E2164756E21
4
+ //# sourceMappingURL=index.cjs.map
@@ -0,0 +1,10 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../src/index.ts"],
4
+ "sourcesContent": [
5
+ "import {\n AssetValue,\n Chain,\n type CosmosChain,\n type EVMChain,\n FeeOption,\n type GenericCreateTransactionParams,\n type SubstrateChain,\n SwapKitError,\n type UTXOChain,\n} from \"@swapkit/helpers\";\nimport type { getCosmosToolbox } from \"@swapkit/toolboxes/cosmos\";\n\nimport type { ETHToolbox, EVMCreateTransactionParams, getEvmToolbox } from \"@swapkit/toolboxes/evm\";\nimport type { getNearToolbox } from \"@swapkit/toolboxes/near\";\nimport type { RadixToolbox } from \"@swapkit/toolboxes/radix\";\nimport type { getRippleToolbox } from \"@swapkit/toolboxes/ripple\";\nimport type { SolanaCreateTransactionParams, getSolanaToolbox } from \"@swapkit/toolboxes/solana\";\nimport type { getSubstrateToolbox } from \"@swapkit/toolboxes/substrate\";\nimport type { createTronToolbox } from \"@swapkit/toolboxes/tron\";\nimport type { getUtxoToolbox } from \"@swapkit/toolboxes/utxo\";\n\nexport async function getAddressValidator() {\n const { match } = await import(\"ts-pattern\");\n const { cosmosValidateAddress } = await import(\"@swapkit/toolboxes/cosmos\");\n const { evmValidateAddress } = await import(\"@swapkit/toolboxes/evm\");\n const { substrateValidateAddress } = await import(\"@swapkit/toolboxes/substrate\");\n const { getUTXOAddressValidator } = await import(\"@swapkit/toolboxes/utxo\");\n const { getSolanaAddressValidator } = await import(\"@swapkit/toolboxes/solana\");\n const { validateNearAddress } = await import(\"@swapkit/toolboxes/near\");\n const { rippleValidateAddress } = await import(\"@swapkit/toolboxes/ripple\");\n const { radixValidateAddress } = await import(\"@swapkit/toolboxes/radix\");\n const { getTronAddressValidator } = await import(\"@swapkit/toolboxes/tron\");\n\n const solanaValidateAddress = await getSolanaAddressValidator();\n const utxoValidateAddress = await getUTXOAddressValidator();\n const tronValidateAddress = await getTronAddressValidator();\n\n return function validateAddress({ address, chain }: { address: string; chain: Chain }) {\n const isValid = match(chain)\n .with(\n Chain.Arbitrum,\n Chain.Avalanche,\n Chain.Optimism,\n Chain.BinanceSmartChain,\n Chain.Base,\n Chain.Polygon,\n Chain.Ethereum,\n () => evmValidateAddress({ address }),\n )\n .with(Chain.Litecoin, Chain.Dash, Chain.Dogecoin, Chain.BitcoinCash, Chain.Bitcoin, () =>\n utxoValidateAddress({ address, chain: chain as UTXOChain }),\n )\n .with(Chain.Cosmos, Chain.Kujira, Chain.Maya, Chain.THORChain, () =>\n cosmosValidateAddress({ address, chain: chain as CosmosChain }),\n )\n .with(Chain.Chainflip, Chain.Polkadot, () =>\n substrateValidateAddress({ address, chain: chain as SubstrateChain }),\n )\n .with(Chain.Radix, () => radixValidateAddress(address))\n .with(Chain.Near, () => validateNearAddress(address))\n .with(Chain.Ripple, () => rippleValidateAddress(address))\n .with(Chain.Solana, () => solanaValidateAddress(address))\n .with(Chain.Tron, () => tronValidateAddress(address))\n .otherwise(() => false);\n\n return isValid;\n };\n}\n\nexport function getFeeEstimator<T extends keyof CreateTransactionParams>(chain: T) {\n return async function estimateFee(params: CreateTransactionParams[T]) {\n const { match } = await import(\"ts-pattern\");\n\n return match(chain as Chain)\n .returnType<Promise<AssetValue>>()\n .with(\n Chain.Arbitrum,\n Chain.Avalanche,\n Chain.Optimism,\n Chain.BinanceSmartChain,\n Chain.Base,\n Chain.Polygon,\n Chain.Ethereum,\n async (chain) => {\n const toolbox = await getToolbox(chain);\n const txObject = await toolbox.createTransaction(params);\n\n return (toolbox as Awaited<ReturnType<typeof ETHToolbox>>).estimateTransactionFee({\n ...txObject,\n feeOption: params.feeOptionKey || FeeOption.Fast,\n chain,\n });\n },\n )\n .with(\n Chain.Bitcoin,\n Chain.BitcoinCash,\n Chain.Dogecoin,\n Chain.Dash,\n Chain.Litecoin,\n Chain.Polkadot,\n Chain.Solana,\n Chain.Ripple,\n Chain.Tron,\n Chain.Near,\n async (chain) => {\n const toolbox = await getToolbox(chain);\n return toolbox.estimateTransactionFee(params) as Promise<AssetValue>;\n },\n )\n .with(Chain.THORChain, Chain.Maya, Chain.Kujira, Chain.Cosmos, async () => {\n const { estimateTransactionFee } = await import(\"@swapkit/toolboxes/cosmos\");\n return estimateTransactionFee(params);\n })\n .otherwise(async () => AssetValue.from({ chain }));\n };\n}\n\ntype Toolboxes = {\n [key in EVMChain]: Awaited<ReturnType<typeof getEvmToolbox>>;\n} & {\n [key in UTXOChain]: Awaited<ReturnType<typeof getUtxoToolbox>>;\n} & {\n [key in CosmosChain]: Awaited<ReturnType<typeof getCosmosToolbox>>;\n} & {\n [key in SubstrateChain]: Awaited<ReturnType<typeof getSubstrateToolbox>>;\n} & {\n [Chain.Radix]: Awaited<ReturnType<typeof RadixToolbox>>;\n [Chain.Near]: Awaited<ReturnType<typeof getNearToolbox>>;\n [Chain.Ripple]: Awaited<ReturnType<typeof getRippleToolbox>>;\n [Chain.Solana]: Awaited<ReturnType<typeof getSolanaToolbox>>;\n [Chain.Tron]: Awaited<ReturnType<typeof createTronToolbox>>;\n};\n\ntype ToolboxParams = { [key in EVMChain]: Parameters<typeof getEvmToolbox>[1] } & {\n [key in UTXOChain]: undefined;\n} & {\n [key in CosmosChain]: Parameters<typeof getCosmosToolbox>[1];\n} & {\n [key in SubstrateChain]: Parameters<typeof getSubstrateToolbox>[1];\n} & {\n [Chain.Radix]: Parameters<typeof RadixToolbox>[0];\n [Chain.Near]: Parameters<typeof getNearToolbox>[0];\n [Chain.Ripple]: Parameters<typeof getRippleToolbox>[0];\n [Chain.Solana]: Parameters<typeof getSolanaToolbox>[0];\n [Chain.Tron]: Parameters<typeof createTronToolbox>[0];\n};\n\ntype CreateTransactionParams = { [key in EVMChain]: EVMCreateTransactionParams } & {\n [key in UTXOChain]: GenericCreateTransactionParams;\n} & {\n [key in CosmosChain]: GenericCreateTransactionParams;\n} & {\n [key in SubstrateChain]: GenericCreateTransactionParams;\n} & {\n [Chain.Radix]: GenericCreateTransactionParams;\n [Chain.Ripple]: GenericCreateTransactionParams;\n [Chain.Near]: GenericCreateTransactionParams;\n [Chain.Solana]: SolanaCreateTransactionParams;\n [Chain.Tron]: GenericCreateTransactionParams;\n};\n\nexport async function getToolbox<T extends keyof Toolboxes>(\n chain: T,\n params?: ToolboxParams[T],\n): Promise<Toolboxes[T]> {\n const { match } = await import(\"ts-pattern\");\n\n return match(chain as Chain)\n .returnType<Promise<Toolboxes[T]>>()\n .with(\n Chain.Arbitrum,\n Chain.Avalanche,\n Chain.Optimism,\n Chain.BinanceSmartChain,\n Chain.Base,\n Chain.Polygon,\n Chain.Ethereum,\n async () => {\n const { getEvmToolbox } = await import(\"@swapkit/toolboxes/evm\");\n const evmToolbox = await getEvmToolbox(\n chain as EVMChain,\n params as Parameters<typeof getEvmToolbox>[1],\n );\n return evmToolbox as Toolboxes[T];\n },\n )\n .with(\n Chain.Litecoin,\n Chain.Dash,\n Chain.Dogecoin,\n Chain.BitcoinCash,\n Chain.Bitcoin,\n Chain.Zcash,\n async () => {\n const { getUtxoToolbox } = await import(\"@swapkit/toolboxes/utxo\");\n const utxoToolbox = await getUtxoToolbox(\n chain as UTXOChain,\n params as Parameters<typeof getUtxoToolbox>[1],\n );\n return utxoToolbox as Toolboxes[T];\n },\n )\n .with(Chain.Cosmos, Chain.Kujira, Chain.Maya, Chain.THORChain, async () => {\n const { getCosmosToolbox } = await import(\"@swapkit/toolboxes/cosmos\");\n const cosmosToolbox = await getCosmosToolbox(\n chain as CosmosChain,\n params as Parameters<typeof getCosmosToolbox>[1],\n );\n return cosmosToolbox as Toolboxes[T];\n })\n .with(Chain.Chainflip, Chain.Polkadot, async () => {\n const { getSubstrateToolbox } = await import(\"@swapkit/toolboxes/substrate\");\n const substrateToolbox = await getSubstrateToolbox(\n chain as SubstrateChain,\n params as Parameters<typeof getSubstrateToolbox>[1],\n );\n return substrateToolbox as Toolboxes[T];\n })\n .with(Chain.Radix, async () => {\n const { RadixToolbox } = await import(\"@swapkit/toolboxes/radix\");\n const radixToolbox = await RadixToolbox(params as Parameters<typeof RadixToolbox>[0]);\n return radixToolbox as Toolboxes[T];\n })\n .with(Chain.Ripple, async () => {\n const { getRippleToolbox } = await import(\"@swapkit/toolboxes/ripple\");\n const rippleToolbox = await getRippleToolbox(\n params as Parameters<typeof getRippleToolbox>[0],\n );\n return rippleToolbox as Toolboxes[T];\n })\n .with(Chain.Solana, async () => {\n const { getSolanaToolbox } = await import(\"@swapkit/toolboxes/solana\");\n const solanaToolbox = await getSolanaToolbox(\n params as Parameters<typeof getSolanaToolbox>[0],\n );\n return solanaToolbox as Toolboxes[T];\n })\n .with(Chain.Tron, async () => {\n const { createTronToolbox } = await import(\"@swapkit/toolboxes/tron\");\n const tronToolbox = await createTronToolbox(params);\n return tronToolbox as Toolboxes[T];\n })\n .with(Chain.Near, async () => {\n const { getNearToolbox } = await import(\"@swapkit/toolboxes/near\");\n const nearToolbox = await getNearToolbox(params as Parameters<typeof getNearToolbox>[0]);\n return nearToolbox as Toolboxes[T];\n })\n .otherwise(() => {\n throw new SwapKitError(\"toolbox_not_supported\", { chain });\n });\n}\n"
6
+ ],
7
+ "mappings": "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",
8
+ "debugId": "E213B61B029A580264756E2164756E21",
9
+ "names": []
10
+ }
@@ -0,0 +1,4 @@
1
+ import{d as t,e as a}from"../chunk-s47y8512.js";import{AssetValue as u,Chain as o,FeeOption as d,SwapKitError as f}from"@swapkit/helpers";async function A(){let{match:s}=await import("ts-pattern"),{cosmosValidateAddress:r}=await import("@swapkit/toolboxes/cosmos"),{evmValidateAddress:l}=await import("@swapkit/toolboxes/evm"),{substrateValidateAddress:e}=await import("@swapkit/toolboxes/substrate"),{getUTXOAddressValidator:i}=await import("@swapkit/toolboxes/utxo"),{getSolanaAddressValidator:T}=await import("@swapkit/toolboxes/solana"),{validateNearAddress:x}=await import("@swapkit/toolboxes/near"),{rippleValidateAddress:c}=await import("@swapkit/toolboxes/ripple"),{radixValidateAddress:b}=await import("@swapkit/toolboxes/radix"),{getTronAddressValidator:y}=await import("@swapkit/toolboxes/tron"),h=await T(),w=await i(),C=await y();return function g({address:n,chain:p}){return s(p).with(o.Arbitrum,o.Avalanche,o.Optimism,o.BinanceSmartChain,o.Base,o.Polygon,o.Ethereum,()=>l({address:n})).with(o.Litecoin,o.Dash,o.Dogecoin,o.BitcoinCash,o.Bitcoin,()=>w({address:n,chain:p})).with(o.Cosmos,o.Kujira,o.Maya,o.THORChain,()=>r({address:n,chain:p})).with(o.Chainflip,o.Polkadot,()=>e({address:n,chain:p})).with(o.Radix,()=>b(n)).with(o.Near,()=>x(n)).with(o.Ripple,()=>c(n)).with(o.Solana,()=>h(n)).with(o.Tron,()=>C(n)).otherwise(()=>!1)}}function S(s){return async function r(l){let{match:e}=await import("ts-pattern");return e(s).returnType().with(o.Arbitrum,o.Avalanche,o.Optimism,o.BinanceSmartChain,o.Base,o.Polygon,o.Ethereum,async(i)=>{let T=await m(i),x=await T.createTransaction(l);return T.estimateTransactionFee({...x,feeOption:l.feeOptionKey||d.Fast,chain:i})}).with(o.Bitcoin,o.BitcoinCash,o.Dogecoin,o.Dash,o.Litecoin,o.Polkadot,o.Solana,o.Ripple,o.Tron,o.Near,async(i)=>{return(await m(i)).estimateTransactionFee(l)}).with(o.THORChain,o.Maya,o.Kujira,o.Cosmos,async()=>{let{estimateTransactionFee:i}=await import("@swapkit/toolboxes/cosmos");return i(l)}).otherwise(async()=>u.from({chain:s}))}}async function m(s,r){let{match:l}=await import("ts-pattern");return l(s).returnType().with(o.Arbitrum,o.Avalanche,o.Optimism,o.BinanceSmartChain,o.Base,o.Polygon,o.Ethereum,async()=>{let{getEvmToolbox:e}=await import("@swapkit/toolboxes/evm");return await e(s,r)}).with(o.Litecoin,o.Dash,o.Dogecoin,o.BitcoinCash,o.Bitcoin,o.Zcash,async()=>{let{getUtxoToolbox:e}=await import("@swapkit/toolboxes/utxo");return await e(s,r)}).with(o.Cosmos,o.Kujira,o.Maya,o.THORChain,async()=>{let{getCosmosToolbox:e}=await import("@swapkit/toolboxes/cosmos");return await e(s,r)}).with(o.Chainflip,o.Polkadot,async()=>{let{getSubstrateToolbox:e}=await import("@swapkit/toolboxes/substrate");return await e(s,r)}).with(o.Radix,async()=>{let{RadixToolbox:e}=await import("@swapkit/toolboxes/radix");return await e(r)}).with(o.Ripple,async()=>{let{getRippleToolbox:e}=await import("@swapkit/toolboxes/ripple");return await e(r)}).with(o.Solana,async()=>{let{getSolanaToolbox:e}=await import("@swapkit/toolboxes/solana");return await e(r)}).with(o.Tron,async()=>{let{createTronToolbox:e}=await import("@swapkit/toolboxes/tron");return await e(r)}).with(o.Near,async()=>{let{getNearToolbox:e}=await import("@swapkit/toolboxes/near");return await e(r)}).otherwise(()=>{throw new f("toolbox_not_supported",{chain:s})})}export{m as getToolbox,S as getFeeEstimator,A as getAddressValidator};
2
+
3
+ //# debugId=2C52B980D6A8E65164756E2164756E21
4
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1,10 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../src/index.ts"],
4
+ "sourcesContent": [
5
+ "import {\n AssetValue,\n Chain,\n type CosmosChain,\n type EVMChain,\n FeeOption,\n type GenericCreateTransactionParams,\n type SubstrateChain,\n SwapKitError,\n type UTXOChain,\n} from \"@swapkit/helpers\";\nimport type { getCosmosToolbox } from \"@swapkit/toolboxes/cosmos\";\n\nimport type { ETHToolbox, EVMCreateTransactionParams, getEvmToolbox } from \"@swapkit/toolboxes/evm\";\nimport type { getNearToolbox } from \"@swapkit/toolboxes/near\";\nimport type { RadixToolbox } from \"@swapkit/toolboxes/radix\";\nimport type { getRippleToolbox } from \"@swapkit/toolboxes/ripple\";\nimport type { SolanaCreateTransactionParams, getSolanaToolbox } from \"@swapkit/toolboxes/solana\";\nimport type { getSubstrateToolbox } from \"@swapkit/toolboxes/substrate\";\nimport type { createTronToolbox } from \"@swapkit/toolboxes/tron\";\nimport type { getUtxoToolbox } from \"@swapkit/toolboxes/utxo\";\n\nexport async function getAddressValidator() {\n const { match } = await import(\"ts-pattern\");\n const { cosmosValidateAddress } = await import(\"@swapkit/toolboxes/cosmos\");\n const { evmValidateAddress } = await import(\"@swapkit/toolboxes/evm\");\n const { substrateValidateAddress } = await import(\"@swapkit/toolboxes/substrate\");\n const { getUTXOAddressValidator } = await import(\"@swapkit/toolboxes/utxo\");\n const { getSolanaAddressValidator } = await import(\"@swapkit/toolboxes/solana\");\n const { validateNearAddress } = await import(\"@swapkit/toolboxes/near\");\n const { rippleValidateAddress } = await import(\"@swapkit/toolboxes/ripple\");\n const { radixValidateAddress } = await import(\"@swapkit/toolboxes/radix\");\n const { getTronAddressValidator } = await import(\"@swapkit/toolboxes/tron\");\n\n const solanaValidateAddress = await getSolanaAddressValidator();\n const utxoValidateAddress = await getUTXOAddressValidator();\n const tronValidateAddress = await getTronAddressValidator();\n\n return function validateAddress({ address, chain }: { address: string; chain: Chain }) {\n const isValid = match(chain)\n .with(\n Chain.Arbitrum,\n Chain.Avalanche,\n Chain.Optimism,\n Chain.BinanceSmartChain,\n Chain.Base,\n Chain.Polygon,\n Chain.Ethereum,\n () => evmValidateAddress({ address }),\n )\n .with(Chain.Litecoin, Chain.Dash, Chain.Dogecoin, Chain.BitcoinCash, Chain.Bitcoin, () =>\n utxoValidateAddress({ address, chain: chain as UTXOChain }),\n )\n .with(Chain.Cosmos, Chain.Kujira, Chain.Maya, Chain.THORChain, () =>\n cosmosValidateAddress({ address, chain: chain as CosmosChain }),\n )\n .with(Chain.Chainflip, Chain.Polkadot, () =>\n substrateValidateAddress({ address, chain: chain as SubstrateChain }),\n )\n .with(Chain.Radix, () => radixValidateAddress(address))\n .with(Chain.Near, () => validateNearAddress(address))\n .with(Chain.Ripple, () => rippleValidateAddress(address))\n .with(Chain.Solana, () => solanaValidateAddress(address))\n .with(Chain.Tron, () => tronValidateAddress(address))\n .otherwise(() => false);\n\n return isValid;\n };\n}\n\nexport function getFeeEstimator<T extends keyof CreateTransactionParams>(chain: T) {\n return async function estimateFee(params: CreateTransactionParams[T]) {\n const { match } = await import(\"ts-pattern\");\n\n return match(chain as Chain)\n .returnType<Promise<AssetValue>>()\n .with(\n Chain.Arbitrum,\n Chain.Avalanche,\n Chain.Optimism,\n Chain.BinanceSmartChain,\n Chain.Base,\n Chain.Polygon,\n Chain.Ethereum,\n async (chain) => {\n const toolbox = await getToolbox(chain);\n const txObject = await toolbox.createTransaction(params);\n\n return (toolbox as Awaited<ReturnType<typeof ETHToolbox>>).estimateTransactionFee({\n ...txObject,\n feeOption: params.feeOptionKey || FeeOption.Fast,\n chain,\n });\n },\n )\n .with(\n Chain.Bitcoin,\n Chain.BitcoinCash,\n Chain.Dogecoin,\n Chain.Dash,\n Chain.Litecoin,\n Chain.Polkadot,\n Chain.Solana,\n Chain.Ripple,\n Chain.Tron,\n Chain.Near,\n async (chain) => {\n const toolbox = await getToolbox(chain);\n return toolbox.estimateTransactionFee(params) as Promise<AssetValue>;\n },\n )\n .with(Chain.THORChain, Chain.Maya, Chain.Kujira, Chain.Cosmos, async () => {\n const { estimateTransactionFee } = await import(\"@swapkit/toolboxes/cosmos\");\n return estimateTransactionFee(params);\n })\n .otherwise(async () => AssetValue.from({ chain }));\n };\n}\n\ntype Toolboxes = {\n [key in EVMChain]: Awaited<ReturnType<typeof getEvmToolbox>>;\n} & {\n [key in UTXOChain]: Awaited<ReturnType<typeof getUtxoToolbox>>;\n} & {\n [key in CosmosChain]: Awaited<ReturnType<typeof getCosmosToolbox>>;\n} & {\n [key in SubstrateChain]: Awaited<ReturnType<typeof getSubstrateToolbox>>;\n} & {\n [Chain.Radix]: Awaited<ReturnType<typeof RadixToolbox>>;\n [Chain.Near]: Awaited<ReturnType<typeof getNearToolbox>>;\n [Chain.Ripple]: Awaited<ReturnType<typeof getRippleToolbox>>;\n [Chain.Solana]: Awaited<ReturnType<typeof getSolanaToolbox>>;\n [Chain.Tron]: Awaited<ReturnType<typeof createTronToolbox>>;\n};\n\ntype ToolboxParams = { [key in EVMChain]: Parameters<typeof getEvmToolbox>[1] } & {\n [key in UTXOChain]: undefined;\n} & {\n [key in CosmosChain]: Parameters<typeof getCosmosToolbox>[1];\n} & {\n [key in SubstrateChain]: Parameters<typeof getSubstrateToolbox>[1];\n} & {\n [Chain.Radix]: Parameters<typeof RadixToolbox>[0];\n [Chain.Near]: Parameters<typeof getNearToolbox>[0];\n [Chain.Ripple]: Parameters<typeof getRippleToolbox>[0];\n [Chain.Solana]: Parameters<typeof getSolanaToolbox>[0];\n [Chain.Tron]: Parameters<typeof createTronToolbox>[0];\n};\n\ntype CreateTransactionParams = { [key in EVMChain]: EVMCreateTransactionParams } & {\n [key in UTXOChain]: GenericCreateTransactionParams;\n} & {\n [key in CosmosChain]: GenericCreateTransactionParams;\n} & {\n [key in SubstrateChain]: GenericCreateTransactionParams;\n} & {\n [Chain.Radix]: GenericCreateTransactionParams;\n [Chain.Ripple]: GenericCreateTransactionParams;\n [Chain.Near]: GenericCreateTransactionParams;\n [Chain.Solana]: SolanaCreateTransactionParams;\n [Chain.Tron]: GenericCreateTransactionParams;\n};\n\nexport async function getToolbox<T extends keyof Toolboxes>(\n chain: T,\n params?: ToolboxParams[T],\n): Promise<Toolboxes[T]> {\n const { match } = await import(\"ts-pattern\");\n\n return match(chain as Chain)\n .returnType<Promise<Toolboxes[T]>>()\n .with(\n Chain.Arbitrum,\n Chain.Avalanche,\n Chain.Optimism,\n Chain.BinanceSmartChain,\n Chain.Base,\n Chain.Polygon,\n Chain.Ethereum,\n async () => {\n const { getEvmToolbox } = await import(\"@swapkit/toolboxes/evm\");\n const evmToolbox = await getEvmToolbox(\n chain as EVMChain,\n params as Parameters<typeof getEvmToolbox>[1],\n );\n return evmToolbox as Toolboxes[T];\n },\n )\n .with(\n Chain.Litecoin,\n Chain.Dash,\n Chain.Dogecoin,\n Chain.BitcoinCash,\n Chain.Bitcoin,\n Chain.Zcash,\n async () => {\n const { getUtxoToolbox } = await import(\"@swapkit/toolboxes/utxo\");\n const utxoToolbox = await getUtxoToolbox(\n chain as UTXOChain,\n params as Parameters<typeof getUtxoToolbox>[1],\n );\n return utxoToolbox as Toolboxes[T];\n },\n )\n .with(Chain.Cosmos, Chain.Kujira, Chain.Maya, Chain.THORChain, async () => {\n const { getCosmosToolbox } = await import(\"@swapkit/toolboxes/cosmos\");\n const cosmosToolbox = await getCosmosToolbox(\n chain as CosmosChain,\n params as Parameters<typeof getCosmosToolbox>[1],\n );\n return cosmosToolbox as Toolboxes[T];\n })\n .with(Chain.Chainflip, Chain.Polkadot, async () => {\n const { getSubstrateToolbox } = await import(\"@swapkit/toolboxes/substrate\");\n const substrateToolbox = await getSubstrateToolbox(\n chain as SubstrateChain,\n params as Parameters<typeof getSubstrateToolbox>[1],\n );\n return substrateToolbox as Toolboxes[T];\n })\n .with(Chain.Radix, async () => {\n const { RadixToolbox } = await import(\"@swapkit/toolboxes/radix\");\n const radixToolbox = await RadixToolbox(params as Parameters<typeof RadixToolbox>[0]);\n return radixToolbox as Toolboxes[T];\n })\n .with(Chain.Ripple, async () => {\n const { getRippleToolbox } = await import(\"@swapkit/toolboxes/ripple\");\n const rippleToolbox = await getRippleToolbox(\n params as Parameters<typeof getRippleToolbox>[0],\n );\n return rippleToolbox as Toolboxes[T];\n })\n .with(Chain.Solana, async () => {\n const { getSolanaToolbox } = await import(\"@swapkit/toolboxes/solana\");\n const solanaToolbox = await getSolanaToolbox(\n params as Parameters<typeof getSolanaToolbox>[0],\n );\n return solanaToolbox as Toolboxes[T];\n })\n .with(Chain.Tron, async () => {\n const { createTronToolbox } = await import(\"@swapkit/toolboxes/tron\");\n const tronToolbox = await createTronToolbox(params);\n return tronToolbox as Toolboxes[T];\n })\n .with(Chain.Near, async () => {\n const { getNearToolbox } = await import(\"@swapkit/toolboxes/near\");\n const nearToolbox = await getNearToolbox(params as Parameters<typeof getNearToolbox>[0]);\n return nearToolbox as Toolboxes[T];\n })\n .otherwise(() => {\n throw new SwapKitError(\"toolbox_not_supported\", { chain });\n });\n}\n"
6
+ ],
7
+ "mappings": "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",
8
+ "debugId": "2C52B980D6A8E65164756E2164756E21",
9
+ "names": []
10
+ }
@@ -0,0 +1,4 @@
1
+ var D1={};H1(D1,{validateNearAddress:()=>T,tgasToGas:()=>e,isSimpleTransfer:()=>C,isCustomEstimator:()=>g,isContractDeployment:()=>A,isContractCall:()=>K,isBatchTransaction:()=>I,isAccountCreation:()=>h,getNearToolbox:()=>f1,getNearSignerFromPrivateKey:()=>G,getNearSignerFromPhrase:()=>P,getFullAccessPublicKey:()=>b,getContractMethodGas:()=>l,gasToTGas:()=>t,estimateBatchGas:()=>S,createNearContract:()=>O,createNEP141Token:()=>F,GAS_COSTS:()=>D});module.exports=R1(D1);var q=require("@swapkit/helpers");var E=require("@swapkit/helpers"),n=require("near-api-js");async function T(W){try{let{validateAccountId:Z}=await import("near-sdk-js");return Z(W)}catch{let Z=/^(([a-z\d]+[-_])*[a-z\d]+\.)*([a-z\d]+[-_])*[a-z\d]+$/;return W.length>=2&&W.length<=64&&Z.test(W)}}async function P(W){let{parseSeedPhrase:Z}=await import("near-seed-phrase"),{KeyPair:f}=await import("near-api-js"),M=W.index||0,$=W.derivationPath?E.derivationPathToString(W.derivationPath.slice(0,3)):`m/44'/397'/${M}'`,{secretKey:X}=Z(W.phrase,$),z=f.fromString(X);return s(z)}async function G(W){let{KeyPair:Z}=await import("near-api-js/lib/utils"),f=Z.fromString(W);return s(f)}class c extends n.KeyPairSigner{#x;constructor(W){super(W);this.#x=W}getAddress(){let W=this.#x.getPublicKey(),Z=Buffer.from(W.data).toString("hex");return Promise.resolve(Z)}}function s(W){return new c(W)}async function b(W,Z){let M=(await W.query({request_type:"view_access_key_list",finality:"final",account_id:Z})).keys.find((V)=>V.access_key.permission==="FullAccess");if(!M)throw new E.SwapKitError("toolbox_near_invalid_address");let{utils:$}=await import("near-api-js"),X=$.PublicKey.fromString(M.public_key),z=M.access_key.nonce||0;return{publicKey:X,nonce:z}}var D={SIMPLE_TRANSFER:"1",TOKEN_TRANSFER:"100",CONTRACT_CALL:"100",ACCOUNT_CREATION:"30",CONTRACT_DEPLOYMENT:"200",ACCESS_KEY_ADDITION:"5",ACCESS_KEY_DELETION:"5",STAKE:"10",STORAGE_DEPOSIT:"100"};function C(W){return"recipient"in W&&"amount"in W&&!("contractId"in W)}function K(W){return"contractId"in W&&"methodName"in W}function I(W){return"actions"in W}function h(W){return"newAccountId"in W}function A(W){return"contractCode"in W}function g(W){return"customEstimator"in W}function S(W){let Z=0;for(let f of W)switch(f.enum){case"transfer":Z+=Number(D.SIMPLE_TRANSFER);break;case"functionCall":Z+=Number(D.CONTRACT_CALL);break;case"createAccount":Z+=Number(D.ACCOUNT_CREATION);break;case"deployContract":Z+=Number(D.CONTRACT_DEPLOYMENT);break;case"addKey":Z+=Number(D.ACCESS_KEY_ADDITION);break;case"deleteKey":Z+=Number(D.ACCESS_KEY_DELETION);break;case"stake":Z+=Number(D.STAKE);break;default:Z+=Number(D.CONTRACT_CALL)}return Z.toString()}function l(W){if(W==="ft_transfer"||W==="ft_transfer_call")return D.TOKEN_TRANSFER;if(W==="storage_deposit")return D.STORAGE_DEPOSIT;return D.CONTRACT_CALL}function e(W){return(BigInt(W)*BigInt(1000000000000)).toString()}function t(W){return(BigInt(W)/BigInt(1000000000000)).toString()}var r="1250000000000000000000";async function F({contractId:W,account:Z}){let f=(await import("bn.js")).default,M=await O({account:Z,contractId:W,viewMethods:["ft_balance_of","ft_total_supply","ft_metadata","storage_balance_of","storage_balance_bounds"],changeMethods:["ft_transfer","ft_transfer_call","storage_deposit","storage_withdraw","storage_unregister"]}),$=async(X)=>{if(!await M.storage_balance_of({account_id:X})){let B=(await M.storage_balance_bounds())?.min||r;await M.storage_deposit({account_id:X},new f("100000000000000"),new f(B))}};return{transfer:async(X,z,V)=>{return await $(X),M.ft_transfer({receiver_id:X,amount:z,memo:V},new f("100000000000000"),new f("1"))},transferCall:async(X,z,V,B)=>{return await $(X),M.ft_transfer_call({receiver_id:X,amount:z,memo:B,msg:V},new f("100000000000000"),new f("1"))},balanceOf:(X)=>M.ft_balance_of({account_id:X}),totalSupply:()=>M.ft_total_supply(),metadata:()=>M.ft_metadata(),storageBalanceOf:(X)=>M.storage_balance_of({account_id:X}),storageDeposit:(X,z)=>M.storage_deposit({account_id:X},new f("100000000000000"),new f(z||r)),ensureStorage:$,contract:M}}async function f1(W){let{P:Z,match:f}=await import("ts-pattern"),{providers:M}=await import("near-api-js"),$=await f(W).with({phrase:Z.string},async(x)=>{return await P(x)}).with({signer:Z.any},({signer:x})=>x).otherwise(()=>{return}),X=q.SKConfig.get("rpcUrls")[q.Chain.Near],z=new M.JsonRpcProvider({url:X});async function V(x){let{Account:J}=await import("near-api-js"),Q=x||await B();return new J(Q,z,$)}async function B(){if(!$)throw new q.SwapKitError("toolbox_near_no_signer");return await $.getAddress()}async function a(x){if(!$)throw new q.SwapKitError("toolbox_near_no_signer");let{recipient:J,assetValue:Q}=x;if(!T(J))throw new q.SwapKitError("toolbox_near_invalid_address");let Y=await V();if(Q.isGasAsset===!1){let L=Q.address;if(!L)throw new q.SwapKitError("toolbox_near_missing_contract_address");let R=Q.getBaseValue("string");return m({contractId:L,methodName:"ft_transfer",args:{receiver_id:J,amount:R,memo:x.memo}})}try{let L=Q.getBaseValue("string");return(await Y.transfer({receiverId:J,amount:L})).transaction.hash}catch(L){throw new q.SwapKitError("toolbox_near_transfer_failed",{error:L})}}async function x1(x){let{recipient:J,assetValue:Q,memo:Y,feeRate:L,attachedDeposit:R,sender:U}=x;if(!Q.isGasAsset){let i=Q.address;if(!i)throw new q.SwapKitError("toolbox_near_missing_contract_address");return u({sender:U,contractId:i,methodName:"ft_transfer",args:{receiver_id:J,amount:Q.getBaseValue("string"),memo:Y||null},gas:L.toString()||"100000000000000",attachedDeposit:"1"})}let{publicKey:w,nonce:j}=await b(z,U),k=Q.getBaseValue("bigint"),{SCHEMA:v}=await import("near-api-js/lib/transaction"),{transactions:N,utils:_}=await import("near-api-js"),p=[N.transfer(k)];if(Y&&R)p.push(N.functionCall("memo",{memo:Y},BigInt(L),BigInt(R)));let M1=await z.block({finality:"final"}),o=_.serialize.base_decode(M1.header.hash),Y1=N.createTransaction(U,w,J,j,p,o),U1=_.serialize.serialize(v.Transaction,Y1);return{serialized:Buffer.from(U1).toString("base64"),publicKey:w.toString(),details:{signerId:U,nonce:j,blockHash:_.serialize.base_encode(o)}}}async function u(x){let{sender:J}=x,{publicKey:Q,nonce:Y}=await b(z,J),{SCHEMA:L}=await import("near-api-js/lib/transaction"),{transactions:R,utils:U}=await import("near-api-js"),w=await z.block({finality:"final"}),j=U.serialize.base_decode(w.header.hash),k=[R.functionCall(x.methodName,Buffer.from(JSON.stringify(x.args)),BigInt(x.gas),BigInt(x.attachedDeposit))],v=R.createTransaction(J,Q,x.contractId,Y,k,j),N=U.serialize.serialize(L.Transaction,v);return{serialized:Buffer.from(N).toString("base64"),publicKey:Q.toString(),details:{signerId:J,receiverId:x.contractId,methodName:x.methodName,nonce:Y,blockHash:U.serialize.base_encode(j)}}}async function W1(x){if(!$)throw new q.SwapKitError("toolbox_near_no_signer");let[J,Q]=await $.signTransaction(x);return Q}async function q1(x){return(await z.sendTransaction(x)).transaction.hash}async function J1(x){if("assetValue"in x){let L=BigInt("115123062500")+BigInt("108059500000"),R=await Q1(),U=L*BigInt(R.toString());return q.AssetValue.from({chain:q.Chain.Near,value:U.toString(),fromBaseDecimal:q.BaseDecimal[q.Chain.Near]})}let J=$?await V():void 0;return y(x,J)}async function Q1(){try{return await z.query({request_type:"call_function",finality:"final",account_id:"system",method_name:"gas_price",args_base64:""})}catch{return"100000000"}}async function Z1(x,J,Q){if(!$)throw new q.SwapKitError("toolbox_near_no_signer");let Y=await V(),{utils:L}=await import("near-api-js"),R=L.format.parseNearAmount(Q)||"0";return(await Y.createAccount(x,L.PublicKey.fromString(J),BigInt(R))).transaction.hash}async function m(x){try{if(!$)throw new q.SwapKitError("toolbox_near_no_signer");let{transactions:J}=await import("near-api-js"),{contractId:Q,methodName:Y,args:L,deposit:R}=x,U=await V(),w=await y({methodName:Y,args:L||{},contractId:Q}),j=J.functionCall(Y,L||{},w.getBaseValue("bigint"),BigInt(R||"0"));return(await U.signAndSendTransaction({receiverId:Q,actions:[j]})).transaction.hash}catch(J){throw new q.SwapKitError("toolbox_near_transfer_failed",{error:J})}}async function $1(x){let{createNearContract:J}=await import("../../chunk-vtd17cje.js"),Q=await V();return J({account:Q,contractId:x.contractId,viewMethods:x.viewMethods,changeMethods:x.changeMethods})}async function X1(x){if(!$)throw new q.SwapKitError("toolbox_near_no_signer");if(x.actions.length===0)throw new q.SwapKitError("toolbox_near_empty_batch");return(await(await V()).signAndSendTransaction({receiverId:x.receiverId,actions:x.actions})).transaction.hash}async function z1(x){let J=await V();return F({contractId:x,account:J})}async function L1(x){try{let J=await V(x),Q;try{let Y=await J.getBalance();Q=q.AssetValue.from({chain:q.Chain.Near,value:Y,fromBaseDecimal:q.BaseDecimal[q.Chain.Near]})}catch{Q=q.AssetValue.from({chain:q.Chain.Near,value:"0",fromBaseDecimal:q.BaseDecimal[q.Chain.Near]})}return[Q]}catch(J){throw new q.SwapKitError("toolbox_near_balance_failed",{error:J})}}async function y(x,J){let Q=await f(x).when(C,()=>D.SIMPLE_TRANSFER).when(K,(U)=>l(U.methodName)).when(I,(U)=>S(U.actions)).when(h,()=>D.ACCOUNT_CREATION).when(A,()=>D.CONTRACT_DEPLOYMENT).when(g,(U)=>{if(!J)throw new q.SwapKitError("toolbox_near_no_account");return U.customEstimator(J)}).otherwise(()=>{throw new q.SwapKitError("toolbox_near_invalid_gas_params")}),Y=await d(),R=BigInt(Q)*BigInt(1000000000000)*BigInt(Y);return q.AssetValue.from({chain:q.Chain.Near,value:R,fromBaseDecimal:q.BaseDecimal[q.Chain.Near]})}async function d(){try{return(await z.gasPrice(null)).gas_price||"100000000"}catch(x){return"100000000"}}return{getAddress:B,getPublicKey:async()=>$?(await $.getPublicKey()).toString():"",provider:z,transfer:a,createTransaction:x1,createContractFunctionCall:u,estimateTransactionFee:J1,broadcastTransaction:q1,signTransaction:W1,getBalance:L1,validateAddress:T,getSignerFromPhrase:(x)=>P(x),getSignerFromPrivateKey:G,callFunction:m,createSubAccount:Z1,createContract:$1,executeBatchTransaction:X1,nep141:z1,getGasPrice:d,estimateGas:y}}
2
+
3
+ //# debugId=68F35FE5C1C424C564756E2164756E21
4
+ //# sourceMappingURL=index.cjs.map
@@ -0,0 +1,13 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../src/near/toolbox.ts", "../src/near/helpers/core.ts", "../src/near/helpers/gasEstimation.ts", "../src/near/helpers/nep141.ts"],
4
+ "sourcesContent": [
5
+ "import {\n AssetValue,\n BaseDecimal,\n Chain,\n type DerivationPathArray,\n SKConfig,\n SwapKitError,\n} from \"@swapkit/helpers\";\nimport type { Account } from \"near-api-js\";\nimport type { SignedTransaction, Transaction } from \"near-api-js/lib/transaction\";\nimport {\n getFullAccessPublicKey,\n getNearSignerFromPhrase,\n getNearSignerFromPrivateKey,\n validateNearAddress,\n} from \"./helpers\";\nimport {\n GAS_COSTS,\n estimateBatchGas,\n getContractMethodGas,\n isAccountCreation,\n isBatchTransaction,\n isContractCall,\n isContractDeployment,\n isCustomEstimator,\n isSimpleTransfer,\n} from \"./helpers/gasEstimation\";\nimport { createNEP141Token } from \"./helpers/nep141\";\nimport type {\n NearCreateTransactionParams,\n NearFunctionCallParams,\n NearToolboxParams,\n NearTransferParams,\n} from \"./types\";\nimport type { NearContractInterface, NearGasEstimateParams } from \"./types/contract\";\n\nexport async function getNearToolbox(toolboxParams?: NearToolboxParams) {\n const { P, match } = await import(\"ts-pattern\");\n const { providers } = await import(\"near-api-js\");\n const signer = await match(toolboxParams)\n .with({ phrase: P.string }, async (params) => {\n const signer = await getNearSignerFromPhrase(params);\n return signer;\n })\n .with({ signer: P.any }, ({ signer }) => signer)\n .otherwise(() => undefined);\n\n const url = SKConfig.get(\"rpcUrls\")[Chain.Near];\n\n const provider = new providers.JsonRpcProvider({ url });\n\n async function getAccount(address?: string) {\n const { Account } = await import(\"near-api-js\");\n\n const _address = address || (await getAddress());\n\n const account = new Account(_address, provider, signer);\n\n return account;\n }\n\n async function getAddress() {\n if (!signer) {\n throw new SwapKitError(\"toolbox_near_no_signer\");\n }\n const address = await signer.getAddress();\n return address;\n }\n\n async function transfer(params: NearTransferParams) {\n if (!signer) {\n throw new SwapKitError(\"toolbox_near_no_signer\");\n }\n\n const { recipient, assetValue } = params;\n\n if (!validateNearAddress(recipient)) {\n throw new SwapKitError(\"toolbox_near_invalid_address\");\n }\n\n const account = await getAccount();\n\n if (assetValue.isGasAsset === false) {\n // NEP-141 token transfer\n const contractId = assetValue.address;\n if (!contractId) {\n throw new SwapKitError(\"toolbox_near_missing_contract_address\");\n }\n\n const amount = assetValue.getBaseValue(\"string\");\n\n return callFunction({\n contractId,\n methodName: \"ft_transfer\",\n args: {\n receiver_id: recipient,\n amount,\n memo: params.memo,\n },\n });\n }\n\n try {\n const transferAmount = assetValue.getBaseValue(\"string\");\n\n const result = await account.transfer({\n receiverId: recipient,\n amount: transferAmount,\n });\n\n return result.transaction.hash;\n } catch (error) {\n throw new SwapKitError(\"toolbox_near_transfer_failed\", { error });\n }\n }\n\n async function createTransaction(params: NearCreateTransactionParams) {\n const { recipient, assetValue, memo, feeRate: gas, attachedDeposit, sender: signerId } = params;\n\n // Handle NEP-141 token transfers\n if (!assetValue.isGasAsset) {\n const contractId = assetValue.address;\n if (!contractId) {\n throw new SwapKitError(\"toolbox_near_missing_contract_address\");\n }\n\n return createContractFunctionCall({\n sender: signerId,\n contractId,\n methodName: \"ft_transfer\",\n args: {\n receiver_id: recipient,\n amount: assetValue.getBaseValue(\"string\"),\n memo: memo || null,\n },\n gas: gas.toString() || \"100000000000000\", // 100 TGas default\n attachedDeposit: \"1\", // 1 yoctoNEAR required for NEP-141 transfers\n });\n }\n\n // Native NEAR transfer\n const { publicKey, nonce } = await getFullAccessPublicKey(provider, signerId);\n const baseAmount = assetValue.getBaseValue(\"bigint\");\n\n const { SCHEMA } = await import(\"near-api-js/lib/transaction\");\n const { transactions, utils } = await import(\"near-api-js\");\n\n const txActions = [transactions.transfer(baseAmount)];\n\n if (memo && attachedDeposit) {\n txActions.push(\n transactions.functionCall(\"memo\", { memo }, BigInt(gas), BigInt(attachedDeposit)),\n );\n }\n\n const block = await provider.block({ finality: \"final\" });\n const blockHash = utils.serialize.base_decode(block.header.hash);\n\n const transaction = transactions.createTransaction(\n signerId,\n publicKey,\n recipient,\n nonce,\n txActions,\n blockHash,\n );\n\n const serializedTx = utils.serialize.serialize(SCHEMA.Transaction, transaction);\n const serializedBase64 = Buffer.from(serializedTx).toString(\"base64\");\n\n return {\n serialized: serializedBase64,\n publicKey: publicKey.toString(),\n details: {\n signerId,\n nonce: nonce,\n blockHash: utils.serialize.base_encode(blockHash),\n },\n };\n }\n\n async function createContractFunctionCall(params: {\n sender: string;\n contractId: string;\n methodName: string;\n args: any;\n gas: string;\n attachedDeposit: string;\n }) {\n const { sender: accountId } = params;\n\n const { publicKey, nonce } = await getFullAccessPublicKey(provider, accountId);\n\n const { SCHEMA } = await import(\"near-api-js/lib/transaction\");\n const { transactions, utils } = await import(\"near-api-js\");\n const block = await provider.block({ finality: \"final\" });\n const blockHash = utils.serialize.base_decode(block.header.hash);\n\n const actions = [\n transactions.functionCall(\n params.methodName,\n Buffer.from(JSON.stringify(params.args)),\n BigInt(params.gas),\n BigInt(params.attachedDeposit),\n ),\n ];\n\n const transaction = transactions.createTransaction(\n accountId,\n publicKey,\n params.contractId,\n nonce,\n actions,\n blockHash,\n );\n\n const serializedTx = utils.serialize.serialize(SCHEMA.Transaction, transaction);\n const serializedBase64 = Buffer.from(serializedTx).toString(\"base64\");\n\n return {\n serialized: serializedBase64,\n publicKey: publicKey.toString(),\n details: {\n signerId: accountId,\n receiverId: params.contractId,\n methodName: params.methodName,\n nonce: nonce,\n blockHash: utils.serialize.base_encode(blockHash),\n },\n };\n }\n\n async function signTransaction(transaction: Transaction) {\n if (!signer) {\n throw new SwapKitError(\"toolbox_near_no_signer\");\n }\n\n // Use the new signer interface method\n const [_hash, signedTx] = await signer.signTransaction(transaction);\n return signedTx;\n }\n\n async function broadcastTransaction(signedTransaction: SignedTransaction) {\n const result = await provider.sendTransaction(signedTransaction);\n return result.transaction.hash;\n }\n\n async function estimateTransactionFee(params: NearTransferParams | NearGasEstimateParams) {\n if (\"assetValue\" in params) {\n const baseTransferCost = \"115123062500\"; // gas units for transfer\n const receiptCreationCost = \"108059500000\"; // gas units for receipt\n\n const totalGasUnits = BigInt(baseTransferCost) + BigInt(receiptCreationCost);\n\n const gasPrice = await getCurrentGasPrice();\n\n // NEAR doesn't support fee multipliers - gas price is fixed by the network\n const totalCostYocto = totalGasUnits * BigInt(gasPrice.toString());\n\n return AssetValue.from({\n chain: Chain.Near,\n value: totalCostYocto.toString(),\n fromBaseDecimal: BaseDecimal[Chain.Near],\n });\n }\n\n // Handle new gas estimation params\n const account = signer ? await getAccount() : undefined;\n return estimateGas(params, account);\n }\n\n async function getCurrentGasPrice() {\n try {\n const result = await provider.query({\n request_type: \"call_function\",\n finality: \"final\",\n account_id: \"system\",\n method_name: \"gas_price\",\n args_base64: \"\",\n });\n\n return result;\n } catch {\n return \"100000000\"; // 0.0001 NEAR per Tgas\n }\n }\n\n async function createSubAccount(subAccountId: string, publicKey: string, initialBalance: string) {\n if (!signer) {\n throw new SwapKitError(\"toolbox_near_no_signer\");\n }\n\n const account = await getAccount();\n const { utils } = await import(\"near-api-js\");\n\n const balanceInYocto = utils.format.parseNearAmount(initialBalance) || \"0\";\n\n const result = await account.createAccount(\n subAccountId,\n utils.PublicKey.fromString(publicKey),\n BigInt(balanceInYocto),\n );\n\n return result.transaction.hash;\n }\n\n async function callFunction(params: NearFunctionCallParams) {\n try {\n if (!signer) {\n throw new SwapKitError(\"toolbox_near_no_signer\");\n }\n\n const { transactions } = await import(\"near-api-js\");\n\n const { contractId, methodName, args, deposit } = params;\n const account = await getAccount();\n\n const estimatedGas = await estimateGas({\n methodName,\n args: args || {},\n contractId,\n });\n\n const functionAction = transactions.functionCall(\n methodName,\n args || {},\n estimatedGas.getBaseValue(\"bigint\"),\n BigInt(deposit || \"0\"),\n );\n\n const result = await account.signAndSendTransaction({\n receiverId: contractId,\n actions: [functionAction],\n });\n\n return result.transaction.hash;\n } catch (error) {\n throw new SwapKitError(\"toolbox_near_transfer_failed\", { error });\n }\n }\n\n // Create typed contract interface\n async function createContract(contractInterface: NearContractInterface) {\n const { createNearContract } = await import(\"./helpers/contractFactory\");\n const account = await getAccount();\n\n return createNearContract({\n account,\n contractId: contractInterface.contractId,\n viewMethods: contractInterface.viewMethods,\n changeMethods: contractInterface.changeMethods,\n });\n }\n\n async function executeBatchTransaction(batch: { receiverId: string; actions: any[] }) {\n if (!signer) {\n throw new SwapKitError(\"toolbox_near_no_signer\");\n }\n\n if (batch.actions.length === 0) {\n throw new SwapKitError(\"toolbox_near_empty_batch\");\n }\n\n const account = await getAccount();\n\n // Use account.signAndSendTransaction for batch operations\n const result = await account.signAndSendTransaction({\n receiverId: batch.receiverId,\n actions: batch.actions,\n });\n\n return result.transaction.hash;\n }\n\n async function nep141(contractId: string) {\n const account = await getAccount();\n return createNEP141Token({ contractId, account });\n }\n\n async function getBalance(address: string) {\n try {\n const account = await getAccount(address);\n\n let nativeBalance: AssetValue;\n try {\n const value = await account.getBalance();\n\n nativeBalance = AssetValue.from({\n chain: Chain.Near,\n value,\n fromBaseDecimal: BaseDecimal[Chain.Near],\n });\n } catch {\n nativeBalance = AssetValue.from({\n chain: Chain.Near,\n value: \"0\",\n fromBaseDecimal: BaseDecimal[Chain.Near],\n });\n }\n\n // // Then, fetch token balances from API\n // let tokenBalances: AssetValue[] = [];\n // try {\n // const apiBalances = await SwapKitApi.getChainBalance({\n // chain: Chain.Near,\n // address,\n // scamFilter,\n // });\n\n // tokenBalances = apiBalances\n // .filter(({ identifier }) => identifier !== Chain.Near) // Filter out native NEAR\n // .map(({ identifier, value, decimal }) => {\n // return new AssetValue({\n // decimal: decimal || BaseDecimal[Chain.Near],\n // value,\n // identifier,\n // });\n // });\n // } catch (error) {\n // // If API fails, just return on-chain balance\n // console.warn(\"Failed to fetch token balances from API:\", error);\n // }\n\n // Merge native balance with token balances\n // return [nativeBalance, ...tokenBalances];\n return [nativeBalance];\n } catch (error) {\n throw new SwapKitError(\"toolbox_near_balance_failed\", { error });\n }\n }\n\n async function estimateGas(params: NearGasEstimateParams, account?: Account) {\n const gasInTGas = await match(params)\n .when(isSimpleTransfer, () => GAS_COSTS.SIMPLE_TRANSFER)\n .when(isContractCall, (p) => getContractMethodGas(p.methodName))\n .when(isBatchTransaction, (p) => estimateBatchGas(p.actions))\n .when(isAccountCreation, () => GAS_COSTS.ACCOUNT_CREATION)\n .when(isContractDeployment, () => GAS_COSTS.CONTRACT_DEPLOYMENT)\n .when(isCustomEstimator, (p) => {\n if (!account) {\n throw new SwapKitError(\"toolbox_near_no_account\");\n }\n return p.customEstimator(account);\n })\n .otherwise(() => {\n throw new SwapKitError(\"toolbox_near_invalid_gas_params\");\n });\n\n // Convert TGas to gas price in NEAR\n const gasPrice = await getGasPrice();\n const gasInUnits = BigInt(gasInTGas) * BigInt(10 ** 12); // Convert TGas to gas units\n const costInYoctoNear = gasInUnits * BigInt(gasPrice);\n\n return AssetValue.from({\n chain: Chain.Near,\n value: costInYoctoNear,\n fromBaseDecimal: BaseDecimal[Chain.Near],\n });\n }\n\n // Get current gas price from network\n async function getGasPrice() {\n try {\n const result = await provider.gasPrice(null);\n return result.gas_price || \"100000000\";\n } catch (_error) {\n // Fallback to default\n return \"100000000\";\n }\n }\n\n return {\n getAddress,\n getPublicKey: async () => (signer ? (await signer.getPublicKey()).toString() : \"\"),\n provider,\n transfer,\n createTransaction,\n createContractFunctionCall,\n estimateTransactionFee,\n broadcastTransaction,\n signTransaction,\n getBalance,\n validateAddress: validateNearAddress,\n getSignerFromPhrase: (params: {\n phrase: string;\n derivationPath?: DerivationPathArray;\n index?: number;\n }) => getNearSignerFromPhrase(params),\n getSignerFromPrivateKey: getNearSignerFromPrivateKey,\n callFunction,\n createSubAccount,\n createContract,\n executeBatchTransaction,\n nep141,\n getGasPrice,\n estimateGas,\n };\n}\n",
6
+ "import type { Provider } from \"@near-js/providers\";\nimport { type DerivationPathArray, SwapKitError, derivationPathToString } from \"@swapkit/helpers\";\nimport { type KeyPair, KeyPairSigner } from \"near-api-js\";\nimport type { NearSigner } from \"../types\";\n\nexport async function validateNearAddress(address: string) {\n // Use the official NEAR SDK validation function if available\n try {\n const { validateAccountId } = await import(\"near-sdk-js\");\n return validateAccountId(address);\n } catch {\n const ACCOUNT_ID_REGEX = /^(([a-z\\d]+[-_])*[a-z\\d]+\\.)*([a-z\\d]+[-_])*[a-z\\d]+$/;\n\n return address.length >= 2 && address.length <= 64 && ACCOUNT_ID_REGEX.test(address);\n }\n}\n\nexport async function getNearSignerFromPhrase(params: {\n phrase: string;\n derivationPath?: DerivationPathArray;\n index?: number;\n}) {\n const { parseSeedPhrase } = await import(\"near-seed-phrase\");\n const { KeyPair } = await import(\"near-api-js\");\n\n // Handle derivation path logic here\n // NEAR uses a 3-level derivation path: m/44'/397'/index'\n const index = params.index || 0;\n const derivationPath = params.derivationPath\n ? derivationPathToString(params.derivationPath.slice(0, 3) as [number, number, number])\n : `m/44'/397'/${index}'`;\n\n const { secretKey } = parseSeedPhrase(params.phrase, derivationPath);\n const keyPair = KeyPair.fromString(secretKey as any);\n\n return createNearSignerFromKeyPair(keyPair);\n}\n\nexport async function getNearSignerFromPrivateKey(privateKey: string) {\n const { KeyPair } = await import(\"near-api-js/lib/utils\");\n const keyPair = KeyPair.fromString(privateKey as any);\n return createNearSignerFromKeyPair(keyPair);\n}\n\nclass SKKeyPairSigner extends KeyPairSigner {\n #keyPair: KeyPair;\n\n constructor(keyPair: KeyPair) {\n super(keyPair);\n this.#keyPair = keyPair;\n }\n\n getAddress(): Promise<string> {\n // For implicit accounts, derive account ID from public key\n // NEAR implicit accounts use hex representation of the public key\n const publicKey = this.#keyPair.getPublicKey();\n const hexAddress = Buffer.from(publicKey.data).toString(\"hex\");\n return Promise.resolve(hexAddress);\n }\n}\n\nfunction createNearSignerFromKeyPair(keyPair: KeyPair): NearSigner {\n const keyPairSigner = new SKKeyPairSigner(keyPair);\n\n return keyPairSigner;\n}\n\nexport async function getFullAccessPublicKey(provider: Provider, accountId: string) {\n // Get the first full access key for the account\n const response = await provider.query({\n request_type: \"view_access_key_list\",\n finality: \"final\",\n account_id: accountId,\n });\n\n const fullAccessKey = (response as any).keys.find(\n (key: any) => key.access_key.permission === \"FullAccess\",\n );\n\n if (!fullAccessKey) {\n throw new SwapKitError(\"toolbox_near_invalid_address\");\n }\n\n const { utils } = await import(\"near-api-js\");\n const publicKey = utils.PublicKey.fromString(fullAccessKey.public_key);\n const nonce = (fullAccessKey.access_key.nonce as number) || 0;\n\n return { publicKey, nonce };\n}\n",
7
+ "import type { Account } from \"near-api-js\";\nimport type { NearGasEstimateParams } from \"../types/contract\";\n\n// Gas constants (in TGas - 10^12 gas units)\nexport const GAS_COSTS = {\n SIMPLE_TRANSFER: \"1\", // 1 TGas\n TOKEN_TRANSFER: \"100\", // 100 TGas\n CONTRACT_CALL: \"100\", // 100 TGas base\n ACCOUNT_CREATION: \"30\", // 30 TGas\n CONTRACT_DEPLOYMENT: \"200\", // 200 TGas\n ACCESS_KEY_ADDITION: \"5\", // 5 TGas\n ACCESS_KEY_DELETION: \"5\", // 5 TGas\n STAKE: \"10\", // 10 TGas\n STORAGE_DEPOSIT: \"100\", // 100 TGas\n} as const;\n\n// Type guards for discriminated union\nexport function isSimpleTransfer(\n params: NearGasEstimateParams,\n): params is { recipient: string; amount: string } {\n return \"recipient\" in params && \"amount\" in params && !(\"contractId\" in params);\n}\n\nexport function isContractCall(params: NearGasEstimateParams): params is {\n contractId: string;\n methodName: string;\n args?: Record<string, any>;\n attachedDeposit?: string;\n} {\n return \"contractId\" in params && \"methodName\" in params;\n}\n\nexport function isBatchTransaction(params: NearGasEstimateParams): params is { actions: any[] } {\n return \"actions\" in params;\n}\n\nexport function isAccountCreation(params: NearGasEstimateParams): params is {\n newAccountId: string;\n publicKey?: string;\n} {\n return \"newAccountId\" in params;\n}\n\nexport function isContractDeployment(\n params: NearGasEstimateParams,\n): params is { contractCode: Uint8Array } {\n return \"contractCode\" in params;\n}\n\nexport function isCustomEstimator(params: NearGasEstimateParams): params is {\n customEstimator: (account: Account) => Promise<string>;\n} {\n return \"customEstimator\" in params;\n}\n\n// Helper function to estimate gas for batch actions\nexport function estimateBatchGas(actions: any[]) {\n let totalGas = 0;\n\n for (const action of actions) {\n switch (action.enum) {\n case \"transfer\":\n totalGas += Number(GAS_COSTS.SIMPLE_TRANSFER);\n break;\n case \"functionCall\":\n totalGas += Number(GAS_COSTS.CONTRACT_CALL);\n break;\n case \"createAccount\":\n totalGas += Number(GAS_COSTS.ACCOUNT_CREATION);\n break;\n case \"deployContract\":\n totalGas += Number(GAS_COSTS.CONTRACT_DEPLOYMENT);\n break;\n case \"addKey\":\n totalGas += Number(GAS_COSTS.ACCESS_KEY_ADDITION);\n break;\n case \"deleteKey\":\n totalGas += Number(GAS_COSTS.ACCESS_KEY_DELETION);\n break;\n case \"stake\":\n totalGas += Number(GAS_COSTS.STAKE);\n break;\n default:\n totalGas += Number(GAS_COSTS.CONTRACT_CALL);\n }\n }\n\n return totalGas.toString();\n}\n\n// Helper function to get gas cost for contract methods\nexport function getContractMethodGas(methodName: string) {\n if (methodName === \"ft_transfer\" || methodName === \"ft_transfer_call\") {\n return GAS_COSTS.TOKEN_TRANSFER;\n }\n if (methodName === \"storage_deposit\") {\n return GAS_COSTS.STORAGE_DEPOSIT;\n }\n return GAS_COSTS.CONTRACT_CALL;\n}\n\n// Convert TGas string to gas units\nexport function tgasToGas(tgas: string): string {\n return (BigInt(tgas) * BigInt(10 ** 12)).toString();\n}\n\n// Convert gas units to TGas\nexport function gasToTGas(gas: string): string {\n return (BigInt(gas) / BigInt(10 ** 12)).toString();\n}\n",
8
+ "import type { Account, Contract } from \"near-api-js\";\nimport { createNearContract } from \"./contractFactory\";\n\nconst DEFAULT_STORAGE_DEPOSIT = \"1250000000000000000000\"; // 0.00125 NEAR\n\n// Define NEP-141 contract interface\ninterface NEP141Contract extends Contract {\n // View methods\n ft_balance_of(args: { account_id: string }): Promise<string>;\n ft_total_supply(): Promise<string>;\n ft_metadata(): Promise<any>;\n storage_balance_of(args: { account_id: string }): Promise<any>;\n storage_balance_bounds(): Promise<any>;\n\n // Change methods\n ft_transfer(args: any, gas: any, deposit: any): Promise<any>;\n ft_transfer_call(args: any, gas: any, deposit: any): Promise<any>;\n storage_deposit(args: any, gas: any, deposit: any): Promise<any>;\n storage_withdraw(args: any, gas: any, deposit: any): Promise<any>;\n storage_unregister(force?: boolean, gas?: any): Promise<any>;\n}\n\nexport async function createNEP141Token({\n contractId,\n account,\n}: {\n contractId: string;\n account: Account;\n}) {\n const BN = (await import(\"bn.js\")).default;\n\n const contract = await createNearContract<NEP141Contract>({\n account,\n contractId,\n viewMethods: [\n \"ft_balance_of\",\n \"ft_total_supply\",\n \"ft_metadata\",\n \"storage_balance_of\",\n \"storage_balance_bounds\",\n ],\n changeMethods: [\n \"ft_transfer\",\n \"ft_transfer_call\",\n \"storage_deposit\",\n \"storage_withdraw\",\n \"storage_unregister\",\n ],\n });\n\n // Helper to ensure storage before transfers\n const ensureStorageFor = async (accountId: string) => {\n const balance = await contract.storage_balance_of({ account_id: accountId });\n if (!balance) {\n // Get minimum storage requirement\n const bounds = await contract.storage_balance_bounds();\n const deposit = bounds?.min || DEFAULT_STORAGE_DEPOSIT;\n\n await contract.storage_deposit(\n { account_id: accountId },\n new BN(\"100000000000000\"), // 100 TGas\n new BN(deposit),\n );\n }\n };\n\n return {\n transfer: async (receiverId: string, amount: string, memo?: string) => {\n // Ensure recipient has storage before transfer\n await ensureStorageFor(receiverId);\n\n return contract.ft_transfer(\n { receiver_id: receiverId, amount, memo },\n new BN(\"100000000000000\"), // 100 TGas\n new BN(\"1\"), // 1 yoctoNEAR for security\n );\n },\n\n transferCall: async (receiverId: string, amount: string, msg: string, memo?: string) => {\n // Ensure recipient has storage before transfer\n await ensureStorageFor(receiverId);\n\n return contract.ft_transfer_call(\n { receiver_id: receiverId, amount, memo, msg },\n new BN(\"100000000000000\"), // 100 TGas\n new BN(\"1\"), // 1 yoctoNEAR for security\n );\n },\n\n balanceOf: (accountId: string) => contract.ft_balance_of({ account_id: accountId }),\n\n totalSupply: () => contract.ft_total_supply(),\n\n metadata: () => contract.ft_metadata(),\n\n storageBalanceOf: (accountId: string) => contract.storage_balance_of({ account_id: accountId }),\n\n storageDeposit: (accountId?: string, amount?: string) =>\n contract.storage_deposit(\n { account_id: accountId },\n new BN(\"100000000000000\"),\n new BN(amount || DEFAULT_STORAGE_DEPOSIT),\n ),\n\n ensureStorage: ensureStorageFor,\n\n // Raw contract access for advanced use cases\n contract,\n };\n}\n"
9
+ ],
10
+ "mappings": "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",
11
+ "debugId": "68F35FE5C1C424C564756E2164756E21",
12
+ "names": []
13
+ }
@@ -0,0 +1,4 @@
1
+ import{c as E}from"../../chunk-zcdeg6h9.js";import{d as R,e as H}from"../../chunk-s47y8512.js";import{AssetValue as P,BaseDecimal as b,Chain as B,SKConfig as j1,SwapKitError as j}from"@swapkit/helpers";import{SwapKitError as f1,derivationPathToString as R1}from"@swapkit/helpers";import{KeyPairSigner as H1}from"near-api-js";async function G(W){try{let{validateAccountId:Q}=await import("near-sdk-js");return Q(W)}catch{let Q=/^(([a-z\d]+[-_])*[a-z\d]+\.)*([a-z\d]+[-_])*[a-z\d]+$/;return W.length>=2&&W.length<=64&&Q.test(W)}}async function C(W){let{parseSeedPhrase:Q}=await import("near-seed-phrase"),{KeyPair:U}=await import("near-api-js"),L=W.index||0,Z=W.derivationPath?R1(W.derivationPath.slice(0,3)):`m/44'/397'/${L}'`,{secretKey:$}=Q(W.phrase,Z),X=U.fromString($);return d(X)}async function u(W){let{KeyPair:Q}=await import("near-api-js/lib/utils"),U=Q.fromString(W);return d(U)}class m extends H1{#x;constructor(W){super(W);this.#x=W}getAddress(){let W=this.#x.getPublicKey(),Q=Buffer.from(W.data).toString("hex");return Promise.resolve(Q)}}function d(W){return new m(W)}async function K(W,Q){let L=(await W.query({request_type:"view_access_key_list",finality:"final",account_id:Q})).keys.find((D)=>D.access_key.permission==="FullAccess");if(!L)throw new f1("toolbox_near_invalid_address");let{utils:Z}=await import("near-api-js"),$=Z.PublicKey.fromString(L.public_key),X=L.access_key.nonce||0;return{publicKey:$,nonce:X}}var V={SIMPLE_TRANSFER:"1",TOKEN_TRANSFER:"100",CONTRACT_CALL:"100",ACCOUNT_CREATION:"30",CONTRACT_DEPLOYMENT:"200",ACCESS_KEY_ADDITION:"5",ACCESS_KEY_DELETION:"5",STAKE:"10",STORAGE_DEPOSIT:"100"};function p(W){return"recipient"in W&&"amount"in W&&!("contractId"in W)}function o(W){return"contractId"in W&&"methodName"in W}function i(W){return"actions"in W}function n(W){return"newAccountId"in W}function c(W){return"contractCode"in W}function s(W){return"customEstimator"in W}function e(W){let Q=0;for(let U of W)switch(U.enum){case"transfer":Q+=Number(V.SIMPLE_TRANSFER);break;case"functionCall":Q+=Number(V.CONTRACT_CALL);break;case"createAccount":Q+=Number(V.ACCOUNT_CREATION);break;case"deployContract":Q+=Number(V.CONTRACT_DEPLOYMENT);break;case"addKey":Q+=Number(V.ACCESS_KEY_ADDITION);break;case"deleteKey":Q+=Number(V.ACCESS_KEY_DELETION);break;case"stake":Q+=Number(V.STAKE);break;default:Q+=Number(V.CONTRACT_CALL)}return Q.toString()}function t(W){if(W==="ft_transfer"||W==="ft_transfer_call")return V.TOKEN_TRANSFER;if(W==="storage_deposit")return V.STORAGE_DEPOSIT;return V.CONTRACT_CALL}function D1(W){return(BigInt(W)*BigInt(1000000000000)).toString()}function V1(W){return(BigInt(W)/BigInt(1000000000000)).toString()}var r="1250000000000000000000";async function T({contractId:W,account:Q}){let U=(await import("bn.js")).default,L=await E({account:Q,contractId:W,viewMethods:["ft_balance_of","ft_total_supply","ft_metadata","storage_balance_of","storage_balance_bounds"],changeMethods:["ft_transfer","ft_transfer_call","storage_deposit","storage_withdraw","storage_unregister"]}),Z=async($)=>{if(!await L.storage_balance_of({account_id:$})){let N=(await L.storage_balance_bounds())?.min||r;await L.storage_deposit({account_id:$},new U("100000000000000"),new U(N))}};return{transfer:async($,X,D)=>{return await Z($),L.ft_transfer({receiver_id:$,amount:X,memo:D},new U("100000000000000"),new U("1"))},transferCall:async($,X,D,N)=>{return await Z($),L.ft_transfer_call({receiver_id:$,amount:X,memo:N,msg:D},new U("100000000000000"),new U("1"))},balanceOf:($)=>L.ft_balance_of({account_id:$}),totalSupply:()=>L.ft_total_supply(),metadata:()=>L.ft_metadata(),storageBalanceOf:($)=>L.storage_balance_of({account_id:$}),storageDeposit:($,X)=>L.storage_deposit({account_id:$},new U("100000000000000"),new U(X||r)),ensureStorage:Z,contract:L}}async function I1(W){let{P:Q,match:U}=await import("ts-pattern"),{providers:L}=await import("near-api-js"),Z=await U(W).with({phrase:Q.string},async(x)=>{return await C(x)}).with({signer:Q.any},({signer:x})=>x).otherwise(()=>{return}),$=j1.get("rpcUrls")[B.Near],X=new L.JsonRpcProvider({url:$});async function D(x){let{Account:q}=await import("near-api-js"),J=x||await N();return new q(J,X,Z)}async function N(){if(!Z)throw new j("toolbox_near_no_signer");return await Z.getAddress()}async function a(x){if(!Z)throw new j("toolbox_near_no_signer");let{recipient:q,assetValue:J}=x;if(!G(q))throw new j("toolbox_near_invalid_address");let M=await D();if(J.isGasAsset===!1){let z=J.address;if(!z)throw new j("toolbox_near_missing_contract_address");let f=J.getBaseValue("string");return h({contractId:z,methodName:"ft_transfer",args:{receiver_id:q,amount:f,memo:x.memo}})}try{let z=J.getBaseValue("string");return(await M.transfer({receiverId:q,amount:z})).transaction.hash}catch(z){throw new j("toolbox_near_transfer_failed",{error:z})}}async function x1(x){let{recipient:q,assetValue:J,memo:M,feeRate:z,attachedDeposit:f,sender:Y}=x;if(!J.isGasAsset){let l=J.address;if(!l)throw new j("toolbox_near_missing_contract_address");return I({sender:Y,contractId:l,methodName:"ft_transfer",args:{receiver_id:q,amount:J.getBaseValue("string"),memo:M||null},gas:z.toString()||"100000000000000",attachedDeposit:"1"})}let{publicKey:O,nonce:w}=await K(X,Y),k=J.getBaseValue("bigint"),{SCHEMA:v}=await import("near-api-js/lib/transaction"),{transactions:F,utils:_}=await import("near-api-js"),g=[F.transfer(k)];if(M&&f)g.push(F.functionCall("memo",{memo:M},BigInt(z),BigInt(f)));let M1=await X.block({finality:"final"}),S=_.serialize.base_decode(M1.header.hash),Y1=F.createTransaction(Y,O,q,w,g,S),U1=_.serialize.serialize(v.Transaction,Y1);return{serialized:Buffer.from(U1).toString("base64"),publicKey:O.toString(),details:{signerId:Y,nonce:w,blockHash:_.serialize.base_encode(S)}}}async function I(x){let{sender:q}=x,{publicKey:J,nonce:M}=await K(X,q),{SCHEMA:z}=await import("near-api-js/lib/transaction"),{transactions:f,utils:Y}=await import("near-api-js"),O=await X.block({finality:"final"}),w=Y.serialize.base_decode(O.header.hash),k=[f.functionCall(x.methodName,Buffer.from(JSON.stringify(x.args)),BigInt(x.gas),BigInt(x.attachedDeposit))],v=f.createTransaction(q,J,x.contractId,M,k,w),F=Y.serialize.serialize(z.Transaction,v);return{serialized:Buffer.from(F).toString("base64"),publicKey:J.toString(),details:{signerId:q,receiverId:x.contractId,methodName:x.methodName,nonce:M,blockHash:Y.serialize.base_encode(w)}}}async function W1(x){if(!Z)throw new j("toolbox_near_no_signer");let[q,J]=await Z.signTransaction(x);return J}async function q1(x){return(await X.sendTransaction(x)).transaction.hash}async function J1(x){if("assetValue"in x){let z=BigInt("115123062500")+BigInt("108059500000"),f=await Q1(),Y=z*BigInt(f.toString());return P.from({chain:B.Near,value:Y.toString(),fromBaseDecimal:b[B.Near]})}let q=Z?await D():void 0;return y(x,q)}async function Q1(){try{return await X.query({request_type:"call_function",finality:"final",account_id:"system",method_name:"gas_price",args_base64:""})}catch{return"100000000"}}async function Z1(x,q,J){if(!Z)throw new j("toolbox_near_no_signer");let M=await D(),{utils:z}=await import("near-api-js"),f=z.format.parseNearAmount(J)||"0";return(await M.createAccount(x,z.PublicKey.fromString(q),BigInt(f))).transaction.hash}async function h(x){try{if(!Z)throw new j("toolbox_near_no_signer");let{transactions:q}=await import("near-api-js"),{contractId:J,methodName:M,args:z,deposit:f}=x,Y=await D(),O=await y({methodName:M,args:z||{},contractId:J}),w=q.functionCall(M,z||{},O.getBaseValue("bigint"),BigInt(f||"0"));return(await Y.signAndSendTransaction({receiverId:J,actions:[w]})).transaction.hash}catch(q){throw new j("toolbox_near_transfer_failed",{error:q})}}async function $1(x){let{createNearContract:q}=await import("../../chunk-zcdeg6h9.js"),J=await D();return q({account:J,contractId:x.contractId,viewMethods:x.viewMethods,changeMethods:x.changeMethods})}async function X1(x){if(!Z)throw new j("toolbox_near_no_signer");if(x.actions.length===0)throw new j("toolbox_near_empty_batch");return(await(await D()).signAndSendTransaction({receiverId:x.receiverId,actions:x.actions})).transaction.hash}async function z1(x){let q=await D();return T({contractId:x,account:q})}async function L1(x){try{let q=await D(x),J;try{let M=await q.getBalance();J=P.from({chain:B.Near,value:M,fromBaseDecimal:b[B.Near]})}catch{J=P.from({chain:B.Near,value:"0",fromBaseDecimal:b[B.Near]})}return[J]}catch(q){throw new j("toolbox_near_balance_failed",{error:q})}}async function y(x,q){let J=await U(x).when(p,()=>V.SIMPLE_TRANSFER).when(o,(Y)=>t(Y.methodName)).when(i,(Y)=>e(Y.actions)).when(n,()=>V.ACCOUNT_CREATION).when(c,()=>V.CONTRACT_DEPLOYMENT).when(s,(Y)=>{if(!q)throw new j("toolbox_near_no_account");return Y.customEstimator(q)}).otherwise(()=>{throw new j("toolbox_near_invalid_gas_params")}),M=await A(),f=BigInt(J)*BigInt(1000000000000)*BigInt(M);return P.from({chain:B.Near,value:f,fromBaseDecimal:b[B.Near]})}async function A(){try{return(await X.gasPrice(null)).gas_price||"100000000"}catch(x){return"100000000"}}return{getAddress:N,getPublicKey:async()=>Z?(await Z.getPublicKey()).toString():"",provider:X,transfer:a,createTransaction:x1,createContractFunctionCall:I,estimateTransactionFee:J1,broadcastTransaction:q1,signTransaction:W1,getBalance:L1,validateAddress:G,getSignerFromPhrase:(x)=>C(x),getSignerFromPrivateKey:u,callFunction:h,createSubAccount:Z1,createContract:$1,executeBatchTransaction:X1,nep141:z1,getGasPrice:A,estimateGas:y}}export{G as validateNearAddress,D1 as tgasToGas,p as isSimpleTransfer,s as isCustomEstimator,c as isContractDeployment,o as isContractCall,i as isBatchTransaction,n as isAccountCreation,I1 as getNearToolbox,u as getNearSignerFromPrivateKey,C as getNearSignerFromPhrase,K as getFullAccessPublicKey,t as getContractMethodGas,V1 as gasToTGas,e as estimateBatchGas,E as createNearContract,T as createNEP141Token,V as GAS_COSTS};
2
+
3
+ //# debugId=38921569B1E998F064756E2164756E21
4
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1,13 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../src/near/toolbox.ts", "../src/near/helpers/core.ts", "../src/near/helpers/gasEstimation.ts", "../src/near/helpers/nep141.ts"],
4
+ "sourcesContent": [
5
+ "import {\n AssetValue,\n BaseDecimal,\n Chain,\n type DerivationPathArray,\n SKConfig,\n SwapKitError,\n} from \"@swapkit/helpers\";\nimport type { Account } from \"near-api-js\";\nimport type { SignedTransaction, Transaction } from \"near-api-js/lib/transaction\";\nimport {\n getFullAccessPublicKey,\n getNearSignerFromPhrase,\n getNearSignerFromPrivateKey,\n validateNearAddress,\n} from \"./helpers\";\nimport {\n GAS_COSTS,\n estimateBatchGas,\n getContractMethodGas,\n isAccountCreation,\n isBatchTransaction,\n isContractCall,\n isContractDeployment,\n isCustomEstimator,\n isSimpleTransfer,\n} from \"./helpers/gasEstimation\";\nimport { createNEP141Token } from \"./helpers/nep141\";\nimport type {\n NearCreateTransactionParams,\n NearFunctionCallParams,\n NearToolboxParams,\n NearTransferParams,\n} from \"./types\";\nimport type { NearContractInterface, NearGasEstimateParams } from \"./types/contract\";\n\nexport async function getNearToolbox(toolboxParams?: NearToolboxParams) {\n const { P, match } = await import(\"ts-pattern\");\n const { providers } = await import(\"near-api-js\");\n const signer = await match(toolboxParams)\n .with({ phrase: P.string }, async (params) => {\n const signer = await getNearSignerFromPhrase(params);\n return signer;\n })\n .with({ signer: P.any }, ({ signer }) => signer)\n .otherwise(() => undefined);\n\n const url = SKConfig.get(\"rpcUrls\")[Chain.Near];\n\n const provider = new providers.JsonRpcProvider({ url });\n\n async function getAccount(address?: string) {\n const { Account } = await import(\"near-api-js\");\n\n const _address = address || (await getAddress());\n\n const account = new Account(_address, provider, signer);\n\n return account;\n }\n\n async function getAddress() {\n if (!signer) {\n throw new SwapKitError(\"toolbox_near_no_signer\");\n }\n const address = await signer.getAddress();\n return address;\n }\n\n async function transfer(params: NearTransferParams) {\n if (!signer) {\n throw new SwapKitError(\"toolbox_near_no_signer\");\n }\n\n const { recipient, assetValue } = params;\n\n if (!validateNearAddress(recipient)) {\n throw new SwapKitError(\"toolbox_near_invalid_address\");\n }\n\n const account = await getAccount();\n\n if (assetValue.isGasAsset === false) {\n // NEP-141 token transfer\n const contractId = assetValue.address;\n if (!contractId) {\n throw new SwapKitError(\"toolbox_near_missing_contract_address\");\n }\n\n const amount = assetValue.getBaseValue(\"string\");\n\n return callFunction({\n contractId,\n methodName: \"ft_transfer\",\n args: {\n receiver_id: recipient,\n amount,\n memo: params.memo,\n },\n });\n }\n\n try {\n const transferAmount = assetValue.getBaseValue(\"string\");\n\n const result = await account.transfer({\n receiverId: recipient,\n amount: transferAmount,\n });\n\n return result.transaction.hash;\n } catch (error) {\n throw new SwapKitError(\"toolbox_near_transfer_failed\", { error });\n }\n }\n\n async function createTransaction(params: NearCreateTransactionParams) {\n const { recipient, assetValue, memo, feeRate: gas, attachedDeposit, sender: signerId } = params;\n\n // Handle NEP-141 token transfers\n if (!assetValue.isGasAsset) {\n const contractId = assetValue.address;\n if (!contractId) {\n throw new SwapKitError(\"toolbox_near_missing_contract_address\");\n }\n\n return createContractFunctionCall({\n sender: signerId,\n contractId,\n methodName: \"ft_transfer\",\n args: {\n receiver_id: recipient,\n amount: assetValue.getBaseValue(\"string\"),\n memo: memo || null,\n },\n gas: gas.toString() || \"100000000000000\", // 100 TGas default\n attachedDeposit: \"1\", // 1 yoctoNEAR required for NEP-141 transfers\n });\n }\n\n // Native NEAR transfer\n const { publicKey, nonce } = await getFullAccessPublicKey(provider, signerId);\n const baseAmount = assetValue.getBaseValue(\"bigint\");\n\n const { SCHEMA } = await import(\"near-api-js/lib/transaction\");\n const { transactions, utils } = await import(\"near-api-js\");\n\n const txActions = [transactions.transfer(baseAmount)];\n\n if (memo && attachedDeposit) {\n txActions.push(\n transactions.functionCall(\"memo\", { memo }, BigInt(gas), BigInt(attachedDeposit)),\n );\n }\n\n const block = await provider.block({ finality: \"final\" });\n const blockHash = utils.serialize.base_decode(block.header.hash);\n\n const transaction = transactions.createTransaction(\n signerId,\n publicKey,\n recipient,\n nonce,\n txActions,\n blockHash,\n );\n\n const serializedTx = utils.serialize.serialize(SCHEMA.Transaction, transaction);\n const serializedBase64 = Buffer.from(serializedTx).toString(\"base64\");\n\n return {\n serialized: serializedBase64,\n publicKey: publicKey.toString(),\n details: {\n signerId,\n nonce: nonce,\n blockHash: utils.serialize.base_encode(blockHash),\n },\n };\n }\n\n async function createContractFunctionCall(params: {\n sender: string;\n contractId: string;\n methodName: string;\n args: any;\n gas: string;\n attachedDeposit: string;\n }) {\n const { sender: accountId } = params;\n\n const { publicKey, nonce } = await getFullAccessPublicKey(provider, accountId);\n\n const { SCHEMA } = await import(\"near-api-js/lib/transaction\");\n const { transactions, utils } = await import(\"near-api-js\");\n const block = await provider.block({ finality: \"final\" });\n const blockHash = utils.serialize.base_decode(block.header.hash);\n\n const actions = [\n transactions.functionCall(\n params.methodName,\n Buffer.from(JSON.stringify(params.args)),\n BigInt(params.gas),\n BigInt(params.attachedDeposit),\n ),\n ];\n\n const transaction = transactions.createTransaction(\n accountId,\n publicKey,\n params.contractId,\n nonce,\n actions,\n blockHash,\n );\n\n const serializedTx = utils.serialize.serialize(SCHEMA.Transaction, transaction);\n const serializedBase64 = Buffer.from(serializedTx).toString(\"base64\");\n\n return {\n serialized: serializedBase64,\n publicKey: publicKey.toString(),\n details: {\n signerId: accountId,\n receiverId: params.contractId,\n methodName: params.methodName,\n nonce: nonce,\n blockHash: utils.serialize.base_encode(blockHash),\n },\n };\n }\n\n async function signTransaction(transaction: Transaction) {\n if (!signer) {\n throw new SwapKitError(\"toolbox_near_no_signer\");\n }\n\n // Use the new signer interface method\n const [_hash, signedTx] = await signer.signTransaction(transaction);\n return signedTx;\n }\n\n async function broadcastTransaction(signedTransaction: SignedTransaction) {\n const result = await provider.sendTransaction(signedTransaction);\n return result.transaction.hash;\n }\n\n async function estimateTransactionFee(params: NearTransferParams | NearGasEstimateParams) {\n if (\"assetValue\" in params) {\n const baseTransferCost = \"115123062500\"; // gas units for transfer\n const receiptCreationCost = \"108059500000\"; // gas units for receipt\n\n const totalGasUnits = BigInt(baseTransferCost) + BigInt(receiptCreationCost);\n\n const gasPrice = await getCurrentGasPrice();\n\n // NEAR doesn't support fee multipliers - gas price is fixed by the network\n const totalCostYocto = totalGasUnits * BigInt(gasPrice.toString());\n\n return AssetValue.from({\n chain: Chain.Near,\n value: totalCostYocto.toString(),\n fromBaseDecimal: BaseDecimal[Chain.Near],\n });\n }\n\n // Handle new gas estimation params\n const account = signer ? await getAccount() : undefined;\n return estimateGas(params, account);\n }\n\n async function getCurrentGasPrice() {\n try {\n const result = await provider.query({\n request_type: \"call_function\",\n finality: \"final\",\n account_id: \"system\",\n method_name: \"gas_price\",\n args_base64: \"\",\n });\n\n return result;\n } catch {\n return \"100000000\"; // 0.0001 NEAR per Tgas\n }\n }\n\n async function createSubAccount(subAccountId: string, publicKey: string, initialBalance: string) {\n if (!signer) {\n throw new SwapKitError(\"toolbox_near_no_signer\");\n }\n\n const account = await getAccount();\n const { utils } = await import(\"near-api-js\");\n\n const balanceInYocto = utils.format.parseNearAmount(initialBalance) || \"0\";\n\n const result = await account.createAccount(\n subAccountId,\n utils.PublicKey.fromString(publicKey),\n BigInt(balanceInYocto),\n );\n\n return result.transaction.hash;\n }\n\n async function callFunction(params: NearFunctionCallParams) {\n try {\n if (!signer) {\n throw new SwapKitError(\"toolbox_near_no_signer\");\n }\n\n const { transactions } = await import(\"near-api-js\");\n\n const { contractId, methodName, args, deposit } = params;\n const account = await getAccount();\n\n const estimatedGas = await estimateGas({\n methodName,\n args: args || {},\n contractId,\n });\n\n const functionAction = transactions.functionCall(\n methodName,\n args || {},\n estimatedGas.getBaseValue(\"bigint\"),\n BigInt(deposit || \"0\"),\n );\n\n const result = await account.signAndSendTransaction({\n receiverId: contractId,\n actions: [functionAction],\n });\n\n return result.transaction.hash;\n } catch (error) {\n throw new SwapKitError(\"toolbox_near_transfer_failed\", { error });\n }\n }\n\n // Create typed contract interface\n async function createContract(contractInterface: NearContractInterface) {\n const { createNearContract } = await import(\"./helpers/contractFactory\");\n const account = await getAccount();\n\n return createNearContract({\n account,\n contractId: contractInterface.contractId,\n viewMethods: contractInterface.viewMethods,\n changeMethods: contractInterface.changeMethods,\n });\n }\n\n async function executeBatchTransaction(batch: { receiverId: string; actions: any[] }) {\n if (!signer) {\n throw new SwapKitError(\"toolbox_near_no_signer\");\n }\n\n if (batch.actions.length === 0) {\n throw new SwapKitError(\"toolbox_near_empty_batch\");\n }\n\n const account = await getAccount();\n\n // Use account.signAndSendTransaction for batch operations\n const result = await account.signAndSendTransaction({\n receiverId: batch.receiverId,\n actions: batch.actions,\n });\n\n return result.transaction.hash;\n }\n\n async function nep141(contractId: string) {\n const account = await getAccount();\n return createNEP141Token({ contractId, account });\n }\n\n async function getBalance(address: string) {\n try {\n const account = await getAccount(address);\n\n let nativeBalance: AssetValue;\n try {\n const value = await account.getBalance();\n\n nativeBalance = AssetValue.from({\n chain: Chain.Near,\n value,\n fromBaseDecimal: BaseDecimal[Chain.Near],\n });\n } catch {\n nativeBalance = AssetValue.from({\n chain: Chain.Near,\n value: \"0\",\n fromBaseDecimal: BaseDecimal[Chain.Near],\n });\n }\n\n // // Then, fetch token balances from API\n // let tokenBalances: AssetValue[] = [];\n // try {\n // const apiBalances = await SwapKitApi.getChainBalance({\n // chain: Chain.Near,\n // address,\n // scamFilter,\n // });\n\n // tokenBalances = apiBalances\n // .filter(({ identifier }) => identifier !== Chain.Near) // Filter out native NEAR\n // .map(({ identifier, value, decimal }) => {\n // return new AssetValue({\n // decimal: decimal || BaseDecimal[Chain.Near],\n // value,\n // identifier,\n // });\n // });\n // } catch (error) {\n // // If API fails, just return on-chain balance\n // console.warn(\"Failed to fetch token balances from API:\", error);\n // }\n\n // Merge native balance with token balances\n // return [nativeBalance, ...tokenBalances];\n return [nativeBalance];\n } catch (error) {\n throw new SwapKitError(\"toolbox_near_balance_failed\", { error });\n }\n }\n\n async function estimateGas(params: NearGasEstimateParams, account?: Account) {\n const gasInTGas = await match(params)\n .when(isSimpleTransfer, () => GAS_COSTS.SIMPLE_TRANSFER)\n .when(isContractCall, (p) => getContractMethodGas(p.methodName))\n .when(isBatchTransaction, (p) => estimateBatchGas(p.actions))\n .when(isAccountCreation, () => GAS_COSTS.ACCOUNT_CREATION)\n .when(isContractDeployment, () => GAS_COSTS.CONTRACT_DEPLOYMENT)\n .when(isCustomEstimator, (p) => {\n if (!account) {\n throw new SwapKitError(\"toolbox_near_no_account\");\n }\n return p.customEstimator(account);\n })\n .otherwise(() => {\n throw new SwapKitError(\"toolbox_near_invalid_gas_params\");\n });\n\n // Convert TGas to gas price in NEAR\n const gasPrice = await getGasPrice();\n const gasInUnits = BigInt(gasInTGas) * BigInt(10 ** 12); // Convert TGas to gas units\n const costInYoctoNear = gasInUnits * BigInt(gasPrice);\n\n return AssetValue.from({\n chain: Chain.Near,\n value: costInYoctoNear,\n fromBaseDecimal: BaseDecimal[Chain.Near],\n });\n }\n\n // Get current gas price from network\n async function getGasPrice() {\n try {\n const result = await provider.gasPrice(null);\n return result.gas_price || \"100000000\";\n } catch (_error) {\n // Fallback to default\n return \"100000000\";\n }\n }\n\n return {\n getAddress,\n getPublicKey: async () => (signer ? (await signer.getPublicKey()).toString() : \"\"),\n provider,\n transfer,\n createTransaction,\n createContractFunctionCall,\n estimateTransactionFee,\n broadcastTransaction,\n signTransaction,\n getBalance,\n validateAddress: validateNearAddress,\n getSignerFromPhrase: (params: {\n phrase: string;\n derivationPath?: DerivationPathArray;\n index?: number;\n }) => getNearSignerFromPhrase(params),\n getSignerFromPrivateKey: getNearSignerFromPrivateKey,\n callFunction,\n createSubAccount,\n createContract,\n executeBatchTransaction,\n nep141,\n getGasPrice,\n estimateGas,\n };\n}\n",
6
+ "import type { Provider } from \"@near-js/providers\";\nimport { type DerivationPathArray, SwapKitError, derivationPathToString } from \"@swapkit/helpers\";\nimport { type KeyPair, KeyPairSigner } from \"near-api-js\";\nimport type { NearSigner } from \"../types\";\n\nexport async function validateNearAddress(address: string) {\n // Use the official NEAR SDK validation function if available\n try {\n const { validateAccountId } = await import(\"near-sdk-js\");\n return validateAccountId(address);\n } catch {\n const ACCOUNT_ID_REGEX = /^(([a-z\\d]+[-_])*[a-z\\d]+\\.)*([a-z\\d]+[-_])*[a-z\\d]+$/;\n\n return address.length >= 2 && address.length <= 64 && ACCOUNT_ID_REGEX.test(address);\n }\n}\n\nexport async function getNearSignerFromPhrase(params: {\n phrase: string;\n derivationPath?: DerivationPathArray;\n index?: number;\n}) {\n const { parseSeedPhrase } = await import(\"near-seed-phrase\");\n const { KeyPair } = await import(\"near-api-js\");\n\n // Handle derivation path logic here\n // NEAR uses a 3-level derivation path: m/44'/397'/index'\n const index = params.index || 0;\n const derivationPath = params.derivationPath\n ? derivationPathToString(params.derivationPath.slice(0, 3) as [number, number, number])\n : `m/44'/397'/${index}'`;\n\n const { secretKey } = parseSeedPhrase(params.phrase, derivationPath);\n const keyPair = KeyPair.fromString(secretKey as any);\n\n return createNearSignerFromKeyPair(keyPair);\n}\n\nexport async function getNearSignerFromPrivateKey(privateKey: string) {\n const { KeyPair } = await import(\"near-api-js/lib/utils\");\n const keyPair = KeyPair.fromString(privateKey as any);\n return createNearSignerFromKeyPair(keyPair);\n}\n\nclass SKKeyPairSigner extends KeyPairSigner {\n #keyPair: KeyPair;\n\n constructor(keyPair: KeyPair) {\n super(keyPair);\n this.#keyPair = keyPair;\n }\n\n getAddress(): Promise<string> {\n // For implicit accounts, derive account ID from public key\n // NEAR implicit accounts use hex representation of the public key\n const publicKey = this.#keyPair.getPublicKey();\n const hexAddress = Buffer.from(publicKey.data).toString(\"hex\");\n return Promise.resolve(hexAddress);\n }\n}\n\nfunction createNearSignerFromKeyPair(keyPair: KeyPair): NearSigner {\n const keyPairSigner = new SKKeyPairSigner(keyPair);\n\n return keyPairSigner;\n}\n\nexport async function getFullAccessPublicKey(provider: Provider, accountId: string) {\n // Get the first full access key for the account\n const response = await provider.query({\n request_type: \"view_access_key_list\",\n finality: \"final\",\n account_id: accountId,\n });\n\n const fullAccessKey = (response as any).keys.find(\n (key: any) => key.access_key.permission === \"FullAccess\",\n );\n\n if (!fullAccessKey) {\n throw new SwapKitError(\"toolbox_near_invalid_address\");\n }\n\n const { utils } = await import(\"near-api-js\");\n const publicKey = utils.PublicKey.fromString(fullAccessKey.public_key);\n const nonce = (fullAccessKey.access_key.nonce as number) || 0;\n\n return { publicKey, nonce };\n}\n",
7
+ "import type { Account } from \"near-api-js\";\nimport type { NearGasEstimateParams } from \"../types/contract\";\n\n// Gas constants (in TGas - 10^12 gas units)\nexport const GAS_COSTS = {\n SIMPLE_TRANSFER: \"1\", // 1 TGas\n TOKEN_TRANSFER: \"100\", // 100 TGas\n CONTRACT_CALL: \"100\", // 100 TGas base\n ACCOUNT_CREATION: \"30\", // 30 TGas\n CONTRACT_DEPLOYMENT: \"200\", // 200 TGas\n ACCESS_KEY_ADDITION: \"5\", // 5 TGas\n ACCESS_KEY_DELETION: \"5\", // 5 TGas\n STAKE: \"10\", // 10 TGas\n STORAGE_DEPOSIT: \"100\", // 100 TGas\n} as const;\n\n// Type guards for discriminated union\nexport function isSimpleTransfer(\n params: NearGasEstimateParams,\n): params is { recipient: string; amount: string } {\n return \"recipient\" in params && \"amount\" in params && !(\"contractId\" in params);\n}\n\nexport function isContractCall(params: NearGasEstimateParams): params is {\n contractId: string;\n methodName: string;\n args?: Record<string, any>;\n attachedDeposit?: string;\n} {\n return \"contractId\" in params && \"methodName\" in params;\n}\n\nexport function isBatchTransaction(params: NearGasEstimateParams): params is { actions: any[] } {\n return \"actions\" in params;\n}\n\nexport function isAccountCreation(params: NearGasEstimateParams): params is {\n newAccountId: string;\n publicKey?: string;\n} {\n return \"newAccountId\" in params;\n}\n\nexport function isContractDeployment(\n params: NearGasEstimateParams,\n): params is { contractCode: Uint8Array } {\n return \"contractCode\" in params;\n}\n\nexport function isCustomEstimator(params: NearGasEstimateParams): params is {\n customEstimator: (account: Account) => Promise<string>;\n} {\n return \"customEstimator\" in params;\n}\n\n// Helper function to estimate gas for batch actions\nexport function estimateBatchGas(actions: any[]) {\n let totalGas = 0;\n\n for (const action of actions) {\n switch (action.enum) {\n case \"transfer\":\n totalGas += Number(GAS_COSTS.SIMPLE_TRANSFER);\n break;\n case \"functionCall\":\n totalGas += Number(GAS_COSTS.CONTRACT_CALL);\n break;\n case \"createAccount\":\n totalGas += Number(GAS_COSTS.ACCOUNT_CREATION);\n break;\n case \"deployContract\":\n totalGas += Number(GAS_COSTS.CONTRACT_DEPLOYMENT);\n break;\n case \"addKey\":\n totalGas += Number(GAS_COSTS.ACCESS_KEY_ADDITION);\n break;\n case \"deleteKey\":\n totalGas += Number(GAS_COSTS.ACCESS_KEY_DELETION);\n break;\n case \"stake\":\n totalGas += Number(GAS_COSTS.STAKE);\n break;\n default:\n totalGas += Number(GAS_COSTS.CONTRACT_CALL);\n }\n }\n\n return totalGas.toString();\n}\n\n// Helper function to get gas cost for contract methods\nexport function getContractMethodGas(methodName: string) {\n if (methodName === \"ft_transfer\" || methodName === \"ft_transfer_call\") {\n return GAS_COSTS.TOKEN_TRANSFER;\n }\n if (methodName === \"storage_deposit\") {\n return GAS_COSTS.STORAGE_DEPOSIT;\n }\n return GAS_COSTS.CONTRACT_CALL;\n}\n\n// Convert TGas string to gas units\nexport function tgasToGas(tgas: string): string {\n return (BigInt(tgas) * BigInt(10 ** 12)).toString();\n}\n\n// Convert gas units to TGas\nexport function gasToTGas(gas: string): string {\n return (BigInt(gas) / BigInt(10 ** 12)).toString();\n}\n",
8
+ "import type { Account, Contract } from \"near-api-js\";\nimport { createNearContract } from \"./contractFactory\";\n\nconst DEFAULT_STORAGE_DEPOSIT = \"1250000000000000000000\"; // 0.00125 NEAR\n\n// Define NEP-141 contract interface\ninterface NEP141Contract extends Contract {\n // View methods\n ft_balance_of(args: { account_id: string }): Promise<string>;\n ft_total_supply(): Promise<string>;\n ft_metadata(): Promise<any>;\n storage_balance_of(args: { account_id: string }): Promise<any>;\n storage_balance_bounds(): Promise<any>;\n\n // Change methods\n ft_transfer(args: any, gas: any, deposit: any): Promise<any>;\n ft_transfer_call(args: any, gas: any, deposit: any): Promise<any>;\n storage_deposit(args: any, gas: any, deposit: any): Promise<any>;\n storage_withdraw(args: any, gas: any, deposit: any): Promise<any>;\n storage_unregister(force?: boolean, gas?: any): Promise<any>;\n}\n\nexport async function createNEP141Token({\n contractId,\n account,\n}: {\n contractId: string;\n account: Account;\n}) {\n const BN = (await import(\"bn.js\")).default;\n\n const contract = await createNearContract<NEP141Contract>({\n account,\n contractId,\n viewMethods: [\n \"ft_balance_of\",\n \"ft_total_supply\",\n \"ft_metadata\",\n \"storage_balance_of\",\n \"storage_balance_bounds\",\n ],\n changeMethods: [\n \"ft_transfer\",\n \"ft_transfer_call\",\n \"storage_deposit\",\n \"storage_withdraw\",\n \"storage_unregister\",\n ],\n });\n\n // Helper to ensure storage before transfers\n const ensureStorageFor = async (accountId: string) => {\n const balance = await contract.storage_balance_of({ account_id: accountId });\n if (!balance) {\n // Get minimum storage requirement\n const bounds = await contract.storage_balance_bounds();\n const deposit = bounds?.min || DEFAULT_STORAGE_DEPOSIT;\n\n await contract.storage_deposit(\n { account_id: accountId },\n new BN(\"100000000000000\"), // 100 TGas\n new BN(deposit),\n );\n }\n };\n\n return {\n transfer: async (receiverId: string, amount: string, memo?: string) => {\n // Ensure recipient has storage before transfer\n await ensureStorageFor(receiverId);\n\n return contract.ft_transfer(\n { receiver_id: receiverId, amount, memo },\n new BN(\"100000000000000\"), // 100 TGas\n new BN(\"1\"), // 1 yoctoNEAR for security\n );\n },\n\n transferCall: async (receiverId: string, amount: string, msg: string, memo?: string) => {\n // Ensure recipient has storage before transfer\n await ensureStorageFor(receiverId);\n\n return contract.ft_transfer_call(\n { receiver_id: receiverId, amount, memo, msg },\n new BN(\"100000000000000\"), // 100 TGas\n new BN(\"1\"), // 1 yoctoNEAR for security\n );\n },\n\n balanceOf: (accountId: string) => contract.ft_balance_of({ account_id: accountId }),\n\n totalSupply: () => contract.ft_total_supply(),\n\n metadata: () => contract.ft_metadata(),\n\n storageBalanceOf: (accountId: string) => contract.storage_balance_of({ account_id: accountId }),\n\n storageDeposit: (accountId?: string, amount?: string) =>\n contract.storage_deposit(\n { account_id: accountId },\n new BN(\"100000000000000\"),\n new BN(amount || DEFAULT_STORAGE_DEPOSIT),\n ),\n\n ensureStorage: ensureStorageFor,\n\n // Raw contract access for advanced use cases\n contract,\n };\n}\n"
9
+ ],
10
+ "mappings": "iGAAA,mBACE,iBACA,WACA,cAEA,mBACA,yBCLF,uBAAmC,6BAAc,0BACjD,wBAAuB,qBAGvB,eAAsB,CAAmB,CAAC,EAAiB,CAEzD,GAAI,CACF,IAAQ,qBAAsB,KAAa,uBAC3C,OAAO,EAAkB,CAAO,EAChC,KAAM,CACN,IAAM,EAAmB,wDAEzB,OAAO,EAAQ,QAAU,GAAK,EAAQ,QAAU,IAAM,EAAiB,KAAK,CAAO,GAIvF,eAAsB,CAAuB,CAAC,EAI3C,CACD,IAAQ,mBAAoB,KAAa,6BACjC,WAAY,KAAa,uBAI3B,EAAQ,EAAO,OAAS,EACxB,EAAiB,EAAO,eAC1B,GAAuB,EAAO,eAAe,MAAM,EAAG,CAAC,CAA6B,EACpF,cAAc,MAEV,aAAc,EAAgB,EAAO,OAAQ,CAAc,EAC7D,EAAU,EAAQ,WAAW,CAAgB,EAEnD,OAAO,EAA4B,CAAO,EAG5C,eAAsB,CAA2B,CAAC,EAAoB,CACpE,IAAQ,WAAY,KAAa,iCAC3B,EAAU,EAAQ,WAAW,CAAiB,EACpD,OAAO,EAA4B,CAAO,EAG5C,MAAM,UAAwB,EAAc,CAC1C,GAEA,WAAW,CAAC,EAAkB,CAC5B,MAAM,CAAO,EACb,KAAK,GAAW,EAGlB,UAAU,EAAoB,CAG5B,IAAM,EAAY,KAAK,GAAS,aAAa,EACvC,EAAa,OAAO,KAAK,EAAU,IAAI,EAAE,SAAS,KAAK,EAC7D,OAAO,QAAQ,QAAQ,CAAU,EAErC,CAEA,SAAS,CAA2B,CAAC,EAA8B,CAGjE,OAFsB,IAAI,EAAgB,CAAO,EAKnD,eAAsB,CAAsB,CAAC,EAAoB,EAAmB,CAQlF,IAAM,GANW,MAAM,EAAS,MAAM,CACpC,aAAc,uBACd,SAAU,QACV,WAAY,CACd,CAAC,GAEuC,KAAK,KAC3C,CAAC,IAAa,EAAI,WAAW,aAAe,YAC9C,EAEA,IAAK,EACH,MAAM,IAAI,GAAa,8BAA8B,EAGvD,IAAQ,SAAU,KAAa,uBACzB,EAAY,EAAM,UAAU,WAAW,EAAc,UAAU,EAC/D,EAAS,EAAc,WAAW,OAAoB,EAE5D,MAAO,CAAE,YAAW,OAAM,ECnFrB,IAAM,EAAY,CACvB,gBAAiB,IACjB,eAAgB,MAChB,cAAe,MACf,iBAAkB,KAClB,oBAAqB,MACrB,oBAAqB,IACrB,oBAAqB,IACrB,MAAO,KACP,gBAAiB,KACnB,EAGO,SAAS,CAAgB,CAC9B,EACiD,CACjD,MAAO,cAAe,GAAU,WAAY,KAAY,eAAgB,GAGnE,SAAS,CAAc,CAAC,EAK7B,CACA,MAAO,eAAgB,GAAU,eAAgB,EAG5C,SAAS,CAAkB,CAAC,EAA6D,CAC9F,MAAO,YAAa,EAGf,SAAS,CAAiB,CAAC,EAGhC,CACA,MAAO,iBAAkB,EAGpB,SAAS,CAAoB,CAClC,EACwC,CACxC,MAAO,iBAAkB,EAGpB,SAAS,CAAiB,CAAC,EAEhC,CACA,MAAO,oBAAqB,EAIvB,SAAS,CAAgB,CAAC,EAAgB,CAC/C,IAAI,EAAW,EAEf,QAAW,KAAU,EACnB,OAAQ,EAAO,UACR,WACH,GAAY,OAAO,EAAU,eAAe,EAC5C,UACG,eACH,GAAY,OAAO,EAAU,aAAa,EAC1C,UACG,gBACH,GAAY,OAAO,EAAU,gBAAgB,EAC7C,UACG,iBACH,GAAY,OAAO,EAAU,mBAAmB,EAChD,UACG,SACH,GAAY,OAAO,EAAU,mBAAmB,EAChD,UACG,YACH,GAAY,OAAO,EAAU,mBAAmB,EAChD,UACG,QACH,GAAY,OAAO,EAAU,KAAK,EAClC,cAEA,GAAY,OAAO,EAAU,aAAa,EAIhD,OAAO,EAAS,SAAS,EAIpB,SAAS,CAAoB,CAAC,EAAoB,CACvD,GAAI,IAAe,eAAiB,IAAe,mBACjD,OAAO,EAAU,eAEnB,GAAI,IAAe,kBACjB,OAAO,EAAU,gBAEnB,OAAO,EAAU,cAIZ,SAAS,EAAS,CAAC,EAAsB,CAC9C,OAAQ,OAAO,CAAI,EAAI,OAAO,aAAQ,GAAG,SAAS,EAI7C,SAAS,EAAS,CAAC,EAAqB,CAC7C,OAAQ,OAAO,CAAG,EAAI,OAAO,aAAQ,GAAG,SAAS,ECzGnD,IAAM,EAA0B,yBAmBhC,eAAsB,CAAiB,EACrC,aACA,WAIC,CACD,IAAM,GAAM,KAAa,kBAAU,QAE7B,EAAW,MAAM,EAAmC,CACxD,UACA,aACA,YAAa,CACX,gBACA,kBACA,cACA,qBACA,wBACF,EACA,cAAe,CACb,cACA,mBACA,kBACA,mBACA,oBACF,CACF,CAAC,EAGK,EAAmB,MAAO,IAAsB,CAEpD,IADgB,MAAM,EAAS,mBAAmB,CAAE,WAAY,CAAU,CAAC,EAC7D,CAGZ,IAAM,GADS,MAAM,EAAS,uBAAuB,IAC7B,KAAO,EAE/B,MAAM,EAAS,gBACb,CAAE,WAAY,CAAU,EACxB,IAAI,EAAG,iBAAiB,EACxB,IAAI,EAAG,CAAO,CAChB,IAIJ,MAAO,CACL,SAAU,MAAO,EAAoB,EAAgB,IAAkB,CAIrE,OAFA,MAAM,EAAiB,CAAU,EAE1B,EAAS,YACd,CAAE,YAAa,EAAY,SAAQ,MAAK,EACxC,IAAI,EAAG,iBAAiB,EACxB,IAAI,EAAG,GAAG,CACZ,GAGF,aAAc,MAAO,EAAoB,EAAgB,EAAa,IAAkB,CAItF,OAFA,MAAM,EAAiB,CAAU,EAE1B,EAAS,iBACd,CAAE,YAAa,EAAY,SAAQ,OAAM,KAAI,EAC7C,IAAI,EAAG,iBAAiB,EACxB,IAAI,EAAG,GAAG,CACZ,GAGF,UAAW,CAAC,IAAsB,EAAS,cAAc,CAAE,WAAY,CAAU,CAAC,EAElF,YAAa,IAAM,EAAS,gBAAgB,EAE5C,SAAU,IAAM,EAAS,YAAY,EAErC,iBAAkB,CAAC,IAAsB,EAAS,mBAAmB,CAAE,WAAY,CAAU,CAAC,EAE9F,eAAgB,CAAC,EAAoB,IACnC,EAAS,gBACP,CAAE,WAAY,CAAU,EACxB,IAAI,EAAG,iBAAiB,EACxB,IAAI,EAAG,GAAU,CAAuB,CAC1C,EAEF,cAAe,EAGf,UACF,EHxEF,eAAsB,EAAc,CAAC,EAAmC,CACtE,IAAQ,IAAG,SAAU,KAAa,uBAC1B,aAAc,KAAa,uBAC7B,EAAS,MAAM,EAAM,CAAa,EACrC,KAAK,CAAE,OAAQ,EAAE,MAAO,EAAG,MAAO,IAAW,CAE5C,OADe,MAAM,EAAwB,CAAM,EAEpD,EACA,KAAK,CAAE,OAAQ,EAAE,GAAI,EAAG,EAAG,YAAa,CAAM,EAC9C,UAAU,IAAG,CAAG,OAAS,EAEtB,EAAM,GAAS,IAAI,SAAS,EAAE,EAAM,MAEpC,EAAW,IAAI,EAAU,gBAAgB,CAAE,KAAI,CAAC,EAEtD,eAAe,CAAU,CAAC,EAAkB,CAC1C,IAAQ,WAAY,KAAa,uBAE3B,EAAW,GAAY,MAAM,EAAW,EAI9C,OAFgB,IAAI,EAAQ,EAAU,EAAU,CAAM,EAKxD,eAAe,CAAU,EAAG,CAC1B,IAAK,EACH,MAAM,IAAI,EAAa,wBAAwB,EAGjD,OADgB,MAAM,EAAO,WAAW,EAI1C,eAAe,CAAQ,CAAC,EAA4B,CAClD,IAAK,EACH,MAAM,IAAI,EAAa,wBAAwB,EAGjD,IAAQ,YAAW,cAAe,EAElC,IAAK,EAAoB,CAAS,EAChC,MAAM,IAAI,EAAa,8BAA8B,EAGvD,IAAM,EAAU,MAAM,EAAW,EAEjC,GAAI,EAAW,aAAe,GAAO,CAEnC,IAAM,EAAa,EAAW,QAC9B,IAAK,EACH,MAAM,IAAI,EAAa,uCAAuC,EAGhE,IAAM,EAAS,EAAW,aAAa,QAAQ,EAE/C,OAAO,EAAa,CAClB,aACA,WAAY,cACZ,KAAM,CACJ,YAAa,EACb,SACA,KAAM,EAAO,IACf,CACF,CAAC,EAGH,GAAI,CACF,IAAM,EAAiB,EAAW,aAAa,QAAQ,EAOvD,OALe,MAAM,EAAQ,SAAS,CACpC,WAAY,EACZ,OAAQ,CACV,CAAC,GAEa,YAAY,KAC1B,MAAO,EAAO,CACd,MAAM,IAAI,EAAa,+BAAgC,CAAE,OAAM,CAAC,GAIpE,eAAe,EAAiB,CAAC,EAAqC,CACpE,IAAQ,YAAW,aAAY,OAAM,QAAS,EAAK,kBAAiB,OAAQ,GAAa,EAGzF,IAAK,EAAW,WAAY,CAC1B,IAAM,EAAa,EAAW,QAC9B,IAAK,EACH,MAAM,IAAI,EAAa,uCAAuC,EAGhE,OAAO,EAA2B,CAChC,OAAQ,EACR,aACA,WAAY,cACZ,KAAM,CACJ,YAAa,EACb,OAAQ,EAAW,aAAa,QAAQ,EACxC,KAAM,GAAQ,IAChB,EACA,IAAK,EAAI,SAAS,GAAK,kBACvB,gBAAiB,GACnB,CAAC,EAIH,IAAQ,YAAW,SAAU,MAAM,EAAuB,EAAU,CAAQ,EACtE,EAAa,EAAW,aAAa,QAAQ,GAE3C,UAAW,KAAa,wCACxB,eAAc,SAAU,KAAa,uBAEvC,EAAY,CAAC,EAAa,SAAS,CAAU,CAAC,EAEpD,GAAI,GAAQ,EACV,EAAU,KACR,EAAa,aAAa,OAAQ,CAAE,MAAK,EAAG,OAAO,CAAG,EAAG,OAAO,CAAe,CAAC,CAClF,EAGF,IAAM,GAAQ,MAAM,EAAS,MAAM,CAAE,SAAU,OAAQ,CAAC,EAClD,EAAY,EAAM,UAAU,YAAY,GAAM,OAAO,IAAI,EAEzD,GAAc,EAAa,kBAC/B,EACA,EACA,EACA,EACA,EACA,CACF,EAEM,GAAe,EAAM,UAAU,UAAU,EAAO,YAAa,EAAW,EAG9E,MAAO,CACL,WAHuB,OAAO,KAAK,EAAY,EAAE,SAAS,QAAQ,EAIlE,UAAW,EAAU,SAAS,EAC9B,QAAS,CACP,WACA,MAAO,EACP,UAAW,EAAM,UAAU,YAAY,CAAS,CAClD,CACF,EAGF,eAAe,CAA0B,CAAC,EAOvC,CACD,IAAQ,OAAQ,GAAc,GAEtB,YAAW,SAAU,MAAM,EAAuB,EAAU,CAAS,GAErE,UAAW,KAAa,wCACxB,eAAc,SAAU,KAAa,uBACvC,EAAQ,MAAM,EAAS,MAAM,CAAE,SAAU,OAAQ,CAAC,EAClD,EAAY,EAAM,UAAU,YAAY,EAAM,OAAO,IAAI,EAEzD,EAAU,CACd,EAAa,aACX,EAAO,WACP,OAAO,KAAK,KAAK,UAAU,EAAO,IAAI,CAAC,EACvC,OAAO,EAAO,GAAG,EACjB,OAAO,EAAO,eAAe,CAC/B,CACF,EAEM,EAAc,EAAa,kBAC/B,EACA,EACA,EAAO,WACP,EACA,EACA,CACF,EAEM,EAAe,EAAM,UAAU,UAAU,EAAO,YAAa,CAAW,EAG9E,MAAO,CACL,WAHuB,OAAO,KAAK,CAAY,EAAE,SAAS,QAAQ,EAIlE,UAAW,EAAU,SAAS,EAC9B,QAAS,CACP,SAAU,EACV,WAAY,EAAO,WACnB,WAAY,EAAO,WACnB,MAAO,EACP,UAAW,EAAM,UAAU,YAAY,CAAS,CAClD,CACF,EAGF,eAAe,EAAe,CAAC,EAA0B,CACvD,IAAK,EACH,MAAM,IAAI,EAAa,wBAAwB,EAIjD,IAAO,EAAO,GAAY,MAAM,EAAO,gBAAgB,CAAW,EAClE,OAAO,EAGT,eAAe,EAAoB,CAAC,EAAsC,CAExE,OADe,MAAM,EAAS,gBAAgB,CAAiB,GACjD,YAAY,KAG5B,eAAe,EAAsB,CAAC,EAAoD,CACxF,GAAI,eAAgB,EAAQ,CAI1B,IAAM,EAAgB,OAHG,cAGoB,EAAI,OAFrB,cAE+C,EAErE,EAAW,MAAM,GAAmB,EAGpC,EAAiB,EAAgB,OAAO,EAAS,SAAS,CAAC,EAEjE,OAAO,EAAW,KAAK,CACrB,MAAO,EAAM,KACb,MAAO,EAAe,SAAS,EAC/B,gBAAiB,EAAY,EAAM,KACrC,CAAC,EAIH,IAAM,EAAU,EAAS,MAAM,EAAW,EAAI,OAC9C,OAAO,EAAY,EAAQ,CAAO,EAGpC,eAAe,EAAkB,EAAG,CAClC,GAAI,CASF,OARe,MAAM,EAAS,MAAM,CAClC,aAAc,gBACd,SAAU,QACV,WAAY,SACZ,YAAa,YACb,YAAa,EACf,CAAC,EAGD,KAAM,CACN,MAAO,aAIX,eAAe,EAAgB,CAAC,EAAsB,EAAmB,EAAwB,CAC/F,IAAK,EACH,MAAM,IAAI,EAAa,wBAAwB,EAGjD,IAAM,EAAU,MAAM,EAAW,GACzB,SAAU,KAAa,uBAEzB,EAAiB,EAAM,OAAO,gBAAgB,CAAc,GAAK,IAQvE,OANe,MAAM,EAAQ,cAC3B,EACA,EAAM,UAAU,WAAW,CAAS,EACpC,OAAO,CAAc,CACvB,GAEc,YAAY,KAG5B,eAAe,CAAY,CAAC,EAAgC,CAC1D,GAAI,CACF,IAAK,EACH,MAAM,IAAI,EAAa,wBAAwB,EAGjD,IAAQ,gBAAiB,KAAa,wBAE9B,aAAY,aAAY,OAAM,WAAY,EAC5C,EAAU,MAAM,EAAW,EAE3B,EAAe,MAAM,EAAY,CACrC,aACA,KAAM,GAAQ,CAAC,EACf,YACF,CAAC,EAEK,EAAiB,EAAa,aAClC,EACA,GAAQ,CAAC,EACT,EAAa,aAAa,QAAQ,EAClC,OAAO,GAAW,GAAG,CACvB,EAOA,OALe,MAAM,EAAQ,uBAAuB,CAClD,WAAY,EACZ,QAAS,CAAC,CAAc,CAC1B,CAAC,GAEa,YAAY,KAC1B,MAAO,EAAO,CACd,MAAM,IAAI,EAAa,+BAAgC,CAAE,OAAM,CAAC,GAKpE,eAAe,EAAc,CAAC,EAA0C,CACtE,IAAQ,sBAAuB,KAAa,mCACtC,EAAU,MAAM,EAAW,EAEjC,OAAO,EAAmB,CACxB,UACA,WAAY,EAAkB,WAC9B,YAAa,EAAkB,YAC/B,cAAe,EAAkB,aACnC,CAAC,EAGH,eAAe,EAAuB,CAAC,EAA+C,CACpF,IAAK,EACH,MAAM,IAAI,EAAa,wBAAwB,EAGjD,GAAI,EAAM,QAAQ,SAAW,EAC3B,MAAM,IAAI,EAAa,0BAA0B,EAWnD,OALe,MAHC,MAAM,EAAW,GAGJ,uBAAuB,CAClD,WAAY,EAAM,WAClB,QAAS,EAAM,OACjB,CAAC,GAEa,YAAY,KAG5B,eAAe,EAAM,CAAC,EAAoB,CACxC,IAAM,EAAU,MAAM,EAAW,EACjC,OAAO,EAAkB,CAAE,aAAY,SAAQ,CAAC,EAGlD,eAAe,EAAU,CAAC,EAAiB,CACzC,GAAI,CACF,IAAM,EAAU,MAAM,EAAW,CAAO,EAEpC,EACJ,GAAI,CACF,IAAM,EAAQ,MAAM,EAAQ,WAAW,EAEvC,EAAgB,EAAW,KAAK,CAC9B,MAAO,EAAM,KACb,QACA,gBAAiB,EAAY,EAAM,KACrC,CAAC,EACD,KAAM,CACN,EAAgB,EAAW,KAAK,CAC9B,MAAO,EAAM,KACb,MAAO,IACP,gBAAiB,EAAY,EAAM,KACrC,CAAC,EA4BH,MAAO,CAAC,CAAa,EACrB,MAAO,EAAO,CACd,MAAM,IAAI,EAAa,8BAA+B,CAAE,OAAM,CAAC,GAInE,eAAe,CAAW,CAAC,EAA+B,EAAmB,CAC3E,IAAM,EAAY,MAAM,EAAM,CAAM,EACjC,KAAK,EAAkB,IAAM,EAAU,eAAe,EACtD,KAAK,EAAgB,CAAC,IAAM,EAAqB,EAAE,UAAU,CAAC,EAC9D,KAAK,EAAoB,CAAC,IAAM,EAAiB,EAAE,OAAO,CAAC,EAC3D,KAAK,EAAmB,IAAM,EAAU,gBAAgB,EACxD,KAAK,EAAsB,IAAM,EAAU,mBAAmB,EAC9D,KAAK,EAAmB,CAAC,IAAM,CAC9B,IAAK,EACH,MAAM,IAAI,EAAa,yBAAyB,EAElD,OAAO,EAAE,gBAAgB,CAAO,EACjC,EACA,UAAU,IAAM,CACf,MAAM,IAAI,EAAa,iCAAiC,EACzD,EAGG,EAAW,MAAM,EAAY,EAE7B,EADa,OAAO,CAAS,EAAI,OAAO,aAAQ,EACjB,OAAO,CAAQ,EAEpD,OAAO,EAAW,KAAK,CACrB,MAAO,EAAM,KACb,MAAO,EACP,gBAAiB,EAAY,EAAM,KACrC,CAAC,EAIH,eAAe,CAAW,EAAG,CAC3B,GAAI,CAEF,OADe,MAAM,EAAS,SAAS,IAAI,GAC7B,WAAa,YAC3B,MAAO,EAAQ,CAEf,MAAO,aAIX,MAAO,CACL,aACA,aAAc,SAAa,GAAU,MAAM,EAAO,aAAa,GAAG,SAAS,EAAI,GAC/E,WACA,WACA,qBACA,6BACA,0BACA,wBACA,mBACA,cACA,gBAAiB,EACjB,oBAAqB,CAAC,IAIhB,EAAwB,CAAM,EACpC,wBAAyB,EACzB,eACA,oBACA,kBACA,2BACA,UACA,cACA,aACF",
11
+ "debugId": "38921569B1E998F064756E2164756E21",
12
+ "names": []
13
+ }
@@ -1,3 +1,4 @@
1
- var I={};$(I,{radixValidateAddress:()=>Y,RadixToolbox:()=>B});module.exports=_(I);var N=require("@swapkit/helpers");function Y(j){return j.startsWith("account_rdx1")&&j.length===66}function q({networkApi:j}){return async function J(K){let M=await G({address:K,networkApi:j});return v({resources:M,networkApi:j})}}async function G({address:j,networkApi:J}){let K=!0,M,L=[],z=await x(J);while(K){let U={address:j,limit_per_page:100,cursor:M,at_ledger_state:{state_version:z}},O=await J.state.innerClient.entityFungiblesPage({stateEntityFungiblesPageRequest:U});if(L=L.concat(O.items),O.next_cursor)M=O.next_cursor;else K=!1}return L}async function v({resources:j,networkApi:J}){let K=[],M=50,L=[];for(let z=0;z<j.length;z+=50)L.push(j.slice(z,z+50));for(let z of L){let U=z.map((H)=>H.resource_address),O=await J.state.getEntityDetailsVaultAggregated(U),W=new Map;for(let H of O)if(H.details!==void 0){let Q=H.metadata?.items.find((Z)=>Z.key==="symbol"),V=Q?.value.typed.type==="String"?Q.value.typed.value:"?";if(H.details.type==="FungibleResource")W.set(H.address,{decimals:H.details.divisibility,symbol:V})}for(let H of z)if(H.aggregation_level==="Global"){let Q=W.get(H.resource_address)||{decimals:0,symbol:"?"},V=N.AssetValue.from({asset:Q.symbol!==N.Chain.Radix?`${N.Chain.Radix}.${Q.symbol}-${H.resource_address}`:"XRD.XRD",value:H.amount});K.push(V)}}return K}async function x(j){return j.status.getCurrent().then((J)=>J.ledger_state.state_version)}var B=async({dappConfig:j}={})=>{let{RadixDappToolkit:J}=await import("@radixdlt/radix-dapp-toolkit"),{GatewayApiClient:K}=await import("@radixdlt/babylon-gateway-api-sdk"),M=j||N.SKConfig.get("integrations").radix,L=J({...M,networkId:M.network?.networkId||1}),z=K.initialize(L.gatewayApi.clientConfig);return{getAddress:()=>"",getBalance:q({networkApi:z}),networkApi:z,validateAddress:Y,signAndBroadcast:()=>{throw new Error("Not implemented")}}};
1
+ var I={};$(I,{radixValidateAddress:()=>Y,RadixToolbox:()=>B});module.exports=_(I);var M=require("@swapkit/helpers");function Y(j){return j.startsWith("account_rdx1")&&j.length===66}function q({networkApi:j}){return async function J(K){let N=await G({address:K,networkApi:j});return v({resources:N,networkApi:j})}}async function G({address:j,networkApi:J}){let K=!0,N,L=[],z=await x(J);while(K){let U={address:j,limit_per_page:100,cursor:N,at_ledger_state:{state_version:z}},O=await J.state.innerClient.entityFungiblesPage({stateEntityFungiblesPageRequest:U});if(L=L.concat(O.items),O.next_cursor)N=O.next_cursor;else K=!1}return L}async function v({resources:j,networkApi:J}){let K=[],N=50,L=[];for(let z=0;z<j.length;z+=50)L.push(j.slice(z,z+50));for(let z of L){let U=z.map((H)=>H.resource_address),O=await J.state.getEntityDetailsVaultAggregated(U),W=new Map;for(let H of O)if(H.details!==void 0){let Q=H.metadata?.items.find((Z)=>Z.key==="symbol"),V=Q?.value.typed.type==="String"?Q.value.typed.value:"?";if(H.details.type==="FungibleResource")W.set(H.address,{decimals:H.details.divisibility,symbol:V})}for(let H of z)if(H.aggregation_level==="Global"){let Q=W.get(H.resource_address)||{decimals:0,symbol:"?"},V=M.AssetValue.from({asset:Q.symbol!==M.Chain.Radix?`${M.Chain.Radix}.${Q.symbol}-${H.resource_address}`:"XRD.XRD",value:H.amount});K.push(V)}}return K}async function x(j){return j.status.getCurrent().then((J)=>J.ledger_state.state_version)}var B=async({dappConfig:j}={})=>{let{RadixDappToolkit:J}=await import("@radixdlt/radix-dapp-toolkit"),{GatewayApiClient:K}=await import("@radixdlt/babylon-gateway-api-sdk"),N=j||M.SKConfig.get("integrations").radix,L=J({...N,networkId:N.network?.networkId||1}),z=K.initialize(L.gatewayApi.clientConfig);return{getAddress:()=>"",getBalance:q({networkApi:z}),networkApi:z,validateAddress:Y,signAndBroadcast:()=>{throw new M.SwapKitError("toolbox_radix_method_not_supported",{method:"signAndBroadcast"})}}};
2
2
 
3
- //# debugId=A29CBEBEA6434FF464756E2164756E21
3
+ //# debugId=F56FF472911CDA3064756E2164756E21
4
+ //# sourceMappingURL=index.cjs.map