@uswap/toolboxes 4.3.10 → 4.3.12

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 (138) hide show
  1. package/dist/src/cardano/index.cjs.map +2 -2
  2. package/dist/src/cardano/index.js.map +2 -2
  3. package/dist/src/cosmos/index.cjs +2 -2
  4. package/dist/src/cosmos/index.cjs.map +8 -8
  5. package/dist/src/cosmos/index.js +2 -2
  6. package/dist/src/cosmos/index.js.map +8 -8
  7. package/dist/src/evm/index.cjs +2 -2
  8. package/dist/src/evm/index.cjs.map +5 -5
  9. package/dist/src/evm/index.js +2 -2
  10. package/dist/src/evm/index.js.map +5 -5
  11. package/dist/src/index.cjs +3 -3
  12. package/dist/src/index.cjs.map +32 -32
  13. package/dist/src/index.js +3 -3
  14. package/dist/src/index.js.map +32 -32
  15. package/dist/src/near/index.cjs +2 -2
  16. package/dist/src/near/index.cjs.map +5 -5
  17. package/dist/src/near/index.js +2 -2
  18. package/dist/src/near/index.js.map +5 -5
  19. package/dist/src/radix/index.cjs +2 -2
  20. package/dist/src/radix/index.cjs.map +3 -3
  21. package/dist/src/radix/index.js +2 -2
  22. package/dist/src/radix/index.js.map +3 -3
  23. package/dist/src/ripple/index.cjs +2 -2
  24. package/dist/src/ripple/index.cjs.map +3 -3
  25. package/dist/src/ripple/index.js +2 -2
  26. package/dist/src/ripple/index.js.map +3 -3
  27. package/dist/src/solana/index.cjs.map +2 -2
  28. package/dist/src/solana/index.js.map +2 -2
  29. package/dist/src/substrate/index.cjs +2 -2
  30. package/dist/src/substrate/index.cjs.map +4 -4
  31. package/dist/src/substrate/index.js +2 -2
  32. package/dist/src/substrate/index.js.map +4 -4
  33. package/dist/src/sui/index.cjs.map +2 -2
  34. package/dist/src/sui/index.js.map +2 -2
  35. package/dist/src/ton/index.cjs +2 -2
  36. package/dist/src/ton/index.cjs.map +3 -3
  37. package/dist/src/ton/index.js +2 -2
  38. package/dist/src/ton/index.js.map +3 -3
  39. package/dist/src/tron/index.cjs.map +3 -3
  40. package/dist/src/tron/index.js.map +3 -3
  41. package/dist/src/utxo/index.cjs +3 -3
  42. package/dist/src/utxo/index.cjs.map +11 -11
  43. package/dist/src/utxo/index.js +3 -3
  44. package/dist/src/utxo/index.js.map +11 -11
  45. package/dist/types/cardano/toolbox.d.ts +0 -2
  46. package/dist/types/cardano/toolbox.d.ts.map +1 -1
  47. package/dist/types/cosmos/thorchainUtils/addressFormat.d.ts +0 -2
  48. package/dist/types/cosmos/thorchainUtils/addressFormat.d.ts.map +1 -1
  49. package/dist/types/cosmos/thorchainUtils/messages.d.ts +0 -2
  50. package/dist/types/cosmos/thorchainUtils/messages.d.ts.map +1 -1
  51. package/dist/types/cosmos/toolbox/cosmos.d.ts +4 -6
  52. package/dist/types/cosmos/toolbox/cosmos.d.ts.map +1 -1
  53. package/dist/types/cosmos/toolbox/index.d.ts +0 -2
  54. package/dist/types/cosmos/toolbox/index.d.ts.map +1 -1
  55. package/dist/types/cosmos/toolbox/thorchain.d.ts +4 -6
  56. package/dist/types/cosmos/toolbox/thorchain.d.ts.map +1 -1
  57. package/dist/types/cosmos/util.d.ts +0 -2
  58. package/dist/types/cosmos/util.d.ts.map +1 -1
  59. package/dist/types/evm/toolbox/baseEVMToolbox.d.ts +0 -2
  60. package/dist/types/evm/toolbox/baseEVMToolbox.d.ts.map +1 -1
  61. package/dist/types/evm/toolbox/evm.d.ts.map +1 -1
  62. package/dist/types/evm/toolbox/op.d.ts +0 -2
  63. package/dist/types/evm/toolbox/op.d.ts.map +1 -1
  64. package/dist/types/index.d.ts +0 -2
  65. package/dist/types/index.d.ts.map +1 -1
  66. package/dist/types/near/helpers/core.d.ts +0 -2
  67. package/dist/types/near/helpers/core.d.ts.map +1 -1
  68. package/dist/types/near/toolbox.d.ts +0 -2
  69. package/dist/types/near/toolbox.d.ts.map +1 -1
  70. package/dist/types/radix/index.d.ts +2 -4
  71. package/dist/types/radix/index.d.ts.map +1 -1
  72. package/dist/types/ripple/index.d.ts +0 -2
  73. package/dist/types/ripple/index.d.ts.map +1 -1
  74. package/dist/types/solana/toolbox.d.ts +0 -2
  75. package/dist/types/solana/toolbox.d.ts.map +1 -1
  76. package/dist/types/substrate/balance.d.ts +3 -0
  77. package/dist/types/substrate/balance.d.ts.map +1 -1
  78. package/dist/types/substrate/substrate.d.ts +0 -2
  79. package/dist/types/substrate/substrate.d.ts.map +1 -1
  80. package/dist/types/sui/toolbox.d.ts +0 -2
  81. package/dist/types/sui/toolbox.d.ts.map +1 -1
  82. package/dist/types/ton/toolbox.d.ts +0 -2
  83. package/dist/types/ton/toolbox.d.ts.map +1 -1
  84. package/dist/types/tron/helpers/trongrid.d.ts +0 -2
  85. package/dist/types/tron/helpers/trongrid.d.ts.map +1 -1
  86. package/dist/types/tron/toolbox.d.ts +0 -2
  87. package/dist/types/tron/toolbox.d.ts.map +1 -1
  88. package/dist/types/utils.d.ts +3 -0
  89. package/dist/types/utils.d.ts.map +1 -1
  90. package/dist/types/utxo/helpers/api.d.ts +0 -2
  91. package/dist/types/utxo/helpers/api.d.ts.map +1 -1
  92. package/dist/types/utxo/helpers/bchaddrjs.d.ts +0 -2
  93. package/dist/types/utxo/helpers/bchaddrjs.d.ts.map +1 -1
  94. package/dist/types/utxo/helpers/coinselect.d.ts +0 -2
  95. package/dist/types/utxo/helpers/coinselect.d.ts.map +1 -1
  96. package/dist/types/utxo/helpers/txSize.d.ts +0 -2
  97. package/dist/types/utxo/helpers/txSize.d.ts.map +1 -1
  98. package/dist/types/utxo/toolbox/bitcoinCash.d.ts +0 -2
  99. package/dist/types/utxo/toolbox/bitcoinCash.d.ts.map +1 -1
  100. package/dist/types/utxo/toolbox/index.d.ts +0 -2
  101. package/dist/types/utxo/toolbox/index.d.ts.map +1 -1
  102. package/dist/types/utxo/toolbox/utxo.d.ts +0 -2
  103. package/dist/types/utxo/toolbox/utxo.d.ts.map +1 -1
  104. package/dist/types/utxo/toolbox/zcash.d.ts +0 -2
  105. package/dist/types/utxo/toolbox/zcash.d.ts.map +1 -1
  106. package/package.json +2 -2
  107. package/src/cardano/toolbox.ts +0 -2
  108. package/src/cosmos/thorchainUtils/addressFormat.ts +0 -2
  109. package/src/cosmos/thorchainUtils/messages.ts +0 -2
  110. package/src/cosmos/toolbox/cosmos.ts +15 -12
  111. package/src/cosmos/toolbox/index.ts +0 -2
  112. package/src/cosmos/toolbox/thorchain.ts +6 -8
  113. package/src/cosmos/util.ts +1 -3
  114. package/src/evm/__tests__/ethereum.test.ts +6 -2
  115. package/src/evm/toolbox/baseEVMToolbox.ts +4 -6
  116. package/src/evm/toolbox/op.ts +0 -2
  117. package/src/index.ts +0 -2
  118. package/src/near/helpers/core.ts +0 -2
  119. package/src/near/toolbox.ts +0 -2
  120. package/src/radix/index.ts +3 -5
  121. package/src/ripple/index.ts +2 -4
  122. package/src/solana/toolbox.ts +0 -2
  123. package/src/substrate/balance.ts +9 -5
  124. package/src/substrate/substrate.ts +2 -4
  125. package/src/sui/toolbox.ts +0 -2
  126. package/src/ton/toolbox.ts +2 -4
  127. package/src/tron/__tests__/toolbox.test.ts +6 -2
  128. package/src/tron/helpers/trongrid.ts +0 -2
  129. package/src/tron/toolbox.ts +1 -3
  130. package/src/utils.ts +6 -2
  131. package/src/utxo/helpers/api.ts +2 -4
  132. package/src/utxo/helpers/bchaddrjs.ts +0 -2
  133. package/src/utxo/helpers/coinselect.ts +0 -2
  134. package/src/utxo/helpers/txSize.ts +0 -2
  135. package/src/utxo/toolbox/bitcoinCash.ts +0 -2
  136. package/src/utxo/toolbox/index.ts +0 -2
  137. package/src/utxo/toolbox/utxo.ts +2 -4
  138. package/src/utxo/toolbox/zcash.ts +2 -4
