@swapkit/toolboxes 1.0.0-beta.19 → 1.0.0-beta.20

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 (54) hide show
  1. package/dist/{chunk-vhc011em.js → chunk-12xtvbsp.js} +3 -3
  2. package/dist/{chunk-vhc011em.js.map → chunk-12xtvbsp.js.map} +1 -1
  3. package/dist/{chunk-cv69ewns.js → chunk-9bqegm61.js} +1 -1
  4. package/dist/chunk-kbnwrc5b.js +4 -0
  5. package/dist/chunk-kbnwrc5b.js.map +10 -0
  6. package/dist/{chunk-38ztynv0.js → chunk-s47y8512.js} +2 -2
  7. package/dist/{chunk-38ztynv0.js.map → chunk-s47y8512.js.map} +1 -1
  8. package/dist/chunk-vtd17cje.js +3 -0
  9. package/dist/chunk-vtd17cje.js.map +10 -0
  10. package/dist/src/cosmos/index.cjs +2 -2
  11. package/dist/src/cosmos/index.cjs.map +3 -3
  12. package/dist/src/cosmos/index.js +2 -2
  13. package/dist/src/cosmos/index.js.map +3 -3
  14. package/dist/src/evm/index.cjs +2 -2
  15. package/dist/src/evm/index.cjs.map +3 -3
  16. package/dist/src/evm/index.js +2 -2
  17. package/dist/src/evm/index.js.map +3 -3
  18. package/dist/src/index.cjs +2 -2
  19. package/dist/src/index.cjs.map +3 -3
  20. package/dist/src/index.js +2 -2
  21. package/dist/src/index.js.map +3 -3
  22. package/dist/src/near/index.cjs +3 -0
  23. package/dist/src/near/index.cjs.map +13 -0
  24. package/dist/src/near/index.js +3 -0
  25. package/dist/src/near/index.js.map +13 -0
  26. package/dist/src/radix/index.js +2 -2
  27. package/dist/src/radix/index.js.map +1 -1
  28. package/dist/src/ripple/index.js +1 -1
  29. package/dist/src/solana/index.js +2 -2
  30. package/dist/src/solana/index.js.map +1 -1
  31. package/dist/src/substrate/index.js +2 -2
  32. package/dist/src/substrate/index.js.map +1 -1
  33. package/dist/src/tron/index.js +2 -2
  34. package/dist/src/tron/index.js.map +1 -1
  35. package/dist/src/utxo/index.cjs +2 -2
  36. package/dist/src/utxo/index.cjs.map +3 -3
  37. package/dist/src/utxo/index.js +2 -2
  38. package/dist/src/utxo/index.js.map +3 -3
  39. package/package.json +10 -2
  40. package/src/cosmos/toolbox/cosmos.ts +9 -2
  41. package/src/evm/toolbox/baseEVMToolbox.ts +19 -12
  42. package/src/index.ts +12 -0
  43. package/src/near/helpers/contractFactory.ts +22 -0
  44. package/src/near/helpers/core.ts +86 -0
  45. package/src/near/helpers/gasEstimation.ts +110 -0
  46. package/src/near/helpers/index.ts +5 -0
  47. package/src/near/helpers/nep141.ts +110 -0
  48. package/src/near/index.ts +24 -0
  49. package/src/near/toolbox.ts +497 -0
  50. package/src/near/types/contract.ts +48 -0
  51. package/src/near/types/nep141.ts +66 -0
  52. package/src/near/types.ts +58 -0
  53. package/src/utxo/toolbox/utxo.ts +3 -2
  54. /package/dist/{chunk-cv69ewns.js.map → chunk-9bqegm61.js.map} +0 -0
@@ -2,9 +2,9 @@
2
2
  "version": 3,
3
3
  "sources": ["../src/index.ts"],
4
4
  "sourcesContent": [
5
- "import {\n AssetValue,\n Chain,\n type CosmosChain,\n type EVMChain,\n FeeOption,\n type GenericCreateTransactionParams,\n type SubstrateChain,\n SwapKitError,\n type UTXOChain,\n} from \"@swapkit/helpers\";\nimport type { getCosmosToolbox } from \"@swapkit/toolboxes/cosmos\";\n\nimport type { ETHToolbox, EVMCreateTransactionParams, getEvmToolbox } from \"@swapkit/toolboxes/evm\";\nimport type { RadixToolbox } from \"@swapkit/toolboxes/radix\";\nimport type { getRippleToolbox } from \"@swapkit/toolboxes/ripple\";\nimport type { SolanaCreateTransactionParams, getSolanaToolbox } from \"@swapkit/toolboxes/solana\";\nimport type { getSubstrateToolbox } from \"@swapkit/toolboxes/substrate\";\nimport type { createTronToolbox } from \"@swapkit/toolboxes/tron\";\nimport type { getUtxoToolbox } from \"@swapkit/toolboxes/utxo\";\n\nexport async function getAddressValidator() {\n const { match } = await import(\"ts-pattern\");\n const { cosmosValidateAddress } = await import(\"@swapkit/toolboxes/cosmos\");\n const { evmValidateAddress } = await import(\"@swapkit/toolboxes/evm\");\n const { substrateValidateAddress } = await import(\"@swapkit/toolboxes/substrate\");\n const { getUTXOAddressValidator } = await import(\"@swapkit/toolboxes/utxo\");\n const { getSolanaAddressValidator } = await import(\"@swapkit/toolboxes/solana\");\n const { rippleValidateAddress } = await import(\"@swapkit/toolboxes/ripple\");\n const { radixValidateAddress } = await import(\"@swapkit/toolboxes/radix\");\n const { getTronAddressValidator } = await import(\"@swapkit/toolboxes/tron\");\n\n const solanaValidateAddress = await getSolanaAddressValidator();\n const utxoValidateAddress = await getUTXOAddressValidator();\n const tronValidateAddress = await getTronAddressValidator();\n\n return function validateAddress({ address, chain }: { address: string; chain: Chain }) {\n const isValid = match(chain)\n .with(\n Chain.Arbitrum,\n Chain.Avalanche,\n Chain.Optimism,\n Chain.BinanceSmartChain,\n Chain.Base,\n Chain.Polygon,\n Chain.Ethereum,\n () => evmValidateAddress({ address }),\n )\n .with(Chain.Litecoin, Chain.Dash, Chain.Dogecoin, Chain.BitcoinCash, Chain.Bitcoin, () =>\n utxoValidateAddress({ address, chain: chain as UTXOChain }),\n )\n .with(Chain.Cosmos, Chain.Kujira, Chain.Maya, Chain.THORChain, () =>\n cosmosValidateAddress({ address, chain: chain as CosmosChain }),\n )\n .with(Chain.Chainflip, Chain.Polkadot, () =>\n substrateValidateAddress({ address, chain: chain as SubstrateChain }),\n )\n .with(Chain.Radix, () => radixValidateAddress(address))\n .with(Chain.Ripple, () => rippleValidateAddress(address))\n .with(Chain.Solana, () => solanaValidateAddress(address))\n .with(Chain.Tron, () => tronValidateAddress(address))\n .otherwise(() => false);\n\n return isValid;\n };\n}\n\nexport function getFeeEstimator<T extends keyof CreateTransactionParams>(chain: T) {\n return async function estimateFee(params: CreateTransactionParams[T]) {\n const { match } = await import(\"ts-pattern\");\n\n return match(chain as Chain)\n .returnType<Promise<AssetValue>>()\n .with(\n Chain.Arbitrum,\n Chain.Avalanche,\n Chain.Optimism,\n Chain.BinanceSmartChain,\n Chain.Base,\n Chain.Polygon,\n Chain.Ethereum,\n async (chain) => {\n const toolbox = await getToolbox(chain);\n const txObject = await toolbox.createTransaction(params);\n\n return (toolbox as Awaited<ReturnType<typeof ETHToolbox>>).estimateTransactionFee({\n ...txObject,\n feeOption: params.feeOptionKey || FeeOption.Fast,\n chain,\n });\n },\n )\n .with(\n Chain.Bitcoin,\n Chain.BitcoinCash,\n Chain.Dogecoin,\n Chain.Dash,\n Chain.Litecoin,\n Chain.Polkadot,\n Chain.Solana,\n Chain.Ripple,\n Chain.Tron,\n async (chain) => {\n const toolbox = await getToolbox(chain);\n return toolbox.estimateTransactionFee(params) as Promise<AssetValue>;\n },\n )\n .with(Chain.THORChain, Chain.Maya, Chain.Kujira, Chain.Cosmos, async () => {\n const { estimateTransactionFee } = await import(\"@swapkit/toolboxes/cosmos\");\n return estimateTransactionFee(params);\n })\n .otherwise(async () => AssetValue.from({ chain }));\n };\n}\n\ntype Toolboxes = {\n [key in EVMChain]: Awaited<ReturnType<typeof getEvmToolbox>>;\n} & {\n [key in UTXOChain]: Awaited<ReturnType<typeof getUtxoToolbox>>;\n} & {\n [key in CosmosChain]: Awaited<ReturnType<typeof getCosmosToolbox>>;\n} & {\n [key in SubstrateChain]: Awaited<ReturnType<typeof getSubstrateToolbox>>;\n} & {\n [Chain.Radix]: Awaited<ReturnType<typeof RadixToolbox>>;\n [Chain.Ripple]: Awaited<ReturnType<typeof getRippleToolbox>>;\n [Chain.Solana]: Awaited<ReturnType<typeof getSolanaToolbox>>;\n [Chain.Tron]: Awaited<ReturnType<typeof createTronToolbox>>;\n};\n\ntype ToolboxParams = { [key in EVMChain]: Parameters<typeof getEvmToolbox>[1] } & {\n [key in UTXOChain]: undefined;\n} & {\n [key in CosmosChain]: Parameters<typeof getCosmosToolbox>[1];\n} & {\n [key in SubstrateChain]: Parameters<typeof getSubstrateToolbox>[1];\n} & {\n [Chain.Radix]: Parameters<typeof RadixToolbox>[0];\n [Chain.Ripple]: Parameters<typeof getRippleToolbox>[0];\n [Chain.Solana]: Parameters<typeof getSolanaToolbox>[0];\n [Chain.Tron]: Parameters<typeof createTronToolbox>[0];\n};\n\ntype CreateTransactionParams = { [key in EVMChain]: EVMCreateTransactionParams } & {\n [key in UTXOChain]: GenericCreateTransactionParams;\n} & {\n [key in CosmosChain]: GenericCreateTransactionParams;\n} & {\n [key in SubstrateChain]: GenericCreateTransactionParams;\n} & {\n [Chain.Radix]: GenericCreateTransactionParams;\n [Chain.Ripple]: GenericCreateTransactionParams;\n [Chain.Solana]: SolanaCreateTransactionParams;\n [Chain.Tron]: GenericCreateTransactionParams;\n};\n\nexport async function getToolbox<T extends keyof Toolboxes>(\n chain: T,\n params?: ToolboxParams[T],\n): Promise<Toolboxes[T]> {\n const { match } = await import(\"ts-pattern\");\n\n return match(chain as Chain)\n .returnType<Promise<Toolboxes[T]>>()\n .with(\n Chain.Arbitrum,\n Chain.Avalanche,\n Chain.Optimism,\n Chain.BinanceSmartChain,\n Chain.Base,\n Chain.Polygon,\n Chain.Ethereum,\n async () => {\n const { getEvmToolbox } = await import(\"@swapkit/toolboxes/evm\");\n const evmToolbox = await getEvmToolbox(\n chain as EVMChain,\n params as Parameters<typeof getEvmToolbox>[1],\n );\n return evmToolbox as Toolboxes[T];\n },\n )\n .with(\n Chain.Litecoin,\n Chain.Dash,\n Chain.Dogecoin,\n Chain.BitcoinCash,\n Chain.Bitcoin,\n async () => {\n const { getUtxoToolbox } = await import(\"@swapkit/toolboxes/utxo\");\n const utxoToolbox = await getUtxoToolbox(\n chain as UTXOChain,\n params as Parameters<typeof getUtxoToolbox>[1],\n );\n return utxoToolbox as Toolboxes[T];\n },\n )\n .with(Chain.Cosmos, Chain.Kujira, Chain.Maya, Chain.THORChain, async () => {\n const { getCosmosToolbox } = await import(\"@swapkit/toolboxes/cosmos\");\n const cosmosToolbox = await getCosmosToolbox(\n chain as CosmosChain,\n params as Parameters<typeof getCosmosToolbox>[1],\n );\n return cosmosToolbox as Toolboxes[T];\n })\n .with(Chain.Chainflip, Chain.Polkadot, async () => {\n const { getSubstrateToolbox } = await import(\"@swapkit/toolboxes/substrate\");\n const substrateToolbox = await getSubstrateToolbox(\n chain as SubstrateChain,\n params as Parameters<typeof getSubstrateToolbox>[1],\n );\n return substrateToolbox as Toolboxes[T];\n })\n .with(Chain.Radix, async () => {\n const { RadixToolbox } = await import(\"@swapkit/toolboxes/radix\");\n const radixToolbox = await RadixToolbox(params as Parameters<typeof RadixToolbox>[0]);\n return radixToolbox as Toolboxes[T];\n })\n .with(Chain.Ripple, async () => {\n const { getRippleToolbox } = await import(\"@swapkit/toolboxes/ripple\");\n const rippleToolbox = await getRippleToolbox(\n params as Parameters<typeof getRippleToolbox>[0],\n );\n return rippleToolbox as Toolboxes[T];\n })\n .with(Chain.Solana, async () => {\n const { getSolanaToolbox } = await import(\"@swapkit/toolboxes/solana\");\n const solanaToolbox = await getSolanaToolbox(\n params as Parameters<typeof getSolanaToolbox>[0],\n );\n return solanaToolbox as Toolboxes[T];\n })\n .with(Chain.Tron, async () => {\n const { createTronToolbox } = await import(\"@swapkit/toolboxes/tron\");\n const tronToolbox = await createTronToolbox(params);\n return tronToolbox as Toolboxes[T];\n })\n .otherwise(() => {\n throw new SwapKitError(\"toolbox_not_supported\", { chain });\n });\n}\n"
5
+ "import {\n AssetValue,\n Chain,\n type CosmosChain,\n type EVMChain,\n FeeOption,\n type GenericCreateTransactionParams,\n type SubstrateChain,\n SwapKitError,\n type UTXOChain,\n} from \"@swapkit/helpers\";\nimport type { getCosmosToolbox } from \"@swapkit/toolboxes/cosmos\";\n\nimport type { ETHToolbox, EVMCreateTransactionParams, getEvmToolbox } from \"@swapkit/toolboxes/evm\";\nimport type { getNearToolbox } from \"@swapkit/toolboxes/near\";\nimport type { RadixToolbox } from \"@swapkit/toolboxes/radix\";\nimport type { getRippleToolbox } from \"@swapkit/toolboxes/ripple\";\nimport type { SolanaCreateTransactionParams, getSolanaToolbox } from \"@swapkit/toolboxes/solana\";\nimport type { getSubstrateToolbox } from \"@swapkit/toolboxes/substrate\";\nimport type { createTronToolbox } from \"@swapkit/toolboxes/tron\";\nimport type { getUtxoToolbox } from \"@swapkit/toolboxes/utxo\";\n\nexport async function getAddressValidator() {\n const { match } = await import(\"ts-pattern\");\n const { cosmosValidateAddress } = await import(\"@swapkit/toolboxes/cosmos\");\n const { evmValidateAddress } = await import(\"@swapkit/toolboxes/evm\");\n const { substrateValidateAddress } = await import(\"@swapkit/toolboxes/substrate\");\n const { getUTXOAddressValidator } = await import(\"@swapkit/toolboxes/utxo\");\n const { getSolanaAddressValidator } = await import(\"@swapkit/toolboxes/solana\");\n const { validateNearAddress } = await import(\"@swapkit/toolboxes/near\");\n const { rippleValidateAddress } = await import(\"@swapkit/toolboxes/ripple\");\n const { radixValidateAddress } = await import(\"@swapkit/toolboxes/radix\");\n const { getTronAddressValidator } = await import(\"@swapkit/toolboxes/tron\");\n\n const solanaValidateAddress = await getSolanaAddressValidator();\n const utxoValidateAddress = await getUTXOAddressValidator();\n const tronValidateAddress = await getTronAddressValidator();\n\n return function validateAddress({ address, chain }: { address: string; chain: Chain }) {\n const isValid = match(chain)\n .with(\n Chain.Arbitrum,\n Chain.Avalanche,\n Chain.Optimism,\n Chain.BinanceSmartChain,\n Chain.Base,\n Chain.Polygon,\n Chain.Ethereum,\n () => evmValidateAddress({ address }),\n )\n .with(Chain.Litecoin, Chain.Dash, Chain.Dogecoin, Chain.BitcoinCash, Chain.Bitcoin, () =>\n utxoValidateAddress({ address, chain: chain as UTXOChain }),\n )\n .with(Chain.Cosmos, Chain.Kujira, Chain.Maya, Chain.THORChain, () =>\n cosmosValidateAddress({ address, chain: chain as CosmosChain }),\n )\n .with(Chain.Chainflip, Chain.Polkadot, () =>\n substrateValidateAddress({ address, chain: chain as SubstrateChain }),\n )\n .with(Chain.Radix, () => radixValidateAddress(address))\n .with(Chain.Near, () => validateNearAddress(address))\n .with(Chain.Ripple, () => rippleValidateAddress(address))\n .with(Chain.Solana, () => solanaValidateAddress(address))\n .with(Chain.Tron, () => tronValidateAddress(address))\n .otherwise(() => false);\n\n return isValid;\n };\n}\n\nexport function getFeeEstimator<T extends keyof CreateTransactionParams>(chain: T) {\n return async function estimateFee(params: CreateTransactionParams[T]) {\n const { match } = await import(\"ts-pattern\");\n\n return match(chain as Chain)\n .returnType<Promise<AssetValue>>()\n .with(\n Chain.Arbitrum,\n Chain.Avalanche,\n Chain.Optimism,\n Chain.BinanceSmartChain,\n Chain.Base,\n Chain.Polygon,\n Chain.Ethereum,\n async (chain) => {\n const toolbox = await getToolbox(chain);\n const txObject = await toolbox.createTransaction(params);\n\n return (toolbox as Awaited<ReturnType<typeof ETHToolbox>>).estimateTransactionFee({\n ...txObject,\n feeOption: params.feeOptionKey || FeeOption.Fast,\n chain,\n });\n },\n )\n .with(\n Chain.Bitcoin,\n Chain.BitcoinCash,\n Chain.Dogecoin,\n Chain.Dash,\n Chain.Litecoin,\n Chain.Polkadot,\n Chain.Solana,\n Chain.Ripple,\n Chain.Tron,\n Chain.Near,\n async (chain) => {\n const toolbox = await getToolbox(chain);\n return toolbox.estimateTransactionFee(params) as Promise<AssetValue>;\n },\n )\n .with(Chain.THORChain, Chain.Maya, Chain.Kujira, Chain.Cosmos, async () => {\n const { estimateTransactionFee } = await import(\"@swapkit/toolboxes/cosmos\");\n return estimateTransactionFee(params);\n })\n .otherwise(async () => AssetValue.from({ chain }));\n };\n}\n\ntype Toolboxes = {\n [key in EVMChain]: Awaited<ReturnType<typeof getEvmToolbox>>;\n} & {\n [key in UTXOChain]: Awaited<ReturnType<typeof getUtxoToolbox>>;\n} & {\n [key in CosmosChain]: Awaited<ReturnType<typeof getCosmosToolbox>>;\n} & {\n [key in SubstrateChain]: Awaited<ReturnType<typeof getSubstrateToolbox>>;\n} & {\n [Chain.Radix]: Awaited<ReturnType<typeof RadixToolbox>>;\n [Chain.Near]: Awaited<ReturnType<typeof getNearToolbox>>;\n [Chain.Ripple]: Awaited<ReturnType<typeof getRippleToolbox>>;\n [Chain.Solana]: Awaited<ReturnType<typeof getSolanaToolbox>>;\n [Chain.Tron]: Awaited<ReturnType<typeof createTronToolbox>>;\n};\n\ntype ToolboxParams = { [key in EVMChain]: Parameters<typeof getEvmToolbox>[1] } & {\n [key in UTXOChain]: undefined;\n} & {\n [key in CosmosChain]: Parameters<typeof getCosmosToolbox>[1];\n} & {\n [key in SubstrateChain]: Parameters<typeof getSubstrateToolbox>[1];\n} & {\n [Chain.Radix]: Parameters<typeof RadixToolbox>[0];\n [Chain.Near]: Parameters<typeof getNearToolbox>[0];\n [Chain.Ripple]: Parameters<typeof getRippleToolbox>[0];\n [Chain.Solana]: Parameters<typeof getSolanaToolbox>[0];\n [Chain.Tron]: Parameters<typeof createTronToolbox>[0];\n};\n\ntype CreateTransactionParams = { [key in EVMChain]: EVMCreateTransactionParams } & {\n [key in UTXOChain]: GenericCreateTransactionParams;\n} & {\n [key in CosmosChain]: GenericCreateTransactionParams;\n} & {\n [key in SubstrateChain]: GenericCreateTransactionParams;\n} & {\n [Chain.Radix]: GenericCreateTransactionParams;\n [Chain.Ripple]: GenericCreateTransactionParams;\n [Chain.Near]: GenericCreateTransactionParams;\n [Chain.Solana]: SolanaCreateTransactionParams;\n [Chain.Tron]: GenericCreateTransactionParams;\n};\n\nexport async function getToolbox<T extends keyof Toolboxes>(\n chain: T,\n params?: ToolboxParams[T],\n): Promise<Toolboxes[T]> {\n const { match } = await import(\"ts-pattern\");\n\n return match(chain as Chain)\n .returnType<Promise<Toolboxes[T]>>()\n .with(\n Chain.Arbitrum,\n Chain.Avalanche,\n Chain.Optimism,\n Chain.BinanceSmartChain,\n Chain.Base,\n Chain.Polygon,\n Chain.Ethereum,\n async () => {\n const { getEvmToolbox } = await import(\"@swapkit/toolboxes/evm\");\n const evmToolbox = await getEvmToolbox(\n chain as EVMChain,\n params as Parameters<typeof getEvmToolbox>[1],\n );\n return evmToolbox as Toolboxes[T];\n },\n )\n .with(\n Chain.Litecoin,\n Chain.Dash,\n Chain.Dogecoin,\n Chain.BitcoinCash,\n Chain.Bitcoin,\n async () => {\n const { getUtxoToolbox } = await import(\"@swapkit/toolboxes/utxo\");\n const utxoToolbox = await getUtxoToolbox(\n chain as UTXOChain,\n params as Parameters<typeof getUtxoToolbox>[1],\n );\n return utxoToolbox as Toolboxes[T];\n },\n )\n .with(Chain.Cosmos, Chain.Kujira, Chain.Maya, Chain.THORChain, async () => {\n const { getCosmosToolbox } = await import(\"@swapkit/toolboxes/cosmos\");\n const cosmosToolbox = await getCosmosToolbox(\n chain as CosmosChain,\n params as Parameters<typeof getCosmosToolbox>[1],\n );\n return cosmosToolbox as Toolboxes[T];\n })\n .with(Chain.Chainflip, Chain.Polkadot, async () => {\n const { getSubstrateToolbox } = await import(\"@swapkit/toolboxes/substrate\");\n const substrateToolbox = await getSubstrateToolbox(\n chain as SubstrateChain,\n params as Parameters<typeof getSubstrateToolbox>[1],\n );\n return substrateToolbox as Toolboxes[T];\n })\n .with(Chain.Radix, async () => {\n const { RadixToolbox } = await import(\"@swapkit/toolboxes/radix\");\n const radixToolbox = await RadixToolbox(params as Parameters<typeof RadixToolbox>[0]);\n return radixToolbox as Toolboxes[T];\n })\n .with(Chain.Ripple, async () => {\n const { getRippleToolbox } = await import(\"@swapkit/toolboxes/ripple\");\n const rippleToolbox = await getRippleToolbox(\n params as Parameters<typeof getRippleToolbox>[0],\n );\n return rippleToolbox as Toolboxes[T];\n })\n .with(Chain.Solana, async () => {\n const { getSolanaToolbox } = await import(\"@swapkit/toolboxes/solana\");\n const solanaToolbox = await getSolanaToolbox(\n params as Parameters<typeof getSolanaToolbox>[0],\n );\n return solanaToolbox as Toolboxes[T];\n })\n .with(Chain.Tron, async () => {\n const { createTronToolbox } = await import(\"@swapkit/toolboxes/tron\");\n const tronToolbox = await createTronToolbox(params);\n return tronToolbox as Toolboxes[T];\n })\n .with(Chain.Near, async () => {\n const { getNearToolbox } = await import(\"@swapkit/toolboxes/near\");\n const nearToolbox = await getNearToolbox(params as Parameters<typeof getNearToolbox>[0]);\n return nearToolbox as Toolboxes[T];\n })\n .otherwise(() => {\n throw new SwapKitError(\"toolbox_not_supported\", { chain });\n });\n}\n"
6
6
  ],
