@swapkit/toolboxes 4.1.7 → 4.1.8

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,4 +1,4 @@
1
- var un=Object.create;var{getPrototypeOf:yn,defineProperty:Bt,getOwnPropertyNames:ln}=Object;var an=Object.prototype.hasOwnProperty;var W=(t,o,n)=>{n=t!=null?un(yn(t)):{};let e=o||!t||!t.__esModule?Bt(n,"default",{value:t,enumerable:!0}):n;for(let u of ln(t))if(!an.call(e,u))Bt(e,u,{get:()=>t[u],enumerable:!0});return e};var Nt=(t,o)=>{for(var n in o)Bt(t,n,{get:o[n],enumerable:!0,configurable:!0,set:(e)=>o[n]=()=>e})};var h=(t,o)=>()=>(t&&(o=t(t=0)),o);var Y=((t)=>typeof require<"u"?require:typeof Proxy<"u"?new Proxy(t,{get:(o,n)=>(typeof require<"u"?require:o)[n]}):t)(function(t){if(typeof require<"u")return require.apply(this,arguments);throw Error('Dynamic require of "'+t+'" is not supported')});import{AssetValue as mn,getChainConfig as pn}from"@swapkit/helpers";import{SwapKitApi as Tn}from"@swapkit/helpers/api";function no(){function t(){let o=Date.now(),n=ft||o;return ft=n,o>ft?o:n+1}return bn+t().toString(36)}function Xt(t){return async function(n,e=!0){let u=await Tn.getChainBalance({address:n,chain:t,scamFilter:e}),{baseDecimal:y}=pn(t);return u.map(({identifier:l,value:m,decimal:a})=>{return new mn({decimal:a||y,identifier:l,value:m})})}}var bn,ft=0;var Wt=h(()=>{bn=typeof process<"u"&&process.pid?process.pid.toString(36):""});import{SKConfig as sn,warnOnce as xn}from"@swapkit/helpers";function j(t){let o=sn.get("apis")[t];if(o)return xn({condition:!0,id:"custom_evm_api_warning",warning:"Using custom EVM API. Be sure to implement all methods to avoid issues."}),o;return cn(t)}function wn(t){return t}function cn(t){return{getBalance:Xt(t)}}var O=h(()=>{Wt()});import{Chain as w,getChainConfig as Yt,getRPCUrl as Mn,SwapKitError as Bn}from"@swapkit/helpers";async function k(t,o){let{JsonRpcProvider:n}=await import("ethers");return new n(o||await Mn(t))}function F(t){return t>0n?`0x${t.toString(16)}`:"0x0"}function Rt(t){let{explorerUrl:o,chainId:n,rpcUrls:e}=Yt(t);return()=>t===w.Ethereum?void 0:{...fn({chain:t}),blockExplorerUrls:[o],chainId:n,rpcUrls:e}}function Dt(t){return![w.Arbitrum,w.BinanceSmartChain].includes(t)}function fn({chain:t}){let{baseDecimal:o}=Yt(t);switch(t){case w.Arbitrum:return{chainName:"Arbitrum One",nativeCurrency:{decimals:o,name:"Ethereum",symbol:w.Ethereum}};case w.Aurora:return{chainName:"Aurora Mainnet",nativeCurrency:{decimals:o,name:"Ethereum",symbol:w.Ethereum}};case w.Avalanche:return{chainName:"Avalanche Network",nativeCurrency:{decimals:o,name:"Avalanche",symbol:t}};case w.Base:return{chainName:"Base Mainnet",nativeCurrency:{decimals:o,name:"Ethereum",symbol:w.Ethereum}};case w.Berachain:return{chainName:"Berachain",nativeCurrency:{decimals:o,name:"Berachain",symbol:"BERA"}};case w.BinanceSmartChain:return{chainName:"BNB Smart Chain Mainnet",nativeCurrency:{decimals:o,name:"Binance Coin",symbol:"BNB"}};case w.Gnosis:return{chainName:"Gnosis",nativeCurrency:{decimals:o,name:"xDAI",symbol:"XDAI"}};case w.Optimism:return{chainName:"OP Mainnet",nativeCurrency:{decimals:o,name:"Ethereum",symbol:w.Ethereum}};case w.Polygon:return{chainName:"Polygon Mainnet",nativeCurrency:{decimals:o,name:"Polygon",symbol:w.Polygon}};default:throw new Bn("toolbox_evm_not_supported",{chain:t})}}var E=()=>{};var Et;var $t=h(()=>{Et=[{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 Rn,applyFeeMultiplierToBigInt as $,Chain as H,EVMChains as Dn,FeeOption as s,isGasAsset as Cn,SwapKitError as i,SwapKitNumber as v}from"@swapkit/helpers";import{erc20ABI as A}from"@swapkit/helpers/contracts";import{BrowserProvider as Un,Contract as Qt,getAddress as r,Interface as Zt}from"ethers";function Q({chain:t=H.Ethereum,provider:o,signer:n,isEIP1559Compatible:e=!0}){return{approve:qn({chain:t,isEIP1559Compatible:e,provider:o,signer:n}),approvedAmount:_t({chain:t,provider:o}),broadcastTransaction:o.broadcastTransaction,call:Ht({chain:t,isEIP1559Compatible:e,provider:o,signer:n}),createApprovalTx:Nn({chain:t,provider:o,signer:n}),createContract:Gt({chain:t,provider:o}),createContractTxObject:N({chain:t,provider:o}),createTransaction:Ct({chain:t,provider:o,signer:n}),createTransferTx:Ct({chain:t,provider:o,signer:n}),EIP1193SendTransaction:V(o),estimateCall:jt({provider:o,signer:n}),estimateGasLimit:Jn({chain:t,provider:o,signer:n}),estimateGasPrices:X({chain:t,isEIP1559Compatible:e,provider:o}),estimateTransactionFee:Xn({chain:t,isEIP1559Compatible:e,provider:o}),getAddress:()=>{return n?n.getAddress():void 0},isApproved:Hn({chain:t,provider:o}),sendTransaction:Ft({chain:t,isEIP1559Compatible:e,provider:o,signer:n}),signMessage:n?.signMessage,transfer:zn({chain:t,isEIP1559Compatible:e,provider:o,signer:n}),validateAddress:(u)=>Ut({address:u})}}function Ut({address:t}){try{return r(t),!0}catch{return!1}}function Z(t){return t instanceof Un}function g(t,o,n){return new Qt(t,Zt.from(o),n)}function Gt({provider:t}){return function(n,e){return new Qt(n,Zt.from(e),t)}}function Lt({abi:t,funcName:o}){let n=t.find((e)=>e.name===o);if(!n)throw new i("toolbox_evm_no_abi_fragment",{funcName:o});return n.stateMutability&&Gn.includes(n.stateMutability)}function Vt(t){return r(t)}function V(t){return function({value:n,...e}){if(!Z(t))throw new i("toolbox_evm_provider_not_eip1193_compatible");let{gasLimit:u,gasPrice:y,maxFeePerGas:l,maxPriorityFeePerGas:m,...a}=e;return t.send("eth_sendTransaction",[{...a,value:F(BigInt(n||0))}])}}function St(t,o){let n=S(t,o);if(n)return r(n.toLowerCase());throw new i("toolbox_evm_invalid_gas_asset_address")}function S({chain:t,symbol:o,ticker:n},e){try{let u=t===H.BinanceSmartChain&&o==="BNB"&&n==="BNB",y=t===e&&o===e&&n===e,l=hn.includes(t)&&o==="ETH"&&n==="ETH";if(y||u||l)return ht[e];return r(o.slice(n.length+1).replace(/^0X/,""))}catch{return null}}function N({provider:t}){return async({contractAddress:o,abi:n,funcName:e,funcParams:u=[],txOverrides:y})=>g(o,n,t).getFunction(e).populateTransaction(...u.concat(y).filter((l)=>typeof l<"u"))}function X({chain:t,provider:o,isEIP1559Compatible:n=!0}){if(t===H.Arbitrum)return async function(){try{let{gasPrice:u}=await o.getFeeData();if(!u)throw new i("toolbox_evm_no_fee_data");return{[s.Average]:{gasPrice:u},[s.Fast]:{gasPrice:u},[s.Fastest]:{gasPrice:u}}}catch(u){throw new i("toolbox_evm_gas_estimation_error",{error:u.msg??u.toString()})}};return async function(){try{let{maxFeePerGas:u,maxPriorityFeePerGas:y,gasPrice:l}=await o.getFeeData();if(n){if(u===null||y===null)throw new i("toolbox_evm_no_fee_data");return{[s.Average]:{maxFeePerGas:u,maxPriorityFeePerGas:y},[s.Fast]:{maxFeePerGas:$(u,s.Fast),maxPriorityFeePerGas:$(y,s.Fast)},[s.Fastest]:{maxFeePerGas:$(u,s.Fastest),maxPriorityFeePerGas:$(y,s.Fastest)}}}if(!l)throw new i("toolbox_evm_no_gas_price");return{[s.Average]:{gasPrice:l},[s.Fast]:{gasPrice:$(l,s.Fast)},[s.Fastest]:{gasPrice:$(l,s.Fastest)}}}catch(u){throw new i("toolbox_evm_gas_estimation_error",{error:u.msg??u.toString()})}}}function Ht({provider:t,isEIP1559Compatible:o,signer:n,chain:e}){return async function({callProvider:y,contractAddress:l,abi:m,funcName:a,funcParams:b=[],txOverrides:T={},feeOption:R=s.Fast}){let p=y||t;if(!l)throw new i("toolbox_evm_invalid_params",{error:"contractAddress must be provided"});let x=Lt({abi:m,funcName:a});if(x&&Z(p)&&n){let U=N({chain:e,provider:p}),G=T?.from||await n?.getAddress(),L=await U({abi:m,contractAddress:l,funcName:a,funcParams:b,txOverrides:{...T,from:G}});return V(p)(L)}let c=g(l,m,p);if(x){if(!n)throw new i("toolbox_evm_no_signer");let U=T?.from||await n.getAddress();if(!U)throw new i("toolbox_evm_no_signer_address");let G=c.connect(n),L=X({chain:e,isEIP1559Compatible:o,provider:t}),{maxFeePerGas:J,maxPriorityFeePerGas:C,gasPrice:z}=(await L())[R],I=await c.getFunction(a).estimateGas(...b,T),Mt=await G[a](...b,{...T,gasLimit:I,gasPrice:z,maxFeePerGas:J,maxPriorityFeePerGas:C,nonce:T?.nonce||await p.getTransactionCount(U)});return typeof Mt?.hash==="string"?Mt?.hash:Mt}let D=await c[a]?.(...b);return typeof D?.hash==="string"?D?.hash:D}}function _t({provider:t,chain:o}){return function({assetAddress:e,spenderAddress:u,from:y}){return Ht({chain:o,isEIP1559Compatible:!0,provider:t})({abi:A,contractAddress:e,funcName:"allowance",funcParams:[y,u]})}}function Hn({provider:t,chain:o}){return async function({assetAddress:e,spenderAddress:u,from:y,amount:l=P}){let m=await _t({chain:o,provider:t})({assetAddress:e,from:y,spenderAddress:u});return v.fromBigInt(m).gte(v.fromBigInt(BigInt(l)))}}function qn({signer:t,isEIP1559Compatible:o=!0,provider:n,chain:e}){return async function({assetAddress:y,spenderAddress:l,feeOptionKey:m=s.Fast,amount:a,gasLimitFallback:b,from:T,nonce:R}){let p=[l,BigInt(a||P)],x=await t?.getAddress()||T,c={abi:A,contractAddress:y,funcName:"approve",funcParams:p,signer:t,txOverrides:{from:x}};if(Z(n)){let U=N({chain:e,provider:n}),G=V(n),L=await U(c);return G(L)}return Ht({chain:e,isEIP1559Compatible:o,provider:n,signer:t})({...c,feeOption:m,funcParams:p,txOverrides:{from:x,gasLimit:b?BigInt(b.toString()):void 0,nonce:R}})}}function zn({signer:t,isEIP1559Compatible:o=!0,provider:n}){return async function({assetValue:u,memo:y,recipient:l,feeOptionKey:m=s.Fast,sender:a,...b}){let{hexlify:T,toUtf8Bytes:R}=await import("ethers"),p=u.getBaseValue("bigint"),x=u.chain,c=a||await t?.getAddress(),D=Ft({chain:x,isEIP1559Compatible:o,provider:n,signer:t});if(!c)throw new i("toolbox_evm_no_from_address");if(u.isGasAsset){let z={...b,data:T(R(y||"")),feeOptionKey:m,from:c,to:l,value:p};return D(z)}if(!S(u,x))throw new i("toolbox_evm_no_contract_address");let{maxFeePerGas:G,maxPriorityFeePerGas:L,gasPrice:J}=(await X({chain:x,isEIP1559Compatible:o,provider:n})())[m],C=await Ct({chain:x,provider:n,signer:t})({assetValue:u,data:T(R(y||"")),gasPrice:J,maxFeePerGas:G,maxPriorityFeePerGas:L,memo:y,recipient:l,sender:c});return D(C)}}function jt({provider:t,signer:o}){return function({contractAddress:e,abi:u,funcName:y,funcParams:l=[],txOverrides:m}){if(!e)throw new i("toolbox_evm_no_contract_address");let a=g(e,u,t);return o?a.connect(o).getFunction(y).estimateGas(...l,m):a.getFunction(y).estimateGas(...l,m)}}function Jn({provider:t,signer:o}){return async function({assetValue:e,recipient:u,memo:y,data:l,sender:m,funcName:a,funcParams:b,txOverrides:T}){let R=e.bigIntValue,p=e.isGasAsset?null:S(e,e.chain);if(p&&a)return jt({provider:t,signer:o})({abi:A,contractAddress:p,funcName:a,funcParams:b,txOverrides:T});let{hexlify:x,toUtf8Bytes:c}=await import("ethers");return t.estimateGas({data:l?l:y?x(c(y)):void 0,from:m,to:u,value:R})}}function Ft({provider:t,signer:o,isEIP1559Compatible:n=!0,chain:e}){return async function({feeOptionKey:y=s.Fast,...l}){let{from:m,to:a,data:b,value:T,...R}=l;if(!o)throw new i("toolbox_evm_no_signer");if(!a)throw new i("toolbox_evm_no_to_address");let p={...R,data:b||"0x",from:m,to:a,value:BigInt(T||0)};if(Z(t))return V(t)(p);let x=m||await o.getAddress(),c=l.nonce||await t.getTransactionCount(x),D=(await t.getNetwork()).chainId,U=kn(p)||n,G=X({chain:e,isEIP1559Compatible:n,provider:t}),L=U&&!(p.maxFeePerGas&&p.maxPriorityFeePerGas)||!p.gasPrice?Object.entries((await G())[y]).reduce((C,[z,I])=>({...C,[z]:F(BigInt(I))}),{}):{},J;try{J=F(p.gasLimit||await t.estimateGas(p)*11n/10n)}catch(C){throw new i("toolbox_evm_error_estimating_gas_limit",{error:C})}try{let C={...p,chainId:D,gasLimit:J,nonce:c,type:U?2:0,...L};try{return(await o.sendTransaction(C)).hash}catch{let z=await o.signTransaction({...C,from:x});return(await t.broadcastTransaction(z)).hash}}catch(C){throw new i("toolbox_evm_error_sending_transaction",{error:C})}}}function Ct({provider:t,signer:o}){return async function({assetValue:e,memo:u,recipient:y,data:l,sender:m,maxFeePerGas:a,maxPriorityFeePerGas:b,gasPrice:T,...R}){let p=e.getBaseValue("bigint"),x=e.chain,c=m||await o?.getAddress();if(!c)throw new i("toolbox_evm_no_from_address");if(Cn(e)){let{hexlify:G,toUtf8Bytes:L}=await import("ethers");return{...R,data:l||G(L(u||"")),from:c,to:y,value:p}}let D=S(e,x);if(!D)throw new i("toolbox_evm_no_contract_address");return N({chain:e.chain,provider:t})({abi:A,contractAddress:D,funcName:"transfer",funcParams:[y,p],txOverrides:{from:c,gasPrice:T,maxFeePerGas:a,maxPriorityFeePerGas:b}})}}function Nn({provider:t,signer:o,chain:n}){return async function({assetAddress:u,spenderAddress:y,amount:l,from:m}){let a=await o?.getAddress()||m,b=N({chain:n,provider:t}),T=["bigint","number"].includes(typeof l)?l:l||P;return await b({abi:A,contractAddress:u,funcName:"approve",funcParams:[y,BigInt(T)],txOverrides:{from:a}})}}function Xn({provider:t,isEIP1559Compatible:o=!0}){return async function({feeOption:e=s.Fast,chain:u,...y}){let m=await X({chain:u,isEIP1559Compatible:o,provider:t})(),a=await t.estimateGas(y),b=Rn.from({chain:u}),{gasPrice:T,maxFeePerGas:R,maxPriorityFeePerGas:p}=m[e];if(!o&&T)return b.set(v.fromBigInt(T*a,b.decimal));if(R&&p){let x=(R+p)*a;return b.set(v.fromBigInt(x,b.decimal))}throw new i("toolbox_evm_no_gas_price")}}var P,Gn,Ln,ht,hn,kn=(t)=>t.type===2||!!t.maxFeePerGas||!!t.maxPriorityFeePerGas;var d=h(()=>{E();P=BigInt("0x7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff");Gn=["payable","nonpayable"];Ln=Dn.reduce((t,o)=>{return t[o]="0x0000000000000000000000000000000000000000",t},{}),ht={...Ln,[H.Optimism]:"0x4200000000000000000000000000000000000042",[H.Polygon]:"0x0000000000000000000000000000000000001010"},hn=[H.Arbitrum,H.Aurora,H.Base,H.Optimism]});import{Chain as B,FeeOption as Wn,getRPCUrl as Yn}from"@swapkit/helpers";import{match as En,P as At}from"ts-pattern";async function tt({provider:t,...o}){let n=await f(B.Ethereum)({provider:t,...o});async function e(u,y="0x5ba1e12693dc8f9c48aad8770482f4739beed696",l="aggregate",m=Wn.Fast){let a=await n.createContractTxObject({abi:Et,contractAddress:y,funcName:l,funcParams:[u]});return n.sendTransaction({...a,feeOptionKey:m})}return{...n,multicall:e}}function f(t){return async function({provider:n,...e}){let{HDNodeWallet:u}=await import("ethers"),y=await Yn(t),l=n||await k(t,y),m=Dt(t),a=En(e).with({phrase:At.string},({phrase:T})=>u.fromPhrase(T).connect(l)).with({signer:At.any},({signer:T})=>T).otherwise(()=>{return});return{...Q({chain:t,isEIP1559Compatible:m,provider:l,signer:a}),getBalance:j(t).getBalance,getNetworkParams:Rt(t)}}}var nt,ot,et,ut,yt,lt,Pt,at,mt,pt,Tt,bt,it,K,st,xt;var qt=h(()=>{O();$t();E();d();nt=f(B.Arbitrum),ot=f(B.Aurora),et=f(B.Avalanche),ut=f(B.Base),yt=f(B.Berachain),lt=f(B.BinanceSmartChain),Pt=f(B.Botanix),at=f(B.Core),mt=f(B.Corn),pt=f(B.Cronos),Tt=f(B.Gnosis),bt=f(B.Hyperevm),it=f(B.Polygon),K=f(B.Sonic),st=f(B.Unichain),xt=f(B.XLayer)});var gt;var Kt=h(()=>{gt=[{inputs:[{internalType:"address",name:"_owner",type:"address"}],stateMutability:"nonpayable",type:"constructor"},{anonymous:!1,inputs:[{indexed:!1,internalType:"uint256",name:"",type:"uint256"}],name:"DecimalsUpdated",type:"event"},{anonymous:!1,inputs:[{indexed:!1,internalType:"uint256",name:"",type:"uint256"}],name:"GasPriceUpdated",type:"event"},{anonymous:!1,inputs:[{indexed:!1,internalType:"uint256",name:"",type:"uint256"}],name:"L1BaseFeeUpdated",type:"event"},{anonymous:!1,inputs:[{indexed:!1,internalType:"uint256",name:"",type:"uint256"}],name:"OverheadUpdated",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"previousOwner",type:"address"},{indexed:!0,internalType:"address",name:"newOwner",type:"address"}],name:"OwnershipTransferred",type:"event"},{anonymous:!1,inputs:[{indexed:!1,internalType:"uint256",name:"",type:"uint256"}],name:"ScalarUpdated",type:"event"},{inputs:[],name:"decimals",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"gasPrice",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"bytes",name:"_data",type:"bytes"}],name:"getL1Fee",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"bytes",name:"_data",type:"bytes"}],name:"getL1GasUsed",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"l1BaseFee",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"overhead",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"owner",outputs:[{internalType:"address",name:"",type:"address"}],stateMutability:"view",type:"function"},{inputs:[],name:"renounceOwnership",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[],name:"scalar",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"uint256",name:"_decimals",type:"uint256"}],name:"setDecimals",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"uint256",name:"_gasPrice",type:"uint256"}],name:"setGasPrice",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"uint256",name:"_baseFee",type:"uint256"}],name:"setL1BaseFee",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"uint256",name:"_overhead",type:"uint256"}],name:"setOverhead",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"uint256",name:"_scalar",type:"uint256"}],name:"setScalar",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"newOwner",type:"address"}],name:"transferOwnership",outputs:[],stateMutability:"nonpayable",type:"function"}]});import{applyFeeMultiplierToBigInt as _,Chain as wt,FeeOption as q,getChainConfig as Qn,getRPCUrl as Zn,SwapKitError as zt}from"@swapkit/helpers";import{Contract as Vn,HDNodeWallet as Sn}from"ethers";import{match as _n,P as It}from"ts-pattern";function Jt(t){return new Vn(jn,gt,t)}function Ot(t){return async function(){let n=Jt(t);if(n&&"l1BaseFee"in n)return await n?.l1BaseFee();return}}function vt(t){return async function({from:n,to:e,nonce:u,...y}){let{Transaction:l}=await import("ethers");if(!e)throw new zt("toolbox_evm_invalid_transaction",{error:"Missing to address"});return l.from({...y,authorizationList:y.authorizationList,nonce:u?u:n?await t.getTransactionCount(n):0,to:e}).serialized}}function rt(t){return async function(n){let e=Jt(t),u=await vt(t)(n);if(e&&"getL1Fee"in e)return e.getL1Fee(u)}}function dt(t){return async function(n){let e=await t.send("eth_gasPrice",[]),u=await t.estimateGas(n);return e.mul(u)}}function Fn(t){return async function(n){let e=await rt(t)(n),u=await dt(t)(n);return e.add(u)}}function An(t){return async function(n){let e=Jt(t),u=await vt(t)(n);if(e&&"getL1GasUsed"in e)return e.getL1GasUsed(u)}}function Pn(){let{baseDecimal:t,chainId:o,explorerUrl:n,name:e,rpcUrls:u}=Qn(wt.Optimism);return{blockExplorerUrls:[n],chainId:o,chainName:e,nativeCurrency:{decimals:t,name:"Ethereum",symbol:wt.Ethereum},rpcUrls:u}}async function gn(t){try{let{maxFeePerGas:o,maxPriorityFeePerGas:n,gasPrice:e}=await t.getFeeData(),u=await Ot(t)(),y=e;if(!(o&&n))throw new zt("toolbox_evm_no_fee_data");return{[q.Average]:{gasPrice:y,l1GasPrice:u,maxFeePerGas:o,maxPriorityFeePerGas:n},[q.Fast]:{gasPrice:_(y,q.Fast),l1GasPrice:_(u||0n,q.Fast),maxFeePerGas:o,maxPriorityFeePerGas:_(n,q.Fast)},[q.Fastest]:{gasPrice:_(y,q.Fastest),l1GasPrice:_(u||0n,q.Fastest),maxFeePerGas:o,maxPriorityFeePerGas:_(n,q.Fastest)}}}catch(o){throw new zt("toolbox_evm_gas_estimation_error",{error:o.msg??o.toString()})}}async function ct({provider:t,...o}){let n=wt.Optimism,e=await Zn(n),u=t||await k(n,e),y=_n(o).with({phrase:It.string},({phrase:a})=>Sn.fromPhrase(a).connect(u)).with({signer:It.any},({signer:a})=>a).otherwise(()=>{return}),l=Q({provider:u,signer:y}),m=Ot(u);return{...l,estimateGasPrices:gn(u),estimateL1Gas:An(u),estimateL1GasCost:rt(u),estimateL2GasCost:dt(u),estimateTotalGasCost:Fn(u),getBalance:j(wt.Optimism).getBalance,getL1GasPrice:m,getNetworkParams:Pn}}var jn="0x420000000000000000000000000000000000000f";var kt=h(()=>{O();Kt();E();d()});var In={};Nt(In,{toChecksumAddress:()=>Vt,isStateChangingCall:()=>Lt,isBrowserProvider:()=>Z,getTokenAddress:()=>S,getEvmToolbox:()=>tn,getEstimateGasPrices:()=>X,getEIP1193SendTransaction:()=>V,getCreateContractTxObject:()=>N,getCreateContract:()=>Gt,getChecksumAddressFromAsset:()=>St,evmValidateAddress:()=>Ut,createContract:()=>g,XLayerToolbox:()=>xt,UNIToolbox:()=>st,SONICToolbox:()=>K,OPToolbox:()=>ct,MAX_APPROVAL:()=>P,MATICToolbox:()=>it,HYPEREVMToolbox:()=>bt,GNOToolbox:()=>Tt,ETHToolbox:()=>tt,ContractAddress:()=>ht,CROToolbox:()=>pt,CORNToolbox:()=>mt,COREToolbox:()=>at,BotanixToolbox:()=>Pt,BaseEVMToolbox:()=>Q,BSCToolbox:()=>lt,BERAToolbox:()=>yt,BASEToolbox:()=>ut,AVAXToolbox:()=>et,AURORAToolbox:()=>ot,ARBToolbox:()=>nt});import{Chain as M}from"@swapkit/helpers";import{match as Kn}from"ts-pattern";async function tn(t,o){let n={...o,provider:o?.provider||await k(t)};return Kn(t).returnType().with(M.Arbitrum,()=>nt(n)).with(M.Aurora,()=>ot(n)).with(M.Avalanche,()=>et(n)).with(M.Base,()=>ut(n)).with(M.Berachain,()=>yt(n)).with(M.BinanceSmartChain,()=>lt(n)).with(M.Botanix,()=>K(n)).with(M.Core,()=>at(n)).with(M.Corn,()=>mt(n)).with(M.Cronos,()=>pt(n)).with(M.Ethereum,()=>tt(n)).with(M.Gnosis,()=>Tt(n)).with(M.Hyperevm,()=>bt(n)).with(M.Optimism,()=>ct(n)).with(M.Polygon,()=>it(n)).with(M.Sonic,()=>K(n)).with(M.Unichain,()=>st(n)).with(M.XLayer,()=>xt(n)).exhaustive()}var nn=h(()=>{E();qt();kt();d();qt();kt()});var on;var en=h(()=>{((n)=>{n.Test="goerli";n.Main="homestead"})(on||={})});var On={};Nt(On,{toHexString:()=>F,toChecksumAddress:()=>Vt,isStateChangingCall:()=>Lt,isBrowserProvider:()=>Z,getTokenAddress:()=>S,getProvider:()=>k,getNetworkParams:()=>Rt,getIsEIP1559Compatible:()=>Dt,getEvmToolbox:()=>tn,getEvmApi:()=>j,getEstimateGasPrices:()=>X,getEIP1193SendTransaction:()=>V,getCreateContractTxObject:()=>N,getCreateContract:()=>Gt,getChecksumAddressFromAsset:()=>St,evmValidateAddress:()=>Ut,createCustomEvmApi:()=>wn,createContract:()=>g,XLayerToolbox:()=>xt,UNIToolbox:()=>st,SONICToolbox:()=>K,OPToolbox:()=>ct,MAX_APPROVAL:()=>P,MATICToolbox:()=>it,HYPEREVMToolbox:()=>bt,GNOToolbox:()=>Tt,EthNetwork:()=>on,ETHToolbox:()=>tt,ContractAddress:()=>ht,CROToolbox:()=>pt,CORNToolbox:()=>mt,COREToolbox:()=>at,BotanixToolbox:()=>Pt,BaseEVMToolbox:()=>Q,BSCToolbox:()=>lt,BERAToolbox:()=>yt,BASEToolbox:()=>ut,AVAXToolbox:()=>et,AURORAToolbox:()=>ot,ARBToolbox:()=>nt});var vn=h(()=>{O();E();nn();en()});vn();export{F as toHexString,Vt as toChecksumAddress,Lt as isStateChangingCall,Z as isBrowserProvider,S as getTokenAddress,k as getProvider,Rt as getNetworkParams,Dt as getIsEIP1559Compatible,tn as getEvmToolbox,j as getEvmApi,X as getEstimateGasPrices,V as getEIP1193SendTransaction,N as getCreateContractTxObject,Gt as getCreateContract,St as getChecksumAddressFromAsset,Ut as evmValidateAddress,wn as createCustomEvmApi,g as createContract,xt as XLayerToolbox,st as UNIToolbox,K as SONICToolbox,ct as OPToolbox,P as MAX_APPROVAL,it as MATICToolbox,bt as HYPEREVMToolbox,Tt as GNOToolbox,on as EthNetwork,tt as ETHToolbox,ht as ContractAddress,pt as CROToolbox,mt as CORNToolbox,at as COREToolbox,Pt as BotanixToolbox,Q as BaseEVMToolbox,lt as BSCToolbox,yt as BERAToolbox,ut as BASEToolbox,et as AVAXToolbox,ot as AURORAToolbox,nt as ARBToolbox};
1
+ var yn=Object.create;var{getPrototypeOf:en,defineProperty:ft,getOwnPropertyNames:ln}=Object;var an=Object.prototype.hasOwnProperty;var Y=(t,o,n)=>{n=t!=null?yn(en(t)):{};let y=o||!t||!t.__esModule?ft(n,"default",{value:t,enumerable:!0}):n;for(let u of ln(t))if(!an.call(y,u))ft(y,u,{get:()=>t[u],enumerable:!0});return y};var Nt=(t,o)=>{for(var n in o)ft(t,n,{get:o[n],enumerable:!0,configurable:!0,set:(y)=>o[n]=()=>y})};var h=(t,o)=>()=>(t&&(o=t(t=0)),o);var $=((t)=>typeof require<"u"?require:typeof Proxy<"u"?new Proxy(t,{get:(o,n)=>(typeof require<"u"?require:o)[n]}):t)(function(t){if(typeof require<"u")return require.apply(this,arguments);throw Error('Dynamic require of "'+t+'" is not supported')});import{AssetValue as mn,getChainConfig as bn}from"@swapkit/helpers";import{SwapKitApi as Tn}from"@swapkit/helpers/api";function oo(){function t(){let o=Date.now(),n=Rt||o;return Rt=n,o>Rt?o:n+1}return pn+t().toString(36)}function Xt(t){return async function(n,y=!0){let u=await Tn.getChainBalance({address:n,chain:t,scamFilter:y}),{baseDecimal:e}=bn(t);return u.map(({identifier:l,value:m,decimal:a})=>{return new mn({decimal:a||e,identifier:l,value:m})})}}var pn,Rt=0;var Wt=h(()=>{pn=typeof process<"u"&&process.pid?process.pid.toString(36):""});import{SKConfig as sn,warnOnce as xn}from"@swapkit/helpers";function j(t){let o=sn.get("apis")[t];if(o)return xn({condition:!0,id:"custom_evm_api_warning",warning:"Using custom EVM API. Be sure to implement all methods to avoid issues."}),o;return cn(t)}function wn(t){return t}function cn(t){return{getBalance:Xt(t)}}var O=h(()=>{Wt()});import{Chain as c,getChainConfig as Yt,getRPCUrl as Mn,SwapKitError as fn}from"@swapkit/helpers";async function N(t,o){let{JsonRpcProvider:n}=await import("ethers");return new n(o||await Mn(t))}function A(t){return t>0n?`0x${t.toString(16)}`:"0x0"}function Bt(t){let{explorerUrl:o,chainId:n,rpcUrls:y}=Yt(t);return()=>t===c.Ethereum?void 0:{...Rn({chain:t}),blockExplorerUrls:[o],chainId:n,rpcUrls:y}}function Dt(t){return![c.Arbitrum,c.BinanceSmartChain].includes(t)}function Rn({chain:t}){let{baseDecimal:o}=Yt(t);switch(t){case c.Arbitrum:return{chainName:"Arbitrum One",nativeCurrency:{decimals:o,name:"Ethereum",symbol:c.Ethereum}};case c.Aurora:return{chainName:"Aurora Mainnet",nativeCurrency:{decimals:o,name:"Ethereum",symbol:c.Ethereum}};case c.Avalanche:return{chainName:"Avalanche Network",nativeCurrency:{decimals:o,name:"Avalanche",symbol:t}};case c.Base:return{chainName:"Base Mainnet",nativeCurrency:{decimals:o,name:"Ethereum",symbol:c.Ethereum}};case c.Berachain:return{chainName:"Berachain",nativeCurrency:{decimals:o,name:"Berachain",symbol:"BERA"}};case c.BinanceSmartChain:return{chainName:"BNB Smart Chain Mainnet",nativeCurrency:{decimals:o,name:"Binance Coin",symbol:"BNB"}};case c.Gnosis:return{chainName:"Gnosis",nativeCurrency:{decimals:o,name:"xDAI",symbol:"XDAI"}};case c.Optimism:return{chainName:"OP Mainnet",nativeCurrency:{decimals:o,name:"Ethereum",symbol:c.Ethereum}};case c.Polygon:return{chainName:"Polygon Mainnet",nativeCurrency:{decimals:o,name:"Polygon",symbol:c.Polygon}};default:throw new fn("toolbox_evm_not_supported",{chain:t})}}var Q=()=>{};var $t;var Qt=h(()=>{$t=[{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 Bn,applyFeeMultiplierToBigInt as U,Chain as q,EVMChains as Dn,FeeOption as b,isGasAsset as Cn,SwapKitError as x,SwapKitNumber as v}from"@swapkit/helpers";import{erc20ABI as K}from"@swapkit/helpers/contracts";import{BrowserProvider as Un,Contract as Zt,getAddress as d,Interface as Et}from"ethers";import{match as Ln}from"ts-pattern";function Z({chain:t=q.Ethereum,provider:o,signer:n,isEIP1559Compatible:y=!0}){return{approve:zn({chain:t,isEIP1559Compatible:y,provider:o,signer:n}),approvedAmount:_t({chain:t,provider:o}),broadcastTransaction:o.broadcastTransaction,call:ht({chain:t,isEIP1559Compatible:y,provider:o,signer:n}),createApprovalTx:Xn({chain:t,provider:o,signer:n}),createContract:Lt({chain:t,provider:o}),createContractTxObject:X({chain:t,provider:o}),createTransaction:Ct({chain:t,provider:o,signer:n}),createTransferTx:Ct({chain:t,provider:o,signer:n}),EIP1193SendTransaction:V(o),estimateCall:jt({provider:o,signer:n}),estimateGasLimit:kn({chain:t,provider:o,signer:n}),estimateGasPrices:W({chain:t,isEIP1559Compatible:y,provider:o}),estimateTransactionFee:Wn({chain:t,isEIP1559Compatible:y,provider:o}),getAddress:()=>{return n?n.getAddress():void 0},isApproved:qn({chain:t,provider:o}),sendTransaction:At({chain:t,isEIP1559Compatible:y,provider:o,signer:n}),signMessage:n?.signMessage,transfer:Jn({chain:t,isEIP1559Compatible:y,provider:o,signer:n}),validateAddress:(u)=>Ut({address:u})}}function Ut({address:t}){try{return d(t),!0}catch{return!1}}function E(t){return t instanceof Un}function g(t,o,n){return new Zt(t,Et.from(o),n)}function Lt({provider:t}){return function(n,y){return new Zt(n,Et.from(y),t)}}function Gt({abi:t,funcName:o}){let n=t.find((y)=>y.name===o);if(!n)throw new x("toolbox_evm_no_abi_fragment",{funcName:o});return n.stateMutability&&Gn.includes(n.stateMutability)}function Vt(t){return d(t)}function V(t){return function({value:n,...y}){if(!E(t))throw new x("toolbox_evm_provider_not_eip1193_compatible");let{gasLimit:u,gasPrice:e,maxFeePerGas:l,maxPriorityFeePerGas:m,...a}=y;return t.send("eth_sendTransaction",[{...a,value:A(BigInt(n||0))}])}}function St(t,o){let n=S(t,o);if(n)return d(n.toLowerCase());throw new x("toolbox_evm_invalid_gas_asset_address")}function S({chain:t,symbol:o,ticker:n},y){try{let u=t===q.BinanceSmartChain&&o==="BNB"&&n==="BNB",e=t===y&&o===y&&n===y,l=hn.includes(t)&&o==="ETH"&&n==="ETH";if(e||u||l)return Ht[y];return d(o.slice(n.length+1).replace(/^0X/,""))}catch{return null}}function X({provider:t}){return async({contractAddress:o,abi:n,funcName:y,funcParams:u=[],txOverrides:e})=>g(o,n,t).getFunction(y).populateTransaction(...u.concat(e).filter((l)=>typeof l<"u"))}function W({chain:t,provider:o,isEIP1559Compatible:n=!0}){return Ln(t).with(q.Gnosis,()=>{return async function(){try{let{gasPrice:u,maxPriorityFeePerGas:e}=await o.getFeeData();if(!u||e===null)throw new x("toolbox_evm_no_fee_data");return{[b.Average]:{maxFeePerGas:U(u,b.Average),maxPriorityFeePerGas:U(e,b.Average)},[b.Fast]:{maxFeePerGas:U(u,b.Fast),maxPriorityFeePerGas:U(e,b.Fast)},[b.Fastest]:{maxFeePerGas:U(u,b.Fastest),maxPriorityFeePerGas:U(e,b.Fastest)}}}catch(u){throw new x("toolbox_evm_gas_estimation_error",{error:u.msg??u.toString()})}}}).with(q.Arbitrum,()=>{return async function(){try{let{gasPrice:u}=await o.getFeeData();if(!u)throw new x("toolbox_evm_no_fee_data");return{[b.Average]:{gasPrice:u},[b.Fast]:{gasPrice:u},[b.Fastest]:{gasPrice:u}}}catch(u){throw new x("toolbox_evm_gas_estimation_error",{error:u.msg??u.toString()})}}}).otherwise(()=>{return async function(){try{let{maxFeePerGas:u,maxPriorityFeePerGas:e,gasPrice:l}=await o.getFeeData();if(n){if(u===null||e===null)throw new x("toolbox_evm_no_fee_data");return{[b.Average]:{maxFeePerGas:u,maxPriorityFeePerGas:e},[b.Fast]:{maxFeePerGas:U(u,b.Fast),maxPriorityFeePerGas:U(e,b.Fast)},[b.Fastest]:{maxFeePerGas:U(u,b.Fastest),maxPriorityFeePerGas:U(e,b.Fastest)}}}if(!l)throw new x("toolbox_evm_no_gas_price");return{[b.Average]:{gasPrice:l},[b.Fast]:{gasPrice:U(l,b.Fast)},[b.Fastest]:{gasPrice:U(l,b.Fastest)}}}catch(u){throw new x("toolbox_evm_gas_estimation_error",{error:u.msg??u.toString()})}}})}function ht({provider:t,isEIP1559Compatible:o,signer:n,chain:y}){return async function({callProvider:e,contractAddress:l,abi:m,funcName:a,funcParams:s=[],txOverrides:p={},feeOption:B=b.Fast}){let T=e||t;if(!l)throw new x("toolbox_evm_invalid_params",{error:"contractAddress must be provided"});let w=Gt({abi:m,funcName:a});if(w&&E(T)&&n){let L=X({chain:y,provider:T}),G=p?.from||await n?.getAddress(),H=await L({abi:m,contractAddress:l,funcName:a,funcParams:s,txOverrides:{...p,from:G}});return V(T)(H)}let i=g(l,m,T);if(w){if(!n)throw new x("toolbox_evm_no_signer");let L=p?.from||await n.getAddress();if(!L)throw new x("toolbox_evm_no_signer_address");let G=i.connect(n),H=W({chain:y,isEIP1559Compatible:o,provider:t}),{maxFeePerGas:k,maxPriorityFeePerGas:C,gasPrice:J}=(await H())[B],F=await i.getFunction(a).estimateGas(...s,p),Mt=await G[a](...s,{...p,gasLimit:F,gasPrice:J,maxFeePerGas:k,maxPriorityFeePerGas:C,nonce:p?.nonce||await T.getTransactionCount(L)});return typeof Mt?.hash==="string"?Mt?.hash:Mt}let D=await i[a]?.(...s);return typeof D?.hash==="string"?D?.hash:D}}function _t({provider:t,chain:o}){return function({assetAddress:y,spenderAddress:u,from:e}){return ht({chain:o,isEIP1559Compatible:!0,provider:t})({abi:K,contractAddress:y,funcName:"allowance",funcParams:[e,u]})}}function qn({provider:t,chain:o}){return async function({assetAddress:y,spenderAddress:u,from:e,amount:l=P}){let m=await _t({chain:o,provider:t})({assetAddress:y,from:e,spenderAddress:u});return v.fromBigInt(m).gte(v.fromBigInt(BigInt(l)))}}function zn({signer:t,isEIP1559Compatible:o=!0,provider:n,chain:y}){return async function({assetAddress:e,spenderAddress:l,feeOptionKey:m=b.Fast,amount:a,gasLimitFallback:s,from:p,nonce:B}){let T=[l,BigInt(a||P)],w=await t?.getAddress()||p,i={abi:K,contractAddress:e,funcName:"approve",funcParams:T,signer:t,txOverrides:{from:w}};if(E(n)){let L=X({chain:y,provider:n}),G=V(n),H=await L(i);return G(H)}return ht({chain:y,isEIP1559Compatible:o,provider:n,signer:t})({...i,feeOption:m,funcParams:T,txOverrides:{from:w,gasLimit:s?BigInt(s.toString()):void 0,nonce:B}})}}function Jn({signer:t,isEIP1559Compatible:o=!0,provider:n}){return async function({assetValue:u,memo:e,recipient:l,feeOptionKey:m=b.Fast,sender:a,...s}){let{hexlify:p,toUtf8Bytes:B}=await import("ethers"),T=u.getBaseValue("bigint"),w=u.chain,i=a||await t?.getAddress(),D=At({chain:w,isEIP1559Compatible:o,provider:n,signer:t});if(!i)throw new x("toolbox_evm_no_from_address");if(u.isGasAsset){let J={...s,data:p(B(e||"")),feeOptionKey:m,from:i,to:l,value:T};return D(J)}if(!S(u,w))throw new x("toolbox_evm_no_contract_address");let{maxFeePerGas:G,maxPriorityFeePerGas:H,gasPrice:k}=(await W({chain:w,isEIP1559Compatible:o,provider:n})())[m],C=await Ct({chain:w,provider:n,signer:t})({assetValue:u,data:p(B(e||"")),gasPrice:k,maxFeePerGas:G,maxPriorityFeePerGas:H,memo:e,recipient:l,sender:i});return D(C)}}function jt({provider:t,signer:o}){return function({contractAddress:y,abi:u,funcName:e,funcParams:l=[],txOverrides:m}){if(!y)throw new x("toolbox_evm_no_contract_address");let a=g(y,u,t);return o?a.connect(o).getFunction(e).estimateGas(...l,m):a.getFunction(e).estimateGas(...l,m)}}function kn({provider:t,signer:o}){return async function({assetValue:y,recipient:u,memo:e,data:l,sender:m,funcName:a,funcParams:s,txOverrides:p}){let B=y.bigIntValue,T=y.isGasAsset?null:S(y,y.chain);if(T&&a)return jt({provider:t,signer:o})({abi:K,contractAddress:T,funcName:a,funcParams:s,txOverrides:p});let{hexlify:w,toUtf8Bytes:i}=await import("ethers");return t.estimateGas({data:l?l:e?w(i(e)):void 0,from:m,to:u,value:B})}}function At({provider:t,signer:o,isEIP1559Compatible:n=!0,chain:y}){return async function({feeOptionKey:e=b.Fast,...l}){let{from:m,to:a,data:s,value:p,...B}=l;if(!o)throw new x("toolbox_evm_no_signer");if(!a)throw new x("toolbox_evm_no_to_address");let T={...B,data:s||"0x",from:m,to:a,value:BigInt(p||0)};if(E(t))return V(t)(T);let w=m||await o.getAddress(),i=l.nonce||await t.getTransactionCount(w),D=(await t.getNetwork()).chainId,L=Nn(T)||n,G=W({chain:y,isEIP1559Compatible:n,provider:t}),H=L&&!(T.maxFeePerGas&&T.maxPriorityFeePerGas)||!T.gasPrice?Object.entries((await G())[e]).reduce((C,[J,F])=>({...C,[J]:A(BigInt(F))}),{}):{},k;try{k=A(T.gasLimit||await t.estimateGas(T)*11n/10n)}catch(C){throw new x("toolbox_evm_error_estimating_gas_limit",{error:C})}try{let C={...T,chainId:D,gasLimit:k,nonce:i,type:L?2:0,...H};try{return(await o.sendTransaction(C)).hash}catch{let J=await o.signTransaction({...C,from:w});return(await t.broadcastTransaction(J)).hash}}catch(C){throw new x("toolbox_evm_error_sending_transaction",{error:C})}}}function Ct({provider:t,signer:o}){return async function({assetValue:y,memo:u,recipient:e,data:l,sender:m,maxFeePerGas:a,maxPriorityFeePerGas:s,gasPrice:p,...B}){let T=y.getBaseValue("bigint"),w=y.chain,i=m||await o?.getAddress();if(!i)throw new x("toolbox_evm_no_from_address");if(Cn(y)){let{hexlify:G,toUtf8Bytes:H}=await import("ethers");return{...B,data:l||G(H(u||"")),from:i,to:e,value:T}}let D=S(y,w);if(!D)throw new x("toolbox_evm_no_contract_address");return X({chain:y.chain,provider:t})({abi:K,contractAddress:D,funcName:"transfer",funcParams:[e,T],txOverrides:{from:i,gasPrice:p,maxFeePerGas:a,maxPriorityFeePerGas:s}})}}function Xn({provider:t,signer:o,chain:n}){return async function({assetAddress:u,spenderAddress:e,amount:l,from:m}){let a=await o?.getAddress()||m,s=X({chain:n,provider:t}),p=["bigint","number"].includes(typeof l)?l:l||P;return await s({abi:K,contractAddress:u,funcName:"approve",funcParams:[e,BigInt(p)],txOverrides:{from:a}})}}function Wn({provider:t,isEIP1559Compatible:o=!0}){return async function({feeOption:y=b.Fast,chain:u,...e}){let m=await W({chain:u,isEIP1559Compatible:o,provider:t})(),a=await t.estimateGas(e),s=Bn.from({chain:u}),{gasPrice:p,maxFeePerGas:B,maxPriorityFeePerGas:T}=m[y];if(!o&&p)return s.set(v.fromBigInt(p*a,s.decimal));if(B&&T){let w=(B+T)*a;return s.set(v.fromBigInt(w,s.decimal))}throw new x("toolbox_evm_no_gas_price")}}var P,Gn,Hn,Ht,hn,Nn=(t)=>t.type===2||!!t.maxFeePerGas||!!t.maxPriorityFeePerGas;var r=h(()=>{Q();P=BigInt("0x7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff");Gn=["payable","nonpayable"];Hn=Dn.reduce((t,o)=>{return t[o]="0x0000000000000000000000000000000000000000",t},{}),Ht={...Hn,[q.Optimism]:"0x4200000000000000000000000000000000000042",[q.Polygon]:"0x0000000000000000000000000000000000001010"},hn=[q.Arbitrum,q.Aurora,q.Base,q.Optimism]});import{Chain as f,FeeOption as Yn,getRPCUrl as $n}from"@swapkit/helpers";import{match as Qn,P as Kt}from"ts-pattern";async function tt({provider:t,...o}){let n=await R(f.Ethereum)({provider:t,...o});async function y(u,e="0x5ba1e12693dc8f9c48aad8770482f4739beed696",l="aggregate",m=Yn.Fast){let a=await n.createContractTxObject({abi:$t,contractAddress:e,funcName:l,funcParams:[u]});return n.sendTransaction({...a,feeOptionKey:m})}return{...n,multicall:y}}function R(t){return async function({provider:n,...y}){let{HDNodeWallet:u}=await import("ethers"),e=await $n(t),l=n||await N(t,e),m=Dt(t),a=Qn(y).with({phrase:Kt.string},({phrase:p})=>u.fromPhrase(p).connect(l)).with({signer:Kt.any},({signer:p})=>p).otherwise(()=>{return});return{...Z({chain:t,isEIP1559Compatible:m,provider:l,signer:a}),getBalance:j(t).getBalance,getNetworkParams:Bt(t)}}}var nt,ot,ut,yt,et,lt,Pt,at,mt,bt,Tt,pt,st,I,xt,wt;var qt=h(()=>{O();Qt();Q();r();nt=R(f.Arbitrum),ot=R(f.Aurora),ut=R(f.Avalanche),yt=R(f.Base),et=R(f.Berachain),lt=R(f.BinanceSmartChain),Pt=R(f.Botanix),at=R(f.Core),mt=R(f.Corn),bt=R(f.Cronos),Tt=R(f.Gnosis),pt=R(f.Hyperevm),st=R(f.Polygon),I=R(f.Sonic),xt=R(f.Unichain),wt=R(f.XLayer)});var gt;var It=h(()=>{gt=[{inputs:[{internalType:"address",name:"_owner",type:"address"}],stateMutability:"nonpayable",type:"constructor"},{anonymous:!1,inputs:[{indexed:!1,internalType:"uint256",name:"",type:"uint256"}],name:"DecimalsUpdated",type:"event"},{anonymous:!1,inputs:[{indexed:!1,internalType:"uint256",name:"",type:"uint256"}],name:"GasPriceUpdated",type:"event"},{anonymous:!1,inputs:[{indexed:!1,internalType:"uint256",name:"",type:"uint256"}],name:"L1BaseFeeUpdated",type:"event"},{anonymous:!1,inputs:[{indexed:!1,internalType:"uint256",name:"",type:"uint256"}],name:"OverheadUpdated",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"previousOwner",type:"address"},{indexed:!0,internalType:"address",name:"newOwner",type:"address"}],name:"OwnershipTransferred",type:"event"},{anonymous:!1,inputs:[{indexed:!1,internalType:"uint256",name:"",type:"uint256"}],name:"ScalarUpdated",type:"event"},{inputs:[],name:"decimals",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"gasPrice",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"bytes",name:"_data",type:"bytes"}],name:"getL1Fee",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"bytes",name:"_data",type:"bytes"}],name:"getL1GasUsed",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"l1BaseFee",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"overhead",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"owner",outputs:[{internalType:"address",name:"",type:"address"}],stateMutability:"view",type:"function"},{inputs:[],name:"renounceOwnership",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[],name:"scalar",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"uint256",name:"_decimals",type:"uint256"}],name:"setDecimals",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"uint256",name:"_gasPrice",type:"uint256"}],name:"setGasPrice",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"uint256",name:"_baseFee",type:"uint256"}],name:"setL1BaseFee",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"uint256",name:"_overhead",type:"uint256"}],name:"setOverhead",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"uint256",name:"_scalar",type:"uint256"}],name:"setScalar",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"newOwner",type:"address"}],name:"transferOwnership",outputs:[],stateMutability:"nonpayable",type:"function"}]});import{applyFeeMultiplierToBigInt as _,Chain as ct,FeeOption as z,getChainConfig as En,getRPCUrl as Vn,SwapKitError as zt}from"@swapkit/helpers";import{Contract as Sn,HDNodeWallet as _n}from"ethers";import{match as jn,P as Ft}from"ts-pattern";function Jt(t){return new Sn(An,gt,t)}function Ot(t){return async function(){let n=Jt(t);if(n&&"l1BaseFee"in n)return await n?.l1BaseFee();return}}function vt(t){return async function({from:n,to:y,nonce:u,...e}){let{Transaction:l}=await import("ethers");if(!y)throw new zt("toolbox_evm_invalid_transaction",{error:"Missing to address"});return l.from({...e,authorizationList:e.authorizationList,nonce:u?u:n?await t.getTransactionCount(n):0,to:y}).serialized}}function dt(t){return async function(n){let y=Jt(t),u=await vt(t)(n);if(y&&"getL1Fee"in y)return y.getL1Fee(u)}}function rt(t){return async function(n){let y=await t.send("eth_gasPrice",[]),u=await t.estimateGas(n);return y.mul(u)}}function Kn(t){return async function(n){let y=await dt(t)(n),u=await rt(t)(n);return y.add(u)}}function Pn(t){return async function(n){let y=Jt(t),u=await vt(t)(n);if(y&&"getL1GasUsed"in y)return y.getL1GasUsed(u)}}function gn(){let{baseDecimal:t,chainId:o,explorerUrl:n,name:y,rpcUrls:u}=En(ct.Optimism);return{blockExplorerUrls:[n],chainId:o,chainName:y,nativeCurrency:{decimals:t,name:"Ethereum",symbol:ct.Ethereum},rpcUrls:u}}async function In(t){try{let{maxFeePerGas:o,maxPriorityFeePerGas:n,gasPrice:y}=await t.getFeeData(),u=await Ot(t)(),e=y;if(!(o&&n))throw new zt("toolbox_evm_no_fee_data");return{[z.Average]:{gasPrice:e,l1GasPrice:u,maxFeePerGas:o,maxPriorityFeePerGas:n},[z.Fast]:{gasPrice:_(e,z.Fast),l1GasPrice:_(u||0n,z.Fast),maxFeePerGas:o,maxPriorityFeePerGas:_(n,z.Fast)},[z.Fastest]:{gasPrice:_(e,z.Fastest),l1GasPrice:_(u||0n,z.Fastest),maxFeePerGas:o,maxPriorityFeePerGas:_(n,z.Fastest)}}}catch(o){throw new zt("toolbox_evm_gas_estimation_error",{error:o.msg??o.toString()})}}async function it({provider:t,...o}){let n=ct.Optimism,y=await Vn(n),u=t||await N(n,y),e=jn(o).with({phrase:Ft.string},({phrase:a})=>_n.fromPhrase(a).connect(u)).with({signer:Ft.any},({signer:a})=>a).otherwise(()=>{return}),l=Z({provider:u,signer:e}),m=Ot(u);return{...l,estimateGasPrices:In(u),estimateL1Gas:Pn(u),estimateL1GasCost:dt(u),estimateL2GasCost:rt(u),estimateTotalGasCost:Kn(u),getBalance:j(ct.Optimism).getBalance,getL1GasPrice:m,getNetworkParams:gn}}var An="0x420000000000000000000000000000000000000f";var kt=h(()=>{O();It();Q();r()});var On={};Nt(On,{toChecksumAddress:()=>Vt,isStateChangingCall:()=>Gt,isBrowserProvider:()=>E,getTokenAddress:()=>S,getEvmToolbox:()=>tn,getEstimateGasPrices:()=>W,getEIP1193SendTransaction:()=>V,getCreateContractTxObject:()=>X,getCreateContract:()=>Lt,getChecksumAddressFromAsset:()=>St,evmValidateAddress:()=>Ut,createContract:()=>g,XLayerToolbox:()=>wt,UNIToolbox:()=>xt,SONICToolbox:()=>I,OPToolbox:()=>it,MAX_APPROVAL:()=>P,MATICToolbox:()=>st,HYPEREVMToolbox:()=>pt,GNOToolbox:()=>Tt,ETHToolbox:()=>tt,ContractAddress:()=>Ht,CROToolbox:()=>bt,CORNToolbox:()=>mt,COREToolbox:()=>at,BotanixToolbox:()=>Pt,BaseEVMToolbox:()=>Z,BSCToolbox:()=>lt,BERAToolbox:()=>et,BASEToolbox:()=>yt,AVAXToolbox:()=>ut,AURORAToolbox:()=>ot,ARBToolbox:()=>nt});import{Chain as M}from"@swapkit/helpers";import{match as Fn}from"ts-pattern";async function tn(t,o){let n={...o,provider:o?.provider||await N(t)};return Fn(t).returnType().with(M.Arbitrum,()=>nt(n)).with(M.Aurora,()=>ot(n)).with(M.Avalanche,()=>ut(n)).with(M.Base,()=>yt(n)).with(M.Berachain,()=>et(n)).with(M.BinanceSmartChain,()=>lt(n)).with(M.Botanix,()=>I(n)).with(M.Core,()=>at(n)).with(M.Corn,()=>mt(n)).with(M.Cronos,()=>bt(n)).with(M.Ethereum,()=>tt(n)).with(M.Gnosis,()=>Tt(n)).with(M.Hyperevm,()=>pt(n)).with(M.Optimism,()=>it(n)).with(M.Polygon,()=>st(n)).with(M.Sonic,()=>I(n)).with(M.Unichain,()=>xt(n)).with(M.XLayer,()=>wt(n)).exhaustive()}var nn=h(()=>{Q();qt();kt();r();qt();kt()});var on;var un=h(()=>{((n)=>{n.Test="goerli";n.Main="homestead"})(on||={})});var vn={};Nt(vn,{toHexString:()=>A,toChecksumAddress:()=>Vt,isStateChangingCall:()=>Gt,isBrowserProvider:()=>E,getTokenAddress:()=>S,getProvider:()=>N,getNetworkParams:()=>Bt,getIsEIP1559Compatible:()=>Dt,getEvmToolbox:()=>tn,getEvmApi:()=>j,getEstimateGasPrices:()=>W,getEIP1193SendTransaction:()=>V,getCreateContractTxObject:()=>X,getCreateContract:()=>Lt,getChecksumAddressFromAsset:()=>St,evmValidateAddress:()=>Ut,createCustomEvmApi:()=>wn,createContract:()=>g,XLayerToolbox:()=>wt,UNIToolbox:()=>xt,SONICToolbox:()=>I,OPToolbox:()=>it,MAX_APPROVAL:()=>P,MATICToolbox:()=>st,HYPEREVMToolbox:()=>pt,GNOToolbox:()=>Tt,EthNetwork:()=>on,ETHToolbox:()=>tt,ContractAddress:()=>Ht,CROToolbox:()=>bt,CORNToolbox:()=>mt,COREToolbox:()=>at,BotanixToolbox:()=>Pt,BaseEVMToolbox:()=>Z,BSCToolbox:()=>lt,BERAToolbox:()=>et,BASEToolbox:()=>yt,AVAXToolbox:()=>ut,AURORAToolbox:()=>ot,ARBToolbox:()=>nt});var dn=h(()=>{O();Q();nn();un()});dn();export{A as toHexString,Vt as toChecksumAddress,Gt as isStateChangingCall,E as isBrowserProvider,S as getTokenAddress,N as getProvider,Bt as getNetworkParams,Dt as getIsEIP1559Compatible,tn as getEvmToolbox,j as getEvmApi,W as getEstimateGasPrices,V as getEIP1193SendTransaction,X as getCreateContractTxObject,Lt as getCreateContract,St as getChecksumAddressFromAsset,Ut as evmValidateAddress,wn as createCustomEvmApi,g as createContract,wt as XLayerToolbox,xt as UNIToolbox,I as SONICToolbox,it as OPToolbox,P as MAX_APPROVAL,st as MATICToolbox,pt as HYPEREVMToolbox,Tt as GNOToolbox,on as EthNetwork,tt as ETHToolbox,Ht as ContractAddress,bt as CROToolbox,mt as CORNToolbox,at as COREToolbox,Pt as BotanixToolbox,Z as BaseEVMToolbox,lt as BSCToolbox,et as BERAToolbox,yt as BASEToolbox,ut as AVAXToolbox,ot as AURORAToolbox,nt as ARBToolbox};
2
2
 
