@hinkal/common 0.0.8 → 0.0.11
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.
- package/assets/{snarkjsWorkerLogic-PT_bvjbJ.js → snarkjsWorkerLogic-DbN7AhXw.js} +2 -2
- package/assets/{utxoWorkerLogic-CaRjg9tk.js → utxoWorkerLogic-Bkshrlp4.js} +2 -2
- package/assets/viteWorkerURL.constant-DQ9bjg_P.js +11 -0
- package/assets/{zkProofWorkerLauncher-D1ef-Gxp.js → zkProofWorkerLauncher-DGaNFkI2.js} +1 -1
- package/assets/{zkProofWorkerLogic-BwAAGTST.js → zkProofWorkerLogic-InUBQakA.js} +4 -4
- package/{index-BZ-pPp0Y.mjs → index-CVdjODAx.mjs} +4 -4
- package/{index-B8ePiYjC.js → index-DgxXm2wr.js} +1 -1
- package/index.js +1 -1
- package/index.mjs +1 -1
- package/package.json +2 -3
- package/{snarkjsWorkerLogic-wQM4709R.mjs → snarkjsWorkerLogic-BBt039QD.mjs} +1 -1
- package/{snarkjsWorkerLogic-DertJLwB.js → snarkjsWorkerLogic-CATeRJwr.js} +1 -1
- package/{utxoWorkerLogic-DGQxcKX5.mjs → utxoWorkerLogic-DloIiJDU.mjs} +1 -1
- package/{utxoWorkerLogic-DtyjPuS3.js → utxoWorkerLogic-GBZ1g_EM.js} +1 -1
- package/viteWorkerURL.constant-BRK-UDZl.mjs +9 -0
- package/viteWorkerURL.constant-Bc4P76KI.js +1 -0
- package/{zkProofWorkerLogic-C5kAcugj.js → zkProofWorkerLogic-C_M3Ctn4.js} +1 -1
- package/{zkProofWorkerLogic-CS9jd81C.mjs → zkProofWorkerLogic-D28ov2ck.mjs} +1 -1
- package/assets/viteWorkerURL.constant-C7fE1hzc.js +0 -11
- package/viteWorkerURL.constant-B4ERp5DP.js +0 -1
- package/viteWorkerURL.constant-DNNogPOI.mjs +0 -9
|
@@ -209,7 +209,7 @@ In order to be iterable, non-array objects must have a [Symbol.iterator]() metho
|
|
|
209
209
|
`+h.map(renderReason).join(`
|
|
210
210
|
`):" "+renderReason(h[0]):"as no adapter specified";throw new AxiosError("There is no suitable adapter to dispatch the request "+A,"ERR_NOT_SUPPORT")}return c},adapters:knownAdapters};function throwIfCancellationRequested$1(a){if(a.cancelToken&&a.cancelToken.throwIfRequested(),a.signal&&a.signal.aborted)throw new CanceledError(null,a)}function dispatchRequest$2(a){return throwIfCancellationRequested$1(a),a.headers=AxiosHeaders$1.from(a.headers),a.data=transformData$2.call(a,a.transformRequest),["post","put","patch"].indexOf(a.method)!==-1&&a.headers.setContentType("application/x-www-form-urlencoded",!1),adapters.getAdapter(a.adapter||defaults$5.adapter)(a).then(function(c){return throwIfCancellationRequested$1(a),c.data=transformData$2.call(a,a.transformResponse,c),c.headers=AxiosHeaders$1.from(c.headers),c},function(c){return isCancel$2(c)||(throwIfCancellationRequested$1(a),c&&c.response&&(c.response.data=transformData$2.call(a,a.transformResponse,c.response),c.response.headers=AxiosHeaders$1.from(c.response.headers))),Promise.reject(c)})}const headersToObject=a=>a instanceof AxiosHeaders$1?{...a}:a;function mergeConfig$3(a,d){d=d||{};const n={};function c(Q,H,ne){return utils$u.isPlainObject(Q)&&utils$u.isPlainObject(H)?utils$u.merge.call({caseless:ne},Q,H):utils$u.isPlainObject(H)?utils$u.merge({},H):utils$u.isArray(H)?H.slice():H}function l(Q,H,ne){if(utils$u.isUndefined(H)){if(!utils$u.isUndefined(Q))return c(void 0,Q,ne)}else return c(Q,H,ne)}function h(Q,H){if(!utils$u.isUndefined(H))return c(void 0,H)}function A(Q,H){if(utils$u.isUndefined(H)){if(!utils$u.isUndefined(Q))return c(void 0,Q)}else return c(void 0,H)}function T(Q,H,ne){if(ne in d)return c(Q,H);if(ne in a)return c(void 0,Q)}const O={url:h,method:h,data:h,baseURL:A,transformRequest:A,transformResponse:A,paramsSerializer:A,timeout:A,timeoutMessage:A,withCredentials:A,withXSRFToken:A,adapter:A,responseType:A,xsrfCookieName:A,xsrfHeaderName:A,onUploadProgress:A,onDownloadProgress:A,decompress:A,maxContentLength:A,maxBodyLength:A,beforeRedirect:A,transport:A,httpAgent:A,httpsAgent:A,cancelToken:A,socketPath:A,responseEncoding:A,validateStatus:T,headers:(Q,H)=>l(headersToObject(Q),headersToObject(H),!0)};return utils$u.forEach(Object.keys(Object.assign({},a,d)),function(H){const ne=O[H]||l,B=ne(a[H],d[H],H);utils$u.isUndefined(B)&&ne!==T||(n[H]=B)}),n}const VERSION="1.6.8",validators$3={};["object","boolean","number","function","string","symbol"].forEach((a,d)=>{validators$3[a]=function(c){return typeof c===a||"a"+(d<1?"n ":" ")+a}});const deprecatedWarnings$1={};validators$3.transitional=function(d,n,c){function l(h,A){return"[Axios v"+VERSION+"] Transitional option '"+h+"'"+A+(c?". "+c:"")}return(h,A,T)=>{if(d===!1)throw new AxiosError(l(A," has been removed"+(n?" in "+n:"")),AxiosError.ERR_DEPRECATED);return n&&!deprecatedWarnings$1[A]&&(deprecatedWarnings$1[A]=!0,console.warn(l(A," has been deprecated since v"+n+" and will be removed in the near future"))),d?d(h,A,T):!0}};function assertOptions$1(a,d,n){if(typeof a!="object")throw new AxiosError("options must be an object",AxiosError.ERR_BAD_OPTION_VALUE);const c=Object.keys(a);let l=c.length;for(;l-- >0;){const h=c[l],A=d[h];if(A){const T=a[h],O=T===void 0||A(T,h,a);if(O!==!0)throw new AxiosError("option "+h+" must be "+O,AxiosError.ERR_BAD_OPTION_VALUE);continue}if(n!==!0)throw new AxiosError("Unknown option "+h,AxiosError.ERR_BAD_OPTION)}}const validator$3={assertOptions:assertOptions$1,validators:validators$3},validators$2=validator$3.validators;let Axios$2=class{constructor(d){this.defaults=d,this.interceptors={request:new InterceptorManager$2,response:new InterceptorManager$2}}async request(d,n){try{return await this._request(d,n)}catch(c){if(c instanceof Error){let l;Error.captureStackTrace?Error.captureStackTrace(l={}):l=new Error;const h=l.stack?l.stack.replace(/^.+\n/,""):"";c.stack?h&&!String(c.stack).endsWith(h.replace(/^.+\n.+\n/,""))&&(c.stack+=`
|
|
211
211
|
`+h):c.stack=h}throw c}}_request(d,n){typeof d=="string"?(n=n||{},n.url=d):n=d||{},n=mergeConfig$3(this.defaults,n);const{transitional:c,paramsSerializer:l,headers:h}=n;c!==void 0&&validator$3.assertOptions(c,{silentJSONParsing:validators$2.transitional(validators$2.boolean),forcedJSONParsing:validators$2.transitional(validators$2.boolean),clarifyTimeoutError:validators$2.transitional(validators$2.boolean)},!1),l!=null&&(utils$u.isFunction(l)?n.paramsSerializer={serialize:l}:validator$3.assertOptions(l,{encode:validators$2.function,serialize:validators$2.function},!0)),n.method=(n.method||this.defaults.method||"get").toLowerCase();let A=h&&utils$u.merge(h.common,h[n.method]);h&&utils$u.forEach(["delete","get","head","post","put","patch","common"],ie=>{delete h[ie]}),n.headers=AxiosHeaders$1.concat(A,h);const T=[];let O=!0;this.interceptors.request.forEach(function(P){typeof P.runWhen=="function"&&P.runWhen(n)===!1||(O=O&&P.synchronous,T.unshift(P.fulfilled,P.rejected))});const Q=[];this.interceptors.response.forEach(function(P){Q.push(P.fulfilled,P.rejected)});let H,ne=0,B;if(!O){const ie=[dispatchRequest$2.bind(this),void 0];for(ie.unshift.apply(ie,T),ie.push.apply(ie,Q),B=ie.length,H=Promise.resolve(n);ne<B;)H=H.then(ie[ne++],ie[ne++]);return H}B=T.length;let oe=n;for(ne=0;ne<B;){const ie=T[ne++],P=T[ne++];try{oe=ie(oe)}catch(W){P.call(this,W);break}}try{H=dispatchRequest$2.call(this,oe)}catch(ie){return Promise.reject(ie)}for(ne=0,B=Q.length;ne<B;)H=H.then(Q[ne++],Q[ne++]);return H}getUri(d){d=mergeConfig$3(this.defaults,d);const n=buildFullPath$1(d.baseURL,d.url);return buildURL$2(n,d.params,d.paramsSerializer)}};utils$u.forEach(["delete","get","head","options"],function(d){Axios$2.prototype[d]=function(n,c){return this.request(mergeConfig$3(c||{},{method:d,url:n,data:(c||{}).data}))}});utils$u.forEach(["post","put","patch"],function(d){function n(c){return function(h,A,T){return this.request(mergeConfig$3(T||{},{method:d,headers:c?{"Content-Type":"multipart/form-data"}:{},url:h,data:A}))}}Axios$2.prototype[d]=n(),Axios$2.prototype[d+"Form"]=n(!0)});const Axios$3=Axios$2;class CancelToken{constructor(d){if(typeof d!="function")throw new TypeError("executor must be a function.");let n;this.promise=new Promise(function(h){n=h});const c=this;this.promise.then(l=>{if(!c._listeners)return;let h=c._listeners.length;for(;h-- >0;)c._listeners[h](l);c._listeners=null}),this.promise.then=l=>{let h;const A=new Promise(T=>{c.subscribe(T),h=T}).then(l);return A.cancel=function(){c.unsubscribe(h)},A},d(function(h,A,T){c.reason||(c.reason=new CanceledError(h,A,T),n(c.reason))})}throwIfRequested(){if(this.reason)throw this.reason}subscribe(d){if(this.reason){d(this.reason);return}this._listeners?this._listeners.push(d):this._listeners=[d]}unsubscribe(d){if(!this._listeners)return;const n=this._listeners.indexOf(d);n!==-1&&this._listeners.splice(n,1)}static source(){let d;return{token:new CancelToken(function(l){d=l}),cancel:d}}}const CancelToken$1=CancelToken;function spread$1(a){return function(n){return a.apply(null,n)}}function isAxiosError$1(a){return utils$u.isObject(a)&&a.isAxiosError===!0}const HttpStatusCode={Continue:100,SwitchingProtocols:101,Processing:102,EarlyHints:103,Ok:200,Created:201,Accepted:202,NonAuthoritativeInformation:203,NoContent:204,ResetContent:205,PartialContent:206,MultiStatus:207,AlreadyReported:208,ImUsed:226,MultipleChoices:300,MovedPermanently:301,Found:302,SeeOther:303,NotModified:304,UseProxy:305,Unused:306,TemporaryRedirect:307,PermanentRedirect:308,BadRequest:400,Unauthorized:401,PaymentRequired:402,Forbidden:403,NotFound:404,MethodNotAllowed:405,NotAcceptable:406,ProxyAuthenticationRequired:407,RequestTimeout:408,Conflict:409,Gone:410,LengthRequired:411,PreconditionFailed:412,PayloadTooLarge:413,UriTooLong:414,UnsupportedMediaType:415,RangeNotSatisfiable:416,ExpectationFailed:417,ImATeapot:418,MisdirectedRequest:421,UnprocessableEntity:422,Locked:423,FailedDependency:424,TooEarly:425,UpgradeRequired:426,PreconditionRequired:428,TooManyRequests:429,RequestHeaderFieldsTooLarge:431,UnavailableForLegalReasons:451,InternalServerError:500,NotImplemented:501,BadGateway:502,ServiceUnavailable:503,GatewayTimeout:504,HttpVersionNotSupported:505,VariantAlsoNegotiates:506,InsufficientStorage:507,LoopDetected:508,NotExtended:510,NetworkAuthenticationRequired:511};Object.entries(HttpStatusCode).forEach(([a,d])=>{HttpStatusCode[d]=a});const HttpStatusCode$1=HttpStatusCode;function createInstance$1(a){const d=new Axios$3(a),n=bind$3(Axios$3.prototype.request,d);return utils$u.extend(n,Axios$3.prototype,d,{allOwnKeys:!0}),utils$u.extend(n,d,null,{allOwnKeys:!0}),n.create=function(l){return createInstance$1(mergeConfig$3(a,l))},n}const axios$3=createInstance$1(defaults$5);axios$3.Axios=Axios$3;axios$3.CanceledError=CanceledError;axios$3.CancelToken=CancelToken$1;axios$3.isCancel=isCancel$2;axios$3.VERSION=VERSION;axios$3.toFormData=toFormData;axios$3.AxiosError=AxiosError;axios$3.Cancel=axios$3.CanceledError;axios$3.all=function(d){return Promise.all(d)};axios$3.spread=spread$1;axios$3.isAxiosError=isAxiosError$1;axios$3.mergeConfig=mergeConfig$3;axios$3.AxiosHeaders=AxiosHeaders$1;axios$3.formToJSON=a=>formDataToJSON(utils$u.isHTMLForm(a)?new FormData(a):a);axios$3.getAdapter=adapters.getAdapter;axios$3.HttpStatusCode=HttpStatusCode$1;axios$3.default=axios$3;async function restoreSnapshots(a){return(await axios$3.post(`${getServerURL(a)}${API_CONFIG.ROUTES.restoreSnapshots}`)).data}class ValueCache{constructor(d){this.timeoutInMs=d,this.setTimer()}timeoutInMs;values={};setTimer(){if(this.timeoutInMs>0){const d=this;setInterval(()=>{d.onTimeout()},this.timeoutInMs)}}onTimeout(){this.clear()}clear(){this.values={}}}const abiDecodeUtxo=a=>{const d=defaultAbiCoder.decode(["uint256","address","tuple(uint256, uint256, uint256, uint256)","uint256","uint256"],a),n=d[0].toBigInt(),c=d[1],l=d[2][0].toBigInt(),h=d[2][1].toHexString(),A=d[2][2].toBigInt(),T=d[2][3].toBigInt(),O=d[3].toString(),Q=d[4].toNumber();return{amount:n,erc20TokenAddress:c,randomization:l,stealthAddress:h,H0:A,H1:T,timeStamp:O,tokenId:Q}},decodeUtxoConstructorArgs=(a,d)=>{const{amount:n,erc20TokenAddress:c,timeStamp:l,tokenId:h,randomization:A}=abiDecodeUtxo(a);return{amount:n,erc20TokenAddress:c,timeStamp:l,tokenId:h,randomization:A,shieldedPrivateKey:d}},decodeUtxo=(a,d)=>new Utxo(decodeUtxoConstructorArgs(a,d)),checkUtxoSignature=(a,d)=>{const{randomization:n,H0:c,H1:l}=abiDecodeUtxo(a),h=UserKeys.checkSignature(n,c,l,d);if(!h)throw new Error("UTXO doesn't belong to user");return h};(async()=>await sodium.ready)();const encryptUtxo=(a,d)=>{const n=[Buffer.from(hexlify(d?0n:a.amount)),Buffer.from(hexlify(a.erc20TokenAddress)),Buffer.from(hexlify(a.randomization)),Buffer.from(a.getStealthAddress()),Buffer.from(hexlify(BigInt(a.timeStamp)))];a.tokenId>0&&n.push(Buffer.from(hexlify(a.tokenId)));const c=Buffer.concat(n);return sodium.crypto_box_seal(c,arrayify(a.getEncryptionKey()))},decryptUtxoConstructorArgs=(a,d)=>{const{publicKey:n,privateKey:c}=UserKeys.getEncryptionKeyPair(d.getShieldedPrivateKey()),l=sodium.crypto_box_seal_open(a,arrayify(n),arrayify(c)),h=Buffer.from(l).toString("utf-8").split("0x").filter(A=>A.length!==0).map((A,T)=>{let O;return[0,2,4,5].includes(T)?O=BigInt(`0x${A}`):[1,3].includes(T)&&(O=`0x${A}`),O});return{amount:h[0],erc20TokenAddress:h[1],randomization:h[2],stealthAddress:h[3],shieldedPrivateKey:d.getShieldedPrivateKey(),timeStamp:h[4].toString(),tokenId:h[5]?Number(h[5]):0}},decryptUtxo=(a,d)=>new Utxo(decryptUtxoConstructorArgs(a,d)),E_CANCELED=new Error("request for lock canceled");var __awaiter$2$1=function(a,d,n,c){function l(h){return h instanceof n?h:new n(function(A){A(h)})}return new(n||(n=Promise))(function(h,A){function T(H){try{Q(c.next(H))}catch(ne){A(ne)}}function O(H){try{Q(c.throw(H))}catch(ne){A(ne)}}function Q(H){H.done?h(H.value):l(H.value).then(T,O)}Q((c=c.apply(a,d||[])).next())})};class Semaphore{constructor(d,n=E_CANCELED){this._value=d,this._cancelError=n,this._weightedQueues=[],this._weightedWaiters=[]}acquire(d=1){if(d<=0)throw new Error(`invalid weight ${d}: must be positive`);return new Promise((n,c)=>{this._weightedQueues[d-1]||(this._weightedQueues[d-1]=[]),this._weightedQueues[d-1].push({resolve:n,reject:c}),this._dispatch()})}runExclusive(d,n=1){return __awaiter$2$1(this,void 0,void 0,function*(){const[c,l]=yield this.acquire(n);try{return yield d(c)}finally{l()}})}waitForUnlock(d=1){if(d<=0)throw new Error(`invalid weight ${d}: must be positive`);return new Promise(n=>{this._weightedWaiters[d-1]||(this._weightedWaiters[d-1]=[]),this._weightedWaiters[d-1].push(n),this._dispatch()})}isLocked(){return this._value<=0}getValue(){return this._value}setValue(d){this._value=d,this._dispatch()}release(d=1){if(d<=0)throw new Error(`invalid weight ${d}: must be positive`);this._value+=d,this._dispatch()}cancel(){this._weightedQueues.forEach(d=>d.forEach(n=>n.reject(this._cancelError))),this._weightedQueues=[]}_dispatch(){var d;for(let n=this._value;n>0;n--){const c=(d=this._weightedQueues[n-1])===null||d===void 0?void 0:d.shift();if(!c)continue;const l=this._value,h=n;this._value-=n,n=this._value+1,c.resolve([l,this._newReleaser(h)])}this._drainUnlockWaiters()}_newReleaser(d){let n=!1;return()=>{n||(n=!0,this.release(d))}}_drainUnlockWaiters(){for(let d=this._value;d>0;d--)this._weightedWaiters[d-1]&&(this._weightedWaiters[d-1].forEach(n=>n()),this._weightedWaiters[d-1]=[])}}var __awaiter$1$1=function(a,d,n,c){function l(h){return h instanceof n?h:new n(function(A){A(h)})}return new(n||(n=Promise))(function(h,A){function T(H){try{Q(c.next(H))}catch(ne){A(ne)}}function O(H){try{Q(c.throw(H))}catch(ne){A(ne)}}function Q(H){H.done?h(H.value):l(H.value).then(T,O)}Q((c=c.apply(a,d||[])).next())})};class Mutex{constructor(d){this._semaphore=new Semaphore(1,d)}acquire(){return __awaiter$1$1(this,void 0,void 0,function*(){const[,d]=yield this._semaphore.acquire();return d})}runExclusive(d){return this._semaphore.runExclusive(()=>d())}isLocked(){return this._semaphore.isLocked()}waitForUnlock(){return this._semaphore.waitForUnlock()}release(){this._semaphore.isLocked()&&this._semaphore.release()}cancel(){return this._semaphore.cancel()}}class CustomTokenRegistry{localStorageKey="tokenRegistry";tokenRegistry;constructor(){if(this.tokenRegistry=[],typeof localStorage<"u"){const d=localStorage.getItem(this.localStorageKey);d&&(this.tokenRegistry=JSON.parse(d))}}persistRegistry(){typeof localStorage<"u"&&localStorage.setItem(this.localStorageKey,JSON.stringify(this.tokenRegistry))}getCustomTokens(d){return this.tokenRegistry.filter(n=>n.chainId===d)}tokenExists(d,n){return d.find(c=>c.erc20TokenAddress===n.erc20TokenAddress||c.symbol===n.symbol||c.name===n.name)}addCustomToken(d){const{chainId:n}=d,c=this.getCustomTokens(n);this.tokenExists(c,d)||this.tokenRegistry.push(d),this.persistRegistry()}removeCustomToken(d){const{chainId:n}=d,l=this.getCustomTokens(n).filter(h=>h.erc20TokenAddress!==d.erc20TokenAddress);this.tokenRegistry=l,this.persistRegistry()}}const customTokenRegistry=new CustomTokenRegistry,createProvider=a=>new JsonRpcProvider(a),getExternalActionIdHash=a=>a===0n?0n:BigInt(id$1(a))%CIRCOM_P,getExternalActionIdFromNumber=a=>BigInt(a)===0n?ExternalActionId.Transact:Object.values(ExternalActionId).find(d=>BigInt(a)===getExternalActionIdHash(d)),decodeData={[ExternalActionId.Curve]:["uint8","address","uint256","uint256"],[ExternalActionId.CurveDynamic]:["uint8","address","uint256","uint256"],[ExternalActionId.CurveCRV]:["uint8","address","uint256","uint256"],[ExternalActionId.CurveCRVRewards]:["uint8","address","uint256","uint256"],[ExternalActionId.Convex]:["uint8","uint256","uint256","uint256"],[ExternalActionId.Beefy]:["uint8","bytes","bytes","address"],[ExternalActionId.BeefyStake]:["uint8","address","uint256","uint256"],[ExternalActionId.Volatile]:["uint256[]","address","uint256","bytes","uint8"],[ExternalActionId.LidoETH]:["uint8"],[ExternalActionId.LidoMATIC]:["uint8"],[ExternalActionId.LidoETHNFT]:["uint8"],[ExternalActionId.LidoMATICNFT]:["uint8"],[ExternalActionId.Pendle]:["uint8","address","uint256","uint256","address","bool","bytes"],[ExternalActionId.PendleLP]:["uint8","address","uint256","uint256","bytes"],[ExternalActionId.Connext]:["bool","bool","uint32","uint256","uint256","uint256","uint256[2]","uint256[2][2]","uint256[2]"]},usesPreHookMetadataForAction={[ExternalActionId.Pendle]:!0},useActionIndexInDecodedData={[ExternalActionId.Volatile]:4},getActionFromMetadata=(a,d)=>{if(usesPreHookMetadataForAction[a])return toNumberOrUndefined(d?.hookData?.preHookMetadata);if(!decodeData[a]||!d?.externalActionMetadata)return;let n=0;return useActionIndexInDecodedData[a]&&(n=useActionIndexInDecodedData[a]),defaultAbiCoder.decode(decodeData[a],d.externalActionMetadata)[n]},decodeMetadata=(a,d)=>{if(!d||!decodeData[a])throw Error("No externalActionMetadata");return defaultAbiCoder.decode(decodeData[a],d)},getExternalMetadataHash=a=>BigInt(keccak256$2(a))%CIRCOM_P,getERC20Token=(a,d)=>{const n=getERC20Registry(d),c=customTokenRegistry.getCustomTokens(d);return[...n,...c].find(l=>a===void 0?!1:l.erc20TokenAddress.toLowerCase()===a.toLowerCase())},getERC20TokenBySymbol=(a,d)=>{const n=getERC20Registry(d),c=customTokenRegistry.getCustomTokens(d);return[...n,...c].find(l=>a===void 0?!1:l.symbol.toLowerCase()===a.toLowerCase())},getHToken=(a,d)=>{const n=getERC20Registry(d);if(a.hasHToken)return n.find(c=>c.underlyingErc20TokenAddress?.toLowerCase()===a.erc20TokenAddress.toLowerCase()&&c.isHToken)},requireEnv=a=>{const d=process.env[a];return d===void 0&&(console.log(`Error: ${a} environment variable not set`),process.exitCode=1,process.exit()),d},resolveSync=a=>a.reduce((d,n)=>d.then(()=>n()),Promise.resolve()),getSequence=(a,d,n)=>{const c=[];if(n){let l=a;for(;l<=d;){const h=Math.min(l+n-1,d);c.push({from:l,to:h}),l=h+1}}else c.push({from:a,to:d});return c},conversionTable={[IntegrationProvider.UNISWAP]:ExternalActionId.Uniswap,[IntegrationProvider.ODOS]:ExternalActionId.Odos,[IntegrationProvider.ONEINCH]:ExternalActionId.OneInch,[IntegrationProvider.PENDLE]:ExternalActionId.Pendle,[IntegrationProvider.ALL]:void 0,[IntegrationProvider.NONE]:void 0},convertIntegrationProviderToExternalActionId=a=>conversionTable[a],getInteractionFromAction=(a,d)=>{if(a===ExternalActionId.Transact)return INTERACTION.WITHDRAW;if([ExternalActionId.Uniswap,ExternalActionId.Odos,ExternalActionId.OneInch].includes(a))return INTERACTION.SWAP;if((a===ExternalActionId.Curve||a===ExternalActionId.CurveDynamic)&&d===CurveAction.Deposit)return INTERACTION.CURVE_DEPOSIT;if((a===ExternalActionId.Curve||a===ExternalActionId.CurveDynamic)&&[CurveAction.WithdrawInt,CurveAction.WithdrawUint].includes(d))return INTERACTION.CURVE_WITHDRAW;if((a===ExternalActionId.Curve||a===ExternalActionId.CurveDynamic)&&d===CurveAction.WithdrawImbalance)return INTERACTION.CURVE_WITHDRAW_INBALANCED;if((a===ExternalActionId.CurveCRV||a===ExternalActionId.CurveCRVRewards)&&d===CurveAction.Stake||a===ExternalActionId.Convex&&d===ConvexAction.StakeLP)return INTERACTION.STAKING;if((a===ExternalActionId.CurveCRV||a===ExternalActionId.CurveCRVRewards)&&d===CurveAction.Unstake||a===ExternalActionId.Convex&&d===ConvexAction.UnStakeLP)return INTERACTION.UNSTAKING;if((a===ExternalActionId.CurveCRV||a===ExternalActionId.CurveCRVRewards)&&d===CurveAction.GetCRV||a===ExternalActionId.Convex&&d===ConvexAction.ClaimRewardsLP)return INTERACTION.CLAIMING;if(a===ExternalActionId.Beefy)return INTERACTION.BEEFY;if(a===ExternalActionId.BeefyStake&&d===BeefyAction.Stake)return INTERACTION.BEEFY_STAKE;if(a===ExternalActionId.BeefyStake&&d===BeefyAction.Unstake)return INTERACTION.BEEFY_UNSTAKE;if(a===ExternalActionId.BeefyStake&&d===BeefyAction.GetRewards)return INTERACTION.BEEFY_GET_REWARDS;if((a===ExternalActionId.LidoETH||a===ExternalActionId.LidoMATIC)&&d===LidoAction.Stake)return INTERACTION.LIDO_STAKE;if((a===ExternalActionId.LidoETHNFT||a===ExternalActionId.LidoMATICNFT)&&d===LidoAction.Request)return INTERACTION.LIDO_REQUEST;if((a===ExternalActionId.LidoETHNFT||a===ExternalActionId.LidoMATICNFT)&&d===LidoAction.Claim)return INTERACTION.LIDO_CLAIM;if(a===ExternalActionId.Pendle)return d===PendleAction.SwapFromYt?INTERACTION.PENDLE_YT_IN_SWAP:d===PendleAction.SwapToYt?INTERACTION.PENDLE_YT_OUT_SWAP:d===PendleAction.SwapPt?INTERACTION.PENDLE_PT_SWAP:d===PendleAction.Checkpoint?INTERACTION.PENDLE_CLAIM:INTERACTION.PENDLE_TRANSACT;if(a===ExternalActionId.Volatile){if(d===VolatileAction.Withdraw)return INTERACTION.VOLATILE_WITHDRAW;if(d===VolatileAction.Swap)return INTERACTION.VOLATILE_SWAP}else if(a===ExternalActionId.PendleLP){if(d===PendleLPAction.AddOrRemoveLiquidity)return INTERACTION.PENDLE_LP;if(d===PendleLPAction.Checkpoint)return INTERACTION.PENDLE_LP_CLAIM}return INTERACTION.NONE},outputUtxoProcessing=(a,d,n,c,l)=>{console.log({amountChange:n}),console.log({inputUtxos:d});let h=0n;if(d.forEach(T=>{h+=T.amount}),n<0n&&h+n<0n)throw Error(transactionErrorCodes.INSUFFICIENT_FUNDS_TO_TRANSACT);return{outputUtxos:[new Utxo({amount:h+n,erc20TokenAddress:d[0].erc20TokenAddress,shieldedPrivateKey:a.getShieldedPrivateKey(),timeStamp:c,tokenId:l})]}},processGasEstimates=async(a,d,n,c,l,h)=>{let A,T,O;try{({status:A,priceOfTransactionInUSD:T,priceOfTransactionInToken:O}=await getGasEstimates(a,d.erc20TokenAddress,n,c,l,h))}catch(H){logError("processGasEstimates error:",H)}const Q=O?getAmountInWei(d,getValueFirstNDigit(O,d.decimals)):void 0;return logError("processGasEstimates: ",{status:A,priceOfTransactionInUSD:T,priceOfTransactionInTokenEstimate:O,priceOfTransactionInToken:Q}),{priceOfTransactionInUSD:T,priceOfTransactionInToken:Q}},getNewAmountWithFeeGuard=(a,d,n)=>{const l=absBigInt(a)-d;if(d<0n)throw new FeeOverTransactionValueError({totalFeeWEI:l,feeUnit:n});return d},processAmountChanges=({erc20Addresses:a=[],amountChanges:d,flatFees:n,feeUnit:c,externalActionId:l,action:h,gasTokenAddress:A})=>{const T=getInteractionFromAction(l,h);if(T===INTERACTION.NONE)throw Error("No interaction was choosen");switch(T){case INTERACTION.WITHDRAW:{getNewAmountWithFeeGuard(d[0],getAmountAfterRelayAndFlatFees(d[0],n[0],!0),c);break}case INTERACTION.SWAP:{d[1]=getNewAmountWithFeeGuard(d[1],getAmountAfterRelayAndFlatFeesAndSlippage(d[1],n[1],SlippageType.Swap),c);break}case INTERACTION.CURVE_DEPOSIT:{const O=d.length-1;d[O]=getNewAmountWithFeeGuard(d[O],getAmountAfterRelayAndFlatFeesAndSlippage(d[O],n[O],SlippageType.CurveDeposit),c);break}case INTERACTION.CURVE_WITHDRAW:n.forEach((O,Q)=>{O>0n?d[Q]=getNewAmountWithFeeGuard(d[Q],getAmountAfterRelayAndFlatFeesAndSlippage(d[Q],O,SlippageType.CurveWithdraw),c):O===0n&&d[Q]>0n&&Q!==n.length-1&&(d[Q]=getAmountAfterSlippage(d[Q],SlippageType.CurveWithdraw))});break;case INTERACTION.CURVE_WITHDRAW_INBALANCED:break;case INTERACTION.STAKING:d[0]=getNewAmountWithFeeGuard(d[0],getAmountAfterRelayAndFlatFees(d[1],n[1]),c);break;case INTERACTION.UNSTAKING:d[1]=getNewAmountWithFeeGuard(d[1],getAmountAfterRelayAndFlatFees(d[0],n[0]),c);break;case INTERACTION.CLAIMING:d[1]=getNewAmountWithFeeGuard(d[1],getAmountAfterRelayAndFlatFees(d[1],n[1]),c);break;case INTERACTION.BEEFY:{const O=isBeefyDeposit(h)?1:0;d[O]=getNewAmountWithFeeGuard(d[O],getAmountAfterRelayAndFlatFeesAndSlippage(d[O],n[O],SlippageType.Beefy),c);break}case INTERACTION.BEEFY_STAKE:d[0]=getNewAmountWithFeeGuard(d[0],getAmountAfterRelayAndFlatFees(d[1],n[1]),c);break;case INTERACTION.BEEFY_UNSTAKE:d[1]=getNewAmountWithFeeGuard(d[1],getAmountAfterRelayAndFlatFees(d[0],n[0]),c);break;case INTERACTION.BEEFY_GET_REWARDS:d[1]=getNewAmountWithFeeGuard(d[1],getAmountAfterRelayAndFlatFees(d[1],n[1]),c);break;case INTERACTION.LIDO_STAKE:d[0]=getNewAmountWithFeeGuard(d[0],getAmountAfterRelayAndFlatFees(d[0],n[0]),c);break;case INTERACTION.LIDO_REQUEST:getNewAmountWithFeeGuard(d[1],getAmountAfterRelayAndFlatFees(d[1],n[1]),c);break;case INTERACTION.LIDO_CLAIM:d[1]=getNewAmountWithFeeGuard(d[1],getAmountAfterRelayAndFlatFees(d[1],n[1]),c);break;case INTERACTION.PENDLE_TRANSACT:d[0]<0n&&getNewAmountWithFeeGuard(d[0],getAmountAfterRelayAndFlatFees(d[0],n[0],!0),c);break;case INTERACTION.PENDLE_YT_IN_SWAP:d[1]=getNewAmountWithFeeGuard(d[1],getAmountAfterRelayAndFlatFees(d[1],n[1]),c);break;case INTERACTION.PENDLE_YT_OUT_SWAP:break;case INTERACTION.PENDLE_PT_SWAP:d[1]=getNewAmountWithFeeGuard(d[1],getAmountAfterRelayAndFlatFees(d[1],n[1]),c);break;case INTERACTION.PENDLE_MINT:d[1]=getNewAmountWithFeeGuard(d[1],getAmountAfterRelayAndFlatFees(d[1],n[1]),c);break;case INTERACTION.PENDLE_REDEEM:d[2]=getNewAmountWithFeeGuard(d[2],getAmountAfterRelayAndFlatFees(d[2],n[2]),c);break;case INTERACTION.PENDLE_CLAIM:d[1]=getNewAmountWithFeeGuard(d[1],getAmountAfterRelayAndFlatFees(d[1],n[1]),c);break;case INTERACTION.PENDLE_LP:{const O=d.findIndex(Q=>Q>0n);d[O]=getNewAmountWithFeeGuard(d[O],getAmountAfterRelayAndFlatFeesAndSlippage(d[O],n[O],SlippageType.Pendle));break}case INTERACTION.PENDLE_LP_CLAIM:d[1]=getNewAmountWithFeeGuard(d[1],getAmountAfterRelayAndFlatFees(d[1],n[1]),c);break}return d},getFlatFees=async(a,d,n,c,l,h)=>{let A;const T=getInteractionFromAction(n,l);if(T===INTERACTION.NONE)throw Error("No interaction was choosen");let O,Q,H;switch(T){case INTERACTION.WITHDRAW:A=getERC20Token(d[0],a);break;case INTERACTION.SWAP:A=getERC20Token(d[1],a);break;case INTERACTION.CURVE_DEPOSIT:A=getERC20Token(d[d.length-1],a);break;case INTERACTION.CURVE_WITHDRAW:{if(H=d.findIndex(P=>P.toLowerCase()===h?.toLowerCase()),console.log({curveWithdrawGasTokenAddress:h,withdrawTokenIndex:H}),H===-1)throw Error("Curve Withdraw Token Index not found");A=getERC20Token(d[H],a);break}case INTERACTION.STAKING:case INTERACTION.UNSTAKING:A=getERC20Token(d[1],a);break;case INTERACTION.CLAIMING:A=getERC20Token(d[1],a);break;case INTERACTION.BEEFY:O=isBeefyDeposit(l)?1:0,A=getERC20Token(d[O],a);break;case INTERACTION.BEEFY_STAKE:case INTERACTION.BEEFY_UNSTAKE:A=getERC20Token(d[1],a);break;case INTERACTION.BEEFY_GET_REWARDS:A=getERC20Token(d[1],a);break;case INTERACTION.LIDO_STAKE:A=getERC20Token(d[0],a);break;case INTERACTION.LIDO_REQUEST:A=getERC20Token(d[1],a);break;case INTERACTION.LIDO_CLAIM:A=getERC20Token(d[1],a);break;case INTERACTION.PENDLE_TRANSACT:A=getERC20Token(d[0],a);break;case INTERACTION.PENDLE_YT_IN_SWAP:A=getERC20Token(d[1],a);break;case INTERACTION.PENDLE_YT_OUT_SWAP:A=getERC20Token(d[0],a);break;case INTERACTION.PENDLE_PT_SWAP:A=getERC20Token(d[1],a);break;case INTERACTION.PENDLE_MINT:A=getERC20Token(d[1],a);break;case INTERACTION.PENDLE_REDEEM:A=getERC20Token(d[2],a);break;case INTERACTION.PENDLE_CLAIM:A=getERC20Token(d[1],a);break;case INTERACTION.VOLATILE_WITHDRAW:A=getERC20Token(d[0],a);break;case INTERACTION.VOLATILE_SWAP:A=getERC20Token(d[1],a);break;case INTERACTION.PENDLE_LP:Q=c.findIndex(P=>P>0),A=getERC20Token(d[Q],a);break;case INTERACTION.PENDLE_LP_CLAIM:A=getERC20Token(d[1],a);break}let ne,B;const oe=c.length;A&&({priceOfTransactionInToken:ne,priceOfTransactionInUSD:B}=await processGasEstimates(a,A,n,l,oe));const ie=new Array(oe).fill(0n);switch(T){case INTERACTION.WITHDRAW:ie[0]=ne||0n;break;case INTERACTION.SWAP:ie[1]=ne||0n;break;case INTERACTION.CURVE_DEPOSIT:ie[ie.length-1]=ne||0n;break;case INTERACTION.CURVE_WITHDRAW:H!==void 0&&(ie[H]=ne||0n);break;case INTERACTION.STAKING:case INTERACTION.UNSTAKING:ie[1]=ne||0n,ie[0]=ne||0n;break;case INTERACTION.CLAIMING:ie[1]=ne||0n;break;case INTERACTION.BEEFY:O&&(ie[O]=ne||0n);break;case INTERACTION.BEEFY_STAKE:ie[1]=ne||0n,ie[0]=ne||0n;break;case INTERACTION.BEEFY_GET_REWARDS:ie[1]=ne||0n;break;case INTERACTION.LIDO_STAKE:ie[0]=ne||0n;break;case INTERACTION.LIDO_REQUEST:ie[1]=ne||0n;break;case INTERACTION.LIDO_CLAIM:ie[1]=ne||0n;break;case INTERACTION.PENDLE_TRANSACT:ie[0]=ne||0n;break;case INTERACTION.PENDLE_YT_IN_SWAP:ie[1]=ne||0n;break;case INTERACTION.PENDLE_YT_OUT_SWAP:ie[0]=ne||0n;break;case INTERACTION.PENDLE_PT_SWAP:ie[1]=ne||0n;break;case INTERACTION.PENDLE_MINT:ie[1]=ne||0n;break;case INTERACTION.PENDLE_REDEEM:ie[2]=ne||0n;break;case INTERACTION.PENDLE_CLAIM:ie[1]=ne||0n;break;case INTERACTION.VOLATILE_WITHDRAW:ie[0]=ne||0n;break;case INTERACTION.VOLATILE_SWAP:ie[1]=ne||0n;break;case INTERACTION.PENDLE_LP:Q!==void 0&&(ie[Q]=ne||0n);break;case INTERACTION.PENDLE_LP_CLAIM:ie[1]=ne||0n;break}return{flatFees:ie,priceOfTransactionInToken:ne,feeUnit:A,priceOfTransactionInUSD:B}},getNetworkObject=a=>networkRegistry[a],getNetworkType=a=>Object.keys(chainIdsByType)[Object.values(chainIdsByType).findIndex(d=>d.includes(a.chainId))],getAxelarMigrationInfo=a=>{const d=AxelarRegistry.find(l=>l.chainId===a.chainId);if(!d)return;const{sourceChain:n,sourceAddress:c}=d;return{destinationChain:n,destinationAddress:c,messageFee:a.gasFeeInWei??0n}};var uaParser={exports:{}};(function(a,d){(function(n,c){var l="1.0.37",h="",A="?",T="function",O="undefined",Q="object",H="string",ne="major",B="model",oe="name",ie="type",P="vendor",W="version",U="architecture",S="console",M="mobile",ae="tablet",Ae="smarttv",Re="wearable",V="embedded",ve=500,F="Amazon",Ee="Apple",ge="ASUS",se="BlackBerry",X="Browser",J="Chrome",ye="Edge",fe="Firefox",G="Google",pe="Huawei",Qe="LG",Se="Microsoft",$="Motorola",de="Opera",le="Samsung",_e="Sharp",ee="Sony",be="Xiaomi",We="Zebra",Ne="Facebook",ra="Chromium OS",Aa="Mac OS",ea=function(y0,$0){var Ja={};for(var _a in y0)$0[_a]&&$0[_a].length%2===0?Ja[_a]=$0[_a].concat(y0[_a]):Ja[_a]=y0[_a];return Ja},Ta=function(y0){for(var $0={},Ja=0;Ja<y0.length;Ja++)$0[y0[Ja].toUpperCase()]=y0[Ja];return $0},Je=function(y0,$0){return typeof y0===H?Ue($0).indexOf(Ue(y0))!==-1:!1},Ue=function(y0){return y0.toLowerCase()},Ha=function(y0){return typeof y0===H?y0.replace(/[^\d\.]/g,h).split(".")[0]:c},he=function(y0,$0){if(typeof y0===H)return y0=y0.replace(/^\s\s*/,h),typeof $0===O?y0:y0.substring(0,ve)},Fe=function(y0,$0){for(var Ja=0,_a,Ra,b0,F0,G0,E0;Ja<$0.length&&!G0;){var sa=$0[Ja],ma=$0[Ja+1];for(_a=Ra=0;_a<sa.length&&!G0&&sa[_a];)if(G0=sa[_a++].exec(y0),G0)for(b0=0;b0<ma.length;b0++)E0=G0[++Ra],F0=ma[b0],typeof F0===Q&&F0.length>0?F0.length===2?typeof F0[1]==T?this[F0[0]]=F0[1].call(this,E0):this[F0[0]]=F0[1]:F0.length===3?typeof F0[1]===T&&!(F0[1].exec&&F0[1].test)?this[F0[0]]=E0?F0[1].call(this,E0,F0[2]):c:this[F0[0]]=E0?E0.replace(F0[1],F0[2]):c:F0.length===4&&(this[F0[0]]=E0?F0[3].call(this,E0.replace(F0[1],F0[2])):c):this[F0]=E0||c;Ja+=2}},ze=function(y0,$0){for(var Ja in $0)if(typeof $0[Ja]===Q&&$0[Ja].length>0){for(var _a=0;_a<$0[Ja].length;_a++)if(Je($0[Ja][_a],y0))return Ja===A?c:Ja}else if(Je($0[Ja],y0))return Ja===A?c:Ja;return y0},ya={"1.0":"/8","1.2":"/1","1.3":"/3","2.0":"/412","2.0.2":"/416","2.0.3":"/417","2.0.4":"/419","?":"/"},ce={ME:"4.90","NT 3.11":"NT3.51","NT 4.0":"NT4.0",2e3:"NT 5.0",XP:["NT 5.1","NT 5.2"],Vista:"NT 6.0",7:"NT 6.1",8:"NT 6.2","8.1":"NT 6.3",10:["NT 6.4","NT 10.0"],RT:"ARM"},La={browser:[[/\b(?:crmo|crios)\/([\w\.]+)/i],[W,[oe,"Chrome"]],[/edg(?:e|ios|a)?\/([\w\.]+)/i],[W,[oe,"Edge"]],[/(opera mini)\/([-\w\.]+)/i,/(opera [mobiletab]{3,6})\b.+version\/([-\w\.]+)/i,/(opera)(?:.+version\/|[\/ ]+)([\w\.]+)/i],[oe,W],[/opios[\/ ]+([\w\.]+)/i],[W,[oe,de+" Mini"]],[/\bopr\/([\w\.]+)/i],[W,[oe,de]],[/\bb[ai]*d(?:uhd|[ub]*[aekoprswx]{5,6})[\/ ]?([\w\.]+)/i],[W,[oe,"Baidu"]],[/(kindle)\/([\w\.]+)/i,/(lunascape|maxthon|netfront|jasmine|blazer)[\/ ]?([\w\.]*)/i,/(avant|iemobile|slim)\s?(?:browser)?[\/ ]?([\w\.]*)/i,/(?:ms|\()(ie) ([\w\.]+)/i,/(flock|rockmelt|midori|epiphany|silk|skyfire|bolt|iron|vivaldi|iridium|phantomjs|bowser|quark|qupzilla|falkon|rekonq|puffin|brave|whale(?!.+naver)|qqbrowserlite|qq|duckduckgo)\/([-\w\.]+)/i,/(heytap|ovi)browser\/([\d\.]+)/i,/(weibo)__([\d\.]+)/i],[oe,W],[/(?:\buc? ?browser|(?:juc.+)ucweb)[\/ ]?([\w\.]+)/i],[W,[oe,"UC"+X]],[/microm.+\bqbcore\/([\w\.]+)/i,/\bqbcore\/([\w\.]+).+microm/i,/micromessenger\/([\w\.]+)/i],[W,[oe,"WeChat"]],[/konqueror\/([\w\.]+)/i],[W,[oe,"Konqueror"]],[/trident.+rv[: ]([\w\.]{1,9})\b.+like gecko/i],[W,[oe,"IE"]],[/ya(?:search)?browser\/([\w\.]+)/i],[W,[oe,"Yandex"]],[/slbrowser\/([\w\.]+)/i],[W,[oe,"Smart Lenovo "+X]],[/(avast|avg)\/([\w\.]+)/i],[[oe,/(.+)/,"$1 Secure "+X],W],[/\bfocus\/([\w\.]+)/i],[W,[oe,fe+" Focus"]],[/\bopt\/([\w\.]+)/i],[W,[oe,de+" Touch"]],[/coc_coc\w+\/([\w\.]+)/i],[W,[oe,"Coc Coc"]],[/dolfin\/([\w\.]+)/i],[W,[oe,"Dolphin"]],[/coast\/([\w\.]+)/i],[W,[oe,de+" Coast"]],[/miuibrowser\/([\w\.]+)/i],[W,[oe,"MIUI "+X]],[/fxios\/([-\w\.]+)/i],[W,[oe,fe]],[/\bqihu|(qi?ho?o?|360)browser/i],[[oe,"360 "+X]],[/(oculus|sailfish|huawei|vivo)browser\/([\w\.]+)/i],[[oe,/(.+)/,"$1 "+X],W],[/samsungbrowser\/([\w\.]+)/i],[W,[oe,le+" Internet"]],[/(comodo_dragon)\/([\w\.]+)/i],[[oe,/_/g," "],W],[/metasr[\/ ]?([\d\.]+)/i],[W,[oe,"Sogou Explorer"]],[/(sogou)mo\w+\/([\d\.]+)/i],[[oe,"Sogou Mobile"],W],[/(electron)\/([\w\.]+) safari/i,/(tesla)(?: qtcarbrowser|\/(20\d\d\.[-\w\.]+))/i,/m?(qqbrowser|2345Explorer)[\/ ]?([\w\.]+)/i],[oe,W],[/(lbbrowser)/i,/\[(linkedin)app\]/i],[oe],[/((?:fban\/fbios|fb_iab\/fb4a)(?!.+fbav)|;fbav\/([\w\.]+);)/i],[[oe,Ne],W],[/(Klarna)\/([\w\.]+)/i,/(kakao(?:talk|story))[\/ ]([\w\.]+)/i,/(naver)\(.*?(\d+\.[\w\.]+).*\)/i,/safari (line)\/([\w\.]+)/i,/\b(line)\/([\w\.]+)\/iab/i,/(alipay)client\/([\w\.]+)/i,/(chromium|instagram|snapchat)[\/ ]([-\w\.]+)/i],[oe,W],[/\bgsa\/([\w\.]+) .*safari\//i],[W,[oe,"GSA"]],[/musical_ly(?:.+app_?version\/|_)([\w\.]+)/i],[W,[oe,"TikTok"]],[/headlesschrome(?:\/([\w\.]+)| )/i],[W,[oe,J+" Headless"]],[/ wv\).+(chrome)\/([\w\.]+)/i],[[oe,J+" WebView"],W],[/droid.+ version\/([\w\.]+)\b.+(?:mobile safari|safari)/i],[W,[oe,"Android "+X]],[/(chrome|omniweb|arora|[tizenoka]{5} ?browser)\/v?([\w\.]+)/i],[oe,W],[/version\/([\w\.\,]+) .*mobile\/\w+ (safari)/i],[W,[oe,"Mobile Safari"]],[/version\/([\w(\.|\,)]+) .*(mobile ?safari|safari)/i],[W,oe],[/webkit.+?(mobile ?safari|safari)(\/[\w\.]+)/i],[oe,[W,ze,ya]],[/(webkit|khtml)\/([\w\.]+)/i],[oe,W],[/(navigator|netscape\d?)\/([-\w\.]+)/i],[[oe,"Netscape"],W],[/mobile vr; rv:([\w\.]+)\).+firefox/i],[W,[oe,fe+" Reality"]],[/ekiohf.+(flow)\/([\w\.]+)/i,/(swiftfox)/i,/(icedragon|iceweasel|camino|chimera|fennec|maemo browser|minimo|conkeror|klar)[\/ ]?([\w\.\+]+)/i,/(seamonkey|k-meleon|icecat|iceape|firebird|phoenix|palemoon|basilisk|waterfox)\/([-\w\.]+)$/i,/(firefox)\/([\w\.]+)/i,/(mozilla)\/([\w\.]+) .+rv\:.+gecko\/\d+/i,/(polaris|lynx|dillo|icab|doris|amaya|w3m|netsurf|sleipnir|obigo|mosaic|(?:go|ice|up)[\. ]?browser)[-\/ ]?v?([\w\.]+)/i,/(links) \(([\w\.]+)/i,/panasonic;(viera)/i],[oe,W],[/(cobalt)\/([\w\.]+)/i],[oe,[W,/master.|lts./,""]]],cpu:[[/(?:(amd|x(?:(?:86|64)[-_])?|wow|win)64)[;\)]/i],[[U,"amd64"]],[/(ia32(?=;))/i],[[U,Ue]],[/((?:i[346]|x)86)[;\)]/i],[[U,"ia32"]],[/\b(aarch64|arm(v?8e?l?|_?64))\b/i],[[U,"arm64"]],[/\b(arm(?:v[67])?ht?n?[fl]p?)\b/i],[[U,"armhf"]],[/windows (ce|mobile); ppc;/i],[[U,"arm"]],[/((?:ppc|powerpc)(?:64)?)(?: mac|;|\))/i],[[U,/ower/,h,Ue]],[/(sun4\w)[;\)]/i],[[U,"sparc"]],[/((?:avr32|ia64(?=;))|68k(?=\))|\barm(?=v(?:[1-7]|[5-7]1)l?|;|eabi)|(?=atmel )avr|(?:irix|mips|sparc)(?:64)?\b|pa-risc)/i],[[U,Ue]]],device:[[/\b(sch-i[89]0\d|shw-m380s|sm-[ptx]\w{2,4}|gt-[pn]\d{2,4}|sgh-t8[56]9|nexus 10)/i],[B,[P,le],[ie,ae]],[/\b((?:s[cgp]h|gt|sm)-\w+|sc[g-]?[\d]+a?|galaxy nexus)/i,/samsung[- ]([-\w]+)/i,/sec-(sgh\w+)/i],[B,[P,le],[ie,M]],[/(?:\/|\()(ip(?:hone|od)[\w, ]*)(?:\/|;)/i],[B,[P,Ee],[ie,M]],[/\((ipad);[-\w\),; ]+apple/i,/applecoremedia\/[\w\.]+ \((ipad)/i,/\b(ipad)\d\d?,\d\d?[;\]].+ios/i],[B,[P,Ee],[ie,ae]],[/(macintosh);/i],[B,[P,Ee]],[/\b(sh-?[altvz]?\d\d[a-ekm]?)/i],[B,[P,_e],[ie,M]],[/\b((?:ag[rs][23]?|bah2?|sht?|btv)-a?[lw]\d{2})\b(?!.+d\/s)/i],[B,[P,pe],[ie,ae]],[/(?:huawei|honor)([-\w ]+)[;\)]/i,/\b(nexus 6p|\w{2,4}e?-[atu]?[ln][\dx][012359c][adn]?)\b(?!.+d\/s)/i],[B,[P,pe],[ie,M]],[/\b(poco[\w ]+|m2\d{3}j\d\d[a-z]{2})(?: bui|\))/i,/\b; (\w+) build\/hm\1/i,/\b(hm[-_ ]?note?[_ ]?(?:\d\w)?) bui/i,/\b(redmi[\-_ ]?(?:note|k)?[\w_ ]+)(?: bui|\))/i,/oid[^\)]+; (m?[12][0-389][01]\w{3,6}[c-y])( bui|; wv|\))/i,/\b(mi[-_ ]?(?:a\d|one|one[_ ]plus|note lte|max|cc)?[_ ]?(?:\d?\w?)[_ ]?(?:plus|se|lite)?)(?: bui|\))/i],[[B,/_/g," "],[P,be],[ie,M]],[/oid[^\)]+; (2\d{4}(283|rpbf)[cgl])( bui|\))/i,/\b(mi[-_ ]?(?:pad)(?:[\w_ ]+))(?: bui|\))/i],[[B,/_/g," "],[P,be],[ie,ae]],[/; (\w+) bui.+ oppo/i,/\b(cph[12]\d{3}|p(?:af|c[al]|d\w|e[ar])[mt]\d0|x9007|a101op)\b/i],[B,[P,"OPPO"],[ie,M]],[/vivo (\w+)(?: bui|\))/i,/\b(v[12]\d{3}\w?[at])(?: bui|;)/i],[B,[P,"Vivo"],[ie,M]],[/\b(rmx[1-3]\d{3})(?: bui|;|\))/i],[B,[P,"Realme"],[ie,M]],[/\b(milestone|droid(?:[2-4x]| (?:bionic|x2|pro|razr))?:?( 4g)?)\b[\w ]+build\//i,/\bmot(?:orola)?[- ](\w*)/i,/((?:moto[\w\(\) ]+|xt\d{3,4}|nexus 6)(?= bui|\)))/i],[B,[P,$],[ie,M]],[/\b(mz60\d|xoom[2 ]{0,2}) build\//i],[B,[P,$],[ie,ae]],[/((?=lg)?[vl]k\-?\d{3}) bui| 3\.[-\w; ]{10}lg?-([06cv9]{3,4})/i],[B,[P,Qe],[ie,ae]],[/(lm(?:-?f100[nv]?|-[\w\.]+)(?= bui|\))|nexus [45])/i,/\blg[-e;\/ ]+((?!browser|netcast|android tv)\w+)/i,/\blg-?([\d\w]+) bui/i],[B,[P,Qe],[ie,M]],[/(ideatab[-\w ]+)/i,/lenovo ?(s[56]000[-\w]+|tab(?:[\w ]+)|yt[-\d\w]{6}|tb[-\d\w]{6})/i],[B,[P,"Lenovo"],[ie,ae]],[/(?:maemo|nokia).*(n900|lumia \d+)/i,/nokia[-_ ]?([-\w\.]*)/i],[[B,/_/g," "],[P,"Nokia"],[ie,M]],[/(pixel c)\b/i],[B,[P,G],[ie,ae]],[/droid.+; (pixel[\daxl ]{0,6})(?: bui|\))/i],[B,[P,G],[ie,M]],[/droid.+ (a?\d[0-2]{2}so|[c-g]\d{4}|so[-gl]\w+|xq-a\w[4-7][12])(?= bui|\).+chrome\/(?![1-6]{0,1}\d\.))/i],[B,[P,ee],[ie,M]],[/sony tablet [ps]/i,/\b(?:sony)?sgp\w+(?: bui|\))/i],[[B,"Xperia Tablet"],[P,ee],[ie,ae]],[/ (kb2005|in20[12]5|be20[12][59])\b/i,/(?:one)?(?:plus)? (a\d0\d\d)(?: b|\))/i],[B,[P,"OnePlus"],[ie,M]],[/(alexa)webm/i,/(kf[a-z]{2}wi|aeo[c-r]{2})( bui|\))/i,/(kf[a-z]+)( bui|\)).+silk\//i],[B,[P,F],[ie,ae]],[/((?:sd|kf)[0349hijorstuw]+)( bui|\)).+silk\//i],[[B,/(.+)/g,"Fire Phone $1"],[P,F],[ie,M]],[/(playbook);[-\w\),; ]+(rim)/i],[B,P,[ie,ae]],[/\b((?:bb[a-f]|st[hv])100-\d)/i,/\(bb10; (\w+)/i],[B,[P,se],[ie,M]],[/(?:\b|asus_)(transfo[prime ]{4,10} \w+|eeepc|slider \w+|nexus 7|padfone|p00[cj])/i],[B,[P,ge],[ie,ae]],[/ (z[bes]6[027][012][km][ls]|zenfone \d\w?)\b/i],[B,[P,ge],[ie,M]],[/(nexus 9)/i],[B,[P,"HTC"],[ie,ae]],[/(htc)[-;_ ]{1,2}([\w ]+(?=\)| bui)|\w+)/i,/(zte)[- ]([\w ]+?)(?: bui|\/|\))/i,/(alcatel|geeksphone|nexian|panasonic(?!(?:;|\.))|sony(?!-bra))[-_ ]?([-\w]*)/i],[P,[B,/_/g," "],[ie,M]],[/droid.+; ([ab][1-7]-?[0178a]\d\d?)/i],[B,[P,"Acer"],[ie,ae]],[/droid.+; (m[1-5] note) bui/i,/\bmz-([-\w]{2,})/i],[B,[P,"Meizu"],[ie,M]],[/; ((?:power )?armor(?:[\w ]{0,8}))(?: bui|\))/i],[B,[P,"Ulefone"],[ie,M]],[/(blackberry|benq|palm(?=\-)|sonyericsson|acer|asus|dell|meizu|motorola|polytron|infinix|tecno)[-_ ]?([-\w]*)/i,/(hp) ([\w ]+\w)/i,/(asus)-?(\w+)/i,/(microsoft); (lumia[\w ]+)/i,/(lenovo)[-_ ]?([-\w]+)/i,/(jolla)/i,/(oppo) ?([\w ]+) bui/i],[P,B,[ie,M]],[/(kobo)\s(ereader|touch)/i,/(archos) (gamepad2?)/i,/(hp).+(touchpad(?!.+tablet)|tablet)/i,/(kindle)\/([\w\.]+)/i,/(nook)[\w ]+build\/(\w+)/i,/(dell) (strea[kpr\d ]*[\dko])/i,/(le[- ]+pan)[- ]+(\w{1,9}) bui/i,/(trinity)[- ]*(t\d{3}) bui/i,/(gigaset)[- ]+(q\w{1,9}) bui/i,/(vodafone) ([\w ]+)(?:\)| bui)/i],[P,B,[ie,ae]],[/(surface duo)/i],[B,[P,Se],[ie,ae]],[/droid [\d\.]+; (fp\du?)(?: b|\))/i],[B,[P,"Fairphone"],[ie,M]],[/(u304aa)/i],[B,[P,"AT&T"],[ie,M]],[/\bsie-(\w*)/i],[B,[P,"Siemens"],[ie,M]],[/\b(rct\w+) b/i],[B,[P,"RCA"],[ie,ae]],[/\b(venue[\d ]{2,7}) b/i],[B,[P,"Dell"],[ie,ae]],[/\b(q(?:mv|ta)\w+) b/i],[B,[P,"Verizon"],[ie,ae]],[/\b(?:barnes[& ]+noble |bn[rt])([\w\+ ]*) b/i],[B,[P,"Barnes & Noble"],[ie,ae]],[/\b(tm\d{3}\w+) b/i],[B,[P,"NuVision"],[ie,ae]],[/\b(k88) b/i],[B,[P,"ZTE"],[ie,ae]],[/\b(nx\d{3}j) b/i],[B,[P,"ZTE"],[ie,M]],[/\b(gen\d{3}) b.+49h/i],[B,[P,"Swiss"],[ie,M]],[/\b(zur\d{3}) b/i],[B,[P,"Swiss"],[ie,ae]],[/\b((zeki)?tb.*\b) b/i],[B,[P,"Zeki"],[ie,ae]],[/\b([yr]\d{2}) b/i,/\b(dragon[- ]+touch |dt)(\w{5}) b/i],[[P,"Dragon Touch"],B,[ie,ae]],[/\b(ns-?\w{0,9}) b/i],[B,[P,"Insignia"],[ie,ae]],[/\b((nxa|next)-?\w{0,9}) b/i],[B,[P,"NextBook"],[ie,ae]],[/\b(xtreme\_)?(v(1[045]|2[015]|[3469]0|7[05])) b/i],[[P,"Voice"],B,[ie,M]],[/\b(lvtel\-)?(v1[12]) b/i],[[P,"LvTel"],B,[ie,M]],[/\b(ph-1) /i],[B,[P,"Essential"],[ie,M]],[/\b(v(100md|700na|7011|917g).*\b) b/i],[B,[P,"Envizen"],[ie,ae]],[/\b(trio[-\w\. ]+) b/i],[B,[P,"MachSpeed"],[ie,ae]],[/\btu_(1491) b/i],[B,[P,"Rotor"],[ie,ae]],[/(shield[\w ]+) b/i],[B,[P,"Nvidia"],[ie,ae]],[/(sprint) (\w+)/i],[P,B,[ie,M]],[/(kin\.[onetw]{3})/i],[[B,/\./g," "],[P,Se],[ie,M]],[/droid.+; (cc6666?|et5[16]|mc[239][23]x?|vc8[03]x?)\)/i],[B,[P,We],[ie,ae]],[/droid.+; (ec30|ps20|tc[2-8]\d[kx])\)/i],[B,[P,We],[ie,M]],[/smart-tv.+(samsung)/i],[P,[ie,Ae]],[/hbbtv.+maple;(\d+)/i],[[B,/^/,"SmartTV"],[P,le],[ie,Ae]],[/(nux; netcast.+smarttv|lg (netcast\.tv-201\d|android tv))/i],[[P,Qe],[ie,Ae]],[/(apple) ?tv/i],[P,[B,Ee+" TV"],[ie,Ae]],[/crkey/i],[[B,J+"cast"],[P,G],[ie,Ae]],[/droid.+aft(\w+)( bui|\))/i],[B,[P,F],[ie,Ae]],[/\(dtv[\);].+(aquos)/i,/(aquos-tv[\w ]+)\)/i],[B,[P,_e],[ie,Ae]],[/(bravia[\w ]+)( bui|\))/i],[B,[P,ee],[ie,Ae]],[/(mitv-\w{5}) bui/i],[B,[P,be],[ie,Ae]],[/Hbbtv.*(technisat) (.*);/i],[P,B,[ie,Ae]],[/\b(roku)[\dx]*[\)\/]((?:dvp-)?[\d\.]*)/i,/hbbtv\/\d+\.\d+\.\d+ +\([\w\+ ]*; *([\w\d][^;]*);([^;]*)/i],[[P,he],[B,he],[ie,Ae]],[/\b(android tv|smart[- ]?tv|opera tv|tv; rv:)\b/i],[[ie,Ae]],[/(ouya)/i,/(nintendo) ([wids3utch]+)/i],[P,B,[ie,S]],[/droid.+; (shield) bui/i],[B,[P,"Nvidia"],[ie,S]],[/(playstation [345portablevi]+)/i],[B,[P,ee],[ie,S]],[/\b(xbox(?: one)?(?!; xbox))[\); ]/i],[B,[P,Se],[ie,S]],[/((pebble))app/i],[P,B,[ie,Re]],[/(watch)(?: ?os[,\/]|\d,\d\/)[\d\.]+/i],[B,[P,Ee],[ie,Re]],[/droid.+; (glass) \d/i],[B,[P,G],[ie,Re]],[/droid.+; (wt63?0{2,3})\)/i],[B,[P,We],[ie,Re]],[/(quest( 2| pro)?)/i],[B,[P,Ne],[ie,Re]],[/(tesla)(?: qtcarbrowser|\/[-\w\.]+)/i],[P,[ie,V]],[/(aeobc)\b/i],[B,[P,F],[ie,V]],[/droid .+?; ([^;]+?)(?: bui|; wv\)|\) applew).+? mobile safari/i],[B,[ie,M]],[/droid .+?; ([^;]+?)(?: bui|\) applew).+?(?! mobile) safari/i],[B,[ie,ae]],[/\b((tablet|tab)[;\/]|focus\/\d(?!.+mobile))/i],[[ie,ae]],[/(phone|mobile(?:[;\/]| [ \w\/\.]*safari)|pda(?=.+windows ce))/i],[[ie,M]],[/(android[-\w\. ]{0,9});.+buil/i],[B,[P,"Generic"]]],engine:[[/windows.+ edge\/([\w\.]+)/i],[W,[oe,ye+"HTML"]],[/webkit\/537\.36.+chrome\/(?!27)([\w\.]+)/i],[W,[oe,"Blink"]],[/(presto)\/([\w\.]+)/i,/(webkit|trident|netfront|netsurf|amaya|lynx|w3m|goanna)\/([\w\.]+)/i,/ekioh(flow)\/([\w\.]+)/i,/(khtml|tasman|links)[\/ ]\(?([\w\.]+)/i,/(icab)[\/ ]([23]\.[\d\.]+)/i,/\b(libweb)/i],[oe,W],[/rv\:([\w\.]{1,9})\b.+(gecko)/i],[W,oe]],os:[[/microsoft (windows) (vista|xp)/i],[oe,W],[/(windows (?:phone(?: os)?|mobile))[\/ ]?([\d\.\w ]*)/i],[oe,[W,ze,ce]],[/windows nt 6\.2; (arm)/i,/windows[\/ ]?([ntce\d\. ]+\w)(?!.+xbox)/i,/(?:win(?=3|9|n)|win 9x )([nt\d\.]+)/i],[[W,ze,ce],[oe,"Windows"]],[/ip[honead]{2,4}\b(?:.*os ([\w]+) like mac|; opera)/i,/(?:ios;fbsv\/|iphone.+ios[\/ ])([\d\.]+)/i,/cfnetwork\/.+darwin/i],[[W,/_/g,"."],[oe,"iOS"]],[/(mac os x) ?([\w\. ]*)/i,/(macintosh|mac_powerpc\b)(?!.+haiku)/i],[[oe,Aa],[W,/_/g,"."]],[/droid ([\w\.]+)\b.+(android[- ]x86|harmonyos)/i],[W,oe],[/(android|webos|qnx|bada|rim tablet os|maemo|meego|sailfish)[-\/ ]?([\w\.]*)/i,/(blackberry)\w*\/([\w\.]*)/i,/(tizen|kaios)[\/ ]([\w\.]+)/i,/\((series40);/i],[oe,W],[/\(bb(10);/i],[W,[oe,se]],[/(?:symbian ?os|symbos|s60(?=;)|series60)[-\/ ]?([\w\.]*)/i],[W,[oe,"Symbian"]],[/mozilla\/[\d\.]+ \((?:mobile|tablet|tv|mobile; [\w ]+); rv:.+ gecko\/([\w\.]+)/i],[W,[oe,fe+" OS"]],[/web0s;.+rt(tv)/i,/\b(?:hp)?wos(?:browser)?\/([\w\.]+)/i],[W,[oe,"webOS"]],[/watch(?: ?os[,\/]|\d,\d\/)([\d\.]+)/i],[W,[oe,"watchOS"]],[/crkey\/([\d\.]+)/i],[W,[oe,J+"cast"]],[/(cros) [\w]+(?:\)| ([\w\.]+)\b)/i],[[oe,ra],W],[/panasonic;(viera)/i,/(netrange)mmh/i,/(nettv)\/(\d+\.[\w\.]+)/i,/(nintendo|playstation) ([wids345portablevuch]+)/i,/(xbox); +xbox ([^\);]+)/i,/\b(joli|palm)\b ?(?:os)?\/?([\w\.]*)/i,/(mint)[\/\(\) ]?(\w*)/i,/(mageia|vectorlinux)[; ]/i,/([kxln]?ubuntu|debian|suse|opensuse|gentoo|arch(?= linux)|slackware|fedora|mandriva|centos|pclinuxos|red ?hat|zenwalk|linpus|raspbian|plan 9|minix|risc os|contiki|deepin|manjaro|elementary os|sabayon|linspire)(?: gnu\/linux)?(?: enterprise)?(?:[- ]linux)?(?:-gnu)?[-\/ ]?(?!chrom|package)([-\w\.]*)/i,/(hurd|linux) ?([\w\.]*)/i,/(gnu) ?([\w\.]*)/i,/\b([-frentopcghs]{0,5}bsd|dragonfly)[\/ ]?(?!amd|[ix346]{1,2}86)([\w\.]*)/i,/(haiku) (\w+)/i],[oe,W],[/(sunos) ?([\w\.\d]*)/i],[[oe,"Solaris"],W],[/((?:open)?solaris)[-\/ ]?([\w\.]*)/i,/(aix) ((\d)(?=\.|\)| )[\w\.])*/i,/\b(beos|os\/2|amigaos|morphos|openvms|fuchsia|hp-ux|serenityos)/i,/(unix) ?([\w\.]*)/i],[oe,W]]},C0=function(y0,$0){if(typeof y0===Q&&($0=y0,y0=c),!(this instanceof C0))return new C0(y0,$0).getResult();var Ja=typeof n!==O&&n.navigator?n.navigator:c,_a=y0||(Ja&&Ja.userAgent?Ja.userAgent:h),Ra=Ja&&Ja.userAgentData?Ja.userAgentData:c,b0=$0?ea(La,$0):La,F0=Ja&&Ja.userAgent==_a;return this.getBrowser=function(){var G0={};return G0[oe]=c,G0[W]=c,Fe.call(G0,_a,b0.browser),G0[ne]=Ha(G0[W]),F0&&Ja&&Ja.brave&&typeof Ja.brave.isBrave==T&&(G0[oe]="Brave"),G0},this.getCPU=function(){var G0={};return G0[U]=c,Fe.call(G0,_a,b0.cpu),G0},this.getDevice=function(){var G0={};return G0[P]=c,G0[B]=c,G0[ie]=c,Fe.call(G0,_a,b0.device),F0&&!G0[ie]&&Ra&&Ra.mobile&&(G0[ie]=M),F0&&G0[B]=="Macintosh"&&Ja&&typeof Ja.standalone!==O&&Ja.maxTouchPoints&&Ja.maxTouchPoints>2&&(G0[B]="iPad",G0[ie]=ae),G0},this.getEngine=function(){var G0={};return G0[oe]=c,G0[W]=c,Fe.call(G0,_a,b0.engine),G0},this.getOS=function(){var G0={};return G0[oe]=c,G0[W]=c,Fe.call(G0,_a,b0.os),F0&&!G0[oe]&&Ra&&Ra.platform!="Unknown"&&(G0[oe]=Ra.platform.replace(/chrome os/i,ra).replace(/macos/i,Aa)),G0},this.getResult=function(){return{ua:this.getUA(),browser:this.getBrowser(),engine:this.getEngine(),os:this.getOS(),device:this.getDevice(),cpu:this.getCPU()}},this.getUA=function(){return _a},this.setUA=function(G0){return _a=typeof G0===H&&G0.length>ve?he(G0,ve):G0,this},this.setUA(_a),this};C0.VERSION=l,C0.BROWSER=Ta([oe,W,ne]),C0.CPU=Ta([U]),C0.DEVICE=Ta([B,P,ie,S,M,Ae,ae,Re,V]),C0.ENGINE=C0.OS=Ta([oe,W]),a.exports&&(d=a.exports=C0),d.UAParser=C0;var z0=typeof n!==O&&(n.jQuery||n.Zepto);if(z0&&!z0.ua){var s0=new C0;z0.ua=s0.getResult(),z0.ua.get=function(){return s0.getUA()},z0.ua.set=function(y0){s0.setUA(y0);var $0=s0.getResult();for(var Ja in $0)z0.ua[Ja]=$0[Ja]}}})(typeof window=="object"?window:commonjsGlobal)})(uaParser,uaParser.exports);var uaParserExports=uaParser.exports;const parser$1=new uaParserExports.UAParser,SUPPORTED_SAFARI_VERSIONS=["17"],browserSupported=()=>{const{name:a,version:d}=parser$1.getBrowser(),n=d?.substring(0,2);return!(a==="Safari"&&n&&!SUPPORTED_SAFARI_VERSIONS.includes(n))},UNSUPPORTED_WALLETS={mpcVault:"MPCVault - Multisig Wallet",utila:"UtilaWallet"},walletSupported=a=>{const d=a?.session?.peer?.metadata?.name;return!Object.values(UNSUPPORTED_WALLETS).includes(d)},decodeTxInput=(a,d)=>{const n=a.parseTransaction({data:d}),{circomData:c}=n.args,{extraRandomization:l,stealthAddress:h,H0:A,H1:T}=c.stealthAddressStructure;return{erc20TokenAddresses:c.erc20TokenAddresses,amountChanges:c.amountChanges,flatFees:c.flatFees,externalActionId:c.externalActionId,externalActionMetadata:c.externalActionMetadata,encryptedOutputs:c.encryptedOutputs.map(Q=>Q[0]),hookData:c.hookData,stealthAddressStructure:{extraRandomization:l.toBigInt(),stealthAddress:h.toBigInt(),H0:A.toBigInt(),H1:T.toBigInt()}}},decodeTxLogs=(a,d)=>{const{transactMethodId:n,transactWithExternalActionMethodId:c,NewCommitment:l,NewCommitmentTopic:h,hinkalInterface:A}=getHinkalParameters(a),T=[];for(let O=0;O<d.length;O+=1){T.push(d[O]),T[O].utxosArray=[];const{methodId:Q}=T[O];T[O].logs.forEach((H,ne)=>{if(Q!==n&&Q!==c||H.topics[0]!==h)return;const B=A.decodeEventLog(l,H.data);if(B.index.toBigInt()<0n){const{amount:oe,erc20TokenAddress:ie,timeStamp:P,tokenId:W}=abiDecodeUtxo(B.encryptedOutput);T[O].utxosArray?.push({amount:oe,erc20TokenAddress:ie,timeStamp:P,tokenId:W})}})}return T},deserializeDecodedTxs=a=>({...a,utxosArray:a.utxosArray?.map(d=>({...d,amount:BigInt(d.amount)})),decodedInput:{...a.decodedInput,amountChanges:a.decodedInput.amountChanges.map(BigNumber.from),flatFees:a.decodedInput.flatFees.map(BigNumber.from),externalActionId:BigNumber.from(a.decodedInput.externalActionId),stealthAddressStructure:{...a.decodedInput.stealthAddressStructure,extraRandomization:BigInt(a.decodedInput.stealthAddressStructure.extraRandomization),stealthAddress:BigInt(a.decodedInput.stealthAddressStructure.stealthAddress),H0:BigInt(a.decodedInput.stealthAddressStructure.H0),H1:BigInt(a.decodedInput.stealthAddressStructure.H1)}}}),serializeDecodedTxs=a=>a.map(n=>{const{decodedInput:c}=n;return{...n,input:"",decodedInput:{...c,amountChanges:c.amountChanges.map(l=>l.toString()),flatFees:c.flatFees.map(l=>l.toString()),externalActionId:c.externalActionId.toString(),stealthAddressStructure:{...c.stealthAddressStructure,extraRandomization:String(c.stealthAddressStructure.extraRandomization),stealthAddress:String(c.stealthAddressStructure.stealthAddress),H0:String(c.stealthAddressStructure.H0),H1:String(c.stealthAddressStructure.H1)}}}}),reloadPage=()=>window.location.reload();function toTitleCase(a){return a?.toLowerCase().split(" ").map(d=>d.charAt(0).toUpperCase()+d.substring(1)).join(" ")}function capitalizeFirstLetter(a){return a.charAt(0).toUpperCase()+a.slice(1)}function isNullOrEmpty(a){return!a||a===null||Array.isArray(a)&&a.length===0?!0:Object.keys(a).length===0&&a.constructor===Object}const isNicknameValid=a=>{const d=/^[a-zA-Z0-9_]{5,24}$/;return a.length>0&&d.test(a)},caseInsensitiveEqual=(a,d)=>!a||!d?!1:a.toLowerCase()===d.toLowerCase(),lowerCaseIncludes=(a,d)=>a.some(n=>caseInsensitiveEqual(n,d)),lowerCaseStartsWith=(a,d)=>a.some(n=>n.toLowerCase().startsWith(d.toLowerCase())),waitLittle=(a=1e3)=>new Promise(d=>{setTimeout(()=>{d(void 0)},a)}),patched={chains:[]},patchRegistry=async a=>{let d=[...getERC20Registry(a),...customTokenRegistry.getCustomTokens(a)];patched.chains.includes(a)||(d=await Promise.all(d.map(async n=>{if(n.isVolatile){const c=await VolatileHelper.getShareTokenAddress(a,n.erc20TokenAddress);c&&(n.sharedAddress=c)}return n})),patched.chains.push(a))},volatileInterface=new Interface(["function volatileTokenToShareToken(address volatileToken) external view returns (address)","function shareTokenToVolatileToken(address volatileToken) external view returns (address)","function shareToVolatile(address shareToken, uint shareValue) external view returns (uint)","function volatileToShare(address volatileToken, uint volatileTokenValue, uint volatileTokenBalanceOverride) external view returns (uint)"]);class VolatileHelper{static getVolatileTokenAction(d){const n=networkRegistry[d],{fetchRpcUrl:c}=n,{volatileTokenActionInstanceAddress:l}=n.contractData;if(!l)throw Error("Volatile Token Address not found");const h=new JsonRpcProvider(c);return new Contract(l,volatileInterface,h)}static getVolatileTokenAddress=async(d,n)=>{try{const l=await VolatileHelper.getVolatileTokenAction(d).shareTokenToVolatileToken(n);if(l===zeroAddress)throw new Error("Can't get share token address");return l}catch(c){console.log("getShareTokenAddress error ",c.message);return}};static getShareTokenAddress=async(d,n)=>{if(n===zeroAddress)return VolatileHelper.getShareTokenAddress(d,ethVolatileAddress);try{const l=await VolatileHelper.getVolatileTokenAction(d).volatileTokenToShareToken(n);if(l===zeroAddress)throw new Error("Can't get share token address");return l}catch(c){console.log("getShareTokenAddress error ",c.message);return}};static getVolatileTokenBalance=async(d,n,c,l)=>{try{if(c===0n)return 0n;const h=VolatileHelper.getVolatileTokenAction(d),A=c<0n?-1n:1n,T=l?{blockTag:l}:{};return A*(await h.shareToVolatile(n,A*c,T)).toBigInt()}catch(h){return console.log("getVolatileTokenBalance convertToShare error",h),0n}};static getShareTokenBalance=async(d,n,c)=>{if(n===zeroAddress)return this.getShareTokenBalance(d,ethVolatileAddress,c);try{if(c===0n)return 0n;const l=VolatileHelper.getVolatileTokenAction(d),h=c<0n?-1n:1n;return h*(await l.volatileToShare(n,h*c,0n)).toBigInt()}catch(l){return console.log("getShareTokenBalance convertToShare error",l),0n}};static processVolatileData=async(d,n,c,l)=>{let h=[];if(n===VolatileAction.Deposit)l[0]=0n,c[0]=await VolatileHelper.getShareTokenAddress(d,c[0]),h=[!0];else if(n===VolatileAction.Withdraw)l[0]=-1n*await VolatileHelper.getShareTokenBalance(d,c[0],-l[0]),c[0]=await VolatileHelper.getShareTokenAddress(d,c[0]),h=[!1];else if(n===VolatileAction.Swap){const A=c.map(T=>getERC20Token(T,d));await Promise.all(A.map(async(T,O)=>{T?.isVolatile&&(console.log("is volotile",T.erc20TokenAddress),l[O]<0n?l[O]=-1n*await VolatileHelper.getShareTokenBalance(d,c[O],-l[O]):l[O]>=0n&&(l[O]=0n),c[O]=await VolatileHelper.getShareTokenAddress(d,T.erc20TokenAddress),console.log("change address ",c[O]))})),h=[!1,!0]}return{erc20Addresses:c,amountChanges:l,onChainCreation:h}};static decodeVolatileMetadata=d=>{const n=decodeMetadata(ExternalActionId.Volatile,d),c=n[0],l=n[2],h=n[4],A=toEnumValue(VolatileAction,h);return{volatileAmounts:c,redirectActionId:l,volatileAction:A}};static encodeVolatileActionMetadata=({actionType:d=VolatileAction.Deposit,volatileAmounts:n=[],withdrawRecipient:c=zeroAddress,redirectActionId:l=0,redirectMetadata:h="0x00"})=>(console.log({volatileAmounts:n}),defaultAbiCoder.encode(["uint256[]","address","uint256","bytes","uint8"],[n,c,l,h,d]));static getVolotileMetadata=(d,n,c,l,h)=>{if(d===VolatileAction.Deposit)return{actionType:d,volatileAmounts:n};if(d===VolatileAction.Withdraw){if(!c)throw Error("No withdrawal recipient");return{actionType:d,volatileAmounts:n,withdrawRecipient:c}}if(d===VolatileAction.Swap){if(l===void 0||!h)throw Error("No redirect action Id");return{actionType:d,volatileAmounts:n,redirectActionId:getExternalActionIdHash(l),redirectMetadata:h}}throw new Error("Invalid Request")};static getVolatileExternalData=async(d,n,c,l,h,A)=>{const O=d.getContractWithFetcher(ContractType.VolatileTokenAction).address;let Q=[];return n===VolatileAction.Deposit&&(Q=c),n===VolatileAction.Withdraw&&(Q=[-c[0]]),n===VolatileAction.Swap&&(Q=[-c[0],0n]),{externalActionId:ExternalActionId.Volatile,externalAddress:O,externalActionMetadata:this.encodeVolatileActionMetadata(this.getVolotileMetadata(n,Q,l,h,A))}};static decodeExternalActionId=d=>{let n=!1,c;const{externalActionId:l}=d.decodedInput;return(typeof l=="string"?l:l.toBigInt())===getExternalActionIdHash(ExternalActionId.Volatile)&&({redirectActionId:c}=VolatileHelper.decodeVolatileMetadata(d.decodedInput.externalActionMetadata),n=!0),{isVolatile:n,redirectActionId:c}}}const mutex=new Mutex,getShieldedBalance=async a=>{const d=await mutex.acquire(),{inputUtxos:n}=await getInputUtxoAndBalance({hinkal:a,sliceIfMore6:!1}),c=a.getCurrentChainId(),l=[...getERC20Registry(c),...customTokenRegistry.getCustomTokens(c)];await patchRegistry(c);const h=l.map(T=>({token:T,balance:n.reduce((O,Q)=>{const H=T.isVolatile?T.sharedAddress:T.erc20TokenAddress;return caseInsensitiveEqual(H,Q.erc20TokenAddress)?O+Q.amount:O},0n),timestamp:n.filter(O=>caseInsensitiveEqual(O.erc20TokenAddress,T.erc20TokenAddress))[0]?.timeStamp,nfts:n.filter(O=>caseInsensitiveEqual(O.erc20TokenAddress,T.erc20TokenAddress)&&O.tokenId!==0).map(O=>({tokenId:O.tokenId,timestamp:O.timeStamp}))})),A=await Promise.all(h.map(async T=>{if(!T.token.isVolatile)return T;T.token?.sharedAddress||console.log("VolatileToken must have a corresponding sharedAddress");let O=0n;return T.balance>0n&&(O=await VolatileHelper.getVolatileTokenBalance(c,T.token.sharedAddress,T.balance)),{...T,balance:BigInt(O)}}));return d(),A},addPaddingToUtxos=async(a,d,n,c=6,l=d.map(()=>0),h=!1)=>{const{userKeys:A}=a,T=[],O=[];let Q=0;for(let H=0;H<d.length;H+=1)if(h===!1){const{inputUtxos:ne}=await getInputUtxoAndBalance({hinkal:a,erc20TokenAddress:d[H],tokenId:l[H],sliceIfMore6:!1});Q=Math.max(ne.length,Q),O.push(ne)}else O.push([]);return console.log({maxUtxoNum:Q}),Q===2?O:(O.forEach((H,ne)=>{if(H.length>c){const B=H.slice(0,c),oe=B.reduce((ie,P)=>ie+P.amount,0n);if(n[ne]<0n&&oe<-n[ne]){const ie=getERC20Token(d[ne],a.getCurrentChainId()),P=Number(getAmountWithPrecision(oe,ie,2)),W=`Unfortunately your transaction did not go through due to UTXOs limitations.
|
|
212
|
-
Please try again with ${ie.symbol}`;throw new ErrorWithAmount(P,W)}T.push(B)}else if(H.length<=c){const B=[...H];let oe=c-H.length;for(;oe>0;)oe-=1,B.push(new Utxo({amount:0n,erc20TokenAddress:d[ne],shieldedPrivateKey:A.getShieldedPrivateKey(),tokenId:l[ne]}));T.push(B)}}),T)};var WorkerVariant=(a=>(a.ZKProof="ZKProof",a.SnarkJS="SnarkJS",a.UTXO="UTXO",a))(WorkerVariant||{});class WorkerFactory{static isRunningInNode=typeof process<"u"&&process.versions!=null&&process.versions.node!=null;constructor(){}static resolveWorkerURL=async d=>{const n=typeof document<"u"&&document?.location?.href||"",{workerViteURL:c}=await Promise.resolve().then(()=>require("./viteWorkerURL.constant-B4ERp5DP.js"));return new URL(c[d],n)};static createWorker=async d=>{if(WorkerFactory.isRunningInNode){let c;return d===WorkerVariant.SnarkJS?c=await Promise.resolve().then(()=>require("./snarkjsWorkerLogic-DertJLwB.js")):d===WorkerVariant.ZKProof?c=await Promise.resolve().then(()=>require("./zkProofWorkerLogic-C5kAcugj.js")):d===WorkerVariant.UTXO&&(c=await Promise.resolve().then(()=>require("./utxoWorkerLogic-DtyjPuS3.js"))),c.default}const n=await WorkerFactory.resolveWorkerURL(d);return new Worker(n,{type:"module"})};static getWebWorker(d){switch(d){case WorkerVariant.ZKProof:return WorkerFactory.createWorker(d);case WorkerVariant.SnarkJS:return WorkerFactory.createWorker(d);case WorkerVariant.UTXO:return WorkerFactory.createWorker(d);default:throw Error(`Unknown worker type: ${d}`)}}}const performTaskWithWorker=async a=>{const d=await WorkerFactory.getWebWorker(a.type);return new Promise((n,c)=>{let l={};if(typeof window<"u"&&window.location){const{origin:A,protocol:T,host:O,port:Q,hostname:H,href:ne}=window.location;l={origin:A,protocol:T,host:O,port:Q,hostname:H,href:ne}}d.onmessage=A=>{n(A.data),d.terminate()},d.onerror=A=>{c(A),d.terminate()};const h={payload:a.payload,metadata:{hostLocation:l,constants:{chains:{chainIds},isDevelopment}}};d.postMessage(h)})};var ZKProofWorkerActionType=(a=>(a[a.CALC_COMMITMENTS_SIBLING_AND_SIDES=0]="CALC_COMMITMENTS_SIBLING_AND_SIDES",a[a.CALC_ACCESS_TOKEN_SIBLING_AND_SIDES=1]="CALC_ACCESS_TOKEN_SIBLING_AND_SIDES",a[a.BUILD_IN_NULLIFIERS=2]="BUILD_IN_NULLIFIERS",a))(ZKProofWorkerActionType||{});const buildInNullifiers=(a,d)=>a.map((n,c)=>n.map(l=>d[c]?"0":l.getNullifier())),buildOutCommitments=(a,d)=>a.map((n,c)=>n.map(l=>d[c]?"0":l.getCommitment())),calcAmountChanges=(a,d,n=!1)=>{const c=[];for(let l=0;l<a.length;l+=1){let h=0n,A=0n;for(let T=0;T<a[l].length;T+=1)h+=a[l][T].amount;for(let T=0;T<d[l].length;T+=1)A+=d[l][T].amount;A-h<0?n?c.push(A-h):c.push(CIRCOM_P+(A-h)):c.push(A-h)}return c},calcEncryptedOutputs=(a,d)=>{const n=[[""]];for(let c=0;c<a.length;c+=1)c>0&&n.push([""]),a[c].forEach((l,h)=>{n[c][h]=`0x${Buffer.from(encryptUtxo(l,d)).toString("hex")}`});return n},calcCommitmentsSiblingAndSides=(a,d)=>{const n=[];for(let l=0;l<a.length;l+=1){n.push([]);for(let h=0;h<a[l].length;h+=1)n[l][h]=d.getSiblingHashesForVerification(BigInt(a[l][h].getCommitment())).map(A=>A.toString())}const c=[];for(let l=0;l<a.length;l+=1){c.push([]);for(let h=0;h<a[l].length;h+=1)c[l][h]=d.getSiblingSides(BigInt(a[l][h].getCommitment())).map(A=>A.toString())}return{inCommitmentSiblings:n,inCommitmentSiblingSides:c}},calcAccessTokenSiblingsAndSides=(a,d)=>{const n=d.getSiblingHashesForVerification(BigInt(a.getAccessKey())).map(l=>l.toString()),c=d.getSiblingSides(BigInt(a.getAccessKey())).map(l=>l.toString());return{accessTokenSiblings:n,accessTokenSiblingSides:c}},serializeCircomData=a=>{const d={...a};return d.amountChanges=a.amountChanges.map(n=>n.toString()),d.calldataHash=a.calldataHash.toString(),d.rootHashAccessToken=a.rootHashAccessToken?.toString(),d.stealthAddressStructure.extraRandomization=a.stealthAddressStructure.extraRandomization.toString(),d.stealthAddressStructure.stealthAddress=a.stealthAddressStructure.stealthAddress.toString(),d.stealthAddressStructure.H0=a.stealthAddressStructure.H0.toString(),d.stealthAddressStructure.H1=a.stealthAddressStructure.H1.toString(),d.rootHashHinkal=a.rootHashHinkal?.toString(),d.externalActionId=a.externalActionId?.toString(),d.flatFees=a.flatFees.map(n=>n.toString()),d},deserializeCircomData=a=>{const d={...a};return d.amountChanges=a.amountChanges.map(n=>BigInt(n)),d.calldataHash=BigInt(a.calldataHash),d.rootHashAccessToken=BigInt(a.rootHashAccessToken),d.rootHashHinkal=BigInt(a.rootHashHinkal),d.externalActionId=BigInt(a.externalActionId),d},createCallDataHash=(a,d,n,c,l,h,A,T)=>{const O=Object.values(T||defaultHookData),Q=defaultAbiCoder.encode(["uint16","address","address","uint256","bytes","tuple(address, address, bytes, bytes)","bytes[][]","uint256[]"],[a,d,n,typeof c=="bigint"?c:getExternalActionIdHash(c),l,O,h,A]);return BigInt(keccak256$2(Q))%CIRCOM_P},calculateOutputSignalCount=a=>a.startsWith("swapperMO")||a.startsWith("swapperME")?2:a.startsWith("swapperMW")?1:0,calcPublicSignalCount=(a,d,n,c,l,h)=>{const A=calculateOutputSignalCount(a);return 9+d.length+n.length+c.flat().length+l.length+A+h},calcStealthAddressStructure=(a,d)=>{const{h0:n,h1:c}=UserKeys.getStealthAddressCompressedPoints(a,d),l=BigInt(UserKeys.getStealthAddress(a,d));return{extraRandomization:a,H0:n,H1:c,stealthAddress:l}},generateCircomData=async(a,d,n,c,l,h,A,T,O,Q,H,ne,B,oe,ie,P)=>{const W=calcAmountChanges(n,c,!0),U=n.map(ae=>ae.map(Ae=>Ae.getConstructableParams())),S=await performTaskWithWorker({type:WorkerVariant.ZKProof,payload:{type:ZKProofWorkerActionType.BUILD_IN_NULLIFIERS,data:{inputUtxosSerialized:U,onChainCreation:ie}}});return{rootHashHinkal:a,erc20TokenAddresses:n.map(ae=>ae[0].erc20TokenAddress),tokenIds:B.map(ae=>String(ae)),amountChanges:W,inputNullifiers:S,outCommitments:buildOutCommitments(c,ie),encryptedOutputs:l,flatFees:h,timeStamp:c[0][0].timeStamp,stealthAddressStructure:oe,rootHashAccessToken:d,relay:H,externalAddress:O===void 0?zeroAddress:O,externalActionMetadata:Q,externalActionId:typeof T=="bigint"?0n:getExternalActionIdHash(T),hookData:P||defaultHookData,publicSignalCount:A,calldataHash:ne}};var SnarkJSWorkerActionType=(a=>(a[a.FULL_PROVE=0]="FULL_PROVE",a))(SnarkJSWorkerActionType||{});const s3Urls={ethMainnet:"https://hinkal-zk-verifiers-may-2024.s3.us-west-1.amazonaws.com/",polygon:"https://hinkal-zk-new-verifiers.s3.us-west-1.amazonaws.com/",bnb:"https://hinkal-zk-verifiers-may-2024.s3.us-west-1.amazonaws.com/",arbitrum:"https://hinkal-zk-verifiers-may-2024.s3.us-west-1.amazonaws.com/",optimism:"https://hinkal-zk-new-verifiers.s3.us-west-1.amazonaws.com/",avalanche:"https://hinkal-zk-new-verifiers.s3.us-west-1.amazonaws.com/",base:"https://hinkal-zk-verifiers-may-2024.s3.us-west-1.amazonaws.com/",blast:"https://hinkal-zk-verifiers-may-2024.s3.us-west-1.amazonaws.com/"},getVerifiersS3BucketUrlProd=a=>{switch(a){case chainIds.ethMainnet:return s3Urls.ethMainnet;case chainIds.polygon:return s3Urls.polygon;case chainIds.bnbMainnet:return s3Urls.bnb;case chainIds.arbMainnet:return s3Urls.arbitrum;case chainIds.optimism:return s3Urls.optimism;case chainIds.avalanche:return s3Urls.avalanche;case chainIds.base:return s3Urls.base;case chainIds.blast:return s3Urls.blast;default:return logError("Warning: no S3 bucket specified for selected chainid: ",a),s3Urls.polygon}},prodVerifiers=a=>{const d=getVerifiersS3BucketUrlProd(a);return{swapperM1x2x1Zkey:`${d}swapperM1x2x1_final-31337.zkey`,swapperM1x2x1Wasm:`${d}swapperM1x2x1-31337.wasm`,swapperM1x6x1Zkey:`${d}swapperM1x6x1_final-31337.zkey`,swapperM1x6x1Wasm:`${d}swapperM1x6x1-31337.wasm`,swapperME1x2x1Zkey:`${d}swapperME1x2x1_final-31337.zkey`,swapperME1x2x1Wasm:`${d}swapperME1x2x1-31337.wasm`,swapperM2x2x1Zkey:`${d}swapperM2x2x1_final-31337.zkey`,swapperM2x2x1Wasm:`${d}swapperM2x2x1-31337.wasm`,swapperM2x6x1Zkey:`${d}swapperM2x6x1_final-31337.zkey`,swapperM2x6x1Wasm:`${d}swapperM2x6x1-31337.wasm`,swapperMO2x2x1Zkey:`${d}swapperMO2x2x1_final-31337.zkey`,swapperMO2x2x1Wasm:`${d}swapperMO2x2x1-31337.wasm`,swapperMO2x6x1Zkey:`${d}swapperMO2x6x1_final-31337.zkey`,swapperMO2x6x1Wasm:`${d}swapperMO2x6x1-31337.wasm`,swapperToken2x2x1Zkey:`${d}swapperToken2x2x1_final-31337.zkey`,swapperToken2x2x1Wasm:`${d}swapperToken2x2x1-31337.wasm`,swapperToken2x6x1Zkey:`${d}swapperToken2x6x1_final-31337.zkey`,swapperToken2x6x1Wasm:`${d}swapperToken2x6x1-31337.wasm`,swapperM3x2x1Zkey:`${d}swapperM3x2x1_final-31337.zkey`,swapperM3x2x1Wasm:`${d}swapperM3x2x1-31337.wasm`,swapperM3x6x1Zkey:`${d}swapperM3x6x1_final-31337.zkey`,swapperM3x6x1Wasm:`${d}swapperM3x6x1-31337.wasm`,swapperMO3x2x1Zkey:`${d}swapperMO3x2x1_final-31337.zkey`,swapperMO3x2x1Wasm:`${d}swapperMO3x2x1-31337.wasm`,swapperMO3x6x1Zkey:`${d}swapperMO3x6x1_final-31337.zkey`,swapperMO3x6x1Wasm:`${d}swapperMO3x6x1-31337.wasm`,swapperM4x2x1Zkey:`${d}swapperM4x2x1_final-31337.zkey`,swapperM4x2x1Wasm:`${d}swapperM4x2x1-31337.wasm`,swapperM4x6x1Zkey:`${d}swapperM4x6x1_final-31337.zkey`,swapperM4x6x1Wasm:`${d}swapperM4x6x1-31337.wasm`,swapperMO4x2x1Zkey:`${d}swapperMO4x2x1_final-31337.zkey`,swapperMO4x2x1Wasm:`${d}swapperMO4x2x1-31337.wasm`,swapperMO4x6x1Zkey:`${d}swapperMO4x6x1_final-31337.zkey`,swapperMO4x6x1Wasm:`${d}swapperMO4x6x1-31337.wasm`,swapperM5x2x1Zkey:`${d}swapperM5x2x1_final-31337.zkey`,swapperM5x2x1Wasm:`${d}swapperM5x2x1-31337.wasm`,swapperM5x6x1Zkey:`${d}swapperM5x6x1_final-31337.zkey`,swapperM5x6x1Wasm:`${d}swapperM5x6x1-31337.wasm`,swapperMO5x2x1Zkey:`${d}swapperMO5x2x1_final-31337.zkey`,swapperMO5x2x1Wasm:`${d}swapperMO5x2x1-31337.wasm`,swapperMO5x6x1Zkey:`${d}swapperMO5x6x1_final-31337.zkey`,swapperMO5x6x1Wasm:`${d}swapperMO5x6x1-31337.wasm`,swapperMTS2x2x1Zkey:"swapperMTS2x2x1_final-31337.zkey",swapperMTS2x2x1Wasm:"swapperMTS2x2x1-31337.wasm",transactionsProverZkey:`${d}transactionsProver.zkey`,transactionsProverWasm:`${d}transactionsProver.wasm`,stakeProverZkey:`${d}StakeProver_final-31337.zkey`,stakeProverWasm:`${d}StakeProver-31337.wasm`,stakeProverPermissionlessZkey:`${d}StakeProverPermissionless_final-31337.zkey`,stakeProverPermissionlessWasm:`${d}StakeProverPermissionless-31337.wasm`}},localVerifiers={swapperM1x2x1Zkey:"swapperM1x2x1_final-31337.zkey",swapperM1x2x1Wasm:"swapperM1x2x1-31337.wasm",swapperM1x6x1Zkey:"swapperM1x6x1_final-31337.zkey",swapperM1x6x1Wasm:"swapperM1x6x1-31337.wasm",swapperMO1x2x1Zkey:"swapperMO1x2x1_final-31337.zkey",swapperMO1x2x1Wasm:"swapperMO1x2x1-31337.wasm",swapperMO1x6x1Zkey:"swapperMO1x6x1_final-31337.zkey",swapperMO1x6x1Wasm:"swapperMO1x6x1-31337.wasm",swapperME1x2x1Zkey:"swapperME1x2x1_final-31337.zkey",swapperME1x2x1Wasm:"swapperME1x2x1-31337.wasm",swapperM2x2x1Zkey:"swapperM2x2x1_final-31337.zkey",swapperM2x2x1Wasm:"swapperM2x2x1-31337.wasm",swapperM2x6x1Zkey:"swapperM2x6x1_final-31337.zkey",swapperM2x6x1Wasm:"swapperM2x6x1-31337.wasm",swapperMO2x2x1Zkey:"swapperMO2x2x1_final-31337.zkey",swapperMO2x2x1Wasm:"swapperMO2x2x1-31337.wasm",swapperMO2x6x1Zkey:"swapperMO2x6x1_final-31337.zkey",swapperMO2x6x1Wasm:"swapperMO2x6x1-31337.wasm",swapperToken2x2x1Zkey:"swapperToken2x2x1_final-31337.zkey",swapperToken2x2x1Wasm:"swapperToken2x2x1-31337.wasm",swapperToken2x6x1Zkey:"swapperToken2x6x1_final-31337.zkey",swapperToken2x6x1Wasm:"swapperToken2x6x1-31337.wasm",swapperM3x2x1Zkey:"swapperM3x2x1_final-31337.zkey",swapperM3x2x1Wasm:"swapperM3x2x1-31337.wasm",swapperM3x6x1Zkey:"swapperM3x6x1_final-31337.zkey",swapperM3x6x1Wasm:"swapperM3x6x1-31337.wasm",swapperMO3x2x1Zkey:"swapperMO3x2x1_final-31337.zkey",swapperMO3x2x1Wasm:"swapperMO3x2x1-31337.wasm",swapperMO3x6x1Zkey:"swapperMO3x6x1_final-31337.zkey",swapperMO3x6x1Wasm:"swapperMO3x6x1-31337.wasm",swapperM4x2x1Zkey:"swapperM4x2x1_final-31337.zkey",swapperM4x2x1Wasm:"swapperM4x2x1-31337.wasm",swapperM4x6x1Zkey:"swapperM4x6x1_final-31337.zkey",swapperM4x6x1Wasm:"swapperM4x6x1-31337.wasm",swapperMO4x2x1Zkey:"swapperMO4x2x1_final-31337.zkey",swapperMO4x2x1Wasm:"swapperMO4x2x1-31337.wasm",swapperMO4x6x1Zkey:"swapperMO4x6x1_final-31337.zkey",swapperMO4x6x1Wasm:"swapperMO4x6x1-31337.wasm",swapperM5x2x1Zkey:"swapperM5x2x1_final-31337.zkey",swapperM5x2x1Wasm:"swapperM5x2x1-31337.wasm",swapperM5x6x1Zkey:"swapperM5x6x1_final-31337.zkey",swapperM5x6x1Wasm:"swapperM5x6x1-31337.wasm",swapperMO5x2x1Zkey:"swapperMO5x2x1_final-31337.zkey",swapperMO5x2x1Wasm:"swapperMO5x2x1-31337.wasm",swapperMO5x6x1Zkey:"swapperMO5x6x1_final-31337.zkey",swapperMO5x6x1Wasm:"swapperMO5x6x1-31337.wasm",swapperMTS2x2x1Zkey:"swapperMTS2x2x1_final-31337.zkey",swapperMTS2x2x1Wasm:"swapperMTS2x2x1-31337.wasm",transactionsProverZkey:"transactionsProver.zkey",transactionsProverWasm:"transactionsProver.wasm",stakeProverZkey:"StakeProver_final-31337.zkey",stakeProverWasm:"StakeProver-31337.wasm",stakeProverPermissionlessZkey:"StakeProverPermissionless_final-31337.zkey",stakeProverPermissionlessWasm:"StakeProverPermissionless-31337.wasm",receiverZkey:"receiver_final-31337.zkey",receiverWasm:"receiver-31337.wasm",swapperMW1x2Wasm:"swapperMW1x2-31337.wasm",swapperMW1x2Zkey:"swapperMW1x2_final-31337.zkey",swapperMW1x6Wasm:"swapperMW1x6-31337.wasm",swapperMW1x6Zkey:"swapperMW1x6_final-31337.zkey",swapperMW2x2Wasm:"swapperMW2x2-31337.wasm",swapperMW2x2Zkey:"swapperMW2x2_final-31337.zkey",swapperMW2x6Wasm:"swapperMW2x6-31337.wasm",swapperMW2x6Zkey:"swapperMW2x6_final-31337.zkey",swapperMW3x2Wasm:"swapperMW3x2-31337.wasm",swapperMW3x2Zkey:"swapperMW3x2_final-31337.zkey",swapperMW3x6Wasm:"swapperMW3x6-31337.wasm",swapperMW3x6Zkey:"swapperMW3x6_final-31337.zkey",swapperMW4x2Wasm:"swapperMW4x2-31337.wasm",swapperMW4x2Zkey:"swapperMW4x2_final-31337.zkey",swapperMW4x6Wasm:"swapperMW4x6-31337.wasm",swapperMW4x6Zkey:"swapperMW4x6_final-31337.zkey",swapperMW5x2Wasm:"swapperMW5x2-31337.wasm",swapperMW5x2Zkey:"swapperMW5x2_final-31337.zkey",swapperMW5x6Wasm:"swapperMW5x6-31337.wasm",swapperMW5x6Zkey:"swapperMW5x6_final-31337.zkey"},getWASMFile=(a,d)=>d===chainIds.localhost?localVerifiers[`${a}Wasm`]:prodVerifiers(d)[`${a}Wasm`],getZKeyFile=(a,d)=>d===chainIds.localhost?localVerifiers[`${a}Zkey`]:prodVerifiers(d)[`${a}Zkey`],generateZkProof=async(a,d,n)=>{console.log("Zero Knowledge proof construction started, please wait...",getZKeyFile(d,a));const c=getWASMFile(d,a),l=getZKeyFile(d,a),{publicSignals:h,zkCallData:A}=await performTaskWithWorker({type:WorkerVariant.SnarkJS,payload:{type:SnarkJSWorkerActionType.FULL_PROVE,data:{input:n,chainId:a,wasmFilePath:c,zKeyFilePath:l}}});return console.log("Zero Knowledge proof construction finished "),{zkCallData:A,publicSignals:h}},constructZkProof=async(a,d,n,c,l,h,A,T,O,Q=zeroAddress,H=chainIds.localhost,ne=n.map(()=>!1),B=n.map(()=>0n),oe=void 0,ie)=>{const P=a.getRootHash(),W=d.getRootHash(),U=n.map($=>$.map(de=>de.getConstructableParams())),S=l.getSignature(),{accessTokenSiblings:M,accessTokenSiblingSides:ae}=await performTaskWithWorker({type:WorkerVariant.ZKProof,payload:{type:ZKProofWorkerActionType.CALC_ACCESS_TOKEN_SIBLING_AND_SIDES,data:{userSignature:S,merkleTreeAccessTokenSerialized:d.toJSON()}}}),{inCommitmentSiblings:Ae,inCommitmentSiblingSides:Re}=await performTaskWithWorker({type:WorkerVariant.ZKProof,payload:{type:ZKProofWorkerActionType.CALC_COMMITMENTS_SIBLING_AND_SIDES,data:{inputUtxosSerialized:U,userSignature:S,merkleTreeSerialized:a.toJSON()}}}),V=calcAmountChanges(n,c),ve=calcEncryptedOutputs(c,(ie&&ie.mode!==HinkalStakeMode.Deposit)??!1),F=l.getShieldedPrivateKey(),Ee=Utxo.findCorrectRandomization(randomBigInt(31),F),ge=await performTaskWithWorker({type:WorkerVariant.ZKProof,payload:{type:ZKProofWorkerActionType.BUILD_IN_NULLIFIERS,data:{inputUtxosSerialized:U,onChainCreation:ne}}}),se={rootHashHinkal:P,shieldedPrivateKey:F,erc20TokenAddresses:n.map($=>$[0].erc20TokenAddress),inAmounts:n.map($=>$.map(de=>de.amount.toString())),inTimeStamps:n.map($=>$.map(de=>de.timeStamp)),inRandomizations:n.map($=>$.map(de=>de.randomization)),inNullifiers:ge,inCommitmentSiblings:Ae,inCommitmentSiblingSides:Re,outAmounts:c.map($=>$.map(de=>de.amount.toString())),outTimeStamp:BigInt(c[0][0].timeStamp),outPublicKeys:c.map($=>$.map(de=>de.getStealthAddress())),extraRandomization:Ee,amountChanges:V,outCommitments:buildOutCommitments(c,ne),rootHashAccessToken:W,accessTokenSiblings:M,accessTokenSiblingSides:ae,calldataHash:0n};ie||(se.onChainCreation=ne);const X=n.map($=>$[0].tokenId??0),J=X.reduce(($,de)=>$+de,0)>0?X.length:0;J>0&&(se.tokenIds=X);const ye=calcPublicSignalCount(h,se.erc20TokenAddresses,se.amountChanges,se.inNullifiers,se.outCommitments,J);se.calldataHash=createCallDataHash(ye,Q,T,A,O,ve,B,oe),ie&&(ie.mode===HinkalStakeMode.Deposit&&(se.mode=0),ie.mode===HinkalStakeMode.Stake&&(se.mode=1),ie.mode===HinkalStakeMode.Unstake&&(se.mode=2),se.stakedTokenRecipient=ie.stakedTokenRecipient,se.stakeBlinding=ie.stakeBlinding,se.depositorAddress=ie.depositorAddress);const{zkCallData:fe,publicSignals:G}=await generateZkProof(H,h,se);console.log("publicSignals",G);const pe=calcStealthAddressStructure(Ee,F),Qe=await generateCircomData(P,W,n,c,ve,B,ye,A,T,O,Q,se.calldataHash,X,pe,ne,oe),Se={tokenNumber:n.length,nullifierAmount:n[0].length,outputAmount:c[0].length};return{zkCallData:fe,circomData:Qe,dimData:Se,encryptedOutputs:ve}},estimateGasRelayer=async(a,d,n,c)=>{const l=a.getContractWithFetcher(ContractType.HinkalContract),h=c.externalActionId===0n?"transact":"transactWithExternalAction";return(await l.estimateGas[h](d[0],d[1],d[2],n,c,{from:c.relay})).toBigInt()},getRelayerURL=a=>{let d;return deploymentMode===DEPLOYMENT_MODE.DEVELOPMENT?d=RELAYER_URLS:deploymentMode===DEPLOYMENT_MODE.STAGING?d=STAGING_RELAYER_URLS:deploymentMode===DEPLOYMENT_MODE.PLAYGROUND?d=PLAYGROUND_RELAYER_URLS:d=RELAYER_URLS,a===chainIds.polygon?d.polygon:a===chainIds.arbMainnet?d.arbMainnet:a===chainIds.ethMainnet?d.ethMainnet:a===chainIds.bnbMainnet?d.bnbMainnet:a===chainIds.avalanche?d.avalanche:a===chainIds.optimism?d.optimism:a===chainIds.base?d.base:a===chainIds.blast?d.blast:d.localhost};async function callRelayerTransactAPI(a,d){return(await axios$3.post(`${getRelayerURL(a)}${RELAYER_CONFIG.TRANSACT}`,d)).data}const transactCallRelayer=async(a,d,n,c,l)=>{const h=serializeCircomData(c),A=await callRelayerTransactAPI(a,{a:d[0],b:d[1],c:d[2],dimData:n,circomData:h,withPrivateMempool:l});if(A.status==="success")return A.message;throw new Error(A.error)},getExternalActionMetadata$3=(a,d,n,c,l,h)=>{let A;return l===ExternalActionId.BeefyStake?(A=defaultAbiCoder.encode(["uint8","address","uint256","uint256"],[Number(c),h,a[0][0].amount,a[0][0].timeStamp]),A):(d.length===1?A=defaultAbiCoder.encode(["uint8","bytes","bytes","address"],[Number(c),d[0],"0x00",n]):d.length===2?A=defaultAbiCoder.encode(["uint8","bytes","bytes","address"],[Number(c),d[0],d[1],n]):A=defaultAbiCoder.encode(["uint8","bytes","bytes","address"],[Number(c),"0x00","0x00",n]),A)},getOnChainCreation$3=(a,d,n)=>d===ExternalActionId.BeefyStake?n===BeefyAction.GetRewards?[!1,!0]:[!1,!1,!0]:a.map(c=>c>0n),hinkalActionBeefy=async(a,d,n,c,l,h,A,T=!1)=>{const O=[...await addPaddingToUtxos(a,d,n)],Q=`swapper${A?"MO":"M"}${n.length.toString()}x${O[0].length}x1`,H=A?ExternalActionId.BeefyStake:ExternalActionId.Beefy,{flatFees:ne,feeUnit:B}=await getFlatFees(a.getCurrentChainId(),d,H,n,c);n=processAmountChanges({erc20Addresses:d,amountChanges:n,flatFees:ne,feeUnit:B,externalActionId:H,action:c});const oe=getOnChainCreation$3(n,H,c);console.log({amountChanges:n,onChainCreation:oe});const ie=[];for(let V=0;V<d.length;V+=1){const{outputUtxos:ve}=outputUtxoProcessing(a.userKeys,O[V],n[V]);ie.push(ve)}const{contractData:P}=networkRegistry[a.getCurrentChainId()],W=H===ExternalActionId.BeefyStake?P.beefyStakeExternalActionInstanceAddress:P.beefyExternalActionInstanceAddress,U=getExternalActionMetadata$3(O,l,h,c,H,A),S=await a.getRandomRelay();if(!S)throw Error(transactionErrorCodes.RELAYER_NOT_AVAILABLE);const{zkCallData:M,circomData:ae,dimData:Ae}=await constructZkProof(a.merkleTreeHinkal,a.merkleTreeAccessToken,O,ie,a.userKeys,Q,H,W,U,S,a.getCurrentChainId(),oe,ne);return T?await estimateGasRelayer(a,M,Ae,ae):await transactCallRelayer(a.getCurrentChainId(),M,Ae,ae)},hinkalActionConvex=async(a,d,n,c,l,h=!1)=>{const A=[...await addPaddingToUtxos(a,d,n)],T=`swapperMO${n.length.toString()}x${A[0].length}x1`,O=getNonLocalhostChainId(a.getCurrentChainId());console.log({inputUtxosArray:A});const Q=ExternalActionId.Convex,{flatFees:H,feeUnit:ne}=await getFlatFees(a.getCurrentChainId(),d,Q,n,l);n=processAmountChanges({erc20Addresses:d,amountChanges:n,flatFees:H,feeUnit:ne,externalActionId:Q,action:l}),console.log("new amount changes",{amountChanges:n});const oe=[ConvexAction.StakeLP,ConvexAction.UnStakeLP].includes(l)?[!1,!1,...O===chainIds.ethMainnet?[!0,!0]:[!0]]:[!1,...O===chainIds.ethMainnet?[!0,!0]:[!0]],ie=[];for(let Re=0;Re<d.length;Re+=1){const{outputUtxos:V}=outputUtxoProcessing(a.userKeys,A[Re],n[Re]);ie.push(V)}console.log({outputUtxosArray:ie});const P=networkRegistry[a.getCurrentChainId()].contractData.convexExternalActionInstanceAddress,W=defaultAbiCoder.encode(["uint8","uint256","uint256","uint256"],[Number(l),c,A[0][0].amount,A[0][0].timeStamp]),U=await a.getRandomRelay();if(!U)throw Error(transactionErrorCodes.RELAYER_NOT_AVAILABLE);const{zkCallData:S,circomData:M,dimData:ae}=await constructZkProof(a.merkleTreeHinkal,a.merkleTreeAccessToken,A,ie,a.userKeys,T,Q,P,W,U,a.getCurrentChainId(),oe,H);return h?await estimateGasRelayer(a,S,ae,M):await transactCallRelayer(a.getCurrentChainId(),S,ae,M)},getExternalActionIdForCurve=(a,d,n,c)=>d?c?ExternalActionId.CurveCRVRewards:ExternalActionId.CurveCRV:getCalcTokenAmountWithDynamicArray(a).includes(n.toLowerCase())?ExternalActionId.CurveDynamic:ExternalActionId.Curve,getExternalActionAddressForCurve=(a,d)=>{const{contractData:n}=networkRegistry[a.getCurrentChainId()];switch(d){case ExternalActionId.Curve:return n.curveExternalActionInstanceAddress;case ExternalActionId.CurveDynamic:return n.curveExternalActionDynamicInstanceAddress;case ExternalActionId.CurveCRV:return n.curveExternalActionInstanceAddress;case ExternalActionId.CurveCRVRewards:return n.curveStakeExternalActionInstanceAddress;default:return n.curveExternalActionInstanceAddress}},getExternalActionMetadata$2=(a,d,n)=>defaultAbiCoder.encode(["uint8","address","uint256","uint256"],[Number(a),d,n[0][0].amount,n[0][0].timeStamp]),getOnChainCreation$2=(a,d,n,c)=>{if([CurveAction.Deposit,CurveAction.WithdrawInt,CurveAction.WithdrawUint].includes(c))return a.map(l=>l>0n);if(c===CurveAction.WithdrawImbalance)return a.map(()=>!1);if([CurveAction.Stake,CurveAction.Unstake,CurveAction.GetCRV].includes(c)){let l=!1;return d.map(h=>(h.toLowerCase()===getCRV(n).toLowerCase()&&(l=!0),l))}return a.map(l=>l>0n)},hinkalActionCurve=async(a,d,n,c,l,h,A=!1)=>{const T=[...await addPaddingToUtxos(a,d,n)];let O=`swapperM${n.length.toString()}x${T[0].length}x1`;const Q=l===CurveAction.GetCRV||l===CurveAction.Stake||l===CurveAction.Unstake;Q&&(O=`swapperMO${n.length.toString()}x${T[0].length}x1`);const H=getNonLocalhostChainId(a.getCurrentChainId()),ne=getExternalActionIdForCurve(H,Q,c,h),{flatFees:B,feeUnit:oe}=await getFlatFees(a.getCurrentChainId(),d,ne,n,l,curveWithdrawGasTokenAddress?.current);n=processAmountChanges({erc20Addresses:d,amountChanges:n,flatFees:B,feeUnit:oe,externalActionId:ne,action:l});const ie=getOnChainCreation$2(n,d,H,l),P=[];for(let V=0;V<d.length;V+=1){const{outputUtxos:ve}=outputUtxoProcessing(a.userKeys,T[V],n[V]);P.push(ve)}const W=getExternalActionAddressForCurve(a,ne),U=getExternalActionMetadata$2(l,c,T),S=await a.getRandomRelay();if(!S)throw Error(transactionErrorCodes.RELAYER_NOT_AVAILABLE);const{zkCallData:M,circomData:ae,dimData:Ae}=await constructZkProof(a.merkleTreeHinkal,a.merkleTreeAccessToken,T,P,a.userKeys,O,ne,W,U,S,a.getCurrentChainId(),ie,B);return A?await estimateGasRelayer(a,M,Ae,ae):await transactCallRelayer(a.getCurrentChainId(),M,Ae,ae)},skipApprovalIfAlreadyHave=async(a,d,n)=>{const c=BigInt(await n.allowance(await n.signer.getAddress(),d.address));return a===c},clearAllowanceIfNecessary=async(a,d,n,c)=>{if(getNonLocalhostChainId(a.getCurrentChainId())!==chainIds.ethMainnet||n.symbol.toLowerCase()!=="usdt"||BigInt(await c.allowance(await c.signer.getAddress(),d.address))===0n)return;const h=await c.approve(d.address,0n);h&&"hash"in h&&await a.waitForTransaction(h.hash)},approveTokenToHinkal=async(a,d,n,c)=>{const l=a.getContractWithSigner(ContractType.ERC20Contract,c.erc20TokenAddress),h=c.approvalType??ApprovalType.Classic;if(h===ApprovalType.Classic||!a.isPermitterAvailable()){if(await skipApprovalIfAlreadyHave(n,d,l))return;await clearAllowanceIfNecessary(a,d,c,l);const U=await l.approve(d.address,n);U&&"hash"in U&&await a.waitForTransaction(U.hash);return}const A=await a.getEthereumAddress(),T=a.getContract(ContractType.PermitterContract),Q=await a.getContractWithFetcher(ContractType.ContractWithNonces,c.erc20TokenAddress).nonces(A),H=BigInt(Date.now()+permitSignatureValidFor)/1000n,ne={owner:A,holder:A,spender:T.address,value:n,nonce:Q,deadline:H,expiry:H,allowed:!0},{v:B,r:oe,s:ie}=splitSignature(await a.signTypedData({name:await l.name(),chainId:a.getCurrentChainId(),version:"1",verifyingContract:c.erc20TokenAddress},{Permit:h===ApprovalType.ERC20Permit?[{name:"owner",type:"address"},{name:"spender",type:"address"},{name:"value",type:"uint256"},{name:"nonce",type:"uint256"},{name:"deadline",type:"uint256"}]:[{name:"holder",type:"address"},{name:"spender",type:"address"},{name:"nonce",type:"uint256"},{name:"expiry",type:"uint256"},{name:"allowed",type:"bool"}]},ne));if(h===ApprovalType.ERC20Permit){const W=new Interface(["function permit(address owner,address spender,uint256 value,uint256 deadline,uint8 v,bytes32 r,bytes32 s) external"]);return arrayify(W.encodeFunctionData("permit",[ne.owner,ne.spender,ne.value,ne.deadline,B,arrayify(oe),arrayify(ie)])).slice(4)}const P=new Interface(["function permit(address holder,address spender,uint256 nonce,uint256 expiry,bool allowed,uint8 v,bytes32 r,bytes32 s) external"]);return arrayify(P.encodeFunctionData("permit",[ne.holder,ne.spender,ne.nonce,ne.expiry,ne.allowed,B,arrayify(oe),arrayify(ie)])).slice(4)},transactCallDirect=async(a,d,n,c,l,h,A,T)=>{const O=a.getContractWithSigner(ContractType.HinkalContract),Q=await a.getEthereumAddress(),H=A??O,ne=T??O,B="transact";console.log("before the direct transaction"),d>0n&&n.erc20TokenAddress!==zeroAddress&&await approveTokenToHinkal(a,H,d,n);const oe={value:d>0n&&n.erc20TokenAddress===zeroAddress?BigInt(d).toString():void 0};let ie;try{ie=(await ne.estimateGas[B](c[0],c[1],c[2],h,l,{...oe,from:Q})).toNumber(),console.log({"gas costs of deposit":ie})}catch(U){console.log("hinkalDeposit: gas estimation error: ",{err:U})}const P=ie&&ie>=0?Math.ceil(ie*12/10):void 0;return oe.gasLimit=P,await waitLittle(),await ne[B](c[0],c[1],c[2],h,l,oe)},getOnChainCreation$1=a=>{let d=[];return a===PendleAction.Deposit?d=[!1,!0]:a===PendleAction.Withdraw?d=[!1,!0]:a===PendleAction.SwapFromYt?d=[!1,!0,!0]:a===PendleAction.SwapToYt?d=[!1,!1,!0]:a===PendleAction.SwapPt?d=[!1,!0]:a===PendleAction.Mint?d=[!1,!0,!1,!0]:a===PendleAction.Redeem?d=[!1,!1,!0,!0]:a===PendleAction.Checkpoint&&(d=[!1,!0]),d},getExternalActionMetadata$1=(a,d)=>{const{pendleAction:n,ytAddress:c,userAddress:l,evmData:h}=a,A=h??"0x00",T=l??zeroAddress;if([PendleAction.Deposit,PendleAction.Withdraw,PendleAction.SwapFromYt,PendleAction.SwapToYt,PendleAction.SwapPt,PendleAction.Mint,PendleAction.Redeem,PendleAction.Checkpoint].includes(a.pendleAction))return defaultAbiCoder.encode(["uint8","address","uint256","uint256","address","bool","bytes"],[n,c,d[0][0].amount,d[0][0].timeStamp,T,!0,A]);throw new Error("Not implemented")},hinkalActionPendle=async(a,d,n,c,l,h=!1)=>{const A=ExternalActionId.Pendle,{pendleAction:T}=c,O=[...await addPaddingToUtxos(a,d,n)],Q=`swapperMO${n.length.toString()}x${O[0].length}x1`;console.log({inputUtxosArray:O,circuitName:Q,pendleMetadata:c});const{flatFees:H,feeUnit:ne}=await getFlatFees(a.getCurrentChainId(),d,A,n,T,l);console.log("hinkalActionPendle flatFees:",H),n=processAmountChanges({erc20Addresses:d,amountChanges:n,flatFees:H,feeUnit:ne,externalActionId:A,action:T,gasTokenAddress:l});const B=[];for(let F=0;F<d.length;F+=1){const{outputUtxos:Ee}=outputUtxoProcessing(a.userKeys,O[F],n[F]);B.push(Ee)}const oe=getOnChainCreation$1(T),{contractData:ie}=networkRegistry[a.getCurrentChainId()],P=ie?.pendleExternalActionInstanceAddress,W=getExternalActionMetadata$1(c,O),U=T===PendleAction.Deposit||c.isRelayerOff?zeroAddress:await a.getRandomRelay();if(!U)throw Error(transactionErrorCodes.RELAYER_NOT_AVAILABLE);const S=`0x0${T.toString(16)}`,M={...defaultHookData,preHookMetadata:S},{zkCallData:ae,circomData:Ae,dimData:Re}=await constructZkProof(a.merkleTreeHinkal,a.merkleTreeAccessToken,O,B,a.userKeys,Q,A,P,W,U,a.getCurrentChainId(),oe,H,M);if(console.log("hinkalActionPendle: zkCallData, dimData, circomData:",{zkCallData:ae,dimData:Re,circomData:Ae}),h)return await estimateGasRelayer(a,ae,Re,Ae);const V=a.getCurrentChainId();if(T===PendleAction.Deposit){console.log("inside pendle deposit");const F=getERC20Token(c.ytAddress,V);if(!F)throw Error("Yt Token not found");const Ee=a.getContractWithSigner(ContractType.PendleGeneralExternalAction),ge=a.getContractWithSigner(ContractType.HinkalWrapper);return await transactCallDirect(a,n[0],F,ae,Ae,Re,Ee,ge)}if(T===PendleAction.Withdraw&&c.isRelayerOff){const F=getERC20Token(c.ytAddress,V);if(!F)throw Error("Yt Token not found");return await transactCallDirect(a,n[0],F,ae,Ae,Re)}return await transactCallRelayer(a.getCurrentChainId(),ae,Re,Ae)},hinkalDeposit=async(a,d,n)=>{const c=getERC20Token(d[0],a.getCurrentChainId());if(!c)throw Error("Deposit Action: No Token Found");const l=n[0],h={externalActionId:0n,externalAddress:await a.getEthereumAddress(),externalActionMetadata:"0x00"},A=[...await addPaddingToUtxos(a,d,n)],T=`swapperM${n.length.toString()}x${A[0].length}x1`,O=[];for(let oe=0;oe<d.length;oe+=1){const{outputUtxos:ie}=outputUtxoProcessing(a.userKeys,A[oe],n[oe]);O.push(ie)}const{zkCallData:Q,circomData:H,dimData:ne}=await constructZkProof(a.merkleTreeHinkal,a.merkleTreeAccessToken,A,O,a.userKeys,T,h.externalActionId,h.externalAddress,h.externalActionMetadata,zeroAddress,a.getCurrentChainId());return console.log("after proof generation"),await transactCallDirect(a,l,c,Q,H,ne)},hinkalDepositForOther=async(a,d,n,c)=>{console.log({recipinetInfo:c});const[l,h,A]=c.split(","),T=!l||!h||!A,O=h?.substring(0,2)!=="0x"||A?.substring(0,2)!=="0x",Q=A?.length!==66||h?.length>66||h?.length<64,H=c?.includes('"');if(T||O||Q||H)throw Error(transactionErrorCodes.RECIPIENT_FORMAT_INCORRECT);const ne=[BigInt(l)],B=[h],oe=d.map(Ae=>[new Utxo({amount:0n,erc20TokenAddress:Ae,shieldedPrivateKey:a.userKeys.getShieldedPrivateKey()}),new Utxo({amount:0n,erc20TokenAddress:Ae,shieldedPrivateKey:a.userKeys.getShieldedPrivateKey()})]),ie=`swapperM${n.length.toString()}x${oe[0].length}x1`,P=d.map((Ae,Re)=>[new Utxo({amount:n[Re],erc20TokenAddress:Ae,randomization:ne[Re],stealthAddress:B[Re],encryptionKey:A})]),{zkCallData:W,circomData:U,dimData:S}=await constructZkProof(a.merkleTreeHinkal,a.merkleTreeAccessToken,oe,P,a.userKeys,ie,0n,await a.getEthereumAddress(),"0x00",zeroAddress,a.getCurrentChainId()),M=getERC20Token(d[0],a.getCurrentChainId());if(!M)throw Error("Withdraw Action: No Token Found");return await transactCallDirect(a,n[0],M,W,U,S)},getExternalAddress=(a,d)=>{const{contractData:n}=networkRegistry[a.getCurrentChainId()];let c;switch(d){case ExternalActionId.Uniswap:c=n?.uniswapExternalActionAddress;break;case ExternalActionId.Odos:c=n?.odosExternalActionInstanceAddress;break;case ExternalActionId.OneInch:c=n?.oneInchExternalActionInstanceAddress;break;default:c=n?.uniswapExternalActionAddress;break}if(!c)throw new Error("No external Address set during swap");return c},hinkalSwap=async(a,d,n,c,l,h=!1,A=!1)=>{const{flatFees:T,feeUnit:O}=await getFlatFees(a.getCurrentChainId(),d,c,n);n=processAmountChanges({erc20Addresses:d,amountChanges:n,flatFees:T,feeUnit:O,externalActionId:c});const Q=getExternalAddress(a,c),H={externalActionId:c,externalAddress:Q,externalActionMetadata:l},ne=[...await addPaddingToUtxos(a,d,n)],B=`swapperM${n.length.toString()}x${ne[0].length}x1`,oe=[!1,!0],ie=[];for(let ae=0;ae<d.length;ae+=1){const{outputUtxos:Ae}=outputUtxoProcessing(a.userKeys,ne[ae],n[ae]);ie.push(Ae)}const P=await a.getRandomRelay();if(!P)throw Error(transactionErrorCodes.RELAYER_NOT_AVAILABLE);const{zkCallData:W,circomData:U,dimData:S}=await constructZkProof(a.merkleTreeHinkal,a.merkleTreeAccessToken,ne,ie,a.userKeys,B,H.externalActionId,H.externalAddress,H.externalActionMetadata,P,a.getCurrentChainId(),oe,T);return h?await estimateGasRelayer(a,W,S,U):await transactCallRelayer(a.getCurrentChainId(),W,S,U,A)},hinkalWithdraw=async(a,d,n,c,l,h=!1)=>{const{flatFees:A,feeUnit:T}=await getFlatFees(a.getCurrentChainId(),d,ExternalActionId.Transact,n);l||processAmountChanges({erc20Addresses:d,amountChanges:n,flatFees:A,feeUnit:T,externalActionId:ExternalActionId.Transact});const O=getERC20Token(d[0],a.getCurrentChainId());if(!O)throw Error("Deposit Action: No Token Found");const Q={externalActionId:0n,externalAddress:c,externalActionMetadata:"0x00"},H=[...await addPaddingToUtxos(a,d,n)],ne=`swapperM${n.length.toString()}x${H[0].length}x1`,B=[!1],oe=[];for(let M=0;M<d.length;M+=1){const{outputUtxos:ae}=outputUtxoProcessing(a.userKeys,H[M],n[M]);oe.push(ae)}const ie=await a.getRandomRelay();if(!l&&!ie)throw Error(transactionErrorCodes.RELAYER_NOT_AVAILABLE);const{zkCallData:P,circomData:W,dimData:U}=await constructZkProof(a.merkleTreeHinkal,a.merkleTreeAccessToken,H,oe,a.userKeys,ne,Q.externalActionId,Q.externalAddress,Q.externalActionMetadata,l?zeroAddress:ie,a.getCurrentChainId(),B,A);if(h)return await estimateGasRelayer(a,P,U,W);if(l){if(!O)throw Error("Withdraw Action: No Token Found");return await transactCallDirect(a,n[0],O,P,W,U)}return await transactCallRelayer(a.getCurrentChainId(),P,U,W)};let didPreprocess=!1;const preProcessing=async()=>{didPreprocess||(await poseidonHolder.init(),await jubHolder.init(),didPreprocess=!0)};class MerkleTreeIncompleteError extends Error{constructor(){super("Merkle tree is incomplete"),this.name="MerkleTreeIncompleteError"}}class MerkleTree{constructor(d,n,c,l,h,A){this.hashFunction=d,this.levels=n,this.defaultNodeValue=c,this.tree=l??new Map,this.count=A??0n,this.index=h??2n**(n-1n)}tree;count;index;static createWithData(d,n,c,l,h,A){return new MerkleTree(l,h,A,d,n,c)}static create(d,n,c){return new MerkleTree(d,n,c)}getStartIndex(){return 2n**(this.levels-1n)}logarithm2(d){let n=0n;for(;2n**n<d;)n+=1n;return n}bigIntMax(d,n){return d>n?d:n}forceInsert(d,n){if(n<this.getStartIndex())throw new RangeError;this.tree.set(n,d);const c=this.index-this.getStartIndex(),l=this.logarithm2(c);let h=n;for(let A=1n;A<=l;A+=1n){h/=2n;const T=this.hashFunction(this.tree.get(h*2n)||this.defaultNodeValue,this.tree.get(h*2n+1n)||this.defaultNodeValue);this.tree.set(h,T)}}insert(d,n){let c=!1;return this.tree.has(n)&&(c=!0,logError(`Editing commitment index: ${n} `)),c||(this.count+=1n),this.index=this.bigIntMax(this.index,n+1n),this.forceInsert(d,n),!0}remove(d){this.forceInsert(this.defaultNodeValue,d)}completenessCheck(){if(this.count!==this.index-this.getStartIndex())throw new MerkleTreeIncompleteError}getRootHash(){this.completenessCheck();for(let d=1n;d<2n**this.levels;d*=2n)if(this.tree.get(d))return this.tree.get(d);return this.defaultNodeValue}getMerkleData(){return this.completenessCheck(),new Map(this.tree)}getSiblingIndex(d){return d===1n?1n:d%2n===1n?d-1n:d+1n}getSiblingHashesForVerification(d){this.completenessCheck();let n;for(let l=this.getStartIndex();l<this.getStartIndex()+this.index;l+=1n)if(this.tree.get(l)===d){n=l;break}if(n===void 0)return new Array(Number(this.levels)).fill(0n);const c=[];for(;n!==0n;)c.push(this.tree.get(this.getSiblingIndex(n))||this.defaultNodeValue),n/=2n;return c}getSiblingSides(d){this.completenessCheck();let n;for(let l=this.getStartIndex();l<this.getStartIndex()+this.index;l+=1n)if(this.tree.get(l)===d){n=l;break}if(n===void 0)return new Array(Number(this.levels)).fill(0n);const c=[];for(;n!==0n;){const l=n%2n===0n?0n:1n;c.push(l),n/=2n}return c}toJSON(){const{tree:d,count:n,index:c}=this;return{tree:Object.fromEntries(d),count:n.toString(),index:c.toString()}}}const blockReorgDepth={[chainIds.ethMainnet]:3,[chainIds.bnbMainnet]:10,[chainIds.polygon]:32,[chainIds.avalanche]:1,[chainIds.arbMainnet]:1,[chainIds.optimism]:1,[chainIds.base]:1,[chainIds.blast]:1,[chainIds.localhost]:1};class AbstractEventService{contract;eventConfig;_latestBlockNumber;maxPageSize;isReady=!1;_onNewEvent;isServer;intervalId;inProgress;constructor(d,n,c,l,h){this.contract=d,this.eventConfig=n,this._latestBlockNumber=c,this.maxPageSize=h,this.isServer=l,this.inProgress=!1}get latestBlockNumber(){return this._latestBlockNumber}set onNewEvent(d){this._onNewEvent=d}intervalClear(){this.isReady=!1,this._onNewEvent=void 0,clearInterval(this.intervalId)}async init(){if(this.isReady)throw new Error("Already initialized");this.isReady=!0,await this.retrieveEvents(this._latestBlockNumber+1),this.intervalId=setInterval(async()=>{await this.retrieveEvents(this.latestBlockNumber)},3500)}requireReady(){if(!this.isReady)throw new Error("Not ready")}emitNewEvent(d){this._onNewEvent?.(d)}getLastBlockNumberForEventRequest=async()=>{const d=await this.contract.provider.getBlockNumber();if(!this.isServer)return d;const{chainId:n}=await this.contract.provider.getNetwork();return Math.max(this.latestBlockNumber,d-blockReorgDepth[n]+1)};async retrieveEvents(d,n=!1){try{if(this.requireReady(),this.inProgress&&!n)return!1;this.inProgress=!0;const c=await this.getLastBlockNumberForEventRequest();if(c<d)return this.inProgress=!1,!1;const l=getSequence(d,c,this.maxPageSize);return await resolveSync(l.map(({from:h,to:A})=>async()=>{const T=await this.contract.queryFilter(this.contract.filters[this.eventConfig.name](),h,A);let O=[];T.length>0&&(O=await this.processEventsPage(T)),this._latestBlockNumber=A,await this.afterEventsAccepted(),O.length>0&&this.emitNewEvent()})),this.inProgress=!1,!0}catch(c){return console.log("retrieveEvents error:",{err:c}),this.inProgress=!1,!1}}async processEventsPage(d){const n=[];return await resolveSync(d.map(c=>async()=>{const{args:l,blockNumber:h}=c;if(!l)throw new Error("Wrong event structure");const A=this.mapEvent(l);await this.acceptEvent(A,h)&&n.push(A)})),n}handleEvent=async(...d)=>{const{args:n}=this.eventConfig,{blockNumber:c}=d[d.length-1],l=d.slice(0,n.length),h=n.reduce((O,Q,H)=>(O[Q]=l[H],O),{});if(!c)throw new Error("Wrong event structure");const A=this.mapEvent(h);if(!await this.acceptEvent(A,c))throw new Error("Failed to retrieve events");this._latestBlockNumber=c,await this.afterEventsAccepted(),this.emitNewEvent(A)}}class AbstractSnapshotService extends AbstractEventService{reserveBlockNumber;constructor(d,n,c,l,h){super(d,n,c,l,h),this.reserveBlockNumber=c}async init(){await this.loadSnapshot(),await super.init()}async retrieveEventsFromLatestBlock(){await super.retrieveEvents(this._latestBlockNumber)}async restoreSnapshotState(){await this.retrieveEvents(this.reserveBlockNumber,!0)&&(this.reserveBlockNumber=this.latestBlockNumber,await this.afterEventsAccepted())}async loadSnapshot(){const d=await this.fetchSnapshot(),n=this.deserializeSnapshot(d);this.populateSnapshot(n),this._latestBlockNumber=n.latestBlockNumber,this.reserveBlockNumber=n.reserveBlockNumber}saveSnapshot(){return this.persistSnapshot(this.serializeSnapshot({latestBlockNumber:this._latestBlockNumber,reserveBlockNumber:this.reserveBlockNumber,payload:this.getSnapshotPayload()}))}afterEventsAccepted(){return this.saveSnapshot()}}class AbstractAccessTokenSnapshotService extends AbstractSnapshotService{constructor(d,n,c,l){super(d,{name:"NewAccessKeyAdded",args:["accessKey","index","senderAddress"]},n,c,l)}_merkleTree;_senderAddresses;_senderAddressIndexMap;get merkleTree(){return this._merkleTree}get senderAddresses(){return this._senderAddresses}get senderAddressIndexMap(){return this._senderAddressIndexMap}serializeSnapshot(d){return{merkleTree:d.payload.merkleTree.toJSON(),senderAddresses:Array.from(d.payload.senderAddresses),latestBlockNumber:d.latestBlockNumber,reserveBlockNumber:d.reserveBlockNumber,senderAddressIndexMap:Array.from(d.payload.senderAddressIndexMap).map(([n,c])=>({address:n,index:c}))}}deserializeSnapshot(d){let n,c;if(d.latestBlockNumber&&d.merkleTree){const l=new Map(Object.entries(d.merkleTree.tree).map(([h,A])=>[BigInt(h),BigInt(A)]));n=MerkleTree.createWithData(l,toBigInt(d.merkleTree.index),toBigInt(d.merkleTree.count),poseidonFunction,25n,0n)}else n=MerkleTree.create(poseidonFunction,25n,0n);return d.latestBlockNumber&&d.senderAddressIndexMap?c=new Map(d.senderAddressIndexMap.map(({address:l,index:h})=>[l,h])):c=new Map,{latestBlockNumber:d.latestBlockNumber??0,reserveBlockNumber:d.reserveBlockNumber??0,payload:{merkleTree:n,senderAddresses:d.senderAddresses??[],senderAddressIndexMap:c}}}acceptEvent(d,n){try{return this._merkleTree.insert(d.accessKey,d.index),this._senderAddressIndexMap.set(d.senderAddress,Math.max(Number(d.index),this._senderAddressIndexMap.get(d.senderAddress)??0)),this._senderAddresses.includes(d.senderAddress)||this._senderAddresses.push(d.senderAddress),d.accessKey===0n&&d.senderAddress===zeroAddress&&this._merkleTree.remove(d.index),!0}catch(c){return console.error(c),!1}}mapEvent(d){const{accessKey:n,index:c,senderAddress:l}=d;return{accessKey:toBigInt(n),index:toBigInt(c),senderAddress:l}}getSnapshotPayload(){return{merkleTree:this._merkleTree,senderAddresses:this._senderAddresses,senderAddressIndexMap:this._senderAddressIndexMap}}populateSnapshot({payload:{merkleTree:d,senderAddresses:n,senderAddressIndexMap:c}}){this._merkleTree=d,this._senderAddresses=n,this._senderAddressIndexMap=c}}class AbstractCommitmentsSnapshotService extends AbstractSnapshotService{constructor(d,n,c,l){super(d,{name:"NewCommitment",args:["commitment","index","encryptedOutput"]},n,c,l)}_merkleTree;_encryptedOutputs;get merkleTree(){return this._merkleTree}get encryptedOutputs(){return this._encryptedOutputs}serializeSnapshot(d){return{merkleTree:d.payload.merkleTree.toJSON(),latestBlockNumber:d.latestBlockNumber,reserveBlockNumber:d.reserveBlockNumber,encryptedOutputs:d.payload.encryptedOutputs.map(n=>({value:n.value,isPositive:String(n.isPositive)}))}}deserializeSnapshot(d){let n;if(d.latestBlockNumber&&d.merkleTree){const l=new Map(Object.entries(d.merkleTree.tree).map(([h,A])=>[BigInt(h),BigInt(A)]));n=MerkleTree.createWithData(l,toBigInt(d.merkleTree.index),toBigInt(d.merkleTree.count),poseidonFunction,25n,0n)}else n=MerkleTree.create(poseidonFunction,25n,0n);const c=d.encryptedOutputs?.map(l=>({value:l.value,isPositive:JSON.parse(l.isPositive)}));return{latestBlockNumber:d.latestBlockNumber??0,reserveBlockNumber:d.reserveBlockNumber??0,payload:{merkleTree:n,encryptedOutputs:c||[]}}}getSnapshotPayload(){return{merkleTree:this._merkleTree,encryptedOutputs:this._encryptedOutputs}}populateSnapshot({payload:{merkleTree:d,encryptedOutputs:n}}){this._merkleTree=d,this._encryptedOutputs=n}mapEvent(d){const{commitment:n,index:c,encryptedOutput:l}=d;return{commitment:toBigInt(n),index:toBigInt(c),encryptedOutput:l}}acceptEvent(d,n){if(!this.encryptedOutputs.map(c=>c.value).includes(d.encryptedOutput)){if(this.isServer&&console.log(`Adding commitment to file ${d.commitment} at index ${d.index} for encrypted output ${d.encryptedOutput}. Block Number: ${n}
|
|
212
|
+
Please try again with ${ie.symbol}`;throw new ErrorWithAmount(P,W)}T.push(B)}else if(H.length<=c){const B=[...H];let oe=c-H.length;for(;oe>0;)oe-=1,B.push(new Utxo({amount:0n,erc20TokenAddress:d[ne],shieldedPrivateKey:A.getShieldedPrivateKey(),tokenId:l[ne]}));T.push(B)}}),T)};var WorkerVariant=(a=>(a.ZKProof="ZKProof",a.SnarkJS="SnarkJS",a.UTXO="UTXO",a))(WorkerVariant||{});class WorkerFactory{static isRunningInNode=typeof process<"u"&&process.versions!=null&&process.versions.node!=null;constructor(){}static resolveWorkerURL=async d=>{const n=typeof document<"u"&&document?.location?.href||"",{workerViteURL:c}=await Promise.resolve().then(()=>require("./viteWorkerURL.constant-Bc4P76KI.js"));return new URL(c[d],n)};static createWorker=async d=>{if(WorkerFactory.isRunningInNode){let c;return d===WorkerVariant.SnarkJS?c=await Promise.resolve().then(()=>require("./snarkjsWorkerLogic-CATeRJwr.js")):d===WorkerVariant.ZKProof?c=await Promise.resolve().then(()=>require("./zkProofWorkerLogic-C_M3Ctn4.js")):d===WorkerVariant.UTXO&&(c=await Promise.resolve().then(()=>require("./utxoWorkerLogic-GBZ1g_EM.js"))),c.default}const n=await WorkerFactory.resolveWorkerURL(d);return new Worker(n,{type:"module"})};static getWebWorker(d){switch(d){case WorkerVariant.ZKProof:return WorkerFactory.createWorker(d);case WorkerVariant.SnarkJS:return WorkerFactory.createWorker(d);case WorkerVariant.UTXO:return WorkerFactory.createWorker(d);default:throw Error(`Unknown worker type: ${d}`)}}}const performTaskWithWorker=async a=>{const d=await WorkerFactory.getWebWorker(a.type);return new Promise((n,c)=>{let l={};if(typeof window<"u"&&window.location){const{origin:A,protocol:T,host:O,port:Q,hostname:H,href:ne}=window.location;l={origin:A,protocol:T,host:O,port:Q,hostname:H,href:ne}}d.onmessage=A=>{n(A.data),d.terminate()},d.onerror=A=>{c(A),d.terminate()};const h={payload:a.payload,metadata:{hostLocation:l,constants:{chains:{chainIds},isDevelopment}}};d.postMessage(h)})};var ZKProofWorkerActionType=(a=>(a[a.CALC_COMMITMENTS_SIBLING_AND_SIDES=0]="CALC_COMMITMENTS_SIBLING_AND_SIDES",a[a.CALC_ACCESS_TOKEN_SIBLING_AND_SIDES=1]="CALC_ACCESS_TOKEN_SIBLING_AND_SIDES",a[a.BUILD_IN_NULLIFIERS=2]="BUILD_IN_NULLIFIERS",a))(ZKProofWorkerActionType||{});const buildInNullifiers=(a,d)=>a.map((n,c)=>n.map(l=>d[c]?"0":l.getNullifier())),buildOutCommitments=(a,d)=>a.map((n,c)=>n.map(l=>d[c]?"0":l.getCommitment())),calcAmountChanges=(a,d,n=!1)=>{const c=[];for(let l=0;l<a.length;l+=1){let h=0n,A=0n;for(let T=0;T<a[l].length;T+=1)h+=a[l][T].amount;for(let T=0;T<d[l].length;T+=1)A+=d[l][T].amount;A-h<0?n?c.push(A-h):c.push(CIRCOM_P+(A-h)):c.push(A-h)}return c},calcEncryptedOutputs=(a,d)=>{const n=[[""]];for(let c=0;c<a.length;c+=1)c>0&&n.push([""]),a[c].forEach((l,h)=>{n[c][h]=`0x${Buffer.from(encryptUtxo(l,d)).toString("hex")}`});return n},calcCommitmentsSiblingAndSides=(a,d)=>{const n=[];for(let l=0;l<a.length;l+=1){n.push([]);for(let h=0;h<a[l].length;h+=1)n[l][h]=d.getSiblingHashesForVerification(BigInt(a[l][h].getCommitment())).map(A=>A.toString())}const c=[];for(let l=0;l<a.length;l+=1){c.push([]);for(let h=0;h<a[l].length;h+=1)c[l][h]=d.getSiblingSides(BigInt(a[l][h].getCommitment())).map(A=>A.toString())}return{inCommitmentSiblings:n,inCommitmentSiblingSides:c}},calcAccessTokenSiblingsAndSides=(a,d)=>{const n=d.getSiblingHashesForVerification(BigInt(a.getAccessKey())).map(l=>l.toString()),c=d.getSiblingSides(BigInt(a.getAccessKey())).map(l=>l.toString());return{accessTokenSiblings:n,accessTokenSiblingSides:c}},serializeCircomData=a=>{const d={...a};return d.amountChanges=a.amountChanges.map(n=>n.toString()),d.calldataHash=a.calldataHash.toString(),d.rootHashAccessToken=a.rootHashAccessToken?.toString(),d.stealthAddressStructure.extraRandomization=a.stealthAddressStructure.extraRandomization.toString(),d.stealthAddressStructure.stealthAddress=a.stealthAddressStructure.stealthAddress.toString(),d.stealthAddressStructure.H0=a.stealthAddressStructure.H0.toString(),d.stealthAddressStructure.H1=a.stealthAddressStructure.H1.toString(),d.rootHashHinkal=a.rootHashHinkal?.toString(),d.externalActionId=a.externalActionId?.toString(),d.flatFees=a.flatFees.map(n=>n.toString()),d},deserializeCircomData=a=>{const d={...a};return d.amountChanges=a.amountChanges.map(n=>BigInt(n)),d.calldataHash=BigInt(a.calldataHash),d.rootHashAccessToken=BigInt(a.rootHashAccessToken),d.rootHashHinkal=BigInt(a.rootHashHinkal),d.externalActionId=BigInt(a.externalActionId),d},createCallDataHash=(a,d,n,c,l,h,A,T)=>{const O=Object.values(T||defaultHookData),Q=defaultAbiCoder.encode(["uint16","address","address","uint256","bytes","tuple(address, address, bytes, bytes)","bytes[][]","uint256[]"],[a,d,n,typeof c=="bigint"?c:getExternalActionIdHash(c),l,O,h,A]);return BigInt(keccak256$2(Q))%CIRCOM_P},calculateOutputSignalCount=a=>a.startsWith("swapperMO")||a.startsWith("swapperME")?2:a.startsWith("swapperMW")?1:0,calcPublicSignalCount=(a,d,n,c,l,h)=>{const A=calculateOutputSignalCount(a);return 9+d.length+n.length+c.flat().length+l.length+A+h},calcStealthAddressStructure=(a,d)=>{const{h0:n,h1:c}=UserKeys.getStealthAddressCompressedPoints(a,d),l=BigInt(UserKeys.getStealthAddress(a,d));return{extraRandomization:a,H0:n,H1:c,stealthAddress:l}},generateCircomData=async(a,d,n,c,l,h,A,T,O,Q,H,ne,B,oe,ie,P)=>{const W=calcAmountChanges(n,c,!0),U=n.map(ae=>ae.map(Ae=>Ae.getConstructableParams())),S=await performTaskWithWorker({type:WorkerVariant.ZKProof,payload:{type:ZKProofWorkerActionType.BUILD_IN_NULLIFIERS,data:{inputUtxosSerialized:U,onChainCreation:ie}}});return{rootHashHinkal:a,erc20TokenAddresses:n.map(ae=>ae[0].erc20TokenAddress),tokenIds:B.map(ae=>String(ae)),amountChanges:W,inputNullifiers:S,outCommitments:buildOutCommitments(c,ie),encryptedOutputs:l,flatFees:h,timeStamp:c[0][0].timeStamp,stealthAddressStructure:oe,rootHashAccessToken:d,relay:H,externalAddress:O===void 0?zeroAddress:O,externalActionMetadata:Q,externalActionId:typeof T=="bigint"?0n:getExternalActionIdHash(T),hookData:P||defaultHookData,publicSignalCount:A,calldataHash:ne}};var SnarkJSWorkerActionType=(a=>(a[a.FULL_PROVE=0]="FULL_PROVE",a))(SnarkJSWorkerActionType||{});const s3Urls={ethMainnet:"https://hinkal-zk-verifiers-may-2024.s3.us-west-1.amazonaws.com/",polygon:"https://hinkal-zk-new-verifiers.s3.us-west-1.amazonaws.com/",bnb:"https://hinkal-zk-verifiers-may-2024.s3.us-west-1.amazonaws.com/",arbitrum:"https://hinkal-zk-verifiers-may-2024.s3.us-west-1.amazonaws.com/",optimism:"https://hinkal-zk-new-verifiers.s3.us-west-1.amazonaws.com/",avalanche:"https://hinkal-zk-new-verifiers.s3.us-west-1.amazonaws.com/",base:"https://hinkal-zk-verifiers-may-2024.s3.us-west-1.amazonaws.com/",blast:"https://hinkal-zk-verifiers-may-2024.s3.us-west-1.amazonaws.com/"},getVerifiersS3BucketUrlProd=a=>{switch(a){case chainIds.ethMainnet:return s3Urls.ethMainnet;case chainIds.polygon:return s3Urls.polygon;case chainIds.bnbMainnet:return s3Urls.bnb;case chainIds.arbMainnet:return s3Urls.arbitrum;case chainIds.optimism:return s3Urls.optimism;case chainIds.avalanche:return s3Urls.avalanche;case chainIds.base:return s3Urls.base;case chainIds.blast:return s3Urls.blast;default:return logError("Warning: no S3 bucket specified for selected chainid: ",a),s3Urls.polygon}},prodVerifiers=a=>{const d=getVerifiersS3BucketUrlProd(a);return{swapperM1x2x1Zkey:`${d}swapperM1x2x1_final-31337.zkey`,swapperM1x2x1Wasm:`${d}swapperM1x2x1-31337.wasm`,swapperM1x6x1Zkey:`${d}swapperM1x6x1_final-31337.zkey`,swapperM1x6x1Wasm:`${d}swapperM1x6x1-31337.wasm`,swapperME1x2x1Zkey:`${d}swapperME1x2x1_final-31337.zkey`,swapperME1x2x1Wasm:`${d}swapperME1x2x1-31337.wasm`,swapperM2x2x1Zkey:`${d}swapperM2x2x1_final-31337.zkey`,swapperM2x2x1Wasm:`${d}swapperM2x2x1-31337.wasm`,swapperM2x6x1Zkey:`${d}swapperM2x6x1_final-31337.zkey`,swapperM2x6x1Wasm:`${d}swapperM2x6x1-31337.wasm`,swapperMO2x2x1Zkey:`${d}swapperMO2x2x1_final-31337.zkey`,swapperMO2x2x1Wasm:`${d}swapperMO2x2x1-31337.wasm`,swapperMO2x6x1Zkey:`${d}swapperMO2x6x1_final-31337.zkey`,swapperMO2x6x1Wasm:`${d}swapperMO2x6x1-31337.wasm`,swapperToken2x2x1Zkey:`${d}swapperToken2x2x1_final-31337.zkey`,swapperToken2x2x1Wasm:`${d}swapperToken2x2x1-31337.wasm`,swapperToken2x6x1Zkey:`${d}swapperToken2x6x1_final-31337.zkey`,swapperToken2x6x1Wasm:`${d}swapperToken2x6x1-31337.wasm`,swapperM3x2x1Zkey:`${d}swapperM3x2x1_final-31337.zkey`,swapperM3x2x1Wasm:`${d}swapperM3x2x1-31337.wasm`,swapperM3x6x1Zkey:`${d}swapperM3x6x1_final-31337.zkey`,swapperM3x6x1Wasm:`${d}swapperM3x6x1-31337.wasm`,swapperMO3x2x1Zkey:`${d}swapperMO3x2x1_final-31337.zkey`,swapperMO3x2x1Wasm:`${d}swapperMO3x2x1-31337.wasm`,swapperMO3x6x1Zkey:`${d}swapperMO3x6x1_final-31337.zkey`,swapperMO3x6x1Wasm:`${d}swapperMO3x6x1-31337.wasm`,swapperM4x2x1Zkey:`${d}swapperM4x2x1_final-31337.zkey`,swapperM4x2x1Wasm:`${d}swapperM4x2x1-31337.wasm`,swapperM4x6x1Zkey:`${d}swapperM4x6x1_final-31337.zkey`,swapperM4x6x1Wasm:`${d}swapperM4x6x1-31337.wasm`,swapperMO4x2x1Zkey:`${d}swapperMO4x2x1_final-31337.zkey`,swapperMO4x2x1Wasm:`${d}swapperMO4x2x1-31337.wasm`,swapperMO4x6x1Zkey:`${d}swapperMO4x6x1_final-31337.zkey`,swapperMO4x6x1Wasm:`${d}swapperMO4x6x1-31337.wasm`,swapperM5x2x1Zkey:`${d}swapperM5x2x1_final-31337.zkey`,swapperM5x2x1Wasm:`${d}swapperM5x2x1-31337.wasm`,swapperM5x6x1Zkey:`${d}swapperM5x6x1_final-31337.zkey`,swapperM5x6x1Wasm:`${d}swapperM5x6x1-31337.wasm`,swapperMO5x2x1Zkey:`${d}swapperMO5x2x1_final-31337.zkey`,swapperMO5x2x1Wasm:`${d}swapperMO5x2x1-31337.wasm`,swapperMO5x6x1Zkey:`${d}swapperMO5x6x1_final-31337.zkey`,swapperMO5x6x1Wasm:`${d}swapperMO5x6x1-31337.wasm`,swapperMTS2x2x1Zkey:"swapperMTS2x2x1_final-31337.zkey",swapperMTS2x2x1Wasm:"swapperMTS2x2x1-31337.wasm",transactionsProverZkey:`${d}transactionsProver.zkey`,transactionsProverWasm:`${d}transactionsProver.wasm`,stakeProverZkey:`${d}StakeProver_final-31337.zkey`,stakeProverWasm:`${d}StakeProver-31337.wasm`,stakeProverPermissionlessZkey:`${d}StakeProverPermissionless_final-31337.zkey`,stakeProverPermissionlessWasm:`${d}StakeProverPermissionless-31337.wasm`}},localVerifiers={swapperM1x2x1Zkey:"swapperM1x2x1_final-31337.zkey",swapperM1x2x1Wasm:"swapperM1x2x1-31337.wasm",swapperM1x6x1Zkey:"swapperM1x6x1_final-31337.zkey",swapperM1x6x1Wasm:"swapperM1x6x1-31337.wasm",swapperMO1x2x1Zkey:"swapperMO1x2x1_final-31337.zkey",swapperMO1x2x1Wasm:"swapperMO1x2x1-31337.wasm",swapperMO1x6x1Zkey:"swapperMO1x6x1_final-31337.zkey",swapperMO1x6x1Wasm:"swapperMO1x6x1-31337.wasm",swapperME1x2x1Zkey:"swapperME1x2x1_final-31337.zkey",swapperME1x2x1Wasm:"swapperME1x2x1-31337.wasm",swapperM2x2x1Zkey:"swapperM2x2x1_final-31337.zkey",swapperM2x2x1Wasm:"swapperM2x2x1-31337.wasm",swapperM2x6x1Zkey:"swapperM2x6x1_final-31337.zkey",swapperM2x6x1Wasm:"swapperM2x6x1-31337.wasm",swapperMO2x2x1Zkey:"swapperMO2x2x1_final-31337.zkey",swapperMO2x2x1Wasm:"swapperMO2x2x1-31337.wasm",swapperMO2x6x1Zkey:"swapperMO2x6x1_final-31337.zkey",swapperMO2x6x1Wasm:"swapperMO2x6x1-31337.wasm",swapperToken2x2x1Zkey:"swapperToken2x2x1_final-31337.zkey",swapperToken2x2x1Wasm:"swapperToken2x2x1-31337.wasm",swapperToken2x6x1Zkey:"swapperToken2x6x1_final-31337.zkey",swapperToken2x6x1Wasm:"swapperToken2x6x1-31337.wasm",swapperM3x2x1Zkey:"swapperM3x2x1_final-31337.zkey",swapperM3x2x1Wasm:"swapperM3x2x1-31337.wasm",swapperM3x6x1Zkey:"swapperM3x6x1_final-31337.zkey",swapperM3x6x1Wasm:"swapperM3x6x1-31337.wasm",swapperMO3x2x1Zkey:"swapperMO3x2x1_final-31337.zkey",swapperMO3x2x1Wasm:"swapperMO3x2x1-31337.wasm",swapperMO3x6x1Zkey:"swapperMO3x6x1_final-31337.zkey",swapperMO3x6x1Wasm:"swapperMO3x6x1-31337.wasm",swapperM4x2x1Zkey:"swapperM4x2x1_final-31337.zkey",swapperM4x2x1Wasm:"swapperM4x2x1-31337.wasm",swapperM4x6x1Zkey:"swapperM4x6x1_final-31337.zkey",swapperM4x6x1Wasm:"swapperM4x6x1-31337.wasm",swapperMO4x2x1Zkey:"swapperMO4x2x1_final-31337.zkey",swapperMO4x2x1Wasm:"swapperMO4x2x1-31337.wasm",swapperMO4x6x1Zkey:"swapperMO4x6x1_final-31337.zkey",swapperMO4x6x1Wasm:"swapperMO4x6x1-31337.wasm",swapperM5x2x1Zkey:"swapperM5x2x1_final-31337.zkey",swapperM5x2x1Wasm:"swapperM5x2x1-31337.wasm",swapperM5x6x1Zkey:"swapperM5x6x1_final-31337.zkey",swapperM5x6x1Wasm:"swapperM5x6x1-31337.wasm",swapperMO5x2x1Zkey:"swapperMO5x2x1_final-31337.zkey",swapperMO5x2x1Wasm:"swapperMO5x2x1-31337.wasm",swapperMO5x6x1Zkey:"swapperMO5x6x1_final-31337.zkey",swapperMO5x6x1Wasm:"swapperMO5x6x1-31337.wasm",swapperMTS2x2x1Zkey:"swapperMTS2x2x1_final-31337.zkey",swapperMTS2x2x1Wasm:"swapperMTS2x2x1-31337.wasm",transactionsProverZkey:"transactionsProver.zkey",transactionsProverWasm:"transactionsProver.wasm",stakeProverZkey:"StakeProver_final-31337.zkey",stakeProverWasm:"StakeProver-31337.wasm",stakeProverPermissionlessZkey:"StakeProverPermissionless_final-31337.zkey",stakeProverPermissionlessWasm:"StakeProverPermissionless-31337.wasm",receiverZkey:"receiver_final-31337.zkey",receiverWasm:"receiver-31337.wasm",swapperMW1x2Wasm:"swapperMW1x2-31337.wasm",swapperMW1x2Zkey:"swapperMW1x2_final-31337.zkey",swapperMW1x6Wasm:"swapperMW1x6-31337.wasm",swapperMW1x6Zkey:"swapperMW1x6_final-31337.zkey",swapperMW2x2Wasm:"swapperMW2x2-31337.wasm",swapperMW2x2Zkey:"swapperMW2x2_final-31337.zkey",swapperMW2x6Wasm:"swapperMW2x6-31337.wasm",swapperMW2x6Zkey:"swapperMW2x6_final-31337.zkey",swapperMW3x2Wasm:"swapperMW3x2-31337.wasm",swapperMW3x2Zkey:"swapperMW3x2_final-31337.zkey",swapperMW3x6Wasm:"swapperMW3x6-31337.wasm",swapperMW3x6Zkey:"swapperMW3x6_final-31337.zkey",swapperMW4x2Wasm:"swapperMW4x2-31337.wasm",swapperMW4x2Zkey:"swapperMW4x2_final-31337.zkey",swapperMW4x6Wasm:"swapperMW4x6-31337.wasm",swapperMW4x6Zkey:"swapperMW4x6_final-31337.zkey",swapperMW5x2Wasm:"swapperMW5x2-31337.wasm",swapperMW5x2Zkey:"swapperMW5x2_final-31337.zkey",swapperMW5x6Wasm:"swapperMW5x6-31337.wasm",swapperMW5x6Zkey:"swapperMW5x6_final-31337.zkey"},getWASMFile=(a,d)=>d===chainIds.localhost?localVerifiers[`${a}Wasm`]:prodVerifiers(d)[`${a}Wasm`],getZKeyFile=(a,d)=>d===chainIds.localhost?localVerifiers[`${a}Zkey`]:prodVerifiers(d)[`${a}Zkey`],generateZkProof=async(a,d,n)=>{console.log("Zero Knowledge proof construction started, please wait...",getZKeyFile(d,a));const c=getWASMFile(d,a),l=getZKeyFile(d,a),{publicSignals:h,zkCallData:A}=await performTaskWithWorker({type:WorkerVariant.SnarkJS,payload:{type:SnarkJSWorkerActionType.FULL_PROVE,data:{input:n,chainId:a,wasmFilePath:c,zKeyFilePath:l}}});return console.log("Zero Knowledge proof construction finished "),{zkCallData:A,publicSignals:h}},constructZkProof=async(a,d,n,c,l,h,A,T,O,Q=zeroAddress,H=chainIds.localhost,ne=n.map(()=>!1),B=n.map(()=>0n),oe=void 0,ie)=>{const P=a.getRootHash(),W=d.getRootHash(),U=n.map($=>$.map(de=>de.getConstructableParams())),S=l.getSignature(),{accessTokenSiblings:M,accessTokenSiblingSides:ae}=await performTaskWithWorker({type:WorkerVariant.ZKProof,payload:{type:ZKProofWorkerActionType.CALC_ACCESS_TOKEN_SIBLING_AND_SIDES,data:{userSignature:S,merkleTreeAccessTokenSerialized:d.toJSON()}}}),{inCommitmentSiblings:Ae,inCommitmentSiblingSides:Re}=await performTaskWithWorker({type:WorkerVariant.ZKProof,payload:{type:ZKProofWorkerActionType.CALC_COMMITMENTS_SIBLING_AND_SIDES,data:{inputUtxosSerialized:U,userSignature:S,merkleTreeSerialized:a.toJSON()}}}),V=calcAmountChanges(n,c),ve=calcEncryptedOutputs(c,(ie&&ie.mode!==HinkalStakeMode.Deposit)??!1),F=l.getShieldedPrivateKey(),Ee=Utxo.findCorrectRandomization(randomBigInt(31),F),ge=await performTaskWithWorker({type:WorkerVariant.ZKProof,payload:{type:ZKProofWorkerActionType.BUILD_IN_NULLIFIERS,data:{inputUtxosSerialized:U,onChainCreation:ne}}}),se={rootHashHinkal:P,shieldedPrivateKey:F,erc20TokenAddresses:n.map($=>$[0].erc20TokenAddress),inAmounts:n.map($=>$.map(de=>de.amount.toString())),inTimeStamps:n.map($=>$.map(de=>de.timeStamp)),inRandomizations:n.map($=>$.map(de=>de.randomization)),inNullifiers:ge,inCommitmentSiblings:Ae,inCommitmentSiblingSides:Re,outAmounts:c.map($=>$.map(de=>de.amount.toString())),outTimeStamp:BigInt(c[0][0].timeStamp),outPublicKeys:c.map($=>$.map(de=>de.getStealthAddress())),extraRandomization:Ee,amountChanges:V,outCommitments:buildOutCommitments(c,ne),rootHashAccessToken:W,accessTokenSiblings:M,accessTokenSiblingSides:ae,calldataHash:0n};ie||(se.onChainCreation=ne);const X=n.map($=>$[0].tokenId??0),J=X.reduce(($,de)=>$+de,0)>0?X.length:0;J>0&&(se.tokenIds=X);const ye=calcPublicSignalCount(h,se.erc20TokenAddresses,se.amountChanges,se.inNullifiers,se.outCommitments,J);se.calldataHash=createCallDataHash(ye,Q,T,A,O,ve,B,oe),ie&&(ie.mode===HinkalStakeMode.Deposit&&(se.mode=0),ie.mode===HinkalStakeMode.Stake&&(se.mode=1),ie.mode===HinkalStakeMode.Unstake&&(se.mode=2),se.stakedTokenRecipient=ie.stakedTokenRecipient,se.stakeBlinding=ie.stakeBlinding,se.depositorAddress=ie.depositorAddress);const{zkCallData:fe,publicSignals:G}=await generateZkProof(H,h,se);console.log("publicSignals",G);const pe=calcStealthAddressStructure(Ee,F),Qe=await generateCircomData(P,W,n,c,ve,B,ye,A,T,O,Q,se.calldataHash,X,pe,ne,oe),Se={tokenNumber:n.length,nullifierAmount:n[0].length,outputAmount:c[0].length};return{zkCallData:fe,circomData:Qe,dimData:Se,encryptedOutputs:ve}},estimateGasRelayer=async(a,d,n,c)=>{const l=a.getContractWithFetcher(ContractType.HinkalContract),h=c.externalActionId===0n?"transact":"transactWithExternalAction";return(await l.estimateGas[h](d[0],d[1],d[2],n,c,{from:c.relay})).toBigInt()},getRelayerURL=a=>{let d;return deploymentMode===DEPLOYMENT_MODE.DEVELOPMENT?d=RELAYER_URLS:deploymentMode===DEPLOYMENT_MODE.STAGING?d=STAGING_RELAYER_URLS:deploymentMode===DEPLOYMENT_MODE.PLAYGROUND?d=PLAYGROUND_RELAYER_URLS:d=RELAYER_URLS,a===chainIds.polygon?d.polygon:a===chainIds.arbMainnet?d.arbMainnet:a===chainIds.ethMainnet?d.ethMainnet:a===chainIds.bnbMainnet?d.bnbMainnet:a===chainIds.avalanche?d.avalanche:a===chainIds.optimism?d.optimism:a===chainIds.base?d.base:a===chainIds.blast?d.blast:d.localhost};async function callRelayerTransactAPI(a,d){return(await axios$3.post(`${getRelayerURL(a)}${RELAYER_CONFIG.TRANSACT}`,d)).data}const transactCallRelayer=async(a,d,n,c,l)=>{const h=serializeCircomData(c),A=await callRelayerTransactAPI(a,{a:d[0],b:d[1],c:d[2],dimData:n,circomData:h,withPrivateMempool:l});if(A.status==="success")return A.message;throw new Error(A.error)},getExternalActionMetadata$3=(a,d,n,c,l,h)=>{let A;return l===ExternalActionId.BeefyStake?(A=defaultAbiCoder.encode(["uint8","address","uint256","uint256"],[Number(c),h,a[0][0].amount,a[0][0].timeStamp]),A):(d.length===1?A=defaultAbiCoder.encode(["uint8","bytes","bytes","address"],[Number(c),d[0],"0x00",n]):d.length===2?A=defaultAbiCoder.encode(["uint8","bytes","bytes","address"],[Number(c),d[0],d[1],n]):A=defaultAbiCoder.encode(["uint8","bytes","bytes","address"],[Number(c),"0x00","0x00",n]),A)},getOnChainCreation$3=(a,d,n)=>d===ExternalActionId.BeefyStake?n===BeefyAction.GetRewards?[!1,!0]:[!1,!1,!0]:a.map(c=>c>0n),hinkalActionBeefy=async(a,d,n,c,l,h,A,T=!1)=>{const O=[...await addPaddingToUtxos(a,d,n)],Q=`swapper${A?"MO":"M"}${n.length.toString()}x${O[0].length}x1`,H=A?ExternalActionId.BeefyStake:ExternalActionId.Beefy,{flatFees:ne,feeUnit:B}=await getFlatFees(a.getCurrentChainId(),d,H,n,c);n=processAmountChanges({erc20Addresses:d,amountChanges:n,flatFees:ne,feeUnit:B,externalActionId:H,action:c});const oe=getOnChainCreation$3(n,H,c);console.log({amountChanges:n,onChainCreation:oe});const ie=[];for(let V=0;V<d.length;V+=1){const{outputUtxos:ve}=outputUtxoProcessing(a.userKeys,O[V],n[V]);ie.push(ve)}const{contractData:P}=networkRegistry[a.getCurrentChainId()],W=H===ExternalActionId.BeefyStake?P.beefyStakeExternalActionInstanceAddress:P.beefyExternalActionInstanceAddress,U=getExternalActionMetadata$3(O,l,h,c,H,A),S=await a.getRandomRelay();if(!S)throw Error(transactionErrorCodes.RELAYER_NOT_AVAILABLE);const{zkCallData:M,circomData:ae,dimData:Ae}=await constructZkProof(a.merkleTreeHinkal,a.merkleTreeAccessToken,O,ie,a.userKeys,Q,H,W,U,S,a.getCurrentChainId(),oe,ne);return T?await estimateGasRelayer(a,M,Ae,ae):await transactCallRelayer(a.getCurrentChainId(),M,Ae,ae)},hinkalActionConvex=async(a,d,n,c,l,h=!1)=>{const A=[...await addPaddingToUtxos(a,d,n)],T=`swapperMO${n.length.toString()}x${A[0].length}x1`,O=getNonLocalhostChainId(a.getCurrentChainId());console.log({inputUtxosArray:A});const Q=ExternalActionId.Convex,{flatFees:H,feeUnit:ne}=await getFlatFees(a.getCurrentChainId(),d,Q,n,l);n=processAmountChanges({erc20Addresses:d,amountChanges:n,flatFees:H,feeUnit:ne,externalActionId:Q,action:l}),console.log("new amount changes",{amountChanges:n});const oe=[ConvexAction.StakeLP,ConvexAction.UnStakeLP].includes(l)?[!1,!1,...O===chainIds.ethMainnet?[!0,!0]:[!0]]:[!1,...O===chainIds.ethMainnet?[!0,!0]:[!0]],ie=[];for(let Re=0;Re<d.length;Re+=1){const{outputUtxos:V}=outputUtxoProcessing(a.userKeys,A[Re],n[Re]);ie.push(V)}console.log({outputUtxosArray:ie});const P=networkRegistry[a.getCurrentChainId()].contractData.convexExternalActionInstanceAddress,W=defaultAbiCoder.encode(["uint8","uint256","uint256","uint256"],[Number(l),c,A[0][0].amount,A[0][0].timeStamp]),U=await a.getRandomRelay();if(!U)throw Error(transactionErrorCodes.RELAYER_NOT_AVAILABLE);const{zkCallData:S,circomData:M,dimData:ae}=await constructZkProof(a.merkleTreeHinkal,a.merkleTreeAccessToken,A,ie,a.userKeys,T,Q,P,W,U,a.getCurrentChainId(),oe,H);return h?await estimateGasRelayer(a,S,ae,M):await transactCallRelayer(a.getCurrentChainId(),S,ae,M)},getExternalActionIdForCurve=(a,d,n,c)=>d?c?ExternalActionId.CurveCRVRewards:ExternalActionId.CurveCRV:getCalcTokenAmountWithDynamicArray(a).includes(n.toLowerCase())?ExternalActionId.CurveDynamic:ExternalActionId.Curve,getExternalActionAddressForCurve=(a,d)=>{const{contractData:n}=networkRegistry[a.getCurrentChainId()];switch(d){case ExternalActionId.Curve:return n.curveExternalActionInstanceAddress;case ExternalActionId.CurveDynamic:return n.curveExternalActionDynamicInstanceAddress;case ExternalActionId.CurveCRV:return n.curveExternalActionInstanceAddress;case ExternalActionId.CurveCRVRewards:return n.curveStakeExternalActionInstanceAddress;default:return n.curveExternalActionInstanceAddress}},getExternalActionMetadata$2=(a,d,n)=>defaultAbiCoder.encode(["uint8","address","uint256","uint256"],[Number(a),d,n[0][0].amount,n[0][0].timeStamp]),getOnChainCreation$2=(a,d,n,c)=>{if([CurveAction.Deposit,CurveAction.WithdrawInt,CurveAction.WithdrawUint].includes(c))return a.map(l=>l>0n);if(c===CurveAction.WithdrawImbalance)return a.map(()=>!1);if([CurveAction.Stake,CurveAction.Unstake,CurveAction.GetCRV].includes(c)){let l=!1;return d.map(h=>(h.toLowerCase()===getCRV(n).toLowerCase()&&(l=!0),l))}return a.map(l=>l>0n)},hinkalActionCurve=async(a,d,n,c,l,h,A=!1)=>{const T=[...await addPaddingToUtxos(a,d,n)];let O=`swapperM${n.length.toString()}x${T[0].length}x1`;const Q=l===CurveAction.GetCRV||l===CurveAction.Stake||l===CurveAction.Unstake;Q&&(O=`swapperMO${n.length.toString()}x${T[0].length}x1`);const H=getNonLocalhostChainId(a.getCurrentChainId()),ne=getExternalActionIdForCurve(H,Q,c,h),{flatFees:B,feeUnit:oe}=await getFlatFees(a.getCurrentChainId(),d,ne,n,l,curveWithdrawGasTokenAddress?.current);n=processAmountChanges({erc20Addresses:d,amountChanges:n,flatFees:B,feeUnit:oe,externalActionId:ne,action:l});const ie=getOnChainCreation$2(n,d,H,l),P=[];for(let V=0;V<d.length;V+=1){const{outputUtxos:ve}=outputUtxoProcessing(a.userKeys,T[V],n[V]);P.push(ve)}const W=getExternalActionAddressForCurve(a,ne),U=getExternalActionMetadata$2(l,c,T),S=await a.getRandomRelay();if(!S)throw Error(transactionErrorCodes.RELAYER_NOT_AVAILABLE);const{zkCallData:M,circomData:ae,dimData:Ae}=await constructZkProof(a.merkleTreeHinkal,a.merkleTreeAccessToken,T,P,a.userKeys,O,ne,W,U,S,a.getCurrentChainId(),ie,B);return A?await estimateGasRelayer(a,M,Ae,ae):await transactCallRelayer(a.getCurrentChainId(),M,Ae,ae)},skipApprovalIfAlreadyHave=async(a,d,n)=>{const c=BigInt(await n.allowance(await n.signer.getAddress(),d.address));return a===c},clearAllowanceIfNecessary=async(a,d,n,c)=>{if(getNonLocalhostChainId(a.getCurrentChainId())!==chainIds.ethMainnet||n.symbol.toLowerCase()!=="usdt"||BigInt(await c.allowance(await c.signer.getAddress(),d.address))===0n)return;const h=await c.approve(d.address,0n);h&&"hash"in h&&await a.waitForTransaction(h.hash)},approveTokenToHinkal=async(a,d,n,c)=>{const l=a.getContractWithSigner(ContractType.ERC20Contract,c.erc20TokenAddress),h=c.approvalType??ApprovalType.Classic;if(h===ApprovalType.Classic||!a.isPermitterAvailable()){if(await skipApprovalIfAlreadyHave(n,d,l))return;await clearAllowanceIfNecessary(a,d,c,l);const U=await l.approve(d.address,n);U&&"hash"in U&&await a.waitForTransaction(U.hash);return}const A=await a.getEthereumAddress(),T=a.getContract(ContractType.PermitterContract),Q=await a.getContractWithFetcher(ContractType.ContractWithNonces,c.erc20TokenAddress).nonces(A),H=BigInt(Date.now()+permitSignatureValidFor)/1000n,ne={owner:A,holder:A,spender:T.address,value:n,nonce:Q,deadline:H,expiry:H,allowed:!0},{v:B,r:oe,s:ie}=splitSignature(await a.signTypedData({name:await l.name(),chainId:a.getCurrentChainId(),version:"1",verifyingContract:c.erc20TokenAddress},{Permit:h===ApprovalType.ERC20Permit?[{name:"owner",type:"address"},{name:"spender",type:"address"},{name:"value",type:"uint256"},{name:"nonce",type:"uint256"},{name:"deadline",type:"uint256"}]:[{name:"holder",type:"address"},{name:"spender",type:"address"},{name:"nonce",type:"uint256"},{name:"expiry",type:"uint256"},{name:"allowed",type:"bool"}]},ne));if(h===ApprovalType.ERC20Permit){const W=new Interface(["function permit(address owner,address spender,uint256 value,uint256 deadline,uint8 v,bytes32 r,bytes32 s) external"]);return arrayify(W.encodeFunctionData("permit",[ne.owner,ne.spender,ne.value,ne.deadline,B,arrayify(oe),arrayify(ie)])).slice(4)}const P=new Interface(["function permit(address holder,address spender,uint256 nonce,uint256 expiry,bool allowed,uint8 v,bytes32 r,bytes32 s) external"]);return arrayify(P.encodeFunctionData("permit",[ne.holder,ne.spender,ne.nonce,ne.expiry,ne.allowed,B,arrayify(oe),arrayify(ie)])).slice(4)},transactCallDirect=async(a,d,n,c,l,h,A,T)=>{const O=a.getContractWithSigner(ContractType.HinkalContract),Q=await a.getEthereumAddress(),H=A??O,ne=T??O,B="transact";console.log("before the direct transaction"),d>0n&&n.erc20TokenAddress!==zeroAddress&&await approveTokenToHinkal(a,H,d,n);const oe={value:d>0n&&n.erc20TokenAddress===zeroAddress?BigInt(d).toString():void 0};let ie;try{ie=(await ne.estimateGas[B](c[0],c[1],c[2],h,l,{...oe,from:Q})).toNumber(),console.log({"gas costs of deposit":ie})}catch(U){console.log("hinkalDeposit: gas estimation error: ",{err:U})}const P=ie&&ie>=0?Math.ceil(ie*12/10):void 0;return oe.gasLimit=P,await waitLittle(),await ne[B](c[0],c[1],c[2],h,l,oe)},getOnChainCreation$1=a=>{let d=[];return a===PendleAction.Deposit?d=[!1,!0]:a===PendleAction.Withdraw?d=[!1,!0]:a===PendleAction.SwapFromYt?d=[!1,!0,!0]:a===PendleAction.SwapToYt?d=[!1,!1,!0]:a===PendleAction.SwapPt?d=[!1,!0]:a===PendleAction.Mint?d=[!1,!0,!1,!0]:a===PendleAction.Redeem?d=[!1,!1,!0,!0]:a===PendleAction.Checkpoint&&(d=[!1,!0]),d},getExternalActionMetadata$1=(a,d)=>{const{pendleAction:n,ytAddress:c,userAddress:l,evmData:h}=a,A=h??"0x00",T=l??zeroAddress;if([PendleAction.Deposit,PendleAction.Withdraw,PendleAction.SwapFromYt,PendleAction.SwapToYt,PendleAction.SwapPt,PendleAction.Mint,PendleAction.Redeem,PendleAction.Checkpoint].includes(a.pendleAction))return defaultAbiCoder.encode(["uint8","address","uint256","uint256","address","bool","bytes"],[n,c,d[0][0].amount,d[0][0].timeStamp,T,!0,A]);throw new Error("Not implemented")},hinkalActionPendle=async(a,d,n,c,l,h=!1)=>{const A=ExternalActionId.Pendle,{pendleAction:T}=c,O=[...await addPaddingToUtxos(a,d,n)],Q=`swapperMO${n.length.toString()}x${O[0].length}x1`;console.log({inputUtxosArray:O,circuitName:Q,pendleMetadata:c});const{flatFees:H,feeUnit:ne}=await getFlatFees(a.getCurrentChainId(),d,A,n,T,l);console.log("hinkalActionPendle flatFees:",H),n=processAmountChanges({erc20Addresses:d,amountChanges:n,flatFees:H,feeUnit:ne,externalActionId:A,action:T,gasTokenAddress:l});const B=[];for(let F=0;F<d.length;F+=1){const{outputUtxos:Ee}=outputUtxoProcessing(a.userKeys,O[F],n[F]);B.push(Ee)}const oe=getOnChainCreation$1(T),{contractData:ie}=networkRegistry[a.getCurrentChainId()],P=ie?.pendleExternalActionInstanceAddress,W=getExternalActionMetadata$1(c,O),U=T===PendleAction.Deposit||c.isRelayerOff?zeroAddress:await a.getRandomRelay();if(!U)throw Error(transactionErrorCodes.RELAYER_NOT_AVAILABLE);const S=`0x0${T.toString(16)}`,M={...defaultHookData,preHookMetadata:S},{zkCallData:ae,circomData:Ae,dimData:Re}=await constructZkProof(a.merkleTreeHinkal,a.merkleTreeAccessToken,O,B,a.userKeys,Q,A,P,W,U,a.getCurrentChainId(),oe,H,M);if(console.log("hinkalActionPendle: zkCallData, dimData, circomData:",{zkCallData:ae,dimData:Re,circomData:Ae}),h)return await estimateGasRelayer(a,ae,Re,Ae);const V=a.getCurrentChainId();if(T===PendleAction.Deposit){console.log("inside pendle deposit");const F=getERC20Token(c.ytAddress,V);if(!F)throw Error("Yt Token not found");const Ee=a.getContractWithSigner(ContractType.PendleGeneralExternalAction),ge=a.getContractWithSigner(ContractType.HinkalWrapper);return await transactCallDirect(a,n[0],F,ae,Ae,Re,Ee,ge)}if(T===PendleAction.Withdraw&&c.isRelayerOff){const F=getERC20Token(c.ytAddress,V);if(!F)throw Error("Yt Token not found");return await transactCallDirect(a,n[0],F,ae,Ae,Re)}return await transactCallRelayer(a.getCurrentChainId(),ae,Re,Ae)},hinkalDeposit=async(a,d,n)=>{const c=getERC20Token(d[0],a.getCurrentChainId());if(!c)throw Error("Deposit Action: No Token Found");const l=n[0],h={externalActionId:0n,externalAddress:await a.getEthereumAddress(),externalActionMetadata:"0x00"},A=[...await addPaddingToUtxos(a,d,n)],T=`swapperM${n.length.toString()}x${A[0].length}x1`,O=[];for(let oe=0;oe<d.length;oe+=1){const{outputUtxos:ie}=outputUtxoProcessing(a.userKeys,A[oe],n[oe]);O.push(ie)}const{zkCallData:Q,circomData:H,dimData:ne}=await constructZkProof(a.merkleTreeHinkal,a.merkleTreeAccessToken,A,O,a.userKeys,T,h.externalActionId,h.externalAddress,h.externalActionMetadata,zeroAddress,a.getCurrentChainId());return console.log("after proof generation"),await transactCallDirect(a,l,c,Q,H,ne)},hinkalDepositForOther=async(a,d,n,c)=>{console.log({recipinetInfo:c});const[l,h,A]=c.split(","),T=!l||!h||!A,O=h?.substring(0,2)!=="0x"||A?.substring(0,2)!=="0x",Q=A?.length!==66||h?.length>66||h?.length<64,H=c?.includes('"');if(T||O||Q||H)throw Error(transactionErrorCodes.RECIPIENT_FORMAT_INCORRECT);const ne=[BigInt(l)],B=[h],oe=d.map(Ae=>[new Utxo({amount:0n,erc20TokenAddress:Ae,shieldedPrivateKey:a.userKeys.getShieldedPrivateKey()}),new Utxo({amount:0n,erc20TokenAddress:Ae,shieldedPrivateKey:a.userKeys.getShieldedPrivateKey()})]),ie=`swapperM${n.length.toString()}x${oe[0].length}x1`,P=d.map((Ae,Re)=>[new Utxo({amount:n[Re],erc20TokenAddress:Ae,randomization:ne[Re],stealthAddress:B[Re],encryptionKey:A})]),{zkCallData:W,circomData:U,dimData:S}=await constructZkProof(a.merkleTreeHinkal,a.merkleTreeAccessToken,oe,P,a.userKeys,ie,0n,await a.getEthereumAddress(),"0x00",zeroAddress,a.getCurrentChainId()),M=getERC20Token(d[0],a.getCurrentChainId());if(!M)throw Error("Withdraw Action: No Token Found");return await transactCallDirect(a,n[0],M,W,U,S)},getExternalAddress=(a,d)=>{const{contractData:n}=networkRegistry[a.getCurrentChainId()];let c;switch(d){case ExternalActionId.Uniswap:c=n?.uniswapExternalActionAddress;break;case ExternalActionId.Odos:c=n?.odosExternalActionInstanceAddress;break;case ExternalActionId.OneInch:c=n?.oneInchExternalActionInstanceAddress;break;default:c=n?.uniswapExternalActionAddress;break}if(!c)throw new Error("No external Address set during swap");return c},hinkalSwap=async(a,d,n,c,l,h=!1,A=!1)=>{const{flatFees:T,feeUnit:O}=await getFlatFees(a.getCurrentChainId(),d,c,n);n=processAmountChanges({erc20Addresses:d,amountChanges:n,flatFees:T,feeUnit:O,externalActionId:c});const Q=getExternalAddress(a,c),H={externalActionId:c,externalAddress:Q,externalActionMetadata:l},ne=[...await addPaddingToUtxos(a,d,n)],B=`swapperM${n.length.toString()}x${ne[0].length}x1`,oe=[!1,!0],ie=[];for(let ae=0;ae<d.length;ae+=1){const{outputUtxos:Ae}=outputUtxoProcessing(a.userKeys,ne[ae],n[ae]);ie.push(Ae)}const P=await a.getRandomRelay();if(!P)throw Error(transactionErrorCodes.RELAYER_NOT_AVAILABLE);const{zkCallData:W,circomData:U,dimData:S}=await constructZkProof(a.merkleTreeHinkal,a.merkleTreeAccessToken,ne,ie,a.userKeys,B,H.externalActionId,H.externalAddress,H.externalActionMetadata,P,a.getCurrentChainId(),oe,T);return h?await estimateGasRelayer(a,W,S,U):await transactCallRelayer(a.getCurrentChainId(),W,S,U,A)},hinkalWithdraw=async(a,d,n,c,l,h=!1)=>{const{flatFees:A,feeUnit:T}=await getFlatFees(a.getCurrentChainId(),d,ExternalActionId.Transact,n);l||processAmountChanges({erc20Addresses:d,amountChanges:n,flatFees:A,feeUnit:T,externalActionId:ExternalActionId.Transact});const O=getERC20Token(d[0],a.getCurrentChainId());if(!O)throw Error("Deposit Action: No Token Found");const Q={externalActionId:0n,externalAddress:c,externalActionMetadata:"0x00"},H=[...await addPaddingToUtxos(a,d,n)],ne=`swapperM${n.length.toString()}x${H[0].length}x1`,B=[!1],oe=[];for(let M=0;M<d.length;M+=1){const{outputUtxos:ae}=outputUtxoProcessing(a.userKeys,H[M],n[M]);oe.push(ae)}const ie=await a.getRandomRelay();if(!l&&!ie)throw Error(transactionErrorCodes.RELAYER_NOT_AVAILABLE);const{zkCallData:P,circomData:W,dimData:U}=await constructZkProof(a.merkleTreeHinkal,a.merkleTreeAccessToken,H,oe,a.userKeys,ne,Q.externalActionId,Q.externalAddress,Q.externalActionMetadata,l?zeroAddress:ie,a.getCurrentChainId(),B,A);if(h)return await estimateGasRelayer(a,P,U,W);if(l){if(!O)throw Error("Withdraw Action: No Token Found");return await transactCallDirect(a,n[0],O,P,W,U)}return await transactCallRelayer(a.getCurrentChainId(),P,U,W)};let didPreprocess=!1;const preProcessing=async()=>{didPreprocess||(await poseidonHolder.init(),await jubHolder.init(),didPreprocess=!0)};class MerkleTreeIncompleteError extends Error{constructor(){super("Merkle tree is incomplete"),this.name="MerkleTreeIncompleteError"}}class MerkleTree{constructor(d,n,c,l,h,A){this.hashFunction=d,this.levels=n,this.defaultNodeValue=c,this.tree=l??new Map,this.count=A??0n,this.index=h??2n**(n-1n)}tree;count;index;static createWithData(d,n,c,l,h,A){return new MerkleTree(l,h,A,d,n,c)}static create(d,n,c){return new MerkleTree(d,n,c)}getStartIndex(){return 2n**(this.levels-1n)}logarithm2(d){let n=0n;for(;2n**n<d;)n+=1n;return n}bigIntMax(d,n){return d>n?d:n}forceInsert(d,n){if(n<this.getStartIndex())throw new RangeError;this.tree.set(n,d);const c=this.index-this.getStartIndex(),l=this.logarithm2(c);let h=n;for(let A=1n;A<=l;A+=1n){h/=2n;const T=this.hashFunction(this.tree.get(h*2n)||this.defaultNodeValue,this.tree.get(h*2n+1n)||this.defaultNodeValue);this.tree.set(h,T)}}insert(d,n){let c=!1;return this.tree.has(n)&&(c=!0,logError(`Editing commitment index: ${n} `)),c||(this.count+=1n),this.index=this.bigIntMax(this.index,n+1n),this.forceInsert(d,n),!0}remove(d){this.forceInsert(this.defaultNodeValue,d)}completenessCheck(){if(this.count!==this.index-this.getStartIndex())throw new MerkleTreeIncompleteError}getRootHash(){this.completenessCheck();for(let d=1n;d<2n**this.levels;d*=2n)if(this.tree.get(d))return this.tree.get(d);return this.defaultNodeValue}getMerkleData(){return this.completenessCheck(),new Map(this.tree)}getSiblingIndex(d){return d===1n?1n:d%2n===1n?d-1n:d+1n}getSiblingHashesForVerification(d){this.completenessCheck();let n;for(let l=this.getStartIndex();l<this.getStartIndex()+this.index;l+=1n)if(this.tree.get(l)===d){n=l;break}if(n===void 0)return new Array(Number(this.levels)).fill(0n);const c=[];for(;n!==0n;)c.push(this.tree.get(this.getSiblingIndex(n))||this.defaultNodeValue),n/=2n;return c}getSiblingSides(d){this.completenessCheck();let n;for(let l=this.getStartIndex();l<this.getStartIndex()+this.index;l+=1n)if(this.tree.get(l)===d){n=l;break}if(n===void 0)return new Array(Number(this.levels)).fill(0n);const c=[];for(;n!==0n;){const l=n%2n===0n?0n:1n;c.push(l),n/=2n}return c}toJSON(){const{tree:d,count:n,index:c}=this;return{tree:Object.fromEntries(d),count:n.toString(),index:c.toString()}}}const blockReorgDepth={[chainIds.ethMainnet]:3,[chainIds.bnbMainnet]:10,[chainIds.polygon]:32,[chainIds.avalanche]:1,[chainIds.arbMainnet]:1,[chainIds.optimism]:1,[chainIds.base]:1,[chainIds.blast]:1,[chainIds.localhost]:1};class AbstractEventService{contract;eventConfig;_latestBlockNumber;maxPageSize;isReady=!1;_onNewEvent;isServer;intervalId;inProgress;constructor(d,n,c,l,h){this.contract=d,this.eventConfig=n,this._latestBlockNumber=c,this.maxPageSize=h,this.isServer=l,this.inProgress=!1}get latestBlockNumber(){return this._latestBlockNumber}set onNewEvent(d){this._onNewEvent=d}intervalClear(){this.isReady=!1,this._onNewEvent=void 0,clearInterval(this.intervalId)}async init(){if(this.isReady)throw new Error("Already initialized");this.isReady=!0,await this.retrieveEvents(this._latestBlockNumber+1),this.intervalId=setInterval(async()=>{await this.retrieveEvents(this.latestBlockNumber)},3500)}requireReady(){if(!this.isReady)throw new Error("Not ready")}emitNewEvent(d){this._onNewEvent?.(d)}getLastBlockNumberForEventRequest=async()=>{const d=await this.contract.provider.getBlockNumber();if(!this.isServer)return d;const{chainId:n}=await this.contract.provider.getNetwork();return Math.max(this.latestBlockNumber,d-blockReorgDepth[n]+1)};async retrieveEvents(d,n=!1){try{if(this.requireReady(),this.inProgress&&!n)return!1;this.inProgress=!0;const c=await this.getLastBlockNumberForEventRequest();if(c<d)return this.inProgress=!1,!1;const l=getSequence(d,c,this.maxPageSize);return await resolveSync(l.map(({from:h,to:A})=>async()=>{const T=await this.contract.queryFilter(this.contract.filters[this.eventConfig.name](),h,A);let O=[];T.length>0&&(O=await this.processEventsPage(T)),this._latestBlockNumber=A,await this.afterEventsAccepted(),O.length>0&&this.emitNewEvent()})),this.inProgress=!1,!0}catch(c){return console.log("retrieveEvents error:",{err:c}),this.inProgress=!1,!1}}async processEventsPage(d){const n=[];return await resolveSync(d.map(c=>async()=>{const{args:l,blockNumber:h}=c;if(!l)throw new Error("Wrong event structure");const A=this.mapEvent(l);await this.acceptEvent(A,h)&&n.push(A)})),n}handleEvent=async(...d)=>{const{args:n}=this.eventConfig,{blockNumber:c}=d[d.length-1],l=d.slice(0,n.length),h=n.reduce((O,Q,H)=>(O[Q]=l[H],O),{});if(!c)throw new Error("Wrong event structure");const A=this.mapEvent(h);if(!await this.acceptEvent(A,c))throw new Error("Failed to retrieve events");this._latestBlockNumber=c,await this.afterEventsAccepted(),this.emitNewEvent(A)}}class AbstractSnapshotService extends AbstractEventService{reserveBlockNumber;constructor(d,n,c,l,h){super(d,n,c,l,h),this.reserveBlockNumber=c}async init(){await this.loadSnapshot(),await super.init()}async retrieveEventsFromLatestBlock(){await super.retrieveEvents(this._latestBlockNumber)}async restoreSnapshotState(){await this.retrieveEvents(this.reserveBlockNumber,!0)&&(this.reserveBlockNumber=this.latestBlockNumber,await this.afterEventsAccepted())}async loadSnapshot(){const d=await this.fetchSnapshot(),n=this.deserializeSnapshot(d);this.populateSnapshot(n),this._latestBlockNumber=n.latestBlockNumber,this.reserveBlockNumber=n.reserveBlockNumber}saveSnapshot(){return this.persistSnapshot(this.serializeSnapshot({latestBlockNumber:this._latestBlockNumber,reserveBlockNumber:this.reserveBlockNumber,payload:this.getSnapshotPayload()}))}afterEventsAccepted(){return this.saveSnapshot()}}class AbstractAccessTokenSnapshotService extends AbstractSnapshotService{constructor(d,n,c,l){super(d,{name:"NewAccessKeyAdded",args:["accessKey","index","senderAddress"]},n,c,l)}_merkleTree;_senderAddresses;_senderAddressIndexMap;get merkleTree(){return this._merkleTree}get senderAddresses(){return this._senderAddresses}get senderAddressIndexMap(){return this._senderAddressIndexMap}serializeSnapshot(d){return{merkleTree:d.payload.merkleTree.toJSON(),senderAddresses:Array.from(d.payload.senderAddresses),latestBlockNumber:d.latestBlockNumber,reserveBlockNumber:d.reserveBlockNumber,senderAddressIndexMap:Array.from(d.payload.senderAddressIndexMap).map(([n,c])=>({address:n,index:c}))}}deserializeSnapshot(d){let n,c;if(d.latestBlockNumber&&d.merkleTree){const l=new Map(Object.entries(d.merkleTree.tree).map(([h,A])=>[BigInt(h),BigInt(A)]));n=MerkleTree.createWithData(l,toBigInt(d.merkleTree.index),toBigInt(d.merkleTree.count),poseidonFunction,25n,0n)}else n=MerkleTree.create(poseidonFunction,25n,0n);return d.latestBlockNumber&&d.senderAddressIndexMap?c=new Map(d.senderAddressIndexMap.map(({address:l,index:h})=>[l,h])):c=new Map,{latestBlockNumber:d.latestBlockNumber??0,reserveBlockNumber:d.reserveBlockNumber??0,payload:{merkleTree:n,senderAddresses:d.senderAddresses??[],senderAddressIndexMap:c}}}acceptEvent(d,n){try{return this._merkleTree.insert(d.accessKey,d.index),this._senderAddressIndexMap.set(d.senderAddress,Math.max(Number(d.index),this._senderAddressIndexMap.get(d.senderAddress)??0)),this._senderAddresses.includes(d.senderAddress)||this._senderAddresses.push(d.senderAddress),d.accessKey===0n&&d.senderAddress===zeroAddress&&this._merkleTree.remove(d.index),!0}catch(c){return console.error(c),!1}}mapEvent(d){const{accessKey:n,index:c,senderAddress:l}=d;return{accessKey:toBigInt(n),index:toBigInt(c),senderAddress:l}}getSnapshotPayload(){return{merkleTree:this._merkleTree,senderAddresses:this._senderAddresses,senderAddressIndexMap:this._senderAddressIndexMap}}populateSnapshot({payload:{merkleTree:d,senderAddresses:n,senderAddressIndexMap:c}}){this._merkleTree=d,this._senderAddresses=n,this._senderAddressIndexMap=c}}class AbstractCommitmentsSnapshotService extends AbstractSnapshotService{constructor(d,n,c,l){super(d,{name:"NewCommitment",args:["commitment","index","encryptedOutput"]},n,c,l)}_merkleTree;_encryptedOutputs;get merkleTree(){return this._merkleTree}get encryptedOutputs(){return this._encryptedOutputs}serializeSnapshot(d){return{merkleTree:d.payload.merkleTree.toJSON(),latestBlockNumber:d.latestBlockNumber,reserveBlockNumber:d.reserveBlockNumber,encryptedOutputs:d.payload.encryptedOutputs.map(n=>({value:n.value,isPositive:String(n.isPositive)}))}}deserializeSnapshot(d){let n;if(d.latestBlockNumber&&d.merkleTree){const l=new Map(Object.entries(d.merkleTree.tree).map(([h,A])=>[BigInt(h),BigInt(A)]));n=MerkleTree.createWithData(l,toBigInt(d.merkleTree.index),toBigInt(d.merkleTree.count),poseidonFunction,25n,0n)}else n=MerkleTree.create(poseidonFunction,25n,0n);const c=d.encryptedOutputs?.map(l=>({value:l.value,isPositive:JSON.parse(l.isPositive)}));return{latestBlockNumber:d.latestBlockNumber??0,reserveBlockNumber:d.reserveBlockNumber??0,payload:{merkleTree:n,encryptedOutputs:c||[]}}}getSnapshotPayload(){return{merkleTree:this._merkleTree,encryptedOutputs:this._encryptedOutputs}}populateSnapshot({payload:{merkleTree:d,encryptedOutputs:n}}){this._merkleTree=d,this._encryptedOutputs=n}mapEvent(d){const{commitment:n,index:c,encryptedOutput:l}=d;return{commitment:toBigInt(n),index:toBigInt(c),encryptedOutput:l}}acceptEvent(d,n){if(!this.encryptedOutputs.map(c=>c.value).includes(d.encryptedOutput)){if(this.isServer&&console.log(`Adding commitment to file ${d.commitment} at index ${d.index} for encrypted output ${d.encryptedOutput}. Block Number: ${n}
|
|
213
213
|
|
|
214
214
|
|
|
215
215
|
`),!this._merkleTree.insert(d.commitment,d.index>=0?d.index:-1n*d.index))return console.log(`Could not add ${d.commitment} at index ${d.index} `),!1;const l={value:d.encryptedOutput,isPositive:d.index>=0n};return this._encryptedOutputs.push(l),!0}return!1}}class AbstractNullifierSnapshotService extends AbstractSnapshotService{constructor(d,n,c,l){super(d,{name:"Nullified",args:["nullifier"]},n,c,l)}_nullifiers;get nullifiers(){return this._nullifiers}serializeSnapshot(d){return{nullifiers:Array.from(d.payload.nullifiers).map(n=>n.toString()),latestBlockNumber:d.latestBlockNumber,reserveBlockNumber:d.reserveBlockNumber}}deserializeSnapshot(d){return{latestBlockNumber:d.latestBlockNumber??0,reserveBlockNumber:d.reserveBlockNumber??0,payload:{nullifiers:new Set(d.nullifiers??[])}}}acceptEvent(d,n){try{return this._nullifiers.add(d.nullifier),!0}catch(c){return console.error(c),!1}}mapEvent(d){const{nullifier:n}=d;return{nullifier:n.toHexString()}}getSnapshotPayload(){return{nullifiers:this._nullifiers}}populateSnapshot({payload:{nullifiers:d}}){this._nullifiers=d}}const fetchCommitmentsSnapshot=async a=>(await axios$3.get(`${getServerURL(a)}${API_CONFIG.ROUTES.getCommitmentsSnapshot}`)).data,fetchAccessTokenSnapshot=async a=>(await axios$3.get(`${getServerURL(a)}${API_CONFIG.ROUTES.getAccessTokenSnapshot}`)).data;class ClientAccessTokenSnapshotService extends AbstractAccessTokenSnapshotService{constructor(d,n){super(d,0,!1,n)}async fetchSnapshot(){const{chainId:d}=await this.contract.provider.getNetwork(),n=await fetchAccessTokenSnapshot(d);if(n.accessTokenContractAddress!==this.contract.address||n.chainId!==d)throw Error("Commitment Snapshot: incorrect contract or chain id");return{latestBlockNumber:n.latestBlockNumber,merkleTree:n.merkleTree,senderAddresses:n.senderAddresses,senderAddressIndexMap:n.senderAddressIndexMap}}persistSnapshot(d){return Promise.resolve()}}class ClientCommitmentsSnapshotService extends AbstractCommitmentsSnapshotService{constructor(d,n){super(d,0,!1,n)}async fetchSnapshot(){const{chainId:d}=await this.contract.provider.getNetwork(),n=await fetchCommitmentsSnapshot(d);if(n.hinkalAddress!==this.contract.address||n.chainId!==d)throw Error("Commitment Snapshot: incorrect contract or chain id");return{latestBlockNumber:n.latestBlockNumber,merkleTree:n.merkleTree,encryptedOutputs:n.encryptedOutputs}}persistSnapshot(d){return Promise.resolve()}}const fetchNullifiers=async a=>(await axios$3.get(`${getServerURL(a)}${API_CONFIG.ROUTES.getNullifiers}`)).data;class ClientNullifierSnapshotService extends AbstractNullifierSnapshotService{constructor(d,n){super(d,0,!1,n)}async fetchSnapshot(){const{chainId:d}=await this.contract.provider.getNetwork(),n=await fetchNullifiers(d);return{latestBlockNumber:n.latestBlockNumber,nullifiers:n.nullifiers}}persistSnapshot(d){return Promise.resolve()}}const resetMerkleTrees=async a=>{const{maxPageSize:d}=networkRegistry[a.getCurrentChainId()];a.commitmentsSnapshotService?.intervalClear(),a.commitmentsSnapshotService=new ClientCommitmentsSnapshotService(a.getContractWithFetcher(ContractType.HinkalContract),d),a.nullifierSnapshotService?.intervalClear(),a.nullifierSnapshotService=new ClientNullifierSnapshotService(a.getContractWithFetcher(ContractType.HinkalContract),d),a.accessTokenSnapshotService?.intervalClear(),a.accessTokenSnapshotService=new ClientAccessTokenSnapshotService(a.getContractWithFetcher(ContractType.CrossChainAccessTokenContract),d),await Promise.all([a.commitmentsSnapshotService.init(),a.nullifierSnapshotService.init(),a.accessTokenSnapshotService.init()]),a.merkleTreeHinkal=a.commitmentsSnapshotService.merkleTree,a.merkleTreeAccessToken=a.accessTokenSnapshotService.merkleTree,a.nullifiers=a.nullifierSnapshotService.nullifiers,a.encryptedOutputs=a.commitmentsSnapshotService.encryptedOutputs,a.commitmentsSnapshotService.onNewEvent=balanceChangedHandler,a.nullifierSnapshotService.onNewEvent=balanceChangedHandler},monitor=(a,d)=>axios$3.post(`${getServerURL(d)}${API_CONFIG.ROUTES.monitor}`,{address:a}),getExternalActionForLido=(a,d)=>{if(a===LidoVariant.Ethereum)return d===LidoAction.Stake?ExternalActionId.LidoETH:ExternalActionId.LidoETHNFT;if(a===LidoVariant.Polygon)return d===LidoAction.Stake?ExternalActionId.LidoMATIC:ExternalActionId.LidoMATICNFT;throw new Error("Invalid LidoVariant used")},encodeLidoMetadata=a=>defaultAbiCoder.encode(["uint8"],[Number(a)]),hinkalActionLido=async(a,d,n,c,l,h,A=!1)=>{const T=[...await addPaddingToUtxos(a,c,l,6,h)],O=T[0].length,Q=`${n===LidoAction.Stake?"swapperM":"swapperToken"}2x${O}x1`,H=getExternalActionForLido(d,n),{flatFees:ne,feeUnit:B}=await getFlatFees(a.getCurrentChainId(),c,H,l,n);l=processAmountChanges({erc20Addresses:c,amountChanges:l,flatFees:ne,feeUnit:B,externalActionId:H,action:n});const oe=n===LidoAction.Request?l.map(()=>!1):l.map(ve=>ve>0n),ie=[];for(let ve=0;ve<c.length;ve+=1){const{outputUtxos:F}=outputUtxoProcessing(a.userKeys,T[ve],l[ve],void 0,h[ve]);ie.push(F)}if(!await a.getRandomRelay())throw Error(transactionErrorCodes.RELAYER_NOT_AVAILABLE);const{lidoExternalActionEthAddress:W,lidoExternalActionMaticAddress:U}=networkRegistry[a.getCurrentChainId()].contractData,S=d===LidoVariant.Ethereum?W:U;if(!S)throw new Error("Can't find external action address");const M=encodeLidoMetadata(n),{zkCallData:ae,circomData:Ae,dimData:Re}=await constructZkProof(a.merkleTreeHinkal,a.merkleTreeAccessToken,T,ie,a.userKeys,Q,H,S,M,await a.getRandomRelay(),a.getCurrentChainId(),oe,ne);return console.log({externalActionAddress:S,externalActionId:H,circomData:Ae}),A?await estimateGasRelayer(a,ae,Re,Ae):await transactCallRelayer(a.getCurrentChainId(),ae,Re,Ae)};var TransactionType=(a=>(a[a.DEPOSIT=0]="DEPOSIT",a[a.WITHDRAW=1]="WITHDRAW",a[a.SWAP=2]="SWAP",a[a.BEEFY=3]="BEEFY",a[a.CURVE=4]="CURVE",a[a.CONVEX=5]="CONVEX",a[a.LIDO=6]="LIDO",a[a.PENDLE=7]="PENDLE",a[a.VOLATILE=8]="VOLATILE",a[a.UNKNOWN=9]="UNKNOWN",a))(TransactionType||{});const externalActionToTransactionType=a=>{const d=a.externalActionId.toBigInt();switch(getExternalActionIdFromNumber(d)){case ExternalActionId.Transact:return a.amountChanges[0].toBigInt()>=0n?0:1;case ExternalActionId.Uniswap:case ExternalActionId.Odos:case ExternalActionId.OneInch:return 2;case ExternalActionId.Beefy:case ExternalActionId.BeefyStake:return 3;case ExternalActionId.Curve:case ExternalActionId.CurveDynamic:case ExternalActionId.CurveCRV:case ExternalActionId.CurveCRVRewards:return 4;case ExternalActionId.Convex:return 5;case ExternalActionId.LidoETH:case ExternalActionId.LidoMATIC:case ExternalActionId.LidoETHNFT:case ExternalActionId.LidoMATICNFT:return 6;case ExternalActionId.Pendle:return 7;case ExternalActionId.Volatile:return a.amountChanges.length===1?a.amountChanges[0].toBigInt()<0n?1:0:a.amountChanges.length===2?2:9;default:return 9}},getBeefyData=(a,d,n)=>{const l=defaultAbiCoder.decode(["uint8","bytes","bytes","address"],a.externalActionMetadata)[0],h=a.amountChanges[0].toBigInt(),A=d[0];if(l===BeefyAction.Deposit||l===BeefyAction.DepositRegular||l===BeefyAction.DepositOneInchSingle){const Q={token:getERC20Token(a.erc20TokenAddresses[0],n)??{erc20TokenAddress:a.erc20TokenAddresses[0]},balance:h},H={token:getERC20Token(A.erc20TokenAddress,n)??{erc20TokenAddress:A.erc20TokenAddress},balance:A.amount};return{erc20Token:Q,mooToken:H,beefyAction:l,type:TransactionType.BEEFY}}const T={token:getERC20Token(a.erc20TokenAddresses[1],n)??{erc20TokenAddress:a.erc20TokenAddresses[1]},balance:h};return{erc20Token:{token:getERC20Token(A.erc20TokenAddress,n)??{erc20TokenAddress:A.erc20TokenAddress},balance:A.amount},mooToken:T,beefyAction:l,type:TransactionType.BEEFY}},getConvexData=(a,d,n)=>{const l=defaultAbiCoder.decode(["uint8","uint256","uint256","uint256"],a.externalActionMetadata)[0];if(l===ConvexAction.StakeLP||l===ConvexAction.UnStakeLP){const h=a.erc20TokenAddresses[1];return{poolToken:{token:getERC20Token(h,n)??{erc20TokenAddress:h},balance:a.amountChanges[1].toBigInt()},type:TransactionType.CONVEX,convexAction:l}}if(l===ConvexAction.ClaimRewardsLP){const h=d[0];return{poolToken:{token:getERC20Token(h.erc20TokenAddress,n)??{erc20TokenAddress:h.erc20TokenAddress},balance:h.amount},type:TransactionType.CONVEX,convexAction:l}}return{type:TransactionType.CONVEX,convexAction:l}},getCurveData=(a,d,n)=>{const l=defaultAbiCoder.decode(["uint8","address","uint256","uint256"],a.externalActionMetadata)[0];if(l===CurveAction.Deposit){const h=a.erc20TokenAddresses.slice(0,-1).filter((O,Q)=>a.amountChanges[Q].toBigInt()!==0n).map((O,Q)=>{const H=a.amountChanges[Q].toBigInt();return{token:getERC20Token(O,n)??{erc20TokenAddress:O},balance:H}}),A=d[d.length-1],T={token:getERC20Token(A.erc20TokenAddress,n)??{erc20TokenAddress:A.erc20TokenAddress},balance:A.amount};return{inTokens:h,poolToken:T,type:TransactionType.CURVE,curveAction:l}}if(l===CurveAction.WithdrawInt||l===CurveAction.WithdrawUint){const h=d.filter(Q=>Q.amount!==0n).map(Q=>{const H=Q.amount;return{token:getERC20Token(Q.erc20TokenAddress,n)??{erc20TokenAddress:Q.erc20TokenAddress},balance:H}}),A=a.erc20TokenAddresses[a.erc20TokenAddresses.length-1],T=a.amountChanges[a.amountChanges.length-1].toBigInt(),O={token:getERC20Token(A,n)??{erc20TokenAddress:A},balance:T};return{inTokens:h,poolToken:O,type:TransactionType.CURVE,curveAction:l}}if(l===CurveAction.WithdrawImbalance){const h=a.erc20TokenAddresses.slice(0,-1).filter((Q,H)=>a.amountChanges[H].toBigInt()!==0n).map((Q,H)=>{const ne=a.amountChanges[H].toBigInt();return{token:getERC20Token(Q,n)??{erc20TokenAddress:Q},balance:ne}}),A=a.erc20TokenAddresses[a.erc20TokenAddresses.length-1],T=a.amountChanges[a.amountChanges.length-1].toBigInt(),O={token:getERC20Token(A,n)??{erc20TokenAddress:A},balance:T};return{inTokens:h,poolToken:O,type:TransactionType.CURVE,curveAction:l}}if(l===CurveAction.Stake||l===CurveAction.Unstake)return{poolToken:{token:getERC20Token(a.erc20TokenAddresses[0],n)??{erc20TokenAddress:a.erc20TokenAddresses[0]},balance:a.amountChanges[0].toBigInt()},type:TransactionType.CURVE,curveAction:l};if(l===CurveAction.GetCRV){const h=d[0];return{poolToken:{token:getERC20Token(h.erc20TokenAddress,n)??{erc20TokenAddress:h.erc20TokenAddress},balance:h.amount},type:TransactionType.CURVE,curveAction:l}}return{type:TransactionType.CURVE,curveAction:l}},getDepositData=(a,d)=>{const n=a.erc20TokenAddresses[0],c=a.amountChanges[0].toBigInt(),h={token:getERC20Token(n,d)??{erc20TokenAddress:n},balance:c};return c<0?{tokenWithBalance:h,type:TransactionType.WITHDRAW}:{tokenWithBalance:h,type:TransactionType.DEPOSIT}},getSwapData=(a,d,n)=>{const c={token:getERC20Token(a.erc20TokenAddresses[0],n)??{erc20TokenAddress:a.erc20TokenAddresses[0]},balance:-1n*a.amountChanges[0].toBigInt()},l=d[0],h={token:getERC20Token(l.erc20TokenAddress,n)??{erc20TokenAddress:l.erc20TokenAddress},balance:l.amount};return{tokenIn:c,tokenOut:h,type:TransactionType.SWAP,protocol:a.externalActionId.toBigInt()}},getLidoData=(a,d,n)=>{const l=defaultAbiCoder.decode(["uint8"],a.externalActionMetadata)[0];let h;return l===LidoAction.Request?h=a.externalActionId.toBigInt()===getExternalActionIdHash(ExternalActionId.LidoETH)||a.externalActionId.toBigInt()===getExternalActionIdHash(ExternalActionId.LidoETHNFT)?getERC20TokenBySymbol(wstEthSymbol,n):getERC20TokenBySymbol(stMaticSymbol,n):h=a.externalActionId.toBigInt()===getExternalActionIdHash(ExternalActionId.LidoETH)||a.externalActionId.toBigInt()===getExternalActionIdHash(ExternalActionId.LidoETHNFT)?getERC20TokenBySymbol(ethSymbol,n):getERC20TokenBySymbol(maticSymbol,n),{lidoToken:{token:h,balance:a.amountChanges[1].toBigInt()},type:TransactionType.LIDO,lidoAction:l}},txHistoryToBigInt=a=>({...a,amountChanges:a.amountChanges.map(d=>BigInt(d.toString())),externalActionId:a.externalActionId.toBigInt()}),lidoWithdrawalQueueERC721Address="0x889edC2eDab5f40e902b864aD4d7AdE8E412F9B1",lidoStakeManagerAddress="0x5e3Ef299fDDf15eAa0432E6e66473ace8c13D908",lidoWstEthContractAddress="0x7f39c581f595b53c5cb19bd0b3f8da6c935e2ca0",lidoStEthContractAddress="0xae7ab96520de3a18e5e111b5eaab095312d7fe84",poLidoNftAddress="0x60a91E2B7A1568f0848f3D43353C453730082E46",lidoStMaticAddress="0x9ee91f9f426fa633d227f7a9b000e28b9dfd8599",ethSymbol="ETH",maticSymbol="MATIC",wstEthSymbol="wstETH",stMaticSymbol="stMATIC";class TokenChecker{static isCurveLPToken=(d,n)=>lowerCaseIncludes(n,d.erc20TokenAddress);static isCurveStakeToken=d=>d.name.includes("Gauge")&&d.symbol.includes("-gauge");static isConvexToken=d=>d.name.includes("Convex")&&d.symbol.includes("cvx");static isBeefyLpToken=d=>d.name.startsWith("moo")&&d.symbol.startsWith("moo");static isBeefyStakeToken=d=>d.name.includes("-Boost")&&d.symbol.includes("-Boost");static isLidoToken=d=>d.symbol===wstEthSymbol||d.symbol===stMaticSymbol;static isCurveOrConvex=(d,n)=>this.isCurveLPToken(d,n)||this.isCurveStakeToken(d)||this.isConvexToken(d);static isBeefyToken=d=>this.isBeefyLpToken(d)||this.isBeefyStakeToken(d);static isStakeToken=d=>this.isCurveStakeToken(d)||this.isConvexToken(d)||this.isBeefyStakeToken(d);static isPendleYtToken=d=>d.name.startsWith("Pendle-YT-")&&d.symbol.startsWith("Pendle-YT-");static isPendleLPToken=d=>d.name.startsWith("Pendle-LP-")&&d.symbol.startsWith("Pendle-LP-");static isPendleSyToken=d=>d.name.startsWith("SY ")&&d.symbol.includes("SY-");static isPendleNativeToken=d=>{const n=d.name.startsWith("YT ")&&d.symbol.includes("YT-"),c=this.isPendleSyToken(d),l=d.name.startsWith("PT ")&&d.symbol.includes("PT-"),h=d.name.startsWith("LP ")&&d.symbol.includes("LP-");return n||c||l||h};static isPendleToken=d=>this.isPendleYtToken(d)||this.isPendleLPToken(d)||this.isPendleNativeToken(d);static isAaveToken=d=>d.aaveToken;static isNonRebasingBlastToken=d=>d.chainId===chainIds.blast&&d.symbol.startsWith("nr");static isKinzaToken=d=>d.name.startsWith("Kinza");static isProtocolToken=(d,n)=>this.isCurveLPToken(d,n)||this.isCurveStakeToken(d)||this.isConvexToken(d)||this.isBeefyLpToken(d)||this.isBeefyStakeToken(d)||this.isLidoToken(d)||this.isPendleToken(d)||this.isAaveToken(d)||this.isNonRebasingBlastToken(d)}const baseCoingeckoUrl="https://api.coingecko.com/api/v3",proCoingeckoUrl="https://pro-api.coingecko.com/api/v3",COINGECKO_API_KEY=process.env.COINGECKO_API_KEY,proHeader="x-cg-pro-api-key",link=COINGECKO_API_KEY?proCoingeckoUrl:baseCoingeckoUrl,coingeckoPriceUrl=a=>`${link}/simple/price?ids=${a}&vs_currencies=USD,ETH`,coingeckoPriceUrl2=(a,d)=>`${link}/simple/token_price/${d}?contract_addresses=${a}&vs_currencies=USD`,coingeckoTokenListUrl=`${proCoingeckoUrl}/coins/list`,getCoingeckoIdForNativeTokens={[chainIds.arbMainnet]:"ethereum",[chainIds.localhost]:"ethereum",[chainIds.ethMainnet]:"ethereum",[chainIds.optimism]:"ethereum",[chainIds.avalanche]:"avalanche-2",[chainIds.polygon]:"matic-network",[chainIds.bnbMainnet]:"binancecoin",[chainIds.base]:"ethereum",[chainIds.blast]:"ethereum"},getCoingeckoPlatform=a=>{switch(getNonLocalhostChainId(a)){case chainIds.ethMainnet:return"ethereum";case chainIds.polygon:return"polygon-pos";case chainIds.bnbMainnet:return"binance-smart-chain";case chainIds.optimism:return"optimistic-ethereum";case chainIds.arbMainnet:return"arbitrum-one";case chainIds.avalanche:return"avalanche";case chainIds.base:return"base";case chainIds.blast:return"blast";default:return"ethereum"}},CoinGeckoChainLabels={[chainIds.polygon]:"polygon-pos",[chainIds.arbMainnet]:"arbitrum-one",[chainIds.ethMainnet]:"ethereum",[chainIds.avalanche]:"avalanche",[chainIds.bnbMainnet]:"binance-smart-chain",[chainIds.optimism]:"optimistic-ethereum",[chainIds.base]:"base",[chainIds.blast]:"blast"};async function getCoingeckoPrice(a){return(await axios$3.get(coingeckoPriceUrl(a),{headers:{[proHeader]:COINGECKO_API_KEY||""}})).data[a]}async function getCoingeckoPrice2(a,d){const n=a.toLowerCase();return(await axios$3.get(coingeckoPriceUrl2(n,d),{headers:{[proHeader]:COINGECKO_API_KEY||""}})).data[a]}async function getCoingeckoPrices(a){return(await axios$3.get(coingeckoPriceUrl(a),{headers:{[proHeader]:COINGECKO_API_KEY||""}})).data}async function getCoingeckoTokenList(){return await axios$3.get(coingeckoTokenListUrl)}const ethCrvCvxRegistry=[{name:"crv3PoolGauge",pool:"0xbEbc44782C7dB0a1A60Cb6fe97d0b483032FF1C7",lpToken:"0x6c3F90f043a72FA612cbac8115EE7e52BDe6E490",gauge:"0xbFcF63294aD7105dEa65aA58F8AE5BE2D9d0952A",pid:9,cvxRewards:"0x689440f2Ff927E1f24c72F1087E1FAF471eCe1c8",hasCrvRewards:!0},{name:"fraxUSDCGauge",pool:"0xDcEF968d416a41Cdac0ED8702fAC8128A64241A2",lpToken:"0x3175Df0976dFA876431C2E9eE6Bc45b65d3473CC",gauge:"0xcfc25170633581bf896cb6cdee170e3e3aa59503",pid:100,cvxRewards:"0x7e880867363A7e321f5d260Cade2B0Bb2F717B02",hasCrvRewards:!0},{name:"frxETHCRVGauge",pool:"0xa1F8A6807c402E4A15ef4EBa36528A3FED24E577",lpToken:"0xf43211935C781D5ca1a41d2041F397B8A7366C7A",gauge:"0x2932a86df44fe8d2a706d8e9c5d51c24883423f5",pid:128,cvxRewards:"0xbD5445402B0a287cbC77cb67B2a52e2FC635dce4",hasCrvRewards:!0},{name:"crvfraxUSDPGauge",pool:"0xaE34574AC03A15cd58A92DC79De7B1A0800F1CE3",lpToken:"0xFC2838a17D8e8B1D5456E0a351B0708a09211147",gauge:"0xfb860600f1be1f1c72a89b2ef5caf345aff7d39d",pid:169,cvxRewards:"0x6991C1CD588c4e6f6f1de3A0bac5B8BbAb7aAF6d",hasCrvRewards:!0},{name:"crv3cryptoGauge",pool:"0xD51a44d3FaE010294C616388b506AcdA1bfAAE46",lpToken:"0xc4AD29ba4B3c580e6D59105FFf484999997675Ff",gauge:"0xDeFd8FdD20e0f34115C7018CCfb655796F6B2168",pid:38,cvxRewards:"0x9D5C5E364D81DaB193b72db9E9BE9D8ee669B652",hasCrvRewards:!0},{name:"crvUsdcSusdGauge",pool:"0x94cc50e4521bd271c1a997a3a4dc815c2f920b41",lpToken:"0x94cc50e4521bd271c1a997a3a4dc815c2f920b41",gauge:"0x512a68dd5433563bad526c8c2838c39debc9a756",hasCrvRewards:!0},{name:"crvUsdDolaGauge",pool:"0x8272e1a3dbef607c04aa6e5bd3a1a134c8ac063b",lpToken:"0x8272e1a3dbef607c04aa6e5bd3a1a134c8ac063b",gauge:"0xecad6745058377744c09747b2715c0170b5699e5",pid:215,cvxRewards:"0xC94208D230EEdC4cDC4F80141E21aA485A515660",hasCrvRewards:!0},{name:"hyUsdEusdGauge",pool:"0x8a8434a5952ac2cf4927bbea3ace255c6dd165cd",lpToken:"0xc794c6a95f30d0ebf7b3bbe85e8a0a95c9e411c1",gauge:"0x27cace18f661161661683bba43933b2e6eb1741e",pid:183,cvxRewards:"0x245Ec0d447e7f206B43120Ac292dED5E8bB9fe61",hasCrvRewards:!0},{name:"DolaFraxBpGauge",pool:"0xe57180685e3348589e9521aa53af0bcd497e884d",lpToken:"0xe57180685e3348589e9521aa53af0bcd497e884d",gauge:"0xbe266d68ce3ddfab366bb866f4353b6fc42ba43c",pid:115,cvxRewards:"0x0404d05F3992347d2f0dC3a97bdd147D77C85c1c",hasCrvRewards:!0},{name:"EusdFraxBpGauge",pool:"0xaeda92e6a3b1028edc139a4ae56ec881f3064d4f",lpToken:"0xaeda92e6a3b1028edc139a4ae56ec881f3064d4f",gauge:"0x8605dc0c339a2e7e85eea043bd29d42da2c6d784",pid:156,cvxRewards:"0xB468dB2E478885B87D7ce0C8DA1D4373A756C138",hasCrvRewards:!0},{name:"crvUSD-sDAIGauge",pool:"0x1539c2461d7432cc114b0903f1824079bfca2c92",lpToken:"0x1539c2461d7432cc114b0903f1824079bfca2c92",gauge:"0x2b5a5e182768a18c70edd265240578a72ca475ae",hasCrvRewards:!1},{name:"hETHWETHGauge",pool:"0x1f7e9321CE32Af1F9EA1185fD10D31Fea31FFD95",lpToken:"0x1f7e9321CE32Af1F9EA1185fD10D31Fea31FFD95",hasCrvRewards:!1,gauge:""},{name:"pxETH-frxETHGauge",pool:"0xe2Ed1dAc3A9547BC6057e32bf8133b5268D7d987",lpToken:"0xe2ed1dac3a9547bc6057e32bf8133b5268d7d987",gauge:"0x277d1424a84b35ec0a8108482551b00b4fc1539b",hasCrvRewards:!0},{name:"FRAX-FXB_2_DEC312024Gauge",pool:"0x6307e6688819951cf8d6b6066018243d2496952f",lpToken:"0x6307e6688819951cf8d6b6066018243d2496952f",gauge:"0xc2fe9d3c761994897594df63b33b6d843ab7b1cf",hasCrvRewards:!0},{name:"FRAX-FXB_4_DEC312026Gauge",pool:"0xe035e27a8ed6842b478933820f90093d205f7098",lpToken:"0xe035e27a8ed6842b478933820f90093d205f7098",gauge:"0x0e83df148f69965bfe752250835854b0dbeeaf01",hasCrvRewards:!0},{name:"FRAX-FXB_1_JUN302024Gauge",pool:"0x4ef4c7519023f30a78647eeab321d6cfabc2513c",lpToken:"0x4ef4c7519023f30a78647eeab321d6cfabc2513c",gauge:"0x35ad1acf0c4be5d4ba11342128d440fdb9e189eb",hasCrvRewards:!0},{name:"crvUSD-FraxlendV1Gauge",pool:"0x4253ac4046fbfdafcfe125d067b6d89f6923843e",lpToken:"0x4253ac4046fbfdafcfe125d067b6d89f6923843e",gauge:"0xe2c422d954db416a69fb29137fe552cce0e160e9",hasCrvRewards:!1,rewards:["0xD533a949740bb3306d119CC777fa900bA034cd52"],version:2},{name:"crvUSD-scrvUSDGauge",pool:"0x67701d67b60a96473bfc4873e7a484035c8609b0",lpToken:"0x67701d67b60a96473bfc4873e7a484035c8609b0",gauge:"0x621ef98282ac42d2bf4c20fc73912a16599e12fb",hasCrvRewards:!1,rewards:["0xD533a949740bb3306d119CC777fa900bA034cd52"],version:2},{name:"vETH-WETHGauge",pool:"0x6685fcfce05e7502bf9f0aa03b36025b09374726",lpToken:"0x6685fcfce05e7502bf9f0aa03b36025b09374726",gauge:"0x8dff75976f22db58d7c3fd7b68d782238b0dbe30",hasCrvRewards:!0,rewards:["0x1BB9b64927e0C5e207C9DB4093b3738Eef5D8447","0x38D64ce1Bdf1A9f24E0Ec469C9cAde61236fB4a0"],version:2},{name:"crvUSD-cncCRVUSDGauge",pool:"0xe3e637f8acc097244a065791142c29fbf5877d18",lpToken:"0xe3e637f8acc097244a065791142c29fbf5877d18",gauge:"",hasCrvRewards:!1},{name:"pufETH-wstETHGauge",pool:"0xeeda34a377dd0ca676b9511ee1324974fa8d980d",lpToken:"0xeeda34a377dd0ca676b9511ee1324974fa8d980d",gauge:"0xf4FA0C7833e778fB9FB392eC36217e17C9133976",hasCrvRewards:!1,version:2},{name:"USDC-USD0Gauge",pool:"0x14100f81e33C33Ecc7CDac70181Fb45B6E78569F",lpToken:"0x14100f81e33C33Ecc7CDac70181Fb45B6E78569F",gauge:"0xc2a56e8888786a30a5b56cbe4450a81ddf26ac0c",hasCrvRewards:!0,version:2}],polygonCrvCvxRegistry=[{name:"stCRVTriCryptoPoolGauge",pool:"0xc7c939A474CB10EB837894D1ed1a77C61B268Fa7",lpToken:"0xA73EdCf18421B56D9AF1cE08A34E102E23b2C4B6",gauge:"0x40371aad2a24ed841316ef30938881440fd4426c",pid:8,cvxRewards:"0xA9249f8667cb120F065D9dA1dCb37AD28E1E8FF0",hasCrvRewards:!0},{name:"stEURT3PoolGauge",pool:"0xB446BF7b8D6D4276d0c75eC0e3ee8dD7Fe15783A",lpToken:"0x600743B1d8A96438bD46836fD34977a00293f6Aa",gauge:"0x8b397084699cc64e429f610f81fac13bf061ef55",pid:5,cvxRewards:"0xc501491b0e4A73B2eFBaC564a412a927D2fc83dD",hasCrvRewards:!0},{name:"stMAIFRAXPoolGauge",pool:"0xA691D34Abf93C0A77998e53B564bEcfaf46Dae27",lpToken:"0xa691d34abf93c0a77998e53b564becfaf46dae27",gauge:"0xfc052e70eb6d94afe464a8ce8f43d203109494f2",hasCrvRewards:!1},{name:"stwmaticTriCryptoGauge",pool:"0x7BBc0e92505B485aeb3e82E828cb505DAf1E50c6",lpToken:"0xb0658482b405496C4EE9453cD0a463b134aEf9d0",gauge:"0x0e2f214b8f5d0cca011a8298bb907fb62f535160",pid:9,cvxRewards:"0x835cA119fA28515B1F184A5Ce5Ccda2B5b0d9F6D",hasCrvRewards:!0},{name:"stMaticWMaticGauge",pool:"0xFb6FE7802bA9290ef8b00CA16Af4Bc26eb663a28",lpToken:"0xe7CEA2F6d7b120174BF3A9Bc98efaF1fF72C997d",gauge:"0x9633e0749faa6ec6d992265368b88698d6a93ac0",hasCrvRewards:!1}],arbMainnetCrvCvxRegistry=[{name:"2CRVGauge",pool:"0x7f90122BF0700F9E7e1F688fe926940E8839F353",lpToken:"0x7f90122BF0700F9E7e1F688fe926940E8839F353",gauge:"0xce5f24b7a95e9cba7df4b54e911b4a3dc8cdaf6f",pid:7,cvxRewards:"0x971E732B5c91A59AEa8aa5B0c763E6d648362CF8",hasCrvRewards:!0},{name:"wstETHCRVGauge",pool:"0x6eB2dc694eB516B16Dc9FBc678C60052BbdD7d80",lpToken:"0xDbcD16e622c95AcB2650b38eC799f76BFC557a0b",gauge:"0x098ef55011b6b8c99845128114a9d9159777d697",hasCrvRewards:!1},{name:"FRAXBPGauge",pool:"0xC9B8a3FDECB9D5b218d02555a8Baf332E5B740d5",lpToken:"0xC9B8a3FDECB9D5b218d02555a8Baf332E5B740d5",gauge:"0x95285ea6ff14f80a2fd3989a6bab993bd6b5fa13",pid:10,cvxRewards:"0x93729702Bf9E1687Ae2124e191B8fFbcC0C8A0B0",hasCrvRewards:!0},{name:"VSTFRAXGauge",pool:"0x59bF0545FCa0E5Ad48E13DA269faCD2E8C886Ba4",lpToken:"0x59bF0545FCa0E5Ad48E13DA269faCD2E8C886Ba4",gauge:"0xf2ddf89c04d702369ab9ef8399edb99a76e951ce",hasCrvRewards:!1},{name:"2BTCGauge",pool:"0x755D6688AD74661Add2FB29212ef9153D40fcA46",lpToken:"0x755D6688AD74661Add2FB29212ef9153D40fcA46",gauge:"0xd6dacdcb438f048cf90e53415872cdb3fcc95421",pid:12,cvxRewards:"0x6B7B84F6EC1c019aF08C7A2F34D3C10cCB8A8eA6",hasCrvRewards:!0},{name:"btcCRVGauge",pool:"0x3E01dD8a5E1fb3481F0F589056b428Fc308AF0Fb",lpToken:"0x3E01dD8a5E1fb3481F0F589056b428Fc308AF0Fb",gauge:"0xc2b1df84112619d190193e48148000e3990bf627",hasCrvRewards:!1},{name:"REUSD3CRVGauge",pool:"0xae0babD1483ed944BeEd2e112021Ed01301A83aC",lpToken:"0xae0babD1483ed944BeEd2e112021Ed01301A83aC",gauge:"0x7c0ac20c3ca8c6257ea099131081d8199bf6b8f6",hasCrvRewards:!1}],optimismCrvCvxRegistry=[{name:"crvSUSDGauge",pool:"0x061b87122Ed14b9526A813209C8a59a633257bAb",lpToken:"0x061b87122Ed14b9526A813209C8a59a633257bAb",gauge:"0xc5ae4b5f86332e70f3205a8151ee9ed9f71e0797",hasCrvRewards:!0},{name:"CRV3Gauge",pool:"0x1337BedC9D22ecbe766dF105c9623922A27963EC",lpToken:"0x1337BedC9D22ecbe766dF105c9623922A27963EC",gauge:"0x15f52286c0ff1d7a7ddbc9e300dd66628d46d4e6",hasCrvRewards:!0},{name:"sBTCGauge",pool:"0x9F2fE3500B1a7E285FDc337acacE94c480e00130",lpToken:"0x9F2fE3500B1a7E285FDc337acacE94c480e00130",gauge:"0x172a5af37f69c69cc59e748d090a70615830a5dd",hasCrvRewards:!0},{name:"sETHGauge",pool:"0x7Bc5728BC2b59B45a58d9A576E2Ffc5f0505B35E",lpToken:"0x7Bc5728BC2b59B45a58d9A576E2Ffc5f0505B35E",gauge:"0xcb8883d1d8c560003489df43b30612aabb8013bb",hasCrvRewards:!0},{name:"MIM3CRVGauge",pool:"0x810D1AaA4Cd8F21c23bB648F2dfb9DC232A01F09",lpToken:"0x810D1AaA4Cd8F21c23bB648F2dfb9DC232A01F09",gauge:"0x2eb49a3eff789d7b2286bf17667acbf12d882c17",hasCrvRewards:!0},{name:"BTC2Gauge",pool:"0x1Dc5c0f8668a9F54ED922171d578011850ca0341",lpToken:"0x1Dc5c0f8668a9F54ED922171d578011850ca0341",gauge:"0xcea806562b757aeffa9fe9d0a03c909b4a204254",hasCrvRewards:!0}],avalancheCrvCvxRegistry=[{name:"3PoolGauge",pool:"0xD79138c49c49200a1Afc935171D1bDAd084FDc95",lpToken:"0xD79138c49c49200a1Afc935171D1bDAd084FDc95",gauge:"0x1aeaa1b998307217d62e9eefb6407b10598ef3b8",hasCrvRewards:!0},{name:"3poolV2Gauge",pool:"0xAEA2E71b631fA93683BCF256A8689dFa0e094fcD",lpToken:"0xAEA2E71b631fA93683BCF256A8689dFa0e094fcD",gauge:"0x8e492286d489fc833e42eaf3c38d609583c37ea1",hasCrvRewards:!1},{name:"USDLGauge",pool:"0x943F3B750447AbDd61cdF68AE6c3912cd3bedA04",lpToken:"0x943F3B750447AbDd61cdF68AE6c3912cd3bedA04",gauge:"0xf8c224c6fbc5911028bb69276b005b5a7b1e6274",hasCrvRewards:!1}],baseCrvCvxRegistry=[{name:"4poolUSDGauge",pool:"0xf6C5F01C7F3148891ad0e19DF78743D31E390D1f",lpToken:"0xf6C5F01C7F3148891ad0e19DF78743D31E390D1f",gauge:"0x79edc58C471Acf2244B8f93d6f425fD06A439407",hasCrvRewards:!0,version:2},{name:"tricryptoGauge",pool:"0x6e53131F68a034873b6bFA15502aF094Ef0c5854",lpToken:"0x6e53131F68a034873b6bFA15502aF094Ef0c5854",gauge:"0x93933FA992927284e9d508339153B31eb871e1f4",hasCrvRewards:!0,version:2},{name:"CRVcrvUSDGauge",pool:"0xDE37E221442Fa15C35dc19FbAE11Ed106ba52fB2",lpToken:"0x6DfE79cecE4f64c1a34F48cF5802492aB595257E",gauge:"0x89289DC2192914a9F0674f1E9A17C56456549b8A",hasCrvRewards:!0,version:2}],getCrvCvxWithChainId=a=>{switch(a){case chainIds.ethMainnet:return ethCrvCvxRegistry;case chainIds.polygon:return polygonCrvCvxRegistry;case chainIds.avalanche:return avalancheCrvCvxRegistry;case chainIds.arbMainnet:return arbMainnetCrvCvxRegistry;case chainIds.optimism:return optimismCrvCvxRegistry;case chainIds.base:return baseCrvCvxRegistry;default:return[]}},logError=(...a)=>{isDevelopment&&console.log(...a)},lpTokens=new Set,lpTokensToBasePool={},getTokenName=(a,d)=>{const n=getERC20Registry(a),c=n.find(l=>l.erc20TokenAddress.toLocaleLowerCase()===d.toLocaleLowerCase());return c?c?c.symbol:d:n[0].symbol},getTokenLogo=(a,d)=>{const n=getERC20Registry(a),c=n.find(l=>l.erc20TokenAddress.toLocaleLowerCase()===d.toLocaleLowerCase());return c?c.logoURI?c.logoURI:"":n[0].logoURI?n[0].logoURI:""};async function callCurveSubGraphAPI(a){const d=getNonLocalhostChainId(a),n=curveNetworkNames[d];return axios$3.get(`https://api.curve.fi/api/getSubgraphData/${n}`,{timeout:7e3}).then(c=>c.data?c.data.data.poolList.map(l=>({address:l.address,volumeUSD:l.volumeUSD,dailyApy:l.latestDailyApy,weeklyApy:l.latestWeeklyApy})):[]).catch(()=>[])}async function callCurvePoolsAPI(a,d){const n=getNonLocalhostChainId(a),c=curveNetworkNames[n];return c?axios$3.get(`https://api.curve.fi/api/getPools/${c}/${d}`).then(l=>l.data?.data.poolData.map(h=>{const{usdTotal:A}=h,T=Number(formatEther(h.totalSupply||"0")),O=T>0?Number(A)/T:0;return{id:h.id,name:h.name,address:h.address,lpToken:getTokenName(a,h.lpTokenAddress||""),lpTokenAddress:h.lpTokenAddress,coins:h.underlyingCoins?h.underlyingCoins:h.coins,tokensForDeposit:h.coins,coinAddresses:(h.coinsAddresses||[]).filter(Q=>Q!==zeroAddress).map(Q=>getTokenName(a,Q)),coinLogos:(h.coinsAddresses||[]).filter(Q=>Q!==zeroAddress).map(Q=>getTokenLogo(a,Q)),gaugeAddress:h.gaugeAddress?h.gaugeAddress:void 0,gaugeCrvApy:h.gaugeCrvApy&&h.gaugeCrvApy[0]&&h.gaugeCrvApy[0]!==0?{base:h.gaugeCrvApy[0],boosted:h.gaugeCrvApy[1]}:void 0,gaugeRewards:h.gaugeRewards,usdTotal:A,totalSupply:T,lpPrice:O,liquidityUtilization:void 0}})):[]}async function getAllCurvePools(a){let d=[];return await Promise.all(curvePools.map(async n=>{const c=await callCurvePoolsAPI(a,n);return d=d.concat(c),c})),Promise.all(d)}async function getAllCurveData(a){const d=await callCurveSubGraphAPI(a),n=await getAllCurvePools(a),c=[];for(const l of n){if(c.map(T=>T.address).includes(l.address))continue;const h=l.lpTokenAddress.toLowerCase();lpTokens.add(h.toLowerCase()),lpTokensToBasePool[h]=l.address.toLowerCase();const A={id:l.id,name:l.name,address:l.address,lpToken:h,lpTokenAddress:h,coins:l.coins,coinNames:l.coinAddresses.join(" "),coinAddresses:l.coinAddresses,coinLogos:l.coinLogos,tokensForDeposit:l.tokensForDeposit,gaugeAddress:l.gaugeAddress,usdTotal:l.usdTotal,totalSupply:l.totalSupply,lpPrice:l.lpPrice,tvl:Math.round(l.usdTotal),gaugeRewards:l.gaugeRewards,gaugeCrvApy:l.gaugeCrvApy?{base:Math.round(l.gaugeCrvApy.base*100)/100,boosted:Math.round(l.gaugeCrvApy.boosted*100)/100}:void 0,liquidityUtilization:0,volumeUSD:0,dailyApy:0,weeklyApy:0};for(const T of d)if(caseInsensitiveEqual(l.address,T.address)){A.liquidityUtilization=T.volumeUSD/l.usdTotal,A.volumeUSD=Math.round(T.volumeUSD),A.dailyApy=Math.round(T.dailyApy*100)/100,A.weeklyApy=Math.round(T.weeklyApy*100)/100;break}c.push(A)}return c}const getCurvePools=async a=>{const d=getNonLocalhostChainId(a),n=await getAllCurveData(d),c=getCrvCvxWithChainId(d).map(h=>h.lpToken.toLowerCase());return n.filter(h=>lowerCaseIncludes(c,h.lpTokenAddress))},getCurvePoolsforPriceFetching=async a=>{const d=getNonLocalhostChainId(a),n=await getAllCurveData(d),l=getERC20Registry(a).map(A=>A.erc20TokenAddress.toLowerCase());return n.filter(A=>lowerCaseIncludes(l,A.lpTokenAddress))};async function getExtendedPoolInfo(a,d){let n=0;for(let Q=0;Q<a.tokensForDeposit.length;Q+=1)a.tokensForDeposit[Q].usdTotal=Number(formatUnits(BigInt(a.tokensForDeposit[Q].poolBalance),Number(a.tokensForDeposit[Q].decimals)))*a.tokensForDeposit[Q].usdPrice,n+=a.tokensForDeposit[Q].usdTotal||0,a.tokensForDeposit[Q].symbol.startsWith("am")&&(a.tokensForDeposit[Q].symbol=a.tokensForDeposit[Q].symbol.slice(2));for(let Q=0;Q<a.tokensForDeposit.length;Q+=1)a.tokensForDeposit[Q].weighting=(a.tokensForDeposit[Q].usdTotal||0)/n;const c=await d.functions.fee();let l,h,A,T=!1;try{const Q=(await d.functions.future_A_time())[0].toNumber(),H=new Date(Q*1e3);h=H.toLocaleString(),A=(await d.functions.future_A())[0].toNumber()/100,T=!!Q&&H>=new Date,l=(await d.functions.initial_A())[0].toNumber()/100}catch{logError("A ramp up not found")}return{poolAddress:d.address,lpToken:a.lpTokenAddress,gaugeAddress:a.gaugeAddress,gaugeCrvApy:a.gaugeCrvApy,currencyReserves:a.coins,liquidityUtilization:a.liquidityUtilization,volumeUSD:a.volumeUSD,dailyApy:a.dailyApy,weeklyApy:a.weeklyApy,gaugeRewards:a?.gaugeRewards,A:(await d.functions.A())[0].toNumber(),initialA:l,futureTime:h,futureA:A,hasRampUp:T,fee:c[0].toNumber()/1e8,daoFee:c[0].toNumber()/2e8,virtualPrice:Number((await d.functions.get_virtual_price())[0].toBigInt()/100000000000000n)/1e4}}const abi$v=[{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"owner",type:"address"},{indexed:!0,internalType:"address",name:"spender",type:"address"},{indexed:!1,internalType:"uint256",name:"value",type:"uint256"}],name:"Approval",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"from",type:"address"},{indexed:!0,internalType:"address",name:"to",type:"address"},{indexed:!1,internalType:"uint256",name:"value",type:"uint256"},{indexed:!1,internalType:"uint256",name:"index",type:"uint256"}],name:"BalanceTransfer",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"from",type:"address"},{indexed:!0,internalType:"address",name:"target",type:"address"},{indexed:!1,internalType:"uint256",name:"value",type:"uint256"},{indexed:!1,internalType:"uint256",name:"index",type:"uint256"}],name:"Burn",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"underlyingAsset",type:"address"},{indexed:!0,internalType:"address",name:"pool",type:"address"},{indexed:!1,internalType:"address",name:"treasury",type:"address"},{indexed:!1,internalType:"address",name:"incentivesController",type:"address"},{indexed:!1,internalType:"uint8",name:"aTokenDecimals",type:"uint8"},{indexed:!1,internalType:"string",name:"aTokenName",type:"string"},{indexed:!1,internalType:"string",name:"aTokenSymbol",type:"string"},{indexed:!1,internalType:"bytes",name:"params",type:"bytes"}],name:"Initialized",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"from",type:"address"},{indexed:!1,internalType:"uint256",name:"value",type:"uint256"},{indexed:!1,internalType:"uint256",name:"index",type:"uint256"}],name:"Mint",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"from",type:"address"},{indexed:!0,internalType:"address",name:"to",type:"address"},{indexed:!1,internalType:"uint256",name:"value",type:"uint256"}],name:"Transfer",type:"event"},{inputs:[],name:"ATOKEN_REVISION",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"DOMAIN_SEPARATOR",outputs:[{internalType:"bytes32",name:"",type:"bytes32"}],stateMutability:"view",type:"function"},{inputs:[],name:"EIP712_REVISION",outputs:[{internalType:"bytes",name:"",type:"bytes"}],stateMutability:"view",type:"function"},{inputs:[],name:"PERMIT_TYPEHASH",outputs:[{internalType:"bytes32",name:"",type:"bytes32"}],stateMutability:"view",type:"function"},{inputs:[],name:"POOL",outputs:[{internalType:"contract ILendingPool",name:"",type:"address"}],stateMutability:"view",type:"function"},{inputs:[],name:"RESERVE_TREASURY_ADDRESS",outputs:[{internalType:"address",name:"",type:"address"}],stateMutability:"view",type:"function"},{inputs:[],name:"UNDERLYING_ASSET_ADDRESS",outputs:[{internalType:"address",name:"",type:"address"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"",type:"address"}],name:"_nonces",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"owner",type:"address"},{internalType:"address",name:"spender",type:"address"}],name:"allowance",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"spender",type:"address"},{internalType:"uint256",name:"amount",type:"uint256"}],name:"approve",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"user",type:"address"}],name:"balanceOf",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"user",type:"address"},{internalType:"address",name:"receiverOfUnderlying",type:"address"},{internalType:"uint256",name:"amount",type:"uint256"},{internalType:"uint256",name:"index",type:"uint256"}],name:"burn",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[],name:"decimals",outputs:[{internalType:"uint8",name:"",type:"uint8"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"spender",type:"address"},{internalType:"uint256",name:"subtractedValue",type:"uint256"}],name:"decreaseAllowance",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"nonpayable",type:"function"},{inputs:[],name:"getIncentivesController",outputs:[{internalType:"contract IAaveIncentivesController",name:"",type:"address"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"user",type:"address"}],name:"getScaledUserBalanceAndSupply",outputs:[{internalType:"uint256",name:"",type:"uint256"},{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"user",type:"address"},{internalType:"uint256",name:"amount",type:"uint256"}],name:"handleRepayment",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"spender",type:"address"},{internalType:"uint256",name:"addedValue",type:"uint256"}],name:"increaseAllowance",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"contract ILendingPool",name:"pool",type:"address"},{internalType:"address",name:"treasury",type:"address"},{internalType:"address",name:"underlyingAsset",type:"address"},{internalType:"contract IAaveIncentivesController",name:"incentivesController",type:"address"},{internalType:"uint8",name:"aTokenDecimals",type:"uint8"},{internalType:"string",name:"aTokenName",type:"string"},{internalType:"string",name:"aTokenSymbol",type:"string"},{internalType:"bytes",name:"params",type:"bytes"}],name:"initialize",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"user",type:"address"},{internalType:"uint256",name:"amount",type:"uint256"},{internalType:"uint256",name:"index",type:"uint256"}],name:"mint",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"uint256",name:"amount",type:"uint256"},{internalType:"uint256",name:"index",type:"uint256"}],name:"mintToTreasury",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[],name:"name",outputs:[{internalType:"string",name:"",type:"string"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"owner",type:"address"},{internalType:"address",name:"spender",type:"address"},{internalType:"uint256",name:"value",type:"uint256"},{internalType:"uint256",name:"deadline",type:"uint256"},{internalType:"uint8",name:"v",type:"uint8"},{internalType:"bytes32",name:"r",type:"bytes32"},{internalType:"bytes32",name:"s",type:"bytes32"}],name:"permit",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"user",type:"address"}],name:"scaledBalanceOf",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"scaledTotalSupply",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"symbol",outputs:[{internalType:"string",name:"",type:"string"}],stateMutability:"view",type:"function"},{inputs:[],name:"totalSupply",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"recipient",type:"address"},{internalType:"uint256",name:"amount",type:"uint256"}],name:"transfer",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"sender",type:"address"},{internalType:"address",name:"recipient",type:"address"},{internalType:"uint256",name:"amount",type:"uint256"}],name:"transferFrom",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"from",type:"address"},{internalType:"address",name:"to",type:"address"},{internalType:"uint256",name:"value",type:"uint256"}],name:"transferOnLiquidation",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"target",type:"address"},{internalType:"uint256",name:"amount",type:"uint256"}],name:"transferUnderlyingTo",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"nonpayable",type:"function"}],abi$u=[{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"owner",type:"address"},{indexed:!0,internalType:"address",name:"spender",type:"address"},{indexed:!1,internalType:"uint256",name:"value",type:"uint256"}],name:"Approval",type:"event"},{anonymous:!1,inputs:[{indexed:!1,internalType:"uint8",name:"version",type:"uint8"}],name:"Initialized",type:"event"},{anonymous:!1,inputs:[{indexed:!1,internalType:"address",name:"implementation",type:"address"}],name:"NewStratCandidate",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:!0,internalType:"address",name:"from",type:"address"},{indexed:!0,internalType:"address",name:"to",type:"address"},{indexed:!1,internalType:"uint256",name:"value",type:"uint256"}],name:"Transfer",type:"event"},{anonymous:!1,inputs:[{indexed:!1,internalType:"address",name:"implementation",type:"address"}],name:"UpgradeStrat",type:"event"},{inputs:[{internalType:"address",name:"owner",type:"address"},{internalType:"address",name:"spender",type:"address"}],name:"allowance",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"approvalDelay",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"spender",type:"address"},{internalType:"uint256",name:"amount",type:"uint256"}],name:"approve",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"nonpayable",type:"function"},{inputs:[],name:"available",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"balance",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"account",type:"address"}],name:"balanceOf",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"decimals",outputs:[{internalType:"uint8",name:"",type:"uint8"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"spender",type:"address"},{internalType:"uint256",name:"subtractedValue",type:"uint256"}],name:"decreaseAllowance",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"uint256",name:"_amount",type:"uint256"}],name:"deposit",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[],name:"depositAll",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[],name:"earn",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[],name:"getPricePerFullShare",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"_token",type:"address"}],name:"inCaseTokensGetStuck",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"spender",type:"address"},{internalType:"uint256",name:"addedValue",type:"uint256"}],name:"increaseAllowance",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"contract IStrategyV7",name:"_strategy",type:"address"},{internalType:"string",name:"_name",type:"string"},{internalType:"string",name:"_symbol",type:"string"},{internalType:"uint256",name:"_approvalDelay",type:"uint256"}],name:"initialize",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[],name:"name",outputs:[{internalType:"string",name:"",type:"string"}],stateMutability:"view",type:"function"},{inputs:[],name:"owner",outputs:[{internalType:"address",name:"",type:"address"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"_implementation",type:"address"}],name:"proposeStrat",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[],name:"renounceOwnership",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[],name:"stratCandidate",outputs:[{internalType:"address",name:"implementation",type:"address"},{internalType:"uint256",name:"proposedTime",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"strategy",outputs:[{internalType:"contract IStrategyV7",name:"",type:"address"}],stateMutability:"view",type:"function"},{inputs:[],name:"symbol",outputs:[{internalType:"string",name:"",type:"string"}],stateMutability:"view",type:"function"},{inputs:[],name:"totalSupply",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"to",type:"address"},{internalType:"uint256",name:"amount",type:"uint256"}],name:"transfer",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"from",type:"address"},{internalType:"address",name:"to",type:"address"},{internalType:"uint256",name:"amount",type:"uint256"}],name:"transferFrom",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"newOwner",type:"address"}],name:"transferOwnership",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[],name:"upgradeStrat",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[],name:"want",outputs:[{internalType:"contract IERC20Upgradeable",name:"",type:"address"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"uint256",name:"_shares",type:"uint256"}],name:"withdraw",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[],name:"withdrawAll",outputs:[],stateMutability:"nonpayable",type:"function"}],abi$t=[{constant:!0,inputs:[],name:"name",outputs:[{name:"",type:"string"}],payable:!1,stateMutability:"view",type:"function"},{constant:!0,inputs:[],name:"assetProtectionRole",outputs:[{name:"",type:"address"}],payable:!1,stateMutability:"view",type:"function"},{constant:!0,inputs:[],name:"decimals",outputs:[{name:"",type:"uint8"}],payable:!1,stateMutability:"view",type:"function"},{constant:!0,inputs:[],name:"paused",outputs:[{name:"",type:"bool"}],payable:!1,stateMutability:"view",type:"function"},{constant:!0,inputs:[],name:"owner",outputs:[{name:"",type:"address"}],payable:!1,stateMutability:"view",type:"function"},{constant:!0,inputs:[],name:"symbol",outputs:[{name:"",type:"string"}],payable:!1,stateMutability:"view",type:"function"},{constant:!0,inputs:[],name:"betaDelegateWhitelister",outputs:[{name:"",type:"address"}],payable:!1,stateMutability:"view",type:"function"},{constant:!0,inputs:[],name:"proposedOwner",outputs:[{name:"",type:"address"}],payable:!1,stateMutability:"view",type:"function"},{constant:!0,inputs:[],name:"EIP712_DOMAIN_HASH",outputs:[{name:"",type:"bytes32"}],payable:!1,stateMutability:"view",type:"function"},{constant:!0,inputs:[],name:"supplyController",outputs:[{name:"",type:"address"}],payable:!1,stateMutability:"view",type:"function"},{inputs:[],payable:!1,stateMutability:"nonpayable",type:"constructor"},{anonymous:!1,inputs:[{indexed:!0,name:"from",type:"address"},{indexed:!0,name:"to",type:"address"},{indexed:!1,name:"value",type:"uint256"}],name:"Transfer",type:"event"},{anonymous:!1,inputs:[{indexed:!0,name:"owner",type:"address"},{indexed:!0,name:"spender",type:"address"},{indexed:!1,name:"value",type:"uint256"}],name:"Approval",type:"event"},{anonymous:!1,inputs:[{indexed:!0,name:"currentOwner",type:"address"},{indexed:!0,name:"proposedOwner",type:"address"}],name:"OwnershipTransferProposed",type:"event"},{anonymous:!1,inputs:[{indexed:!0,name:"oldProposedOwner",type:"address"}],name:"OwnershipTransferDisregarded",type:"event"},{anonymous:!1,inputs:[{indexed:!0,name:"oldOwner",type:"address"},{indexed:!0,name:"newOwner",type:"address"}],name:"OwnershipTransferred",type:"event"},{anonymous:!1,inputs:[],name:"Pause",type:"event"},{anonymous:!1,inputs:[],name:"Unpause",type:"event"},{anonymous:!1,inputs:[{indexed:!0,name:"addr",type:"address"}],name:"AddressFrozen",type:"event"},{anonymous:!1,inputs:[{indexed:!0,name:"addr",type:"address"}],name:"AddressUnfrozen",type:"event"},{anonymous:!1,inputs:[{indexed:!0,name:"addr",type:"address"}],name:"FrozenAddressWiped",type:"event"},{anonymous:!1,inputs:[{indexed:!0,name:"oldAssetProtectionRole",type:"address"},{indexed:!0,name:"newAssetProtectionRole",type:"address"}],name:"AssetProtectionRoleSet",type:"event"},{anonymous:!1,inputs:[{indexed:!0,name:"to",type:"address"},{indexed:!1,name:"value",type:"uint256"}],name:"SupplyIncreased",type:"event"},{anonymous:!1,inputs:[{indexed:!0,name:"from",type:"address"},{indexed:!1,name:"value",type:"uint256"}],name:"SupplyDecreased",type:"event"},{anonymous:!1,inputs:[{indexed:!0,name:"oldSupplyController",type:"address"},{indexed:!0,name:"newSupplyController",type:"address"}],name:"SupplyControllerSet",type:"event"},{anonymous:!1,inputs:[{indexed:!0,name:"from",type:"address"},{indexed:!0,name:"to",type:"address"},{indexed:!1,name:"value",type:"uint256"},{indexed:!1,name:"seq",type:"uint256"},{indexed:!1,name:"fee",type:"uint256"}],name:"BetaDelegatedTransfer",type:"event"},{anonymous:!1,inputs:[{indexed:!0,name:"oldWhitelister",type:"address"},{indexed:!0,name:"newWhitelister",type:"address"}],name:"BetaDelegateWhitelisterSet",type:"event"},{anonymous:!1,inputs:[{indexed:!0,name:"newDelegate",type:"address"}],name:"BetaDelegateWhitelisted",type:"event"},{anonymous:!1,inputs:[{indexed:!0,name:"oldDelegate",type:"address"}],name:"BetaDelegateUnwhitelisted",type:"event"},{constant:!1,inputs:[],name:"initialize",outputs:[],payable:!1,stateMutability:"nonpayable",type:"function"},{constant:!1,inputs:[],name:"initializeDomainSeparator",outputs:[],payable:!1,stateMutability:"nonpayable",type:"function"},{constant:!0,inputs:[],name:"totalSupply",outputs:[{name:"",type:"uint256"}],payable:!1,stateMutability:"view",type:"function"},{constant:!1,inputs:[{name:"_to",type:"address"},{name:"_value",type:"uint256"}],name:"transfer",outputs:[{name:"",type:"bool"}],payable:!1,stateMutability:"nonpayable",type:"function"},{constant:!0,inputs:[{name:"_addr",type:"address"}],name:"balanceOf",outputs:[{name:"",type:"uint256"}],payable:!1,stateMutability:"view",type:"function"},{constant:!1,inputs:[{name:"_from",type:"address"},{name:"_to",type:"address"},{name:"_value",type:"uint256"}],name:"transferFrom",outputs:[{name:"",type:"bool"}],payable:!1,stateMutability:"nonpayable",type:"function"},{constant:!1,inputs:[{name:"_spender",type:"address"},{name:"_value",type:"uint256"}],name:"approve",outputs:[{name:"",type:"bool"}],payable:!1,stateMutability:"nonpayable",type:"function"},{constant:!0,inputs:[{name:"_owner",type:"address"},{name:"_spender",type:"address"}],name:"allowance",outputs:[{name:"",type:"uint256"}],payable:!1,stateMutability:"view",type:"function"},{constant:!1,inputs:[{name:"_proposedOwner",type:"address"}],name:"proposeOwner",outputs:[],payable:!1,stateMutability:"nonpayable",type:"function"},{constant:!1,inputs:[],name:"disregardProposeOwner",outputs:[],payable:!1,stateMutability:"nonpayable",type:"function"},{constant:!1,inputs:[],name:"claimOwnership",outputs:[],payable:!1,stateMutability:"nonpayable",type:"function"},{constant:!1,inputs:[],name:"reclaimBUSD",outputs:[],payable:!1,stateMutability:"nonpayable",type:"function"},{constant:!1,inputs:[],name:"pause",outputs:[],payable:!1,stateMutability:"nonpayable",type:"function"},{constant:!1,inputs:[],name:"unpause",outputs:[],payable:!1,stateMutability:"nonpayable",type:"function"},{constant:!1,inputs:[{name:"_newAssetProtectionRole",type:"address"}],name:"setAssetProtectionRole",outputs:[],payable:!1,stateMutability:"nonpayable",type:"function"},{constant:!1,inputs:[{name:"_addr",type:"address"}],name:"freeze",outputs:[],payable:!1,stateMutability:"nonpayable",type:"function"},{constant:!1,inputs:[{name:"_addr",type:"address"}],name:"unfreeze",outputs:[],payable:!1,stateMutability:"nonpayable",type:"function"},{constant:!1,inputs:[{name:"_addr",type:"address"}],name:"wipeFrozenAddress",outputs:[],payable:!1,stateMutability:"nonpayable",type:"function"},{constant:!0,inputs:[{name:"_addr",type:"address"}],name:"isFrozen",outputs:[{name:"",type:"bool"}],payable:!1,stateMutability:"view",type:"function"},{constant:!1,inputs:[{name:"_newSupplyController",type:"address"}],name:"setSupplyController",outputs:[],payable:!1,stateMutability:"nonpayable",type:"function"},{constant:!1,inputs:[{name:"_value",type:"uint256"}],name:"increaseSupply",outputs:[{name:"success",type:"bool"}],payable:!1,stateMutability:"nonpayable",type:"function"},{constant:!1,inputs:[{name:"_value",type:"uint256"}],name:"decreaseSupply",outputs:[{name:"success",type:"bool"}],payable:!1,stateMutability:"nonpayable",type:"function"},{constant:!0,inputs:[{name:"target",type:"address"}],name:"nextSeqOf",outputs:[{name:"",type:"uint256"}],payable:!1,stateMutability:"view",type:"function"},{constant:!1,inputs:[{name:"sig",type:"bytes"},{name:"to",type:"address"},{name:"value",type:"uint256"},{name:"fee",type:"uint256"},{name:"seq",type:"uint256"},{name:"deadline",type:"uint256"}],name:"betaDelegatedTransfer",outputs:[{name:"",type:"bool"}],payable:!1,stateMutability:"nonpayable",type:"function"},{constant:!1,inputs:[{name:"r",type:"bytes32[]"},{name:"s",type:"bytes32[]"},{name:"v",type:"uint8[]"},{name:"to",type:"address[]"},{name:"value",type:"uint256[]"},{name:"fee",type:"uint256[]"},{name:"seq",type:"uint256[]"},{name:"deadline",type:"uint256[]"}],name:"betaDelegatedTransferBatch",outputs:[{name:"",type:"bool"}],payable:!1,stateMutability:"nonpayable",type:"function"},{constant:!0,inputs:[{name:"_addr",type:"address"}],name:"isWhitelistedBetaDelegate",outputs:[{name:"",type:"bool"}],payable:!1,stateMutability:"view",type:"function"},{constant:!1,inputs:[{name:"_newWhitelister",type:"address"}],name:"setBetaDelegateWhitelister",outputs:[],payable:!1,stateMutability:"nonpayable",type:"function"},{constant:!1,inputs:[{name:"_addr",type:"address"}],name:"whitelistBetaDelegate",outputs:[],payable:!1,stateMutability:"nonpayable",type:"function"},{constant:!1,inputs:[{name:"_addr",type:"address"}],name:"unwhitelistBetaDelegate",outputs:[],payable:!1,stateMutability:"nonpayable",type:"function"}],abi$s=[{name:"TokenExchange",inputs:[{name:"buyer",type:"address",indexed:!0},{name:"sold_id",type:"uint256",indexed:!1},{name:"tokens_sold",type:"uint256",indexed:!1},{name:"bought_id",type:"uint256",indexed:!1},{name:"tokens_bought",type:"uint256",indexed:!1}],anonymous:!1,type:"event"},{name:"AddLiquidity",inputs:[{name:"provider",type:"address",indexed:!0},{name:"token_amounts",type:"uint256[2]",indexed:!1},{name:"fee",type:"uint256",indexed:!1},{name:"token_supply",type:"uint256",indexed:!1}],anonymous:!1,type:"event"},{name:"RemoveLiquidity",inputs:[{name:"provider",type:"address",indexed:!0},{name:"token_amounts",type:"uint256[2]",indexed:!1},{name:"token_supply",type:"uint256",indexed:!1}],anonymous:!1,type:"event"},{name:"RemoveLiquidityOne",inputs:[{name:"provider",type:"address",indexed:!0},{name:"token_amount",type:"uint256",indexed:!1},{name:"coin_index",type:"uint256",indexed:!1},{name:"coin_amount",type:"uint256",indexed:!1}],anonymous:!1,type:"event"},{name:"CommitNewParameters",inputs:[{name:"deadline",type:"uint256",indexed:!0},{name:"admin_fee",type:"uint256",indexed:!1},{name:"mid_fee",type:"uint256",indexed:!1},{name:"out_fee",type:"uint256",indexed:!1},{name:"fee_gamma",type:"uint256",indexed:!1},{name:"allowed_extra_profit",type:"uint256",indexed:!1},{name:"adjustment_step",type:"uint256",indexed:!1},{name:"ma_half_time",type:"uint256",indexed:!1}],anonymous:!1,type:"event"},{name:"NewParameters",inputs:[{name:"admin_fee",type:"uint256",indexed:!1},{name:"mid_fee",type:"uint256",indexed:!1},{name:"out_fee",type:"uint256",indexed:!1},{name:"fee_gamma",type:"uint256",indexed:!1},{name:"allowed_extra_profit",type:"uint256",indexed:!1},{name:"adjustment_step",type:"uint256",indexed:!1},{name:"ma_half_time",type:"uint256",indexed:!1}],anonymous:!1,type:"event"},{name:"RampAgamma",inputs:[{name:"initial_A",type:"uint256",indexed:!1},{name:"future_A",type:"uint256",indexed:!1},{name:"initial_gamma",type:"uint256",indexed:!1},{name:"future_gamma",type:"uint256",indexed:!1},{name:"initial_time",type:"uint256",indexed:!1},{name:"future_time",type:"uint256",indexed:!1}],anonymous:!1,type:"event"},{name:"StopRampA",inputs:[{name:"current_A",type:"uint256",indexed:!1},{name:"current_gamma",type:"uint256",indexed:!1},{name:"time",type:"uint256",indexed:!1}],anonymous:!1,type:"event"},{name:"ClaimAdminFee",inputs:[{name:"admin",type:"address",indexed:!0},{name:"tokens",type:"uint256",indexed:!1}],anonymous:!1,type:"event"},{stateMutability:"nonpayable",type:"constructor",inputs:[{name:"_weth",type:"address"}],outputs:[]},{stateMutability:"payable",type:"fallback"},{stateMutability:"payable",type:"function",name:"exchange",inputs:[{name:"i",type:"uint256"},{name:"j",type:"uint256"},{name:"dx",type:"uint256"},{name:"min_dy",type:"uint256"}],outputs:[{name:"",type:"uint256"}]},{stateMutability:"payable",type:"function",name:"exchange",inputs:[{name:"i",type:"uint256"},{name:"j",type:"uint256"},{name:"dx",type:"uint256"},{name:"min_dy",type:"uint256"},{name:"use_eth",type:"bool"}],outputs:[{name:"",type:"uint256"}]},{stateMutability:"payable",type:"function",name:"exchange",inputs:[{name:"i",type:"uint256"},{name:"j",type:"uint256"},{name:"dx",type:"uint256"},{name:"min_dy",type:"uint256"},{name:"use_eth",type:"bool"},{name:"receiver",type:"address"}],outputs:[{name:"",type:"uint256"}]},{stateMutability:"payable",type:"function",name:"exchange_underlying",inputs:[{name:"i",type:"uint256"},{name:"j",type:"uint256"},{name:"dx",type:"uint256"},{name:"min_dy",type:"uint256"}],outputs:[{name:"",type:"uint256"}]},{stateMutability:"payable",type:"function",name:"exchange_underlying",inputs:[{name:"i",type:"uint256"},{name:"j",type:"uint256"},{name:"dx",type:"uint256"},{name:"min_dy",type:"uint256"},{name:"receiver",type:"address"}],outputs:[{name:"",type:"uint256"}]},{stateMutability:"payable",type:"function",name:"exchange_extended",inputs:[{name:"i",type:"uint256"},{name:"j",type:"uint256"},{name:"dx",type:"uint256"},{name:"min_dy",type:"uint256"},{name:"use_eth",type:"bool"},{name:"sender",type:"address"},{name:"receiver",type:"address"},{name:"cb",type:"bytes32"}],outputs:[{name:"",type:"uint256"}]},{stateMutability:"payable",type:"function",name:"add_liquidity",inputs:[{name:"amounts",type:"uint256[2]"},{name:"min_mint_amount",type:"uint256"}],outputs:[{name:"",type:"uint256"}]},{stateMutability:"payable",type:"function",name:"add_liquidity",inputs:[{name:"amounts",type:"uint256[2]"},{name:"min_mint_amount",type:"uint256"},{name:"use_eth",type:"bool"}],outputs:[{name:"",type:"uint256"}]},{stateMutability:"payable",type:"function",name:"add_liquidity",inputs:[{name:"amounts",type:"uint256[2]"},{name:"min_mint_amount",type:"uint256"},{name:"use_eth",type:"bool"},{name:"receiver",type:"address"}],outputs:[{name:"",type:"uint256"}]},{stateMutability:"nonpayable",type:"function",name:"remove_liquidity",inputs:[{name:"_amount",type:"uint256"},{name:"min_amounts",type:"uint256[2]"}],outputs:[]},{stateMutability:"nonpayable",type:"function",name:"remove_liquidity",inputs:[{name:"_amount",type:"uint256"},{name:"min_amounts",type:"uint256[2]"},{name:"use_eth",type:"bool"}],outputs:[]},{stateMutability:"nonpayable",type:"function",name:"remove_liquidity",inputs:[{name:"_amount",type:"uint256"},{name:"min_amounts",type:"uint256[2]"},{name:"use_eth",type:"bool"},{name:"receiver",type:"address"}],outputs:[]},{stateMutability:"nonpayable",type:"function",name:"remove_liquidity_one_coin",inputs:[{name:"token_amount",type:"uint256"},{name:"i",type:"uint256"},{name:"min_amount",type:"uint256"}],outputs:[{name:"",type:"uint256"}]},{stateMutability:"nonpayable",type:"function",name:"remove_liquidity_one_coin",inputs:[{name:"token_amount",type:"uint256"},{name:"i",type:"uint256"},{name:"min_amount",type:"uint256"},{name:"use_eth",type:"bool"}],outputs:[{name:"",type:"uint256"}]},{stateMutability:"nonpayable",type:"function",name:"remove_liquidity_one_coin",inputs:[{name:"token_amount",type:"uint256"},{name:"i",type:"uint256"},{name:"min_amount",type:"uint256"},{name:"use_eth",type:"bool"},{name:"receiver",type:"address"}],outputs:[{name:"",type:"uint256"}]},{stateMutability:"nonpayable",type:"function",name:"claim_admin_fees",inputs:[],outputs:[]},{stateMutability:"nonpayable",type:"function",name:"ramp_A_gamma",inputs:[{name:"future_A",type:"uint256"},{name:"future_gamma",type:"uint256"},{name:"future_time",type:"uint256"}],outputs:[]},{stateMutability:"nonpayable",type:"function",name:"stop_ramp_A_gamma",inputs:[],outputs:[]},{stateMutability:"nonpayable",type:"function",name:"commit_new_parameters",inputs:[{name:"_new_mid_fee",type:"uint256"},{name:"_new_out_fee",type:"uint256"},{name:"_new_admin_fee",type:"uint256"},{name:"_new_fee_gamma",type:"uint256"},{name:"_new_allowed_extra_profit",type:"uint256"},{name:"_new_adjustment_step",type:"uint256"},{name:"_new_ma_half_time",type:"uint256"}],outputs:[]},{stateMutability:"nonpayable",type:"function",name:"apply_new_parameters",inputs:[],outputs:[]},{stateMutability:"nonpayable",type:"function",name:"revert_new_parameters",inputs:[],outputs:[]},{stateMutability:"view",type:"function",name:"get_dy",inputs:[{name:"i",type:"uint256"},{name:"j",type:"uint256"},{name:"dx",type:"uint256"}],outputs:[{name:"",type:"uint256"}]},{stateMutability:"view",type:"function",name:"calc_token_amount",inputs:[{name:"_amounts",type:"uint256[3]"},{name:"is_deposit",type:"bool"}],outputs:[{name:"",type:"uint256"}]},{stateMutability:"view",type:"function",name:"calc_withdraw_one_coin",inputs:[{name:"token_amount",type:"uint256"},{name:"i",type:"uint256"}],outputs:[{name:"",type:"uint256"}]},{stateMutability:"view",type:"function",name:"lp_price",inputs:[],outputs:[{name:"",type:"uint256"}]},{stateMutability:"view",type:"function",name:"A",inputs:[],outputs:[{name:"",type:"uint256"}]},{stateMutability:"view",type:"function",name:"gamma",inputs:[],outputs:[{name:"",type:"uint256"}]},{stateMutability:"view",type:"function",name:"fee",inputs:[],outputs:[{name:"",type:"uint256"}]},{stateMutability:"view",type:"function",name:"get_virtual_price",inputs:[],outputs:[{name:"",type:"uint256"}]},{stateMutability:"view",type:"function",name:"price_oracle",inputs:[],outputs:[{name:"",type:"uint256"}]},{stateMutability:"nonpayable",type:"function",name:"initialize",inputs:[{name:"A",type:"uint256"},{name:"gamma",type:"uint256"},{name:"mid_fee",type:"uint256"},{name:"out_fee",type:"uint256"},{name:"allowed_extra_profit",type:"uint256"},{name:"fee_gamma",type:"uint256"},{name:"adjustment_step",type:"uint256"},{name:"admin_fee",type:"uint256"},{name:"ma_half_time",type:"uint256"},{name:"initial_price",type:"uint256"},{name:"_token",type:"address"},{name:"_coins",type:"address[2]"},{name:"_precisions",type:"uint256"}],outputs:[]},{stateMutability:"view",type:"function",name:"token",inputs:[],outputs:[{name:"",type:"address"}]},{stateMutability:"view",type:"function",name:"coins",inputs:[{name:"arg0",type:"uint256"}],outputs:[{name:"",type:"address"}]},{stateMutability:"view",type:"function",name:"price_scale",inputs:[],outputs:[{name:"",type:"uint256"}]},{stateMutability:"view",type:"function",name:"last_prices",inputs:[],outputs:[{name:"",type:"uint256"}]},{stateMutability:"view",type:"function",name:"last_prices_timestamp",inputs:[],outputs:[{name:"",type:"uint256"}]},{stateMutability:"view",type:"function",name:"initial_A_gamma",inputs:[],outputs:[{name:"",type:"uint256"}]},{stateMutability:"view",type:"function",name:"future_A_gamma",inputs:[],outputs:[{name:"",type:"uint256"}]},{stateMutability:"view",type:"function",name:"initial_A_gamma_time",inputs:[],outputs:[{name:"",type:"uint256"}]},{stateMutability:"view",type:"function",name:"future_A_gamma_time",inputs:[],outputs:[{name:"",type:"uint256"}]},{stateMutability:"view",type:"function",name:"allowed_extra_profit",inputs:[],outputs:[{name:"",type:"uint256"}]},{stateMutability:"view",type:"function",name:"future_allowed_extra_profit",inputs:[],outputs:[{name:"",type:"uint256"}]},{stateMutability:"view",type:"function",name:"fee_gamma",inputs:[],outputs:[{name:"",type:"uint256"}]},{stateMutability:"view",type:"function",name:"future_fee_gamma",inputs:[],outputs:[{name:"",type:"uint256"}]},{stateMutability:"view",type:"function",name:"adjustment_step",inputs:[],outputs:[{name:"",type:"uint256"}]},{stateMutability:"view",type:"function",name:"future_adjustment_step",inputs:[],outputs:[{name:"",type:"uint256"}]},{stateMutability:"view",type:"function",name:"ma_half_time",inputs:[],outputs:[{name:"",type:"uint256"}]},{stateMutability:"view",type:"function",name:"future_ma_half_time",inputs:[],outputs:[{name:"",type:"uint256"}]},{stateMutability:"view",type:"function",name:"mid_fee",inputs:[],outputs:[{name:"",type:"uint256"}]},{stateMutability:"view",type:"function",name:"out_fee",inputs:[],outputs:[{name:"",type:"uint256"}]},{stateMutability:"view",type:"function",name:"admin_fee",inputs:[],outputs:[{name:"",type:"uint256"}]},{stateMutability:"view",type:"function",name:"future_mid_fee",inputs:[],outputs:[{name:"",type:"uint256"}]},{stateMutability:"view",type:"function",name:"future_out_fee",inputs:[],outputs:[{name:"",type:"uint256"}]},{stateMutability:"view",type:"function",name:"future_admin_fee",inputs:[],outputs:[{name:"",type:"uint256"}]},{stateMutability:"view",type:"function",name:"balances",inputs:[{name:"arg0",type:"uint256"}],outputs:[{name:"",type:"uint256"}]},{stateMutability:"view",type:"function",name:"D",inputs:[],outputs:[{name:"",type:"uint256"}]},{stateMutability:"view",type:"function",name:"factory",inputs:[],outputs:[{name:"",type:"address"}]},{stateMutability:"view",type:"function",name:"xcp_profit",inputs:[],outputs:[{name:"",type:"uint256"}]},{stateMutability:"view",type:"function",name:"xcp_profit_a",inputs:[],outputs:[{name:"",type:"uint256"}]},{stateMutability:"view",type:"function",name:"virtual_price",inputs:[],outputs:[{name:"",type:"uint256"}]},{stateMutability:"view",type:"function",name:"admin_actions_deadline",inputs:[],outputs:[{name:"",type:"uint256"}]},{stateMutability:"view",type:"function",name:"initial_A",inputs:[],outputs:[{name:"",type:"uint256"}]},{stateMutability:"view",type:"function",name:"future_A",inputs:[],outputs:[{name:"",type:"uint256"}]},{stateMutability:"view",type:"function",name:"initial_A_time",inputs:[],outputs:[{name:"",type:"uint256"}]},{stateMutability:"view",type:"function",name:"future_A_time",inputs:[],outputs:[{name:"",type:"uint256"}]}],abi$r=[{name:"TokenExchange",inputs:[{name:"buyer",type:"address",indexed:!0},{name:"sold_id",type:"int128",indexed:!1},{name:"tokens_sold",type:"uint256",indexed:!1},{name:"bought_id",type:"int128",indexed:!1},{name:"tokens_bought",type:"uint256",indexed:!1}],anonymous:!1,type:"event"},{name:"TokenExchangeUnderlying",inputs:[{name:"buyer",type:"address",indexed:!0},{name:"sold_id",type:"int128",indexed:!1},{name:"tokens_sold",type:"uint256",indexed:!1},{name:"bought_id",type:"int128",indexed:!1},{name:"tokens_bought",type:"uint256",indexed:!1}],anonymous:!1,type:"event"},{name:"AddLiquidity",inputs:[{name:"provider",type:"address",indexed:!0},{name:"token_amounts",type:"uint256[3]",indexed:!1},{name:"fees",type:"uint256[3]",indexed:!1},{name:"invariant",type:"uint256",indexed:!1},{name:"token_supply",type:"uint256",indexed:!1}],anonymous:!1,type:"event"},{name:"RemoveLiquidity",inputs:[{name:"provider",type:"address",indexed:!0},{name:"token_amounts",type:"uint256[3]",indexed:!1},{name:"fees",type:"uint256[3]",indexed:!1},{name:"token_supply",type:"uint256",indexed:!1}],anonymous:!1,type:"event"},{name:"RemoveLiquidityOne",inputs:[{name:"provider",type:"address",indexed:!0},{name:"token_amount",type:"uint256",indexed:!1},{name:"coin_amount",type:"uint256",indexed:!1}],anonymous:!1,type:"event"},{name:"RemoveLiquidityImbalance",inputs:[{name:"provider",type:"address",indexed:!0},{name:"token_amounts",type:"uint256[3]",indexed:!1},{name:"fees",type:"uint256[3]",indexed:!1},{name:"invariant",type:"uint256",indexed:!1},{name:"token_supply",type:"uint256",indexed:!1}],anonymous:!1,type:"event"},{name:"CommitNewAdmin",inputs:[{name:"deadline",type:"uint256",indexed:!0},{name:"admin",type:"address",indexed:!0}],anonymous:!1,type:"event"},{name:"NewAdmin",inputs:[{name:"admin",type:"address",indexed:!0}],anonymous:!1,type:"event"},{name:"CommitNewFee",inputs:[{name:"deadline",type:"uint256",indexed:!0},{name:"fee",type:"uint256",indexed:!1},{name:"admin_fee",type:"uint256",indexed:!1},{name:"offpeg_fee_multiplier",type:"uint256",indexed:!1}],anonymous:!1,type:"event"},{name:"NewFee",inputs:[{name:"fee",type:"uint256",indexed:!1},{name:"admin_fee",type:"uint256",indexed:!1},{name:"offpeg_fee_multiplier",type:"uint256",indexed:!1}],anonymous:!1,type:"event"},{name:"RampA",inputs:[{name:"old_A",type:"uint256",indexed:!1},{name:"new_A",type:"uint256",indexed:!1},{name:"initial_time",type:"uint256",indexed:!1},{name:"future_time",type:"uint256",indexed:!1}],anonymous:!1,type:"event"},{name:"StopRampA",inputs:[{name:"A",type:"uint256",indexed:!1},{name:"t",type:"uint256",indexed:!1}],anonymous:!1,type:"event"},{stateMutability:"nonpayable",type:"constructor",inputs:[{name:"_coins",type:"address[3]"},{name:"_underlying_coins",type:"address[3]"},{name:"_pool_token",type:"address"},{name:"_A",type:"uint256"},{name:"_fee",type:"uint256"},{name:"_admin_fee",type:"uint256"},{name:"_offpeg_fee_multiplier",type:"uint256"}],outputs:[]},{stateMutability:"view",type:"function",name:"A",inputs:[],outputs:[{name:"",type:"uint256"}]},{stateMutability:"view",type:"function",name:"A_precise",inputs:[],outputs:[{name:"",type:"uint256"}]},{stateMutability:"view",type:"function",name:"dynamic_fee",inputs:[{name:"i",type:"int128"},{name:"j",type:"int128"}],outputs:[{name:"",type:"uint256"}]},{stateMutability:"view",type:"function",name:"balances",inputs:[{name:"i",type:"uint256"}],outputs:[{name:"",type:"uint256"}]},{stateMutability:"view",type:"function",name:"get_virtual_price",inputs:[],outputs:[{name:"",type:"uint256"}]},{stateMutability:"view",type:"function",name:"calc_token_amount",inputs:[{name:"_amounts",type:"uint256[3]"},{name:"is_deposit",type:"bool"}],outputs:[{name:"",type:"uint256"}]},{stateMutability:"nonpayable",type:"function",name:"add_liquidity",inputs:[{name:"_amounts",type:"uint256[3]"},{name:"_min_mint_amount",type:"uint256"},{name:"_use_underlying",type:"bool"}],outputs:[{name:"",type:"uint256"}]},{stateMutability:"view",type:"function",name:"get_dy",inputs:[{name:"i",type:"int128"},{name:"j",type:"int128"},{name:"dx",type:"uint256"}],outputs:[{name:"",type:"uint256"}]},{stateMutability:"view",type:"function",name:"get_dy_underlying",inputs:[{name:"i",type:"int128"},{name:"j",type:"int128"},{name:"dx",type:"uint256"}],outputs:[{name:"",type:"uint256"}]},{stateMutability:"nonpayable",type:"function",name:"exchange",inputs:[{name:"i",type:"int128"},{name:"j",type:"int128"},{name:"dx",type:"uint256"},{name:"min_dy",type:"uint256"}],outputs:[{name:"",type:"uint256"}]},{stateMutability:"nonpayable",type:"function",name:"exchange_underlying",inputs:[{name:"i",type:"int128"},{name:"j",type:"int128"},{name:"dx",type:"uint256"},{name:"min_dy",type:"uint256"}],outputs:[{name:"",type:"uint256"}]},{stateMutability:"nonpayable",type:"function",name:"remove_liquidity",inputs:[{name:"_amount",type:"uint256"},{name:"_min_amounts",type:"uint256[3]"}],outputs:[{name:"",type:"uint256[3]"}]},{stateMutability:"nonpayable",type:"function",name:"remove_liquidity",inputs:[{name:"_amount",type:"uint256"},{name:"_min_amounts",type:"uint256[3]"},{name:"_use_underlying",type:"bool"}],outputs:[{name:"",type:"uint256[3]"}]},{stateMutability:"nonpayable",type:"function",name:"remove_liquidity_imbalance",inputs:[{name:"_amounts",type:"uint256[3]"},{name:"_max_burn_amount",type:"uint256"}],outputs:[{name:"",type:"uint256"}]},{stateMutability:"nonpayable",type:"function",name:"remove_liquidity_imbalance",inputs:[{name:"_amounts",type:"uint256[3]"},{name:"_max_burn_amount",type:"uint256"},{name:"_use_underlying",type:"bool"}],outputs:[{name:"",type:"uint256"}]},{stateMutability:"view",type:"function",name:"calc_withdraw_one_coin",inputs:[{name:"_token_amount",type:"uint256"},{name:"i",type:"int128"}],outputs:[{name:"",type:"uint256"}]},{stateMutability:"nonpayable",type:"function",name:"remove_liquidity_one_coin",inputs:[{name:"_token_amount",type:"uint256"},{name:"i",type:"int128"},{name:"_min_amount",type:"uint256"}],outputs:[{name:"",type:"uint256"}]},{stateMutability:"nonpayable",type:"function",name:"remove_liquidity_one_coin",inputs:[{name:"_token_amount",type:"uint256"},{name:"i",type:"int128"},{name:"_min_amount",type:"uint256"},{name:"_use_underlying",type:"bool"}],outputs:[{name:"",type:"uint256"}]},{stateMutability:"nonpayable",type:"function",name:"ramp_A",inputs:[{name:"_future_A",type:"uint256"},{name:"_future_time",type:"uint256"}],outputs:[]},{stateMutability:"nonpayable",type:"function",name:"stop_ramp_A",inputs:[],outputs:[]},{stateMutability:"nonpayable",type:"function",name:"commit_new_fee",inputs:[{name:"new_fee",type:"uint256"},{name:"new_admin_fee",type:"uint256"},{name:"new_offpeg_fee_multiplier",type:"uint256"}],outputs:[]},{stateMutability:"nonpayable",type:"function",name:"apply_new_fee",inputs:[],outputs:[]},{stateMutability:"nonpayable",type:"function",name:"revert_new_parameters",inputs:[],outputs:[]},{stateMutability:"nonpayable",type:"function",name:"commit_transfer_ownership",inputs:[{name:"_owner",type:"address"}],outputs:[]},{stateMutability:"nonpayable",type:"function",name:"apply_transfer_ownership",inputs:[],outputs:[]},{stateMutability:"nonpayable",type:"function",name:"revert_transfer_ownership",inputs:[],outputs:[]},{stateMutability:"nonpayable",type:"function",name:"withdraw_admin_fees",inputs:[],outputs:[]},{stateMutability:"nonpayable",type:"function",name:"donate_admin_fees",inputs:[],outputs:[]},{stateMutability:"nonpayable",type:"function",name:"kill_me",inputs:[],outputs:[]},{stateMutability:"nonpayable",type:"function",name:"unkill_me",inputs:[],outputs:[]},{stateMutability:"nonpayable",type:"function",name:"set_aave_referral",inputs:[{name:"referral_code",type:"uint256"}],outputs:[]},{stateMutability:"nonpayable",type:"function",name:"set_reward_receiver",inputs:[{name:"_reward_receiver",type:"address"}],outputs:[]},{stateMutability:"nonpayable",type:"function",name:"set_admin_fee_receiver",inputs:[{name:"_admin_fee_receiver",type:"address"}],outputs:[]},{stateMutability:"view",type:"function",name:"coins",inputs:[{name:"arg0",type:"uint256"}],outputs:[{name:"",type:"address"}]},{stateMutability:"view",type:"function",name:"underlying_coins",inputs:[{name:"arg0",type:"uint256"}],outputs:[{name:"",type:"address"}]},{stateMutability:"view",type:"function",name:"admin_balances",inputs:[{name:"arg0",type:"uint256"}],outputs:[{name:"",type:"uint256"}]},{stateMutability:"view",type:"function",name:"fee",inputs:[],outputs:[{name:"",type:"uint256"}]},{stateMutability:"view",type:"function",name:"offpeg_fee_multiplier",inputs:[],outputs:[{name:"",type:"uint256"}]},{stateMutability:"view",type:"function",name:"admin_fee",inputs:[],outputs:[{name:"",type:"uint256"}]},{stateMutability:"view",type:"function",name:"owner",inputs:[],outputs:[{name:"",type:"address"}]},{stateMutability:"view",type:"function",name:"lp_token",inputs:[],outputs:[{name:"",type:"address"}]},{stateMutability:"view",type:"function",name:"initial_A",inputs:[],outputs:[{name:"",type:"uint256"}]},{stateMutability:"view",type:"function",name:"future_A",inputs:[],outputs:[{name:"",type:"uint256"}]},{stateMutability:"view",type:"function",name:"initial_A_time",inputs:[],outputs:[{name:"",type:"uint256"}]},{stateMutability:"view",type:"function",name:"future_A_time",inputs:[],outputs:[{name:"",type:"uint256"}]},{stateMutability:"view",type:"function",name:"admin_actions_deadline",inputs:[],outputs:[{name:"",type:"uint256"}]},{stateMutability:"view",type:"function",name:"transfer_ownership_deadline",inputs:[],outputs:[{name:"",type:"uint256"}]},{stateMutability:"view",type:"function",name:"future_fee",inputs:[],outputs:[{name:"",type:"uint256"}]},{stateMutability:"view",type:"function",name:"future_admin_fee",inputs:[],outputs:[{name:"",type:"uint256"}]},{stateMutability:"view",type:"function",name:"future_offpeg_fee_multiplier",inputs:[],outputs:[{name:"",type:"uint256"}]},{stateMutability:"view",type:"function",name:"future_owner",inputs:[],outputs:[{name:"",type:"address"}]},{stateMutability:"view",type:"function",name:"reward_receiver",inputs:[],outputs:[{name:"",type:"address"}]},{stateMutability:"view",type:"function",name:"admin_fee_receiver",inputs:[],outputs:[{name:"",type:"address"}]}],abi$q=[{inputs:[{internalType:"uint256",name:"chainId_",type:"uint256"}],payable:!1,stateMutability:"nonpayable",type:"constructor"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"src",type:"address"},{indexed:!0,internalType:"address",name:"guy",type:"address"},{indexed:!1,internalType:"uint256",name:"wad",type:"uint256"}],name:"Approval",type:"event"},{anonymous:!0,inputs:[{indexed:!0,internalType:"bytes4",name:"sig",type:"bytes4"},{indexed:!0,internalType:"address",name:"usr",type:"address"},{indexed:!0,internalType:"bytes32",name:"arg1",type:"bytes32"},{indexed:!0,internalType:"bytes32",name:"arg2",type:"bytes32"},{indexed:!1,internalType:"bytes",name:"data",type:"bytes"}],name:"LogNote",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"src",type:"address"},{indexed:!0,internalType:"address",name:"dst",type:"address"},{indexed:!1,internalType:"uint256",name:"wad",type:"uint256"}],name:"Transfer",type:"event"},{constant:!0,inputs:[],name:"DOMAIN_SEPARATOR",outputs:[{internalType:"bytes32",name:"",type:"bytes32"}],payable:!1,stateMutability:"view",type:"function"},{constant:!0,inputs:[],name:"PERMIT_TYPEHASH",outputs:[{internalType:"bytes32",name:"",type:"bytes32"}],payable:!1,stateMutability:"view",type:"function"},{constant:!0,inputs:[{internalType:"address",name:"",type:"address"},{internalType:"address",name:"",type:"address"}],name:"allowance",outputs:[{internalType:"uint256",name:"",type:"uint256"}],payable:!1,stateMutability:"view",type:"function"},{constant:!1,inputs:[{internalType:"address",name:"usr",type:"address"},{internalType:"uint256",name:"wad",type:"uint256"}],name:"approve",outputs:[{internalType:"bool",name:"",type:"bool"}],payable:!1,stateMutability:"nonpayable",type:"function"},{constant:!0,inputs:[{internalType:"address",name:"",type:"address"}],name:"balanceOf",outputs:[{internalType:"uint256",name:"",type:"uint256"}],payable:!1,stateMutability:"view",type:"function"},{constant:!1,inputs:[{internalType:"address",name:"usr",type:"address"},{internalType:"uint256",name:"wad",type:"uint256"}],name:"burn",outputs:[],payable:!1,stateMutability:"nonpayable",type:"function"},{constant:!0,inputs:[],name:"decimals",outputs:[{internalType:"uint8",name:"",type:"uint8"}],payable:!1,stateMutability:"view",type:"function"},{constant:!1,inputs:[{internalType:"address",name:"guy",type:"address"}],name:"deny",outputs:[],payable:!1,stateMutability:"nonpayable",type:"function"},{constant:!1,inputs:[{internalType:"address",name:"usr",type:"address"},{internalType:"uint256",name:"wad",type:"uint256"}],name:"mint",outputs:[],payable:!1,stateMutability:"nonpayable",type:"function"},{constant:!1,inputs:[{internalType:"address",name:"src",type:"address"},{internalType:"address",name:"dst",type:"address"},{internalType:"uint256",name:"wad",type:"uint256"}],name:"move",outputs:[],payable:!1,stateMutability:"nonpayable",type:"function"},{constant:!0,inputs:[],name:"name",outputs:[{internalType:"string",name:"",type:"string"}],payable:!1,stateMutability:"view",type:"function"},{constant:!0,inputs:[{internalType:"address",name:"",type:"address"}],name:"nonces",outputs:[{internalType:"uint256",name:"",type:"uint256"}],payable:!1,stateMutability:"view",type:"function"},{constant:!1,inputs:[{internalType:"address",name:"holder",type:"address"},{internalType:"address",name:"spender",type:"address"},{internalType:"uint256",name:"nonce",type:"uint256"},{internalType:"uint256",name:"expiry",type:"uint256"},{internalType:"bool",name:"allowed",type:"bool"},{internalType:"uint8",name:"v",type:"uint8"},{internalType:"bytes32",name:"r",type:"bytes32"},{internalType:"bytes32",name:"s",type:"bytes32"}],name:"permit",outputs:[],payable:!1,stateMutability:"nonpayable",type:"function"},{constant:!1,inputs:[{internalType:"address",name:"usr",type:"address"},{internalType:"uint256",name:"wad",type:"uint256"}],name:"pull",outputs:[],payable:!1,stateMutability:"nonpayable",type:"function"},{constant:!1,inputs:[{internalType:"address",name:"usr",type:"address"},{internalType:"uint256",name:"wad",type:"uint256"}],name:"push",outputs:[],payable:!1,stateMutability:"nonpayable",type:"function"},{constant:!1,inputs:[{internalType:"address",name:"guy",type:"address"}],name:"rely",outputs:[],payable:!1,stateMutability:"nonpayable",type:"function"},{constant:!0,inputs:[],name:"symbol",outputs:[{internalType:"string",name:"",type:"string"}],payable:!1,stateMutability:"view",type:"function"},{constant:!0,inputs:[],name:"totalSupply",outputs:[{internalType:"uint256",name:"",type:"uint256"}],payable:!1,stateMutability:"view",type:"function"},{constant:!1,inputs:[{internalType:"address",name:"dst",type:"address"},{internalType:"uint256",name:"wad",type:"uint256"}],name:"transfer",outputs:[{internalType:"bool",name:"",type:"bool"}],payable:!1,stateMutability:"nonpayable",type:"function"},{constant:!1,inputs:[{internalType:"address",name:"src",type:"address"},{internalType:"address",name:"dst",type:"address"},{internalType:"uint256",name:"wad",type:"uint256"}],name:"transferFrom",outputs:[{internalType:"bool",name:"",type:"bool"}],payable:!1,stateMutability:"nonpayable",type:"function"},{constant:!0,inputs:[],name:"version",outputs:[{internalType:"string",name:"",type:"string"}],payable:!1,stateMutability:"view",type:"function"},{constant:!0,inputs:[{internalType:"address",name:"",type:"address"}],name:"wards",outputs:[{internalType:"uint256",name:"",type:"uint256"}],payable:!1,stateMutability:"view",type:"function"}],abi$p=[{inputs:[{internalType:"string",name:"name_",type:"string"},{internalType:"string",name:"symbol_",type:"string"}],stateMutability:"nonpayable",type:"constructor"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"owner",type:"address"},{indexed:!0,internalType:"address",name:"spender",type:"address"},{indexed:!1,internalType:"uint256",name:"value",type:"uint256"}],name:"Approval",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"from",type:"address"},{indexed:!0,internalType:"address",name:"to",type:"address"},{indexed:!1,internalType:"uint256",name:"value",type:"uint256"}],name:"Transfer",type:"event"},{inputs:[{internalType:"address",name:"owner",type:"address"},{internalType:"address",name:"spender",type:"address"}],name:"allowance",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"spender",type:"address"},{internalType:"uint256",name:"amount",type:"uint256"}],name:"approve",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"account",type:"address"}],name:"balanceOf",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"decimals",outputs:[{internalType:"uint8",name:"",type:"uint8"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"spender",type:"address"},{internalType:"uint256",name:"subtractedValue",type:"uint256"}],name:"decreaseAllowance",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"spender",type:"address"},{internalType:"uint256",name:"addedValue",type:"uint256"}],name:"increaseAllowance",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"nonpayable",type:"function"},{inputs:[],name:"name",outputs:[{internalType:"string",name:"",type:"string"}],stateMutability:"view",type:"function"},{inputs:[],name:"symbol",outputs:[{internalType:"string",name:"",type:"string"}],stateMutability:"view",type:"function"},{inputs:[],name:"totalSupply",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"to",type:"address"},{internalType:"uint256",name:"amount",type:"uint256"}],name:"transfer",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"from",type:"address"},{internalType:"address",name:"to",type:"address"},{internalType:"uint256",name:"amount",type:"uint256"}],name:"transferFrom",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"nonpayable",type:"function"}],abi$o=[{inputs:[{internalType:"bytes",name:"path",type:"bytes"},{internalType:"uint256",name:"amountIn",type:"uint256"}],name:"quoteExactInput",outputs:[{internalType:"uint256",name:"amountOut",type:"uint256"},{internalType:"uint160[]",name:"sqrtPriceX96AfterList",type:"uint160[]"},{internalType:"uint32[]",name:"initializedTicksCrossedList",type:"uint32[]"},{internalType:"uint256",name:"gasEstimate",type:"uint256"}],stateMutability:"nonpayable",type:"function"},{inputs:[{components:[{internalType:"address",name:"tokenIn",type:"address"},{internalType:"address",name:"tokenOut",type:"address"},{internalType:"uint256",name:"amountIn",type:"uint256"},{internalType:"uint24",name:"fee",type:"uint24"},{internalType:"uint160",name:"sqrtPriceLimitX96",type:"uint160"}],internalType:"struct IQuoterV2.QuoteExactInputSingleParams",name:"params",type:"tuple"}],name:"quoteExactInputSingle",outputs:[{internalType:"uint256",name:"amountOut",type:"uint256"},{internalType:"uint160",name:"sqrtPriceX96After",type:"uint160"},{internalType:"uint32",name:"initializedTicksCrossed",type:"uint32"},{internalType:"uint256",name:"gasEstimate",type:"uint256"}],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"bytes",name:"path",type:"bytes"},{internalType:"uint256",name:"amountOut",type:"uint256"}],name:"quoteExactOutput",outputs:[{internalType:"uint256",name:"amountIn",type:"uint256"},{internalType:"uint160[]",name:"sqrtPriceX96AfterList",type:"uint160[]"},{internalType:"uint32[]",name:"initializedTicksCrossedList",type:"uint32[]"},{internalType:"uint256",name:"gasEstimate",type:"uint256"}],stateMutability:"nonpayable",type:"function"},{inputs:[{components:[{internalType:"address",name:"tokenIn",type:"address"},{internalType:"address",name:"tokenOut",type:"address"},{internalType:"uint256",name:"amount",type:"uint256"},{internalType:"uint24",name:"fee",type:"uint24"},{internalType:"uint160",name:"sqrtPriceLimitX96",type:"uint160"}],internalType:"struct IQuoterV2.QuoteExactOutputSingleParams",name:"params",type:"tuple"}],name:"quoteExactOutputSingle",outputs:[{internalType:"uint256",name:"amountIn",type:"uint256"},{internalType:"uint160",name:"sqrtPriceX96After",type:"uint160"},{internalType:"uint32",name:"initializedTicksCrossed",type:"uint32"},{internalType:"uint256",name:"gasEstimate",type:"uint256"}],stateMutability:"nonpayable",type:"function"}],abi$n=[{anonymous:!1,inputs:[{indexed:!0,internalType:"uint24",name:"fee",type:"uint24"},{indexed:!0,internalType:"int24",name:"tickSpacing",type:"int24"}],name:"FeeAmountEnabled",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"oldOwner",type:"address"},{indexed:!0,internalType:"address",name:"newOwner",type:"address"}],name:"OwnerChanged",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"token0",type:"address"},{indexed:!0,internalType:"address",name:"token1",type:"address"},{indexed:!0,internalType:"uint24",name:"fee",type:"uint24"},{indexed:!1,internalType:"int24",name:"tickSpacing",type:"int24"},{indexed:!1,internalType:"address",name:"pool",type:"address"}],name:"PoolCreated",type:"event"},{inputs:[{internalType:"address",name:"tokenA",type:"address"},{internalType:"address",name:"tokenB",type:"address"},{internalType:"uint24",name:"fee",type:"uint24"}],name:"createPool",outputs:[{internalType:"address",name:"pool",type:"address"}],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"uint24",name:"fee",type:"uint24"},{internalType:"int24",name:"tickSpacing",type:"int24"}],name:"enableFeeAmount",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"uint24",name:"fee",type:"uint24"}],name:"feeAmountTickSpacing",outputs:[{internalType:"int24",name:"",type:"int24"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"tokenA",type:"address"},{internalType:"address",name:"tokenB",type:"address"},{internalType:"uint24",name:"fee",type:"uint24"}],name:"getPool",outputs:[{internalType:"address",name:"pool",type:"address"}],stateMutability:"view",type:"function"},{inputs:[],name:"owner",outputs:[{internalType:"address",name:"",type:"address"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"_owner",type:"address"}],name:"setOwner",outputs:[],stateMutability:"nonpayable",type:"function"}],abi$m=[{inputs:[],stateMutability:"nonpayable",type:"constructor"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"addr",type:"address"}],name:"NonSanctionedAddress",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:!0,internalType:"address",name:"addr",type:"address"}],name:"SanctionedAddress",type:"event"},{anonymous:!1,inputs:[{indexed:!1,internalType:"address[]",name:"addrs",type:"address[]"}],name:"SanctionedAddressesAdded",type:"event"},{anonymous:!1,inputs:[{indexed:!1,internalType:"address[]",name:"addrs",type:"address[]"}],name:"SanctionedAddressesRemoved",type:"event"},{inputs:[{internalType:"address[]",name:"newSanctions",type:"address[]"}],name:"addToSanctionsList",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"addr",type:"address"}],name:"isSanctioned",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"addr",type:"address"}],name:"isSanctionedVerbose",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"nonpayable",type:"function"},{inputs:[],name:"name",outputs:[{internalType:"string",name:"",type:"string"}],stateMutability:"pure",type:"function"},{inputs:[],name:"owner",outputs:[{internalType:"address",name:"",type:"address"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address[]",name:"removeSanctions",type:"address[]"}],name:"removeFromSanctionsList",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[],name:"renounceOwnership",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"newOwner",type:"address"}],name:"transferOwnership",outputs:[],stateMutability:"nonpayable",type:"function"}],abi$l=[{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"owner",type:"address"},{indexed:!0,internalType:"address",name:"spender",type:"address"},{indexed:!1,internalType:"uint256",name:"value",type:"uint256"}],name:"Approval",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"authorizer",type:"address"},{indexed:!0,internalType:"bytes32",name:"nonce",type:"bytes32"}],name:"AuthorizationCanceled",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"authorizer",type:"address"},{indexed:!0,internalType:"bytes32",name:"nonce",type:"bytes32"}],name:"AuthorizationUsed",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"_account",type:"address"}],name:"Blacklisted",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"newBlacklister",type:"address"}],name:"BlacklisterChanged",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"burner",type:"address"},{indexed:!1,internalType:"uint256",name:"amount",type:"uint256"}],name:"Burn",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"newMasterMinter",type:"address"}],name:"MasterMinterChanged",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"minter",type:"address"},{indexed:!0,internalType:"address",name:"to",type:"address"},{indexed:!1,internalType:"uint256",name:"amount",type:"uint256"}],name:"Mint",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"minter",type:"address"},{indexed:!1,internalType:"uint256",name:"minterAllowedAmount",type:"uint256"}],name:"MinterConfigured",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"oldMinter",type:"address"}],name:"MinterRemoved",type:"event"},{anonymous:!1,inputs:[{indexed:!1,internalType:"address",name:"previousOwner",type:"address"},{indexed:!1,internalType:"address",name:"newOwner",type:"address"}],name:"OwnershipTransferred",type:"event"},{anonymous:!1,inputs:[],name:"Pause",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"newAddress",type:"address"}],name:"PauserChanged",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"newRescuer",type:"address"}],name:"RescuerChanged",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"from",type:"address"},{indexed:!0,internalType:"address",name:"to",type:"address"},{indexed:!1,internalType:"uint256",name:"value",type:"uint256"}],name:"Transfer",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"_account",type:"address"}],name:"UnBlacklisted",type:"event"},{anonymous:!1,inputs:[],name:"Unpause",type:"event"},{inputs:[],name:"CANCEL_AUTHORIZATION_TYPEHASH",outputs:[{internalType:"bytes32",name:"",type:"bytes32"}],stateMutability:"view",type:"function"},{inputs:[],name:"DOMAIN_SEPARATOR",outputs:[{internalType:"bytes32",name:"",type:"bytes32"}],stateMutability:"view",type:"function"},{inputs:[],name:"PERMIT_TYPEHASH",outputs:[{internalType:"bytes32",name:"",type:"bytes32"}],stateMutability:"view",type:"function"},{inputs:[],name:"RECEIVE_WITH_AUTHORIZATION_TYPEHASH",outputs:[{internalType:"bytes32",name:"",type:"bytes32"}],stateMutability:"view",type:"function"},{inputs:[],name:"TRANSFER_WITH_AUTHORIZATION_TYPEHASH",outputs:[{internalType:"bytes32",name:"",type:"bytes32"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"owner",type:"address"},{internalType:"address",name:"spender",type:"address"}],name:"allowance",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"spender",type:"address"},{internalType:"uint256",name:"value",type:"uint256"}],name:"approve",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"authorizer",type:"address"},{internalType:"bytes32",name:"nonce",type:"bytes32"}],name:"authorizationState",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"account",type:"address"}],name:"balanceOf",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"_account",type:"address"}],name:"blacklist",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[],name:"blacklister",outputs:[{internalType:"address",name:"",type:"address"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"uint256",name:"_amount",type:"uint256"}],name:"burn",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"authorizer",type:"address"},{internalType:"bytes32",name:"nonce",type:"bytes32"},{internalType:"uint8",name:"v",type:"uint8"},{internalType:"bytes32",name:"r",type:"bytes32"},{internalType:"bytes32",name:"s",type:"bytes32"}],name:"cancelAuthorization",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"minter",type:"address"},{internalType:"uint256",name:"minterAllowedAmount",type:"uint256"}],name:"configureMinter",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"nonpayable",type:"function"},{inputs:[],name:"currency",outputs:[{internalType:"string",name:"",type:"string"}],stateMutability:"view",type:"function"},{inputs:[],name:"decimals",outputs:[{internalType:"uint8",name:"",type:"uint8"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"spender",type:"address"},{internalType:"uint256",name:"decrement",type:"uint256"}],name:"decreaseAllowance",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"spender",type:"address"},{internalType:"uint256",name:"increment",type:"uint256"}],name:"increaseAllowance",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"string",name:"tokenName",type:"string"},{internalType:"string",name:"tokenSymbol",type:"string"},{internalType:"string",name:"tokenCurrency",type:"string"},{internalType:"uint8",name:"tokenDecimals",type:"uint8"},{internalType:"address",name:"newMasterMinter",type:"address"},{internalType:"address",name:"newPauser",type:"address"},{internalType:"address",name:"newBlacklister",type:"address"},{internalType:"address",name:"newOwner",type:"address"}],name:"initialize",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"string",name:"newName",type:"string"}],name:"initializeV2",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"lostAndFound",type:"address"}],name:"initializeV2_1",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"_account",type:"address"}],name:"isBlacklisted",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"account",type:"address"}],name:"isMinter",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"view",type:"function"},{inputs:[],name:"masterMinter",outputs:[{internalType:"address",name:"",type:"address"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"_to",type:"address"},{internalType:"uint256",name:"_amount",type:"uint256"}],name:"mint",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"minter",type:"address"}],name:"minterAllowance",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"name",outputs:[{internalType:"string",name:"",type:"string"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"owner",type:"address"}],name:"nonces",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:"pause",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[],name:"paused",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"view",type:"function"},{inputs:[],name:"pauser",outputs:[{internalType:"address",name:"",type:"address"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"owner",type:"address"},{internalType:"address",name:"spender",type:"address"},{internalType:"uint256",name:"value",type:"uint256"},{internalType:"uint256",name:"deadline",type:"uint256"},{internalType:"uint8",name:"v",type:"uint8"},{internalType:"bytes32",name:"r",type:"bytes32"},{internalType:"bytes32",name:"s",type:"bytes32"}],name:"permit",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"from",type:"address"},{internalType:"address",name:"to",type:"address"},{internalType:"uint256",name:"value",type:"uint256"},{internalType:"uint256",name:"validAfter",type:"uint256"},{internalType:"uint256",name:"validBefore",type:"uint256"},{internalType:"bytes32",name:"nonce",type:"bytes32"},{internalType:"uint8",name:"v",type:"uint8"},{internalType:"bytes32",name:"r",type:"bytes32"},{internalType:"bytes32",name:"s",type:"bytes32"}],name:"receiveWithAuthorization",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"minter",type:"address"}],name:"removeMinter",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"contract IERC20",name:"tokenContract",type:"address"},{internalType:"address",name:"to",type:"address"},{internalType:"uint256",name:"amount",type:"uint256"}],name:"rescueERC20",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[],name:"rescuer",outputs:[{internalType:"address",name:"",type:"address"}],stateMutability:"view",type:"function"},{inputs:[],name:"symbol",outputs:[{internalType:"string",name:"",type:"string"}],stateMutability:"view",type:"function"},{inputs:[],name:"totalSupply",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"to",type:"address"},{internalType:"uint256",name:"value",type:"uint256"}],name:"transfer",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"from",type:"address"},{internalType:"address",name:"to",type:"address"},{internalType:"uint256",name:"value",type:"uint256"}],name:"transferFrom",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"newOwner",type:"address"}],name:"transferOwnership",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"from",type:"address"},{internalType:"address",name:"to",type:"address"},{internalType:"uint256",name:"value",type:"uint256"},{internalType:"uint256",name:"validAfter",type:"uint256"},{internalType:"uint256",name:"validBefore",type:"uint256"},{internalType:"bytes32",name:"nonce",type:"bytes32"},{internalType:"uint8",name:"v",type:"uint8"},{internalType:"bytes32",name:"r",type:"bytes32"},{internalType:"bytes32",name:"s",type:"bytes32"}],name:"transferWithAuthorization",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"_account",type:"address"}],name:"unBlacklist",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[],name:"unpause",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"_newBlacklister",type:"address"}],name:"updateBlacklister",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"_newMasterMinter",type:"address"}],name:"updateMasterMinter",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"_newPauser",type:"address"}],name:"updatePauser",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"newRescuer",type:"address"}],name:"updateRescuer",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[],name:"version",outputs:[{internalType:"string",name:"",type:"string"}],stateMutability:"view",type:"function"}],abi$k=[{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"owner",type:"address"},{indexed:!0,internalType:"address",name:"spender",type:"address"},{indexed:!1,internalType:"uint256",name:"value",type:"uint256"}],name:"Approval",type:"event"},{anonymous:!1,inputs:[{indexed:!1,internalType:"uint8",name:"version",type:"uint8"}],name:"Initialized",type:"event"},{anonymous:!1,inputs:[{indexed:!1,internalType:"address",name:"account",type:"address"}],name:"Paused",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"uint256",name:"blockNumber",type:"uint256"},{indexed:!0,internalType:"uint256",name:"day",type:"uint256"},{indexed:!1,internalType:"uint256",name:"supply",type:"uint256"},{indexed:!1,internalType:"uint256",name:"supplyDelta",type:"uint256"},{indexed:!1,internalType:"uint256",name:"index",type:"uint256"}],name:"Rebase",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"bytes32",name:"role",type:"bytes32"},{indexed:!0,internalType:"bytes32",name:"previousAdminRole",type:"bytes32"},{indexed:!0,internalType:"bytes32",name:"newAdminRole",type:"bytes32"}],name:"RoleAdminChanged",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"bytes32",name:"role",type:"bytes32"},{indexed:!0,internalType:"address",name:"account",type:"address"},{indexed:!0,internalType:"address",name:"sender",type:"address"}],name:"RoleGranted",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"bytes32",name:"role",type:"bytes32"},{indexed:!0,internalType:"address",name:"account",type:"address"},{indexed:!0,internalType:"address",name:"sender",type:"address"}],name:"RoleRevoked",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"from",type:"address"},{indexed:!0,internalType:"address",name:"to",type:"address"},{indexed:!1,internalType:"uint256",name:"value",type:"uint256"}],name:"Transfer",type:"event"},{anonymous:!1,inputs:[{indexed:!1,internalType:"address",name:"account",type:"address"}],name:"Unpaused",type:"event"},{inputs:[],name:"DEFAULT_ADMIN_ROLE",outputs:[{internalType:"bytes32",name:"",type:"bytes32"}],stateMutability:"view",type:"function"},{inputs:[],name:"DOMAIN_SEPARATOR",outputs:[{internalType:"bytes32",name:"",type:"bytes32"}],stateMutability:"view",type:"function"},{inputs:[],name:"addressProvider",outputs:[{internalType:"contract AddressProvider",name:"",type:"address"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"owner_",type:"address"},{internalType:"address",name:"spender",type:"address"}],name:"allowance",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"spender",type:"address"},{internalType:"uint256",name:"value",type:"uint256"}],name:"approve",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"account",type:"address"}],name:"balanceOf",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"account",type:"address"},{internalType:"uint256",name:"amount",type:"uint256"}],name:"burn",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[],name:"decimals",outputs:[{internalType:"uint8",name:"",type:"uint8"}],stateMutability:"pure",type:"function"},{inputs:[{internalType:"address",name:"spender",type:"address"},{internalType:"uint256",name:"subtractedValue",type:"uint256"}],name:"decreaseAllowance",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"bytes32",name:"role",type:"bytes32"}],name:"getRoleAdmin",outputs:[{internalType:"bytes32",name:"",type:"bytes32"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"bytes32",name:"role",type:"bytes32"},{internalType:"address",name:"account",type:"address"}],name:"grantRole",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"bytes32",name:"role",type:"bytes32"},{internalType:"address",name:"account",type:"address"}],name:"hasRole",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"spender",type:"address"},{internalType:"uint256",name:"addedValue",type:"uint256"}],name:"increaseAllowance",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"nonpayable",type:"function"},{inputs:[],name:"initialize",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[],name:"liquidityIndex",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"account",type:"address"},{internalType:"uint256",name:"amount",type:"uint256"}],name:"mint",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[],name:"name",outputs:[{internalType:"string",name:"",type:"string"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"owner",type:"address"}],name:"nonces",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"pause",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[],name:"paused",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"owner",type:"address"},{internalType:"address",name:"spender",type:"address"},{internalType:"uint256",name:"value",type:"uint256"},{internalType:"uint256",name:"deadline",type:"uint256"},{internalType:"uint8",name:"v",type:"uint8"},{internalType:"bytes32",name:"r",type:"bytes32"},{internalType:"bytes32",name:"s",type:"bytes32"}],name:"permit",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"uint256",name:"supplyDelta",type:"uint256"}],name:"rebase",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"bytes32",name:"role",type:"bytes32"},{internalType:"address",name:"account",type:"address"}],name:"renounceRole",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"bytes32",name:"role",type:"bytes32"},{internalType:"address",name:"account",type:"address"}],name:"revokeRole",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"contract AddressProvider",name:"_addressProvider",type:"address"}],name:"setAddressProvider",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"bytes4",name:"interfaceId",type:"bytes4"}],name:"supportsInterface",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"view",type:"function"},{inputs:[],name:"symbol",outputs:[{internalType:"string",name:"",type:"string"}],stateMutability:"view",type:"function"},{inputs:[],name:"totalSupply",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"to",type:"address"},{internalType:"uint256",name:"amount",type:"uint256"}],name:"transfer",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"to",type:"address"}],name:"transferAll",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"from",type:"address"},{internalType:"address",name:"to",type:"address"}],name:"transferAllFrom",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"from",type:"address"},{internalType:"address",name:"to",type:"address"},{internalType:"uint256",name:"amount",type:"uint256"}],name:"transferFrom",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"nonpayable",type:"function"},{inputs:[],name:"unpause",outputs:[],stateMutability:"nonpayable",type:"function"}],abi$j=[{name:"Transfer",inputs:[{name:"sender",type:"address",indexed:!0},{name:"receiver",type:"address",indexed:!0},{name:"value",type:"uint256",indexed:!1}],anonymous:!1,type:"event"},{name:"Approval",inputs:[{name:"owner",type:"address",indexed:!0},{name:"spender",type:"address",indexed:!0},{name:"value",type:"uint256",indexed:!1}],anonymous:!1,type:"event"},{name:"TokenExchange",inputs:[{name:"buyer",type:"address",indexed:!0},{name:"sold_id",type:"int128",indexed:!1},{name:"tokens_sold",type:"uint256",indexed:!1},{name:"bought_id",type:"int128",indexed:!1},{name:"tokens_bought",type:"uint256",indexed:!1}],anonymous:!1,type:"event"},{name:"TokenExchangeUnderlying",inputs:[{name:"buyer",type:"address",indexed:!0},{name:"sold_id",type:"int128",indexed:!1},{name:"tokens_sold",type:"uint256",indexed:!1},{name:"bought_id",type:"int128",indexed:!1},{name:"tokens_bought",type:"uint256",indexed:!1}],anonymous:!1,type:"event"},{name:"AddLiquidity",inputs:[{name:"provider",type:"address",indexed:!0},{name:"token_amounts",type:"uint256[2]",indexed:!1},{name:"fees",type:"uint256[2]",indexed:!1},{name:"invariant",type:"uint256",indexed:!1},{name:"token_supply",type:"uint256",indexed:!1}],anonymous:!1,type:"event"},{name:"RemoveLiquidity",inputs:[{name:"provider",type:"address",indexed:!0},{name:"token_amounts",type:"uint256[2]",indexed:!1},{name:"fees",type:"uint256[2]",indexed:!1},{name:"token_supply",type:"uint256",indexed:!1}],anonymous:!1,type:"event"},{name:"RemoveLiquidityOne",inputs:[{name:"provider",type:"address",indexed:!0},{name:"token_amount",type:"uint256",indexed:!1},{name:"coin_amount",type:"uint256",indexed:!1},{name:"token_supply",type:"uint256",indexed:!1}],anonymous:!1,type:"event"},{name:"RemoveLiquidityImbalance",inputs:[{name:"provider",type:"address",indexed:!0},{name:"token_amounts",type:"uint256[2]",indexed:!1},{name:"fees",type:"uint256[2]",indexed:!1},{name:"invariant",type:"uint256",indexed:!1},{name:"token_supply",type:"uint256",indexed:!1}],anonymous:!1,type:"event"},{name:"RampA",inputs:[{name:"old_A",type:"uint256",indexed:!1},{name:"new_A",type:"uint256",indexed:!1},{name:"initial_time",type:"uint256",indexed:!1},{name:"future_time",type:"uint256",indexed:!1}],anonymous:!1,type:"event"},{name:"StopRampA",inputs:[{name:"A",type:"uint256",indexed:!1},{name:"t",type:"uint256",indexed:!1}],anonymous:!1,type:"event"},{stateMutability:"nonpayable",type:"constructor",inputs:[],outputs:[]},{stateMutability:"nonpayable",type:"function",name:"initialize",inputs:[{name:"_name",type:"string"},{name:"_symbol",type:"string"},{name:"_coin",type:"address"},{name:"_rate_multiplier",type:"uint256"},{name:"_A",type:"uint256"},{name:"_fee",type:"uint256"}],outputs:[],gas:"545069"},{stateMutability:"view",type:"function",name:"decimals",inputs:[],outputs:[{name:"",type:"uint256"}],gas:"318"},{stateMutability:"nonpayable",type:"function",name:"transfer",inputs:[{name:"_to",type:"address"},{name:"_value",type:"uint256"}],outputs:[{name:"",type:"bool"}],gas:"91298"},{stateMutability:"nonpayable",type:"function",name:"transferFrom",inputs:[{name:"_from",type:"address"},{name:"_to",type:"address"},{name:"_value",type:"uint256"}],outputs:[{name:"",type:"bool"}],gas:"129233"},{stateMutability:"nonpayable",type:"function",name:"approve",inputs:[{name:"_spender",type:"address"},{name:"_value",type:"uint256"}],outputs:[{name:"",type:"bool"}],gas:"39151"},{stateMutability:"view",type:"function",name:"balances",inputs:[{name:"i",type:"uint256"}],outputs:[{name:"",type:"uint256"}],gas:"15330"},{stateMutability:"view",type:"function",name:"get_balances",inputs:[],outputs:[{name:"",type:"uint256[2]"}],gas:"15306"},{stateMutability:"view",type:"function",name:"admin_fee",inputs:[],outputs:[{name:"",type:"uint256"}],gas:"498"},{stateMutability:"view",type:"function",name:"A",inputs:[],outputs:[{name:"",type:"uint256"}],gas:"10824"},{stateMutability:"view",type:"function",name:"A_precise",inputs:[],outputs:[{name:"",type:"uint256"}],gas:"10786"},{stateMutability:"view",type:"function",name:"get_virtual_price",inputs:[],outputs:[{name:"",type:"uint256"}],gas:"1034278"},{stateMutability:"view",type:"function",name:"calc_token_amount",inputs:[{name:"_amounts",type:"uint256[2]"},{name:"_is_deposit",type:"bool"}],outputs:[{name:"",type:"uint256"}],gas:"4041142"},{stateMutability:"nonpayable",type:"function",name:"add_liquidity",inputs:[{name:"_amounts",type:"uint256[2]"},{name:"_min_mint_amount",type:"uint256"}],outputs:[{name:"",type:"uint256"}]},{stateMutability:"nonpayable",type:"function",name:"add_liquidity",inputs:[{name:"_amounts",type:"uint256[2]"},{name:"_min_mint_amount",type:"uint256"},{name:"_receiver",type:"address"}],outputs:[{name:"",type:"uint256"}]},{stateMutability:"view",type:"function",name:"get_dy",inputs:[{name:"i",type:"int128"},{name:"j",type:"int128"},{name:"dx",type:"uint256"}],outputs:[{name:"",type:"uint256"}],gas:"2477624"},{stateMutability:"view",type:"function",name:"get_dy_underlying",inputs:[{name:"i",type:"int128"},{name:"j",type:"int128"},{name:"dx",type:"uint256"}],outputs:[{name:"",type:"uint256"}],gas:"2486125"},{stateMutability:"nonpayable",type:"function",name:"exchange",inputs:[{name:"i",type:"int128"},{name:"j",type:"int128"},{name:"_dx",type:"uint256"},{name:"_min_dy",type:"uint256"}],outputs:[{name:"",type:"uint256"}]},{stateMutability:"nonpayable",type:"function",name:"exchange",inputs:[{name:"i",type:"int128"},{name:"j",type:"int128"},{name:"_dx",type:"uint256"},{name:"_min_dy",type:"uint256"},{name:"_receiver",type:"address"}],outputs:[{name:"",type:"uint256"}]},{stateMutability:"nonpayable",type:"function",name:"exchange_underlying",inputs:[{name:"i",type:"int128"},{name:"j",type:"int128"},{name:"_dx",type:"uint256"},{name:"_min_dy",type:"uint256"}],outputs:[{name:"",type:"uint256"}]},{stateMutability:"nonpayable",type:"function",name:"exchange_underlying",inputs:[{name:"i",type:"int128"},{name:"j",type:"int128"},{name:"_dx",type:"uint256"},{name:"_min_dy",type:"uint256"},{name:"_receiver",type:"address"}],outputs:[{name:"",type:"uint256"}]},{stateMutability:"nonpayable",type:"function",name:"remove_liquidity",inputs:[{name:"_burn_amount",type:"uint256"},{name:"_min_amounts",type:"uint256[2]"}],outputs:[{name:"",type:"uint256[2]"}]},{stateMutability:"nonpayable",type:"function",name:"remove_liquidity",inputs:[{name:"_burn_amount",type:"uint256"},{name:"_min_amounts",type:"uint256[2]"},{name:"_receiver",type:"address"}],outputs:[{name:"",type:"uint256[2]"}]},{stateMutability:"nonpayable",type:"function",name:"remove_liquidity_imbalance",inputs:[{name:"_amounts",type:"uint256[2]"},{name:"_max_burn_amount",type:"uint256"}],outputs:[{name:"",type:"uint256"}]},{stateMutability:"nonpayable",type:"function",name:"remove_liquidity_imbalance",inputs:[{name:"_amounts",type:"uint256[2]"},{name:"_max_burn_amount",type:"uint256"},{name:"_receiver",type:"address"}],outputs:[{name:"",type:"uint256"}]},{stateMutability:"view",type:"function",name:"calc_withdraw_one_coin",inputs:[{name:"_burn_amount",type:"uint256"},{name:"i",type:"int128"}],outputs:[{name:"",type:"uint256"}],gas:"1168"},{stateMutability:"nonpayable",type:"function",name:"remove_liquidity_one_coin",inputs:[{name:"_burn_amount",type:"uint256"},{name:"i",type:"int128"},{name:"_min_received",type:"uint256"}],outputs:[{name:"",type:"uint256"}]},{stateMutability:"nonpayable",type:"function",name:"remove_liquidity_one_coin",inputs:[{name:"_burn_amount",type:"uint256"},{name:"i",type:"int128"},{name:"_min_received",type:"uint256"},{name:"_receiver",type:"address"}],outputs:[{name:"",type:"uint256"}]},{stateMutability:"nonpayable",type:"function",name:"ramp_A",inputs:[{name:"_future_A",type:"uint256"},{name:"_future_time",type:"uint256"}],outputs:[],gas:"162087"},{stateMutability:"nonpayable",type:"function",name:"stop_ramp_A",inputs:[],outputs:[],gas:"158007"},{stateMutability:"nonpayable",type:"function",name:"withdraw_admin_fees",inputs:[],outputs:[],gas:"150738"},{stateMutability:"view",type:"function",name:"coins",inputs:[{name:"arg0",type:"uint256"}],outputs:[{name:"",type:"address"}],gas:"3153"},{stateMutability:"view",type:"function",name:"admin_balances",inputs:[{name:"arg0",type:"uint256"}],outputs:[{name:"",type:"uint256"}],gas:"3183"},{stateMutability:"view",type:"function",name:"fee",inputs:[],outputs:[{name:"",type:"uint256"}],gas:"3168"},{stateMutability:"view",type:"function",name:"initial_A",inputs:[],outputs:[{name:"",type:"uint256"}],gas:"3198"},{stateMutability:"view",type:"function",name:"future_A",inputs:[],outputs:[{name:"",type:"uint256"}],gas:"3228"},{stateMutability:"view",type:"function",name:"initial_A_time",inputs:[],outputs:[{name:"",type:"uint256"}],gas:"3258"},{stateMutability:"view",type:"function",name:"future_A_time",inputs:[],outputs:[{name:"",type:"uint256"}],gas:"3288"},{stateMutability:"view",type:"function",name:"name",inputs:[],outputs:[{name:"",type:"string"}],gas:"13548"},{stateMutability:"view",type:"function",name:"symbol",inputs:[],outputs:[{name:"",type:"string"}],gas:"11301"},{stateMutability:"view",type:"function",name:"balanceOf",inputs:[{name:"arg0",type:"address"}],outputs:[{name:"",type:"uint256"}],gas:"3593"},{stateMutability:"view",type:"function",name:"allowance",inputs:[{name:"arg0",type:"address"},{name:"arg1",type:"address"}],outputs:[{name:"",type:"uint256"}],gas:"3838"},{stateMutability:"view",type:"function",name:"totalSupply",inputs:[],outputs:[{name:"",type:"uint256"}],gas:"3438"},{stateMutability:"view",type:"function",name:"rewards_receiver",inputs:[],outputs:[{name:"",type:"address"}],gas:"3468"}],abi$i=[{constant:!0,inputs:[],name:"name",outputs:[{name:"",type:"string"}],payable:!1,stateMutability:"view",type:"function"},{constant:!1,inputs:[{name:"_upgradedAddress",type:"address"}],name:"deprecate",outputs:[],payable:!1,stateMutability:"nonpayable",type:"function"},{constant:!1,inputs:[{name:"_spender",type:"address"},{name:"_value",type:"uint256"}],name:"approve",outputs:[],payable:!1,stateMutability:"nonpayable",type:"function"},{constant:!0,inputs:[],name:"deprecated",outputs:[{name:"",type:"bool"}],payable:!1,stateMutability:"view",type:"function"},{constant:!1,inputs:[{name:"_evilUser",type:"address"}],name:"addBlackList",outputs:[],payable:!1,stateMutability:"nonpayable",type:"function"},{constant:!0,inputs:[],name:"totalSupply",outputs:[{name:"",type:"uint256"}],payable:!1,stateMutability:"view",type:"function"},{constant:!1,inputs:[{name:"_from",type:"address"},{name:"_to",type:"address"},{name:"_value",type:"uint256"}],name:"transferFrom",outputs:[],payable:!1,stateMutability:"nonpayable",type:"function"},{constant:!0,inputs:[],name:"upgradedAddress",outputs:[{name:"",type:"address"}],payable:!1,stateMutability:"view",type:"function"},{constant:!0,inputs:[{name:"",type:"address"}],name:"balances",outputs:[{name:"",type:"uint256"}],payable:!1,stateMutability:"view",type:"function"},{constant:!0,inputs:[],name:"decimals",outputs:[{name:"",type:"uint256"}],payable:!1,stateMutability:"view",type:"function"},{constant:!0,inputs:[],name:"maximumFee",outputs:[{name:"",type:"uint256"}],payable:!1,stateMutability:"view",type:"function"},{constant:!0,inputs:[],name:"_totalSupply",outputs:[{name:"",type:"uint256"}],payable:!1,stateMutability:"view",type:"function"},{constant:!1,inputs:[],name:"unpause",outputs:[],payable:!1,stateMutability:"nonpayable",type:"function"},{constant:!0,inputs:[{name:"_maker",type:"address"}],name:"getBlackListStatus",outputs:[{name:"",type:"bool"}],payable:!1,stateMutability:"view",type:"function"},{constant:!0,inputs:[{name:"",type:"address"},{name:"",type:"address"}],name:"allowed",outputs:[{name:"",type:"uint256"}],payable:!1,stateMutability:"view",type:"function"},{constant:!0,inputs:[],name:"paused",outputs:[{name:"",type:"bool"}],payable:!1,stateMutability:"view",type:"function"},{constant:!0,inputs:[{name:"who",type:"address"}],name:"balanceOf",outputs:[{name:"",type:"uint256"}],payable:!1,stateMutability:"view",type:"function"},{constant:!1,inputs:[],name:"pause",outputs:[],payable:!1,stateMutability:"nonpayable",type:"function"},{constant:!0,inputs:[],name:"getOwner",outputs:[{name:"",type:"address"}],payable:!1,stateMutability:"view",type:"function"},{constant:!0,inputs:[],name:"owner",outputs:[{name:"",type:"address"}],payable:!1,stateMutability:"view",type:"function"},{constant:!0,inputs:[],name:"symbol",outputs:[{name:"",type:"string"}],payable:!1,stateMutability:"view",type:"function"},{constant:!1,inputs:[{name:"_to",type:"address"},{name:"_value",type:"uint256"}],name:"transfer",outputs:[],payable:!1,stateMutability:"nonpayable",type:"function"},{constant:!1,inputs:[{name:"newBasisPoints",type:"uint256"},{name:"newMaxFee",type:"uint256"}],name:"setParams",outputs:[],payable:!1,stateMutability:"nonpayable",type:"function"},{constant:!1,inputs:[{name:"amount",type:"uint256"}],name:"issue",outputs:[],payable:!1,stateMutability:"nonpayable",type:"function"},{constant:!1,inputs:[{name:"amount",type:"uint256"}],name:"redeem",outputs:[],payable:!1,stateMutability:"nonpayable",type:"function"},{constant:!0,inputs:[{name:"_owner",type:"address"},{name:"_spender",type:"address"}],name:"allowance",outputs:[{name:"remaining",type:"uint256"}],payable:!1,stateMutability:"view",type:"function"},{constant:!0,inputs:[],name:"basisPointsRate",outputs:[{name:"",type:"uint256"}],payable:!1,stateMutability:"view",type:"function"},{constant:!0,inputs:[{name:"",type:"address"}],name:"isBlackListed",outputs:[{name:"",type:"bool"}],payable:!1,stateMutability:"view",type:"function"},{constant:!1,inputs:[{name:"_clearedUser",type:"address"}],name:"removeBlackList",outputs:[],payable:!1,stateMutability:"nonpayable",type:"function"},{constant:!0,inputs:[],name:"MAX_UINT",outputs:[{name:"",type:"uint256"}],payable:!1,stateMutability:"view",type:"function"},{constant:!1,inputs:[{name:"newOwner",type:"address"}],name:"transferOwnership",outputs:[],payable:!1,stateMutability:"nonpayable",type:"function"},{constant:!1,inputs:[{name:"_blackListedUser",type:"address"}],name:"destroyBlackFunds",outputs:[],payable:!1,stateMutability:"nonpayable",type:"function"},{inputs:[{name:"_initialSupply",type:"uint256"},{name:"_name",type:"string"},{name:"_symbol",type:"string"},{name:"_decimals",type:"uint256"}],payable:!1,stateMutability:"nonpayable",type:"constructor"},{anonymous:!1,inputs:[{indexed:!1,name:"amount",type:"uint256"}],name:"Issue",type:"event"},{anonymous:!1,inputs:[{indexed:!1,name:"amount",type:"uint256"}],name:"Redeem",type:"event"},{anonymous:!1,inputs:[{indexed:!1,name:"newAddress",type:"address"}],name:"Deprecate",type:"event"},{anonymous:!1,inputs:[{indexed:!1,name:"feeBasisPoints",type:"uint256"},{indexed:!1,name:"maxFee",type:"uint256"}],name:"Params",type:"event"},{anonymous:!1,inputs:[{indexed:!1,name:"_blackListedUser",type:"address"},{indexed:!1,name:"_balance",type:"uint256"}],name:"DestroyedBlackFunds",type:"event"},{anonymous:!1,inputs:[{indexed:!1,name:"_user",type:"address"}],name:"AddedBlackList",type:"event"},{anonymous:!1,inputs:[{indexed:!1,name:"_user",type:"address"}],name:"RemovedBlackList",type:"event"},{anonymous:!1,inputs:[{indexed:!0,name:"owner",type:"address"},{indexed:!0,name:"spender",type:"address"},{indexed:!1,name:"value",type:"uint256"}],name:"Approval",type:"event"},{anonymous:!1,inputs:[{indexed:!0,name:"from",type:"address"},{indexed:!0,name:"to",type:"address"},{indexed:!1,name:"value",type:"uint256"}],name:"Transfer",type:"event"},{anonymous:!1,inputs:[],name:"Pause",type:"event"},{anonymous:!1,inputs:[],name:"Unpause",type:"event"}],abi$h=[{constant:!0,inputs:[],name:"name",outputs:[{name:"",type:"string"}],payable:!1,stateMutability:"view",type:"function"},{constant:!1,inputs:[{name:"guy",type:"address"},{name:"wad",type:"uint256"}],name:"approve",outputs:[{name:"",type:"bool"}],payable:!1,stateMutability:"nonpayable",type:"function"},{constant:!0,inputs:[],name:"totalSupply",outputs:[{name:"",type:"uint256"}],payable:!1,stateMutability:"view",type:"function"},{constant:!1,inputs:[{name:"src",type:"address"},{name:"dst",type:"address"},{name:"wad",type:"uint256"}],name:"transferFrom",outputs:[{name:"",type:"bool"}],payable:!1,stateMutability:"nonpayable",type:"function"},{constant:!1,inputs:[{name:"wad",type:"uint256"}],name:"withdraw",outputs:[],payable:!1,stateMutability:"nonpayable",type:"function"},{constant:!0,inputs:[],name:"decimals",outputs:[{name:"",type:"uint8"}],payable:!1,stateMutability:"view",type:"function"},{constant:!0,inputs:[{name:"",type:"address"}],name:"balanceOf",outputs:[{name:"",type:"uint256"}],payable:!1,stateMutability:"view",type:"function"},{constant:!0,inputs:[],name:"symbol",outputs:[{name:"",type:"string"}],payable:!1,stateMutability:"view",type:"function"},{constant:!1,inputs:[{name:"dst",type:"address"},{name:"wad",type:"uint256"}],name:"transfer",outputs:[{name:"",type:"bool"}],payable:!1,stateMutability:"nonpayable",type:"function"},{constant:!1,inputs:[],name:"deposit",outputs:[],payable:!0,stateMutability:"payable",type:"function"},{constant:!0,inputs:[{name:"",type:"address"},{name:"",type:"address"}],name:"allowance",outputs:[{name:"",type:"uint256"}],payable:!1,stateMutability:"view",type:"function"},{payable:!0,stateMutability:"payable",type:"fallback"},{anonymous:!1,inputs:[{indexed:!0,name:"src",type:"address"},{indexed:!0,name:"guy",type:"address"},{indexed:!1,name:"wad",type:"uint256"}],name:"Approval",type:"event"},{anonymous:!1,inputs:[{indexed:!0,name:"src",type:"address"},{indexed:!0,name:"dst",type:"address"},{indexed:!1,name:"wad",type:"uint256"}],name:"Transfer",type:"event"},{anonymous:!1,inputs:[{indexed:!0,name:"dst",type:"address"},{indexed:!1,name:"wad",type:"uint256"}],name:"Deposit",type:"event"},{anonymous:!1,inputs:[{indexed:!0,name:"src",type:"address"},{indexed:!1,name:"wad",type:"uint256"}],name:"Withdrawal",type:"event"}],lidoStEthAbi=[{constant:!1,inputs:[],name:"resume",outputs:[],payable:!1,stateMutability:"nonpayable",type:"function"},{constant:!0,inputs:[],name:"name",outputs:[{name:"",type:"string"}],payable:!1,stateMutability:"pure",type:"function"},{constant:!1,inputs:[],name:"stop",outputs:[],payable:!1,stateMutability:"nonpayable",type:"function"},{constant:!0,inputs:[],name:"hasInitialized",outputs:[{name:"",type:"bool"}],payable:!1,stateMutability:"view",type:"function"},{constant:!1,inputs:[{name:"_spender",type:"address"},{name:"_amount",type:"uint256"}],name:"approve",outputs:[{name:"",type:"bool"}],payable:!1,stateMutability:"nonpayable",type:"function"},{constant:!0,inputs:[],name:"STAKING_CONTROL_ROLE",outputs:[{name:"",type:"bytes32"}],payable:!1,stateMutability:"view",type:"function"},{constant:!0,inputs:[],name:"totalSupply",outputs:[{name:"",type:"uint256"}],payable:!1,stateMutability:"view",type:"function"},{constant:!0,inputs:[{name:"_ethAmount",type:"uint256"}],name:"getSharesByPooledEth",outputs:[{name:"",type:"uint256"}],payable:!1,stateMutability:"view",type:"function"},{constant:!0,inputs:[],name:"isStakingPaused",outputs:[{name:"",type:"bool"}],payable:!1,stateMutability:"view",type:"function"},{constant:!1,inputs:[{name:"_sender",type:"address"},{name:"_recipient",type:"address"},{name:"_amount",type:"uint256"}],name:"transferFrom",outputs:[{name:"",type:"bool"}],payable:!1,stateMutability:"nonpayable",type:"function"},{constant:!0,inputs:[{name:"_script",type:"bytes"}],name:"getEVMScriptExecutor",outputs:[{name:"",type:"address"}],payable:!1,stateMutability:"view",type:"function"},{constant:!1,inputs:[{name:"_maxStakeLimit",type:"uint256"},{name:"_stakeLimitIncreasePerBlock",type:"uint256"}],name:"setStakingLimit",outputs:[],payable:!1,stateMutability:"nonpayable",type:"function"},{constant:!0,inputs:[],name:"RESUME_ROLE",outputs:[{name:"",type:"bytes32"}],payable:!1,stateMutability:"view",type:"function"},{constant:!1,inputs:[{name:"_lidoLocator",type:"address"},{name:"_eip712StETH",type:"address"}],name:"finalizeUpgrade_v2",outputs:[],payable:!1,stateMutability:"nonpayable",type:"function"},{constant:!0,inputs:[],name:"decimals",outputs:[{name:"",type:"uint8"}],payable:!1,stateMutability:"pure",type:"function"},{constant:!0,inputs:[],name:"getRecoveryVault",outputs:[{name:"",type:"address"}],payable:!1,stateMutability:"view",type:"function"},{constant:!0,inputs:[],name:"DOMAIN_SEPARATOR",outputs:[{name:"",type:"bytes32"}],payable:!1,stateMutability:"view",type:"function"},{constant:!0,inputs:[],name:"getTotalPooledEther",outputs:[{name:"",type:"uint256"}],payable:!1,stateMutability:"view",type:"function"},{constant:!1,inputs:[{name:"_newDepositedValidators",type:"uint256"}],name:"unsafeChangeDepositedValidators",outputs:[],payable:!1,stateMutability:"nonpayable",type:"function"},{constant:!0,inputs:[],name:"PAUSE_ROLE",outputs:[{name:"",type:"bytes32"}],payable:!1,stateMutability:"view",type:"function"},{constant:!1,inputs:[{name:"_spender",type:"address"},{name:"_addedValue",type:"uint256"}],name:"increaseAllowance",outputs:[{name:"",type:"bool"}],payable:!1,stateMutability:"nonpayable",type:"function"},{constant:!0,inputs:[],name:"getTreasury",outputs:[{name:"",type:"address"}],payable:!1,stateMutability:"view",type:"function"},{constant:!0,inputs:[],name:"isStopped",outputs:[{name:"",type:"bool"}],payable:!1,stateMutability:"view",type:"function"},{constant:!0,inputs:[],name:"getBufferedEther",outputs:[{name:"",type:"uint256"}],payable:!1,stateMutability:"view",type:"function"},{constant:!1,inputs:[{name:"_lidoLocator",type:"address"},{name:"_eip712StETH",type:"address"}],name:"initialize",outputs:[],payable:!0,stateMutability:"payable",type:"function"},{constant:!1,inputs:[],name:"receiveELRewards",outputs:[],payable:!0,stateMutability:"payable",type:"function"},{constant:!0,inputs:[],name:"getWithdrawalCredentials",outputs:[{name:"",type:"bytes32"}],payable:!1,stateMutability:"view",type:"function"},{constant:!0,inputs:[],name:"getCurrentStakeLimit",outputs:[{name:"",type:"uint256"}],payable:!1,stateMutability:"view",type:"function"},{constant:!0,inputs:[],name:"getStakeLimitFullInfo",outputs:[{name:"isStakingPaused",type:"bool"},{name:"isStakingLimitSet",type:"bool"},{name:"currentStakeLimit",type:"uint256"},{name:"maxStakeLimit",type:"uint256"},{name:"maxStakeLimitGrowthBlocks",type:"uint256"},{name:"prevStakeLimit",type:"uint256"},{name:"prevStakeBlockNumber",type:"uint256"}],payable:!1,stateMutability:"view",type:"function"},{constant:!1,inputs:[{name:"_sender",type:"address"},{name:"_recipient",type:"address"},{name:"_sharesAmount",type:"uint256"}],name:"transferSharesFrom",outputs:[{name:"",type:"uint256"}],payable:!1,stateMutability:"nonpayable",type:"function"},{constant:!0,inputs:[{name:"_account",type:"address"}],name:"balanceOf",outputs:[{name:"",type:"uint256"}],payable:!1,stateMutability:"view",type:"function"},{constant:!1,inputs:[],name:"resumeStaking",outputs:[],payable:!1,stateMutability:"nonpayable",type:"function"},{constant:!0,inputs:[],name:"getFeeDistribution",outputs:[{name:"treasuryFeeBasisPoints",type:"uint16"},{name:"insuranceFeeBasisPoints",type:"uint16"},{name:"operatorsFeeBasisPoints",type:"uint16"}],payable:!1,stateMutability:"view",type:"function"},{constant:!1,inputs:[],name:"receiveWithdrawals",outputs:[],payable:!0,stateMutability:"payable",type:"function"},{constant:!0,inputs:[{name:"_sharesAmount",type:"uint256"}],name:"getPooledEthByShares",outputs:[{name:"",type:"uint256"}],payable:!1,stateMutability:"view",type:"function"},{constant:!0,inputs:[{name:"token",type:"address"}],name:"allowRecoverability",outputs:[{name:"",type:"bool"}],payable:!1,stateMutability:"view",type:"function"},{constant:!0,inputs:[{name:"owner",type:"address"}],name:"nonces",outputs:[{name:"",type:"uint256"}],payable:!1,stateMutability:"view",type:"function"},{constant:!0,inputs:[],name:"appId",outputs:[{name:"",type:"bytes32"}],payable:!1,stateMutability:"view",type:"function"},{constant:!0,inputs:[],name:"getOracle",outputs:[{name:"",type:"address"}],payable:!1,stateMutability:"view",type:"function"},{constant:!0,inputs:[],name:"eip712Domain",outputs:[{name:"name",type:"string"},{name:"version",type:"string"},{name:"chainId",type:"uint256"},{name:"verifyingContract",type:"address"}],payable:!1,stateMutability:"view",type:"function"},{constant:!0,inputs:[],name:"getContractVersion",outputs:[{name:"",type:"uint256"}],payable:!1,stateMutability:"view",type:"function"},{constant:!0,inputs:[],name:"getInitializationBlock",outputs:[{name:"",type:"uint256"}],payable:!1,stateMutability:"view",type:"function"},{constant:!1,inputs:[{name:"_recipient",type:"address"},{name:"_sharesAmount",type:"uint256"}],name:"transferShares",outputs:[{name:"",type:"uint256"}],payable:!1,stateMutability:"nonpayable",type:"function"},{constant:!0,inputs:[],name:"symbol",outputs:[{name:"",type:"string"}],payable:!1,stateMutability:"pure",type:"function"},{constant:!0,inputs:[],name:"getEIP712StETH",outputs:[{name:"",type:"address"}],payable:!1,stateMutability:"view",type:"function"},{constant:!1,inputs:[{name:"",type:"address"}],name:"transferToVault",outputs:[],payable:!1,stateMutability:"nonpayable",type:"function"},{constant:!0,inputs:[{name:"_sender",type:"address"},{name:"_role",type:"bytes32"},{name:"_params",type:"uint256[]"}],name:"canPerform",outputs:[{name:"",type:"bool"}],payable:!1,stateMutability:"view",type:"function"},{constant:!1,inputs:[{name:"_referral",type:"address"}],name:"submit",outputs:[{name:"",type:"uint256"}],payable:!0,stateMutability:"payable",type:"function"},{constant:!1,inputs:[{name:"_spender",type:"address"},{name:"_subtractedValue",type:"uint256"}],name:"decreaseAllowance",outputs:[{name:"",type:"bool"}],payable:!1,stateMutability:"nonpayable",type:"function"},{constant:!0,inputs:[],name:"getEVMScriptRegistry",outputs:[{name:"",type:"address"}],payable:!1,stateMutability:"view",type:"function"},{constant:!1,inputs:[{name:"_recipient",type:"address"},{name:"_amount",type:"uint256"}],name:"transfer",outputs:[{name:"",type:"bool"}],payable:!1,stateMutability:"nonpayable",type:"function"},{constant:!1,inputs:[{name:"_maxDepositsCount",type:"uint256"},{name:"_stakingModuleId",type:"uint256"},{name:"_depositCalldata",type:"bytes"}],name:"deposit",outputs:[],payable:!1,stateMutability:"nonpayable",type:"function"},{constant:!0,inputs:[],name:"UNSAFE_CHANGE_DEPOSITED_VALIDATORS_ROLE",outputs:[{name:"",type:"bytes32"}],payable:!1,stateMutability:"view",type:"function"},{constant:!0,inputs:[],name:"getBeaconStat",outputs:[{name:"depositedValidators",type:"uint256"},{name:"beaconValidators",type:"uint256"},{name:"beaconBalance",type:"uint256"}],payable:!1,stateMutability:"view",type:"function"},{constant:!1,inputs:[],name:"removeStakingLimit",outputs:[],payable:!1,stateMutability:"nonpayable",type:"function"},{constant:!1,inputs:[{name:"_reportTimestamp",type:"uint256"},{name:"_timeElapsed",type:"uint256"},{name:"_clValidators",type:"uint256"},{name:"_clBalance",type:"uint256"},{name:"_withdrawalVaultBalance",type:"uint256"},{name:"_elRewardsVaultBalance",type:"uint256"},{name:"_sharesRequestedToBurn",type:"uint256"},{name:"_withdrawalFinalizationBatches",type:"uint256[]"},{name:"_simulatedShareRate",type:"uint256"}],name:"handleOracleReport",outputs:[{name:"postRebaseAmounts",type:"uint256[4]"}],payable:!1,stateMutability:"nonpayable",type:"function"},{constant:!0,inputs:[],name:"getFee",outputs:[{name:"totalFee",type:"uint16"}],payable:!1,stateMutability:"view",type:"function"},{constant:!0,inputs:[],name:"kernel",outputs:[{name:"",type:"address"}],payable:!1,stateMutability:"view",type:"function"},{constant:!0,inputs:[],name:"getTotalShares",outputs:[{name:"",type:"uint256"}],payable:!1,stateMutability:"view",type:"function"},{constant:!1,inputs:[{name:"_owner",type:"address"},{name:"_spender",type:"address"},{name:"_value",type:"uint256"},{name:"_deadline",type:"uint256"},{name:"_v",type:"uint8"},{name:"_r",type:"bytes32"},{name:"_s",type:"bytes32"}],name:"permit",outputs:[],payable:!1,stateMutability:"nonpayable",type:"function"},{constant:!0,inputs:[{name:"_owner",type:"address"},{name:"_spender",type:"address"}],name:"allowance",outputs:[{name:"",type:"uint256"}],payable:!1,stateMutability:"view",type:"function"},{constant:!0,inputs:[],name:"isPetrified",outputs:[{name:"",type:"bool"}],payable:!1,stateMutability:"view",type:"function"},{constant:!0,inputs:[],name:"getLidoLocator",outputs:[{name:"",type:"address"}],payable:!1,stateMutability:"view",type:"function"},{constant:!0,inputs:[],name:"canDeposit",outputs:[{name:"",type:"bool"}],payable:!1,stateMutability:"view",type:"function"},{constant:!0,inputs:[],name:"STAKING_PAUSE_ROLE",outputs:[{name:"",type:"bytes32"}],payable:!1,stateMutability:"view",type:"function"},{constant:!0,inputs:[],name:"getDepositableEther",outputs:[{name:"",type:"uint256"}],payable:!1,stateMutability:"view",type:"function"},{constant:!0,inputs:[{name:"_account",type:"address"}],name:"sharesOf",outputs:[{name:"",type:"uint256"}],payable:!1,stateMutability:"view",type:"function"},{constant:!1,inputs:[],name:"pauseStaking",outputs:[],payable:!1,stateMutability:"nonpayable",type:"function"},{constant:!0,inputs:[],name:"getTotalELRewardsCollected",outputs:[{name:"",type:"uint256"}],payable:!1,stateMutability:"view",type:"function"},{payable:!0,stateMutability:"payable",type:"fallback"},{anonymous:!1,inputs:[],name:"StakingPaused",type:"event"},{anonymous:!1,inputs:[],name:"StakingResumed",type:"event"},{anonymous:!1,inputs:[{indexed:!1,name:"maxStakeLimit",type:"uint256"},{indexed:!1,name:"stakeLimitIncreasePerBlock",type:"uint256"}],name:"StakingLimitSet",type:"event"},{anonymous:!1,inputs:[],name:"StakingLimitRemoved",type:"event"},{anonymous:!1,inputs:[{indexed:!0,name:"reportTimestamp",type:"uint256"},{indexed:!1,name:"preCLValidators",type:"uint256"},{indexed:!1,name:"postCLValidators",type:"uint256"}],name:"CLValidatorsUpdated",type:"event"},{anonymous:!1,inputs:[{indexed:!1,name:"depositedValidators",type:"uint256"}],name:"DepositedValidatorsChanged",type:"event"},{anonymous:!1,inputs:[{indexed:!0,name:"reportTimestamp",type:"uint256"},{indexed:!1,name:"preCLBalance",type:"uint256"},{indexed:!1,name:"postCLBalance",type:"uint256"},{indexed:!1,name:"withdrawalsWithdrawn",type:"uint256"},{indexed:!1,name:"executionLayerRewardsWithdrawn",type:"uint256"},{indexed:!1,name:"postBufferedEther",type:"uint256"}],name:"ETHDistributed",type:"event"},{anonymous:!1,inputs:[{indexed:!0,name:"reportTimestamp",type:"uint256"},{indexed:!1,name:"timeElapsed",type:"uint256"},{indexed:!1,name:"preTotalShares",type:"uint256"},{indexed:!1,name:"preTotalEther",type:"uint256"},{indexed:!1,name:"postTotalShares",type:"uint256"},{indexed:!1,name:"postTotalEther",type:"uint256"},{indexed:!1,name:"sharesMintedAsFees",type:"uint256"}],name:"TokenRebased",type:"event"},{anonymous:!1,inputs:[{indexed:!1,name:"lidoLocator",type:"address"}],name:"LidoLocatorSet",type:"event"},{anonymous:!1,inputs:[{indexed:!1,name:"amount",type:"uint256"}],name:"ELRewardsReceived",type:"event"},{anonymous:!1,inputs:[{indexed:!1,name:"amount",type:"uint256"}],name:"WithdrawalsReceived",type:"event"},{anonymous:!1,inputs:[{indexed:!0,name:"sender",type:"address"},{indexed:!1,name:"amount",type:"uint256"},{indexed:!1,name:"referral",type:"address"}],name:"Submitted",type:"event"},{anonymous:!1,inputs:[{indexed:!1,name:"amount",type:"uint256"}],name:"Unbuffered",type:"event"},{anonymous:!1,inputs:[{indexed:!0,name:"executor",type:"address"},{indexed:!1,name:"script",type:"bytes"},{indexed:!1,name:"input",type:"bytes"},{indexed:!1,name:"returnData",type:"bytes"}],name:"ScriptResult",type:"event"},{anonymous:!1,inputs:[{indexed:!0,name:"vault",type:"address"},{indexed:!0,name:"token",type:"address"},{indexed:!1,name:"amount",type:"uint256"}],name:"RecoverToVault",type:"event"},{anonymous:!1,inputs:[{indexed:!1,name:"eip712StETH",type:"address"}],name:"EIP712StETHInitialized",type:"event"},{anonymous:!1,inputs:[{indexed:!0,name:"from",type:"address"},{indexed:!0,name:"to",type:"address"},{indexed:!1,name:"sharesValue",type:"uint256"}],name:"TransferShares",type:"event"},{anonymous:!1,inputs:[{indexed:!0,name:"account",type:"address"},{indexed:!1,name:"preRebaseTokenAmount",type:"uint256"},{indexed:!1,name:"postRebaseTokenAmount",type:"uint256"},{indexed:!1,name:"sharesAmount",type:"uint256"}],name:"SharesBurnt",type:"event"},{anonymous:!1,inputs:[],name:"Stopped",type:"event"},{anonymous:!1,inputs:[],name:"Resumed",type:"event"},{anonymous:!1,inputs:[{indexed:!0,name:"from",type:"address"},{indexed:!0,name:"to",type:"address"},{indexed:!1,name:"value",type:"uint256"}],name:"Transfer",type:"event"},{anonymous:!1,inputs:[{indexed:!0,name:"owner",type:"address"},{indexed:!0,name:"spender",type:"address"},{indexed:!1,name:"value",type:"uint256"}],name:"Approval",type:"event"},{anonymous:!1,inputs:[{indexed:!1,name:"version",type:"uint256"}],name:"ContractVersionSet",type:"event"}],lidoStMaticAbi=[{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"owner",type:"address"},{indexed:!0,internalType:"address",name:"spender",type:"address"},{indexed:!1,internalType:"uint256",name:"value",type:"uint256"}],name:"Approval",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"_from",type:"address"},{indexed:!0,internalType:"uint256",name:"_id",type:"uint256"},{indexed:!0,internalType:"uint256",name:"_amountClaimed",type:"uint256"},{indexed:!1,internalType:"uint256",name:"_amountBurned",type:"uint256"}],name:"ClaimTokensEvent",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"validatorShare",type:"address"},{indexed:!0,internalType:"uint256",name:"amountClaimed",type:"uint256"}],name:"ClaimTotalDelegatedEvent",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"uint256",name:"_amountDelegated",type:"uint256"},{indexed:!0,internalType:"uint256",name:"_remainder",type:"uint256"}],name:"DelegateEvent",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"uint256",name:"_amount",type:"uint256"}],name:"DistributeRewardsEvent",type:"event"},{anonymous:!1,inputs:[{indexed:!1,internalType:"address",name:"account",type:"address"}],name:"Paused",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"_from",type:"address"},{indexed:!1,internalType:"uint256",name:"_amount",type:"uint256"},{indexed:!0,internalType:"address",name:"_referral",type:"address"}],name:"RequestWithdrawEvent",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"bytes32",name:"role",type:"bytes32"},{indexed:!0,internalType:"bytes32",name:"previousAdminRole",type:"bytes32"},{indexed:!0,internalType:"bytes32",name:"newAdminRole",type:"bytes32"}],name:"RoleAdminChanged",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"bytes32",name:"role",type:"bytes32"},{indexed:!0,internalType:"address",name:"account",type:"address"},{indexed:!0,internalType:"address",name:"sender",type:"address"}],name:"RoleGranted",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"bytes32",name:"role",type:"bytes32"},{indexed:!0,internalType:"address",name:"account",type:"address"},{indexed:!0,internalType:"address",name:"sender",type:"address"}],name:"RoleRevoked",type:"event"},{anonymous:!1,inputs:[{indexed:!1,internalType:"address",name:"oldDaoAddress",type:"address"},{indexed:!1,internalType:"address",name:"newDaoAddress",type:"address"}],name:"SetDaoAddress",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"uint256",name:"_delegationLowerBound",type:"uint256"}],name:"SetDelegationLowerBound",type:"event"},{anonymous:!1,inputs:[{indexed:!1,internalType:"uint256",name:"daoFee",type:"uint256"},{indexed:!1,internalType:"uint256",name:"operatorsFee",type:"uint256"},{indexed:!1,internalType:"uint256",name:"insuranceFee",type:"uint256"}],name:"SetFees",type:"event"},{anonymous:!1,inputs:[{indexed:!1,internalType:"address",name:"oldFxStateRootTunnel",type:"address"},{indexed:!1,internalType:"address",name:"newFxStateRootTunnel",type:"address"}],name:"SetFxStateRootTunnel",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"_newInsuranceAddress",type:"address"}],name:"SetInsuranceAddress",type:"event"},{anonymous:!1,inputs:[{indexed:!1,internalType:"address",name:"oldLidoNFT",type:"address"},{indexed:!1,internalType:"address",name:"newLidoNFT",type:"address"}],name:"SetLidoNFT",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"_newNodeOperatorRegistryAddress",type:"address"}],name:"SetNodeOperatorRegistryAddress",type:"event"},{anonymous:!1,inputs:[{indexed:!1,internalType:"uint8",name:"oldProtocolFee",type:"uint8"},{indexed:!1,internalType:"uint8",name:"newProtocolFee",type:"uint8"}],name:"SetProtocolFee",type:"event"},{anonymous:!1,inputs:[{indexed:!1,internalType:"uint256",name:"oldRewardDistributionLowerBound",type:"uint256"},{indexed:!1,internalType:"uint256",name:"newRewardDistributionLowerBound",type:"uint256"}],name:"SetRewardDistributionLowerBound",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"_from",type:"address"},{indexed:!1,internalType:"uint256",name:"_amount",type:"uint256"},{indexed:!0,internalType:"address",name:"_referral",type:"address"}],name:"SubmitEvent",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"from",type:"address"},{indexed:!0,internalType:"address",name:"to",type:"address"},{indexed:!1,internalType:"uint256",name:"value",type:"uint256"}],name:"Transfer",type:"event"},{anonymous:!1,inputs:[{indexed:!1,internalType:"address",name:"account",type:"address"}],name:"Unpaused",type:"event"},{anonymous:!1,inputs:[{indexed:!1,internalType:"string",name:"oldVersion",type:"string"},{indexed:!0,internalType:"string",name:"newVersion",type:"string"}],name:"Version",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"_from",type:"address"},{indexed:!0,internalType:"uint256",name:"_amount",type:"uint256"}],name:"WithdrawTotalDelegatedEvent",type:"event"},{inputs:[],name:"DAO",outputs:[{internalType:"bytes32",name:"",type:"bytes32"}],stateMutability:"view",type:"function"},{inputs:[],name:"DEFAULT_ADMIN_ROLE",outputs:[{internalType:"bytes32",name:"",type:"bytes32"}],stateMutability:"view",type:"function"},{inputs:[],name:"PAUSE_ROLE",outputs:[{internalType:"bytes32",name:"",type:"bytes32"}],stateMutability:"view",type:"function"},{inputs:[],name:"UNPAUSE_ROLE",outputs:[{internalType:"bytes32",name:"",type:"bytes32"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"owner",type:"address"},{internalType:"address",name:"spender",type:"address"}],name:"allowance",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"spender",type:"address"},{internalType:"uint256",name:"amount",type:"uint256"}],name:"approve",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"account",type:"address"}],name:"balanceOf",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"calculatePendingBufferedTokens",outputs:[{internalType:"uint256",name:"pendingBufferedTokens",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"uint256",name:"_tokenId",type:"uint256"}],name:"claimTokens",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"uint256",name:"_index",type:"uint256"}],name:"claimTokensFromValidatorToContract",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"uint256",name:"_amountInMatic",type:"uint256"}],name:"convertMaticToStMatic",outputs:[{internalType:"uint256",name:"amountInStMatic",type:"uint256"},{internalType:"uint256",name:"totalStMaticSupply",type:"uint256"},{internalType:"uint256",name:"totalPooledMatic",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"uint256",name:"_amountInStMatic",type:"uint256"}],name:"convertStMaticToMatic",outputs:[{internalType:"uint256",name:"amountInMatic",type:"uint256"},{internalType:"uint256",name:"totalStMaticAmount",type:"uint256"},{internalType:"uint256",name:"totalPooledMatic",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"dao",outputs:[{internalType:"address",name:"",type:"address"}],stateMutability:"view",type:"function"},{inputs:[],name:"decimals",outputs:[{internalType:"uint8",name:"",type:"uint8"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"spender",type:"address"},{internalType:"uint256",name:"subtractedValue",type:"uint256"}],name:"decreaseAllowance",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"nonpayable",type:"function"},{inputs:[],name:"delegate",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[],name:"delegationLowerBound",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"distributeRewards",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[],name:"entityFees",outputs:[{internalType:"uint8",name:"dao",type:"uint8"},{internalType:"uint8",name:"operators",type:"uint8"},{internalType:"uint8",name:"insurance",type:"uint8"}],stateMutability:"view",type:"function"},{inputs:[],name:"fxStateRootTunnel",outputs:[{internalType:"contract IFxStateRootTunnel",name:"",type:"address"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"contract IValidatorShare",name:"_validatorShare",type:"address"}],name:"getLiquidRewards",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"uint256",name:"_tokenId",type:"uint256"}],name:"getMaticFromTokenId",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"bytes32",name:"role",type:"bytes32"}],name:"getRoleAdmin",outputs:[{internalType:"bytes32",name:"",type:"bytes32"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"uint256",name:"_tokenId",type:"uint256"}],name:"getToken2WithdrawRequests",outputs:[{components:[{internalType:"uint256",name:"amount2WithdrawFromStMATIC",type:"uint256"},{internalType:"uint256",name:"validatorNonce",type:"uint256"},{internalType:"uint256",name:"requestEpoch",type:"uint256"},{internalType:"address",name:"validatorAddress",type:"address"}],internalType:"struct IStMATIC.RequestWithdraw[]",name:"",type:"tuple[]"}],stateMutability:"view",type:"function"},{inputs:[],name:"getTotalPooledMatic",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"contract IValidatorShare",name:"_validatorShare",type:"address"}],name:"getTotalStake",outputs:[{internalType:"uint256",name:"",type:"uint256"},{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"getTotalStakeAcrossAllValidators",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"getTotalWithdrawRequest",outputs:[{components:[{internalType:"uint256",name:"amount2WithdrawFromStMATIC",type:"uint256"},{internalType:"uint256",name:"validatorNonce",type:"uint256"},{internalType:"uint256",name:"requestEpoch",type:"uint256"},{internalType:"address",name:"validatorAddress",type:"address"}],internalType:"struct IStMATIC.RequestWithdraw[]",name:"",type:"tuple[]"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"bytes32",name:"role",type:"bytes32"},{internalType:"address",name:"account",type:"address"}],name:"grantRole",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"bytes32",name:"role",type:"bytes32"},{internalType:"address",name:"account",type:"address"}],name:"hasRole",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"spender",type:"address"},{internalType:"uint256",name:"addedValue",type:"uint256"}],name:"increaseAllowance",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"_nodeOperatorRegistry",type:"address"},{internalType:"address",name:"_token",type:"address"},{internalType:"address",name:"_dao",type:"address"},{internalType:"address",name:"_insurance",type:"address"},{internalType:"address",name:"_stakeManager",type:"address"},{internalType:"address",name:"_poLidoNFT",type:"address"},{internalType:"address",name:"_fxStateRootTunnel",type:"address"}],name:"initialize",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[],name:"insurance",outputs:[{internalType:"address",name:"",type:"address"}],stateMutability:"view",type:"function"},{inputs:[],name:"lastWithdrawnValidatorId",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"name",outputs:[{internalType:"string",name:"",type:"string"}],stateMutability:"view",type:"function"},{inputs:[],name:"nodeOperatorRegistry",outputs:[{internalType:"contract INodeOperatorRegistry",name:"",type:"address"}],stateMutability:"view",type:"function"},{inputs:[],name:"pause",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[],name:"paused",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"view",type:"function"},{inputs:[],name:"poLidoNFT",outputs:[{internalType:"contract IPoLidoNFT",name:"",type:"address"}],stateMutability:"view",type:"function"},{inputs:[],name:"protocolFee",outputs:[{internalType:"uint8",name:"",type:"uint8"}],stateMutability:"view",type:"function"},{inputs:[],name:"rebalanceDelegatedTokens",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"bytes32",name:"role",type:"bytes32"},{internalType:"address",name:"account",type:"address"}],name:"renounceRole",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"uint256",name:"_amount",type:"uint256"},{internalType:"address",name:"_referral",type:"address"}],name:"requestWithdraw",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"nonpayable",type:"function"},{inputs:[],name:"reservedFunds",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"bytes32",name:"role",type:"bytes32"},{internalType:"address",name:"account",type:"address"}],name:"revokeRole",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[],name:"rewardDistributionLowerBound",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"_newDAO",type:"address"}],name:"setDaoAddress",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"uint256",name:"_delegationLowerBound",type:"uint256"}],name:"setDelegationLowerBound",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"uint8",name:"_daoFee",type:"uint8"},{internalType:"uint8",name:"_operatorsFee",type:"uint8"},{internalType:"uint8",name:"_insuranceFee",type:"uint8"}],name:"setFees",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"_newFxStateRootTunnel",type:"address"}],name:"setFxStateRootTunnel",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"_address",type:"address"}],name:"setInsuranceAddress",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"_address",type:"address"}],name:"setNodeOperatorRegistryAddress",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"_newLidoNFT",type:"address"}],name:"setPoLidoNFT",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"uint8",name:"_newProtocolFee",type:"uint8"}],name:"setProtocolFee",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"uint256",name:"_newRewardDistributionLowerBound",type:"uint256"}],name:"setRewardDistributionLowerBound",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"string",name:"_newVersion",type:"string"}],name:"setVersion",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"uint256",name:"",type:"uint256"}],name:"stMaticWithdrawRequest",outputs:[{internalType:"uint256",name:"amount2WithdrawFromStMATIC",type:"uint256"},{internalType:"uint256",name:"validatorNonce",type:"uint256"},{internalType:"uint256",name:"requestEpoch",type:"uint256"},{internalType:"address",name:"validatorAddress",type:"address"}],stateMutability:"view",type:"function"},{inputs:[],name:"stakeManager",outputs:[{internalType:"contract IStakeManager",name:"",type:"address"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"uint256",name:"_amount",type:"uint256"},{internalType:"address",name:"_referral",type:"address"}],name:"submit",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"nonpayable",type:"function"},{inputs:[],name:"submitHandler",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"view",type:"function"},{inputs:[],name:"submitThreshold",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"bytes4",name:"interfaceId",type:"bytes4"}],name:"supportsInterface",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"view",type:"function"},{inputs:[],name:"symbol",outputs:[{internalType:"string",name:"",type:"string"}],stateMutability:"view",type:"function"},{inputs:[],name:"token",outputs:[{internalType:"address",name:"",type:"address"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"uint256",name:"",type:"uint256"}],name:"token2WithdrawRequest",outputs:[{internalType:"uint256",name:"amount2WithdrawFromStMATIC",type:"uint256"},{internalType:"uint256",name:"validatorNonce",type:"uint256"},{internalType:"uint256",name:"requestEpoch",type:"uint256"},{internalType:"address",name:"validatorAddress",type:"address"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"uint256",name:"",type:"uint256"},{internalType:"uint256",name:"",type:"uint256"}],name:"token2WithdrawRequests",outputs:[{internalType:"uint256",name:"amount2WithdrawFromStMATIC",type:"uint256"},{internalType:"uint256",name:"validatorNonce",type:"uint256"},{internalType:"uint256",name:"requestEpoch",type:"uint256"},{internalType:"address",name:"validatorAddress",type:"address"}],stateMutability:"view",type:"function"},{inputs:[],name:"totalBuffered",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"totalSupply",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"to",type:"address"},{internalType:"uint256",name:"amount",type:"uint256"}],name:"transfer",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"from",type:"address"},{internalType:"address",name:"to",type:"address"},{internalType:"uint256",name:"amount",type:"uint256"}],name:"transferFrom",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"nonpayable",type:"function"},{inputs:[],name:"unpause",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[],name:"version",outputs:[{internalType:"string",name:"",type:"string"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"_validatorShare",type:"address"}],name:"withdrawTotalDelegated",outputs:[],stateMutability:"nonpayable",type:"function"}],lidoWithdrawalQueueERC721Abi=[{inputs:[{internalType:"address",name:"_wstETH",type:"address"},{internalType:"string",name:"_name",type:"string"},{internalType:"string",name:"_symbol",type:"string"}],stateMutability:"nonpayable",type:"constructor"},{inputs:[],name:"AdminZeroAddress",type:"error"},{inputs:[],name:"ApprovalToOwner",type:"error"},{inputs:[],name:"ApproveToCaller",type:"error"},{inputs:[{internalType:"uint256",name:"_firstArrayLength",type:"uint256"},{internalType:"uint256",name:"_secondArrayLength",type:"uint256"}],name:"ArraysLengthMismatch",type:"error"},{inputs:[],name:"BatchesAreNotSorted",type:"error"},{inputs:[],name:"CantSendValueRecipientMayHaveReverted",type:"error"},{inputs:[],name:"EmptyBatches",type:"error"},{inputs:[],name:"InvalidContractVersionIncrement",type:"error"},{inputs:[{internalType:"uint256",name:"_hint",type:"uint256"}],name:"InvalidHint",type:"error"},{inputs:[{internalType:"address",name:"",type:"address"}],name:"InvalidOwnerAddress",type:"error"},{inputs:[],name:"InvalidReportTimestamp",type:"error"},{inputs:[{internalType:"uint256",name:"_requestId",type:"uint256"}],name:"InvalidRequestId",type:"error"},{inputs:[{internalType:"uint256",name:"startId",type:"uint256"},{internalType:"uint256",name:"endId",type:"uint256"}],name:"InvalidRequestIdRange",type:"error"},{inputs:[],name:"InvalidState",type:"error"},{inputs:[],name:"NonZeroContractVersionOnInit",type:"error"},{inputs:[],name:"NotEnoughEther",type:"error"},{inputs:[{internalType:"address",name:"_sender",type:"address"},{internalType:"address",name:"_owner",type:"address"}],name:"NotOwner",type:"error"},{inputs:[{internalType:"address",name:"sender",type:"address"}],name:"NotOwnerOrApproved",type:"error"},{inputs:[{internalType:"address",name:"sender",type:"address"}],name:"NotOwnerOrApprovedForAll",type:"error"},{inputs:[],name:"PauseUntilMustBeInFuture",type:"error"},{inputs:[],name:"PausedExpected",type:"error"},{inputs:[{internalType:"uint256",name:"_requestId",type:"uint256"}],name:"RequestAlreadyClaimed",type:"error"},{inputs:[{internalType:"uint256",name:"_amountOfStETH",type:"uint256"}],name:"RequestAmountTooLarge",type:"error"},{inputs:[{internalType:"uint256",name:"_amountOfStETH",type:"uint256"}],name:"RequestAmountTooSmall",type:"error"},{inputs:[],name:"RequestIdsNotSorted",type:"error"},{inputs:[{internalType:"uint256",name:"_requestId",type:"uint256"}],name:"RequestNotFoundOrNotFinalized",type:"error"},{inputs:[],name:"ResumedExpected",type:"error"},{inputs:[{internalType:"string",name:"str",type:"string"}],name:"StringTooLong",type:"error"},{inputs:[{internalType:"uint256",name:"sent",type:"uint256"},{internalType:"uint256",name:"maxExpected",type:"uint256"}],name:"TooMuchEtherToFinalize",type:"error"},{inputs:[{internalType:"address",name:"from",type:"address"},{internalType:"address",name:"realOwner",type:"address"}],name:"TransferFromIncorrectOwner",type:"error"},{inputs:[],name:"TransferFromZeroAddress",type:"error"},{inputs:[{internalType:"address",name:"",type:"address"}],name:"TransferToNonIERC721Receiver",type:"error"},{inputs:[],name:"TransferToThemselves",type:"error"},{inputs:[],name:"TransferToZeroAddress",type:"error"},{inputs:[{internalType:"uint256",name:"expected",type:"uint256"},{internalType:"uint256",name:"received",type:"uint256"}],name:"UnexpectedContractVersion",type:"error"},{inputs:[],name:"ZeroAmountOfETH",type:"error"},{inputs:[],name:"ZeroMetadata",type:"error"},{inputs:[],name:"ZeroPauseDuration",type:"error"},{inputs:[],name:"ZeroRecipient",type:"error"},{inputs:[],name:"ZeroShareRate",type:"error"},{inputs:[],name:"ZeroTimestamp",type:"error"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"owner",type:"address"},{indexed:!0,internalType:"address",name:"approved",type:"address"},{indexed:!0,internalType:"uint256",name:"tokenId",type:"uint256"}],name:"Approval",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"owner",type:"address"},{indexed:!0,internalType:"address",name:"operator",type:"address"},{indexed:!1,internalType:"bool",name:"approved",type:"bool"}],name:"ApprovalForAll",type:"event"},{anonymous:!1,inputs:[{indexed:!1,internalType:"string",name:"baseURI",type:"string"}],name:"BaseURISet",type:"event"},{anonymous:!1,inputs:[{indexed:!1,internalType:"uint256",name:"_fromTokenId",type:"uint256"},{indexed:!1,internalType:"uint256",name:"_toTokenId",type:"uint256"}],name:"BatchMetadataUpdate",type:"event"},{anonymous:!1,inputs:[],name:"BunkerModeDisabled",type:"event"},{anonymous:!1,inputs:[{indexed:!1,internalType:"uint256",name:"_sinceTimestamp",type:"uint256"}],name:"BunkerModeEnabled",type:"event"},{anonymous:!1,inputs:[{indexed:!1,internalType:"uint256",name:"version",type:"uint256"}],name:"ContractVersionSet",type:"event"},{anonymous:!1,inputs:[{indexed:!1,internalType:"address",name:"_admin",type:"address"}],name:"InitializedV1",type:"event"},{anonymous:!1,inputs:[{indexed:!1,internalType:"uint256",name:"_tokenId",type:"uint256"}],name:"MetadataUpdate",type:"event"},{anonymous:!1,inputs:[{indexed:!1,internalType:"address",name:"nftDescriptorAddress",type:"address"}],name:"NftDescriptorAddressSet",type:"event"},{anonymous:!1,inputs:[{indexed:!1,internalType:"uint256",name:"duration",type:"uint256"}],name:"Paused",type:"event"},{anonymous:!1,inputs:[],name:"Resumed",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"bytes32",name:"role",type:"bytes32"},{indexed:!0,internalType:"bytes32",name:"previousAdminRole",type:"bytes32"},{indexed:!0,internalType:"bytes32",name:"newAdminRole",type:"bytes32"}],name:"RoleAdminChanged",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"bytes32",name:"role",type:"bytes32"},{indexed:!0,internalType:"address",name:"account",type:"address"},{indexed:!0,internalType:"address",name:"sender",type:"address"}],name:"RoleGranted",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"bytes32",name:"role",type:"bytes32"},{indexed:!0,internalType:"address",name:"account",type:"address"},{indexed:!0,internalType:"address",name:"sender",type:"address"}],name:"RoleRevoked",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"from",type:"address"},{indexed:!0,internalType:"address",name:"to",type:"address"},{indexed:!0,internalType:"uint256",name:"tokenId",type:"uint256"}],name:"Transfer",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"uint256",name:"requestId",type:"uint256"},{indexed:!0,internalType:"address",name:"owner",type:"address"},{indexed:!0,internalType:"address",name:"receiver",type:"address"},{indexed:!1,internalType:"uint256",name:"amountOfETH",type:"uint256"}],name:"WithdrawalClaimed",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"uint256",name:"requestId",type:"uint256"},{indexed:!0,internalType:"address",name:"requestor",type:"address"},{indexed:!0,internalType:"address",name:"owner",type:"address"},{indexed:!1,internalType:"uint256",name:"amountOfStETH",type:"uint256"},{indexed:!1,internalType:"uint256",name:"amountOfShares",type:"uint256"}],name:"WithdrawalRequested",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"uint256",name:"from",type:"uint256"},{indexed:!0,internalType:"uint256",name:"to",type:"uint256"},{indexed:!1,internalType:"uint256",name:"amountOfETHLocked",type:"uint256"},{indexed:!1,internalType:"uint256",name:"sharesToBurn",type:"uint256"},{indexed:!1,internalType:"uint256",name:"timestamp",type:"uint256"}],name:"WithdrawalsFinalized",type:"event"},{inputs:[],name:"BUNKER_MODE_DISABLED_TIMESTAMP",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"DEFAULT_ADMIN_ROLE",outputs:[{internalType:"bytes32",name:"",type:"bytes32"}],stateMutability:"view",type:"function"},{inputs:[],name:"FINALIZE_ROLE",outputs:[{internalType:"bytes32",name:"",type:"bytes32"}],stateMutability:"view",type:"function"},{inputs:[],name:"MANAGE_TOKEN_URI_ROLE",outputs:[{internalType:"bytes32",name:"",type:"bytes32"}],stateMutability:"view",type:"function"},{inputs:[],name:"MAX_BATCHES_LENGTH",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"MAX_STETH_WITHDRAWAL_AMOUNT",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"MIN_STETH_WITHDRAWAL_AMOUNT",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"ORACLE_ROLE",outputs:[{internalType:"bytes32",name:"",type:"bytes32"}],stateMutability:"view",type:"function"},{inputs:[],name:"PAUSE_INFINITELY",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"PAUSE_ROLE",outputs:[{internalType:"bytes32",name:"",type:"bytes32"}],stateMutability:"view",type:"function"},{inputs:[],name:"RESUME_ROLE",outputs:[{internalType:"bytes32",name:"",type:"bytes32"}],stateMutability:"view",type:"function"},{inputs:[],name:"STETH",outputs:[{internalType:"contract IStETH",name:"",type:"address"}],stateMutability:"view",type:"function"},{inputs:[],name:"WSTETH",outputs:[{internalType:"contract IWstETH",name:"",type:"address"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"_to",type:"address"},{internalType:"uint256",name:"_requestId",type:"uint256"}],name:"approve",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"_owner",type:"address"}],name:"balanceOf",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"bunkerModeSinceTimestamp",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"uint256",name:"_maxShareRate",type:"uint256"},{internalType:"uint256",name:"_maxTimestamp",type:"uint256"},{internalType:"uint256",name:"_maxRequestsPerCall",type:"uint256"},{components:[{internalType:"uint256",name:"remainingEthBudget",type:"uint256"},{internalType:"bool",name:"finished",type:"bool"},{internalType:"uint256[36]",name:"batches",type:"uint256[36]"},{internalType:"uint256",name:"batchesLength",type:"uint256"}],internalType:"struct WithdrawalQueueBase.BatchesCalculationState",name:"_state",type:"tuple"}],name:"calculateFinalizationBatches",outputs:[{components:[{internalType:"uint256",name:"remainingEthBudget",type:"uint256"},{internalType:"bool",name:"finished",type:"bool"},{internalType:"uint256[36]",name:"batches",type:"uint256[36]"},{internalType:"uint256",name:"batchesLength",type:"uint256"}],internalType:"struct WithdrawalQueueBase.BatchesCalculationState",name:"",type:"tuple"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"uint256",name:"_requestId",type:"uint256"}],name:"claimWithdrawal",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"uint256[]",name:"_requestIds",type:"uint256[]"},{internalType:"uint256[]",name:"_hints",type:"uint256[]"}],name:"claimWithdrawals",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"uint256[]",name:"_requestIds",type:"uint256[]"},{internalType:"uint256[]",name:"_hints",type:"uint256[]"},{internalType:"address",name:"_recipient",type:"address"}],name:"claimWithdrawalsTo",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"uint256",name:"_lastRequestIdToBeFinalized",type:"uint256"},{internalType:"uint256",name:"_maxShareRate",type:"uint256"}],name:"finalize",outputs:[],stateMutability:"payable",type:"function"},{inputs:[{internalType:"uint256[]",name:"_requestIds",type:"uint256[]"},{internalType:"uint256",name:"_firstIndex",type:"uint256"},{internalType:"uint256",name:"_lastIndex",type:"uint256"}],name:"findCheckpointHints",outputs:[{internalType:"uint256[]",name:"hintIds",type:"uint256[]"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"uint256",name:"_requestId",type:"uint256"}],name:"getApproved",outputs:[{internalType:"address",name:"",type:"address"}],stateMutability:"view",type:"function"},{inputs:[],name:"getBaseURI",outputs:[{internalType:"string",name:"",type:"string"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"uint256[]",name:"_requestIds",type:"uint256[]"},{internalType:"uint256[]",name:"_hints",type:"uint256[]"}],name:"getClaimableEther",outputs:[{internalType:"uint256[]",name:"claimableEthValues",type:"uint256[]"}],stateMutability:"view",type:"function"},{inputs:[],name:"getContractVersion",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"getLastCheckpointIndex",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"getLastFinalizedRequestId",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"getLastRequestId",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"getLockedEtherAmount",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"getNFTDescriptorAddress",outputs:[{internalType:"address",name:"",type:"address"}],stateMutability:"view",type:"function"},{inputs:[],name:"getResumeSinceTimestamp",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"bytes32",name:"role",type:"bytes32"}],name:"getRoleAdmin",outputs:[{internalType:"bytes32",name:"",type:"bytes32"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"bytes32",name:"role",type:"bytes32"},{internalType:"uint256",name:"index",type:"uint256"}],name:"getRoleMember",outputs:[{internalType:"address",name:"",type:"address"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"bytes32",name:"role",type:"bytes32"}],name:"getRoleMemberCount",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"_owner",type:"address"}],name:"getWithdrawalRequests",outputs:[{internalType:"uint256[]",name:"requestsIds",type:"uint256[]"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"uint256[]",name:"_requestIds",type:"uint256[]"}],name:"getWithdrawalStatus",outputs:[{components:[{internalType:"uint256",name:"amountOfStETH",type:"uint256"},{internalType:"uint256",name:"amountOfShares",type:"uint256"},{internalType:"address",name:"owner",type:"address"},{internalType:"uint256",name:"timestamp",type:"uint256"},{internalType:"bool",name:"isFinalized",type:"bool"},{internalType:"bool",name:"isClaimed",type:"bool"}],internalType:"struct WithdrawalQueueBase.WithdrawalRequestStatus[]",name:"statuses",type:"tuple[]"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"bytes32",name:"role",type:"bytes32"},{internalType:"address",name:"account",type:"address"}],name:"grantRole",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"bytes32",name:"role",type:"bytes32"},{internalType:"address",name:"account",type:"address"}],name:"hasRole",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"_admin",type:"address"}],name:"initialize",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"_owner",type:"address"},{internalType:"address",name:"_operator",type:"address"}],name:"isApprovedForAll",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"view",type:"function"},{inputs:[],name:"isBunkerModeActive",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"view",type:"function"},{inputs:[],name:"isPaused",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"view",type:"function"},{inputs:[],name:"name",outputs:[{internalType:"string",name:"",type:"string"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"bool",name:"_isBunkerModeNow",type:"bool"},{internalType:"uint256",name:"_bunkerStartTimestamp",type:"uint256"},{internalType:"uint256",name:"_currentReportTimestamp",type:"uint256"}],name:"onOracleReport",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"uint256",name:"_requestId",type:"uint256"}],name:"ownerOf",outputs:[{internalType:"address",name:"",type:"address"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"uint256",name:"_duration",type:"uint256"}],name:"pauseFor",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"uint256",name:"_pauseUntilInclusive",type:"uint256"}],name:"pauseUntil",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"uint256[]",name:"_batches",type:"uint256[]"},{internalType:"uint256",name:"_maxShareRate",type:"uint256"}],name:"prefinalize",outputs:[{internalType:"uint256",name:"ethToLock",type:"uint256"},{internalType:"uint256",name:"sharesToBurn",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"bytes32",name:"role",type:"bytes32"},{internalType:"address",name:"account",type:"address"}],name:"renounceRole",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"uint256[]",name:"_amounts",type:"uint256[]"},{internalType:"address",name:"_owner",type:"address"}],name:"requestWithdrawals",outputs:[{internalType:"uint256[]",name:"requestIds",type:"uint256[]"}],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"uint256[]",name:"_amounts",type:"uint256[]"},{internalType:"address",name:"_owner",type:"address"},{components:[{internalType:"uint256",name:"value",type:"uint256"},{internalType:"uint256",name:"deadline",type:"uint256"},{internalType:"uint8",name:"v",type:"uint8"},{internalType:"bytes32",name:"r",type:"bytes32"},{internalType:"bytes32",name:"s",type:"bytes32"}],internalType:"struct WithdrawalQueue.PermitInput",name:"_permit",type:"tuple"}],name:"requestWithdrawalsWithPermit",outputs:[{internalType:"uint256[]",name:"requestIds",type:"uint256[]"}],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"uint256[]",name:"_amounts",type:"uint256[]"},{internalType:"address",name:"_owner",type:"address"}],name:"requestWithdrawalsWstETH",outputs:[{internalType:"uint256[]",name:"requestIds",type:"uint256[]"}],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"uint256[]",name:"_amounts",type:"uint256[]"},{internalType:"address",name:"_owner",type:"address"},{components:[{internalType:"uint256",name:"value",type:"uint256"},{internalType:"uint256",name:"deadline",type:"uint256"},{internalType:"uint8",name:"v",type:"uint8"},{internalType:"bytes32",name:"r",type:"bytes32"},{internalType:"bytes32",name:"s",type:"bytes32"}],internalType:"struct WithdrawalQueue.PermitInput",name:"_permit",type:"tuple"}],name:"requestWithdrawalsWstETHWithPermit",outputs:[{internalType:"uint256[]",name:"requestIds",type:"uint256[]"}],stateMutability:"nonpayable",type:"function"},{inputs:[],name:"resume",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"bytes32",name:"role",type:"bytes32"},{internalType:"address",name:"account",type:"address"}],name:"revokeRole",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"_from",type:"address"},{internalType:"address",name:"_to",type:"address"},{internalType:"uint256",name:"_requestId",type:"uint256"}],name:"safeTransferFrom",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"_from",type:"address"},{internalType:"address",name:"_to",type:"address"},{internalType:"uint256",name:"_requestId",type:"uint256"},{internalType:"bytes",name:"_data",type:"bytes"}],name:"safeTransferFrom",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"_operator",type:"address"},{internalType:"bool",name:"_approved",type:"bool"}],name:"setApprovalForAll",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"string",name:"_baseURI",type:"string"}],name:"setBaseURI",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"_nftDescriptorAddress",type:"address"}],name:"setNFTDescriptorAddress",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"bytes4",name:"interfaceId",type:"bytes4"}],name:"supportsInterface",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"view",type:"function"},{inputs:[],name:"symbol",outputs:[{internalType:"string",name:"",type:"string"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"uint256",name:"_requestId",type:"uint256"}],name:"tokenURI",outputs:[{internalType:"string",name:"",type:"string"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"_from",type:"address"},{internalType:"address",name:"_to",type:"address"},{internalType:"uint256",name:"_requestId",type:"uint256"}],name:"transferFrom",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[],name:"unfinalizedRequestNumber",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"unfinalizedStETH",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"}],poLidoNftAbi=[{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"owner",type:"address"},{indexed:!0,internalType:"address",name:"approved",type:"address"},{indexed:!0,internalType:"uint256",name:"tokenId",type:"uint256"}],name:"Approval",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"owner",type:"address"},{indexed:!0,internalType:"address",name:"operator",type:"address"},{indexed:!1,internalType:"bool",name:"approved",type:"bool"}],name:"ApprovalForAll",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:"address",name:"account",type:"address"}],name:"Paused",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"from",type:"address"},{indexed:!0,internalType:"address",name:"to",type:"address"},{indexed:!0,internalType:"uint256",name:"tokenId",type:"uint256"}],name:"Transfer",type:"event"},{anonymous:!1,inputs:[{indexed:!1,internalType:"address",name:"account",type:"address"}],name:"Unpaused",type:"event"},{inputs:[{internalType:"address",name:"",type:"address"},{internalType:"uint256",name:"",type:"uint256"}],name:"address2Approved",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"_to",type:"address"},{internalType:"uint256",name:"_tokenId",type:"uint256"}],name:"approve",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"owner",type:"address"}],name:"balanceOf",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"uint256",name:"_tokenId",type:"uint256"}],name:"burn",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"uint256",name:"tokenId",type:"uint256"}],name:"getApproved",outputs:[{internalType:"address",name:"",type:"address"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"_address",type:"address"}],name:"getApprovedTokens",outputs:[{internalType:"uint256[]",name:"",type:"uint256[]"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"_address",type:"address"}],name:"getOwnedTokens",outputs:[{internalType:"uint256[]",name:"",type:"uint256[]"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"string",name:"name_",type:"string"},{internalType:"string",name:"symbol_",type:"string"},{internalType:"address",name:"_stMATIC",type:"address"}],name:"initialize",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"owner",type:"address"},{internalType:"address",name:"operator",type:"address"}],name:"isApprovedForAll",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"_spender",type:"address"},{internalType:"uint256",name:"_tokenId",type:"uint256"}],name:"isApprovedOrOwner",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"_to",type:"address"}],name:"mint",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"nonpayable",type:"function"},{inputs:[],name:"name",outputs:[{internalType:"string",name:"",type:"string"}],stateMutability:"view",type:"function"},{inputs:[],name:"owner",outputs:[{internalType:"address",name:"",type:"address"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"",type:"address"},{internalType:"uint256",name:"",type:"uint256"}],name:"owner2Tokens",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"uint256",name:"tokenId",type:"uint256"}],name:"ownerOf",outputs:[{internalType:"address",name:"",type:"address"}],stateMutability:"view",type:"function"},{inputs:[],name:"paused",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"view",type:"function"},{inputs:[],name:"renounceOwnership",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"from",type:"address"},{internalType:"address",name:"to",type:"address"},{internalType:"uint256",name:"tokenId",type:"uint256"}],name:"safeTransferFrom",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"from",type:"address"},{internalType:"address",name:"to",type:"address"},{internalType:"uint256",name:"tokenId",type:"uint256"},{internalType:"bytes",name:"_data",type:"bytes"}],name:"safeTransferFrom",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"operator",type:"address"},{internalType:"bool",name:"approved",type:"bool"}],name:"setApprovalForAll",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"_stMATIC",type:"address"}],name:"setStMATIC",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"string",name:"_version",type:"string"}],name:"setVersion",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[],name:"stMATIC",outputs:[{internalType:"address",name:"",type:"address"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"bytes4",name:"interfaceId",type:"bytes4"}],name:"supportsInterface",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"view",type:"function"},{inputs:[],name:"symbol",outputs:[{internalType:"string",name:"",type:"string"}],stateMutability:"view",type:"function"},{inputs:[],name:"togglePause",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"uint256",name:"",type:"uint256"}],name:"token2Index",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"uint256",name:"",type:"uint256"}],name:"tokenId2ApprovedIndex",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"tokenIdIndex",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"uint256",name:"tokenId",type:"uint256"}],name:"tokenURI",outputs:[{internalType:"string",name:"",type:"string"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"from",type:"address"},{internalType:"address",name:"to",type:"address"},{internalType:"uint256",name:"tokenId",type:"uint256"}],name:"transferFrom",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"newOwner",type:"address"}],name:"transferOwnership",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[],name:"version",outputs:[{internalType:"string",name:"",type:"string"}],stateMutability:"view",type:"function"}],lidoWstEthAbi=[{inputs:[{internalType:"contract IStETH",name:"_stETH",type:"address"}],stateMutability:"nonpayable",type:"constructor"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"owner",type:"address"},{indexed:!0,internalType:"address",name:"spender",type:"address"},{indexed:!1,internalType:"uint256",name:"value",type:"uint256"}],name:"Approval",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"from",type:"address"},{indexed:!0,internalType:"address",name:"to",type:"address"},{indexed:!1,internalType:"uint256",name:"value",type:"uint256"}],name:"Transfer",type:"event"},{inputs:[],name:"DOMAIN_SEPARATOR",outputs:[{internalType:"bytes32",name:"",type:"bytes32"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"owner",type:"address"},{internalType:"address",name:"spender",type:"address"}],name:"allowance",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"spender",type:"address"},{internalType:"uint256",name:"amount",type:"uint256"}],name:"approve",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"account",type:"address"}],name:"balanceOf",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"decimals",outputs:[{internalType:"uint8",name:"",type:"uint8"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"spender",type:"address"},{internalType:"uint256",name:"subtractedValue",type:"uint256"}],name:"decreaseAllowance",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"uint256",name:"_wstETHAmount",type:"uint256"}],name:"getStETHByWstETH",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"uint256",name:"_stETHAmount",type:"uint256"}],name:"getWstETHByStETH",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"spender",type:"address"},{internalType:"uint256",name:"addedValue",type:"uint256"}],name:"increaseAllowance",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"nonpayable",type:"function"},{inputs:[],name:"name",outputs:[{internalType:"string",name:"",type:"string"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"owner",type:"address"}],name:"nonces",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"owner",type:"address"},{internalType:"address",name:"spender",type:"address"},{internalType:"uint256",name:"value",type:"uint256"},{internalType:"uint256",name:"deadline",type:"uint256"},{internalType:"uint8",name:"v",type:"uint8"},{internalType:"bytes32",name:"r",type:"bytes32"},{internalType:"bytes32",name:"s",type:"bytes32"}],name:"permit",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[],name:"stETH",outputs:[{internalType:"contract IStETH",name:"",type:"address"}],stateMutability:"view",type:"function"},{inputs:[],name:"stEthPerToken",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"symbol",outputs:[{internalType:"string",name:"",type:"string"}],stateMutability:"view",type:"function"},{inputs:[],name:"tokensPerStEth",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"totalSupply",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"recipient",type:"address"},{internalType:"uint256",name:"amount",type:"uint256"}],name:"transfer",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"sender",type:"address"},{internalType:"address",name:"recipient",type:"address"},{internalType:"uint256",name:"amount",type:"uint256"}],name:"transferFrom",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"uint256",name:"_wstETHAmount",type:"uint256"}],name:"unwrap",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"uint256",name:"_stETHAmount",type:"uint256"}],name:"wrap",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"nonpayable",type:"function"},{stateMutability:"payable",type:"receive"}],lidoStakeManagerAbi=[{inputs:[],payable:!1,stateMutability:"nonpayable",type:"constructor"},{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:!0,internalType:"address",name:"previousRootChain",type:"address"},{indexed:!0,internalType:"address",name:"newRootChain",type:"address"}],name:"RootChainChanged",type:"event"},{constant:!0,inputs:[],name:"CHECKPOINT_REWARD",outputs:[{internalType:"uint256",name:"",type:"uint256"}],payable:!1,stateMutability:"view",type:"function"},{constant:!0,inputs:[],name:"NFTContract",outputs:[{internalType:"contract StakingNFT",name:"",type:"address"}],payable:!1,stateMutability:"view",type:"function"},{constant:!0,inputs:[],name:"NFTCounter",outputs:[{internalType:"uint256",name:"",type:"uint256"}],payable:!1,stateMutability:"view",type:"function"},{constant:!0,inputs:[],name:"WITHDRAWAL_DELAY",outputs:[{internalType:"uint256",name:"",type:"uint256"}],payable:!1,stateMutability:"view",type:"function"},{constant:!0,inputs:[],name:"accountStateRoot",outputs:[{internalType:"bytes32",name:"",type:"bytes32"}],payable:!1,stateMutability:"view",type:"function"},{constant:!0,inputs:[],name:"auctionPeriod",outputs:[{internalType:"uint256",name:"",type:"uint256"}],payable:!1,stateMutability:"view",type:"function"},{constant:!1,inputs:[{internalType:"address",name:"newRootChain",type:"address"}],name:"changeRootChain",outputs:[],payable:!1,stateMutability:"nonpayable",type:"function"},{constant:!0,inputs:[],name:"checkPointBlockInterval",outputs:[{internalType:"uint256",name:"",type:"uint256"}],payable:!1,stateMutability:"view",type:"function"},{constant:!1,inputs:[{internalType:"uint256",name:"blockInterval",type:"uint256"},{internalType:"bytes32",name:"voteHash",type:"bytes32"},{internalType:"bytes32",name:"stateRoot",type:"bytes32"},{internalType:"address",name:"proposer",type:"address"},{internalType:"uint256[3][]",name:"sigs",type:"uint256[3][]"}],name:"checkSignatures",outputs:[{internalType:"uint256",name:"",type:"uint256"}],payable:!1,stateMutability:"nonpayable",type:"function"},{constant:!0,inputs:[],name:"checkpointRewardDelta",outputs:[{internalType:"uint256",name:"",type:"uint256"}],payable:!1,stateMutability:"view",type:"function"},{constant:!1,inputs:[{internalType:"uint256",name:"accumFeeAmount",type:"uint256"},{internalType:"uint256",name:"index",type:"uint256"},{internalType:"bytes",name:"proof",type:"bytes"}],name:"claimFee",outputs:[],payable:!1,stateMutability:"nonpayable",type:"function"},{constant:!1,inputs:[{internalType:"uint256",name:"validatorId",type:"uint256"},{internalType:"uint256",name:"heimdallFee",type:"uint256"}],name:"confirmAuctionBid",outputs:[],payable:!1,stateMutability:"nonpayable",type:"function"},{constant:!0,inputs:[],name:"currentEpoch",outputs:[{internalType:"uint256",name:"",type:"uint256"}],payable:!1,stateMutability:"view",type:"function"},{constant:!0,inputs:[],name:"currentValidatorSetSize",outputs:[{internalType:"uint256",name:"",type:"uint256"}],payable:!1,stateMutability:"view",type:"function"},{constant:!0,inputs:[],name:"currentValidatorSetTotalStake",outputs:[{internalType:"uint256",name:"",type:"uint256"}],payable:!1,stateMutability:"view",type:"function"},{constant:!1,inputs:[{internalType:"uint256",name:"validatorId",type:"uint256"},{internalType:"uint256",name:"amount",type:"uint256"}],name:"decreaseValidatorDelegatedAmount",outputs:[],payable:!1,stateMutability:"nonpayable",type:"function"},{constant:!0,inputs:[{internalType:"uint256",name:"validatorId",type:"uint256"}],name:"delegatedAmount",outputs:[{internalType:"uint256",name:"",type:"uint256"}],payable:!1,stateMutability:"view",type:"function"},{constant:!1,inputs:[{internalType:"uint256",name:"validatorId",type:"uint256"},{internalType:"uint256",name:"amount",type:"uint256"},{internalType:"address",name:"delegator",type:"address"}],name:"delegationDeposit",outputs:[{internalType:"bool",name:"",type:"bool"}],payable:!1,stateMutability:"nonpayable",type:"function"},{constant:!0,inputs:[],name:"delegationEnabled",outputs:[{internalType:"bool",name:"",type:"bool"}],payable:!1,stateMutability:"view",type:"function"},{constant:!0,inputs:[{internalType:"uint256",name:"validatorId",type:"uint256"}],name:"delegatorsReward",outputs:[{internalType:"uint256",name:"",type:"uint256"}],payable:!1,stateMutability:"view",type:"function"},{constant:!1,inputs:[{internalType:"address",name:"auctionUser",type:"address"},{internalType:"uint256",name:"heimdallFee",type:"uint256"},{internalType:"uint256",name:"validatorId",type:"uint256"},{internalType:"uint256",name:"auctionAmount",type:"uint256"},{internalType:"bool",name:"acceptDelegation",type:"bool"},{internalType:"bytes",name:"signerPubkey",type:"bytes"}],name:"dethroneAndStake",outputs:[],payable:!1,stateMutability:"nonpayable",type:"function"},{constant:!1,inputs:[{internalType:"address",name:"destination",type:"address"},{internalType:"uint256",name:"amount",type:"uint256"}],name:"drain",outputs:[],payable:!1,stateMutability:"nonpayable",type:"function"},{constant:!1,inputs:[{internalType:"uint256",name:"validatorId",type:"uint256"},{internalType:"address",name:"tokenAddr",type:"address"},{internalType:"address payable",name:"destination",type:"address"},{internalType:"uint256",name:"amount",type:"uint256"}],name:"drainValidatorShares",outputs:[],payable:!1,stateMutability:"nonpayable",type:"function"},{constant:!0,inputs:[],name:"dynasty",outputs:[{internalType:"uint256",name:"",type:"uint256"}],payable:!1,stateMutability:"view",type:"function"},{constant:!0,inputs:[],name:"epoch",outputs:[{internalType:"uint256",name:"",type:"uint256"}],payable:!1,stateMutability:"view",type:"function"},{constant:!0,inputs:[],name:"eventsHub",outputs:[{internalType:"address",name:"",type:"address"}],payable:!1,stateMutability:"view",type:"function"},{constant:!0,inputs:[],name:"extensionCode",outputs:[{internalType:"address",name:"",type:"address"}],payable:!1,stateMutability:"view",type:"function"},{constant:!1,inputs:[{internalType:"uint256",name:"validatorId",type:"uint256"}],name:"forceUnstake",outputs:[],payable:!1,stateMutability:"nonpayable",type:"function"},{constant:!0,inputs:[],name:"getRegistry",outputs:[{internalType:"address",name:"",type:"address"}],payable:!1,stateMutability:"view",type:"function"},{constant:!0,inputs:[{internalType:"uint256",name:"validatorId",type:"uint256"}],name:"getValidatorContract",outputs:[{internalType:"address",name:"",type:"address"}],payable:!1,stateMutability:"view",type:"function"},{constant:!0,inputs:[{internalType:"address",name:"user",type:"address"}],name:"getValidatorId",outputs:[{internalType:"uint256",name:"",type:"uint256"}],payable:!1,stateMutability:"view",type:"function"},{constant:!0,inputs:[],name:"governance",outputs:[{internalType:"contract IGovernance",name:"",type:"address"}],payable:!1,stateMutability:"view",type:"function"},{constant:!1,inputs:[{internalType:"address",name:"_registry",type:"address"},{internalType:"address",name:"_rootchain",type:"address"},{internalType:"address",name:"_token",type:"address"},{internalType:"address",name:"_NFTContract",type:"address"},{internalType:"address",name:"_stakingLogger",type:"address"},{internalType:"address",name:"_validatorShareFactory",type:"address"},{internalType:"address",name:"_governance",type:"address"},{internalType:"address",name:"_owner",type:"address"},{internalType:"address",name:"_extensionCode",type:"address"}],name:"initialize",outputs:[],payable:!1,stateMutability:"nonpayable",type:"function"},{constant:!1,inputs:[{internalType:"address[]",name:"_signers",type:"address[]"}],name:"insertSigners",outputs:[],payable:!1,stateMutability:"nonpayable",type:"function"},{constant:!0,inputs:[],name:"isOwner",outputs:[{internalType:"bool",name:"",type:"bool"}],payable:!1,stateMutability:"view",type:"function"},{constant:!0,inputs:[{internalType:"uint256",name:"validatorId",type:"uint256"}],name:"isValidator",outputs:[{internalType:"bool",name:"",type:"bool"}],payable:!1,stateMutability:"view",type:"function"},{constant:!0,inputs:[{internalType:"uint256",name:"",type:"uint256"}],name:"latestSignerUpdateEpoch",outputs:[{internalType:"uint256",name:"",type:"uint256"}],payable:!1,stateMutability:"view",type:"function"},{constant:!1,inputs:[],name:"lock",outputs:[],payable:!1,stateMutability:"nonpayable",type:"function"},{constant:!0,inputs:[],name:"locked",outputs:[{internalType:"bool",name:"",type:"bool"}],payable:!1,stateMutability:"view",type:"function"},{constant:!0,inputs:[],name:"logger",outputs:[{internalType:"contract StakingInfo",name:"",type:"address"}],payable:!1,stateMutability:"view",type:"function"},{constant:!0,inputs:[],name:"maxRewardedCheckpoints",outputs:[{internalType:"uint256",name:"",type:"uint256"}],payable:!1,stateMutability:"view",type:"function"},{constant:!1,inputs:[{internalType:"uint256",name:"fromValidatorId",type:"uint256"},{internalType:"uint256",name:"toValidatorId",type:"uint256"},{internalType:"uint256",name:"amount",type:"uint256"}],name:"migrateDelegation",outputs:[],payable:!1,stateMutability:"nonpayable",type:"function"},{constant:!1,inputs:[{internalType:"uint256",name:"validatorIdFrom",type:"uint256"},{internalType:"uint256",name:"validatorIdTo",type:"uint256"}],name:"migrateValidatorsData",outputs:[],payable:!1,stateMutability:"nonpayable",type:"function"},{constant:!0,inputs:[],name:"minDeposit",outputs:[{internalType:"uint256",name:"",type:"uint256"}],payable:!1,stateMutability:"view",type:"function"},{constant:!0,inputs:[],name:"minHeimdallFee",outputs:[{internalType:"uint256",name:"",type:"uint256"}],payable:!1,stateMutability:"view",type:"function"},{constant:!0,inputs:[],name:"owner",outputs:[{internalType:"address",name:"",type:"address"}],payable:!1,stateMutability:"view",type:"function"},{constant:!0,inputs:[{internalType:"uint256",name:"tokenId",type:"uint256"}],name:"ownerOf",outputs:[{internalType:"address",name:"",type:"address"}],payable:!1,stateMutability:"view",type:"function"},{constant:!0,inputs:[],name:"prevBlockInterval",outputs:[{internalType:"uint256",name:"",type:"uint256"}],payable:!1,stateMutability:"view",type:"function"},{constant:!0,inputs:[],name:"proposerBonus",outputs:[{internalType:"uint256",name:"",type:"uint256"}],payable:!1,stateMutability:"view",type:"function"},{constant:!0,inputs:[],name:"registry",outputs:[{internalType:"address",name:"",type:"address"}],payable:!1,stateMutability:"view",type:"function"},{constant:!1,inputs:[{internalType:"address",name:"_NFTContract",type:"address"},{internalType:"address",name:"_stakingLogger",type:"address"},{internalType:"address",name:"_validatorShareFactory",type:"address"},{internalType:"address",name:"_extensionCode",type:"address"}],name:"reinitialize",outputs:[],payable:!1,stateMutability:"nonpayable",type:"function"},{constant:!1,inputs:[],name:"renounceOwnership",outputs:[],payable:!1,stateMutability:"nonpayable",type:"function"},{constant:!0,inputs:[],name:"replacementCoolDown",outputs:[{internalType:"uint256",name:"",type:"uint256"}],payable:!1,stateMutability:"view",type:"function"},{constant:!1,inputs:[{internalType:"uint256",name:"validatorId",type:"uint256"},{internalType:"uint256",name:"amount",type:"uint256"},{internalType:"bool",name:"stakeRewards",type:"bool"}],name:"restake",outputs:[],payable:!1,stateMutability:"nonpayable",type:"function"},{constant:!0,inputs:[],name:"rewardDecreasePerCheckpoint",outputs:[{internalType:"uint256",name:"",type:"uint256"}],payable:!1,stateMutability:"view",type:"function"},{constant:!0,inputs:[],name:"rewardPerStake",outputs:[{internalType:"uint256",name:"",type:"uint256"}],payable:!1,stateMutability:"view",type:"function"},{constant:!0,inputs:[],name:"rootChain",outputs:[{internalType:"address",name:"",type:"address"}],payable:!1,stateMutability:"view",type:"function"},{constant:!1,inputs:[{internalType:"uint256",name:"_currentEpoch",type:"uint256"}],name:"setCurrentEpoch",outputs:[],payable:!1,stateMutability:"nonpayable",type:"function"},{constant:!1,inputs:[{internalType:"bool",name:"enabled",type:"bool"}],name:"setDelegationEnabled",outputs:[],payable:!1,stateMutability:"nonpayable",type:"function"},{constant:!1,inputs:[{internalType:"address",name:"_token",type:"address"}],name:"setStakingToken",outputs:[],payable:!1,stateMutability:"nonpayable",type:"function"},{constant:!0,inputs:[{internalType:"address",name:"",type:"address"}],name:"signerToValidator",outputs:[{internalType:"uint256",name:"",type:"uint256"}],payable:!1,stateMutability:"view",type:"function"},{constant:!0,inputs:[],name:"signerUpdateLimit",outputs:[{internalType:"uint256",name:"",type:"uint256"}],payable:!1,stateMutability:"view",type:"function"},{constant:!0,inputs:[{internalType:"uint256",name:"",type:"uint256"}],name:"signers",outputs:[{internalType:"address",name:"",type:"address"}],payable:!1,stateMutability:"view",type:"function"},{constant:!1,inputs:[{internalType:"bytes",name:"_slashingInfoList",type:"bytes"}],name:"slash",outputs:[{internalType:"uint256",name:"",type:"uint256"}],payable:!1,stateMutability:"nonpayable",type:"function"},{constant:!1,inputs:[{internalType:"address",name:"user",type:"address"},{internalType:"uint256",name:"amount",type:"uint256"},{internalType:"uint256",name:"heimdallFee",type:"uint256"},{internalType:"bool",name:"acceptDelegation",type:"bool"},{internalType:"bytes",name:"signerPubkey",type:"bytes"}],name:"stakeFor",outputs:[],payable:!1,stateMutability:"nonpayable",type:"function"},{constant:!1,inputs:[{internalType:"uint256",name:"validatorId",type:"uint256"},{internalType:"uint256",name:"amount",type:"uint256"},{internalType:"bool",name:"_acceptDelegation",type:"bool"},{internalType:"bytes",name:"_signerPubkey",type:"bytes"}],name:"startAuction",outputs:[],payable:!1,stateMutability:"nonpayable",type:"function"},{constant:!1,inputs:[{internalType:"uint256",name:"forNCheckpoints",type:"uint256"}],name:"stopAuctions",outputs:[],payable:!1,stateMutability:"nonpayable",type:"function"},{constant:!0,inputs:[],name:"token",outputs:[{internalType:"contract IERC20",name:"",type:"address"}],payable:!1,stateMutability:"view",type:"function"},{constant:!1,inputs:[{internalType:"address",name:"user",type:"address"},{internalType:"uint256",name:"heimdallFee",type:"uint256"}],name:"topUpForFee",outputs:[],payable:!1,stateMutability:"nonpayable",type:"function"},{constant:!0,inputs:[],name:"totalHeimdallFee",outputs:[{internalType:"uint256",name:"",type:"uint256"}],payable:!1,stateMutability:"view",type:"function"},{constant:!0,inputs:[],name:"totalRewards",outputs:[{internalType:"uint256",name:"",type:"uint256"}],payable:!1,stateMutability:"view",type:"function"},{constant:!0,inputs:[],name:"totalRewardsLiquidated",outputs:[{internalType:"uint256",name:"",type:"uint256"}],payable:!1,stateMutability:"view",type:"function"},{constant:!0,inputs:[],name:"totalStaked",outputs:[{internalType:"uint256",name:"",type:"uint256"}],payable:!1,stateMutability:"view",type:"function"},{constant:!0,inputs:[{internalType:"address",name:"user",type:"address"}],name:"totalStakedFor",outputs:[{internalType:"uint256",name:"",type:"uint256"}],payable:!1,stateMutability:"view",type:"function"},{constant:!1,inputs:[{internalType:"uint256",name:"validatorId",type:"uint256"},{internalType:"uint256",name:"amount",type:"uint256"},{internalType:"address",name:"delegator",type:"address"}],name:"transferFunds",outputs:[{internalType:"bool",name:"",type:"bool"}],payable:!1,stateMutability:"nonpayable",type:"function"},{constant:!1,inputs:[{internalType:"address",name:"newOwner",type:"address"}],name:"transferOwnership",outputs:[],payable:!1,stateMutability:"nonpayable",type:"function"},{constant:!1,inputs:[{internalType:"uint256",name:"validatorId",type:"uint256"}],name:"unjail",outputs:[],payable:!1,stateMutability:"nonpayable",type:"function"},{constant:!1,inputs:[],name:"unlock",outputs:[],payable:!1,stateMutability:"nonpayable",type:"function"},{constant:!1,inputs:[{internalType:"uint256",name:"validatorId",type:"uint256"}],name:"unstake",outputs:[],payable:!1,stateMutability:"nonpayable",type:"function"},{constant:!1,inputs:[{internalType:"uint256",name:"validatorId",type:"uint256"}],name:"unstakeClaim",outputs:[],payable:!1,stateMutability:"nonpayable",type:"function"},{constant:!1,inputs:[{internalType:"uint256",name:"_blocks",type:"uint256"}],name:"updateCheckPointBlockInterval",outputs:[],payable:!1,stateMutability:"nonpayable",type:"function"},{constant:!1,inputs:[{internalType:"uint256",name:"newReward",type:"uint256"}],name:"updateCheckpointReward",outputs:[],payable:!1,stateMutability:"nonpayable",type:"function"},{constant:!1,inputs:[{internalType:"uint256",name:"_rewardDecreasePerCheckpoint",type:"uint256"},{internalType:"uint256",name:"_maxRewardedCheckpoints",type:"uint256"},{internalType:"uint256",name:"_checkpointRewardDelta",type:"uint256"}],name:"updateCheckpointRewardParams",outputs:[],payable:!1,stateMutability:"nonpayable",type:"function"},{constant:!1,inputs:[{internalType:"uint256",name:"validatorId",type:"uint256"},{internalType:"uint256",name:"newCommissionRate",type:"uint256"}],name:"updateCommissionRate",outputs:[],payable:!1,stateMutability:"nonpayable",type:"function"},{constant:!1,inputs:[{internalType:"uint256",name:"newDynasty",type:"uint256"}],name:"updateDynastyValue",outputs:[],payable:!1,stateMutability:"nonpayable",type:"function"},{constant:!1,inputs:[{internalType:"uint256",name:"_minDeposit",type:"uint256"},{internalType:"uint256",name:"_minHeimdallFee",type:"uint256"}],name:"updateMinAmounts",outputs:[],payable:!1,stateMutability:"nonpayable",type:"function"},{constant:!1,inputs:[{internalType:"uint256",name:"newProposerBonus",type:"uint256"}],name:"updateProposerBonus",outputs:[],payable:!1,stateMutability:"nonpayable",type:"function"},{constant:!1,inputs:[{internalType:"uint256",name:"validatorId",type:"uint256"},{internalType:"bytes",name:"signerPubkey",type:"bytes"}],name:"updateSigner",outputs:[],payable:!1,stateMutability:"nonpayable",type:"function"},{constant:!1,inputs:[{internalType:"uint256",name:"_limit",type:"uint256"}],name:"updateSignerUpdateLimit",outputs:[],payable:!1,stateMutability:"nonpayable",type:"function"},{constant:!1,inputs:[{internalType:"uint256",name:"validatorId",type:"uint256"},{internalType:"address",name:"newContractAddress",type:"address"}],name:"updateValidatorContractAddress",outputs:[],payable:!1,stateMutability:"nonpayable",type:"function"},{constant:!1,inputs:[{internalType:"bool",name:"delegation",type:"bool"}],name:"updateValidatorDelegation",outputs:[],payable:!1,stateMutability:"nonpayable",type:"function"},{constant:!1,inputs:[{internalType:"uint256",name:"validatorId",type:"uint256"},{internalType:"int256",name:"amount",type:"int256"}],name:"updateValidatorState",outputs:[],payable:!1,stateMutability:"nonpayable",type:"function"},{constant:!1,inputs:[{internalType:"uint256",name:"newThreshold",type:"uint256"}],name:"updateValidatorThreshold",outputs:[],payable:!1,stateMutability:"nonpayable",type:"function"},{constant:!0,inputs:[{internalType:"address",name:"",type:"address"}],name:"userFeeExit",outputs:[{internalType:"uint256",name:"",type:"uint256"}],payable:!1,stateMutability:"view",type:"function"},{constant:!0,inputs:[{internalType:"uint256",name:"",type:"uint256"}],name:"validatorAuction",outputs:[{internalType:"uint256",name:"amount",type:"uint256"},{internalType:"uint256",name:"startEpoch",type:"uint256"},{internalType:"address",name:"user",type:"address"},{internalType:"bool",name:"acceptDelegation",type:"bool"},{internalType:"bytes",name:"signerPubkey",type:"bytes"}],payable:!1,stateMutability:"view",type:"function"},{constant:!0,inputs:[{internalType:"uint256",name:"validatorId",type:"uint256"}],name:"validatorReward",outputs:[{internalType:"uint256",name:"",type:"uint256"}],payable:!1,stateMutability:"view",type:"function"},{constant:!0,inputs:[],name:"validatorShareFactory",outputs:[{internalType:"contract ValidatorShareFactory",name:"",type:"address"}],payable:!1,stateMutability:"view",type:"function"},{constant:!0,inputs:[{internalType:"uint256",name:"validatorId",type:"uint256"}],name:"validatorStake",outputs:[{internalType:"uint256",name:"",type:"uint256"}],payable:!1,stateMutability:"view",type:"function"},{constant:!0,inputs:[],name:"validatorState",outputs:[{internalType:"uint256",name:"amount",type:"uint256"},{internalType:"uint256",name:"stakerCount",type:"uint256"}],payable:!1,stateMutability:"view",type:"function"},{constant:!0,inputs:[{internalType:"uint256",name:"",type:"uint256"}],name:"validatorStateChanges",outputs:[{internalType:"int256",name:"amount",type:"int256"},{internalType:"int256",name:"stakerCount",type:"int256"}],payable:!1,stateMutability:"view",type:"function"},{constant:!0,inputs:[],name:"validatorThreshold",outputs:[{internalType:"uint256",name:"",type:"uint256"}],payable:!1,stateMutability:"view",type:"function"},{constant:!0,inputs:[{internalType:"uint256",name:"",type:"uint256"}],name:"validators",outputs:[{internalType:"uint256",name:"amount",type:"uint256"},{internalType:"uint256",name:"reward",type:"uint256"},{internalType:"uint256",name:"activationEpoch",type:"uint256"},{internalType:"uint256",name:"deactivationEpoch",type:"uint256"},{internalType:"uint256",name:"jailTime",type:"uint256"},{internalType:"address",name:"signer",type:"address"},{internalType:"address",name:"contractAddress",type:"address"},{internalType:"enum StakeManagerStorage.Status",name:"status",type:"uint8"},{internalType:"uint256",name:"commissionRate",type:"uint256"},{internalType:"uint256",name:"lastCommissionUpdate",type:"uint256"},{internalType:"uint256",name:"delegatorsReward",type:"uint256"},{internalType:"uint256",name:"delegatedAmount",type:"uint256"},{internalType:"uint256",name:"initialRewardPerStake",type:"uint256"}],payable:!1,stateMutability:"view",type:"function"},{constant:!1,inputs:[{internalType:"uint256",name:"validatorId",type:"uint256"}],name:"withdrawDelegatorsReward",outputs:[{internalType:"uint256",name:"",type:"uint256"}],payable:!1,stateMutability:"nonpayable",type:"function"},{constant:!1,inputs:[{internalType:"uint256",name:"validatorId",type:"uint256"}],name:"withdrawRewards",outputs:[],payable:!1,stateMutability:"nonpayable",type:"function"},{constant:!0,inputs:[],name:"withdrawalDelay",outputs:[{internalType:"uint256",name:"",type:"uint256"}],payable:!1,stateMutability:"view",type:"function"}],abi$g=[{inputs:[{internalType:"uint256[2]",name:"a",type:"uint256[2]"},{internalType:"uint256[2][2]",name:"b",type:"uint256[2][2]"},{internalType:"uint256[2]",name:"c",type:"uint256[2]"},{internalType:"uint256[100]",name:"input",type:"uint256[100]"}],name:"verifyProof",outputs:[{internalType:"bool",name:"r",type:"bool"}],stateMutability:"view",type:"function"}],abi$f=[{inputs:[{internalType:"address",name:"owner",type:"address"}],name:"balanceOf",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"}],abi$e=[{inputs:[{internalType:"address",name:"owner",type:"address"}],name:"getAddressPassport",outputs:[{components:[{internalType:"uint160",name:"owner",type:"uint160"},{internalType:"uint64",name:"cid",type:"uint64"},{internalType:"uint32",name:"status",type:"uint32"}],internalType:"struct GalxePassport.Passport",name:"",type:"tuple"}],stateMutability:"view",type:"function"}],OptimismGasPriceOracle=[{inputs:[],name:"DECIMALS",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"baseFee",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"baseFeeScalar",outputs:[{internalType:"uint32",name:"",type:"uint32"}],stateMutability:"view",type:"function"},{inputs:[],name:"blobBaseFee",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"blobBaseFeeScalar",outputs:[{internalType:"uint32",name:"",type:"uint32"}],stateMutability:"view",type:"function"},{inputs:[],name:"decimals",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"pure",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:"isEcotone",outputs:[{internalType:"bool",name:"",type:"bool"}],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:"scalar",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"setEcotone",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[],name:"version",outputs:[{internalType:"string",name:"",type:"string"}],stateMutability:"view",type:"function"}];async function callOdosAPI(a,d){return[chainIds.base,chainIds.localhost].includes(a)||(d.referralCode="702077826"),(await axios$3.post(`${getServerURL(a)}${API_CONFIG.ROUTES.callOdosAPI}`,d)).data}const getOdosPriceForToken=async(a,d)=>{try{const{data:n}=await axios$3.get(`${getServerURL(a)}${API_CONFIG.ROUTES.getOdosPriceForToken(d)}`);return n.price}catch(n){console.error("Error fetching Odos price:",n);return}};class TokenPriceFetcher extends TokenChecker{chainId;provider;erc20Registry=[];crvCvxRegistry=[];curvePools=[];beefyVaults=[];beefyTvlData={};usdcSymbol="USDC";supportsCurve=()=>getNonLocalhostChainId(this.chainId)!==chainIds.bnbMainnet;constructor(d,n){super(),this.chainId=d,this.provider=n;const c=getNonLocalhostChainId(this.chainId);this.erc20Registry=getERC20Registry(this.chainId),this.crvCvxRegistry=getCrvCvxWithChainId(c),this.supportsCurve()&&getCurvePoolsforPriceFetching(this.chainId).then(l=>{this.curvePools=l})}async updateBeefyVault(){this.beefyVaults.length===0&&(this.beefyVaults=(await axios$3.get(urlForBeefyVaultTokens)).data)}findTokenId(d){let n;const c=CoinGeckoChainLabels[this.chainId];return d===zeroAddress?getCoingeckoIdForNativeTokens[this.chainId]:(coingeckoRegistry.find(l=>Object.entries(l.platforms).find(([A,T])=>A===c&&(d?caseInsensitiveEqual(d,T):!1))?(n=l.id,!0):!1),n)}async fetchPriceById(d){const n=await getCoingeckoPrice(d);return{usd:n?.usd,eth:n.eth}}async fetchPriceByAddress(d){const n=getCoingeckoPlatform(this.chainId);return(await getCoingeckoPrice2(d,n))?.usd}async fetchHETHPrice(d){const n=getERC20Token(d,this.chainId);if(!n||n.underlyingErc20TokenAddress!==zeroAddress||!n.isHToken||!this.provider)return;const{contractData:c}=networkRegistry[this.chainId];if(!c.hETHOracleAddress||!c.HTokenOracleABI)return;const h=await new Contract(c.hETHOracleAddress,c.HTokenOracleABI,this.provider).callStatic.exchangeRate(),A=Number(formatEther(h)),T=await this.fetchPriceByTokenAddress(n.underlyingErc20TokenAddress);if(T)return A*T}async fetchPriceByTokenAddress(d,n=!1){try{console.log("fetchPriceByTokenAddress",{address:d});const c=await this.fetchHETHPrice(d);if(c)return c;const l=this.findTokenId(d);if(l){const Q=(await this.fetchPriceById(l)).usd;if(Q)return Q}const h=await this.fetchPriceByAddress(d);if(console.log({coingecko:h}),h||n)return h;const A=await this.fetchProtocolPriceinUSD(d);if(console.log({protocolPrice:A}),A)return A;const T=await this.fetchOdosPriceinUSD(d);if(console.log({odosPrice:T}),T)return T;const O=await this.findBeefyLpPrice(d);return console.log({beefyLpPrice:O}),O||void 0}catch(c){console.log("fetchPriceByTokenAddress error ",c);return}}async fetchOdosPriceinUSD(d){const n=getNonLocalhostChainId(this.chainId),c=await getOdosPriceForToken(n,d);if(c)return c}async fetchProtocolPriceinUSD(d){const n=this.erc20Registry.find(c=>caseInsensitiveEqual(c.erc20TokenAddress,d));if(n){if(this.supportsCurve()&&this.curvePools.length===0&&(this.curvePools=await getCurvePoolsforPriceFetching(this.chainId)),TokenChecker.isCurveOrConvex(n,this.curvePools.map(c=>c.lpTokenAddress))){const c=await this.fetchCurvePriceinUSD(n.underlyingErc20TokenAddress??d);if(c)return c}if(TokenChecker.isBeefyToken(n)){const c=await this.findBeefyPriceInUSD(n.underlyingErc20TokenAddress??d);if(c)return c}if(TokenChecker.isPendleToken(n)){const c=await this.fetchPendleTokenPriceInUSD(d);if(c)return c}if(TokenChecker.isAaveToken(n)){const{underlyingErc20TokenAddress:c}=n;if(!c)return console.log("missing underlying token for aave"),0;const l=await this.fetchPriceByTokenAddress(c);if(l)return l}if(TokenChecker.isNonRebasingBlastToken(n)){const c=this.erc20Registry.find(h=>h.symbol===n.symbol.slice(2));if(!c)return console.log("missing rebasing variant for non-rebasing token"),0;const l=await this.fetchPriceByTokenAddress(c.erc20TokenAddress);if(l)return l}if(TokenChecker.isKinzaToken(n)){const{underlyingErc20TokenAddress:c}=n;if(!c)return console.log("underlying token does not exists for Kinza token"),0;const l=await this.fetchPriceByTokenAddress(c);if(l)return l}}}async fetchCurvePriceinUSD(d){const n=this.crvCvxRegistry.find(l=>caseInsensitiveEqual(l.lpToken,d)||caseInsensitiveEqual(l.gauge,d)||caseInsensitiveEqual(l.cvxRewards,d)),c=this.curvePools.find(l=>caseInsensitiveEqual(l.address,n?.pool)||caseInsensitiveEqual(l.lpTokenAddress,d)||caseInsensitiveEqual(l.gaugeAddress,d));if(c?.lpPrice)return c.lpPrice}async findBeefyPriceInUSD(d){await this.updateBeefyVault();const n=getNonLocalhostChainId(this.chainId),c=this.beefyVaults.find(l=>caseInsensitiveEqual(d,l.earnedTokenAddress)&&beefyChainIds[n]===l.chain);if(c&&this.provider){const{earnedTokenAddress:l,id:h}=c,T=(await new Contract(l,abi$u,this.provider).totalSupply()).toBigInt(),O=Number(formatUnits(T,18));Object.keys(this.beefyTvlData).length===0&&(this.beefyTvlData=(await axios$3.get(urlForBeefyVaultTotalInUSD)).data);const Q=this.beefyTvlData[n][h];return!Q||!O?void 0:Q/O}}async fetchPendleTokenPriceInUSD(d){const n=getNonLocalhostChainId(this.chainId),l=this.erc20Registry.find(T=>caseInsensitiveEqual(T.erc20TokenAddress,d))?.underlyingErc20TokenAddress??d;console.log({searchToken:l});const h=`${n}/assets/${l}`,A=(await axios$3.get(`${urlForPendleAPI}${h}`)).data;return A?A?.price.usd:0}async findBeefyLpPrice(d){await this.updateBeefyVault();const n=this.beefyVaults.find(c=>caseInsensitiveEqual(d,c.tokenAddress));if(n)try{const{oracleId:c}=n;return(await axios$3.get(urlForBeefyVaultLpTokens)).data?.[c]}catch(c){console.log("findBeefyLpPrice error:",c);return}}}const getPendleData=(a,d,n)=>{const c=getActionFromMetadata(ExternalActionId.Pendle,txHistoryToBigInt(a)),l=toEnumValue(PendleAction,c),h=[],A=[];let T;const O=d[0],Q=d[1];return a.amountChanges.forEach((H,ne)=>{let B=H.toBigInt(),oe=0n;(l===PendleAction.SwapToYt||l===PendleAction.Mint)&&(B+=O.amount,oe=Q.amount),l&&[PendleAction.Deposit,PendleAction.Withdraw,PendleAction.Redeem,PendleAction.SwapFromYt,PendleAction.Checkpoint].includes(l)&&(oe=O.amount);const ie=getERC20Token(a.erc20TokenAddresses[ne],n)??{erc20TokenAddress:a.erc20TokenAddresses[ne]};"decimals"in ie&&TokenChecker.isPendleToken(ie)&&!TokenChecker.isPendleSyToken(ie)?A.push({token:ie,balance:B}):"decimals"in ie&&TokenChecker.isPendleSyToken(ie)?T={token:ie,balance:oe}:h.push({token:ie,balance:B})}),{pendleTokens:A,nonPendleTokens:h,pendleAction:l,syToken:T,type:TransactionType.PENDLE}},getVolatileData=async(a,d,n)=>{const c=getERC20Registry(n),{externalActionMetadata:l}=a,{volatileAmounts:h,redirectActionId:A,volatileAction:T}=VolatileHelper.decodeVolatileMetadata(l);if(T===VolatileAction.Deposit){const O=a.erc20TokenAddresses[0],Q=c.find(B=>caseInsensitiveEqual(B.sharedAddress,O));if(!Q)throw Error("Volatile not found in statistics");return{tokenWithBalance:{token:getERC20Token(Q.erc20TokenAddress,n)??{erc20TokenAddress:Q.erc20TokenAddress},balance:h[0].toBigInt()},type:TransactionType.DEPOSIT}}if(T===VolatileAction.Withdraw){const O=a.erc20TokenAddresses[0],Q=c.find(B=>caseInsensitiveEqual(B.sharedAddress,O));if(!Q)throw Error("Volatile not found in statistics");return{tokenWithBalance:{token:getERC20Token(Q.erc20TokenAddress,n)??{erc20TokenAddress:Q.erc20TokenAddress},balance:h[0].toBigInt()},type:TransactionType.WITHDRAW}}if(T===VolatileAction.Swap){const O=a.erc20TokenAddresses[0],Q=a.erc20TokenAddresses[1],H=a.amountChanges[0].toBigInt(),ne=c.find(W=>caseInsensitiveEqual(W.sharedAddress,O)),B=c.find(W=>caseInsensitiveEqual(W.sharedAddress,Q));if(!ne&&!B)throw Error("Volatile not found in swap statistics");const oe={token:getERC20Token(ne?ne.erc20TokenAddress:O,n),balance:ne?h[0].toBigInt():H},ie=d.find(W=>caseInsensitiveEqual(W.erc20TokenAddress,Q));let P={token:getERC20Token(Q,n),balance:ie?.amount};if(B){const W=await VolatileHelper.getVolatileTokenBalance(n,Q,ie?.amount??0n);console.log("VOLATILE OUTPUT BALANCE: ",{balance:W}),P={token:B,balance:W}}return{tokenIn:oe,tokenOut:P,type:TransactionType.SWAP,protocol:A.toBigInt()}}return{type:TransactionType.UNKNOWN}},getTxDetails=async(a,d,n=[])=>{try{const c=getNonLocalhostChainId(a);switch(d.externalActionId.toBigInt()){case getExternalActionIdHash(ExternalActionId.Transact):case 0n:return getDepositData(d,c);case getExternalActionIdHash(ExternalActionId.Uniswap):case getExternalActionIdHash(ExternalActionId.Odos):case getExternalActionIdHash(ExternalActionId.OneInch):return getSwapData(d,n,c);case getExternalActionIdHash(ExternalActionId.Beefy):return getBeefyData(d,n,c);case getExternalActionIdHash(ExternalActionId.Curve):case getExternalActionIdHash(ExternalActionId.CurveCRV):case getExternalActionIdHash(ExternalActionId.CurveDynamic):case getExternalActionIdHash(ExternalActionId.CurveCRVRewards):return getCurveData(d,n,c);case getExternalActionIdHash(ExternalActionId.Convex):return getConvexData(d,n,c);case getExternalActionIdHash(ExternalActionId.LidoETH):case getExternalActionIdHash(ExternalActionId.LidoETHNFT):case getExternalActionIdHash(ExternalActionId.LidoMATIC):case getExternalActionIdHash(ExternalActionId.LidoMATICNFT):return getLidoData(d,n,c);case getExternalActionIdHash(ExternalActionId.Pendle):return getPendleData(d,n,c);case getExternalActionIdHash(ExternalActionId.Volatile):return await getVolatileData(d,n,c);default:return{type:TransactionType.UNKNOWN}}}catch(c){return logError(c),{type:externalActionToTransactionType(d)}}};class TransactionsManager{circuitSize=50;hinkalContract;init(d){this.hinkalContract=d}requireInit(){if(!this.hinkalContract)throw Error("TransactionsManager not initialized")}filterOwnTransactions=async(d,n,c,l)=>{const{transactMethodId:h,transactWithExternalActionMethodId:A,hinkalInterface:T}=getHinkalParameters(getNonLocalhostChainId(d)),O=oe=>"decodedInput"in oe,H=n.filter(oe=>oe.methodId===h||oe.methodId===A).map(oe=>O(oe)?oe:{...oe,decodedInput:decodeTxInput(T,oe.input),status:oe.isError==="0"?"SUCCESS":"FAILURE"}),ne=c.getShieldedPrivateKey();return H.filter(oe=>{try{if(O(oe)){if(decryptUtxo(Buffer.from(oe.decodedInput.encryptedOutputs[0].slice(2),"hex"),c),!l&&oe.methodId===h){const{extraRandomization:ie,H0:P,H1:W}=oe.decodedInput.stealthAddressStructure;return UserKeys.checkSignature(ie,P,W,ne)}return!0}return!1}catch{return!1}})};saveTxsInStorage=(d,n,c,l)=>{const h=c.getShieldedPublicKey();saveTxsCache(d,n,h,this.hinkalContract.address,l)};loadTxsFromStorage=(d,n)=>{const c=n.getShieldedPublicKey();return loadTxsCache(d,c,this.hinkalContract.address)};getAllTransactions=async(d,n,c)=>{if(c){const{transactions:T}=await API.userGetTransactions(d,c);return T}const{decodedTxs:l,lastHash:h}=this.loadTxsFromStorage(d,n),{transactions:A}=await API.userGetTransactions(d,c,h);return[...A,...l]};getHinkalHistoryBase=async(d,n,c,l=!1)=>{this.requireInit();const h=await this.getAllTransactions(d,n,c)??[];h.sort((T,O)=>O.timeStamp-T.timeStamp);const A=await this.filterOwnTransactions(d,h,n,l);return!c&&h.length>0&&this.saveTxsInStorage(A,d,n,h[0].hash),A};getHinkalHistory=async(d,n)=>{const c=await this.getHinkalHistoryBase(d,n,void 0,!0),l=decodeTxLogs(d,c);return await Promise.all(l.map(async A=>({...A,status:A.status,details:await getTxDetails(d,A.decodedInput,A.utxosArray)})))};sortInBatches=d=>{const n=[];let c=0,l=0;d.forEach(T=>{c===0&&n.push([]),n[l].push(T),c+=1,c===this.circuitSize&&(c=0,l+=1)});const h=n[n.length-1],A=h.length;if(A<this.circuitSize){const T=this.circuitSize-A,O=new Array(T).fill(emptyDecodedTx);n[n.length-1]=h.concat(O)}return n};generateTransactionsProof=async(d,n,c)=>{const l=this.sortInBatches(n),h=new Array(l.length).fill([]);for(let A=0;A<l.length;A+=1){const T=l[A].map(B=>B.decodedInput.stealthAddressStructure),O=T.map(B=>B.extraRandomization),Q=T.map(B=>B.stealthAddress);console.log({extraRandomizations:O,stealthAddresses:Q});const H={shieldedPrivateKey:c,extraRandomizations:O,stealthAddresses:Q};console.log({chainId:d,input:H});const{zkCallData:ne}=await generateZkProof(d,"transactionsProver",H);console.log({zkCallData:ne}),h[A]=ne}return{zkCallDataArray:h}};userVerifyTransactions=async(d,n,c,l,h,A)=>await API.userVerifyTransactions(d,n,c,l,h,A);processAndSendTransactionsForVerification=async(d,n,c,l)=>{this.requireInit();const h=getCurrentWeek(),A=l?h-1:h;console.log("retrieving transactions in processAndSendTransactionsForVerification",{week:A});const T=await this.getHinkalHistoryBase(d,n,A);console.log("retrieved transactions",T);let O=[],Q=[];T.length>0&&({zkCallDataArray:Q}=await this.generateTransactionsProof(d,T,n.getShieldedPrivateKey()),O=T.map(P=>P.hash));const H=n.getBackendToken(),{trade:ne,transactions:B,lockedDeposit:oe,verification:ie}=await this.userVerifyTransactions(d,O,Q,H,c,A);return{trade:ne,transactions:B,lockedDeposit:oe,verification:ie}};multiProcessAndSendTransactionsForVerification=async(d,n)=>{console.log("Multi Certify Starts");const c=chainIdsByType[EthereumNetworkType.Mainnet];let l=!0;for(let h=0;h<c.length;h+=1)try{const{hasCertified:A}=await API.verificationStartDate(c[h],n);if(console.log(`certification status for chain ${c[h]} is ${A}`),A)continue;const{trade:T,transactions:O,lockedDeposit:Q,verification:H}=await this.processAndSendTransactionsForVerification(c[h],d,n,!0);if(console.log({chainId:c[h],trade:T,totalTransactions:O,lockedDeposit:Q,verification:H}),l=l&&H,!l)break}catch(A){console.log(`current chain ${c[h]} certification error`,{err:A}),l=!1;break}if(!l)throw Error(transactionErrorCodes.MULTI_VERIFICATION_FAILED);return!0}}const hinkalActionVolatile=async(a,d,n,c,l)=>{const{action:h,isRelayerOff:A,recipientAddress:T,baseExternalActionId:O,baseExternalActionMetadata:Q}=c,H=getERC20Token(d[0],a.getCurrentChainId());if(!H)throw Error("Deposit Action: No Token Found");const ne=[...n],B=[...d];let oe=[],ie=n.map(()=>0n);({erc20Addresses:d,amountChanges:n,onChainCreation:oe}=await VolatileHelper.processVolatileData(a.getCurrentChainId(),h,d,n)),console.log("pre-amounts",n);const P=await VolatileHelper.getVolatileExternalData(a,h,ne,T,O,Q);if(!P)throw Error("No External Action Data");(h===VolatileAction.Withdraw&&!A||h===VolatileAction.Swap)&&({flatFees:ie}=await getFlatFees(a.getCurrentChainId(),B,ExternalActionId.Volatile,ne,h),h===VolatileAction.Swap&&(n[1]=0n),console.log("hinkalActionVolatile flatFees:",{flatFees:ie,erc20Addresses:d,amountChanges:n,originalAmountChanges:ne,externalActionData:P}));const W=[...await addPaddingToUtxos(a,d,n)],U=`swapperM${n.length.toString()}x${W[0].length}x1`,S=[];for(let ve=0;ve<d.length;ve+=1){const{outputUtxos:F}=outputUtxoProcessing(a.userKeys,W[ve],n[ve]);S.push(F)}const M=h===VolatileAction.Deposit||A?zeroAddress:await a.getRandomRelay();if(!A&&!M)throw Error(transactionErrorCodes.RELAYER_NOT_AVAILABLE);const{zkCallData:ae,circomData:Ae,dimData:Re}=await constructZkProof(a.merkleTreeHinkal,a.merkleTreeAccessToken,W,S,a.userKeys,U,P.externalActionId,P.externalAddress,P.externalActionMetadata,A?zeroAddress:M,a.getCurrentChainId(),oe,ie);if(console.log("after proof generation"),h===VolatileAction.Deposit){const ve=a.getContractWithSigner(ContractType.VolatileVault),F=a.getContractWithSigner(ContractType.HinkalWrapper);return console.log("here",{contractToApprove:ve}),await transactCallDirect(a,ne[0],H,ae,Ae,Re,ve,F)}return h===VolatileAction.Withdraw&&A?await transactCallDirect(a,n[0],H,ae,Ae,Re):l?await estimateGasRelayer(a,ae,Re,Ae):await transactCallRelayer(a.getCurrentChainId(),ae,Re,Ae)},getOnChainCreation=(a,d)=>{if(a===PendleLPAction.AddOrRemoveLiquidity)return d.length===3?[!1,!0,!1]:[!1,!0,!1,!1];if(a===PendleLPAction.Checkpoint)return[!1,!0];throw new Error("Unknown PendleLPAction not implemented")},getExternalActionMetadata=(a,d)=>{const{pendleLPAction:n,lpAddress:c,evmData:l}=a;return defaultAbiCoder.encode(["uint8","address","uint256","uint256","bytes"],[n,c,d[0][0].amount,d[0][0].timeStamp,l])},hinkalActionPendleLP=async(a,d,n,c,l,h=!1)=>{const A=ExternalActionId.PendleLP,{pendleLPAction:T}=c,O=[...await addPaddingToUtxos(a,d,n)],Q=`swapperMO${n.length.toString()}x${O[0].length}x1`,{flatFees:H,feeUnit:ne}=await getFlatFees(a.getCurrentChainId(),d,A,n,T,l);console.log("hinkalActionPendle flatFees:",H),n=processAmountChanges({erc20Addresses:d,amountChanges:n,flatFees:H,feeUnit:ne,externalActionId:A,action:T,gasTokenAddress:l});const B=[];for(let V=0;V<d.length;V+=1){const{outputUtxos:ve}=outputUtxoProcessing(a.userKeys,O[V],n[V]);B.push(ve)}const oe=getOnChainCreation(T,d),{contractData:ie}=networkRegistry[a.getCurrentChainId()],P=ie?.pendleLPExternalActionInstanceAddress,W=getExternalActionMetadata(c,O),U=await a.getRandomRelay();if(!U)throw Error(transactionErrorCodes.RELAYER_NOT_AVAILABLE);const S={...defaultHookData},{zkCallData:M,circomData:ae,dimData:Ae}=await constructZkProof(a.merkleTreeHinkal,a.merkleTreeAccessToken,O,B,a.userKeys,Q,A,P,W,U,a.getCurrentChainId(),oe,H,S);return console.log("hinkalActionPendle: zkCallData, dimData, circomData:",{zkCallData:M,dimData:Ae,circomData:ae}),h?await estimateGasRelayer(a,M,Ae,ae):await transactCallRelayer(a.getCurrentChainId(),M,Ae,ae)},hinkalGetPendleLPClaimableParams=async(a,d,n)=>{const c=[...await addPaddingToUtxos(a,[d],[-1n*n])];return{amount:c[0][0].amount,timestamp:c[0][0].timeStamp}},getConnextReceiveFee=async(a,d,n)=>(await axios$3.get(`${getServerURL(a)}${API_CONFIG.ROUTES.connextReceiveFee(d,n)}`)).data,hinkalActionStake=async(a,d,n,c,l)=>{const h=await a.getEthereumAddress(),A=getERC20Token(d[0],a.getCurrentChainId());if(!A)throw Error("Deposit Action: No Token Found");const T=c===HinkalStakeMode.Stake,O=c===HinkalStakeMode.Unstake,{symbol:Q}=A;console.log(`${c} token ${Q} Start`);const{erc20TokenAddress:ne}=A,B=[...await addPaddingToUtxos(a,d,n,2,void 0,c!==HinkalStakeMode.Deposit)];if(T||O){B[0][0]=Utxo.createFrom(B[0][0],{amount:n[0]*(T?1n:-1n),isStakeOrUnstakeInput:!0});for(let se=0;se<B.length;se+=1)for(let X=0;X<B[se].length;X+=1)se===0&&X===0||(B[se][X]=Utxo.createFrom(B[se][X],{amount:0n}))}const{outputUtxos:oe}=outputUtxoProcessing(a.userKeys,B[0],n[0]),ie=[oe.map(se=>Utxo.createFrom(se,{isStake:T,isUnstakeOutput:O}))];O&&(ie[0][0]=Utxo.createFrom(ie[0][0],{amount:0n,isUnstakeOutput:O}));const P=[!1],W=randomBigInt(30),U=UserKeys.getEncryptionKeyPair(a.userKeys.getShieldedPrivateKey()),S=encryptStake(W,l,ownerPublicKey),M=encryptStake(W,l,U.publicKey),ae=O?0n:createStakeCommitment(!0,l,W,ne,n[0],BigInt(ie[0][0].timeStamp)),Re=encodeHStakeMetadata(T?0:1,ae,h,S,M),V=a.getContractWithSigner(ContractType.HinkalWrapper2),ve=a.getContractWithSigner(ContractType.HinkalStakeExternalAction);console.log("external action address",ve.address);const{zkCallData:F,dimData:Ee,circomData:ge}=await constructZkProof(a.merkleTreeHinkal,a.merkleTreeAccessToken,B,ie,a.userKeys,"swapperME1x2x1",ExternalActionId.HinkalStake,ve.address,Re,zeroAddress,a.getCurrentChainId(),P,void 0,void 0,{stakedTokenRecipient:l,stakeBlinding:W,mode:c,depositorAddress:h});if(console.log(ge),O){const se=getHToken(A,a.getCurrentChainId());if(!se)throw new Error("hToken not found");const J=(await a.getContractWithFetcher(ContractType.HToken,se.erc20TokenAddress).previewWithdraw(-n[0])).toBigInt();return transactCallDirect(a,J,se,F,ge,Ee,ve,V)}return transactCallDirect(a,n[0],A,F,ge,Ee,ve,V)};var UtxoWorkerActionType=(a=>(a[a.BATCH_FILTER_UTXOS_WITH_NULLIFIER=0]="BATCH_FILTER_UTXOS_WITH_NULLIFIER",a[a.BUILD_UTXOS=1]="BUILD_UTXOS",a[a.DECIPHER_OUTPUTS=2]="DECIPHER_OUTPUTS",a))(UtxoWorkerActionType||{});class MultiThreadedUtxoUtils{get NUM_WORKERS(){return 5}async createUtxoPromise(d){return await performTaskWithWorker({type:WorkerVariant.UTXO,payload:d})}async batchFilterUtxosWithNullifier(d,n){const l=this.sliceArrayIntoParts(d,this.NUM_WORKERS).map(A=>this.createUtxoPromise({type:UtxoWorkerActionType.BATCH_FILTER_UTXOS_WITH_NULLIFIER,data:{utxos:A.map(T=>T.getConstructableParams()),nullifiers:n}}));return(await Promise.all(l)).flat().map(A=>new Utxo(A))}async buildBatchProcess(d,n){const l=this.sliceArrayIntoParts(d,this.NUM_WORKERS).map(T=>this.createUtxoPromise({type:UtxoWorkerActionType.BUILD_UTXOS,data:{signature:n.getSignature(),encryptedOutputs:T}}));return(await Promise.all(l)).flat().map(T=>new Utxo(T))}sliceArrayIntoParts(d,n){const c=Math.ceil(d.length/n);return Array.from({length:n},(h,A)=>d.slice(c*A,c*(A+1)))}async batchProcess(d,n,c){const l={type:UtxoWorkerActionType.DECIPHER_OUTPUTS,data:{encryptedOutputs:d,lastOutput:n,signature:c.getSignature()}};return await this.createUtxoPromise(l)}}const multiThreadedUtxoUtils=new MultiThreadedUtxoUtils;class Hinkal{providerAdapter;userKeys;signingMessage="Login to Hinkal Protocol";merkleTreeHinkal;merkleTreeAccessToken;nullifiers;encryptedOutputs;commitmentsSnapshotService;nullifierSnapshotService;accessTokenSnapshotService;transactionsManager;utxoUtils=multiThreadedUtxoUtils;constructor(){this.userKeys=new UserKeys(void 0),this.merkleTreeHinkal=MerkleTree.create(poseidonFunction,25n,0n),this.merkleTreeAccessToken=MerkleTree.create(poseidonFunction,25n,0n),this.nullifiers=new Set,this.encryptedOutputs=[],this.transactionsManager=new TransactionsManager}async initProviderAdapter(d,n){await this.updateProviderAdapter(n);const c=await this.connectAndPatchProvider(d);await n.init(c),await this.setListeners()}async initUserKeys(){this.userKeys=new UserKeys(await this.getProviderAdapter().signMessage(this.signingMessage))}async initUserKeysWithPassword(d){this.userKeys=new UserKeys(d)}async resetMerkle(){this.isSelectedNetworkSupported()&&await resetMerkleTrees(this)}getProviderAdapter(){if(!this.providerAdapter)throw new Error("ProviderAdapter is not initialized");return this.providerAdapter}async waitForTransaction(d,n=1){return!!await this.providerAdapter?.waitForTransaction(d,n)}getContractMetadata(d,n){return this.getProviderAdapter().getContractMetadata(d,n)}getContract(d,n=void 0,c){return this.getProviderAdapter().getContract(d,n,c)}async signMessage(d){return await this.getProviderAdapter().signMessage(d)}async signTypedData(d,n,c){return await this.getProviderAdapter().signTypedData(d,n,c)}getContractWithSigner(d,n=""){return this.getProviderAdapter().getContractWithSigner(d,n)}getContractWithFetcher(d,n=""){return this.getProviderAdapter().getContractWithFetcher(d,n)}getContractWithFetcherForEthereum(d,n){return this.getProviderAdapter().getContractWithFetcherForEthereum(d,n)}isSelectedNetworkSupported(){return!!networkRegistry[this.getCurrentChainId()]}async switchNetwork(d){try{await this.getProviderAdapter().switchNetwork(d)}catch{throw new Error(transactionErrorCodes.FAILED_TO_SWITCH_NETWORKS)}}getCurrentChainId(){const{chainId:d}=this.getProviderAdapter();if(!d)throw new Error("Illegal State: no chainId");return d}getSelectedNetwork(){return this.providerAdapter?.getSelectedNetwork()}isPermitterAvailable(){return this.getProviderAdapter().isPermitterAvailable()}async connectAndPatchProvider(d){return await this.getProviderAdapter().connectAndPatchProvider(d)}async disconnectFromConnector(){await this.getProviderAdapter().disconnectFromConnector()}async updateProviderAdapter(d){try{this.providerAdapter&&this.providerAdapter.release(),this.providerAdapter=d}catch(n){throw console.error(n),Error("updateProviderAdapter failed, please try again.")}}async setListeners(){this.providerAdapter?.setChainEventListener({onAccountChanged:()=>{this.onAccountChanged()},onChainChanged:d=>{this.onChainChanged(d)}})}async onAccountChanged(){await this.getProviderAdapter().onAccountChanged(),document.dispatchEvent(new Event(EventType.AccountChanged))}async onChainChanged(d){d?(await this.getProviderAdapter().onChainChanged(d),document.dispatchEvent(new Event(EventType.NetworkChange))):(await this.disconnectFromConnector(),reloadPage())}async monitorConnectedAddress(){monitor(await this.getEthereumAddress(),this.getCurrentChainId())}async getBalances(){return getShieldedBalance(this)}checkAccessToken(){return checkHinkalAccessToken(this)}async getAxelarEstimate(d,n,c,l){return getAxelarGasEstimate(d,n,c,l,this.userKeys.getAccessKey())}async getConnextReceiveFee(d,n){return getConnextReceiveFee(this.getCurrentChainId(),d,n)}async mintHinkalAccessToken(d){return mintAccessToken(this,d)}async mintHinkalAccessTokenCrossChain(d,n){return mintTokenCrossChain(this,d,n)}async getHinkalTreeRootHash(){return this.getContractWithFetcher(ContractType.HinkalContract).getRootHash()}async getAccessTokenTreeRootHash(){return this.getContractWithFetcher(ContractType.CrossChainAccessTokenContract).getRootHash()}async resetMerkleTreesIfNecessary(){if(!this.isSelectedNetworkSupported())throw new Error(transactionErrorCodes.UNSUPPORTED_NETWORK);const[d,n]=await Promise.all([this.getHinkalTreeRootHash(),this.getAccessTokenTreeRootHash()]);(d.toBigInt()!==this.merkleTreeHinkal.getRootHash()||n.toBigInt()!==this.merkleTreeAccessToken.getRootHash())&&await this.resetMerkle()}async getEventsFromHinkal(){await Promise.all([this.accessTokenSnapshotService?.retrieveEventsFromLatestBlock(),this.commitmentsSnapshotService?.retrieveEventsFromLatestBlock(),this.nullifierSnapshotService?.retrieveEventsFromLatestBlock()])}getEthereumAddress(){return this.getProviderAdapter().getAddress()}async getRandomRelay(){return(await API.getIdleRelay(this.getCurrentChainId())).relay}getGasPrice(){if(!this.providerAdapter?.chainId)throw new Error("Illegal State of providerAdapter in Hinkal: no chainId");return this.providerAdapter.getGasPrice()}getAPI(){return API}async deposit(d,n){return hinkalDeposit(this,d,n)}async depositForOther(d,n,c){return hinkalDepositForOther(this,d,n,c)}async withdraw(d,n,c,l,h=!1){return hinkalWithdraw(this,d,n,c,l,h)}async swap(d,n,c,l,h=!1,A=!1){return hinkalSwap(this,d,n,c,l,h,A)}async actionCurve(d,n,c,l,h,A=!1){return hinkalActionCurve(this,d,n,c,l,h,A)}async actionConvex(d,n,c,l,h=!1){return hinkalActionConvex(this,d,n,c,l,h)}async actionBeefy(d,n,c,l,h,A,T=!1){return hinkalActionBeefy(this,d,n,c,l,h,A,T)}async actionLido(d,n,c,l,h,A=!1){return hinkalActionLido(this,d,n,c,l,h,A)}async actionPendle(d,n,c,l,h=!1){return hinkalActionPendle(this,d,n,c,l,h)}async actionPendleLP(d,n,c,l,h=!1){return hinkalActionPendleLP(this,d,n,c,l,h)}async actionVolatile(d,n,c,l=!1){return hinkalActionVolatile(this,d,n,c,l)}async actionStake(d,n,c,l){return hinkalActionStake(this,d,n,c,l)}async getPendleLPClaimableParams(d,n){return hinkalGetPendleLPClaimableParams(this,d,n)}}const hinkalTransfer=async()=>{};async function checkErrorForSnapshotRestore(a,d){const n=d.getCurrentChainId(),c=extractMessage(a);return c===transactionErrorCodes.INVALID_NULLIFIER||c===transactionErrorCodes.MERKLE_TREE_INCOMPLETE||c===transactionErrorCodes.ACCESS_TOKEN_INVALID_HASH||c===transactionErrorCodes.INVALID_MERKLE_ROOT||c===transactionErrorCodes.MERLE_TREE_SNARK||c===transactionErrorCodes.STATE_TO_UPDATE?(await restoreSnapshots(n),await resetMerkleTrees(d),new Error(transactionErrorCodes.INTERNAL_ERROR)):a}const emptyHinkalCache={encryptedOutputs:[],lastOutput:""},getShortPublicKeyAndHinkalAddress=(a,d)=>{const n=a.substring(0,25),c=d.substring(0,25);return{shortPublicKey:n,shortHinkalAddress:c}},getHinkalCache=(a,d,n)=>{if(!a||!d||!n)throw Error("GetHinkalCache: incorrect arguments");const{shortPublicKey:c,shortHinkalAddress:l}=getShortPublicKeyAndHinkalAddress(d,n);return JSON.parse(localStorage.getItem(`hinkalCache-${a}-${c}-${l}`)??JSON.stringify(emptyHinkalCache))},setHinkalCache=(a,d,n,c)=>{if(!d||!n||!c)throw Error("SetHinkalCache: incorrect arguments");const{shortPublicKey:l,shortHinkalAddress:h}=getShortPublicKeyAndHinkalAddress(n,c);localStorage.setItem(`hinkalCache-${d}-${l}-${h}`,JSON.stringify(a))},resetCache=(a,d,n)=>{setHinkalCache(emptyHinkalCache,a,d,n)},saveTxsCache=(a,d,n,c,l)=>{if(!d||!n||!c)throw Error("saveTxsCache: incorrect arguments");const{shortPublicKey:h,shortHinkalAddress:A}=getShortPublicKeyAndHinkalAddress(n,c),T=serializeDecodedTxs(a);logError("saveTxsCache before saving",{serializedTxs:T}),localStorage.setItem(`txsCache-${d}-${h}-${A}`,JSON.stringify({serializedTxs:T,lastHash:l}))},emptyCacheString={serializedTxs:[],lastHash:""},loadTxsCache=(a,d,n)=>{if(!a||!d||!n)throw Error("loadTxsCache: incorrect arguments");const{shortPublicKey:c,shortHinkalAddress:l}=getShortPublicKeyAndHinkalAddress(d,n),h=localStorage.getItem(`txsCache-${a}-${c}-${l}`),{serializedTxs:A,lastHash:T}=JSON.parse(h??JSON.stringify(emptyCacheString)),O=A.map(Q=>deserializeDecodedTxs(Q));return logError("loadTxsCache ",{decodedTxs:O,lastHash:T}),{decodedTxs:O,lastHash:T===""?void 0:T}},getInputUtxosFromEncryptedOutputs=async(a,d,n,c,l=0)=>(await a.utxoUtils.buildBatchProcess(d,n)).reduce((A,T)=>c&&l!==0?T.erc20TokenAddress.toLowerCase()===c.toLowerCase()&&T.tokenId===l?[...A,T]:A:c?T.erc20TokenAddress.toLowerCase()===c.toLowerCase()?[...A,T]:A:[...A,T],[]),sortAndFilterUtxos=async(a,d,n,c,l,h,A,T=0)=>{const O=await a.utxoUtils.batchFilterUtxosWithNullifier(d,n);if(A){for(O.sort((Q,H)=>Q.amount<=H.amount?1:-1);O.length<c||O.length>c&&O.length<6;)O.push(new Utxo({amount:0n,erc20TokenAddress:A,shieldedPrivateKey:h,tokenId:T}));if(l)for(;O.length>6;)O.splice(O.length-1)}return{inputUtxos:O}},getInputUtxoAndBalance=async({hinkal:a,erc20TokenAddress:d=void 0,minInput:n=2,sliceIfMore6:c=!0,tokenId:l=0})=>{if(!a.getCurrentChainId||!a.getSelectedNetwork())return{inputUtxos:[]};const{encryptedOutputs:h,nullifiers:A,userKeys:T}=a,O=Array.from(h),Q=a.getCurrentChainId(),H=a.getContract(ContractType.HinkalContract).address,ne=T.getShieldedPublicKey(),B=T.getShieldedPrivateKey();let oe=[],ie=[],{encryptedOutputs:P,lastOutput:W}=getHinkalCache(Q,ne,H),U=O.findIndex(ae=>ae.value===W);if(U>-1||P.length===0){U+=1;const ae=O.slice(U);({lastOutput:W,additionalEncryptedOutputs:ie}=await a.utxoUtils.batchProcess(ae,W,T)),oe=[...P,...ie],setHinkalCache({lastOutput:W,encryptedOutputs:oe},Q,ne,H)}const S=await getInputUtxosFromEncryptedOutputs(a,oe,T,d,l);return await sortAndFilterUtxos(a,S,A,n,c,B,d,l)},retrieveEvents=async(a,d,...n)=>{if(!a.filters?.[d])throw new Error("Contract Event not found");return await a.queryFilter(a.filters?.[d](...n),39561411)},getDepositEvents=async(a,d)=>(await retrieveEvents(a,"NewTransaction")).map(l=>l.args[1]===d&&BigInt(l.args[2])>=0n?new Date(l.args[0]*1e3):new Date(0)).filter(l=>l.getTime()!==0),balanceChangedHandler=()=>{document.dispatchEvent(new Event(EventType.BalanceChange))},uniswapSupportsVolatile=a=>getNonLocalhostChainId(a)===chainIds.blast,searchPoolAndFee=async(a,d,n,c)=>{const l=(await Promise.all([100,500,3e3,1e4].map(async Q=>({poolAddress:await d.getPool(n,c,Q),fee:Q})))).filter(({poolAddress:Q})=>Q!==zeroAddress),h=await Promise.all(l.map(async Q=>({poolAddress:Q.poolAddress,fee:Q.fee,token1Balance:(await a.balanceOf(Q.poolAddress)).toBigInt()}))),T=h.map(Q=>Q.token1Balance).reduce((Q,H)=>H>=Q?H:Q,0n);if(T===0n)throw new Error(transactionErrorCodes.UNISWAP_NOT_ENOUGH_LIQUIDITY);return h.find(Q=>Q.token1Balance===T)},getUniswapPriceHelper=async(a,d,n,c,l)=>{try{if(!networkRegistry[a.getCurrentChainId()].quoterV2Address)throw Error("No Quoter Contract Provided");return(await a.getContractWithFetcher(ContractType.UniswapV3QuoterContract,networkRegistry[a.getCurrentChainId()].quoterV2Address).callStatic.quoteExactInputSingle({tokenIn:d.wrappedErc20TokenAddress??d.erc20TokenAddress,tokenOut:n.wrappedErc20TokenAddress??n.erc20TokenAddress,fee:c,amountIn:l,sqrtPriceLimitX96:0})).amountOut.toBigInt()}catch(h){throw logError(h),h}},getUniswapFee=async(a,d,n)=>{try{const c=a.getCurrentChainId(),l=a.getContractWithFetcher(ContractType.UniswapV3FactoryContract,networkRegistry[c].uniswapV3FactoryAddress),h=a.getContractWithFetcher(ContractType.ERC20Contract,n.wrappedErc20TokenAddress??n.erc20TokenAddress),{fee:A}=await searchPoolAndFee(h,l,d.wrappedErc20TokenAddress??d.erc20TokenAddress,n.wrappedErc20TokenAddress??n.erc20TokenAddress);return A}catch(c){throw console.log("Error in getUniswapFee",c),c}},getUniswapPrice=async(a,d,n,c)=>{try{const l=a.getCurrentChainId();if(!uniswapSupportsVolatile(l)&&(n.isVolatile||c.isVolatile))throw new Error("Volatile tokens are not supported by uniswap");const h=await getUniswapFee(a,n,c),A=defaultAbiCoder.encode(["uint24"],[h]),T=getAmountInWei(n,d);return{tokenPrice:await getUniswapPriceHelper(a,n,c,h,T),poolFee:A}}catch(l){throw console.log({error:l}),Error(transactionErrorCodes.NO_UNISWAP_PRICE)}},getOdosPrice=async(a,d,n,c)=>{try{const l={chainId:a.getCurrentChainId()!==31337?a.getCurrentChainId():localhostNetwork,inputTokens:[{tokenAddress:d?.wrappedErc20TokenAddress??d.erc20TokenAddress,amount:getAmountInWei(d,c).toString()}],outputTokens:[{tokenAddress:n?.wrappedErc20TokenAddress??n.erc20TokenAddress,proportion:1}],userAddr:networkRegistry[a.getCurrentChainId()].contractData.odosExternalActionInstanceAddress||zeroAddress,slippageLimitPercent:10,disableRFQs:!0},{odosResponse:h,status:A}=await callOdosAPI(a.getCurrentChainId(),l);if(A!=="success")throw Error("Odos API Fetch Error");return{outSwapAmountValue:BigInt(h.outputTokens[0].amount),odosDataValue:h.transaction.data}}catch(l){throw console.log({error:l}),Error(transactionErrorCodes.NO_ODOS_PRICE)}},callOneInchAPI=async(a,d)=>{const n=getNonLocalhostChainId(a),c=new URLSearchParams;c.append("fromTokenAddress",d.fromTokenAddress),c.append("toTokenAddress",d.toTokenAddress),c.append("amount",`${d.amount}`),c.append("fromAddress",d.fromAddress),c.append("slippage",`${d.slippage}`),d.destReceiver&&c.append("destReceiver",d.destReceiver),d.disableEstimate&&c.append("disableEstimate",`${d.disableEstimate}`),d.allowPartialFill&&c.append("allowPartialFill",`${d.allowPartialFill}`);const l={url:`https://api.1inch.dev/swap/v5.2/${n}/swap?${c}`};return(await axios$3.post(`${getServerURL(a)}${API_CONFIG.ROUTES.callOneInchAPI}`,l)).data.oneInchResponse},getOneInchPrice=async(a,d,n,c)=>{try{const l={fromTokenAddress:d.erc20TokenAddress!==zeroAddress?d.erc20TokenAddress:oneInchZeroAddress,toTokenAddress:n.erc20TokenAddress!==zeroAddress?n.erc20TokenAddress:oneInchZeroAddress,fromAddress:zeroAddress,destReceiver:a.getContractMetadata(ContractType.OneInchExternalActionContract).address,amount:getAmountInWei(d,c),slippage:10,disableEstimate:!0,allowPartialFill:!1},h=await callOneInchAPI(a.getCurrentChainId(),l);if(!h||!h.tx)throw Error("OneInch API price fetch error");return{outSwapAmountValue:BigInt(h.toAmount),oneInchDataValue:h.tx.data}}catch(l){throw console.log({error:l}),Error(transactionErrorCodes.NO_ONEINCH_PRICE)}},defaultWaitTime=5e4,defaultConfirmations=1,initialGasPremium=11,secondaryGasPremium=15,getGasPrice=async(a,d)=>{try{const n=await a.getFeeData(),c=d===0?initialGasPremium:secondaryGasPremium,l=n.gasPrice?.mul(c).div(10)??void 0;return console.log("getGasPrice , ",l?.toBigInt(),{gasPremiumType:d}),l}catch(n){console.log("getGasPrice error: ",{err:n});return}},waitTransaction=(a,d,n)=>new Promise((c,l)=>{const h=setTimeout(()=>{l(new Error(transactionErrorCodes.TRANSACTION_TIMEOUT))},n);a.wait(d).then(A=>{clearTimeout(h),c(A)}).catch(A=>{clearTimeout(h),l(A)})}),runTransaction=async({contractFunction:a,args:d,gasPrice:n,gasLimit:c,nonce:l,confirmations:h,waitTime:A})=>{const T=await a(...d,{type:0,gasLimit:c,gasPrice:n,nonce:l});return console.log("runTransaction: ",T?.hash),await waitTransaction(T,h??defaultConfirmations,A??defaultWaitTime)},runContractFunction=async({provider:a,contractFunction:d,args:n,gasLimit:c,nonce:l,confirmations:h})=>{try{const A=await getGasPrice(a,0);return await runTransaction({contractFunction:d,args:n,gasPrice:A,gasLimit:c,nonce:l,confirmations:h})}catch(A){const T=getErrorMessage(A);if(T===UserFriendlyErrorCodes.MAX_FEE_GAS_ERROR||T===transactionErrorCodes.TRANSACTION_TIMEOUT){console.log("Timeout Hit: Increase gas");const O=await getGasPrice(a,1);return await runTransaction({contractFunction:d,args:n,gasPrice:O,gasLimit:c,nonce:l,confirmations:h})}throw A}},checkHinkalAccessToken=async a=>(await a.getContractWithFetcher(ContractType.CrossChainAccessTokenContract).functions.hasToken(a.userKeys.getAccessKey()))[0],mintAccessToken=async(a,d)=>{const n=a.getContractWithSigner(ContractType.CrossChainAccessTokenContract),c=networkRegistry[a.getCurrentChainId()].accessTokenMintingFee??"0",h={value:ethToWei(c)};return await n.addToken(d,h)},mintTokenCrossChain=async(a,d,n)=>{const c=a.getContractWithSigner(ContractType.CrossChainAccessTokenContract),l=networkRegistry[a.getCurrentChainId()].accessTokenMintingFee??"0",h=ethToWei(l),A=n.reduce((H,ne)=>H+ne.messageFee,0n),T={chains:n,totalMessageFees:A},O={value:h+A};return await c.addTokenCrossChain(d,T,O)},openDefaultPassportWindow=(a,d,n=650,c=400)=>{const l=window.top.outerHeight/2+window.top.screenY-n/2,h=window.top.outerWidth/2+window.top.screenX-c/2;window.open(a,d,`toolbar=no, menubar=no, width=${c}, height=${n}, top=${l}, left=${h}`)},openPassportWindow=(a,d,n=650,c=400)=>{const{onboardURL:l,shortName:h,customHandleKYC:A}=SupportedPassports[a];A?A(d,h,l):openDefaultPassportWindow(l,h,n,c)},getCRV=a=>{switch(getNonLocalhostChainId(a)){case chainIds.polygon:return"0x172370d5Cd63279eFa6d502DAB29171933a610AF";case chainIds.arbMainnet:return"0x11cdb42b0eb46d95f990bedd4695a6e3fa034978";case chainIds.ethMainnet:return"0xD533a949740bb3306d119CC777fa900bA034cd52";case chainIds.avalanche:return"0x47536F17F4fF30e64A96a7555826b8f9e66ec468";case chainIds.optimism:return"0x0994206dfe8de6ec6920ff4d779b0d950605fb53";case chainIds.base:return"0x8Ee73c484A26e0A5df2Ee2a4960B789967dd0415";default:return"0xD533a949740bb3306d119CC777fa900bA034cd52"}},getCVX=a=>{switch(getNonLocalhostChainId(a)){case chainIds.polygon:return"0x4257ea7637c355f81616050cbb6a9b709fd72683";case chainIds.arbMainnet:return"0xb952a807345991bd529fdded05009f5e80fe8f45";case chainIds.ethMainnet:return"0x4e3FBD56CD56c3e72c1403e103b45Db9da5B9D2B";case chainIds.optimism:return"0x81ab7e0d570b01411fcc4afd3d50ec8c241cb74b";default:return"0x4e3FBD56CD56c3e72c1403e103b45Db9da5B9D2B"}};function erc20TokenFromPendleAsset(a){if(!a)return;const d=getERC20Token(a.address,a.chainId);if(!d?.isVolatile)return d?.symbol.toLowerCase()==="weth"&&console.log("token:",d),d}function getAssetTypeFromPendleMarket(a,d){if(!a||!d)return;let n;switch(d){case PendleAssetType.YT:n=a?.yt;break;case PendleAssetType.PT:n=a?.pt;break;case PendleAssetType.PENDLE_LP:n=a?.lp;break;case PendleAssetType.SY:n=a?.sy;break;default:n=void 0;break}return n}const determinePendleSwapType=(a,d,n)=>{if(caseInsensitiveEqual(a.yt.address,n.erc20TokenAddress))return PendleSwapType.SwapExactTokenForYt;if(caseInsensitiveEqual(a.pt.address,n.erc20TokenAddress))return PendleSwapType.SwapExactTokenForPt;if(caseInsensitiveEqual(a.yt.address,d.erc20TokenAddress))return PendleSwapType.SwapExactYtForToken;if(caseInsensitiveEqual(a.pt.address,d.erc20TokenAddress))return PendleSwapType.SwapExactPtForToken},determinePendleSwapTypeApiRoute=a=>{let d;switch(a){case PendleSwapType.SwapExactTokenForYt:d=API_CONFIG.ROUTES.pendleSwapExactTokenForYT;break;case PendleSwapType.SwapExactTokenForPt:d=API_CONFIG.ROUTES.pendleSwapExactTokenForPt;break;case PendleSwapType.SwapExactYtForToken:d=API_CONFIG.ROUTES.pendleSwapExactYtForToken;break;case PendleSwapType.SwapExactPtForToken:d=API_CONFIG.ROUTES.pendleSwapExactPtForToken;break;default:throw new Error("Cant determine Pendle Swap Type Api Route")}return d},getTokenIndexForPendleFlatFee=(a,d,n,c)=>{if(!isInEnum(PendleAction,a))throw new Error("getTokenIndexForPendleFlatFee: Invalid Pendle Action");if(c)return n.findIndex(T=>T.toLowerCase()===c?.toLowerCase());const l=d.findIndex(T=>T>0n),h=d.length-1;if(d[h]<=0n)throw new Error("getTokenIndexForPendleFlatFee: Last token in amountChange is not > 0");let A=l;return(a===PendleAction.Mint||a===PendleAction.Redeem||a===PendleAction.PoolRemove)&&(A=l),A},encryptStake=(a,d,n)=>{const c=defaultAbiCoder.encode(["uint256","address"],[a,d]),l=sodium.crypto_box_seal(c,arrayify(n));return`0x${Buffer.from(l).toString("hex")}`},decryptStake=(a,d)=>{const n=Buffer.from(a.slice(2),"hex"),{publicKey:c,privateKey:l}=UserKeys.getEncryptionKeyPair(d.getShieldedPrivateKey());try{const h=sodium.crypto_box_seal_open(n,arrayify(c),arrayify(l)),A=Buffer.from(h).toString("utf-8"),[T,O]=defaultAbiCoder.decode(["uint256","address"],A);return{stakeBlinding:T.toBigInt(),stakedTokenRecipient:O}}catch{console.log("failed to decrypt");return}},createStakeCommitment=(a,d,n,c,l,h)=>BigInt(poseidonHash(...[a,d,n,c,l,h].map(BigInt))),calculateStakeNullifier=(a,d)=>poseidonHash(a,d),encodeHStakeMetadata=(a,d,n,c,l)=>defaultAbiCoder.encode(["uint8","uint256","address","bytes","bytes"],[a,d,n,c,l]),HINKAL_UNIVERSAL_FEE=8n,HINKAL_EXTERNAL_ACTION_FEE=3n,getHinkalFeeRateInBeeps=a=>a?HINKAL_UNIVERSAL_FEE:HINKAL_EXTERNAL_ACTION_FEE,getRelayFee=(a,d=!1)=>{const n=absBigInt(a);return getHinkalFeeRateInBeeps(d)*n/10000n},getSlippageFee=(a,d)=>{const n=absBigInt(a),c=slippageLevels[d];return BigInt(Math.round(c*100))*n/10000n},getAmountAfterRelayFee=(a,d=!1)=>{const n=absBigInt(a),c=getRelayFee(n,d);return n-c},getAmountWithoutFee=(a,d=!1)=>absBigInt(a)*10000n/(10000n-getHinkalFeeRateInBeeps(d)),getAmountAfterRelayAndFlatFees=(a,d,n=!1)=>{const c=absBigInt(a),l=absBigInt(d),h=getAmountAfterRelayFee(c,n)-l;return console.log("flatFee",{flatFeesAbs:l,afterFlatFee:h,totalFee:d+getRelayFee(c,n)}),h},getAmountAfterSlippage=(a,d)=>{const n=absBigInt(a),c=getSlippageFee(n,d);return n-c},getAmountAfterRelayAndFlatFeesAndSlippage=(a,d,n,c=!1)=>{const l=absBigInt(a),h=absBigInt(d),A=getAmountAfterSlippage(l,n);return getAmountAfterRelayAndFlatFees(A,h,c)},abi$d=[{inputs:[{internalType:"address",name:"_factory",type:"address"},{internalType:"address",name:"_pairLibrary",type:"address"},{internalType:"address",name:"_weth",type:"address"}],stateMutability:"nonpayable",type:"constructor"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"sender",type:"address"},{indexed:!1,internalType:"uint256",name:"amount0In",type:"uint256"},{indexed:!1,internalType:"address",name:"_tokenIn",type:"address"},{indexed:!0,internalType:"address",name:"to",type:"address"}],name:"Swap",type:"event"},{inputs:[{internalType:"address",name:"tokenA",type:"address"},{internalType:"address",name:"tokenB",type:"address"},{internalType:"bool",name:"stable",type:"bool"},{internalType:"uint256",name:"amountADesired",type:"uint256"},{internalType:"uint256",name:"amountBDesired",type:"uint256"},{internalType:"uint256",name:"amountAMin",type:"uint256"},{internalType:"uint256",name:"amountBMin",type:"uint256"},{internalType:"address",name:"to",type:"address"},{internalType:"uint256",name:"deadline",type:"uint256"}],name:"addLiquidity",outputs:[{internalType:"uint256",name:"amountA",type:"uint256"},{internalType:"uint256",name:"amountB",type:"uint256"},{internalType:"uint256",name:"liquidity",type:"uint256"}],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"token",type:"address"},{internalType:"bool",name:"stable",type:"bool"},{internalType:"uint256",name:"amountTokenDesired",type:"uint256"},{internalType:"uint256",name:"amountTokenMin",type:"uint256"},{internalType:"uint256",name:"amountETHMin",type:"uint256"},{internalType:"address",name:"to",type:"address"},{internalType:"uint256",name:"deadline",type:"uint256"}],name:"addLiquidityETH",outputs:[{internalType:"uint256",name:"amountToken",type:"uint256"},{internalType:"uint256",name:"amountETH",type:"uint256"},{internalType:"uint256",name:"liquidity",type:"uint256"}],stateMutability:"payable",type:"function"},{inputs:[],name:"factory",outputs:[{internalType:"address",name:"",type:"address"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"uint256",name:"amountIn",type:"uint256"},{internalType:"address",name:"tokenIn",type:"address"},{internalType:"address",name:"tokenOut",type:"address"}],name:"getAmountOut",outputs:[{internalType:"uint256",name:"amount",type:"uint256"},{internalType:"bool",name:"stable",type:"bool"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"uint256",name:"amountIn",type:"uint256"},{components:[{internalType:"address",name:"from",type:"address"},{internalType:"address",name:"to",type:"address"},{internalType:"bool",name:"stable",type:"bool"}],internalType:"struct Router.route[]",name:"routes",type:"tuple[]"}],name:"getAmountsOut",outputs:[{internalType:"uint256[]",name:"amounts",type:"uint256[]"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"tokenA",type:"address"},{internalType:"address",name:"tokenB",type:"address"},{internalType:"bool",name:"stable",type:"bool"}],name:"getReserves",outputs:[{internalType:"uint256",name:"reserveA",type:"uint256"},{internalType:"uint256",name:"reserveB",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"pair",type:"address"}],name:"isPair",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"tokenA",type:"address"},{internalType:"address",name:"tokenB",type:"address"},{internalType:"bool",name:"stable",type:"bool"}],name:"pairFor",outputs:[{internalType:"address",name:"pair",type:"address"}],stateMutability:"view",type:"function"},{inputs:[],name:"pairLibrary",outputs:[{internalType:"address",name:"",type:"address"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"tokenA",type:"address"},{internalType:"address",name:"tokenB",type:"address"},{internalType:"bool",name:"stable",type:"bool"},{internalType:"uint256",name:"amountADesired",type:"uint256"},{internalType:"uint256",name:"amountBDesired",type:"uint256"}],name:"quoteAddLiquidity",outputs:[{internalType:"uint256",name:"amountA",type:"uint256"},{internalType:"uint256",name:"amountB",type:"uint256"},{internalType:"uint256",name:"liquidity",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"tokenA",type:"address"},{internalType:"address",name:"tokenB",type:"address"},{internalType:"bool",name:"stable",type:"bool"},{internalType:"uint256",name:"liquidity",type:"uint256"}],name:"quoteRemoveLiquidity",outputs:[{internalType:"uint256",name:"amountA",type:"uint256"},{internalType:"uint256",name:"amountB",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"tokenA",type:"address"},{internalType:"address",name:"tokenB",type:"address"},{internalType:"bool",name:"stable",type:"bool"},{internalType:"uint256",name:"liquidity",type:"uint256"},{internalType:"uint256",name:"amountAMin",type:"uint256"},{internalType:"uint256",name:"amountBMin",type:"uint256"},{internalType:"address",name:"to",type:"address"},{internalType:"uint256",name:"deadline",type:"uint256"}],name:"removeLiquidity",outputs:[{internalType:"uint256",name:"amountA",type:"uint256"},{internalType:"uint256",name:"amountB",type:"uint256"}],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"token",type:"address"},{internalType:"bool",name:"stable",type:"bool"},{internalType:"uint256",name:"liquidity",type:"uint256"},{internalType:"uint256",name:"amountTokenMin",type:"uint256"},{internalType:"uint256",name:"amountETHMin",type:"uint256"},{internalType:"address",name:"to",type:"address"},{internalType:"uint256",name:"deadline",type:"uint256"}],name:"removeLiquidityETH",outputs:[{internalType:"uint256",name:"amountToken",type:"uint256"},{internalType:"uint256",name:"amountETH",type:"uint256"}],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"token",type:"address"},{internalType:"bool",name:"stable",type:"bool"},{internalType:"uint256",name:"liquidity",type:"uint256"},{internalType:"uint256",name:"amountTokenMin",type:"uint256"},{internalType:"uint256",name:"amountETHMin",type:"uint256"},{internalType:"address",name:"to",type:"address"},{internalType:"uint256",name:"deadline",type:"uint256"},{internalType:"bool",name:"approveMax",type:"bool"},{internalType:"uint8",name:"v",type:"uint8"},{internalType:"bytes32",name:"r",type:"bytes32"},{internalType:"bytes32",name:"s",type:"bytes32"}],name:"removeLiquidityETHWithPermit",outputs:[{internalType:"uint256",name:"amountToken",type:"uint256"},{internalType:"uint256",name:"amountETH",type:"uint256"}],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"tokenA",type:"address"},{internalType:"address",name:"tokenB",type:"address"},{internalType:"bool",name:"stable",type:"bool"},{internalType:"uint256",name:"liquidity",type:"uint256"},{internalType:"uint256",name:"amountAMin",type:"uint256"},{internalType:"uint256",name:"amountBMin",type:"uint256"},{internalType:"address",name:"to",type:"address"},{internalType:"uint256",name:"deadline",type:"uint256"},{internalType:"bool",name:"approveMax",type:"bool"},{internalType:"uint8",name:"v",type:"uint8"},{internalType:"bytes32",name:"r",type:"bytes32"},{internalType:"bytes32",name:"s",type:"bytes32"}],name:"removeLiquidityWithPermit",outputs:[{internalType:"uint256",name:"amountA",type:"uint256"},{internalType:"uint256",name:"amountB",type:"uint256"}],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"tokenA",type:"address"},{internalType:"address",name:"tokenB",type:"address"}],name:"sortTokens",outputs:[{internalType:"address",name:"token0",type:"address"},{internalType:"address",name:"token1",type:"address"}],stateMutability:"pure",type:"function"},{inputs:[{internalType:"uint256",name:"amountOutMin",type:"uint256"},{components:[{internalType:"address",name:"from",type:"address"},{internalType:"address",name:"to",type:"address"},{internalType:"bool",name:"stable",type:"bool"}],internalType:"struct Router.route[]",name:"routes",type:"tuple[]"},{internalType:"address",name:"to",type:"address"},{internalType:"uint256",name:"deadline",type:"uint256"}],name:"swapExactETHForTokens",outputs:[{internalType:"uint256[]",name:"amounts",type:"uint256[]"}],stateMutability:"payable",type:"function"},{inputs:[{internalType:"uint256",name:"amountIn",type:"uint256"},{internalType:"uint256",name:"amountOutMin",type:"uint256"},{components:[{internalType:"address",name:"from",type:"address"},{internalType:"address",name:"to",type:"address"},{internalType:"bool",name:"stable",type:"bool"}],internalType:"struct Router.route[]",name:"routes",type:"tuple[]"},{internalType:"address",name:"to",type:"address"},{internalType:"uint256",name:"deadline",type:"uint256"}],name:"swapExactTokensForETH",outputs:[{internalType:"uint256[]",name:"amounts",type:"uint256[]"}],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"uint256",name:"amountIn",type:"uint256"},{internalType:"uint256",name:"amountOutMin",type:"uint256"},{components:[{internalType:"address",name:"from",type:"address"},{internalType:"address",name:"to",type:"address"},{internalType:"bool",name:"stable",type:"bool"}],internalType:"struct Router.route[]",name:"routes",type:"tuple[]"},{internalType:"address",name:"to",type:"address"},{internalType:"uint256",name:"deadline",type:"uint256"}],name:"swapExactTokensForTokens",outputs:[{internalType:"uint256[]",name:"amounts",type:"uint256[]"}],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"uint256",name:"amountIn",type:"uint256"},{internalType:"uint256",name:"amountOutMin",type:"uint256"},{internalType:"address",name:"tokenFrom",type:"address"},{internalType:"address",name:"tokenTo",type:"address"},{internalType:"bool",name:"stable",type:"bool"},{internalType:"address",name:"to",type:"address"},{internalType:"uint256",name:"deadline",type:"uint256"}],name:"swapExactTokensForTokensSimple",outputs:[{internalType:"uint256[]",name:"amounts",type:"uint256[]"}],stateMutability:"nonpayable",type:"function"},{inputs:[],name:"weth",outputs:[{internalType:"contract IWETH",name:"",type:"address"}],stateMutability:"view",type:"function"},{stateMutability:"payable",type:"receive"},{inputs:[{internalType:"address",name:"tokenA",type:"address"},{internalType:"address",name:"tokenB",type:"address"},{internalType:"address",name:"_factory",type:"address"}],name:"quoteStableLiquidityRatio",outputs:[{internalType:"uint256",name:"ratio",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"defaultFactory",outputs:[{internalType:"address",name:"",type:"address"}],stateMutability:"view",type:"function"}],abi$c=[{anonymous:!1,inputs:[{indexed:!1,internalType:"uint256",name:"callFees",type:"uint256"},{indexed:!1,internalType:"uint256",name:"beefyFees",type:"uint256"},{indexed:!1,internalType:"uint256",name:"strategistFees",type:"uint256"}],name:"ChargedFees",type:"event"},{anonymous:!1,inputs:[{indexed:!1,internalType:"uint256",name:"tvl",type:"uint256"}],name:"Deposit",type:"event"},{anonymous:!1,inputs:[{indexed:!1,internalType:"uint8",name:"version",type:"uint8"}],name:"Initialized",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:"address",name:"account",type:"address"}],name:"Paused",type:"event"},{anonymous:!1,inputs:[{indexed:!1,internalType:"address",name:"beefyFeeConfig",type:"address"}],name:"SetBeefyFeeConfig",type:"event"},{anonymous:!1,inputs:[{indexed:!1,internalType:"address",name:"beefyFeeRecipient",type:"address"}],name:"SetBeefyFeeRecipient",type:"event"},{anonymous:!1,inputs:[{indexed:!1,internalType:"address",name:"keeper",type:"address"}],name:"SetKeeper",type:"event"},{anonymous:!1,inputs:[{indexed:!1,internalType:"uint256",name:"feeId",type:"uint256"}],name:"SetStratFeeId",type:"event"},{anonymous:!1,inputs:[{indexed:!1,internalType:"address",name:"strategist",type:"address"}],name:"SetStrategist",type:"event"},{anonymous:!1,inputs:[{indexed:!1,internalType:"address",name:"unirouter",type:"address"}],name:"SetUnirouter",type:"event"},{anonymous:!1,inputs:[{indexed:!1,internalType:"address",name:"vault",type:"address"}],name:"SetVault",type:"event"},{anonymous:!1,inputs:[{indexed:!1,internalType:"uint256",name:"withdrawalFee",type:"uint256"}],name:"SetWithdrawalFee",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"harvester",type:"address"},{indexed:!1,internalType:"uint256",name:"wantHarvested",type:"uint256"},{indexed:!1,internalType:"uint256",name:"tvl",type:"uint256"}],name:"StratHarvest",type:"event"},{anonymous:!1,inputs:[{indexed:!1,internalType:"address",name:"account",type:"address"}],name:"Unpaused",type:"event"},{anonymous:!1,inputs:[{indexed:!1,internalType:"uint256",name:"tvl",type:"uint256"}],name:"Withdraw",type:"event"},{inputs:[],name:"NO_PID",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"WITHDRAWAL_FEE_CAP",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"WITHDRAWAL_MAX",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address[9]",name:"_rewardToNativeRoute",type:"address[9]"},{internalType:"uint256[3][4]",name:"_swapParams",type:"uint256[3][4]"},{internalType:"uint256",name:"_minAmount",type:"uint256"}],name:"addReward",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"_router",type:"address"},{internalType:"address[]",name:"_rewardToNativeRoute",type:"address[]"},{internalType:"uint256",name:"_minAmount",type:"uint256"}],name:"addRewardV2",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"bytes",name:"_rewardToNativePath",type:"bytes"},{internalType:"uint256",name:"_minAmount",type:"uint256"}],name:"addRewardV3",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[],name:"balanceOf",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"balanceOfPool",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"balanceOfWant",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"beefyFeeConfig",outputs:[{internalType:"contract IFeeConfig",name:"",type:"address"}],stateMutability:"view",type:"function"},{inputs:[],name:"beefyFeeRecipient",outputs:[{internalType:"address",name:"",type:"address"}],stateMutability:"view",type:"function"},{inputs:[],name:"beforeDeposit",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[],name:"booster",outputs:[{internalType:"contract IConvexBooster",name:"",type:"address"}],stateMutability:"view",type:"function"},{inputs:[],name:"callReward",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"pure",type:"function"},{inputs:[{internalType:"uint256",name:"i",type:"uint256"}],name:"curveReward",outputs:[{internalType:"address[9]",name:"",type:"address[9]"},{internalType:"uint256[3][4]",name:"",type:"uint256[3][4]"},{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"uint256",name:"",type:"uint256"}],name:"curveRewards",outputs:[{internalType:"uint256",name:"minAmount",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"curveRewardsLength",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"curveRouter",outputs:[{internalType:"address",name:"",type:"address"}],stateMutability:"view",type:"function"},{inputs:[],name:"deposit",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[],name:"depositFee",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"depositToWant",outputs:[{internalType:"uint256",name:"minAmount",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"depositToWantRoute",outputs:[{internalType:"address[9]",name:"",type:"address[9]"},{internalType:"uint256[3][4]",name:"",type:"uint256[3][4]"},{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"gauge",outputs:[{internalType:"address",name:"",type:"address"}],stateMutability:"view",type:"function"},{inputs:[],name:"getAllFees",outputs:[{components:[{components:[{internalType:"uint256",name:"total",type:"uint256"},{internalType:"uint256",name:"beefy",type:"uint256"},{internalType:"uint256",name:"call",type:"uint256"},{internalType:"uint256",name:"strategist",type:"uint256"},{internalType:"string",name:"label",type:"string"},{internalType:"bool",name:"active",type:"bool"}],internalType:"struct IFeeConfig.FeeCategory",name:"performance",type:"tuple"},{internalType:"uint256",name:"deposit",type:"uint256"},{internalType:"uint256",name:"withdraw",type:"uint256"}],internalType:"struct IFeeConfig.AllFees",name:"",type:"tuple"}],stateMutability:"view",type:"function"},{inputs:[],name:"getStratFeeId",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"callFeeRecipient",type:"address"}],name:"harvest",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[],name:"harvest",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[],name:"harvestOnDeposit",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"_want",type:"address"},{internalType:"address",name:"_gauge",type:"address"},{internalType:"uint256",name:"_pid",type:"uint256"},{internalType:"bytes",name:"_crvToNativePath",type:"bytes"},{internalType:"bytes",name:"_cvxToNativePath",type:"bytes"},{internalType:"bytes",name:"_nativeToDepositPath",type:"bytes"},{components:[{internalType:"address[9]",name:"route",type:"address[9]"},{internalType:"uint256[3][4]",name:"swapParams",type:"uint256[3][4]"},{internalType:"uint256",name:"minAmount",type:"uint256"}],internalType:"struct StrategyCurveConvex.CurveRoute",name:"_depositToWant",type:"tuple"},{components:[{internalType:"address",name:"vault",type:"address"},{internalType:"address",name:"unirouter",type:"address"},{internalType:"address",name:"keeper",type:"address"},{internalType:"address",name:"strategist",type:"address"},{internalType:"address",name:"beefyFeeRecipient",type:"address"},{internalType:"address",name:"beefyFeeConfig",type:"address"}],internalType:"struct StratFeeManagerInitializable.CommonAddresses",name:"_commonAddresses",type:"tuple"}],name:"initialize",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[],name:"isCrvMintable",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"view",type:"function"},{inputs:[],name:"keeper",outputs:[{internalType:"address",name:"",type:"address"}],stateMutability:"view",type:"function"},{inputs:[],name:"lastHarvest",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"minter",outputs:[{internalType:"contract ICrvMinter",name:"",type:"address"}],stateMutability:"view",type:"function"},{inputs:[],name:"native",outputs:[{internalType:"address",name:"",type:"address"}],stateMutability:"view",type:"function"},{inputs:[],name:"nativeToDepositPath",outputs:[{internalType:"bytes",name:"",type:"bytes"}],stateMutability:"view",type:"function"},{inputs:[],name:"owner",outputs:[{internalType:"address",name:"",type:"address"}],stateMutability:"view",type:"function"},{inputs:[],name:"panic",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[],name:"pause",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[],name:"paused",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"view",type:"function"},{inputs:[],name:"pid",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"renounceOwnership",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[],name:"resetCurveRewards",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[],name:"resetRewardsV2",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[],name:"resetRewardsV3",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[],name:"retireStrat",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[],name:"rewardPool",outputs:[{internalType:"address",name:"",type:"address"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"uint256",name:"i",type:"uint256"}],name:"rewardV2",outputs:[{internalType:"address",name:"",type:"address"},{internalType:"address[]",name:"",type:"address[]"},{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"uint256",name:"i",type:"uint256"}],name:"rewardV3Route",outputs:[{internalType:"address[]",name:"",type:"address[]"}],stateMutability:"view",type:"function"},{inputs:[],name:"rewardsAvailable",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"uint256",name:"",type:"uint256"}],name:"rewardsV2",outputs:[{internalType:"address",name:"token",type:"address"},{internalType:"address",name:"router",type:"address"},{internalType:"uint256",name:"minAmount",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"rewardsV2Length",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"uint256",name:"",type:"uint256"}],name:"rewardsV3",outputs:[{internalType:"address",name:"token",type:"address"},{internalType:"bytes",name:"toNativePath",type:"bytes"},{internalType:"uint256",name:"minAmount",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"rewardsV3Length",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"_beefyFeeConfig",type:"address"}],name:"setBeefyFeeConfig",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"_beefyFeeRecipient",type:"address"}],name:"setBeefyFeeRecipient",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"uint256",name:"_pid",type:"uint256"}],name:"setConvexPid",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"bool",name:"_isCrvMintable",type:"bool"}],name:"setCrvMintable",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address[9]",name:"_route",type:"address[9]"},{internalType:"uint256[3][4]",name:"_swapParams",type:"uint256[3][4]"},{internalType:"uint256",name:"minAmount",type:"uint256"}],name:"setDepositToWant",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"bool",name:"_harvestOnDeposit",type:"bool"}],name:"setHarvestOnDeposit",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"_keeper",type:"address"}],name:"setKeeper",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"bytes",name:"_nativeToDepositPath",type:"bytes"}],name:"setNativeToDepositPath",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"bool",name:"_skipEarmarkRewards",type:"bool"}],name:"setSkipEarmarkRewards",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"uint256",name:"_feeId",type:"uint256"}],name:"setStratFeeId",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"_strategist",type:"address"}],name:"setStrategist",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"_unirouter",type:"address"}],name:"setUnirouter",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"_vault",type:"address"}],name:"setVault",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"uint256",name:"_fee",type:"uint256"}],name:"setWithdrawalFee",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[],name:"skipEarmarkRewards",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"view",type:"function"},{inputs:[],name:"strategist",outputs:[{internalType:"address",name:"",type:"address"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"newOwner",type:"address"}],name:"transferOwnership",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[],name:"unirouter",outputs:[{internalType:"address",name:"",type:"address"}],stateMutability:"view",type:"function"},{inputs:[],name:"unpause",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[],name:"vault",outputs:[{internalType:"address",name:"",type:"address"}],stateMutability:"view",type:"function"},{inputs:[],name:"want",outputs:[{internalType:"address",name:"",type:"address"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"uint256",name:"_amount",type:"uint256"}],name:"withdraw",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[],name:"withdrawFee",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{stateMutability:"payable",type:"receive"}],abi$b=[{inputs:[{internalType:"address",name:"_router",type:"address"},{internalType:"address",name:"_WETH",type:"address"}],stateMutability:"nonpayable",type:"constructor"},{inputs:[],name:"WETH",outputs:[{internalType:"address",name:"",type:"address"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"beefyVault",type:"address"},{internalType:"uint256",name:"tokenAmountOutMin",type:"uint256"},{internalType:"address",name:"tokenIn",type:"address"},{internalType:"uint256",name:"tokenInAmount",type:"uint256"}],name:"beefIn",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"beefyVault",type:"address"},{internalType:"uint256",name:"tokenAmountOutMin",type:"uint256"}],name:"beefInETH",outputs:[],stateMutability:"payable",type:"function"},{inputs:[{internalType:"address",name:"beefyVault",type:"address"},{internalType:"uint256",name:"withdrawAmount",type:"uint256"}],name:"beefOut",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"beefyVault",type:"address"},{internalType:"uint256",name:"withdrawAmount",type:"uint256"},{internalType:"address",name:"desiredToken",type:"address"},{internalType:"uint256",name:"desiredTokenOutMin",type:"uint256"}],name:"beefOutAndSwap",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[],name:"checkWETH",outputs:[{internalType:"bool",name:"isValid",type:"bool"}],stateMutability:"pure",type:"function"},{inputs:[{internalType:"address",name:"beefyVault",type:"address"},{internalType:"address",name:"tokenIn",type:"address"},{internalType:"uint256",name:"fullInvestmentIn",type:"uint256"}],name:"estimateSwap",outputs:[{internalType:"uint256",name:"swapAmountIn",type:"uint256"},{internalType:"uint256",name:"swapAmountOut",type:"uint256"},{internalType:"address",name:"swapTokenOut",type:"address"}],stateMutability:"view",type:"function"},{inputs:[],name:"minimumAmount",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"router",outputs:[{internalType:"contract IUniswapRouterSolidly",name:"",type:"address"}],stateMutability:"view",type:"function"},{stateMutability:"payable",type:"receive"}],abi$a=[{inputs:[{internalType:"address",name:"_oneInchRouter",type:"address"},{internalType:"address",name:"_WETH",type:"address"}],stateMutability:"nonpayable",type:"constructor"},{anonymous:!1,inputs:[{indexed:!1,internalType:"address",name:"token",type:"address"},{indexed:!1,internalType:"uint256",name:"amount",type:"uint256"}],name:"TokenReturned",type:"event"},{anonymous:!1,inputs:[{indexed:!1,internalType:"address",name:"vault",type:"address"},{indexed:!1,internalType:"address",name:"tokenIn",type:"address"},{indexed:!1,internalType:"uint256",name:"amountIn",type:"uint256"}],name:"ZapIn",type:"event"},{anonymous:!1,inputs:[{indexed:!1,internalType:"address",name:"vault",type:"address"},{indexed:!1,internalType:"address",name:"desiredToken",type:"address"},{indexed:!1,internalType:"uint256",name:"mooTokenIn",type:"uint256"}],name:"ZapOut",type:"event"},{inputs:[],name:"WETH",outputs:[{internalType:"address",name:"",type:"address"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"_beefyVault",type:"address"},{internalType:"address",name:"_inputToken",type:"address"},{internalType:"uint256",name:"_tokenInAmount",type:"uint256"},{internalType:"bytes",name:"_token0",type:"bytes"},{internalType:"bytes",name:"_token1",type:"bytes"},{internalType:"enum BeefyZapOneInch.WantType",name:"_type",type:"uint8"}],name:"beefIn",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"_beefyVault",type:"address"},{internalType:"bytes",name:"_token0",type:"bytes"},{internalType:"bytes",name:"_token1",type:"bytes"},{internalType:"enum BeefyZapOneInch.WantType",name:"_type",type:"uint8"}],name:"beefInETH",outputs:[],stateMutability:"payable",type:"function"},{inputs:[{internalType:"address",name:"_beefyVault",type:"address"},{internalType:"uint256",name:"_withdrawAmount",type:"uint256"}],name:"beefOut",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"_fromMooVault",type:"address"},{internalType:"address",name:"_toMooVault",type:"address"},{internalType:"uint256",name:"_mooTokenAmount",type:"uint256"},{internalType:"bytes",name:"_token0ToFrom",type:"bytes"},{internalType:"bytes",name:"_token1ToFrom",type:"bytes"},{internalType:"enum BeefyZapOneInch.WantType",name:"_fromType",type:"uint8"},{internalType:"enum BeefyZapOneInch.WantType",name:"_toType",type:"uint8"}],name:"beefOutAndReInvest",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"_beefyVault",type:"address"},{internalType:"uint256",name:"_withdrawAmount",type:"uint256"},{internalType:"address",name:"_desiredToken",type:"address"},{internalType:"bytes",name:"_dataToken0",type:"bytes"},{internalType:"bytes",name:"_dataToken1",type:"bytes"},{internalType:"enum BeefyZapOneInch.WantType",name:"_type",type:"uint8"}],name:"beefOutAndSwap",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[],name:"minimumAmount",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"oneInchRouter",outputs:[{internalType:"address",name:"",type:"address"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"bool",name:"success",type:"bool"},{internalType:"bytes",name:"data",type:"bytes"},{internalType:"string",name:"errorMessage",type:"string"}],name:"propagateError",outputs:[],stateMutability:"pure",type:"function"},{inputs:[{internalType:"address",name:"_beefyVault",type:"address"}],name:"quoteStableAddLiquidityRatio",outputs:[{internalType:"uint256",name:"ratio1to0",type:"uint256"}],stateMutability:"view",type:"function"},{stateMutability:"payable",type:"receive"}],abi$9=[{inputs:[{internalType:"address",name:"_staker",type:"address"}],stateMutability:"nonpayable",type:"constructor"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"_factory",type:"address"},{indexed:!1,internalType:"address",name:"_crv",type:"address"}],name:"CrvFactorySet",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"user",type:"address"},{indexed:!0,internalType:"uint256",name:"poolid",type:"uint256"},{indexed:!1,internalType:"uint256",name:"amount",type:"uint256"}],name:"Deposited",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"_address",type:"address"}],name:"OwnerChanged",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"_address",type:"address"}],name:"SetPendingOwner",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"user",type:"address"},{indexed:!0,internalType:"uint256",name:"poolid",type:"uint256"},{indexed:!1,internalType:"uint256",name:"amount",type:"uint256"}],name:"Withdrawn",type:"event"},{inputs:[],name:"FEE_DENOMINATOR",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"MaxFees",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"acceptPendingOwner",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"",type:"address"}],name:"activeMap",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"_lptoken",type:"address"},{internalType:"address",name:"_gauge",type:"address"},{internalType:"address",name:"_factory",type:"address"}],name:"addPool",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"uint256",name:"_amount",type:"uint256"}],name:"calculatePlatformFees",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"uint256",name:"_pid",type:"uint256"},{internalType:"address",name:"_gauge",type:"address"}],name:"claimCrv",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"uint256",name:"_pid",type:"uint256"},{internalType:"uint256",name:"_amount",type:"uint256"}],name:"deposit",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"uint256",name:"_pid",type:"uint256"}],name:"depositAll",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"",type:"address"}],name:"factoryCrv",outputs:[{internalType:"address",name:"",type:"address"}],stateMutability:"view",type:"function"},{inputs:[],name:"feeDeposit",outputs:[{internalType:"address",name:"",type:"address"}],stateMutability:"view",type:"function"},{inputs:[],name:"fees",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"isShutdown",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"view",type:"function"},{inputs:[],name:"owner",outputs:[{internalType:"address",name:"",type:"address"}],stateMutability:"view",type:"function"},{inputs:[],name:"pendingOwner",outputs:[{internalType:"address",name:"",type:"address"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"uint256",name:"",type:"uint256"}],name:"poolInfo",outputs:[{internalType:"address",name:"lptoken",type:"address"},{internalType:"address",name:"gauge",type:"address"},{internalType:"address",name:"rewards",type:"address"},{internalType:"bool",name:"shutdown",type:"bool"},{internalType:"address",name:"factory",type:"address"}],stateMutability:"view",type:"function"},{inputs:[],name:"poolLength",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"poolManager",outputs:[{internalType:"address",name:"",type:"address"}],stateMutability:"view",type:"function"},{inputs:[],name:"rescueManager",outputs:[{internalType:"address",name:"",type:"address"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"_token",type:"address"},{internalType:"address",name:"_to",type:"address"}],name:"rescueToken",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[],name:"rewardFactory",outputs:[{internalType:"address",name:"",type:"address"}],stateMutability:"view",type:"function"},{inputs:[],name:"rewardManager",outputs:[{internalType:"address",name:"",type:"address"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"_factory",type:"address"},{internalType:"address",name:"_crv",type:"address"}],name:"setFactoryCrv",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"_deposit",type:"address"}],name:"setFeeDeposit",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"uint256",name:"_platformFees",type:"uint256"}],name:"setFees",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"_po",type:"address"}],name:"setPendingOwner",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"_poolM",type:"address"}],name:"setPoolManager",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"_rescueM",type:"address"}],name:"setRescueManager",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"_rfactory",type:"address"}],name:"setRewardFactory",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"_rewardM",type:"address"}],name:"setRewardManager",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"uint256",name:"",type:"uint256"}],name:"shutdownBalances",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"uint256",name:"_pid",type:"uint256"}],name:"shutdownPool",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"nonpayable",type:"function"},{inputs:[],name:"shutdownSystem",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[],name:"staker",outputs:[{internalType:"address",name:"",type:"address"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"uint256",name:"_pid",type:"uint256"},{internalType:"uint256",name:"_amount",type:"uint256"},{internalType:"address",name:"_to",type:"address"}],name:"withdrawTo",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"nonpayable",type:"function"}],abi$8=[{inputs:[{internalType:"address",name:"_staker",type:"address"},{internalType:"address",name:"_minter",type:"address"}],stateMutability:"nonpayable",type:"constructor"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"user",type:"address"},{indexed:!0,internalType:"uint256",name:"poolid",type:"uint256"},{indexed:!1,internalType:"uint256",name:"amount",type:"uint256"}],name:"Deposited",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"user",type:"address"},{indexed:!0,internalType:"uint256",name:"poolid",type:"uint256"},{indexed:!1,internalType:"uint256",name:"amount",type:"uint256"}],name:"Withdrawn",type:"event"},{inputs:[],name:"FEE_DENOMINATOR",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"MaxFees",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"_lptoken",type:"address"},{internalType:"address",name:"_gauge",type:"address"},{internalType:"uint256",name:"_stashVersion",type:"uint256"}],name:"addPool",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"uint256",name:"_pid",type:"uint256"},{internalType:"address",name:"_gauge",type:"address"}],name:"claimRewards",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"nonpayable",type:"function"},{inputs:[],name:"crv",outputs:[{internalType:"address",name:"",type:"address"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"uint256",name:"_pid",type:"uint256"},{internalType:"uint256",name:"_amount",type:"uint256"},{internalType:"bool",name:"_stake",type:"bool"}],name:"deposit",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"uint256",name:"_pid",type:"uint256"},{internalType:"bool",name:"_stake",type:"bool"}],name:"depositAll",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"nonpayable",type:"function"},{inputs:[],name:"distributionAddressId",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"earmarkFees",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"nonpayable",type:"function"},{inputs:[],name:"earmarkIncentive",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"uint256",name:"_pid",type:"uint256"}],name:"earmarkRewards",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"nonpayable",type:"function"},{inputs:[],name:"feeDistro",outputs:[{internalType:"address",name:"",type:"address"}],stateMutability:"view",type:"function"},{inputs:[],name:"feeManager",outputs:[{internalType:"address",name:"",type:"address"}],stateMutability:"view",type:"function"},{inputs:[],name:"feeToken",outputs:[{internalType:"address",name:"",type:"address"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"",type:"address"}],name:"gaugeMap",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"view",type:"function"},{inputs:[],name:"isShutdown",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"view",type:"function"},{inputs:[],name:"lockFees",outputs:[{internalType:"address",name:"",type:"address"}],stateMutability:"view",type:"function"},{inputs:[],name:"lockIncentive",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"lockRewards",outputs:[{internalType:"address",name:"",type:"address"}],stateMutability:"view",type:"function"},{inputs:[],name:"minter",outputs:[{internalType:"address",name:"",type:"address"}],stateMutability:"view",type:"function"},{inputs:[],name:"owner",outputs:[{internalType:"address",name:"",type:"address"}],stateMutability:"view",type:"function"},{inputs:[],name:"platformFee",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"uint256",name:"",type:"uint256"}],name:"poolInfo",outputs:[{internalType:"address",name:"lptoken",type:"address"},{internalType:"address",name:"token",type:"address"},{internalType:"address",name:"gauge",type:"address"},{internalType:"address",name:"crvRewards",type:"address"},{internalType:"address",name:"stash",type:"address"},{internalType:"bool",name:"shutdown",type:"bool"}],stateMutability:"view",type:"function"},{inputs:[],name:"poolLength",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"poolManager",outputs:[{internalType:"address",name:"",type:"address"}],stateMutability:"view",type:"function"},{inputs:[],name:"registry",outputs:[{internalType:"address",name:"",type:"address"}],stateMutability:"view",type:"function"},{inputs:[],name:"rewardArbitrator",outputs:[{internalType:"address",name:"",type:"address"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"uint256",name:"_pid",type:"uint256"},{internalType:"address",name:"_address",type:"address"},{internalType:"uint256",name:"_amount",type:"uint256"}],name:"rewardClaimed",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"nonpayable",type:"function"},{inputs:[],name:"rewardFactory",outputs:[{internalType:"address",name:"",type:"address"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"_arb",type:"address"}],name:"setArbitrator",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"_rfactory",type:"address"},{internalType:"address",name:"_sfactory",type:"address"},{internalType:"address",name:"_tfactory",type:"address"}],name:"setFactories",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[],name:"setFeeInfo",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"_feeM",type:"address"}],name:"setFeeManager",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"uint256",name:"_lockFees",type:"uint256"},{internalType:"uint256",name:"_stakerFees",type:"uint256"},{internalType:"uint256",name:"_callerFees",type:"uint256"},{internalType:"uint256",name:"_platform",type:"uint256"}],name:"setFees",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"uint256",name:"_pid",type:"uint256"}],name:"setGaugeRedirect",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"_owner",type:"address"}],name:"setOwner",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"_poolM",type:"address"}],name:"setPoolManager",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"_rewards",type:"address"},{internalType:"address",name:"_stakerRewards",type:"address"}],name:"setRewardContracts",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"_treasury",type:"address"}],name:"setTreasury",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"_voteDelegate",type:"address"}],name:"setVoteDelegate",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"uint256",name:"_pid",type:"uint256"}],name:"shutdownPool",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"nonpayable",type:"function"},{inputs:[],name:"shutdownSystem",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[],name:"staker",outputs:[{internalType:"address",name:"",type:"address"}],stateMutability:"view",type:"function"},{inputs:[],name:"stakerIncentive",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"stakerRewards",outputs:[{internalType:"address",name:"",type:"address"}],stateMutability:"view",type:"function"},{inputs:[],name:"stashFactory",outputs:[{internalType:"address",name:"",type:"address"}],stateMutability:"view",type:"function"},{inputs:[],name:"tokenFactory",outputs:[{internalType:"address",name:"",type:"address"}],stateMutability:"view",type:"function"},{inputs:[],name:"treasury",outputs:[{internalType:"address",name:"",type:"address"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"uint256",name:"_voteId",type:"uint256"},{internalType:"address",name:"_votingAddress",type:"address"},{internalType:"bool",name:"_support",type:"bool"}],name:"vote",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"nonpayable",type:"function"},{inputs:[],name:"voteDelegate",outputs:[{internalType:"address",name:"",type:"address"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address[]",name:"_gauge",type:"address[]"},{internalType:"uint256[]",name:"_weight",type:"uint256[]"}],name:"voteGaugeWeight",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"nonpayable",type:"function"},{inputs:[],name:"voteOwnership",outputs:[{internalType:"address",name:"",type:"address"}],stateMutability:"view",type:"function"},{inputs:[],name:"voteParameter",outputs:[{internalType:"address",name:"",type:"address"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"uint256",name:"_pid",type:"uint256"},{internalType:"uint256",name:"_amount",type:"uint256"}],name:"withdraw",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"uint256",name:"_pid",type:"uint256"}],name:"withdrawAll",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"uint256",name:"_pid",type:"uint256"},{internalType:"uint256",name:"_amount",type:"uint256"},{internalType:"address",name:"_to",type:"address"}],name:"withdrawTo",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"nonpayable",type:"function"}],abi$7=[{inputs:[],stateMutability:"nonpayable",type:"constructor"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"owner",type:"address"},{indexed:!0,internalType:"address",name:"spender",type:"address"},{indexed:!1,internalType:"uint256",name:"value",type:"uint256"}],name:"Approval",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"_user",type:"address"},{indexed:!1,internalType:"uint256",name:"_amount",type:"uint256"}],name:"EmergencyWithdrawn",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"_rewardToken",type:"address"}],name:"RewardAdded",type:"event"},{anonymous:!1,inputs:[{indexed:!1,internalType:"address",name:"_rewardToken",type:"address"}],name:"RewardInvalidated",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"_user",type:"address"},{indexed:!0,internalType:"address",name:"_rewardToken",type:"address"},{indexed:!0,internalType:"address",name:"_receiver",type:"address"},{indexed:!1,internalType:"uint256",name:"_rewardAmount",type:"uint256"}],name:"RewardPaid",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"_account",type:"address"},{indexed:!1,internalType:"address",name:"_forward",type:"address"}],name:"RewardRedirected",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"_user",type:"address"},{indexed:!1,internalType:"uint256",name:"_amount",type:"uint256"}],name:"Staked",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"from",type:"address"},{indexed:!0,internalType:"address",name:"to",type:"address"},{indexed:!1,internalType:"uint256",name:"value",type:"uint256"}],name:"Transfer",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"_user",type:"address"},{indexed:!1,internalType:"uint256",name:"_amount",type:"uint256"}],name:"Withdrawn",type:"event"},{inputs:[{internalType:"address",name:"_token",type:"address"}],name:"addExtraReward",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"owner",type:"address"},{internalType:"address",name:"spender",type:"address"}],name:"allowance",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"spender",type:"address"},{internalType:"uint256",name:"amount",type:"uint256"}],name:"approve",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"account",type:"address"}],name:"balanceOf",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"",type:"address"},{internalType:"address",name:"",type:"address"}],name:"claimable_reward",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"convexBooster",outputs:[{internalType:"address",name:"",type:"address"}],stateMutability:"view",type:"function"},{inputs:[],name:"convexPoolId",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"convexStaker",outputs:[{internalType:"address",name:"",type:"address"}],stateMutability:"view",type:"function"},{inputs:[],name:"crv",outputs:[{internalType:"address",name:"",type:"address"}],stateMutability:"view",type:"function"},{inputs:[],name:"curveGauge",outputs:[{internalType:"address",name:"",type:"address"}],stateMutability:"view",type:"function"},{inputs:[],name:"decimals",outputs:[{internalType:"uint8",name:"",type:"uint8"}],stateMutability:"pure",type:"function"},{inputs:[{internalType:"address",name:"spender",type:"address"},{internalType:"uint256",name:"subtractedValue",type:"uint256"}],name:"decreaseAllowance",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"_account",type:"address"}],name:"earned",outputs:[{components:[{internalType:"address",name:"token",type:"address"},{internalType:"uint256",name:"amount",type:"uint256"}],internalType:"struct ConvexRewardPool.EarnedData[]",name:"claimable",type:"tuple[]"}],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"uint256",name:"_amount",type:"uint256"}],name:"emergencyWithdraw",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"_account",type:"address"},{internalType:"address",name:"_forwardTo",type:"address"}],name:"getReward",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"_account",type:"address"}],name:"getReward",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"spender",type:"address"},{internalType:"uint256",name:"addedValue",type:"uint256"}],name:"increaseAllowance",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"_crv",type:"address"},{internalType:"address",name:"_curveGauge",type:"address"},{internalType:"address",name:"_convexStaker",type:"address"},{internalType:"address",name:"_convexBooster",type:"address"},{internalType:"address",name:"_lptoken",type:"address"},{internalType:"uint256",name:"_poolId",type:"uint256"}],name:"initialize",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"_token",type:"address"}],name:"invalidateReward",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[],name:"maxRewards",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"name",outputs:[{internalType:"string",name:"",type:"string"}],stateMutability:"view",type:"function"},{inputs:[],name:"rewardHook",outputs:[{internalType:"address",name:"",type:"address"}],stateMutability:"view",type:"function"},{inputs:[],name:"rewardLength",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"",type:"address"}],name:"rewardMap",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"",type:"address"}],name:"rewardRedirect",outputs:[{internalType:"address",name:"",type:"address"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"",type:"address"},{internalType:"address",name:"",type:"address"}],name:"reward_integral_for",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"uint256",name:"",type:"uint256"}],name:"rewards",outputs:[{internalType:"address",name:"reward_token",type:"address"},{internalType:"uint256",name:"reward_integral",type:"uint256"},{internalType:"uint256",name:"reward_remaining",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"_hook",type:"address"}],name:"setRewardHook",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"_to",type:"address"}],name:"setRewardRedirect",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"_for",type:"address"},{internalType:"uint256",name:"_amount",type:"uint256"}],name:"stakeFor",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"nonpayable",type:"function"},{inputs:[],name:"symbol",outputs:[{internalType:"string",name:"",type:"string"}],stateMutability:"view",type:"function"},{inputs:[],name:"totalSupply",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"recipient",type:"address"},{internalType:"uint256",name:"amount",type:"uint256"}],name:"transfer",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"sender",type:"address"},{internalType:"address",name:"recipient",type:"address"},{internalType:"uint256",name:"amount",type:"uint256"}],name:"transferFrom",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"_account",type:"address"}],name:"user_checkpoint",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"uint256",name:"_amount",type:"uint256"},{internalType:"bool",name:"_claim",type:"bool"}],name:"withdraw",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"bool",name:"claim",type:"bool"}],name:"withdrawAll",outputs:[],stateMutability:"nonpayable",type:"function"}],abi$6=[{stateMutability:"nonpayable",type:"constructor",inputs:[{name:"_use_int128",type:"address[20]"},{name:"_pool_type_addresses",type:"address[20]"},{name:"_pool_types",type:"uint8[20]"},{name:"_use_rate",type:"bool[10][20]"},{name:"_factory",type:"address"},{name:"_eth_implementation",type:"address"}],outputs:[]},{stateMutability:"view",type:"function",name:"calc_token_amount",inputs:[{name:"pool",type:"address"},{name:"token",type:"address"},{name:"amounts",type:"uint256[10]"},{name:"n_coins",type:"uint256"},{name:"deposit",type:"bool"},{name:"use_underlying",type:"bool"}],outputs:[{name:"",type:"uint256"}]},{stateMutability:"view",type:"function",name:"calc_token_amount_meta",inputs:[{name:"pool",type:"address"},{name:"token",type:"address"},{name:"amounts",type:"uint256[10]"},{name:"n_coins",type:"uint256"},{name:"base_pool",type:"address"},{name:"base_token",type:"address"},{name:"deposit",type:"bool"},{name:"use_underlying",type:"bool"}],outputs:[{name:"",type:"uint256"}]},{stateMutability:"view",type:"function",name:"get_dx",inputs:[{name:"pool",type:"address"},{name:"i",type:"int128"},{name:"j",type:"int128"},{name:"dy",type:"uint256"},{name:"n_coins",type:"uint256"}],outputs:[{name:"",type:"uint256"}]},{stateMutability:"view",type:"function",name:"get_dx_underlying",inputs:[{name:"pool",type:"address"},{name:"i",type:"int128"},{name:"j",type:"int128"},{name:"dy",type:"uint256"},{name:"n_coins",type:"uint256"}],outputs:[{name:"",type:"uint256"}]},{stateMutability:"view",type:"function",name:"get_dx_meta",inputs:[{name:"pool",type:"address"},{name:"i",type:"int128"},{name:"j",type:"int128"},{name:"dy",type:"uint256"},{name:"n_coins",type:"uint256"},{name:"base_pool",type:"address"}],outputs:[{name:"",type:"uint256"}]},{stateMutability:"view",type:"function",name:"get_dx_meta_underlying",inputs:[{name:"pool",type:"address"},{name:"i",type:"int128"},{name:"j",type:"int128"},{name:"dy",type:"uint256"},{name:"n_coins",type:"uint256"},{name:"base_pool",type:"address"},{name:"base_token",type:"address"}],outputs:[{name:"",type:"uint256"}]}],abi$5=[{inputs:[{internalType:"address",name:"_stkcvxcrv",type:"address"}],stateMutability:"nonpayable",type:"constructor"},{inputs:[{internalType:"address",name:"_account",type:"address"}],name:"accountExtraRewardRates",outputs:[{internalType:"address[]",name:"tokens",type:"address[]"},{internalType:"uint256[]",name:"rates",type:"uint256[]"},{internalType:"uint256[]",name:"groups",type:"uint256[]"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"_account",type:"address"}],name:"accountRewardRates",outputs:[{internalType:"address[]",name:"tokens",type:"address[]"},{internalType:"uint256[]",name:"rates",type:"uint256[]"},{internalType:"uint256[]",name:"groups",type:"uint256[]"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"uint256",name:"_rate",type:"uint256"},{internalType:"uint256",name:"_priceOfReward",type:"uint256"},{internalType:"uint256",name:"_priceOfDeposit",type:"uint256"}],name:"apr",outputs:[{internalType:"uint256",name:"_apr",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"convexProxy",outputs:[{internalType:"address",name:"",type:"address"}],stateMutability:"view",type:"function"},{inputs:[],name:"crv",outputs:[{internalType:"address",name:"",type:"address"}],stateMutability:"view",type:"function"},{inputs:[],name:"cvx",outputs:[{internalType:"address",name:"",type:"address"}],stateMutability:"view",type:"function"},{inputs:[],name:"cvxCrvStaking",outputs:[{internalType:"address",name:"",type:"address"}],stateMutability:"view",type:"function"},{inputs:[],name:"cvxMining",outputs:[{internalType:"address",name:"",type:"address"}],stateMutability:"view",type:"function"},{inputs:[],name:"externalRewardContracts",outputs:[{internalType:"address[]",name:"rewardContracts",type:"address[]"}],stateMutability:"view",type:"function"},{inputs:[],name:"extraRewardRates",outputs:[{internalType:"address[]",name:"tokens",type:"address[]"},{internalType:"uint256[]",name:"rates",type:"uint256[]"},{internalType:"uint256[]",name:"groups",type:"uint256[]"}],stateMutability:"view",type:"function"},{inputs:[],name:"mainRewardRates",outputs:[{internalType:"address[]",name:"tokens",type:"address[]"},{internalType:"uint256[]",name:"rates",type:"uint256[]"},{internalType:"uint256[]",name:"groups",type:"uint256[]"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"_rewardContract",type:"address"}],name:"singleRewardRate",outputs:[{internalType:"address",name:"token",type:"address"},{internalType:"uint256",name:"rate",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"stkcvxcrv",outputs:[{internalType:"address",name:"",type:"address"}],stateMutability:"view",type:"function"}],abi$4=[{inputs:[{internalType:"address",name:"_ACTION_ADD_REMOVE_LIQ",type:"address"},{internalType:"address",name:"_ACTION_SWAP_PT",type:"address"},{internalType:"address",name:"_ACTION_SWAP_YT",type:"address"},{internalType:"address",name:"_ACTION_MISC",type:"address"},{internalType:"address",name:"_ACTION_CALLBACK",type:"address"}],stateMutability:"nonpayable",type:"constructor"},{inputs:[{internalType:"bytes4",name:"selector",type:"bytes4"}],name:"RouterInvalidAction",type:"error"},{anonymous:!1,inputs:[{components:[{internalType:"address",name:"facetAddress",type:"address"},{internalType:"enum IDiamondCut.FacetCutAction",name:"action",type:"uint8"},{internalType:"bytes4[]",name:"functionSelectors",type:"bytes4[]"}],indexed:!1,internalType:"struct IDiamondCut.FacetCut[]",name:"_diamondCut",type:"tuple[]"},{indexed:!1,internalType:"address",name:"_init",type:"address"},{indexed:!1,internalType:"bytes",name:"_calldata",type:"bytes"}],name:"DiamondCut",type:"event"},{stateMutability:"payable",type:"fallback"},{inputs:[{internalType:"bytes4",name:"sig",type:"bytes4"}],name:"facetAddress",outputs:[{internalType:"address",name:"",type:"address"}],stateMutability:"view",type:"function"},{inputs:[],name:"facetAddresses",outputs:[{internalType:"address[]",name:"",type:"address[]"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"facet",type:"address"}],name:"facetFunctionSelectors",outputs:[{internalType:"bytes4[]",name:"res",type:"bytes4[]"}],stateMutability:"view",type:"function"},{inputs:[],name:"facets",outputs:[{components:[{internalType:"address",name:"facetAddress",type:"address"},{internalType:"bytes4[]",name:"functionSelectors",type:"bytes4[]"}],internalType:"struct IDiamondLoupe.Facet[]",name:"facets_",type:"tuple[]"}],stateMutability:"view",type:"function"},{stateMutability:"payable",type:"receive"}],abi$3=[{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"owner",type:"address"},{indexed:!0,internalType:"int24",name:"tickLower",type:"int24"},{indexed:!0,internalType:"int24",name:"tickUpper",type:"int24"},{indexed:!1,internalType:"uint128",name:"amount",type:"uint128"},{indexed:!1,internalType:"uint256",name:"amount0",type:"uint256"},{indexed:!1,internalType:"uint256",name:"amount1",type:"uint256"}],name:"Burn",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"owner",type:"address"},{indexed:!1,internalType:"address",name:"recipient",type:"address"},{indexed:!0,internalType:"int24",name:"tickLower",type:"int24"},{indexed:!0,internalType:"int24",name:"tickUpper",type:"int24"},{indexed:!1,internalType:"uint128",name:"amount0",type:"uint128"},{indexed:!1,internalType:"uint128",name:"amount1",type:"uint128"}],name:"Collect",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"sender",type:"address"},{indexed:!0,internalType:"address",name:"recipient",type:"address"},{indexed:!1,internalType:"uint128",name:"amount0",type:"uint128"},{indexed:!1,internalType:"uint128",name:"amount1",type:"uint128"}],name:"CollectProtocol",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"sender",type:"address"},{indexed:!0,internalType:"address",name:"recipient",type:"address"},{indexed:!1,internalType:"uint256",name:"amount0",type:"uint256"},{indexed:!1,internalType:"uint256",name:"amount1",type:"uint256"},{indexed:!1,internalType:"uint256",name:"paid0",type:"uint256"},{indexed:!1,internalType:"uint256",name:"paid1",type:"uint256"}],name:"Flash",type:"event"},{anonymous:!1,inputs:[{indexed:!1,internalType:"uint16",name:"observationCardinalityNextOld",type:"uint16"},{indexed:!1,internalType:"uint16",name:"observationCardinalityNextNew",type:"uint16"}],name:"IncreaseObservationCardinalityNext",type:"event"},{anonymous:!1,inputs:[{indexed:!1,internalType:"uint160",name:"sqrtPriceX96",type:"uint160"},{indexed:!1,internalType:"int24",name:"tick",type:"int24"}],name:"Initialize",type:"event"},{anonymous:!1,inputs:[{indexed:!1,internalType:"address",name:"sender",type:"address"},{indexed:!0,internalType:"address",name:"owner",type:"address"},{indexed:!0,internalType:"int24",name:"tickLower",type:"int24"},{indexed:!0,internalType:"int24",name:"tickUpper",type:"int24"},{indexed:!1,internalType:"uint128",name:"amount",type:"uint128"},{indexed:!1,internalType:"uint256",name:"amount0",type:"uint256"},{indexed:!1,internalType:"uint256",name:"amount1",type:"uint256"}],name:"Mint",type:"event"},{anonymous:!1,inputs:[{indexed:!1,internalType:"uint8",name:"feeProtocol0Old",type:"uint8"},{indexed:!1,internalType:"uint8",name:"feeProtocol1Old",type:"uint8"},{indexed:!1,internalType:"uint8",name:"feeProtocol0New",type:"uint8"},{indexed:!1,internalType:"uint8",name:"feeProtocol1New",type:"uint8"}],name:"SetFeeProtocol",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"sender",type:"address"},{indexed:!0,internalType:"address",name:"recipient",type:"address"},{indexed:!1,internalType:"int256",name:"amount0",type:"int256"},{indexed:!1,internalType:"int256",name:"amount1",type:"int256"},{indexed:!1,internalType:"uint160",name:"sqrtPriceX96",type:"uint160"},{indexed:!1,internalType:"uint128",name:"liquidity",type:"uint128"},{indexed:!1,internalType:"int24",name:"tick",type:"int24"}],name:"Swap",type:"event"},{inputs:[{internalType:"int24",name:"tickLower",type:"int24"},{internalType:"int24",name:"tickUpper",type:"int24"},{internalType:"uint128",name:"amount",type:"uint128"}],name:"burn",outputs:[{internalType:"uint256",name:"amount0",type:"uint256"},{internalType:"uint256",name:"amount1",type:"uint256"}],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"recipient",type:"address"},{internalType:"int24",name:"tickLower",type:"int24"},{internalType:"int24",name:"tickUpper",type:"int24"},{internalType:"uint128",name:"amount0Requested",type:"uint128"},{internalType:"uint128",name:"amount1Requested",type:"uint128"}],name:"collect",outputs:[{internalType:"uint128",name:"amount0",type:"uint128"},{internalType:"uint128",name:"amount1",type:"uint128"}],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"recipient",type:"address"},{internalType:"uint128",name:"amount0Requested",type:"uint128"},{internalType:"uint128",name:"amount1Requested",type:"uint128"}],name:"collectProtocol",outputs:[{internalType:"uint128",name:"amount0",type:"uint128"},{internalType:"uint128",name:"amount1",type:"uint128"}],stateMutability:"nonpayable",type:"function"},{inputs:[],name:"factory",outputs:[{internalType:"address",name:"",type:"address"}],stateMutability:"view",type:"function"},{inputs:[],name:"fee",outputs:[{internalType:"uint24",name:"",type:"uint24"}],stateMutability:"view",type:"function"},{inputs:[],name:"feeGrowthGlobal0X128",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"feeGrowthGlobal1X128",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"recipient",type:"address"},{internalType:"uint256",name:"amount0",type:"uint256"},{internalType:"uint256",name:"amount1",type:"uint256"},{internalType:"bytes",name:"data",type:"bytes"}],name:"flash",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"uint16",name:"observationCardinalityNext",type:"uint16"}],name:"increaseObservationCardinalityNext",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"uint160",name:"sqrtPriceX96",type:"uint160"}],name:"initialize",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[],name:"liquidity",outputs:[{internalType:"uint128",name:"",type:"uint128"}],stateMutability:"view",type:"function"},{inputs:[],name:"maxLiquidityPerTick",outputs:[{internalType:"uint128",name:"",type:"uint128"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"recipient",type:"address"},{internalType:"int24",name:"tickLower",type:"int24"},{internalType:"int24",name:"tickUpper",type:"int24"},{internalType:"uint128",name:"amount",type:"uint128"},{internalType:"bytes",name:"data",type:"bytes"}],name:"mint",outputs:[{internalType:"uint256",name:"amount0",type:"uint256"},{internalType:"uint256",name:"amount1",type:"uint256"}],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"uint256",name:"index",type:"uint256"}],name:"observations",outputs:[{internalType:"uint32",name:"blockTimestamp",type:"uint32"},{internalType:"int56",name:"tickCumulative",type:"int56"},{internalType:"uint160",name:"secondsPerLiquidityCumulativeX128",type:"uint160"},{internalType:"bool",name:"initialized",type:"bool"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"uint32[]",name:"secondsAgos",type:"uint32[]"}],name:"observe",outputs:[{internalType:"int56[]",name:"tickCumulatives",type:"int56[]"},{internalType:"uint160[]",name:"secondsPerLiquidityCumulativeX128s",type:"uint160[]"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"bytes32",name:"key",type:"bytes32"}],name:"positions",outputs:[{internalType:"uint128",name:"_liquidity",type:"uint128"},{internalType:"uint256",name:"feeGrowthInside0LastX128",type:"uint256"},{internalType:"uint256",name:"feeGrowthInside1LastX128",type:"uint256"},{internalType:"uint128",name:"tokensOwed0",type:"uint128"},{internalType:"uint128",name:"tokensOwed1",type:"uint128"}],stateMutability:"view",type:"function"},{inputs:[],name:"protocolFees",outputs:[{internalType:"uint128",name:"token0",type:"uint128"},{internalType:"uint128",name:"token1",type:"uint128"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"uint8",name:"feeProtocol0",type:"uint8"},{internalType:"uint8",name:"feeProtocol1",type:"uint8"}],name:"setFeeProtocol",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[],name:"slot0",outputs:[{internalType:"uint160",name:"sqrtPriceX96",type:"uint160"},{internalType:"int24",name:"tick",type:"int24"},{internalType:"uint16",name:"observationIndex",type:"uint16"},{internalType:"uint16",name:"observationCardinality",type:"uint16"},{internalType:"uint16",name:"observationCardinalityNext",type:"uint16"},{internalType:"uint8",name:"feeProtocol",type:"uint8"},{internalType:"bool",name:"unlocked",type:"bool"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"int24",name:"tickLower",type:"int24"},{internalType:"int24",name:"tickUpper",type:"int24"}],name:"snapshotCumulativesInside",outputs:[{internalType:"int56",name:"tickCumulativeInside",type:"int56"},{internalType:"uint160",name:"secondsPerLiquidityInsideX128",type:"uint160"},{internalType:"uint32",name:"secondsInside",type:"uint32"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"recipient",type:"address"},{internalType:"bool",name:"zeroForOne",type:"bool"},{internalType:"int256",name:"amountSpecified",type:"int256"},{internalType:"uint160",name:"sqrtPriceLimitX96",type:"uint160"},{internalType:"bytes",name:"data",type:"bytes"}],name:"swap",outputs:[{internalType:"int256",name:"amount0",type:"int256"},{internalType:"int256",name:"amount1",type:"int256"}],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"int16",name:"wordPosition",type:"int16"}],name:"tickBitmap",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"tickSpacing",outputs:[{internalType:"int24",name:"",type:"int24"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"int24",name:"tick",type:"int24"}],name:"ticks",outputs:[{internalType:"uint128",name:"liquidityGross",type:"uint128"},{internalType:"int128",name:"liquidityNet",type:"int128"},{internalType:"uint256",name:"feeGrowthOutside0X128",type:"uint256"},{internalType:"uint256",name:"feeGrowthOutside1X128",type:"uint256"},{internalType:"int56",name:"tickCumulativeOutside",type:"int56"},{internalType:"uint160",name:"secondsPerLiquidityOutsideX128",type:"uint160"},{internalType:"uint32",name:"secondsOutside",type:"uint32"},{internalType:"bool",name:"initialized",type:"bool"}],stateMutability:"view",type:"function"},{inputs:[],name:"token0",outputs:[{internalType:"address",name:"",type:"address"}],stateMutability:"view",type:"function"},{inputs:[],name:"token1",outputs:[{internalType:"address",name:"",type:"address"}],stateMutability:"view",type:"function"},{inputs:[],name:"stable",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"view",type:"function"}],abi$2=[{inputs:[],name:"token0",outputs:[{internalType:"address",name:"",type:"address"}],stateMutability:"view",type:"function"},{inputs:[],name:"token1",outputs:[{internalType:"address",name:"",type:"address"}],stateMutability:"view",type:"function"},{inputs:[],name:"stable",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"view",type:"function"},{inputs:[],name:"getReserves",outputs:[{internalType:"uint256",name:"_reserve0",type:"uint256"},{internalType:"uint256",name:"_reserve1",type:"uint256"},{internalType:"uint256",name:"_blockTimestampLast",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"totalSupply",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"}],uniswapV3FactoryData={abi:abi$n},uniswapV3PoolData={abi:abi$3},uniswapV2PoolData={abi:abi$2},uniswapV3QuoterData={abi:abi$o},CurvePoolWithIntCoinsInterface=new Interface(["function coins(int128 arg0) external view returns (address)"]),CurvePoolWithIntBalancesInterface=new Interface(["function balances(int128 arg0) external view returns (uint256)"]),makeLPTokenPriceCalculatorInterface=a=>new Interface([`function calc_token_amount(uint256[${a||""}] _amounts, bool is_deposit) external view returns (uint256)`,"function coins(uint256 arg0) external view returns (address)","function calc_withdraw_one_coin(uint256 token_amount, uint256 i) external view returns (uint256)","function fee() external view returns (uint256)"]),makeLPTokenPriceCalculatorInterfaceOneArg=a=>new Interface([`function calc_token_amount(uint256[${a}] _amounts) external view returns (uint256)`,"function coins(uint256 arg0) external view returns (address)","function calc_withdraw_one_coin(uint256 token_amount, uint256 i) external view returns (uint256)","function fee() external view returns (uint256)"]),CurveGaugeInterface=new Interface(["function claimable_tokens(address addr) external view returns (uint256)"]),cvxLockerContractGetLockedAmount=new Interface(["function lockedSupply() external view returns (uint256)"]),wrappedStrakedRewardsCurveLpABI=new Interface(["function checkpoint(uint256 lpBalance, uint256 prevTimeStamp, uint256 currentTimeStamp) external returns (uint256, uint256[] memory)","function claimable(uint256 lpBalance, uint256 prevTimeStamp) external returns (uint256, uint256[] memory)"]),contractMetadataMapping={[ContractType.HinkalContract]:a=>({abi:a.hinkalABI,address:a.hinkalAddress}),[ContractType.HinkalHelperContract]:a=>({abi:a.hinkalHelperABI,address:a.hinkalHelperAddress}),[ContractType.CrossChainAccessTokenContract]:a=>({abi:a.crossChainAccessTokenABI,address:a.crossChainAccessTokenAddress}),[ContractType.MerkleTreeContract]:()=>({abi:new Interface(["function getRootHash() public view returns (uint256)"])}),[ContractType.UniswapV3FactoryContract]:()=>({abi:uniswapV3FactoryData.abi}),[ContractType.UniswapV3PoolContract]:()=>({abi:uniswapV3PoolData.abi}),[ContractType.UniswapV2PoolContract]:()=>({abi:uniswapV2PoolData.abi}),[ContractType.UniswapV3QuoterContract]:()=>({abi:uniswapV3QuoterData.abi}),[ContractType.ERC20Contract]:()=>({abi:abi$p}),[ContractType.WATokenContract]:a=>({abi:a.waTokenABI}),[ContractType.ContractWithNonces]:()=>({abi:new Interface(["function nonces(address owner) external view returns (uint)"])}),[ContractType.PermitterContract]:a=>({abi:a.permitterABI,address:a.permitterAddress}),[ContractType.CurveExternalAction]:a=>({address:a.curveExternalActionInstanceAddress,abi:a.curveExternalActionABI}),[ContractType.WrappedStakedCurveLp]:a=>({abi:a.wrappedStakedCurveLpABI}),[ContractType.WrappedStakedRewardsCurveLp]:()=>({abi:wrappedStrakedRewardsCurveLpABI}),[ContractType.CurveWrappedMainPool]:()=>({abi:abi$r}),[ContractType.CurveReadingWrapper]:()=>({abi:abi$s}),[ContractType.CurvePoolLPTokenAmountCalculator2]:()=>({abi:makeLPTokenPriceCalculatorInterface(2)}),[ContractType.CurvePoolLPTokenAmountCalculator3]:()=>({abi:makeLPTokenPriceCalculatorInterface(3)}),[ContractType.CurvePoolLPTokenAmountCalculator4]:()=>({abi:makeLPTokenPriceCalculatorInterface(4)}),[ContractType.CurvePoolLPTokenAmountCalculatorDynamic]:()=>({abi:makeLPTokenPriceCalculatorInterface()}),[ContractType.CurvePoolLPTokenAmountCalculator2OneArg]:()=>({abi:makeLPTokenPriceCalculatorInterfaceOneArg(2)}),[ContractType.CurvePoolLPTokenAmountCalculator3OneArg]:()=>({abi:makeLPTokenPriceCalculatorInterfaceOneArg(3)}),[ContractType.CurvePoolLPTokenAmountCalculator4OneArg]:()=>({abi:makeLPTokenPriceCalculatorInterfaceOneArg(4)}),[ContractType.CurvePoolWithIntCoins]:()=>({abi:CurvePoolWithIntCoinsInterface}),[ContractType.CurvePoolWithIntBalances]:()=>({abi:CurvePoolWithIntBalancesInterface}),[ContractType.OneInchExternalActionContract]:a=>({address:a.oneInchExternalActionInstanceAddress}),[ContractType.CurveGauge]:()=>({abi:CurveGaugeInterface}),[ContractType.CurveZaps]:()=>({abi:abi$6}),[ContractType.ConvexExternalAction]:a=>({address:a.convexExternalActionInstanceAddress,abi:a.convexExternalActionABI}),[ContractType.WrappedStakedConvexLp]:a=>({abi:a.wrappedStakedConvexLpABI}),[ContractType.ConvexBooster]:()=>({abi:abi$9}),[ContractType.ConvexBoosterMainnet]:()=>({abi:abi$8}),[ContractType.ConvexRewardPool]:()=>({abi:abi$7}),[ContractType.ConvexCvxLocker]:()=>({abi:cvxLockerContractGetLockedAmount}),[ContractType.ConvexStakePool]:()=>({abi:new Interface(["function totalSupply() external view returns (uint256)"])}),[ContractType.ConvexCvxCRVWrapper]:()=>({abi:new Interface(["function totalSupply() external view returns (uint256)"])}),[ContractType.ConvexCxvCrvUtillities]:()=>({abi:abi$5}),[ContractType.BeefyVault]:()=>({abi:abi$u}),[ContractType.BeefyZap]:()=>({abi:abi$b}),[ContractType.BeefyRouter]:()=>({abi:abi$d}),[ContractType.BeefyZapOneInch]:()=>({abi:abi$a}),[ContractType.BeefyStrategy]:()=>({abi:abi$c}),[ContractType.BeefyExternalAction]:a=>({abi:a.BeefyExternalActionABI,address:a.beefyExternalActionInstanceAddress}),[ContractType.BeefyStakeExternalAction]:a=>({abi:a.BeefyStakeExternalActionABI,address:a.beefyStakeExternalActionInstanceAddress}),[ContractType.WrappedStakedBeefyLp]:a=>({abi:a.WrappedStakedBeefyLpABI}),[ContractType.LidoWstEther]:()=>({abi:lidoWstEthAbi,address:lidoWstEthContractAddress}),[ContractType.LidoStEther]:()=>({abi:lidoStEthAbi,address:lidoStEthContractAddress}),[ContractType.LidoWithdrawalQueueERC721]:()=>({abi:lidoWithdrawalQueueERC721Abi,address:lidoWithdrawalQueueERC721Address}),[ContractType.PendleGeneralExternalAction]:a=>({abi:a.pendleExternalActionABI,address:a.pendleExternalActionInstanceAddress}),[ContractType.WstYtToken]:a=>({abi:a.WstYtTokenABI}),[ContractType.WstPendleLPToken]:a=>({abi:a.WstPendleLPABI}),[ContractType.PendleRouter]:a=>({abi:abi$4,address:a.pendleExternalActionInstanceAddress}),[ContractType.PoLidoNFT]:()=>({abi:poLidoNftAbi,address:poLidoNftAddress}),[ContractType.LidoStMatic]:()=>({abi:lidoStMaticAbi,address:lidoStMaticAddress}),[ContractType.LidoStakeManager]:()=>({abi:lidoStakeManagerAbi,address:lidoStakeManagerAddress}),[ContractType.VolatileVault]:a=>({abi:a.VolatileVaultABI,address:a.volatileVaultInstanceAddress}),[ContractType.VolatileTokenAction]:a=>({abi:a.VolatileTokenActionABI,address:a.volatileTokenActionInstanceAddress}),[ContractType.HinkalWrapper]:a=>({abi:a.HinkalWrapperABI,address:a.hinkalWrapperAddress}),[ContractType.HinkalWrapper2]:a=>({abi:a.HinkalWrapper2ABI??a.HinkalWrapperABI,address:a.hinkalWrapper2Address??a.hinkalWrapperAddress}),[ContractType.HinkalStakeExternalAction]:a=>({abi:a.HinkalStakeExternalActionABI,address:a.hinkalStakeExternalActionAddress}),[ContractType.HToken]:a=>({abi:a.HTokenABI})},getHinkalParameters=a=>{const{contractData:d}=networkRegistry[getNonLocalhostChainId(a)],n=JSON.stringify(d.hinkalABI),c=new Interface(n),l=c.getSighash("transact"),h=c.getSighash("transactWithExternalAction");return{hinkalInterface:c,transactMethodId:l,transactWithExternalActionMethodId:h,NewCommitment:"NewCommitment",NewCommitmentTopic:"0xc2e3bd2d00c3cf4d09298e5a0cfd317cf7a6e5bf15d467cfa805a91e1a4a221d"}},getHinkalZkMeProvider=a=>({async getAccessToken(){const n=a.getCurrentChainId();return API.getZkMeAccessToken(n)},async getUserAccounts(){return[await a.getEthereumAddress()]},async delegateTransaction(n){const c=await a.getProviderAdapter(),l={...n,chainId:Number(n.chainId),type:n.type?n.type:void 0,maxPriorityFeePerGas:n.maxPriorityFeePerGas?n.maxPriorityFeePerGas:void 0,maxFeePerGas:n.maxFeePerGas?n.maxFeePerGas:void 0};return(await c.sendTransaction(l)).hash}});async function messageListener(a,d){if(a.origin==="https://widget.zk.me"){if(a.data.method==="getUserAccounts"){const c=await d.getUserAccounts();a.source?.postMessage({id:a.data.id,message:"ok",data:c},{targetOrigin:a.origin})}if(a.data.method==="getAccessToken"){const c=await d.getAccessToken();a.source?.postMessage({id:a.data.id,message:"ok",data:c},{targetOrigin:a.origin})}if(a.data.method==="delegateTransaction"){const c=a.data.params;if(d.delegateTransaction){const l=await d.delegateTransaction(c);a.source?.postMessage({id:a.data.id,message:"ok",data:l},{targetOrigin:a.origin})}}}}const zkMeKycHandler=async(a,d,n)=>{const c=getHinkalZkMeProvider(a),l=await c.getAccessToken(),{zkChainId:h,merchId:A}=SupportedPassports[Passports.ZkMePassport].params;a.getCurrentChainId()!==h&&await a.switchNetwork(networkRegistry[h]);const O=hexlify(h);window.addEventListener("message",H=>messageListener(H,c));const Q=`${n}?mchNo=${A}&name=HinkalProtocol&chainId=${O}&accessToken=${l}`;openDefaultPassportWindow(Q,d,700,510)};let getRandomValues$1;const rnds8$1=new Uint8Array(16);function rng$1(){if(!getRandomValues$1&&(getRandomValues$1=typeof crypto<"u"&&crypto.getRandomValues&&crypto.getRandomValues.bind(crypto),!getRandomValues$1))throw new Error("crypto.getRandomValues() not supported. See https://github.com/uuidjs/uuid#getrandomvalues-not-supported");return getRandomValues$1(rnds8$1)}const byteToHex$1=[];for(let a=0;a<256;++a)byteToHex$1.push((a+256).toString(16).slice(1));function unsafeStringify(a,d=0){return byteToHex$1[a[d+0]]+byteToHex$1[a[d+1]]+byteToHex$1[a[d+2]]+byteToHex$1[a[d+3]]+"-"+byteToHex$1[a[d+4]]+byteToHex$1[a[d+5]]+"-"+byteToHex$1[a[d+6]]+byteToHex$1[a[d+7]]+"-"+byteToHex$1[a[d+8]]+byteToHex$1[a[d+9]]+"-"+byteToHex$1[a[d+10]]+byteToHex$1[a[d+11]]+byteToHex$1[a[d+12]]+byteToHex$1[a[d+13]]+byteToHex$1[a[d+14]]+byteToHex$1[a[d+15]]}const randomUUID=typeof crypto<"u"&&crypto.randomUUID&&crypto.randomUUID.bind(crypto),native={randomUUID};function v4$1(a,d,n){if(native.randomUUID&&!d&&!a)return native.randomUUID();a=a||{};const c=a.random||(a.rng||rng$1)();if(c[6]=c[6]&15|64,c[8]=c[8]&63|128,d){n=n||0;for(let l=0;l<16;++l)d[n+l]=c[l];return d}return unsafeStringify(c)}const authentoKycHandler=async(a,d,n)=>{try{const{domainName:c,type:l}=AUTHENTO,h=v4$1(),A=Date.now().toString(),T={name:c},O={content:AUTHENTO.verifyMessageText,for:c,timestamp:A,nonce:h},Q=await a.signTypedData(T,l,O),H=await a.getEthereumAddress(),ne=`${n}verify/${c}?address=${H}&ts=${A}&nonce=${h}&signature=${Q}&levelType=BASIC`;openDefaultPassportWindow(ne,d,700,510)}catch(c){console.error("authentoHelper error: ",c)}},aipriseBaseOnboardingProductionUrl="https://onboard.aiprise.com",aipriseBaseOnboardingSandboxUrl="https://onboard-sandbox.aiprise.com";var Passports=(a=>(a[a.AiPriseKyc=0]="AiPriseKyc",a[a.AiPriseKyb=1]="AiPriseKyb",a[a.BABPassport=2]="BABPassport",a[a.GalxePassport=3]="GalxePassport",a[a.ZkMePassport=4]="ZkMePassport",a[a.CoinbasePassport=5]="CoinbasePassport",a[a.AuthentoPassport=6]="AuthentoPassport",a[a.AuthentoPassportKyb=7]="AuthentoPassportKyb",a))(Passports||{});const SupportedPassports={0:{id:0,shortName:"AiPriseKyc",fullName:" AiPrice Kyc",apiURL:"",onboardURL:"",supportedChainIds:[],supportsAllChains:!0},1:{id:1,shortName:"AiPriseKyb",fullName:" AiPrice Kyb",apiURL:"",onboardURL:"",supportedChainIds:[],supportsAllChains:!0},2:{id:2,shortName:"Bab",fullName:"Bab Token",apiURL:"BabPassport",onboardURL:"https://www.binance.com/en/BABT",supportedChainIds:[chainIds.bnbMainnet]},3:{id:3,shortName:"Galxe",fullName:"Galxe Passport",apiURL:"GalxePassport",onboardURL:"https://galxe.com/passport",supportedChainIds:[chainIds.bnbMainnet]},4:{id:4,shortName:"zkMe",fullName:"zkMe Passport",apiURL:"ZkMePassport",onboardURL:"https://widget.zk.me/",customHandleKYC:(a,d,n)=>zkMeKycHandler(a,d,n),supportedChainIds:[chainIds.polygon],params:{merchId:"M2023090671844574053042402155408",zkChainId:chainIds.polygon}},5:{id:5,shortName:"coinbase",fullName:"coinbase Passport",apiURL:"coinbasePassport",onboardURL:"https://www.coinbase.com/onchain-verify",supportedChainIds:[],supportsAllChains:!0},6:{id:6,shortName:"Authento",fullName:"Authento Passport",apiURL:"AuthentoPassport",onboardURL:"https://app.authento.io/",customHandleKYC:(a,d,n)=>authentoKycHandler(a,d,n),supportedChainIds:[],supportsAllChains:!0},7:{id:7,shortName:"Authento",fullName:"Authento Passport",apiURL:"AuthentoPassport",onboardURL:"https://app.authento.io/",customHandleKYC:(a,d,n)=>authentoKycHandler(a,d,n),supportedChainIds:[],supportsAllChains:!0}},AIPRISE_KYC_TEMPLATE_ID_PROD="dbda56e5-31f5-4a37-a895-d4adca6c53fd",AIPRISE_KYB_TEMPLATE_ID_PROD="96050d8d-23c9-4908-b285-2e6dec4c020b",AUTHENTO={verifyMessageText:"Sign this message to prove your ownership of this address and proceed with the identity verification process.",domainName:"Hinkal",type:{Message:[{name:"content",type:"string"},{name:"for",type:"string"},{name:"timestamp",type:"string"},{name:"nonce",type:"string"}]}},addWeekQueryParam=(a,d)=>`${a}${d!==void 0?`?week=${d}`:""}`,API_CONFIG={ROUTES:{checkKycStatus:"/check-kyc-status",getUserSignature:"/signature-request",startUserVerification:"/start-aiprise-verification",zkMeAccessToken:"/zkMeAccessToken",getCommitmentsSnapshot:"/snapshots/commitments",getAccessTokenSnapshot:"/snapshots/access-tokens",callOdosAPI:"/OdosSwapData",callOneInchAPI:"/OneInchSwapData",getOdosPriceForToken:a=>`/getOdosPriceForToken/${a}`,getNullifiers:"/snapshots/nullifiers",axelarGasEstimate:(a,d,n,c)=>`/axelarGasEstimate/${a}/${d}/${n}/${c}`,userHasAccessToken:a=>`/user-has-access-token/${a}`,afterKycCall:"/after-kyc-callback",restoreSnapshots:"/snapshots/restore",beefyGraphAPI:"/BeefyGraphData",monitor:"/monitor",checkRisk:a=>`/check-risk/${a}`,userVerifyTransactions:"/user-verify-transactions",verificationStartDate:a=>`/verification-start-date/${a}`,userGetTransactions:(a,d)=>`/user-get-transactions/${a}/${d}`,getActiveCode:a=>`/get-active-code/${a}`,updateActiveCode:"/update-active-code",getWeeklyReferralCodes:(a,d)=>`/get-weekly-referral-codes/${a}/${d}`,getReferralCodes:a=>addWeekQueryParam(`/get-referral-codes/${a}`),getRewardsHistory:a=>`/get-rewards-history/${a}`,addReferralCode:"/update-referral-code",getLpProgram:a=>addWeekQueryParam(`/getLpProgram/${a}`),points:(a,d)=>`/points/${a}/${d}`,leaderboard:a=>`/leaderboard/${a}`,setRewardsReceivingData:"/set-user-rewards-receiving-data",getRewardsReceivingData:a=>`/get-user-rewards-receiving-data/${a}`,seasonLeaderboard:a=>`/season-leaderboard/${a}`,getUserAnonymityStakingPoints:a=>`/hinkal-points/${a}`,getLimitedAnonymityStakingPoints:a=>`/hinkal-points/limited/${a}`,getUserAnonymityStakingReferralPoints:a=>`/hinkal-referral-codes-info/${a}`,userHasPassword:a=>`/user-has-password/${a}`,userRegisterPassword:"/user-register-password",getNickname:a=>`/get-nickname/${a}`,addNickname:"/update-nickname",getLidoDefiData:"lido/defi",getLidoStats:"lido/stats",getLidoEthStats:"lido/eth-stats",getLidoDiscount:"lido/discount",getLidoRequestTime:"lido/request-time",getLidoMaticReward:"lido/matic-rewards",pendleAddLiquiditySingleToken:"pendle/addLiquiditySingleToken",pendleAddLiquiditySingleSy:"pendle/addLiquiditySingleSy",pendleAddLiquiditySinglePt:"pendle/addLiquiditySinglePt",pendleAddLiquidityDualTokenAndPt:"pendle/addLiquidityDualTokenAndPt",pendleAddLiquidityDualSyAndPt:"pendle/addLiquidityDualSyAndPt",pendleAddLiquiditySingleTokenKeepYt:"pendle/addLiquiditySingleTokenKeepYt",pendleRemoveLiquiditySingleToken:"pendle/removeLiquiditySingleToken",pendleRemoveLiquiditySingleSy:"pendle/removeLiquiditySingleSy",pendleRemoveLiquiditySinglePt:"pendle/removeLiquiditySinglePt",pendleRemoveLiquidityDualTokenAndPt:"pendle/removeLiquidityDualTokenAndPt",pendleRemoveLiquidityDualSyAndPt:"pendle/removeLiquidityDualSyAndPt",pendleMintPyFromToken:"pendle/mintPyFromToken",pendlRedeemPyToToken:"pendle/redeemPyToToken",removeLiquidityDualTokenAndPt:"pendle/removeLiquidityDualTokenAndPt",removeLiquiditySinglePt:"pendle/removeLiquiditySinglePt",pendleSwapExactTokenForYT:"pendle/swapExactTokenForYt",pendleSwapExactTokenForPt:"pendle/swapExactTokenForPt",pendleSwapExactPtForToken:"pendle/swapExactPtForToken",pendleSwapExactPtForYt:"pendle/swapExactPtForYt",pendleSwapExactYtForToken:"pendle/swapExactYtForToken",pendleSwapExactYtForPt:"pendle/swapExactYtForPt",pendleSyTokenInOut:"pendle/syTokenInOut",connextReceiveFee:(a,d)=>`/connextEstimateReceive/${a}/${d}`}},RELAYER_CONFIG={getGasEstimate:(a,d,n,c,l)=>`/gas-estimation/${a}/${c}/${d}/${n}/${l}`,getTokenPrice:"/get-token-price",getTokenPriceEth:a=>`/get-token-price-in-eth/${a}`,getTokenPrices:"/get-token-prices",TRANSACT:"/general-transact",getIdleRelay:"/get-idle-relay"},DATA_SERVER_CONFIG={getUserPoints:a=>`/user-points/${a}`},STAGING_URL="http://ec2-54-241-116-187.us-west-1.compute.amazonaws.com",PLAYGROUND_URL="http://ec2-18-144-10-166.us-west-1.compute.amazonaws.com",DATA_SERVER_URL_PRODUCTION="https://ethMainnet-data-server.hinkal.pro",DATA_SERVER_URL_LOCAL="http://localhost",DATA_SERVER_PORT=7090,SERVER_URLS={polygon:"https://polygon.server.hinkal.pro",arbMainnet:"https://arbMainnet.server.hinkal.pro",ethMainnet:"https://ethMainnet.server.hinkal.pro",bnbMainnet:"https://bnbMainnet.server.hinkal.pro",avalanche:"https://avalanche.server.hinkal.pro",optimism:"https://optimism.server.hinkal.pro",base:"https://base.server.hinkal.pro",blast:"https://blast.server.hinkal.pro",localhost:"http://localhost:7072"},STAGING_SERVER_URLS={polygon:`${STAGING_URL}:7072`,arbMainnet:`${STAGING_URL}:7070`,ethMainnet:`${STAGING_URL}:7080`,bnbMainnet:`${STAGING_URL}:7076`,avalanche:`${STAGING_URL}:7078`,optimism:`${STAGING_URL}:7082`,base:`${STAGING_URL}:7084`,blast:`${STAGING_URL}:7086`,localhost:"http://localhost:7072"},PLAYGROUND_SERVER_URLS={polygon:`${PLAYGROUND_URL}:7072`,arbMainnet:`${PLAYGROUND_URL}:7070`,ethMainnet:`${PLAYGROUND_URL}:7080`,bnbMainnet:`${PLAYGROUND_URL}:7076`,avalanche:`${PLAYGROUND_URL}:7078`,optimism:`${PLAYGROUND_URL}:7082`,base:`${PLAYGROUND_URL}:7084`,blast:`${PLAYGROUND_URL}:7086`,localhost:"http://localhost:7072"},RELAYER_URLS={polygon:"https://polygon.relayer.hinkal.pro",arbMainnet:"https://arbMainnet.relayer.hinkal.pro",ethMainnet:"https://ethMainnet.relayer.hinkal.pro",bnbMainnet:"https://bnbMainnet.relayer.hinkal.pro",avalanche:"https://avalanche.relayer.hinkal.pro",optimism:"https://optimism.relayer.hinkal.pro",base:"https://base.relayer.hinkal.pro",blast:"https://blast.relayer.hinkal.pro",localhost:"http://localhost:7073"},STAGING_RELAYER_URLS={polygon:`${STAGING_URL}:7073`,arbMainnet:`${STAGING_URL}:7071`,ethMainnet:`${STAGING_URL}:7081`,bnbMainnet:`${STAGING_URL}:7077`,avalanche:`${STAGING_URL}:7079`,optimism:`${STAGING_URL}:7083`,base:`${STAGING_URL}:7085`,blast:`${STAGING_URL}:7087`,localhost:"http://localhost:7073"},PLAYGROUND_RELAYER_URLS={polygon:`${PLAYGROUND_URL}:7073`,arbMainnet:`${PLAYGROUND_URL}:7071`,ethMainnet:`${PLAYGROUND_URL}:7081`,bnbMainnet:`${PLAYGROUND_URL}:7077`,avalanche:`${PLAYGROUND_URL}:7079`,optimism:`${PLAYGROUND_URL}:7083`,base:`${PLAYGROUND_URL}:7085`,blast:`${PLAYGROUND_URL}:7087`,localhost:"http://localhost:7073"};var src={},assets={},browserPonyfill={exports:{}};(function(a,d){var n=typeof self<"u"?self:commonjsGlobal,c=function(){function h(){this.fetch=!1,this.DOMException=n.DOMException}return h.prototype=n,new h}();(function(h){(function(A){var T={searchParams:"URLSearchParams"in h,iterable:"Symbol"in h&&"iterator"in Symbol,blob:"FileReader"in h&&"Blob"in h&&function(){try{return new Blob,!0}catch{return!1}}(),formData:"FormData"in h,arrayBuffer:"ArrayBuffer"in h};function O(J){return J&&DataView.prototype.isPrototypeOf(J)}if(T.arrayBuffer)var Q=["[object Int8Array]","[object Uint8Array]","[object Uint8ClampedArray]","[object Int16Array]","[object Uint16Array]","[object Int32Array]","[object Uint32Array]","[object Float32Array]","[object Float64Array]"],H=ArrayBuffer.isView||function(J){return J&&Q.indexOf(Object.prototype.toString.call(J))>-1};function ne(J){if(typeof J!="string"&&(J=String(J)),/[^a-z0-9\-#$%&'*+.^_`|~]/i.test(J))throw new TypeError("Invalid character in header field name");return J.toLowerCase()}function B(J){return typeof J!="string"&&(J=String(J)),J}function oe(J){var ye={next:function(){var fe=J.shift();return{done:fe===void 0,value:fe}}};return T.iterable&&(ye[Symbol.iterator]=function(){return ye}),ye}function ie(J){this.map={},J instanceof ie?J.forEach(function(ye,fe){this.append(fe,ye)},this):Array.isArray(J)?J.forEach(function(ye){this.append(ye[0],ye[1])},this):J&&Object.getOwnPropertyNames(J).forEach(function(ye){this.append(ye,J[ye])},this)}ie.prototype.append=function(J,ye){J=ne(J),ye=B(ye);var fe=this.map[J];this.map[J]=fe?fe+", "+ye:ye},ie.prototype.delete=function(J){delete this.map[ne(J)]},ie.prototype.get=function(J){return J=ne(J),this.has(J)?this.map[J]:null},ie.prototype.has=function(J){return this.map.hasOwnProperty(ne(J))},ie.prototype.set=function(J,ye){this.map[ne(J)]=B(ye)},ie.prototype.forEach=function(J,ye){for(var fe in this.map)this.map.hasOwnProperty(fe)&&J.call(ye,this.map[fe],fe,this)},ie.prototype.keys=function(){var J=[];return this.forEach(function(ye,fe){J.push(fe)}),oe(J)},ie.prototype.values=function(){var J=[];return this.forEach(function(ye){J.push(ye)}),oe(J)},ie.prototype.entries=function(){var J=[];return this.forEach(function(ye,fe){J.push([fe,ye])}),oe(J)},T.iterable&&(ie.prototype[Symbol.iterator]=ie.prototype.entries);function P(J){if(J.bodyUsed)return Promise.reject(new TypeError("Already read"));J.bodyUsed=!0}function W(J){return new Promise(function(ye,fe){J.onload=function(){ye(J.result)},J.onerror=function(){fe(J.error)}})}function U(J){var ye=new FileReader,fe=W(ye);return ye.readAsArrayBuffer(J),fe}function S(J){var ye=new FileReader,fe=W(ye);return ye.readAsText(J),fe}function M(J){for(var ye=new Uint8Array(J),fe=new Array(ye.length),G=0;G<ye.length;G++)fe[G]=String.fromCharCode(ye[G]);return fe.join("")}function ae(J){if(J.slice)return J.slice(0);var ye=new Uint8Array(J.byteLength);return ye.set(new Uint8Array(J)),ye.buffer}function Ae(){return this.bodyUsed=!1,this._initBody=function(J){this._bodyInit=J,J?typeof J=="string"?this._bodyText=J:T.blob&&Blob.prototype.isPrototypeOf(J)?this._bodyBlob=J:T.formData&&FormData.prototype.isPrototypeOf(J)?this._bodyFormData=J:T.searchParams&&URLSearchParams.prototype.isPrototypeOf(J)?this._bodyText=J.toString():T.arrayBuffer&&T.blob&&O(J)?(this._bodyArrayBuffer=ae(J.buffer),this._bodyInit=new Blob([this._bodyArrayBuffer])):T.arrayBuffer&&(ArrayBuffer.prototype.isPrototypeOf(J)||H(J))?this._bodyArrayBuffer=ae(J):this._bodyText=J=Object.prototype.toString.call(J):this._bodyText="",this.headers.get("content-type")||(typeof J=="string"?this.headers.set("content-type","text/plain;charset=UTF-8"):this._bodyBlob&&this._bodyBlob.type?this.headers.set("content-type",this._bodyBlob.type):T.searchParams&&URLSearchParams.prototype.isPrototypeOf(J)&&this.headers.set("content-type","application/x-www-form-urlencoded;charset=UTF-8"))},T.blob&&(this.blob=function(){var J=P(this);if(J)return J;if(this._bodyBlob)return Promise.resolve(this._bodyBlob);if(this._bodyArrayBuffer)return Promise.resolve(new Blob([this._bodyArrayBuffer]));if(this._bodyFormData)throw new Error("could not read FormData body as blob");return Promise.resolve(new Blob([this._bodyText]))},this.arrayBuffer=function(){return this._bodyArrayBuffer?P(this)||Promise.resolve(this._bodyArrayBuffer):this.blob().then(U)}),this.text=function(){var J=P(this);if(J)return J;if(this._bodyBlob)return S(this._bodyBlob);if(this._bodyArrayBuffer)return Promise.resolve(M(this._bodyArrayBuffer));if(this._bodyFormData)throw new Error("could not read FormData body as text");return Promise.resolve(this._bodyText)},T.formData&&(this.formData=function(){return this.text().then(F)}),this.json=function(){return this.text().then(JSON.parse)},this}var Re=["DELETE","GET","HEAD","OPTIONS","POST","PUT"];function V(J){var ye=J.toUpperCase();return Re.indexOf(ye)>-1?ye:J}function ve(J,ye){ye=ye||{};var fe=ye.body;if(J instanceof ve){if(J.bodyUsed)throw new TypeError("Already read");this.url=J.url,this.credentials=J.credentials,ye.headers||(this.headers=new ie(J.headers)),this.method=J.method,this.mode=J.mode,this.signal=J.signal,!fe&&J._bodyInit!=null&&(fe=J._bodyInit,J.bodyUsed=!0)}else this.url=String(J);if(this.credentials=ye.credentials||this.credentials||"same-origin",(ye.headers||!this.headers)&&(this.headers=new ie(ye.headers)),this.method=V(ye.method||this.method||"GET"),this.mode=ye.mode||this.mode||null,this.signal=ye.signal||this.signal,this.referrer=null,(this.method==="GET"||this.method==="HEAD")&&fe)throw new TypeError("Body not allowed for GET or HEAD requests");this._initBody(fe)}ve.prototype.clone=function(){return new ve(this,{body:this._bodyInit})};function F(J){var ye=new FormData;return J.trim().split("&").forEach(function(fe){if(fe){var G=fe.split("="),pe=G.shift().replace(/\+/g," "),Qe=G.join("=").replace(/\+/g," ");ye.append(decodeURIComponent(pe),decodeURIComponent(Qe))}}),ye}function Ee(J){var ye=new ie,fe=J.replace(/\r?\n[\t ]+/g," ");return fe.split(/\r?\n/).forEach(function(G){var pe=G.split(":"),Qe=pe.shift().trim();if(Qe){var Se=pe.join(":").trim();ye.append(Qe,Se)}}),ye}Ae.call(ve.prototype);function ge(J,ye){ye||(ye={}),this.type="default",this.status=ye.status===void 0?200:ye.status,this.ok=this.status>=200&&this.status<300,this.statusText="statusText"in ye?ye.statusText:"OK",this.headers=new ie(ye.headers),this.url=ye.url||"",this._initBody(J)}Ae.call(ge.prototype),ge.prototype.clone=function(){return new ge(this._bodyInit,{status:this.status,statusText:this.statusText,headers:new ie(this.headers),url:this.url})},ge.error=function(){var J=new ge(null,{status:0,statusText:""});return J.type="error",J};var se=[301,302,303,307,308];ge.redirect=function(J,ye){if(se.indexOf(ye)===-1)throw new RangeError("Invalid status code");return new ge(null,{status:ye,headers:{location:J}})},A.DOMException=h.DOMException;try{new A.DOMException}catch{A.DOMException=function(ye,fe){this.message=ye,this.name=fe;var G=Error(ye);this.stack=G.stack},A.DOMException.prototype=Object.create(Error.prototype),A.DOMException.prototype.constructor=A.DOMException}function X(J,ye){return new Promise(function(fe,G){var pe=new ve(J,ye);if(pe.signal&&pe.signal.aborted)return G(new A.DOMException("Aborted","AbortError"));var Qe=new XMLHttpRequest;function Se(){Qe.abort()}Qe.onload=function(){var $={status:Qe.status,statusText:Qe.statusText,headers:Ee(Qe.getAllResponseHeaders()||"")};$.url="responseURL"in Qe?Qe.responseURL:$.headers.get("X-Request-URL");var de="response"in Qe?Qe.response:Qe.responseText;fe(new ge(de,$))},Qe.onerror=function(){G(new TypeError("Network request failed"))},Qe.ontimeout=function(){G(new TypeError("Network request failed"))},Qe.onabort=function(){G(new A.DOMException("Aborted","AbortError"))},Qe.open(pe.method,pe.url,!0),pe.credentials==="include"?Qe.withCredentials=!0:pe.credentials==="omit"&&(Qe.withCredentials=!1),"responseType"in Qe&&T.blob&&(Qe.responseType="blob"),pe.headers.forEach(function($,de){Qe.setRequestHeader(de,$)}),pe.signal&&(pe.signal.addEventListener("abort",Se),Qe.onreadystatechange=function(){Qe.readyState===4&&pe.signal.removeEventListener("abort",Se)}),Qe.send(typeof pe._bodyInit>"u"?null:pe._bodyInit)})}return X.polyfill=!0,h.fetch||(h.fetch=X,h.Headers=ie,h.Request=ve,h.Response=ge),A.Headers=ie,A.Request=ve,A.Response=ge,A.fetch=X,Object.defineProperty(A,"__esModule",{value:!0}),A})({})})(c),c.fetch.ponyfill=!0,delete c.fetch.polyfill;var l=c;d=l.fetch,d.default=l.fetch,d.fetch=l.fetch,d.Headers=l.Headers,d.Request=l.Request,d.Response=l.Response,a.exports=d})(browserPonyfill,browserPonyfill.exports);var browserPonyfillExports=browserPonyfill.exports,__awaiter$f=commonjsGlobal&&commonjsGlobal.__awaiter||function(a,d,n,c){function l(h){return h instanceof n?h:new n(function(A){A(h)})}return new(n||(n=Promise))(function(h,A){function T(H){try{Q(c.next(H))}catch(ne){A(ne)}}function O(H){try{Q(c.throw(H))}catch(ne){A(ne)}}function Q(H){H.done?h(H.value):l(H.value).then(T,O)}Q((c=c.apply(a,d||[])).next())})},__importDefault$y=commonjsGlobal&&commonjsGlobal.__importDefault||function(a){return a&&a.__esModule?a:{default:a}};Object.defineProperty(assets,"__esModule",{value:!0});assets.loadAssets=void 0;const cross_fetch_1$3=__importDefault$y(browserPonyfillExports),urlMap={devnet:"https://axelar-testnet.s3.us-east-2.amazonaws.com/devnet-asset-config.json",testnet:"https://axelar-testnet.s3.us-east-2.amazonaws.com/testnet-asset-config.json",mainnet:"https://axelar-mainnet.s3.us-east-2.amazonaws.com/mainnet-asset-config.json"},assetMap={devnet:null,testnet:null,mainnet:null};function loadAssets(a){return __awaiter$f(this,void 0,void 0,function*(){return assetMap[a.environment]||(assetMap[a.environment]=yield execGet(urlMap[a.environment])),Object.values(assetMap[a.environment])})}assets.loadAssets=loadAssets;function execGet(a){return __awaiter$f(this,void 0,void 0,function*(){return(0,cross_fetch_1$3.default)(a,{method:"GET",headers:{"Content-Type":"application/json"}}).then(d=>d.json()).catch(d=>{throw console.log({error:d}),d})})}var chains={},supportedChainsList={};Object.defineProperty(supportedChainsList,"__esModule",{value:!0});supportedChainsList.CHAINS=void 0;supportedChainsList.CHAINS={TESTNET:{ACRE:"acre",ARBITRUM_SEPOLIA:"arbitrum-sepolia",AURA:"aura",AURORA:"aurora",AXELAR:"Axelarnet",AVALANCHE:"Avalanche",BINANCE:"binance",BNBCHAIN:"binance",BURNT:"burnt-2",CELESTIA:"celestia",CELO:"celo",CENTRIFUGE:"centrifuge-2",COMDEX:"comdex-2",EVMOS:"evmos",FANTOM:"Fantom",FETCH:"fetch",FILECOIN:"filecoin-2",FRAXTAL:"fraxtal",HAQQ:"haqq",HERO:"hero",HIGHRISE:"highrise",IMMUTABLE:"immutable",IMPACTHUB:"impacthub",KAVA:"kava",KUJIRA:"kujira",LINEA:"linea",MIGALOO:"migaloo",MOONBEAM:"Moonbeam",NEUTRON:"neutron",ODIN:"odin",OSMOSIS:"osmosis-7",PERSISTENCE:"persistence",POLYGON:"Polygon",POLYGONZKEVM:"polygon-zkevm",PROVENANCE:"provenance",SEPOLIA:"ethereum-sepolia",SCROLL:"scroll",SECRETSNIP:"secret-snip-2",SEI:"sei-2",TERITORI:"teritori",TERRA:"terra-3",XPLA:"xpla",BLAST_SEPOLIA:"blast-sepolia",OPTIMISM_SEPOLIA:"optimism-sepolia",MANTLE_SEPOLIA:"mantle-sepolia",BASE_SEPOLIA:"base-sepolia"},MAINNET:{ACRE:"acre",AGORIC:"agoric",ARBITRUM:"arbitrum",ARCHWAY:"archway",ASSETMANTLE:"assetmantle",AURA:"aura",AVALANCHE:"Avalanche",AXELAR:"Axelarnet",BASE:"base",BINANCE:"binance",BLAST:"blast",BNBCHAIN:"binance",CARBON:"carbon",CELESTIA:"celestia",CELO:"celo",CENTRIFUGE:"centrifuge",COMDEX:"comdex",COSMOSHUB:"cosmoshub",CRESCENT:"crescent",EMONEY:"e-money",ETHEREUM:"Ethereum",EVMOS:"evmos",FANTOM:"Fantom",FETCH:"fetch",FILECOIN:"filecoin",FRAXTAL:"fraxtal",HAQQ:"haqq",IMMUTABLE:"immutable",INJECTIVE:"injective",IXO:"ixo",JUNO:"juno",KAVA:"kava",KI:"ki",KUJIRA:"kujira",LINEA:"linea",MANTLE:"mantle",MIGALOO:"migaloo",MOONBEAM:"Moonbeam",NEUTRON:"neutron",OPTIMISM:"optimism",OSMOSIS:"osmosis",PERSISTENCE:"persistence",POLYGON:"Polygon",POLYGONZKEVM:"polygon-zkevm",PROVENANCE:"provenance",REBUS:"rebus",REGEN:"regen",SCROLL:"scroll",SECRET:"secret",SECRETSNIP:"secret-snip",SEI:"sei",SOMMELIER:"sommelier",STARGAZE:"stargaze",STRIDE:"stride",TERITORI:"teritori",TERRACLASSIC:"terra",TERRA:"terra-2",UMEE:"umee",XPLA:"xpla"}};var toString$2=Object.prototype.toString,kindOf=function(d){if(d===void 0)return"undefined";if(d===null)return"null";var n=typeof d;if(n==="boolean")return"boolean";if(n==="string")return"string";if(n==="number")return"number";if(n==="symbol")return"symbol";if(n==="function")return isGeneratorFn(d)?"generatorfunction":"function";if(isArray$1(d))return"array";if(isBuffer$1(d))return"buffer";if(isArguments(d))return"arguments";if(isDate$1(d))return"date";if(isError(d))return"error";if(isRegexp(d))return"regexp";switch(ctorName(d)){case"Symbol":return"symbol";case"Promise":return"promise";case"WeakMap":return"weakmap";case"WeakSet":return"weakset";case"Map":return"map";case"Set":return"set";case"Int8Array":return"int8array";case"Uint8Array":return"uint8array";case"Uint8ClampedArray":return"uint8clampedarray";case"Int16Array":return"int16array";case"Uint16Array":return"uint16array";case"Int32Array":return"int32array";case"Uint32Array":return"uint32array";case"Float32Array":return"float32array";case"Float64Array":return"float64array"}if(isGeneratorObj(d))return"generator";switch(n=toString$2.call(d),n){case"[object Object]":return"object";case"[object Map Iterator]":return"mapiterator";case"[object Set Iterator]":return"setiterator";case"[object String Iterator]":return"stringiterator";case"[object Array Iterator]":return"arrayiterator"}return n.slice(8,-1).toLowerCase().replace(/\s/g,"")};function ctorName(a){return typeof a.constructor=="function"?a.constructor.name:null}function isArray$1(a){return Array.isArray?Array.isArray(a):a instanceof Array}function isError(a){return a instanceof Error||typeof a.message=="string"&&a.constructor&&typeof a.constructor.stackTraceLimit=="number"}function isDate$1(a){return a instanceof Date?!0:typeof a.toDateString=="function"&&typeof a.getDate=="function"&&typeof a.setDate=="function"}function isRegexp(a){return a instanceof RegExp?!0:typeof a.flags=="string"&&typeof a.ignoreCase=="boolean"&&typeof a.multiline=="boolean"&&typeof a.global=="boolean"}function isGeneratorFn(a,d){return ctorName(a)==="GeneratorFunction"}function isGeneratorObj(a){return typeof a.throw=="function"&&typeof a.return=="function"&&typeof a.next=="function"}function isArguments(a){try{if(typeof a.length=="number"&&typeof a.callee=="function")return!0}catch(d){if(d.message.indexOf("callee")!==-1)return!0}return!1}function isBuffer$1(a){return a.constructor&&typeof a.constructor.isBuffer=="function"?a.constructor.isBuffer(a):!1}/*!
|