7
- "mappings": "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",
8
- "debugId": "4ECEA2DC57B2A24764756E2164756E21",
7
+ "mappings": "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",
8
+ "debugId": "07861114CD7A064C64756E2164756E21",
9
9
  "names": []
10
10
  }
@@ -0,0 +1,3 @@
1
+ var D1={};V1(D1,{validateNearAddress:()=>T,tgasToGas:()=>t,isSimpleTransfer:()=>I,isCustomEstimator:()=>l,isContractDeployment:()=>S,isContractCall:()=>h,isBatchTransaction:()=>A,isAccountCreation:()=>g,getNearToolbox:()=>U1,getNearSignerFromPrivateKey:()=>K,getNearSignerFromPhrase:()=>b,getFullAccessPublicKey:()=>y,getContractMethodGas:()=>m,gasToTGas:()=>e,estimateBatchGas:()=>u,createNearContract:()=>w,createNEP141Token:()=>F,GAS_COSTS:()=>U});module.exports=H1(D1);var q=require("@swapkit/helpers");var E=require("@swapkit/helpers"),n=require("near-api-js");async function T(W){try{let{validateAccountId:Z}=await import("near-sdk-js");return Z(W)}catch{let Z=/^(([a-z\d]+[-_])*[a-z\d]+\.)*([a-z\d]+[-_])*[a-z\d]+$/;return W.length>=2&&W.length<=64&&Z.test(W)}}async function b(W){let{parseSeedPhrase:Z}=await import("near-seed-phrase"),{KeyPair:M}=await import("near-api-js"),R=W.index||0,$=W.derivationPath?E.derivationPathToString(W.derivationPath.slice(0,3)):`m/44'/397'/${R}'`,{secretKey:X}=Z(W.phrase,$),z=M.fromString(X);return s(z)}async function K(W){let{KeyPair:Z}=await import("near-api-js/lib/utils"),M=Z.fromString(W);return s(M)}class c extends n.KeyPairSigner{#x;constructor(W){super(W);this.#x=W}getAddress(){let W=this.#x.getPublicKey(),Z=Buffer.from(W.data).toString("hex");return Promise.resolve(Z)}}function s(W){return new c(W)}async function y(W,Z){let R=(await W.query({request_type:"view_access_key_list",finality:"final",account_id:Z})).keys.find((X)=>X.access_key.permission==="FullAccess");if(!R)throw new E.SwapKitError("toolbox_near_invalid_address");let{utils:$}=await import("near-api-js");return $.PublicKey.fromString(R.public_key)}var U={SIMPLE_TRANSFER:"1",TOKEN_TRANSFER:"100",CONTRACT_CALL:"100",ACCOUNT_CREATION:"30",CONTRACT_DEPLOYMENT:"200",ACCESS_KEY_ADDITION:"5",ACCESS_KEY_DELETION:"5",STAKE:"10",STORAGE_DEPOSIT:"100"};function I(W){return"recipient"in W&&"amount"in W&&!("contractId"in W)}function h(W){return"contractId"in W&&"methodName"in W}function A(W){return"actions"in W}function g(W){return"newAccountId"in W}function S(W){return"contractCode"in W}function l(W){return"customEstimator"in W}function u(W){let Z=0;for(let M of W)switch(M.enum){case"transfer":Z+=Number(U.SIMPLE_TRANSFER);break;case"functionCall":Z+=Number(U.CONTRACT_CALL);break;case"createAccount":Z+=Number(U.ACCOUNT_CREATION);break;case"deployContract":Z+=Number(U.CONTRACT_DEPLOYMENT);break;case"addKey":Z+=Number(U.ACCESS_KEY_ADDITION);break;case"deleteKey":Z+=Number(U.ACCESS_KEY_DELETION);break;case"stake":Z+=Number(U.STAKE);break;default:Z+=Number(U.CONTRACT_CALL)}return Z.toString()}function m(W){if(W==="ft_transfer"||W==="ft_transfer_call")return U.TOKEN_TRANSFER;if(W==="storage_deposit")return U.STORAGE_DEPOSIT;return U.CONTRACT_CALL}function t(W){return(BigInt(W)*BigInt(1000000000000)).toString()}function e(W){return(BigInt(W)/BigInt(1000000000000)).toString()}var r="1250000000000000000000";async function F({contractId:W,account:Z}){let M=(await import("bn.js")).default,R=await w({account:Z,contractId:W,viewMethods:["ft_balance_of","ft_total_supply","ft_metadata","storage_balance_of","storage_balance_bounds"],changeMethods:["ft_transfer","ft_transfer_call","storage_deposit","storage_withdraw","storage_unregister"]}),$=async(X)=>{if(!await R.storage_balance_of({account_id:X})){let N=(await R.storage_balance_bounds())?.min||r;await R.storage_deposit({account_id:X},new M("100000000000000"),new M(N))}};return{transfer:async(X,z,D)=>{return await $(X),R.ft_transfer({receiver_id:X,amount:z,memo:D},new M("100000000000000"),new M("1"))},transferCall:async(X,z,D,N)=>{return await $(X),R.ft_transfer_call({receiver_id:X,amount:z,memo:N,msg:D},new M("100000000000000"),new M("1"))},balanceOf:(X)=>R.ft_balance_of({account_id:X}),totalSupply:()=>R.ft_total_supply(),metadata:()=>R.ft_metadata(),storageBalanceOf:(X)=>R.storage_balance_of({account_id:X}),storageDeposit:(X,z)=>R.storage_deposit({account_id:X},new M("100000000000000"),new M(z||r)),ensureStorage:$,contract:R}}async function U1(W){let{P:Z,match:M}=await import("ts-pattern"),{providers:R}=await import("near-api-js"),$=await M(W).with({phrase:Z.string},async(x)=>{return await b(x)}).with({signer:Z.any},({signer:x})=>x).otherwise(()=>{return}),X=q.SKConfig.get("rpcUrls")[q.Chain.Near],z=new R.JsonRpcProvider({url:X});async function D(x){if(!$)throw new q.SwapKitError("toolbox_near_no_signer");let{Account:J}=await import("near-api-js"),Q=x||await N();return new J(Q,z,$)}async function N(){if(!$)throw new q.SwapKitError("toolbox_near_no_signer");return await $.getAddress()}async function a(x){if(!$)throw new q.SwapKitError("toolbox_near_no_signer");let{recipient:J,assetValue:Q}=x;if(!T(J))throw new q.SwapKitError("toolbox_near_invalid_address");let Y=await D();if(Q.isGasAsset===!1){let L=Q.address;if(!L)throw new q.SwapKitError("toolbox_near_missing_contract_address");let H=Q.getBaseValue("string");return p({contractId:L,methodName:"ft_transfer",args:{receiver_id:J,amount:H,memo:x.memo}})}try{let L=Q.getBaseValue("string");return(await Y.transfer({receiverId:J,amount:L})).transaction.hash}catch(L){throw new q.SwapKitError("toolbox_near_transfer_failed",{error:L})}}async function x1(x){let{recipient:J,assetValue:Q,memo:Y,feeRate:L,attachedDeposit:H,sender:V}=x,j=V||await N(),B=await y(z,j),_=(await z.query({request_type:"view_access_key",finality:"final",account_id:j})).nonce+1,v=Q.getBaseValue("bigint"),{SCHEMA:C}=await import("near-api-js/lib/transaction"),{transactions:k,utils:G}=await import("near-api-js"),o=[k.transfer(v)];if(Y&&H)o.push(k.functionCall("memo",{memo:Y},BigInt(L),BigInt(H)));let R1=await z.block({finality:"final"}),i=G.serialize.base_decode(R1.header.hash),Y1=k.createTransaction(j,B,J,_,o,i),f1=G.serialize.serialize(C.Transaction,Y1);return{serialized:Buffer.from(f1).toString("base64"),publicKey:B.toString(),details:{signerId:await N(),nonce:_,blockHash:G.serialize.base_encode(i)}}}async function W1(x){let{accountId:J}=x,Q=await y(z,J),L=(await z.query({request_type:"view_access_key",finality:"final",account_id:J,public_key:Q.toString()})).nonce+1,{SCHEMA:H}=await import("near-api-js/lib/transaction"),{transactions:V,utils:j}=await import("near-api-js"),B=await z.block({finality:"final"}),O=j.serialize.base_decode(B.header.hash),_=[V.functionCall(x.methodName,Buffer.from(JSON.stringify(x.args)),BigInt(x.gas),BigInt(x.attachedDeposit))],v=V.createTransaction(J,Q,x.contractId,L,_,O),C=j.serialize.serialize(H.Transaction,v);return{serialized:Buffer.from(C).toString("base64"),publicKey:Q.toString(),details:{signerId:J,receiverId:x.contractId,methodName:x.methodName,nonce:L,blockHash:j.serialize.base_encode(O)}}}async function q1(x){if(!$)throw new q.SwapKitError("toolbox_near_no_signer");let[J,Q]=await $.signTransaction(x);return Q}async function J1(x){return(await z.sendTransaction(x)).transaction.hash}async function Q1(x){if("assetValue"in x){let L=BigInt("115123062500")+BigInt("108059500000"),H=await Z1(),V=L*BigInt(H.toString());return q.AssetValue.from({chain:q.Chain.Near,value:V.toString(),fromBaseDecimal:q.BaseDecimal[q.Chain.Near]})}let J=$?await D():void 0;return P(x,J)}async function Z1(){try{return await z.query({request_type:"call_function",finality:"final",account_id:"system",method_name:"gas_price",args_base64:""})}catch{return"100000000"}}async function $1(x,J,Q){if(!$)throw new q.SwapKitError("toolbox_near_no_signer");let Y=await D(),{utils:L}=await import("near-api-js"),H=L.format.parseNearAmount(Q)||"0";return(await Y.createAccount(x,L.PublicKey.fromString(J),BigInt(H))).transaction.hash}async function p(x){try{if(!$)throw new q.SwapKitError("toolbox_near_no_signer");let{transactions:J}=await import("near-api-js"),{contractId:Q,methodName:Y,args:L,deposit:H}=x,V=await D(),j=await P({methodName:Y,args:L||{},contractId:Q}),B=J.functionCall(Y,L||{},j.getBaseValue("bigint"),BigInt(H||"0"));return(await V.signAndSendTransaction({receiverId:Q,actions:[B]})).transaction.hash}catch(J){throw new q.SwapKitError("toolbox_near_transfer_failed",{error:J})}}async function X1(x){let{createNearContract:J}=await import("../../chunk-vtd17cje.js"),Q=await D();return J({account:Q,contractId:x.contractId,viewMethods:x.viewMethods,changeMethods:x.changeMethods})}async function z1(x){if(!$)throw new q.SwapKitError("toolbox_near_no_signer");if(x.actions.length===0)throw new q.SwapKitError("toolbox_near_empty_batch");return(await(await D()).signAndSendTransaction({receiverId:x.receiverId,actions:x.actions})).transaction.hash}async function L1(x){let J=await D();return F({contractId:x,account:J})}async function M1(x){try{let J=await D(x),Q;try{let Y=await J.getBalance();Q=q.AssetValue.from({chain:q.Chain.Near,value:Y,fromBaseDecimal:q.BaseDecimal[q.Chain.Near]})}catch{Q=q.AssetValue.from({chain:q.Chain.Near,value:"0",fromBaseDecimal:q.BaseDecimal[q.Chain.Near]})}return[Q]}catch(J){throw new q.SwapKitError("toolbox_near_balance_failed",{error:J})}}async function P(x,J){let Q=await M(x).when(I,()=>U.SIMPLE_TRANSFER).when(h,(V)=>m(V.methodName)).when(A,(V)=>u(V.actions)).when(g,()=>U.ACCOUNT_CREATION).when(S,()=>U.CONTRACT_DEPLOYMENT).when(l,(V)=>{if(!J)throw new q.SwapKitError("toolbox_near_no_account");return V.customEstimator(J)}).otherwise(()=>{throw new q.SwapKitError("toolbox_near_invalid_gas_params")}),Y=await d(),H=BigInt(Q)*BigInt(1000000000000)*BigInt(Y);return q.AssetValue.from({chain:q.Chain.Near,value:H,fromBaseDecimal:q.BaseDecimal[q.Chain.Near]})}async function d(){try{return(await z.gasPrice(null)).gas_price||"100000000"}catch(x){return"100000000"}}return{getAddress:N,getPublicKey:async()=>$?(await $.getPublicKey()).toString():"",provider:z,transfer:a,createTransaction:x1,createContractFunctionCall:W1,estimateTransactionFee:Q1,broadcastTransaction:J1,signTransaction:q1,getBalance:M1,validateAddress:T,getSignerFromPhrase:(x)=>b(x),getSignerFromPrivateKey:K,callFunction:p,createSubAccount:$1,createContract:X1,executeBatchTransaction:z1,nep141:L1,getGasPrice:d,estimateGas:P}}
2
+
3
+ //# debugId=701F95BE79A1566C64756E2164756E21
@@ -0,0 +1,13 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../src/near/toolbox.ts", "../src/near/helpers/core.ts", "../src/near/helpers/gasEstimation.ts", "../src/near/helpers/nep141.ts"],
4
+ "sourcesContent": [
5
+ "import {\n AssetValue,\n BaseDecimal,\n Chain,\n type DerivationPathArray,\n SKConfig,\n SwapKitError,\n} from \"@swapkit/helpers\";\nimport type { Account } from \"near-api-js\";\nimport type { SignedTransaction, Transaction } from \"near-api-js/lib/transaction\";\nimport {\n getFullAccessPublicKey,\n getNearSignerFromPhrase,\n getNearSignerFromPrivateKey,\n validateNearAddress,\n} from \"./helpers\";\nimport {\n GAS_COSTS,\n estimateBatchGas,\n getContractMethodGas,\n isAccountCreation,\n isBatchTransaction,\n isContractCall,\n isContractDeployment,\n isCustomEstimator,\n isSimpleTransfer,\n} from \"./helpers/gasEstimation\";\nimport { createNEP141Token } from \"./helpers/nep141\";\nimport type {\n NearCreateTransactionParams,\n NearFunctionCallParams,\n NearToolboxParams,\n NearTransferParams,\n} from \"./types\";\nimport type { NearContractInterface, NearGasEstimateParams } from \"./types/contract\";\n\nexport async function getNearToolbox(toolboxParams?: NearToolboxParams) {\n const { P, match } = await import(\"ts-pattern\");\n const { providers } = await import(\"near-api-js\");\n const signer = await match(toolboxParams)\n .with({ phrase: P.string }, async (params) => {\n const signer = await getNearSignerFromPhrase(params);\n return signer;\n })\n .with({ signer: P.any }, ({ signer }) => signer)\n .otherwise(() => undefined);\n\n const url = SKConfig.get(\"rpcUrls\")[Chain.Near];\n\n const provider = new providers.JsonRpcProvider({ url });\n\n async function getAccount(address?: string) {\n if (!signer) {\n throw new SwapKitError(\"toolbox_near_no_signer\");\n }\n const { Account } = await import(\"near-api-js\");\n\n const _address = address || (await getAddress());\n\n const account = new Account(_address, provider, signer);\n\n return account;\n }\n\n async function getAddress() {\n if (!signer) {\n throw new SwapKitError(\"toolbox_near_no_signer\");\n }\n const address = await signer.getAddress();\n return address;\n }\n\n async function transfer(params: NearTransferParams) {\n if (!signer) {\n throw new SwapKitError(\"toolbox_near_no_signer\");\n }\n\n const { recipient, assetValue } = params;\n\n if (!validateNearAddress(recipient)) {\n throw new SwapKitError(\"toolbox_near_invalid_address\");\n }\n\n const account = await getAccount();\n\n if (assetValue.isGasAsset === false) {\n // NEP-141 token transfer\n const contractId = assetValue.address;\n if (!contractId) {\n throw new SwapKitError(\"toolbox_near_missing_contract_address\");\n }\n\n const amount = assetValue.getBaseValue(\"string\");\n\n return callFunction({\n contractId,\n methodName: \"ft_transfer\",\n args: {\n receiver_id: recipient,\n amount,\n memo: params.memo,\n },\n });\n }\n\n try {\n const transferAmount = assetValue.getBaseValue(\"string\");\n\n const result = await account.transfer({\n receiverId: recipient,\n amount: transferAmount,\n });\n\n return result.transaction.hash;\n } catch (error) {\n throw new SwapKitError(\"toolbox_near_transfer_failed\", { error });\n }\n }\n\n async function createTransaction(params: NearCreateTransactionParams) {\n const { recipient, assetValue, memo, feeRate: gas, attachedDeposit, sender } = params;\n\n const signerId = sender || (await getAddress());\n const publicKey = await getFullAccessPublicKey(provider, signerId);\n\n const accessKey = await provider.query({\n request_type: \"view_access_key\",\n finality: \"final\",\n account_id: signerId,\n });\n\n const nonce = (accessKey as any).nonce + 1;\n\n const baseAmount = assetValue.getBaseValue(\"bigint\");\n\n const { SCHEMA } = await import(\"near-api-js/lib/transaction\");\n const { transactions, utils } = await import(\"near-api-js\");\n\n const txActions = [transactions.transfer(baseAmount)];\n\n if (memo && attachedDeposit) {\n txActions.push(\n transactions.functionCall(\"memo\", { memo }, BigInt(gas), BigInt(attachedDeposit)),\n );\n }\n\n const block = await provider.block({ finality: \"final\" });\n const blockHash = utils.serialize.base_decode(block.header.hash);\n\n const transaction = transactions.createTransaction(\n signerId,\n publicKey,\n recipient,\n nonce,\n txActions,\n blockHash,\n );\n\n const serializedTx = utils.serialize.serialize(SCHEMA.Transaction, transaction);\n const serializedBase64 = Buffer.from(serializedTx).toString(\"base64\");\n\n return {\n serialized: serializedBase64,\n publicKey: publicKey.toString(),\n details: {\n signerId: await getAddress(),\n nonce: nonce,\n blockHash: utils.serialize.base_encode(blockHash),\n },\n };\n }\n\n async function createContractFunctionCall(params: {\n accountId: string;\n contractId: string;\n methodName: string;\n args: any;\n gas: string;\n attachedDeposit: string;\n }) {\n const { accountId } = params;\n\n const publicKey = await getFullAccessPublicKey(provider, accountId);\n\n const accessKey = await provider.query({\n request_type: \"view_access_key\",\n finality: \"final\",\n account_id: accountId,\n public_key: publicKey.toString(),\n });\n const nonce = (accessKey as any).nonce + 1;\n\n const { SCHEMA } = await import(\"near-api-js/lib/transaction\");\n const { transactions, utils } = await import(\"near-api-js\");\n const block = await provider.block({ finality: \"final\" });\n const blockHash = utils.serialize.base_decode(block.header.hash);\n\n const actions = [\n transactions.functionCall(\n params.methodName,\n Buffer.from(JSON.stringify(params.args)),\n BigInt(params.gas),\n BigInt(params.attachedDeposit),\n ),\n ];\n\n const transaction = transactions.createTransaction(\n accountId,\n publicKey,\n params.contractId,\n nonce,\n actions,\n blockHash,\n );\n\n const serializedTx = utils.serialize.serialize(SCHEMA.Transaction, transaction);\n const serializedBase64 = Buffer.from(serializedTx).toString(\"base64\");\n\n return {\n serialized: serializedBase64,\n publicKey: publicKey.toString(),\n details: {\n signerId: accountId,\n receiverId: params.contractId,\n methodName: params.methodName,\n nonce: nonce,\n blockHash: utils.serialize.base_encode(blockHash),\n },\n };\n }\n\n async function signTransaction(transaction: Transaction) {\n if (!signer) {\n throw new SwapKitError(\"toolbox_near_no_signer\");\n }\n\n // Use the new signer interface method\n const [_hash, signedTx] = await signer.signTransaction(transaction);\n return signedTx;\n }\n\n async function broadcastTransaction(signedTransaction: SignedTransaction) {\n const result = await provider.sendTransaction(signedTransaction);\n return result.transaction.hash;\n }\n\n async function estimateTransactionFee(params: NearTransferParams | NearGasEstimateParams) {\n if (\"assetValue\" in params) {\n const baseTransferCost = \"115123062500\"; // gas units for transfer\n const receiptCreationCost = \"108059500000\"; // gas units for receipt\n\n const totalGasUnits = BigInt(baseTransferCost) + BigInt(receiptCreationCost);\n\n const gasPrice = await getCurrentGasPrice();\n\n // NEAR doesn't support fee multipliers - gas price is fixed by the network\n const totalCostYocto = totalGasUnits * BigInt(gasPrice.toString());\n\n return AssetValue.from({\n chain: Chain.Near,\n value: totalCostYocto.toString(),\n fromBaseDecimal: BaseDecimal[Chain.Near],\n });\n }\n\n // Handle new gas estimation params\n const account = signer ? await getAccount() : undefined;\n return estimateGas(params, account);\n }\n\n async function getCurrentGasPrice() {\n try {\n const result = await provider.query({\n request_type: \"call_function\",\n finality: \"final\",\n account_id: \"system\",\n method_name: \"gas_price\",\n args_base64: \"\",\n });\n\n return result;\n } catch {\n return \"100000000\"; // 0.0001 NEAR per Tgas\n }\n }\n\n async function createSubAccount(subAccountId: string, publicKey: string, initialBalance: string) {\n if (!signer) {\n throw new SwapKitError(\"toolbox_near_no_signer\");\n }\n\n const account = await getAccount();\n const { utils } = await import(\"near-api-js\");\n\n const balanceInYocto = utils.format.parseNearAmount(initialBalance) || \"0\";\n\n const result = await account.createAccount(\n subAccountId,\n utils.PublicKey.fromString(publicKey),\n BigInt(balanceInYocto),\n );\n\n return result.transaction.hash;\n }\n\n async function callFunction(params: NearFunctionCallParams) {\n try {\n if (!signer) {\n throw new SwapKitError(\"toolbox_near_no_signer\");\n }\n\n const { transactions } = await import(\"near-api-js\");\n\n const { contractId, methodName, args, deposit } = params;\n const account = await getAccount();\n\n const estimatedGas = await estimateGas({\n methodName,\n args: args || {},\n contractId,\n });\n\n const functionAction = transactions.functionCall(\n methodName,\n args || {},\n estimatedGas.getBaseValue(\"bigint\"),\n BigInt(deposit || \"0\"),\n );\n\n const result = await account.signAndSendTransaction({\n receiverId: contractId,\n actions: [functionAction],\n });\n\n return result.transaction.hash;\n } catch (error) {\n throw new SwapKitError(\"toolbox_near_transfer_failed\", { error });\n }\n }\n\n // Create typed contract interface\n async function createContract(contractInterface: NearContractInterface) {\n const { createNearContract } = await import(\"./helpers/contractFactory\");\n const account = await getAccount();\n\n return createNearContract({\n account,\n contractId: contractInterface.contractId,\n viewMethods: contractInterface.viewMethods,\n changeMethods: contractInterface.changeMethods,\n });\n }\n\n async function executeBatchTransaction(batch: { receiverId: string; actions: any[] }) {\n if (!signer) {\n throw new SwapKitError(\"toolbox_near_no_signer\");\n }\n\n if (batch.actions.length === 0) {\n throw new SwapKitError(\"toolbox_near_empty_batch\");\n }\n\n const account = await getAccount();\n\n // Use account.signAndSendTransaction for batch operations\n const result = await account.signAndSendTransaction({\n receiverId: batch.receiverId,\n actions: batch.actions,\n });\n\n return result.transaction.hash;\n }\n\n async function nep141(contractId: string) {\n const account = await getAccount();\n return createNEP141Token({ contractId, account });\n }\n\n async function getBalance(address: string) {\n try {\n const account = await getAccount(address);\n\n let nativeBalance: AssetValue;\n try {\n const value = await account.getBalance();\n\n nativeBalance = AssetValue.from({\n chain: Chain.Near,\n value,\n fromBaseDecimal: BaseDecimal[Chain.Near],\n });\n } catch {\n nativeBalance = AssetValue.from({\n chain: Chain.Near,\n value: \"0\",\n fromBaseDecimal: BaseDecimal[Chain.Near],\n });\n }\n\n // // Then, fetch token balances from API\n // let tokenBalances: AssetValue[] = [];\n // try {\n // const apiBalances = await SwapKitApi.getChainBalance({\n // chain: Chain.Near,\n // address,\n // scamFilter,\n // });\n\n // tokenBalances = apiBalances\n // .filter(({ identifier }) => identifier !== Chain.Near) // Filter out native NEAR\n // .map(({ identifier, value, decimal }) => {\n // return new AssetValue({\n // decimal: decimal || BaseDecimal[Chain.Near],\n // value,\n // identifier,\n // });\n // });\n // } catch (error) {\n // // If API fails, just return on-chain balance\n // console.warn(\"Failed to fetch token balances from API:\", error);\n // }\n\n // Merge native balance with token balances\n // return [nativeBalance, ...tokenBalances];\n return [nativeBalance];\n } catch (error) {\n throw new SwapKitError(\"toolbox_near_balance_failed\", { error });\n }\n }\n\n async function estimateGas(params: NearGasEstimateParams, account?: Account) {\n const gasInTGas = await match(params)\n .when(isSimpleTransfer, () => GAS_COSTS.SIMPLE_TRANSFER)\n .when(isContractCall, (p) => getContractMethodGas(p.methodName))\n .when(isBatchTransaction, (p) => estimateBatchGas(p.actions))\n .when(isAccountCreation, () => GAS_COSTS.ACCOUNT_CREATION)\n .when(isContractDeployment, () => GAS_COSTS.CONTRACT_DEPLOYMENT)\n .when(isCustomEstimator, (p) => {\n if (!account) {\n throw new SwapKitError(\"toolbox_near_no_account\");\n }\n return p.customEstimator(account);\n })\n .otherwise(() => {\n throw new SwapKitError(\"toolbox_near_invalid_gas_params\");\n });\n\n // Convert TGas to gas price in NEAR\n const gasPrice = await getGasPrice();\n const gasInUnits = BigInt(gasInTGas) * BigInt(10 ** 12); // Convert TGas to gas units\n const costInYoctoNear = gasInUnits * BigInt(gasPrice);\n\n return AssetValue.from({\n chain: Chain.Near,\n value: costInYoctoNear,\n fromBaseDecimal: BaseDecimal[Chain.Near],\n });\n }\n\n // Get current gas price from network\n async function getGasPrice() {\n try {\n const result = await provider.gasPrice(null);\n return result.gas_price || \"100000000\";\n } catch (_error) {\n // Fallback to default\n return \"100000000\";\n }\n }\n\n return {\n getAddress,\n getPublicKey: async () => (signer ? (await signer.getPublicKey()).toString() : \"\"),\n provider,\n transfer,\n createTransaction,\n createContractFunctionCall,\n estimateTransactionFee,\n broadcastTransaction,\n signTransaction,\n getBalance,\n validateAddress: validateNearAddress,\n getSignerFromPhrase: (params: {\n phrase: string;\n derivationPath?: DerivationPathArray;\n index?: number;\n }) => getNearSignerFromPhrase(params),\n getSignerFromPrivateKey: getNearSignerFromPrivateKey,\n callFunction,\n createSubAccount,\n createContract,\n executeBatchTransaction,\n nep141,\n getGasPrice,\n estimateGas,\n };\n}\n",
6
+ "import type { Provider } from \"@near-js/providers\";\nimport { type DerivationPathArray, SwapKitError, derivationPathToString } from \"@swapkit/helpers\";\nimport { type KeyPair, KeyPairSigner } from \"near-api-js\";\nimport type { NearSigner } from \"../types\";\n\nexport async function validateNearAddress(address: string) {\n // Use the official NEAR SDK validation function if available\n try {\n const { validateAccountId } = await import(\"near-sdk-js\");\n return validateAccountId(address);\n } catch {\n const ACCOUNT_ID_REGEX = /^(([a-z\\d]+[-_])*[a-z\\d]+\\.)*([a-z\\d]+[-_])*[a-z\\d]+$/;\n\n return address.length >= 2 && address.length <= 64 && ACCOUNT_ID_REGEX.test(address);\n }\n}\n\nexport async function getNearSignerFromPhrase(params: {\n phrase: string;\n derivationPath?: DerivationPathArray;\n index?: number;\n}) {\n const { parseSeedPhrase } = await import(\"near-seed-phrase\");\n const { KeyPair } = await import(\"near-api-js\");\n\n // Handle derivation path logic here\n // NEAR uses a 3-level derivation path: m/44'/397'/index'\n const index = params.index || 0;\n const derivationPath = params.derivationPath\n ? derivationPathToString(params.derivationPath.slice(0, 3) as [number, number, number])\n : `m/44'/397'/${index}'`;\n\n const { secretKey } = parseSeedPhrase(params.phrase, derivationPath);\n const keyPair = KeyPair.fromString(secretKey as any);\n\n return createNearSignerFromKeyPair(keyPair);\n}\n\nexport async function getNearSignerFromPrivateKey(privateKey: string) {\n const { KeyPair } = await import(\"near-api-js/lib/utils\");\n const keyPair = KeyPair.fromString(privateKey as any);\n return createNearSignerFromKeyPair(keyPair);\n}\n\nclass SKKeyPairSigner extends KeyPairSigner {\n #keyPair: KeyPair;\n\n constructor(keyPair: KeyPair) {\n super(keyPair);\n this.#keyPair = keyPair;\n }\n\n getAddress(): Promise<string> {\n // For implicit accounts, derive account ID from public key\n // NEAR implicit accounts use hex representation of the public key\n const publicKey = this.#keyPair.getPublicKey();\n const hexAddress = Buffer.from(publicKey.data).toString(\"hex\");\n return Promise.resolve(hexAddress);\n }\n}\n\nfunction createNearSignerFromKeyPair(keyPair: KeyPair): NearSigner {\n const keyPairSigner = new SKKeyPairSigner(keyPair);\n\n return keyPairSigner;\n}\n\nexport async function getFullAccessPublicKey(provider: Provider, accountId: string) {\n // Get the first full access key for the account\n const response = await provider.query({\n request_type: \"view_access_key_list\",\n finality: \"final\",\n account_id: accountId,\n });\n\n const fullAccessKey = (response as any).keys.find(\n (key: any) => key.access_key.permission === \"FullAccess\",\n );\n\n if (!fullAccessKey) {\n throw new SwapKitError(\"toolbox_near_invalid_address\");\n }\n\n const { utils } = await import(\"near-api-js\");\n return utils.PublicKey.fromString(fullAccessKey.public_key);\n}\n",
7
+ "import type { Account } from \"near-api-js\";\nimport type { NearGasEstimateParams } from \"../types/contract\";\n\n// Gas constants (in TGas - 10^12 gas units)\nexport const GAS_COSTS = {\n SIMPLE_TRANSFER: \"1\", // 1 TGas\n TOKEN_TRANSFER: \"100\", // 100 TGas\n CONTRACT_CALL: \"100\", // 100 TGas base\n ACCOUNT_CREATION: \"30\", // 30 TGas\n CONTRACT_DEPLOYMENT: \"200\", // 200 TGas\n ACCESS_KEY_ADDITION: \"5\", // 5 TGas\n ACCESS_KEY_DELETION: \"5\", // 5 TGas\n STAKE: \"10\", // 10 TGas\n STORAGE_DEPOSIT: \"100\", // 100 TGas\n} as const;\n\n// Type guards for discriminated union\nexport function isSimpleTransfer(\n params: NearGasEstimateParams,\n): params is { recipient: string; amount: string } {\n return \"recipient\" in params && \"amount\" in params && !(\"contractId\" in params);\n}\n\nexport function isContractCall(params: NearGasEstimateParams): params is {\n contractId: string;\n methodName: string;\n args?: Record<string, any>;\n attachedDeposit?: string;\n} {\n return \"contractId\" in params && \"methodName\" in params;\n}\n\nexport function isBatchTransaction(params: NearGasEstimateParams): params is { actions: any[] } {\n return \"actions\" in params;\n}\n\nexport function isAccountCreation(params: NearGasEstimateParams): params is {\n newAccountId: string;\n publicKey?: string;\n} {\n return \"newAccountId\" in params;\n}\n\nexport function isContractDeployment(\n params: NearGasEstimateParams,\n): params is { contractCode: Uint8Array } {\n return \"contractCode\" in params;\n}\n\nexport function isCustomEstimator(params: NearGasEstimateParams): params is {\n customEstimator: (account: Account) => Promise<string>;\n} {\n return \"customEstimator\" in params;\n}\n\n// Helper function to estimate gas for batch actions\nexport function estimateBatchGas(actions: any[]) {\n let totalGas = 0;\n\n for (const action of actions) {\n switch (action.enum) {\n case \"transfer\":\n totalGas += Number(GAS_COSTS.SIMPLE_TRANSFER);\n break;\n case \"functionCall\":\n totalGas += Number(GAS_COSTS.CONTRACT_CALL);\n break;\n case \"createAccount\":\n totalGas += Number(GAS_COSTS.ACCOUNT_CREATION);\n break;\n case \"deployContract\":\n totalGas += Number(GAS_COSTS.CONTRACT_DEPLOYMENT);\n break;\n case \"addKey\":\n totalGas += Number(GAS_COSTS.ACCESS_KEY_ADDITION);\n break;\n case \"deleteKey\":\n totalGas += Number(GAS_COSTS.ACCESS_KEY_DELETION);\n break;\n case \"stake\":\n totalGas += Number(GAS_COSTS.STAKE);\n break;\n default:\n totalGas += Number(GAS_COSTS.CONTRACT_CALL);\n }\n }\n\n return totalGas.toString();\n}\n\n// Helper function to get gas cost for contract methods\nexport function getContractMethodGas(methodName: string) {\n if (methodName === \"ft_transfer\" || methodName === \"ft_transfer_call\") {\n return GAS_COSTS.TOKEN_TRANSFER;\n }\n if (methodName === \"storage_deposit\") {\n return GAS_COSTS.STORAGE_DEPOSIT;\n }\n return GAS_COSTS.CONTRACT_CALL;\n}\n\n// Convert TGas string to gas units\nexport function tgasToGas(tgas: string): string {\n return (BigInt(tgas) * BigInt(10 ** 12)).toString();\n}\n\n// Convert gas units to TGas\nexport function gasToTGas(gas: string): string {\n return (BigInt(gas) / BigInt(10 ** 12)).toString();\n}\n",
8
+ "import type { Account, Contract } from \"near-api-js\";\nimport { createNearContract } from \"./contractFactory\";\n\nconst DEFAULT_STORAGE_DEPOSIT = \"1250000000000000000000\"; // 0.00125 NEAR\n\n// Define NEP-141 contract interface\ninterface NEP141Contract extends Contract {\n // View methods\n ft_balance_of(args: { account_id: string }): Promise<string>;\n ft_total_supply(): Promise<string>;\n ft_metadata(): Promise<any>;\n storage_balance_of(args: { account_id: string }): Promise<any>;\n storage_balance_bounds(): Promise<any>;\n\n // Change methods\n ft_transfer(args: any, gas: any, deposit: any): Promise<any>;\n ft_transfer_call(args: any, gas: any, deposit: any): Promise<any>;\n storage_deposit(args: any, gas: any, deposit: any): Promise<any>;\n storage_withdraw(args: any, gas: any, deposit: any): Promise<any>;\n storage_unregister(force?: boolean, gas?: any): Promise<any>;\n}\n\nexport async function createNEP141Token({\n contractId,\n account,\n}: {\n contractId: string;\n account: Account;\n}) {\n const BN = (await import(\"bn.js\")).default;\n\n const contract = await createNearContract<NEP141Contract>({\n account,\n contractId,\n viewMethods: [\n \"ft_balance_of\",\n \"ft_total_supply\",\n \"ft_metadata\",\n \"storage_balance_of\",\n \"storage_balance_bounds\",\n ],\n changeMethods: [\n \"ft_transfer\",\n \"ft_transfer_call\",\n \"storage_deposit\",\n \"storage_withdraw\",\n \"storage_unregister\",\n ],\n });\n\n // Helper to ensure storage before transfers\n const ensureStorageFor = async (accountId: string) => {\n const balance = await contract.storage_balance_of({ account_id: accountId });\n if (!balance) {\n // Get minimum storage requirement\n const bounds = await contract.storage_balance_bounds();\n const deposit = bounds?.min || DEFAULT_STORAGE_DEPOSIT;\n\n await contract.storage_deposit(\n { account_id: accountId },\n new BN(\"100000000000000\"), // 100 TGas\n new BN(deposit),\n );\n }\n };\n\n return {\n transfer: async (receiverId: string, amount: string, memo?: string) => {\n // Ensure recipient has storage before transfer\n await ensureStorageFor(receiverId);\n\n return contract.ft_transfer(\n { receiver_id: receiverId, amount, memo },\n new BN(\"100000000000000\"), // 100 TGas\n new BN(\"1\"), // 1 yoctoNEAR for security\n );\n },\n\n transferCall: async (receiverId: string, amount: string, msg: string, memo?: string) => {\n // Ensure recipient has storage before transfer\n await ensureStorageFor(receiverId);\n\n return contract.ft_transfer_call(\n { receiver_id: receiverId, amount, memo, msg },\n new BN(\"100000000000000\"), // 100 TGas\n new BN(\"1\"), // 1 yoctoNEAR for security\n );\n },\n\n balanceOf: (accountId: string) => contract.ft_balance_of({ account_id: accountId }),\n\n totalSupply: () => contract.ft_total_supply(),\n\n metadata: () => contract.ft_metadata(),\n\n storageBalanceOf: (accountId: string) => contract.storage_balance_of({ account_id: accountId }),\n\n storageDeposit: (accountId?: string, amount?: string) =>\n contract.storage_deposit(\n { account_id: accountId },\n new BN(\"100000000000000\"),\n new BN(amount || DEFAULT_STORAGE_DEPOSIT),\n ),\n\n ensureStorage: ensureStorageFor,\n\n // Raw contract access for advanced use cases\n contract,\n };\n}\n"
9
+ ],
10
+ "mappings": "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",
11
+ "debugId": "701F95BE79A1566C64756E2164756E21",
12
+ "names": []
13
+ }
@@ -0,0 +1,3 @@
1
+ import{a as E}from"../../chunk-kbnwrc5b.js";import{d as Y,e as f}from"../../chunk-s47y8512.js";import{AssetValue as b,BaseDecimal as y,Chain as B,SKConfig as N1,SwapKitError as D}from"@swapkit/helpers";import{SwapKitError as U1,derivationPathToString as H1}from"@swapkit/helpers";import{KeyPairSigner as V1}from"near-api-js";async function K(W){try{let{validateAccountId:Q}=await import("near-sdk-js");return Q(W)}catch{let Q=/^(([a-z\d]+[-_])*[a-z\d]+\.)*([a-z\d]+[-_])*[a-z\d]+$/;return W.length>=2&&W.length<=64&&Q.test(W)}}async function I(W){let{parseSeedPhrase:Q}=await import("near-seed-phrase"),{KeyPair:L}=await import("near-api-js"),M=W.index||0,Z=W.derivationPath?H1(W.derivationPath.slice(0,3)):`m/44'/397'/${M}'`,{secretKey:$}=Q(W.phrase,Z),X=L.fromString($);return p(X)}async function u(W){let{KeyPair:Q}=await import("near-api-js/lib/utils"),L=Q.fromString(W);return p(L)}class m extends V1{#x;constructor(W){super(W);this.#x=W}getAddress(){let W=this.#x.getPublicKey(),Q=Buffer.from(W.data).toString("hex");return Promise.resolve(Q)}}function p(W){return new m(W)}async function h(W,Q){let M=(await W.query({request_type:"view_access_key_list",finality:"final",account_id:Q})).keys.find(($)=>$.access_key.permission==="FullAccess");if(!M)throw new U1("toolbox_near_invalid_address");let{utils:Z}=await import("near-api-js");return Z.PublicKey.fromString(M.public_key)}var V={SIMPLE_TRANSFER:"1",TOKEN_TRANSFER:"100",CONTRACT_CALL:"100",ACCOUNT_CREATION:"30",CONTRACT_DEPLOYMENT:"200",ACCESS_KEY_ADDITION:"5",ACCESS_KEY_DELETION:"5",STAKE:"10",STORAGE_DEPOSIT:"100"};function d(W){return"recipient"in W&&"amount"in W&&!("contractId"in W)}function o(W){return"contractId"in W&&"methodName"in W}function i(W){return"actions"in W}function n(W){return"newAccountId"in W}function c(W){return"contractCode"in W}function s(W){return"customEstimator"in W}function t(W){let Q=0;for(let L of W)switch(L.enum){case"transfer":Q+=Number(V.SIMPLE_TRANSFER);break;case"functionCall":Q+=Number(V.CONTRACT_CALL);break;case"createAccount":Q+=Number(V.ACCOUNT_CREATION);break;case"deployContract":Q+=Number(V.CONTRACT_DEPLOYMENT);break;case"addKey":Q+=Number(V.ACCESS_KEY_ADDITION);break;case"deleteKey":Q+=Number(V.ACCESS_KEY_DELETION);break;case"stake":Q+=Number(V.STAKE);break;default:Q+=Number(V.CONTRACT_CALL)}return Q.toString()}function e(W){if(W==="ft_transfer"||W==="ft_transfer_call")return V.TOKEN_TRANSFER;if(W==="storage_deposit")return V.STORAGE_DEPOSIT;return V.CONTRACT_CALL}function D1(W){return(BigInt(W)*BigInt(1000000000000)).toString()}function j1(W){return(BigInt(W)/BigInt(1000000000000)).toString()}var r="1250000000000000000000";async function T({contractId:W,account:Q}){let L=(await import("bn.js")).default,M=await E({account:Q,contractId:W,viewMethods:["ft_balance_of","ft_total_supply","ft_metadata","storage_balance_of","storage_balance_bounds"],changeMethods:["ft_transfer","ft_transfer_call","storage_deposit","storage_withdraw","storage_unregister"]}),Z=async($)=>{if(!await M.storage_balance_of({account_id:$})){let w=(await M.storage_balance_bounds())?.min||r;await M.storage_deposit({account_id:$},new L("100000000000000"),new L(w))}};return{transfer:async($,X,j)=>{return await Z($),M.ft_transfer({receiver_id:$,amount:X,memo:j},new L("100000000000000"),new L("1"))},transferCall:async($,X,j,w)=>{return await Z($),M.ft_transfer_call({receiver_id:$,amount:X,memo:w,msg:j},new L("100000000000000"),new L("1"))},balanceOf:($)=>M.ft_balance_of({account_id:$}),totalSupply:()=>M.ft_total_supply(),metadata:()=>M.ft_metadata(),storageBalanceOf:($)=>M.storage_balance_of({account_id:$}),storageDeposit:($,X)=>M.storage_deposit({account_id:$},new L("100000000000000"),new L(X||r)),ensureStorage:Z,contract:M}}async function h1(W){let{P:Q,match:L}=await import("ts-pattern"),{providers:M}=await import("near-api-js"),Z=await L(W).with({phrase:Q.string},async(x)=>{return await I(x)}).with({signer:Q.any},({signer:x})=>x).otherwise(()=>{return}),$=N1.get("rpcUrls")[B.Near],X=new M.JsonRpcProvider({url:$});async function j(x){if(!Z)throw new D("toolbox_near_no_signer");let{Account:q}=await import("near-api-js"),J=x||await w();return new q(J,X,Z)}async function w(){if(!Z)throw new D("toolbox_near_no_signer");return await Z.getAddress()}async function a(x){if(!Z)throw new D("toolbox_near_no_signer");let{recipient:q,assetValue:J}=x;if(!K(q))throw new D("toolbox_near_invalid_address");let R=await j();if(J.isGasAsset===!1){let z=J.address;if(!z)throw new D("toolbox_near_missing_contract_address");let U=J.getBaseValue("string");return A({contractId:z,methodName:"ft_transfer",args:{receiver_id:q,amount:U,memo:x.memo}})}try{let z=J.getBaseValue("string");return(await R.transfer({receiverId:q,amount:z})).transaction.hash}catch(z){throw new D("toolbox_near_transfer_failed",{error:z})}}async function x1(x){let{recipient:q,assetValue:J,memo:R,feeRate:z,attachedDeposit:U,sender:H}=x,N=H||await w(),F=await h(X,N),_=(await X.query({request_type:"view_access_key",finality:"final",account_id:N})).nonce+1,v=J.getBaseValue("bigint"),{SCHEMA:C}=await import("near-api-js/lib/transaction"),{transactions:k,utils:G}=await import("near-api-js"),S=[k.transfer(v)];if(R&&U)S.push(k.functionCall("memo",{memo:R},BigInt(z),BigInt(U)));let R1=await X.block({finality:"final"}),l=G.serialize.base_decode(R1.header.hash),Y1=k.createTransaction(N,F,q,_,S,l),f1=G.serialize.serialize(C.Transaction,Y1);return{serialized:Buffer.from(f1).toString("base64"),publicKey:F.toString(),details:{signerId:await w(),nonce:_,blockHash:G.serialize.base_encode(l)}}}async function W1(x){let{accountId:q}=x,J=await h(X,q),z=(await X.query({request_type:"view_access_key",finality:"final",account_id:q,public_key:J.toString()})).nonce+1,{SCHEMA:U}=await import("near-api-js/lib/transaction"),{transactions:H,utils:N}=await import("near-api-js"),F=await X.block({finality:"final"}),O=N.serialize.base_decode(F.header.hash),_=[H.functionCall(x.methodName,Buffer.from(JSON.stringify(x.args)),BigInt(x.gas),BigInt(x.attachedDeposit))],v=H.createTransaction(q,J,x.contractId,z,_,O),C=N.serialize.serialize(U.Transaction,v);return{serialized:Buffer.from(C).toString("base64"),publicKey:J.toString(),details:{signerId:q,receiverId:x.contractId,methodName:x.methodName,nonce:z,blockHash:N.serialize.base_encode(O)}}}async function q1(x){if(!Z)throw new D("toolbox_near_no_signer");let[q,J]=await Z.signTransaction(x);return J}async function J1(x){return(await X.sendTransaction(x)).transaction.hash}async function Q1(x){if("assetValue"in x){let z=BigInt("115123062500")+BigInt("108059500000"),U=await Z1(),H=z*BigInt(U.toString());return b.from({chain:B.Near,value:H.toString(),fromBaseDecimal:y[B.Near]})}let q=Z?await j():void 0;return P(x,q)}async function Z1(){try{return await X.query({request_type:"call_function",finality:"final",account_id:"system",method_name:"gas_price",args_base64:""})}catch{return"100000000"}}async function $1(x,q,J){if(!Z)throw new D("toolbox_near_no_signer");let R=await j(),{utils:z}=await import("near-api-js"),U=z.format.parseNearAmount(J)||"0";return(await R.createAccount(x,z.PublicKey.fromString(q),BigInt(U))).transaction.hash}async function A(x){try{if(!Z)throw new D("toolbox_near_no_signer");let{transactions:q}=await import("near-api-js"),{contractId:J,methodName:R,args:z,deposit:U}=x,H=await j(),N=await P({methodName:R,args:z||{},contractId:J}),F=q.functionCall(R,z||{},N.getBaseValue("bigint"),BigInt(U||"0"));return(await H.signAndSendTransaction({receiverId:J,actions:[F]})).transaction.hash}catch(q){throw new D("toolbox_near_transfer_failed",{error:q})}}async function X1(x){let{createNearContract:q}=await import("../../chunk-kbnwrc5b.js"),J=await j();return q({account:J,contractId:x.contractId,viewMethods:x.viewMethods,changeMethods:x.changeMethods})}async function z1(x){if(!Z)throw new D("toolbox_near_no_signer");if(x.actions.length===0)throw new D("toolbox_near_empty_batch");return(await(await j()).signAndSendTransaction({receiverId:x.receiverId,actions:x.actions})).transaction.hash}async function L1(x){let q=await j();return T({contractId:x,account:q})}async function M1(x){try{let q=await j(x),J;try{let R=await q.getBalance();J=b.from({chain:B.Near,value:R,fromBaseDecimal:y[B.Near]})}catch{J=b.from({chain:B.Near,value:"0",fromBaseDecimal:y[B.Near]})}return[J]}catch(q){throw new D("toolbox_near_balance_failed",{error:q})}}async function P(x,q){let J=await L(x).when(d,()=>V.SIMPLE_TRANSFER).when(o,(H)=>e(H.methodName)).when(i,(H)=>t(H.actions)).when(n,()=>V.ACCOUNT_CREATION).when(c,()=>V.CONTRACT_DEPLOYMENT).when(s,(H)=>{if(!q)throw new D("toolbox_near_no_account");return H.customEstimator(q)}).otherwise(()=>{throw new D("toolbox_near_invalid_gas_params")}),R=await g(),U=BigInt(J)*BigInt(1000000000000)*BigInt(R);return b.from({chain:B.Near,value:U,fromBaseDecimal:y[B.Near]})}async function g(){try{return(await X.gasPrice(null)).gas_price||"100000000"}catch(x){return"100000000"}}return{getAddress:w,getPublicKey:async()=>Z?(await Z.getPublicKey()).toString():"",provider:X,transfer:a,createTransaction:x1,createContractFunctionCall:W1,estimateTransactionFee:Q1,broadcastTransaction:J1,signTransaction:q1,getBalance:M1,validateAddress:K,getSignerFromPhrase:(x)=>I(x),getSignerFromPrivateKey:u,callFunction:A,createSubAccount:$1,createContract:X1,executeBatchTransaction:z1,nep141:L1,getGasPrice:g,estimateGas:P}}export{K as validateNearAddress,D1 as tgasToGas,d as isSimpleTransfer,s as isCustomEstimator,c as isContractDeployment,o as isContractCall,i as isBatchTransaction,n as isAccountCreation,h1 as getNearToolbox,u as getNearSignerFromPrivateKey,I as getNearSignerFromPhrase,h as getFullAccessPublicKey,e as getContractMethodGas,j1 as gasToTGas,t as estimateBatchGas,E as createNearContract,T as createNEP141Token,V as GAS_COSTS};
2
+
3
+ //# debugId=95CF7FA437DD8E2C64756E2164756E21
@@ -0,0 +1,13 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../src/near/toolbox.ts", "../src/near/helpers/core.ts", "../src/near/helpers/gasEstimation.ts", "../src/near/helpers/nep141.ts"],
4
+ "sourcesContent": [
5
+ "import {\n AssetValue,\n BaseDecimal,\n Chain,\n type DerivationPathArray,\n SKConfig,\n SwapKitError,\n} from \"@swapkit/helpers\";\nimport type { Account } from \"near-api-js\";\nimport type { SignedTransaction, Transaction } from \"near-api-js/lib/transaction\";\nimport {\n getFullAccessPublicKey,\n getNearSignerFromPhrase,\n getNearSignerFromPrivateKey,\n validateNearAddress,\n} from \"./helpers\";\nimport {\n GAS_COSTS,\n estimateBatchGas,\n getContractMethodGas,\n isAccountCreation,\n isBatchTransaction,\n isContractCall,\n isContractDeployment,\n isCustomEstimator,\n isSimpleTransfer,\n} from \"./helpers/gasEstimation\";\nimport { createNEP141Token } from \"./helpers/nep141\";\nimport type {\n NearCreateTransactionParams,\n NearFunctionCallParams,\n NearToolboxParams,\n NearTransferParams,\n} from \"./types\";\nimport type { NearContractInterface, NearGasEstimateParams } from \"./types/contract\";\n\nexport async function getNearToolbox(toolboxParams?: NearToolboxParams) {\n const { P, match } = await import(\"ts-pattern\");\n const { providers } = await import(\"near-api-js\");\n const signer = await match(toolboxParams)\n .with({ phrase: P.string }, async (params) => {\n const signer = await getNearSignerFromPhrase(params);\n return signer;\n })\n .with({ signer: P.any }, ({ signer }) => signer)\n .otherwise(() => undefined);\n\n const url = SKConfig.get(\"rpcUrls\")[Chain.Near];\n\n const provider = new providers.JsonRpcProvider({ url });\n\n async function getAccount(address?: string) {\n if (!signer) {\n throw new SwapKitError(\"toolbox_near_no_signer\");\n }\n const { Account } = await import(\"near-api-js\");\n\n const _address = address || (await getAddress());\n\n const account = new Account(_address, provider, signer);\n\n return account;\n }\n\n async function getAddress() {\n if (!signer) {\n throw new SwapKitError(\"toolbox_near_no_signer\");\n }\n const address = await signer.getAddress();\n return address;\n }\n\n async function transfer(params: NearTransferParams) {\n if (!signer) {\n throw new SwapKitError(\"toolbox_near_no_signer\");\n }\n\n const { recipient, assetValue } = params;\n\n if (!validateNearAddress(recipient)) {\n throw new SwapKitError(\"toolbox_near_invalid_address\");\n }\n\n const account = await getAccount();\n\n if (assetValue.isGasAsset === false) {\n // NEP-141 token transfer\n const contractId = assetValue.address;\n if (!contractId) {\n throw new SwapKitError(\"toolbox_near_missing_contract_address\");\n }\n\n const amount = assetValue.getBaseValue(\"string\");\n\n return callFunction({\n contractId,\n methodName: \"ft_transfer\",\n args: {\n receiver_id: recipient,\n amount,\n memo: params.memo,\n },\n });\n }\n\n try {\n const transferAmount = assetValue.getBaseValue(\"string\");\n\n const result = await account.transfer({\n receiverId: recipient,\n amount: transferAmount,\n });\n\n return result.transaction.hash;\n } catch (error) {\n throw new SwapKitError(\"toolbox_near_transfer_failed\", { error });\n }\n }\n\n async function createTransaction(params: NearCreateTransactionParams) {\n const { recipient, assetValue, memo, feeRate: gas, attachedDeposit, sender } = params;\n\n const signerId = sender || (await getAddress());\n const publicKey = await getFullAccessPublicKey(provider, signerId);\n\n const accessKey = await provider.query({\n request_type: \"view_access_key\",\n finality: \"final\",\n account_id: signerId,\n });\n\n const nonce = (accessKey as any).nonce + 1;\n\n const baseAmount = assetValue.getBaseValue(\"bigint\");\n\n const { SCHEMA } = await import(\"near-api-js/lib/transaction\");\n const { transactions, utils } = await import(\"near-api-js\");\n\n const txActions = [transactions.transfer(baseAmount)];\n\n if (memo && attachedDeposit) {\n txActions.push(\n transactions.functionCall(\"memo\", { memo }, BigInt(gas), BigInt(attachedDeposit)),\n );\n }\n\n const block = await provider.block({ finality: \"final\" });\n const blockHash = utils.serialize.base_decode(block.header.hash);\n\n const transaction = transactions.createTransaction(\n signerId,\n publicKey,\n recipient,\n nonce,\n txActions,\n blockHash,\n );\n\n const serializedTx = utils.serialize.serialize(SCHEMA.Transaction, transaction);\n const serializedBase64 = Buffer.from(serializedTx).toString(\"base64\");\n\n return {\n serialized: serializedBase64,\n publicKey: publicKey.toString(),\n details: {\n signerId: await getAddress(),\n nonce: nonce,\n blockHash: utils.serialize.base_encode(blockHash),\n },\n };\n }\n\n async function createContractFunctionCall(params: {\n accountId: string;\n contractId: string;\n methodName: string;\n args: any;\n gas: string;\n attachedDeposit: string;\n }) {\n const { accountId } = params;\n\n const publicKey = await getFullAccessPublicKey(provider, accountId);\n\n const accessKey = await provider.query({\n request_type: \"view_access_key\",\n finality: \"final\",\n account_id: accountId,\n public_key: publicKey.toString(),\n });\n const nonce = (accessKey as any).nonce + 1;\n\n const { SCHEMA } = await import(\"near-api-js/lib/transaction\");\n const { transactions, utils } = await import(\"near-api-js\");\n const block = await provider.block({ finality: \"final\" });\n const blockHash = utils.serialize.base_decode(block.header.hash);\n\n const actions = [\n transactions.functionCall(\n params.methodName,\n Buffer.from(JSON.stringify(params.args)),\n BigInt(params.gas),\n BigInt(params.attachedDeposit),\n ),\n ];\n\n const transaction = transactions.createTransaction(\n accountId,\n publicKey,\n params.contractId,\n nonce,\n actions,\n blockHash,\n );\n\n const serializedTx = utils.serialize.serialize(SCHEMA.Transaction, transaction);\n const serializedBase64 = Buffer.from(serializedTx).toString(\"base64\");\n\n return {\n serialized: serializedBase64,\n publicKey: publicKey.toString(),\n details: {\n signerId: accountId,\n receiverId: params.contractId,\n methodName: params.methodName,\n nonce: nonce,\n blockHash: utils.serialize.base_encode(blockHash),\n },\n };\n }\n\n async function signTransaction(transaction: Transaction) {\n if (!signer) {\n throw new SwapKitError(\"toolbox_near_no_signer\");\n }\n\n // Use the new signer interface method\n const [_hash, signedTx] = await signer.signTransaction(transaction);\n return signedTx;\n }\n\n async function broadcastTransaction(signedTransaction: SignedTransaction) {\n const result = await provider.sendTransaction(signedTransaction);\n return result.transaction.hash;\n }\n\n async function estimateTransactionFee(params: NearTransferParams | NearGasEstimateParams) {\n if (\"assetValue\" in params) {\n const baseTransferCost = \"115123062500\"; // gas units for transfer\n const receiptCreationCost = \"108059500000\"; // gas units for receipt\n\n const totalGasUnits = BigInt(baseTransferCost) + BigInt(receiptCreationCost);\n\n const gasPrice = await getCurrentGasPrice();\n\n // NEAR doesn't support fee multipliers - gas price is fixed by the network\n const totalCostYocto = totalGasUnits * BigInt(gasPrice.toString());\n\n return AssetValue.from({\n chain: Chain.Near,\n value: totalCostYocto.toString(),\n fromBaseDecimal: BaseDecimal[Chain.Near],\n });\n }\n\n // Handle new gas estimation params\n const account = signer ? await getAccount() : undefined;\n return estimateGas(params, account);\n }\n\n async function getCurrentGasPrice() {\n try {\n const result = await provider.query({\n request_type: \"call_function\",\n finality: \"final\",\n account_id: \"system\",\n method_name: \"gas_price\",\n args_base64: \"\",\n });\n\n return result;\n } catch {\n return \"100000000\"; // 0.0001 NEAR per Tgas\n }\n }\n\n async function createSubAccount(subAccountId: string, publicKey: string, initialBalance: string) {\n if (!signer) {\n throw new SwapKitError(\"toolbox_near_no_signer\");\n }\n\n const account = await getAccount();\n const { utils } = await import(\"near-api-js\");\n\n const balanceInYocto = utils.format.parseNearAmount(initialBalance) || \"0\";\n\n const result = await account.createAccount(\n subAccountId,\n utils.PublicKey.fromString(publicKey),\n BigInt(balanceInYocto),\n );\n\n return result.transaction.hash;\n }\n\n async function callFunction(params: NearFunctionCallParams) {\n try {\n if (!signer) {\n throw new SwapKitError(\"toolbox_near_no_signer\");\n }\n\n const { transactions } = await import(\"near-api-js\");\n\n const { contractId, methodName, args, deposit } = params;\n const account = await getAccount();\n\n const estimatedGas = await estimateGas({\n methodName,\n args: args || {},\n contractId,\n });\n\n const functionAction = transactions.functionCall(\n methodName,\n args || {},\n estimatedGas.getBaseValue(\"bigint\"),\n BigInt(deposit || \"0\"),\n );\n\n const result = await account.signAndSendTransaction({\n receiverId: contractId,\n actions: [functionAction],\n });\n\n return result.transaction.hash;\n } catch (error) {\n throw new SwapKitError(\"toolbox_near_transfer_failed\", { error });\n }\n }\n\n // Create typed contract interface\n async function createContract(contractInterface: NearContractInterface) {\n const { createNearContract } = await import(\"./helpers/contractFactory\");\n const account = await getAccount();\n\n return createNearContract({\n account,\n contractId: contractInterface.contractId,\n viewMethods: contractInterface.viewMethods,\n changeMethods: contractInterface.changeMethods,\n });\n }\n\n async function executeBatchTransaction(batch: { receiverId: string; actions: any[] }) {\n if (!signer) {\n throw new SwapKitError(\"toolbox_near_no_signer\");\n }\n\n if (batch.actions.length === 0) {\n throw new SwapKitError(\"toolbox_near_empty_batch\");\n }\n\n const account = await getAccount();\n\n // Use account.signAndSendTransaction for batch operations\n const result = await account.signAndSendTransaction({\n receiverId: batch.receiverId,\n actions: batch.actions,\n });\n\n return result.transaction.hash;\n }\n\n async function nep141(contractId: string) {\n const account = await getAccount();\n return createNEP141Token({ contractId, account });\n }\n\n async function getBalance(address: string) {\n try {\n const account = await getAccount(address);\n\n let nativeBalance: AssetValue;\n try {\n const value = await account.getBalance();\n\n nativeBalance = AssetValue.from({\n chain: Chain.Near,\n value,\n fromBaseDecimal: BaseDecimal[Chain.Near],\n });\n } catch {\n nativeBalance = AssetValue.from({\n chain: Chain.Near,\n value: \"0\",\n fromBaseDecimal: BaseDecimal[Chain.Near],\n });\n }\n\n // // Then, fetch token balances from API\n // let tokenBalances: AssetValue[] = [];\n // try {\n // const apiBalances = await SwapKitApi.getChainBalance({\n // chain: Chain.Near,\n // address,\n // scamFilter,\n // });\n\n // tokenBalances = apiBalances\n // .filter(({ identifier }) => identifier !== Chain.Near) // Filter out native NEAR\n // .map(({ identifier, value, decimal }) => {\n // return new AssetValue({\n // decimal: decimal || BaseDecimal[Chain.Near],\n // value,\n // identifier,\n // });\n // });\n // } catch (error) {\n // // If API fails, just return on-chain balance\n // console.warn(\"Failed to fetch token balances from API:\", error);\n // }\n\n // Merge native balance with token balances\n // return [nativeBalance, ...tokenBalances];\n return [nativeBalance];\n } catch (error) {\n throw new SwapKitError(\"toolbox_near_balance_failed\", { error });\n }\n }\n\n async function estimateGas(params: NearGasEstimateParams, account?: Account) {\n const gasInTGas = await match(params)\n .when(isSimpleTransfer, () => GAS_COSTS.SIMPLE_TRANSFER)\n .when(isContractCall, (p) => getContractMethodGas(p.methodName))\n .when(isBatchTransaction, (p) => estimateBatchGas(p.actions))\n .when(isAccountCreation, () => GAS_COSTS.ACCOUNT_CREATION)\n .when(isContractDeployment, () => GAS_COSTS.CONTRACT_DEPLOYMENT)\n .when(isCustomEstimator, (p) => {\n if (!account) {\n throw new SwapKitError(\"toolbox_near_no_account\");\n }\n return p.customEstimator(account);\n })\n .otherwise(() => {\n throw new SwapKitError(\"toolbox_near_invalid_gas_params\");\n });\n\n // Convert TGas to gas price in NEAR\n const gasPrice = await getGasPrice();\n const gasInUnits = BigInt(gasInTGas) * BigInt(10 ** 12); // Convert TGas to gas units\n const costInYoctoNear = gasInUnits * BigInt(gasPrice);\n\n return AssetValue.from({\n chain: Chain.Near,\n value: costInYoctoNear,\n fromBaseDecimal: BaseDecimal[Chain.Near],\n });\n }\n\n // Get current gas price from network\n async function getGasPrice() {\n try {\n const result = await provider.gasPrice(null);\n return result.gas_price || \"100000000\";\n } catch (_error) {\n // Fallback to default\n return \"100000000\";\n }\n }\n\n return {\n getAddress,\n getPublicKey: async () => (signer ? (await signer.getPublicKey()).toString() : \"\"),\n provider,\n transfer,\n createTransaction,\n createContractFunctionCall,\n estimateTransactionFee,\n broadcastTransaction,\n signTransaction,\n getBalance,\n validateAddress: validateNearAddress,\n getSignerFromPhrase: (params: {\n phrase: string;\n derivationPath?: DerivationPathArray;\n index?: number;\n }) => getNearSignerFromPhrase(params),\n getSignerFromPrivateKey: getNearSignerFromPrivateKey,\n callFunction,\n createSubAccount,\n createContract,\n executeBatchTransaction,\n nep141,\n getGasPrice,\n estimateGas,\n };\n}\n",
6
+ "import type { Provider } from \"@near-js/providers\";\nimport { type DerivationPathArray, SwapKitError, derivationPathToString } from \"@swapkit/helpers\";\nimport { type KeyPair, KeyPairSigner } from \"near-api-js\";\nimport type { NearSigner } from \"../types\";\n\nexport async function validateNearAddress(address: string) {\n // Use the official NEAR SDK validation function if available\n try {\n const { validateAccountId } = await import(\"near-sdk-js\");\n return validateAccountId(address);\n } catch {\n const ACCOUNT_ID_REGEX = /^(([a-z\\d]+[-_])*[a-z\\d]+\\.)*([a-z\\d]+[-_])*[a-z\\d]+$/;\n\n return address.length >= 2 && address.length <= 64 && ACCOUNT_ID_REGEX.test(address);\n }\n}\n\nexport async function getNearSignerFromPhrase(params: {\n phrase: string;\n derivationPath?: DerivationPathArray;\n index?: number;\n}) {\n const { parseSeedPhrase } = await import(\"near-seed-phrase\");\n const { KeyPair } = await import(\"near-api-js\");\n\n // Handle derivation path logic here\n // NEAR uses a 3-level derivation path: m/44'/397'/index'\n const index = params.index || 0;\n const derivationPath = params.derivationPath\n ? derivationPathToString(params.derivationPath.slice(0, 3) as [number, number, number])\n : `m/44'/397'/${index}'`;\n\n const { secretKey } = parseSeedPhrase(params.phrase, derivationPath);\n const keyPair = KeyPair.fromString(secretKey as any);\n\n return createNearSignerFromKeyPair(keyPair);\n}\n\nexport async function getNearSignerFromPrivateKey(privateKey: string) {\n const { KeyPair } = await import(\"near-api-js/lib/utils\");\n const keyPair = KeyPair.fromString(privateKey as any);\n return createNearSignerFromKeyPair(keyPair);\n}\n\nclass SKKeyPairSigner extends KeyPairSigner {\n #keyPair: KeyPair;\n\n constructor(keyPair: KeyPair) {\n super(keyPair);\n this.#keyPair = keyPair;\n }\n\n getAddress(): Promise<string> {\n // For implicit accounts, derive account ID from public key\n // NEAR implicit accounts use hex representation of the public key\n const publicKey = this.#keyPair.getPublicKey();\n const hexAddress = Buffer.from(publicKey.data).toString(\"hex\");\n return Promise.resolve(hexAddress);\n }\n}\n\nfunction createNearSignerFromKeyPair(keyPair: KeyPair): NearSigner {\n const keyPairSigner = new SKKeyPairSigner(keyPair);\n\n return keyPairSigner;\n}\n\nexport async function getFullAccessPublicKey(provider: Provider, accountId: string) {\n // Get the first full access key for the account\n const response = await provider.query({\n request_type: \"view_access_key_list\",\n finality: \"final\",\n account_id: accountId,\n });\n\n const fullAccessKey = (response as any).keys.find(\n (key: any) => key.access_key.permission === \"FullAccess\",\n );\n\n if (!fullAccessKey) {\n throw new SwapKitError(\"toolbox_near_invalid_address\");\n }\n\n const { utils } = await import(\"near-api-js\");\n return utils.PublicKey.fromString(fullAccessKey.public_key);\n}\n",
7
+ "import type { Account } from \"near-api-js\";\nimport type { NearGasEstimateParams } from \"../types/contract\";\n\n// Gas constants (in TGas - 10^12 gas units)\nexport const GAS_COSTS = {\n SIMPLE_TRANSFER: \"1\", // 1 TGas\n TOKEN_TRANSFER: \"100\", // 100 TGas\n CONTRACT_CALL: \"100\", // 100 TGas base\n ACCOUNT_CREATION: \"30\", // 30 TGas\n CONTRACT_DEPLOYMENT: \"200\", // 200 TGas\n ACCESS_KEY_ADDITION: \"5\", // 5 TGas\n ACCESS_KEY_DELETION: \"5\", // 5 TGas\n STAKE: \"10\", // 10 TGas\n STORAGE_DEPOSIT: \"100\", // 100 TGas\n} as const;\n\n// Type guards for discriminated union\nexport function isSimpleTransfer(\n params: NearGasEstimateParams,\n): params is { recipient: string; amount: string } {\n return \"recipient\" in params && \"amount\" in params && !(\"contractId\" in params);\n}\n\nexport function isContractCall(params: NearGasEstimateParams): params is {\n contractId: string;\n methodName: string;\n args?: Record<string, any>;\n attachedDeposit?: string;\n} {\n return \"contractId\" in params && \"methodName\" in params;\n}\n\nexport function isBatchTransaction(params: NearGasEstimateParams): params is { actions: any[] } {\n return \"actions\" in params;\n}\n\nexport function isAccountCreation(params: NearGasEstimateParams): params is {\n newAccountId: string;\n publicKey?: string;\n} {\n return \"newAccountId\" in params;\n}\n\nexport function isContractDeployment(\n params: NearGasEstimateParams,\n): params is { contractCode: Uint8Array } {\n return \"contractCode\" in params;\n}\n\nexport function isCustomEstimator(params: NearGasEstimateParams): params is {\n customEstimator: (account: Account) => Promise<string>;\n} {\n return \"customEstimator\" in params;\n}\n\n// Helper function to estimate gas for batch actions\nexport function estimateBatchGas(actions: any[]) {\n let totalGas = 0;\n\n for (const action of actions) {\n switch (action.enum) {\n case \"transfer\":\n totalGas += Number(GAS_COSTS.SIMPLE_TRANSFER);\n break;\n case \"functionCall\":\n totalGas += Number(GAS_COSTS.CONTRACT_CALL);\n break;\n case \"createAccount\":\n totalGas += Number(GAS_COSTS.ACCOUNT_CREATION);\n break;\n case \"deployContract\":\n totalGas += Number(GAS_COSTS.CONTRACT_DEPLOYMENT);\n break;\n case \"addKey\":\n totalGas += Number(GAS_COSTS.ACCESS_KEY_ADDITION);\n break;\n case \"deleteKey\":\n totalGas += Number(GAS_COSTS.ACCESS_KEY_DELETION);\n break;\n case \"stake\":\n totalGas += Number(GAS_COSTS.STAKE);\n break;\n default:\n totalGas += Number(GAS_COSTS.CONTRACT_CALL);\n }\n }\n\n return totalGas.toString();\n}\n\n// Helper function to get gas cost for contract methods\nexport function getContractMethodGas(methodName: string) {\n if (methodName === \"ft_transfer\" || methodName === \"ft_transfer_call\") {\n return GAS_COSTS.TOKEN_TRANSFER;\n }\n if (methodName === \"storage_deposit\") {\n return GAS_COSTS.STORAGE_DEPOSIT;\n }\n return GAS_COSTS.CONTRACT_CALL;\n}\n\n// Convert TGas string to gas units\nexport function tgasToGas(tgas: string): string {\n return (BigInt(tgas) * BigInt(10 ** 12)).toString();\n}\n\n// Convert gas units to TGas\nexport function gasToTGas(gas: string): string {\n return (BigInt(gas) / BigInt(10 ** 12)).toString();\n}\n",
8
+ "import type { Account, Contract } from \"near-api-js\";\nimport { createNearContract } from \"./contractFactory\";\n\nconst DEFAULT_STORAGE_DEPOSIT = \"1250000000000000000000\"; // 0.00125 NEAR\n\n// Define NEP-141 contract interface\ninterface NEP141Contract extends Contract {\n // View methods\n ft_balance_of(args: { account_id: string }): Promise<string>;\n ft_total_supply(): Promise<string>;\n ft_metadata(): Promise<any>;\n storage_balance_of(args: { account_id: string }): Promise<any>;\n storage_balance_bounds(): Promise<any>;\n\n // Change methods\n ft_transfer(args: any, gas: any, deposit: any): Promise<any>;\n ft_transfer_call(args: any, gas: any, deposit: any): Promise<any>;\n storage_deposit(args: any, gas: any, deposit: any): Promise<any>;\n storage_withdraw(args: any, gas: any, deposit: any): Promise<any>;\n storage_unregister(force?: boolean, gas?: any): Promise<any>;\n}\n\nexport async function createNEP141Token({\n contractId,\n account,\n}: {\n contractId: string;\n account: Account;\n}) {\n const BN = (await import(\"bn.js\")).default;\n\n const contract = await createNearContract<NEP141Contract>({\n account,\n contractId,\n viewMethods: [\n \"ft_balance_of\",\n \"ft_total_supply\",\n \"ft_metadata\",\n \"storage_balance_of\",\n \"storage_balance_bounds\",\n ],\n changeMethods: [\n \"ft_transfer\",\n \"ft_transfer_call\",\n \"storage_deposit\",\n \"storage_withdraw\",\n \"storage_unregister\",\n ],\n });\n\n // Helper to ensure storage before transfers\n const ensureStorageFor = async (accountId: string) => {\n const balance = await contract.storage_balance_of({ account_id: accountId });\n if (!balance) {\n // Get minimum storage requirement\n const bounds = await contract.storage_balance_bounds();\n const deposit = bounds?.min || DEFAULT_STORAGE_DEPOSIT;\n\n await contract.storage_deposit(\n { account_id: accountId },\n new BN(\"100000000000000\"), // 100 TGas\n new BN(deposit),\n );\n }\n };\n\n return {\n transfer: async (receiverId: string, amount: string, memo?: string) => {\n // Ensure recipient has storage before transfer\n await ensureStorageFor(receiverId);\n\n return contract.ft_transfer(\n { receiver_id: receiverId, amount, memo },\n new BN(\"100000000000000\"), // 100 TGas\n new BN(\"1\"), // 1 yoctoNEAR for security\n );\n },\n\n transferCall: async (receiverId: string, amount: string, msg: string, memo?: string) => {\n // Ensure recipient has storage before transfer\n await ensureStorageFor(receiverId);\n\n return contract.ft_transfer_call(\n { receiver_id: receiverId, amount, memo, msg },\n new BN(\"100000000000000\"), // 100 TGas\n new BN(\"1\"), // 1 yoctoNEAR for security\n );\n },\n\n balanceOf: (accountId: string) => contract.ft_balance_of({ account_id: accountId }),\n\n totalSupply: () => contract.ft_total_supply(),\n\n metadata: () => contract.ft_metadata(),\n\n storageBalanceOf: (accountId: string) => contract.storage_balance_of({ account_id: accountId }),\n\n storageDeposit: (accountId?: string, amount?: string) =>\n contract.storage_deposit(\n { account_id: accountId },\n new BN(\"100000000000000\"),\n new BN(amount || DEFAULT_STORAGE_DEPOSIT),\n ),\n\n ensureStorage: ensureStorageFor,\n\n // Raw contract access for advanced use cases\n contract,\n };\n}\n"
9
+ ],
10
+ "mappings": "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",
11
+ "debugId": "95CF7FA437DD8E2C64756E2164756E21",
12
+ "names": []
13
+ }
@@ -1,3 +1,3 @@
1
- import{c as W,d as X}from"../../chunk-38ztynv0.js";import{AssetValue as _,Chain as Y,SKConfig as $,SwapKitError as q}from"@swapkit/helpers";function G(j){return j.startsWith("account_rdx1")&&j.length===66}function v({networkApi:j}){return async function J(K){let M=await x({address:K,networkApi:j});return B({resources:M,networkApi:j})}}async function x({address:j,networkApi:J}){let K=!0,M,L=[],z=await I(J);while(K){let Q={address:j,limit_per_page:100,cursor:M,at_ledger_state:{state_version:z}},N=await J.state.innerClient.entityFungiblesPage({stateEntityFungiblesPageRequest:Q});if(L=L.concat(N.items),N.next_cursor)M=N.next_cursor;else K=!1}return L}async function B({resources:j,networkApi:J}){let K=[],M=50,L=[];for(let z=0;z<j.length;z+=50)L.push(j.slice(z,z+50));for(let z of L){let Q=z.map((H)=>H.resource_address),N=await J.state.getEntityDetailsVaultAggregated(Q),V=new Map;for(let H of N)if(H.details!==void 0){let O=H.metadata?.items.find((Z)=>Z.key==="symbol"),U=O?.value.typed.type==="String"?O.value.typed.value:"?";if(H.details.type==="FungibleResource")V.set(H.address,{decimals:H.details.divisibility,symbol:U})}for(let H of z)if(H.aggregation_level==="Global"){let O=V.get(H.resource_address)||{decimals:0,symbol:"?"},U=_.from({asset:O.symbol!==Y.Radix?`${Y.Radix}.${O.symbol}-${H.resource_address}`:"XRD.XRD",value:H.amount});K.push(U)}}return K}async function I(j){return j.status.getCurrent().then((J)=>J.ledger_state.state_version)}var T=async({dappConfig:j}={})=>{let{RadixDappToolkit:J}=await import("@radixdlt/radix-dapp-toolkit"),{GatewayApiClient:K}=await import("@radixdlt/babylon-gateway-api-sdk"),M=j||$.get("integrations").radix,L=J({...M,networkId:M.network?.networkId||1}),z=K.initialize(L.gatewayApi.clientConfig);return{getAddress:()=>"",getBalance:v({networkApi:z}),networkApi:z,validateAddress:G,signAndBroadcast:()=>{throw new q("toolbox_radix_method_not_supported",{method:"signAndBroadcast"})}}};export{G as radixValidateAddress,T as RadixToolbox};
1
+ import{d as W,e as X}from"../../chunk-s47y8512.js";import{AssetValue as _,Chain as Y,SKConfig as $,SwapKitError as q}from"@swapkit/helpers";function G(j){return j.startsWith("account_rdx1")&&j.length===66}function v({networkApi:j}){return async function J(K){let M=await x({address:K,networkApi:j});return B({resources:M,networkApi:j})}}async function x({address:j,networkApi:J}){let K=!0,M,L=[],z=await I(J);while(K){let Q={address:j,limit_per_page:100,cursor:M,at_ledger_state:{state_version:z}},N=await J.state.innerClient.entityFungiblesPage({stateEntityFungiblesPageRequest:Q});if(L=L.concat(N.items),N.next_cursor)M=N.next_cursor;else K=!1}return L}async function B({resources:j,networkApi:J}){let K=[],M=50,L=[];for(let z=0;z<j.length;z+=50)L.push(j.slice(z,z+50));for(let z of L){let Q=z.map((H)=>H.resource_address),N=await J.state.getEntityDetailsVaultAggregated(Q),V=new Map;for(let H of N)if(H.details!==void 0){let O=H.metadata?.items.find((Z)=>Z.key==="symbol"),U=O?.value.typed.type==="String"?O.value.typed.value:"?";if(H.details.type==="FungibleResource")V.set(H.address,{decimals:H.details.divisibility,symbol:U})}for(let H of z)if(H.aggregation_level==="Global"){let O=V.get(H.resource_address)||{decimals:0,symbol:"?"},U=_.from({asset:O.symbol!==Y.Radix?`${Y.Radix}.${O.symbol}-${H.resource_address}`:"XRD.XRD",value:H.amount});K.push(U)}}return K}async function I(j){return j.status.getCurrent().then((J)=>J.ledger_state.state_version)}var T=async({dappConfig:j}={})=>{let{RadixDappToolkit:J}=await import("@radixdlt/radix-dapp-toolkit"),{GatewayApiClient:K}=await import("@radixdlt/babylon-gateway-api-sdk"),M=j||$.get("integrations").radix,L=J({...M,networkId:M.network?.networkId||1}),z=K.initialize(L.gatewayApi.clientConfig);return{getAddress:()=>"",getBalance:v({networkApi:z}),networkApi:z,validateAddress:G,signAndBroadcast:()=>{throw new q("toolbox_radix_method_not_supported",{method:"signAndBroadcast"})}}};export{G as radixValidateAddress,T as RadixToolbox};
2
2
 