3
- //# debugId=50DC91A3C9C0A1FF64756E2164756E21
3
+ //# debugId=382E9E6020A8A86C64756E2164756E21
4
4
  //# sourceMappingURL=index.js.map
@@ -6,7 +6,7 @@
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
7
  "import { Chain, type EVMChain, getChainConfig, getRPCUrl, type NetworkParams, SwapKitError } 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 const { explorerUrl, chainId, rpcUrls } = getChainConfig(chain);\n\n return () =>\n (chain === Chain.Ethereum\n ? undefined\n : {\n ...getNetworkInfo({ chain }),\n blockExplorerUrls: [explorerUrl],\n chainId,\n rpcUrls,\n }) as C extends typeof Chain.Ethereum ? undefined : NetworkParams;\n}\n\nexport function getIsEIP1559Compatible<C extends EVMChain>(chain: C) {\n const notCompatible = [Chain.Arbitrum, Chain.BinanceSmartChain] as EVMChain[];\n\n return !notCompatible.includes(chain);\n}\n\nfunction getNetworkInfo<C extends EVMChain>({ chain }: { chain: C }) {\n const { baseDecimal: decimals } = getChainConfig(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 {\n type Asset,\n AssetValue,\n applyFeeMultiplierToBigInt,\n Chain,\n type ChainSigner,\n type EVMChain,\n EVMChains,\n FeeOption,\n isGasAsset,\n SwapKitError,\n SwapKitNumber,\n} from \"@swapkit/helpers\";\nimport { erc20ABI } from \"@swapkit/helpers/contracts\";\nimport {\n BrowserProvider,\n Contract,\n type ContractTransaction,\n type Fragment,\n getAddress,\n type HDNodeWallet,\n Interface,\n type JsonFragment,\n type JsonRpcSigner,\n type Provider,\n type Signer,\n} from \"ethers\";\nimport { 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 {\n return false;\n }\n}\n\nexport function isBrowserProvider(provider: any) {\n return provider instanceof BrowserProvider;\n}\n\nexport function createContract(address: string, abi: readonly (JsonFragment | Fragment)[], provider: Provider) {\n return new Contract(address, Interface.from(abi), provider);\n}\n\nexport function getCreateContract({ provider }: ToolboxWrapParams) {\n return function createContract(address: string, abi: readonly (JsonFragment | Fragment)[]) {\n return new Contract(address, Interface.from(abi), provider);\n };\n}\n\nconst stateMutable = [\"payable\", \"nonpayable\"];\n// const nonStateMutable = ['view', 'pure'];\nexport function isStateChangingCall({ abi, funcName }: { abi: readonly JsonFragment[]; funcName: string }) {\n const abiFragment = abi.find((fragment: any) => fragment.name === funcName) as any;\n if (!abiFragment) throw new SwapKitError(\"toolbox_evm_no_abi_fragment\", { funcName });\n return abiFragment.stateMutability && stateMutable.includes(abiFragment.stateMutability);\n}\n\nexport function toChecksumAddress(address: string) {\n return getAddress(address);\n}\n\nexport function getEIP1193SendTransaction(provider: Provider | BrowserProvider) {\n return function EIP1193SendTransaction({ value, ...params }: EVMTxParams | ContractTransaction): Promise<string> {\n if (!isBrowserProvider(provider)) {\n throw new SwapKitError(\"toolbox_evm_provider_not_eip1193_compatible\");\n }\n\n // Remove gas-related parameters to let the wallet estimate them\n // EIP-1193 providers (MetaMask, etc.) will estimate these automatically\n const {\n gasLimit: _gasLimit,\n gasPrice: _gasPrice,\n maxFeePerGas: _maxFeePerGas,\n maxPriorityFeePerGas: _maxPriorityFeePerGas,\n ...cleanParams\n } = params as any;\n\n return (provider as BrowserProvider).send(\"eth_sendTransaction\", [\n { ...cleanParams, value: toHexString(BigInt(value || 0)) } as any,\n ]);\n };\n}\n\nexport function getChecksumAddressFromAsset(asset: Asset, chain: EVMChain) {\n const assetAddress = getTokenAddress(asset, chain);\n\n if (assetAddress) {\n return getAddress(assetAddress.toLowerCase());\n }\n\n throw new SwapKitError(\"toolbox_evm_invalid_gas_asset_address\");\n}\n\nconst baseContractAddresses = EVMChains.reduce(\n (acc, chain) => {\n acc[chain] = \"0x0000000000000000000000000000000000000000\";\n return acc;\n },\n {} as Record<EVMChain, string>,\n);\n\nexport const ContractAddress: Record<EVMChain, string> = {\n ...baseContractAddresses,\n [Chain.Optimism]: \"0x4200000000000000000000000000000000000042\",\n [Chain.Polygon]: \"0x0000000000000000000000000000000000001010\",\n};\n\nconst ethGasChains = [Chain.Arbitrum, Chain.Aurora, Chain.Base, Chain.Optimism] as string[];\n\nexport function getTokenAddress({ chain, symbol, ticker }: Asset, baseAssetChain: EVMChain) {\n try {\n const isBSCBNB = chain === Chain.BinanceSmartChain && symbol === \"BNB\" && ticker === \"BNB\";\n const isBaseAsset = chain === baseAssetChain && symbol === baseAssetChain && ticker === baseAssetChain;\n const isEVMAsset = ethGasChains.includes(chain) && symbol === \"ETH\" && ticker === \"ETH\";\n\n if (isBaseAsset || isBSCBNB || isEVMAsset) {\n return ContractAddress[baseAssetChain];\n }\n\n // strip 0X only - 0x is still valid\n return getAddress(symbol.slice(ticker.length + 1).replace(/^0X/, \"\"));\n } catch {\n return null;\n }\n}\n\nexport function getCreateContractTxObject({ provider }: ToolboxWrapParams) {\n return async ({ contractAddress, abi, funcName, funcParams = [], txOverrides }: CallParams) =>\n createContract(contractAddress, abi, provider)\n .getFunction(funcName)\n .populateTransaction(...funcParams.concat(txOverrides).filter((p) => typeof p !== \"undefined\"));\n}\n\nexport function getEstimateGasPrices({\n chain,\n provider,\n isEIP1559Compatible = true,\n}: {\n provider: Provider;\n isEIP1559Compatible?: boolean;\n chain: EVMChain;\n}): () => Promise<{\n [key in FeeOption]: { l1GasPrice?: bigint; gasPrice?: bigint; maxFeePerGas?: bigint; maxPriorityFeePerGas?: bigint };\n}> {\n if (chain === Chain.Arbitrum) {\n return async function estimateGasPrices() {\n try {\n const { gasPrice } = await provider.getFeeData();\n if (!gasPrice) throw new SwapKitError(\"toolbox_evm_no_fee_data\");\n\n return { [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, isEIP1559Compatible, provider });\n const { maxFeePerGas, maxPriorityFeePerGas, gasPrice } = (await estimateGasPrices())[feeOption];\n\n const gasLimit = await contract.getFunction(funcName).estimateGas(...funcParams, txOverrides);\n\n // @ts-expect-error\n const result = await connectedContract[funcName](...funcParams, {\n ...txOverrides,\n gasLimit,\n gasPrice,\n maxFeePerGas,\n maxPriorityFeePerGas,\n /**\n * nonce must be set due to a possible bug with ethers.js,\n * expecting a synchronous nonce while the JsonRpcProvider delivers Promise\n */\n nonce: txOverrides?.nonce || (await contractProvider.getTransactionCount(from)),\n });\n\n return typeof result?.hash === \"string\" ? result?.hash : result;\n }\n\n const result = await contract[funcName]?.(...funcParams);\n\n return typeof result?.hash === \"string\" ? result?.hash : result;\n };\n}\n\nfunction getApprovedAmount({ provider, chain }: ToolboxWrapParams) {\n return function approveAmount({ assetAddress, spenderAddress, from }: IsApprovedParams) {\n const call = getCall({ chain, isEIP1559Compatible: true, provider });\n\n return call<bigint>({\n abi: erc20ABI,\n contractAddress: assetAddress,\n funcName: \"allowance\",\n funcParams: [from, spenderAddress],\n });\n };\n}\n\nfunction getIsApproved({ provider, chain }: ToolboxWrapParams) {\n return async function isApproved({ assetAddress, spenderAddress, from, amount = MAX_APPROVAL }: IsApprovedParams) {\n const approvedAmount = await getApprovedAmount({ chain, provider })({ assetAddress, from, spenderAddress });\n\n return SwapKitNumber.fromBigInt(approvedAmount).gte(SwapKitNumber.fromBigInt(BigInt(amount)));\n };\n}\n\nfunction getApprove({ signer, isEIP1559Compatible = true, provider, chain }: ToolboxWrapParams) {\n return async function approve({\n assetAddress,\n spenderAddress,\n feeOptionKey = FeeOption.Fast,\n amount,\n gasLimitFallback,\n from: fromParam,\n nonce,\n }: ApproveParams) {\n const funcParams = [spenderAddress, BigInt(amount || MAX_APPROVAL)];\n const from = (await signer?.getAddress()) || fromParam;\n\n const functionCallParams = {\n abi: erc20ABI,\n contractAddress: assetAddress,\n funcName: \"approve\",\n funcParams,\n signer,\n txOverrides: { from },\n };\n\n if (isBrowserProvider(provider)) {\n const createTx = getCreateContractTxObject({ chain, provider });\n const sendTx = getEIP1193SendTransaction(provider);\n const txObject = await createTx(functionCallParams);\n\n return sendTx(txObject);\n }\n\n const call = getCall({ chain, isEIP1559Compatible, provider, signer });\n\n return call<string>({\n ...functionCallParams,\n feeOption: feeOptionKey,\n funcParams,\n txOverrides: { from, gasLimit: gasLimitFallback ? BigInt(gasLimitFallback.toString()) : undefined, nonce },\n });\n };\n}\n\nfunction getTransfer({ signer, isEIP1559Compatible = true, provider }: ToolboxWrapParams) {\n return async function transfer({\n assetValue,\n memo,\n recipient,\n feeOptionKey = FeeOption.Fast,\n sender,\n // data,\n // from: fromOverride,\n // maxFeePerGas,\n // maxPriorityFeePerGas,\n // gasPrice,\n ...tx\n }: EVMTransferParams) {\n const { hexlify, toUtf8Bytes } = await import(\"ethers\");\n const txAmount = assetValue.getBaseValue(\"bigint\");\n const chain = assetValue.chain as EVMChain;\n const from = sender || (await signer?.getAddress());\n const sendTx = getSendTransaction({ chain, isEIP1559Compatible, provider, signer });\n\n if (!from) throw new SwapKitError(\"toolbox_evm_no_from_address\");\n\n if (assetValue.isGasAsset) {\n const transaction = {\n ...tx,\n data: hexlify(toUtf8Bytes(memo || \"\")),\n feeOptionKey,\n from,\n to: recipient,\n value: txAmount,\n };\n\n return sendTx(transaction);\n }\n\n // const call = getCall({ signer, provider, isEIP1559Compatible });\n const contractAddress = getTokenAddress(assetValue, chain);\n if (!contractAddress) throw new SwapKitError(\"toolbox_evm_no_contract_address\");\n\n const { maxFeePerGas, maxPriorityFeePerGas, gasPrice } = (\n await getEstimateGasPrices({ chain, isEIP1559Compatible, provider })()\n )[feeOptionKey];\n\n const transaction = await getCreateTransferTx({ chain, provider, signer })({\n assetValue,\n data: hexlify(toUtf8Bytes(memo || \"\")),\n gasPrice,\n maxFeePerGas,\n maxPriorityFeePerGas,\n memo,\n recipient,\n sender: from,\n });\n\n return sendTx(transaction);\n };\n}\n\nfunction getEstimateCall({ provider, signer }: { signer?: Signer; provider: Provider }) {\n return function estimateCall({ contractAddress, abi, funcName, funcParams = [], txOverrides }: EstimateCallParams) {\n if (!contractAddress) throw new SwapKitError(\"toolbox_evm_no_contract_address\");\n\n const contract = createContract(contractAddress, abi, provider);\n return signer\n ? contract\n .connect(signer)\n .getFunction(funcName)\n .estimateGas(...funcParams, txOverrides)\n : contract.getFunction(funcName).estimateGas(...funcParams, txOverrides);\n };\n}\n\nfunction getEstimateGasLimit({ provider, signer }: ToolboxWrapParams) {\n return async function estimateGasLimit({\n assetValue,\n recipient,\n memo,\n data,\n sender,\n funcName,\n funcParams,\n txOverrides,\n }: EVMTransferParams & {\n assetValue: AssetValue;\n funcName?: string;\n funcParams?: unknown[];\n txOverrides?: EVMTxParams;\n data?: string;\n }) {\n // const value = assetValue.getBaseValue(\"bigint\");\n const value = assetValue.bigIntValue;\n\n const assetAddress = assetValue.isGasAsset ? null : getTokenAddress(assetValue, assetValue.chain as EVMChain);\n\n if (assetAddress && funcName) {\n const estimateCall = getEstimateCall({ provider, signer });\n // ERC20 gas estimate\n return estimateCall({ abi: erc20ABI, contractAddress: assetAddress, funcName, funcParams, txOverrides });\n }\n\n const { hexlify, toUtf8Bytes } = await import(\"ethers\");\n\n return provider.estimateGas({\n data: data ? data : memo ? hexlify(toUtf8Bytes(memo)) : undefined,\n from: sender,\n to: recipient,\n value,\n });\n };\n}\n\nconst isEIP1559Transaction = (tx: EVMTxParams) =>\n (tx as EIP1559TxParams).type === 2 ||\n !!(tx as EIP1559TxParams).maxFeePerGas ||\n !!(tx as EIP1559TxParams).maxPriorityFeePerGas;\n\nfunction getSendTransaction({ provider, signer, isEIP1559Compatible = true, chain }: ToolboxWrapParams) {\n return async function sendTransaction({\n feeOptionKey = FeeOption.Fast,\n ...tx\n }: EVMTxParams & { feeOptionKey?: FeeOption }) {\n const { from, to, data, value, ...transaction } = tx;\n\n if (!signer) throw new SwapKitError(\"toolbox_evm_no_signer\");\n if (!to) throw new SwapKitError(\"toolbox_evm_no_to_address\");\n\n const parsedTxObject = { ...transaction, data: data || \"0x\", from, to, value: BigInt(value || 0) };\n\n // early return to skip gas estimation if provider is EIP-1193\n if (isBrowserProvider(provider)) {\n const sendTx = getEIP1193SendTransaction(provider);\n return sendTx(parsedTxObject);\n }\n\n const address = from || (await signer.getAddress());\n const nonce = tx.nonce || (await provider.getTransactionCount(address));\n const chainId = (await provider.getNetwork()).chainId;\n\n const isEIP1559 = isEIP1559Transaction(parsedTxObject) || isEIP1559Compatible;\n const estimateGasPrices = getEstimateGasPrices({ chain, isEIP1559Compatible, provider });\n\n const feeData =\n (isEIP1559 &&\n !(\n (parsedTxObject as EIP1559TxParams).maxFeePerGas && (parsedTxObject as EIP1559TxParams).maxPriorityFeePerGas\n )) ||\n !(parsedTxObject as LegacyEVMTxParams).gasPrice\n ? Object.entries((await estimateGasPrices())[feeOptionKey]).reduce(\n // biome-ignore lint/performance/noAccumulatingSpread: this is a small object\n (acc, [k, v]) => ({ ...acc, [k]: toHexString(BigInt(v)) }),\n {} as { maxFeePerGas?: string; maxPriorityFeePerGas?: string; gasPrice?: string },\n )\n : {};\n let gasLimit: string;\n try {\n gasLimit = toHexString(parsedTxObject.gasLimit || ((await provider.estimateGas(parsedTxObject)) * 11n) / 10n);\n } catch (error) {\n throw new SwapKitError(\"toolbox_evm_error_estimating_gas_limit\", { error });\n }\n\n try {\n const txObject = { ...parsedTxObject, chainId, gasLimit, nonce, type: isEIP1559 ? 2 : 0, ...feeData };\n\n try {\n const response = await signer.sendTransaction(txObject);\n return response.hash;\n } catch {\n const txHex = await signer.signTransaction({ ...txObject, from: address });\n const response = await provider.broadcastTransaction(txHex);\n return response.hash;\n }\n } catch (error) {\n throw new SwapKitError(\"toolbox_evm_error_sending_transaction\", { error });\n }\n };\n}\n\nfunction getCreateTransferTx({ provider, signer }: ToolboxWrapParams) {\n return async function createTransferTx({\n assetValue,\n memo,\n recipient,\n data,\n sender: fromOverride,\n maxFeePerGas,\n maxPriorityFeePerGas,\n gasPrice,\n ...tx\n }: EVMCreateTransactionParams) {\n const txAmount = assetValue.getBaseValue(\"bigint\");\n const chain = assetValue.chain as EVMChain;\n const from = fromOverride || (await signer?.getAddress());\n\n if (!from) throw new SwapKitError(\"toolbox_evm_no_from_address\");\n\n if (isGasAsset(assetValue)) {\n const { hexlify, toUtf8Bytes } = await import(\"ethers\");\n\n return { ...tx, data: data || hexlify(toUtf8Bytes(memo || \"\")), from, to: recipient, value: txAmount };\n }\n\n const contractAddress = getTokenAddress(assetValue, chain);\n if (!contractAddress) throw new SwapKitError(\"toolbox_evm_no_contract_address\");\n const createTx = getCreateContractTxObject({ chain: assetValue.chain as EVMChain, provider });\n\n return createTx({\n abi: erc20ABI,\n contractAddress,\n funcName: \"transfer\",\n funcParams: [recipient, txAmount],\n txOverrides: { from, gasPrice, maxFeePerGas, maxPriorityFeePerGas },\n });\n };\n}\n\nfunction getCreateApprovalTx({ provider, signer, chain }: ToolboxWrapParams) {\n return async function createApprovalTx({ assetAddress, spenderAddress, amount, from: fromParam }: ApproveParams) {\n const from = (await signer?.getAddress()) || fromParam;\n\n const createTx = getCreateContractTxObject({ chain, provider });\n const approvalAmount = [\"bigint\", \"number\"].includes(typeof amount)\n ? (amount as bigint | number)\n : amount || MAX_APPROVAL;\n\n const txObject = await createTx({\n abi: erc20ABI,\n contractAddress: assetAddress,\n funcName: \"approve\",\n funcParams: [spenderAddress, BigInt(approvalAmount)],\n txOverrides: { from },\n });\n\n return txObject;\n };\n}\n\nfunction getEstimateTransactionFee({\n provider,\n isEIP1559Compatible = true,\n}: {\n provider: Provider | BrowserProvider;\n isEIP1559Compatible?: boolean;\n chain: EVMChain;\n}) {\n return async function estimateTransactionFee({\n feeOption = FeeOption.Fast,\n chain,\n ...txObject\n }: EIP1559TxParams & { feeOption: FeeOption; chain: EVMChain }) {\n const estimateGasPrices = getEstimateGasPrices({ chain, isEIP1559Compatible, provider });\n const gasPrices = await estimateGasPrices();\n const gasLimit = await provider.estimateGas(txObject);\n\n const assetValue = AssetValue.from({ chain });\n const { gasPrice, maxFeePerGas, maxPriorityFeePerGas } = gasPrices[feeOption];\n\n if (!isEIP1559Compatible && gasPrice) {\n return assetValue.set(SwapKitNumber.fromBigInt(gasPrice * gasLimit, assetValue.decimal));\n }\n\n if (maxFeePerGas && maxPriorityFeePerGas) {\n const fee = (maxFeePerGas + maxPriorityFeePerGas) * gasLimit;\n\n return assetValue.set(SwapKitNumber.fromBigInt(fee, assetValue.decimal));\n }\n\n throw new SwapKitError(\"toolbox_evm_no_gas_price\");\n };\n}\n",
