@swapkit/toolboxes 4.3.7 → 4.3.8

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 (59) hide show
  1. package/dist/src/evm/index.cjs +2 -2
  2. package/dist/src/evm/index.cjs.map +7 -7
  3. package/dist/src/evm/index.js +2 -2
  4. package/dist/src/evm/index.js.map +7 -7
  5. package/dist/src/index.cjs +3 -3
  6. package/dist/src/index.cjs.map +12 -12
  7. package/dist/src/index.js +3 -3
  8. package/dist/src/index.js.map +12 -12
  9. package/dist/src/near/index.cjs +2 -2
  10. package/dist/src/near/index.cjs.map +3 -3
  11. package/dist/src/near/index.js +2 -2
  12. package/dist/src/near/index.js.map +3 -3
  13. package/dist/src/radix/index.cjs +2 -2
  14. package/dist/src/radix/index.cjs.map +3 -3
  15. package/dist/src/radix/index.js +2 -2
  16. package/dist/src/radix/index.js.map +3 -3
  17. package/dist/src/solana/index.cjs +2 -2
  18. package/dist/src/solana/index.cjs.map +3 -3
  19. package/dist/src/solana/index.js +2 -2
  20. package/dist/src/solana/index.js.map +3 -3
  21. package/dist/src/substrate/index.cjs +2 -2
  22. package/dist/src/substrate/index.cjs.map +3 -3
  23. package/dist/src/substrate/index.js +2 -2
  24. package/dist/src/substrate/index.js.map +3 -3
  25. package/dist/src/sui/index.cjs +2 -2
  26. package/dist/src/sui/index.cjs.map +3 -3
  27. package/dist/src/sui/index.js +2 -2
  28. package/dist/src/sui/index.js.map +3 -3
  29. package/dist/src/ton/index.cjs +2 -2
  30. package/dist/src/ton/index.cjs.map +3 -3
  31. package/dist/src/ton/index.js +2 -2
  32. package/dist/src/ton/index.js.map +3 -3
  33. package/dist/src/utxo/index.cjs +3 -3
  34. package/dist/src/utxo/index.cjs.map +3 -3
  35. package/dist/src/utxo/index.js +3 -3
  36. package/dist/src/utxo/index.js.map +3 -3
  37. package/dist/types/evm/helpers.d.ts +1 -1
  38. package/dist/types/evm/helpers.d.ts.map +1 -1
  39. package/dist/types/evm/toolbox/baseEVMToolbox.d.ts +2 -0
  40. package/dist/types/evm/toolbox/baseEVMToolbox.d.ts.map +1 -1
  41. package/dist/types/evm/toolbox/evm.d.ts +38 -38
  42. package/dist/types/evm/toolbox/evm.d.ts.map +1 -1
  43. package/dist/types/evm/toolbox/op.d.ts +2 -14
  44. package/dist/types/evm/toolbox/op.d.ts.map +1 -1
  45. package/dist/types/radix/index.d.ts.map +1 -1
  46. package/dist/types/solana/toolbox.d.ts.map +1 -1
  47. package/dist/types/sui/toolbox.d.ts.map +1 -1
  48. package/dist/types/utils.d.ts.map +1 -1
  49. package/package.json +2 -2
  50. package/src/evm/helpers.ts +7 -9
  51. package/src/evm/toolbox/baseEVMToolbox.ts +4 -1
  52. package/src/evm/toolbox/evm.ts +2 -3
  53. package/src/evm/toolbox/op.ts +1 -21
  54. package/src/radix/index.ts +7 -1
  55. package/src/solana/toolbox.ts +2 -8
  56. package/src/substrate/balance.ts +2 -2
  57. package/src/sui/toolbox.ts +4 -3
  58. package/src/ton/toolbox.ts +2 -2
  59. package/src/utils.ts +8 -1
@@ -2,14 +2,14 @@
2
2
  "version": 3,
3
3
  "sources": ["../src/utils.ts", "../src/evm/api.ts", "../src/evm/helpers.ts", "../src/evm/contracts/eth/multicall.ts", "../src/evm/toolbox/baseEVMToolbox.ts", "../src/evm/toolbox/evm.ts", "../src/evm/contracts/op/gasOracle.ts", "../src/evm/toolbox/op.ts", "../src/evm/toolbox/index.ts", "../src/evm/types.ts", "../src/evm/index.ts", "../src/cardano/toolbox.ts", "../src/cardano/index.ts", "../src/cosmos/thorchainUtils/addressFormat.ts", "../src/cosmos/util.ts", "../src/cosmos/thorchainUtils/types/MsgCompiled.ts", "../src/cosmos/thorchainUtils/registry.ts", "../src/cosmos/thorchainUtils/messages.ts", "../src/cosmos/thorchainUtils/types/index.ts", "../src/cosmos/thorchainUtils/index.ts", "../src/cosmos/toolbox/cosmos.ts", "../src/cosmos/toolbox/thorchain.ts", "../src/cosmos/toolbox/index.ts", "../src/cosmos/index.ts", "../src/solana/toolbox.ts", "../src/solana/index.ts", "../src/sui/toolbox.ts", "../src/sui/index.ts", "../src/ton/toolbox.ts", "../src/ton/index.ts", "../src/tron/helpers/trc20.abi.ts", "../src/tron/helpers/trongrid.ts", "../src/tron/toolbox.ts", "../src/tron/index.ts", "../src/utxo/helpers/api.ts", "../src/utxo/helpers/bchaddrjs.ts", "../src/utxo/helpers/txSize.ts", "../src/utxo/helpers/coinselect.ts", "../src/utxo/helpers/index.ts", "../src/utxo/toolbox/validators.ts", "../src/utxo/toolbox/utxo.ts", "../src/utxo/toolbox/bitcoinCash.ts", "../src/utxo/toolbox/zcash.ts", "../src/utxo/toolbox/index.ts", "../src/utxo/index.ts", "../src/near/helpers/core.ts", "../src/near/helpers/gasEstimation.ts", "../src/near/helpers/nep141.ts", "../src/near/toolbox.ts", "../src/near/types.ts", "../src/near/index.ts", "../src/radix/index.ts", "../src/ripple/index.ts", "../src/substrate/balance.ts", "../src/substrate/types.ts", "../src/substrate/substrate.ts", "../src/substrate/index.ts", "../src/index.ts"],