3
- //# debugId=4B2D89D1C135052464756E2164756E21
3
+ //# debugId=327A752010E93B5364756E2164756E21
@@ -5,6 +5,6 @@
5
5
  "import type {\n FungibleResourcesCollectionItem,\n GatewayApiClient,\n StateEntityDetailsVaultResponseItem,\n StateEntityFungiblesPageRequest,\n StateEntityFungiblesPageResponse,\n} from \"@radixdlt/babylon-gateway-api-sdk\";\nimport {\n AssetValue,\n Chain,\n SKConfig,\n type SKConfigIntegrations,\n SwapKitError,\n} from \"@swapkit/helpers\";\n\nexport type RadixWallet = Awaited<ReturnType<typeof RadixToolbox>>;\n\ntype RadixGetBalanceParams = {\n address: string;\n networkApi: GatewayApiClient;\n};\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({\n resources: fungibleResources,\n networkApi,\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 limit_per_page: 100,\n cursor: nextCursor,\n at_ledger_state: {\n state_version: stateVersion,\n },\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\n// biome-ignore lint/complexity/noExcessiveCognitiveComplexity: <explanation>\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 =\n metaDataSymbol?.value.typed.type === \"String\" ? metaDataSymbol.value.typed.value : \"?\";\n\n if (result.details.type === \"FungibleResource\") {\n divisibilities.set(result.address, {\n decimals: result.details.divisibility,\n symbol,\n });\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\nasync function currentStateVersion(networkApi: GatewayApiClient) {\n return networkApi.status.getCurrent().then((status) => status.ledger_state.state_version);\n}\n\nexport const RadixToolbox = async ({\n dappConfig,\n}: { 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({\n ...config,\n networkId: config.network?.networkId || 1,\n });\n\n const networkApi = GatewayApiClient.initialize(radixToolkit.gatewayApi.clientConfig);\n\n return {\n getAddress: () => \"\",\n getBalance: getBalance({ networkApi }),\n networkApi,\n validateAddress: radixValidateAddress,\n signAndBroadcast: (() => {\n throw new SwapKitError(\"toolbox_radix_method_not_supported\", { method: \"signAndBroadcast\" });\n }) as (params: any) => Promise<string>,\n };\n};\n"