9
+ "import {\n type Asset,\n AssetValue,\n applyFeeMultiplierToBigInt,\n Chain,\n type ChainSigner,\n type EVMChain,\n EVMChains,\n FeeOption,\n isGasAsset,\n SwapKitError,\n SwapKitNumber,\n} from \"@swapkit/helpers\";\nimport { erc20ABI } from \"@swapkit/helpers/contracts\";\nimport {\n BrowserProvider,\n Contract,\n type ContractTransaction,\n type Fragment,\n getAddress,\n type HDNodeWallet,\n Interface,\n type JsonFragment,\n type JsonRpcSigner,\n type Provider,\n type Signer,\n} from \"ethers\";\nimport { match } from \"ts-pattern\";\nimport { toHexString } from \"../helpers\";\nimport type {\n ApproveParams,\n CallParams,\n EIP1559TxParams,\n EstimateCallParams,\n EVMCreateTransactionParams,\n EVMTransferParams,\n EVMTxParams,\n IsApprovedParams,\n LegacyEVMTxParams,\n} from \"../types\";\n\ntype ToolboxWrapParams<P = Provider | BrowserProvider, T = {}> = T & {\n isEIP1559Compatible?: boolean;\n provider: P;\n signer?: Signer;\n chain: EVMChain;\n};\n\nexport const MAX_APPROVAL = BigInt(\"0x7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff\");\n\nexport function BaseEVMToolbox<\n P extends Provider | BrowserProvider,\n S extends (ChainSigner<EVMTransferParams, string> & Signer) | JsonRpcSigner | HDNodeWallet | undefined,\n>({\n chain = Chain.Ethereum,\n provider,\n signer,\n isEIP1559Compatible = true,\n}: {\n signer: S;\n provider: P;\n isEIP1559Compatible?: boolean;\n chain?: EVMChain;\n}) {\n return {\n approve: getApprove({ chain, isEIP1559Compatible, provider, signer }),\n approvedAmount: getApprovedAmount({ chain, provider }),\n broadcastTransaction: provider.broadcastTransaction,\n call: getCall({ chain, isEIP1559Compatible, provider, signer }),\n createApprovalTx: getCreateApprovalTx({ chain, provider, signer }),\n createContract: getCreateContract({ chain, provider }),\n createContractTxObject: getCreateContractTxObject({ chain, provider }),\n createTransaction: getCreateTransferTx({ chain, provider, signer }),\n createTransferTx: getCreateTransferTx({ chain, provider, signer }),\n EIP1193SendTransaction: getEIP1193SendTransaction(provider),\n estimateCall: getEstimateCall({ provider, signer }),\n estimateGasLimit: getEstimateGasLimit({ chain, provider, signer }),\n estimateGasPrices: getEstimateGasPrices({ chain, isEIP1559Compatible, provider }),\n estimateTransactionFee: getEstimateTransactionFee({ chain, isEIP1559Compatible, provider }),\n getAddress: () => {\n return signer ? signer.getAddress() : undefined;\n },\n isApproved: getIsApproved({ chain, provider }),\n sendTransaction: getSendTransaction({ chain, isEIP1559Compatible, provider, signer }),\n signMessage: signer?.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 {\n return false;\n }\n}\n\nexport function isBrowserProvider(provider: any) {\n return provider instanceof BrowserProvider;\n}\n\nexport function createContract(address: string, abi: readonly (JsonFragment | Fragment)[], provider: Provider) {\n return new Contract(address, Interface.from(abi), provider);\n}\n\nexport function getCreateContract({ provider }: ToolboxWrapParams) {\n return function createContract(address: string, abi: readonly (JsonFragment | Fragment)[]) {\n return new Contract(address, Interface.from(abi), provider);\n };\n}\n\nconst stateMutable = [\"payable\", \"nonpayable\"];\n// const nonStateMutable = ['view', 'pure'];\nexport function isStateChangingCall({ abi, funcName }: { abi: readonly JsonFragment[]; funcName: string }) {\n const abiFragment = abi.find((fragment: any) => fragment.name === funcName) as any;\n if (!abiFragment) throw new SwapKitError(\"toolbox_evm_no_abi_fragment\", { funcName });\n return abiFragment.stateMutability && stateMutable.includes(abiFragment.stateMutability);\n}\n\nexport function toChecksumAddress(address: string) {\n return getAddress(address);\n}\n\nexport function getEIP1193SendTransaction(provider: Provider | BrowserProvider) {\n return function EIP1193SendTransaction({ value, ...params }: EVMTxParams | ContractTransaction): Promise<string> {\n if (!isBrowserProvider(provider)) {\n throw new SwapKitError(\"toolbox_evm_provider_not_eip1193_compatible\");\n }\n\n // Remove gas-related parameters to let the wallet estimate them\n // EIP-1193 providers (MetaMask, etc.) will estimate these automatically\n const {\n gasLimit: _gasLimit,\n gasPrice: _gasPrice,\n maxFeePerGas: _maxFeePerGas,\n maxPriorityFeePerGas: _maxPriorityFeePerGas,\n ...cleanParams\n } = params as any;\n\n return (provider as BrowserProvider).send(\"eth_sendTransaction\", [\n { ...cleanParams, value: toHexString(BigInt(value || 0)) } as any,\n ]);\n };\n}\n\nexport function getChecksumAddressFromAsset(asset: Asset, chain: EVMChain) {\n const assetAddress = getTokenAddress(asset, chain);\n\n if (assetAddress) {\n return getAddress(assetAddress.toLowerCase());\n }\n\n throw new SwapKitError(\"toolbox_evm_invalid_gas_asset_address\");\n}\n\nconst baseContractAddresses = EVMChains.reduce(\n (acc, chain) => {\n acc[chain] = \"0x0000000000000000000000000000000000000000\";\n return acc;\n },\n {} as Record<EVMChain, string>,\n);\n\nexport const ContractAddress: Record<EVMChain, string> = {\n ...baseContractAddresses,\n [Chain.Optimism]: \"0x4200000000000000000000000000000000000042\",\n [Chain.Polygon]: \"0x0000000000000000000000000000000000001010\",\n};\n\nconst ethGasChains = [Chain.Arbitrum, Chain.Aurora, Chain.Base, Chain.Optimism] as string[];\n\nexport function getTokenAddress({ chain, symbol, ticker }: Asset, baseAssetChain: EVMChain) {\n try {\n const isBSCBNB = chain === Chain.BinanceSmartChain && symbol === \"BNB\" && ticker === \"BNB\";\n const isBaseAsset = chain === baseAssetChain && symbol === baseAssetChain && ticker === baseAssetChain;\n const isEVMAsset = ethGasChains.includes(chain) && symbol === \"ETH\" && ticker === \"ETH\";\n\n if (isBaseAsset || isBSCBNB || isEVMAsset) {\n return ContractAddress[baseAssetChain];\n }\n\n // strip 0X only - 0x is still valid\n return getAddress(symbol.slice(ticker.length + 1).replace(/^0X/, \"\"));\n } catch {\n return null;\n }\n}\n\nexport function getCreateContractTxObject({ provider }: ToolboxWrapParams) {\n return async ({ contractAddress, abi, funcName, funcParams = [], txOverrides }: CallParams) =>\n createContract(contractAddress, abi, provider)\n .getFunction(funcName)\n .populateTransaction(...funcParams.concat(txOverrides).filter((p) => typeof p !== \"undefined\"));\n}\n\nexport function getEstimateGasPrices({\n chain,\n provider,\n isEIP1559Compatible = true,\n}: {\n provider: Provider;\n isEIP1559Compatible?: boolean;\n chain: EVMChain;\n}): () => Promise<{\n [key in FeeOption]: { l1GasPrice?: bigint; gasPrice?: bigint; maxFeePerGas?: bigint; maxPriorityFeePerGas?: bigint };\n}> {\n return match(chain)\n .with(Chain.Gnosis, () => {\n return async function estimateGasPrices() {\n try {\n const { gasPrice, maxPriorityFeePerGas } = await provider.getFeeData();\n if (!gasPrice || maxPriorityFeePerGas === null) throw new SwapKitError(\"toolbox_evm_no_fee_data\");\n\n return {\n [FeeOption.Average]: {\n maxFeePerGas: applyFeeMultiplierToBigInt(gasPrice, FeeOption.Average),\n maxPriorityFeePerGas: applyFeeMultiplierToBigInt(maxPriorityFeePerGas, FeeOption.Average),\n },\n [FeeOption.Fast]: {\n maxFeePerGas: applyFeeMultiplierToBigInt(gasPrice, FeeOption.Fast),\n maxPriorityFeePerGas: applyFeeMultiplierToBigInt(maxPriorityFeePerGas, FeeOption.Fast),\n },\n [FeeOption.Fastest]: {\n maxFeePerGas: applyFeeMultiplierToBigInt(gasPrice, FeeOption.Fastest),\n maxPriorityFeePerGas: applyFeeMultiplierToBigInt(maxPriorityFeePerGas, FeeOption.Fastest),\n },\n };\n } catch (error) {\n throw new SwapKitError(\"toolbox_evm_gas_estimation_error\", {\n error: (error as any).msg ?? (error as any).toString(),\n });\n }\n };\n })\n .with(Chain.Arbitrum, () => {\n return async function estimateGasPrices() {\n try {\n const { gasPrice } = await provider.getFeeData();\n if (!gasPrice) throw new SwapKitError(\"toolbox_evm_no_fee_data\");\n\n return {\n [FeeOption.Average]: { gasPrice },\n [FeeOption.Fast]: { gasPrice },\n [FeeOption.Fastest]: { gasPrice },\n };\n } catch (error) {\n throw new SwapKitError(\"toolbox_evm_gas_estimation_error\", {\n error: (error as any).msg ?? (error as any).toString(),\n });\n }\n };\n })\n .otherwise(() => {\n return async function estimateGasPrices() {\n try {\n const { maxFeePerGas, maxPriorityFeePerGas, gasPrice } = await provider.getFeeData();\n\n if (isEIP1559Compatible) {\n if (maxFeePerGas === null || maxPriorityFeePerGas === null)\n throw new SwapKitError(\"toolbox_evm_no_fee_data\");\n\n return {\n [FeeOption.Average]: { maxFeePerGas, maxPriorityFeePerGas },\n [FeeOption.Fast]: {\n maxFeePerGas: applyFeeMultiplierToBigInt(maxFeePerGas, FeeOption.Fast),\n maxPriorityFeePerGas: applyFeeMultiplierToBigInt(maxPriorityFeePerGas, FeeOption.Fast),\n },\n [FeeOption.Fastest]: {\n maxFeePerGas: applyFeeMultiplierToBigInt(maxFeePerGas, FeeOption.Fastest),\n maxPriorityFeePerGas: applyFeeMultiplierToBigInt(maxPriorityFeePerGas, FeeOption.Fastest),\n },\n };\n }\n if (!gasPrice) throw new SwapKitError(\"toolbox_evm_no_gas_price\");\n\n return {\n [FeeOption.Average]: { gasPrice },\n [FeeOption.Fast]: { gasPrice: applyFeeMultiplierToBigInt(gasPrice, FeeOption.Fast) },\n [FeeOption.Fastest]: { gasPrice: applyFeeMultiplierToBigInt(gasPrice, FeeOption.Fastest) },\n };\n } catch (error) {\n throw new SwapKitError(\"toolbox_evm_gas_estimation_error\", {\n error: (error as any).msg ?? (error as any).toString(),\n });\n }\n };\n });\n}\n\nfunction getCall({ provider, isEIP1559Compatible, signer, chain }: ToolboxWrapParams) {\n /**\n * @info call contract function\n * When using this method to make a non state changing call to the blockchain, like a isApproved call,\n * the signer needs to be set to undefined\n */\n return async function call<T>({\n callProvider,\n contractAddress,\n abi,\n funcName,\n funcParams = [],\n txOverrides = {},\n feeOption = FeeOption.Fast,\n }: CallParams): Promise<T> {\n const contractProvider = callProvider || provider;\n if (!contractAddress)\n throw new SwapKitError(\"toolbox_evm_invalid_params\", { error: \"contractAddress must be provided\" });\n\n const isStateChanging = isStateChangingCall({ abi, funcName });\n\n if (isStateChanging && isBrowserProvider(contractProvider) && signer) {\n const createTx = getCreateContractTxObject({ chain, provider: contractProvider });\n const from = txOverrides?.from || (await signer?.getAddress());\n const txObject = await createTx({\n abi,\n contractAddress,\n funcName,\n funcParams,\n txOverrides: { ...txOverrides, from },\n });\n const sendTx = getEIP1193SendTransaction(contractProvider);\n\n return sendTx(txObject) as Promise<T>;\n }\n const contract = createContract(contractAddress, abi, contractProvider);\n\n // only use signer if the contract function is state changing\n if (isStateChanging) {\n if (!signer) throw new SwapKitError(\"toolbox_evm_no_signer\");\n\n const from = txOverrides?.from || (await signer.getAddress());\n if (!from) throw new SwapKitError(\"toolbox_evm_no_signer_address\");\n\n const connectedContract = contract.connect(signer);\n const estimateGasPrices = getEstimateGasPrices({ chain, isEIP1559Compatible, provider });\n const { maxFeePerGas, maxPriorityFeePerGas, gasPrice } = (await estimateGasPrices())[feeOption];\n\n const gasLimit = await contract.getFunction(funcName).estimateGas(...funcParams, txOverrides);\n\n // @ts-expect-error\n const result = await connectedContract[funcName](...funcParams, {\n ...txOverrides,\n gasLimit,\n gasPrice,\n maxFeePerGas,\n maxPriorityFeePerGas,\n /**\n * nonce must be set due to a possible bug with ethers.js,\n * expecting a synchronous nonce while the JsonRpcProvider delivers Promise\n */\n nonce: txOverrides?.nonce || (await contractProvider.getTransactionCount(from)),\n });\n\n return typeof result?.hash === \"string\" ? result?.hash : result;\n }\n\n const result = await contract[funcName]?.(...funcParams);\n\n return typeof result?.hash === \"string\" ? result?.hash : result;\n };\n}\n\nfunction getApprovedAmount({ provider, chain }: ToolboxWrapParams) {\n return function approveAmount({ assetAddress, spenderAddress, from }: IsApprovedParams) {\n const call = getCall({ chain, isEIP1559Compatible: true, provider });\n\n return call<bigint>({\n abi: erc20ABI,\n contractAddress: assetAddress,\n funcName: \"allowance\",\n funcParams: [from, spenderAddress],\n });\n };\n}\n\nfunction getIsApproved({ provider, chain }: ToolboxWrapParams) {\n return async function isApproved({ assetAddress, spenderAddress, from, amount = MAX_APPROVAL }: IsApprovedParams) {\n const approvedAmount = await getApprovedAmount({ chain, provider })({ assetAddress, from, spenderAddress });\n\n return SwapKitNumber.fromBigInt(approvedAmount).gte(SwapKitNumber.fromBigInt(BigInt(amount)));\n };\n}\n\nfunction getApprove({ signer, isEIP1559Compatible = true, provider, chain }: ToolboxWrapParams) {\n return async function approve({\n assetAddress,\n spenderAddress,\n feeOptionKey = FeeOption.Fast,\n amount,\n gasLimitFallback,\n from: fromParam,\n nonce,\n }: ApproveParams) {\n const funcParams = [spenderAddress, BigInt(amount || MAX_APPROVAL)];\n const from = (await signer?.getAddress()) || fromParam;\n\n const functionCallParams = {\n abi: erc20ABI,\n contractAddress: assetAddress,\n funcName: \"approve\",\n funcParams,\n signer,\n txOverrides: { from },\n };\n\n if (isBrowserProvider(provider)) {\n const createTx = getCreateContractTxObject({ chain, provider });\n const sendTx = getEIP1193SendTransaction(provider);\n const txObject = await createTx(functionCallParams);\n\n return sendTx(txObject);\n }\n\n const call = getCall({ chain, isEIP1559Compatible, provider, signer });\n\n return call<string>({\n ...functionCallParams,\n feeOption: feeOptionKey,\n funcParams,\n txOverrides: { from, gasLimit: gasLimitFallback ? BigInt(gasLimitFallback.toString()) : undefined, nonce },\n });\n };\n}\n\nfunction getTransfer({ signer, isEIP1559Compatible = true, provider }: ToolboxWrapParams) {\n return async function transfer({\n assetValue,\n memo,\n recipient,\n feeOptionKey = FeeOption.Fast,\n sender,\n // data,\n // from: fromOverride,\n // maxFeePerGas,\n // maxPriorityFeePerGas,\n // gasPrice,\n ...tx\n }: EVMTransferParams) {\n const { hexlify, toUtf8Bytes } = await import(\"ethers\");\n const txAmount = assetValue.getBaseValue(\"bigint\");\n const chain = assetValue.chain as EVMChain;\n const from = sender || (await signer?.getAddress());\n const sendTx = getSendTransaction({ chain, isEIP1559Compatible, provider, signer });\n\n if (!from) throw new SwapKitError(\"toolbox_evm_no_from_address\");\n\n if (assetValue.isGasAsset) {\n const transaction = {\n ...tx,\n data: hexlify(toUtf8Bytes(memo || \"\")),\n feeOptionKey,\n from,\n to: recipient,\n value: txAmount,\n };\n\n return sendTx(transaction);\n }\n\n // const call = getCall({ signer, provider, isEIP1559Compatible });\n const contractAddress = getTokenAddress(assetValue, chain);\n if (!contractAddress) throw new SwapKitError(\"toolbox_evm_no_contract_address\");\n\n const { maxFeePerGas, maxPriorityFeePerGas, gasPrice } = (\n await getEstimateGasPrices({ chain, isEIP1559Compatible, provider })()\n )[feeOptionKey];\n\n const transaction = await getCreateTransferTx({ chain, provider, signer })({\n assetValue,\n data: hexlify(toUtf8Bytes(memo || \"\")),\n gasPrice,\n maxFeePerGas,\n maxPriorityFeePerGas,\n memo,\n recipient,\n sender: from,\n });\n\n return sendTx(transaction);\n };\n}\n\nfunction getEstimateCall({ provider, signer }: { signer?: Signer; provider: Provider }) {\n return function estimateCall({ contractAddress, abi, funcName, funcParams = [], txOverrides }: EstimateCallParams) {\n if (!contractAddress) throw new SwapKitError(\"toolbox_evm_no_contract_address\");\n\n const contract = createContract(contractAddress, abi, provider);\n return signer\n ? contract\n .connect(signer)\n .getFunction(funcName)\n .estimateGas(...funcParams, txOverrides)\n : contract.getFunction(funcName).estimateGas(...funcParams, txOverrides);\n };\n}\n\nfunction getEstimateGasLimit({ provider, signer }: ToolboxWrapParams) {\n return async function estimateGasLimit({\n assetValue,\n recipient,\n memo,\n data,\n sender,\n funcName,\n funcParams,\n txOverrides,\n }: EVMTransferParams & {\n assetValue: AssetValue;\n funcName?: string;\n funcParams?: unknown[];\n txOverrides?: EVMTxParams;\n data?: string;\n }) {\n // const value = assetValue.getBaseValue(\"bigint\");\n const value = assetValue.bigIntValue;\n\n const assetAddress = assetValue.isGasAsset ? null : getTokenAddress(assetValue, assetValue.chain as EVMChain);\n\n if (assetAddress && funcName) {\n const estimateCall = getEstimateCall({ provider, signer });\n // ERC20 gas estimate\n return estimateCall({ abi: erc20ABI, contractAddress: assetAddress, funcName, funcParams, txOverrides });\n }\n\n const { hexlify, toUtf8Bytes } = await import(\"ethers\");\n\n return provider.estimateGas({\n data: data ? data : memo ? hexlify(toUtf8Bytes(memo)) : undefined,\n from: sender,\n to: recipient,\n value,\n });\n };\n}\n\nconst isEIP1559Transaction = (tx: EVMTxParams) =>\n (tx as EIP1559TxParams).type === 2 ||\n !!(tx as EIP1559TxParams).maxFeePerGas ||\n !!(tx as EIP1559TxParams).maxPriorityFeePerGas;\n\nfunction getSendTransaction({ provider, signer, isEIP1559Compatible = true, chain }: ToolboxWrapParams) {\n return async function sendTransaction({\n feeOptionKey = FeeOption.Fast,\n ...tx\n }: EVMTxParams & { feeOptionKey?: FeeOption }) {\n const { from, to, data, value, ...transaction } = tx;\n\n if (!signer) throw new SwapKitError(\"toolbox_evm_no_signer\");\n if (!to) throw new SwapKitError(\"toolbox_evm_no_to_address\");\n\n const parsedTxObject = { ...transaction, data: data || \"0x\", from, to, value: BigInt(value || 0) };\n\n // early return to skip gas estimation if provider is EIP-1193\n if (isBrowserProvider(provider)) {\n const sendTx = getEIP1193SendTransaction(provider);\n return sendTx(parsedTxObject);\n }\n\n const address = from || (await signer.getAddress());\n const nonce = tx.nonce || (await provider.getTransactionCount(address));\n const chainId = (await provider.getNetwork()).chainId;\n\n const isEIP1559 = isEIP1559Transaction(parsedTxObject) || isEIP1559Compatible;\n const estimateGasPrices = getEstimateGasPrices({ chain, isEIP1559Compatible, provider });\n\n const feeData =\n (isEIP1559 &&\n !(\n (parsedTxObject as EIP1559TxParams).maxFeePerGas && (parsedTxObject as EIP1559TxParams).maxPriorityFeePerGas\n )) ||\n !(parsedTxObject as LegacyEVMTxParams).gasPrice\n ? Object.entries((await estimateGasPrices())[feeOptionKey]).reduce(\n // biome-ignore lint/performance/noAccumulatingSpread: this is a small object\n (acc, [k, v]) => ({ ...acc, [k]: toHexString(BigInt(v)) }),\n {} as { maxFeePerGas?: string; maxPriorityFeePerGas?: string; gasPrice?: string },\n )\n : {};\n let gasLimit: string;\n try {\n gasLimit = toHexString(parsedTxObject.gasLimit || ((await provider.estimateGas(parsedTxObject)) * 11n) / 10n);\n } catch (error) {\n throw new SwapKitError(\"toolbox_evm_error_estimating_gas_limit\", { error });\n }\n\n try {\n const txObject = { ...parsedTxObject, chainId, gasLimit, nonce, type: isEIP1559 ? 2 : 0, ...feeData };\n\n try {\n const response = await signer.sendTransaction(txObject);\n return response.hash;\n } catch {\n const txHex = await signer.signTransaction({ ...txObject, from: address });\n const response = await provider.broadcastTransaction(txHex);\n return response.hash;\n }\n } catch (error) {\n throw new SwapKitError(\"toolbox_evm_error_sending_transaction\", { error });\n }\n };\n}\n\nfunction getCreateTransferTx({ provider, signer }: ToolboxWrapParams) {\n return async function createTransferTx({\n assetValue,\n memo,\n recipient,\n data,\n sender: fromOverride,\n maxFeePerGas,\n maxPriorityFeePerGas,\n gasPrice,\n ...tx\n }: EVMCreateTransactionParams) {\n const txAmount = assetValue.getBaseValue(\"bigint\");\n const chain = assetValue.chain as EVMChain;\n const from = fromOverride || (await signer?.getAddress());\n\n if (!from) throw new SwapKitError(\"toolbox_evm_no_from_address\");\n\n if (isGasAsset(assetValue)) {\n const { hexlify, toUtf8Bytes } = await import(\"ethers\");\n\n return { ...tx, data: data || hexlify(toUtf8Bytes(memo || \"\")), from, to: recipient, value: txAmount };\n }\n\n const contractAddress = getTokenAddress(assetValue, chain);\n if (!contractAddress) throw new SwapKitError(\"toolbox_evm_no_contract_address\");\n const createTx = getCreateContractTxObject({ chain: assetValue.chain as EVMChain, provider });\n\n return createTx({\n abi: erc20ABI,\n contractAddress,\n funcName: \"transfer\",\n funcParams: [recipient, txAmount],\n txOverrides: { from, gasPrice, maxFeePerGas, maxPriorityFeePerGas },\n });\n };\n}\n\nfunction getCreateApprovalTx({ provider, signer, chain }: ToolboxWrapParams) {\n return async function createApprovalTx({ assetAddress, spenderAddress, amount, from: fromParam }: ApproveParams) {\n const from = (await signer?.getAddress()) || fromParam;\n\n const createTx = getCreateContractTxObject({ chain, provider });\n const approvalAmount = [\"bigint\", \"number\"].includes(typeof amount)\n ? (amount as bigint | number)\n : amount || MAX_APPROVAL;\n\n const txObject = await createTx({\n abi: erc20ABI,\n contractAddress: assetAddress,\n funcName: \"approve\",\n funcParams: [spenderAddress, BigInt(approvalAmount)],\n txOverrides: { from },\n });\n\n return txObject;\n };\n}\n\nfunction getEstimateTransactionFee({\n provider,\n isEIP1559Compatible = true,\n}: {\n provider: Provider | BrowserProvider;\n isEIP1559Compatible?: boolean;\n chain: EVMChain;\n}) {\n return async function estimateTransactionFee({\n feeOption = FeeOption.Fast,\n chain,\n ...txObject\n }: EIP1559TxParams & { feeOption: FeeOption; chain: EVMChain }) {\n const estimateGasPrices = getEstimateGasPrices({ chain, isEIP1559Compatible, provider });\n const gasPrices = await estimateGasPrices();\n const gasLimit = await provider.estimateGas(txObject);\n\n const assetValue = AssetValue.from({ chain });\n const { gasPrice, maxFeePerGas, maxPriorityFeePerGas } = gasPrices[feeOption];\n\n if (!isEIP1559Compatible && gasPrice) {\n return assetValue.set(SwapKitNumber.fromBigInt(gasPrice * gasLimit, assetValue.decimal));\n }\n\n if (maxFeePerGas && maxPriorityFeePerGas) {\n const fee = (maxFeePerGas + maxPriorityFeePerGas) * gasLimit;\n\n return assetValue.set(SwapKitNumber.fromBigInt(fee, assetValue.decimal));\n }\n\n throw new SwapKitError(\"toolbox_evm_no_gas_price\");\n };\n}\n",
10
10
  "import { Chain, type EVMChain, FeeOption, getRPCUrl } from \"@swapkit/helpers\";\nimport { match, P } from \"ts-pattern\";\n\nimport { getEvmApi } from \"../api\";\nimport { multicallAbi } from \"../contracts/eth/multicall\";\nimport { getIsEIP1559Compatible, getNetworkParams, getProvider } from \"../helpers\";\nimport type { EVMToolboxParams } from \"../types\";\nimport { BaseEVMToolbox } from \"./baseEVMToolbox\";\n\nexport async function ETHToolbox({ provider, ...signer }: EVMToolboxParams) {\n const evmToolbox = await createEvmToolbox(Chain.Ethereum)({ provider, ...signer });\n async function multicall(\n callTuples: { address: string; data: string }[],\n multicallAddress = \"0x5ba1e12693dc8f9c48aad8770482f4739beed696\",\n funcName = \"aggregate\",\n feeOptionKey: FeeOption = FeeOption.Fast,\n ) {\n const txObject = await evmToolbox.createContractTxObject({\n abi: multicallAbi,\n contractAddress: multicallAddress,\n funcName,\n funcParams: [callTuples],\n });\n\n return evmToolbox.sendTransaction({ ...txObject, feeOptionKey });\n }\n\n return { ...evmToolbox, multicall };\n}\n\nexport const ARBToolbox = createEvmToolbox(Chain.Arbitrum);\nexport const AURORAToolbox = createEvmToolbox(Chain.Aurora);\nexport const AVAXToolbox = createEvmToolbox(Chain.Avalanche);\nexport const BASEToolbox = createEvmToolbox(Chain.Base);\nexport const BERAToolbox = createEvmToolbox(Chain.Berachain);\nexport const BSCToolbox = createEvmToolbox(Chain.BinanceSmartChain);\nexport const BotanixToolbox = createEvmToolbox(Chain.Botanix);\nexport const COREToolbox = createEvmToolbox(Chain.Core);\nexport const CORNToolbox = createEvmToolbox(Chain.Corn);\nexport const CROToolbox = createEvmToolbox(Chain.Cronos);\nexport const GNOToolbox = createEvmToolbox(Chain.Gnosis);\nexport const HYPEREVMToolbox = createEvmToolbox(Chain.Hyperevm);\nexport const MATICToolbox = createEvmToolbox(Chain.Polygon);\nexport const SONICToolbox = createEvmToolbox(Chain.Sonic);\nexport const UNIToolbox = createEvmToolbox(Chain.Unichain);\nexport const XLayerToolbox = createEvmToolbox(Chain.XLayer);\n\nfunction createEvmToolbox<C extends EVMChain>(chain: C) {\n return async function createEvmToolbox({ provider: providerParam, ...toolboxSignerParams }: EVMToolboxParams) {\n const { HDNodeWallet } = await import(\"ethers\");\n const rpcUrl = await getRPCUrl(chain);\n\n const provider = providerParam || (await getProvider(chain, rpcUrl));\n\n const isEIP1559Compatible = getIsEIP1559Compatible(chain);\n const signer = match(toolboxSignerParams)\n .with({ phrase: P.string }, ({ phrase }) => HDNodeWallet.fromPhrase(phrase).connect(provider))\n .with({ signer: P.any }, ({ signer }) => signer)\n .otherwise(() => undefined);\n\n const evmToolbox = BaseEVMToolbox({ chain, isEIP1559Compatible, provider, signer });\n\n return { ...evmToolbox, getBalance: getEvmApi(chain).getBalance, getNetworkParams: getNetworkParams(chain) };\n };\n}\n",
