@swapkit/toolboxes 4.0.0 → 4.0.1

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