6
6
  ],
7
7
  "mappings": "mDAOA,qBACE,WACA,cACA,kBAEA,yBAUK,SAAS,CAAoB,CAAC,EAAiB,CACpD,OAAO,EAAQ,WAAW,cAAc,GAAK,EAAQ,SAAW,GAGlE,SAAS,CAAU,EAAG,cAAgD,CACpE,OAAO,eAAe,CAAU,CAAC,EAAiB,CAChD,IAAM,EAAoB,MAAM,EAAuB,CAAE,UAAS,YAAW,CAAC,EAK9E,OAJyB,EAA2B,CAClD,UAAW,EACX,YACF,CAAC,GAKL,eAAe,CAAsB,EACnC,UACA,cACoE,CACpE,IAAI,EAAc,GACd,EACA,EAAuD,CAAC,EACtD,EAAe,MAAM,EAAoB,CAAU,EACzD,MAAO,EAAa,CAClB,IAAM,EAAmE,CACvE,QAAS,EACT,eAAgB,IAChB,OAAQ,EACR,gBAAiB,CACf,cAAe,CACjB,CACF,EAEM,EACJ,MAAM,EAAW,MAAM,YAAY,oBAAoB,CACrD,gCAAiC,CACnC,CAAC,EAGH,GADA,EAAoB,EAAkB,OAAO,EAAiC,KAAK,EAC/E,EAAiC,YACnC,EAAa,EAAiC,YAE9C,OAAc,GAGlB,OAAO,EAIT,eAAe,CAA0B,EACvC,YACA,cAIwB,CACxB,IAAM,EAAyB,CAAC,EAC1B,EAAa,GAGb,EAAuD,CAAC,EAC9D,QAAS,EAAI,EAAG,EAAI,EAAU,OAAQ,GAJnB,GAKjB,EAAgB,KAAK,EAAU,MAAM,EAAG,EALvB,EAKqC,CAAC,EAGzD,QAAW,KAAS,EAAiB,CACnC,IAAM,EAAY,EAAM,IAAI,CAAC,IAAS,EAAK,gBAAgB,EACrD,EACJ,MAAM,EAAW,MAAM,gCAAgC,CAAS,EAE5D,EAAiB,IAAI,IAE3B,QAAW,KAAU,EACnB,GAAI,EAAO,UAAY,OAAW,CAChC,IAAM,EAAiB,EAAO,UAAU,MAAM,KAAK,CAAC,IAAS,EAAK,MAAQ,QAAQ,EAC5E,EACJ,GAAgB,MAAM,MAAM,OAAS,SAAW,EAAe,MAAM,MAAM,MAAQ,IAErF,GAAI,EAAO,QAAQ,OAAS,mBAC1B,EAAe,IAAI,EAAO,QAAS,CACjC,SAAU,EAAO,QAAQ,aACzB,QACF,CAAC,EAKP,QAAW,KAAQ,EACjB,GAAI,EAAK,oBAAsB,SAAU,CACvC,IAAM,EAAY,EAAe,IAAI,EAAK,gBAAgB,GAAK,CAAE,SAAU,EAAG,OAAQ,GAAI,EAEpF,EAAU,EAAW,KAAK,CAC9B,MACE,EAAU,SAAW,EAAM,MACvB,GAAG,EAAM,SAAS,EAAU,UAAU,EAAK,mBAC3C,UACN,MAAO,EAAK,MACd,CAAC,EACD,EAAS,KAAK,CAAO,GAK3B,OAAO,EAGT,eAAe,CAAmB,CAAC,EAA8B,CAC/D,OAAO,EAAW,OAAO,WAAW,EAAE,KAAK,CAAC,IAAW,EAAO,aAAa,aAAa,EAGnF,IAAM,EAAe,OAC1B,cACkD,CAAC,IAAM,CACzD,IAAQ,oBAAqB,KAAa,yCAClC,oBAAqB,KAAa,6CACpC,EAAS,GAAc,EAAS,IAAI,cAAc,EAAE,MAEpD,EAAe,EAAiB,IACjC,EACH,UAAW,EAAO,SAAS,WAAa,CAC1C,CAAC,EAEK,EAAa,EAAiB,WAAW,EAAa,WAAW,YAAY,EAEnF,MAAO,CACL,WAAY,IAAM,GAClB,WAAY,EAAW,CAAE,YAAW,CAAC,EACrC,aACA,gBAAiB,EACjB,iBAAmB,IAAM,CACvB,MAAM,IAAI,EAAa,qCAAsC,CAAE,OAAQ,kBAAmB,CAAC,EAE/F",