@@ -1,4 +1,4 @@
1
- var pn=Object.create;var{getPrototypeOf:an,defineProperty:Lt,getOwnPropertyNames:Tn}=Object;var mn=Object.prototype.hasOwnProperty;var K=(t,u,n)=>{n=t!=null?pn(an(t)):{};let y=u||!t||!t.__esModule?Lt(n,"default",{value:t,enumerable:!0}):n;for(let l of Tn(t))if(!mn.call(y,l))Lt(y,l,{get:()=>t[l],enumerable:!0});return y};var Zt=(t,u)=>{for(var n in u)Lt(t,n,{get:u[n],enumerable:!0,configurable:!0,set:(y)=>u[n]=()=>y})};var X=(t,u)=>()=>(t&&(u=t(t=0)),u);var U=((t)=>typeof require<"u"?require:typeof Proxy<"u"?new Proxy(t,{get:(u,n)=>(typeof require<"u"?require:u)[n]}):t)(function(t){if(typeof require<"u")return require.apply(this,arguments);throw Error('Dynamic require of "'+t+'" is not supported')});import{AssetValue as st,getChainConfig as bn}from"@uswap/helpers";import{SwapKitApi as wn}from"@uswap/helpers/api";function rn(){function t(){let u=Date.now(),n=it||u;return it=n,u>it?u:n+1}return Mn+t().toString(36)}function Kt(t){return async function(n,y=!0){let l=await wn.getChainBalance({address:n,chain:t,scamFilter:y}),{baseDecimal:e}=bn(t),o=l.map(({identifier:p,value:w,decimal:m})=>{return new st({decimal:m||e,identifier:p,value:w})});if(!o.some((p)=>p.isGasAsset))return[st.from({chain:t}),...o];return o}}var Mn,it=0;var Ut=X(()=>{Mn=typeof process<"u"&&process.pid?process.pid.toString(36):""});function E(t){return{getBalance:Kt(t)}}function cn(t){return t}var P=X(()=>{Ut()});import{Chain as c,getChainConfig as xt,getRPCUrl as Rn}from"@uswap/helpers";import{match as fn}from"ts-pattern";async function Q(t,u){let{JsonRpcProvider:n}=await import("ethers");return new n(u||await Rn(t))}function h(t){return t>0n?`0x${t.toString(16)}`:"0x0"}function Gt(t){let{explorerUrl:u,chainIdHex:n,rpcUrls:y}=xt(t);return function(){return t!==c.Ethereum?{...Bn({chain:t}),blockExplorerUrls:[u],chainId:n,rpcUrls:y}:void 0}}function Ht(t){return![c.Arbitrum,c.BinanceSmartChain].includes(t)}function Bn({chain:t}){let{name:u,nativeCurrency:n,baseDecimal:y}=xt(t);return fn(t).with(c.Arbitrum,()=>({chainName:"Arbitrum One",nativeCurrency:{decimals:y,name:"Ethereum",symbol:c.Ethereum}})).with(c.Aurora,()=>({chainName:"Aurora Mainnet",nativeCurrency:{decimals:y,name:"Ethereum",symbol:c.Ethereum}})).with(c.Avalanche,()=>({chainName:"Avalanche Network",nativeCurrency:{decimals:y,name:"Avalanche",symbol:t}})).with(c.Base,()=>({chainName:"Base Mainnet",nativeCurrency:{decimals:y,name:"Ethereum",symbol:c.Ethereum}})).with(c.Berachain,()=>({chainName:"Berachain",nativeCurrency:{decimals:y,name:"Berachain",symbol:"BERA"}})).with(c.XLayer,()=>({chainName:"X Layer",nativeCurrency:{decimals:y,name:"OKB",symbol:"OKB"}})).with(c.BinanceSmartChain,()=>({chainName:"BNB Smart Chain Mainnet",nativeCurrency:{decimals:y,name:"Binance Coin",symbol:"BNB"}})).with(c.Gnosis,()=>({chainName:"Gnosis",nativeCurrency:{decimals:y,name:"xDAI",symbol:"XDAI"}})).with(c.Optimism,()=>({chainName:"OP Mainnet",nativeCurrency:{decimals:y,name:"Ethereum",symbol:c.Ethereum}})).with(c.Polygon,()=>({chainName:"Polygon Mainnet",nativeCurrency:{decimals:y,name:"Polygon",symbol:c.Polygon}})).otherwise(()=>({chainName:u,nativeCurrency:{decimals:y,name:n,symbol:n}}))}var x=()=>{};var Ct;var St=X(()=>{Ct=[{inputs:[{components:[{internalType:"address",name:"target",type:"address"},{internalType:"bytes",name:"callData",type:"bytes"}],internalType:"struct Multicall2.Call[]",name:"calls",type:"tuple[]"}],name:"aggregate",outputs:[{internalType:"uint256",name:"blockNumber",type:"uint256"},{internalType:"bytes[]",name:"returnData",type:"bytes[]"}],stateMutability:"nonpayable",type:"function"},{inputs:[{components:[{internalType:"address",name:"target",type:"address"},{internalType:"bytes",name:"callData",type:"bytes"}],internalType:"struct Multicall2.Call[]",name:"calls",type:"tuple[]"}],name:"blockAndAggregate",outputs:[{internalType:"uint256",name:"blockNumber",type:"uint256"},{internalType:"bytes32",name:"blockHash",type:"bytes32"},{components:[{internalType:"bool",name:"success",type:"bool"},{internalType:"bytes",name:"returnData",type:"bytes"}],internalType:"struct Multicall2.Result[]",name:"returnData",type:"tuple[]"}],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"uint256",name:"blockNumber",type:"uint256"}],name:"getBlockHash",outputs:[{internalType:"bytes32",name:"blockHash",type:"bytes32"}],stateMutability:"view",type:"function"},{inputs:[],name:"getBlockNumber",outputs:[{internalType:"uint256",name:"blockNumber",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"getCurrentBlockCoinbase",outputs:[{internalType:"address",name:"coinbase",type:"address"}],stateMutability:"view",type:"function"},{inputs:[],name:"getCurrentBlockDifficulty",outputs:[{internalType:"uint256",name:"difficulty",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"getCurrentBlockGasLimit",outputs:[{internalType:"uint256",name:"gaslimit",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"getCurrentBlockTimestamp",outputs:[{internalType:"uint256",name:"timestamp",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"addr",type:"address"}],name:"getEthBalance",outputs:[{internalType:"uint256",name:"balance",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"getLastBlockHash",outputs:[{internalType:"bytes32",name:"blockHash",type:"bytes32"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"bool",name:"requireSuccess",type:"bool"},{components:[{internalType:"address",name:"target",type:"address"},{internalType:"bytes",name:"callData",type:"bytes"}],internalType:"struct Multicall2.Call[]",name:"calls",type:"tuple[]"}],name:"tryAggregate",outputs:[{components:[{internalType:"bool",name:"success",type:"bool"},{internalType:"bytes",name:"returnData",type:"bytes"}],internalType:"struct Multicall2.Result[]",name:"returnData",type:"tuple[]"}],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"bool",name:"requireSuccess",type:"bool"},{components:[{internalType:"address",name:"target",type:"address"},{internalType:"bytes",name:"callData",type:"bytes"}],internalType:"struct Multicall2.Call[]",name:"calls",type:"tuple[]"}],name:"tryBlockAndAggregate",outputs:[{internalType:"uint256",name:"blockNumber",type:"uint256"},{internalType:"bytes32",name:"blockHash",type:"bytes32"},{components:[{internalType:"bool",name:"success",type:"bool"},{internalType:"bytes",name:"returnData",type:"bytes"}],internalType:"struct Multicall2.Result[]",name:"returnData",type:"tuple[]"}],stateMutability:"nonpayable",type:"function"}]});import{AssetValue as Dn,applyFeeMultiplierToBigInt as z,Chain as N,EVMChains as Ln,FeeOption as T,isGasAsset as Gn,SwapKitNumber as v,USwapError as M}from"@uswap/helpers";import{erc20ABI as A}from"@uswap/helpers/contracts";import{BrowserProvider as Hn,Contract as jt,getAddress as d,Interface as Vt}from"ethers";import{match as zn}from"ts-pattern";function C({chain:t=N.Ethereum,provider:u,signer:n,isEIP1559Compatible:y=!0}){return{approve:Nn({chain:t,isEIP1559Compatible:y,provider:u,signer:n}),approvedAmount:ht({chain:t,provider:u}),broadcastTransaction:u.broadcastTransaction,call:Nt({chain:t,isEIP1559Compatible:y,provider:u,signer:n}),createApprovalTx:Qn({chain:t,provider:u,signer:n}),createContract:Jt({chain:t,provider:u}),createContractTxObject:Z({chain:t,provider:u}),createTransaction:zt({chain:t,provider:u,signer:n}),createTransferTx:zt({chain:t,provider:u,signer:n}),EIP1193SendTransaction:j(u),estimateCall:At({provider:u,signer:n}),estimateGasLimit:Yn({chain:t,provider:u,signer:n}),estimateGasPrices:s({chain:t,isEIP1559Compatible:y,provider:u}),estimateTransactionFee:Zn({chain:t,isEIP1559Compatible:y,provider:u}),getAddress:()=>{return n?n.getAddress():void 0},getBalance:E(t).getBalance,getNetworkParams:Gt(t),isApproved:Xn({chain:t,provider:u}),sendTransaction:Ft({chain:t,isEIP1559Compatible:y,provider:u,signer:n}),signMessage:n?(l)=>n.signMessage(l):void 0,transfer:Wn({chain:t,isEIP1559Compatible:y,provider:u,signer:n}),validateAddress:(l)=>qt({address:l})}}function qt({address:t}){try{return d(t),!0}catch{return!1}}function S(t){return t instanceof Hn}function I(t,u,n){return new jt(t,Vt.from(u),n)}function Jt({provider:t}){return function(n,y){return new jt(n,Vt.from(y),t)}}function kt({abi:t,funcName:u}){let n=t.find((y)=>y.name===u);if(!n)throw new M("toolbox_evm_no_abi_fragment",{funcName:u});return n.stateMutability&&qn.includes(n.stateMutability)}function _t(t){return d(t)}function j(t){return function({value:n,...y}){if(!S(t))throw new M("toolbox_evm_provider_not_eip1193_compatible");let{gasLimit:l,gasPrice:e,maxFeePerGas:o,maxPriorityFeePerGas:a,...p}=y;return t.send("eth_sendTransaction",[{...p,value:h(BigInt(n||0))}])}}function Et(t,u){let n=V(t,u);if(n)return d(n.toLowerCase());throw new M("toolbox_evm_invalid_gas_asset_address")}function V({chain:t,symbol:u,ticker:n},y){try{let l=t===N.BinanceSmartChain&&u==="BNB"&&n==="BNB",e=t===y&&u===y&&n===y,o=kn.includes(t)&&u==="ETH"&&n==="ETH";if(e||l||o)return Xt[y];return d(u.slice(n.length+1).replace(/^0X/,""))}catch{return null}}function Z({provider:t}){return async({contractAddress:u,abi:n,funcName:y,funcParams:l=[],txOverrides:e})=>I(u,n,t).getFunction(y).populateTransaction(...l.concat(e).filter((o)=>typeof o<"u"))}function s({chain:t,provider:u,isEIP1559Compatible:n=!0}){return zn(t).with(N.Gnosis,()=>{return async function(){try{let{gasPrice:l,maxPriorityFeePerGas:e}=await u.getFeeData();if(!l||e===null)throw new M("toolbox_evm_no_fee_data");return{[T.Average]:{maxFeePerGas:z(l,T.Average),maxPriorityFeePerGas:z(e,T.Average)},[T.Fast]:{maxFeePerGas:z(l,T.Fast),maxPriorityFeePerGas:z(e,T.Fast)},[T.Fastest]:{maxFeePerGas:z(l,T.Fastest),maxPriorityFeePerGas:z(e,T.Fastest)}}}catch(l){throw new M("toolbox_evm_gas_estimation_error",{error:l.msg??l.toString()})}}}).with(N.Arbitrum,()=>{return async function(){try{let{gasPrice:l}=await u.getFeeData();if(!l)throw new M("toolbox_evm_no_fee_data");return{[T.Average]:{gasPrice:l},[T.Fast]:{gasPrice:l},[T.Fastest]:{gasPrice:l}}}catch(l){throw new M("toolbox_evm_gas_estimation_error",{error:l.msg??l.toString()})}}}).otherwise(()=>{return async function(){try{let{maxFeePerGas:l,maxPriorityFeePerGas:e,gasPrice:o}=await u.getFeeData();if(n){if(l===null||e===null)throw new M("toolbox_evm_no_fee_data");return{[T.Average]:{maxFeePerGas:l,maxPriorityFeePerGas:e},[T.Fast]:{maxFeePerGas:z(l,T.Fast),maxPriorityFeePerGas:z(e,T.Fast)},[T.Fastest]:{maxFeePerGas:z(l,T.Fastest),maxPriorityFeePerGas:z(e,T.Fastest)}}}if(!o)throw new M("toolbox_evm_no_gas_price");return{[T.Average]:{gasPrice:o},[T.Fast]:{gasPrice:z(o,T.Fast)},[T.Fastest]:{gasPrice:z(o,T.Fastest)}}}catch(l){throw new M("toolbox_evm_gas_estimation_error",{error:l.msg??l.toString()})}}})}function Nt({provider:t,isEIP1559Compatible:u,signer:n,chain:y}){return async function({callProvider:e,contractAddress:o,abi:a,funcName:p,funcParams:w=[],txOverrides:m={},feeOption:i=T.Fast}){let b=e||t;if(!o)throw new M("toolbox_evm_invalid_params",{error:"contractAddress must be provided"});let f=kt({abi:a,funcName:p});if(f&&S(b)&&n){let q=Z({chain:y,provider:b}),J=m?.from||await n?.getAddress(),k=await q({abi:a,contractAddress:o,funcName:p,funcParams:w,txOverrides:{...m,from:J}});return j(b)(k)}let L=I(o,a,b);if(f){if(!n)throw new M("toolbox_evm_no_signer");let q=m?.from||await n.getAddress();if(!q)throw new M("toolbox_evm_no_signer_address");let J=L.connect(n),k=s({chain:y,isEIP1559Compatible:u,provider:t}),{maxFeePerGas:$,maxPriorityFeePerGas:H,gasPrice:Y}=(await k())[i],g=await L.getFunction(p).estimateGas(...w,m),Dt=await J[p](...w,{...m,gasLimit:g,gasPrice:Y,maxFeePerGas:$,maxPriorityFeePerGas:H,nonce:m?.nonce||await b.getTransactionCount(q)});return typeof Dt?.hash==="string"?Dt?.hash:Dt}let G=await L[p]?.(...w);return typeof G?.hash==="string"?G?.hash:G}}function ht({provider:t,chain:u}){return function({assetAddress:y,spenderAddress:l,from:e}){return Nt({chain:u,isEIP1559Compatible:!0,provider:t})({abi:A,contractAddress:y,funcName:"allowance",funcParams:[e,l]})}}function Xn({provider:t,chain:u}){return async function({assetAddress:y,spenderAddress:l,from:e,amount:o=F}){let a=await ht({chain:u,provider:t})({assetAddress:y,from:e,spenderAddress:l});return v.fromBigInt(a).gte(v.fromBigInt(BigInt(o)))}}function Nn({signer:t,isEIP1559Compatible:u=!0,provider:n,chain:y}){return async function({assetAddress:e,spenderAddress:o,feeOptionKey:a=T.Fast,amount:p,gasLimitFallback:w,from:m,nonce:i}){let b=[o,BigInt(p||F)],f=await t?.getAddress()||m,L={abi:A,contractAddress:e,funcName:"approve",funcParams:b,signer:t,txOverrides:{from:f}};if(S(n)){let q=Z({chain:y,provider:n}),J=j(n),k=await q(L);return J(k)}return Nt({chain:y,isEIP1559Compatible:u,provider:n,signer:t})({...L,feeOption:a,funcParams:b,txOverrides:{from:f,gasLimit:w?BigInt(w.toString()):void 0,nonce:i}})}}function Wn({signer:t,isEIP1559Compatible:u=!0,provider:n}){return async function({assetValue:l,memo:e,recipient:o,feeOptionKey:a=T.Fast,sender:p,...w}){let{hexlify:m,toUtf8Bytes:i}=await import("ethers"),b=l.getBaseValue("bigint"),f=l.chain,L=p||await t?.getAddress(),G=Ft({chain:f,isEIP1559Compatible:u,provider:n,signer:t});if(!L)throw new M("toolbox_evm_no_from_address");if(l.isGasAsset){let Y={...w,data:m(i(e||"")),feeOptionKey:a,from:L,to:o,value:b};return G(Y)}if(!V(l,f))throw new M("toolbox_evm_no_contract_address");let{maxFeePerGas:J,maxPriorityFeePerGas:k,gasPrice:$}=(await s({chain:f,isEIP1559Compatible:u,provider:n})())[a],H=await zt({chain:f,provider:n,signer:t})({assetValue:l,data:m(i(e||"")),gasPrice:$,maxFeePerGas:J,maxPriorityFeePerGas:k,memo:e,recipient:o,sender:L});return G(H)}}function At({provider:t,signer:u}){return function({contractAddress:y,abi:l,funcName:e,funcParams:o=[],txOverrides:a}){if(!y)throw new M("toolbox_evm_no_contract_address");let p=I(y,l,t);return u?p.connect(u).getFunction(e).estimateGas(...o,a):p.getFunction(e).estimateGas(...o,a)}}function Yn({provider:t,signer:u}){return async function({assetValue:y,recipient:l,memo:e,data:o,sender:a,funcName:p,funcParams:w,txOverrides:m}){let i=y.bigIntValue,b=y.isGasAsset?null:V(y,y.chain);if(b&&p)return At({provider:t,signer:u})({abi:A,contractAddress:b,funcName:p,funcParams:w,txOverrides:m});let{hexlify:f,toUtf8Bytes:L}=await import("ethers");return t.estimateGas({data:o?o:e?f(L(e)):void 0,from:a,to:l,value:i})}}function Ft({provider:t,signer:u,isEIP1559Compatible:n=!0,chain:y}){return async function({feeOptionKey:e=T.Fast,...o}){let{from:a,to:p,data:w,value:m,...i}=o;if(!u)throw new M("toolbox_evm_no_signer");if(!p)throw new M("toolbox_evm_no_to_address");let b={...i,data:w||"0x",from:a,to:p,value:BigInt(m||0)};if(S(t))return j(t)(b);let f=a||await u.getAddress(),L=o.nonce||await t.getTransactionCount(f),G=(await t.getNetwork()).chainId,q=$n(b)||n,J=s({chain:y,isEIP1559Compatible:n,provider:t}),k=q&&!(b.maxFeePerGas&&b.maxPriorityFeePerGas)||!b.gasPrice?Object.entries((await J())[e]).reduce((H,[Y,g])=>({...H,[Y]:h(BigInt(g))}),{}):{},$;try{$=h(b.gasLimit||await t.estimateGas(b)*11n/10n)}catch(H){throw new M("toolbox_evm_error_estimating_gas_limit",{error:H})}try{let H={...b,chainId:G,gasLimit:$,nonce:L,type:q?2:0,...k};try{return(await u.sendTransaction(H)).hash}catch{let Y=await u.signTransaction({...H,from:f});return(await t.broadcastTransaction(Y)).hash}}catch(H){throw new M("toolbox_evm_error_sending_transaction",{error:H})}}}function zt({provider:t,signer:u}){return async function({assetValue:y,memo:l,recipient:e,data:o,sender:a,maxFeePerGas:p,maxPriorityFeePerGas:w,gasPrice:m,...i}){let b=y.getBaseValue("bigint"),f=y.chain,L=a||await u?.getAddress();if(!L)throw new M("toolbox_evm_no_from_address");if(Gn(y)){let{hexlify:J,toUtf8Bytes:k}=await import("ethers");return{...i,data:o||J(k(l||"")),from:L,to:e,value:b}}let G=V(y,f);if(!G)throw new M("toolbox_evm_no_contract_address");return Z({chain:y.chain,provider:t})({abi:A,contractAddress:G,funcName:"transfer",funcParams:[e,b],txOverrides:{from:L,gasPrice:m,maxFeePerGas:p,maxPriorityFeePerGas:w}})}}function Qn({provider:t,signer:u,chain:n}){return async function({assetAddress:l,spenderAddress:e,amount:o,from:a}){let p=await u?.getAddress()||a,w=Z({chain:n,provider:t}),m=["bigint","number"].includes(typeof o)?o:o||F;return await w({abi:A,contractAddress:l,funcName:"approve",funcParams:[e,BigInt(m)],txOverrides:{from:p}})}}function Zn({provider:t,isEIP1559Compatible:u=!0}){return async function({feeOption:y=T.Fast,chain:l,...e}){let a=await s({chain:l,isEIP1559Compatible:u,provider:t})(),p=await t.estimateGas(e),w=Dn.from({chain:l}),{gasPrice:m,maxFeePerGas:i,maxPriorityFeePerGas:b}=a[y];if(!u&&m)return w.set(v.fromBigInt(m*p,w.decimal));if(i&&b){let f=(i+b)*p;return w.set(v.fromBigInt(f,w.decimal))}throw new M("toolbox_evm_no_gas_price")}}var F,qn,Jn,Xt,kn,$n=(t)=>t.type===2||!!t.maxFeePerGas||!!t.maxPriorityFeePerGas;var r=X(()=>{P();x();F=BigInt("0x7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff");qn=["payable","nonpayable"];Jn=Ln.reduce((t,u)=>{return t[u]="0x0000000000000000000000000000000000000000",t},{}),Xt={...Jn,[N.Optimism]:"0x4200000000000000000000000000000000000042",[N.Polygon]:"0x0000000000000000000000000000000000001010"},kn=[N.Arbitrum,N.Aurora,N.Base,N.Optimism]});import{Chain as B,FeeOption as sn,getRPCUrl as Kn}from"@uswap/helpers";import{match as Un,P as It}from"ts-pattern";async function tt({provider:t,...u}){let n=await D(B.Ethereum)({provider:t,...u});async function y(l,e="0x5ba1e12693dc8f9c48aad8770482f4739beed696",o="aggregate",a=sn.Fast){let p=await n.createContractTxObject({abi:Ct,contractAddress:e,funcName:o,funcParams:[l]});return n.sendTransaction({...p,feeOptionKey:a})}return{...n,multicall:y}}function D(t){return async function({provider:n,...y}){let{HDNodeWallet:l}=await import("ethers"),e=await Kn(t),o=n||await Q(t,e),a=Ht(t),p=Un(y).with({phrase:It.string},({phrase:m})=>l.fromPhrase(m).connect(o)).with({signer:It.any},({signer:m})=>m).otherwise(()=>{return});return C({chain:t,isEIP1559Compatible:a,provider:o,signer:p})}}var nt,ut,yt,lt,et,ot,Ot,pt,at,Tt,mt,bt,wt,O,Mt,ct,Rt,ft;var Wt=X(()=>{St();x();r();nt=D(B.Arbitrum),ut=D(B.Aurora),yt=D(B.Avalanche),lt=D(B.Base),et=D(B.Berachain),ot=D(B.BinanceSmartChain),Ot=D(B.Botanix),pt=D(B.Core),at=D(B.Corn),Tt=D(B.Cronos),mt=D(B.Gnosis),bt=D(B.Hyperevm),wt=D(B.Polygon),O=D(B.Sonic),Mt=D(B.Unichain),ct=D(B.XLayer),Rt=D(B.Monad),ft=D(B.MegaETH)});var gt;var Pt=X(()=>{gt=[{inputs:[{internalType:"address",name:"_owner",type:"address"}],stateMutability:"nonpayable",type:"constructor"},{anonymous:!1,inputs:[{indexed:!1,internalType:"uint256",name:"",type:"uint256"}],name:"DecimalsUpdated",type:"event"},{anonymous:!1,inputs:[{indexed:!1,internalType:"uint256",name:"",type:"uint256"}],name:"GasPriceUpdated",type:"event"},{anonymous:!1,inputs:[{indexed:!1,internalType:"uint256",name:"",type:"uint256"}],name:"L1BaseFeeUpdated",type:"event"},{anonymous:!1,inputs:[{indexed:!1,internalType:"uint256",name:"",type:"uint256"}],name:"OverheadUpdated",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"previousOwner",type:"address"},{indexed:!0,internalType:"address",name:"newOwner",type:"address"}],name:"OwnershipTransferred",type:"event"},{anonymous:!1,inputs:[{indexed:!1,internalType:"uint256",name:"",type:"uint256"}],name:"ScalarUpdated",type:"event"},{inputs:[],name:"decimals",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"gasPrice",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"bytes",name:"_data",type:"bytes"}],name:"getL1Fee",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"bytes",name:"_data",type:"bytes"}],name:"getL1GasUsed",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"l1BaseFee",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"overhead",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"owner",outputs:[{internalType:"address",name:"",type:"address"}],stateMutability:"view",type:"function"},{inputs:[],name:"renounceOwnership",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[],name:"scalar",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"uint256",name:"_decimals",type:"uint256"}],name:"setDecimals",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"uint256",name:"_gasPrice",type:"uint256"}],name:"setGasPrice",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"uint256",name:"_baseFee",type:"uint256"}],name:"setL1BaseFee",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"uint256",name:"_overhead",type:"uint256"}],name:"setOverhead",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"uint256",name:"_scalar",type:"uint256"}],name:"setScalar",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"newOwner",type:"address"}],name:"transferOwnership",outputs:[],stateMutability:"nonpayable",type:"function"}]});import{applyFeeMultiplierToBigInt as _,Chain as vt,FeeOption as W,getRPCUrl as Cn,USwapError as Yt}from"@uswap/helpers";import{Contract as Sn,HDNodeWallet as jn}from"ethers";import{match as Vn,P as dt}from"ts-pattern";function $t(t){return new Sn(_n,gt,t)}function rt(t){return async function(){let n=$t(t);if(n&&"l1BaseFee"in n)return await n?.l1BaseFee();return}}function tn(t){return async function({from:n,to:y,nonce:l,...e}){let{Transaction:o}=await import("ethers");if(!y)throw new Yt("toolbox_evm_invalid_transaction",{error:"Missing to address"});return o.from({...e,authorizationList:e.authorizationList,nonce:l?l:n?await t.getTransactionCount(n):0,to:y}).serialized}}function nn(t){return async function(n){let y=$t(t),l=await tn(t)(n);if(y&&"getL1Fee"in y)return y.getL1Fee(l)}}function un(t){return async function(n){let y=await t.send("eth_gasPrice",[]),l=await t.estimateGas(n);return y.mul(l)}}function En(t){return async function(n){let y=await nn(t)(n),l=await un(t)(n);return y.add(l)}}function hn(t){return async function(n){let y=$t(t),l=await tn(t)(n);if(y&&"getL1GasUsed"in y)return y.getL1GasUsed(l)}}async function An(t){try{let{maxFeePerGas:u,maxPriorityFeePerGas:n,gasPrice:y}=await t.getFeeData(),l=await rt(t)(),e=y;if(!(u&&n))throw new Yt("toolbox_evm_no_fee_data");return{[W.Average]:{gasPrice:e,l1GasPrice:l,maxFeePerGas:u,maxPriorityFeePerGas:n},[W.Fast]:{gasPrice:_(e,W.Fast),l1GasPrice:_(l||0n,W.Fast),maxFeePerGas:u,maxPriorityFeePerGas:_(n,W.Fast)},[W.Fastest]:{gasPrice:_(e,W.Fastest),l1GasPrice:_(l||0n,W.Fastest),maxFeePerGas:u,maxPriorityFeePerGas:_(n,W.Fastest)}}}catch(u){throw new Yt("toolbox_evm_gas_estimation_error",{error:u.msg??u.toString()})}}async function Bt({provider:t,...u}){let n=vt.Optimism,y=await Cn(n),l=t||await Q(n,y),e=Vn(u).with({phrase:dt.string},({phrase:p})=>jn.fromPhrase(p).connect(l)).with({signer:dt.any},({signer:p})=>p).otherwise(()=>{return}),o=C({provider:l,signer:e}),a=rt(l);return{...o,estimateGasPrices:An(l),estimateL1Gas:hn(l),estimateL1GasCost:nn(l),estimateL2GasCost:un(l),estimateTotalGasCost:En(l),getBalance:E(vt.Optimism).getBalance,getL1GasPrice:a}}var _n="0x420000000000000000000000000000000000000f";var Qt=X(()=>{P();Pt();x();r()});var In={};Zt(In,{toChecksumAddress:()=>_t,isStateChangingCall:()=>kt,isBrowserProvider:()=>S,getTokenAddress:()=>V,getEvmToolbox:()=>yn,getEstimateGasPrices:()=>s,getEIP1193SendTransaction:()=>j,getCreateContractTxObject:()=>Z,getCreateContract:()=>Jt,getChecksumAddressFromAsset:()=>Et,evmValidateAddress:()=>qt,createContract:()=>I,XLayerToolbox:()=>ct,UNIToolbox:()=>Mt,SONICToolbox:()=>O,OPToolbox:()=>Bt,MONADToolbox:()=>Rt,MEGAETHToolbox:()=>ft,MAX_APPROVAL:()=>F,MATICToolbox:()=>wt,HYPEREVMToolbox:()=>bt,GNOToolbox:()=>mt,ETHToolbox:()=>tt,ContractAddress:()=>Xt,CROToolbox:()=>Tt,CORNToolbox:()=>at,COREToolbox:()=>pt,BotanixToolbox:()=>Ot,BaseEVMToolbox:()=>C,BSCToolbox:()=>ot,BERAToolbox:()=>et,BASEToolbox:()=>lt,AVAXToolbox:()=>yt,AURORAToolbox:()=>ut,ARBToolbox:()=>nt});import{Chain as R}from"@uswap/helpers";import{match as Fn}from"ts-pattern";async function yn(t,u){let n={...u,provider:u?.provider||await Q(t)};return Fn(t).returnType().with(R.Arbitrum,()=>nt(n)).with(R.Aurora,()=>ut(n)).with(R.Avalanche,()=>yt(n)).with(R.Base,()=>lt(n)).with(R.Berachain,()=>et(n)).with(R.BinanceSmartChain,()=>ot(n)).with(R.Botanix,()=>O(n)).with(R.Core,()=>pt(n)).with(R.Corn,()=>at(n)).with(R.Cronos,()=>Tt(n)).with(R.Ethereum,()=>tt(n)).with(R.Gnosis,()=>mt(n)).with(R.Hyperevm,()=>bt(n)).with(R.Optimism,()=>Bt(n)).with(R.Polygon,()=>wt(n)).with(R.Sonic,()=>O(n)).with(R.Unichain,()=>Mt(n)).with(R.XLayer,()=>ct(n)).with(R.Monad,()=>Rt(n)).with(R.MegaETH,()=>ft(n)).exhaustive()}var ln=X(()=>{x();Wt();Qt();r();Wt();Qt()});var en;var on=X(()=>{((n)=>{n.Test="goerli";n.Main="homestead"})(en||={})});var On={};Zt(On,{toHexString:()=>h,toChecksumAddress:()=>_t,isStateChangingCall:()=>kt,isBrowserProvider:()=>S,getTokenAddress:()=>V,getProvider:()=>Q,getNetworkParams:()=>Gt,getIsEIP1559Compatible:()=>Ht,getEvmToolbox:()=>yn,getEvmApi:()=>E,getEstimateGasPrices:()=>s,getEIP1193SendTransaction:()=>j,getCreateContractTxObject:()=>Z,getCreateContract:()=>Jt,getChecksumAddressFromAsset:()=>Et,evmValidateAddress:()=>qt,createCustomEvmApi:()=>cn,createContract:()=>I,XLayerToolbox:()=>ct,UNIToolbox:()=>Mt,SONICToolbox:()=>O,OPToolbox:()=>Bt,MONADToolbox:()=>Rt,MEGAETHToolbox:()=>ft,MAX_APPROVAL:()=>F,MATICToolbox:()=>wt,HYPEREVMToolbox:()=>bt,GNOToolbox:()=>mt,EthNetwork:()=>en,ETHToolbox:()=>tt,ContractAddress:()=>Xt,CROToolbox:()=>Tt,CORNToolbox:()=>at,COREToolbox:()=>pt,BotanixToolbox:()=>Ot,BaseEVMToolbox:()=>C,BSCToolbox:()=>ot,BERAToolbox:()=>et,BASEToolbox:()=>lt,AVAXToolbox:()=>yt,AURORAToolbox:()=>ut,ARBToolbox:()=>nt});var gn=X(()=>{P();x();ln();on()});gn();export{h as toHexString,_t as toChecksumAddress,kt as isStateChangingCall,S as isBrowserProvider,V as getTokenAddress,Q as getProvider,Gt as getNetworkParams,Ht as getIsEIP1559Compatible,yn as getEvmToolbox,E as getEvmApi,s as getEstimateGasPrices,j as getEIP1193SendTransaction,Z as getCreateContractTxObject,Jt as getCreateContract,Et as getChecksumAddressFromAsset,qt as evmValidateAddress,cn as createCustomEvmApi,I as createContract,ct as XLayerToolbox,Mt as UNIToolbox,O as SONICToolbox,Bt as OPToolbox,Rt as MONADToolbox,ft as MEGAETHToolbox,F as MAX_APPROVAL,wt as MATICToolbox,bt as HYPEREVMToolbox,mt as GNOToolbox,en as EthNetwork,tt as ETHToolbox,Xt as ContractAddress,Tt as CROToolbox,at as CORNToolbox,pt as COREToolbox,Ot as BotanixToolbox,C as BaseEVMToolbox,ot as BSCToolbox,et as BERAToolbox,lt as BASEToolbox,yt as AVAXToolbox,ut as AURORAToolbox,nt as ARBToolbox};
1
+ var an=Object.create;var{getPrototypeOf:pn,defineProperty:Lt,getOwnPropertyNames:Tn}=Object;var mn=Object.prototype.hasOwnProperty;var K=(t,y,n)=>{n=t!=null?an(pn(t)):{};let u=y||!t||!t.__esModule?Lt(n,"default",{value:t,enumerable:!0}):n;for(let l of Tn(t))if(!mn.call(u,l))Lt(u,l,{get:()=>t[l],enumerable:!0});return u};var Zt=(t,y)=>{for(var n in y)Lt(t,n,{get:y[n],enumerable:!0,configurable:!0,set:(u)=>y[n]=()=>u})};var X=(t,y)=>()=>(t&&(y=t(t=0)),y);var U=((t)=>typeof require<"u"?require:typeof Proxy<"u"?new Proxy(t,{get:(y,n)=>(typeof require<"u"?require:y)[n]}):t)(function(t){if(typeof require<"u")return require.apply(this,arguments);throw Error('Dynamic require of "'+t+'" is not supported')});import{AssetValue as st,getChainConfig as bn}from"@uswap/helpers";import{USwapApi as wn}from"@uswap/helpers/api";function rn(){function t(){let y=Date.now(),n=it||y;return it=n,y>it?y:n+1}return Mn+t().toString(36)}function Kt(t){return async function(n,u=!0){let l=await wn.getChainBalance({address:n,chain:t,scamFilter:u}),{baseDecimal:e}=bn(t),o=l.map(({identifier:a,value:w,decimal:m})=>{return new st({decimal:m||e,identifier:a,value:w})});if(!o.some((a)=>a.isGasAsset))return[st.from({chain:t}),...o];return o}}var Mn,it=0;var Ut=X(()=>{Mn=typeof process<"u"&&process.pid?process.pid.toString(36):""});function E(t){return{getBalance:Kt(t)}}function cn(t){return t}var P=X(()=>{Ut()});import{Chain as c,getChainConfig as xt,getRPCUrl as Rn}from"@uswap/helpers";import{match as fn}from"ts-pattern";async function Q(t,y){let{JsonRpcProvider:n}=await import("ethers");return new n(y||await Rn(t))}function h(t){return t>0n?`0x${t.toString(16)}`:"0x0"}function Ht(t){let{explorerUrl:y,chainIdHex:n,rpcUrls:u}=xt(t);return function(){return t!==c.Ethereum?{...Bn({chain:t}),blockExplorerUrls:[y],chainId:n,rpcUrls:u}:void 0}}function Gt(t){return![c.Arbitrum,c.BinanceSmartChain].includes(t)}function Bn({chain:t}){let{name:y,nativeCurrency:n,baseDecimal:u}=xt(t);return fn(t).with(c.Arbitrum,()=>({chainName:"Arbitrum One",nativeCurrency:{decimals:u,name:"Ethereum",symbol:c.Ethereum}})).with(c.Aurora,()=>({chainName:"Aurora Mainnet",nativeCurrency:{decimals:u,name:"Ethereum",symbol:c.Ethereum}})).with(c.Avalanche,()=>({chainName:"Avalanche Network",nativeCurrency:{decimals:u,name:"Avalanche",symbol:t}})).with(c.Base,()=>({chainName:"Base Mainnet",nativeCurrency:{decimals:u,name:"Ethereum",symbol:c.Ethereum}})).with(c.Berachain,()=>({chainName:"Berachain",nativeCurrency:{decimals:u,name:"Berachain",symbol:"BERA"}})).with(c.XLayer,()=>({chainName:"X Layer",nativeCurrency:{decimals:u,name:"OKB",symbol:"OKB"}})).with(c.BinanceSmartChain,()=>({chainName:"BNB Smart Chain Mainnet",nativeCurrency:{decimals:u,name:"Binance Coin",symbol:"BNB"}})).with(c.Gnosis,()=>({chainName:"Gnosis",nativeCurrency:{decimals:u,name:"xDAI",symbol:"XDAI"}})).with(c.Optimism,()=>({chainName:"OP Mainnet",nativeCurrency:{decimals:u,name:"Ethereum",symbol:c.Ethereum}})).with(c.Polygon,()=>({chainName:"Polygon Mainnet",nativeCurrency:{decimals:u,name:"Polygon",symbol:c.Polygon}})).otherwise(()=>({chainName:y,nativeCurrency:{decimals:u,name:n,symbol:n}}))}var x=()=>{};var Ct;var St=X(()=>{Ct=[{inputs:[{components:[{internalType:"address",name:"target",type:"address"},{internalType:"bytes",name:"callData",type:"bytes"}],internalType:"struct Multicall2.Call[]",name:"calls",type:"tuple[]"}],name:"aggregate",outputs:[{internalType:"uint256",name:"blockNumber",type:"uint256"},{internalType:"bytes[]",name:"returnData",type:"bytes[]"}],stateMutability:"nonpayable",type:"function"},{inputs:[{components:[{internalType:"address",name:"target",type:"address"},{internalType:"bytes",name:"callData",type:"bytes"}],internalType:"struct Multicall2.Call[]",name:"calls",type:"tuple[]"}],name:"blockAndAggregate",outputs:[{internalType:"uint256",name:"blockNumber",type:"uint256"},{internalType:"bytes32",name:"blockHash",type:"bytes32"},{components:[{internalType:"bool",name:"success",type:"bool"},{internalType:"bytes",name:"returnData",type:"bytes"}],internalType:"struct Multicall2.Result[]",name:"returnData",type:"tuple[]"}],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"uint256",name:"blockNumber",type:"uint256"}],name:"getBlockHash",outputs:[{internalType:"bytes32",name:"blockHash",type:"bytes32"}],stateMutability:"view",type:"function"},{inputs:[],name:"getBlockNumber",outputs:[{internalType:"uint256",name:"blockNumber",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"getCurrentBlockCoinbase",outputs:[{internalType:"address",name:"coinbase",type:"address"}],stateMutability:"view",type:"function"},{inputs:[],name:"getCurrentBlockDifficulty",outputs:[{internalType:"uint256",name:"difficulty",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"getCurrentBlockGasLimit",outputs:[{internalType:"uint256",name:"gaslimit",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"getCurrentBlockTimestamp",outputs:[{internalType:"uint256",name:"timestamp",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"addr",type:"address"}],name:"getEthBalance",outputs:[{internalType:"uint256",name:"balance",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"getLastBlockHash",outputs:[{internalType:"bytes32",name:"blockHash",type:"bytes32"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"bool",name:"requireSuccess",type:"bool"},{components:[{internalType:"address",name:"target",type:"address"},{internalType:"bytes",name:"callData",type:"bytes"}],internalType:"struct Multicall2.Call[]",name:"calls",type:"tuple[]"}],name:"tryAggregate",outputs:[{components:[{internalType:"bool",name:"success",type:"bool"},{internalType:"bytes",name:"returnData",type:"bytes"}],internalType:"struct Multicall2.Result[]",name:"returnData",type:"tuple[]"}],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"bool",name:"requireSuccess",type:"bool"},{components:[{internalType:"address",name:"target",type:"address"},{internalType:"bytes",name:"callData",type:"bytes"}],internalType:"struct Multicall2.Call[]",name:"calls",type:"tuple[]"}],name:"tryBlockAndAggregate",outputs:[{internalType:"uint256",name:"blockNumber",type:"uint256"},{internalType:"bytes32",name:"blockHash",type:"bytes32"},{components:[{internalType:"bool",name:"success",type:"bool"},{internalType:"bytes",name:"returnData",type:"bytes"}],internalType:"struct Multicall2.Result[]",name:"returnData",type:"tuple[]"}],stateMutability:"nonpayable",type:"function"}]});import{AssetValue as Dn,applyFeeMultiplierToBigInt as z,Chain as N,EVMChains as Ln,FeeOption as T,isGasAsset as Hn,USwapError as M,USwapNumber as v}from"@uswap/helpers";import{erc20ABI as A}from"@uswap/helpers/contracts";import{BrowserProvider as Gn,Contract as jt,getAddress as d,Interface as Vt}from"ethers";import{match as zn}from"ts-pattern";function C({chain:t=N.Ethereum,provider:y,signer:n,isEIP1559Compatible:u=!0}){return{approve:Nn({chain:t,isEIP1559Compatible:u,provider:y,signer:n}),approvedAmount:ht({chain:t,provider:y}),broadcastTransaction:y.broadcastTransaction,call:Nt({chain:t,isEIP1559Compatible:u,provider:y,signer:n}),createApprovalTx:Qn({chain:t,provider:y,signer:n}),createContract:Jt({chain:t,provider:y}),createContractTxObject:Z({chain:t,provider:y}),createTransaction:zt({chain:t,provider:y,signer:n}),createTransferTx:zt({chain:t,provider:y,signer:n}),EIP1193SendTransaction:j(y),estimateCall:At({provider:y,signer:n}),estimateGasLimit:Yn({chain:t,provider:y,signer:n}),estimateGasPrices:s({chain:t,isEIP1559Compatible:u,provider:y}),estimateTransactionFee:Zn({chain:t,isEIP1559Compatible:u,provider:y}),getAddress:()=>{return n?n.getAddress():void 0},getBalance:E(t).getBalance,getNetworkParams:Ht(t),isApproved:Xn({chain:t,provider:y}),sendTransaction:Ft({chain:t,isEIP1559Compatible:u,provider:y,signer:n}),signMessage:n?(l)=>n.signMessage(l):void 0,transfer:Wn({chain:t,isEIP1559Compatible:u,provider:y,signer:n}),validateAddress:(l)=>qt({address:l})}}function qt({address:t}){try{return d(t),!0}catch{return!1}}function S(t){return t instanceof Gn}function I(t,y,n){return new jt(t,Vt.from(y),n)}function Jt({provider:t}){return function(n,u){return new jt(n,Vt.from(u),t)}}function kt({abi:t,funcName:y}){let n=t.find((u)=>u.name===y);if(!n)throw new M("toolbox_evm_no_abi_fragment",{funcName:y});return n.stateMutability&&qn.includes(n.stateMutability)}function _t(t){return d(t)}function j(t){return function({value:n,...u}){if(!S(t))throw new M("toolbox_evm_provider_not_eip1193_compatible");let{gasLimit:l,gasPrice:e,maxFeePerGas:o,maxPriorityFeePerGas:p,...a}=u;return t.send("eth_sendTransaction",[{...a,value:h(BigInt(n||0))}])}}function Et(t,y){let n=V(t,y);if(n)return d(n.toLowerCase());throw new M("toolbox_evm_invalid_gas_asset_address")}function V({chain:t,symbol:y,ticker:n},u){try{let l=t===N.BinanceSmartChain&&y==="BNB"&&n==="BNB",e=t===u&&y===u&&n===u,o=kn.includes(t)&&y==="ETH"&&n==="ETH";if(e||l||o)return Xt[u];return d(y.slice(n.length+1).replace(/^0X/,""))}catch{return null}}function Z({provider:t}){return async({contractAddress:y,abi:n,funcName:u,funcParams:l=[],txOverrides:e})=>I(y,n,t).getFunction(u).populateTransaction(...l.concat(e).filter((o)=>typeof o<"u"))}function s({chain:t,provider:y,isEIP1559Compatible:n=!0}){return zn(t).with(N.Gnosis,()=>{return async function(){try{let{gasPrice:l,maxPriorityFeePerGas:e}=await y.getFeeData();if(!l||e===null)throw new M("toolbox_evm_no_fee_data");return{[T.Average]:{maxFeePerGas:z(l,T.Average),maxPriorityFeePerGas:z(e,T.Average)},[T.Fast]:{maxFeePerGas:z(l,T.Fast),maxPriorityFeePerGas:z(e,T.Fast)},[T.Fastest]:{maxFeePerGas:z(l,T.Fastest),maxPriorityFeePerGas:z(e,T.Fastest)}}}catch(l){throw new M("toolbox_evm_gas_estimation_error",{error:l.msg??l.toString()})}}}).with(N.Arbitrum,()=>{return async function(){try{let{gasPrice:l}=await y.getFeeData();if(!l)throw new M("toolbox_evm_no_fee_data");return{[T.Average]:{gasPrice:l},[T.Fast]:{gasPrice:l},[T.Fastest]:{gasPrice:l}}}catch(l){throw new M("toolbox_evm_gas_estimation_error",{error:l.msg??l.toString()})}}}).otherwise(()=>{return async function(){try{let{maxFeePerGas:l,maxPriorityFeePerGas:e,gasPrice:o}=await y.getFeeData();if(n){if(l===null||e===null)throw new M("toolbox_evm_no_fee_data");return{[T.Average]:{maxFeePerGas:l,maxPriorityFeePerGas:e},[T.Fast]:{maxFeePerGas:z(l,T.Fast),maxPriorityFeePerGas:z(e,T.Fast)},[T.Fastest]:{maxFeePerGas:z(l,T.Fastest),maxPriorityFeePerGas:z(e,T.Fastest)}}}if(!o)throw new M("toolbox_evm_no_gas_price");return{[T.Average]:{gasPrice:o},[T.Fast]:{gasPrice:z(o,T.Fast)},[T.Fastest]:{gasPrice:z(o,T.Fastest)}}}catch(l){throw new M("toolbox_evm_gas_estimation_error",{error:l.msg??l.toString()})}}})}function Nt({provider:t,isEIP1559Compatible:y,signer:n,chain:u}){return async function({callProvider:e,contractAddress:o,abi:p,funcName:a,funcParams:w=[],txOverrides:m={},feeOption:i=T.Fast}){let b=e||t;if(!o)throw new M("toolbox_evm_invalid_params",{error:"contractAddress must be provided"});let f=kt({abi:p,funcName:a});if(f&&S(b)&&n){let q=Z({chain:u,provider:b}),J=m?.from||await n?.getAddress(),k=await q({abi:p,contractAddress:o,funcName:a,funcParams:w,txOverrides:{...m,from:J}});return j(b)(k)}let L=I(o,p,b);if(f){if(!n)throw new M("toolbox_evm_no_signer");let q=m?.from||await n.getAddress();if(!q)throw new M("toolbox_evm_no_signer_address");let J=L.connect(n),k=s({chain:u,isEIP1559Compatible:y,provider:t}),{maxFeePerGas:$,maxPriorityFeePerGas:G,gasPrice:Y}=(await k())[i],g=await L.getFunction(a).estimateGas(...w,m),Dt=await J[a](...w,{...m,gasLimit:g,gasPrice:Y,maxFeePerGas:$,maxPriorityFeePerGas:G,nonce:m?.nonce||await b.getTransactionCount(q)});return typeof Dt?.hash==="string"?Dt?.hash:Dt}let H=await L[a]?.(...w);return typeof H?.hash==="string"?H?.hash:H}}function ht({provider:t,chain:y}){return function({assetAddress:u,spenderAddress:l,from:e}){return Nt({chain:y,isEIP1559Compatible:!0,provider:t})({abi:A,contractAddress:u,funcName:"allowance",funcParams:[e,l]})}}function Xn({provider:t,chain:y}){return async function({assetAddress:u,spenderAddress:l,from:e,amount:o=F}){let p=await ht({chain:y,provider:t})({assetAddress:u,from:e,spenderAddress:l});return v.fromBigInt(p).gte(v.fromBigInt(BigInt(o)))}}function Nn({signer:t,isEIP1559Compatible:y=!0,provider:n,chain:u}){return async function({assetAddress:e,spenderAddress:o,feeOptionKey:p=T.Fast,amount:a,gasLimitFallback:w,from:m,nonce:i}){let b=[o,BigInt(a||F)],f=await t?.getAddress()||m,L={abi:A,contractAddress:e,funcName:"approve",funcParams:b,signer:t,txOverrides:{from:f}};if(S(n)){let q=Z({chain:u,provider:n}),J=j(n),k=await q(L);return J(k)}return Nt({chain:u,isEIP1559Compatible:y,provider:n,signer:t})({...L,feeOption:p,funcParams:b,txOverrides:{from:f,gasLimit:w?BigInt(w.toString()):void 0,nonce:i}})}}function Wn({signer:t,isEIP1559Compatible:y=!0,provider:n}){return async function({assetValue:l,memo:e,recipient:o,feeOptionKey:p=T.Fast,sender:a,...w}){let{hexlify:m,toUtf8Bytes:i}=await import("ethers"),b=l.getBaseValue("bigint"),f=l.chain,L=a||await t?.getAddress(),H=Ft({chain:f,isEIP1559Compatible:y,provider:n,signer:t});if(!L)throw new M("toolbox_evm_no_from_address");if(l.isGasAsset){let Y={...w,data:m(i(e||"")),feeOptionKey:p,from:L,to:o,value:b};return H(Y)}if(!V(l,f))throw new M("toolbox_evm_no_contract_address");let{maxFeePerGas:J,maxPriorityFeePerGas:k,gasPrice:$}=(await s({chain:f,isEIP1559Compatible:y,provider:n})())[p],G=await zt({chain:f,provider:n,signer:t})({assetValue:l,data:m(i(e||"")),gasPrice:$,maxFeePerGas:J,maxPriorityFeePerGas:k,memo:e,recipient:o,sender:L});return H(G)}}function At({provider:t,signer:y}){return function({contractAddress:u,abi:l,funcName:e,funcParams:o=[],txOverrides:p}){if(!u)throw new M("toolbox_evm_no_contract_address");let a=I(u,l,t);return y?a.connect(y).getFunction(e).estimateGas(...o,p):a.getFunction(e).estimateGas(...o,p)}}function Yn({provider:t,signer:y}){return async function({assetValue:u,recipient:l,memo:e,data:o,sender:p,funcName:a,funcParams:w,txOverrides:m}){let i=u.bigIntValue,b=u.isGasAsset?null:V(u,u.chain);if(b&&a)return At({provider:t,signer:y})({abi:A,contractAddress:b,funcName:a,funcParams:w,txOverrides:m});let{hexlify:f,toUtf8Bytes:L}=await import("ethers");return t.estimateGas({data:o?o:e?f(L(e)):void 0,from:p,to:l,value:i})}}function Ft({provider:t,signer:y,isEIP1559Compatible:n=!0,chain:u}){return async function({feeOptionKey:e=T.Fast,...o}){let{from:p,to:a,data:w,value:m,...i}=o;if(!y)throw new M("toolbox_evm_no_signer");if(!a)throw new M("toolbox_evm_no_to_address");let b={...i,data:w||"0x",from:p,to:a,value:BigInt(m||0)};if(S(t))return j(t)(b);let f=p||await y.getAddress(),L=o.nonce||await t.getTransactionCount(f),H=(await t.getNetwork()).chainId,q=$n(b)||n,J=s({chain:u,isEIP1559Compatible:n,provider:t}),k=q&&!(b.maxFeePerGas&&b.maxPriorityFeePerGas)||!b.gasPrice?Object.entries((await J())[e]).reduce((G,[Y,g])=>({...G,[Y]:h(BigInt(g))}),{}):{},$;try{$=h(b.gasLimit||await t.estimateGas(b)*11n/10n)}catch(G){throw new M("toolbox_evm_error_estimating_gas_limit",{error:G})}try{let G={...b,chainId:H,gasLimit:$,nonce:L,type:q?2:0,...k};try{return(await y.sendTransaction(G)).hash}catch{let Y=await y.signTransaction({...G,from:f});return(await t.broadcastTransaction(Y)).hash}}catch(G){throw new M("toolbox_evm_error_sending_transaction",{error:G})}}}function zt({provider:t,signer:y}){return async function({assetValue:u,memo:l,recipient:e,data:o,sender:p,maxFeePerGas:a,maxPriorityFeePerGas:w,gasPrice:m,...i}){let b=u.getBaseValue("bigint"),f=u.chain,L=p||await y?.getAddress();if(!L)throw new M("toolbox_evm_no_from_address");if(Hn(u)){let{hexlify:J,toUtf8Bytes:k}=await import("ethers");return{...i,data:o||J(k(l||"")),from:L,to:e,value:b}}let H=V(u,f);if(!H)throw new M("toolbox_evm_no_contract_address");return Z({chain:u.chain,provider:t})({abi:A,contractAddress:H,funcName:"transfer",funcParams:[e,b],txOverrides:{from:L,gasPrice:m,maxFeePerGas:a,maxPriorityFeePerGas:w}})}}function Qn({provider:t,signer:y,chain:n}){return async function({assetAddress:l,spenderAddress:e,amount:o,from:p}){let a=await y?.getAddress()||p,w=Z({chain:n,provider:t}),m=["bigint","number"].includes(typeof o)?o:o||F;return await w({abi:A,contractAddress:l,funcName:"approve",funcParams:[e,BigInt(m)],txOverrides:{from:a}})}}function Zn({provider:t,isEIP1559Compatible:y=!0}){return async function({feeOption:u=T.Fast,chain:l,...e}){let p=await s({chain:l,isEIP1559Compatible:y,provider:t})(),a=await t.estimateGas(e),w=Dn.from({chain:l}),{gasPrice:m,maxFeePerGas:i,maxPriorityFeePerGas:b}=p[u];if(!y&&m)return w.set(v.fromBigInt(m*a,w.decimal));if(i&&b){let f=(i+b)*a;return w.set(v.fromBigInt(f,w.decimal))}throw new M("toolbox_evm_no_gas_price")}}var F,qn,Jn,Xt,kn,$n=(t)=>t.type===2||!!t.maxFeePerGas||!!t.maxPriorityFeePerGas;var r=X(()=>{P();x();F=BigInt("0x7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff");qn=["payable","nonpayable"];Jn=Ln.reduce((t,y)=>{return t[y]="0x0000000000000000000000000000000000000000",t},{}),Xt={...Jn,[N.Optimism]:"0x4200000000000000000000000000000000000042",[N.Polygon]:"0x0000000000000000000000000000000000001010"},kn=[N.Arbitrum,N.Aurora,N.Base,N.Optimism]});import{Chain as B,FeeOption as sn,getRPCUrl as Kn}from"@uswap/helpers";import{match as Un,P as It}from"ts-pattern";async function tt({provider:t,...y}){let n=await D(B.Ethereum)({provider:t,...y});async function u(l,e="0x5ba1e12693dc8f9c48aad8770482f4739beed696",o="aggregate",p=sn.Fast){let a=await n.createContractTxObject({abi:Ct,contractAddress:e,funcName:o,funcParams:[l]});return n.sendTransaction({...a,feeOptionKey:p})}return{...n,multicall:u}}function D(t){return async function({provider:n,...u}){let{HDNodeWallet:l}=await import("ethers"),e=await Kn(t),o=n||await Q(t,e),p=Gt(t),a=Un(u).with({phrase:It.string},({phrase:m})=>l.fromPhrase(m).connect(o)).with({signer:It.any},({signer:m})=>m).otherwise(()=>{return});return C({chain:t,isEIP1559Compatible:p,provider:o,signer:a})}}var nt,yt,ut,lt,et,ot,Ot,at,pt,Tt,mt,bt,wt,O,Mt,ct,Rt,ft;var Wt=X(()=>{St();x();r();nt=D(B.Arbitrum),yt=D(B.Aurora),ut=D(B.Avalanche),lt=D(B.Base),et=D(B.Berachain),ot=D(B.BinanceSmartChain),Ot=D(B.Botanix),at=D(B.Core),pt=D(B.Corn),Tt=D(B.Cronos),mt=D(B.Gnosis),bt=D(B.Hyperevm),wt=D(B.Polygon),O=D(B.Sonic),Mt=D(B.Unichain),ct=D(B.XLayer),Rt=D(B.Monad),ft=D(B.MegaETH)});var gt;var Pt=X(()=>{gt=[{inputs:[{internalType:"address",name:"_owner",type:"address"}],stateMutability:"nonpayable",type:"constructor"},{anonymous:!1,inputs:[{indexed:!1,internalType:"uint256",name:"",type:"uint256"}],name:"DecimalsUpdated",type:"event"},{anonymous:!1,inputs:[{indexed:!1,internalType:"uint256",name:"",type:"uint256"}],name:"GasPriceUpdated",type:"event"},{anonymous:!1,inputs:[{indexed:!1,internalType:"uint256",name:"",type:"uint256"}],name:"L1BaseFeeUpdated",type:"event"},{anonymous:!1,inputs:[{indexed:!1,internalType:"uint256",name:"",type:"uint256"}],name:"OverheadUpdated",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"previousOwner",type:"address"},{indexed:!0,internalType:"address",name:"newOwner",type:"address"}],name:"OwnershipTransferred",type:"event"},{anonymous:!1,inputs:[{indexed:!1,internalType:"uint256",name:"",type:"uint256"}],name:"ScalarUpdated",type:"event"},{inputs:[],name:"decimals",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"gasPrice",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"bytes",name:"_data",type:"bytes"}],name:"getL1Fee",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"bytes",name:"_data",type:"bytes"}],name:"getL1GasUsed",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"l1BaseFee",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"overhead",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"owner",outputs:[{internalType:"address",name:"",type:"address"}],stateMutability:"view",type:"function"},{inputs:[],name:"renounceOwnership",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[],name:"scalar",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"uint256",name:"_decimals",type:"uint256"}],name:"setDecimals",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"uint256",name:"_gasPrice",type:"uint256"}],name:"setGasPrice",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"uint256",name:"_baseFee",type:"uint256"}],name:"setL1BaseFee",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"uint256",name:"_overhead",type:"uint256"}],name:"setOverhead",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"uint256",name:"_scalar",type:"uint256"}],name:"setScalar",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"newOwner",type:"address"}],name:"transferOwnership",outputs:[],stateMutability:"nonpayable",type:"function"}]});import{applyFeeMultiplierToBigInt as _,Chain as vt,FeeOption as W,getRPCUrl as Cn,USwapError as Yt}from"@uswap/helpers";import{Contract as Sn,HDNodeWallet as jn}from"ethers";import{match as Vn,P as dt}from"ts-pattern";function $t(t){return new Sn(_n,gt,t)}function rt(t){return async function(){let n=$t(t);if(n&&"l1BaseFee"in n)return await n?.l1BaseFee();return}}function tn(t){return async function({from:n,to:u,nonce:l,...e}){let{Transaction:o}=await import("ethers");if(!u)throw new Yt("toolbox_evm_invalid_transaction",{error:"Missing to address"});return o.from({...e,authorizationList:e.authorizationList,nonce:l?l:n?await t.getTransactionCount(n):0,to:u}).serialized}}function nn(t){return async function(n){let u=$t(t),l=await tn(t)(n);if(u&&"getL1Fee"in u)return u.getL1Fee(l)}}function yn(t){return async function(n){let u=await t.send("eth_gasPrice",[]),l=await t.estimateGas(n);return u.mul(l)}}function En(t){return async function(n){let u=await nn(t)(n),l=await yn(t)(n);return u.add(l)}}function hn(t){return async function(n){let u=$t(t),l=await tn(t)(n);if(u&&"getL1GasUsed"in u)return u.getL1GasUsed(l)}}async function An(t){try{let{maxFeePerGas:y,maxPriorityFeePerGas:n,gasPrice:u}=await t.getFeeData(),l=await rt(t)(),e=u;if(!(y&&n))throw new Yt("toolbox_evm_no_fee_data");return{[W.Average]:{gasPrice:e,l1GasPrice:l,maxFeePerGas:y,maxPriorityFeePerGas:n},[W.Fast]:{gasPrice:_(e,W.Fast),l1GasPrice:_(l||0n,W.Fast),maxFeePerGas:y,maxPriorityFeePerGas:_(n,W.Fast)},[W.Fastest]:{gasPrice:_(e,W.Fastest),l1GasPrice:_(l||0n,W.Fastest),maxFeePerGas:y,maxPriorityFeePerGas:_(n,W.Fastest)}}}catch(y){throw new Yt("toolbox_evm_gas_estimation_error",{error:y.msg??y.toString()})}}async function Bt({provider:t,...y}){let n=vt.Optimism,u=await Cn(n),l=t||await Q(n,u),e=Vn(y).with({phrase:dt.string},({phrase:a})=>jn.fromPhrase(a).connect(l)).with({signer:dt.any},({signer:a})=>a).otherwise(()=>{return}),o=C({provider:l,signer:e}),p=rt(l);return{...o,estimateGasPrices:An(l),estimateL1Gas:hn(l),estimateL1GasCost:nn(l),estimateL2GasCost:yn(l),estimateTotalGasCost:En(l),getBalance:E(vt.Optimism).getBalance,getL1GasPrice:p}}var _n="0x420000000000000000000000000000000000000f";var Qt=X(()=>{P();Pt();x();r()});var In={};Zt(In,{toChecksumAddress:()=>_t,isStateChangingCall:()=>kt,isBrowserProvider:()=>S,getTokenAddress:()=>V,getEvmToolbox:()=>un,getEstimateGasPrices:()=>s,getEIP1193SendTransaction:()=>j,getCreateContractTxObject:()=>Z,getCreateContract:()=>Jt,getChecksumAddressFromAsset:()=>Et,evmValidateAddress:()=>qt,createContract:()=>I,XLayerToolbox:()=>ct,UNIToolbox:()=>Mt,SONICToolbox:()=>O,OPToolbox:()=>Bt,MONADToolbox:()=>Rt,MEGAETHToolbox:()=>ft,MAX_APPROVAL:()=>F,MATICToolbox:()=>wt,HYPEREVMToolbox:()=>bt,GNOToolbox:()=>mt,ETHToolbox:()=>tt,ContractAddress:()=>Xt,CROToolbox:()=>Tt,CORNToolbox:()=>pt,COREToolbox:()=>at,BotanixToolbox:()=>Ot,BaseEVMToolbox:()=>C,BSCToolbox:()=>ot,BERAToolbox:()=>et,BASEToolbox:()=>lt,AVAXToolbox:()=>ut,AURORAToolbox:()=>yt,ARBToolbox:()=>nt});import{Chain as R}from"@uswap/helpers";import{match as Fn}from"ts-pattern";async function un(t,y){let n={...y,provider:y?.provider||await Q(t)};return Fn(t).returnType().with(R.Arbitrum,()=>nt(n)).with(R.Aurora,()=>yt(n)).with(R.Avalanche,()=>ut(n)).with(R.Base,()=>lt(n)).with(R.Berachain,()=>et(n)).with(R.BinanceSmartChain,()=>ot(n)).with(R.Botanix,()=>O(n)).with(R.Core,()=>at(n)).with(R.Corn,()=>pt(n)).with(R.Cronos,()=>Tt(n)).with(R.Ethereum,()=>tt(n)).with(R.Gnosis,()=>mt(n)).with(R.Hyperevm,()=>bt(n)).with(R.Optimism,()=>Bt(n)).with(R.Polygon,()=>wt(n)).with(R.Sonic,()=>O(n)).with(R.Unichain,()=>Mt(n)).with(R.XLayer,()=>ct(n)).with(R.Monad,()=>Rt(n)).with(R.MegaETH,()=>ft(n)).exhaustive()}var ln=X(()=>{x();Wt();Qt();r();Wt();Qt()});var en;var on=X(()=>{((n)=>{n.Test="goerli";n.Main="homestead"})(en||={})});var On={};Zt(On,{toHexString:()=>h,toChecksumAddress:()=>_t,isStateChangingCall:()=>kt,isBrowserProvider:()=>S,getTokenAddress:()=>V,getProvider:()=>Q,getNetworkParams:()=>Ht,getIsEIP1559Compatible:()=>Gt,getEvmToolbox:()=>un,getEvmApi:()=>E,getEstimateGasPrices:()=>s,getEIP1193SendTransaction:()=>j,getCreateContractTxObject:()=>Z,getCreateContract:()=>Jt,getChecksumAddressFromAsset:()=>Et,evmValidateAddress:()=>qt,createCustomEvmApi:()=>cn,createContract:()=>I,XLayerToolbox:()=>ct,UNIToolbox:()=>Mt,SONICToolbox:()=>O,OPToolbox:()=>Bt,MONADToolbox:()=>Rt,MEGAETHToolbox:()=>ft,MAX_APPROVAL:()=>F,MATICToolbox:()=>wt,HYPEREVMToolbox:()=>bt,GNOToolbox:()=>mt,EthNetwork:()=>en,ETHToolbox:()=>tt,ContractAddress:()=>Xt,CROToolbox:()=>Tt,CORNToolbox:()=>pt,COREToolbox:()=>at,BotanixToolbox:()=>Ot,BaseEVMToolbox:()=>C,BSCToolbox:()=>ot,BERAToolbox:()=>et,BASEToolbox:()=>lt,AVAXToolbox:()=>ut,AURORAToolbox:()=>yt,ARBToolbox:()=>nt});var gn=X(()=>{P();x();ln();on()});gn();export{h as toHexString,_t as toChecksumAddress,kt as isStateChangingCall,S as isBrowserProvider,V as getTokenAddress,Q as getProvider,Ht as getNetworkParams,Gt as getIsEIP1559Compatible,un as getEvmToolbox,E as getEvmApi,s as getEstimateGasPrices,j as getEIP1193SendTransaction,Z as getCreateContractTxObject,Jt as getCreateContract,Et as getChecksumAddressFromAsset,qt as evmValidateAddress,cn as createCustomEvmApi,I as createContract,ct as XLayerToolbox,Mt as UNIToolbox,O as SONICToolbox,Bt as OPToolbox,Rt as MONADToolbox,ft as MEGAETHToolbox,F as MAX_APPROVAL,wt as MATICToolbox,bt as HYPEREVMToolbox,mt as GNOToolbox,en as EthNetwork,tt as ETHToolbox,Xt as ContractAddress,Tt as CROToolbox,pt as CORNToolbox,at as COREToolbox,Ot as BotanixToolbox,C as BaseEVMToolbox,ot as BSCToolbox,et as BERAToolbox,lt as BASEToolbox,ut as AVAXToolbox,yt as AURORAToolbox,nt as ARBToolbox};
2
2
 