4
4
  "sourcesContent": [
5
- "import { AssetValue, type Chain, getChainConfig } from \"@swapkit/helpers\";\nimport { SwapKitApi } from \"@swapkit/helpers/api\";\n\nconst pid = typeof process !== \"undefined\" && process.pid ? process.pid.toString(36) : \"\";\n\nlet last = 0;\nexport function uniqid() {\n function now() {\n const time = Date.now();\n const lastTime = last || time;\n last = lastTime;\n\n return time > last ? time : lastTime + 1;\n }\n\n return pid + now().toString(36);\n}\n\nexport function getBalance<T extends Chain>(chain: T) {\n return async function getBalance(address: string, scamFilter = true) {\n const balances = await SwapKitApi.getChainBalance({ address, chain, scamFilter });\n const { baseDecimal } = getChainConfig(chain);\n return balances.map(({ identifier, value, decimal }) => {\n return new AssetValue({ decimal: decimal || baseDecimal, identifier, value });\n });\n };\n}\n",
5
+ "import { AssetValue, type Chain, getChainConfig } from \"@swapkit/helpers\";\nimport { SwapKitApi } from \"@swapkit/helpers/api\";\n\nconst pid = typeof process !== \"undefined\" && process.pid ? process.pid.toString(36) : \"\";\n\nlet last = 0;\nexport function uniqid() {\n function now() {\n const time = Date.now();\n const lastTime = last || time;\n last = lastTime;\n\n return time > last ? time : lastTime + 1;\n }\n\n return pid + now().toString(36);\n}\n\nexport function getBalance<T extends Chain>(chain: T) {\n return async function getBalance(address: string, scamFilter = true) {\n const balances = await SwapKitApi.getChainBalance({ address, chain, scamFilter });\n const { baseDecimal } = getChainConfig(chain);\n const assetValues = balances.map(({ identifier, value, decimal }) => {\n return new AssetValue({ decimal: decimal || baseDecimal, identifier, value });\n });\n\n const hasNativeAsset = assetValues.some((asset) => asset.isGasAsset);\n if (!hasNativeAsset) {\n return [AssetValue.from({ chain }), ...assetValues];\n }\n\n return assetValues;\n };\n}\n",
6
6
  "import type { EVMChain } from \"@swapkit/helpers\";\nimport { getBalance } from \"../utils\";\n\nexport function getEvmApi(chain: EVMChain) {\n return { getBalance: getBalance(chain) };\n}\n\nexport function createCustomEvmApi(methods: ReturnType<typeof getEvmApi>) {\n return methods;\n}\n",
7
- "import { Chain, type EVMChain, getChainConfig, getRPCUrl, type NetworkParams } from \"@swapkit/helpers\";\nimport { match } from \"ts-pattern\";\n\nexport async function getProvider(chain: EVMChain, customUrl?: string) {\n const { JsonRpcProvider } = await import(\"ethers\");\n\n return new JsonRpcProvider(customUrl || (await getRPCUrl(chain)));\n}\n\nexport function toHexString(value: bigint) {\n return value > 0n ? `0x${value.toString(16)}` : \"0x0\";\n}\n\nexport function getNetworkParams<C extends EVMChain>(chain: C) {\n const { explorerUrl, chainIdHex, rpcUrls } = getChainConfig(chain);\n\n return () =>\n (chain === Chain.Ethereum\n ? undefined\n : {\n ...getNetworkInfo({ chain }),\n blockExplorerUrls: [explorerUrl],\n chainId: chainIdHex,\n rpcUrls,\n }) as C extends typeof Chain.Ethereum ? undefined : NetworkParams;\n}\n\nexport function getIsEIP1559Compatible<C extends EVMChain>(chain: C) {\n const notCompatible = [Chain.Arbitrum, Chain.BinanceSmartChain] as EVMChain[];\n\n return !notCompatible.includes(chain);\n}\n\nfunction getNetworkInfo({ chain }: { chain: EVMChain }) {\n const { name, nativeCurrency, baseDecimal: decimals } = getChainConfig(chain);\n\n return match(chain)\n .with(Chain.Arbitrum, () => ({\n chainName: \"Arbitrum One\",\n nativeCurrency: { decimals, name: \"Ethereum\", symbol: Chain.Ethereum },\n }))\n .with(Chain.Aurora, () => ({\n chainName: \"Aurora Mainnet\",\n nativeCurrency: { decimals, name: \"Ethereum\", symbol: Chain.Ethereum },\n }))\n .with(Chain.Avalanche, () => ({\n chainName: \"Avalanche Network\",\n nativeCurrency: { decimals, name: \"Avalanche\", symbol: chain },\n }))\n .with(Chain.Base, () => ({\n chainName: \"Base Mainnet\",\n nativeCurrency: { decimals, name: \"Ethereum\", symbol: Chain.Ethereum },\n }))\n .with(Chain.Berachain, () => ({\n chainName: \"Berachain\",\n nativeCurrency: { decimals, name: \"Berachain\", symbol: \"BERA\" },\n }))\n .with(Chain.XLayer, () => ({ chainName: \"X Layer\", nativeCurrency: { decimals, name: \"OKB\", symbol: \"OKB\" } }))\n .with(Chain.BinanceSmartChain, () => ({\n chainName: \"BNB Smart Chain Mainnet\",\n nativeCurrency: { decimals, name: \"Binance Coin\", symbol: \"BNB\" },\n }))\n .with(Chain.Gnosis, () => ({ chainName: \"Gnosis\", nativeCurrency: { decimals, name: \"xDAI\", symbol: \"XDAI\" } }))\n .with(Chain.Optimism, () => ({\n chainName: \"OP Mainnet\",\n nativeCurrency: { decimals, name: \"Ethereum\", symbol: Chain.Ethereum },\n }))\n .with(Chain.Polygon, () => ({\n chainName: \"Polygon Mainnet\",\n nativeCurrency: { decimals, name: \"Polygon\", symbol: Chain.Polygon },\n }))\n .otherwise(() => ({ chainName: name, nativeCurrency: { decimals, name: nativeCurrency, symbol: nativeCurrency } }));\n}\n",
7
+ "import { Chain, type EVMChain, getChainConfig, getRPCUrl, type NetworkParams } from \"@swapkit/helpers\";\nimport { match } from \"ts-pattern\";\n\nexport async function getProvider(chain: EVMChain, customUrl?: string) {\n const { JsonRpcProvider } = await import(\"ethers\");\n\n return new JsonRpcProvider(customUrl || (await getRPCUrl(chain)));\n}\n\nexport function toHexString(value: bigint) {\n return value > 0n ? `0x${value.toString(16)}` : \"0x0\";\n}\n\nexport function getNetworkParams<C extends EVMChain>(chain: C) {\n const { explorerUrl, chainIdHex, rpcUrls } = getChainConfig(chain);\n\n return function getNetworkParams(): C extends Chain.Ethereum ? undefined : NetworkParams {\n return (\n chain !== Chain.Ethereum\n ? { ...getNetworkInfo({ chain }), blockExplorerUrls: [explorerUrl], chainId: chainIdHex, rpcUrls }\n : undefined\n ) as C extends Chain.Ethereum ? undefined : NetworkParams;\n };\n}\n\nexport function getIsEIP1559Compatible<C extends EVMChain>(chain: C) {\n const notCompatible = [Chain.Arbitrum, Chain.BinanceSmartChain] as EVMChain[];\n\n return !notCompatible.includes(chain);\n}\n\nfunction getNetworkInfo({ chain }: { chain: EVMChain }) {\n const { name, nativeCurrency, baseDecimal: decimals } = getChainConfig(chain);\n\n return match(chain)\n .with(Chain.Arbitrum, () => ({\n chainName: \"Arbitrum One\",\n nativeCurrency: { decimals, name: \"Ethereum\", symbol: Chain.Ethereum },\n }))\n .with(Chain.Aurora, () => ({\n chainName: \"Aurora Mainnet\",\n nativeCurrency: { decimals, name: \"Ethereum\", symbol: Chain.Ethereum },\n }))\n .with(Chain.Avalanche, () => ({\n chainName: \"Avalanche Network\",\n nativeCurrency: { decimals, name: \"Avalanche\", symbol: chain },\n }))\n .with(Chain.Base, () => ({\n chainName: \"Base Mainnet\",\n nativeCurrency: { decimals, name: \"Ethereum\", symbol: Chain.Ethereum },\n }))\n .with(Chain.Berachain, () => ({\n chainName: \"Berachain\",\n nativeCurrency: { decimals, name: \"Berachain\", symbol: \"BERA\" },\n }))\n .with(Chain.XLayer, () => ({ chainName: \"X Layer\", nativeCurrency: { decimals, name: \"OKB\", symbol: \"OKB\" } }))\n .with(Chain.BinanceSmartChain, () => ({\n chainName: \"BNB Smart Chain Mainnet\",\n nativeCurrency: { decimals, name: \"Binance Coin\", symbol: \"BNB\" },\n }))\n .with(Chain.Gnosis, () => ({ chainName: \"Gnosis\", nativeCurrency: { decimals, name: \"xDAI\", symbol: \"XDAI\" } }))\n .with(Chain.Optimism, () => ({\n chainName: \"OP Mainnet\",\n nativeCurrency: { decimals, name: \"Ethereum\", symbol: Chain.Ethereum },\n }))\n .with(Chain.Polygon, () => ({\n chainName: \"Polygon Mainnet\",\n nativeCurrency: { decimals, name: \"Polygon\", symbol: Chain.Polygon },\n }))\n .otherwise(() => ({ chainName: name, nativeCurrency: { decimals, name: nativeCurrency, symbol: nativeCurrency } }));\n}\n",
8
8
  "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",
9
- "import {\n type Asset,\n AssetValue,\n applyFeeMultiplierToBigInt,\n Chain,\n type ChainSigner,\n type EVMChain,\n EVMChains,\n FeeOption,\n isGasAsset,\n SwapKitError,\n SwapKitNumber,\n} from \"@swapkit/helpers\";\nimport { erc20ABI } from \"@swapkit/helpers/contracts\";\nimport {\n BrowserProvider,\n Contract,\n type ContractTransaction,\n type Fragment,\n getAddress,\n type HDNodeWallet,\n Interface,\n type JsonFragment,\n type JsonRpcSigner,\n type Provider,\n type Signer,\n} from \"ethers\";\nimport { match } from \"ts-pattern\";\nimport { toHexString } from \"../helpers\";\nimport type {\n ApproveParams,\n CallParams,\n EIP1559TxParams,\n EstimateCallParams,\n EVMCreateTransactionParams,\n EVMTransferParams,\n EVMTxParams,\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(\"0x7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff\");\n\nexport function BaseEVMToolbox<\n P extends Provider | BrowserProvider,\n S extends (ChainSigner<EVMTransferParams, string> & Signer) | JsonRpcSigner | HDNodeWallet | undefined,\n>({\n chain = Chain.Ethereum,\n provider,\n signer,\n isEIP1559Compatible = true,\n}: {\n signer: S;\n provider: P;\n isEIP1559Compatible?: boolean;\n chain?: EVMChain;\n}) {\n return {\n approve: getApprove({ chain, isEIP1559Compatible, provider, signer }),\n approvedAmount: getApprovedAmount({ chain, provider }),\n broadcastTransaction: provider.broadcastTransaction,\n call: getCall({ chain, isEIP1559Compatible, provider, signer }),\n createApprovalTx: getCreateApprovalTx({ chain, provider, signer }),\n createContract: getCreateContract({ chain, provider }),\n createContractTxObject: getCreateContractTxObject({ chain, provider }),\n createTransaction: getCreateTransferTx({ chain, provider, signer }),\n createTransferTx: getCreateTransferTx({ chain, provider, signer }),\n EIP1193SendTransaction: getEIP1193SendTransaction(provider),\n estimateCall: getEstimateCall({ provider, signer }),\n estimateGasLimit: getEstimateGasLimit({ chain, provider, signer }),\n estimateGasPrices: getEstimateGasPrices({ chain, isEIP1559Compatible, provider }),\n estimateTransactionFee: getEstimateTransactionFee({ chain, isEIP1559Compatible, provider }),\n getAddress: () => {\n return signer ? signer.getAddress() : undefined;\n },\n isApproved: getIsApproved({ chain, provider }),\n sendTransaction: getSendTransaction({ chain, isEIP1559Compatible, provider, signer }),\n signMessage: signer ? (message: string | Uint8Array) => signer.signMessage(message) : undefined,\n transfer: getTransfer({ chain, isEIP1559Compatible, provider, signer }),\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 {\n return false;\n }\n}\n\nexport function isBrowserProvider(provider: any) {\n return provider instanceof BrowserProvider;\n}\n\nexport function createContract(address: string, abi: readonly (JsonFragment | Fragment)[], provider: Provider) {\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({ abi, funcName }: { 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({ value, ...params }: EVMTxParams | ContractTransaction): Promise<string> {\n if (!isBrowserProvider(provider)) {\n throw new SwapKitError(\"toolbox_evm_provider_not_eip1193_compatible\");\n }\n\n // Remove gas-related parameters to let the wallet estimate them\n // EIP-1193 providers (MetaMask, etc.) will estimate these automatically\n const {\n gasLimit: _gasLimit,\n gasPrice: _gasPrice,\n maxFeePerGas: _maxFeePerGas,\n maxPriorityFeePerGas: _maxPriorityFeePerGas,\n ...cleanParams\n } = params as any;\n\n return (provider as BrowserProvider).send(\"eth_sendTransaction\", [\n { ...cleanParams, value: toHexString(BigInt(value || 0)) } 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 baseContractAddresses = EVMChains.reduce(\n (acc, chain) => {\n acc[chain] = \"0x0000000000000000000000000000000000000000\";\n return acc;\n },\n {} as Record<EVMChain, string>,\n);\n\nexport const ContractAddress: Record<EVMChain, string> = {\n ...baseContractAddresses,\n [Chain.Optimism]: \"0x4200000000000000000000000000000000000042\",\n [Chain.Polygon]: \"0x0000000000000000000000000000000000001010\",\n};\n\nconst ethGasChains = [Chain.Arbitrum, Chain.Aurora, Chain.Base, Chain.Optimism] as string[];\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 = chain === baseAssetChain && symbol === baseAssetChain && ticker === baseAssetChain;\n const isEVMAsset = ethGasChains.includes(chain) && symbol === \"ETH\" && ticker === \"ETH\";\n\n if (isBaseAsset || isBSCBNB || isEVMAsset) {\n return ContractAddress[baseAssetChain];\n }\n\n // strip 0X only - 0x is still valid\n return getAddress(symbol.slice(ticker.length + 1).replace(/^0X/, \"\"));\n } catch {\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(...funcParams.concat(txOverrides).filter((p) => typeof p !== \"undefined\"));\n}\n\nexport function getEstimateGasPrices({\n chain,\n provider,\n isEIP1559Compatible = true,\n}: {\n provider: Provider;\n isEIP1559Compatible?: boolean;\n chain: EVMChain;\n}): () => Promise<{\n [key in FeeOption]: { l1GasPrice?: bigint; gasPrice?: bigint; maxFeePerGas?: bigint; maxPriorityFeePerGas?: bigint };\n}> {\n return match(chain)\n .with(Chain.Gnosis, () => {\n return async function estimateGasPrices() {\n try {\n const { gasPrice, maxPriorityFeePerGas } = await provider.getFeeData();\n if (!gasPrice || maxPriorityFeePerGas === null) throw new SwapKitError(\"toolbox_evm_no_fee_data\");\n\n return {\n [FeeOption.Average]: {\n maxFeePerGas: applyFeeMultiplierToBigInt(gasPrice, FeeOption.Average),\n maxPriorityFeePerGas: applyFeeMultiplierToBigInt(maxPriorityFeePerGas, FeeOption.Average),\n },\n [FeeOption.Fast]: {\n maxFeePerGas: applyFeeMultiplierToBigInt(gasPrice, FeeOption.Fast),\n maxPriorityFeePerGas: applyFeeMultiplierToBigInt(maxPriorityFeePerGas, FeeOption.Fast),\n },\n [FeeOption.Fastest]: {\n maxFeePerGas: applyFeeMultiplierToBigInt(gasPrice, FeeOption.Fastest),\n maxPriorityFeePerGas: applyFeeMultiplierToBigInt(maxPriorityFeePerGas, FeeOption.Fastest),\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 .with(Chain.Arbitrum, () => {\n return async function estimateGasPrices() {\n try {\n const { gasPrice } = await provider.getFeeData();\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 .otherwise(() => {\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(maxPriorityFeePerGas, FeeOption.Fastest),\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}\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 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\", { error: \"contractAddress must be provided\" });\n\n const isStateChanging = isStateChangingCall({ abi, funcName });\n\n if (isStateChanging && isBrowserProvider(contractProvider) && signer) {\n const createTx = getCreateContractTxObject({ chain, provider: contractProvider });\n const from = txOverrides?.from || (await signer?.getAddress());\n const txObject = await createTx({\n abi,\n contractAddress,\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({ chain, isEIP1559Compatible, provider });\n const { maxFeePerGas, maxPriorityFeePerGas, gasPrice } = (await estimateGasPrices())[feeOption];\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 gasPrice,\n maxFeePerGas,\n maxPriorityFeePerGas,\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({ chain, isEIP1559Compatible: true, provider });\n\n return call<bigint>({\n abi: erc20ABI,\n contractAddress: assetAddress,\n funcName: \"allowance\",\n funcParams: [from, spenderAddress],\n });\n };\n}\n\nfunction getIsApproved({ provider, chain }: ToolboxWrapParams) {\n return async function isApproved({ assetAddress, spenderAddress, from, amount = MAX_APPROVAL }: IsApprovedParams) {\n const approvedAmount = await getApprovedAmount({ chain, provider })({ assetAddress, from, spenderAddress });\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 abi: erc20ABI,\n contractAddress: assetAddress,\n funcName: \"approve\",\n funcParams,\n signer,\n txOverrides: { from },\n };\n\n if (isBrowserProvider(provider)) {\n const createTx = getCreateContractTxObject({ chain, provider });\n const sendTx = getEIP1193SendTransaction(provider);\n const txObject = await createTx(functionCallParams);\n\n return sendTx(txObject);\n }\n\n const call = getCall({ chain, isEIP1559Compatible, provider, signer });\n\n return call<string>({\n ...functionCallParams,\n feeOption: feeOptionKey,\n funcParams,\n txOverrides: { from, gasLimit: gasLimitFallback ? BigInt(gasLimitFallback.toString()) : undefined, nonce },\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({ chain, isEIP1559Compatible, provider, signer });\n\n if (!from) throw new SwapKitError(\"toolbox_evm_no_from_address\");\n\n if (assetValue.isGasAsset) {\n const transaction = {\n ...tx,\n data: hexlify(toUtf8Bytes(memo || \"\")),\n feeOptionKey,\n from,\n to: recipient,\n value: txAmount,\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({ chain, isEIP1559Compatible, provider })()\n )[feeOptionKey];\n\n const transaction = await getCreateTransferTx({ chain, provider, signer })({\n assetValue,\n data: hexlify(toUtf8Bytes(memo || \"\")),\n gasPrice,\n maxFeePerGas,\n maxPriorityFeePerGas,\n memo,\n recipient,\n sender: from,\n });\n\n return sendTx(transaction);\n };\n}\n\nfunction getEstimateCall({ provider, signer }: { signer?: Signer; provider: Provider }) {\n return function estimateCall({ contractAddress, abi, funcName, funcParams = [], txOverrides }: 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 ? null : getTokenAddress(assetValue, assetValue.chain as EVMChain);\n\n if (assetAddress && funcName) {\n const estimateCall = getEstimateCall({ provider, signer });\n // ERC20 gas estimate\n return estimateCall({ abi: erc20ABI, contractAddress: assetAddress, funcName, funcParams, txOverrides });\n }\n\n const { hexlify, toUtf8Bytes } = await import(\"ethers\");\n\n return provider.estimateGas({\n data: data ? data : memo ? hexlify(toUtf8Bytes(memo)) : undefined,\n from: sender,\n to: recipient,\n value,\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({ provider, signer, isEIP1559Compatible = true, chain }: ToolboxWrapParams) {\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 = { ...transaction, data: data || \"0x\", from, to, value: BigInt(value || 0) };\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({ chain, isEIP1559Compatible, provider });\n\n const feeData =\n (isEIP1559 &&\n !(\n (parsedTxObject as EIP1559TxParams).maxFeePerGas && (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 { maxFeePerGas?: string; maxPriorityFeePerGas?: string; gasPrice?: string },\n )\n : {};\n let gasLimit: string;\n try {\n gasLimit = toHexString(parsedTxObject.gasLimit || ((await provider.estimateGas(parsedTxObject)) * 11n) / 10n);\n } catch (error) {\n throw new SwapKitError(\"toolbox_evm_error_estimating_gas_limit\", { error });\n }\n\n try {\n const txObject = { ...parsedTxObject, chainId, gasLimit, nonce, type: isEIP1559 ? 2 : 0, ...feeData };\n\n try {\n const response = await signer.sendTransaction(txObject);\n return response.hash;\n } catch {\n const txHex = await signer.signTransaction({ ...txObject, from: address });\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 { ...tx, data: data || hexlify(toUtf8Bytes(memo || \"\")), from, to: recipient, value: txAmount };\n }\n\n const contractAddress = getTokenAddress(assetValue, chain);\n if (!contractAddress) throw new SwapKitError(\"toolbox_evm_no_contract_address\");\n const createTx = getCreateContractTxObject({ chain: assetValue.chain as EVMChain, provider });\n\n return createTx({\n abi: erc20ABI,\n contractAddress,\n funcName: \"transfer\",\n funcParams: [recipient, txAmount],\n txOverrides: { from, gasPrice, maxFeePerGas, maxPriorityFeePerGas },\n });\n };\n}\n\nfunction getCreateApprovalTx({ provider, signer, chain }: ToolboxWrapParams) {\n return async function createApprovalTx({ assetAddress, spenderAddress, amount, from: fromParam }: ApproveParams) {\n const from = (await signer?.getAddress()) || fromParam;\n\n const createTx = getCreateContractTxObject({ chain, provider });\n const approvalAmount = [\"bigint\", \"number\"].includes(typeof amount)\n ? (amount as bigint | number)\n : amount || MAX_APPROVAL;\n\n const txObject = await createTx({\n abi: erc20ABI,\n contractAddress: assetAddress,\n funcName: \"approve\",\n funcParams: [spenderAddress, BigInt(approvalAmount)],\n txOverrides: { from },\n });\n\n return txObject;\n };\n}\n\nfunction getEstimateTransactionFee({\n provider,\n isEIP1559Compatible = true,\n}: {\n provider: Provider | BrowserProvider;\n isEIP1559Compatible?: boolean;\n chain: EVMChain;\n}) {\n return async function estimateTransactionFee({\n feeOption = FeeOption.Fast,\n chain,\n ...txObject\n }: EIP1559TxParams & { feeOption: FeeOption; chain: EVMChain }) {\n const estimateGasPrices = getEstimateGasPrices({ chain, isEIP1559Compatible, provider });\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",
10
- "import { Chain, type EVMChain, FeeOption, getRPCUrl } from \"@swapkit/helpers\";\nimport { match, P } from \"ts-pattern\";\n\nimport { getEvmApi } from \"../api\";\nimport { multicallAbi } from \"../contracts/eth/multicall\";\nimport { getIsEIP1559Compatible, getNetworkParams, getProvider } 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)({ provider, ...signer });\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 abi: multicallAbi,\n contractAddress: multicallAddress,\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 AURORAToolbox = createEvmToolbox(Chain.Aurora);\nexport const AVAXToolbox = createEvmToolbox(Chain.Avalanche);\nexport const BASEToolbox = createEvmToolbox(Chain.Base);\nexport const BERAToolbox = createEvmToolbox(Chain.Berachain);\nexport const BSCToolbox = createEvmToolbox(Chain.BinanceSmartChain);\nexport const BotanixToolbox = createEvmToolbox(Chain.Botanix);\nexport const COREToolbox = createEvmToolbox(Chain.Core);\nexport const CORNToolbox = createEvmToolbox(Chain.Corn);\nexport const CROToolbox = createEvmToolbox(Chain.Cronos);\nexport const GNOToolbox = createEvmToolbox(Chain.Gnosis);\nexport const HYPEREVMToolbox = createEvmToolbox(Chain.Hyperevm);\nexport const MATICToolbox = createEvmToolbox(Chain.Polygon);\nexport const SONICToolbox = createEvmToolbox(Chain.Sonic);\nexport const UNIToolbox = createEvmToolbox(Chain.Unichain);\nexport const XLayerToolbox = createEvmToolbox(Chain.XLayer);\nexport const MONADToolbox = createEvmToolbox(Chain.Monad);\nexport const MEGAETHToolbox = createEvmToolbox(Chain.MegaETH as EVMChain);\n\nfunction createEvmToolbox<C extends EVMChain>(chain: C) {\n return async function createEvmToolbox({ provider: providerParam, ...toolboxSignerParams }: EVMToolboxParams) {\n const { HDNodeWallet } = await import(\"ethers\");\n const rpcUrl = await getRPCUrl(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({ chain, isEIP1559Compatible, provider, signer });\n\n return { ...evmToolbox, getBalance: getEvmApi(chain).getBalance, getNetworkParams: getNetworkParams(chain) };\n };\n}\n",
9
+ "import {\n type Asset,\n AssetValue,\n applyFeeMultiplierToBigInt,\n Chain,\n type ChainSigner,\n type EVMChain,\n EVMChains,\n FeeOption,\n isGasAsset,\n SwapKitError,\n SwapKitNumber,\n} from \"@swapkit/helpers\";\nimport { erc20ABI } from \"@swapkit/helpers/contracts\";\nimport {\n BrowserProvider,\n Contract,\n type ContractTransaction,\n type Fragment,\n getAddress,\n type HDNodeWallet,\n Interface,\n type JsonFragment,\n type JsonRpcSigner,\n type Provider,\n type Signer,\n} from \"ethers\";\nimport { match } from \"ts-pattern\";\nimport { getEvmApi } from \"../api\";\nimport { getNetworkParams, toHexString } from \"../helpers\";\nimport type {\n ApproveParams,\n CallParams,\n EIP1559TxParams,\n EstimateCallParams,\n EVMCreateTransactionParams,\n EVMTransferParams,\n EVMTxParams,\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(\"0x7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff\");\n\nexport function BaseEVMToolbox<\n P extends Provider | BrowserProvider,\n S extends (ChainSigner<EVMTransferParams, string> & Signer) | JsonRpcSigner | HDNodeWallet | undefined,\n>({\n chain = Chain.Ethereum,\n provider,\n signer,\n isEIP1559Compatible = true,\n}: {\n signer: S;\n provider: P;\n isEIP1559Compatible?: boolean;\n chain?: EVMChain;\n}) {\n return {\n approve: getApprove({ chain, isEIP1559Compatible, provider, signer }),\n approvedAmount: getApprovedAmount({ chain, provider }),\n broadcastTransaction: provider.broadcastTransaction,\n call: getCall({ chain, isEIP1559Compatible, provider, signer }),\n createApprovalTx: getCreateApprovalTx({ chain, provider, signer }),\n createContract: getCreateContract({ chain, provider }),\n createContractTxObject: getCreateContractTxObject({ chain, provider }),\n createTransaction: getCreateTransferTx({ chain, provider, signer }),\n createTransferTx: getCreateTransferTx({ chain, provider, signer }),\n EIP1193SendTransaction: getEIP1193SendTransaction(provider),\n estimateCall: getEstimateCall({ provider, signer }),\n estimateGasLimit: getEstimateGasLimit({ chain, provider, signer }),\n estimateGasPrices: getEstimateGasPrices({ chain, isEIP1559Compatible, provider }),\n estimateTransactionFee: getEstimateTransactionFee({ chain, isEIP1559Compatible, provider }),\n getAddress: () => {\n return signer ? signer.getAddress() : undefined;\n },\n getBalance: getEvmApi(chain).getBalance,\n getNetworkParams: getNetworkParams(chain),\n isApproved: getIsApproved({ chain, provider }),\n sendTransaction: getSendTransaction({ chain, isEIP1559Compatible, provider, signer }),\n signMessage: signer ? (message: string | Uint8Array) => signer.signMessage(message) : undefined,\n transfer: getTransfer({ chain, isEIP1559Compatible, provider, signer }),\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 {\n return false;\n }\n}\n\nexport function isBrowserProvider(provider: any) {\n return provider instanceof BrowserProvider;\n}\n\nexport function createContract(address: string, abi: readonly (JsonFragment | Fragment)[], provider: Provider) {\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({ abi, funcName }: { 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({ value, ...params }: EVMTxParams | ContractTransaction): Promise<string> {\n if (!isBrowserProvider(provider)) {\n throw new SwapKitError(\"toolbox_evm_provider_not_eip1193_compatible\");\n }\n\n // Remove gas-related parameters to let the wallet estimate them\n // EIP-1193 providers (MetaMask, etc.) will estimate these automatically\n const {\n gasLimit: _gasLimit,\n gasPrice: _gasPrice,\n maxFeePerGas: _maxFeePerGas,\n maxPriorityFeePerGas: _maxPriorityFeePerGas,\n ...cleanParams\n } = params as any;\n\n return (provider as BrowserProvider).send(\"eth_sendTransaction\", [\n { ...cleanParams, value: toHexString(BigInt(value || 0)) } 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 baseContractAddresses = EVMChains.reduce(\n (acc, chain) => {\n acc[chain] = \"0x0000000000000000000000000000000000000000\";\n return acc;\n },\n {} as Record<EVMChain, string>,\n);\n\nexport const ContractAddress: Record<EVMChain, string> = {\n ...baseContractAddresses,\n [Chain.Optimism]: \"0x4200000000000000000000000000000000000042\",\n [Chain.Polygon]: \"0x0000000000000000000000000000000000001010\",\n};\n\nconst ethGasChains = [Chain.Arbitrum, Chain.Aurora, Chain.Base, Chain.Optimism] as string[];\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 = chain === baseAssetChain && symbol === baseAssetChain && ticker === baseAssetChain;\n const isEVMAsset = ethGasChains.includes(chain) && symbol === \"ETH\" && ticker === \"ETH\";\n\n if (isBaseAsset || isBSCBNB || isEVMAsset) {\n return ContractAddress[baseAssetChain];\n }\n\n // strip 0X only - 0x is still valid\n return getAddress(symbol.slice(ticker.length + 1).replace(/^0X/, \"\"));\n } catch {\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(...funcParams.concat(txOverrides).filter((p) => typeof p !== \"undefined\"));\n}\n\nexport function getEstimateGasPrices({\n chain,\n provider,\n isEIP1559Compatible = true,\n}: {\n provider: Provider;\n isEIP1559Compatible?: boolean;\n chain: EVMChain;\n}): () => Promise<{\n [key in FeeOption]: { l1GasPrice?: bigint; gasPrice?: bigint; maxFeePerGas?: bigint; maxPriorityFeePerGas?: bigint };\n}> {\n return match(chain)\n .with(Chain.Gnosis, () => {\n return async function estimateGasPrices() {\n try {\n const { gasPrice, maxPriorityFeePerGas } = await provider.getFeeData();\n if (!gasPrice || maxPriorityFeePerGas === null) throw new SwapKitError(\"toolbox_evm_no_fee_data\");\n\n return {\n [FeeOption.Average]: {\n maxFeePerGas: applyFeeMultiplierToBigInt(gasPrice, FeeOption.Average),\n maxPriorityFeePerGas: applyFeeMultiplierToBigInt(maxPriorityFeePerGas, FeeOption.Average),\n },\n [FeeOption.Fast]: {\n maxFeePerGas: applyFeeMultiplierToBigInt(gasPrice, FeeOption.Fast),\n maxPriorityFeePerGas: applyFeeMultiplierToBigInt(maxPriorityFeePerGas, FeeOption.Fast),\n },\n [FeeOption.Fastest]: {\n maxFeePerGas: applyFeeMultiplierToBigInt(gasPrice, FeeOption.Fastest),\n maxPriorityFeePerGas: applyFeeMultiplierToBigInt(maxPriorityFeePerGas, FeeOption.Fastest),\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 .with(Chain.Arbitrum, () => {\n return async function estimateGasPrices() {\n try {\n const { gasPrice } = await provider.getFeeData();\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 .otherwise(() => {\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(maxPriorityFeePerGas, FeeOption.Fastest),\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}\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 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\", { error: \"contractAddress must be provided\" });\n\n const isStateChanging = isStateChangingCall({ abi, funcName });\n\n if (isStateChanging && isBrowserProvider(contractProvider) && signer) {\n const createTx = getCreateContractTxObject({ chain, provider: contractProvider });\n const from = txOverrides?.from || (await signer?.getAddress());\n const txObject = await createTx({\n abi,\n contractAddress,\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({ chain, isEIP1559Compatible, provider });\n const { maxFeePerGas, maxPriorityFeePerGas, gasPrice } = (await estimateGasPrices())[feeOption];\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 gasPrice,\n maxFeePerGas,\n maxPriorityFeePerGas,\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({ chain, isEIP1559Compatible: true, provider });\n\n return call<bigint>({\n abi: erc20ABI,\n contractAddress: assetAddress,\n funcName: \"allowance\",\n funcParams: [from, spenderAddress],\n });\n };\n}\n\nfunction getIsApproved({ provider, chain }: ToolboxWrapParams) {\n return async function isApproved({ assetAddress, spenderAddress, from, amount = MAX_APPROVAL }: IsApprovedParams) {\n const approvedAmount = await getApprovedAmount({ chain, provider })({ assetAddress, from, spenderAddress });\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 abi: erc20ABI,\n contractAddress: assetAddress,\n funcName: \"approve\",\n funcParams,\n signer,\n txOverrides: { from },\n };\n\n if (isBrowserProvider(provider)) {\n const createTx = getCreateContractTxObject({ chain, provider });\n const sendTx = getEIP1193SendTransaction(provider);\n const txObject = await createTx(functionCallParams);\n\n return sendTx(txObject);\n }\n\n const call = getCall({ chain, isEIP1559Compatible, provider, signer });\n\n return call<string>({\n ...functionCallParams,\n feeOption: feeOptionKey,\n funcParams,\n txOverrides: { from, gasLimit: gasLimitFallback ? BigInt(gasLimitFallback.toString()) : undefined, nonce },\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({ chain, isEIP1559Compatible, provider, signer });\n\n if (!from) throw new SwapKitError(\"toolbox_evm_no_from_address\");\n\n if (assetValue.isGasAsset) {\n const transaction = {\n ...tx,\n data: hexlify(toUtf8Bytes(memo || \"\")),\n feeOptionKey,\n from,\n to: recipient,\n value: txAmount,\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({ chain, isEIP1559Compatible, provider })()\n )[feeOptionKey];\n\n const transaction = await getCreateTransferTx({ chain, provider, signer })({\n assetValue,\n data: hexlify(toUtf8Bytes(memo || \"\")),\n gasPrice,\n maxFeePerGas,\n maxPriorityFeePerGas,\n memo,\n recipient,\n sender: from,\n });\n\n return sendTx(transaction);\n };\n}\n\nfunction getEstimateCall({ provider, signer }: { signer?: Signer; provider: Provider }) {\n return function estimateCall({ contractAddress, abi, funcName, funcParams = [], txOverrides }: 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 ? null : getTokenAddress(assetValue, assetValue.chain as EVMChain);\n\n if (assetAddress && funcName) {\n const estimateCall = getEstimateCall({ provider, signer });\n // ERC20 gas estimate\n return estimateCall({ abi: erc20ABI, contractAddress: assetAddress, funcName, funcParams, txOverrides });\n }\n\n const { hexlify, toUtf8Bytes } = await import(\"ethers\");\n\n return provider.estimateGas({\n data: data ? data : memo ? hexlify(toUtf8Bytes(memo)) : undefined,\n from: sender,\n to: recipient,\n value,\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({ provider, signer, isEIP1559Compatible = true, chain }: ToolboxWrapParams) {\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 = { ...transaction, data: data || \"0x\", from, to, value: BigInt(value || 0) };\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({ chain, isEIP1559Compatible, provider });\n\n const feeData =\n (isEIP1559 &&\n !(\n (parsedTxObject as EIP1559TxParams).maxFeePerGas && (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 { maxFeePerGas?: string; maxPriorityFeePerGas?: string; gasPrice?: string },\n )\n : {};\n let gasLimit: string;\n try {\n gasLimit = toHexString(parsedTxObject.gasLimit || ((await provider.estimateGas(parsedTxObject)) * 11n) / 10n);\n } catch (error) {\n throw new SwapKitError(\"toolbox_evm_error_estimating_gas_limit\", { error });\n }\n\n try {\n const txObject = { ...parsedTxObject, chainId, gasLimit, nonce, type: isEIP1559 ? 2 : 0, ...feeData };\n\n try {\n const response = await signer.sendTransaction(txObject);\n return response.hash;\n } catch {\n const txHex = await signer.signTransaction({ ...txObject, from: address });\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 { ...tx, data: data || hexlify(toUtf8Bytes(memo || \"\")), from, to: recipient, value: txAmount };\n }\n\n const contractAddress = getTokenAddress(assetValue, chain);\n if (!contractAddress) throw new SwapKitError(\"toolbox_evm_no_contract_address\");\n const createTx = getCreateContractTxObject({ chain: assetValue.chain as EVMChain, provider });\n\n return createTx({\n abi: erc20ABI,\n contractAddress,\n funcName: \"transfer\",\n funcParams: [recipient, txAmount],\n txOverrides: { from, gasPrice, maxFeePerGas, maxPriorityFeePerGas },\n });\n };\n}\n\nfunction getCreateApprovalTx({ provider, signer, chain }: ToolboxWrapParams) {\n return async function createApprovalTx({ assetAddress, spenderAddress, amount, from: fromParam }: ApproveParams) {\n const from = (await signer?.getAddress()) || fromParam;\n\n const createTx = getCreateContractTxObject({ chain, provider });\n const approvalAmount = [\"bigint\", \"number\"].includes(typeof amount)\n ? (amount as bigint | number)\n : amount || MAX_APPROVAL;\n\n const txObject = await createTx({\n abi: erc20ABI,\n contractAddress: assetAddress,\n funcName: \"approve\",\n funcParams: [spenderAddress, BigInt(approvalAmount)],\n txOverrides: { from },\n });\n\n return txObject;\n };\n}\n\nfunction getEstimateTransactionFee({\n provider,\n isEIP1559Compatible = true,\n}: {\n provider: Provider | BrowserProvider;\n isEIP1559Compatible?: boolean;\n chain: EVMChain;\n}) {\n return async function estimateTransactionFee({\n feeOption = FeeOption.Fast,\n chain,\n ...txObject\n }: EIP1559TxParams & { feeOption: FeeOption; chain: EVMChain }) {\n const estimateGasPrices = getEstimateGasPrices({ chain, isEIP1559Compatible, provider });\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",
10
+ "import { Chain, type EVMChain, FeeOption, getRPCUrl } from \"@swapkit/helpers\";\nimport { match, P } from \"ts-pattern\";\n\nimport { multicallAbi } from \"../contracts/eth/multicall\";\nimport { getIsEIP1559Compatible, getProvider } 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)({ provider, ...signer });\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 abi: multicallAbi,\n contractAddress: multicallAddress,\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 AURORAToolbox = createEvmToolbox(Chain.Aurora);\nexport const AVAXToolbox = createEvmToolbox(Chain.Avalanche);\nexport const BASEToolbox = createEvmToolbox(Chain.Base);\nexport const BERAToolbox = createEvmToolbox(Chain.Berachain);\nexport const BSCToolbox = createEvmToolbox(Chain.BinanceSmartChain);\nexport const BotanixToolbox = createEvmToolbox(Chain.Botanix);\nexport const COREToolbox = createEvmToolbox(Chain.Core);\nexport const CORNToolbox = createEvmToolbox(Chain.Corn);\nexport const CROToolbox = createEvmToolbox(Chain.Cronos);\nexport const GNOToolbox = createEvmToolbox(Chain.Gnosis);\nexport const HYPEREVMToolbox = createEvmToolbox(Chain.Hyperevm);\nexport const MATICToolbox = createEvmToolbox(Chain.Polygon);\nexport const SONICToolbox = createEvmToolbox(Chain.Sonic);\nexport const UNIToolbox = createEvmToolbox(Chain.Unichain);\nexport const XLayerToolbox = createEvmToolbox(Chain.XLayer);\nexport const MONADToolbox = createEvmToolbox(Chain.Monad);\nexport const MEGAETHToolbox = createEvmToolbox(Chain.MegaETH as EVMChain);\n\nfunction createEvmToolbox<C extends EVMChain>(chain: C) {\n return async function createEvmToolbox({ provider: providerParam, ...toolboxSignerParams }: EVMToolboxParams) {\n const { HDNodeWallet } = await import(\"ethers\");\n const rpcUrl = await getRPCUrl(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({ chain, isEIP1559Compatible, provider, signer });\n\n return evmToolbox;\n };\n}\n",
11
11
  "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 { inputs: [], name: \"renounceOwnership\", outputs: [], stateMutability: \"nonpayable\", type: \"function\" },\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",
12
- "import {\n applyFeeMultiplierToBigInt,\n Chain,\n FeeOption,\n getChainConfig,\n getRPCUrl,\n SwapKitError,\n} from \"@swapkit/helpers\";\nimport type { Authorization, BrowserProvider, JsonRpcProvider, Provider, TransactionRequest } from \"ethers\";\nimport { Contract, HDNodeWallet } from \"ethers\";\nimport { match, P } 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\nfunction getL1GasPriceFetcher<P extends Provider>(provider: P) {\n return async function getL1GasPrice() {\n const gasPriceOracle = connectGasPriceOracle(provider);\n\n if (gasPriceOracle && \"l1BaseFee\" in gasPriceOracle) {\n return (await 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) 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 nonce: nonce ? nonce : from ? await provider.getTransactionCount(from) : 0,\n to: to as string,\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\nfunction 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\nfunction getNetworkParams() {\n const { baseDecimal, chainId, explorerUrl, name, rpcUrls } = getChainConfig(Chain.Optimism);\n\n return {\n blockExplorerUrls: [explorerUrl],\n chainId,\n chainName: name,\n nativeCurrency: { decimals: baseDecimal, name: \"Ethereum\", symbol: Chain.Ethereum },\n rpcUrls,\n };\n}\n\nasync function estimateGasPrices(provider: Provider) {\n try {\n const { maxFeePerGas, maxPriorityFeePerGas, gasPrice } = await provider.getFeeData();\n const l1GasPrice = await 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]: { gasPrice: price, l1GasPrice, maxFeePerGas, maxPriorityFeePerGas },\n [FeeOption.Fast]: {\n gasPrice: applyFeeMultiplierToBigInt(price, FeeOption.Fast),\n l1GasPrice: applyFeeMultiplierToBigInt(l1GasPrice || 0n, FeeOption.Fast),\n maxFeePerGas,\n maxPriorityFeePerGas: applyFeeMultiplierToBigInt(maxPriorityFeePerGas, FeeOption.Fast),\n },\n [FeeOption.Fastest]: {\n gasPrice: applyFeeMultiplierToBigInt(price, FeeOption.Fastest),\n l1GasPrice: applyFeeMultiplierToBigInt(l1GasPrice || 0n, FeeOption.Fastest),\n maxFeePerGas,\n maxPriorityFeePerGas: applyFeeMultiplierToBigInt(maxPriorityFeePerGas, FeeOption.Fastest),\n },\n } as {\n [key in FeeOption]: {\n l1GasPrice?: bigint;\n gasPrice?: bigint;\n maxFeePerGas?: bigint;\n maxPriorityFeePerGas?: bigint;\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\nexport async function OPToolbox({ provider: providerParam, ...toolboxSignerParams }: EVMToolboxParams) {\n const chain = Chain.Optimism;\n const rpcUrl = await getRPCUrl(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 estimateGasPrices: estimateGasPrices(provider),\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",
12
+ "import { applyFeeMultiplierToBigInt, Chain, FeeOption, getRPCUrl, SwapKitError } from \"@swapkit/helpers\";\nimport type { Authorization, BrowserProvider, JsonRpcProvider, Provider, TransactionRequest } from \"ethers\";\nimport { Contract, HDNodeWallet } from \"ethers\";\nimport { match, P } 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\nfunction getL1GasPriceFetcher<P extends Provider>(provider: P) {\n return async function getL1GasPrice() {\n const gasPriceOracle = connectGasPriceOracle(provider);\n\n if (gasPriceOracle && \"l1BaseFee\" in gasPriceOracle) {\n return (await 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) 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 nonce: nonce ? nonce : from ? await provider.getTransactionCount(from) : 0,\n to: to as string,\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\nfunction 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\nasync function estimateGasPrices(provider: Provider) {\n try {\n const { maxFeePerGas, maxPriorityFeePerGas, gasPrice } = await provider.getFeeData();\n const l1GasPrice = await 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]: { gasPrice: price, l1GasPrice, maxFeePerGas, maxPriorityFeePerGas },\n [FeeOption.Fast]: {\n gasPrice: applyFeeMultiplierToBigInt(price, FeeOption.Fast),\n l1GasPrice: applyFeeMultiplierToBigInt(l1GasPrice || 0n, FeeOption.Fast),\n maxFeePerGas,\n maxPriorityFeePerGas: applyFeeMultiplierToBigInt(maxPriorityFeePerGas, FeeOption.Fast),\n },\n [FeeOption.Fastest]: {\n gasPrice: applyFeeMultiplierToBigInt(price, FeeOption.Fastest),\n l1GasPrice: applyFeeMultiplierToBigInt(l1GasPrice || 0n, FeeOption.Fastest),\n maxFeePerGas,\n maxPriorityFeePerGas: applyFeeMultiplierToBigInt(maxPriorityFeePerGas, FeeOption.Fastest),\n },\n } as {\n [key in FeeOption]: {\n l1GasPrice?: bigint;\n gasPrice?: bigint;\n maxFeePerGas?: bigint;\n maxPriorityFeePerGas?: bigint;\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\nexport async function OPToolbox({ provider: providerParam, ...toolboxSignerParams }: EVMToolboxParams) {\n const chain = Chain.Optimism;\n const rpcUrl = await getRPCUrl(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 estimateGasPrices: estimateGasPrices(provider),\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 };\n}\n",
13
13
  "import { Chain, type EVMChain } from \"@swapkit/helpers\";\nimport { match } from \"ts-pattern\";\n\nimport { getProvider } from \"../helpers\";\nimport type { EVMToolboxes, EVMToolboxParams } from \"../types\";\nimport * as evmToolboxes from \"./evm\";\nimport { OPToolbox } from \"./op\";\n\nexport async function getEvmToolbox<T extends EVMChain>(chain: T, params?: EVMToolboxParams) {\n const toolboxParams = { ...params, provider: params?.provider || (await getProvider(chain)) };\n\n type Toolbox = Promise<EVMToolboxes[T]>;\n\n return (\n match(chain as EVMChain)\n .returnType<Toolbox>()\n .with(Chain.Arbitrum, () => evmToolboxes.ARBToolbox(toolboxParams) as Toolbox)\n .with(Chain.Aurora, () => evmToolboxes.AURORAToolbox(toolboxParams) as Toolbox)\n .with(Chain.Avalanche, () => evmToolboxes.AVAXToolbox(toolboxParams) as Toolbox)\n .with(Chain.Base, () => evmToolboxes.BASEToolbox(toolboxParams) as Toolbox)\n .with(Chain.Berachain, () => evmToolboxes.BERAToolbox(toolboxParams) as Toolbox)\n .with(Chain.BinanceSmartChain, () => evmToolboxes.BSCToolbox(toolboxParams) as Toolbox)\n .with(Chain.Botanix, () => evmToolboxes.SONICToolbox(toolboxParams) as Toolbox)\n .with(Chain.Core, () => evmToolboxes.COREToolbox(toolboxParams) as Toolbox)\n .with(Chain.Corn, () => evmToolboxes.CORNToolbox(toolboxParams) as Toolbox)\n .with(Chain.Cronos, () => evmToolboxes.CROToolbox(toolboxParams) as Toolbox)\n .with(Chain.Ethereum, () => evmToolboxes.ETHToolbox(toolboxParams) as Toolbox)\n .with(Chain.Gnosis, () => evmToolboxes.GNOToolbox(toolboxParams) as Toolbox)\n .with(Chain.Hyperevm, () => evmToolboxes.HYPEREVMToolbox(toolboxParams) as Toolbox)\n .with(Chain.Optimism, () => OPToolbox(toolboxParams) as Toolbox)\n .with(Chain.Polygon, () => evmToolboxes.MATICToolbox(toolboxParams) as Toolbox)\n .with(Chain.Sonic, () => evmToolboxes.SONICToolbox(toolboxParams) as Toolbox)\n .with(Chain.Unichain, () => evmToolboxes.UNIToolbox(toolboxParams) as Toolbox)\n .with(Chain.XLayer, () => evmToolboxes.XLayerToolbox(toolboxParams) as Toolbox)\n .with(Chain.Monad, () => evmToolboxes.MONADToolbox(toolboxParams) as Toolbox)\n // @ts-expect-error TODO: Remove once live\n .with(Chain.MegaETH, () => evmToolboxes.MEGAETHToolbox(toolboxParams) as Toolbox)\n .exhaustive()\n );\n}\n\nexport * from \"./baseEVMToolbox\";\nexport * from \"./evm\";\nexport * from \"./op\";\n",
14
14
  "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 { getProvider } from \"./index\";\nimport type {\n ARBToolbox,\n AURORAToolbox,\n AVAXToolbox,\n BASEToolbox,\n BERAToolbox,\n BSCToolbox,\n COREToolbox,\n CORNToolbox,\n CROToolbox,\n ETHToolbox,\n GNOToolbox,\n HYPEREVMToolbox,\n MATICToolbox,\n MEGAETHToolbox,\n MONADToolbox,\n OPToolbox,\n SONICToolbox,\n UNIToolbox,\n XLayerToolbox,\n} from \"./toolbox\";\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 = { assetAddress: string; spenderAddress: string; from: string };\n\nexport type IsApprovedParams = ApprovedParams & { amount?: BigNumberish };\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 & { sender?: string };\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> & { gasPrice?: T };\n\nexport type EVMTxParams = EIP1559TxParams | LegacyEVMTxParams;\n\nexport type EVMToolboxParams = { provider?: BrowserProvider | JsonRpcProvider } & (\n | { signer?: (ChainSigner<EVMTransferParams, string> & Signer) | JsonRpcSigner }\n | { phrase?: string; derivationPath?: DerivationPathArray; index?: number }\n);\n\nexport type EVMToolboxes = {\n [Chain.Arbitrum]: Awaited<ReturnType<typeof ARBToolbox>>;\n [Chain.Aurora]: Awaited<ReturnType<typeof AURORAToolbox>>;\n [Chain.Avalanche]: Awaited<ReturnType<typeof AVAXToolbox>>;\n [Chain.Base]: Awaited<ReturnType<typeof BASEToolbox>>;\n [Chain.Berachain]: Awaited<ReturnType<typeof BERAToolbox>>;\n [Chain.BinanceSmartChain]: Awaited<ReturnType<typeof BSCToolbox>>;\n [Chain.Botanix]: Awaited<ReturnType<typeof SONICToolbox>>;\n [Chain.Core]: Awaited<ReturnType<typeof COREToolbox>>;\n [Chain.Corn]: Awaited<ReturnType<typeof CORNToolbox>>;\n [Chain.Cronos]: Awaited<ReturnType<typeof CROToolbox>>;\n [Chain.Ethereum]: Awaited<ReturnType<typeof ETHToolbox>>;\n [Chain.Gnosis]: Awaited<ReturnType<typeof GNOToolbox>>;\n [Chain.Hyperevm]: Awaited<ReturnType<typeof HYPEREVMToolbox>>;\n [Chain.MegaETH]: Awaited<ReturnType<typeof MEGAETHToolbox>>;\n [Chain.Monad]: Awaited<ReturnType<typeof MONADToolbox>>;\n [Chain.Optimism]: Awaited<ReturnType<typeof OPToolbox>>;\n [Chain.Polygon]: Awaited<ReturnType<typeof MATICToolbox>>;\n [Chain.Sonic]: Awaited<ReturnType<typeof SONICToolbox>>;\n [Chain.Unichain]: Awaited<ReturnType<typeof UNIToolbox>>;\n [Chain.XLayer]: Awaited<ReturnType<typeof XLayerToolbox>>;\n};\n",
15
15
  "export * from \"./api\";\nexport * from \"./helpers\";\nexport * from \"./toolbox\";\nexport * from \"./types\";\n",
@@ -26,11 +26,11 @@
26
26
  "import type { Pubkey, Secp256k1HdWallet } from \"@cosmjs/amino\";\nimport { base64 } from \"@scure/base\";\nimport {\n Chain,\n CosmosChainPrefixes,\n derivationPathToString,\n FeeOption,\n type GenericTransferParams,\n getChainConfig,\n getRPCUrl,\n NetworkDerivationPath,\n RequestClient,\n SKConfig,\n SwapKitError,\n SwapKitNumber,\n type TCLikeChain,\n updateDerivationPath,\n} from \"@swapkit/helpers\";\n\nimport { match, P } from \"ts-pattern\";\nimport {\n buildAminoMsg,\n buildEncodedTxBody,\n convertToSignable,\n createDefaultAminoTypes,\n createDefaultRegistry,\n getCreateTransaction,\n parseAminoMessageForDirectSigning,\n} from \"../thorchainUtils\";\nimport type { ThorchainConstantsResponse } from \"../thorchainUtils/types/client-types\";\nimport type { CosmosToolboxParams, MultiSigSigner, MultisigTx } from \"../types\";\nimport {\n createOfflineStargateClient,\n createSigningStargateClient,\n createStargateClient,\n getDefaultChainFee,\n} from \"../util\";\nimport { createCosmosToolbox } from \"./cosmos\";\n\nfunction secp256k1HdWalletFromMnemonic({ prefix, derivationPath }: { prefix: string; derivationPath?: string }) {\n return async function secp256k1HdWalletFromMnemonic(mnemonic: string, index = 0) {\n const importedAmino = await import(\"@cosmjs/amino\");\n const Secp256k1HdWallet = importedAmino.Secp256k1HdWallet ?? importedAmino.default?.Secp256k1HdWallet;\n const importedCrypto = await import(\"@cosmjs/crypto\");\n const stringToPath = importedCrypto.stringToPath ?? importedCrypto.default?.stringToPath;\n\n return Secp256k1HdWallet.fromMnemonic(mnemonic, { hdPaths: [stringToPath(`${derivationPath}/${index}`)], prefix });\n };\n}\n\nfunction exportSignature(signature: Uint8Array) {\n return base64.encode(signature);\n}\n\nfunction signMultisigTx(chain: TCLikeChain) {\n return async function signMultisigTx({ wallet, tx }: { wallet: Secp256k1HdWallet; tx: string | MultisigTx }) {\n const { msgs, accountNumber, sequence, chainId, fee, memo } = typeof tx === \"string\" ? JSON.parse(tx) : tx;\n\n const address = (await wallet.getAccounts())?.[0]?.address || \"\";\n const aminoTypes = await createDefaultAminoTypes(chain);\n const registry = await createDefaultRegistry();\n const signingClient = await createOfflineStargateClient(wallet, { aminoTypes, registry });\n const msgForSigning = [];\n\n for (const msg of msgs) {\n const signMsg = await convertToSignable(msg, chain);\n msgForSigning.push(signMsg);\n }\n\n const {\n signatures: [signature],\n } = await signingClient.sign(address, msgForSigning, fee, memo, { accountNumber, chainId, sequence });\n\n const bodyBytes = await buildEncodedTxBody({ chain, memo, msgs: msgs.map(parseAminoMessageForDirectSigning) });\n\n return { bodyBytes, signature: exportSignature(signature as Uint8Array) };\n };\n}\n\nfunction broadcastMultisigTx({ prefix, rpcUrl }: { prefix: string; rpcUrl: string }) {\n return async function broadcastMultisigTx(\n tx: string,\n signers: MultiSigSigner[],\n membersPubKeys: string[],\n threshold: number,\n bodyBytes: Uint8Array,\n ) {\n const { encodeSecp256k1Pubkey, pubkeyToAddress } = (await import(\"@cosmjs/amino\")).default;\n const { makeMultisignedTxBytes } = (await import(\"@cosmjs/stargate\")).default;\n\n const { sequence, fee } = JSON.parse(tx);\n const multisigPubkey = await createMultisig(membersPubKeys, threshold);\n\n const addressesAndSignatures: [string, Uint8Array][] = signers.map((signer) => [\n pubkeyToAddress(encodeSecp256k1Pubkey(base64.decode(signer.pubKey)), prefix),\n base64.decode(signer.signature),\n ]);\n\n const broadcaster = await createStargateClient(rpcUrl);\n\n const { transactionHash } = await broadcaster.broadcastTx(\n makeMultisignedTxBytes(\n multisigPubkey,\n sequence,\n fee,\n bodyBytes,\n new Map<string, Uint8Array>(addressesAndSignatures),\n ),\n );\n\n return transactionHash;\n };\n}\n\nasync function createMultisig(pubKeys: string[], threshold: number, noSortPubKeys = true) {\n const { createMultisigThresholdPubkey, encodeSecp256k1Pubkey } = (await import(\"@cosmjs/amino\")).default;\n return createMultisigThresholdPubkey(\n pubKeys.map((pubKey) => encodeSecp256k1Pubkey(base64.decode(pubKey))),\n threshold,\n noSortPubKeys,\n );\n}\n\nfunction importSignature(signature: string) {\n return base64.decode(signature);\n}\n\nasync function signWithPrivateKey({ privateKey, message }: { privateKey: Uint8Array; message: string }) {\n const { Secp256k1 } = (await import(\"@cosmjs/crypto\")).default;\n\n const signature = await Secp256k1.createSignature(base64.decode(message), privateKey);\n return base64.encode(Buffer.concat([signature.r(32), signature.s(32)]));\n}\n\nexport async function createThorchainToolbox({ chain, ...toolboxParams }: CosmosToolboxParams<TCLikeChain>) {\n const rpcUrl = await getRPCUrl(chain);\n const { nodeUrl } = getChainConfig(chain);\n const { isStagenet } = SKConfig.get(\"envs\");\n const isThorchain = chain === Chain.THORChain;\n const chainPrefix = `${isStagenet ? \"s\" : \"\"}${CosmosChainPrefixes[chain]}`;\n\n const index = \"index\" in toolboxParams ? toolboxParams.index || 0 : 0;\n\n const derivationPath =\n \"derivationPath\" in toolboxParams && toolboxParams.derivationPath\n ? toolboxParams.derivationPath\n : updateDerivationPath(NetworkDerivationPath[chain], { index });\n\n const cosmosToolbox = await createCosmosToolbox({ chain, ...toolboxParams });\n\n const signer = await match(toolboxParams)\n .with({ phrase: P.string }, ({ phrase }) => cosmosToolbox.getSignerFromPhrase({ derivationPath, phrase }))\n .with({ signer: P.any }, ({ signer }) => signer)\n .otherwise(() => undefined);\n\n const defaultFee = getDefaultChainFee(chain);\n\n async function getFees() {\n let fee: SwapKitNumber;\n\n const constantsUrl = `${nodeUrl}/${isThorchain ? \"thorchain\" : \"mayachain\"}/constants`;\n\n try {\n const {\n int_64_values: { NativeTransactionFee: nativeFee },\n } = await RequestClient.get<ThorchainConstantsResponse>(constantsUrl);\n\n if (!nativeFee || Number.isNaN(nativeFee) || nativeFee < 0) {\n throw new SwapKitError(\"toolbox_cosmos_invalid_fee\", { nativeFee: nativeFee.toString() });\n }\n\n fee = new SwapKitNumber(nativeFee);\n } catch {\n fee = new SwapKitNumber({ decimal: getChainConfig(chain).baseDecimal, value: isThorchain ? 0.02 : 1 });\n }\n\n return { [FeeOption.Average]: fee, [FeeOption.Fast]: fee, [FeeOption.Fastest]: fee };\n }\n\n async function transfer({\n assetValue,\n memo = \"\",\n recipient,\n }: Omit<GenericTransferParams, \"recipient\"> & { recipient?: string }) {\n const { TxRaw } = await import(\"cosmjs-types/cosmos/tx/v1beta1/tx\");\n const sender = (await signer?.getAccounts())?.[0]?.address;\n if (!(sender && signer)) throw new SwapKitError(\"toolbox_cosmos_no_signer\");\n\n const isAminoSigner = \"signAmino\" in signer;\n const registry = await createDefaultRegistry();\n const aminoTypes = await createDefaultAminoTypes(chain);\n const signingClient = await createSigningStargateClient(rpcUrl, signer, { aminoTypes, registry });\n\n const aminoMessage = buildAminoMsg({ assetValue, memo, recipient, sender });\n\n if (isAminoSigner) {\n const msgSign = await convertToSignable(aminoMessage, chain);\n\n const { signatures, authInfoBytes } = await signingClient.sign(sender, [msgSign], defaultFee, memo);\n\n const tx = TxRaw.encode({\n authInfoBytes,\n bodyBytes: await buildEncodedTxBody({\n chain,\n memo,\n msgs: [aminoMessage].map(parseAminoMessageForDirectSigning),\n }),\n signatures,\n }).finish();\n\n const txResponse = await signingClient.broadcastTx(tx);\n\n return txResponse.transactionHash;\n }\n\n const preparedMessage = parseAminoMessageForDirectSigning(aminoMessage);\n const msgSign = await convertToSignable(preparedMessage, chain);\n const txResponse = await signingClient.signAndBroadcast(sender, [msgSign], defaultFee, memo);\n\n return txResponse.transactionHash;\n }\n\n return {\n ...cosmosToolbox,\n broadcastMultisigTx: broadcastMultisigTx({ prefix: chainPrefix, rpcUrl }),\n buildAminoMsg,\n buildEncodedTxBody,\n convertToSignable,\n createDefaultAminoTypes: () => createDefaultAminoTypes(chain),\n createDefaultRegistry,\n createMultisig,\n createTransaction: getCreateTransaction(rpcUrl),\n deposit: transfer,\n getFees,\n importSignature,\n parseAminoMessageForDirectSigning,\n pubkeyToAddress: async (pubkey: Pubkey) => {\n const { pubkeyToAddress } = (await import(\"@cosmjs/amino\")).default;\n return pubkeyToAddress(pubkey, chainPrefix);\n },\n secp256k1HdWalletFromMnemonic: secp256k1HdWalletFromMnemonic({\n derivationPath: derivationPathToString(derivationPath),\n prefix: chainPrefix,\n }),\n signMultisigTx: signMultisigTx(chain),\n signWithPrivateKey,\n transfer,\n };\n}\n",
27
27
  "import { Chain, type CosmosChain, SwapKitError } from \"@swapkit/helpers\";\n\nimport type { CosmosToolboxParams } from \"../types\";\nimport { createCosmosToolbox } from \"./cosmos\";\nimport { createThorchainToolbox } from \"./thorchain\";\n\nexport type CosmosToolboxes = {\n GAIA: ReturnType<typeof createCosmosToolbox>;\n KUJI: ReturnType<typeof createCosmosToolbox>;\n MAYA: ReturnType<typeof createThorchainToolbox>;\n NOBLE: ReturnType<typeof createCosmosToolbox>;\n THOR: ReturnType<typeof createThorchainToolbox>;\n};\n\nexport const getCosmosToolbox = <T extends Exclude<CosmosChain, Chain.Harbor>>(\n chain: T,\n params?: Omit<CosmosToolboxParams, \"chain\">,\n): CosmosToolboxes[T] => {\n switch (chain) {\n case Chain.Cosmos:\n case Chain.Kujira:\n case Chain.Noble:\n return createCosmosToolbox({ chain, ...params }) as CosmosToolboxes[T];\n\n case Chain.Maya:\n case Chain.THORChain:\n return createThorchainToolbox({ chain, ...params }) as CosmosToolboxes[T];\n\n default:\n throw new SwapKitError(\"toolbox_cosmos_not_supported\", { chain });\n }\n};\n\nexport * from \"./cosmos\";\nexport * from \"./thorchain\";\n",
28
28
  "export * from \"./thorchainUtils\";\nexport * from \"./toolbox\";\nexport * from \"./types\";\nexport * from \"./util\";\n",
29
- "import type {\n Connection,\n PublicKey,\n Signer,\n Transaction,\n TransactionInstruction,\n VersionedTransaction,\n} from \"@solana/web3.js\";\nimport {\n AssetValue,\n Chain,\n DerivationPath,\n type DerivationPathArray,\n derivationPathToString,\n type GenericCreateTransactionParams,\n getChainConfig,\n getRPCUrl,\n NetworkDerivationPath,\n SwapKitError,\n updateDerivationPath,\n} from \"@swapkit/helpers\";\nimport { match, P } from \"ts-pattern\";\nimport type { SolanaCreateTransactionParams, SolanaProvider, SolanaTransferParams } from \"./index\";\n\ntype SolanaSigner = SolanaProvider | Signer;\n\ntype TokenMetadata = {\n name: string;\n symbol: string;\n decimals: number;\n logoURI?: string;\n tags?: string[];\n daily_volume?: number;\n id: string; // mint address\n};\n\nexport async function fetchTokenMetaData(mintAddress: string): Promise<TokenMetadata | null> {\n const assetValue = AssetValue.from({ address: mintAddress, chain: Chain.Solana });\n if (assetValue.symbol !== \"UNKNOWN\") {\n return {\n decimals: assetValue.decimal || 0,\n id: mintAddress,\n logoURI: assetValue.getIconUrl(),\n name: assetValue.symbol,\n symbol: assetValue.ticker,\n };\n }\n\n const url = `https://lite-api.jup.ag/tokens/v2/search?query=${encodeURIComponent(mintAddress)}`;\n\n try {\n const res = await fetch(url);\n if (!res.ok) return null;\n\n const arr = (await res.json()) as TokenMetadata[];\n if (!Array.isArray(arr) || arr.length === 0) return null;\n\n const exact = arr.find((t) => t.id === mintAddress);\n return exact || null;\n } catch {\n return null;\n }\n}\n\nasync function getSolanaBalance(address: string) {\n const connection = await getConnection();\n const { PublicKey } = await import(\"@solana/web3.js\");\n const { TOKEN_PROGRAM_ID } = await import(\"@solana/spl-token\");\n const publicKey = new PublicKey(address);\n\n const balances: AssetValue[] = [];\n\n // Get SOL balance\n const solBalance = await connection.getBalance(publicKey);\n if (solBalance > 0) {\n const { baseDecimal } = getChainConfig(Chain.Solana);\n balances.push(AssetValue.from({ chain: Chain.Solana, fromBaseDecimal: baseDecimal, value: solBalance }));\n }\n\n // Get token balances\n const tokenAccounts = await connection.getParsedTokenAccountsByOwner(publicKey, { programId: TOKEN_PROGRAM_ID });\n\n for (const { account } of tokenAccounts.value) {\n const tokenInfo = account.data.parsed.info;\n const mintAddress = tokenInfo.mint;\n const amount = tokenInfo.tokenAmount.amount;\n\n if (Number(amount) === 0) continue;\n\n const metadata = await fetchTokenMetaData(mintAddress);\n const ticker = metadata?.symbol || \"UNKNOWN\";\n const decimals = metadata?.decimals || tokenInfo.tokenAmount.decimals;\n\n balances.push(\n AssetValue.from({ asset: `${Chain.Solana}.${ticker}-${mintAddress}`, fromBaseDecimal: decimals, value: amount }),\n );\n }\n\n return balances;\n}\n\nexport async function getSolanaAddressValidator() {\n const { PublicKey } = await import(\"@solana/web3.js\");\n\n return (address: string) => {\n try {\n const pubkey = new PublicKey(address);\n return PublicKey.isOnCurve(pubkey.toBytes());\n } catch {\n return false;\n }\n };\n}\n\nexport async function getSolanaToolbox(\n toolboxParams?: { signer?: SolanaSigner } | { phrase?: string; index?: number; derivationPath?: DerivationPathArray },\n) {\n const index = toolboxParams && \"index\" in toolboxParams ? toolboxParams.index || 0 : 0;\n const derivationPath = derivationPathToString(\n toolboxParams && \"derivationPath\" in toolboxParams && toolboxParams.derivationPath\n ? toolboxParams.derivationPath\n : updateDerivationPath(NetworkDerivationPath[Chain.Solana], { index }),\n );\n\n const signer = await match(toolboxParams)\n .with({ phrase: P.string }, ({ phrase }) => createKeysForPath({ derivationPath, phrase }))\n .with({ signer: P.any }, ({ signer }) => signer)\n .otherwise(() => undefined);\n\n function getAddress() {\n return signer?.publicKey ? getAddressFromPubKey(signer.publicKey) : \"\";\n }\n\n function getBalance(addressParam?: string) {\n const address = addressParam || getAddress();\n if (!address) throw new SwapKitError(\"core_wallet_connection_not_found\");\n return getSolanaBalance(address);\n }\n\n return {\n broadcastTransaction: broadcastTransaction(getConnection),\n createKeysForPath,\n createTransaction: createTransaction(getConnection),\n createTransactionFromInstructions,\n estimateTransactionFee: estimateTransactionFee(getConnection),\n getAddress,\n getAddressFromPubKey,\n getAddressValidator: getSolanaAddressValidator,\n getBalance,\n getConnection,\n getPubkeyFromAddress,\n signTransaction: signTransaction(getConnection, signer),\n transfer: transfer(getConnection, signer),\n };\n}\n\nfunction estimateTransactionFee(getConnection: () => Promise<Connection>) {\n return async ({\n recipient,\n assetValue,\n memo,\n isProgramDerivedAddress,\n sender,\n }: Omit<GenericCreateTransactionParams, \"feeRate\"> & { isProgramDerivedAddress?: boolean }) => {\n const connection = await getConnection();\n\n const transaction = await createTransaction(getConnection)({\n assetValue,\n isProgramDerivedAddress,\n memo,\n recipient,\n sender,\n });\n\n const message = transaction.compileMessage();\n const feeInLamports = await connection.getFeeForMessage(message);\n\n if (feeInLamports.value === null) {\n throw new SwapKitError(\"toolbox_solana_fee_estimation_failed\", \"Could not estimate Solana fee.\");\n }\n\n const { baseDecimal } = getChainConfig(Chain.Solana);\n\n return AssetValue.from({ chain: Chain.Solana, fromBaseDecimal: baseDecimal, value: feeInLamports.value });\n };\n}\n\nasync function getConnection() {\n const { Connection } = await import(\"@solana/web3.js\");\n const rpcUrl = await getRPCUrl(Chain.Solana);\n return new Connection(rpcUrl, \"confirmed\");\n}\n\nfunction createAssetTransaction(getConnection: () => Promise<Connection>) {\n return async ({ assetValue, recipient, sender, isProgramDerivedAddress }: SolanaCreateTransactionParams) => {\n const connection = await getConnection();\n const fromPubkey = await getPubkeyFromAddress(sender);\n\n if (assetValue.isGasAsset) {\n const { Transaction, SystemProgram, PublicKey } = await import(\"@solana/web3.js\");\n\n return new Transaction().add(\n SystemProgram.transfer({\n fromPubkey: fromPubkey,\n lamports: assetValue.getBaseValue(\"number\"),\n toPubkey: new PublicKey(recipient),\n }),\n );\n }\n\n if (assetValue.address) {\n return createSolanaTokenTransaction({\n amount: assetValue.getBaseValue(\"number\"),\n connection,\n decimals: assetValue.decimal as number,\n from: fromPubkey,\n isProgramDerivedAddress,\n recipient,\n tokenAddress: assetValue.address,\n });\n }\n\n return undefined;\n };\n}\n\nasync function createSolanaTokenTransaction({\n tokenAddress,\n recipient,\n from,\n connection,\n amount,\n decimals,\n isProgramDerivedAddress,\n}: {\n tokenAddress: string;\n recipient: string;\n from: PublicKey;\n connection: Connection;\n amount: number;\n decimals: number;\n isProgramDerivedAddress?: boolean;\n}) {\n const {\n getAssociatedTokenAddress,\n getAccount,\n createAssociatedTokenAccountInstruction,\n createTransferCheckedInstruction,\n } = await import(\"@solana/spl-token\");\n const { Transaction, PublicKey } = await import(\"@solana/web3.js\");\n\n const transaction = new Transaction();\n const tokenPublicKey = new PublicKey(tokenAddress);\n const fromSPLAddress = await getAssociatedTokenAddress(tokenPublicKey, from);\n\n const recipientPublicKey = new PublicKey(recipient);\n const recipientSPLAddress = await getAssociatedTokenAddress(\n tokenPublicKey,\n recipientPublicKey,\n isProgramDerivedAddress,\n );\n\n let recipientAccountExists = false;\n try {\n await getAccount(connection, recipientSPLAddress);\n recipientAccountExists = true;\n } catch {\n // Recipient's associated token account doesn't exist\n }\n\n if (!recipientAccountExists) {\n transaction.add(\n createAssociatedTokenAccountInstruction(from, recipientSPLAddress, recipientPublicKey, tokenPublicKey),\n );\n }\n\n transaction.add(\n createTransferCheckedInstruction(fromSPLAddress, tokenPublicKey, recipientSPLAddress, from, amount, decimals),\n );\n\n return transaction;\n}\n\nfunction createTransaction(getConnection: () => Promise<Connection>) {\n return async ({ recipient, assetValue, memo, isProgramDerivedAddress, sender }: SolanaCreateTransactionParams) => {\n const { createMemoInstruction } = await import(\"@solana/spl-memo\");\n\n const fromPubkey = await getPubkeyFromAddress(sender);\n const validateAddress = await getSolanaAddressValidator();\n\n if (!(isProgramDerivedAddress || validateAddress(recipient))) {\n throw new SwapKitError(\"core_transaction_invalid_recipient_address\");\n }\n\n const connection = await getConnection();\n const transaction = await createAssetTransaction(getConnection)({\n assetValue,\n isProgramDerivedAddress,\n recipient,\n sender,\n });\n\n if (!transaction) {\n throw new SwapKitError(\"core_transaction_invalid_sender_address\");\n }\n\n if (memo) transaction.add(createMemoInstruction(memo));\n\n const blockHash = await connection.getLatestBlockhash();\n transaction.recentBlockhash = blockHash.blockhash;\n transaction.feePayer = fromPubkey;\n\n return transaction;\n };\n}\n\nasync function createTransactionFromInstructions({\n instructions,\n}: {\n instructions: TransactionInstruction[];\n isProgramDerivedAddress?: boolean;\n}) {\n const { Transaction } = await import(\"@solana/web3.js\");\n const transaction = new Transaction().add(...instructions);\n\n if (!transaction) {\n throw new SwapKitError(\"core_transaction_invalid_sender_address\");\n }\n\n return transaction;\n}\n\nfunction transfer(getConnection: () => Promise<Connection>, signer?: SolanaSigner) {\n return async ({ recipient, assetValue, memo, isProgramDerivedAddress }: SolanaTransferParams) => {\n if (!signer) {\n throw new SwapKitError(\"core_transaction_invalid_sender_address\");\n }\n\n const sender = signer.publicKey?.toString() ?? (await (signer as SolanaProvider).connect()).publicKey.toString();\n\n const transaction = await createTransaction(getConnection)({\n assetValue,\n isProgramDerivedAddress,\n memo,\n recipient,\n sender,\n });\n\n if (\"signTransaction\" in signer) {\n const signedTransaction = await signer.signTransaction(transaction);\n return broadcastTransaction(getConnection)(signedTransaction);\n }\n\n transaction.sign(signer);\n\n return broadcastTransaction(getConnection)(transaction);\n };\n}\n\nfunction broadcastTransaction(getConnection: () => Promise<Connection>) {\n return async (transaction: Transaction | VersionedTransaction) => {\n const connection = await getConnection();\n return connection.sendRawTransaction(transaction.serialize());\n };\n}\n\nfunction signTransaction(getConnection: () => Promise<Connection>, signer?: SolanaSigner) {\n return async (transaction: Transaction | VersionedTransaction) => {\n const { VersionedTransaction } = await import(\"@solana/web3.js\");\n if (!signer) {\n throw new SwapKitError(\"toolbox_solana_no_signer\");\n }\n\n if (!(transaction instanceof VersionedTransaction)) {\n const connection = await getConnection();\n\n const blockHash = await connection.getLatestBlockhash();\n transaction.recentBlockhash = blockHash.blockhash;\n transaction.feePayer = signer.publicKey || undefined;\n }\n\n if (\"connect\" in signer) {\n const signedTransaction = await signer.signTransaction(transaction);\n return signedTransaction;\n }\n\n await transaction.sign([signer] as Signer & Signer[]);\n return transaction;\n };\n}\n\nexport async function createKeysForPath({\n phrase,\n derivationPath = DerivationPath.SOL,\n}: {\n phrase: string;\n derivationPath?: string;\n}) {\n const { HDKey } = await import(\"micro-key-producer/slip10.js\");\n const { mnemonicToSeedSync } = await import(\"@scure/bip39\");\n const { Keypair } = await import(\"@solana/web3.js\");\n const seed = mnemonicToSeedSync(phrase);\n const hdKey = HDKey.fromMasterSeed(seed);\n\n return Keypair.fromSeed(hdKey.derive(derivationPath, true).privateKey);\n}\n\nfunction getAddressFromPubKey(publicKey: PublicKey) {\n return publicKey.toString();\n}\n\nasync function getPubkeyFromAddress(address: string) {\n const { PublicKey } = await import(\"@solana/web3.js\");\n return new PublicKey(address);\n}\n",
29
+ "import type {\n Connection,\n PublicKey,\n Signer,\n Transaction,\n TransactionInstruction,\n VersionedTransaction,\n} from \"@solana/web3.js\";\nimport {\n AssetValue,\n Chain,\n DerivationPath,\n type DerivationPathArray,\n derivationPathToString,\n type GenericCreateTransactionParams,\n getChainConfig,\n getRPCUrl,\n NetworkDerivationPath,\n SwapKitError,\n updateDerivationPath,\n} from \"@swapkit/helpers\";\nimport { match, P } from \"ts-pattern\";\nimport type { SolanaCreateTransactionParams, SolanaProvider, SolanaTransferParams } from \"./index\";\n\ntype SolanaSigner = SolanaProvider | Signer;\n\ntype TokenMetadata = {\n name: string;\n symbol: string;\n decimals: number;\n logoURI?: string;\n tags?: string[];\n daily_volume?: number;\n id: string; // mint address\n};\n\nexport async function fetchTokenMetaData(mintAddress: string): Promise<TokenMetadata | null> {\n const assetValue = AssetValue.from({ address: mintAddress, chain: Chain.Solana });\n if (assetValue.symbol !== \"UNKNOWN\") {\n return {\n decimals: assetValue.decimal || 0,\n id: mintAddress,\n logoURI: assetValue.getIconUrl(),\n name: assetValue.symbol,\n symbol: assetValue.ticker,\n };\n }\n\n const url = `https://lite-api.jup.ag/tokens/v2/search?query=${encodeURIComponent(mintAddress)}`;\n\n try {\n const res = await fetch(url);\n if (!res.ok) return null;\n\n const arr = (await res.json()) as TokenMetadata[];\n if (!Array.isArray(arr) || arr.length === 0) return null;\n\n const exact = arr.find((t) => t.id === mintAddress);\n return exact || null;\n } catch {\n return null;\n }\n}\n\nasync function getSolanaBalance(address: string) {\n const connection = await getConnection();\n const { PublicKey } = await import(\"@solana/web3.js\");\n const { TOKEN_PROGRAM_ID } = await import(\"@solana/spl-token\");\n const publicKey = new PublicKey(address);\n const { baseDecimal } = getChainConfig(Chain.Solana);\n\n const solBalance = await connection.getBalance(publicKey);\n const balances = [AssetValue.from({ chain: Chain.Solana, fromBaseDecimal: baseDecimal, value: solBalance || 0 })];\n\n const tokenAccounts = await connection.getParsedTokenAccountsByOwner(publicKey, { programId: TOKEN_PROGRAM_ID });\n\n for (const { account } of tokenAccounts.value) {\n const tokenInfo = account.data.parsed.info;\n const mintAddress = tokenInfo.mint;\n const amount = tokenInfo.tokenAmount.amount;\n\n if (Number(amount) === 0) continue;\n\n const metadata = await fetchTokenMetaData(mintAddress);\n const ticker = metadata?.symbol || \"UNKNOWN\";\n const decimals = metadata?.decimals || tokenInfo.tokenAmount.decimals;\n\n balances.push(\n AssetValue.from({ asset: `${Chain.Solana}.${ticker}-${mintAddress}`, fromBaseDecimal: decimals, value: amount }),\n );\n }\n\n return balances;\n}\n\nexport async function getSolanaAddressValidator() {\n const { PublicKey } = await import(\"@solana/web3.js\");\n\n return (address: string) => {\n try {\n const pubkey = new PublicKey(address);\n return PublicKey.isOnCurve(pubkey.toBytes());\n } catch {\n return false;\n }\n };\n}\n\nexport async function getSolanaToolbox(\n toolboxParams?: { signer?: SolanaSigner } | { phrase?: string; index?: number; derivationPath?: DerivationPathArray },\n) {\n const index = toolboxParams && \"index\" in toolboxParams ? toolboxParams.index || 0 : 0;\n const derivationPath = derivationPathToString(\n toolboxParams && \"derivationPath\" in toolboxParams && toolboxParams.derivationPath\n ? toolboxParams.derivationPath\n : updateDerivationPath(NetworkDerivationPath[Chain.Solana], { index }),\n );\n\n const signer = await match(toolboxParams)\n .with({ phrase: P.string }, ({ phrase }) => createKeysForPath({ derivationPath, phrase }))\n .with({ signer: P.any }, ({ signer }) => signer)\n .otherwise(() => undefined);\n\n function getAddress() {\n return signer?.publicKey ? getAddressFromPubKey(signer.publicKey) : \"\";\n }\n\n function getBalance(addressParam?: string) {\n const address = addressParam || getAddress();\n if (!address) throw new SwapKitError(\"core_wallet_connection_not_found\");\n return getSolanaBalance(address);\n }\n\n return {\n broadcastTransaction: broadcastTransaction(getConnection),\n createKeysForPath,\n createTransaction: createTransaction(getConnection),\n createTransactionFromInstructions,\n estimateTransactionFee: estimateTransactionFee(getConnection),\n getAddress,\n getAddressFromPubKey,\n getAddressValidator: getSolanaAddressValidator,\n getBalance,\n getConnection,\n getPubkeyFromAddress,\n signTransaction: signTransaction(getConnection, signer),\n transfer: transfer(getConnection, signer),\n };\n}\n\nfunction estimateTransactionFee(getConnection: () => Promise<Connection>) {\n return async ({\n recipient,\n assetValue,\n memo,\n isProgramDerivedAddress,\n sender,\n }: Omit<GenericCreateTransactionParams, \"feeRate\"> & { isProgramDerivedAddress?: boolean }) => {\n const connection = await getConnection();\n\n const transaction = await createTransaction(getConnection)({\n assetValue,\n isProgramDerivedAddress,\n memo,\n recipient,\n sender,\n });\n\n const message = transaction.compileMessage();\n const feeInLamports = await connection.getFeeForMessage(message);\n\n if (feeInLamports.value === null) {\n throw new SwapKitError(\"toolbox_solana_fee_estimation_failed\", \"Could not estimate Solana fee.\");\n }\n\n const { baseDecimal } = getChainConfig(Chain.Solana);\n\n return AssetValue.from({ chain: Chain.Solana, fromBaseDecimal: baseDecimal, value: feeInLamports.value });\n };\n}\n\nasync function getConnection() {\n const { Connection } = await import(\"@solana/web3.js\");\n const rpcUrl = await getRPCUrl(Chain.Solana);\n return new Connection(rpcUrl, \"confirmed\");\n}\n\nfunction createAssetTransaction(getConnection: () => Promise<Connection>) {\n return async ({ assetValue, recipient, sender, isProgramDerivedAddress }: SolanaCreateTransactionParams) => {\n const connection = await getConnection();\n const fromPubkey = await getPubkeyFromAddress(sender);\n\n if (assetValue.isGasAsset) {\n const { Transaction, SystemProgram, PublicKey } = await import(\"@solana/web3.js\");\n\n return new Transaction().add(\n SystemProgram.transfer({\n fromPubkey: fromPubkey,\n lamports: assetValue.getBaseValue(\"number\"),\n toPubkey: new PublicKey(recipient),\n }),\n );\n }\n\n if (assetValue.address) {\n return createSolanaTokenTransaction({\n amount: assetValue.getBaseValue(\"number\"),\n connection,\n decimals: assetValue.decimal as number,\n from: fromPubkey,\n isProgramDerivedAddress,\n recipient,\n tokenAddress: assetValue.address,\n });\n }\n\n return undefined;\n };\n}\n\nasync function createSolanaTokenTransaction({\n tokenAddress,\n recipient,\n from,\n connection,\n amount,\n decimals,\n isProgramDerivedAddress,\n}: {\n tokenAddress: string;\n recipient: string;\n from: PublicKey;\n connection: Connection;\n amount: number;\n decimals: number;\n isProgramDerivedAddress?: boolean;\n}) {\n const {\n getAssociatedTokenAddress,\n getAccount,\n createAssociatedTokenAccountInstruction,\n createTransferCheckedInstruction,\n } = await import(\"@solana/spl-token\");\n const { Transaction, PublicKey } = await import(\"@solana/web3.js\");\n\n const transaction = new Transaction();\n const tokenPublicKey = new PublicKey(tokenAddress);\n const fromSPLAddress = await getAssociatedTokenAddress(tokenPublicKey, from);\n\n const recipientPublicKey = new PublicKey(recipient);\n const recipientSPLAddress = await getAssociatedTokenAddress(\n tokenPublicKey,\n recipientPublicKey,\n isProgramDerivedAddress,\n );\n\n let recipientAccountExists = false;\n try {\n await getAccount(connection, recipientSPLAddress);\n recipientAccountExists = true;\n } catch {\n // Recipient's associated token account doesn't exist\n }\n\n if (!recipientAccountExists) {\n transaction.add(\n createAssociatedTokenAccountInstruction(from, recipientSPLAddress, recipientPublicKey, tokenPublicKey),\n );\n }\n\n transaction.add(\n createTransferCheckedInstruction(fromSPLAddress, tokenPublicKey, recipientSPLAddress, from, amount, decimals),\n );\n\n return transaction;\n}\n\nfunction createTransaction(getConnection: () => Promise<Connection>) {\n return async ({ recipient, assetValue, memo, isProgramDerivedAddress, sender }: SolanaCreateTransactionParams) => {\n const { createMemoInstruction } = await import(\"@solana/spl-memo\");\n\n const fromPubkey = await getPubkeyFromAddress(sender);\n const validateAddress = await getSolanaAddressValidator();\n\n if (!(isProgramDerivedAddress || validateAddress(recipient))) {\n throw new SwapKitError(\"core_transaction_invalid_recipient_address\");\n }\n\n const connection = await getConnection();\n const transaction = await createAssetTransaction(getConnection)({\n assetValue,\n isProgramDerivedAddress,\n recipient,\n sender,\n });\n\n if (!transaction) {\n throw new SwapKitError(\"core_transaction_invalid_sender_address\");\n }\n\n if (memo) transaction.add(createMemoInstruction(memo));\n\n const blockHash = await connection.getLatestBlockhash();\n transaction.recentBlockhash = blockHash.blockhash;\n transaction.feePayer = fromPubkey;\n\n return transaction;\n };\n}\n\nasync function createTransactionFromInstructions({\n instructions,\n}: {\n instructions: TransactionInstruction[];\n isProgramDerivedAddress?: boolean;\n}) {\n const { Transaction } = await import(\"@solana/web3.js\");\n const transaction = new Transaction().add(...instructions);\n\n if (!transaction) {\n throw new SwapKitError(\"core_transaction_invalid_sender_address\");\n }\n\n return transaction;\n}\n\nfunction transfer(getConnection: () => Promise<Connection>, signer?: SolanaSigner) {\n return async ({ recipient, assetValue, memo, isProgramDerivedAddress }: SolanaTransferParams) => {\n if (!signer) {\n throw new SwapKitError(\"core_transaction_invalid_sender_address\");\n }\n\n const sender = signer.publicKey?.toString() ?? (await (signer as SolanaProvider).connect()).publicKey.toString();\n\n const transaction = await createTransaction(getConnection)({\n assetValue,\n isProgramDerivedAddress,\n memo,\n recipient,\n sender,\n });\n\n if (\"signTransaction\" in signer) {\n const signedTransaction = await signer.signTransaction(transaction);\n return broadcastTransaction(getConnection)(signedTransaction);\n }\n\n transaction.sign(signer);\n\n return broadcastTransaction(getConnection)(transaction);\n };\n}\n\nfunction broadcastTransaction(getConnection: () => Promise<Connection>) {\n return async (transaction: Transaction | VersionedTransaction) => {\n const connection = await getConnection();\n return connection.sendRawTransaction(transaction.serialize());\n };\n}\n\nfunction signTransaction(getConnection: () => Promise<Connection>, signer?: SolanaSigner) {\n return async (transaction: Transaction | VersionedTransaction) => {\n const { VersionedTransaction } = await import(\"@solana/web3.js\");\n if (!signer) {\n throw new SwapKitError(\"toolbox_solana_no_signer\");\n }\n\n if (!(transaction instanceof VersionedTransaction)) {\n const connection = await getConnection();\n\n const blockHash = await connection.getLatestBlockhash();\n transaction.recentBlockhash = blockHash.blockhash;\n transaction.feePayer = signer.publicKey || undefined;\n }\n\n if (\"connect\" in signer) {\n const signedTransaction = await signer.signTransaction(transaction);\n return signedTransaction;\n }\n\n await transaction.sign([signer] as Signer & Signer[]);\n return transaction;\n };\n}\n\nexport async function createKeysForPath({\n phrase,\n derivationPath = DerivationPath.SOL,\n}: {\n phrase: string;\n derivationPath?: string;\n}) {\n const { HDKey } = await import(\"micro-key-producer/slip10.js\");\n const { mnemonicToSeedSync } = await import(\"@scure/bip39\");\n const { Keypair } = await import(\"@solana/web3.js\");\n const seed = mnemonicToSeedSync(phrase);\n const hdKey = HDKey.fromMasterSeed(seed);\n\n return Keypair.fromSeed(hdKey.derive(derivationPath, true).privateKey);\n}\n\nfunction getAddressFromPubKey(publicKey: PublicKey) {\n return publicKey.toString();\n}\n\nasync function getPubkeyFromAddress(address: string) {\n const { PublicKey } = await import(\"@solana/web3.js\");\n return new PublicKey(address);\n}\n",
30
30
  "import type { PublicKey, Transaction, VersionedTransaction } from \"@solana/web3.js\";\nimport type { GenericCreateTransactionParams, GenericTransferParams } from \"@swapkit/helpers\";\nimport type { getSolanaToolbox } from \"./toolbox\";\n\n// type DisplayEncoding = \"utf8\" | \"hex\";\n\n// type PhantomRequestMethod =\n// | \"connect\"\n// | \"disconnect\"\n// | \"signAndSendTransaction\"\n// | \"signAndSendTransactionV0\"\n// | \"signAndSendTransactionV0WithLookupTable\"\n// | \"signTransaction\"\n// | \"signAllTransactions\"\n// | \"signMessage\";\n\ninterface ConnectOpts {\n onlyIfTrusted: boolean;\n}\n\nexport * from \"./toolbox\";\n\nexport type SolanaWallet = Awaited<ReturnType<typeof getSolanaToolbox>>;\n\nexport interface SolanaProvider {\n connect: (opts?: Partial<ConnectOpts>) => Promise<{ publicKey: PublicKey }>;\n disconnect: () => Promise<void>;\n publicKey: PublicKey | null;\n signTransaction: <T extends Transaction | VersionedTransaction = Transaction>(transaction: T) => Promise<T>;\n}\n\nexport type SolanaCreateTransactionParams = Omit<GenericCreateTransactionParams, \"feeRate\"> & {\n isProgramDerivedAddress?: boolean;\n};\n\nexport type SolanaTransferParams = Omit<GenericTransferParams, \"feeRate\"> & { isProgramDerivedAddress?: boolean };\n",
31
- "import { AssetValue, Chain, getChainConfig, SwapKitError } from \"@swapkit/helpers\";\nimport { match, P } from \"ts-pattern\";\nimport type { SuiCreateTransactionParams, SuiToolboxParams, SuiTransferParams } from \"./types\";\n\nexport async function getSuiAddressValidator() {\n const { isValidSuiAddress } = await import(\"@mysten/sui/utils\");\n\n return function validateAddress(address: string) {\n try {\n return isValidSuiAddress(address);\n } catch {\n return false;\n }\n };\n}\n\nexport async function getSuiToolbox({ provider: providerParam, ...signerParams }: SuiToolboxParams = {}) {\n const validateAddress = await getSuiAddressValidator();\n\n const signer = await match(signerParams)\n .with({ phrase: P.string }, async ({ phrase }) => {\n const { Ed25519Keypair } = await import(\"@mysten/sui/keypairs/ed25519\");\n return Ed25519Keypair.deriveKeypair(phrase);\n })\n .with({ signer: P.any }, ({ signer }) => signer)\n .otherwise(() => undefined);\n\n async function getSuiClient(url = providerParam) {\n const { SuiClient, getFullnodeUrl } = await import(\"@mysten/sui/client\");\n return new SuiClient({ url: url || getFullnodeUrl(\"mainnet\") });\n }\n\n function getAddress() {\n return signer?.toSuiAddress() || \"\";\n }\n\n async function getBalance(targetAddress?: string) {\n const addressToQuery = targetAddress || getAddress();\n if (!addressToQuery) {\n throw new SwapKitError(\"toolbox_sui_address_required\" as any);\n }\n\n try {\n const suiClient = await getSuiClient();\n const { totalBalance } = await suiClient.getBalance({ owner: addressToQuery });\n const { baseDecimal: fromBaseDecimal, chain } = getChainConfig(Chain.Sui);\n\n const suiBalances = [AssetValue.from({ chain, fromBaseDecimal, value: totalBalance })];\n\n const coinBalances = await suiClient.getAllBalances({ owner: addressToQuery });\n for (const { coinType, totalBalance } of coinBalances) {\n if (coinType === \"0x2::sui::SUI\") continue; // Skip SUI as we already added it\n\n if (Number(totalBalance) > 0) {\n const symbol = coinType.split(\"::\").pop()?.toUpperCase() || \"UNKNOWN\";\n const asset = `${chain}.${symbol}-${coinType}`;\n // Default to 9 decimals, should be fetched from coin metadata\n suiBalances.push(AssetValue.from({ asset, fromBaseDecimal, value: totalBalance }));\n }\n }\n\n return suiBalances;\n } catch (error) {\n throw new SwapKitError(\"toolbox_sui_balance_error\" as any, { error });\n }\n }\n\n async function estimateTransactionFee(params?: SuiCreateTransactionParams) {\n const defaultFee = AssetValue.from({ chain: Chain.Sui, value: \"0.01\" });\n\n if (!params) return defaultFee;\n\n try {\n const suiClient = await getSuiClient();\n const { txBytes } = await createTransaction(params);\n const {\n effects: { status, gasUsed },\n } = await suiClient.dryRunTransactionBlock({ transactionBlock: txBytes });\n\n if (status.status !== \"success\") return defaultFee;\n\n const totalGas = Number(gasUsed.computationCost) + Number(gasUsed.storageCost) - Number(gasUsed.storageRebate);\n\n return AssetValue.from({ chain: Chain.Sui, value: totalGas.toString() });\n } catch {\n return defaultFee;\n }\n }\n\n async function createTransaction({ recipient, assetValue, gasBudget, sender }: SuiCreateTransactionParams) {\n const { Transaction } = await import(\"@mysten/sui/transactions\");\n\n const senderAddress = sender || getAddress();\n\n if (!senderAddress) {\n throw new SwapKitError(\"toolbox_sui_no_sender\");\n }\n\n try {\n const tx = new Transaction();\n tx.setSender(senderAddress);\n\n if (assetValue.isGasAsset || assetValue.symbol === \"SUI\") {\n const [suiCoin] = tx.splitCoins(tx.gas, [assetValue.getBaseValue(\"string\")]);\n tx.transferObjects([suiCoin], recipient);\n } else {\n throw new SwapKitError(\"toolbox_sui_custom_token_transfer_not_implemented\" as any);\n }\n\n if (gasBudget) {\n tx.setGasBudget(gasBudget);\n }\n\n const suiClient = await getSuiClient();\n const txBytes = await tx.build({ client: suiClient });\n\n return { tx, txBytes };\n } catch (error) {\n throw new SwapKitError(\"toolbox_sui_transaction_creation_error\" as any, { error });\n }\n }\n\n async function signTransaction(\n params: Uint8Array<ArrayBuffer> | SuiCreateTransactionParams | Awaited<ReturnType<typeof createTransaction>>,\n ) {\n if (!signer) {\n throw new SwapKitError(\"toolbox_sui_no_signer\");\n }\n\n if (params instanceof Uint8Array) {\n return signer.signTransaction(params);\n }\n\n const { txBytes } = \"tx\" in params ? params : await createTransaction(params);\n\n return signer.signTransaction(txBytes);\n }\n\n async function transfer({ assetValue, gasBudget, recipient }: SuiTransferParams) {\n if (!signer) {\n throw new SwapKitError(\"toolbox_sui_no_signer\" as any);\n }\n\n const sender = signer.toSuiAddress() || getAddress();\n if (!sender) {\n throw new SwapKitError(\"toolbox_sui_no_sender\");\n }\n\n const { txBytes } = await createTransaction({ assetValue, gasBudget, recipient, sender });\n const suiClient = await getSuiClient();\n const { digest: txHash } = await suiClient.signAndExecuteTransaction({ signer, transaction: txBytes });\n\n return txHash;\n }\n\n return {\n createTransaction,\n estimateTransactionFee,\n getAddress,\n getBalance,\n signTransaction,\n transfer,\n validateAddress,\n };\n}\n",
31
+ "import { AssetValue, Chain, getChainConfig, SwapKitError } from \"@swapkit/helpers\";\nimport { match, P } from \"ts-pattern\";\nimport type { SuiCreateTransactionParams, SuiToolboxParams, SuiTransferParams } from \"./types\";\n\nexport async function getSuiAddressValidator() {\n const { isValidSuiAddress } = await import(\"@mysten/sui/utils\");\n\n return function validateAddress(address: string) {\n try {\n return isValidSuiAddress(address);\n } catch {\n return false;\n }\n };\n}\n\nexport async function getSuiToolbox({ provider: providerParam, ...signerParams }: SuiToolboxParams = {}) {\n const validateAddress = await getSuiAddressValidator();\n\n const signer = await match(signerParams)\n .with({ phrase: P.string }, async ({ phrase }) => {\n const { Ed25519Keypair } = await import(\"@mysten/sui/keypairs/ed25519\");\n return Ed25519Keypair.deriveKeypair(phrase);\n })\n .with({ signer: P.any }, ({ signer }) => signer)\n .otherwise(() => undefined);\n\n async function getSuiClient(url = providerParam) {\n const { SuiClient, getFullnodeUrl } = await import(\"@mysten/sui/client\");\n return new SuiClient({ url: url || getFullnodeUrl(\"mainnet\") });\n }\n\n function getAddress() {\n return signer?.toSuiAddress() || \"\";\n }\n\n async function getBalance(targetAddress?: string) {\n const addressToQuery = targetAddress || getAddress();\n if (!addressToQuery) {\n throw new SwapKitError(\"toolbox_sui_address_required\" as any);\n }\n\n const { baseDecimal: fromBaseDecimal, chain } = getChainConfig(Chain.Sui);\n\n try {\n const suiClient = await getSuiClient();\n const { totalBalance } = await suiClient.getBalance({ owner: addressToQuery });\n\n const suiBalances = [AssetValue.from({ chain, fromBaseDecimal, value: totalBalance })];\n\n const coinBalances = await suiClient.getAllBalances({ owner: addressToQuery });\n for (const { coinType, totalBalance } of coinBalances) {\n if (coinType === \"0x2::sui::SUI\") continue; // Skip SUI as we already added it\n\n if (Number(totalBalance) > 0) {\n const symbol = coinType.split(\"::\").pop()?.toUpperCase() || \"UNKNOWN\";\n const asset = `${chain}.${symbol}-${coinType}`;\n // Default to 9 decimals, should be fetched from coin metadata\n suiBalances.push(AssetValue.from({ asset, fromBaseDecimal, value: totalBalance }));\n }\n }\n\n return suiBalances;\n } catch {\n return [AssetValue.from({ chain })];\n }\n }\n\n async function estimateTransactionFee(params?: SuiCreateTransactionParams) {\n const defaultFee = AssetValue.from({ chain: Chain.Sui, value: \"0.01\" });\n\n if (!params) return defaultFee;\n\n try {\n const suiClient = await getSuiClient();\n const { txBytes } = await createTransaction(params);\n const {\n effects: { status, gasUsed },\n } = await suiClient.dryRunTransactionBlock({ transactionBlock: txBytes });\n\n if (status.status !== \"success\") return defaultFee;\n\n const totalGas = Number(gasUsed.computationCost) + Number(gasUsed.storageCost) - Number(gasUsed.storageRebate);\n\n return AssetValue.from({ chain: Chain.Sui, value: totalGas.toString() });\n } catch {\n return defaultFee;\n }\n }\n\n async function createTransaction({ recipient, assetValue, gasBudget, sender }: SuiCreateTransactionParams) {\n const { Transaction } = await import(\"@mysten/sui/transactions\");\n\n const senderAddress = sender || getAddress();\n\n if (!senderAddress) {\n throw new SwapKitError(\"toolbox_sui_no_sender\");\n }\n\n try {\n const tx = new Transaction();\n tx.setSender(senderAddress);\n\n if (assetValue.isGasAsset || assetValue.symbol === \"SUI\") {\n const [suiCoin] = tx.splitCoins(tx.gas, [assetValue.getBaseValue(\"string\")]);\n tx.transferObjects([suiCoin], recipient);\n } else {\n throw new SwapKitError(\"toolbox_sui_custom_token_transfer_not_implemented\" as any);\n }\n\n if (gasBudget) {\n tx.setGasBudget(gasBudget);\n }\n\n const suiClient = await getSuiClient();\n const txBytes = await tx.build({ client: suiClient });\n\n return { tx, txBytes };\n } catch (error) {\n throw new SwapKitError(\"toolbox_sui_transaction_creation_error\" as any, { error });\n }\n }\n\n async function signTransaction(\n params: Uint8Array<ArrayBuffer> | SuiCreateTransactionParams | Awaited<ReturnType<typeof createTransaction>>,\n ) {\n if (!signer) {\n throw new SwapKitError(\"toolbox_sui_no_signer\");\n }\n\n if (params instanceof Uint8Array) {\n return signer.signTransaction(params);\n }\n\n const { txBytes } = \"tx\" in params ? params : await createTransaction(params);\n\n return signer.signTransaction(txBytes);\n }\n\n async function transfer({ assetValue, gasBudget, recipient }: SuiTransferParams) {\n if (!signer) {\n throw new SwapKitError(\"toolbox_sui_no_signer\" as any);\n }\n\n const sender = signer.toSuiAddress() || getAddress();\n if (!sender) {\n throw new SwapKitError(\"toolbox_sui_no_sender\");\n }\n\n const { txBytes } = await createTransaction({ assetValue, gasBudget, recipient, sender });\n const suiClient = await getSuiClient();\n const { digest: txHash } = await suiClient.signAndExecuteTransaction({ signer, transaction: txBytes });\n\n return txHash;\n }\n\n return {\n createTransaction,\n estimateTransactionFee,\n getAddress,\n getBalance,\n signTransaction,\n transfer,\n validateAddress,\n };\n}\n",
32
32
  "export * from \"./toolbox\";\nexport * from \"./types\";\n",
33
- "import { AssetValue, Chain, getChainConfig, SwapKitError, SwapKitNumber } from \"@swapkit/helpers\";\nimport type { Cell, OpenedContract, TonClient, WalletContractV4 } from \"@ton/ton\";\nimport { match, P } from \"ts-pattern\";\n\nimport type { TONSigner, TONToolboxParams, TONTransferParams } from \"./types\";\n\nexport async function getTONToolbox(toolboxParams: TONToolboxParams = {}) {\n const { mnemonicToWalletKey } = await import(\"@ton/crypto\");\n const { Address, TonClient, WalletContractV4 } = await import(\"@ton/ton\");\n const validateAddress = await getTONAddressValidator();\n let client: TonClient;\n let wallet: OpenedContract<WalletContractV4>;\n\n const signer = await match(toolboxParams)\n .with({ phrase: P.string }, async ({ phrase }) => mnemonicToWalletKey(phrase.split(\" \")))\n .with({ signer: P.any }, ({ signer }) => signer as TONSigner)\n .otherwise(() => undefined);\n\n function getClient() {\n const { rpcUrls } = getChainConfig(Chain.Ton);\n const [endpoint] = rpcUrls;\n\n if (!client || client.parameters.endpoint !== endpoint) {\n client = new TonClient({ endpoint });\n }\n\n return client;\n }\n\n function getWallet(paramSigner?: TONSigner) {\n if (!wallet || paramSigner) {\n const client = getClient();\n const walletSigner = paramSigner || signer;\n\n if (!walletSigner) {\n throw new SwapKitError(\"core_wallet_connection_not_found\");\n }\n\n const walletContract = WalletContractV4.create({ publicKey: walletSigner.publicKey, workchain: 0 });\n const contract = client.open(walletContract);\n\n wallet = contract;\n }\n\n return wallet;\n }\n\n async function getBalance(address: string) {\n const client = getClient();\n const { baseDecimal } = getChainConfig(Chain.Ton);\n\n try {\n const balance = await client.getBalance(Address.parse(address));\n return [AssetValue.from({ chain: Chain.Ton, value: SwapKitNumber.fromBigInt(balance, baseDecimal) })];\n } catch (error) {\n throw new SwapKitError(\"core_wallet_connection_not_found\", { error });\n }\n }\n\n async function createTransaction({ assetValue, recipient, memo }: TONTransferParams) {\n const wallet = getWallet();\n if (!wallet || !signer) {\n throw new SwapKitError(\"core_wallet_connection_not_found\");\n }\n\n const { toNano, comment, internal } = await import(\"@ton/ton\");\n const seqno = await wallet.getSeqno();\n const amount = toNano(assetValue.getValue(\"string\"));\n const messageBody = memo ? comment(memo) : undefined;\n\n const transfer = wallet.createTransfer({\n messages: [internal({ body: messageBody, to: recipient, value: amount })],\n secretKey: signer.secretKey,\n seqno,\n });\n\n return transfer;\n }\n\n async function transfer({ assetValue, recipient, memo }: TONTransferParams) {\n const wallet = getWallet();\n if (!wallet || !signer) {\n throw new SwapKitError(\"core_wallet_connection_not_found\");\n }\n\n const transfer = await createTransaction({ assetValue, memo, recipient });\n await wallet.send(transfer);\n\n return transfer.hash().toString();\n }\n\n async function sendTransaction(transferCell: Cell) {\n const wallet = getWallet();\n if (!wallet) {\n throw new SwapKitError(\"core_wallet_connection_not_found\");\n }\n\n try {\n await wallet.send(transferCell);\n return transferCell.hash().toString(\"hex\");\n } catch (error) {\n throw new SwapKitError(\"core_wallet_connection_not_found\", { error });\n }\n }\n\n function getAddress() {\n const wallet = getWallet();\n return wallet.address.toString();\n }\n\n function estimateTransactionFee() {\n return Promise.resolve(AssetValue.from({ chain: Chain.Ton, value: \"0.0001\" }));\n }\n\n return {\n createTransaction,\n estimateTransactionFee,\n getAddress,\n getBalance,\n sendTransaction,\n transfer,\n validateAddress,\n };\n}\n\nexport async function getTONAddressValidator() {\n const { Address } = await import(\"@ton/ton\");\n return function validateAddress(address: string) {\n try {\n Address.parse(address);\n return true;\n } catch {\n return false;\n }\n };\n}\n",
33
+ "import { AssetValue, Chain, getChainConfig, SwapKitError, SwapKitNumber } from \"@swapkit/helpers\";\nimport type { Cell, OpenedContract, TonClient, WalletContractV4 } from \"@ton/ton\";\nimport { match, P } from \"ts-pattern\";\n\nimport type { TONSigner, TONToolboxParams, TONTransferParams } from \"./types\";\n\nexport async function getTONToolbox(toolboxParams: TONToolboxParams = {}) {\n const { mnemonicToWalletKey } = await import(\"@ton/crypto\");\n const { Address, TonClient, WalletContractV4 } = await import(\"@ton/ton\");\n const validateAddress = await getTONAddressValidator();\n let client: TonClient;\n let wallet: OpenedContract<WalletContractV4>;\n\n const signer = await match(toolboxParams)\n .with({ phrase: P.string }, async ({ phrase }) => mnemonicToWalletKey(phrase.split(\" \")))\n .with({ signer: P.any }, ({ signer }) => signer as TONSigner)\n .otherwise(() => undefined);\n\n function getClient() {\n const { rpcUrls } = getChainConfig(Chain.Ton);\n const [endpoint] = rpcUrls;\n\n if (!client || client.parameters.endpoint !== endpoint) {\n client = new TonClient({ endpoint });\n }\n\n return client;\n }\n\n function getWallet(paramSigner?: TONSigner) {\n if (!wallet || paramSigner) {\n const client = getClient();\n const walletSigner = paramSigner || signer;\n\n if (!walletSigner) {\n throw new SwapKitError(\"core_wallet_connection_not_found\");\n }\n\n const walletContract = WalletContractV4.create({ publicKey: walletSigner.publicKey, workchain: 0 });\n const contract = client.open(walletContract);\n\n wallet = contract;\n }\n\n return wallet;\n }\n\n async function getBalance(address: string) {\n const client = getClient();\n const { baseDecimal } = getChainConfig(Chain.Ton);\n\n try {\n const balance = await client.getBalance(Address.parse(address));\n return [AssetValue.from({ chain: Chain.Ton, value: SwapKitNumber.fromBigInt(balance, baseDecimal) })];\n } catch {\n return [AssetValue.from({ chain: Chain.Ton })];\n }\n }\n\n async function createTransaction({ assetValue, recipient, memo }: TONTransferParams) {\n const wallet = getWallet();\n if (!wallet || !signer) {\n throw new SwapKitError(\"core_wallet_connection_not_found\");\n }\n\n const { toNano, comment, internal } = await import(\"@ton/ton\");\n const seqno = await wallet.getSeqno();\n const amount = toNano(assetValue.getValue(\"string\"));\n const messageBody = memo ? comment(memo) : undefined;\n\n const transfer = wallet.createTransfer({\n messages: [internal({ body: messageBody, to: recipient, value: amount })],\n secretKey: signer.secretKey,\n seqno,\n });\n\n return transfer;\n }\n\n async function transfer({ assetValue, recipient, memo }: TONTransferParams) {\n const wallet = getWallet();\n if (!wallet || !signer) {\n throw new SwapKitError(\"core_wallet_connection_not_found\");\n }\n\n const transfer = await createTransaction({ assetValue, memo, recipient });\n await wallet.send(transfer);\n\n return transfer.hash().toString();\n }\n\n async function sendTransaction(transferCell: Cell) {\n const wallet = getWallet();\n if (!wallet) {\n throw new SwapKitError(\"core_wallet_connection_not_found\");\n }\n\n try {\n await wallet.send(transferCell);\n return transferCell.hash().toString(\"hex\");\n } catch (error) {\n throw new SwapKitError(\"core_wallet_connection_not_found\", { error });\n }\n }\n\n function getAddress() {\n const wallet = getWallet();\n return wallet.address.toString();\n }\n\n function estimateTransactionFee() {\n return Promise.resolve(AssetValue.from({ chain: Chain.Ton, value: \"0.0001\" }));\n }\n\n return {\n createTransaction,\n estimateTransactionFee,\n getAddress,\n getBalance,\n sendTransaction,\n transfer,\n validateAddress,\n };\n}\n\nexport async function getTONAddressValidator() {\n const { Address } = await import(\"@ton/ton\");\n return function validateAddress(address: string) {\n try {\n Address.parse(address);\n return true;\n } catch {\n return false;\n }\n };\n}\n",
34
34
  "export * from \"./toolbox\";\nexport * from \"./types\";\n",
35
35
  "export const trc20ABI = [\n {\n constant: true,\n inputs: [{ name: \"_owner\", type: \"address\" }],\n name: \"balanceOf\",\n outputs: [{ name: \"balance\", type: \"uint256\" }],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n constant: false,\n inputs: [\n { name: \"_to\", type: \"address\" },\n { name: \"_value\", type: \"uint256\" },\n ],\n name: \"transfer\",\n outputs: [{ name: \"success\", type: \"bool\" }],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n constant: true,\n inputs: [],\n name: \"decimals\",\n outputs: [{ name: \"\", type: \"uint8\" }],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n constant: true,\n inputs: [],\n name: \"symbol\",\n outputs: [{ name: \"\", type: \"string\" }],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n constant: true,\n inputs: [],\n name: \"name\",\n outputs: [{ name: \"\", type: \"string\" }],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n constant: true,\n inputs: [\n { name: \"_owner\", type: \"address\" },\n { name: \"_spender\", type: \"address\" },\n ],\n name: \"allowance\",\n outputs: [{ name: \"remaining\", type: \"uint256\" }],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n constant: false,\n inputs: [\n { name: \"_spender\", type: \"address\" },\n { name: \"_value\", type: \"uint256\" },\n ],\n name: \"approve\",\n outputs: [{ name: \"success\", type: \"bool\" }],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n constant: true,\n inputs: [],\n name: \"totalSupply\",\n outputs: [{ name: \"\", type: \"uint256\" }],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n constant: false,\n inputs: [\n { name: \"_from\", type: \"address\" },\n { name: \"_to\", type: \"address\" },\n { name: \"_value\", type: \"uint256\" },\n ],\n name: \"transferFrom\",\n outputs: [{ name: \"success\", type: \"bool\" }],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n anonymous: false,\n inputs: [\n { indexed: true, name: \"_from\", type: \"address\" },\n { indexed: true, name: \"_to\", type: \"address\" },\n { indexed: false, name: \"_value\", type: \"uint256\" },\n ],\n name: \"Transfer\",\n type: \"event\",\n },\n {\n anonymous: false,\n inputs: [\n { indexed: true, name: \"_owner\", type: \"address\" },\n { indexed: true, name: \"_spender\", type: \"address\" },\n { indexed: false, name: \"_value\", type: \"uint256\" },\n ],\n name: \"Approval\",\n type: \"event\",\n },\n] as const;\n",
36
36
  "import { SwapKitError } from \"@swapkit/helpers\";\nimport type { TronGridAccountResponse } from \"../types\";\n\nconst TRONGRID_API_BASE = \"https://api.trongrid.io\";\n\n/**\n * Fetch account information including TRC20 balances from TronGrid API\n */\nexport async function fetchAccountFromTronGrid(address: string) {\n const TW = await import(\"tronweb\");\n const TronWeb = TW.TronWeb ?? TW.default?.TronWeb;\n\n try {\n const response = await fetch(`${TRONGRID_API_BASE}/v1/accounts/${address}`);\n\n if (!response.ok) {\n throw new Error(`TronGrid API error: ${response.status} ${response.statusText}`);\n }\n\n const data = (await response.json()) as TronGridAccountResponse;\n\n if (!(data.success && data.data) || data.data.length === 0) {\n throw new Error(\"Invalid response from TronGrid API\");\n }\n\n // Convert search address to hex format for comparison\n let searchAddressHex: string;\n try {\n // If address is base58, convert to hex\n searchAddressHex = TronWeb.address.toHex(address).toLowerCase();\n } catch {\n // If conversion fails, assume it's already hex\n searchAddressHex = address.toLowerCase();\n }\n\n // Find the account that matches the requested address\n const account = data.data.find((acc) => {\n return acc.address.toLowerCase() === searchAddressHex;\n });\n\n if (!account) {\n return;\n }\n\n // Return simplified object with balance and trc20 array\n return { balance: account.balance, trc20: account.trc20 || [] };\n } catch (error) {\n throw new SwapKitError(\"toolbox_tron_trongrid_api_error\", {\n address,\n message: error instanceof Error ? error.message : \"Unknown error\",\n });\n }\n}\n",
@@ -53,15 +53,15 @@
53
53
  "import type { Account, Contract } from \"@near-js/accounts\";\nimport type { SignedTransaction, Transaction } from \"@near-js/transactions\";\nimport { AssetValue, Chain, getChainConfig, getRPCUrl, SwapKitError } from \"@swapkit/helpers\";\nimport { getBalance } from \"../utils\";\nimport {\n getFullAccessPublicKey,\n getNearSignerFromPhrase,\n getNearSignerFromPrivateKey,\n getValidateNearAddress,\n} from \"./helpers/core\";\nimport {\n estimateBatchGas,\n GAS_COSTS,\n getContractMethodGas,\n isAccountCreation,\n isBatchTransaction,\n isContractCall,\n isContractDeployment,\n isCustomEstimator,\n isSimpleTransfer,\n} from \"./helpers/gasEstimation\";\nimport { createNearContract } from \"./helpers/nep141\";\nimport type {\n NearCreateTransactionParams,\n NearFunctionCallParams,\n NearToolboxParams,\n NearTransferParams,\n} from \"./types\";\nimport type { NearContractInterface, NearGasEstimateParams } from \"./types/contract\";\nimport type { NEP141StorageContract } from \"./types/nep141\";\nimport type {\n BatchTransaction,\n ContractFunctionCallParams,\n CreateActionParams,\n GetSignerFromPhraseParams,\n} from \"./types/toolbox\";\n\nexport async function getNearToolbox(toolboxParams?: NearToolboxParams) {\n const { P, match } = await import(\"ts-pattern\");\n const { JsonRpcProvider } = await import(\"@near-js/providers\");\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 = await getRPCUrl(Chain.Near);\n\n const provider = new JsonRpcProvider({ url });\n\n async function getAccount(address?: string) {\n const { Account } = await import(\"@near-js/accounts\");\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 checkStorageBalance(params: { contractId: string; accountId: string }) {\n const contract = await createContract<NEP141StorageContract>({\n changeMethods: [],\n contractId: params.contractId,\n viewMethods: [\"storage_balance_of\"],\n });\n\n return contract.storage_balance_of({ account_id: params.accountId });\n }\n\n async function transferTokenWithStorageDeposit(params: {\n recipient: string;\n assetValue: AssetValue;\n memo?: string;\n contractId: string;\n }) {\n const storageDeposit = \"1250000000000000000000\"; // 0.00125 NEAR default\n\n const actions = [\n await createAction({\n args: { account_id: params.recipient },\n attachedDeposit: storageDeposit,\n gas: \"150000000000000\", // 150 TGas for storage_deposit\n methodName: \"storage_deposit\",\n }),\n await createAction({\n args: {\n amount: params.assetValue.getBaseValue(\"string\"),\n memo: params.memo || null,\n receiver_id: params.recipient,\n },\n attachedDeposit: \"1\",\n gas: \"150000000000000\", // 150 TGas for ft_transfer\n methodName: \"ft_transfer\",\n }),\n ];\n\n return executeBatchTransaction({ actions, receiverId: params.contractId });\n }\n\n async function transfer(params: NearTransferParams) {\n if (!signer) {\n throw new SwapKitError(\"toolbox_near_no_signer\");\n }\n\n const { assetValue, recipient, memo } = params;\n const sender = await getAddress();\n\n // Handle NEP-141 token transfers - check if recipient needs storage\n if (!assetValue.isGasAsset && assetValue.address) {\n const storageBalance = await checkStorageBalance({ accountId: recipient, contractId: assetValue.address });\n\n if (!storageBalance) {\n return transferTokenWithStorageDeposit({ assetValue, contractId: assetValue.address, memo, recipient });\n }\n }\n\n // Standard transfer (native NEAR or token with registered storage)\n const transaction = await createTransaction({ ...params, sender });\n return signAndSendTransaction(transaction);\n }\n\n async function createTransaction(params: NearCreateTransactionParams) {\n const { recipient, assetValue, memo, attachedDeposit, sender: signerId, functionCall } = params;\n const validateNearAddress = await getValidateNearAddress();\n\n if (!validateNearAddress(recipient)) {\n throw new SwapKitError(\"toolbox_near_invalid_address\", { recipient: recipient });\n }\n\n if (!validateNearAddress(signerId)) {\n throw new SwapKitError(\"toolbox_near_invalid_address\", { signerId: signerId });\n }\n\n if (functionCall) {\n return createContractFunctionCall({ ...functionCall, sender: signerId });\n }\n\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 args: { amount: assetValue.getBaseValue(\"string\"), memo: memo || null, receiver_id: recipient },\n attachedDeposit: attachedDeposit || \"1\",\n contractId,\n gas: \"250000000000000\",\n methodName: \"ft_transfer\",\n sender: signerId,\n });\n }\n\n const { publicKey, nonce } = await getFullAccessPublicKey(provider, signerId);\n const baseAmount = assetValue.getBaseValue(\"bigint\");\n\n const { actionCreators, createTransaction } = await import(\"@near-js/transactions\");\n const { baseDecode } = await import(\"@near-js/utils\");\n\n const txActions = [actionCreators.transfer(baseAmount)];\n\n if (memo && attachedDeposit) {\n txActions.push(actionCreators.functionCall(\"memo\", { memo }, BigInt(\"250000000000000\"), BigInt(attachedDeposit)));\n }\n\n const block = await provider.block({ finality: \"final\" });\n const blockHash = baseDecode(block.header.hash);\n\n return createTransaction(signerId, publicKey, recipient, nonce + 1, txActions, blockHash);\n }\n\n function serializeTransaction(transaction: Transaction) {\n const serializedTx = transaction.encode();\n return Buffer.from(serializedTx).toString(\"base64\");\n }\n\n async function createContractFunctionCall(params: ContractFunctionCallParams) {\n const { sender: accountId } = params;\n\n const { publicKey, nonce } = await getFullAccessPublicKey(provider, accountId);\n\n const { createTransaction, actionCreators } = await import(\"@near-js/transactions\");\n const { baseDecode } = await import(\"@near-js/utils\");\n const block = await provider.block({ finality: \"final\" });\n const blockHash = baseDecode(block.header.hash);\n\n const actions = [\n actionCreators.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 = createTransaction(accountId, publicKey, params.contractId, nonce + 1, actions, blockHash);\n\n return transaction;\n }\n\n async function createAction(params: CreateActionParams) {\n const { actionCreators } = await import(\"@near-js/transactions\");\n\n const action = actionCreators.functionCall(\n params.methodName,\n Buffer.from(JSON.stringify(params.args)),\n BigInt(params.gas),\n BigInt(params.attachedDeposit),\n );\n\n return action;\n }\n\n async function signTransaction(transaction: Transaction): Promise<SignedTransaction> {\n if (!signer) {\n throw new SwapKitError(\"toolbox_near_no_signer\");\n }\n\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 signAndSendTransaction(transaction: Transaction) {\n if (!signer) {\n throw new SwapKitError(\"toolbox_near_no_signer\");\n }\n\n try {\n const signedTx = await signTransaction(transaction);\n const txHash = await broadcastTransaction(signedTx);\n return txHash;\n } catch {\n return signer.signAndSendTransactions?.({ transactions: [transaction] });\n }\n }\n\n async function estimateTransactionFee(params: NearTransferParams | NearGasEstimateParams) {\n if (\"assetValue\" in params) {\n const baseTransferCost = \"115123062500\";\n const receiptCreationCost = \"108059500000\";\n\n const totalGasUnits = BigInt(baseTransferCost) + BigInt(receiptCreationCost);\n\n const gasPrice = await getCurrentGasPrice();\n\n const totalCostYocto = totalGasUnits * BigInt(gasPrice.toString());\n const { baseDecimal } = getChainConfig(Chain.Near);\n\n return AssetValue.from({ chain: Chain.Near, fromBaseDecimal: baseDecimal, value: totalCostYocto.toString() });\n }\n\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 account_id: \"system\",\n args_base64: \"\",\n finality: \"final\",\n method_name: \"gas_price\",\n request_type: \"call_function\",\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): Promise<string> {\n if (!signer) {\n throw new SwapKitError(\"toolbox_near_no_signer\");\n }\n\n const account = await getAccount();\n const { formatNearAmount } = await import(\"@near-js/utils\");\n const { PublicKey } = await import(\"@near-js/crypto\");\n\n const balanceInYocto = formatNearAmount(initialBalance) || \"0\";\n\n const result = await account.createAccount(subAccountId, PublicKey.fromString(publicKey), BigInt(balanceInYocto));\n\n return result.transaction.hash;\n }\n\n async function callFunction(params: NearFunctionCallParams): Promise<string> {\n try {\n if (!signer) {\n throw new SwapKitError(\"toolbox_near_no_signer\");\n }\n\n const { actionCreators } = await import(\"@near-js/transactions\");\n\n const { contractId, methodName, args, deposit } = params;\n const account = await getAccount();\n\n const estimatedGas = await estimateGas({ args: args || {}, contractId, methodName });\n\n const functionAction = actionCreators.functionCall(\n methodName,\n args || {},\n estimatedGas.getBaseValue(\"bigint\"),\n BigInt(deposit || \"1\"),\n );\n\n const result = await account.signAndSendTransaction({ actions: [functionAction], receiverId: contractId });\n\n return result.transaction_outcome.id;\n } catch (error) {\n throw new SwapKitError(\"toolbox_near_transfer_failed\", { error });\n }\n }\n\n // Create typed contract interface\n async function createContract<T extends Contract = Contract>(contractInterface: NearContractInterface): Promise<T> {\n const account = await getAccount();\n\n return createNearContract<T>({\n account,\n changeMethods: contractInterface.changeMethods,\n contractId: contractInterface.contractId,\n viewMethods: contractInterface.viewMethods,\n });\n }\n\n async function executeBatchTransaction(batch: BatchTransaction): Promise<string> {\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({ actions: batch.actions, receiverId: batch.receiverId });\n\n return result.transaction.hash;\n }\n\n async function estimateGas(params: NearGasEstimateParams, account?: Account) {\n const { baseDecimal } = getChainConfig(Chain.Near);\n\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 const gasInUnits = BigInt(gasInTGas) * BigInt(10 ** 12);\n const costInYoctoNear = gasInUnits;\n\n return AssetValue.from({ chain: Chain.Near, fromBaseDecimal: baseDecimal, value: costInYoctoNear });\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 {\n // Fallback to default\n return \"100000000\";\n }\n }\n\n return {\n broadcastTransaction,\n callFunction,\n createAction,\n createContract,\n createContractFunctionCall,\n createSubAccount,\n createTransaction,\n estimateGas,\n estimateTransactionFee,\n executeBatchTransaction,\n getAddress,\n getBalance: getBalance(Chain.Near),\n getGasPrice,\n getPublicKey: async () => (signer ? (await signer.getPublicKey()).toString() : \"\"),\n getSignerFromPhrase: (params: GetSignerFromPhraseParams) => getNearSignerFromPhrase(params),\n getSignerFromPrivateKey: getNearSignerFromPrivateKey,\n provider,\n serializeTransaction,\n signAndSendTransaction,\n signTransaction,\n transfer,\n validateAddress: await getValidateNearAddress(),\n };\n}\n",
54
54
  "import type { Signer } from \"@near-js/signers\";\nimport type { SignedTransaction, Transaction } from \"@near-js/transactions\";\nimport type {\n ChainSigner,\n DerivationPathArray,\n GenericCreateTransactionParams,\n GenericTransferParams,\n} from \"@swapkit/helpers\";\n\nexport interface NearSigner extends Signer, Omit<ChainSigner<Transaction, SignedTransaction>, \"signTransaction\"> {\n signAndSendTransactions?(params: { transactions: Transaction[] }): Promise<string>;\n}\n\nexport type NearToolboxParams =\n | { signer?: NearSigner; accountId?: string }\n | { phrase?: string; index?: number; derivationPath?: DerivationPathArray };\n\nexport interface NearTransferParams extends GenericTransferParams {}\n\nexport interface NearConfig {\n networkId: \"mainnet\" | \"testnet\" | \"betanet\";\n nodeUrl: string;\n walletUrl?: string;\n helperUrl?: string;\n keyStore?: any;\n}\n\nexport interface NearFunctionCallParams {\n contractId: string;\n methodName: string;\n args: Uint8Array | Record<string, any>;\n deposit?: bigint | string | number;\n gas?: bigint | string | number;\n}\n\nexport interface NearCreateTransactionParams extends Omit<GenericCreateTransactionParams, \"feeRate\"> {\n attachedDeposit?: string;\n functionCall?: { methodName: string; args: object; attachedDeposit: string; gas: string; contractId: string };\n}\n\nexport * from \"./toolbox\";\nexport * from \"./types/contract\";\nexport * from \"./types/nep141\";\nexport * from \"./types/toolbox\";\n",
55
55
  "import type { getNearToolbox } from \"./toolbox\";\n\nexport * from \"./helpers/core\";\nexport * from \"./helpers/gasEstimation\";\nexport * from \"./helpers/nep141\";\nexport * from \"./toolbox\";\nexport * from \"./types\";\n\nexport type NearWallet = Awaited<ReturnType<typeof getNearToolbox>>;\n\nexport type {\n NearCallParams,\n NearContractInterface,\n NearGasEstimateParams,\n} from \"./types/contract\";\nexport type {\n FungibleTokenMetadata,\n StorageBalance,\n StorageBalanceBounds,\n TokenTransferParams,\n} from \"./types/nep141\";\n",
56
- "import type {\n FungibleResourcesCollectionItem,\n GatewayApiClient,\n StateEntityDetailsVaultResponseItem,\n StateEntityFungiblesPageRequest,\n StateEntityFungiblesPageResponse,\n} from \"@radixdlt/babylon-gateway-api-sdk\";\nimport { AssetValue, Chain, SKConfig, type SKConfigIntegrations, SwapKitError } from \"@swapkit/helpers\";\n\nexport type RadixWallet = Awaited<ReturnType<typeof RadixToolbox>>;\n\ntype RadixGetBalanceParams = { address: string; networkApi: GatewayApiClient };\n// Could not find anything sync in SDK, ask Radix team\nexport function radixValidateAddress(address: string) {\n return address.startsWith(\"account_rdx1\") && address.length === 66;\n}\n\nfunction getBalance({ networkApi }: { networkApi: GatewayApiClient }) {\n return async function getBalance(address: string) {\n const fungibleResources = await fetchFungibleResources({ address, networkApi });\n const fungibleBalances = convertResourcesToBalances({ networkApi, resources: fungibleResources });\n return fungibleBalances;\n };\n}\n\nasync function fetchFungibleResources({\n address,\n networkApi,\n}: RadixGetBalanceParams): Promise<FungibleResourcesCollectionItem[]> {\n let hasNextPage = true;\n let nextCursor: string | undefined;\n let fungibleResources: FungibleResourcesCollectionItem[] = [];\n const stateVersion = await currentStateVersion(networkApi);\n while (hasNextPage) {\n const stateEntityFungiblesPageRequest: StateEntityFungiblesPageRequest = {\n address: address,\n at_ledger_state: { state_version: stateVersion },\n cursor: nextCursor,\n limit_per_page: 100,\n };\n\n const stateEntityFungiblesPageResponse: StateEntityFungiblesPageResponse =\n await networkApi.state.innerClient.entityFungiblesPage({\n stateEntityFungiblesPageRequest: stateEntityFungiblesPageRequest,\n });\n\n fungibleResources = fungibleResources.concat(stateEntityFungiblesPageResponse.items);\n if (stateEntityFungiblesPageResponse.next_cursor) {\n nextCursor = stateEntityFungiblesPageResponse.next_cursor;\n } else {\n hasNextPage = false;\n }\n }\n return fungibleResources;\n}\n\nasync function convertResourcesToBalances({\n resources,\n networkApi,\n}: {\n resources: FungibleResourcesCollectionItem[]; //| NonFungibleResourcesCollectionItem[];\n networkApi: GatewayApiClient;\n}): Promise<AssetValue[]> {\n const balances: AssetValue[] = [];\n const BATCH_SIZE = 50;\n\n // Split resources into batches of up to 50 items\n const resourceBatches: FungibleResourcesCollectionItem[][] = [];\n for (let i = 0; i < resources.length; i += BATCH_SIZE) {\n resourceBatches.push(resources.slice(i, i + BATCH_SIZE));\n }\n\n for (const batch of resourceBatches) {\n const addresses = batch.map((item) => item.resource_address);\n const response: StateEntityDetailsVaultResponseItem[] =\n await networkApi.state.getEntityDetailsVaultAggregated(addresses);\n\n const divisibilities = new Map<string, { decimals: number; symbol: string }>();\n\n for (const result of response) {\n if (result.details !== undefined) {\n const metaDataSymbol = result.metadata?.items.find((item) => item.key === \"symbol\");\n const symbol = metaDataSymbol?.value.typed.type === \"String\" ? metaDataSymbol.value.typed.value : \"?\";\n\n if (result.details.type === \"FungibleResource\") {\n divisibilities.set(result.address, { decimals: result.details.divisibility, symbol });\n }\n }\n }\n\n for (const item of batch) {\n if (item.aggregation_level === \"Global\") {\n const assetInfo = divisibilities.get(item.resource_address) || { decimals: 0, symbol: \"?\" };\n\n const balance = AssetValue.from({\n asset:\n assetInfo.symbol !== Chain.Radix\n ? `${Chain.Radix}.${assetInfo.symbol}-${item.resource_address}`\n : \"XRD.XRD\",\n value: item.amount,\n });\n balances.push(balance);\n }\n }\n }\n\n return balances;\n}\n\nfunction currentStateVersion(networkApi: GatewayApiClient) {\n return networkApi.status.getCurrent().then((status) => status.ledger_state.state_version);\n}\n\nexport const RadixToolbox = async ({ dappConfig }: { dappConfig?: SKConfigIntegrations[\"radix\"] } = {}) => {\n const { RadixDappToolkit } = await import(\"@radixdlt/radix-dapp-toolkit\");\n const { GatewayApiClient } = await import(\"@radixdlt/babylon-gateway-api-sdk\");\n const config = dappConfig || SKConfig.get(\"integrations\").radix;\n\n const radixToolkit = RadixDappToolkit({ ...config, networkId: config.network?.networkId || 1 });\n\n const networkApi = GatewayApiClient.initialize(radixToolkit.gatewayApi.clientConfig);\n\n return {\n getAddress: () => \"\",\n getBalance: getBalance({ networkApi }),\n networkApi,\n signAndBroadcast: (() => {\n throw new SwapKitError(\"toolbox_radix_method_not_supported\", { method: \"signAndBroadcast\" });\n }) as (params: any) => Promise<string>,\n validateAddress: radixValidateAddress,\n };\n};\n",
56
+ "import type {\n FungibleResourcesCollectionItem,\n GatewayApiClient,\n StateEntityDetailsVaultResponseItem,\n StateEntityFungiblesPageRequest,\n StateEntityFungiblesPageResponse,\n} from \"@radixdlt/babylon-gateway-api-sdk\";\nimport { AssetValue, Chain, SKConfig, type SKConfigIntegrations, SwapKitError } from \"@swapkit/helpers\";\n\nexport type RadixWallet = Awaited<ReturnType<typeof RadixToolbox>>;\n\ntype RadixGetBalanceParams = { address: string; networkApi: GatewayApiClient };\n// Could not find anything sync in SDK, ask Radix team\nexport function radixValidateAddress(address: string) {\n return address.startsWith(\"account_rdx1\") && address.length === 66;\n}\n\nfunction getBalance({ networkApi }: { networkApi: GatewayApiClient }) {\n return async function getBalance(address: string) {\n const fungibleResources = await fetchFungibleResources({ address, networkApi });\n const fungibleBalances = await convertResourcesToBalances({ networkApi, resources: fungibleResources });\n\n const hasNativeAsset = fungibleBalances.some((asset) => asset.isGasAsset);\n if (!hasNativeAsset) {\n return [AssetValue.from({ chain: Chain.Radix }), ...fungibleBalances];\n }\n\n return fungibleBalances;\n };\n}\n\nasync function fetchFungibleResources({\n address,\n networkApi,\n}: RadixGetBalanceParams): Promise<FungibleResourcesCollectionItem[]> {\n let hasNextPage = true;\n let nextCursor: string | undefined;\n let fungibleResources: FungibleResourcesCollectionItem[] = [];\n const stateVersion = await currentStateVersion(networkApi);\n while (hasNextPage) {\n const stateEntityFungiblesPageRequest: StateEntityFungiblesPageRequest = {\n address: address,\n at_ledger_state: { state_version: stateVersion },\n cursor: nextCursor,\n limit_per_page: 100,\n };\n\n const stateEntityFungiblesPageResponse: StateEntityFungiblesPageResponse =\n await networkApi.state.innerClient.entityFungiblesPage({\n stateEntityFungiblesPageRequest: stateEntityFungiblesPageRequest,\n });\n\n fungibleResources = fungibleResources.concat(stateEntityFungiblesPageResponse.items);\n if (stateEntityFungiblesPageResponse.next_cursor) {\n nextCursor = stateEntityFungiblesPageResponse.next_cursor;\n } else {\n hasNextPage = false;\n }\n }\n return fungibleResources;\n}\n\nasync function convertResourcesToBalances({\n resources,\n networkApi,\n}: {\n resources: FungibleResourcesCollectionItem[]; //| NonFungibleResourcesCollectionItem[];\n networkApi: GatewayApiClient;\n}): Promise<AssetValue[]> {\n const balances: AssetValue[] = [];\n const BATCH_SIZE = 50;\n\n // Split resources into batches of up to 50 items\n const resourceBatches: FungibleResourcesCollectionItem[][] = [];\n for (let i = 0; i < resources.length; i += BATCH_SIZE) {\n resourceBatches.push(resources.slice(i, i + BATCH_SIZE));\n }\n\n for (const batch of resourceBatches) {\n const addresses = batch.map((item) => item.resource_address);\n const response: StateEntityDetailsVaultResponseItem[] =\n await networkApi.state.getEntityDetailsVaultAggregated(addresses);\n\n const divisibilities = new Map<string, { decimals: number; symbol: string }>();\n\n for (const result of response) {\n if (result.details !== undefined) {\n const metaDataSymbol = result.metadata?.items.find((item) => item.key === \"symbol\");\n const symbol = metaDataSymbol?.value.typed.type === \"String\" ? metaDataSymbol.value.typed.value : \"?\";\n\n if (result.details.type === \"FungibleResource\") {\n divisibilities.set(result.address, { decimals: result.details.divisibility, symbol });\n }\n }\n }\n\n for (const item of batch) {\n if (item.aggregation_level === \"Global\") {\n const assetInfo = divisibilities.get(item.resource_address) || { decimals: 0, symbol: \"?\" };\n\n const balance = AssetValue.from({\n asset:\n assetInfo.symbol !== Chain.Radix\n ? `${Chain.Radix}.${assetInfo.symbol}-${item.resource_address}`\n : \"XRD.XRD\",\n value: item.amount,\n });\n balances.push(balance);\n }\n }\n }\n\n return balances;\n}\n\nfunction currentStateVersion(networkApi: GatewayApiClient) {\n return networkApi.status.getCurrent().then((status) => status.ledger_state.state_version);\n}\n\nexport const RadixToolbox = async ({ dappConfig }: { dappConfig?: SKConfigIntegrations[\"radix\"] } = {}) => {\n const { RadixDappToolkit } = await import(\"@radixdlt/radix-dapp-toolkit\");\n const { GatewayApiClient } = await import(\"@radixdlt/babylon-gateway-api-sdk\");\n const config = dappConfig || SKConfig.get(\"integrations\").radix;\n\n const radixToolkit = RadixDappToolkit({ ...config, networkId: config.network?.networkId || 1 });\n\n const networkApi = GatewayApiClient.initialize(radixToolkit.gatewayApi.clientConfig);\n\n return {\n getAddress: () => \"\",\n getBalance: getBalance({ networkApi }),\n networkApi,\n signAndBroadcast: (() => {\n throw new SwapKitError(\"toolbox_radix_method_not_supported\", { method: \"signAndBroadcast\" });\n }) as (params: any) => Promise<string>,\n validateAddress: radixValidateAddress,\n };\n};\n",
57
57
  "import {\n AssetValue,\n Chain,\n type ChainSigner,\n type GenericTransferParams,\n getChainConfig,\n getRPCUrl,\n SwapKitError,\n SwapKitNumber,\n} from \"@swapkit/helpers\";\nimport type { Transaction } from \"xrpl\";\nimport { Client, isValidAddress, type Payment, Wallet, xrpToDrops } from \"xrpl\";\n\nexport type RippleWallet = Awaited<ReturnType<typeof getRippleToolbox>>;\n\nexport { hashes, type Transaction } from \"xrpl\";\n\nconst RIPPLE_ERROR_CODES = { ACCOUNT_NOT_FOUND: 19 } as const;\n\n// Note: Ripple seeds generate a single address, no derivation path/index support.\nfunction createSigner(phrase: string): ChainSigner<Transaction, { tx_blob: string; hash: string }> {\n const wallet = Wallet.fromMnemonic(phrase);\n return {\n // publicKey: wallet.publicKey,\n // Address is sync, but interface requires async\n getAddress: () => Promise.resolve(wallet.address),\n // Signing is sync, but interface requires async\n signTransaction: (tx: Transaction) => Promise.resolve(wallet.sign(tx as Transaction)), // Cast needed as Wallet.sign expects Transaction\n };\n}\n\nexport function rippleValidateAddress(address: string) {\n return isValidAddress(address);\n}\n\ntype RippleToolboxParams =\n | { phrase?: string }\n | { signer?: ChainSigner<Transaction, { tx_blob: string; hash: string }> };\n\nexport const getRippleToolbox = async (params: RippleToolboxParams = {}) => {\n const signer =\n \"signer\" in params && params.signer\n ? params.signer\n : \"phrase\" in params && params.phrase\n ? createSigner(params.phrase)\n : undefined;\n\n const rpcUrl = await getRPCUrl(Chain.Ripple);\n if (!rpcUrl) {\n throw new SwapKitError({ errorKey: \"toolbox_ripple_rpc_not_configured\", info: { chain: Chain.Ripple } });\n }\n\n const client = new Client(rpcUrl);\n await client.connect();\n\n const getAddress = () => {\n if (!signer) {\n throw new SwapKitError({ errorKey: \"toolbox_ripple_signer_not_found\" });\n }\n return signer.getAddress();\n };\n\n const getBalance = async (address?: string) => {\n const addr = address || (await getAddress());\n const { baseDecimal } = getChainConfig(Chain.Ripple);\n\n try {\n const accountInfo = await client.request({ account: addr, command: \"account_info\" });\n\n const balance = accountInfo.result.account_data.Balance;\n\n return [AssetValue.from({ chain: Chain.Ripple, fromBaseDecimal: baseDecimal, value: balance })];\n } catch (error) {\n // empty account\n if ((error as any).data.error_code === RIPPLE_ERROR_CODES.ACCOUNT_NOT_FOUND) {\n return [AssetValue.from({ chain: Chain.Ripple, value: 0 })];\n }\n throw new SwapKitError(\"toolbox_ripple_get_balance_error\", { info: { address: addr, error } });\n }\n };\n\n const estimateTransactionFee = async () => {\n const feeResponse = await client.request({ command: \"fee\" });\n const feeDrops = feeResponse.result.drops.open_ledger_fee; // Fee in drops\n\n const { baseDecimal } = getChainConfig(Chain.Ripple);\n\n return AssetValue.from({\n chain: Chain.Ripple,\n fromBaseDecimal: baseDecimal,\n value: SwapKitNumber.fromBigInt(BigInt(feeDrops), baseDecimal),\n });\n };\n\n const createTransaction = async ({\n assetValue,\n recipient,\n memo,\n sender,\n }: {\n assetValue: AssetValue;\n recipient: string;\n sender?: string;\n memo?: string;\n }) => {\n if (!rippleValidateAddress(recipient)) {\n throw new SwapKitError({ errorKey: \"core_transaction_invalid_recipient_address\" });\n }\n\n const senderAddress = sender || (await getAddress());\n\n if (!assetValue.isGasAsset || assetValue.chain !== Chain.Ripple) {\n throw new SwapKitError({\n errorKey: \"toolbox_ripple_asset_not_supported\",\n info: { asset: assetValue.toString() },\n });\n }\n\n const transaction: Payment = {\n Account: senderAddress,\n Amount: xrpToDrops(assetValue.getValue(\"string\")),\n Destination: recipient,\n TransactionType: \"Payment\",\n };\n\n if (memo) {\n transaction.Memos = [{ Memo: { MemoData: Buffer.from(memo).toString(\"hex\") } }];\n }\n\n const preparedTx = await client.autofill(transaction);\n return preparedTx;\n };\n\n const signTransaction = (tx: Transaction) => {\n if (!signer) {\n throw new SwapKitError({ errorKey: \"toolbox_ripple_signer_not_found\" });\n }\n return signer.signTransaction(tx);\n };\n\n const broadcastTransaction = async (signedTxHex: string) => {\n const submitResult = await client.submitAndWait(signedTxHex);\n const result = submitResult.result;\n\n if (result.validated) {\n return result.hash;\n }\n\n throw new SwapKitError({ errorKey: \"toolbox_ripple_broadcast_error\", info: { chain: Chain.Ripple } });\n };\n\n const transfer = async (params: GenericTransferParams) => {\n if (!signer) {\n throw new SwapKitError({ errorKey: \"toolbox_ripple_signer_not_found\" });\n }\n const sender = await signer.getAddress();\n const tx = await createTransaction({ ...params, sender });\n const signedTx = await signTransaction(tx);\n return broadcastTransaction(signedTx.tx_blob);\n };\n\n const disconnect = () => client.disconnect();\n\n return {\n broadcastTransaction,\n createSigner, // Expose the helper\n createTransaction,\n disconnect,\n estimateTransactionFee,\n // Core methods\n getAddress,\n getBalance,\n // Signer related\n signer, // Expose the signer instance if created/provided\n signTransaction,\n transfer,\n validateAddress: rippleValidateAddress,\n };\n};\n",
58
- "import type { ApiPromise } from \"@polkadot/api\";\nimport { AssetValue, Chain, SwapKitNumber } from \"@swapkit/helpers\";\n\n/**\n * Get balance for standard Substrate chains (Polkadot, etc.)\n * Uses api.query.system.account to query free and reserved balances\n */\nexport async function getSubstrateBalance(\n api: ApiPromise,\n gasAsset: AssetValue,\n address: string,\n): Promise<AssetValue[]> {\n try {\n const account = await api.query.system?.account?.(address);\n\n if (!account) {\n return [gasAsset.set(0)];\n }\n\n const {\n // @ts-expect-error\n data: { free },\n } = account;\n\n // Convert the free balance to string using SwapKitNumber for proper decimal handling\n const freeBalance = SwapKitNumber.fromBigInt(BigInt(free.toString()), gasAsset.decimal).getValue(\"string\");\n\n return [gasAsset.set(freeBalance)];\n } catch (error) {\n const errorMessage = error instanceof Error ? error.message : String(error);\n console.error(`Error fetching substrate balance: ${errorMessage}`);\n return [];\n }\n}\n\n/**\n * Get balance for Chainflip chain\n * Uses api.query.flip.account to query FLIP balances\n */\nexport async function getChainflipBalance(\n api: ApiPromise,\n gasAsset: AssetValue,\n address: string,\n): Promise<AssetValue[]> {\n try {\n // Chainflip uses a custom flip pallet for account balances\n const flipAccount = await api.query.flip?.account?.(address);\n\n if (!flipAccount) {\n return [gasAsset.set(0)];\n }\n\n // Extract balance from the flip account structure\n // The structure has a balance field directly\n //@ts-expect-error\n const balance = flipAccount.balance || flipAccount.data?.balance;\n\n if (!balance || balance.isEmpty) {\n return [gasAsset.set(0)];\n }\n\n // Convert balance to string using SwapKitNumber\n const balanceStr = SwapKitNumber.fromBigInt(BigInt(balance.toString()), gasAsset.decimal).getValue(\"string\");\n\n return [gasAsset.set(balanceStr)];\n } catch (error) {\n const errorMessage = error instanceof Error ? error.message : String(error);\n console.error(`Error fetching chainflip balance: ${errorMessage}`);\n return [];\n }\n}\n\n/**\n * Factory function to create chain-specific balance getter\n */\nexport function createBalanceGetter(chain: Chain, api: ApiPromise) {\n return function getBalance(address: string): Promise<AssetValue[]> {\n const gasAsset = AssetValue.from({ chain });\n\n switch (chain) {\n case Chain.Chainflip:\n return getChainflipBalance(api, gasAsset, address);\n\n default:\n return getSubstrateBalance(api, gasAsset, address);\n }\n };\n}\n",
58
+ "import type { ApiPromise } from \"@polkadot/api\";\nimport { AssetValue, Chain, SwapKitNumber } from \"@swapkit/helpers\";\n\n/**\n * Get balance for standard Substrate chains (Polkadot, etc.)\n * Uses api.query.system.account to query free and reserved balances\n */\nexport async function getSubstrateBalance(\n api: ApiPromise,\n gasAsset: AssetValue,\n address: string,\n): Promise<AssetValue[]> {\n try {\n const account = await api.query.system?.account?.(address);\n\n if (!account) {\n return [gasAsset.set(0)];\n }\n\n const {\n // @ts-expect-error\n data: { free },\n } = account;\n\n // Convert the free balance to string using SwapKitNumber for proper decimal handling\n const freeBalance = SwapKitNumber.fromBigInt(BigInt(free.toString()), gasAsset.decimal).getValue(\"string\");\n\n return [gasAsset.set(freeBalance)];\n } catch (error) {\n const errorMessage = error instanceof Error ? error.message : String(error);\n console.error(`Error fetching substrate balance: ${errorMessage}`);\n return [gasAsset.set(0)];\n }\n}\n\n/**\n * Get balance for Chainflip chain\n * Uses api.query.flip.account to query FLIP balances\n */\nexport async function getChainflipBalance(\n api: ApiPromise,\n gasAsset: AssetValue,\n address: string,\n): Promise<AssetValue[]> {\n try {\n // Chainflip uses a custom flip pallet for account balances\n const flipAccount = await api.query.flip?.account?.(address);\n\n if (!flipAccount) {\n return [gasAsset.set(0)];\n }\n\n // Extract balance from the flip account structure\n // The structure has a balance field directly\n //@ts-expect-error\n const balance = flipAccount.balance || flipAccount.data?.balance;\n\n if (!balance || balance.isEmpty) {\n return [gasAsset.set(0)];\n }\n\n // Convert balance to string using SwapKitNumber\n const balanceStr = SwapKitNumber.fromBigInt(BigInt(balance.toString()), gasAsset.decimal).getValue(\"string\");\n\n return [gasAsset.set(balanceStr)];\n } catch (error) {\n const errorMessage = error instanceof Error ? error.message : String(error);\n console.error(`Error fetching chainflip balance: ${errorMessage}`);\n return [gasAsset.set(0)];\n }\n}\n\n/**\n * Factory function to create chain-specific balance getter\n */\nexport function createBalanceGetter(chain: Chain, api: ApiPromise) {\n return function getBalance(address: string): Promise<AssetValue[]> {\n const gasAsset = AssetValue.from({ chain });\n\n switch (chain) {\n case Chain.Chainflip:\n return getChainflipBalance(api, gasAsset, address);\n\n default:\n return getSubstrateBalance(api, gasAsset, address);\n }\n };\n}\n",
59
59
  "import type { Signer as InjectedSigner } from \"@polkadot/api/types\";\nimport type { ProviderInterface } from \"@polkadot/rpc-provider/types\";\nimport type { ExtDef } from \"@polkadot/types/extrinsic/signedExtensions/types\";\nimport type { KeypairType } from \"@polkadot/util-crypto/types\";\nimport type { GenericTransferParams, SubstrateChain } from \"@swapkit/helpers\";\n\nconst polkadotNetwork = {\n decimals: [10],\n displayName: \"Polkadot Relay Chain\",\n network: \"polkadot\",\n prefix: 0,\n standardAccount: \"*25519\",\n symbols: [\"DOT\"],\n website: \"https://polkadot.network\",\n};\n\nconst chainflipNetwork = {\n decimals: [18],\n displayName: \"Chainflip\",\n network: \"chainflip\",\n prefix: 2112,\n standardAccount: \"*25519\",\n symbols: [\"FLIP\"],\n website: \"https://chainflip.io/\",\n};\n\nconst subtrateNetwork = {\n decimals: [],\n displayName: \"Substrate\",\n network: \"substrate\",\n prefix: 42,\n standardAccount: \"*25519\",\n symbols: [],\n website: \"https://substrate.io/\",\n};\n\nexport const SubstrateNetwork: Record<SubstrateChain | \"GENERIC\", SubstrateNetwork> = {\n DOT: polkadotNetwork,\n FLIP: chainflipNetwork,\n GENERIC: subtrateNetwork,\n};\n\nexport type SubstrateNetwork = typeof polkadotNetwork | typeof chainflipNetwork | typeof subtrateNetwork;\n\nexport type SubstrateTransferParams = GenericTransferParams & { sender?: string };\n\ntype Unsubcall = () => void;\n\ninterface InjectedAccount {\n address: string;\n genesisHash?: string | null;\n name?: string;\n type?: KeypairType;\n}\n\ninterface InjectedAccounts {\n get: (anyType?: boolean) => Promise<InjectedAccount[]>;\n subscribe: (cb: (accounts: InjectedAccount[]) => void | Promise<void>) => Unsubcall;\n}\ninterface InjectedExtensionInfo {\n name: string;\n version: string;\n}\ninterface ProviderMeta {\n network: string;\n node: \"full\" | \"light\";\n source: string;\n transport: string;\n}\ninterface MetadataDefBase {\n chain: string;\n genesisHash: string;\n icon: string;\n ss58Format: number;\n chainType?: \"substrate\" | \"ethereum\";\n}\ninterface MetadataDef extends MetadataDefBase {\n color?: string;\n specVersion: number;\n tokenDecimals: number;\n tokenSymbol: string;\n types: Record<string, Record<string, string> | string>;\n metaCalls?: string;\n userExtensions?: ExtDef;\n}\ninterface InjectedMetadataKnown {\n genesisHash: string;\n specVersion: number;\n}\ninterface InjectedMetadata {\n get: () => Promise<InjectedMetadataKnown[]>;\n provide: (definition: MetadataDef) => Promise<boolean>;\n}\ntype ProviderList = Record<string, ProviderMeta>;\n\ninterface InjectedProvider extends ProviderInterface {\n listProviders: () => Promise<ProviderList>;\n startProvider: (key: string) => Promise<ProviderMeta>;\n}\n\ntype InjectedWalletData = {\n accounts: InjectedAccounts;\n metadata?: InjectedMetadata;\n provider?: InjectedProvider;\n signer: InjectedSigner;\n};\n\nexport type SubstrateInjectedExtension = Record<\n string,\n {\n connect?: (origin: string) => Promise<InjectedExtensionInfo & InjectedWalletData>;\n enable?: (origin: string) => Promise<InjectedWalletData>;\n version?: string;\n }\n>;\n",
60
60
  "import type { ApiPromise } from \"@polkadot/api\";\nimport type { SubmittableExtrinsic } from \"@polkadot/api/types\";\nimport type { KeyringPair } from \"@polkadot/keyring/types\";\nimport type { Callback, IKeyringPair, ISubmittableResult, Signer } from \"@polkadot/types/types\";\nimport { hexToU8a, isHex, u8aToHex } from \"@polkadot/util\";\nimport { decodeAddress as decodePolkadotAddress, encodeAddress as encodePolkadotAddress } from \"@polkadot/util-crypto\";\nimport {\n AssetValue,\n Chain,\n type DerivationPathArray,\n type GenericCreateTransactionParams,\n getRPCUrl,\n type SubstrateChain,\n SwapKitError,\n SwapKitNumber,\n} from \"@swapkit/helpers\";\n\nimport { match, P } from \"ts-pattern\";\nimport { createBalanceGetter } from \"./balance\";\nimport { SubstrateNetwork, type SubstrateTransferParams } from \"./types\";\n\nexport const PolkadotToolbox = ({ generic = false, ...signerParams }: ToolboxParams = {}) => {\n return createSubstrateToolbox({ chain: Chain.Polkadot, generic, ...signerParams });\n};\n\nexport const ChainflipToolbox = async ({ generic = false, ...signerParams }: ToolboxParams = {}) => {\n const toolbox = await createSubstrateToolbox({ chain: Chain.Chainflip, generic, ...signerParams });\n\n return { ...toolbox };\n};\n\nexport type SubstrateToolboxes = {\n DOT: Awaited<ReturnType<typeof PolkadotToolbox>>;\n FLIP: Awaited<ReturnType<typeof ChainflipToolbox>>;\n};\n\nexport function getSubstrateToolbox<T extends SubstrateChain>(chain: T, params?: ToolboxParams) {\n switch (chain) {\n case Chain.Chainflip: {\n return ChainflipToolbox(params);\n }\n case Chain.Polkadot: {\n return PolkadotToolbox(params);\n }\n default:\n throw new SwapKitError(\"toolbox_substrate_not_supported\", { chain });\n }\n}\n\nexport function isKeyringPair(account: IKeyringPair | Signer): account is IKeyringPair {\n return \"address\" in account;\n}\n\nexport async function createKeyring(phrase: string, networkPrefix: number) {\n const { Keyring } = await import(\"@polkadot/api\");\n const { cryptoWaitReady } = await import(\"@polkadot/util-crypto\");\n await cryptoWaitReady();\n\n return new Keyring({ ss58Format: networkPrefix, type: \"sr25519\" }).addFromUri(phrase);\n}\n\nconst getNonce = (api: ApiPromise, address: string) => api.rpc.system.accountNextIndex(address);\n\nconst validateAddress = (address: string, networkPrefix: number) => {\n try {\n const decodedAddress = decodeAddress(address, networkPrefix);\n\n encodeAddress(decodedAddress, \"ss58\", networkPrefix);\n\n return true;\n } catch {\n return false;\n }\n};\n\nconst createTransaction = (api: ApiPromise, { recipient, assetValue }: SubstrateTransferParams) =>\n api.tx.balances?.transferAllowDeath?.(recipient, assetValue.getBaseValue(\"number\"));\n\nconst transfer = async (\n api: ApiPromise,\n signer: IKeyringPair | Signer,\n { recipient, assetValue, sender }: SubstrateTransferParams,\n) => {\n const transfer = createTransaction(api, { assetValue, recipient });\n if (!transfer) throw new SwapKitError(\"toolbox_substrate_transfer_error\");\n\n const isKeyring = isKeyringPair(signer);\n\n const address = isKeyring ? (signer as IKeyringPair).address : sender;\n if (!address) throw new SwapKitError(\"core_transaction_invalid_sender_address\");\n\n const nonce = await getNonce(api, address);\n\n const tx = await transfer.signAndSend(isKeyring ? signer : address, {\n nonce,\n signer: isKeyring ? undefined : signer,\n });\n\n return tx.toString();\n};\n\nconst estimateTransactionFee = async (\n api: ApiPromise,\n signer: IKeyringPair | Signer,\n gasAsset: AssetValue,\n { recipient, assetValue, sender }: SubstrateTransferParams,\n) => {\n const transfer = createTransaction(api, { assetValue, recipient });\n\n const address = isKeyringPair(signer) ? signer.address : sender;\n if (!address) return;\n\n const paymentInfo = (await transfer?.paymentInfo(address, { nonce: await getNonce(api, address) })) || {\n partialFee: 0,\n };\n return gasAsset.set(\n SwapKitNumber.fromBigInt(BigInt(paymentInfo.partialFee.toString()), gasAsset.decimal).getValue(\"string\"),\n );\n};\n\nconst broadcast = async (tx: SubmittableExtrinsic<\"promise\">, callback?: Callback<ISubmittableResult>) => {\n if (callback) return tx.send(callback);\n const hash = await tx.send();\n return hash.toString();\n};\n\nconst sign = async (signer: IKeyringPair, tx: SubmittableExtrinsic<\"promise\">) => {\n const signedTx = await tx.signAsync(signer);\n return signedTx;\n};\n\nconst signAndBroadcastKeyring = (\n signer: IKeyringPair,\n tx: SubmittableExtrinsic<\"promise\">,\n callback?: Callback<ISubmittableResult>,\n) => {\n if (callback) return tx.signAndSend(signer, callback);\n const hash = tx.signAndSend(signer);\n return hash.toString();\n};\n\nconst signAndBroadcast = async ({\n signer,\n address,\n tx,\n callback,\n api,\n}: {\n signer: Signer;\n address: string;\n tx: SubmittableExtrinsic<\"promise\">;\n api: ApiPromise;\n callback?: Callback<ISubmittableResult>;\n}) => {\n const nonce = await getNonce(api, address);\n if (callback) {\n tx.signAndSend(address, { nonce, signer }, callback);\n }\n const hash = tx.signAndSend(address, { nonce, signer });\n return hash.toString();\n};\n\nfunction convertAddress(address: string, newPrefix: number) {\n const decodedAddress = decodePolkadotAddress(address);\n const convertedAddress = encodePolkadotAddress(decodedAddress, newPrefix);\n return convertedAddress;\n}\n\nfunction decodeAddress(address: string, networkPrefix?: number) {\n return isHex(address) ? hexToU8a(address) : decodePolkadotAddress(address, undefined, networkPrefix);\n}\n\nfunction encodeAddress(address: Uint8Array, encoding: \"ss58\" | \"hex\" = \"ss58\", networkPrefix?: number) {\n if (encoding === \"hex\") {\n return u8aToHex(address);\n }\n\n return encodePolkadotAddress(address, networkPrefix);\n}\n\nexport const BaseSubstrateToolbox = ({\n api,\n network,\n gasAsset,\n signer,\n chain,\n}: {\n api: ApiPromise;\n network: SubstrateNetwork;\n gasAsset: AssetValue;\n signer?: IKeyringPair | Signer;\n chain?: SubstrateChain;\n}) => ({\n api,\n broadcast,\n convertAddress,\n createKeyring: (phrase: string) => createKeyring(phrase, network.prefix),\n createTransaction: (params: GenericCreateTransactionParams) => createTransaction(api, params),\n decodeAddress,\n encodeAddress,\n estimateTransactionFee: (params: SubstrateTransferParams) => {\n if (!signer) throw new SwapKitError(\"core_wallet_not_keypair_wallet\");\n return estimateTransactionFee(api, signer, gasAsset, params);\n },\n gasAsset,\n getAddress: (keyring?: IKeyringPair | Signer) => {\n const keyringPair = keyring || signer;\n if (!keyringPair) throw new SwapKitError(\"core_wallet_not_keypair_wallet\");\n\n return isKeyringPair(keyringPair) ? keyringPair.address : undefined;\n },\n getBalance: createBalanceGetter(chain || Chain.Polkadot, api),\n network,\n sign: (tx: SubmittableExtrinsic<\"promise\">) => {\n if (!signer) throw new SwapKitError(\"core_wallet_not_keypair_wallet\");\n if (isKeyringPair(signer)) return sign(signer, tx);\n\n throw new SwapKitError(\n \"core_wallet_not_keypair_wallet\",\n \"Signer does not have keyring pair capabilities required for signing.\",\n );\n },\n signAndBroadcast: ({\n tx,\n callback,\n address,\n }: {\n tx: SubmittableExtrinsic<\"promise\">;\n callback?: Callback<ISubmittableResult>;\n address?: string;\n }) => {\n if (!signer) throw new SwapKitError(\"core_wallet_not_keypair_wallet\");\n if (isKeyringPair(signer)) return signAndBroadcastKeyring(signer, tx, callback);\n\n if (address) {\n return signAndBroadcast({ address, api, callback, signer, tx });\n }\n\n throw new SwapKitError(\n \"core_wallet_not_keypair_wallet\",\n \"Signer does not have keyring pair capabilities required for signing.\",\n );\n },\n transfer: (params: SubstrateTransferParams) => {\n if (!signer) throw new SwapKitError(\"core_wallet_not_keypair_wallet\");\n return transfer(api, signer, params);\n },\n validateAddress: (address: string) => validateAddress(address, network.prefix),\n});\n\nexport const substrateValidateAddress = ({ address, chain }: { address: string; chain: SubstrateChain }) => {\n const { prefix } = chain === Chain.Polkadot ? SubstrateNetwork.DOT : SubstrateNetwork.FLIP;\n\n return validateAddress(address, prefix) || validateAddress(address, SubstrateNetwork.GENERIC.prefix);\n};\n\nexport async function createSubstrateToolbox({\n generic,\n chain,\n ...signerParams\n}: ToolboxParams & { chain: SubstrateChain }) {\n const { ApiPromise, WsProvider } = await import(\"@polkadot/api\");\n\n const rpcUrl = await getRPCUrl(chain);\n const provider = new WsProvider(rpcUrl);\n const api = await ApiPromise.create({ noInitWarn: true, provider });\n const gasAsset = AssetValue.from({ chain });\n const network = generic ? SubstrateNetwork.GENERIC : SubstrateNetwork[chain];\n\n const signer = await match(signerParams)\n .with({ phrase: P.string }, ({ phrase }) => createKeyring(phrase, SubstrateNetwork[chain].prefix))\n .with({ signer: P.any }, ({ signer }) => signer)\n .otherwise(() => undefined);\n\n return BaseSubstrateToolbox({ api, chain, gasAsset, network, signer });\n}\n\nexport type ToolboxParams = { generic?: boolean } & (\n | { signer?: KeyringPair | Signer }\n | { phrase?: string; derivationPath?: DerivationPathArray; index?: number }\n);\n",
61
61
  "export * from \"./substrate\";\nexport * from \"./types\";\n",
62
62
  "import {\n AssetValue,\n Chain,\n type CosmosChain,\n CosmosChains,\n type EVMChain,\n EVMChains,\n FeeOption,\n type GenericCreateTransactionParams,\n type SubstrateChain,\n SubstrateChains,\n SwapKitError,\n type UTXOChain,\n UTXOChains,\n} from \"@swapkit/helpers\";\nimport type { getCardanoToolbox } from \"./cardano\";\nimport type { getCosmosToolbox } from \"./cosmos\";\nimport type { ETHToolbox, EVMCreateTransactionParams, getEvmToolbox } from \"./evm\";\nimport type { getNearToolbox } from \"./near\";\nimport type { RadixToolbox } from \"./radix\";\nimport type { getRippleToolbox } from \"./ripple\";\nimport type { getSolanaToolbox, SolanaCreateTransactionParams } from \"./solana\";\nimport type { getSubstrateToolbox } from \"./substrate\";\nimport type { getSuiToolbox, SuiCreateTransactionParams } from \"./sui\";\nimport type { getTONToolbox } from \"./ton\";\nimport type { createTronToolbox } from \"./tron\";\nimport type { getUtxoToolbox } from \"./utxo\";\n\nexport * from \"./types\";\n\nexport async function getAddressValidator() {\n const { match } = await import(\"ts-pattern\");\n const { evmValidateAddress } = await import(\"./evm\");\n const { getCardanoAddressValidator } = await import(\"./cardano\");\n const { getCosmosValidateAddress } = await import(\"./cosmos\");\n const { getSolanaAddressValidator } = await import(\"./solana\");\n const { getSuiAddressValidator } = await import(\"./sui\");\n const { getTONAddressValidator } = await import(\"./ton\");\n const { getTronAddressValidator } = await import(\"./tron\");\n const { getUTXOAddressValidator } = await import(\"./utxo\");\n const { getValidateNearAddress } = await import(\"./near\");\n const { radixValidateAddress } = await import(\"./radix\");\n const { rippleValidateAddress } = await import(\"./ripple\");\n const { substrateValidateAddress } = await import(\"./substrate\");\n\n const cardanoValidateAddress = await getCardanoAddressValidator();\n const nearValidateAddress = await getValidateNearAddress();\n const solanaValidateAddress = await getSolanaAddressValidator();\n const suiValidateAddress = await getSuiAddressValidator();\n const tonValidateAddress = await getTONAddressValidator();\n const tronValidateAddress = await getTronAddressValidator();\n const utxoValidateAddress = await getUTXOAddressValidator();\n\n return function validateAddress({ address, chain }: { address: string; chain: Chain }) {\n const isValid = match(chain)\n .with(...EVMChains, () => evmValidateAddress({ address }))\n .with(...UTXOChains, () => utxoValidateAddress({ address, chain: chain as UTXOChain }))\n .with(Chain.Cosmos, Chain.Kujira, Chain.Noble, Chain.Maya, Chain.THORChain, (chain) => {\n const cosmosValidateAddress = getCosmosValidateAddress(chain);\n return cosmosValidateAddress(address);\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, () => nearValidateAddress(address))\n .with(Chain.Ripple, () => rippleValidateAddress(address))\n .with(Chain.Solana, () => solanaValidateAddress(address))\n .with(Chain.Sui, () => suiValidateAddress(address))\n .with(Chain.Ton, () => tonValidateAddress(address))\n .with(Chain.Tron, () => tronValidateAddress(address))\n .with(Chain.Cardano, () => cardanoValidateAddress(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(...EVMChains, 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 chain,\n feeOption: params.feeOptionKey || FeeOption.Fast,\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 Chain.Cardano,\n async (chain) => {\n const toolbox = await getToolbox(chain);\n return toolbox.estimateTransactionFee(params) as Promise<AssetValue>;\n },\n )\n .with(Chain.Sui, async () => {\n const { getSuiToolbox } = await import(\"./sui\");\n const suiToolbox = await getSuiToolbox();\n return suiToolbox.estimateTransactionFee(params as SuiCreateTransactionParams);\n })\n .with(Chain.Ton, async () => {\n const { getTONToolbox } = await import(\"./ton\");\n const tonToolbox = await getTONToolbox();\n return tonToolbox.estimateTransactionFee();\n })\n .with(...CosmosChains, async () => {\n const { estimateTransactionFee } = await import(\"./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.Sui]: Awaited<ReturnType<typeof getSuiToolbox>>;\n [Chain.Ton]: Awaited<ReturnType<typeof getTONToolbox>>;\n [Chain.Tron]: Awaited<ReturnType<typeof createTronToolbox>>;\n [Chain.Cardano]: Awaited<ReturnType<typeof getCardanoToolbox>>;\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.Sui]: Parameters<typeof getSuiToolbox>[0];\n [Chain.Ton]: Parameters<typeof getTONToolbox>[0];\n [Chain.Tron]: Parameters<typeof createTronToolbox>[0];\n [Chain.Cardano]: Parameters<typeof getCardanoToolbox>[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.Sui]: SuiCreateTransactionParams;\n [Chain.Ton]: GenericCreateTransactionParams;\n [Chain.Tron]: GenericCreateTransactionParams;\n [Chain.Cardano]: 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(...EVMChains, async () => {\n const { getEvmToolbox } = await import(\"./evm/toolbox\");\n const evmToolbox = await getEvmToolbox(chain as EVMChain, params as Parameters<typeof getEvmToolbox>[1]);\n return evmToolbox as Toolboxes[T];\n })\n .with(...UTXOChains, async () => {\n const { getUtxoToolbox } = await import(\"./utxo\");\n const utxoToolbox = await getUtxoToolbox(chain as UTXOChain, params as Parameters<typeof getUtxoToolbox>[1]);\n return utxoToolbox as Toolboxes[T];\n })\n .with(...CosmosChains, async () => {\n const { getCosmosToolbox } = await import(\"./cosmos\");\n const cosmosToolbox = await getCosmosToolbox(\n chain as Exclude<CosmosChain, Chain.Harbor>,\n params as Parameters<typeof getCosmosToolbox>[1],\n );\n return cosmosToolbox as Toolboxes[T];\n })\n .with(...SubstrateChains, async () => {\n const { getSubstrateToolbox } = await import(\"./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(\"./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(\"./ripple\");\n const rippleToolbox = await getRippleToolbox(params as Parameters<typeof getRippleToolbox>[0]);\n return rippleToolbox as Toolboxes[T];\n })\n .with(Chain.Solana, async () => {\n const { getSolanaToolbox } = await import(\"./solana\");\n const solanaToolbox = await getSolanaToolbox(params as Parameters<typeof getSolanaToolbox>[0]);\n return solanaToolbox as Toolboxes[T];\n })\n .with(Chain.Sui, async () => {\n const { getSuiToolbox } = await import(\"./sui\");\n const suiToolbox = await getSuiToolbox(params as Parameters<typeof getSuiToolbox>[0]);\n return suiToolbox as Toolboxes[T];\n })\n .with(Chain.Tron, async () => {\n const { createTronToolbox } = await import(\"./tron\");\n const tronToolbox = await createTronToolbox(params as Parameters<typeof createTronToolbox>[0]);\n return tronToolbox as Toolboxes[T];\n })\n .with(Chain.Near, async () => {\n const { getNearToolbox } = await import(\"./near\");\n const nearToolbox = await getNearToolbox(params as Parameters<typeof getNearToolbox>[0]);\n return nearToolbox as Toolboxes[T];\n })\n .with(Chain.Cardano, async () => {\n const { getCardanoToolbox } = await import(\"./cardano\");\n const cardanoToolbox = await getCardanoToolbox(params as Parameters<typeof getCardanoToolbox>[0]);\n return cardanoToolbox as Toolboxes[T];\n })\n .with(Chain.Ton, async () => {\n const { getTONToolbox } = await import(\"./ton\");\n const tonToolbox = await getTONToolbox(params as Parameters<typeof getTONToolbox>[0]);\n return tonToolbox as Toolboxes[T];\n })\n .otherwise(() => {\n throw new SwapKitError(\"toolbox_not_supported\", { chain });\n });\n}\n"
63
63
  ],
64
- "mappings": "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",
65
- "debugId": "35B95238F0099B7164756E2164756E21",
64
+ "mappings": "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",
65
+ "debugId": "3B2C05ACE1C7EE3264756E2164756E21",
66
66
  "names": []
67
67
  }