8
- "debugId": "4B2D89D1C135052464756E2164756E21",
8
+ "debugId": "327A752010E93B5364756E2164756E21",
9
9
  "names": []
10
10
  }
@@ -1,3 +1,3 @@
1
- import"../../chunk-38ztynv0.js";import{AssetValue as $,BaseDecimal as L,Chain as J,SKConfig as U,SwapKitError as M,SwapKitNumber as _}from"@swapkit/helpers";import{Client as f,Wallet as B,isValidAddress as b,xrpToDrops as R}from"xrpl";import{hashes as V}from"xrpl";var D={ACCOUNT_NOT_FOUND:19};function N(y){let z=B.fromMnemonic(y);return{getAddress:()=>Promise.resolve(z.address),signTransaction:(Y)=>Promise.resolve(z.sign(Y))}}function W(y){return b(y)}var E=async(y={})=>{let z="signer"in y&&y.signer?y.signer:("phrase"in y)&&y.phrase?N(y.phrase):void 0,Y=U.get("rpcUrls")[J.Ripple];if(!Y)throw new M({errorKey:"toolbox_ripple_rpc_not_configured",info:{chain:J.Ripple}});let Q=new f(Y);await Q.connect();let Z=()=>{if(!z)throw new M({errorKey:"toolbox_ripple_signer_not_found"});return z.getAddress()},H=async(j)=>{let G=j||await Z();try{let X=(await Q.request({command:"account_info",account:G})).result.account_data.Balance;return[$.from({chain:J.Ripple,value:X,fromBaseDecimal:L[J.Ripple]})]}catch(q){if(q.data.error_code===D.ACCOUNT_NOT_FOUND)return[$.from({chain:J.Ripple,value:0})];throw new M("toolbox_ripple_get_balance_error",{info:{address:G,error:q}})}},O=async()=>{let G=(await Q.request({command:"fee"})).result.drops.open_ledger_fee;return $.from({chain:J.Ripple,value:_.fromBigInt(BigInt(G),L[J.Ripple])})},k=async({assetValue:j,recipient:G,memo:q,sender:X})=>{if(!W(G))throw new M({errorKey:"core_transaction_invalid_recipient_address"});let P=X||await Z();if(!j.isGasAsset||j.chain!==J.Ripple)throw new M({errorKey:"toolbox_ripple_asset_not_supported",info:{asset:j.toString()}});let I={TransactionType:"Payment",Account:P,Amount:R(j.getValue("string")),Destination:G};if(q)I.Memos=[{Memo:{MemoData:Buffer.from(q).toString("hex")}}];return await Q.autofill(I)},v=(j)=>{if(!z)throw new M({errorKey:"toolbox_ripple_signer_not_found"});return z.signTransaction(j)},F=async(j)=>{let q=(await Q.submitAndWait(j)).result;if(q.validated)return q.hash;throw new M({errorKey:"toolbox_ripple_broadcast_error",info:{chain:J.Ripple}})};return{signer:z,createSigner:N,getAddress:Z,validateAddress:W,getBalance:H,createTransaction:k,signTransaction:v,broadcastTransaction:F,transfer:async(j)=>{if(!z)throw new M({errorKey:"toolbox_ripple_signer_not_found"});let G=await z.getAddress(),q=await k({...j,sender:G}),X=await v(q);return F(X.tx_blob)},estimateTransactionFee:O,disconnect:()=>Q.disconnect()}};export{W as rippleValidateAddress,V as hashes,E as getRippleToolbox};
1
+ import"../../chunk-s47y8512.js";import{AssetValue as $,BaseDecimal as L,Chain as J,SKConfig as U,SwapKitError as M,SwapKitNumber as _}from"@swapkit/helpers";import{Client as f,Wallet as B,isValidAddress as b,xrpToDrops as R}from"xrpl";import{hashes as V}from"xrpl";var D={ACCOUNT_NOT_FOUND:19};function N(y){let z=B.fromMnemonic(y);return{getAddress:()=>Promise.resolve(z.address),signTransaction:(Y)=>Promise.resolve(z.sign(Y))}}function W(y){return b(y)}var E=async(y={})=>{let z="signer"in y&&y.signer?y.signer:("phrase"in y)&&y.phrase?N(y.phrase):void 0,Y=U.get("rpcUrls")[J.Ripple];if(!Y)throw new M({errorKey:"toolbox_ripple_rpc_not_configured",info:{chain:J.Ripple}});let Q=new f(Y);await Q.connect();let Z=()=>{if(!z)throw new M({errorKey:"toolbox_ripple_signer_not_found"});return z.getAddress()},H=async(j)=>{let G=j||await Z();try{let X=(await Q.request({command:"account_info",account:G})).result.account_data.Balance;return[$.from({chain:J.Ripple,value:X,fromBaseDecimal:L[J.Ripple]})]}catch(q){if(q.data.error_code===D.ACCOUNT_NOT_FOUND)return[$.from({chain:J.Ripple,value:0})];throw new M("toolbox_ripple_get_balance_error",{info:{address:G,error:q}})}},O=async()=>{let G=(await Q.request({command:"fee"})).result.drops.open_ledger_fee;return $.from({chain:J.Ripple,value:_.fromBigInt(BigInt(G),L[J.Ripple])})},k=async({assetValue:j,recipient:G,memo:q,sender:X})=>{if(!W(G))throw new M({errorKey:"core_transaction_invalid_recipient_address"});let P=X||await Z();if(!j.isGasAsset||j.chain!==J.Ripple)throw new M({errorKey:"toolbox_ripple_asset_not_supported",info:{asset:j.toString()}});let I={TransactionType:"Payment",Account:P,Amount:R(j.getValue("string")),Destination:G};if(q)I.Memos=[{Memo:{MemoData:Buffer.from(q).toString("hex")}}];return await Q.autofill(I)},v=(j)=>{if(!z)throw new M({errorKey:"toolbox_ripple_signer_not_found"});return z.signTransaction(j)},F=async(j)=>{let q=(await Q.submitAndWait(j)).result;if(q.validated)return q.hash;throw new M({errorKey:"toolbox_ripple_broadcast_error",info:{chain:J.Ripple}})};return{signer:z,createSigner:N,getAddress:Z,validateAddress:W,getBalance:H,createTransaction:k,signTransaction:v,broadcastTransaction:F,transfer:async(j)=>{if(!z)throw new M({errorKey:"toolbox_ripple_signer_not_found"});let G=await z.getAddress(),q=await k({...j,sender:G}),X=await v(q);return F(X.tx_blob)},estimateTransactionFee:O,disconnect:()=>Q.disconnect()}};export{W as rippleValidateAddress,V as hashes,E as getRippleToolbox};
2
2
 