11
11
  "export const gasOracleAbi = [\n {\n inputs: [{ internalType: \"address\", name: \"_owner\", type: \"address\" }],\n stateMutability: \"nonpayable\",\n type: \"constructor\",\n },\n {\n anonymous: false,\n inputs: [{ indexed: false, internalType: \"uint256\", name: \"\", type: \"uint256\" }],\n name: \"DecimalsUpdated\",\n type: \"event\",\n },\n {\n anonymous: false,\n inputs: [{ indexed: false, internalType: \"uint256\", name: \"\", type: \"uint256\" }],\n name: \"GasPriceUpdated\",\n type: \"event\",\n },\n {\n anonymous: false,\n inputs: [{ indexed: false, internalType: \"uint256\", name: \"\", type: \"uint256\" }],\n name: \"L1BaseFeeUpdated\",\n type: \"event\",\n },\n {\n anonymous: false,\n inputs: [{ indexed: false, internalType: \"uint256\", name: \"\", type: \"uint256\" }],\n name: \"OverheadUpdated\",\n type: \"event\",\n },\n {\n anonymous: false,\n inputs: [\n { indexed: true, internalType: \"address\", name: \"previousOwner\", type: \"address\" },\n { indexed: true, internalType: \"address\", name: \"newOwner\", type: \"address\" },\n ],\n name: \"OwnershipTransferred\",\n type: \"event\",\n },\n {\n anonymous: false,\n inputs: [{ indexed: false, internalType: \"uint256\", name: \"\", type: \"uint256\" }],\n name: \"ScalarUpdated\",\n type: \"event\",\n },\n {\n inputs: [],\n name: \"decimals\",\n outputs: [{ internalType: \"uint256\", name: \"\", type: \"uint256\" }],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [],\n name: \"gasPrice\",\n outputs: [{ internalType: \"uint256\", name: \"\", type: \"uint256\" }],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [{ internalType: \"bytes\", name: \"_data\", type: \"bytes\" }],\n name: \"getL1Fee\",\n outputs: [{ internalType: \"uint256\", name: \"\", type: \"uint256\" }],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [{ internalType: \"bytes\", name: \"_data\", type: \"bytes\" }],\n name: \"getL1GasUsed\",\n outputs: [{ internalType: \"uint256\", name: \"\", type: \"uint256\" }],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [],\n name: \"l1BaseFee\",\n outputs: [{ internalType: \"uint256\", name: \"\", type: \"uint256\" }],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [],\n name: \"overhead\",\n outputs: [{ internalType: \"uint256\", name: \"\", type: \"uint256\" }],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [],\n name: \"owner\",\n outputs: [{ internalType: \"address\", name: \"\", type: \"address\" }],\n stateMutability: \"view\",\n type: \"function\",\n },\n { inputs: [], name: \"renounceOwnership\", outputs: [], stateMutability: \"nonpayable\", type: \"function\" },\n {\n inputs: [],\n name: \"scalar\",\n outputs: [{ internalType: \"uint256\", name: \"\", type: \"uint256\" }],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [{ internalType: \"uint256\", name: \"_decimals\", type: \"uint256\" }],\n name: \"setDecimals\",\n outputs: [],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [{ internalType: \"uint256\", name: \"_gasPrice\", type: \"uint256\" }],\n name: \"setGasPrice\",\n outputs: [],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [{ internalType: \"uint256\", name: \"_baseFee\", type: \"uint256\" }],\n name: \"setL1BaseFee\",\n outputs: [],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [{ internalType: \"uint256\", name: \"_overhead\", type: \"uint256\" }],\n name: \"setOverhead\",\n outputs: [],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [{ internalType: \"uint256\", name: \"_scalar\", type: \"uint256\" }],\n name: \"setScalar\",\n outputs: [],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [{ internalType: \"address\", name: \"newOwner\", type: \"address\" }],\n name: \"transferOwnership\",\n outputs: [],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n];\n",