3
- //# debugId=B49F92A4A2189E7164756E2164756E21
3
+ //# debugId=242287D8517FD1E964756E2164756E21
4
4
  //# sourceMappingURL=index.js.map
@@ -2,19 +2,19 @@
2
2
  "version": 3,
3
3
  "sources": ["../src/utils.ts", "../src/evm/api.ts", "../src/evm/helpers.ts", "../src/evm/contracts/eth/multicall.ts", "../src/evm/toolbox/baseEVMToolbox.ts", "../src/evm/toolbox/evm.ts", "../src/evm/contracts/op/gasOracle.ts", "../src/evm/toolbox/op.ts", "../src/evm/toolbox/index.ts", "../src/evm/types.ts", "../src/evm/index.ts"],
4
4
  "sourcesContent": [
5
- "import { AssetValue, type Chain, getChainConfig } from \"@uswap/helpers\";\nimport { SwapKitApi } from \"@uswap/helpers/api\";\n\nconst pid = typeof process !== \"undefined\" && process.pid ? process.pid.toString(36) : \"\";\n\nlet last = 0;\nexport function uniqid() {\n function now() {\n const time = Date.now();\n const lastTime = last || time;\n last = lastTime;\n\n return time > last ? time : lastTime + 1;\n }\n\n return pid + now().toString(36);\n}\n\nexport function getBalance<T extends Chain>(chain: T) {\n return async function getBalance(address: string, scamFilter = true) {\n const balances = await SwapKitApi.getChainBalance({ address, chain, scamFilter });\n const { baseDecimal } = getChainConfig(chain);\n const assetValues = balances.map(({ identifier, value, decimal }) => {\n return new AssetValue({ decimal: decimal || baseDecimal, identifier, value });\n });\n\n const hasNativeAsset = assetValues.some((asset) => asset.isGasAsset);\n if (!hasNativeAsset) {\n return [AssetValue.from({ chain }), ...assetValues];\n }\n\n return assetValues;\n };\n}\n",
5
+ "/**\n * Modifications © 2025 Horizontal Systems.\n */\n\nimport { AssetValue, type Chain, getChainConfig } from \"@uswap/helpers\";\nimport { USwapApi } from \"@uswap/helpers/api\";\n\nconst pid = typeof process !== \"undefined\" && process.pid ? process.pid.toString(36) : \"\";\n\nlet last = 0;\nexport function uniqid() {\n function now() {\n const time = Date.now();\n const lastTime = last || time;\n last = lastTime;\n\n return time > last ? time : lastTime + 1;\n }\n\n return pid + now().toString(36);\n}\n\nexport function getBalance<T extends Chain>(chain: T) {\n return async function getBalance(address: string, scamFilter = true) {\n const balances = await USwapApi.getChainBalance({ address, chain, scamFilter });\n const { baseDecimal } = getChainConfig(chain);\n const assetValues = balances.map(({ identifier, value, decimal }) => {\n return new AssetValue({ decimal: decimal || baseDecimal, identifier, value });\n });\n\n const hasNativeAsset = assetValues.some((asset) => asset.isGasAsset);\n if (!hasNativeAsset) {\n return [AssetValue.from({ chain }), ...assetValues];\n }\n\n return assetValues;\n };\n}\n",
6
6
  "import type { EVMChain } from \"@uswap/helpers\";\nimport { getBalance } from \"../utils\";\n\nexport function getEvmApi(chain: EVMChain) {\n return { getBalance: getBalance(chain) };\n}\n\nexport function createCustomEvmApi(methods: ReturnType<typeof getEvmApi>) {\n return methods;\n}\n",
7
7
  "import { Chain, type EVMChain, getChainConfig, getRPCUrl, type NetworkParams } from \"@uswap/helpers\";\nimport { match } from \"ts-pattern\";\n\nexport async function getProvider(chain: EVMChain, customUrl?: string) {\n const { JsonRpcProvider } = await import(\"ethers\");\n\n return new JsonRpcProvider(customUrl || (await getRPCUrl(chain)));\n}\n\nexport function toHexString(value: bigint) {\n return value > 0n ? `0x${value.toString(16)}` : \"0x0\";\n}\n\nexport function getNetworkParams<C extends EVMChain>(chain: C) {\n const { explorerUrl, chainIdHex, rpcUrls } = getChainConfig(chain);\n\n return function getNetworkParams(): C extends Chain.Ethereum ? undefined : NetworkParams {\n return (\n chain !== Chain.Ethereum\n ? { ...getNetworkInfo({ chain }), blockExplorerUrls: [explorerUrl], chainId: chainIdHex, rpcUrls }\n : undefined\n ) as C extends Chain.Ethereum ? undefined : NetworkParams;\n };\n}\n\nexport function getIsEIP1559Compatible<C extends EVMChain>(chain: C) {\n const notCompatible = [Chain.Arbitrum, Chain.BinanceSmartChain] as EVMChain[];\n\n return !notCompatible.includes(chain);\n}\n\nfunction getNetworkInfo({ chain }: { chain: EVMChain }) {\n const { name, nativeCurrency, baseDecimal: decimals } = getChainConfig(chain);\n\n return match(chain)\n .with(Chain.Arbitrum, () => ({\n chainName: \"Arbitrum One\",\n nativeCurrency: { decimals, name: \"Ethereum\", symbol: Chain.Ethereum },\n }))\n .with(Chain.Aurora, () => ({\n chainName: \"Aurora Mainnet\",\n nativeCurrency: { decimals, name: \"Ethereum\", symbol: Chain.Ethereum },\n }))\n .with(Chain.Avalanche, () => ({\n chainName: \"Avalanche Network\",\n nativeCurrency: { decimals, name: \"Avalanche\", symbol: chain },\n }))\n .with(Chain.Base, () => ({\n chainName: \"Base Mainnet\",\n nativeCurrency: { decimals, name: \"Ethereum\", symbol: Chain.Ethereum },\n }))\n .with(Chain.Berachain, () => ({\n chainName: \"Berachain\",\n nativeCurrency: { decimals, name: \"Berachain\", symbol: \"BERA\" },\n }))\n .with(Chain.XLayer, () => ({ chainName: \"X Layer\", nativeCurrency: { decimals, name: \"OKB\", symbol: \"OKB\" } }))\n .with(Chain.BinanceSmartChain, () => ({\n chainName: \"BNB Smart Chain Mainnet\",\n nativeCurrency: { decimals, name: \"Binance Coin\", symbol: \"BNB\" },\n }))\n .with(Chain.Gnosis, () => ({ chainName: \"Gnosis\", nativeCurrency: { decimals, name: \"xDAI\", symbol: \"XDAI\" } }))\n .with(Chain.Optimism, () => ({\n chainName: \"OP Mainnet\",\n nativeCurrency: { decimals, name: \"Ethereum\", symbol: Chain.Ethereum },\n }))\n .with(Chain.Polygon, () => ({\n chainName: \"Polygon Mainnet\",\n nativeCurrency: { decimals, name: \"Polygon\", symbol: Chain.Polygon },\n }))\n .otherwise(() => ({ chainName: name, nativeCurrency: { decimals, name: nativeCurrency, symbol: nativeCurrency } }));\n}\n",
8
8
  "export const multicallAbi = [\n {\n inputs: [\n {\n components: [\n { internalType: \"address\", name: \"target\", type: \"address\" },\n { internalType: \"bytes\", name: \"callData\", type: \"bytes\" },\n ],\n internalType: \"struct Multicall2.Call[]\",\n name: \"calls\",\n type: \"tuple[]\",\n },\n ],\n name: \"aggregate\",\n outputs: [\n { internalType: \"uint256\", name: \"blockNumber\", type: \"uint256\" },\n { internalType: \"bytes[]\", name: \"returnData\", type: \"bytes[]\" },\n ],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [\n {\n components: [\n { internalType: \"address\", name: \"target\", type: \"address\" },\n { internalType: \"bytes\", name: \"callData\", type: \"bytes\" },\n ],\n internalType: \"struct Multicall2.Call[]\",\n name: \"calls\",\n type: \"tuple[]\",\n },\n ],\n name: \"blockAndAggregate\",\n outputs: [\n { internalType: \"uint256\", name: \"blockNumber\", type: \"uint256\" },\n { internalType: \"bytes32\", name: \"blockHash\", type: \"bytes32\" },\n {\n components: [\n { internalType: \"bool\", name: \"success\", type: \"bool\" },\n { internalType: \"bytes\", name: \"returnData\", type: \"bytes\" },\n ],\n internalType: \"struct Multicall2.Result[]\",\n name: \"returnData\",\n type: \"tuple[]\",\n },\n ],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [{ internalType: \"uint256\", name: \"blockNumber\", type: \"uint256\" }],\n name: \"getBlockHash\",\n outputs: [{ internalType: \"bytes32\", name: \"blockHash\", type: \"bytes32\" }],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [],\n name: \"getBlockNumber\",\n outputs: [{ internalType: \"uint256\", name: \"blockNumber\", type: \"uint256\" }],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [],\n name: \"getCurrentBlockCoinbase\",\n outputs: [{ internalType: \"address\", name: \"coinbase\", type: \"address\" }],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [],\n name: \"getCurrentBlockDifficulty\",\n outputs: [{ internalType: \"uint256\", name: \"difficulty\", type: \"uint256\" }],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [],\n name: \"getCurrentBlockGasLimit\",\n outputs: [{ internalType: \"uint256\", name: \"gaslimit\", type: \"uint256\" }],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [],\n name: \"getCurrentBlockTimestamp\",\n outputs: [{ internalType: \"uint256\", name: \"timestamp\", type: \"uint256\" }],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [{ internalType: \"address\", name: \"addr\", type: \"address\" }],\n name: \"getEthBalance\",\n outputs: [{ internalType: \"uint256\", name: \"balance\", type: \"uint256\" }],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [],\n name: \"getLastBlockHash\",\n outputs: [{ internalType: \"bytes32\", name: \"blockHash\", type: \"bytes32\" }],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [\n { internalType: \"bool\", name: \"requireSuccess\", type: \"bool\" },\n {\n components: [\n { internalType: \"address\", name: \"target\", type: \"address\" },\n { internalType: \"bytes\", name: \"callData\", type: \"bytes\" },\n ],\n internalType: \"struct Multicall2.Call[]\",\n name: \"calls\",\n type: \"tuple[]\",\n },\n ],\n name: \"tryAggregate\",\n outputs: [\n {\n components: [\n { internalType: \"bool\", name: \"success\", type: \"bool\" },\n { internalType: \"bytes\", name: \"returnData\", type: \"bytes\" },\n ],\n internalType: \"struct Multicall2.Result[]\",\n name: \"returnData\",\n type: \"tuple[]\",\n },\n ],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [\n { internalType: \"bool\", name: \"requireSuccess\", type: \"bool\" },\n {\n components: [\n { internalType: \"address\", name: \"target\", type: \"address\" },\n { internalType: \"bytes\", name: \"callData\", type: \"bytes\" },\n ],\n internalType: \"struct Multicall2.Call[]\",\n name: \"calls\",\n type: \"tuple[]\",\n },\n ],\n name: \"tryBlockAndAggregate\",\n outputs: [\n { internalType: \"uint256\", name: \"blockNumber\", type: \"uint256\" },\n { internalType: \"bytes32\", name: \"blockHash\", type: \"bytes32\" },\n {\n components: [\n { internalType: \"bool\", name: \"success\", type: \"bool\" },\n { internalType: \"bytes\", name: \"returnData\", type: \"bytes\" },\n ],\n internalType: \"struct Multicall2.Result[]\",\n name: \"returnData\",\n type: \"tuple[]\",\n },\n ],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n];\n",
9
- "/**\n * Based on code from SwapKit (https://github.com/swapkit/SwapKit),\n * licensed under the Apache License 2.0.\n * Modifications © 2025 Horizontal Systems.\n */\n\nimport {\n type Asset,\n AssetValue,\n applyFeeMultiplierToBigInt,\n Chain,\n type ChainSigner,\n type EVMChain,\n EVMChains,\n FeeOption,\n isGasAsset,\n SwapKitNumber,\n USwapError,\n} from \"@uswap/helpers\";\nimport { erc20ABI } from \"@uswap/helpers/contracts\";\nimport {\n BrowserProvider,\n Contract,\n type ContractTransaction,\n type Fragment,\n getAddress,\n type HDNodeWallet,\n Interface,\n type JsonFragment,\n type JsonRpcSigner,\n type Provider,\n type Signer,\n} from \"ethers\";\nimport { match } from \"ts-pattern\";\nimport { getEvmApi } from \"../api\";\nimport { getNetworkParams, toHexString } from \"../helpers\";\nimport type {\n ApproveParams,\n CallParams,\n EIP1559TxParams,\n EstimateCallParams,\n EVMCreateTransactionParams,\n EVMTransferParams,\n EVMTxParams,\n IsApprovedParams,\n LegacyEVMTxParams,\n} from \"../types\";\n\ntype ToolboxWrapParams<P = Provider | BrowserProvider, T = {}> = T & {\n isEIP1559Compatible?: boolean;\n provider: P;\n signer?: Signer;\n chain: EVMChain;\n};\n\nexport const MAX_APPROVAL = BigInt(\"0x7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff\");\n\nexport function BaseEVMToolbox<\n P extends Provider | BrowserProvider,\n S extends (ChainSigner<EVMTransferParams, string> & Signer) | JsonRpcSigner | HDNodeWallet | undefined,\n>({\n chain = Chain.Ethereum,\n provider,\n signer,\n isEIP1559Compatible = true,\n}: {\n signer: S;\n provider: P;\n isEIP1559Compatible?: boolean;\n chain?: EVMChain;\n}) {\n return {\n approve: getApprove({ chain, isEIP1559Compatible, provider, signer }),\n approvedAmount: getApprovedAmount({ chain, provider }),\n broadcastTransaction: provider.broadcastTransaction,\n call: getCall({ chain, isEIP1559Compatible, provider, signer }),\n createApprovalTx: getCreateApprovalTx({ chain, provider, signer }),\n createContract: getCreateContract({ chain, provider }),\n createContractTxObject: getCreateContractTxObject({ chain, provider }),\n createTransaction: getCreateTransferTx({ chain, provider, signer }),\n createTransferTx: getCreateTransferTx({ chain, provider, signer }),\n EIP1193SendTransaction: getEIP1193SendTransaction(provider),\n estimateCall: getEstimateCall({ provider, signer }),\n estimateGasLimit: getEstimateGasLimit({ chain, provider, signer }),\n estimateGasPrices: getEstimateGasPrices({ chain, isEIP1559Compatible, provider }),\n estimateTransactionFee: getEstimateTransactionFee({ chain, isEIP1559Compatible, provider }),\n getAddress: () => {\n return signer ? signer.getAddress() : undefined;\n },\n getBalance: getEvmApi(chain).getBalance,\n getNetworkParams: getNetworkParams(chain),\n isApproved: getIsApproved({ chain, provider }),\n sendTransaction: getSendTransaction({ chain, isEIP1559Compatible, provider, signer }),\n signMessage: signer ? (message: string | Uint8Array) => signer.signMessage(message) : undefined,\n transfer: getTransfer({ chain, isEIP1559Compatible, provider, signer }),\n validateAddress: (address: string) => evmValidateAddress({ address }),\n };\n}\n\nexport function evmValidateAddress({ address }: { address: string }) {\n try {\n getAddress(address);\n return true;\n } catch {\n return false;\n }\n}\n\nexport function isBrowserProvider(provider: any) {\n return provider instanceof BrowserProvider;\n}\n\nexport function createContract(address: string, abi: readonly (JsonFragment | Fragment)[], provider: Provider) {\n return new Contract(address, Interface.from(abi), provider);\n}\n\nexport function getCreateContract({ provider }: ToolboxWrapParams) {\n return function createContract(address: string, abi: readonly (JsonFragment | Fragment)[]) {\n return new Contract(address, Interface.from(abi), provider);\n };\n}\n\nconst stateMutable = [\"payable\", \"nonpayable\"];\n// const nonStateMutable = ['view', 'pure'];\nexport function isStateChangingCall({ abi, funcName }: { abi: readonly JsonFragment[]; funcName: string }) {\n const abiFragment = abi.find((fragment: any) => fragment.name === funcName) as any;\n if (!abiFragment) throw new USwapError(\"toolbox_evm_no_abi_fragment\", { funcName });\n return abiFragment.stateMutability && stateMutable.includes(abiFragment.stateMutability);\n}\n\nexport function toChecksumAddress(address: string) {\n return getAddress(address);\n}\n\nexport function getEIP1193SendTransaction(provider: Provider | BrowserProvider) {\n return function EIP1193SendTransaction({ value, ...params }: EVMTxParams | ContractTransaction): Promise<string> {\n if (!isBrowserProvider(provider)) {\n throw new USwapError(\"toolbox_evm_provider_not_eip1193_compatible\");\n }\n\n // Remove gas-related parameters to let the wallet estimate them\n // EIP-1193 providers (MetaMask, etc.) will estimate these automatically\n const {\n gasLimit: _gasLimit,\n gasPrice: _gasPrice,\n maxFeePerGas: _maxFeePerGas,\n maxPriorityFeePerGas: _maxPriorityFeePerGas,\n ...cleanParams\n } = params as any;\n\n return (provider as BrowserProvider).send(\"eth_sendTransaction\", [\n { ...cleanParams, value: toHexString(BigInt(value || 0)) } as any,\n ]);\n };\n}\n\nexport function getChecksumAddressFromAsset(asset: Asset, chain: EVMChain) {\n const assetAddress = getTokenAddress(asset, chain);\n\n if (assetAddress) {\n return getAddress(assetAddress.toLowerCase());\n }\n\n throw new USwapError(\"toolbox_evm_invalid_gas_asset_address\");\n}\n\nconst baseContractAddresses = EVMChains.reduce(\n (acc, chain) => {\n acc[chain] = \"0x0000000000000000000000000000000000000000\";\n return acc;\n },\n {} as Record<EVMChain, string>,\n);\n\nexport const ContractAddress: Record<EVMChain, string> = {\n ...baseContractAddresses,\n [Chain.Optimism]: \"0x4200000000000000000000000000000000000042\",\n [Chain.Polygon]: \"0x0000000000000000000000000000000000001010\",\n};\n\nconst ethGasChains = [Chain.Arbitrum, Chain.Aurora, Chain.Base, Chain.Optimism] as string[];\n\nexport function getTokenAddress({ chain, symbol, ticker }: Asset, baseAssetChain: EVMChain) {\n try {\n const isBSCBNB = chain === Chain.BinanceSmartChain && symbol === \"BNB\" && ticker === \"BNB\";\n const isBaseAsset = chain === baseAssetChain && symbol === baseAssetChain && ticker === baseAssetChain;\n const isEVMAsset = ethGasChains.includes(chain) && symbol === \"ETH\" && ticker === \"ETH\";\n\n if (isBaseAsset || isBSCBNB || isEVMAsset) {\n return ContractAddress[baseAssetChain];\n }\n\n // strip 0X only - 0x is still valid\n return getAddress(symbol.slice(ticker.length + 1).replace(/^0X/, \"\"));\n } catch {\n return null;\n }\n}\n\nexport function getCreateContractTxObject({ provider }: ToolboxWrapParams) {\n return async ({ contractAddress, abi, funcName, funcParams = [], txOverrides }: CallParams) =>\n createContract(contractAddress, abi, provider)\n .getFunction(funcName)\n .populateTransaction(...funcParams.concat(txOverrides).filter((p) => typeof p !== \"undefined\"));\n}\n\nexport function getEstimateGasPrices({\n chain,\n provider,\n isEIP1559Compatible = true,\n}: {\n provider: Provider;\n isEIP1559Compatible?: boolean;\n chain: EVMChain;\n}): () => Promise<{\n [key in FeeOption]: { l1GasPrice?: bigint; gasPrice?: bigint; maxFeePerGas?: bigint; maxPriorityFeePerGas?: bigint };\n}> {\n return match(chain)\n .with(Chain.Gnosis, () => {\n return async function estimateGasPrices() {\n try {\n const { gasPrice, maxPriorityFeePerGas } = await provider.getFeeData();\n if (!gasPrice || maxPriorityFeePerGas === null) throw new USwapError(\"toolbox_evm_no_fee_data\");\n\n return {\n [FeeOption.Average]: {\n maxFeePerGas: applyFeeMultiplierToBigInt(gasPrice, FeeOption.Average),\n maxPriorityFeePerGas: applyFeeMultiplierToBigInt(maxPriorityFeePerGas, FeeOption.Average),\n },\n [FeeOption.Fast]: {\n maxFeePerGas: applyFeeMultiplierToBigInt(gasPrice, FeeOption.Fast),\n maxPriorityFeePerGas: applyFeeMultiplierToBigInt(maxPriorityFeePerGas, FeeOption.Fast),\n },\n [FeeOption.Fastest]: {\n maxFeePerGas: applyFeeMultiplierToBigInt(gasPrice, FeeOption.Fastest),\n maxPriorityFeePerGas: applyFeeMultiplierToBigInt(maxPriorityFeePerGas, FeeOption.Fastest),\n },\n };\n } catch (error) {\n throw new USwapError(\"toolbox_evm_gas_estimation_error\", {\n error: (error as any).msg ?? (error as any).toString(),\n });\n }\n };\n })\n .with(Chain.Arbitrum, () => {\n return async function estimateGasPrices() {\n try {\n const { gasPrice } = await provider.getFeeData();\n if (!gasPrice) throw new USwapError(\"toolbox_evm_no_fee_data\");\n\n return {\n [FeeOption.Average]: { gasPrice },\n [FeeOption.Fast]: { gasPrice },\n [FeeOption.Fastest]: { gasPrice },\n };\n } catch (error) {\n throw new USwapError(\"toolbox_evm_gas_estimation_error\", {\n error: (error as any).msg ?? (error as any).toString(),\n });\n }\n };\n })\n .otherwise(() => {\n return async function estimateGasPrices() {\n try {\n const { maxFeePerGas, maxPriorityFeePerGas, gasPrice } = await provider.getFeeData();\n\n if (isEIP1559Compatible) {\n if (maxFeePerGas === null || maxPriorityFeePerGas === null) throw new USwapError(\"toolbox_evm_no_fee_data\");\n\n return {\n [FeeOption.Average]: { maxFeePerGas, maxPriorityFeePerGas },\n [FeeOption.Fast]: {\n maxFeePerGas: applyFeeMultiplierToBigInt(maxFeePerGas, FeeOption.Fast),\n maxPriorityFeePerGas: applyFeeMultiplierToBigInt(maxPriorityFeePerGas, FeeOption.Fast),\n },\n [FeeOption.Fastest]: {\n maxFeePerGas: applyFeeMultiplierToBigInt(maxFeePerGas, FeeOption.Fastest),\n maxPriorityFeePerGas: applyFeeMultiplierToBigInt(maxPriorityFeePerGas, FeeOption.Fastest),\n },\n };\n }\n if (!gasPrice) throw new USwapError(\"toolbox_evm_no_gas_price\");\n\n return {\n [FeeOption.Average]: { gasPrice },\n [FeeOption.Fast]: { gasPrice: applyFeeMultiplierToBigInt(gasPrice, FeeOption.Fast) },\n [FeeOption.Fastest]: { gasPrice: applyFeeMultiplierToBigInt(gasPrice, FeeOption.Fastest) },\n };\n } catch (error) {\n throw new USwapError(\"toolbox_evm_gas_estimation_error\", {\n error: (error as any).msg ?? (error as any).toString(),\n });\n }\n };\n });\n}\n\nfunction getCall({ provider, isEIP1559Compatible, signer, chain }: ToolboxWrapParams) {\n /**\n * @info call contract function\n * When using this method to make a non state changing call to the blockchain, like a isApproved call,\n * the signer needs to be set to undefined\n */\n return async function call<T>({\n callProvider,\n contractAddress,\n abi,\n funcName,\n funcParams = [],\n txOverrides = {},\n feeOption = FeeOption.Fast,\n }: CallParams): Promise<T> {\n const contractProvider = callProvider || provider;\n if (!contractAddress)\n throw new USwapError(\"toolbox_evm_invalid_params\", { error: \"contractAddress must be provided\" });\n\n const isStateChanging = isStateChangingCall({ abi, funcName });\n\n if (isStateChanging && isBrowserProvider(contractProvider) && signer) {\n const createTx = getCreateContractTxObject({ chain, provider: contractProvider });\n const from = txOverrides?.from || (await signer?.getAddress());\n const txObject = await createTx({\n abi,\n contractAddress,\n funcName,\n funcParams,\n txOverrides: { ...txOverrides, from },\n });\n const sendTx = getEIP1193SendTransaction(contractProvider);\n\n return sendTx(txObject) as Promise<T>;\n }\n const contract = createContract(contractAddress, abi, contractProvider);\n\n // only use signer if the contract function is state changing\n if (isStateChanging) {\n if (!signer) throw new USwapError(\"toolbox_evm_no_signer\");\n\n const from = txOverrides?.from || (await signer.getAddress());\n if (!from) throw new USwapError(\"toolbox_evm_no_signer_address\");\n\n const connectedContract = contract.connect(signer);\n const estimateGasPrices = getEstimateGasPrices({ chain, isEIP1559Compatible, provider });\n const { maxFeePerGas, maxPriorityFeePerGas, gasPrice } = (await estimateGasPrices())[feeOption];\n\n const gasLimit = await contract.getFunction(funcName).estimateGas(...funcParams, txOverrides);\n\n // @ts-expect-error\n const result = await connectedContract[funcName](...funcParams, {\n ...txOverrides,\n gasLimit,\n gasPrice,\n maxFeePerGas,\n maxPriorityFeePerGas,\n /**\n * nonce must be set due to a possible bug with ethers.js,\n * expecting a synchronous nonce while the JsonRpcProvider delivers Promise\n */\n nonce: txOverrides?.nonce || (await contractProvider.getTransactionCount(from)),\n });\n\n return typeof result?.hash === \"string\" ? result?.hash : result;\n }\n\n const result = await contract[funcName]?.(...funcParams);\n\n return typeof result?.hash === \"string\" ? result?.hash : result;\n };\n}\n\nfunction getApprovedAmount({ provider, chain }: ToolboxWrapParams) {\n return function approveAmount({ assetAddress, spenderAddress, from }: IsApprovedParams) {\n const call = getCall({ chain, isEIP1559Compatible: true, provider });\n\n return call<bigint>({\n abi: erc20ABI,\n contractAddress: assetAddress,\n funcName: \"allowance\",\n funcParams: [from, spenderAddress],\n });\n };\n}\n\nfunction getIsApproved({ provider, chain }: ToolboxWrapParams) {\n return async function isApproved({ assetAddress, spenderAddress, from, amount = MAX_APPROVAL }: IsApprovedParams) {\n const approvedAmount = await getApprovedAmount({ chain, provider })({ assetAddress, from, spenderAddress });\n\n return SwapKitNumber.fromBigInt(approvedAmount).gte(SwapKitNumber.fromBigInt(BigInt(amount)));\n };\n}\n\nfunction getApprove({ signer, isEIP1559Compatible = true, provider, chain }: ToolboxWrapParams) {\n return async function approve({\n assetAddress,\n spenderAddress,\n feeOptionKey = FeeOption.Fast,\n amount,\n gasLimitFallback,\n from: fromParam,\n nonce,\n }: ApproveParams) {\n const funcParams = [spenderAddress, BigInt(amount || MAX_APPROVAL)];\n const from = (await signer?.getAddress()) || fromParam;\n\n const functionCallParams = {\n abi: erc20ABI,\n contractAddress: assetAddress,\n funcName: \"approve\",\n funcParams,\n signer,\n txOverrides: { from },\n };\n\n if (isBrowserProvider(provider)) {\n const createTx = getCreateContractTxObject({ chain, provider });\n const sendTx = getEIP1193SendTransaction(provider);\n const txObject = await createTx(functionCallParams);\n\n return sendTx(txObject);\n }\n\n const call = getCall({ chain, isEIP1559Compatible, provider, signer });\n\n return call<string>({\n ...functionCallParams,\n feeOption: feeOptionKey,\n funcParams,\n txOverrides: { from, gasLimit: gasLimitFallback ? BigInt(gasLimitFallback.toString()) : undefined, nonce },\n });\n };\n}\n\nfunction getTransfer({ signer, isEIP1559Compatible = true, provider }: ToolboxWrapParams) {\n return async function transfer({\n assetValue,\n memo,\n recipient,\n feeOptionKey = FeeOption.Fast,\n sender,\n // data,\n // from: fromOverride,\n // maxFeePerGas,\n // maxPriorityFeePerGas,\n // gasPrice,\n ...tx\n }: EVMTransferParams) {\n const { hexlify, toUtf8Bytes } = await import(\"ethers\");\n const txAmount = assetValue.getBaseValue(\"bigint\");\n const chain = assetValue.chain as EVMChain;\n const from = sender || (await signer?.getAddress());\n const sendTx = getSendTransaction({ chain, isEIP1559Compatible, provider, signer });\n\n if (!from) throw new USwapError(\"toolbox_evm_no_from_address\");\n\n if (assetValue.isGasAsset) {\n const transaction = {\n ...tx,\n data: hexlify(toUtf8Bytes(memo || \"\")),\n feeOptionKey,\n from,\n to: recipient,\n value: txAmount,\n };\n\n return sendTx(transaction);\n }\n\n // const call = getCall({ signer, provider, isEIP1559Compatible });\n const contractAddress = getTokenAddress(assetValue, chain);\n if (!contractAddress) throw new USwapError(\"toolbox_evm_no_contract_address\");\n\n const { maxFeePerGas, maxPriorityFeePerGas, gasPrice } = (\n await getEstimateGasPrices({ chain, isEIP1559Compatible, provider })()\n )[feeOptionKey];\n\n const transaction = await getCreateTransferTx({ chain, provider, signer })({\n assetValue,\n data: hexlify(toUtf8Bytes(memo || \"\")),\n gasPrice,\n maxFeePerGas,\n maxPriorityFeePerGas,\n memo,\n recipient,\n sender: from,\n });\n\n return sendTx(transaction);\n };\n}\n\nfunction getEstimateCall({ provider, signer }: { signer?: Signer; provider: Provider }) {\n return function estimateCall({ contractAddress, abi, funcName, funcParams = [], txOverrides }: EstimateCallParams) {\n if (!contractAddress) throw new USwapError(\"toolbox_evm_no_contract_address\");\n\n const contract = createContract(contractAddress, abi, provider);\n return signer\n ? contract\n .connect(signer)\n .getFunction(funcName)\n .estimateGas(...funcParams, txOverrides)\n : contract.getFunction(funcName).estimateGas(...funcParams, txOverrides);\n };\n}\n\nfunction getEstimateGasLimit({ provider, signer }: ToolboxWrapParams) {\n return async function estimateGasLimit({\n assetValue,\n recipient,\n memo,\n data,\n sender,\n funcName,\n funcParams,\n txOverrides,\n }: EVMTransferParams & {\n assetValue: AssetValue;\n funcName?: string;\n funcParams?: unknown[];\n txOverrides?: EVMTxParams;\n data?: string;\n }) {\n // const value = assetValue.getBaseValue(\"bigint\");\n const value = assetValue.bigIntValue;\n\n const assetAddress = assetValue.isGasAsset ? null : getTokenAddress(assetValue, assetValue.chain as EVMChain);\n\n if (assetAddress && funcName) {\n const estimateCall = getEstimateCall({ provider, signer });\n // ERC20 gas estimate\n return estimateCall({ abi: erc20ABI, contractAddress: assetAddress, funcName, funcParams, txOverrides });\n }\n\n const { hexlify, toUtf8Bytes } = await import(\"ethers\");\n\n return provider.estimateGas({\n data: data ? data : memo ? hexlify(toUtf8Bytes(memo)) : undefined,\n from: sender,\n to: recipient,\n value,\n });\n };\n}\n\nconst isEIP1559Transaction = (tx: EVMTxParams) =>\n (tx as EIP1559TxParams).type === 2 ||\n !!(tx as EIP1559TxParams).maxFeePerGas ||\n !!(tx as EIP1559TxParams).maxPriorityFeePerGas;\n\nfunction getSendTransaction({ provider, signer, isEIP1559Compatible = true, chain }: ToolboxWrapParams) {\n return async function sendTransaction({\n feeOptionKey = FeeOption.Fast,\n ...tx\n }: EVMTxParams & { feeOptionKey?: FeeOption }) {\n const { from, to, data, value, ...transaction } = tx;\n\n if (!signer) throw new USwapError(\"toolbox_evm_no_signer\");\n if (!to) throw new USwapError(\"toolbox_evm_no_to_address\");\n\n const parsedTxObject = { ...transaction, data: data || \"0x\", from, to, value: BigInt(value || 0) };\n\n // early return to skip gas estimation if provider is EIP-1193\n if (isBrowserProvider(provider)) {\n const sendTx = getEIP1193SendTransaction(provider);\n return sendTx(parsedTxObject);\n }\n\n const address = from || (await signer.getAddress());\n const nonce = tx.nonce || (await provider.getTransactionCount(address));\n const chainId = (await provider.getNetwork()).chainId;\n\n const isEIP1559 = isEIP1559Transaction(parsedTxObject) || isEIP1559Compatible;\n const estimateGasPrices = getEstimateGasPrices({ chain, isEIP1559Compatible, provider });\n\n const feeData =\n (isEIP1559 &&\n !(\n (parsedTxObject as EIP1559TxParams).maxFeePerGas && (parsedTxObject as EIP1559TxParams).maxPriorityFeePerGas\n )) ||\n !(parsedTxObject as LegacyEVMTxParams).gasPrice\n ? Object.entries((await estimateGasPrices())[feeOptionKey]).reduce(\n // biome-ignore lint/performance/noAccumulatingSpread: this is a small object\n (acc, [k, v]) => ({ ...acc, [k]: toHexString(BigInt(v)) }),\n {} as { maxFeePerGas?: string; maxPriorityFeePerGas?: string; gasPrice?: string },\n )\n : {};\n let gasLimit: string;\n try {\n gasLimit = toHexString(parsedTxObject.gasLimit || ((await provider.estimateGas(parsedTxObject)) * 11n) / 10n);\n } catch (error) {\n throw new USwapError(\"toolbox_evm_error_estimating_gas_limit\", { error });\n }\n\n try {\n const txObject = { ...parsedTxObject, chainId, gasLimit, nonce, type: isEIP1559 ? 2 : 0, ...feeData };\n\n try {\n const response = await signer.sendTransaction(txObject);\n return response.hash;\n } catch {\n const txHex = await signer.signTransaction({ ...txObject, from: address });\n const response = await provider.broadcastTransaction(txHex);\n return response.hash;\n }\n } catch (error) {\n throw new USwapError(\"toolbox_evm_error_sending_transaction\", { error });\n }\n };\n}\n\nfunction getCreateTransferTx({ provider, signer }: ToolboxWrapParams) {\n return async function createTransferTx({\n assetValue,\n memo,\n recipient,\n data,\n sender: fromOverride,\n maxFeePerGas,\n maxPriorityFeePerGas,\n gasPrice,\n ...tx\n }: EVMCreateTransactionParams) {\n const txAmount = assetValue.getBaseValue(\"bigint\");\n const chain = assetValue.chain as EVMChain;\n const from = fromOverride || (await signer?.getAddress());\n\n if (!from) throw new USwapError(\"toolbox_evm_no_from_address\");\n\n if (isGasAsset(assetValue)) {\n const { hexlify, toUtf8Bytes } = await import(\"ethers\");\n\n return { ...tx, data: data || hexlify(toUtf8Bytes(memo || \"\")), from, to: recipient, value: txAmount };\n }\n\n const contractAddress = getTokenAddress(assetValue, chain);\n if (!contractAddress) throw new USwapError(\"toolbox_evm_no_contract_address\");\n const createTx = getCreateContractTxObject({ chain: assetValue.chain as EVMChain, provider });\n\n return createTx({\n abi: erc20ABI,\n contractAddress,\n funcName: \"transfer\",\n funcParams: [recipient, txAmount],\n txOverrides: { from, gasPrice, maxFeePerGas, maxPriorityFeePerGas },\n });\n };\n}\n\nfunction getCreateApprovalTx({ provider, signer, chain }: ToolboxWrapParams) {\n return async function createApprovalTx({ assetAddress, spenderAddress, amount, from: fromParam }: ApproveParams) {\n const from = (await signer?.getAddress()) || fromParam;\n\n const createTx = getCreateContractTxObject({ chain, provider });\n const approvalAmount = [\"bigint\", \"number\"].includes(typeof amount)\n ? (amount as bigint | number)\n : amount || MAX_APPROVAL;\n\n const txObject = await createTx({\n abi: erc20ABI,\n contractAddress: assetAddress,\n funcName: \"approve\",\n funcParams: [spenderAddress, BigInt(approvalAmount)],\n txOverrides: { from },\n });\n\n return txObject;\n };\n}\n\nfunction getEstimateTransactionFee({\n provider,\n isEIP1559Compatible = true,\n}: {\n provider: Provider | BrowserProvider;\n isEIP1559Compatible?: boolean;\n chain: EVMChain;\n}) {\n return async function estimateTransactionFee({\n feeOption = FeeOption.Fast,\n chain,\n ...txObject\n }: EIP1559TxParams & { feeOption: FeeOption; chain: EVMChain }) {\n const estimateGasPrices = getEstimateGasPrices({ chain, isEIP1559Compatible, provider });\n const gasPrices = await estimateGasPrices();\n const gasLimit = await provider.estimateGas(txObject);\n\n const assetValue = AssetValue.from({ chain });\n const { gasPrice, maxFeePerGas, maxPriorityFeePerGas } = gasPrices[feeOption];\n\n if (!isEIP1559Compatible && gasPrice) {\n return assetValue.set(SwapKitNumber.fromBigInt(gasPrice * gasLimit, assetValue.decimal));\n }\n\n if (maxFeePerGas && maxPriorityFeePerGas) {\n const fee = (maxFeePerGas + maxPriorityFeePerGas) * gasLimit;\n\n return assetValue.set(SwapKitNumber.fromBigInt(fee, assetValue.decimal));\n }\n\n throw new USwapError(\"toolbox_evm_no_gas_price\");\n };\n}\n",
9
+ "/**\n * Modifications © 2025 Horizontal Systems.\n */\n\nimport {\n type Asset,\n AssetValue,\n applyFeeMultiplierToBigInt,\n Chain,\n type ChainSigner,\n type EVMChain,\n EVMChains,\n FeeOption,\n isGasAsset,\n USwapError,\n USwapNumber,\n} from \"@uswap/helpers\";\nimport { erc20ABI } from \"@uswap/helpers/contracts\";\nimport {\n BrowserProvider,\n Contract,\n type ContractTransaction,\n type Fragment,\n getAddress,\n type HDNodeWallet,\n Interface,\n type JsonFragment,\n type JsonRpcSigner,\n type Provider,\n type Signer,\n} from \"ethers\";\nimport { match } from \"ts-pattern\";\nimport { getEvmApi } from \"../api\";\nimport { getNetworkParams, toHexString } from \"../helpers\";\nimport type {\n ApproveParams,\n CallParams,\n EIP1559TxParams,\n EstimateCallParams,\n EVMCreateTransactionParams,\n EVMTransferParams,\n EVMTxParams,\n IsApprovedParams,\n LegacyEVMTxParams,\n} from \"../types\";\n\ntype ToolboxWrapParams<P = Provider | BrowserProvider, T = {}> = T & {\n isEIP1559Compatible?: boolean;\n provider: P;\n signer?: Signer;\n chain: EVMChain;\n};\n\nexport const MAX_APPROVAL = BigInt(\"0x7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff\");\n\nexport function BaseEVMToolbox<\n P extends Provider | BrowserProvider,\n S extends (ChainSigner<EVMTransferParams, string> & Signer) | JsonRpcSigner | HDNodeWallet | undefined,\n>({\n chain = Chain.Ethereum,\n provider,\n signer,\n isEIP1559Compatible = true,\n}: {\n signer: S;\n provider: P;\n isEIP1559Compatible?: boolean;\n chain?: EVMChain;\n}) {\n return {\n approve: getApprove({ chain, isEIP1559Compatible, provider, signer }),\n approvedAmount: getApprovedAmount({ chain, provider }),\n broadcastTransaction: provider.broadcastTransaction,\n call: getCall({ chain, isEIP1559Compatible, provider, signer }),\n createApprovalTx: getCreateApprovalTx({ chain, provider, signer }),\n createContract: getCreateContract({ chain, provider }),\n createContractTxObject: getCreateContractTxObject({ chain, provider }),\n createTransaction: getCreateTransferTx({ chain, provider, signer }),\n createTransferTx: getCreateTransferTx({ chain, provider, signer }),\n EIP1193SendTransaction: getEIP1193SendTransaction(provider),\n estimateCall: getEstimateCall({ provider, signer }),\n estimateGasLimit: getEstimateGasLimit({ chain, provider, signer }),\n estimateGasPrices: getEstimateGasPrices({ chain, isEIP1559Compatible, provider }),\n estimateTransactionFee: getEstimateTransactionFee({ chain, isEIP1559Compatible, provider }),\n getAddress: () => {\n return signer ? signer.getAddress() : undefined;\n },\n getBalance: getEvmApi(chain).getBalance,\n getNetworkParams: getNetworkParams(chain),\n isApproved: getIsApproved({ chain, provider }),\n sendTransaction: getSendTransaction({ chain, isEIP1559Compatible, provider, signer }),\n signMessage: signer ? (message: string | Uint8Array) => signer.signMessage(message) : undefined,\n transfer: getTransfer({ chain, isEIP1559Compatible, provider, signer }),\n validateAddress: (address: string) => evmValidateAddress({ address }),\n };\n}\n\nexport function evmValidateAddress({ address }: { address: string }) {\n try {\n getAddress(address);\n return true;\n } catch {\n return false;\n }\n}\n\nexport function isBrowserProvider(provider: any) {\n return provider instanceof BrowserProvider;\n}\n\nexport function createContract(address: string, abi: readonly (JsonFragment | Fragment)[], provider: Provider) {\n return new Contract(address, Interface.from(abi), provider);\n}\n\nexport function getCreateContract({ provider }: ToolboxWrapParams) {\n return function createContract(address: string, abi: readonly (JsonFragment | Fragment)[]) {\n return new Contract(address, Interface.from(abi), provider);\n };\n}\n\nconst stateMutable = [\"payable\", \"nonpayable\"];\n// const nonStateMutable = ['view', 'pure'];\nexport function isStateChangingCall({ abi, funcName }: { abi: readonly JsonFragment[]; funcName: string }) {\n const abiFragment = abi.find((fragment: any) => fragment.name === funcName) as any;\n if (!abiFragment) throw new USwapError(\"toolbox_evm_no_abi_fragment\", { funcName });\n return abiFragment.stateMutability && stateMutable.includes(abiFragment.stateMutability);\n}\n\nexport function toChecksumAddress(address: string) {\n return getAddress(address);\n}\n\nexport function getEIP1193SendTransaction(provider: Provider | BrowserProvider) {\n return function EIP1193SendTransaction({ value, ...params }: EVMTxParams | ContractTransaction): Promise<string> {\n if (!isBrowserProvider(provider)) {\n throw new USwapError(\"toolbox_evm_provider_not_eip1193_compatible\");\n }\n\n // Remove gas-related parameters to let the wallet estimate them\n // EIP-1193 providers (MetaMask, etc.) will estimate these automatically\n const {\n gasLimit: _gasLimit,\n gasPrice: _gasPrice,\n maxFeePerGas: _maxFeePerGas,\n maxPriorityFeePerGas: _maxPriorityFeePerGas,\n ...cleanParams\n } = params as any;\n\n return (provider as BrowserProvider).send(\"eth_sendTransaction\", [\n { ...cleanParams, value: toHexString(BigInt(value || 0)) } as any,\n ]);\n };\n}\n\nexport function getChecksumAddressFromAsset(asset: Asset, chain: EVMChain) {\n const assetAddress = getTokenAddress(asset, chain);\n\n if (assetAddress) {\n return getAddress(assetAddress.toLowerCase());\n }\n\n throw new USwapError(\"toolbox_evm_invalid_gas_asset_address\");\n}\n\nconst baseContractAddresses = EVMChains.reduce(\n (acc, chain) => {\n acc[chain] = \"0x0000000000000000000000000000000000000000\";\n return acc;\n },\n {} as Record<EVMChain, string>,\n);\n\nexport const ContractAddress: Record<EVMChain, string> = {\n ...baseContractAddresses,\n [Chain.Optimism]: \"0x4200000000000000000000000000000000000042\",\n [Chain.Polygon]: \"0x0000000000000000000000000000000000001010\",\n};\n\nconst ethGasChains = [Chain.Arbitrum, Chain.Aurora, Chain.Base, Chain.Optimism] as string[];\n\nexport function getTokenAddress({ chain, symbol, ticker }: Asset, baseAssetChain: EVMChain) {\n try {\n const isBSCBNB = chain === Chain.BinanceSmartChain && symbol === \"BNB\" && ticker === \"BNB\";\n const isBaseAsset = chain === baseAssetChain && symbol === baseAssetChain && ticker === baseAssetChain;\n const isEVMAsset = ethGasChains.includes(chain) && symbol === \"ETH\" && ticker === \"ETH\";\n\n if (isBaseAsset || isBSCBNB || isEVMAsset) {\n return ContractAddress[baseAssetChain];\n }\n\n // strip 0X only - 0x is still valid\n return getAddress(symbol.slice(ticker.length + 1).replace(/^0X/, \"\"));\n } catch {\n return null;\n }\n}\n\nexport function getCreateContractTxObject({ provider }: ToolboxWrapParams) {\n return async ({ contractAddress, abi, funcName, funcParams = [], txOverrides }: CallParams) =>\n createContract(contractAddress, abi, provider)\n .getFunction(funcName)\n .populateTransaction(...funcParams.concat(txOverrides).filter((p) => typeof p !== \"undefined\"));\n}\n\nexport function getEstimateGasPrices({\n chain,\n provider,\n isEIP1559Compatible = true,\n}: {\n provider: Provider;\n isEIP1559Compatible?: boolean;\n chain: EVMChain;\n}): () => Promise<{\n [key in FeeOption]: { l1GasPrice?: bigint; gasPrice?: bigint; maxFeePerGas?: bigint; maxPriorityFeePerGas?: bigint };\n}> {\n return match(chain)\n .with(Chain.Gnosis, () => {\n return async function estimateGasPrices() {\n try {\n const { gasPrice, maxPriorityFeePerGas } = await provider.getFeeData();\n if (!gasPrice || maxPriorityFeePerGas === null) throw new USwapError(\"toolbox_evm_no_fee_data\");\n\n return {\n [FeeOption.Average]: {\n maxFeePerGas: applyFeeMultiplierToBigInt(gasPrice, FeeOption.Average),\n maxPriorityFeePerGas: applyFeeMultiplierToBigInt(maxPriorityFeePerGas, FeeOption.Average),\n },\n [FeeOption.Fast]: {\n maxFeePerGas: applyFeeMultiplierToBigInt(gasPrice, FeeOption.Fast),\n maxPriorityFeePerGas: applyFeeMultiplierToBigInt(maxPriorityFeePerGas, FeeOption.Fast),\n },\n [FeeOption.Fastest]: {\n maxFeePerGas: applyFeeMultiplierToBigInt(gasPrice, FeeOption.Fastest),\n maxPriorityFeePerGas: applyFeeMultiplierToBigInt(maxPriorityFeePerGas, FeeOption.Fastest),\n },\n };\n } catch (error) {\n throw new USwapError(\"toolbox_evm_gas_estimation_error\", {\n error: (error as any).msg ?? (error as any).toString(),\n });\n }\n };\n })\n .with(Chain.Arbitrum, () => {\n return async function estimateGasPrices() {\n try {\n const { gasPrice } = await provider.getFeeData();\n if (!gasPrice) throw new USwapError(\"toolbox_evm_no_fee_data\");\n\n return {\n [FeeOption.Average]: { gasPrice },\n [FeeOption.Fast]: { gasPrice },\n [FeeOption.Fastest]: { gasPrice },\n };\n } catch (error) {\n throw new USwapError(\"toolbox_evm_gas_estimation_error\", {\n error: (error as any).msg ?? (error as any).toString(),\n });\n }\n };\n })\n .otherwise(() => {\n return async function estimateGasPrices() {\n try {\n const { maxFeePerGas, maxPriorityFeePerGas, gasPrice } = await provider.getFeeData();\n\n if (isEIP1559Compatible) {\n if (maxFeePerGas === null || maxPriorityFeePerGas === null) throw new USwapError(\"toolbox_evm_no_fee_data\");\n\n return {\n [FeeOption.Average]: { maxFeePerGas, maxPriorityFeePerGas },\n [FeeOption.Fast]: {\n maxFeePerGas: applyFeeMultiplierToBigInt(maxFeePerGas, FeeOption.Fast),\n maxPriorityFeePerGas: applyFeeMultiplierToBigInt(maxPriorityFeePerGas, FeeOption.Fast),\n },\n [FeeOption.Fastest]: {\n maxFeePerGas: applyFeeMultiplierToBigInt(maxFeePerGas, FeeOption.Fastest),\n maxPriorityFeePerGas: applyFeeMultiplierToBigInt(maxPriorityFeePerGas, FeeOption.Fastest),\n },\n };\n }\n if (!gasPrice) throw new USwapError(\"toolbox_evm_no_gas_price\");\n\n return {\n [FeeOption.Average]: { gasPrice },\n [FeeOption.Fast]: { gasPrice: applyFeeMultiplierToBigInt(gasPrice, FeeOption.Fast) },\n [FeeOption.Fastest]: { gasPrice: applyFeeMultiplierToBigInt(gasPrice, FeeOption.Fastest) },\n };\n } catch (error) {\n throw new USwapError(\"toolbox_evm_gas_estimation_error\", {\n error: (error as any).msg ?? (error as any).toString(),\n });\n }\n };\n });\n}\n\nfunction getCall({ provider, isEIP1559Compatible, signer, chain }: ToolboxWrapParams) {\n /**\n * @info call contract function\n * When using this method to make a non state changing call to the blockchain, like a isApproved call,\n * the signer needs to be set to undefined\n */\n return async function call<T>({\n callProvider,\n contractAddress,\n abi,\n funcName,\n funcParams = [],\n txOverrides = {},\n feeOption = FeeOption.Fast,\n }: CallParams): Promise<T> {\n const contractProvider = callProvider || provider;\n if (!contractAddress)\n throw new USwapError(\"toolbox_evm_invalid_params\", { error: \"contractAddress must be provided\" });\n\n const isStateChanging = isStateChangingCall({ abi, funcName });\n\n if (isStateChanging && isBrowserProvider(contractProvider) && signer) {\n const createTx = getCreateContractTxObject({ chain, provider: contractProvider });\n const from = txOverrides?.from || (await signer?.getAddress());\n const txObject = await createTx({\n abi,\n contractAddress,\n funcName,\n funcParams,\n txOverrides: { ...txOverrides, from },\n });\n const sendTx = getEIP1193SendTransaction(contractProvider);\n\n return sendTx(txObject) as Promise<T>;\n }\n const contract = createContract(contractAddress, abi, contractProvider);\n\n // only use signer if the contract function is state changing\n if (isStateChanging) {\n if (!signer) throw new USwapError(\"toolbox_evm_no_signer\");\n\n const from = txOverrides?.from || (await signer.getAddress());\n if (!from) throw new USwapError(\"toolbox_evm_no_signer_address\");\n\n const connectedContract = contract.connect(signer);\n const estimateGasPrices = getEstimateGasPrices({ chain, isEIP1559Compatible, provider });\n const { maxFeePerGas, maxPriorityFeePerGas, gasPrice } = (await estimateGasPrices())[feeOption];\n\n const gasLimit = await contract.getFunction(funcName).estimateGas(...funcParams, txOverrides);\n\n // @ts-expect-error\n const result = await connectedContract[funcName](...funcParams, {\n ...txOverrides,\n gasLimit,\n gasPrice,\n maxFeePerGas,\n maxPriorityFeePerGas,\n /**\n * nonce must be set due to a possible bug with ethers.js,\n * expecting a synchronous nonce while the JsonRpcProvider delivers Promise\n */\n nonce: txOverrides?.nonce || (await contractProvider.getTransactionCount(from)),\n });\n\n return typeof result?.hash === \"string\" ? result?.hash : result;\n }\n\n const result = await contract[funcName]?.(...funcParams);\n\n return typeof result?.hash === \"string\" ? result?.hash : result;\n };\n}\n\nfunction getApprovedAmount({ provider, chain }: ToolboxWrapParams) {\n return function approveAmount({ assetAddress, spenderAddress, from }: IsApprovedParams) {\n const call = getCall({ chain, isEIP1559Compatible: true, provider });\n\n return call<bigint>({\n abi: erc20ABI,\n contractAddress: assetAddress,\n funcName: \"allowance\",\n funcParams: [from, spenderAddress],\n });\n };\n}\n\nfunction getIsApproved({ provider, chain }: ToolboxWrapParams) {\n return async function isApproved({ assetAddress, spenderAddress, from, amount = MAX_APPROVAL }: IsApprovedParams) {\n const approvedAmount = await getApprovedAmount({ chain, provider })({ assetAddress, from, spenderAddress });\n\n return USwapNumber.fromBigInt(approvedAmount).gte(USwapNumber.fromBigInt(BigInt(amount)));\n };\n}\n\nfunction getApprove({ signer, isEIP1559Compatible = true, provider, chain }: ToolboxWrapParams) {\n return async function approve({\n assetAddress,\n spenderAddress,\n feeOptionKey = FeeOption.Fast,\n amount,\n gasLimitFallback,\n from: fromParam,\n nonce,\n }: ApproveParams) {\n const funcParams = [spenderAddress, BigInt(amount || MAX_APPROVAL)];\n const from = (await signer?.getAddress()) || fromParam;\n\n const functionCallParams = {\n abi: erc20ABI,\n contractAddress: assetAddress,\n funcName: \"approve\",\n funcParams,\n signer,\n txOverrides: { from },\n };\n\n if (isBrowserProvider(provider)) {\n const createTx = getCreateContractTxObject({ chain, provider });\n const sendTx = getEIP1193SendTransaction(provider);\n const txObject = await createTx(functionCallParams);\n\n return sendTx(txObject);\n }\n\n const call = getCall({ chain, isEIP1559Compatible, provider, signer });\n\n return call<string>({\n ...functionCallParams,\n feeOption: feeOptionKey,\n funcParams,\n txOverrides: { from, gasLimit: gasLimitFallback ? BigInt(gasLimitFallback.toString()) : undefined, nonce },\n });\n };\n}\n\nfunction getTransfer({ signer, isEIP1559Compatible = true, provider }: ToolboxWrapParams) {\n return async function transfer({\n assetValue,\n memo,\n recipient,\n feeOptionKey = FeeOption.Fast,\n sender,\n // data,\n // from: fromOverride,\n // maxFeePerGas,\n // maxPriorityFeePerGas,\n // gasPrice,\n ...tx\n }: EVMTransferParams) {\n const { hexlify, toUtf8Bytes } = await import(\"ethers\");\n const txAmount = assetValue.getBaseValue(\"bigint\");\n const chain = assetValue.chain as EVMChain;\n const from = sender || (await signer?.getAddress());\n const sendTx = getSendTransaction({ chain, isEIP1559Compatible, provider, signer });\n\n if (!from) throw new USwapError(\"toolbox_evm_no_from_address\");\n\n if (assetValue.isGasAsset) {\n const transaction = {\n ...tx,\n data: hexlify(toUtf8Bytes(memo || \"\")),\n feeOptionKey,\n from,\n to: recipient,\n value: txAmount,\n };\n\n return sendTx(transaction);\n }\n\n // const call = getCall({ signer, provider, isEIP1559Compatible });\n const contractAddress = getTokenAddress(assetValue, chain);\n if (!contractAddress) throw new USwapError(\"toolbox_evm_no_contract_address\");\n\n const { maxFeePerGas, maxPriorityFeePerGas, gasPrice } = (\n await getEstimateGasPrices({ chain, isEIP1559Compatible, provider })()\n )[feeOptionKey];\n\n const transaction = await getCreateTransferTx({ chain, provider, signer })({\n assetValue,\n data: hexlify(toUtf8Bytes(memo || \"\")),\n gasPrice,\n maxFeePerGas,\n maxPriorityFeePerGas,\n memo,\n recipient,\n sender: from,\n });\n\n return sendTx(transaction);\n };\n}\n\nfunction getEstimateCall({ provider, signer }: { signer?: Signer; provider: Provider }) {\n return function estimateCall({ contractAddress, abi, funcName, funcParams = [], txOverrides }: EstimateCallParams) {\n if (!contractAddress) throw new USwapError(\"toolbox_evm_no_contract_address\");\n\n const contract = createContract(contractAddress, abi, provider);\n return signer\n ? contract\n .connect(signer)\n .getFunction(funcName)\n .estimateGas(...funcParams, txOverrides)\n : contract.getFunction(funcName).estimateGas(...funcParams, txOverrides);\n };\n}\n\nfunction getEstimateGasLimit({ provider, signer }: ToolboxWrapParams) {\n return async function estimateGasLimit({\n assetValue,\n recipient,\n memo,\n data,\n sender,\n funcName,\n funcParams,\n txOverrides,\n }: EVMTransferParams & {\n assetValue: AssetValue;\n funcName?: string;\n funcParams?: unknown[];\n txOverrides?: EVMTxParams;\n data?: string;\n }) {\n // const value = assetValue.getBaseValue(\"bigint\");\n const value = assetValue.bigIntValue;\n\n const assetAddress = assetValue.isGasAsset ? null : getTokenAddress(assetValue, assetValue.chain as EVMChain);\n\n if (assetAddress && funcName) {\n const estimateCall = getEstimateCall({ provider, signer });\n // ERC20 gas estimate\n return estimateCall({ abi: erc20ABI, contractAddress: assetAddress, funcName, funcParams, txOverrides });\n }\n\n const { hexlify, toUtf8Bytes } = await import(\"ethers\");\n\n return provider.estimateGas({\n data: data ? data : memo ? hexlify(toUtf8Bytes(memo)) : undefined,\n from: sender,\n to: recipient,\n value,\n });\n };\n}\n\nconst isEIP1559Transaction = (tx: EVMTxParams) =>\n (tx as EIP1559TxParams).type === 2 ||\n !!(tx as EIP1559TxParams).maxFeePerGas ||\n !!(tx as EIP1559TxParams).maxPriorityFeePerGas;\n\nfunction getSendTransaction({ provider, signer, isEIP1559Compatible = true, chain }: ToolboxWrapParams) {\n return async function sendTransaction({\n feeOptionKey = FeeOption.Fast,\n ...tx\n }: EVMTxParams & { feeOptionKey?: FeeOption }) {\n const { from, to, data, value, ...transaction } = tx;\n\n if (!signer) throw new USwapError(\"toolbox_evm_no_signer\");\n if (!to) throw new USwapError(\"toolbox_evm_no_to_address\");\n\n const parsedTxObject = { ...transaction, data: data || \"0x\", from, to, value: BigInt(value || 0) };\n\n // early return to skip gas estimation if provider is EIP-1193\n if (isBrowserProvider(provider)) {\n const sendTx = getEIP1193SendTransaction(provider);\n return sendTx(parsedTxObject);\n }\n\n const address = from || (await signer.getAddress());\n const nonce = tx.nonce || (await provider.getTransactionCount(address));\n const chainId = (await provider.getNetwork()).chainId;\n\n const isEIP1559 = isEIP1559Transaction(parsedTxObject) || isEIP1559Compatible;\n const estimateGasPrices = getEstimateGasPrices({ chain, isEIP1559Compatible, provider });\n\n const feeData =\n (isEIP1559 &&\n !(\n (parsedTxObject as EIP1559TxParams).maxFeePerGas && (parsedTxObject as EIP1559TxParams).maxPriorityFeePerGas\n )) ||\n !(parsedTxObject as LegacyEVMTxParams).gasPrice\n ? Object.entries((await estimateGasPrices())[feeOptionKey]).reduce(\n // biome-ignore lint/performance/noAccumulatingSpread: this is a small object\n (acc, [k, v]) => ({ ...acc, [k]: toHexString(BigInt(v)) }),\n {} as { maxFeePerGas?: string; maxPriorityFeePerGas?: string; gasPrice?: string },\n )\n : {};\n let gasLimit: string;\n try {\n gasLimit = toHexString(parsedTxObject.gasLimit || ((await provider.estimateGas(parsedTxObject)) * 11n) / 10n);\n } catch (error) {\n throw new USwapError(\"toolbox_evm_error_estimating_gas_limit\", { error });\n }\n\n try {\n const txObject = { ...parsedTxObject, chainId, gasLimit, nonce, type: isEIP1559 ? 2 : 0, ...feeData };\n\n try {\n const response = await signer.sendTransaction(txObject);\n return response.hash;\n } catch {\n const txHex = await signer.signTransaction({ ...txObject, from: address });\n const response = await provider.broadcastTransaction(txHex);\n return response.hash;\n }\n } catch (error) {\n throw new USwapError(\"toolbox_evm_error_sending_transaction\", { error });\n }\n };\n}\n\nfunction getCreateTransferTx({ provider, signer }: ToolboxWrapParams) {\n return async function createTransferTx({\n assetValue,\n memo,\n recipient,\n data,\n sender: fromOverride,\n maxFeePerGas,\n maxPriorityFeePerGas,\n gasPrice,\n ...tx\n }: EVMCreateTransactionParams) {\n const txAmount = assetValue.getBaseValue(\"bigint\");\n const chain = assetValue.chain as EVMChain;\n const from = fromOverride || (await signer?.getAddress());\n\n if (!from) throw new USwapError(\"toolbox_evm_no_from_address\");\n\n if (isGasAsset(assetValue)) {\n const { hexlify, toUtf8Bytes } = await import(\"ethers\");\n\n return { ...tx, data: data || hexlify(toUtf8Bytes(memo || \"\")), from, to: recipient, value: txAmount };\n }\n\n const contractAddress = getTokenAddress(assetValue, chain);\n if (!contractAddress) throw new USwapError(\"toolbox_evm_no_contract_address\");\n const createTx = getCreateContractTxObject({ chain: assetValue.chain as EVMChain, provider });\n\n return createTx({\n abi: erc20ABI,\n contractAddress,\n funcName: \"transfer\",\n funcParams: [recipient, txAmount],\n txOverrides: { from, gasPrice, maxFeePerGas, maxPriorityFeePerGas },\n });\n };\n}\n\nfunction getCreateApprovalTx({ provider, signer, chain }: ToolboxWrapParams) {\n return async function createApprovalTx({ assetAddress, spenderAddress, amount, from: fromParam }: ApproveParams) {\n const from = (await signer?.getAddress()) || fromParam;\n\n const createTx = getCreateContractTxObject({ chain, provider });\n const approvalAmount = [\"bigint\", \"number\"].includes(typeof amount)\n ? (amount as bigint | number)\n : amount || MAX_APPROVAL;\n\n const txObject = await createTx({\n abi: erc20ABI,\n contractAddress: assetAddress,\n funcName: \"approve\",\n funcParams: [spenderAddress, BigInt(approvalAmount)],\n txOverrides: { from },\n });\n\n return txObject;\n };\n}\n\nfunction getEstimateTransactionFee({\n provider,\n isEIP1559Compatible = true,\n}: {\n provider: Provider | BrowserProvider;\n isEIP1559Compatible?: boolean;\n chain: EVMChain;\n}) {\n return async function estimateTransactionFee({\n feeOption = FeeOption.Fast,\n chain,\n ...txObject\n }: EIP1559TxParams & { feeOption: FeeOption; chain: EVMChain }) {\n const estimateGasPrices = getEstimateGasPrices({ chain, isEIP1559Compatible, provider });\n const gasPrices = await estimateGasPrices();\n const gasLimit = await provider.estimateGas(txObject);\n\n const assetValue = AssetValue.from({ chain });\n const { gasPrice, maxFeePerGas, maxPriorityFeePerGas } = gasPrices[feeOption];\n\n if (!isEIP1559Compatible && gasPrice) {\n return assetValue.set(USwapNumber.fromBigInt(gasPrice * gasLimit, assetValue.decimal));\n }\n\n if (maxFeePerGas && maxPriorityFeePerGas) {\n const fee = (maxFeePerGas + maxPriorityFeePerGas) * gasLimit;\n\n return assetValue.set(USwapNumber.fromBigInt(fee, assetValue.decimal));\n }\n\n throw new USwapError(\"toolbox_evm_no_gas_price\");\n };\n}\n",
10
10
  "import { Chain, type EVMChain, FeeOption, getRPCUrl } from \"@uswap/helpers\";\nimport { match, P } from \"ts-pattern\";\n\nimport { multicallAbi } from \"../contracts/eth/multicall\";\nimport { getIsEIP1559Compatible, getProvider } from \"../helpers\";\nimport type { EVMToolboxParams } from \"../types\";\nimport { BaseEVMToolbox } from \"./baseEVMToolbox\";\n\nexport async function ETHToolbox({ provider, ...signer }: EVMToolboxParams) {\n const evmToolbox = await createEvmToolbox(Chain.Ethereum)({ provider, ...signer });\n async function multicall(\n callTuples: { address: string; data: string }[],\n multicallAddress = \"0x5ba1e12693dc8f9c48aad8770482f4739beed696\",\n funcName = \"aggregate\",\n feeOptionKey: FeeOption = FeeOption.Fast,\n ) {\n const txObject = await evmToolbox.createContractTxObject({\n abi: multicallAbi,\n contractAddress: multicallAddress,\n funcName,\n funcParams: [callTuples],\n });\n\n return evmToolbox.sendTransaction({ ...txObject, feeOptionKey });\n }\n\n return { ...evmToolbox, multicall };\n}\n\nexport const ARBToolbox = createEvmToolbox(Chain.Arbitrum);\nexport const AURORAToolbox = createEvmToolbox(Chain.Aurora);\nexport const AVAXToolbox = createEvmToolbox(Chain.Avalanche);\nexport const BASEToolbox = createEvmToolbox(Chain.Base);\nexport const BERAToolbox = createEvmToolbox(Chain.Berachain);\nexport const BSCToolbox = createEvmToolbox(Chain.BinanceSmartChain);\nexport const BotanixToolbox = createEvmToolbox(Chain.Botanix);\nexport const COREToolbox = createEvmToolbox(Chain.Core);\nexport const CORNToolbox = createEvmToolbox(Chain.Corn);\nexport const CROToolbox = createEvmToolbox(Chain.Cronos);\nexport const GNOToolbox = createEvmToolbox(Chain.Gnosis);\nexport const HYPEREVMToolbox = createEvmToolbox(Chain.Hyperevm);\nexport const MATICToolbox = createEvmToolbox(Chain.Polygon);\nexport const SONICToolbox = createEvmToolbox(Chain.Sonic);\nexport const UNIToolbox = createEvmToolbox(Chain.Unichain);\nexport const XLayerToolbox = createEvmToolbox(Chain.XLayer);\nexport const MONADToolbox = createEvmToolbox(Chain.Monad);\nexport const MEGAETHToolbox = createEvmToolbox(Chain.MegaETH as EVMChain);\n\nfunction createEvmToolbox<C extends EVMChain>(chain: C) {\n return async function createEvmToolbox({ provider: providerParam, ...toolboxSignerParams }: EVMToolboxParams) {\n const { HDNodeWallet } = await import(\"ethers\");\n const rpcUrl = await getRPCUrl(chain);\n\n const provider = providerParam || (await getProvider(chain, rpcUrl));\n\n const isEIP1559Compatible = getIsEIP1559Compatible(chain);\n const signer = match(toolboxSignerParams)\n .with({ phrase: P.string }, ({ phrase }) => HDNodeWallet.fromPhrase(phrase).connect(provider))\n .with({ signer: P.any }, ({ signer }) => signer)\n .otherwise(() => undefined);\n\n const evmToolbox = BaseEVMToolbox({ chain, isEIP1559Compatible, provider, signer });\n\n return evmToolbox;\n };\n}\n",
11
11
  "export const gasOracleAbi = [\n {\n inputs: [{ internalType: \"address\", name: \"_owner\", type: \"address\" }],\n stateMutability: \"nonpayable\",\n type: \"constructor\",\n },\n {\n anonymous: false,\n inputs: [{ indexed: false, internalType: \"uint256\", name: \"\", type: \"uint256\" }],\n name: \"DecimalsUpdated\",\n type: \"event\",\n },\n {\n anonymous: false,\n inputs: [{ indexed: false, internalType: \"uint256\", name: \"\", type: \"uint256\" }],\n name: \"GasPriceUpdated\",\n type: \"event\",\n },\n {\n anonymous: false,\n inputs: [{ indexed: false, internalType: \"uint256\", name: \"\", type: \"uint256\" }],\n name: \"L1BaseFeeUpdated\",\n type: \"event\",\n },\n {\n anonymous: false,\n inputs: [{ indexed: false, internalType: \"uint256\", name: \"\", type: \"uint256\" }],\n name: \"OverheadUpdated\",\n type: \"event\",\n },\n {\n anonymous: false,\n inputs: [\n { indexed: true, internalType: \"address\", name: \"previousOwner\", type: \"address\" },\n { indexed: true, internalType: \"address\", name: \"newOwner\", type: \"address\" },\n ],\n name: \"OwnershipTransferred\",\n type: \"event\",\n },\n {\n anonymous: false,\n inputs: [{ indexed: false, internalType: \"uint256\", name: \"\", type: \"uint256\" }],\n name: \"ScalarUpdated\",\n type: \"event\",\n },\n {\n inputs: [],\n name: \"decimals\",\n outputs: [{ internalType: \"uint256\", name: \"\", type: \"uint256\" }],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [],\n name: \"gasPrice\",\n outputs: [{ internalType: \"uint256\", name: \"\", type: \"uint256\" }],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [{ internalType: \"bytes\", name: \"_data\", type: \"bytes\" }],\n name: \"getL1Fee\",\n outputs: [{ internalType: \"uint256\", name: \"\", type: \"uint256\" }],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [{ internalType: \"bytes\", name: \"_data\", type: \"bytes\" }],\n name: \"getL1GasUsed\",\n outputs: [{ internalType: \"uint256\", name: \"\", type: \"uint256\" }],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [],\n name: \"l1BaseFee\",\n outputs: [{ internalType: \"uint256\", name: \"\", type: \"uint256\" }],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [],\n name: \"overhead\",\n outputs: [{ internalType: \"uint256\", name: \"\", type: \"uint256\" }],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [],\n name: \"owner\",\n outputs: [{ internalType: \"address\", name: \"\", type: \"address\" }],\n stateMutability: \"view\",\n type: \"function\",\n },\n { inputs: [], name: \"renounceOwnership\", outputs: [], stateMutability: \"nonpayable\", type: \"function\" },\n {\n inputs: [],\n name: \"scalar\",\n outputs: [{ internalType: \"uint256\", name: \"\", type: \"uint256\" }],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [{ internalType: \"uint256\", name: \"_decimals\", type: \"uint256\" }],\n name: \"setDecimals\",\n outputs: [],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [{ internalType: \"uint256\", name: \"_gasPrice\", type: \"uint256\" }],\n name: \"setGasPrice\",\n outputs: [],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [{ internalType: \"uint256\", name: \"_baseFee\", type: \"uint256\" }],\n name: \"setL1BaseFee\",\n outputs: [],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [{ internalType: \"uint256\", name: \"_overhead\", type: \"uint256\" }],\n name: \"setOverhead\",\n outputs: [],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [{ internalType: \"uint256\", name: \"_scalar\", type: \"uint256\" }],\n name: \"setScalar\",\n outputs: [],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [{ internalType: \"address\", name: \"newOwner\", type: \"address\" }],\n name: \"transferOwnership\",\n outputs: [],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n];\n",
12
- "/**\n * Based on code from SwapKit (https://github.com/swapkit/SwapKit),\n * licensed under the Apache License 2.0.\n * Modifications © 2025 Horizontal Systems.\n */\n\nimport { applyFeeMultiplierToBigInt, Chain, FeeOption, getRPCUrl, USwapError } from \"@uswap/helpers\";\nimport type { Authorization, BrowserProvider, JsonRpcProvider, Provider, TransactionRequest } from \"ethers\";\nimport { Contract, HDNodeWallet } from \"ethers\";\nimport { match, P } from \"ts-pattern\";\nimport { getEvmApi } from \"../api\";\nimport { gasOracleAbi } from \"../contracts/op/gasOracle\";\nimport { getProvider } from \"../helpers\";\nimport type { EVMToolboxParams } from \"../types\";\nimport { BaseEVMToolbox } from \"./baseEVMToolbox\";\n\nconst GAS_PRICE_ORACLE_ADDRESS = \"0x420000000000000000000000000000000000000f\";\n\nfunction connectGasPriceOracle<P extends Provider>(provider: P) {\n return new Contract(GAS_PRICE_ORACLE_ADDRESS, gasOracleAbi, provider);\n}\n\nfunction getL1GasPriceFetcher<P extends Provider>(provider: P) {\n return async function getL1GasPrice() {\n const gasPriceOracle = connectGasPriceOracle(provider);\n\n if (gasPriceOracle && \"l1BaseFee\" in gasPriceOracle) {\n return (await gasPriceOracle?.l1BaseFee()) as unknown as bigint;\n }\n\n return undefined;\n };\n}\n\nfunction serializeTx<P extends JsonRpcProvider | BrowserProvider>(provider: P) {\n return async function serializeTx({ from, to, nonce, ...tx }: TransactionRequest) {\n const { Transaction } = await import(\"ethers\");\n\n if (!to) throw new USwapError(\"toolbox_evm_invalid_transaction\", { error: \"Missing to address\" });\n\n return Transaction.from({\n ...tx,\n authorizationList: tx.authorizationList as Authorization[],\n nonce: nonce ? nonce : from ? await provider.getTransactionCount(from) : 0,\n to: to as string,\n }).serialized;\n };\n}\n\nfunction estimateL1GasCost<P extends JsonRpcProvider | BrowserProvider>(provider: P) {\n return async function estimateL1GasCost(tx: TransactionRequest) {\n const gasPriceOracle = connectGasPriceOracle(provider);\n const serializedTx = await serializeTx(provider)(tx);\n\n if (gasPriceOracle && \"getL1Fee\" in gasPriceOracle) {\n return gasPriceOracle.getL1Fee(serializedTx);\n }\n };\n}\n\nfunction estimateL2GasCost<P extends JsonRpcProvider | BrowserProvider>(provider: P) {\n return async function estimateL2GasCost(tx: TransactionRequest) {\n const l2GasPrice = await provider.send(\"eth_gasPrice\", []);\n const l2GasCost = await provider.estimateGas(tx);\n return l2GasPrice.mul(l2GasCost);\n };\n}\n\nfunction estimateTotalGasCost<P extends JsonRpcProvider | BrowserProvider>(provider: P) {\n return async function estimateTotalGasCost(tx: TransactionRequest) {\n const l1GasCost = await estimateL1GasCost(provider)(tx);\n const l2GasCost = await estimateL2GasCost(provider)(tx);\n return l1GasCost.add(l2GasCost);\n };\n}\n\nfunction estimateL1Gas<P extends JsonRpcProvider | BrowserProvider>(provider: P) {\n return async function estimateL1Gas(tx: TransactionRequest) {\n const gasPriceOracle = connectGasPriceOracle(provider);\n const serializedTx = await serializeTx(provider)(tx);\n\n if (gasPriceOracle && \"getL1GasUsed\" in gasPriceOracle) {\n return gasPriceOracle.getL1GasUsed(serializedTx);\n }\n };\n}\n\nasync function estimateGasPrices(provider: Provider) {\n try {\n const { maxFeePerGas, maxPriorityFeePerGas, gasPrice } = await provider.getFeeData();\n const l1GasPrice = await getL1GasPriceFetcher(provider)();\n const price = gasPrice as bigint;\n\n if (!(maxFeePerGas && maxPriorityFeePerGas)) {\n throw new USwapError(\"toolbox_evm_no_fee_data\");\n }\n\n return {\n [FeeOption.Average]: { gasPrice: price, l1GasPrice, maxFeePerGas, maxPriorityFeePerGas },\n [FeeOption.Fast]: {\n gasPrice: applyFeeMultiplierToBigInt(price, FeeOption.Fast),\n l1GasPrice: applyFeeMultiplierToBigInt(l1GasPrice || 0n, FeeOption.Fast),\n maxFeePerGas,\n maxPriorityFeePerGas: applyFeeMultiplierToBigInt(maxPriorityFeePerGas, FeeOption.Fast),\n },\n [FeeOption.Fastest]: {\n gasPrice: applyFeeMultiplierToBigInt(price, FeeOption.Fastest),\n l1GasPrice: applyFeeMultiplierToBigInt(l1GasPrice || 0n, FeeOption.Fastest),\n maxFeePerGas,\n maxPriorityFeePerGas: applyFeeMultiplierToBigInt(maxPriorityFeePerGas, FeeOption.Fastest),\n },\n } as {\n [key in FeeOption]: {\n l1GasPrice?: bigint;\n gasPrice?: bigint;\n maxFeePerGas?: bigint;\n maxPriorityFeePerGas?: bigint;\n };\n };\n } catch (error) {\n throw new USwapError(\"toolbox_evm_gas_estimation_error\", {\n error: (error as any).msg ?? (error as any).toString(),\n });\n }\n}\n\nexport async function OPToolbox({ provider: providerParam, ...toolboxSignerParams }: EVMToolboxParams) {\n const chain = Chain.Optimism;\n const rpcUrl = await getRPCUrl(chain);\n const provider = providerParam || (await getProvider(chain, rpcUrl));\n const signer = match(toolboxSignerParams)\n .with({ phrase: P.string }, ({ phrase }) => HDNodeWallet.fromPhrase(phrase).connect(provider))\n .with({ signer: P.any }, ({ signer }) => signer)\n .otherwise(() => undefined);\n\n const evmToolbox = BaseEVMToolbox({ provider, signer });\n const getL1GasPrice = getL1GasPriceFetcher(provider);\n\n return {\n ...evmToolbox,\n estimateGasPrices: estimateGasPrices(provider),\n estimateL1Gas: estimateL1Gas(provider),\n estimateL1GasCost: estimateL1GasCost(provider),\n estimateL2GasCost: estimateL2GasCost(provider),\n estimateTotalGasCost: estimateTotalGasCost(provider),\n getBalance: getEvmApi(Chain.Optimism).getBalance,\n getL1GasPrice,\n };\n}\n",
12
+ "/**\n * Modifications © 2025 Horizontal Systems.\n */\n\nimport { applyFeeMultiplierToBigInt, Chain, FeeOption, getRPCUrl, USwapError } from \"@uswap/helpers\";\nimport type { Authorization, BrowserProvider, JsonRpcProvider, Provider, TransactionRequest } from \"ethers\";\nimport { Contract, HDNodeWallet } from \"ethers\";\nimport { match, P } from \"ts-pattern\";\nimport { getEvmApi } from \"../api\";\nimport { gasOracleAbi } from \"../contracts/op/gasOracle\";\nimport { getProvider } from \"../helpers\";\nimport type { EVMToolboxParams } from \"../types\";\nimport { BaseEVMToolbox } from \"./baseEVMToolbox\";\n\nconst GAS_PRICE_ORACLE_ADDRESS = \"0x420000000000000000000000000000000000000f\";\n\nfunction connectGasPriceOracle<P extends Provider>(provider: P) {\n return new Contract(GAS_PRICE_ORACLE_ADDRESS, gasOracleAbi, provider);\n}\n\nfunction getL1GasPriceFetcher<P extends Provider>(provider: P) {\n return async function getL1GasPrice() {\n const gasPriceOracle = connectGasPriceOracle(provider);\n\n if (gasPriceOracle && \"l1BaseFee\" in gasPriceOracle) {\n return (await gasPriceOracle?.l1BaseFee()) as unknown as bigint;\n }\n\n return undefined;\n };\n}\n\nfunction serializeTx<P extends JsonRpcProvider | BrowserProvider>(provider: P) {\n return async function serializeTx({ from, to, nonce, ...tx }: TransactionRequest) {\n const { Transaction } = await import(\"ethers\");\n\n if (!to) throw new USwapError(\"toolbox_evm_invalid_transaction\", { error: \"Missing to address\" });\n\n return Transaction.from({\n ...tx,\n authorizationList: tx.authorizationList as Authorization[],\n nonce: nonce ? nonce : from ? await provider.getTransactionCount(from) : 0,\n to: to as string,\n }).serialized;\n };\n}\n\nfunction estimateL1GasCost<P extends JsonRpcProvider | BrowserProvider>(provider: P) {\n return async function estimateL1GasCost(tx: TransactionRequest) {\n const gasPriceOracle = connectGasPriceOracle(provider);\n const serializedTx = await serializeTx(provider)(tx);\n\n if (gasPriceOracle && \"getL1Fee\" in gasPriceOracle) {\n return gasPriceOracle.getL1Fee(serializedTx);\n }\n };\n}\n\nfunction estimateL2GasCost<P extends JsonRpcProvider | BrowserProvider>(provider: P) {\n return async function estimateL2GasCost(tx: TransactionRequest) {\n const l2GasPrice = await provider.send(\"eth_gasPrice\", []);\n const l2GasCost = await provider.estimateGas(tx);\n return l2GasPrice.mul(l2GasCost);\n };\n}\n\nfunction estimateTotalGasCost<P extends JsonRpcProvider | BrowserProvider>(provider: P) {\n return async function estimateTotalGasCost(tx: TransactionRequest) {\n const l1GasCost = await estimateL1GasCost(provider)(tx);\n const l2GasCost = await estimateL2GasCost(provider)(tx);\n return l1GasCost.add(l2GasCost);\n };\n}\n\nfunction estimateL1Gas<P extends JsonRpcProvider | BrowserProvider>(provider: P) {\n return async function estimateL1Gas(tx: TransactionRequest) {\n const gasPriceOracle = connectGasPriceOracle(provider);\n const serializedTx = await serializeTx(provider)(tx);\n\n if (gasPriceOracle && \"getL1GasUsed\" in gasPriceOracle) {\n return gasPriceOracle.getL1GasUsed(serializedTx);\n }\n };\n}\n\nasync function estimateGasPrices(provider: Provider) {\n try {\n const { maxFeePerGas, maxPriorityFeePerGas, gasPrice } = await provider.getFeeData();\n const l1GasPrice = await getL1GasPriceFetcher(provider)();\n const price = gasPrice as bigint;\n\n if (!(maxFeePerGas && maxPriorityFeePerGas)) {\n throw new USwapError(\"toolbox_evm_no_fee_data\");\n }\n\n return {\n [FeeOption.Average]: { gasPrice: price, l1GasPrice, maxFeePerGas, maxPriorityFeePerGas },\n [FeeOption.Fast]: {\n gasPrice: applyFeeMultiplierToBigInt(price, FeeOption.Fast),\n l1GasPrice: applyFeeMultiplierToBigInt(l1GasPrice || 0n, FeeOption.Fast),\n maxFeePerGas,\n maxPriorityFeePerGas: applyFeeMultiplierToBigInt(maxPriorityFeePerGas, FeeOption.Fast),\n },\n [FeeOption.Fastest]: {\n gasPrice: applyFeeMultiplierToBigInt(price, FeeOption.Fastest),\n l1GasPrice: applyFeeMultiplierToBigInt(l1GasPrice || 0n, FeeOption.Fastest),\n maxFeePerGas,\n maxPriorityFeePerGas: applyFeeMultiplierToBigInt(maxPriorityFeePerGas, FeeOption.Fastest),\n },\n } as {\n [key in FeeOption]: {\n l1GasPrice?: bigint;\n gasPrice?: bigint;\n maxFeePerGas?: bigint;\n maxPriorityFeePerGas?: bigint;\n };\n };\n } catch (error) {\n throw new USwapError(\"toolbox_evm_gas_estimation_error\", {\n error: (error as any).msg ?? (error as any).toString(),\n });\n }\n}\n\nexport async function OPToolbox({ provider: providerParam, ...toolboxSignerParams }: EVMToolboxParams) {\n const chain = Chain.Optimism;\n const rpcUrl = await getRPCUrl(chain);\n const provider = providerParam || (await getProvider(chain, rpcUrl));\n const signer = match(toolboxSignerParams)\n .with({ phrase: P.string }, ({ phrase }) => HDNodeWallet.fromPhrase(phrase).connect(provider))\n .with({ signer: P.any }, ({ signer }) => signer)\n .otherwise(() => undefined);\n\n const evmToolbox = BaseEVMToolbox({ provider, signer });\n const getL1GasPrice = getL1GasPriceFetcher(provider);\n\n return {\n ...evmToolbox,\n estimateGasPrices: estimateGasPrices(provider),\n estimateL1Gas: estimateL1Gas(provider),\n estimateL1GasCost: estimateL1GasCost(provider),\n estimateL2GasCost: estimateL2GasCost(provider),\n estimateTotalGasCost: estimateTotalGasCost(provider),\n getBalance: getEvmApi(Chain.Optimism).getBalance,\n getL1GasPrice,\n };\n}\n",
13
13
  "import { Chain, type EVMChain } from \"@uswap/helpers\";\nimport { match } from \"ts-pattern\";\n\nimport { getProvider } from \"../helpers\";\nimport type { EVMToolboxes, EVMToolboxParams } from \"../types\";\nimport * as evmToolboxes from \"./evm\";\nimport { OPToolbox } from \"./op\";\n\nexport async function getEvmToolbox<T extends EVMChain>(chain: T, params?: EVMToolboxParams) {\n const toolboxParams = { ...params, provider: params?.provider || (await getProvider(chain)) };\n\n type Toolbox = Promise<EVMToolboxes[T]>;\n\n return (\n match(chain as EVMChain)\n .returnType<Toolbox>()\n .with(Chain.Arbitrum, () => evmToolboxes.ARBToolbox(toolboxParams) as Toolbox)\n .with(Chain.Aurora, () => evmToolboxes.AURORAToolbox(toolboxParams) as Toolbox)\n .with(Chain.Avalanche, () => evmToolboxes.AVAXToolbox(toolboxParams) as Toolbox)\n .with(Chain.Base, () => evmToolboxes.BASEToolbox(toolboxParams) as Toolbox)\n .with(Chain.Berachain, () => evmToolboxes.BERAToolbox(toolboxParams) as Toolbox)\n .with(Chain.BinanceSmartChain, () => evmToolboxes.BSCToolbox(toolboxParams) as Toolbox)\n .with(Chain.Botanix, () => evmToolboxes.SONICToolbox(toolboxParams) as Toolbox)\n .with(Chain.Core, () => evmToolboxes.COREToolbox(toolboxParams) as Toolbox)\n .with(Chain.Corn, () => evmToolboxes.CORNToolbox(toolboxParams) as Toolbox)\n .with(Chain.Cronos, () => evmToolboxes.CROToolbox(toolboxParams) as Toolbox)\n .with(Chain.Ethereum, () => evmToolboxes.ETHToolbox(toolboxParams) as Toolbox)\n .with(Chain.Gnosis, () => evmToolboxes.GNOToolbox(toolboxParams) as Toolbox)\n .with(Chain.Hyperevm, () => evmToolboxes.HYPEREVMToolbox(toolboxParams) as Toolbox)\n .with(Chain.Optimism, () => OPToolbox(toolboxParams) as Toolbox)\n .with(Chain.Polygon, () => evmToolboxes.MATICToolbox(toolboxParams) as Toolbox)\n .with(Chain.Sonic, () => evmToolboxes.SONICToolbox(toolboxParams) as Toolbox)\n .with(Chain.Unichain, () => evmToolboxes.UNIToolbox(toolboxParams) as Toolbox)\n .with(Chain.XLayer, () => evmToolboxes.XLayerToolbox(toolboxParams) as Toolbox)\n .with(Chain.Monad, () => evmToolboxes.MONADToolbox(toolboxParams) as Toolbox)\n // @ts-expect-error TODO: Remove once live\n .with(Chain.MegaETH, () => evmToolboxes.MEGAETHToolbox(toolboxParams) as Toolbox)\n .exhaustive()\n );\n}\n\nexport * from \"./baseEVMToolbox\";\nexport * from \"./evm\";\nexport * from \"./op\";\n",
14
14
  "import type {\n AssetValue,\n ChainSigner,\n DerivationPathArray,\n FeeOption,\n GenericCreateTransactionParams,\n GenericTransferParams,\n} from \"@uswap/helpers\";\nimport { Chain } from \"@uswap/helpers\";\nimport type {\n BigNumberish,\n BrowserProvider,\n JsonFragment,\n JsonRpcProvider,\n JsonRpcSigner,\n Signer,\n Transaction,\n} from \"ethers\";\nimport type { getProvider } from \"./index\";\nimport type {\n ARBToolbox,\n AURORAToolbox,\n AVAXToolbox,\n BASEToolbox,\n BERAToolbox,\n BSCToolbox,\n COREToolbox,\n CORNToolbox,\n CROToolbox,\n ETHToolbox,\n GNOToolbox,\n HYPEREVMToolbox,\n MATICToolbox,\n MEGAETHToolbox,\n MONADToolbox,\n OPToolbox,\n SONICToolbox,\n UNIToolbox,\n XLayerToolbox,\n} from \"./toolbox\";\n\nexport enum EthNetwork {\n Test = \"goerli\",\n Main = \"homestead\",\n}\n\nexport type ApproveParams = {\n assetAddress: string;\n spenderAddress: string;\n feeOptionKey?: FeeOption;\n amount?: BigNumberish;\n from?: string;\n // Optional fallback in case estimation for gas limit fails\n gasLimitFallback?: BigNumberish;\n nonce?: number;\n};\n\nexport type ApprovedParams = { assetAddress: string; spenderAddress: string; from: string };\n\nexport type IsApprovedParams = ApprovedParams & { amount?: BigNumberish };\n\nexport type CallParams = {\n callProvider?: Awaited<ReturnType<typeof getProvider>>;\n contractAddress: string;\n abi: readonly JsonFragment[];\n funcName: string;\n funcParams?: unknown[];\n txOverrides?: Partial<Transaction>;\n feeOption?: FeeOption;\n};\n\nexport type EstimateCallParams = Pick<\n CallParams,\n \"contractAddress\" | \"abi\" | \"funcName\" | \"funcParams\" | \"txOverrides\"\n>;\n\nexport type EVMTransferParams = GenericTransferParams & { sender?: string };\n\nexport type EVMCreateTransactionParams = Omit<GenericCreateTransactionParams, \"feeRate\"> & {\n gasLimit?: bigint;\n gasPrice?: bigint;\n maxFeePerGas?: bigint;\n maxPriorityFeePerGas?: bigint;\n data?: string;\n nonce?: number;\n};\n\nexport type EVMMaxSendableAmountsParams = {\n from: string;\n assetValue: AssetValue;\n feeOptionKey?: FeeOption;\n memo?: string;\n abi?: readonly JsonFragment[];\n funcName?: string;\n contractAddress?: string;\n funcParams?: unknown[];\n txOverrides?: Partial<Transaction>;\n};\n\nexport type EVMTxBaseParams<T = bigint> = {\n to?: string;\n from?: string;\n nonce?: number;\n gasLimit?: T;\n data?: string;\n value?: T;\n chainId?: T;\n};\n\nexport type EIP1559TxParams<T = bigint> = EVMTxBaseParams<T> & {\n type?: number;\n maxFeePerGas?: T;\n maxPriorityFeePerGas?: T;\n};\n\nexport type LegacyEVMTxParams<T = bigint> = EVMTxBaseParams<T> & { gasPrice?: T };\n\nexport type EVMTxParams = EIP1559TxParams | LegacyEVMTxParams;\n\nexport type EVMToolboxParams = { provider?: BrowserProvider | JsonRpcProvider } & (\n | { signer?: (ChainSigner<EVMTransferParams, string> & Signer) | JsonRpcSigner }\n | { phrase?: string; derivationPath?: DerivationPathArray; index?: number }\n);\n\nexport type EVMToolboxes = {\n [Chain.Arbitrum]: Awaited<ReturnType<typeof ARBToolbox>>;\n [Chain.Aurora]: Awaited<ReturnType<typeof AURORAToolbox>>;\n [Chain.Avalanche]: Awaited<ReturnType<typeof AVAXToolbox>>;\n [Chain.Base]: Awaited<ReturnType<typeof BASEToolbox>>;\n [Chain.Berachain]: Awaited<ReturnType<typeof BERAToolbox>>;\n [Chain.BinanceSmartChain]: Awaited<ReturnType<typeof BSCToolbox>>;\n [Chain.Botanix]: Awaited<ReturnType<typeof SONICToolbox>>;\n [Chain.Core]: Awaited<ReturnType<typeof COREToolbox>>;\n [Chain.Corn]: Awaited<ReturnType<typeof CORNToolbox>>;\n [Chain.Cronos]: Awaited<ReturnType<typeof CROToolbox>>;\n [Chain.Ethereum]: Awaited<ReturnType<typeof ETHToolbox>>;\n [Chain.Gnosis]: Awaited<ReturnType<typeof GNOToolbox>>;\n [Chain.Hyperevm]: Awaited<ReturnType<typeof HYPEREVMToolbox>>;\n [Chain.MegaETH]: Awaited<ReturnType<typeof MEGAETHToolbox>>;\n [Chain.Monad]: Awaited<ReturnType<typeof MONADToolbox>>;\n [Chain.Optimism]: Awaited<ReturnType<typeof OPToolbox>>;\n [Chain.Polygon]: Awaited<ReturnType<typeof MATICToolbox>>;\n [Chain.Sonic]: Awaited<ReturnType<typeof SONICToolbox>>;\n [Chain.Unichain]: Awaited<ReturnType<typeof UNIToolbox>>;\n [Chain.XLayer]: Awaited<ReturnType<typeof XLayerToolbox>>;\n};\n",
15
15
  "export * from \"./api\";\nexport * from \"./helpers\";\nexport * from \"./toolbox\";\nexport * from \"./types\";\n"
16
16
  ],
17
- "mappings": "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",
18
- "debugId": "B49F92A4A2189E7164756E2164756E21",
17
+ "mappings": "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",
18
+ "debugId": "242287D8517FD1E964756E2164756E21",
19
19
  "names": []
20
20
  }