3
3
  //# debugId=AD02AAC0A5102C8964756E2164756E21
@@ -1,3 +1,3 @@
1
- import{c as S,d as f}from"../../chunk-38ztynv0.js";import{AssetValue as j,BaseDecimal as F,Chain as q,DerivationPath as Q,NetworkDerivationPath as X,SKConfig as Y,SwapKitError as R,derivationPathToString as Z,updateDerivationPath as _}from"@swapkit/helpers";import{P as d}from"ts-pattern";import{match as $}from"ts-pattern";async function v(T){try{let a=await fetch(`https://lite-api.jup.ag/tokens/v1/token/${T}`);if(!a.ok)return null;return await a.json()}catch{return null}}async function I(T){let a=await h(),{PublicKey:l}=await import("@solana/web3.js"),{TOKEN_PROGRAM_ID:o}=await import("@solana/spl-token"),y=new l(T),p=[],P=await a.getBalance(y);if(P>0)p.push(j.from({chain:q.Solana,value:P,fromBaseDecimal:F[q.Solana]}));let x=await a.getParsedTokenAccountsByOwner(y,{programId:o});for(let{account:m}of x.value){let b=m.data.parsed.info,O=b.mint,w=b.tokenAmount.amount;if(Number(w)===0)continue;let M=await v(O),E=M?.symbol||"UNKNOWN",G=M?.decimals||b.tokenAmount.decimals;p.push(j.from({chain:q.Solana,symbol:E,address:O,value:w,fromBaseDecimal:G}))}return p}async function J(){let{PublicKey:T}=await import("@solana/web3.js");return(a)=>{try{let l=new T(a);return T.isOnCurve(l.toBytes())}catch(l){return!1}}}async function g(T){let a=T&&"index"in T?T.index||0:0,l=Z(T&&"derivationPath"in T&&T.derivationPath?T.derivationPath:_(X[q.Solana],{index:a})),o=await $(T).with({phrase:d.string},({phrase:p})=>z({phrase:p,derivationPath:l})).with({signer:d.any},({signer:p})=>p).otherwise(()=>{return});function y(){return o?.publicKey?B(o.publicKey):""}return{getConnection:h,getAddress:y,createKeysForPath:z,getAddressFromPubKey:B,getPubkeyFromAddress:L,createTransaction:A(h),createTransactionFromInstructions:k,getBalance:(p)=>{let P=p||y();if(!P)throw new R("core_wallet_connection_not_found");return I(P)},transfer:s(h,o),broadcastTransaction:u(h),getAddressValidator:J,signTransaction:C(h,o),estimateTransactionFee:H(h)}}function H(T){return async({recipient:a,assetValue:l,memo:o,isProgramDerivedAddress:y,sender:p})=>{let P=await T(),m=(await A(T)({recipient:a,assetValue:l,memo:o,isProgramDerivedAddress:y,sender:p})).compileMessage(),b=await P.getFeeForMessage(m);if(b.value===null)throw new R("toolbox_solana_fee_estimation_failed","Could not estimate Solana fee.");return j.from({chain:q.Solana,value:b.value,fromBaseDecimal:F[q.Solana]})}}async function h(){let{Connection:T}=await import("@solana/web3.js");return new T(Y.get("rpcUrls").SOL,"confirmed")}function K(T){return async({assetValue:a,recipient:l,sender:o,isProgramDerivedAddress:y})=>{let p=await T(),P=await L(o);if(a.isGasAsset){let{Transaction:x,SystemProgram:m,PublicKey:b}=await import("@solana/web3.js");return new x().add(m.transfer({fromPubkey:P,lamports:a.getBaseValue("number"),toPubkey:new b(l)}))}if(a.address)return D({amount:a.getBaseValue("number"),connection:p,decimals:a.decimal,from:P,recipient:l,tokenAddress:a.address,isProgramDerivedAddress:y});return}}async function D({tokenAddress:T,recipient:a,from:l,connection:o,amount:y,decimals:p,isProgramDerivedAddress:P}){let{getAssociatedTokenAddress:x,getAccount:m,createAssociatedTokenAccountInstruction:b,createTransferCheckedInstruction:O}=await import("@solana/spl-token"),{Transaction:w,PublicKey:M}=await import("@solana/web3.js"),E=new w,G=new M(T),N=await x(G,l),U=new M(a),W=await x(G,U,P),V=!1;try{await m(o,W),V=!0}catch(n){}if(!V)E.add(b(l,W,U,G));return E.add(O(N,G,W,l,y,p)),E}function A(T){return async({recipient:a,assetValue:l,memo:o,isProgramDerivedAddress:y,sender:p})=>{let{createMemoInstruction:P}=await import("@solana/spl-memo"),x=await L(p),m=await J();if(!(y||m(a)))throw new R("core_transaction_invalid_recipient_address");let b=await T(),O=await K(T)({assetValue:l,recipient:a,sender:p,isProgramDerivedAddress:y});if(!O)throw new R("core_transaction_invalid_sender_address");if(o)O.add(P(o));let w=await b.getLatestBlockhash();return O.recentBlockhash=w.blockhash,O.feePayer=x,O}}async function k({instructions:T}){let{Transaction:a}=await import("@solana/web3.js"),l=new a().add(...T);if(!l)throw new R("core_transaction_invalid_sender_address");return l}function s(T,a){return async({recipient:l,assetValue:o,memo:y,isProgramDerivedAddress:p})=>{if(!a)throw new R("core_transaction_invalid_sender_address");let P=a.publicKey?.toString()??(await a.connect()).publicKey.toString(),x=await A(T)({recipient:l,assetValue:o,memo:y,isProgramDerivedAddress:p,sender:P});if("connect"in a){let m=await a.signTransaction(x);return u(T)(m)}return x.sign(a),u(T)(x)}}function u(T){return async(a)=>{return(await T()).sendRawTransaction(a.serialize())}}function C(T,a){return async(l)=>{let{VersionedTransaction:o}=await import("@solana/web3.js");if(!a)throw new R("toolbox_solana_no_signer");if(!(l instanceof o)){let p=await(await T()).getLatestBlockhash();l.recentBlockhash=p.blockhash,l.feePayer=a.publicKey||void 0}if("connect"in a)return await a.signTransaction(l);return await l.sign([a]),l}}async function z({phrase:T,derivationPath:a=Q.SOL}){let{HDKey:l}=await import("micro-key-producer/slip10.js"),{mnemonicToSeedSync:o}=await import("@scure/bip39"),{Keypair:y}=await import("@solana/web3.js"),p=o(T),P=l.fromMasterSeed(p);return y.fromSeed(P.derive(a,!0).privateKey)}function B(T){return T.toString()}async function L(T){let{PublicKey:a}=await import("@solana/web3.js");return new a(T)}export{g as getSolanaToolbox,J as getSolanaAddressValidator,z as createKeysForPath};
1
+ import{d as S,e as f}from"../../chunk-s47y8512.js";import{AssetValue as j,BaseDecimal as F,Chain as q,DerivationPath as Q,NetworkDerivationPath as X,SKConfig as Y,SwapKitError as R,derivationPathToString as Z,updateDerivationPath as _}from"@swapkit/helpers";import{P as d}from"ts-pattern";import{match as $}from"ts-pattern";async function v(T){try{let a=await fetch(`https://lite-api.jup.ag/tokens/v1/token/${T}`);if(!a.ok)return null;return await a.json()}catch{return null}}async function I(T){let a=await h(),{PublicKey:l}=await import("@solana/web3.js"),{TOKEN_PROGRAM_ID:o}=await import("@solana/spl-token"),y=new l(T),p=[],P=await a.getBalance(y);if(P>0)p.push(j.from({chain:q.Solana,value:P,fromBaseDecimal:F[q.Solana]}));let x=await a.getParsedTokenAccountsByOwner(y,{programId:o});for(let{account:m}of x.value){let b=m.data.parsed.info,O=b.mint,w=b.tokenAmount.amount;if(Number(w)===0)continue;let M=await v(O),E=M?.symbol||"UNKNOWN",G=M?.decimals||b.tokenAmount.decimals;p.push(j.from({chain:q.Solana,symbol:E,address:O,value:w,fromBaseDecimal:G}))}return p}async function J(){let{PublicKey:T}=await import("@solana/web3.js");return(a)=>{try{let l=new T(a);return T.isOnCurve(l.toBytes())}catch(l){return!1}}}async function g(T){let a=T&&"index"in T?T.index||0:0,l=Z(T&&"derivationPath"in T&&T.derivationPath?T.derivationPath:_(X[q.Solana],{index:a})),o=await $(T).with({phrase:d.string},({phrase:p})=>z({phrase:p,derivationPath:l})).with({signer:d.any},({signer:p})=>p).otherwise(()=>{return});function y(){return o?.publicKey?B(o.publicKey):""}return{getConnection:h,getAddress:y,createKeysForPath:z,getAddressFromPubKey:B,getPubkeyFromAddress:L,createTransaction:A(h),createTransactionFromInstructions:k,getBalance:(p)=>{let P=p||y();if(!P)throw new R("core_wallet_connection_not_found");return I(P)},transfer:s(h,o),broadcastTransaction:u(h),getAddressValidator:J,signTransaction:C(h,o),estimateTransactionFee:H(h)}}function H(T){return async({recipient:a,assetValue:l,memo:o,isProgramDerivedAddress:y,sender:p})=>{let P=await T(),m=(await A(T)({recipient:a,assetValue:l,memo:o,isProgramDerivedAddress:y,sender:p})).compileMessage(),b=await P.getFeeForMessage(m);if(b.value===null)throw new R("toolbox_solana_fee_estimation_failed","Could not estimate Solana fee.");return j.from({chain:q.Solana,value:b.value,fromBaseDecimal:F[q.Solana]})}}async function h(){let{Connection:T}=await import("@solana/web3.js");return new T(Y.get("rpcUrls").SOL,"confirmed")}function K(T){return async({assetValue:a,recipient:l,sender:o,isProgramDerivedAddress:y})=>{let p=await T(),P=await L(o);if(a.isGasAsset){let{Transaction:x,SystemProgram:m,PublicKey:b}=await import("@solana/web3.js");return new x().add(m.transfer({fromPubkey:P,lamports:a.getBaseValue("number"),toPubkey:new b(l)}))}if(a.address)return D({amount:a.getBaseValue("number"),connection:p,decimals:a.decimal,from:P,recipient:l,tokenAddress:a.address,isProgramDerivedAddress:y});return}}async function D({tokenAddress:T,recipient:a,from:l,connection:o,amount:y,decimals:p,isProgramDerivedAddress:P}){let{getAssociatedTokenAddress:x,getAccount:m,createAssociatedTokenAccountInstruction:b,createTransferCheckedInstruction:O}=await import("@solana/spl-token"),{Transaction:w,PublicKey:M}=await import("@solana/web3.js"),E=new w,G=new M(T),N=await x(G,l),U=new M(a),W=await x(G,U,P),V=!1;try{await m(o,W),V=!0}catch(n){}if(!V)E.add(b(l,W,U,G));return E.add(O(N,G,W,l,y,p)),E}function A(T){return async({recipient:a,assetValue:l,memo:o,isProgramDerivedAddress:y,sender:p})=>{let{createMemoInstruction:P}=await import("@solana/spl-memo"),x=await L(p),m=await J();if(!(y||m(a)))throw new R("core_transaction_invalid_recipient_address");let b=await T(),O=await K(T)({assetValue:l,recipient:a,sender:p,isProgramDerivedAddress:y});if(!O)throw new R("core_transaction_invalid_sender_address");if(o)O.add(P(o));let w=await b.getLatestBlockhash();return O.recentBlockhash=w.blockhash,O.feePayer=x,O}}async function k({instructions:T}){let{Transaction:a}=await import("@solana/web3.js"),l=new a().add(...T);if(!l)throw new R("core_transaction_invalid_sender_address");return l}function s(T,a){return async({recipient:l,assetValue:o,memo:y,isProgramDerivedAddress:p})=>{if(!a)throw new R("core_transaction_invalid_sender_address");let P=a.publicKey?.toString()??(await a.connect()).publicKey.toString(),x=await A(T)({recipient:l,assetValue:o,memo:y,isProgramDerivedAddress:p,sender:P});if("connect"in a){let m=await a.signTransaction(x);return u(T)(m)}return x.sign(a),u(T)(x)}}function u(T){return async(a)=>{return(await T()).sendRawTransaction(a.serialize())}}function C(T,a){return async(l)=>{let{VersionedTransaction:o}=await import("@solana/web3.js");if(!a)throw new R("toolbox_solana_no_signer");if(!(l instanceof o)){let p=await(await T()).getLatestBlockhash();l.recentBlockhash=p.blockhash,l.feePayer=a.publicKey||void 0}if("connect"in a)return await a.signTransaction(l);return await l.sign([a]),l}}async function z({phrase:T,derivationPath:a=Q.SOL}){let{HDKey:l}=await import("micro-key-producer/slip10.js"),{mnemonicToSeedSync:o}=await import("@scure/bip39"),{Keypair:y}=await import("@solana/web3.js"),p=o(T),P=l.fromMasterSeed(p);return y.fromSeed(P.derive(a,!0).privateKey)}function B(T){return T.toString()}async function L(T){let{PublicKey:a}=await import("@solana/web3.js");return new a(T)}export{g as getSolanaToolbox,J as getSolanaAddressValidator,z as createKeysForPath};
2
2
 