12
12
  "import {\n applyFeeMultiplierToBigInt,\n Chain,\n FeeOption,\n getChainConfig,\n getRPCUrl,\n SwapKitError,\n} from \"@swapkit/helpers\";\nimport type { Authorization, BrowserProvider, JsonRpcProvider, Provider, TransactionRequest } from \"ethers\";\nimport { Contract, HDNodeWallet } from \"ethers\";\nimport { match, P } from \"ts-pattern\";\nimport { getEvmApi } from \"../api\";\nimport { gasOracleAbi } from \"../contracts/op/gasOracle\";\nimport { getProvider } from \"../helpers\";\nimport type { EVMToolboxParams } from \"../types\";\nimport { BaseEVMToolbox } from \"./baseEVMToolbox\";\n\nconst GAS_PRICE_ORACLE_ADDRESS = \"0x420000000000000000000000000000000000000f\";\n\nfunction connectGasPriceOracle<P extends Provider>(provider: P) {\n return new Contract(GAS_PRICE_ORACLE_ADDRESS, gasOracleAbi, provider);\n}\n\nfunction getL1GasPriceFetcher<P extends Provider>(provider: P) {\n return async function getL1GasPrice() {\n const gasPriceOracle = connectGasPriceOracle(provider);\n\n if (gasPriceOracle && \"l1BaseFee\" in gasPriceOracle) {\n return (await gasPriceOracle?.l1BaseFee()) as unknown as bigint;\n }\n\n return undefined;\n };\n}\n\nfunction serializeTx<P extends JsonRpcProvider | BrowserProvider>(provider: P) {\n return async function serializeTx({ from, to, nonce, ...tx }: TransactionRequest) {\n const { Transaction } = await import(\"ethers\");\n\n if (!to) throw new SwapKitError(\"toolbox_evm_invalid_transaction\", { error: \"Missing to address\" });\n\n return Transaction.from({\n ...tx,\n authorizationList: tx.authorizationList as Authorization[],\n nonce: nonce ? nonce : from ? await provider.getTransactionCount(from) : 0,\n to: to as string,\n }).serialized;\n };\n}\n\nfunction estimateL1GasCost<P extends JsonRpcProvider | BrowserProvider>(provider: P) {\n return async function estimateL1GasCost(tx: TransactionRequest) {\n const gasPriceOracle = connectGasPriceOracle(provider);\n const serializedTx = await serializeTx(provider)(tx);\n\n if (gasPriceOracle && \"getL1Fee\" in gasPriceOracle) {\n return gasPriceOracle.getL1Fee(serializedTx);\n }\n };\n}\n\nfunction estimateL2GasCost<P extends JsonRpcProvider | BrowserProvider>(provider: P) {\n return async function estimateL2GasCost(tx: TransactionRequest) {\n const l2GasPrice = await provider.send(\"eth_gasPrice\", []);\n const l2GasCost = await provider.estimateGas(tx);\n return l2GasPrice.mul(l2GasCost);\n };\n}\n\nfunction estimateTotalGasCost<P extends JsonRpcProvider | BrowserProvider>(provider: P) {\n return async function estimateTotalGasCost(tx: TransactionRequest) {\n const l1GasCost = await estimateL1GasCost(provider)(tx);\n const l2GasCost = await estimateL2GasCost(provider)(tx);\n return l1GasCost.add(l2GasCost);\n };\n}\n\nfunction estimateL1Gas<P extends JsonRpcProvider | BrowserProvider>(provider: P) {\n return async function estimateL1Gas(tx: TransactionRequest) {\n const gasPriceOracle = connectGasPriceOracle(provider);\n const serializedTx = await serializeTx(provider)(tx);\n\n if (gasPriceOracle && \"getL1GasUsed\" in gasPriceOracle) {\n return gasPriceOracle.getL1GasUsed(serializedTx);\n }\n };\n}\n\nfunction getNetworkParams() {\n const { baseDecimal, chainId, explorerUrl, name, rpcUrls } = getChainConfig(Chain.Optimism);\n\n return {\n blockExplorerUrls: [explorerUrl],\n chainId,\n chainName: name,\n nativeCurrency: { decimals: baseDecimal, name: \"Ethereum\", symbol: Chain.Ethereum },\n rpcUrls,\n };\n}\n\nasync function estimateGasPrices(provider: Provider) {\n try {\n const { maxFeePerGas, maxPriorityFeePerGas, gasPrice } = await provider.getFeeData();\n const l1GasPrice = await getL1GasPriceFetcher(provider)();\n const price = gasPrice as bigint;\n\n if (!(maxFeePerGas && maxPriorityFeePerGas)) {\n throw new SwapKitError(\"toolbox_evm_no_fee_data\");\n }\n\n return {\n [FeeOption.Average]: { gasPrice: price, l1GasPrice, maxFeePerGas, maxPriorityFeePerGas },\n [FeeOption.Fast]: {\n gasPrice: applyFeeMultiplierToBigInt(price, FeeOption.Fast),\n l1GasPrice: applyFeeMultiplierToBigInt(l1GasPrice || 0n, FeeOption.Fast),\n maxFeePerGas,\n maxPriorityFeePerGas: applyFeeMultiplierToBigInt(maxPriorityFeePerGas, FeeOption.Fast),\n },\n [FeeOption.Fastest]: {\n gasPrice: applyFeeMultiplierToBigInt(price, FeeOption.Fastest),\n l1GasPrice: applyFeeMultiplierToBigInt(l1GasPrice || 0n, FeeOption.Fastest),\n maxFeePerGas,\n maxPriorityFeePerGas: applyFeeMultiplierToBigInt(maxPriorityFeePerGas, FeeOption.Fastest),\n },\n } as {\n [key in FeeOption]: {\n l1GasPrice?: bigint;\n gasPrice?: bigint;\n maxFeePerGas?: bigint;\n maxPriorityFeePerGas?: bigint;\n };\n };\n } catch (error) {\n throw new SwapKitError(\"toolbox_evm_gas_estimation_error\", {\n error: (error as any).msg ?? (error as any).toString(),\n });\n }\n}\n\nexport async function OPToolbox({ provider: providerParam, ...toolboxSignerParams }: EVMToolboxParams) {\n const chain = Chain.Optimism;\n const rpcUrl = await getRPCUrl(chain);\n const provider = providerParam || (await getProvider(chain, rpcUrl));\n const signer = match(toolboxSignerParams)\n .with({ phrase: P.string }, ({ phrase }) => HDNodeWallet.fromPhrase(phrase).connect(provider))\n .with({ signer: P.any }, ({ signer }) => signer)\n .otherwise(() => undefined);\n\n const evmToolbox = BaseEVMToolbox({ provider, signer });\n const getL1GasPrice = getL1GasPriceFetcher(provider);\n\n return {\n ...evmToolbox,\n estimateGasPrices: estimateGasPrices(provider),\n estimateL1Gas: estimateL1Gas(provider),\n estimateL1GasCost: estimateL1GasCost(provider),\n estimateL2GasCost: estimateL2GasCost(provider),\n estimateTotalGasCost: estimateTotalGasCost(provider),\n getBalance: getEvmApi(Chain.Optimism).getBalance,\n getL1GasPrice,\n getNetworkParams,\n };\n}\n",