3
- //# debugId=2D4DCF3D429F413464756E2164756E21
3
+ //# debugId=2CBE2D773995397464756E2164756E21
@@ -5,6 +5,6 @@
5
5
  "import type {\n Connection,\n PublicKey,\n Signer,\n Transaction,\n TransactionInstruction,\n VersionedTransaction,\n} from \"@solana/web3.js\";\nimport {\n AssetValue,\n BaseDecimal,\n Chain,\n DerivationPath,\n type DerivationPathArray,\n type GenericCreateTransactionParams,\n NetworkDerivationPath,\n SKConfig,\n SwapKitError,\n derivationPathToString,\n updateDerivationPath,\n} from \"@swapkit/helpers\";\nimport { P } from \"ts-pattern\";\nimport { match } from \"ts-pattern\";\nimport type { SolanaCreateTransactionParams, SolanaProvider, SolanaTransferParams } from \".\";\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};\n\nasync function fetchTokenMetaData(mintAddress: string): Promise<TokenMetadata | null> {\n try {\n const response = await fetch(`https://lite-api.jup.ag/tokens/v1/token/${mintAddress}`);\n if (!response.ok) return null;\n return await response.json();\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 balances.push(\n AssetValue.from({\n chain: Chain.Solana,\n value: solBalance,\n fromBaseDecimal: BaseDecimal[Chain.Solana],\n }),\n );\n }\n\n // Get token balances\n const tokenAccounts = await connection.getParsedTokenAccountsByOwner(publicKey, {\n programId: TOKEN_PROGRAM_ID,\n });\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 // Fetch token metadata from Jupiter\n const metadata = await fetchTokenMetaData(mintAddress);\n const symbol = metadata?.symbol || \"UNKNOWN\";\n const decimals = metadata?.decimals || tokenInfo.tokenAmount.decimals;\n\n balances.push(\n AssetValue.from({\n chain: Chain.Solana,\n symbol,\n address: mintAddress,\n value: amount,\n fromBaseDecimal: decimals,\n }),\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?:\n | { signer?: SolanaSigner }\n | { 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({ phrase, derivationPath }))\n .with({ signer: P.any }, ({ signer }) => signer)\n .otherwise(() => undefined);\n\n function getAddress() {\n return signer?.publicKey ? getAddressFromPubKey(signer.publicKey) : \"\";\n }\n\n return {\n getConnection,\n getAddress,\n createKeysForPath,\n getAddressFromPubKey,\n getPubkeyFromAddress,\n createTransaction: createTransaction(getConnection),\n createTransactionFromInstructions,\n 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 transfer: transfer(getConnection, signer),\n broadcastTransaction: broadcastTransaction(getConnection),\n getAddressValidator: getSolanaAddressValidator,\n signTransaction: signTransaction(getConnection, signer),\n estimateTransactionFee: estimateTransactionFee(getConnection),\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\"> & {\n isProgramDerivedAddress?: boolean;\n }) => {\n const connection = await getConnection();\n\n const transaction = await createTransaction(getConnection)({\n recipient,\n assetValue,\n memo,\n isProgramDerivedAddress,\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(\n \"toolbox_solana_fee_estimation_failed\",\n \"Could not estimate Solana fee.\",\n );\n }\n\n return AssetValue.from({\n chain: Chain.Solana,\n value: feeInLamports.value,\n fromBaseDecimal: BaseDecimal[Chain.Solana],\n });\n };\n}\n\nasync function getConnection() {\n const { Connection } = await import(\"@solana/web3.js\");\n return new Connection(SKConfig.get(\"rpcUrls\").SOL, \"confirmed\");\n}\n\nfunction createAssetTransaction(getConnection: () => Promise<Connection>) {\n return async ({\n assetValue,\n recipient,\n sender,\n isProgramDerivedAddress,\n }: 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 if (assetValue.address) {\n return createSolanaTokenTransaction({\n amount: assetValue.getBaseValue(\"number\"),\n connection,\n decimals: assetValue.decimal as number,\n from: fromPubkey,\n recipient,\n tokenAddress: assetValue.address,\n isProgramDerivedAddress,\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(\n from,\n recipientSPLAddress,\n recipientPublicKey,\n tokenPublicKey,\n ),\n );\n }\n\n transaction.add(\n createTransferCheckedInstruction(\n fromSPLAddress,\n tokenPublicKey,\n recipientSPLAddress,\n from,\n amount,\n decimals,\n ),\n );\n\n return transaction;\n}\n\nfunction createTransaction(getConnection: () => Promise<Connection>) {\n return async ({\n recipient,\n assetValue,\n memo,\n isProgramDerivedAddress,\n sender,\n }: 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 recipient,\n sender,\n isProgramDerivedAddress,\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}: { instructions: TransactionInstruction[]; isProgramDerivedAddress?: boolean }) {\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 =\n signer.publicKey?.toString() ??\n (await (signer as SolanaProvider).connect()).publicKey.toString();\n\n const transaction = await createTransaction(getConnection)({\n recipient,\n assetValue,\n memo,\n isProgramDerivedAddress,\n sender,\n });\n\n if (\"connect\" 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}: { phrase: string; derivationPath?: string }) {\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"
6
6
  ],
7
7
  "mappings": "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",
8
- "debugId": "2D4DCF3D429F413464756E2164756E21",
8
+ "debugId": "2CBE2D773995397464756E2164756E21",
9
9
  "names": []
10
10
  }
@@ -1,3 +1,3 @@
1
- import{b as y}from"../../chunk-vhc011em.js";import{c as f,d as g}from"../../chunk-38ztynv0.js";import{hexToU8a as E,isHex as N,u8aToHex as j}from"@polkadot/util";import{decodeAddress as S,encodeAddress as k}from"@polkadot/util-crypto";import{AssetValue as R,Chain as p,SKConfig as D,SwapKitError as c,SwapKitNumber as B}from"@swapkit/helpers";import{P as x,match as F}from"ts-pattern";var v={prefix:0,network:"polkadot",displayName:"Polkadot Relay Chain",symbols:["DOT"],decimals:[10],standardAccount:"*25519",website:"https://polkadot.network"},C={prefix:2112,network:"chainflip",displayName:"Chainflip",symbols:["FLIP"],decimals:[18],standardAccount:"*25519",website:"https://chainflip.io/"},K={prefix:42,network:"substrate",displayName:"Substrate",symbols:[],decimals:[],standardAccount:"*25519",website:"https://substrate.io/"},d={DOT:v,FLIP:C,GENERIC:K};var M=({generic:e=!1,...t}={})=>{return _({chain:p.Polkadot,generic:e,...t})},G=async({generic:e=!1,...t}={})=>{return{...await _({chain:p.Chainflip,generic:e,...t}),getBalance:y(p.Chainflip)}};function te(e,t){switch(e){case p.Chainflip:return G(t);case p.Polkadot:return M(t);default:throw new c("toolbox_substrate_not_supported",{chain:e})}}function u(e){return"address"in e}async function I(e,t){let{Keyring:r}=await import("@polkadot/api"),{cryptoWaitReady:n}=await import("@polkadot/util-crypto");return await n(),new r({type:"sr25519",ss58Format:t}).addFromUri(e)}var w=(e,t)=>e.rpc.system.accountNextIndex(t),b=(e,t)=>{try{let r=A(e,t);return T(r,"ss58",t),!0}catch(r){return!1}},P=(e,{recipient:t,assetValue:r})=>e.tx.balances?.transferAllowDeath?.(t,r.getBaseValue("number")),V=async(e,t,{recipient:r,assetValue:n,sender:a})=>{let i=P(e,{recipient:r,assetValue:n}),o=u(t);if(!i)return;let s=o?t.address:a;if(!s)throw new c("core_transaction_invalid_sender_address");let l=await w(e,s);return(await i.signAndSend(o?t:s,{signer:o?void 0:t,nonce:l}))?.toString()},L=async(e,t,r,{recipient:n,assetValue:a,sender:i})=>{let o=P(e,{recipient:n,assetValue:a}),s=u(t)?t.address:i;if(!s)return;let l=await o?.paymentInfo(s,{nonce:await w(e,s)})||{partialFee:0};return r.set(B.fromBigInt(BigInt(l.partialFee.toString()),r.decimal).getValue("string"))},U=async(e,t)=>{if(t)return e.send(t);return(await e.send()).toString()},H=async(e,t)=>{return await t.signAsync(e)},W=(e,t,r)=>{if(r)return t.signAndSend(e,r);return t.signAndSend(e).toString()},O=async({signer:e,address:t,tx:r,callback:n,api:a})=>{let i=await w(a,t);if(n)r.signAndSend(t,{nonce:i,signer:e},n);return r.signAndSend(t,{nonce:i,signer:e}).toString()};function q(e,t){let r=S(e);return k(r,t)}function A(e,t){return N(e)?E(e):S(e,void 0,t)}function T(e,t="ss58",r){if(t==="hex")return j(e);return k(e,r)}var z=({api:e,network:t,gasAsset:r,signer:n})=>({api:e,network:t,gasAsset:r,decodeAddress:A,encodeAddress:T,convertAddress:q,getBalance:y(p.Polkadot),createKeyring:(a)=>I(a,t.prefix),getAddress:(a)=>{let i=a||n;if(!i)throw new c("core_wallet_not_keypair_wallet");return u(i)?i.address:void 0},createTransaction:(a)=>P(e,a),validateAddress:(a)=>b(a,t.prefix),transfer:(a)=>{if(!n)throw new c("core_wallet_not_keypair_wallet");return V(e,n,a)},estimateTransactionFee:(a)=>{if(!n)throw new c("core_wallet_not_keypair_wallet");return L(e,n,r,a)},sign:(a)=>{if(!n)throw new c("core_wallet_not_keypair_wallet");if(u(n))return H(n,a);throw new c("core_wallet_not_keypair_wallet","Signer does not have keyring pair capabilities required for signing.")},broadcast:U,signAndBroadcast:({tx:a,callback:i,address:o})=>{if(!n)throw new c("core_wallet_not_keypair_wallet");if(u(n))return W(n,a,i);if(o)return O({signer:n,address:o,tx:a,callback:i,api:e});throw new c("core_wallet_not_keypair_wallet","Signer does not have keyring pair capabilities required for signing.")}}),re=({address:e,chain:t})=>{let{prefix:r}=t===p.Polkadot?d.DOT:d.FLIP;return b(e,r)||b(e,d.GENERIC.prefix)};async function _({generic:e,chain:t,...r}){let{ApiPromise:n,WsProvider:a}=await import("@polkadot/api"),i=new a(D.get("rpcUrls")[t]),o=await n.create({provider:i}),s=R.from({chain:t}),l=e?d.GENERIC:d[t],h=await F(r).with({phrase:x.string},({phrase:m})=>I(m,d[t].prefix)).with({signer:x.any},({signer:m})=>m).otherwise(()=>{return});return z({api:o,signer:h,gasAsset:s,network:l})}export{re as substrateValidateAddress,u as isKeyringPair,te as getSubstrateToolbox,_ as createSubstrateToolbox,I as createKeyring,d as SubstrateNetwork,M as PolkadotToolbox,G as ChainflipToolbox,z as BaseSubstrateToolbox};
1
+ import{c as y}from"../../chunk-12xtvbsp.js";import{d as f,e as g}from"../../chunk-s47y8512.js";import{hexToU8a as E,isHex as N,u8aToHex as j}from"@polkadot/util";import{decodeAddress as S,encodeAddress as k}from"@polkadot/util-crypto";import{AssetValue as R,Chain as p,SKConfig as D,SwapKitError as c,SwapKitNumber as B}from"@swapkit/helpers";import{P as x,match as F}from"ts-pattern";var v={prefix:0,network:"polkadot",displayName:"Polkadot Relay Chain",symbols:["DOT"],decimals:[10],standardAccount:"*25519",website:"https://polkadot.network"},C={prefix:2112,network:"chainflip",displayName:"Chainflip",symbols:["FLIP"],decimals:[18],standardAccount:"*25519",website:"https://chainflip.io/"},K={prefix:42,network:"substrate",displayName:"Substrate",symbols:[],decimals:[],standardAccount:"*25519",website:"https://substrate.io/"},d={DOT:v,FLIP:C,GENERIC:K};var M=({generic:e=!1,...t}={})=>{return _({chain:p.Polkadot,generic:e,...t})},G=async({generic:e=!1,...t}={})=>{return{...await _({chain:p.Chainflip,generic:e,...t}),getBalance:y(p.Chainflip)}};function te(e,t){switch(e){case p.Chainflip:return G(t);case p.Polkadot:return M(t);default:throw new c("toolbox_substrate_not_supported",{chain:e})}}function u(e){return"address"in e}async function I(e,t){let{Keyring:r}=await import("@polkadot/api"),{cryptoWaitReady:n}=await import("@polkadot/util-crypto");return await n(),new r({type:"sr25519",ss58Format:t}).addFromUri(e)}var w=(e,t)=>e.rpc.system.accountNextIndex(t),b=(e,t)=>{try{let r=A(e,t);return T(r,"ss58",t),!0}catch(r){return!1}},P=(e,{recipient:t,assetValue:r})=>e.tx.balances?.transferAllowDeath?.(t,r.getBaseValue("number")),V=async(e,t,{recipient:r,assetValue:n,sender:a})=>{let i=P(e,{recipient:r,assetValue:n}),o=u(t);if(!i)return;let s=o?t.address:a;if(!s)throw new c("core_transaction_invalid_sender_address");let l=await w(e,s);return(await i.signAndSend(o?t:s,{signer:o?void 0:t,nonce:l}))?.toString()},L=async(e,t,r,{recipient:n,assetValue:a,sender:i})=>{let o=P(e,{recipient:n,assetValue:a}),s=u(t)?t.address:i;if(!s)return;let l=await o?.paymentInfo(s,{nonce:await w(e,s)})||{partialFee:0};return r.set(B.fromBigInt(BigInt(l.partialFee.toString()),r.decimal).getValue("string"))},U=async(e,t)=>{if(t)return e.send(t);return(await e.send()).toString()},H=async(e,t)=>{return await t.signAsync(e)},W=(e,t,r)=>{if(r)return t.signAndSend(e,r);return t.signAndSend(e).toString()},O=async({signer:e,address:t,tx:r,callback:n,api:a})=>{let i=await w(a,t);if(n)r.signAndSend(t,{nonce:i,signer:e},n);return r.signAndSend(t,{nonce:i,signer:e}).toString()};function q(e,t){let r=S(e);return k(r,t)}function A(e,t){return N(e)?E(e):S(e,void 0,t)}function T(e,t="ss58",r){if(t==="hex")return j(e);return k(e,r)}var z=({api:e,network:t,gasAsset:r,signer:n})=>({api:e,network:t,gasAsset:r,decodeAddress:A,encodeAddress:T,convertAddress:q,getBalance:y(p.Polkadot),createKeyring:(a)=>I(a,t.prefix),getAddress:(a)=>{let i=a||n;if(!i)throw new c("core_wallet_not_keypair_wallet");return u(i)?i.address:void 0},createTransaction:(a)=>P(e,a),validateAddress:(a)=>b(a,t.prefix),transfer:(a)=>{if(!n)throw new c("core_wallet_not_keypair_wallet");return V(e,n,a)},estimateTransactionFee:(a)=>{if(!n)throw new c("core_wallet_not_keypair_wallet");return L(e,n,r,a)},sign:(a)=>{if(!n)throw new c("core_wallet_not_keypair_wallet");if(u(n))return H(n,a);throw new c("core_wallet_not_keypair_wallet","Signer does not have keyring pair capabilities required for signing.")},broadcast:U,signAndBroadcast:({tx:a,callback:i,address:o})=>{if(!n)throw new c("core_wallet_not_keypair_wallet");if(u(n))return W(n,a,i);if(o)return O({signer:n,address:o,tx:a,callback:i,api:e});throw new c("core_wallet_not_keypair_wallet","Signer does not have keyring pair capabilities required for signing.")}}),re=({address:e,chain:t})=>{let{prefix:r}=t===p.Polkadot?d.DOT:d.FLIP;return b(e,r)||b(e,d.GENERIC.prefix)};async function _({generic:e,chain:t,...r}){let{ApiPromise:n,WsProvider:a}=await import("@polkadot/api"),i=new a(D.get("rpcUrls")[t]),o=await n.create({provider:i}),s=R.from({chain:t}),l=e?d.GENERIC:d[t],h=await F(r).with({phrase:x.string},({phrase:m})=>I(m,d[t].prefix)).with({signer:x.any},({signer:m})=>m).otherwise(()=>{return});return z({api:o,signer:h,gasAsset:s,network:l})}export{re as substrateValidateAddress,u as isKeyringPair,te as getSubstrateToolbox,_ as createSubstrateToolbox,I as createKeyring,d as SubstrateNetwork,M as PolkadotToolbox,G as ChainflipToolbox,z as BaseSubstrateToolbox};
2
2
 
3
- //# debugId=3BC9914D28C2781964756E2164756E21
3
+ //# debugId=F328507C793879FA64756E2164756E21
@@ -6,6 +6,6 @@
6
6
  "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 prefix: 0,\n network: \"polkadot\",\n displayName: \"Polkadot Relay Chain\",\n symbols: [\"DOT\"],\n decimals: [10],\n standardAccount: \"*25519\",\n website: \"https://polkadot.network\",\n};\n\nconst chainflipNetwork = {\n prefix: 2112,\n network: \"chainflip\",\n displayName: \"Chainflip\",\n symbols: [\"FLIP\"],\n decimals: [18],\n standardAccount: \"*25519\",\n website: \"https://chainflip.io/\",\n};\n\nconst subtrateNetwork = {\n prefix: 42,\n network: \"substrate\",\n displayName: \"Substrate\",\n symbols: [],\n decimals: [],\n standardAccount: \"*25519\",\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 =\n | typeof polkadotNetwork\n | typeof chainflipNetwork\n | typeof subtrateNetwork;\n\nexport type SubstrateTransferParams = GenericTransferParams & {\n sender?: string;\n};\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"
7
7
  ],
8
8
  "mappings": "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",
9
- "debugId": "3BC9914D28C2781964756E2164756E21",
9
+ "debugId": "F328507C793879FA64756E2164756E21",
10
10
  "names": []
11
11
  }
@@ -1,3 +1,3 @@
1
- import{c as Y,d as Z}from"../../chunk-38ztynv0.js";import{AssetValue as H,Chain as O,NetworkDerivationPath as C,SKConfig as E,SwapKitError as M,derivationPathToString as P,updateDerivationPath as w,warnOnce as m}from"@swapkit/helpers";import{TronWeb as v}from"tronweb";import{P as A,match as W}from"ts-pattern";var x=[{constant:!0,inputs:[{name:"_owner",type:"address"}],name:"balanceOf",outputs:[{name:"balance",type:"uint256"}],type:"function"},{constant:!1,inputs:[{name:"_to",type:"address"},{name:"_value",type:"uint256"}],name:"transfer",outputs:[{name:"success",type:"bool"}],type:"function"},{constant:!0,inputs:[],name:"decimals",outputs:[{name:"",type:"uint8"}],type:"function"},{constant:!0,inputs:[],name:"symbol",outputs:[{name:"",type:"string"}],type:"function"},{constant:!0,inputs:[],name:"name",outputs:[{name:"",type:"string"}],type:"function"}];async function V(){let{TronWeb:q}=await import("tronweb");return(R)=>q.isAddress(R)}async function l({phrase:q,derivationPath:R,index:I}){let T=R||P(w(C[O.Tron],{index:I||0})),{HDKey:$}=await import("@scure/bip32"),{mnemonicToSeedSync:L}=await import("@scure/bip39"),f=L(q),X=$.fromMasterSeed(f).derive(T);if(!X.privateKey)throw new M("toolbox_tron_no_signer");return Buffer.from(X.privateKey).toString("hex")}async function h({phrase:q,derivationPath:R}){let{HDKey:I}=await import("@scure/bip32"),{mnemonicToSeedSync:T}=await import("@scure/bip39"),$=T(q),f=I.fromMasterSeed($).derive(R);if(!f.privateKey)throw new M("toolbox_tron_no_signer");let Q=Buffer.from(f.privateKey).toString("hex"),X=new v({fullHost:E.get("rpcUrls")[O.Tron],privateKey:Q}),j=X.address.fromPrivateKey(Q);return{getAddress:()=>Promise.resolve(typeof j==="string"?j:""),signTransaction:async(k)=>{return await X.trx.sign(k,Q)}}}var c=async(q={})=>{let R=E.get("rpcUrls")[O.Tron],I=void 0,T=new v({fullHost:R,headers:void 0}),$="index"in q?q.index||0:0,L=P("derivationPath"in q&&q.derivationPath?q.derivationPath:w(C[O.Tron],{index:$})),f=await W(q).with({phrase:A.string},async({phrase:y})=>h({phrase:y,derivationPath:L})).with({signer:A.any},({signer:y})=>Promise.resolve(y)).otherwise(()=>Promise.resolve(void 0)),Q=async()=>{if(!f)throw new M("toolbox_tron_no_signer");return await f.getAddress()},X=(y)=>{return T.isAddress(y)},j=(y)=>{return y.address},k=()=>{return 1e8};return{tronWeb:T,getAddress:Q,validateAddress:X,getBalance:async(y,_=!0)=>{let{getBalance:J}=await import("../../chunk-vhc011em.js");try{let z=await J(O.Tron)(y,_);if(z.length>0)return z;let G=await T.trx.getBalance(y);return[H.from({chain:O.Tron,value:G,fromBaseDecimal:6})]}catch(z){m(!0,`Failed to get Tron balance for ${y}: ${z instanceof Error?z.message:z}`);try{let G=await T.trx.getBalance(y);return[H.from({chain:O.Tron,value:G,fromBaseDecimal:6})]}catch(G){return m(!0,`Failed to get native TRX balance for ${y}: ${G instanceof Error?G.message:G}`),[]}}},transfer:async({recipient:y,assetValue:_,memo:J})=>{if(!f)throw new M("toolbox_tron_no_signer");let z=await Q();if(_.isGasAsset){let u=await T.transactionBuilder.sendTrx(y,_.getBaseValue("number"),z);if(J){let g=await T.transactionBuilder.addUpdateData(u,J,"utf8"),K=await f.signTransaction(g),{txid:S}=await T.trx.sendRawTransaction(K);return S}let B=await f.signTransaction(u),{txid:b}=await T.trx.sendRawTransaction(B);return b}let D=j(_);if(!D)throw new M("toolbox_tron_invalid_token_identifier",{identifier:_.toString()});let N=k(),U=await T.contract(x,D);if(!U.methods?.transfer)throw new M("toolbox_tron_token_transfer_failed");let F=await U.methods.transfer(y,_.getBaseValue("string")).send({from:z,feeLimit:N,callValue:0});if(!F)throw new M("toolbox_tron_token_transfer_failed");return F},estimateTransactionFee:({assetValue:y})=>{if(y.isGasAsset)return H.from({chain:O.Tron,value:1});return H.from({chain:O.Tron,value:10})},createTransaction:async(y)=>{if(!f)throw new M("toolbox_tron_no_signer");let{recipient:_,assetValue:J,memo:z}=y,G=await Q();if(J.isGasAsset){let B=await T.transactionBuilder.sendTrx(_,J.getBaseValue("number"),G);if(z)return T.transactionBuilder.addUpdateData(B,z,"utf8");return B}let N=j(J);if(!N)throw new M("toolbox_tron_invalid_token_identifier",{identifier:J.toString()});let U="transfer(address,uint256)",F=[{type:"address",value:_},{type:"uint256",value:J.getBaseValue("string")}];return(await T.transactionBuilder.triggerSmartContract(N,U,{},F,G)).transaction},signTransaction:async(y)=>{if(!f)throw new M("toolbox_tron_no_signer");return await f.signTransaction(y)},broadcastTransaction:async(y)=>{let{txid:_}=await T.trx.sendRawTransaction(y);return _}}};export{x as trc20ABI,l as getTronPrivateKeyFromMnemonic,V as getTronAddressValidator,c as createTronToolbox};
1
+ import{d as Y,e as Z}from"../../chunk-s47y8512.js";import{AssetValue as H,Chain as O,NetworkDerivationPath as C,SKConfig as E,SwapKitError as M,derivationPathToString as P,updateDerivationPath as w,warnOnce as m}from"@swapkit/helpers";import{TronWeb as v}from"tronweb";import{P as A,match as W}from"ts-pattern";var x=[{constant:!0,inputs:[{name:"_owner",type:"address"}],name:"balanceOf",outputs:[{name:"balance",type:"uint256"}],type:"function"},{constant:!1,inputs:[{name:"_to",type:"address"},{name:"_value",type:"uint256"}],name:"transfer",outputs:[{name:"success",type:"bool"}],type:"function"},{constant:!0,inputs:[],name:"decimals",outputs:[{name:"",type:"uint8"}],type:"function"},{constant:!0,inputs:[],name:"symbol",outputs:[{name:"",type:"string"}],type:"function"},{constant:!0,inputs:[],name:"name",outputs:[{name:"",type:"string"}],type:"function"}];async function V(){let{TronWeb:q}=await import("tronweb");return(R)=>q.isAddress(R)}async function l({phrase:q,derivationPath:R,index:I}){let T=R||P(w(C[O.Tron],{index:I||0})),{HDKey:$}=await import("@scure/bip32"),{mnemonicToSeedSync:L}=await import("@scure/bip39"),f=L(q),X=$.fromMasterSeed(f).derive(T);if(!X.privateKey)throw new M("toolbox_tron_no_signer");return Buffer.from(X.privateKey).toString("hex")}async function h({phrase:q,derivationPath:R}){let{HDKey:I}=await import("@scure/bip32"),{mnemonicToSeedSync:T}=await import("@scure/bip39"),$=T(q),f=I.fromMasterSeed($).derive(R);if(!f.privateKey)throw new M("toolbox_tron_no_signer");let Q=Buffer.from(f.privateKey).toString("hex"),X=new v({fullHost:E.get("rpcUrls")[O.Tron],privateKey:Q}),j=X.address.fromPrivateKey(Q);return{getAddress:()=>Promise.resolve(typeof j==="string"?j:""),signTransaction:async(k)=>{return await X.trx.sign(k,Q)}}}var c=async(q={})=>{let R=E.get("rpcUrls")[O.Tron],I=void 0,T=new v({fullHost:R,headers:void 0}),$="index"in q?q.index||0:0,L=P("derivationPath"in q&&q.derivationPath?q.derivationPath:w(C[O.Tron],{index:$})),f=await W(q).with({phrase:A.string},async({phrase:y})=>h({phrase:y,derivationPath:L})).with({signer:A.any},({signer:y})=>Promise.resolve(y)).otherwise(()=>Promise.resolve(void 0)),Q=async()=>{if(!f)throw new M("toolbox_tron_no_signer");return await f.getAddress()},X=(y)=>{return T.isAddress(y)},j=(y)=>{return y.address},k=()=>{return 1e8};return{tronWeb:T,getAddress:Q,validateAddress:X,getBalance:async(y,_=!0)=>{let{getBalance:J}=await import("../../chunk-12xtvbsp.js");try{let z=await J(O.Tron)(y,_);if(z.length>0)return z;let G=await T.trx.getBalance(y);return[H.from({chain:O.Tron,value:G,fromBaseDecimal:6})]}catch(z){m(!0,`Failed to get Tron balance for ${y}: ${z instanceof Error?z.message:z}`);try{let G=await T.trx.getBalance(y);return[H.from({chain:O.Tron,value:G,fromBaseDecimal:6})]}catch(G){return m(!0,`Failed to get native TRX balance for ${y}: ${G instanceof Error?G.message:G}`),[]}}},transfer:async({recipient:y,assetValue:_,memo:J})=>{if(!f)throw new M("toolbox_tron_no_signer");let z=await Q();if(_.isGasAsset){let u=await T.transactionBuilder.sendTrx(y,_.getBaseValue("number"),z);if(J){let g=await T.transactionBuilder.addUpdateData(u,J,"utf8"),K=await f.signTransaction(g),{txid:S}=await T.trx.sendRawTransaction(K);return S}let B=await f.signTransaction(u),{txid:b}=await T.trx.sendRawTransaction(B);return b}let D=j(_);if(!D)throw new M("toolbox_tron_invalid_token_identifier",{identifier:_.toString()});let N=k(),U=await T.contract(x,D);if(!U.methods?.transfer)throw new M("toolbox_tron_token_transfer_failed");let F=await U.methods.transfer(y,_.getBaseValue("string")).send({from:z,feeLimit:N,callValue:0});if(!F)throw new M("toolbox_tron_token_transfer_failed");return F},estimateTransactionFee:({assetValue:y})=>{if(y.isGasAsset)return H.from({chain:O.Tron,value:1});return H.from({chain:O.Tron,value:10})},createTransaction:async(y)=>{if(!f)throw new M("toolbox_tron_no_signer");let{recipient:_,assetValue:J,memo:z}=y,G=await Q();if(J.isGasAsset){let B=await T.transactionBuilder.sendTrx(_,J.getBaseValue("number"),G);if(z)return T.transactionBuilder.addUpdateData(B,z,"utf8");return B}let N=j(J);if(!N)throw new M("toolbox_tron_invalid_token_identifier",{identifier:J.toString()});let U="transfer(address,uint256)",F=[{type:"address",value:_},{type:"uint256",value:J.getBaseValue("string")}];return(await T.transactionBuilder.triggerSmartContract(N,U,{},F,G)).transaction},signTransaction:async(y)=>{if(!f)throw new M("toolbox_tron_no_signer");return await f.signTransaction(y)},broadcastTransaction:async(y)=>{let{txid:_}=await T.trx.sendRawTransaction(y);return _}}};export{x as trc20ABI,l as getTronPrivateKeyFromMnemonic,V as getTronAddressValidator,c as createTronToolbox};
2
2
 
3
- //# debugId=82A956CAF1B1098964756E2164756E21
3
+ //# debugId=34A485FEEB375E5464756E2164756E21
@@ -6,6 +6,6 @@
6
6
  "export const trc20ABI = [\n {\n constant: true,\n inputs: [{ name: \"_owner\", type: \"address\" }],\n name: \"balanceOf\",\n outputs: [{ name: \"balance\", type: \"uint256\" }],\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 type: \"function\",\n },\n {\n constant: true,\n inputs: [],\n name: \"decimals\",\n outputs: [{ name: \"\", type: \"uint8\" }],\n type: \"function\",\n },\n {\n constant: true,\n inputs: [],\n name: \"symbol\",\n outputs: [{ name: \"\", type: \"string\" }],\n type: \"function\",\n },\n {\n constant: true,\n inputs: [],\n name: \"name\",\n outputs: [{ name: \"\", type: \"string\" }],\n type: \"function\",\n },\n] as const;\n"
7
7
  ],
8
8
  "mappings": "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",
9
- "debugId": "82A956CAF1B1098964756E2164756E21",
9
+ "debugId": "34A485FEEB375E5464756E2164756E21",
10
10
  "names": []
11
11
  }