@@ -14,7 +14,7 @@
14
14
  "import type {\n AssetValue,\n ChainSigner,\n DerivationPathArray,\n FeeOption,\n GenericCreateTransactionParams,\n GenericTransferParams,\n} from \"@swapkit/helpers\";\nimport { Chain } from \"@swapkit/helpers\";\nimport type {\n BigNumberish,\n BrowserProvider,\n JsonFragment,\n JsonRpcProvider,\n JsonRpcSigner,\n Signer,\n Transaction,\n} from \"ethers\";\nimport type { getProvider } from \"./index\";\nimport type {\n ARBToolbox,\n AURORAToolbox,\n AVAXToolbox,\n BASEToolbox,\n BERAToolbox,\n BSCToolbox,\n COREToolbox,\n CORNToolbox,\n CROToolbox,\n ETHToolbox,\n GNOToolbox,\n HYPEREVMToolbox,\n MATICToolbox,\n OPToolbox,\n SONICToolbox,\n UNIToolbox,\n XLayerToolbox,\n} from \"./toolbox\";\n\nexport enum EthNetwork {\n Test = \"goerli\",\n Main = \"homestead\",\n}\n\nexport type ApproveParams = {\n assetAddress: string;\n spenderAddress: string;\n feeOptionKey?: FeeOption;\n amount?: BigNumberish;\n from?: string;\n // Optional fallback in case estimation for gas limit fails\n gasLimitFallback?: BigNumberish;\n nonce?: number;\n};\n\nexport type ApprovedParams = { assetAddress: string; spenderAddress: string; from: string };\n\nexport type IsApprovedParams = ApprovedParams & { amount?: BigNumberish };\n\nexport type CallParams = {\n callProvider?: Awaited<ReturnType<typeof getProvider>>;\n contractAddress: string;\n abi: readonly JsonFragment[];\n funcName: string;\n funcParams?: unknown[];\n txOverrides?: Partial<Transaction>;\n feeOption?: FeeOption;\n};\n\nexport type EstimateCallParams = Pick<\n CallParams,\n \"contractAddress\" | \"abi\" | \"funcName\" | \"funcParams\" | \"txOverrides\"\n>;\n\nexport type EVMTransferParams = GenericTransferParams & { sender?: string };\n\nexport type EVMCreateTransactionParams = Omit<GenericCreateTransactionParams, \"feeRate\"> & {\n gasLimit?: bigint;\n gasPrice?: bigint;\n maxFeePerGas?: bigint;\n maxPriorityFeePerGas?: bigint;\n data?: string;\n nonce?: number;\n};\n\nexport type EVMMaxSendableAmountsParams = {\n from: string;\n assetValue: AssetValue;\n feeOptionKey?: FeeOption;\n memo?: string;\n abi?: readonly JsonFragment[];\n funcName?: string;\n contractAddress?: string;\n funcParams?: unknown[];\n txOverrides?: Partial<Transaction>;\n};\n\nexport type EVMTxBaseParams<T = bigint> = {\n to?: string;\n from?: string;\n nonce?: number;\n gasLimit?: T;\n data?: string;\n value?: T;\n chainId?: T;\n};\n\nexport type EIP1559TxParams<T = bigint> = EVMTxBaseParams<T> & {\n type?: number;\n maxFeePerGas?: T;\n maxPriorityFeePerGas?: T;\n};\n\nexport type LegacyEVMTxParams<T = bigint> = EVMTxBaseParams<T> & { gasPrice?: T };\n\nexport type EVMTxParams = EIP1559TxParams | LegacyEVMTxParams;\n\nexport type EVMToolboxParams = { provider?: BrowserProvider | JsonRpcProvider } & (\n | { signer?: (ChainSigner<EVMTransferParams, string> & Signer) | JsonRpcSigner }\n | { phrase?: string; derivationPath?: DerivationPathArray; index?: number }\n);\n\nexport type EVMToolboxes = {\n [Chain.Arbitrum]: Awaited<ReturnType<typeof ARBToolbox>>;\n [Chain.Aurora]: Awaited<ReturnType<typeof AURORAToolbox>>;\n [Chain.Avalanche]: Awaited<ReturnType<typeof AVAXToolbox>>;\n [Chain.Base]: Awaited<ReturnType<typeof BASEToolbox>>;\n [Chain.Berachain]: Awaited<ReturnType<typeof BERAToolbox>>;\n [Chain.BinanceSmartChain]: Awaited<ReturnType<typeof BSCToolbox>>;\n [Chain.Botanix]: Awaited<ReturnType<typeof SONICToolbox>>;\n [Chain.Core]: Awaited<ReturnType<typeof COREToolbox>>;\n [Chain.Corn]: Awaited<ReturnType<typeof CORNToolbox>>;\n [Chain.Cronos]: Awaited<ReturnType<typeof CROToolbox>>;\n [Chain.Hyperevm]: Awaited<ReturnType<typeof HYPEREVMToolbox>>;\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 [Chain.Sonic]: Awaited<ReturnType<typeof SONICToolbox>>;\n [Chain.Unichain]: Awaited<ReturnType<typeof UNIToolbox>>;\n [Chain.XLayer]: Awaited<ReturnType<typeof XLayerToolbox>>;\n};\n",
15
15
  "export * from \"./api\";\nexport * from \"./helpers\";\nexport * from \"./toolbox\";\nexport * from \"./types\";\n"
16
16
  ],
17
- "mappings": "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",
18
- "debugId": "50DC91A3C9C0A1FF64756E2164756E21",
17
+ "mappings": "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",
18
+ "debugId": "382E9E6020A8A86C64756E2164756E21",
19
19
  "names": []
20
20
  }