@defiverse/balancer-sdk-megaeth 0.1.258 → 0.1.259
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/dist/index.esm.js +2 -2
- package/dist/index.esm.js.map +1 -1
- package/dist/index.js +2 -2
- package/dist/index.js.map +1 -1
- package/dist/index.umd.js +2 -2
- package/dist/index.umd.js.map +1 -1
- package/package.json +1 -1
package/dist/index.esm.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import{defaultAbiCoder as e,Interface as t,FunctionFragment as a}from"@ethersproject/abi";import{WeiPerEther as n,Zero as s,AddressZero as i,MaxUint256 as r,MaxInt256 as o}from"@ethersproject/constants";import{BigNumber as d,parseFixed as c,formatFixed as l}from"@ethersproject/bignumber";import{getAddress as p}from"@ethersproject/address";import{Contract as u}from"@ethersproject/contracts";import{hexZeroPad as y,hexValue as b,splitSignature as f}from"@ethersproject/bytes";import{Signer as m}from"@ethersproject/abstract-signer";import h from"axios";import{mergeWith as T,cloneDeep as g,set as I,parseInt as w,keyBy as E,sum as x}from"lodash";import*as A from"@defiverse/sor";import{StablePool as S,ZERO as P,PhantomStablePool as _,StableMathBigInt as v,WeightedMaths as O,WeightedPool as B,MetaStablePool as k,LinearPool as D,SwapTypes as N,PoolFilter as C,SOR as F,parseToPoolsDict as R,getSpotPriceAfterSwapForPath as M}from"@defiverse/sor";export{PoolFilter,RouteProposer,SOR,SwapTypes,formatSequence,getTokenAddressesForSwap,parseToPoolsDict,phantomStableBPTForTokensZeroPriceImpact,queryBatchSwapTokensIn,queryBatchSwapTokensOut,stableBPTForTokensZeroPriceImpact,weightedBPTForTokensZeroPriceImpact}from"@defiverse/sor";import{Vault__factory as L,BalancerHelpers__factory as U,LidoRelayer__factory as G,WeightedPoolFactory__factory as $}from"@balancer-labs/typechain";import{JsonRpcProvider as q}from"@ethersproject/providers";import{GraphQLClient as W}from"graphql-request";import{parse as V}from"graphql";import{jsonToGraphQLQuery as H}from"json-to-graphql-query";var j,X,K,Y,J;!function(e){e[e.INIT=0]="INIT",e[e.EXACT_TOKENS_IN_FOR_BPT_OUT=1]="EXACT_TOKENS_IN_FOR_BPT_OUT",e[e.TOKEN_IN_FOR_EXACT_BPT_OUT=2]="TOKEN_IN_FOR_EXACT_BPT_OUT"}(j||(j={})),function(e){e[e.INIT=0]="INIT",e[e.COLLECT_PROTOCOL_FEES=1]="COLLECT_PROTOCOL_FEES"}(X||(X={})),function(e){e[e.EXACT_BPT_IN_FOR_ONE_TOKEN_OUT=0]="EXACT_BPT_IN_FOR_ONE_TOKEN_OUT",e[e.EXACT_BPT_IN_FOR_TOKENS_OUT=1]="EXACT_BPT_IN_FOR_TOKENS_OUT",e[e.BPT_IN_FOR_EXACT_TOKENS_OUT=2]="BPT_IN_FOR_EXACT_TOKENS_OUT"}(K||(K={}));class Z{constructor(){}}Z.joinInit=t=>e.encode(["uint256","uint256[]"],[j.INIT,t]),Z.joinCollectProtocolFees=()=>e.encode(["uint256"],[X.COLLECT_PROTOCOL_FEES]),Z.joinExactTokensInForBPTOut=(t,a)=>e.encode(["uint256","uint256[]","uint256"],[j.EXACT_TOKENS_IN_FOR_BPT_OUT,t,a]),Z.joinTokenInForExactBPTOut=(t,a)=>e.encode(["uint256","uint256","uint256"],[j.TOKEN_IN_FOR_EXACT_BPT_OUT,t,a]),Z.exitExactBPTInForOneTokenOut=(t,a)=>e.encode(["uint256","uint256","uint256"],[K.EXACT_BPT_IN_FOR_ONE_TOKEN_OUT,t,a]),Z.exitExactBPTInForTokensOut=t=>e.encode(["uint256","uint256"],[K.EXACT_BPT_IN_FOR_TOKENS_OUT,t]),Z.exitBPTInForExactTokensOut=(t,a)=>e.encode(["uint256","uint256[]","uint256"],[K.BPT_IN_FOR_EXACT_TOKENS_OUT,t,a]),function(e){e[e.INIT=0]="INIT",e[e.EXACT_TOKENS_IN_FOR_BPT_OUT=1]="EXACT_TOKENS_IN_FOR_BPT_OUT",e[e.TOKEN_IN_FOR_EXACT_BPT_OUT=2]="TOKEN_IN_FOR_EXACT_BPT_OUT",e[e.ALL_TOKENS_IN_FOR_EXACT_BPT_OUT=3]="ALL_TOKENS_IN_FOR_EXACT_BPT_OUT"}(Y||(Y={})),function(e){e[e.EXACT_BPT_IN_FOR_ONE_TOKEN_OUT=0]="EXACT_BPT_IN_FOR_ONE_TOKEN_OUT",e[e.EXACT_BPT_IN_FOR_TOKENS_OUT=1]="EXACT_BPT_IN_FOR_TOKENS_OUT",e[e.BPT_IN_FOR_EXACT_TOKENS_OUT=2]="BPT_IN_FOR_EXACT_TOKENS_OUT",e[e.MANAGEMENT_FEE_TOKENS_OUT=3]="MANAGEMENT_FEE_TOKENS_OUT"}(J||(J={}));class z{constructor(){}}z.joinInit=t=>e.encode(["uint256","uint256[]"],[Y.INIT,t]),z.joinExactTokensInForBPTOut=(t,a)=>e.encode(["uint256","uint256[]","uint256"],[Y.EXACT_TOKENS_IN_FOR_BPT_OUT,t,a]),z.joinTokenInForExactBPTOut=(t,a)=>e.encode(["uint256","uint256","uint256"],[Y.TOKEN_IN_FOR_EXACT_BPT_OUT,t,a]),z.joinAllTokensInForExactBPTOut=t=>e.encode(["uint256","uint256"],[Y.ALL_TOKENS_IN_FOR_EXACT_BPT_OUT,t]),z.exitExactBPTInForOneTokenOut=(t,a)=>e.encode(["uint256","uint256","uint256"],[J.EXACT_BPT_IN_FOR_ONE_TOKEN_OUT,t,a]),z.exitExactBPTInForTokensOut=t=>e.encode(["uint256","uint256"],[J.EXACT_BPT_IN_FOR_TOKENS_OUT,t]),z.exitBPTInForExactTokensOut=(t,a)=>e.encode(["uint256","uint256[]","uint256"],[J.BPT_IN_FOR_EXACT_TOKENS_OUT,t,a]);class Q{constructor(){}}Q.exitForManagementFees=()=>e.encode(["uint256"],[J.MANAGEMENT_FEE_TOKENS_OUT]);function ee(e){if(100==e.length)return Array(100).fill(n.div(100));const t=e.reduce(((e,t)=>e.add(t)),s);if(t.eq(n))return e;const a=[];let i=s;for(let s=0;s<e.length;s++)s<e.length-1?(a[s]=e[s].mul(n).div(t),i=i.add(a[s])):a[s]=n.sub(i);return a}const te=e=>{const t=e.reduce(((e,t)=>e.add(t)),s);return t.eq(n)};var ae,ne;!function(e){e[e.INIT=0]="INIT",e[e.EXACT_TOKENS_IN_FOR_BPT_OUT=1]="EXACT_TOKENS_IN_FOR_BPT_OUT",e[e.TOKEN_IN_FOR_EXACT_BPT_OUT=2]="TOKEN_IN_FOR_EXACT_BPT_OUT"}(ae||(ae={})),function(e){e[e.EXACT_BPT_IN_FOR_ONE_TOKEN_OUT=0]="EXACT_BPT_IN_FOR_ONE_TOKEN_OUT",e[e.BPT_IN_FOR_EXACT_TOKENS_OUT=1]="BPT_IN_FOR_EXACT_TOKENS_OUT"}(ne||(ne={}));class se{constructor(){}}se.joinInit=t=>e.encode(["uint256","uint256[]"],[ae.INIT,t]),se.joinCollectProtocolFees=()=>e.encode(["uint256"],[X.COLLECT_PROTOCOL_FEES]),se.joinExactTokensInForBPTOut=(t,a)=>e.encode(["uint256","uint256[]","uint256"],[ae.EXACT_TOKENS_IN_FOR_BPT_OUT,t,a]),se.joinTokenInForExactBPTOut=(t,a)=>e.encode(["uint256","uint256","uint256"],[ae.TOKEN_IN_FOR_EXACT_BPT_OUT,t,a]),se.exitExactBPTInForOneTokenOut=(t,a)=>e.encode(["uint256","uint256","uint256"],[ne.EXACT_BPT_IN_FOR_ONE_TOKEN_OUT,t,a]),se.exitBPTInForExactTokensOut=(t,a)=>e.encode(["uint256","uint256[]","uint256"],[ne.BPT_IN_FOR_EXACT_TOKENS_OUT,t,a]);var ie="production"===process.env.NODE_ENV,re="Invariant failed";function oe(e,t){if(!e){if(ie)throw new Error(re);var a="function"==typeof t?t():t,n=a?"".concat(re,": ").concat(a):re;throw new Error(n)}}const de=e=>({address:ce(e),specialization:le(e),nonce:pe(e)}),ce=e=>(oe(66===e.length,"Invalid poolId length"),e.slice(0,42)),le=e=>{oe(66===e.length,"Invalid poolId length");const t=parseInt(e[45]);return oe(t<3,"Invalid pool specialization"),t},pe=e=>(oe(66===e.length,"Invalid poolId length"),d.from(`0x${e.slice(46)}`));var ue;!function(e){e[e.MAINNET=1]="MAINNET",e[e.ROPSTEN=3]="ROPSTEN",e[e.RINKEBY=4]="RINKEBY",e[e.GOERLI=5]="GOERLI",e[e["GÖRLI"]=5]="GÖRLI",e[e.OPTIMISM=10]="OPTIMISM",e[e.KOVAN=42]="KOVAN",e[e.GNOSIS=100]="GNOSIS",e[e.POLYGON=137]="POLYGON",e[e.ARBITRUM=42161]="ARBITRUM",e[e.DEFIVERSE=16116]="DEFIVERSE",e[e.DEFIVERSE_TESTNET=17117]="DEFIVERSE_TESTNET",e[e.OASYS=248]="OASYS",e[e.OASYS_TESTNET=9372]="OASYS_TESTNET",e[e.MEGAETH_TESTNET=6343]="MEGAETH_TESTNET",e[e.MEGAETH_MAINNET=4326]="MEGAETH_MAINNET"}(ue||(ue={}));const ye=1e4,be=1e6,fe={IdsMap:{},Pagination:{PerPage:10,PerPool:10,PerPoolInitial:5},DelegateOwner:"0xba1ba1ba1ba1ba1ba1ba1ba1ba1ba1ba1ba1ba1b",ZeroAddress:"0x0000000000000000000000000000000000000000",DynamicFees:{Gauntlet:[]},BlockList:[""],ExcludedPoolTypes:["Element","AaveLinear","Linear","ERC4626Linear"],Stable:{AllowList:["0x06df3b2bbb68adc8b0e302443692037ed9f91b42000000000000000000000063","0xfeadd389a5c427952d8fdb8057d6c8ba1156cc56000000000000000000000066","0x9f19a375709baf0e8e35c2c5c65aca676c4c719100000000000000000000006e","0x32296969ef14eb0c6d29669c550d4a0449130230000200000000000000000080","0x1e19cf2d73a72ef1332c882f20534b6519be0276000200000000000000000112","0x06df3b2bbb68adc8b0e302443692037ed9f91b42000000000000000000000012","0xfeadd389a5c427952d8fdb8057d6c8ba1156cc5600020000000000000000001e","0x6b15a01b5d46a5321b627bd7deef1af57bc629070000000000000000000000d4","0xe08590bde837eb9b2d42aa1196469d6e08fe96ec000200000000000000000101","0xb4c23af48e79f73e3a7e36c0e54eb38e1ce1755e0002000000000000000000d3","0x9be7de742865d021c0e8fb9d64311b2c040c1ec1000200000000000000000012","0x9f19a375709baf0e8e35c2c5c65aca676c4c7191000200000000000000000022","0x1533a3278f3f9141d5f820a184ea4b017fce2382000000000000000000000016","0xf38cf113d2d4f60c36cbd95af2f48a9a0167045a00000000000000000000005b","0x0d34e5dd4d8f043557145598e4e2dc286b35fd4f000000000000000000000068","0x386b5d43ba8b97c43d4afb4cdae7877a1b295e8a000000000000000000000020","0x5028497af0c9a54ea8c6d42a054c0341b9fc616800020000000000000000007b","0x7b50775383d3d6f0215a8f290f2c9e2eebbeceb20000000000000000000000fe","0x8fd162f338b770f7e879030830cde9173367f3010000000000000000000004d8","0xd387dfd3a786e7caa06e6cf0c675352c7ffff30400000000000000000000063e","0xaf5e0b5425de1f5a630a8cb5aa9d97b8141c908d000200000000000000000366"]},Investment:{AllowList:["0x4fd63966879300cafafbb35d157dc5229278ed23000100000000000000000169","0x37a6fc079cad790e556baedda879358e076ef1b3000100000000000000000348","0xccf5575570fac94cec733a58ff91bb3d073085c70002000000000000000000af","0xe7b1d394f3b40abeaa0b64a545dbcf89da1ecb3f00010000000000000000009a","0x3b40d7d5ae25df2561944dd68b252016c4c7b2800001000000000000000000c2"]},Factories:{"0xa5bf2ddf098bb0ef6d120c98217dd6b141c74ee0":"oracleWeightedPool","0x8e9aa87e45e92bad84d5f8dd1bff34fb92637de9":"weightedPool","0xc66ba2b6595d3613ccab350c886ace23866ede24":"stablePool","0x67d27634e44793fe63c467035e31ea8635117cd4":"stablePool","0x751dfdace1ad995ff13c927f6f761c6604532c79":"stablePool","0x590e544e7ca956bb878f8c873e82e65550d67d2f":"stablePool","0x7dfdef5f355096603419239ce743bfaf1120312b":"weightedPool","0xcf0a32bbef8f064969f21f7e02328fb577382018":"weightedPool","0x2433477a10fc5d31b9513c638f19ee85caed53fd":"stablePool","0xebfd5681977e38af65a7487dc70b8221d089ccad":"stablePool","0x751a0bc0e3f75b38e01cf25bfce7ff36de1c87de":"liquidityBootstrappingPool","0x0f3e0c4218b7b0108a3643cfe9d3ec0d4f57c54e":"liquidityBootstrappingPool","0x142b9666a0a3a30477b052962dda81547e7029ab":"liquidityBootstrappingPool","0x1802953277fd955f9a254b80aa0582f193cf1d77":"liquidityBootstrappingPool","0x48767f9f868a4a7b86a90736632f6e44c2df7fa9":"managedPool","0x0f7bb7ce7b6ed9366f9b6b910adefe72dc538193":"managedPool","0xacd615b3705b9c880e4e7293f1030b34e57b4c1c":"managedPool","0xb08e16cfc07c684daa2f93c70323badb2a6cbfd2":"boostedPool","0xdae7e32adc5d490a43ccba1f0c736033f2b4efca":"boostedPool","0xc128a9954e6c874ea3d62ce62b468ba073093f25":"boostedPool","0x6c7f4d97269ece163fd08d5c2584a21e4a33934c":"boostedPool"},Stakable:{AllowList:[]},Metadata:{"0x7b50775383d3d6f0215a8f290f2c9e2eebbeceb20000000000000000000000fe":{name:"Balancer Boosted Aave USD",hasIcon:!0},"0x8fd162f338b770f7e879030830cde9173367f3010000000000000000000004d8":{name:"Balancer Boosted Aave USD",hasIcon:!0},"0xd387dfd3a786e7caa06e6cf0c675352c7ffff30400000000000000000000063e":{name:"Balancer Stable USD",hasIcon:!0}}},me={[ue.KOVAN]:{IdsMap:{staBAL:"0xd387dfd3a786e7caa06e6cf0c675352c7ffff30400000000000000000000063e",bbAaveUSD:{v1:"0x8fd162f338b770f7e879030830cde9173367f3010000000000000000000004d8",v2:""},veBAL:"0xdc2ecfdf2688f92c85064be0b929693acc6dbca6000200000000000000000701"},Pagination:{PerPage:10,PerPool:10,PerPoolInitial:5},DelegateOwner:"0xba1ba1ba1ba1ba1ba1ba1ba1ba1ba1ba1ba1ba1b",ZeroAddress:"0x0000000000000000000000000000000000000000",DynamicFees:{Gauntlet:[]},BlockList:["0x22d398c68030ef6b1c55321cca6e0cecc5c93b2f000200000000000000000678","0xca1eb8624be8e11418f629559321587197557e0c000200000000000000000682","0xa21da5768186c1bc0f56dd72aa94672d77bdf23e00020000000000000000067a","0x7f9db0d15eea32e205b7df0fa5184f4a8a905abb000200000000000000000683","0x72c5a86831f019df6fac146fc14ef60ebe0d5f2600020000000000000000067f","0x542b9f6fd4500b94d453974d8c70783ef794ff6a00020000000000000000067c","0x47f9309a8c5a68a93ac27a4cccc0e222cd3adfa2000200000000000000000684","0x3f3050a0fe84778aeff96906c9218b318f924d22000200000000000000000680","0x31e61587b5dc148ae42ae323655fb8d7af7bb86600020000000000000000067d","0x28efa7f86341aa0ad534bdfb033edb4f4ac6adf700020000000000000000067e","0x10ee90b9ff4b9a44a773107280c0ce083619286800020000000000000000067b"],ExcludedPoolTypes:["Element","AaveLinear","Linear","ERC4626Linear"],Stable:{AllowList:["0x6b15a01b5d46a5321b627bd7deef1af57bc629070000000000000000000000d4","0xe08590bde837eb9b2d42aa1196469d6e08fe96ec000200000000000000000101","0xb4c23af48e79f73e3a7e36c0e54eb38e1ce1755e0002000000000000000000d3","0x8fd162f338b770f7e879030830cde9173367f3010000000000000000000004d8","0xd387dfd3a786e7caa06e6cf0c675352c7ffff30400000000000000000000063e"]},Investment:{AllowList:["0x4fd63966879300cafafbb35d157dc5229278ed23000100000000000000000169","0x37a6fc079cad790e556baedda879358e076ef1b3000100000000000000000348"]},Factories:{"0xa5bf2ddf098bb0ef6d120c98217dd6b141c74ee0":"oracleWeightedPool","0x8e9aa87e45e92bad84d5f8dd1bff34fb92637de9":"weightedPool","0xc66ba2b6595d3613ccab350c886ace23866ede24":"stablePool","0x1b57f637ce3408f1f834b0b70f9a595b062daea7":"liquidityBootstrappingPool","0x751dfdace1ad995ff13c927f6f761c6604532c79":"stablePool","0x590e544e7ca956bb878f8c873e82e65550d67d2f":"stablePool","0xb08e16cfc07c684daa2f93c70323badb2a6cbfd2":"managedPool","0x6c7f4d97269ece163fd08d5c2584a21e4a33934c":"boostedPool","0x1f47ab83420cd1f818df9acbd6ee68341bb91592":"stablePool"},Stakable:{AllowList:["0xf767f0a3fcf1eafec2180b7de79d0c559d7e7e370001000000000000000003e3","0xdc2ecfdf2688f92c85064be0b929693acc6dbca6000200000000000000000701","0x647c1fd457b95b75d0972ff08fe01d7d7bda05df000200000000000000000001","0x8fd162f338b770f7e879030830cde9173367f3010000000000000000000004d8"]},Metadata:{"0x8fd162f338b770f7e879030830cde9173367f3010000000000000000000004d8":{name:"Balancer Boosted Aave USD",hasIcon:!1},"0xd387dfd3a786e7caa06e6cf0c675352c7ffff30400000000000000000000063e":{name:"Balancer Stable USD",hasIcon:!1}}},[ue.GOERLI]:{IdsMap:{staBAL:"0xdcdd4a3d36dec8d57594e89763d069a7e9b223e2000000000000000000000062",bbAaveUSD:{v1:"0x13acd41c585d7ebb4a9460f7c8f50be60dc080cd00000000000000000000005f",v2:"0x3d5981bdd8d3e49eb7bbdc1d2b156a3ee019c18e0000000000000000000001a7"},veBAL:"0xf8a0623ab66f985effc1c69d05f1af4badb01b00000200000000000000000060"},Pagination:{PerPage:10,PerPool:10,PerPoolInitial:5},DelegateOwner:"0xba1ba1ba1ba1ba1ba1ba1ba1ba1ba1ba1ba1ba1b",ZeroAddress:"0x0000000000000000000000000000000000000000",DynamicFees:{Gauntlet:[]},BlockList:["0x22d398c68030ef6b1c55321cca6e0cecc5c93b2f000200000000000000000678"],ExcludedPoolTypes:["Element","AaveLinear","Linear","ERC4626Linear"],Stable:{AllowList:["0x13acd41c585d7ebb4a9460f7c8f50be60dc080cd00000000000000000000005f","0xb60e46d90f2de35f7062a27d3a98749414036d5d000200000000000000000061","0xdcdd4a3d36dec8d57594e89763d069a7e9b223e2000000000000000000000062","0xc957b1acceb21707b782eb8eee2ed8e20088463d000200000000000000000076","0x3d5981bdd8d3e49eb7bbdc1d2b156a3ee019c18e0000000000000000000001a7","0x14f93df8a4e37bfdb49d2cec4789df7a010603d700000000000000000000011d","0x00a62d31b6c776b6813543bc99ff265f7222dbe100000000000000000000011e","0x0c925fce89a22e36ebd9b3c6e0262234e853d2f600000000000000000000019c"]},Investment:{AllowList:[]},Factories:{"0xa5bf2ddf098bb0ef6d120c98217dd6b141c74ee0":"oracleWeightedPool","0x8e9aa87e45e92bad84d5f8dd1bff34fb92637de9":"weightedPool","0x44afeb87c871d8fea9398a026dea2bd3a13f5769":"stablePool","0xa55f73e2281c60206ba43a3590db07b8955832be":"stablePool","0xb48cc42c45d262534e46d5965a9ac496f1b7a830":"liquidityBootstrappingPool","0xb0c726778c3ae4b3454d85557a48e8fa502bdd6a":"liquidityBootstrappingPool","0x41e9036ae350baedcc7107760a020dca3c0731ec":"boostedPool","0xb848f50141f3d4255b37ac288c25c109104f2158":"composableStablePool","0x94f68b54191f62f781fe8298a8a5fa3ed772d227":"weightedPool"},Stakable:{AllowList:["0x16faf9f73748013155b7bc116a3008b57332d1e600020000000000000000005b","0x13acd41c585d7ebb4a9460f7c8f50be60dc080cd00000000000000000000005f","0xdcdd4a3d36dec8d57594e89763d069a7e9b223e2000000000000000000000062","0x67f8fcb9d3c463da05de1392efdbb2a87f8599ea000200000000000000000059"]},Metadata:{"0x13acd41c585d7ebb4a9460f7c8f50be60dc080cd00000000000000000000005f":{name:"Balancer Boosted Aave USD",hasIcon:!1}}},[ue.MAINNET]:{IdsMap:{staBAL:"0x06df3b2bbb68adc8b0e302443692037ed9f91b42000000000000000000000063",bbAaveUSD:{v1:"0x7b50775383d3d6f0215a8f290f2c9e2eebbeceb20000000000000000000000fe",v2:"0xa13a9247ea42d743238089903570127dda72fe4400000000000000000000035d"},veBAL:"0x5c6ee304399dbdb9c8ef030ab642b10820db8f56000200000000000000000014"},Pagination:{PerPage:10,PerPool:10,PerPoolInitial:5},DelegateOwner:"0xba1ba1ba1ba1ba1ba1ba1ba1ba1ba1ba1ba1ba1b",ZeroAddress:"0x0000000000000000000000000000000000000000",DynamicFees:{Gauntlet:[]},BlockList:[""],ExcludedPoolTypes:["Element","AaveLinear","Linear","ERC4626Linear","Gyro2","Gyro3"],Stable:{AllowList:["0x06df3b2bbb68adc8b0e302443692037ed9f91b42000000000000000000000063","0xfeadd389a5c427952d8fdb8057d6c8ba1156cc56000000000000000000000066","0x9f19a375709baf0e8e35c2c5c65aca676c4c719100000000000000000000006e","0x32296969ef14eb0c6d29669c550d4a0449130230000200000000000000000080","0x1e19cf2d73a72ef1332c882f20534b6519be0276000200000000000000000112","0x7b50775383d3d6f0215a8f290f2c9e2eebbeceb20000000000000000000000fe","0x851523a36690bf267bbfec389c823072d82921a90002000000000000000001ed","0x3dd0843a028c86e0b760b1a76929d1c5ef93a2dd000200000000000000000249","0x2d011adf89f0576c9b722c28269fcb5d50c2d17900020000000000000000024d","0x178e029173417b1f9c8bc16dcec6f697bc32374600000000000000000000025d","0xf93579002dbe8046c43fefe86ec78b1112247bb80000000000000000000002bc","0xf3aeb3abba741f0eece8a1b1d2f11b85899951cb000200000000000000000351","0xa13a9247ea42d743238089903570127dda72fe4400000000000000000000035d","0x5b3240b6be3e7487d61cd1afdfc7fe4fa1d81e6400000000000000000000037b"]},Investment:{AllowList:["0xccf5575570fac94cec733a58ff91bb3d073085c70002000000000000000000af","0xe7b1d394f3b40abeaa0b64a545dbcf89da1ecb3f00010000000000000000009a","0x3b40d7d5ae25df2561944dd68b252016c4c7b2800001000000000000000000c2"]},Factories:{"0xa5bf2ddf098bb0ef6d120c98217dd6b141c74ee0":"oracleWeightedPool","0x8e9aa87e45e92bad84d5f8dd1bff34fb92637de9":"weightedPool","0xc66ba2b6595d3613ccab350c886ace23866ede24":"stablePool","0x67d27634e44793fe63c467035e31ea8635117cd4":"stablePool","0x751a0bc0e3f75b38e01cf25bfce7ff36de1c87de":"liquidityBootstrappingPool","0x0f3e0c4218b7b0108a3643cfe9d3ec0d4f57c54e":"liquidityBootstrappingPool","0x48767f9f868a4a7b86a90736632f6e44c2df7fa9":"managedPool","0xb08e16cfc07c684daa2f93c70323badb2a6cbfd2":"boostedPool","0x8df6efec5547e31b0eb7d1291b511ff8a2bf987c":"stablePool","0xf9ac7b9df2b3454e841110cce5550bd5ac6f875f":"composableStablePool","0xcc508a455f5b0073973107db6a878ddbdab957bc":"weightedPool"},Stakable:{AllowList:["0x06df3b2bbb68adc8b0e302443692037ed9f91b42000000000000000000000063","0x072f14b85add63488ddad88f855fda4a99d6ac9b000200000000000000000027","0x0b09dea16768f0799065c475be02919503cb2a3500020000000000000000001a","0x186084ff790c65088ba694df11758fae4943ee9e000200000000000000000013","0x1e19cf2d73a72ef1332c882f20534b6519be0276000200000000000000000112","0x27c9f71cc31464b906e0006d4fcbc8900f48f15f00020000000000000000010f","0x32296969ef14eb0c6d29669c550d4a0449130230000200000000000000000080","0x350196326aeaa9b98f1903fb5e8fc2686f85318c000200000000000000000084","0x3e5fa9518ea95c3e533eb377c001702a9aacaa32000200000000000000000052","0x51735bdfbfe3fc13dea8dc6502e2e958989429610002000000000000000000a0","0x5d66fff62c17d841935b60df5f07f6cf79bd0f4700020000000000000000014c","0x5f7fa48d765053f8dd85e052843e12d23e3d7bc50002000000000000000000c0","0x702605f43471183158938c1a3e5f5a359d7b31ba00020000000000000000009f","0x7b50775383d3d6f0215a8f290f2c9e2eebbeceb20000000000000000000000fe","0x7edde0cb05ed19e03a9a47cd5e53fc57fde1c80c0002000000000000000000c8","0x8f4205e1604133d1875a3e771ae7e4f2b086563900020000000000000000010e","0x90291319f1d4ea3ad4db0dd8fe9e12baf749e84500020000000000000000013c","0x96646936b91d6b9d7d0c47c496afbf3d6ec7b6f8000200000000000000000019","0x96ba9025311e2f47b840a1f68ed57a3df1ea8747000200000000000000000160","0xa02e4b3d18d4e6b8d18ac421fbc3dfff8933c40a00020000000000000000004b","0xa6f548df93de924d73be7d25dc02554c6bd66db500020000000000000000000e","0xbaeec99c90e3420ec6c1e7a769d2a856d2898e4d00020000000000000000008a","0xbf96189eee9357a95c7719f4f5047f76bde804e5000200000000000000000087","0xe2469f47ab58cf9cf59f9822e3c5de4950a41c49000200000000000000000089","0xe99481dc77691d8e2456e5f3f61c1810adfc1503000200000000000000000018","0xec60a5fef79a92c741cb74fdd6bfc340c0279b01000200000000000000000015","0xedf085f65b4f6c155e13155502ef925c9a756003000200000000000000000123","0xefaa1604e82e1b3af8430b90192c1b9e8197e377000200000000000000000021","0xf4c0dd9b82da36c07605df83c8a416f11724d88b000200000000000000000026","0xf5aaf7ee8c39b651cebf5f1f50c10631e78e0ef9000200000000000000000069","0xfeadd389a5c427952d8fdb8057d6c8ba1156cc56000000000000000000000066","0x92762b42a06dcdddc5b7362cfb01e631c4d44b40000200000000000000000182","0xde8c195aa41c11a0c4787372defbbddaa31306d2000200000000000000000181","0x17ddd9646a69c9445cd8a9f921d4cd93bf50d108000200000000000000000159","0xc45d42f801105e861e86658648e3678ad7aa70f900010000000000000000011e","0x2d344a84bac123660b021eebe4eb6f12ba25fe8600020000000000000000018a","0xb460daa847c45f1c4a41cb05bfb3b51c92e41b36000200000000000000000194","0x5122e01d819e58bb2e22528c0d68d310f0aa6fd7000200000000000000000163","0x851523a36690bf267bbfec389c823072d82921a90002000000000000000001ed","0xe8cc7e765647625b95f59c15848379d10b9ab4af0002000000000000000001de","0x85370d9e3bb111391cc89f6de344e801760461830002000000000000000001ef","0xa7ff759dbef9f3efdd1d59beee44b966acafe214000200000000000000000180","0x3f7c10701b14197e2695dec6428a2ca4cf7fc3b800020000000000000000023c","0x2d011adf89f0576c9b722c28269fcb5d50c2d17900020000000000000000024d","0x178e029173417b1f9c8bc16dcec6f697bc32374600000000000000000000025d","0xcfca23ca9ca720b6e98e3eb9b6aa0ffc4a5c08b9000200000000000000000274","0x3dd0843a028c86e0b760b1a76929d1c5ef93a2dd000200000000000000000249","0x0578292cb20a443ba1cde459c985ce14ca2bdee5000100000000000000000269","0x8eb6c82c3081bbbd45dcac5afa631aac53478b7c000100000000000000000270","0x1b65fe4881800b91d4277ba738b567cbb200a60d0002000000000000000002cc","0x99a14324cfd525a34bbc93ac7e348929909d57fd00020000000000000000030e","0x9b532ab955417afd0d012eb9f7389457cd0ea712000000000000000000000338","0x48607651416a943bf5ac71c41be1420538e78f87000200000000000000000327","0x6a5ead5433a50472642cd268e584dafa5a394490000200000000000000000366","0x0fd5663d4893ae0d579d580584806aadd2dd0b8b000200000000000000000367","0x441b8a1980f2f2e43a9397099d15cc2fe6d3625000020000000000000000035f","0xf3aeb3abba741f0eece8a1b1d2f11b85899951cb000200000000000000000351","0xa13a9247ea42d743238089903570127dda72fe4400000000000000000000035d"]},Metadata:{"0x7b50775383d3d6f0215a8f290f2c9e2eebbeceb20000000000000000000000fe":{name:"Balancer Boosted Aave USD",hasIcon:!0},"0xa13a9247ea42d743238089903570127dda72fe4400000000000000000000035d":{name:"Balancer Boosted Aave USD",hasIcon:!0},"0x06df3b2bbb68adc8b0e302443692037ed9f91b42000000000000000000000063":{name:"Balancer Stable USD",hasIcon:!0},"0x3dd0843a028c86e0b760b1a76929d1c5ef93a2dd000200000000000000000249":{name:"AuraBAL Stable Pool",hasIcon:!1}}},[ue.POLYGON]:{IdsMap:{xMatic:{v1:"0xc17636e36398602dd37bb5d1b3a9008c7629005f0002000000000000000004c4",v2:"0xb20fc01d21a50d2c734c4a1262b4404d41fa7bf000000000000000000000075c"},stMatic:{v1:"0xaf5e0b5425de1f5a630a8cb5aa9d97b8141c908d000200000000000000000366",v2:"0x8159462d255c1d24915cb51ec361f700174cd99400000000000000000000075d"},mai4:{mai4:"0x06df3b2bbb68adc8b0e302443692037ed9f91b42000000000000000000000012",maiBbaUsd:"0xb54b2125b711cd183edd3dd09433439d5396165200000000000000000000075e"}},Pagination:{PerPage:10,PerPool:10,PerPoolInitial:5},DelegateOwner:"0xba1ba1ba1ba1ba1ba1ba1ba1ba1ba1ba1ba1ba1b",ZeroAddress:"0x0000000000000000000000000000000000000000",DynamicFees:{Gauntlet:[]},BlockList:[""],ExcludedPoolTypes:["Element","AaveLinear","Linear","ERC4626Linear","Gyro2","Gyro3"],Stable:{AllowList:["0x06df3b2bbb68adc8b0e302443692037ed9f91b42000000000000000000000012","0xfeadd389a5c427952d8fdb8057d6c8ba1156cc5600020000000000000000001e","0xf38cf113d2d4f60c36cbd95af2f48a9a0167045a00000000000000000000005b","0x0d34e5dd4d8f043557145598e4e2dc286b35fd4f000000000000000000000068","0x5028497af0c9a54ea8c6d42a054c0341b9fc616800020000000000000000007b","0xaf5e0b5425de1f5a630a8cb5aa9d97b8141c908d000200000000000000000366","0xb4670d1389c758e4380c4211bcbc85342688b9c50002000000000000000003d8","0xc31a37105b94ab4efca1954a14f059af11fcd9bb000000000000000000000455","0xc17636e36398602dd37bb5d1b3a9008c7629005f0002000000000000000004c4","0xb4b22bd6cdad0ab828be6f8a4086dfa54e9b373600020000000000000000058f","0xb797adfb7b268faeaa90cadbfed464c76ee599cd0002000000000000000005ba","0x0b8319061732b34cab22445fa83b81f950e4b7ed000000000000000000000709","0xaf5e0b5425de1f5a630a8cb5aa9d97b8141c908d000200000000000000000366","0x8159462d255c1d24915cb51ec361f700174cd99400000000000000000000075d","0xb20fc01d21a50d2c734c4a1262b4404d41fa7bf000000000000000000000075c","0xb54b2125b711cd183edd3dd09433439d5396165200000000000000000000075e","0x48e6b98ef6329f8f0a30ebb8c7c960330d64808500000000000000000000075b","0xa48d164f6eb0edc68bd03b56fa59e12f24499ad10000000000000000000007c4"]},Investment:{AllowList:[""]},Factories:{"0xa5bf2ddf098bb0ef6d120c98217dd6b141c74ee0":"oracleWeightedPool","0x8e9aa87e45e92bad84d5f8dd1bff34fb92637de9":"weightedPool","0xc66ba2b6595d3613ccab350c886ace23866ede24":"stablePool","0xdae7e32adc5d490a43ccba1f0c736033f2b4efca":"stablePool","0x751a0bc0e3f75b38e01cf25bfce7ff36de1c87de":"liquidityBootstrappingPool","0x41b953164995c11c81da73d212ed8af25741b7ac":"liquidityBootstrappingPool","0x0f7bb7ce7b6ed9366f9b6b910adefe72dc538193":"managedPool","0xc128a9954e6c874ea3d62ce62b468ba073093f25":"boostedPool","0xca96c4f198d343e251b1a01f3eba061ef3da73c1":"stablePool","0x136fd06fa01ecf624c7f2b3cb15742c1339dc2c4":"composableStablePool","0x0e39c3d9b2ec765efd9c5c70bb290b1fcd8536e3":"weightedPool"},Stakable:{AllowList:["0x0297e37f1873d2dab4487aa67cd56b58e2f27875000100000000000000000002","0x03cd191f589d12b0582a99808cf19851e468e6b500010000000000000000000a","0x06df3b2bbb68adc8b0e302443692037ed9f91b42000000000000000000000012","0x0d34e5dd4d8f043557145598e4e2dc286b35fd4f000000000000000000000068","0x10f21c9bd8128a29aa785ab2de0d044dcdd79436000200000000000000000059","0x186084ff790c65088ba694df11758fae4943ee9e000200000000000000000032","0x36128d5436d2d70cab39c9af9cce146c38554ff0000100000000000000000008","0x5a6ae1fd70d04ba4a279fc219dfabc53825cb01d00020000000000000000020e","0x614b5038611729ed49e0ded154d8a5d3af9d1d9e00010000000000000000001d","0x7c9cf12d783821d5c63d8e9427af5c44bad92445000100000000000000000051","0x805ca3ccc61cc231851dee2da6aabff0a7714aa7000200000000000000000361","0xaf5e0b5425de1f5a630a8cb5aa9d97b8141c908d000200000000000000000366","0xb204bf10bc3a5435017d3db247f56da601dfe08a0002000000000000000000fe","0xc31a37105b94ab4efca1954a14f059af11fcd9bb000000000000000000000455","0xce66904b68f1f070332cbc631de7ee98b650b499000100000000000000000009","0xcf354603a9aebd2ff9f33e1b04246d8ea204ae9500020000000000000000005a","0xdb1db6e248d7bb4175f6e5a382d0a03fe3dcc813000100000000000000000035","0xea4e073c8ac859f2994c07e627178719c8002dc00002000000000000000003dc","0xfeadd389a5c427952d8fdb8057d6c8ba1156cc5600020000000000000000001e","0xc17636e36398602dd37bb5d1b3a9008c7629005f0002000000000000000004c4","0x2dbc9ab0160087ae59474fb7bed95b9e808fa6bc0001000000000000000003db","0xb797adfb7b268faeaa90cadbfed464c76ee599cd0002000000000000000005ba","0x8f9dd2064eb38e8e40f2ab67bde27c0e16ea9b080002000000000000000004ca","0x48e6b98ef6329f8f0a30ebb8c7c960330d64808500000000000000000000075b","0xb54b2125b711cd183edd3dd09433439d5396165200000000000000000000075e","0x8159462d255c1d24915cb51ec361f700174cd99400000000000000000000075d","0xb20fc01d21a50d2c734c4a1262b4404d41fa7bf000000000000000000000075c"]},Metadata:{}},[ue.ARBITRUM]:{IdsMap:{},Pagination:{PerPage:10,PerPool:10,PerPoolInitial:5},DelegateOwner:"0xba1ba1ba1ba1ba1ba1ba1ba1ba1ba1ba1ba1ba1b",ZeroAddress:"0x0000000000000000000000000000000000000000",DynamicFees:{Gauntlet:[]},BlockList:[""],ExcludedPoolTypes:["Element","AaveLinear","Linear","ERC4626Linear"],Stable:{AllowList:["0x9be7de742865d021c0e8fb9d64311b2c040c1ec1000200000000000000000012","0x1533a3278f3f9141d5f820a184ea4b017fce2382000000000000000000000016","0x386b5d43ba8b97c43d4afb4cdae7877a1b295e8a000000000000000000000020","0x0510ccf9eb3ab03c1508d3b9769e8ee2cfd6fdcf00000000000000000000005d","0x5a5884fc31948d59df2aeccca143de900d49e1a300000000000000000000006f","0xd89746affa5483627a87e55713ec1905114394950002000000000000000000bf","0x7bceaa9c5e7f4836fec3bce2d5346637c9b13970000000000000000000000102","0xfb5e6d0c1dfed2ba000fbc040ab8df3615ac329c000000000000000000000159"]},Investment:{AllowList:[""]},Factories:{"0x7dfdef5f355096603419239ce743bfaf1120312b":"weightedPool","0xcf0a32bbef8f064969f21f7e02328fb577382018":"weightedPool","0x2433477a10fc5d31b9513c638f19ee85caed53fd":"stablePool","0xebfd5681977e38af65a7487dc70b8221d089ccad":"stablePool","0x142b9666a0a3a30477b052962dda81547e7029ab":"liquidityBootstrappingPool","0x1802953277fd955f9a254b80aa0582f193cf1d77":"liquidityBootstrappingPool","0xacd615b3705b9c880e4e7293f1030b34e57b4c1c":"managedPool","0xdae7e32adc5d490a43ccba1f0c736033f2b4efca":"boostedPool","0xef44d6786b2b4d544b7850fe67ce6381626bf2d6":"stablePool","0xaeb406b0e430bf5ea2dc0b9fe62e4e53f74b3a33":"composableStablePool","0x8df6efec5547e31b0eb7d1291b511ff8a2bf987c":"weightedPool"},Stakable:{AllowList:["0x0510ccf9eb3ab03c1508d3b9769e8ee2cfd6fdcf00000000000000000000005d","0x0adeb25cb5920d4f7447af4a0428072edc2cee2200020000000000000000004a","0x1533a3278f3f9141d5f820a184ea4b017fce2382000000000000000000000016","0x1779900c7707885720d39aa741f4086886307e9e00020000000000000000004b","0x4a3a22a3e7fee0ffbb66f1c28bfac50f75546fc7000200000000000000000008","0x5a5884fc31948d59df2aeccca143de900d49e1a300000000000000000000006f","0x64541216bafffeec8ea535bb71fbc927831d0595000100000000000000000002","0x651e00ffd5ecfa7f3d4f33d62ede0a97cf62ede2000200000000000000000006","0xb28670b3e7ad27bd41fb5938136bf9e9cba90d6500020000000000000000001e","0xb340b6b1a34019853cb05b2de6ee8ffd0b89a008000100000000000000000036","0xb5b77f1ad2b520df01612399258e7787af63025d000200000000000000000010","0xc2f082d33b5b8ef3a7e3de30da54efd3114512ac000200000000000000000017","0xc61ff48f94d801c1ceface0289085197b5ec44f000020000000000000000004d","0xcc65a812ce382ab909a11e434dbf75b34f1cc59d000200000000000000000001","0xe1b40094f1446722c424c598ac412d590e0b3ffb000200000000000000000076","0xb3028ca124b80cfe6e9ca57b70ef2f0ccc41ebd40002000000000000000000ba","0x7bceaa9c5e7f4836fec3bce2d5346637c9b13970000000000000000000000102","0xfb5e6d0c1dfed2ba000fbc040ab8df3615ac329c000000000000000000000159","0x178e029173417b1f9c8bc16dcec6f697bc323746000200000000000000000158"]},Metadata:{}},[ue.GNOSIS]:{IdsMap:{},Pagination:{PerPage:10,PerPool:10,PerPoolInitial:5},DelegateOwner:"0xba1ba1ba1ba1ba1ba1ba1ba1ba1ba1ba1ba1ba1b",ZeroAddress:"0x0000000000000000000000000000000000000000",DynamicFees:{Gauntlet:[]},BlockList:[""],ExcludedPoolTypes:["Element","AaveLinear","Linear","ERC4626Linear","FX","Gyro2","Gyro3","GyroE","HighAmpComposableStable"],Stable:{AllowList:["0x11884da90fb4221b3aa288a7741c51ec4fc43b2f000000000000000000000004","0x707b7d4a1bae449d546dcab869256591bbb3d70b000000000000000000000000"]},Investment:{AllowList:[]},Factories:{},Stakable:{AllowList:[]},Metadata:{}},[ue.DEFIVERSE]:{IdsMap:{veBAL:""},Pagination:{PerPage:10,PerPool:10,PerPoolInitial:5},DelegateOwner:"0xba1ba1ba1ba1ba1ba1ba1ba1ba1ba1ba1ba1ba1b",ZeroAddress:"0x0000000000000000000000000000000000000000",DynamicFees:{Gauntlet:[]},BlockList:[""],ExcludedPoolTypes:["Element","AaveLinear","EulerLinear","Linear","ERC4626Linear","FX","Gyro2","Gyro3","GyroE","HighAmpComposableStable"],Stable:{AllowList:[]},Investment:{AllowList:[]},Factories:{"0xd01ad3085fb3e1fbb2541b5b3326b1f47b189747":"composableStablePool","0xd1920dd25e4998b0d7cc8de7f12beaf9796c7475":"weightedPool","0xe952b0409e6768e270a671ebbc5b8605a7c5a0b8":"weightedPool","0xc04ce4fe0f4013814ea1a4b0577d3678d5a7c91c":"weightedPool","0x9f9e8668ee128c365365f7d1963b4891034fb513":"weightedPool"},Stakable:{AllowList:[]},Metadata:{}},[ue.DEFIVERSE_TESTNET]:{IdsMap:{veBAL:""},Pagination:{PerPage:10,PerPool:10,PerPoolInitial:5},DelegateOwner:"0xba1ba1ba1ba1ba1ba1ba1ba1ba1ba1ba1ba1ba1b",ZeroAddress:"0x0000000000000000000000000000000000000000",DynamicFees:{Gauntlet:[]},BlockList:[""],ExcludedPoolTypes:["Element","AaveLinear","EulerLinear","Linear","ERC4626Linear","FX","Gyro2","Gyro3","GyroE","HighAmpComposableStable"],Stable:{AllowList:[]},Investment:{AllowList:[]},Factories:{"0xab6bac0f5f4c7c166c5234b528a1cd46fbcb9f4b":"weightedPool","0x58e6f99bb65378f47a520fc9630bd711f2cf3dc7":"composableStablePool","0x48494fa9ead46ee8e3fcb66487a6dbbd34dcafe3":"weightedPool"},Stakable:{AllowList:[]},Metadata:{}},[ue.OASYS]:{IdsMap:{veBAL:""},Pagination:{PerPage:10,PerPool:10,PerPoolInitial:5},DelegateOwner:"0xba1ba1ba1ba1ba1ba1ba1ba1ba1ba1ba1ba1ba1b",ZeroAddress:"0x0000000000000000000000000000000000000000",DynamicFees:{Gauntlet:[]},BlockList:[""],ExcludedPoolTypes:["Element","AaveLinear","EulerLinear","Linear","ERC4626Linear","FX","Gyro2","Gyro3","GyroE","HighAmpComposableStable"],Stable:{AllowList:[]},Investment:{AllowList:[]},Factories:{"0x061e05853fb45d3d41ec227459ec98bb25580ad3":"composableStablePool","0x4ef0b4827ce3d5fecbc2c6ab80ee81dbf9631d37":"weightedPool","0x5737600b98e7f1cf98daca2a36bca22c974370b0":"weightedPool"},Stakable:{AllowList:[]},Metadata:{}},[ue.OASYS_TESTNET]:{IdsMap:{veBAL:""},Pagination:{PerPage:10,PerPool:10,PerPoolInitial:5},DelegateOwner:"0xba1ba1ba1ba1ba1ba1ba1ba1ba1ba1ba1ba1ba1b",ZeroAddress:"0x0000000000000000000000000000000000000000",DynamicFees:{Gauntlet:[]},BlockList:["0x950f31e8a327a49ae4443284d0137f3b74858474000200000000000000000030"],ExcludedPoolTypes:["Element","AaveLinear","EulerLinear","Linear","ERC4626Linear","FX","Gyro2","Gyro3","GyroE","HighAmpComposableStable"],Stable:{AllowList:["0xeaac5ae5255407cf933dfcf2b0d3eb4f5dc042cd000000000000000000000035","0x34936c3e61371e9ebd1dcd580b23a52c26080b70000000000000000000000036"]},Investment:{AllowList:[]},Factories:{"0xfda8fa80dd77a99bf71becfce47077859e689898":"composableStablePool","0xd2d7f457b9749b6a0a637685a65681f03116125c":"weightedPool"},Stakable:{AllowList:["0x4e66d5f08e81979bd5951c93839bc97265681975000200000000000000000000","0x66180966de2a4180183d7e5dffd76e13b364efe2000200000000000000000001","0xe5b67bf732b7f96127454126069f94f939914d62000200000000000000000002","0x82bfc330a92789c02b3ce2daed3ca889b1a112b7000100000000000000000003","0x0b014863ba970f50b0ea2ad7d57151994b7cac21000100000000000000000004","0x4a54649fb507ee0bf3ad2e1661516b5700c520ab000100000000000000000005","0x981401f589c5768a41d3c4d1a39e84a86f11ad9f000200000000000000000006"]},Metadata:{}},[ue.MEGAETH_TESTNET]:{IdsMap:{veBAL:""},Pagination:{PerPage:10,PerPool:10,PerPoolInitial:5},DelegateOwner:"0xba1ba1ba1ba1ba1ba1ba1ba1ba1ba1ba1ba1ba1b",ZeroAddress:"0x0000000000000000000000000000000000000000",DynamicFees:{Gauntlet:[]},BlockList:["0x9e4427ee0219fc03f0dd627ce10e454696f7fb40000200000000000000000001","0x8cdbb24239e73bdf46cdf5a0440ac68558002a78000200000000000000000000","0x1a90c0ea30da68eab7d2a692edb73eee1cf34689000200000000000000000005"],ExcludedPoolTypes:["Element","AaveLinear","EulerLinear","Linear","ERC4626Linear","FX","Gyro2","Gyro3","GyroE","HighAmpComposableStable"],Stable:{AllowList:[]},Investment:{AllowList:[]},Factories:{"0x84f75879c0ac87eafaf4f1e3e1a2372caab5273b":"weightedPool"},Stakable:{AllowList:[]},Metadata:{}},[ue.MEGAETH_MAINNET]:{IdsMap:{veBAL:""},Pagination:{PerPage:10,PerPool:10,PerPoolInitial:5},DelegateOwner:"0xba1ba1ba1ba1ba1ba1ba1ba1ba1ba1ba1ba1ba1b",ZeroAddress:"0x0000000000000000000000000000000000000000",DynamicFees:{Gauntlet:[]},BlockList:[],ExcludedPoolTypes:["Element","AaveLinear","EulerLinear","Linear","ERC4626Linear","FX","Gyro2","Gyro3","GyroE","HighAmpComposableStable"],Stable:{AllowList:[]},Investment:{AllowList:[]},Factories:{"0x083904d9006abda7950337c7215ecfc028855f0b":"weightedPool"},Stakable:{AllowList:[]},Metadata:{}}};function he(e){return me[e]?me[e]:fe}var Te=[{inputs:[{internalType:"contract IStaticAToken",name:"_waToken",type:"address"}],stateMutability:"nonpayable",type:"constructor"},{inputs:[],name:"getRate",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"waToken",outputs:[{internalType:"contract IStaticAToken",name:"",type:"address"}],stateMutability:"view",type:"function"}];class ge{static async getRate(e,t){const a=new u(e,Te,t);return(await a.getRate()).toString()}}const Ie=e=>e[0].map(((t,a)=>e.map((e=>e[a]))));class we{constructor(e){this.ETH=i,this.isETH=e=>we.isEqual(e,this.ETH),this.isWETH=e=>we.isEqual(e,this.WETH),this.translateToERC20=e=>this.isETH(e)?this.WETH:e,this.WETH=p(e)}sortTokens(e,...t){t.forEach((t=>oe(e.length===t.length,"array length mismatch")));const a=e.map(this.translateToERC20),n=Ie([a,...t]).sort((([e],[t])=>((e,t)=>e.toLowerCase()>t.toLowerCase()?1:-1)(e,t))),[s,...i]=Ie(n);return[e.includes(this.ETH)?s.map((e=>this.isWETH(e)?this.ETH:e)):s,...i]}}we.isEqual=(e,t)=>p(e)===p(t);const Ee={"000":"ADD_OVERFLOW","001":"SUB_OVERFLOW","002":"SUB_UNDERFLOW","003":"MUL_OVERFLOW","004":"ZERO_DIVISION","005":"DIV_INTERNAL","006":"X_OUT_OF_BOUNDS","007":"Y_OUT_OF_BOUNDS","008":"PRODUCT_OUT_OF_BOUNDS","009":"INVALID_EXPONENT",100:"OUT_OF_BOUNDS",101:"UNSORTED_ARRAY",102:"UNSORTED_TOKENS",103:"INPUT_LENGTH_MISMATCH",104:"ZERO_TOKEN",200:"MIN_TOKENS",201:"MAX_TOKENS",202:"MAX_SWAP_FEE_PERCENTAGE",203:"MIN_SWAP_FEE_PERCENTAGE",204:"MINIMUM_BPT",205:"CALLER_NOT_VAULT",206:"UNINITIALIZED",207:"BPT_IN_MAX_AMOUNT",208:"BPT_OUT_MIN_AMOUNT",209:"EXPIRED_PERMIT",210:"NOT_TWO_TOKENS",211:"DISABLED",300:"MIN_AMP",301:"MAX_AMP",302:"MIN_WEIGHT",303:"MAX_STABLE_TOKENS",304:"MAX_IN_RATIO",305:"MAX_OUT_RATIO",306:"MIN_BPT_IN_FOR_TOKEN_OUT",307:"MAX_OUT_BPT_FOR_TOKEN_IN",308:"NORMALIZED_WEIGHT_INVARIANT",309:"INVALID_TOKEN",310:"UNHANDLED_JOIN_KIND",311:"ZERO_INVARIANT",312:"ORACLE_INVALID_SECONDS_QUERY",313:"ORACLE_NOT_INITIALIZED",314:"ORACLE_QUERY_TOO_OLD",315:"ORACLE_INVALID_INDEX",316:"ORACLE_BAD_SECS",317:"AMP_END_TIME_TOO_CLOSE",318:"AMP_ONGOING_UPDATE",319:"AMP_RATE_TOO_HIGH",320:"AMP_NO_ONGOING_UPDATE",321:"STABLE_INVARIANT_DIDNT_CONVERGE",322:"STABLE_GET_BALANCE_DIDNT_CONVERGE",323:"RELAYER_NOT_CONTRACT",324:"BASE_POOL_RELAYER_NOT_CALLED",325:"REBALANCING_RELAYER_REENTERED",326:"GRADUAL_UPDATE_TIME_TRAVEL",327:"SWAPS_DISABLED",328:"CALLER_IS_NOT_LBP_OWNER",329:"PRICE_RATE_OVERFLOW",330:"INVALID_JOIN_EXIT_KIND_WHILE_SWAPS_DISABLED",331:"WEIGHT_CHANGE_TOO_FAST",332:"LOWER_GREATER_THAN_UPPER_TARGET",333:"UPPER_TARGET_TOO_HIGH",334:"UNHANDLED_BY_LINEAR_POOL",335:"OUT_OF_TARGET_RANGE",336:"UNHANDLED_EXIT_KIND ",337:"UNAUTHORIZED_EXIT",338:"MAX_MANAGEMENT_SWAP_FEE_PERCENTAGE",339:"UNHANDLED_BY_MANAGED_POOL",340:"UNHANDLED_BY_PHANTOM_POOL",341:"TOKEN_DOES_NOT_HAVE_RATE_PROVIDER",342:"INVALID_INITIALIZATION",343:"OUT_OF_NEW_TARGET_RANGE",344:"UNAUTHORIZED_OPERATION",345:"UNINITIALIZED_POOL_CONTROLLER",400:"REENTRANCY",401:"SENDER_NOT_ALLOWED",402:"PAUSED",403:"PAUSE_WINDOW_EXPIRED",404:"MAX_PAUSE_WINDOW_DURATION",405:"MAX_BUFFER_PERIOD_DURATION",406:"INSUFFICIENT_BALANCE",407:"INSUFFICIENT_ALLOWANCE",408:"ERC20_TRANSFER_FROM_ZERO_ADDRESS",409:"ERC20_TRANSFER_TO_ZERO_ADDRESS",410:"ERC20_MINT_TO_ZERO_ADDRESS",411:"ERC20_BURN_FROM_ZERO_ADDRESS",412:"ERC20_APPROVE_FROM_ZERO_ADDRESS",413:"ERC20_APPROVE_TO_ZERO_ADDRESS",414:"ERC20_TRANSFER_EXCEEDS_ALLOWANCE",415:"ERC20_DECREASED_ALLOWANCE_BELOW_ZERO",416:"ERC20_TRANSFER_EXCEEDS_BALANCE",417:"ERC20_BURN_EXCEEDS_ALLOWANCE",418:"SAFE_ERC20_CALL_FAILED",419:"ADDRESS_INSUFFICIENT_BALANCE",420:"ADDRESS_CANNOT_SEND_VALUE",421:"SAFE_CAST_VALUE_CANT_FIT_INT256",422:"GRANT_SENDER_NOT_ADMIN",423:"REVOKE_SENDER_NOT_ADMIN",424:"RENOUNCE_SENDER_NOT_ALLOWED",425:"BUFFER_PERIOD_EXPIRED",426:"CALLER_IS_NOT_OWNER",427:"NEW_OWNER_IS_ZERO",428:"CODE_DEPLOYMENT_FAILED",429:"CALL_TO_NON_CONTRACT",430:"LOW_LEVEL_CALL_FAILED",431:"NOT_PAUSED",432:"ADDRESS_ALREADY_ALLOWLISTED",433:"ADDRESS_NOT_ALLOWLISTED",434:"ERC20_BURN_EXCEEDS_BALANCE",500:"INVALID_POOL_ID",501:"CALLER_NOT_POOL",502:"SENDER_NOT_ASSET_MANAGER",503:"USER_DOESNT_ALLOW_RELAYER",504:"INVALID_SIGNATURE",505:"EXIT_BELOW_MIN",506:"JOIN_ABOVE_MAX",507:"SWAP_LIMIT",508:"SWAP_DEADLINE",509:"CANNOT_SWAP_SAME_TOKEN",510:"UNKNOWN_AMOUNT_IN_FIRST_SWAP",511:"MALCONSTRUCTED_MULTIHOP_SWAP",512:"INTERNAL_BALANCE_OVERFLOW",513:"INSUFFICIENT_INTERNAL_BALANCE",514:"INVALID_ETH_INTERNAL_BALANCE",515:"INVALID_POST_LOAN_BALANCE",516:"INSUFFICIENT_ETH",517:"UNALLOCATED_ETH",518:"ETH_TRANSFER",519:"CANNOT_USE_ETH_SENTINEL",520:"TOKENS_MISMATCH",521:"TOKEN_NOT_REGISTERED",522:"TOKEN_ALREADY_REGISTERED",523:"TOKENS_ALREADY_SET",524:"TOKENS_LENGTH_MUST_BE_2",525:"NONZERO_TOKEN_BALANCE",526:"BALANCE_TOTAL_OVERFLOW",527:"POOL_NO_TOKENS",528:"INSUFFICIENT_FLASH_LOAN_BALANCE",600:"SWAP_FEE_PERCENTAGE_TOO_HIGH",601:"FLASH_LOAN_FEE_PERCENTAGE_TOO_HIGH",602:"INSUFFICIENT_FLASH_LOAN_FEE_AMOUNT"};class xe{constructor(){}}async function Ae(e){if("string"==typeof e)return e;if(m.isSigner(e))return e.getAddress();if(e.address)return e.address;throw new Error("Could not read account address")}var Se;xe.isErrorCode=e=>{if(!e.includes("BAL#"))return!1;const t=e.replace("BAL#","");return Object.keys(Ee).includes(t)},xe.parseErrorCode=e=>{if(!e.includes("BAL#"))throw new Error("Error code not found");const t=e.replace("BAL#",""),a=Ee[t];if(!a)throw new Error("Error code not found");return a},xe.tryParseErrorCode=e=>{try{return xe.parseErrorCode(e)}catch{return e}},xe.isBalancerError=e=>Object.values(Ee).includes(e),xe.encodeError=e=>{const t=Object.entries(Ee).find((([,t])=>t===e));if(!t)throw Error("Error message not found");return`BAL#${t[0]}`},function(e){e.JoinPool="JoinPool",e.ExitPool="ExitPool",e.Swap="Swap",e.BatchSwap="BatchSwap",e.SetRelayerApproval="SetRelayerApproval"}(Se||(Se={}));class Pe{constructor(){}}Pe.encodeCalldataAuthorization=(e,t,a)=>{const n=y(b(t),32).slice(2),{v:s,r:i,s:r}=f(a);return`${e}${n}${y(b(s),32).slice(2)}${i.slice(2)}${r.slice(2)}`},Pe.signJoinAuthorization=(e,t,a,n,s,i)=>Pe.signAuthorizationFor(Se.JoinPool,e,t,a,n,s,i),Pe.signExitAuthorization=(e,t,a,n,s,i)=>Pe.signAuthorizationFor(Se.ExitPool,e,t,a,n,s,i),Pe.signSwapAuthorization=(e,t,a,n,s,i)=>Pe.signAuthorizationFor(Se.Swap,e,t,a,n,s,i),Pe.signBatchSwapAuthorization=(e,t,a,n,s,i)=>Pe.signAuthorizationFor(Se.BatchSwap,e,t,a,n,s,i),Pe.signSetRelayerApprovalAuthorization=(e,t,a,n,s,i)=>Pe.signAuthorizationFor(Se.SetRelayerApproval,e,t,a,n,s,i),Pe.signAuthorizationFor=async(e,t,a,n,s,i=r,o)=>{const{chainId:d}=await t.provider.getNetwork();if(!o){const e=await a.getAddress();o=await t.getNextNonce(e)}const c={name:"Balancer V2 Vault",version:"1",chainId:d,verifyingContract:t.address},l={[e]:[{name:"calldata",type:"bytes"},{name:"sender",type:"address"},{name:"nonce",type:"uint256"},{name:"deadline",type:"uint256"}]},p={calldata:s,sender:await Ae(n),nonce:o.toString(),deadline:i.toString()};return a._signTypedData(c,l,p)};class _e{constructor(){}}_e.signSetMinterApproval=async(e,t,a,n,s=r,i)=>{const{chainId:o}=await e.provider.getNetwork();if(!i){const t=await n.getAddress();i=await e.getNextNonce(t)}const c={name:"Balancer Minter",version:"1",chainId:o,verifyingContract:e.address},l={minter:await Ae(t),approval:a,nonce:i.toString(),deadline:s.toString()},p=await n._signTypedData(c,{SetMinterApproval:[{name:"minter",type:"address"},{name:"approval",type:"bool"},{name:"nonce",type:"uint256"},{name:"deadline",type:"uint256"}]},l);return{...f(p),deadline:d.from(s)}};const ve=async(e,t,a,n,s=r,i)=>{const{chainId:o}=await e.provider.getNetwork(),c=await t.getAddress();i||(i=await e.nonces(c));const l={name:await e.name(),version:"1",chainId:o,verifyingContract:e.address},p={owner:c,spender:await Ae(a),value:n,nonce:i,deadline:s},u=await t._signTypedData(l,{Permit:[{name:"owner",type:"address"},{name:"spender",type:"address"},{name:"value",type:"uint256"},{name:"nonce",type:"uint256"},{name:"deadline",type:"uint256"}]},p);return{...f(u),deadline:d.from(s),nonce:d.from(i)}},Oe=BigInt(0),Be=BigInt(1),ke=BigInt("1000000000000000000"),De=(e,t)=>{if(!e)throw new Error(t)};function Ne(e){const t=BigInt(18)-e;return ke*BigInt(10)**t}function Ce(e,t){return Re.mulDownFixed(e,t)}function Fe(e,t){const a=new Array(e.length);for(let n=0;n<e.length;++n)a[n]=Re.mulDownFixed(e[n],t[n]);return a}class Re{static add(e,t){const a=e+t;return De(t>=0&&a>=e||t<0&&a<e,"Errors.ADD_OVERFLOW"),a}static sub(e,t){De(t<=e,"Errors.SUB_OVERFLOW");return e-t}static max(e,t){return e>=t?e:t}static min(e,t){return e<t?e:t}static mul(e,t){const a=e*t;return De(e==Oe||a/e==t,"Errors.MUL_OVERFLOW"),a}static div(e,t,a){return a?this.divUp(e,t):this.divDown(e,t)}static divDown(e,t){return De(t!=Oe,"Errors.ZERO_DIVISION"),e/t}static divUp(e,t){return De(t!=Oe,"Errors.ZERO_DIVISION"),e==Oe?Oe:Be+(e-Be)/t}static mulUpFixed(e,t){const a=e*t;return De(e==Oe||a/e==t,"Errors.MUL_OVERFLOW"),a==Oe?Oe:(a-Be)/ke+Be}static divDownFixed(e,t){if(De(t!=Oe,"Errors.ZERO_DIVISION"),e==Oe)return Oe;return e*ke/t}static divUpFixed(e,t){if(De(t!=Oe,"Errors.ZERO_DIVISION"),e==Oe)return Oe;{const a=e*ke;return De(a/e==ke,"Errors.DIV_INTERNAL"),(a-Be)/t+Be}}static powUpFixed(e,t){const a=Me.pow(e,t),n=this.add(this.mulUpFixed(a,this.MAX_POW_RELATIVE_ERROR),Be);return this.add(a,n)}static complementFixed(e){return e<ke?ke-e:Oe}static mulDownFixed(e,t){const a=e*t;return De(e==Oe||a/e==t,"Errors.MUL_OVERFLOW"),a/ke}}Re.MAX_POW_RELATIVE_ERROR=BigInt(1e4);class Me{static pow(e,t){if(t===Oe)return this.ONE_18;if(e==Oe)return Oe;De(e<BigInt("57896044618658097711785492504343953926634992332820282019728792003956564819968"),"Errors.X_OUT_OF_BOUNDS");const a=e;De(t<this.MILD_EXPONENT_BOUND,"Errors.Y_OUT_OF_BOUNDS");const n=t;let s;if(this.LN_36_LOWER_BOUND<a&&a<this.LN_36_UPPER_BOUND){const e=this._ln_36(a);s=e/this.ONE_18*n+e%this.ONE_18*n/this.ONE_18}else s=this._ln(a)*n;return s/=this.ONE_18,De(this.MIN_NATURAL_EXPONENT<=s&&s<=this.MAX_NATURAL_EXPONENT,"Errors.PRODUCT_OUT_OF_BOUNDS"),this.exp(s)}static exp(e){if(De(e>=this.MIN_NATURAL_EXPONENT&&e<=this.MAX_NATURAL_EXPONENT,"Errors.INVALID_EXPONENT"),e<0)return this.ONE_18*this.ONE_18/this.exp(BigInt(-1)*e);let t;e>=this.x0?(e-=this.x0,t=this.a0):e>=this.x1?(e-=this.x1,t=this.a1):t=BigInt(1),e*=BigInt(100);let a=this.ONE_20;e>=this.x2&&(e-=this.x2,a=a*this.a2/this.ONE_20),e>=this.x3&&(e-=this.x3,a=a*this.a3/this.ONE_20),e>=this.x4&&(e-=this.x4,a=a*this.a4/this.ONE_20),e>=this.x5&&(e-=this.x5,a=a*this.a5/this.ONE_20),e>=this.x6&&(e-=this.x6,a=a*this.a6/this.ONE_20),e>=this.x7&&(e-=this.x7,a=a*this.a7/this.ONE_20),e>=this.x8&&(e-=this.x8,a=a*this.a8/this.ONE_20),e>=this.x9&&(e-=this.x9,a=a*this.a9/this.ONE_20);let n,s=this.ONE_20;return n=e,s+=n,n=n*e/this.ONE_20/BigInt(2),s+=n,n=n*e/this.ONE_20/BigInt(3),s+=n,n=n*e/this.ONE_20/BigInt(4),s+=n,n=n*e/this.ONE_20/BigInt(5),s+=n,n=n*e/this.ONE_20/BigInt(6),s+=n,n=n*e/this.ONE_20/BigInt(7),s+=n,n=n*e/this.ONE_20/BigInt(8),s+=n,n=n*e/this.ONE_20/BigInt(9),s+=n,n=n*e/this.ONE_20/BigInt(10),s+=n,n=n*e/this.ONE_20/BigInt(11),s+=n,n=n*e/this.ONE_20/BigInt(12),s+=n,a*s/this.ONE_20*t/BigInt(100)}static _ln_36(e){const t=((e*=this.ONE_18)-this.ONE_36)*this.ONE_36/(e+this.ONE_36),a=t*t/this.ONE_36;let n=t,s=n;return n=n*a/this.ONE_36,s+=n/BigInt(3),n=n*a/this.ONE_36,s+=n/BigInt(5),n=n*a/this.ONE_36,s+=n/BigInt(7),n=n*a/this.ONE_36,s+=n/BigInt(9),n=n*a/this.ONE_36,s+=n/BigInt(11),n=n*a/this.ONE_36,s+=n/BigInt(13),n=n*a/this.ONE_36,s+=n/BigInt(15),s*BigInt(2)}static _ln(e){if(e<this.ONE_18)return BigInt(-1)*this._ln(this.ONE_18*this.ONE_18/e);let t=Oe;e>=this.a0*this.ONE_18&&(e/=this.a0,t+=this.x0),e>=this.a1*this.ONE_18&&(e/=this.a1,t+=this.x1),t*=BigInt(100),(e*=BigInt(100))>=this.a2&&(e=e*this.ONE_20/this.a2,t+=this.x2),e>=this.a3&&(e=e*this.ONE_20/this.a3,t+=this.x3),e>=this.a4&&(e=e*this.ONE_20/this.a4,t+=this.x4),e>=this.a5&&(e=e*this.ONE_20/this.a5,t+=this.x5),e>=this.a6&&(e=e*this.ONE_20/this.a6,t+=this.x6),e>=this.a7&&(e=e*this.ONE_20/this.a7,t+=this.x7),e>=this.a8&&(e=e*this.ONE_20/this.a8,t+=this.x8),e>=this.a9&&(e=e*this.ONE_20/this.a9,t+=this.x9),e>=this.a10&&(e=e*this.ONE_20/this.a10,t+=this.x10),e>=this.a11&&(e=e*this.ONE_20/this.a11,t+=this.x11);const a=(e-this.ONE_20)*this.ONE_20/(e+this.ONE_20),n=a*a/this.ONE_20;let s=a,i=s;return s=s*n/this.ONE_20,i+=s/BigInt(3),s=s*n/this.ONE_20,i+=s/BigInt(5),s=s*n/this.ONE_20,i+=s/BigInt(7),s=s*n/this.ONE_20,i+=s/BigInt(9),s=s*n/this.ONE_20,i+=s/BigInt(11),i*=BigInt(2),(t+i)/BigInt(100)}}Me.ONE_18=BigInt("1000000000000000000"),Me.ONE_20=BigInt("100000000000000000000"),Me.ONE_36=BigInt("1000000000000000000000000000000000000"),Me.MAX_NATURAL_EXPONENT=BigInt("130000000000000000000"),Me.MIN_NATURAL_EXPONENT=BigInt("-41000000000000000000"),Me.LN_36_LOWER_BOUND=BigInt(Me.ONE_18)-BigInt("100000000000000000"),Me.LN_36_UPPER_BOUND=BigInt(Me.ONE_18)+BigInt("100000000000000000"),Me.MILD_EXPONENT_BOUND=BigInt(2)**BigInt(254)/Me.ONE_20,Me.x0=BigInt("128000000000000000000"),Me.a0=BigInt("38877084059945950922200000000000000000000000000000000000"),Me.x1=BigInt("64000000000000000000"),Me.a1=BigInt("6235149080811616882910000000"),Me.x2=BigInt("3200000000000000000000"),Me.a2=BigInt("7896296018268069516100000000000000"),Me.x3=BigInt("1600000000000000000000"),Me.a3=BigInt("888611052050787263676000000"),Me.x4=BigInt("800000000000000000000"),Me.a4=BigInt("298095798704172827474000"),Me.x5=BigInt("400000000000000000000"),Me.a5=BigInt("5459815003314423907810"),Me.x6=BigInt("200000000000000000000"),Me.a6=BigInt("738905609893065022723"),Me.x7=BigInt("100000000000000000000"),Me.a7=BigInt("271828182845904523536"),Me.x8=BigInt("50000000000000000000"),Me.a8=BigInt("164872127070012814685"),Me.x9=BigInt("25000000000000000000"),Me.a9=BigInt("128402541668774148407"),Me.x10=BigInt("12500000000000000000"),Me.a10=BigInt("113314845306682631683"),Me.x11=BigInt("6250000000000000000"),Me.a11=BigInt("106449445891785942956");const Le=(e,t)=>{let a=e.tokens.map((e=>e.address)),n=e.tokens.map((e=>e.decimals?e.decimals.toString():void 0)),s=n.map((e=>Ne(BigInt(e)))),i=e.tokens.map((e=>c(e.balance,e.decimals).toString())),r=e.tokens.map((e=>c(e.balance,18).toString())),o=e.tokens.map((e=>e.weight?c(e.weight,18).toString():void 0)),d=e.tokens.map((e=>e.priceRate?c(e.priceRate,18).toString():void 0));if(t){const e=new we(t);let c;[a,n,c,i,r,o,d]=e.sortTokens(a,n,s,i,r,o,d),s=c.map(BigInt)}const l=e.amp?c(e.amp,3).toString():void 0,p=c(e.totalShares,18).toString(),u=c(e.swapFee,18).toString(),y=[],b=[],f=[],m=a.indexOf(e.address);return-1!==m&&s.forEach(((e,t)=>{t!==m&&(y.push(s[t]),b.push(a[t]),f.push(i[t]))})),{parsedTokens:a,parsedDecimals:n,parsedBalances:i,parsedWeights:o,parsedPriceRates:d,parsedAmp:l,parsedTotalShares:p,parsedSwapFee:u,upScaledBalances:r,scalingFactors:s,scalingFactorsWithoutBpt:y,parsedTokensWithoutBpt:b,parsedBalancesWithoutBpt:f,bptIndex:m}},Ue={Popular:{Symbols:["WBTC","DAI","USDC","BAL","AAVE","WETH"]},Addresses:{nativeAsset:"0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE",wNativeAsset:"0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE",WETH:"0x0000000000000000000000000000000000000000",BAL:"0x0000000000000000000000000000000000000000"}},Ge={[ue.KOVAN]:{Popular:{Symbols:["WBTC","DAI","USDC","BAL","AAVE","WETH"]},Addresses:{nativeAsset:"0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE",wNativeAsset:"0xdFCeA9088c8A88A76FF74892C1457C17dfeef9C1",WETH:"0xdFCeA9088c8A88A76FF74892C1457C17dfeef9C1",BAL:"0xcb355677E36f390Ccc4a5d4bEADFbF1Eb2071c81",bbaUSD:"0x8fd162f338B770F7E879030830cDe9173367f301"},PriceChainMap:{"0xdfcea9088c8a88a76ff74892c1457c17dfeef9c1":"0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2","0x1c8e3bcb3378a443cc591f154c5ce0ebb4da9648":"0x2260fac5e5542a773aa44fbcfedf7c193bc2c599","0x8f4bebf498cc624a0797fe64114a6ff169eee078":"0xbc396689893d065f41bc2c6ecbee5e0085233447","0xaf9ac3235be96ed496db7969f60d354fe5e426b0":"0x9f8f72aa9304c8b593d555f12ef6589cc3a579a2","0xcb355677e36f390ccc4a5d4beadfbf1eb2071c81":"0xba100000625a3754423978a60c9317c58a424e3d","0xc2569dd7d0fd715b054fbf16e75b001e5c0c1115":"0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48","0x04df6e4121c27713ed22341e7c7df330f56f289b":"0x6b175474e89094c44da98b954eedeac495271d0f","0x4803bb90d18a1cb7a2187344fe4feb0e07878d05":"0xae7ab96520de3a18e5e111b5eaab095312d7fe84","0xff795577d9ac8bd7d90ee22b6c1703490b6512fd":"0x6b175474e89094c44da98b954eedeac495271d0f","0xe22da380ee6b445bb8273c81944adeb6e8450422":"0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48","0x13512979ade267ab5100878e2e0f485b568328a4":"0xdac17f958d2ee523a2206206994597c13d831ec7","0xa387b91e393cfb9356a460370842bc8dbb2f29af":"0x7f39c581f595b53c5cb19bd0b3f8da6c935e2ca0"}},[ue.GOERLI]:{Popular:{Symbols:["WBTC","DAI","USDC","BAL","USDT","WETH"]},Addresses:{nativeAsset:"0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE",wNativeAsset:"0xdFCeA9088c8A88A76FF74892C1457C17dfeef9C1",WETH:"0xdFCeA9088c8A88A76FF74892C1457C17dfeef9C1",BAL:"0xfA8449189744799aD2AcE7e0EBAC8BB7575eff47",bbaUSD:"0x13ACD41C585d7EbB4a9460f7C8f50BE60DC080Cd"},PriceChainMap:{"0xdfcea9088c8a88a76ff74892c1457c17dfeef9c1":"0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2","0x37f03a12241e9fd3658ad6777d289c3fb8512bc9":"0x2260fac5e5542a773aa44fbcfedf7c193bc2c599","0xfa8449189744799ad2ace7e0ebac8bb7575eff47":"0xba100000625a3754423978a60c9317c58a424e3d","0xe0c9275e44ea80ef17579d33c55136b7da269aeb":"0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48","0x8c9e6c40d3402480ace624730524facc5482798c":"0x6b175474e89094c44da98b954eedeac495271d0f","0x1f1f156e0317167c11aa412e3d1435ea29dc3cce":"0xdac17f958d2ee523a2206206994597c13d831ec7","0x4cb1892fddf14f772b2e39e299f44b2e5da90d04":"0x3ed3b47dd13ec9a98b44e6204a523e766b225811","0x811151066392fd641fe74a9b55a712670572d161":"0xbcca60bb61934080951369a648fb03df4f96263c","0x89534a24450081aa267c79b07411e9617d984052":"0x028171bca77440897b824ca71d1c56cac55b68a3","0x829f35cebbcd47d3c120793c12f7a232c903138b":"0x956f47f50a910163d8bf957cf5846d573e7f87ca","0xff386a3d08f80ac38c77930d173fa56c6286dc8b":"0x6810e776880c02933d47db1b9fc05908e5386b96"}},[ue.MAINNET]:{Popular:{Symbols:["WBTC","DAI","USDC","BAL","AAVE","WETH"]},Addresses:{nativeAsset:"0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE",wNativeAsset:"0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2",WETH:"0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2",BAL:"0xba100000625a3754423978a60c9317c58a424e3d",bbaUSD:"0x7B50775383d3D6f0215A8F290f2C9e2eEBBEceb2",bbaUSDv2:"0xA13a9247ea42D743238089903570127DdA72fE44"}},[ue.POLYGON]:{Popular:{Symbols:["WBTC","DAI","USDC","BAL","AAVE","WETH"]},Addresses:{nativeAsset:"0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE",wNativeAsset:"0x0d500B1d8E8eF31E21C99d1Db9A6444d3ADf1270",WETH:"0x7ceb23fd6bc0add59e62ac25578270cff1b9f619",BAL:"0x9a71012b13ca4d3d0cdc72a177df3ef03b0e76a3"}},[ue.ARBITRUM]:{Popular:{Symbols:["WBTC","DAI","USDC","BAL","AAVE","WETH"]},Addresses:{nativeAsset:"0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE",wNativeAsset:"0x82aF49447D8a07e3bd95BD0d56f35241523fBab1",WETH:"0x82aF49447D8a07e3bd95BD0d56f35241523fBab1",BAL:"0x040d1EdC9569d4Bab2D15287Dc5A4F10F56a56B8"}},[ue.GNOSIS]:{Popular:{Symbols:["xDAI","WXDAI","WETH","BAL"]},Addresses:{nativeAsset:"0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE",wNativeAsset:"0xe91d153e0b41518a2ce8dd3d7944fa863463a97d",WETH:"0x6A023CCd1ff6F2045C3309768eAd9E68F978f6e1",BAL:"0x7eF541E2a22058048904fE5744f9c7E4C57AF717"}},[ue.DEFIVERSE]:{Popular:{Symbols:["GDT","BAL","WETH","OAS"]},Addresses:{nativeAsset:"0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE",wNativeAsset:"0x5a89E11Cb554E00c2f51C4bb7F05bc7Ab0Fa6351",WETH:"0x5a89E11Cb554E00c2f51C4bb7F05bc7Ab0Fa6351",BAL:"",GDT:""},PriceChainMap:{"0x5a89e11cb554e00c2f51c4bb7f05bc7ab0fa6351":"0x5a89e11cb554e00c2f51c4bb7f05bc7ab0fa6351","0x7c6b91d9be155a6db01f749217d76ff02a7227f2":"0x7c6b91d9be155a6db01f749217d76ff02a7227f2"}},[ue.DEFIVERSE_TESTNET]:{Popular:{Symbols:["WETH","OAS"]},Addresses:{nativeAsset:"0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE",wNativeAsset:"0x6B382742b07AAbBA58c38d792B5d7CBAaB246e99",WETH:"0x6B382742b07AAbBA58c38d792B5d7CBAaB246e99",BAL:"",GDT:""},PriceChainMap:{}},[ue.OASYS]:{Popular:{Symbols:["GDT","BAL","WETH","OAS"]},Addresses:{nativeAsset:"0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE",wNativeAsset:"0x5200000000000000000000000000000000000001",WETH:"0x5200000000000000000000000000000000000001",BAL:"0x2B726256AdD04e65403cEf6679A2f2dfF7DDe9F9",GDT:""},PriceChainMap:{"0x5200000000000000000000000000000000000001":"0x5a89e11cb554e00c2f51c4bb7f05bc7ab0fa6351"}},[ue.OASYS_TESTNET]:{Popular:{Symbols:["GDT","BAL","WETH","OAS"]},Addresses:{nativeAsset:"0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE",wNativeAsset:"0x5200000000000000000000000000000000000001",WETH:"0x5200000000000000000000000000000000000001",BAL:"0x9288F664FEFc9f374A53C4307BD3c8F91e83f466",GDT:"0x9288F664FEFc9f374A53C4307BD3c8F91e83f466"},PriceChainMap:{"0x5200000000000000000000000000000000000001":"0x5a89e11cb554e00c2f51c4bb7f05bc7ab0fa6351"}},[ue.MEGAETH_TESTNET]:{Popular:{Symbols:["WETH","ETH"]},Addresses:{nativeAsset:"0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE",wNativeAsset:"0xAba76Cdc5910F6627856EB75Bcce0171376999C7",WETH:"0xAba76Cdc5910F6627856EB75Bcce0171376999C7",BAL:"0x8D23f3B57cF4B5Ed734574738Fa0Fc2C5b5e37d1"},PriceChainMap:{}},[ue.MEGAETH_MAINNET]:{Popular:{Symbols:["WETH","ETH"]},Addresses:{nativeAsset:"0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE",wNativeAsset:"0x4200000000000000000000000000000000000006",WETH:"0x4200000000000000000000000000000000000006",BAL:"0x3EeaBC1632B47b0da9681674E67160d65811E7AB"},PriceChainMap:{}}};var $e,qe,We,Ve,He,je,Xe;!function(e){e.Id="id",e.Address="address",e.PoolId="poolId"}($e||($e={})),function(e){e.Balance="balance",e.Id="id",e.PoolId="poolId",e.UserAddress="userAddress"}(qe||(qe={})),function(e){e.Id="id",e.UserAddress="user",e.GaugeId="gauge",e.Balance="balance"}(We||(We={})),function(e){e[e.GeneralPool=0]="GeneralPool",e[e.MinimalSwapInfoPool=1]="MinimalSwapInfoPool",e[e.TwoTokenPool=2]="TwoTokenPool"}(Ve||(Ve={})),function(e){e[e.DepositInternal=0]="DepositInternal",e[e.WithdrawInternal=1]="WithdrawInternal",e[e.TransferInternal=2]="TransferInternal",e[e.TransferExternal=3]="TransferExternal"}(He||(He={})),function(e){e[e.Withdraw=0]="Withdraw",e[e.Deposit=1]="Deposit",e[e.Update=2]="Update"}(je||(je={})),function(e){e.Weighted="Weighted",e.Investment="Investment",e.Stable="Stable",e.HighAmpComposableStable="HighAmpComposableStable",e.ComposableStable="ComposableStable",e.MetaStable="MetaStable",e.StablePhantom="StablePhantom",e.LiquidityBootstrapping="LiquidityBootstrapping",e.AaveLinear="AaveLinear",e.Linear="Linear",e.EulerLinear="EulerLinear",e.ERC4626Linear="ERC4626Linear",e.Element="Element",e.Gyro2="Gyro2",e.Gyro3="Gyro3",e.Managed="Managed"}(Xe||(Xe={}));let Ke=!1,Ye=!1;const Je={debug:1,default:2,info:2,warning:3,error:4,off:5};let Ze=Je.default,ze=null;const Qe=function(){try{const e=[];if(["NFD","NFC","NFKD","NFKC"].forEach((t=>{try{if("test"!=="test".normalize(t))throw new Error("bad normalize")}catch(a){e.push(t)}})),e.length)throw new Error("missing "+e.join(", "));if(String.fromCharCode(233).normalize("NFD")!==String.fromCharCode(101,769))throw new Error("broken implementation")}catch(e){return e.message}return null}();var et,tt;!function(e){e.DEBUG="DEBUG",e.INFO="INFO",e.WARNING="WARNING",e.ERROR="ERROR",e.OFF="OFF"}(et||(et={})),function(e){e.UNKNOWN_ERROR="UNKNOWN_ERROR",e.NOT_IMPLEMENTED="NOT_IMPLEMENTED",e.UNSUPPORTED_OPERATION="UNSUPPORTED_OPERATION",e.NETWORK_ERROR="NETWORK_ERROR",e.SERVER_ERROR="SERVER_ERROR",e.TIMEOUT="TIMEOUT",e.BUFFER_OVERRUN="BUFFER_OVERRUN",e.NUMERIC_FAULT="NUMERIC_FAULT",e.MISSING_NEW="MISSING_NEW",e.INVALID_ARGUMENT="INVALID_ARGUMENT",e.MISSING_ARGUMENT="MISSING_ARGUMENT",e.UNEXPECTED_ARGUMENT="UNEXPECTED_ARGUMENT",e.CALL_EXCEPTION="CALL_EXCEPTION",e.INSUFFICIENT_FUNDS="INSUFFICIENT_FUNDS",e.NONCE_EXPIRED="NONCE_EXPIRED",e.REPLACEMENT_UNDERPRICED="REPLACEMENT_UNDERPRICED",e.UNPREDICTABLE_GAS_LIMIT="UNPREDICTABLE_GAS_LIMIT",e.TRANSACTION_REPLACED="TRANSACTION_REPLACED",e.ACTION_REJECTED="ACTION_REJECTED"}(tt||(tt={}));const at="0123456789abcdef";class nt{constructor(e){Object.defineProperty(this,"version",{enumerable:!0,value:e,writable:!1})}_log(e,t){const a=e.toLowerCase();null==Je[a]&&this.throwArgumentError("invalid log level name","logLevel",e),Ze>Je[a]||console.log.apply(console,t)}debug(...e){this._log(nt.levels.DEBUG,e)}info(...e){this._log(nt.levels.INFO,e)}warn(...e){this._log(nt.levels.WARNING,e)}makeError(e,t,a){if(Ye)return this.makeError("censored error",t,{});t||(t=nt.errors.UNKNOWN_ERROR),a||(a={});const n=[];Object.keys(a).forEach((e=>{const t=a[e];try{if(t instanceof Uint8Array){let a="";for(let e=0;e<t.length;e++)a+=at[t[e]>>4],a+=at[15&t[e]];n.push(e+"=Uint8Array(0x"+a+")")}else n.push(e+"="+JSON.stringify(t))}catch(t){n.push(e+"="+JSON.stringify(a[e].toString()))}})),n.push(`code=${t}`),n.push(`version=${this.version}`);const s=e;let i="";switch(t){case tt.NUMERIC_FAULT:{i="NUMERIC_FAULT";const t=e;switch(t){case"overflow":case"underflow":case"division-by-zero":i+="-"+t;break;case"negative-power":case"negative-width":i+="-unsupported";break;case"unbound-bitwise-result":i+="-unbound-result"}break}case tt.CALL_EXCEPTION:case tt.INSUFFICIENT_FUNDS:case tt.MISSING_NEW:case tt.NONCE_EXPIRED:case tt.REPLACEMENT_UNDERPRICED:case tt.TRANSACTION_REPLACED:case tt.UNPREDICTABLE_GAS_LIMIT:i=t}i&&(e+=" [ See: https://links.ethers.org/v5-errors-"+i+" ]"),n.length&&(e+=" ("+n.join(", ")+")");const r=new Error(e);return r.reason=s,r.code=t,Object.keys(a).forEach((function(e){r[e]=a[e]})),r}throwError(e,t,a){throw this.makeError(e,t,a)}throwArgumentError(e,t,a){return this.throwError(e,nt.errors.INVALID_ARGUMENT,{argument:t,value:a})}assert(e,t,a,n){e||this.throwError(t,a,n)}assertArgument(e,t,a,n){e||this.throwArgumentError(t,a,n)}checkNormalize(e){Qe&&this.throwError("platform missing String.prototype.normalize",nt.errors.UNSUPPORTED_OPERATION,{operation:"String.prototype.normalize",form:Qe})}checkSafeUint53(e,t){"number"==typeof e&&(null==t&&(t="value not safe"),(e<0||e>=9007199254740991)&&this.throwError(t,nt.errors.NUMERIC_FAULT,{operation:"checkSafeInteger",fault:"out-of-safe-range",value:e}),e%1&&this.throwError(t,nt.errors.NUMERIC_FAULT,{operation:"checkSafeInteger",fault:"non-integer",value:e}))}checkArgumentCount(e,t,a){a=a?": "+a:"",e<t&&this.throwError("missing argument"+a,nt.errors.MISSING_ARGUMENT,{count:e,expectedCount:t}),e>t&&this.throwError("too many arguments"+a,nt.errors.UNEXPECTED_ARGUMENT,{count:e,expectedCount:t})}checkNew(e,t){e!==Object&&null!=e||this.throwError("missing new",nt.errors.MISSING_NEW,{name:t.name})}checkAbstract(e,t){e===t?this.throwError("cannot instantiate abstract class "+JSON.stringify(t.name)+" directly; use a sub-class",nt.errors.UNSUPPORTED_OPERATION,{name:e.name,operation:"new"}):e!==Object&&null!=e||this.throwError("missing new",nt.errors.MISSING_NEW,{name:t.name})}static globalLogger(){return ze||(ze=new nt("logger/5.7.0")),ze}static setCensorship(e,t){if(!e&&t&&this.globalLogger().throwError("cannot permanently disable censorship",nt.errors.UNSUPPORTED_OPERATION,{operation:"setCensorship"}),Ke){if(!e)return;this.globalLogger().throwError("error censorship permanent",nt.errors.UNSUPPORTED_OPERATION,{operation:"setCensorship"})}Ye=!!e,Ke=!!t}static setLogLevel(e){const t=Je[e.toLowerCase()];null!=t?Ze=t:nt.globalLogger().warn("invalid log level - "+e)}static from(e){return new nt(e)}}nt.errors=tt,nt.levels=et;const st=new nt("units/5.7.0"),it=["wei","kwei","mwei","gwei","szabo","finney","ether"];function rt(e,t){if("string"==typeof t){const e=it.indexOf(t);-1!==e&&(t=3*e)}return l(e,null!=t?t:18)}function ot(e,t){if("string"!=typeof e&&st.throwArgumentError("value must be a string","value",e),"string"==typeof t){const e=it.indexOf(t);-1!==e&&(t=3*e)}return c(e,null!=t?t:18)}const dt={[ue.MAINNET]:{waUSDT:"0xf8fd466f12e236f4c96f7cce6c79eadb819abf58",waUSDC:"0xd093fa4fb80d09bb30817fdcd442d4d02ed3e5de",waDAI:"0x02d60b84491589974263d922d9cc7a3152618ef6"},[ue.POLYGON]:{wamDAI:"0xee029120c72b0607344f35b17cdd90025e647b00",wamUSDC:"0x221836a597948dce8f3568e044ff123108acc42a",wamUSDT:"0x19c60a251e525fa88cd6f3768416a8024e98fc19"}},ct={...dt[ue.MAINNET],...dt[ue.POLYGON]},lt={[ue.MAINNET]:{[dt[ue.MAINNET].waUSDT]:{aToken:"0x3ed3b47dd13ec9a98b44e6204a523e766b225811",underlying:"0xdac17f958d2ee523a2206206994597c13d831ec7"},[dt[ue.MAINNET].waUSDC]:{aToken:"0xbcca60bb61934080951369a648fb03df4f96263c",underlying:"0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48"},[dt[ue.MAINNET].waDAI]:{aToken:"0x028171bca77440897b824ca71d1c56cac55b68a3",underlying:"0x6b175474e89094c44da98b954eedeac495271d0f"}},[ue.POLYGON]:{[dt[ue.POLYGON].wamUSDT]:{aToken:"0x60d55f02a771d515e077c9c2403a1ef324885cec",underlying:"0xc2132d05d31c914a87c6611c10748aeb04b58e8f"},[dt[ue.POLYGON].wamUSDC]:{aToken:"0x1a13f4ca1d028320a707d99520abfefca3998b7f",underlying:"0x2791bca1f2de4661ed88a30c99a7a9449aa84174"},[dt[ue.POLYGON].wamDAI]:{aToken:"0x27f8d03b3a2196956ed754badc28d73be8830a6e",underlying:"0x8f3cf7ad23cd3cadbd9735aff958023239c6a063"}}},pt={[ue.MAINNET]:Object.values(lt[ue.MAINNET]).map((e=>e.aToken)),[ue.POLYGON]:Object.values(lt[ue.POLYGON]).map((e=>e.aToken))},ut={[ue.MAINNET]:Object.values(lt[ue.MAINNET]).map((e=>e.underlying)),[ue.POLYGON]:Object.values(lt[ue.POLYGON]).map((e=>e.underlying))},yt={[ue.MAINNET]:Object.fromEntries(Object.keys(lt[ue.MAINNET]).map((e=>[lt[ue.MAINNET][e].underlying,e]))),[ue.POLYGON]:Object.fromEntries(Object.keys(lt[ue.POLYGON]).map((e=>[lt[ue.POLYGON][e].underlying,e])))},bt={[ue.MAINNET]:"https://api.thegraph.com/subgraphs/name/aave/protocol-v2",[ue.POLYGON]:"https://api.thegraph.com/subgraphs/name/aave/aave-v2-matic"},ft=async e=>{const t=Object.fromEntries(Object.keys(lt).map((e=>[e,0])));if(!e||e!=ue.MAINNET&&e!=ue.POLYGON)return t;try{const t={operationName:"getReserves",query:"\n query getReserves($aTokens: [String!], $underlyingAssets: [Bytes!]) {\n reserves(\n where: {\n aToken_in: $aTokens\n underlyingAsset_in: $underlyingAssets\n isActive: true\n }\n ) {\n underlyingAsset\n liquidityRate\n }\n }\n",variables:{aTokens:pt[e],underlyingAssets:ut[e]}},a=await h.post(bt[e],t),{data:{reserves:n}}=a.data,s=n.map((t=>[yt[e][t.underlyingAsset],Math.round(1e4*parseFloat(rt(d.from(t.liquidityRate),27)))]));return Object.fromEntries(s)}catch(e){return t}};function mt(e){const t={};return e.forEach((e=>{e.price&&(t[e.address]=e.price)})),t}function ht(e,t){let a=e.toLowerCase();return a=Tt(a,t),a=gt(a,t),a}const Tt=(e,t)=>{const a=(n=t,Ge[n]?Ge[n]:Ue).PriceChainMap;var n;return a&&a[e.toLowerCase()]||e},gt=(e,t)=>{const a=e.toLocaleLowerCase(),n=t;return null!=lt[n]&&null!=lt[n]&&Object.keys(lt[n]).includes(a)?lt[n][a].aToken:a};class It{constructor(e,t=200){this.fn=e,this.wait=t,this.requestSet=new Set,this.promisedCalls=[],this.promisedCount=0,this.debounceCancel=()=>{}}fetch(e){if(e&&this.requestSet.add(e),this.promisedCalls[this.promisedCount])return this.promisedCalls[this.promisedCount].promise;this.promisedCalls[this.promisedCount]=(()=>{let e=()=>{},t=()=>{};return{promise:new Promise(((a,n)=>{[e,t]=[a,n]})),reject:t,resolve:e}})();const{promise:t,resolve:a,reject:n}=this.promisedCalls[this.promisedCount];return this.timeout&&clearTimeout(this.timeout),this.timeout=setTimeout((()=>{this.promisedCount++;const e=[...this.requestSet];this.requestSet.clear(),this.fn(e).then((e=>{a(e),this.debounceCancel=()=>{}})).catch((e=>{e.response&&e.response.data&&e.response.data.error&&(e=e.response.data.error),n(e)}))}),this.wait),this.debounceCancel=()=>{this.timeout&&clearTimeout(this.timeout),n("Cancelled"),delete this.promisedCalls[this.promisedCount]},t}}function wt(e,t){const a=new RegExp(`[0-9]+\\.?[0-9]{0,${t}}`),n=e.match(a);let s=e;return n&&(s=n[0]),c(s,t)}function Et(e,t){return l(e,t).replace(/(.0$)/,"")}function xt(e){return wt(e,18).toBigInt()}function At(e){return l(d.from(e),18)}const St=e=>c(`${e}`,18),Pt=(e,t)=>p(e)===p(t);function _t(e,t,a){return[...e.slice(0,t),a,...e.slice(t)]}class vt{format(e){return e}}class Ot{constructor(){this.operatorMap={gt:"_gt",lt:"_lt",eq:"",in:"_in",not_in:"_not_in",contains:"_contains"}}format(e){const t={};return e.where&&Object.entries(e.where).forEach((([e,a])=>{Object.entries(a).forEach((([a,n])=>{t[`${e}${this.operatorMap[a]}`]=n}))})),{...e,where:t}}}class Bt{constructor(e){this.args=e}merge(e){const t=T(this.args,e.args,((e,t)=>{if(Array.isArray(e))return e.concat(t)}));return new Bt(t)}format(e){return e.format(this.args)}}var kt;function Dt(e,t,a,i,r,o){const c=new Array(r.length).fill(s);return r.forEach(((s,r)=>{if(e.some((e=>Pt(s,e)))){const e=d.from(o).add(n);c[r]=a===kt.SwapExactOut?c[r].add(d.from(i[r]).mul(e).div(n)):c[r].add(i[r])}if(t.some((e=>Pt(s,e)))){const e=n.sub(d.from(o));c[r]=a===kt.SwapExactIn?c[r].add(d.from(i[r]).mul(e).div(n)):c[r].add(i[r])}})),c}!function(e){e[e.SwapExactIn=0]="SwapExactIn",e[e.SwapExactOut=1]="SwapExactOut"}(kt||(kt={}));const Nt=d.from("10000"),Ct=(e,t)=>e.mul(t).div(Nt),Ft=(e,t)=>{const a=Ct(e,t);return e.sub(a)},Rt=(e,t)=>{const a=Ct(e,t);return e.add(a)},Mt="0x2FA699664752B34E90A414A42D62D7A8b2702B85",Lt={[ue.MAINNET]:{chainId:ue.MAINNET,addresses:{contracts:{vault:"0xBA12222222228d8Ba445958a75a0704d566BF2C8",multicall:"0xeefba1e63905ef1d7acba5a8513c70307c1ce441",balancerHelpers:"0x5aDDCCa35b7A0D07C74063c48700C8590E87864E",lidoRelayer:"0xdcdbf71A870cc60C6F9B621E28a7D3Ffd6Dd4965",relayerV3:"0x886A3Ec7bcC508B8795990B60Fa21f85F9dB7948",relayerV4:"0x2536dfeeCB7A0397CF98eDaDA8486254533b1aFA",gaugeController:"0xc128468b7ce63ea702c1f104d55a2566b13d3abd",feeDistributor:"0xD3cf852898b21fc233251427c2DC93d3d604F3BB",protocolFeePercentagesProvider:"0x97207B095e4D5C9a6e4cfbfcd2C3358E03B90c4A",veBal:"0xC128a9954e6c874eA3d62ce62B468bA073093F25",veBalProxy:"0x6f5a2eE11E7a772AeB5114A20d0D7c0ff61EB8A0",weightedPoolFactory:"0x8E9aa87E45e92bad84D5F8DD1bff34Fb92637dE9",composableStablePoolFactory:"0x85a80afee867adf27b50bdb7b76da70f1e853062"},tokens:{wrappedNativeAsset:"0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2",lbpRaisingTokens:["0x6B175474E89094C44Da98b954EedeAC495271d0F","0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48","0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2"],stETH:"0xae7ab96520de3a18e5e111b5eaab095312d7fe84",wstETH:"0x7f39c581f595b53c5cb19bd0b3f8da6c935e2ca0",bal:"0xba100000625a3754423978a60c9317c58a424e3d",veBal:"0xC128a9954e6c874eA3d62ce62B468bA073093F25",bbaUsd:"0x7b50775383d3d6f0215a8f290f2c9e2eebbeceb2"}},urls:{subgraph:"https://api.thegraph.com/subgraphs/name/balancer-labs/balancer-v2",gaugesSubgraph:"https://api.thegraph.com/subgraphs/name/balancer-labs/balancer-gauges",blockNumberSubgraph:"https://api.thegraph.com/subgraphs/name/blocklytics/ethereum-blocks"},pools:{wETHwstETH:{id:"0x32296969ef14eb0c6d29669c550d4a0449130230000200000000000000000080",address:"0x32296969ef14eb0c6d29669c550d4a0449130230"}},poolsToIgnore:["0xbd482ffb3e6e50dc1c437557c3bea2b68f3683ee"],sorConnectingTokens:[{symbol:"wEth",address:"0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2"},{symbol:"wstEth",address:"0x7f39C581F595B53c5cb19bD0b3f8dA6c935E2Ca0"},{symbol:"DOLA",address:"0x865377367054516e17014CcdED1e7d814EDC9ce4"}]},[ue.POLYGON]:{chainId:ue.POLYGON,addresses:{contracts:{vault:"0xBA12222222228d8Ba445958a75a0704d566BF2C8",multicall:"0xa1B2b503959aedD81512C37e9dce48164ec6a94d",relayerV3:"0xcf6a66E32dCa0e26AcC3426b851FD8aCbF12Dac7",relayerV4:"0x28A224d9d398a1eBB7BA69BCA515898966Bb1B6b",balancerHelpers:"0x239e55F427D44C3cc793f49bFB507ebe76638a2b",weightedPoolFactory:"0x0e39C3D9b2ec765eFd9c5c70BB290B1fCD8536E3",composableStablePoolFactory:"0x85a80afee867adf27b50bdb7b76da70f1e853062"},tokens:{bal:"0x9a71012b13ca4d3d0cdc72a177df3ef03b0e76a3",wrappedNativeAsset:"0x0d500B1d8E8eF31E21C99d1Db9A6444d3ADf1270"}},urls:{subgraph:"https://api.thegraph.com/subgraphs/name/balancer-labs/balancer-polygon-prune-v2",gaugesSubgraph:"https://api.thegraph.com/subgraphs/name/balancer-labs/balancer-gauges-polygon",blockNumberSubgraph:"https://api.thegraph.com/subgraphs/name/ianlapham/polygon-blocks"},pools:{},poolsToIgnore:["0x600bd01b6526611079e12e1ff93aba7a3e34226f"],sorConnectingTokens:[{symbol:"weth",address:"0x0d500B1d8E8eF31E21C99d1Db9A6444d3ADf1270"},{symbol:"bbrz2",address:"0xe22483774bd8611be2ad2f4194078dac9159f4ba"}]},[ue.ARBITRUM]:{chainId:ue.ARBITRUM,addresses:{contracts:{vault:"0xBA12222222228d8Ba445958a75a0704d566BF2C8",multicall:"0x269ff446d9892c9e19082564df3f5e8741e190a1",relayerV3:"0x42E49B48573c725ee32d2579060Ed06894f97002",relayerV4:"0x5bf3B7c14b10f16939d63Bd679264A1Aa951B4D5",balancerHelpers:"0x77d46184d22CA6a3726a2F500c776767b6A3d6Ab",weightedPoolFactory:"0x8df6EfEc5547e31B0eb7d1291B511FF8a2bf987c",composableStablePoolFactory:"0x85a80afee867adf27b50bdb7b76da70f1e853062"},tokens:{bal:"0x040d1edc9569d4bab2d15287dc5a4f10f56a56b8",wrappedNativeAsset:"0x82aF49447D8a07e3bd95BD0d56f35241523fBab1"}},urls:{subgraph:"https://api.thegraph.com/subgraphs/name/balancer-labs/balancer-arbitrum-v2",gaugesSubgraph:"https://api.thegraph.com/subgraphs/name/balancer-labs/balancer-gauges-arbitrum",blockNumberSubgraph:"https://api.thegraph.com/subgraphs/name/ianlapham/arbitrum-one-blocks"},pools:{},sorConnectingTokens:[{symbol:"weth",address:"0x82aF49447D8a07e3bd95BD0d56f35241523fBab1"}]},[ue.KOVAN]:{chainId:ue.KOVAN,addresses:{contracts:{vault:"0xBA12222222228d8Ba445958a75a0704d566BF2C8",multicall:"0x2cc8688C5f75E365aaEEb4ea8D6a480405A48D2A",veBal:"0x16ba924752EF283C7946db8A122a6742AA35C1DC",veBalProxy:"0x98D0d0a65cBeCCaa647a5a95cf27Cf2f00E1231C",balancerHelpers:"0x94905e703fEAd7f0fD0eEe355D267eE909784e6d",weightedPoolFactory:"0x8df6EfEc5547e31B0eb7d1291B511FF8a2bf987c"},tokens:{wrappedNativeAsset:"0xdFCeA9088c8A88A76FF74892C1457C17dfeef9C1"}},urls:{subgraph:"https://api.thegraph.com/subgraphs/name/balancer-labs/balancer-kovan-v2",gaugesSubgraph:"https://api.thegraph.com/subgraphs/name/balancer-labs/balancer-gauges"},pools:{}},[ue.ROPSTEN]:{chainId:ue.ROPSTEN,addresses:{contracts:{vault:"0xBA12222222228d8Ba445958a75a0704d566BF2C8",multicall:"0x53c43764255c17bd724f74c4ef150724ac50a3ed",balancerHelpers:""},tokens:{wrappedNativeAsset:"0xdFCeA9088c8A88A76FF74892C1457C17dfeef9C1"}},urls:{subgraph:"",gaugesSubgraph:"https://api.thegraph.com/subgraphs/name/balancer-labs/balancer-gauges"},pools:{}},[ue.RINKEBY]:{chainId:ue.RINKEBY,addresses:{contracts:{vault:"0xBA12222222228d8Ba445958a75a0704d566BF2C8",multicall:"0x42ad527de7d4e9d9d011ac45b31d8551f8fe9821",balancerHelpers:"0x5aDDCCa35b7A0D07C74063c48700C8590E87864E",weightedPoolFactory:"0x8df6EfEc5547e31B0eb7d1291B511FF8a2bf987c"},tokens:{wrappedNativeAsset:"0xdFCeA9088c8A88A76FF74892C1457C17dfeef9C1"}},urls:{subgraph:"https://api.thegraph.com/subgraphs/name/balancer-labs/balancer-rinkeby-v2",gaugesSubgraph:"https://api.thegraph.com/subgraphs/name/balancer-labs/balancer-gauges"},pools:{}},[ue.GOERLI]:{chainId:ue.GOERLI,addresses:{contracts:{vault:"0xBA12222222228d8Ba445958a75a0704d566BF2C8",multicall:"0x77dCa2C955b15e9dE4dbBCf1246B4B85b651e50e",relayerV3:"0x7b9B6f094DC2Bd1c12024b0D9CC63d6993Be1888",relayerV4:"0x00e695aA8000df01B8DC8401B4C34Fba5D56BBb2",gaugeController:"0xBB1CE49b16d55A1f2c6e88102f32144C7334B116",veBal:"0x33A99Dcc4C85C014cf12626959111D5898bbCAbF",veBalProxy:"0xA1F107D1cD709514AE8A914eCB757E95f9cedB31",balancerHelpers:"0x5aDDCCa35b7A0D07C74063c48700C8590E87864E",weightedPoolFactory:"0x8E9aa87E45e92bad84D5F8DD1bff34Fb92637dE9",composableStablePoolFactory:"0x85a80afee867adf27b50bdb7b76da70f1e853062"},tokens:{wrappedNativeAsset:"0xdFCeA9088c8A88A76FF74892C1457C17dfeef9C1"}},urls:{subgraph:"https://api.thegraph.com/subgraphs/name/balancer-labs/balancer-goerli-v2",gaugesSubgraph:"https://api.thegraph.com/subgraphs/name/balancer-labs/balancer-gauges-goerli",blockNumberSubgraph:"https://api.thegraph.com/subgraphs/name/blocklytics/goerli-blocks"},pools:{},sorConnectingTokens:[{symbol:"weth",address:"0xdFCeA9088c8A88A76FF74892C1457C17dfeef9C1"}]},[ue.OPTIMISM]:{chainId:ue.OPTIMISM,addresses:{contracts:{vault:"0xBA12222222228d8Ba445958a75a0704d566BF2C8",multicall:"0x2dc0e2aa608532da689e89e237df582b783e552c",relayerV3:"0x195CcCBE464EF9073d1f7A1ba1C9Bf0f56dfFFff",relayerV4:"0x1a58897Ab366082028ced3740900ecBD765Af738",balancerHelpers:"0x8E9aa87E45e92bad84D5F8DD1bff34Fb92637dE9",weightedPoolFactory:"0x0e39C3D9b2ec765eFd9c5c70BB290B1fCD8536E3",composableStablePoolFactory:"0x85a80afee867adf27b50bdb7b76da70f1e853062"},tokens:{wrappedNativeAsset:"0x4200000000000000000000000000000000000006"}},urls:{subgraph:"https://api.thegraph.com/subgraphs/name/beethovenxfi/beethovenx-optimism",gaugesSubgraph:""},pools:{},sorConnectingTokens:[{symbol:"weth",address:"0x4200000000000000000000000000000000000006"}]},[ue.GNOSIS]:{chainId:ue.GNOSIS,addresses:{contracts:{vault:"0xBA12222222228d8Ba445958a75a0704d566BF2C8",multicall:"0xbb6fab6b627947dae0a75808250d8b2652952cb5",relayerV4:"0xeF606F58A4FD0fCcb066c6203d0994694d3eB2D3",balancerHelpers:"0x8E9aa87E45e92bad84D5F8DD1bff34Fb92637dE9",weightedPoolFactory:"0xf302f9F50958c5593770FDf4d4812309fF77414f",composableStablePoolFactory:"0x76578ecf9a141296ec657847fb45b0585bcda3a6"},tokens:{wrappedNativeAsset:"0xe91D153E0b41518A2Ce8Dd3D7944Fa863463a97d"}},urls:{subgraph:"https://api.thegraph.com/subgraphs/name/balancer-labs/balancer-gnosis-chain-v2",gaugesSubgraph:""},pools:{},sorConnectingTokens:[{symbol:"weth",address:"0xe91D153E0b41518A2Ce8Dd3D7944Fa863463a97d"}]},[ue.DEFIVERSE]:{chainId:ue.DEFIVERSE,addresses:{contracts:{vault:"0x2FA699664752B34E90A414A42D62D7A8b2702B85",multicall:"0x8633dD7223f76c99bdc5a2D116FCF369d79852C4",relayerV4:"0x00e695aA8000df01B8DC8401B4C34Fba5D56BBb2",gaugeController:"",feeDistributor:"",protocolFeePercentagesProvider:"0xC462175C87672c7aad536c1248b72B1Cf46BEe27",veBal:"",veBalProxy:"",balancerHelpers:"0x4087EDb699803608A0214FD92e32119CAF57EcA3",weightedPoolFactory:"0xD1920DD25e4998B0d7cC8de7F12BeAf9796C7475",composableStablePoolFactory:"0xD01ad3085fb3e1fbB2541b5B3326B1F47B189747"},tokens:{wrappedNativeAsset:"0x5a89E11Cb554E00c2f51C4bb7F05bc7Ab0Fa6351",bal:"",veBal:""}},urls:{priceUrl:"https://price-api.gaming-dex.com/api/v1",subgraph:"https://graphnode.defi-verse.org/subgraphs/name/balancer-labs/defiverse",gaugesSubgraph:"https://graphnode.defi-verse.org/subgraphs/name/balancer-labs/gauges-defiverse"},pools:{},sorConnectingTokens:[{symbol:"weth",address:"0x5a89E11Cb554E00c2f51C4bb7F05bc7Ab0Fa6351"}]},[ue.DEFIVERSE_TESTNET]:{chainId:ue.DEFIVERSE_TESTNET,addresses:{contracts:{vault:"0x2Da016a77E290fb82F5af7051198304d57779f5d",multicall:"0xEB47269E97EeDB20EF782EB8caFb09ed55b02A39",relayerV4:"0x00e695aA8000df01B8DC8401B4C34Fba5D56BBb2",gaugeController:"",feeDistributor:"",protocolFeePercentagesProvider:"0x38d04d161247031484B31fB8403D20bed5287cf7",veBal:"",veBalProxy:"",balancerHelpers:"0x47404b46E0340F879ECC15977Ce196458cadc2DF",weightedPoolFactory:"0x48494Fa9eAd46EE8E3FcB66487a6dBBD34DcAFe3",composableStablePoolFactory:"0x58e6F99bB65378f47A520fC9630Bd711f2cf3Dc7"},tokens:{wrappedNativeAsset:"0x6B382742b07AAbBA58c38d792B5d7CBAaB246e99",bal:"0xb5C5C48D3082751f60EE1CAc8FC84a921931EC24"}},urls:{priceUrl:"https://price-api-testnet.gaming-dex.com/api/v1",subgraph:"https://graphnode-testnet.defi-verse.org/subgraphs/name/balancer-labs/defiverse-testnet-v2",gaugesSubgraph:"https://graphnode-testnet.defi-verse.org/subgraphs/name/balancer-labs/gauges-defiverse-testnet-v2"},pools:{},sorConnectingTokens:[{symbol:"weth",address:"0x6B382742b07AAbBA58c38d792B5d7CBAaB246e99"}]},[ue.OASYS]:{chainId:ue.OASYS,addresses:{contracts:{vault:"0xfb6f8FEdE0Cb63674Ab964affB93D65a4a7D55eA",multicall:"0xc52dc4a7dad06BEAB9230D482AcBEcFFc3aB009B",relayerV4:"0x00e695aA8000df01B8DC8401B4C34Fba5D56BBb2",gaugeController:"0x2D2BB676EfE00998ABf25aa499A19af16cC99F3e",feeDistributor:"0xE93F762E0d736fB2780bb9271233367942189B86",protocolFeePercentagesProvider:"0x56C181Ecf83e773978137b2B567d660768f8c8e3",veBal:"0x2B726256AdD04e65403cEf6679A2f2dfF7DDe9F9",veBalProxy:"0xe5276B39E604999c05d3051D896310A620E4Cc49",balancerHelpers:"0xf199DDb57d75225e13Fe13eb8BDDE8b16e188374",weightedPoolFactory:"0x4EF0b4827cE3D5FEcBc2C6ab80Ee81dBF9631D37",composableStablePoolFactory:"0x0A7A98c9553192755f22b282278f0FA26f4de742"},tokens:{wrappedNativeAsset:"0x5200000000000000000000000000000000000001",bal:"0x2B726256AdD04e65403cEf6679A2f2dfF7DDe9F9",veBal:"0x2B726256AdD04e65403cEf6679A2f2dfF7DDe9F9"}},urls:{priceUrl:"https://price-api.gaming-dex.com/api/v1",subgraph:"https://graphnode-oasys.defi-verse.org/subgraphs/name/balancer-labs/oasys",gaugesSubgraph:"https://graphnode-oasys.defi-verse.org/subgraphs/name/balancer-labs/gauges-oasys"},pools:{},sorConnectingTokens:[{symbol:"weth",address:"0x5200000000000000000000000000000000000001"}]},[ue.OASYS_TESTNET]:{chainId:ue.OASYS_TESTNET,addresses:{contracts:{vault:"0x1f7a0Bea1CB70FaA0f6b7B1126eCbd01Ef4E5BC8",multicall:"0xe5Fce05D922e3961F053bD2BF1F29F92d2a0a94B",relayerV4:"0x00e695aA8000df01B8DC8401B4C34Fba5D56BBb2",gaugeController:"0x82e3ACEE6e747B164327cca5e6309bb38f114848",feeDistributor:"0x8A55C4F4f178d62Da281c244e4AD98A9C72c418a",protocolFeePercentagesProvider:"0xACA587e675102f0fDcBc9FddC441f820cB2c64b9",veBal:"0x9288F664FEFc9f374A53C4307BD3c8F91e83f466",veBalProxy:"0x0b205Ed28BC51E7DE4686ef725488bCecEe87606",balancerHelpers:"0x3B847f3Fa5585Dc3aeDB40780fF47e31B0fF14C0",weightedPoolFactory:"0xd2d7F457B9749B6A0A637685A65681F03116125C",composableStablePoolFactory:"0xfDA8fa80dd77A99BF71BeCFce47077859e689898"},tokens:{wrappedNativeAsset:"0x5200000000000000000000000000000000000001",bal:"0x9288F664FEFc9f374A53C4307BD3c8F91e83f466",veBal:"0x9288F664FEFc9f374A53C4307BD3c8F91e83f466"}},urls:{priceUrl:"https://price-api-testnet.gaming-dex.com/api/v1",subgraph:"https://graphnode-oasys-testnet.defi-verse.org/subgraphs/name/balancer-labs/oasys-testnet",gaugesSubgraph:"https://graphnode-oasys-testnet.defi-verse.org/subgraphs/name/balancer-labs/gauges-oasys-testnet-v2"},pools:{},sorConnectingTokens:[{symbol:"weth",address:"0x5200000000000000000000000000000000000001"}]},[ue.MEGAETH_TESTNET]:{chainId:ue.MEGAETH_TESTNET,addresses:{contracts:{vault:"0x17e3debc39CD1239b08aC1df87593C57BE69171f",multicall:"0xC003DCBACe8a39fa6740284AbBd2FBf6467428ba",relayerV4:"0x00e695aA8000df01B8DC8401B4C34Fba5D56BBb2",gaugeController:"0x8b91eB206963A50B739fCe40CcB8E87384CE0576",feeDistributor:"",protocolFeePercentagesProvider:"0x379b189112a544976Fe7F5bdcF33fc787857c621",veBal:"0x8D23f3B57cF4B5Ed734574738Fa0Fc2C5b5e37d1",veBalProxy:"0x0AAea5d401Ea5f82a03edBBeE67cE665C349aA97",balancerHelpers:"0x0309DA369DF0f208d117c8291d34a041122Be0AD",weightedPoolFactory:"0x84F75879C0aC87eAFAF4f1E3E1A2372caAB5273b",composableStablePoolFactory:""},tokens:{wrappedNativeAsset:"0xAba76Cdc5910F6627856EB75Bcce0171376999C7",bal:"0x8D23f3B57cF4B5Ed734574738Fa0Fc2C5b5e37d1",veBal:"0x8D23f3B57cF4B5Ed734574738Fa0Fc2C5b5e37d1"}},urls:{priceUrl:"https://price-api-testnet.gaming-dex.com/api/v1",subgraph:"https://graphnode-megaeth-testnet.defi-verse.org/subgraphs/name/balancer-labs/megaeth-testnet",gaugesSubgraph:"https://graphnode-megaeth-testnet.defi-verse.org/subgraphs/name/balancer-labs/gauges-megaeth-testnet"},pools:{},sorConnectingTokens:[{symbol:"weth",address:"0xAba76Cdc5910F6627856EB75Bcce0171376999C7"}]},[ue.MEGAETH_MAINNET]:{chainId:ue.MEGAETH_MAINNET,addresses:{contracts:{vault:"0x56e0c32496c5F20B5a367aBb350629609FB3bA60",multicall:"0x32Ea7B7c8d85D26D53D4Ab6eb98a6C9012F7e1Da",relayerV4:"0x00e695aA8000df01B8DC8401B4C34Fba5D56BBb2",gaugeController:"0x3C7297968403fB10c4dA289814a0158Ec164bA7c",feeDistributor:"",protocolFeePercentagesProvider:"0x595d2E000B5493e40B2200448924D39DE5DEfbC5",veBal:"0x3EeaBC1632B47b0da9681674E67160d65811E7AB",veBalProxy:"0xcC463A1818b8b9Ac6F884DD77C031b352E3Bf11f",balancerHelpers:"0x2a46b959efc72a9f450E2ef11BF9b9322FB5a337",weightedPoolFactory:"0x083904D9006abDA7950337C7215Ecfc028855f0B",composableStablePoolFactory:""},tokens:{wrappedNativeAsset:"0x4200000000000000000000000000000000000006",bal:"0x3EeaBC1632B47b0da9681674E67160d65811E7AB",veBal:"0x3EeaBC1632B47b0da9681674E67160d65811E7AB"}},urls:{priceUrl:"https://price-api.gaming-dex.com/api/v1",subgraph:"https://graphnode-megaeth.defi-verse.org/subgraphs/name/balancer-labs/megaeth",gaugesSubgraph:"https://graphnode-megaeth.defi-verse.org/subgraphs/name/balancer-labs/gauges-megaeth"},pools:{},sorConnectingTokens:[{symbol:"weth",address:"0x4200000000000000000000000000000000000006"}]}},Ut=e=>Lt[e].addresses;var Gt;!function(e){e.SWAP_ZERO_RETURN_AMOUNT="SWAP_ZERO_RETURN_AMOUNT",e.UNWRAP_ZERO_AMOUNT="UNWRAP_ZERO_AMOUNT",e.WRAP_ZERO_AMOUNT="WRAP_ZERO_AMOUNT",e.QUERY_BATCH_SWAP="QUERY_BATCH_SWAP",e.POOL_DOESNT_EXIST="POOL_DOESNT_EXIST",e.UNSUPPORTED_POOL_TYPE="UNSUPPORTED_POOL_TYPE",e.UNSUPPORTED_PAIR="UNSUPPORTED_PAIR",e.NO_POOL_DATA="NO_POOL_DATA",e.INPUT_OUT_OF_BOUNDS="INPUT_OUT_OF_BOUNDS",e.INPUT_LENGTH_MISMATCH="INPUT_LENGTH_MISMATCH",e.INPUT_TOKEN_INVALID="INPUT_TOKEN_INVALID",e.INPUT_ZERO_NOT_ALLOWED="INPUT_ZERO_NOT_ALLOWED",e.INTERNAL_ERROR_INVALID_ABI="INTERNAL_ERROR_INVALID_ABI",e.TOKEN_MISMATCH="TOKEN_MISMATCH",e.MISSING_TOKENS="MISSING_TOKENS",e.MISSING_AMP="MISSING_AMP",e.MISSING_DECIMALS="MISSING_DECIMALS",e.MISSING_PRICE_RATE="MISSING_PRICE_RATE",e.MISSING_WEIGHT="MISSING_WEIGHT",e.RELAY_SWAP_AMOUNTS="RELAY_SWAP_AMOUNTS",e.NO_VALUE_PARAMETER="NO_VALUE_PARAMETER",e.ILLEGAL_PARAMETER="ILLEGAL_PARAMETER",e.TIMESTAMP_IN_THE_FUTURE="TIMESTAMP_IN_THE_FUTURE",e.JOIN_DELTA_AMOUNTS="JOIN_DELTA_AMOUNTS",e.EXIT_DELTA_AMOUNTS="EXIT_DELTA_AMOUNTS"}(Gt||(Gt={}));class $t extends Error{constructor(e){super($t.getMessage(e)),this.code=e,this.name="BalancerError"}static getMessage(e){switch(e){case Gt.SWAP_ZERO_RETURN_AMOUNT:return"queryBatchSwapWithSor returned 0 amount";case Gt.UNWRAP_ZERO_AMOUNT:return"swapUnwrapAaveStaticExactIn unwrapped amount < 0";case Gt.WRAP_ZERO_AMOUNT:return"swapUnwrapAaveStaticExactOut wrapped amount < 0";case Gt.QUERY_BATCH_SWAP:return"queryBatchSwap on chain call error";case Gt.POOL_DOESNT_EXIST:return"balancer pool does not exist";case Gt.UNSUPPORTED_POOL_TYPE:return"unsupported pool type";case Gt.UNSUPPORTED_PAIR:return"unsupported token pair";case Gt.NO_POOL_DATA:return"no pool data";case Gt.INPUT_OUT_OF_BOUNDS:return"input out of bounds";case Gt.INPUT_LENGTH_MISMATCH:return"input length mismatch";case Gt.INPUT_TOKEN_INVALID:return"input token invalid";case Gt.TOKEN_MISMATCH:return"token mismatch";case Gt.MISSING_DECIMALS:return"missing decimals";case Gt.MISSING_TOKENS:return"missing tokens";case Gt.MISSING_AMP:return"missing amp";case Gt.MISSING_PRICE_RATE:return"missing price rate";case Gt.MISSING_WEIGHT:return"missing weight";case Gt.INPUT_ZERO_NOT_ALLOWED:return"zero input not allowed";case Gt.RELAY_SWAP_AMOUNTS:return"Error when checking swap amounts";case Gt.NO_VALUE_PARAMETER:return"Illegal value passed as parameter";case Gt.TIMESTAMP_IN_THE_FUTURE:return"Timestamp cannot be in the future";case Gt.ILLEGAL_PARAMETER:return"An illegal parameter has been passed";case Gt.JOIN_DELTA_AMOUNTS:return"Error when checking join call deltas";case Gt.EXIT_DELTA_AMOUNTS:return"Error when checking exit call deltas";default:return"Unknown error"}}}class qt{constructor(){this.buildExitExactBPTIn=({exiter:e,pool:t,bptIn:a,slippage:n,shouldUnwrapNativeAsset:s,wrappedNativeAsset:r,singleTokenMaxOut:o})=>{if(!a.length||c(a,18).isNegative())throw new $t(Gt.INPUT_OUT_OF_BOUNDS);if(o&&o!==i&&!t.tokens.map((e=>e.address)).some((e=>Pt(e,o))))throw new $t(Gt.TOKEN_MISMATCH);if(!s&&o===i)throw new Error("shouldUnwrapNativeAsset and singleTokenMaxOut should not have conflicting values");if(t.tokens.some((e=>!e.decimals)))throw new $t(Gt.MISSING_DECIMALS);if(!t.amp)throw new $t(Gt.MISSING_AMP);const{parsedTokens:l,parsedAmp:p,parsedTotalShares:u,parsedSwapFee:y,upScaledBalances:b,scalingFactors:f}=Le(t),m=l.map((e=>e===r?i:e)),h=new we(r),[T,g,I]=h.sortTokens(s?m:l,b,f);let w,E=Array(l.length).fill("0"),x=Array(l.length).fill("0");if(o){const e=l.indexOf(o),t=A.StableMathBigInt._calcTokenOutGivenExactBptIn(BigInt(p),g.map((e=>BigInt(e))),e,BigInt(a),BigInt(u),BigInt(y)).toString();E[e]=t,x[e]=Ft(d.from(t),d.from(n)).toString(),w=Z.exitExactBPTInForOneTokenOut(a,e)}else{const e=function(e,t){const a=new Array(e.length);for(let n=0;n<e.length;++n)a[n]=Re.divDownFixed(e[n],t[n]);return a}(A.StableMathBigInt._calcTokensOutGivenExactBptIn(g.map((e=>BigInt(e))),BigInt(a),BigInt(u)).map((e=>e.toString())).map((e=>BigInt(e))),I.map((e=>BigInt(e))));E=e.map((e=>e.toString())),x=e.map((e=>Ft(d.from(e),d.from(n)).toString())),w=Z.exitExactBPTInForTokensOut(a)}const S=Mt,P="exitPool",_={poolId:t.id,sender:e,recipient:e,exitPoolRequest:{assets:T,minAmountsOut:x,userData:w,toInternalBalance:!1}};return{to:S,functionName:P,attributes:_,data:L.createInterface().encodeFunctionData(P,[_.poolId,_.sender,_.recipient,_.exitPoolRequest]),expectedAmountsOut:E,minAmountsOut:x}},this.buildExitExactTokensOut=({exiter:e,pool:t,tokensOut:a,amountsOut:n,slippage:s,wrappedNativeAsset:i})=>{if(a.length!=n.length||a.length!=t.tokensList.length)throw new $t(Gt.INPUT_LENGTH_MISMATCH);if(t.tokens.some((e=>!e.decimals)))throw new $t(Gt.MISSING_DECIMALS);if(!t.amp)throw new $t(Gt.MISSING_AMP);const{parsedTokens:r,parsedAmp:o,parsedTotalShares:c,parsedSwapFee:l,upScaledBalances:p,scalingFactors:u}=Le(t),y=new we(i),[,b,f]=y.sortTokens(r,p,u),[m,h]=y.sortTokens(a,n),T=Fe(h.map((e=>BigInt(e))),f.map((e=>BigInt(e)))),g=A.StableMathBigInt._calcBptInGivenExactTokensOut(BigInt(o),b.map((e=>BigInt(e))),T,BigInt(c),BigInt(l)).toString(),I=Rt(d.from(g),d.from(s)).toString(),w=Z.exitBPTInForExactTokensOut(h,I),E=Mt,x="exitPool",S={poolId:t.id,sender:e,recipient:e,exitPoolRequest:{assets:m,minAmountsOut:h,userData:w,toInternalBalance:!1}};return{to:E,functionName:x,attributes:S,data:L.createInterface().encodeFunctionData(x,[S.poolId,S.sender,S.recipient,S.exitPoolRequest]),expectedBPTIn:g,maxBPTIn:I}}}}class Wt{constructor(){this.buildJoin=({joiner:e,pool:t,tokensIn:a,amountsIn:n,slippage:s,wrappedNativeAsset:r})=>{if(a.length!=n.length||a.length!=t.tokensList.length)throw new $t(Gt.INPUT_LENGTH_MISMATCH);if(t.tokens.some((e=>!e.decimals)))throw new $t(Gt.MISSING_DECIMALS);if(!t.amp)throw new $t(Gt.MISSING_AMP);const{parsedTokens:o,parsedAmp:c,parsedTotalShares:l,parsedSwapFee:p,scalingFactors:u,upScaledBalances:y}=Le(t),b=new we(r),[f,m]=b.sortTokens(a,n),[,h,T]=b.sortTokens(o,y,u),g=Fe(m.map((e=>BigInt(e))),T.map((e=>BigInt(e)))),I=A.StableMathBigInt._calcBptOutGivenExactTokensIn(BigInt(c),h.map((e=>BigInt(e))),g,BigInt(l),BigInt(p)).toString(),w=Ft(d.from(I),d.from(s)).toString(),E=Z.joinExactTokensInForBPTOut(m,w),x=Mt,S="joinPool",P={poolId:t.id,sender:e,recipient:e,joinPoolRequest:{assets:f,maxAmountsIn:m,userData:E,fromInternalBalance:!1}},_=L.createInterface().encodeFunctionData(S,[P.poolId,P.sender,P.recipient,P.joinPoolRequest]),v=n.filter(((e,t)=>a[t]===i));return{to:x,functionName:S,attributes:P,data:_,value:v[0]?d.from(v[0]):void 0,minBPTOut:w,expectedBPTOut:I}}}}class Vt{calcTotal(e){var t,a;let n=d.from(0),s=d.from(0);for(let a=0;a<e.length;a++){const i=e[a];if(!(null===(t=i.price)||void 0===t?void 0:t.usd))continue;const r=wt(i.price.usd.toString(),18),o=wt(i.balance,18),d=o.mul(r);s=s.add(d),n=n.add(o)}if(n.gt(0)){const t=s.div(n);for(let i=0;i<e.length;i++){const r=e[i];if(null===(a=r.price)||void 0===a?void 0:a.usd)continue;const o=wt(r.balance,18),d=o.mul(t);s=s.add(d),n=n.add(o)}}return l(s,36).toString()}}class Ht{calcPoolSpotPrice(e,t,a){const n=S.fromPool(a),s=n.parsePoolPairData(e,t);return n._spotPriceAfterSwapExactTokenInForTokenOut(s,P).toString()}}function jt(e,t,a){return a?function(e,t){const a=ke-Re.divDownFixed(e,t);return a<0?BigInt(0):a}(e,t):function(e,t){const a=Re.divDownFixed(e,t)-ke;return a<0?BigInt(0):a}(e,t)}const Xt=BigInt(1e3);function Kt(e,t,a,n){const s=t.length,i=function(e,t,a){let n=Oe;const s=t.length;for(let e=0;e<s;e++)n+=t[e];if(n==Oe)return Oe;let i=Oe,r=n;const o=e*BigInt(s);for(let e=0;e<255;e++){let e=t[0]*BigInt(s);for(let n=1;n<s;n++)e=Re.div(Re.mul(Re.mul(e,t[n]),BigInt(s)),r,a);if(i=r,r=Re.div(Re.mul(Re.mul(BigInt(s),r),r)+Re.div(Re.mul(Re.mul(o,n),e),Xt,a),Re.mul(BigInt(s+1),r)+Re.div(Re.mul(o-Xt,e),Xt,!a),a),r>i){if(r-i<=1)return r}else if(i-r<=1)return r}throw new Error("Errors.STABLE_INVARIANT_DIDNT_CONVERGE")}(e,t,!0);let r=Oe,o=i/BigInt(s);for(let e=0;e<s;e++)e!=n&&(r+=t[e],o=o*i/(BigInt(s)*t[e]));const d=t[n],c=e*BigInt(s),l=c*r,p=BigInt(Xt)-c,u=BigInt(2)*c*d+l+p*i,y=o*BigInt(s+1)*Xt-p*d;return Re.divUpFixed(u*a/y,i)}class Yt{bptZeroPriceImpact(e,t){if(t.length!==e.tokensList.length)throw new $t(Gt.INPUT_LENGTH_MISMATCH);const{parsedBalances:a,parsedDecimals:n,parsedAmp:s,parsedTotalShares:i}=Le(e),r=n.map((e=>{if(!e)throw new $t(Gt.MISSING_DECIMALS);return BigInt(e)}));if(!s)throw new $t(Gt.MISSING_PRICE_RATE);const o=BigInt(i),d=r.map((e=>Ne(BigInt(e)))),c=a.map(((e,t)=>Ce(BigInt(e),d[t])));let l=Oe;for(let e=0;e<c.length;e++){const a=Kt(BigInt(s),c,o,e),n=Ne(BigInt(r[e]));l+=a*Ce(t[e],n)/ke}return l}calcPriceImpact(e,t,a,n){const s=this.bptZeroPriceImpact(e,t.map((e=>BigInt(e))));return jt(BigInt(a),s,n).toString()}}class Jt{constructor(e=new qt,t=new Wt,a=new Vt,n=new Ht,s=new Yt){this.exit=e,this.join=t,this.liquidity=a,this.spotPriceCalculator=n,this.priceImpactCalculator=s}}class Zt{calcPoolSpotPrice(e,t,a){const n=_.fromPool(a),s=n.parsePoolPairData(e,t);return n._spotPriceAfterSwapExactTokenInForTokenOut(s,P).toString()}}class zt{bptZeroPriceImpact(e,t){if(t.length!==e.tokensList.length-1)throw new $t(Gt.INPUT_LENGTH_MISMATCH);const a=g(e.tokensList),n=a.findIndex((t=>t==e.address)),{parsedBalances:s,parsedDecimals:i,parsedPriceRates:r,parsedAmp:o,parsedTotalShares:d}=Le(e),c=i.map((e=>{if(!e)throw new $t(Gt.MISSING_DECIMALS);return BigInt(e)})),l=r.map((e=>{if(!e)throw new $t(Gt.MISSING_PRICE_RATE);return BigInt(e)}));if(!o)throw new $t(Gt.MISSING_PRICE_RATE);const p=BigInt(d);a.splice(n,1);const u=c.map((e=>Ne(BigInt(e)))),y=s.map(((e,t)=>Ce(BigInt(e),u[t])));if(t.length!==a.length)throw new $t(Gt.INPUT_LENGTH_MISMATCH);y.splice(n,1);const b=y.map(((e,t)=>Re.mulDownFixed(e,l[t])));let f=Oe;for(let e=0;e<a.length;e++){const a=Kt(BigInt(o),b,p,e)*l[e]/ke,n=Ne(BigInt(c[e]));f+=a*Ce(t[e],n)/ke}return f}calcPriceImpact(e,t,a,n){const s=this.bptZeroPriceImpact(e,t.map((e=>BigInt(e))));return jt(BigInt(a),s,n).toString()}}class Qt{constructor(){this.buildJoin=({joiner:e,pool:t,tokensIn:a,amountsIn:n,slippage:s,wrappedNativeAsset:r})=>{if(a.length!=n.length||a.length!=t.tokensList.length-1)throw new $t(Gt.INPUT_LENGTH_MISMATCH);if(t.tokens.some((e=>!e.decimals)))throw new $t(Gt.MISSING_DECIMALS);const o=new we(r),[,c]=o.sortTokens(a,n),{parsedTokens:l,parsedAmp:p,parsedSwapFee:u,parsedTotalShares:y,scalingFactorsWithoutBpt:b,parsedBalancesWithoutBpt:f,bptIndex:m}=Le(t,r);if(!p)throw new $t(Gt.MISSING_AMP);const h=Fe(c.map(BigInt),b.map(BigInt)),T=v._calcBptOutGivenExactTokensIn(BigInt(p),f.map(BigInt),h,BigInt(y),BigInt(u)).toString(),g=Ft(d.from(T),d.from(s)).toString(),I=se.joinExactTokensInForBPTOut(c,g),w="joinPool",E={poolId:t.id,sender:e,recipient:e,joinPoolRequest:{assets:l,maxAmountsIn:_t(c,m,"0"),userData:I,fromInternalBalance:!1}},x=L.createInterface().encodeFunctionData(w,[E.poolId,E.sender,E.recipient,E.joinPoolRequest]),A=n.filter(((e,t)=>a[t]===i)),S=A[0]?d.from(A[0]):void 0;return{to:Mt,functionName:w,attributes:E,data:x,value:S,minBPTOut:g,expectedBPTOut:T}}}}class ea{constructor(){this.buildExitExactBPTIn=({exiter:e,pool:t,bptIn:a,slippage:n,shouldUnwrapNativeAsset:s,wrappedNativeAsset:i,singleTokenMaxOut:r})=>{throw new Error("To be implemented")},this.buildExitExactTokensOut=({exiter:e,pool:t,tokensOut:a,amountsOut:n,slippage:s,wrappedNativeAsset:i})=>{throw new Error("To be implemented")}}}class ta{constructor(e=new ea,t=new Vt,a=new Zt,n=new zt,s=new Qt){this.exit=e,this.liquidity=t,this.spotPriceCalculator=a,this.priceImpactCalculator=n,this.join=s}}class aa{constructor(){this.buildExitExactBPTIn=({exiter:e,pool:t,bptIn:a,slippage:n,shouldUnwrapNativeAsset:s,wrappedNativeAsset:r,singleTokenMaxOut:o})=>{if(!a.length||c(a,18).isNegative())throw new $t(Gt.INPUT_OUT_OF_BOUNDS);if(o&&o!==i&&!t.tokens.map((e=>e.address)).some((e=>Pt(e,o))))throw new $t(Gt.TOKEN_MISMATCH);if(!s&&o===i)throw new Error("shouldUnwrapNativeAsset and singleTokenMaxOut should not have conflicting values");const{parsedTokens:l,parsedBalances:p,parsedWeights:u,parsedTotalShares:y,parsedSwapFee:b}=Le(t),f=l.map((e=>e===r?i:e)),m=new we(r),[h,T,g]=m.sortTokens(s?f:l,p,u);let I,w=Array(h.length).fill("0"),E=Array(h.length).fill("0");if(o){const e=h.indexOf(o),t=A.WeightedMaths._calcTokenOutGivenExactBptIn(BigInt(T[e]),BigInt(g[e]),BigInt(a),BigInt(y),BigInt(b)).toString();w[e]=t,E[e]=Ft(d.from(t),d.from(n)).toString(),I=z.exitExactBPTInForOneTokenOut(a,e)}else w=A.WeightedMaths._calcTokensOutGivenExactBptIn(T.map((e=>BigInt(e))),BigInt(a),BigInt(y)).map((e=>e.toString())),E=w.map((e=>Ft(d.from(e),d.from(n)).toString())),I=z.exitExactBPTInForTokensOut(a);const x=Mt,S="exitPool",P={poolId:t.id,sender:e,recipient:e,exitPoolRequest:{assets:h,minAmountsOut:E,userData:I,toInternalBalance:!1}};return{to:x,functionName:S,attributes:P,data:L.createInterface().encodeFunctionData(S,[P.poolId,P.sender,P.recipient,P.exitPoolRequest]),expectedAmountsOut:w,minAmountsOut:E}},this.buildExitExactTokensOut=({exiter:e,pool:t,tokensOut:a,amountsOut:n,slippage:s,wrappedNativeAsset:i})=>{if(a.length!=n.length||a.length!=t.tokensList.length)throw new $t(Gt.INPUT_LENGTH_MISMATCH);const{parsedTokens:r,parsedBalances:o,parsedWeights:c,parsedTotalShares:l,parsedSwapFee:p}=Le(t),u=new we(i),[,y,b]=u.sortTokens(r,o,c),[f,m]=u.sortTokens(a,n),h=A.WeightedMaths._calcBptInGivenExactTokensOut(y.map((e=>BigInt(e))),b.map((e=>BigInt(e))),m.map((e=>BigInt(e))),BigInt(l),BigInt(p)).toString(),T=Rt(d.from(h),d.from(s)).toString(),g=z.exitBPTInForExactTokensOut(m,T),I=Mt,w="exitPool",E={poolId:t.id,sender:e,recipient:e,exitPoolRequest:{assets:f,minAmountsOut:m,userData:g,toInternalBalance:!1}};return{to:I,functionName:w,attributes:E,data:L.createInterface().encodeFunctionData(w,[E.poolId,E.sender,E.recipient,E.exitPoolRequest]),expectedBPTIn:h,maxBPTIn:T}}}}class na{constructor(){this.buildJoin=({joiner:e,pool:t,tokensIn:a,amountsIn:n,slippage:s,wrappedNativeAsset:r})=>{if(a.length!=n.length||a.length!=t.tokensList.length)throw new $t(Gt.INPUT_LENGTH_MISMATCH);if(t.tokens.some((e=>!e.decimals)))throw new $t(Gt.MISSING_DECIMALS);if(t.tokens.some((e=>!e.weight)))throw new $t(Gt.MISSING_WEIGHT);const{parsedTokens:o,parsedBalances:c,parsedWeights:l,parsedTotalShares:p,parsedSwapFee:u}=Le(t),y=new we(r),[b,f]=y.sortTokens(a,n),[,m,h]=y.sortTokens(o,c,l),T=O._calcBptOutGivenExactTokensIn(m.map((e=>BigInt(e))),h.map((e=>BigInt(e))),f.map((e=>BigInt(e))),BigInt(p),BigInt(u)).toString(),g=Ft(d.from(T),d.from(s)).toString(),I=z.joinExactTokensInForBPTOut(f,g),w=Mt,E="joinPool",x={poolId:t.id,sender:e,recipient:e,joinPoolRequest:{assets:b,maxAmountsIn:f,userData:I,fromInternalBalance:!1}},A=L.createInterface().encodeFunctionData(E,[x.poolId,x.sender,x.recipient,x.joinPoolRequest]),S=n.filter(((e,t)=>a[t]===i));return{to:w,functionName:E,attributes:x,data:A,value:S[0]?d.from(S[0]):void 0,minBPTOut:g,expectedBPTOut:T}}}}class sa{calcTotal(e){var t;let a=d.from(0),n=d.from(0);for(let s=0;s<e.length;s++){const i=e[s];if(!(null===(t=i.price)||void 0===t?void 0:t.usd))continue;let r;r=parseFloat(i.price.usd)<1?wt(parseFloat(i.price.usd).toFixed(10),10).mul(1e8):wt(i.price.usd,18);const o=wt(i.balance,18),d=wt(i.weight||"0",18),c=o.mul(r);n=n.add(c),a=a.add(d)}const s=e.reduce(((e,t)=>e.add(wt(t.weight||"0",18))),d.from(0));if(a.gt(0)){return Et(n.mul(s).div(a),36)}return"0"}}class ia{calcPoolSpotPrice(e,t,a){const n=e===a.address||t===a.address;if(n){const e={address:a.address,balance:a.totalShares,decimals:18,priceRate:"1",weight:"0"};a.tokens.push(e),a.tokensList.push(a.address)}const s=B.fromPool(a),i=s.parsePoolPairData(e,t),r=s._spotPriceAfterSwapExactTokenInForTokenOut(i,P).toString();return n&&(a.tokens.pop(),a.tokensList.pop()),r}}class ra{bptZeroPriceImpact(e,t){if(t.length!==e.tokensList.length)throw new $t(Gt.INPUT_LENGTH_MISMATCH);const{parsedBalances:a,parsedDecimals:n,parsedTotalShares:s,parsedWeights:i}=Le(e),r=BigInt(s),o=g(e.tokensList);let d=Oe;for(let e=0;e<o.length;e++){const s=n[e];let o,c;if(!s)throw new $t(Gt.MISSING_DECIMALS);o=Ne(BigInt(s)),c=Ce(BigInt(a[e]),o);const l=i[e];let p;if(!l)throw new $t(Gt.MISSING_WEIGHT);p=BigInt(l);d+=p*r/c*Ce(t[e],o)/ke}return d}calcPriceImpact(e,t,a,n){const s=this.bptZeroPriceImpact(e,t.map((e=>BigInt(e))));return jt(BigInt(a),s,n).toString()}}class oa{constructor(e=new aa,t=new na,a=new sa,n=new ia,s=new ra){this.exit=e,this.join=t,this.liquidity=a,this.spotPriceCalculator=n,this.priceImpactCalculator=s}}class da{constructor(){this.buildExitExactBPTIn=({exiter:e,pool:t,bptIn:a,slippage:n,shouldUnwrapNativeAsset:s,wrappedNativeAsset:r,singleTokenMaxOut:o})=>{if(!a.length||c(a,18).isNegative())throw new $t(Gt.INPUT_OUT_OF_BOUNDS);if(o&&o!==i&&!t.tokens.map((e=>e.address)).some((e=>Pt(e,o))))throw new $t(Gt.TOKEN_MISMATCH);if(!s&&o===i)throw new Error("shouldUnwrapNativeAsset and singleTokenMaxOut should not have conflicting values");if(t.tokens.some((e=>!e.decimals)))throw new $t(Gt.MISSING_DECIMALS);if(!t.amp)throw new $t(Gt.MISSING_AMP);if(t.tokens.some((e=>!e.priceRate)))throw new $t(Gt.MISSING_PRICE_RATE);const{parsedTokens:l,parsedBalances:p,parsedAmp:u,parsedPriceRates:y,parsedTotalShares:b,parsedSwapFee:f}=Le(t),m=l.map((e=>e===r?i:e)),h=new we(r),[T,g,I]=h.sortTokens(s?m:l,p,y),w=g.map(((e,t)=>d.from(e).mul(d.from(I[t])).div(c("1",18)).toString()));let E,x=Array(l.length).fill("0"),S=Array(l.length).fill("0");if(o){const e=T.indexOf(o),t=A.StableMathBigInt._calcTokenOutGivenExactBptIn(BigInt(u),w.map((e=>BigInt(e))),e,BigInt(a),BigInt(b),BigInt(f)).toString(),s=d.from(t).div(d.from(I[e])).mul(c("1",18)).toString();x[e]=s,S[e]=Ft(d.from(s),d.from(n)).toString(),E=Z.exitExactBPTInForOneTokenOut(a,e)}else{x=A.StableMathBigInt._calcTokensOutGivenExactBptIn(w.map((e=>BigInt(e))),BigInt(a),BigInt(b)).map((e=>e.toString())).map(((e,t)=>d.from(e).mul(c("1",18)).div(d.from(I[t])).toString())),S=x.map((e=>Ft(d.from(e),d.from(n)).toString())),E=Z.exitExactBPTInForTokensOut(a)}const P=Mt,_="exitPool",v={poolId:t.id,sender:e,recipient:e,exitPoolRequest:{assets:T,minAmountsOut:S,userData:E,toInternalBalance:!1}};return{to:P,functionName:_,attributes:v,data:L.createInterface().encodeFunctionData(_,[v.poolId,v.sender,v.recipient,v.exitPoolRequest]),expectedAmountsOut:x,minAmountsOut:S}},this.buildExitExactTokensOut=({exiter:e,pool:t,tokensOut:a,amountsOut:n,slippage:s,wrappedNativeAsset:i})=>{if(a.length!=n.length||a.length!=t.tokensList.length)throw new $t(Gt.INPUT_LENGTH_MISMATCH);if(t.tokens.some((e=>!e.decimals)))throw new $t(Gt.MISSING_DECIMALS);if(!t.amp)throw new $t(Gt.MISSING_AMP);if(t.tokens.some((e=>!e.priceRate)))throw new $t(Gt.MISSING_PRICE_RATE);const{parsedTokens:r,parsedBalances:o,parsedPriceRates:l,parsedAmp:p,parsedTotalShares:u,parsedSwapFee:y}=Le(t),b=new we(i),[,f,m]=b.sortTokens(r,o,l),[h,T]=b.sortTokens(a,n),g=T.map(((e,t)=>d.from(e).mul(d.from(m[t])).div(c("1",18)).toString())),I=f.map(((e,t)=>d.from(e).mul(d.from(m[t])).div(c("1",18)).toString())),w=A.StableMathBigInt._calcBptInGivenExactTokensOut(BigInt(p),I.map((e=>BigInt(e))),g.map((e=>BigInt(e))),BigInt(u),BigInt(y)).toString(),E=Rt(d.from(w),d.from(s)).toString(),x=Z.exitBPTInForExactTokensOut(T,E),S=T.map(((e,t)=>e===g[t]?e:d.from(e).sub(1).toString())),P=Mt,_="exitPool",v={poolId:t.id,sender:e,recipient:e,exitPoolRequest:{assets:h,minAmountsOut:S,userData:x,toInternalBalance:!1}};return{to:P,functionName:_,attributes:v,data:L.createInterface().encodeFunctionData(_,[v.poolId,v.sender,v.recipient,v.exitPoolRequest]),expectedBPTIn:w,maxBPTIn:E}}}}class ca{constructor(){this.buildJoin=({joiner:e,pool:t,tokensIn:a,amountsIn:n,slippage:s,wrappedNativeAsset:r})=>{if(a.length!=n.length||a.length!=t.tokensList.length)throw new $t(Gt.INPUT_LENGTH_MISMATCH);if(t.tokens.some((e=>!e.decimals)))throw new $t(Gt.MISSING_DECIMALS);if(!t.amp)throw new $t(Gt.MISSING_AMP);if(t.tokens.some((e=>!e.priceRate)))throw new $t(Gt.MISSING_PRICE_RATE);const{parsedTokens:o,parsedBalances:l,parsedPriceRates:p,parsedAmp:u,parsedTotalShares:y,parsedSwapFee:b}=Le(t),f=new we(r),[m,h]=f.sortTokens(a,n),[,T,g]=f.sortTokens(o,l,p),I=h.map(((e,t)=>d.from(e).mul(d.from(g[t])).div(c("1",18)).toString())),w=T.map(((e,t)=>d.from(e).mul(d.from(g[t])).div(c("1",18)).toString())),E=A.StableMathBigInt._calcBptOutGivenExactTokensIn(BigInt(u),w.map((e=>BigInt(e))),I.map((e=>BigInt(e))),BigInt(y),BigInt(b)).toString(),x=Ft(d.from(E),d.from(s)).toString(),S=Z.joinExactTokensInForBPTOut(h,x),P=Mt,_="joinPool",v={poolId:t.id,sender:e,recipient:e,joinPoolRequest:{assets:m,maxAmountsIn:h,userData:S,fromInternalBalance:!1}},O=L.createInterface().encodeFunctionData(_,[v.poolId,v.sender,v.recipient,v.joinPoolRequest]),B=n.filter(((e,t)=>a[t]===i));return{to:P,functionName:_,attributes:v,data:O,value:B[0]?d.from(B[0]):void 0,minBPTOut:x,expectedBPTOut:E}}}}class la{calcTotal(e){var t,a;let n=s,i=s;for(let a=0;a<e.length;a++){const s=e[a];if(!(null===(t=s.price)||void 0===t?void 0:t.usd))continue;const r=wt(s.price.usd.toString(),18),o=wt(s.balance,18),d=o.mul(r);i=i.add(d),n=n.add(o)}if(n.gt(0)){const t=i.div(n);for(let s=0;s<e.length;s++){const r=e[s];if(null===(a=r.price)||void 0===a?void 0:a.usd)continue;const o=wt(r.balance,18),d=o.mul(t);i=i.add(d),n=n.add(o)}}return l(i,36).toString()}}class pa{calcPoolSpotPrice(e,t,a){const n=k.fromPool(a),s=n.parsePoolPairData(e,t);return n._spotPriceAfterSwapExactTokenInForTokenOut(s,P).toString()}}class ua{bptZeroPriceImpact(e,t){if(t.length!==e.tokensList.length)throw new $t(Gt.INPUT_LENGTH_MISMATCH);const{parsedBalances:a,parsedDecimals:n,parsedPriceRates:s,parsedAmp:i,parsedTotalShares:r}=Le(e),o=BigInt(r),d=n.map((e=>{if(!e)throw new $t(Gt.MISSING_DECIMALS);return BigInt(e)})),c=s.map((e=>{if(!e)throw new $t(Gt.MISSING_PRICE_RATE);return BigInt(e)}));if(!i)throw new $t(Gt.MISSING_PRICE_RATE);const l=d.map((e=>Ne(BigInt(e)))),p=a.map(((e,t)=>Ce(BigInt(e),l[t]))),u=p.map(((e,t)=>Re.mulDownFixed(e,c[t])));let y=Oe;for(let a=0;a<p.length;a++){const n=Kt(BigInt(i),u,o,a)*c[a]/ke,s=Ne(BigInt(e.tokens[a].decimals));y+=n*Ce(t[a],s)/ke}return y}calcPriceImpact(e,t,a,n){const s=this.bptZeroPriceImpact(e,t.map((e=>BigInt(e))));return jt(BigInt(a),s,n).toString()}}class ya{constructor(e=new da,t=new ca,a=new la,n=new pa,s=new ua){this.exit=e,this.join=t,this.liquidity=a,this.spotPriceCalculator=n,this.priceImpactCalculator=s}}class ba{constructor(){this.buildExitExactBPTIn=({exiter:e,pool:t,bptIn:a,slippage:n,shouldUnwrapNativeAsset:s,wrappedNativeAsset:i,singleTokenMaxOut:r})=>{throw new Error("To be implemented")},this.buildExitExactTokensOut=({exiter:e,pool:t,tokensOut:a,amountsOut:n,slippage:s,wrappedNativeAsset:i})=>{throw new Error("To be implemented")}}}class fa{constructor(){this.buildJoin=({joiner:e,pool:t,tokensIn:a,amountsIn:n,slippage:s,wrappedNativeAsset:i})=>{throw new Error("To be implemented")}}}class ma{constructor(e=new ba,t=new fa,a=new Vt,n=new Zt,s=new zt){this.exit=e,this.join=t,this.liquidity=a,this.spotPriceCalculator=n,this.priceImpactCalculator=s}}class ha{constructor(){this.buildExitExactBPTIn=({exiter:e,pool:t,bptIn:a,slippage:n,shouldUnwrapNativeAsset:s,wrappedNativeAsset:i,singleTokenMaxOut:r})=>{throw new Error("To be implemented")},this.buildExitExactTokensOut=({exiter:e,pool:t,tokensOut:a,amountsOut:n,slippage:s,wrappedNativeAsset:i})=>{throw new Error("To be implemented")}}}class Ta{constructor(){this.buildJoin=({joiner:e,pool:t,tokensIn:a,amountsIn:n,slippage:s,wrappedNativeAsset:i})=>{throw new Error("To be implemented")}}}const ga=18,Ia=wt("1",ga);class wa{calcTotal(e){var t,a;let n=s,i=s;for(let a=0;a<e.length;a++){const s=e[a];if(!(null===(t=s.price)||void 0===t?void 0:t.usd))continue;const r=wt(s.price.usd.toString(),ga),o=wt(s.balance,ga),d=o.mul(r);i=i.add(d),n=n.add(o)}if(n.gt(0)){const t=i.div(n);for(let s=0;s<e.length;s++){const r=e[s];if(null===(a=r.price)||void 0===a?void 0:a.usd)continue;const o=wt(r.priceRate||"1",ga),d=wt(r.balance,ga).mul(o).div(Ia),c=d.mul(t);i=i.add(c),n=n.add(d)}}return Et(i,36)}}class Ea{calcPoolSpotPrice(e,t,a){const n=D.fromPool(a),s=n.parsePoolPairData(e,t);return n._spotPriceAfterSwapExactTokenInForTokenOut(s,P).toString()}}class xa{bptZeroPriceImpact(e,t){throw new Error("Linear Pool bptZeroPriceImpact Not Implented")}calcPriceImpact(e,t,a){throw new Error("Linear Pool Price Impact Not Implented")}}class Aa{constructor(e=new ha,t=new Ta,a=new wa,n=new Ea,s=new xa){this.exit=e,this.join=t,this.liquidity=a,this.spotPriceCalculator=n,this.priceImpactCalculator=s}}class Sa{constructor(e,t=new oa,a=new Jt,n=new ta,s=new ya,i=new ma,r=new Aa){this.weighted=t,this.stable=a,this.composableStable=n,this.metaStable=s,this.stablePhantom=i,this.linear=r}static from(e){switch(e){case"Weighted":case"Investment":case"LiquidityBootstrapping":return new oa;case"Stable":return new Jt;case"HighAmpComposableStable":case"ComposableStable":return new ta;case"MetaStable":return new ya;case"StablePhantom":return new ma;case"AaveLinear":case"EulerLinear":case"ERC4626Linear":return new Aa;default:throw new $t(Gt.UNSUPPORTED_POOL_TYPE)}}}class Pa{constructor(e,t){this.pools=e,this.tokenPrices=t}async getLiquidity(e){if(e.totalLiquidity)return e.totalLiquidity;const t=e.tokens.filter((t=>t.address!==e.address)),a=await Promise.all(t.map((async e=>{const t=await this.pools.findBy("address",e.address);if(!t)return;const a=wt(await this.getLiquidity(t),18),n=wt(t.totalShares,18),s=wt(e.balance,18),i=n.eq(0)?0:a.mul(s).div(n);return{address:t.address,liquidity:i.toString()}}))),n=a.reduce(((e,t)=>e.add(t?t.liquidity:d.from(0))),d.from(0)),s=t.filter((e=>!a.find((t=>(null==t?void 0:t.address)===e.address)))),i=await Promise.all(s.map((async e=>{var t;const a=await this.tokenPrices.find(e.address);return{address:e.address,decimals:e.decimals,priceRate:e.priceRate,price:(null==a?void 0:a.usd)&&a||{usd:null===(t=e.token)||void 0===t?void 0:t.latestUSDPrice},balance:e.balance,weight:e.weight}}))),r=wt(Sa.from(e.poolType).liquidity.calcTotal(i),18);return Et(n.add(r),18)}}async function _a(e,t,a,n){const s={sender:i,recipient:i,fromInternalBalance:!1,toInternalBalance:!1};try{return(await e.callStatic.queryBatchSwap(t,a,n,s)).map((e=>e.toString()))}catch(e){throw`queryBatchSwap call error: ${e}`}}async function va(e,t,a){a.fetchPools.fetchPools&&await e.fetchPools();const n=[],i=[];for(let t=0;t<a.tokensIn.length;t++){const r=await Oa(a.tokensIn[t],a.tokensOut[t],a.swapType,a.amounts[t].toString(),e);if(!r.returnAmount.gt(s))throw new $t(Gt.SWAP_ZERO_RETURN_AMOUNT);n.push(r.swaps),i.push(r.tokenAddresses)}const r=function(e,t){const a=[...new Set(e.flat())];t.forEach(((t,n)=>{t.forEach((t=>{t.assetInIndex=a.indexOf(e[n][t.assetInIndex]),t.assetOutIndex=a.indexOf(e[n][t.assetOutIndex])}))}));const n=t.flat();return{swaps:n,assets:a}}(i,n),o=a.swapType===kt.SwapExactIn?a.tokensOut:a.tokensIn,d=Array(o.length).fill("0");let c=Array(r.assets.length).fill("0");try{c=await _a(t,a.swapType,r.swaps,r.assets),c.length>0&&o.forEach(((e,t)=>{var a;return d[t]=null!==(a=c[r.assets.indexOf(e.toLowerCase())].toString())&&void 0!==a?a:s.toString()}))}catch(e){throw new $t(Gt.QUERY_BATCH_SWAP)}return{returnAmounts:d,swaps:r.swaps,assets:r.assets,deltas:c.map((e=>e.toString()))}}async function Oa(e,t,a,n,s){const i=a===kt.SwapExactIn?N.SwapExactIn:N.SwapExactOut;return await s.getSwaps(e.toLowerCase(),t.toLowerCase(),i,n)}var Ba=function(){return Ba=Object.assign||function(e){for(var t,a=1,n=arguments.length;a<n;a++)for(var s in t=arguments[a])Object.prototype.hasOwnProperty.call(t,s)&&(e[s]=t[s]);return e},Ba.apply(this,arguments)},ka=new Map,Da=new Map,Na=!0,Ca=!1;function Fa(e){return e.replace(/[\s,]+/g," ").trim()}function Ra(e){var t=new Set,a=[];return e.definitions.forEach((function(e){if("FragmentDefinition"===e.kind){var n=e.name.value,s=Fa((r=e.loc).source.body.substring(r.start,r.end)),i=Da.get(n);i&&!i.has(s)?Na&&console.warn("Warning: fragment with name "+n+" already exists.\ngraphql-tag enforces all fragment names across your application to be unique; read more about\nthis in the docs: http://dev.apollodata.com/core/fragments.html#unique-names"):i||Da.set(n,i=new Set),i.add(s),t.has(s)||(t.add(s),a.push(e))}else a.push(e);var r})),Ba(Ba({},e),{definitions:a})}function Ma(e){var t=Fa(e);if(!ka.has(t)){var a=V(e,{experimentalFragmentVariables:Ca,allowLegacyFragmentVariables:Ca});if(!a||"Document"!==a.kind)throw new Error("Not a valid GraphQL document.");ka.set(t,function(e){var t=new Set(e.definitions);t.forEach((function(e){e.loc&&delete e.loc,Object.keys(e).forEach((function(a){var n=e[a];n&&"object"==typeof n&&t.add(n)}))}));var a=e.loc;return a&&(delete a.startToken,delete a.endToken),e}(Ra(a)))}return ka.get(t)}function La(e){for(var t=[],a=1;a<arguments.length;a++)t[a-1]=arguments[a];"string"==typeof e&&(e=[e]);var n=e[0];return t.forEach((function(t,a){t&&"Document"===t.kind?n+=t.loc.source.body:n+=t,n+=e[a+1]})),Ma(n)}var Ua,Ga=La,$a=function(){ka.clear(),Da.clear()},qa=function(){Na=!1},Wa=function(){Ca=!0},Va=function(){Ca=!1};(Ua=La||(La={})).gql=Ga,Ua.resetCaches=$a,Ua.disableFragmentWarnings=qa,Ua.enableExperimentalFragmentVariables=Wa,Ua.disableExperimentalFragmentVariables=Va,La.default=La;var Ha,ja,Xa,Ka,Ya,Ja,Za,za,Qa,en,tn,an,nn,sn,rn,on,dn,cn,ln,pn,un,yn,bn,fn,mn,hn,Tn,gn=La;!function(e){e.EndAmp="endAmp",e.EndTimestamp="endTimestamp",e.Id="id",e.PoolId="poolId",e.ScheduledTimestamp="scheduledTimestamp",e.StartAmp="startAmp",e.StartTimestamp="startTimestamp"}(Ha||(Ha={})),function(e){e.Id="id",e.PoolCount="poolCount",e.Timestamp="timestamp",e.TotalLiquidity="totalLiquidity",e.TotalSwapCount="totalSwapCount",e.TotalSwapFee="totalSwapFee",e.TotalSwapVolume="totalSwapVolume",e.Vault="vault"}(ja||(ja={})),function(e){e.Id="id",e.PoolCount="poolCount",e.Pools="pools",e.TotalLiquidity="totalLiquidity",e.TotalSwapCount="totalSwapCount",e.TotalSwapFee="totalSwapFee",e.TotalSwapVolume="totalSwapVolume"}(Xa||(Xa={})),function(e){e.EndTimestamp="endTimestamp",e.EndWeights="endWeights",e.Id="id",e.PoolId="poolId",e.ScheduledTimestamp="scheduledTimestamp",e.StartTimestamp="startTimestamp",e.StartWeights="startWeights"}(Ka||(Ka={})),function(e){e.Exit="Exit",e.Join="Join"}(Ya||(Ya={})),function(e){e.Amounts="amounts",e.Id="id",e.Pool="pool",e.Sender="sender",e.Timestamp="timestamp",e.Tx="tx",e.Type="type",e.User="user",e.ValueUsd="valueUSD"}(Ja||(Ja={})),function(e){e.Asset="asset",e.Block="block",e.Id="id",e.PoolId="poolId",e.Price="price",e.PricingAsset="pricingAsset"}(Za||(Za={})),function(e){e.CashDelta="cashDelta",e.Id="id",e.ManagedDelta="managedDelta",e.PoolTokenId="poolTokenId",e.Timestamp="timestamp",e.Type="type"}(za||(za={})),function(e){e.Deposit="Deposit",e.Update="Update",e.Withdraw="Withdraw"}(Qa||(Qa={})),function(e){e.Asc="asc",e.Desc="desc"}(en||(en={})),function(e){e.Id="id",e.Pool="pool"}(tn||(tn={})),function(e){e.Block="block",e.Id="id",e.PoolId="poolId",e.PoolLiquidity="poolLiquidity",e.PoolShareValue="poolShareValue",e.PoolTotalShares="poolTotalShares",e.PricingAsset="pricingAsset"}(an||(an={})),function(e){e.Balance="balance",e.Id="id",e.PoolId="poolId",e.UserAddress="userAddress"}(nn||(nn={})),function(e){e.Amounts="amounts",e.HoldersCount="holdersCount",e.Id="id",e.Liquidity="liquidity",e.Pool="pool",e.SwapFees="swapFees",e.SwapVolume="swapVolume",e.SwapsCount="swapsCount",e.Timestamp="timestamp",e.TotalShares="totalShares"}(sn||(sn={})),function(e){e.Address="address",e.AssetManager="assetManager",e.Balance="balance",e.CashBalance="cashBalance",e.Decimals="decimals",e.Id="id",e.Index="index",e.IsExemptFromYieldProtocolFee="isExemptFromYieldProtocolFee",e.ManagedBalance="managedBalance",e.Managements="managements",e.Name="name",e.PoolId="poolId",e.PriceRate="priceRate",e.Symbol="symbol",e.Token="token",e.Weight="weight"}(rn||(rn={})),function(e){e.Address="address",e.Alpha="alpha",e.Amp="amp",e.BaseToken="baseToken",e.Beta="beta",e.C="c",e.CreateTime="createTime",e.DSq="dSq",e.Delta="delta",e.Epsilon="epsilon",e.ExpiryTime="expiryTime",e.Factory="factory",e.HistoricalValues="historicalValues",e.HoldersCount="holdersCount",e.Id="id",e.IsInRecoveryMode="isInRecoveryMode",e.IsPaused="isPaused",e.Lambda="lambda",e.LowerTarget="lowerTarget",e.MainIndex="mainIndex",e.ManagementFee="managementFee",e.Name="name",e.OracleEnabled="oracleEnabled",e.Owner="owner",e.PoolType="poolType",e.PoolTypeVersion="poolTypeVersion",e.PriceRateProviders="priceRateProviders",e.PrincipalToken="principalToken",e.ProtocolAumFeeCache="protocolAumFeeCache",e.ProtocolId="protocolId",e.ProtocolSwapFeeCache="protocolSwapFeeCache",e.ProtocolYieldFeeCache="protocolYieldFeeCache",e.Root3Alpha="root3Alpha",e.S="s",e.Shares="shares",e.Snapshots="snapshots",e.SqrtAlpha="sqrtAlpha",e.SqrtBeta="sqrtBeta",e.StrategyType="strategyType",e.SwapEnabled="swapEnabled",e.SwapFee="swapFee",e.Swaps="swaps",e.SwapsCount="swapsCount",e.Symbol="symbol",e.TauAlphaX="tauAlphaX",e.TauAlphaY="tauAlphaY",e.TauBetaX="tauBetaX",e.TauBetaY="tauBetaY",e.Tokens="tokens",e.TokensList="tokensList",e.TotalLiquidity="totalLiquidity",e.TotalShares="totalShares",e.TotalSwapFee="totalSwapFee",e.TotalSwapVolume="totalSwapVolume",e.TotalWeight="totalWeight",e.Tx="tx",e.U="u",e.UnitSeconds="unitSeconds",e.UpperTarget="upperTarget",e.V="v",e.VaultId="vaultID",e.W="w",e.WeightUpdates="weightUpdates",e.WrappedIndex="wrappedIndex",e.Z="z"}(on||(on={})),function(e){e.Address="address",e.CacheDuration="cacheDuration",e.CacheExpiry="cacheExpiry",e.Id="id",e.LastCached="lastCached",e.PoolId="poolId",e.Rate="rate",e.Token="token"}(dn||(dn={})),function(e){e.EndSwapFeePercentage="endSwapFeePercentage",e.EndTimestamp="endTimestamp",e.Id="id",e.Pool="pool",e.ScheduledTimestamp="scheduledTimestamp",e.StartSwapFeePercentage="startSwapFeePercentage",e.StartTimestamp="startTimestamp"}(cn||(cn={})),function(e){e.Caller="caller",e.Id="id",e.PoolId="poolId",e.Timestamp="timestamp",e.TokenAmountIn="tokenAmountIn",e.TokenAmountOut="tokenAmountOut",e.TokenIn="tokenIn",e.TokenInSym="tokenInSym",e.TokenOut="tokenOut",e.TokenOutSym="tokenOutSym",e.Tx="tx",e.UserAddress="userAddress",e.ValueUsd="valueUSD"}(ln||(ln={})),function(e){e.Amount="amount",e.Asset="asset",e.Block="block",e.Id="id",e.PoolId="poolId",e.Price="price",e.PricingAsset="pricingAsset",e.Timestamp="timestamp"}(pn||(pn={})),function(e){e.Id="id",e.Timestamp="timestamp",e.Token="token",e.TotalBalanceNotional="totalBalanceNotional",e.TotalBalanceUsd="totalBalanceUSD",e.TotalSwapCount="totalSwapCount",e.TotalVolumeNotional="totalVolumeNotional",e.TotalVolumeUsd="totalVolumeUSD"}(un||(un={})),function(e){e.Address="address",e.Decimals="decimals",e.Id="id",e.LatestFxPrice="latestFXPrice",e.LatestPrice="latestPrice",e.LatestUsdPrice="latestUSDPrice",e.Name="name",e.Pool="pool",e.Symbol="symbol",e.TotalBalanceNotional="totalBalanceNotional",e.TotalBalanceUsd="totalBalanceUSD",e.TotalSwapCount="totalSwapCount",e.TotalVolumeNotional="totalVolumeNotional",e.TotalVolumeUsd="totalVolumeUSD"}(yn||(yn={})),function(e){e.Id="id",e.Pair="pair",e.Timestamp="timestamp",e.TotalSwapFee="totalSwapFee",e.TotalSwapVolume="totalSwapVolume"}(bn||(bn={})),function(e){e.Id="id",e.Token0="token0",e.Token1="token1",e.TotalSwapFee="totalSwapFee",e.TotalSwapVolume="totalSwapVolume"}(fn||(fn={})),function(e){e.Balance="balance",e.Id="id",e.Token="token",e.UserAddress="userAddress"}(mn||(mn={})),function(e){e.Id="id",e.SharesOwned="sharesOwned",e.Swaps="swaps",e.UserInternalBalances="userInternalBalances"}(hn||(hn={})),function(e){e.Allow="allow",e.Deny="deny"}(Tn||(Tn={}));const In=gn`
|
|
1
|
+
import{defaultAbiCoder as e,Interface as t,FunctionFragment as a}from"@ethersproject/abi";import{WeiPerEther as n,Zero as s,AddressZero as i,MaxUint256 as r,MaxInt256 as o}from"@ethersproject/constants";import{BigNumber as d,parseFixed as c,formatFixed as l}from"@ethersproject/bignumber";import{getAddress as p}from"@ethersproject/address";import{Contract as u}from"@ethersproject/contracts";import{hexZeroPad as y,hexValue as b,splitSignature as f}from"@ethersproject/bytes";import{Signer as m}from"@ethersproject/abstract-signer";import h from"axios";import{mergeWith as T,cloneDeep as g,set as I,parseInt as w,keyBy as E,sum as x}from"lodash";import*as A from"@defiverse/sor";import{StablePool as S,ZERO as P,PhantomStablePool as _,StableMathBigInt as v,WeightedMaths as O,WeightedPool as B,MetaStablePool as k,LinearPool as D,SwapTypes as N,PoolFilter as C,SOR as F,parseToPoolsDict as R,getSpotPriceAfterSwapForPath as M}from"@defiverse/sor";export{PoolFilter,RouteProposer,SOR,SwapTypes,formatSequence,getTokenAddressesForSwap,parseToPoolsDict,phantomStableBPTForTokensZeroPriceImpact,queryBatchSwapTokensIn,queryBatchSwapTokensOut,stableBPTForTokensZeroPriceImpact,weightedBPTForTokensZeroPriceImpact}from"@defiverse/sor";import{Vault__factory as L,BalancerHelpers__factory as U,LidoRelayer__factory as G,WeightedPoolFactory__factory as $}from"@balancer-labs/typechain";import{JsonRpcProvider as q}from"@ethersproject/providers";import{GraphQLClient as W}from"graphql-request";import{parse as V}from"graphql";import{jsonToGraphQLQuery as H}from"json-to-graphql-query";var j,X,K,Y,J;!function(e){e[e.INIT=0]="INIT",e[e.EXACT_TOKENS_IN_FOR_BPT_OUT=1]="EXACT_TOKENS_IN_FOR_BPT_OUT",e[e.TOKEN_IN_FOR_EXACT_BPT_OUT=2]="TOKEN_IN_FOR_EXACT_BPT_OUT"}(j||(j={})),function(e){e[e.INIT=0]="INIT",e[e.COLLECT_PROTOCOL_FEES=1]="COLLECT_PROTOCOL_FEES"}(X||(X={})),function(e){e[e.EXACT_BPT_IN_FOR_ONE_TOKEN_OUT=0]="EXACT_BPT_IN_FOR_ONE_TOKEN_OUT",e[e.EXACT_BPT_IN_FOR_TOKENS_OUT=1]="EXACT_BPT_IN_FOR_TOKENS_OUT",e[e.BPT_IN_FOR_EXACT_TOKENS_OUT=2]="BPT_IN_FOR_EXACT_TOKENS_OUT"}(K||(K={}));class Z{constructor(){}}Z.joinInit=t=>e.encode(["uint256","uint256[]"],[j.INIT,t]),Z.joinCollectProtocolFees=()=>e.encode(["uint256"],[X.COLLECT_PROTOCOL_FEES]),Z.joinExactTokensInForBPTOut=(t,a)=>e.encode(["uint256","uint256[]","uint256"],[j.EXACT_TOKENS_IN_FOR_BPT_OUT,t,a]),Z.joinTokenInForExactBPTOut=(t,a)=>e.encode(["uint256","uint256","uint256"],[j.TOKEN_IN_FOR_EXACT_BPT_OUT,t,a]),Z.exitExactBPTInForOneTokenOut=(t,a)=>e.encode(["uint256","uint256","uint256"],[K.EXACT_BPT_IN_FOR_ONE_TOKEN_OUT,t,a]),Z.exitExactBPTInForTokensOut=t=>e.encode(["uint256","uint256"],[K.EXACT_BPT_IN_FOR_TOKENS_OUT,t]),Z.exitBPTInForExactTokensOut=(t,a)=>e.encode(["uint256","uint256[]","uint256"],[K.BPT_IN_FOR_EXACT_TOKENS_OUT,t,a]),function(e){e[e.INIT=0]="INIT",e[e.EXACT_TOKENS_IN_FOR_BPT_OUT=1]="EXACT_TOKENS_IN_FOR_BPT_OUT",e[e.TOKEN_IN_FOR_EXACT_BPT_OUT=2]="TOKEN_IN_FOR_EXACT_BPT_OUT",e[e.ALL_TOKENS_IN_FOR_EXACT_BPT_OUT=3]="ALL_TOKENS_IN_FOR_EXACT_BPT_OUT"}(Y||(Y={})),function(e){e[e.EXACT_BPT_IN_FOR_ONE_TOKEN_OUT=0]="EXACT_BPT_IN_FOR_ONE_TOKEN_OUT",e[e.EXACT_BPT_IN_FOR_TOKENS_OUT=1]="EXACT_BPT_IN_FOR_TOKENS_OUT",e[e.BPT_IN_FOR_EXACT_TOKENS_OUT=2]="BPT_IN_FOR_EXACT_TOKENS_OUT",e[e.MANAGEMENT_FEE_TOKENS_OUT=3]="MANAGEMENT_FEE_TOKENS_OUT"}(J||(J={}));class z{constructor(){}}z.joinInit=t=>e.encode(["uint256","uint256[]"],[Y.INIT,t]),z.joinExactTokensInForBPTOut=(t,a)=>e.encode(["uint256","uint256[]","uint256"],[Y.EXACT_TOKENS_IN_FOR_BPT_OUT,t,a]),z.joinTokenInForExactBPTOut=(t,a)=>e.encode(["uint256","uint256","uint256"],[Y.TOKEN_IN_FOR_EXACT_BPT_OUT,t,a]),z.joinAllTokensInForExactBPTOut=t=>e.encode(["uint256","uint256"],[Y.ALL_TOKENS_IN_FOR_EXACT_BPT_OUT,t]),z.exitExactBPTInForOneTokenOut=(t,a)=>e.encode(["uint256","uint256","uint256"],[J.EXACT_BPT_IN_FOR_ONE_TOKEN_OUT,t,a]),z.exitExactBPTInForTokensOut=t=>e.encode(["uint256","uint256"],[J.EXACT_BPT_IN_FOR_TOKENS_OUT,t]),z.exitBPTInForExactTokensOut=(t,a)=>e.encode(["uint256","uint256[]","uint256"],[J.BPT_IN_FOR_EXACT_TOKENS_OUT,t,a]);class Q{constructor(){}}Q.exitForManagementFees=()=>e.encode(["uint256"],[J.MANAGEMENT_FEE_TOKENS_OUT]);function ee(e){if(100==e.length)return Array(100).fill(n.div(100));const t=e.reduce(((e,t)=>e.add(t)),s);if(t.eq(n))return e;const a=[];let i=s;for(let s=0;s<e.length;s++)s<e.length-1?(a[s]=e[s].mul(n).div(t),i=i.add(a[s])):a[s]=n.sub(i);return a}const te=e=>{const t=e.reduce(((e,t)=>e.add(t)),s);return t.eq(n)};var ae,ne;!function(e){e[e.INIT=0]="INIT",e[e.EXACT_TOKENS_IN_FOR_BPT_OUT=1]="EXACT_TOKENS_IN_FOR_BPT_OUT",e[e.TOKEN_IN_FOR_EXACT_BPT_OUT=2]="TOKEN_IN_FOR_EXACT_BPT_OUT"}(ae||(ae={})),function(e){e[e.EXACT_BPT_IN_FOR_ONE_TOKEN_OUT=0]="EXACT_BPT_IN_FOR_ONE_TOKEN_OUT",e[e.BPT_IN_FOR_EXACT_TOKENS_OUT=1]="BPT_IN_FOR_EXACT_TOKENS_OUT"}(ne||(ne={}));class se{constructor(){}}se.joinInit=t=>e.encode(["uint256","uint256[]"],[ae.INIT,t]),se.joinCollectProtocolFees=()=>e.encode(["uint256"],[X.COLLECT_PROTOCOL_FEES]),se.joinExactTokensInForBPTOut=(t,a)=>e.encode(["uint256","uint256[]","uint256"],[ae.EXACT_TOKENS_IN_FOR_BPT_OUT,t,a]),se.joinTokenInForExactBPTOut=(t,a)=>e.encode(["uint256","uint256","uint256"],[ae.TOKEN_IN_FOR_EXACT_BPT_OUT,t,a]),se.exitExactBPTInForOneTokenOut=(t,a)=>e.encode(["uint256","uint256","uint256"],[ne.EXACT_BPT_IN_FOR_ONE_TOKEN_OUT,t,a]),se.exitBPTInForExactTokensOut=(t,a)=>e.encode(["uint256","uint256[]","uint256"],[ne.BPT_IN_FOR_EXACT_TOKENS_OUT,t,a]);var ie="production"===process.env.NODE_ENV,re="Invariant failed";function oe(e,t){if(!e){if(ie)throw new Error(re);var a="function"==typeof t?t():t,n=a?"".concat(re,": ").concat(a):re;throw new Error(n)}}const de=e=>({address:ce(e),specialization:le(e),nonce:pe(e)}),ce=e=>(oe(66===e.length,"Invalid poolId length"),e.slice(0,42)),le=e=>{oe(66===e.length,"Invalid poolId length");const t=parseInt(e[45]);return oe(t<3,"Invalid pool specialization"),t},pe=e=>(oe(66===e.length,"Invalid poolId length"),d.from(`0x${e.slice(46)}`));var ue;!function(e){e[e.MAINNET=1]="MAINNET",e[e.ROPSTEN=3]="ROPSTEN",e[e.RINKEBY=4]="RINKEBY",e[e.GOERLI=5]="GOERLI",e[e["GÖRLI"]=5]="GÖRLI",e[e.OPTIMISM=10]="OPTIMISM",e[e.KOVAN=42]="KOVAN",e[e.GNOSIS=100]="GNOSIS",e[e.POLYGON=137]="POLYGON",e[e.ARBITRUM=42161]="ARBITRUM",e[e.DEFIVERSE=16116]="DEFIVERSE",e[e.DEFIVERSE_TESTNET=17117]="DEFIVERSE_TESTNET",e[e.OASYS=248]="OASYS",e[e.OASYS_TESTNET=9372]="OASYS_TESTNET",e[e.MEGAETH_TESTNET=6343]="MEGAETH_TESTNET",e[e.MEGAETH_MAINNET=4326]="MEGAETH_MAINNET"}(ue||(ue={}));const ye=1e4,be=1e6,fe={IdsMap:{},Pagination:{PerPage:10,PerPool:10,PerPoolInitial:5},DelegateOwner:"0xba1ba1ba1ba1ba1ba1ba1ba1ba1ba1ba1ba1ba1b",ZeroAddress:"0x0000000000000000000000000000000000000000",DynamicFees:{Gauntlet:[]},BlockList:[""],ExcludedPoolTypes:["Element","AaveLinear","Linear","ERC4626Linear"],Stable:{AllowList:["0x06df3b2bbb68adc8b0e302443692037ed9f91b42000000000000000000000063","0xfeadd389a5c427952d8fdb8057d6c8ba1156cc56000000000000000000000066","0x9f19a375709baf0e8e35c2c5c65aca676c4c719100000000000000000000006e","0x32296969ef14eb0c6d29669c550d4a0449130230000200000000000000000080","0x1e19cf2d73a72ef1332c882f20534b6519be0276000200000000000000000112","0x06df3b2bbb68adc8b0e302443692037ed9f91b42000000000000000000000012","0xfeadd389a5c427952d8fdb8057d6c8ba1156cc5600020000000000000000001e","0x6b15a01b5d46a5321b627bd7deef1af57bc629070000000000000000000000d4","0xe08590bde837eb9b2d42aa1196469d6e08fe96ec000200000000000000000101","0xb4c23af48e79f73e3a7e36c0e54eb38e1ce1755e0002000000000000000000d3","0x9be7de742865d021c0e8fb9d64311b2c040c1ec1000200000000000000000012","0x9f19a375709baf0e8e35c2c5c65aca676c4c7191000200000000000000000022","0x1533a3278f3f9141d5f820a184ea4b017fce2382000000000000000000000016","0xf38cf113d2d4f60c36cbd95af2f48a9a0167045a00000000000000000000005b","0x0d34e5dd4d8f043557145598e4e2dc286b35fd4f000000000000000000000068","0x386b5d43ba8b97c43d4afb4cdae7877a1b295e8a000000000000000000000020","0x5028497af0c9a54ea8c6d42a054c0341b9fc616800020000000000000000007b","0x7b50775383d3d6f0215a8f290f2c9e2eebbeceb20000000000000000000000fe","0x8fd162f338b770f7e879030830cde9173367f3010000000000000000000004d8","0xd387dfd3a786e7caa06e6cf0c675352c7ffff30400000000000000000000063e","0xaf5e0b5425de1f5a630a8cb5aa9d97b8141c908d000200000000000000000366"]},Investment:{AllowList:["0x4fd63966879300cafafbb35d157dc5229278ed23000100000000000000000169","0x37a6fc079cad790e556baedda879358e076ef1b3000100000000000000000348","0xccf5575570fac94cec733a58ff91bb3d073085c70002000000000000000000af","0xe7b1d394f3b40abeaa0b64a545dbcf89da1ecb3f00010000000000000000009a","0x3b40d7d5ae25df2561944dd68b252016c4c7b2800001000000000000000000c2"]},Factories:{"0xa5bf2ddf098bb0ef6d120c98217dd6b141c74ee0":"oracleWeightedPool","0x8e9aa87e45e92bad84d5f8dd1bff34fb92637de9":"weightedPool","0xc66ba2b6595d3613ccab350c886ace23866ede24":"stablePool","0x67d27634e44793fe63c467035e31ea8635117cd4":"stablePool","0x751dfdace1ad995ff13c927f6f761c6604532c79":"stablePool","0x590e544e7ca956bb878f8c873e82e65550d67d2f":"stablePool","0x7dfdef5f355096603419239ce743bfaf1120312b":"weightedPool","0xcf0a32bbef8f064969f21f7e02328fb577382018":"weightedPool","0x2433477a10fc5d31b9513c638f19ee85caed53fd":"stablePool","0xebfd5681977e38af65a7487dc70b8221d089ccad":"stablePool","0x751a0bc0e3f75b38e01cf25bfce7ff36de1c87de":"liquidityBootstrappingPool","0x0f3e0c4218b7b0108a3643cfe9d3ec0d4f57c54e":"liquidityBootstrappingPool","0x142b9666a0a3a30477b052962dda81547e7029ab":"liquidityBootstrappingPool","0x1802953277fd955f9a254b80aa0582f193cf1d77":"liquidityBootstrappingPool","0x48767f9f868a4a7b86a90736632f6e44c2df7fa9":"managedPool","0x0f7bb7ce7b6ed9366f9b6b910adefe72dc538193":"managedPool","0xacd615b3705b9c880e4e7293f1030b34e57b4c1c":"managedPool","0xb08e16cfc07c684daa2f93c70323badb2a6cbfd2":"boostedPool","0xdae7e32adc5d490a43ccba1f0c736033f2b4efca":"boostedPool","0xc128a9954e6c874ea3d62ce62b468ba073093f25":"boostedPool","0x6c7f4d97269ece163fd08d5c2584a21e4a33934c":"boostedPool"},Stakable:{AllowList:[]},Metadata:{"0x7b50775383d3d6f0215a8f290f2c9e2eebbeceb20000000000000000000000fe":{name:"Balancer Boosted Aave USD",hasIcon:!0},"0x8fd162f338b770f7e879030830cde9173367f3010000000000000000000004d8":{name:"Balancer Boosted Aave USD",hasIcon:!0},"0xd387dfd3a786e7caa06e6cf0c675352c7ffff30400000000000000000000063e":{name:"Balancer Stable USD",hasIcon:!0}}},me={[ue.KOVAN]:{IdsMap:{staBAL:"0xd387dfd3a786e7caa06e6cf0c675352c7ffff30400000000000000000000063e",bbAaveUSD:{v1:"0x8fd162f338b770f7e879030830cde9173367f3010000000000000000000004d8",v2:""},veBAL:"0xdc2ecfdf2688f92c85064be0b929693acc6dbca6000200000000000000000701"},Pagination:{PerPage:10,PerPool:10,PerPoolInitial:5},DelegateOwner:"0xba1ba1ba1ba1ba1ba1ba1ba1ba1ba1ba1ba1ba1b",ZeroAddress:"0x0000000000000000000000000000000000000000",DynamicFees:{Gauntlet:[]},BlockList:["0x22d398c68030ef6b1c55321cca6e0cecc5c93b2f000200000000000000000678","0xca1eb8624be8e11418f629559321587197557e0c000200000000000000000682","0xa21da5768186c1bc0f56dd72aa94672d77bdf23e00020000000000000000067a","0x7f9db0d15eea32e205b7df0fa5184f4a8a905abb000200000000000000000683","0x72c5a86831f019df6fac146fc14ef60ebe0d5f2600020000000000000000067f","0x542b9f6fd4500b94d453974d8c70783ef794ff6a00020000000000000000067c","0x47f9309a8c5a68a93ac27a4cccc0e222cd3adfa2000200000000000000000684","0x3f3050a0fe84778aeff96906c9218b318f924d22000200000000000000000680","0x31e61587b5dc148ae42ae323655fb8d7af7bb86600020000000000000000067d","0x28efa7f86341aa0ad534bdfb033edb4f4ac6adf700020000000000000000067e","0x10ee90b9ff4b9a44a773107280c0ce083619286800020000000000000000067b"],ExcludedPoolTypes:["Element","AaveLinear","Linear","ERC4626Linear"],Stable:{AllowList:["0x6b15a01b5d46a5321b627bd7deef1af57bc629070000000000000000000000d4","0xe08590bde837eb9b2d42aa1196469d6e08fe96ec000200000000000000000101","0xb4c23af48e79f73e3a7e36c0e54eb38e1ce1755e0002000000000000000000d3","0x8fd162f338b770f7e879030830cde9173367f3010000000000000000000004d8","0xd387dfd3a786e7caa06e6cf0c675352c7ffff30400000000000000000000063e"]},Investment:{AllowList:["0x4fd63966879300cafafbb35d157dc5229278ed23000100000000000000000169","0x37a6fc079cad790e556baedda879358e076ef1b3000100000000000000000348"]},Factories:{"0xa5bf2ddf098bb0ef6d120c98217dd6b141c74ee0":"oracleWeightedPool","0x8e9aa87e45e92bad84d5f8dd1bff34fb92637de9":"weightedPool","0xc66ba2b6595d3613ccab350c886ace23866ede24":"stablePool","0x1b57f637ce3408f1f834b0b70f9a595b062daea7":"liquidityBootstrappingPool","0x751dfdace1ad995ff13c927f6f761c6604532c79":"stablePool","0x590e544e7ca956bb878f8c873e82e65550d67d2f":"stablePool","0xb08e16cfc07c684daa2f93c70323badb2a6cbfd2":"managedPool","0x6c7f4d97269ece163fd08d5c2584a21e4a33934c":"boostedPool","0x1f47ab83420cd1f818df9acbd6ee68341bb91592":"stablePool"},Stakable:{AllowList:["0xf767f0a3fcf1eafec2180b7de79d0c559d7e7e370001000000000000000003e3","0xdc2ecfdf2688f92c85064be0b929693acc6dbca6000200000000000000000701","0x647c1fd457b95b75d0972ff08fe01d7d7bda05df000200000000000000000001","0x8fd162f338b770f7e879030830cde9173367f3010000000000000000000004d8"]},Metadata:{"0x8fd162f338b770f7e879030830cde9173367f3010000000000000000000004d8":{name:"Balancer Boosted Aave USD",hasIcon:!1},"0xd387dfd3a786e7caa06e6cf0c675352c7ffff30400000000000000000000063e":{name:"Balancer Stable USD",hasIcon:!1}}},[ue.GOERLI]:{IdsMap:{staBAL:"0xdcdd4a3d36dec8d57594e89763d069a7e9b223e2000000000000000000000062",bbAaveUSD:{v1:"0x13acd41c585d7ebb4a9460f7c8f50be60dc080cd00000000000000000000005f",v2:"0x3d5981bdd8d3e49eb7bbdc1d2b156a3ee019c18e0000000000000000000001a7"},veBAL:"0xf8a0623ab66f985effc1c69d05f1af4badb01b00000200000000000000000060"},Pagination:{PerPage:10,PerPool:10,PerPoolInitial:5},DelegateOwner:"0xba1ba1ba1ba1ba1ba1ba1ba1ba1ba1ba1ba1ba1b",ZeroAddress:"0x0000000000000000000000000000000000000000",DynamicFees:{Gauntlet:[]},BlockList:["0x22d398c68030ef6b1c55321cca6e0cecc5c93b2f000200000000000000000678"],ExcludedPoolTypes:["Element","AaveLinear","Linear","ERC4626Linear"],Stable:{AllowList:["0x13acd41c585d7ebb4a9460f7c8f50be60dc080cd00000000000000000000005f","0xb60e46d90f2de35f7062a27d3a98749414036d5d000200000000000000000061","0xdcdd4a3d36dec8d57594e89763d069a7e9b223e2000000000000000000000062","0xc957b1acceb21707b782eb8eee2ed8e20088463d000200000000000000000076","0x3d5981bdd8d3e49eb7bbdc1d2b156a3ee019c18e0000000000000000000001a7","0x14f93df8a4e37bfdb49d2cec4789df7a010603d700000000000000000000011d","0x00a62d31b6c776b6813543bc99ff265f7222dbe100000000000000000000011e","0x0c925fce89a22e36ebd9b3c6e0262234e853d2f600000000000000000000019c"]},Investment:{AllowList:[]},Factories:{"0xa5bf2ddf098bb0ef6d120c98217dd6b141c74ee0":"oracleWeightedPool","0x8e9aa87e45e92bad84d5f8dd1bff34fb92637de9":"weightedPool","0x44afeb87c871d8fea9398a026dea2bd3a13f5769":"stablePool","0xa55f73e2281c60206ba43a3590db07b8955832be":"stablePool","0xb48cc42c45d262534e46d5965a9ac496f1b7a830":"liquidityBootstrappingPool","0xb0c726778c3ae4b3454d85557a48e8fa502bdd6a":"liquidityBootstrappingPool","0x41e9036ae350baedcc7107760a020dca3c0731ec":"boostedPool","0xb848f50141f3d4255b37ac288c25c109104f2158":"composableStablePool","0x94f68b54191f62f781fe8298a8a5fa3ed772d227":"weightedPool"},Stakable:{AllowList:["0x16faf9f73748013155b7bc116a3008b57332d1e600020000000000000000005b","0x13acd41c585d7ebb4a9460f7c8f50be60dc080cd00000000000000000000005f","0xdcdd4a3d36dec8d57594e89763d069a7e9b223e2000000000000000000000062","0x67f8fcb9d3c463da05de1392efdbb2a87f8599ea000200000000000000000059"]},Metadata:{"0x13acd41c585d7ebb4a9460f7c8f50be60dc080cd00000000000000000000005f":{name:"Balancer Boosted Aave USD",hasIcon:!1}}},[ue.MAINNET]:{IdsMap:{staBAL:"0x06df3b2bbb68adc8b0e302443692037ed9f91b42000000000000000000000063",bbAaveUSD:{v1:"0x7b50775383d3d6f0215a8f290f2c9e2eebbeceb20000000000000000000000fe",v2:"0xa13a9247ea42d743238089903570127dda72fe4400000000000000000000035d"},veBAL:"0x5c6ee304399dbdb9c8ef030ab642b10820db8f56000200000000000000000014"},Pagination:{PerPage:10,PerPool:10,PerPoolInitial:5},DelegateOwner:"0xba1ba1ba1ba1ba1ba1ba1ba1ba1ba1ba1ba1ba1b",ZeroAddress:"0x0000000000000000000000000000000000000000",DynamicFees:{Gauntlet:[]},BlockList:[""],ExcludedPoolTypes:["Element","AaveLinear","Linear","ERC4626Linear","Gyro2","Gyro3"],Stable:{AllowList:["0x06df3b2bbb68adc8b0e302443692037ed9f91b42000000000000000000000063","0xfeadd389a5c427952d8fdb8057d6c8ba1156cc56000000000000000000000066","0x9f19a375709baf0e8e35c2c5c65aca676c4c719100000000000000000000006e","0x32296969ef14eb0c6d29669c550d4a0449130230000200000000000000000080","0x1e19cf2d73a72ef1332c882f20534b6519be0276000200000000000000000112","0x7b50775383d3d6f0215a8f290f2c9e2eebbeceb20000000000000000000000fe","0x851523a36690bf267bbfec389c823072d82921a90002000000000000000001ed","0x3dd0843a028c86e0b760b1a76929d1c5ef93a2dd000200000000000000000249","0x2d011adf89f0576c9b722c28269fcb5d50c2d17900020000000000000000024d","0x178e029173417b1f9c8bc16dcec6f697bc32374600000000000000000000025d","0xf93579002dbe8046c43fefe86ec78b1112247bb80000000000000000000002bc","0xf3aeb3abba741f0eece8a1b1d2f11b85899951cb000200000000000000000351","0xa13a9247ea42d743238089903570127dda72fe4400000000000000000000035d","0x5b3240b6be3e7487d61cd1afdfc7fe4fa1d81e6400000000000000000000037b"]},Investment:{AllowList:["0xccf5575570fac94cec733a58ff91bb3d073085c70002000000000000000000af","0xe7b1d394f3b40abeaa0b64a545dbcf89da1ecb3f00010000000000000000009a","0x3b40d7d5ae25df2561944dd68b252016c4c7b2800001000000000000000000c2"]},Factories:{"0xa5bf2ddf098bb0ef6d120c98217dd6b141c74ee0":"oracleWeightedPool","0x8e9aa87e45e92bad84d5f8dd1bff34fb92637de9":"weightedPool","0xc66ba2b6595d3613ccab350c886ace23866ede24":"stablePool","0x67d27634e44793fe63c467035e31ea8635117cd4":"stablePool","0x751a0bc0e3f75b38e01cf25bfce7ff36de1c87de":"liquidityBootstrappingPool","0x0f3e0c4218b7b0108a3643cfe9d3ec0d4f57c54e":"liquidityBootstrappingPool","0x48767f9f868a4a7b86a90736632f6e44c2df7fa9":"managedPool","0xb08e16cfc07c684daa2f93c70323badb2a6cbfd2":"boostedPool","0x8df6efec5547e31b0eb7d1291b511ff8a2bf987c":"stablePool","0xf9ac7b9df2b3454e841110cce5550bd5ac6f875f":"composableStablePool","0xcc508a455f5b0073973107db6a878ddbdab957bc":"weightedPool"},Stakable:{AllowList:["0x06df3b2bbb68adc8b0e302443692037ed9f91b42000000000000000000000063","0x072f14b85add63488ddad88f855fda4a99d6ac9b000200000000000000000027","0x0b09dea16768f0799065c475be02919503cb2a3500020000000000000000001a","0x186084ff790c65088ba694df11758fae4943ee9e000200000000000000000013","0x1e19cf2d73a72ef1332c882f20534b6519be0276000200000000000000000112","0x27c9f71cc31464b906e0006d4fcbc8900f48f15f00020000000000000000010f","0x32296969ef14eb0c6d29669c550d4a0449130230000200000000000000000080","0x350196326aeaa9b98f1903fb5e8fc2686f85318c000200000000000000000084","0x3e5fa9518ea95c3e533eb377c001702a9aacaa32000200000000000000000052","0x51735bdfbfe3fc13dea8dc6502e2e958989429610002000000000000000000a0","0x5d66fff62c17d841935b60df5f07f6cf79bd0f4700020000000000000000014c","0x5f7fa48d765053f8dd85e052843e12d23e3d7bc50002000000000000000000c0","0x702605f43471183158938c1a3e5f5a359d7b31ba00020000000000000000009f","0x7b50775383d3d6f0215a8f290f2c9e2eebbeceb20000000000000000000000fe","0x7edde0cb05ed19e03a9a47cd5e53fc57fde1c80c0002000000000000000000c8","0x8f4205e1604133d1875a3e771ae7e4f2b086563900020000000000000000010e","0x90291319f1d4ea3ad4db0dd8fe9e12baf749e84500020000000000000000013c","0x96646936b91d6b9d7d0c47c496afbf3d6ec7b6f8000200000000000000000019","0x96ba9025311e2f47b840a1f68ed57a3df1ea8747000200000000000000000160","0xa02e4b3d18d4e6b8d18ac421fbc3dfff8933c40a00020000000000000000004b","0xa6f548df93de924d73be7d25dc02554c6bd66db500020000000000000000000e","0xbaeec99c90e3420ec6c1e7a769d2a856d2898e4d00020000000000000000008a","0xbf96189eee9357a95c7719f4f5047f76bde804e5000200000000000000000087","0xe2469f47ab58cf9cf59f9822e3c5de4950a41c49000200000000000000000089","0xe99481dc77691d8e2456e5f3f61c1810adfc1503000200000000000000000018","0xec60a5fef79a92c741cb74fdd6bfc340c0279b01000200000000000000000015","0xedf085f65b4f6c155e13155502ef925c9a756003000200000000000000000123","0xefaa1604e82e1b3af8430b90192c1b9e8197e377000200000000000000000021","0xf4c0dd9b82da36c07605df83c8a416f11724d88b000200000000000000000026","0xf5aaf7ee8c39b651cebf5f1f50c10631e78e0ef9000200000000000000000069","0xfeadd389a5c427952d8fdb8057d6c8ba1156cc56000000000000000000000066","0x92762b42a06dcdddc5b7362cfb01e631c4d44b40000200000000000000000182","0xde8c195aa41c11a0c4787372defbbddaa31306d2000200000000000000000181","0x17ddd9646a69c9445cd8a9f921d4cd93bf50d108000200000000000000000159","0xc45d42f801105e861e86658648e3678ad7aa70f900010000000000000000011e","0x2d344a84bac123660b021eebe4eb6f12ba25fe8600020000000000000000018a","0xb460daa847c45f1c4a41cb05bfb3b51c92e41b36000200000000000000000194","0x5122e01d819e58bb2e22528c0d68d310f0aa6fd7000200000000000000000163","0x851523a36690bf267bbfec389c823072d82921a90002000000000000000001ed","0xe8cc7e765647625b95f59c15848379d10b9ab4af0002000000000000000001de","0x85370d9e3bb111391cc89f6de344e801760461830002000000000000000001ef","0xa7ff759dbef9f3efdd1d59beee44b966acafe214000200000000000000000180","0x3f7c10701b14197e2695dec6428a2ca4cf7fc3b800020000000000000000023c","0x2d011adf89f0576c9b722c28269fcb5d50c2d17900020000000000000000024d","0x178e029173417b1f9c8bc16dcec6f697bc32374600000000000000000000025d","0xcfca23ca9ca720b6e98e3eb9b6aa0ffc4a5c08b9000200000000000000000274","0x3dd0843a028c86e0b760b1a76929d1c5ef93a2dd000200000000000000000249","0x0578292cb20a443ba1cde459c985ce14ca2bdee5000100000000000000000269","0x8eb6c82c3081bbbd45dcac5afa631aac53478b7c000100000000000000000270","0x1b65fe4881800b91d4277ba738b567cbb200a60d0002000000000000000002cc","0x99a14324cfd525a34bbc93ac7e348929909d57fd00020000000000000000030e","0x9b532ab955417afd0d012eb9f7389457cd0ea712000000000000000000000338","0x48607651416a943bf5ac71c41be1420538e78f87000200000000000000000327","0x6a5ead5433a50472642cd268e584dafa5a394490000200000000000000000366","0x0fd5663d4893ae0d579d580584806aadd2dd0b8b000200000000000000000367","0x441b8a1980f2f2e43a9397099d15cc2fe6d3625000020000000000000000035f","0xf3aeb3abba741f0eece8a1b1d2f11b85899951cb000200000000000000000351","0xa13a9247ea42d743238089903570127dda72fe4400000000000000000000035d"]},Metadata:{"0x7b50775383d3d6f0215a8f290f2c9e2eebbeceb20000000000000000000000fe":{name:"Balancer Boosted Aave USD",hasIcon:!0},"0xa13a9247ea42d743238089903570127dda72fe4400000000000000000000035d":{name:"Balancer Boosted Aave USD",hasIcon:!0},"0x06df3b2bbb68adc8b0e302443692037ed9f91b42000000000000000000000063":{name:"Balancer Stable USD",hasIcon:!0},"0x3dd0843a028c86e0b760b1a76929d1c5ef93a2dd000200000000000000000249":{name:"AuraBAL Stable Pool",hasIcon:!1}}},[ue.POLYGON]:{IdsMap:{xMatic:{v1:"0xc17636e36398602dd37bb5d1b3a9008c7629005f0002000000000000000004c4",v2:"0xb20fc01d21a50d2c734c4a1262b4404d41fa7bf000000000000000000000075c"},stMatic:{v1:"0xaf5e0b5425de1f5a630a8cb5aa9d97b8141c908d000200000000000000000366",v2:"0x8159462d255c1d24915cb51ec361f700174cd99400000000000000000000075d"},mai4:{mai4:"0x06df3b2bbb68adc8b0e302443692037ed9f91b42000000000000000000000012",maiBbaUsd:"0xb54b2125b711cd183edd3dd09433439d5396165200000000000000000000075e"}},Pagination:{PerPage:10,PerPool:10,PerPoolInitial:5},DelegateOwner:"0xba1ba1ba1ba1ba1ba1ba1ba1ba1ba1ba1ba1ba1b",ZeroAddress:"0x0000000000000000000000000000000000000000",DynamicFees:{Gauntlet:[]},BlockList:[""],ExcludedPoolTypes:["Element","AaveLinear","Linear","ERC4626Linear","Gyro2","Gyro3"],Stable:{AllowList:["0x06df3b2bbb68adc8b0e302443692037ed9f91b42000000000000000000000012","0xfeadd389a5c427952d8fdb8057d6c8ba1156cc5600020000000000000000001e","0xf38cf113d2d4f60c36cbd95af2f48a9a0167045a00000000000000000000005b","0x0d34e5dd4d8f043557145598e4e2dc286b35fd4f000000000000000000000068","0x5028497af0c9a54ea8c6d42a054c0341b9fc616800020000000000000000007b","0xaf5e0b5425de1f5a630a8cb5aa9d97b8141c908d000200000000000000000366","0xb4670d1389c758e4380c4211bcbc85342688b9c50002000000000000000003d8","0xc31a37105b94ab4efca1954a14f059af11fcd9bb000000000000000000000455","0xc17636e36398602dd37bb5d1b3a9008c7629005f0002000000000000000004c4","0xb4b22bd6cdad0ab828be6f8a4086dfa54e9b373600020000000000000000058f","0xb797adfb7b268faeaa90cadbfed464c76ee599cd0002000000000000000005ba","0x0b8319061732b34cab22445fa83b81f950e4b7ed000000000000000000000709","0xaf5e0b5425de1f5a630a8cb5aa9d97b8141c908d000200000000000000000366","0x8159462d255c1d24915cb51ec361f700174cd99400000000000000000000075d","0xb20fc01d21a50d2c734c4a1262b4404d41fa7bf000000000000000000000075c","0xb54b2125b711cd183edd3dd09433439d5396165200000000000000000000075e","0x48e6b98ef6329f8f0a30ebb8c7c960330d64808500000000000000000000075b","0xa48d164f6eb0edc68bd03b56fa59e12f24499ad10000000000000000000007c4"]},Investment:{AllowList:[""]},Factories:{"0xa5bf2ddf098bb0ef6d120c98217dd6b141c74ee0":"oracleWeightedPool","0x8e9aa87e45e92bad84d5f8dd1bff34fb92637de9":"weightedPool","0xc66ba2b6595d3613ccab350c886ace23866ede24":"stablePool","0xdae7e32adc5d490a43ccba1f0c736033f2b4efca":"stablePool","0x751a0bc0e3f75b38e01cf25bfce7ff36de1c87de":"liquidityBootstrappingPool","0x41b953164995c11c81da73d212ed8af25741b7ac":"liquidityBootstrappingPool","0x0f7bb7ce7b6ed9366f9b6b910adefe72dc538193":"managedPool","0xc128a9954e6c874ea3d62ce62b468ba073093f25":"boostedPool","0xca96c4f198d343e251b1a01f3eba061ef3da73c1":"stablePool","0x136fd06fa01ecf624c7f2b3cb15742c1339dc2c4":"composableStablePool","0x0e39c3d9b2ec765efd9c5c70bb290b1fcd8536e3":"weightedPool"},Stakable:{AllowList:["0x0297e37f1873d2dab4487aa67cd56b58e2f27875000100000000000000000002","0x03cd191f589d12b0582a99808cf19851e468e6b500010000000000000000000a","0x06df3b2bbb68adc8b0e302443692037ed9f91b42000000000000000000000012","0x0d34e5dd4d8f043557145598e4e2dc286b35fd4f000000000000000000000068","0x10f21c9bd8128a29aa785ab2de0d044dcdd79436000200000000000000000059","0x186084ff790c65088ba694df11758fae4943ee9e000200000000000000000032","0x36128d5436d2d70cab39c9af9cce146c38554ff0000100000000000000000008","0x5a6ae1fd70d04ba4a279fc219dfabc53825cb01d00020000000000000000020e","0x614b5038611729ed49e0ded154d8a5d3af9d1d9e00010000000000000000001d","0x7c9cf12d783821d5c63d8e9427af5c44bad92445000100000000000000000051","0x805ca3ccc61cc231851dee2da6aabff0a7714aa7000200000000000000000361","0xaf5e0b5425de1f5a630a8cb5aa9d97b8141c908d000200000000000000000366","0xb204bf10bc3a5435017d3db247f56da601dfe08a0002000000000000000000fe","0xc31a37105b94ab4efca1954a14f059af11fcd9bb000000000000000000000455","0xce66904b68f1f070332cbc631de7ee98b650b499000100000000000000000009","0xcf354603a9aebd2ff9f33e1b04246d8ea204ae9500020000000000000000005a","0xdb1db6e248d7bb4175f6e5a382d0a03fe3dcc813000100000000000000000035","0xea4e073c8ac859f2994c07e627178719c8002dc00002000000000000000003dc","0xfeadd389a5c427952d8fdb8057d6c8ba1156cc5600020000000000000000001e","0xc17636e36398602dd37bb5d1b3a9008c7629005f0002000000000000000004c4","0x2dbc9ab0160087ae59474fb7bed95b9e808fa6bc0001000000000000000003db","0xb797adfb7b268faeaa90cadbfed464c76ee599cd0002000000000000000005ba","0x8f9dd2064eb38e8e40f2ab67bde27c0e16ea9b080002000000000000000004ca","0x48e6b98ef6329f8f0a30ebb8c7c960330d64808500000000000000000000075b","0xb54b2125b711cd183edd3dd09433439d5396165200000000000000000000075e","0x8159462d255c1d24915cb51ec361f700174cd99400000000000000000000075d","0xb20fc01d21a50d2c734c4a1262b4404d41fa7bf000000000000000000000075c"]},Metadata:{}},[ue.ARBITRUM]:{IdsMap:{},Pagination:{PerPage:10,PerPool:10,PerPoolInitial:5},DelegateOwner:"0xba1ba1ba1ba1ba1ba1ba1ba1ba1ba1ba1ba1ba1b",ZeroAddress:"0x0000000000000000000000000000000000000000",DynamicFees:{Gauntlet:[]},BlockList:[""],ExcludedPoolTypes:["Element","AaveLinear","Linear","ERC4626Linear"],Stable:{AllowList:["0x9be7de742865d021c0e8fb9d64311b2c040c1ec1000200000000000000000012","0x1533a3278f3f9141d5f820a184ea4b017fce2382000000000000000000000016","0x386b5d43ba8b97c43d4afb4cdae7877a1b295e8a000000000000000000000020","0x0510ccf9eb3ab03c1508d3b9769e8ee2cfd6fdcf00000000000000000000005d","0x5a5884fc31948d59df2aeccca143de900d49e1a300000000000000000000006f","0xd89746affa5483627a87e55713ec1905114394950002000000000000000000bf","0x7bceaa9c5e7f4836fec3bce2d5346637c9b13970000000000000000000000102","0xfb5e6d0c1dfed2ba000fbc040ab8df3615ac329c000000000000000000000159"]},Investment:{AllowList:[""]},Factories:{"0x7dfdef5f355096603419239ce743bfaf1120312b":"weightedPool","0xcf0a32bbef8f064969f21f7e02328fb577382018":"weightedPool","0x2433477a10fc5d31b9513c638f19ee85caed53fd":"stablePool","0xebfd5681977e38af65a7487dc70b8221d089ccad":"stablePool","0x142b9666a0a3a30477b052962dda81547e7029ab":"liquidityBootstrappingPool","0x1802953277fd955f9a254b80aa0582f193cf1d77":"liquidityBootstrappingPool","0xacd615b3705b9c880e4e7293f1030b34e57b4c1c":"managedPool","0xdae7e32adc5d490a43ccba1f0c736033f2b4efca":"boostedPool","0xef44d6786b2b4d544b7850fe67ce6381626bf2d6":"stablePool","0xaeb406b0e430bf5ea2dc0b9fe62e4e53f74b3a33":"composableStablePool","0x8df6efec5547e31b0eb7d1291b511ff8a2bf987c":"weightedPool"},Stakable:{AllowList:["0x0510ccf9eb3ab03c1508d3b9769e8ee2cfd6fdcf00000000000000000000005d","0x0adeb25cb5920d4f7447af4a0428072edc2cee2200020000000000000000004a","0x1533a3278f3f9141d5f820a184ea4b017fce2382000000000000000000000016","0x1779900c7707885720d39aa741f4086886307e9e00020000000000000000004b","0x4a3a22a3e7fee0ffbb66f1c28bfac50f75546fc7000200000000000000000008","0x5a5884fc31948d59df2aeccca143de900d49e1a300000000000000000000006f","0x64541216bafffeec8ea535bb71fbc927831d0595000100000000000000000002","0x651e00ffd5ecfa7f3d4f33d62ede0a97cf62ede2000200000000000000000006","0xb28670b3e7ad27bd41fb5938136bf9e9cba90d6500020000000000000000001e","0xb340b6b1a34019853cb05b2de6ee8ffd0b89a008000100000000000000000036","0xb5b77f1ad2b520df01612399258e7787af63025d000200000000000000000010","0xc2f082d33b5b8ef3a7e3de30da54efd3114512ac000200000000000000000017","0xc61ff48f94d801c1ceface0289085197b5ec44f000020000000000000000004d","0xcc65a812ce382ab909a11e434dbf75b34f1cc59d000200000000000000000001","0xe1b40094f1446722c424c598ac412d590e0b3ffb000200000000000000000076","0xb3028ca124b80cfe6e9ca57b70ef2f0ccc41ebd40002000000000000000000ba","0x7bceaa9c5e7f4836fec3bce2d5346637c9b13970000000000000000000000102","0xfb5e6d0c1dfed2ba000fbc040ab8df3615ac329c000000000000000000000159","0x178e029173417b1f9c8bc16dcec6f697bc323746000200000000000000000158"]},Metadata:{}},[ue.GNOSIS]:{IdsMap:{},Pagination:{PerPage:10,PerPool:10,PerPoolInitial:5},DelegateOwner:"0xba1ba1ba1ba1ba1ba1ba1ba1ba1ba1ba1ba1ba1b",ZeroAddress:"0x0000000000000000000000000000000000000000",DynamicFees:{Gauntlet:[]},BlockList:[""],ExcludedPoolTypes:["Element","AaveLinear","Linear","ERC4626Linear","FX","Gyro2","Gyro3","GyroE","HighAmpComposableStable"],Stable:{AllowList:["0x11884da90fb4221b3aa288a7741c51ec4fc43b2f000000000000000000000004","0x707b7d4a1bae449d546dcab869256591bbb3d70b000000000000000000000000"]},Investment:{AllowList:[]},Factories:{},Stakable:{AllowList:[]},Metadata:{}},[ue.DEFIVERSE]:{IdsMap:{veBAL:""},Pagination:{PerPage:10,PerPool:10,PerPoolInitial:5},DelegateOwner:"0xba1ba1ba1ba1ba1ba1ba1ba1ba1ba1ba1ba1ba1b",ZeroAddress:"0x0000000000000000000000000000000000000000",DynamicFees:{Gauntlet:[]},BlockList:[""],ExcludedPoolTypes:["Element","AaveLinear","EulerLinear","Linear","ERC4626Linear","FX","Gyro2","Gyro3","GyroE","HighAmpComposableStable"],Stable:{AllowList:[]},Investment:{AllowList:[]},Factories:{"0xd01ad3085fb3e1fbb2541b5b3326b1f47b189747":"composableStablePool","0xd1920dd25e4998b0d7cc8de7f12beaf9796c7475":"weightedPool","0xe952b0409e6768e270a671ebbc5b8605a7c5a0b8":"weightedPool","0xc04ce4fe0f4013814ea1a4b0577d3678d5a7c91c":"weightedPool","0x9f9e8668ee128c365365f7d1963b4891034fb513":"weightedPool"},Stakable:{AllowList:[]},Metadata:{}},[ue.DEFIVERSE_TESTNET]:{IdsMap:{veBAL:""},Pagination:{PerPage:10,PerPool:10,PerPoolInitial:5},DelegateOwner:"0xba1ba1ba1ba1ba1ba1ba1ba1ba1ba1ba1ba1ba1b",ZeroAddress:"0x0000000000000000000000000000000000000000",DynamicFees:{Gauntlet:[]},BlockList:[""],ExcludedPoolTypes:["Element","AaveLinear","EulerLinear","Linear","ERC4626Linear","FX","Gyro2","Gyro3","GyroE","HighAmpComposableStable"],Stable:{AllowList:[]},Investment:{AllowList:[]},Factories:{"0xab6bac0f5f4c7c166c5234b528a1cd46fbcb9f4b":"weightedPool","0x58e6f99bb65378f47a520fc9630bd711f2cf3dc7":"composableStablePool","0x48494fa9ead46ee8e3fcb66487a6dbbd34dcafe3":"weightedPool"},Stakable:{AllowList:[]},Metadata:{}},[ue.OASYS]:{IdsMap:{veBAL:""},Pagination:{PerPage:10,PerPool:10,PerPoolInitial:5},DelegateOwner:"0xba1ba1ba1ba1ba1ba1ba1ba1ba1ba1ba1ba1ba1b",ZeroAddress:"0x0000000000000000000000000000000000000000",DynamicFees:{Gauntlet:[]},BlockList:[""],ExcludedPoolTypes:["Element","AaveLinear","EulerLinear","Linear","ERC4626Linear","FX","Gyro2","Gyro3","GyroE","HighAmpComposableStable"],Stable:{AllowList:[]},Investment:{AllowList:[]},Factories:{"0x061e05853fb45d3d41ec227459ec98bb25580ad3":"composableStablePool","0x4ef0b4827ce3d5fecbc2c6ab80ee81dbf9631d37":"weightedPool","0x5737600b98e7f1cf98daca2a36bca22c974370b0":"weightedPool"},Stakable:{AllowList:[]},Metadata:{}},[ue.OASYS_TESTNET]:{IdsMap:{veBAL:""},Pagination:{PerPage:10,PerPool:10,PerPoolInitial:5},DelegateOwner:"0xba1ba1ba1ba1ba1ba1ba1ba1ba1ba1ba1ba1ba1b",ZeroAddress:"0x0000000000000000000000000000000000000000",DynamicFees:{Gauntlet:[]},BlockList:["0x950f31e8a327a49ae4443284d0137f3b74858474000200000000000000000030"],ExcludedPoolTypes:["Element","AaveLinear","EulerLinear","Linear","ERC4626Linear","FX","Gyro2","Gyro3","GyroE","HighAmpComposableStable"],Stable:{AllowList:["0xeaac5ae5255407cf933dfcf2b0d3eb4f5dc042cd000000000000000000000035","0x34936c3e61371e9ebd1dcd580b23a52c26080b70000000000000000000000036"]},Investment:{AllowList:[]},Factories:{"0xfda8fa80dd77a99bf71becfce47077859e689898":"composableStablePool","0xd2d7f457b9749b6a0a637685a65681f03116125c":"weightedPool"},Stakable:{AllowList:["0x4e66d5f08e81979bd5951c93839bc97265681975000200000000000000000000","0x66180966de2a4180183d7e5dffd76e13b364efe2000200000000000000000001","0xe5b67bf732b7f96127454126069f94f939914d62000200000000000000000002","0x82bfc330a92789c02b3ce2daed3ca889b1a112b7000100000000000000000003","0x0b014863ba970f50b0ea2ad7d57151994b7cac21000100000000000000000004","0x4a54649fb507ee0bf3ad2e1661516b5700c520ab000100000000000000000005","0x981401f589c5768a41d3c4d1a39e84a86f11ad9f000200000000000000000006"]},Metadata:{}},[ue.MEGAETH_TESTNET]:{IdsMap:{veBAL:""},Pagination:{PerPage:10,PerPool:10,PerPoolInitial:5},DelegateOwner:"0xba1ba1ba1ba1ba1ba1ba1ba1ba1ba1ba1ba1ba1b",ZeroAddress:"0x0000000000000000000000000000000000000000",DynamicFees:{Gauntlet:[]},BlockList:["0x9e4427ee0219fc03f0dd627ce10e454696f7fb40000200000000000000000001","0x8cdbb24239e73bdf46cdf5a0440ac68558002a78000200000000000000000000","0x1a90c0ea30da68eab7d2a692edb73eee1cf34689000200000000000000000005"],ExcludedPoolTypes:["Element","AaveLinear","EulerLinear","Linear","ERC4626Linear","FX","Gyro2","Gyro3","GyroE","HighAmpComposableStable"],Stable:{AllowList:[]},Investment:{AllowList:[]},Factories:{"0x84f75879c0ac87eafaf4f1e3e1a2372caab5273b":"weightedPool"},Stakable:{AllowList:[]},Metadata:{}},[ue.MEGAETH_MAINNET]:{IdsMap:{veBAL:""},Pagination:{PerPage:10,PerPool:10,PerPoolInitial:5},DelegateOwner:"0xba1ba1ba1ba1ba1ba1ba1ba1ba1ba1ba1ba1ba1b",ZeroAddress:"0x0000000000000000000000000000000000000000",DynamicFees:{Gauntlet:[]},BlockList:["0xee4427ee0219fc03f0dd627ce10e454696f7fb40000200000000000000000001"],ExcludedPoolTypes:["Element","AaveLinear","EulerLinear","Linear","ERC4626Linear","FX","Gyro2","Gyro3","GyroE","HighAmpComposableStable"],Stable:{AllowList:[]},Investment:{AllowList:[]},Factories:{"0x083904d9006abda7950337c7215ecfc028855f0b":"weightedPool"},Stakable:{AllowList:[]},Metadata:{}}};function he(e){return me[e]?me[e]:fe}var Te=[{inputs:[{internalType:"contract IStaticAToken",name:"_waToken",type:"address"}],stateMutability:"nonpayable",type:"constructor"},{inputs:[],name:"getRate",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"waToken",outputs:[{internalType:"contract IStaticAToken",name:"",type:"address"}],stateMutability:"view",type:"function"}];class ge{static async getRate(e,t){const a=new u(e,Te,t);return(await a.getRate()).toString()}}const Ie=e=>e[0].map(((t,a)=>e.map((e=>e[a]))));class we{constructor(e){this.ETH=i,this.isETH=e=>we.isEqual(e,this.ETH),this.isWETH=e=>we.isEqual(e,this.WETH),this.translateToERC20=e=>this.isETH(e)?this.WETH:e,this.WETH=p(e)}sortTokens(e,...t){t.forEach((t=>oe(e.length===t.length,"array length mismatch")));const a=e.map(this.translateToERC20),n=Ie([a,...t]).sort((([e],[t])=>((e,t)=>e.toLowerCase()>t.toLowerCase()?1:-1)(e,t))),[s,...i]=Ie(n);return[e.includes(this.ETH)?s.map((e=>this.isWETH(e)?this.ETH:e)):s,...i]}}we.isEqual=(e,t)=>p(e)===p(t);const Ee={"000":"ADD_OVERFLOW","001":"SUB_OVERFLOW","002":"SUB_UNDERFLOW","003":"MUL_OVERFLOW","004":"ZERO_DIVISION","005":"DIV_INTERNAL","006":"X_OUT_OF_BOUNDS","007":"Y_OUT_OF_BOUNDS","008":"PRODUCT_OUT_OF_BOUNDS","009":"INVALID_EXPONENT",100:"OUT_OF_BOUNDS",101:"UNSORTED_ARRAY",102:"UNSORTED_TOKENS",103:"INPUT_LENGTH_MISMATCH",104:"ZERO_TOKEN",200:"MIN_TOKENS",201:"MAX_TOKENS",202:"MAX_SWAP_FEE_PERCENTAGE",203:"MIN_SWAP_FEE_PERCENTAGE",204:"MINIMUM_BPT",205:"CALLER_NOT_VAULT",206:"UNINITIALIZED",207:"BPT_IN_MAX_AMOUNT",208:"BPT_OUT_MIN_AMOUNT",209:"EXPIRED_PERMIT",210:"NOT_TWO_TOKENS",211:"DISABLED",300:"MIN_AMP",301:"MAX_AMP",302:"MIN_WEIGHT",303:"MAX_STABLE_TOKENS",304:"MAX_IN_RATIO",305:"MAX_OUT_RATIO",306:"MIN_BPT_IN_FOR_TOKEN_OUT",307:"MAX_OUT_BPT_FOR_TOKEN_IN",308:"NORMALIZED_WEIGHT_INVARIANT",309:"INVALID_TOKEN",310:"UNHANDLED_JOIN_KIND",311:"ZERO_INVARIANT",312:"ORACLE_INVALID_SECONDS_QUERY",313:"ORACLE_NOT_INITIALIZED",314:"ORACLE_QUERY_TOO_OLD",315:"ORACLE_INVALID_INDEX",316:"ORACLE_BAD_SECS",317:"AMP_END_TIME_TOO_CLOSE",318:"AMP_ONGOING_UPDATE",319:"AMP_RATE_TOO_HIGH",320:"AMP_NO_ONGOING_UPDATE",321:"STABLE_INVARIANT_DIDNT_CONVERGE",322:"STABLE_GET_BALANCE_DIDNT_CONVERGE",323:"RELAYER_NOT_CONTRACT",324:"BASE_POOL_RELAYER_NOT_CALLED",325:"REBALANCING_RELAYER_REENTERED",326:"GRADUAL_UPDATE_TIME_TRAVEL",327:"SWAPS_DISABLED",328:"CALLER_IS_NOT_LBP_OWNER",329:"PRICE_RATE_OVERFLOW",330:"INVALID_JOIN_EXIT_KIND_WHILE_SWAPS_DISABLED",331:"WEIGHT_CHANGE_TOO_FAST",332:"LOWER_GREATER_THAN_UPPER_TARGET",333:"UPPER_TARGET_TOO_HIGH",334:"UNHANDLED_BY_LINEAR_POOL",335:"OUT_OF_TARGET_RANGE",336:"UNHANDLED_EXIT_KIND ",337:"UNAUTHORIZED_EXIT",338:"MAX_MANAGEMENT_SWAP_FEE_PERCENTAGE",339:"UNHANDLED_BY_MANAGED_POOL",340:"UNHANDLED_BY_PHANTOM_POOL",341:"TOKEN_DOES_NOT_HAVE_RATE_PROVIDER",342:"INVALID_INITIALIZATION",343:"OUT_OF_NEW_TARGET_RANGE",344:"UNAUTHORIZED_OPERATION",345:"UNINITIALIZED_POOL_CONTROLLER",400:"REENTRANCY",401:"SENDER_NOT_ALLOWED",402:"PAUSED",403:"PAUSE_WINDOW_EXPIRED",404:"MAX_PAUSE_WINDOW_DURATION",405:"MAX_BUFFER_PERIOD_DURATION",406:"INSUFFICIENT_BALANCE",407:"INSUFFICIENT_ALLOWANCE",408:"ERC20_TRANSFER_FROM_ZERO_ADDRESS",409:"ERC20_TRANSFER_TO_ZERO_ADDRESS",410:"ERC20_MINT_TO_ZERO_ADDRESS",411:"ERC20_BURN_FROM_ZERO_ADDRESS",412:"ERC20_APPROVE_FROM_ZERO_ADDRESS",413:"ERC20_APPROVE_TO_ZERO_ADDRESS",414:"ERC20_TRANSFER_EXCEEDS_ALLOWANCE",415:"ERC20_DECREASED_ALLOWANCE_BELOW_ZERO",416:"ERC20_TRANSFER_EXCEEDS_BALANCE",417:"ERC20_BURN_EXCEEDS_ALLOWANCE",418:"SAFE_ERC20_CALL_FAILED",419:"ADDRESS_INSUFFICIENT_BALANCE",420:"ADDRESS_CANNOT_SEND_VALUE",421:"SAFE_CAST_VALUE_CANT_FIT_INT256",422:"GRANT_SENDER_NOT_ADMIN",423:"REVOKE_SENDER_NOT_ADMIN",424:"RENOUNCE_SENDER_NOT_ALLOWED",425:"BUFFER_PERIOD_EXPIRED",426:"CALLER_IS_NOT_OWNER",427:"NEW_OWNER_IS_ZERO",428:"CODE_DEPLOYMENT_FAILED",429:"CALL_TO_NON_CONTRACT",430:"LOW_LEVEL_CALL_FAILED",431:"NOT_PAUSED",432:"ADDRESS_ALREADY_ALLOWLISTED",433:"ADDRESS_NOT_ALLOWLISTED",434:"ERC20_BURN_EXCEEDS_BALANCE",500:"INVALID_POOL_ID",501:"CALLER_NOT_POOL",502:"SENDER_NOT_ASSET_MANAGER",503:"USER_DOESNT_ALLOW_RELAYER",504:"INVALID_SIGNATURE",505:"EXIT_BELOW_MIN",506:"JOIN_ABOVE_MAX",507:"SWAP_LIMIT",508:"SWAP_DEADLINE",509:"CANNOT_SWAP_SAME_TOKEN",510:"UNKNOWN_AMOUNT_IN_FIRST_SWAP",511:"MALCONSTRUCTED_MULTIHOP_SWAP",512:"INTERNAL_BALANCE_OVERFLOW",513:"INSUFFICIENT_INTERNAL_BALANCE",514:"INVALID_ETH_INTERNAL_BALANCE",515:"INVALID_POST_LOAN_BALANCE",516:"INSUFFICIENT_ETH",517:"UNALLOCATED_ETH",518:"ETH_TRANSFER",519:"CANNOT_USE_ETH_SENTINEL",520:"TOKENS_MISMATCH",521:"TOKEN_NOT_REGISTERED",522:"TOKEN_ALREADY_REGISTERED",523:"TOKENS_ALREADY_SET",524:"TOKENS_LENGTH_MUST_BE_2",525:"NONZERO_TOKEN_BALANCE",526:"BALANCE_TOTAL_OVERFLOW",527:"POOL_NO_TOKENS",528:"INSUFFICIENT_FLASH_LOAN_BALANCE",600:"SWAP_FEE_PERCENTAGE_TOO_HIGH",601:"FLASH_LOAN_FEE_PERCENTAGE_TOO_HIGH",602:"INSUFFICIENT_FLASH_LOAN_FEE_AMOUNT"};class xe{constructor(){}}async function Ae(e){if("string"==typeof e)return e;if(m.isSigner(e))return e.getAddress();if(e.address)return e.address;throw new Error("Could not read account address")}var Se;xe.isErrorCode=e=>{if(!e.includes("BAL#"))return!1;const t=e.replace("BAL#","");return Object.keys(Ee).includes(t)},xe.parseErrorCode=e=>{if(!e.includes("BAL#"))throw new Error("Error code not found");const t=e.replace("BAL#",""),a=Ee[t];if(!a)throw new Error("Error code not found");return a},xe.tryParseErrorCode=e=>{try{return xe.parseErrorCode(e)}catch{return e}},xe.isBalancerError=e=>Object.values(Ee).includes(e),xe.encodeError=e=>{const t=Object.entries(Ee).find((([,t])=>t===e));if(!t)throw Error("Error message not found");return`BAL#${t[0]}`},function(e){e.JoinPool="JoinPool",e.ExitPool="ExitPool",e.Swap="Swap",e.BatchSwap="BatchSwap",e.SetRelayerApproval="SetRelayerApproval"}(Se||(Se={}));class Pe{constructor(){}}Pe.encodeCalldataAuthorization=(e,t,a)=>{const n=y(b(t),32).slice(2),{v:s,r:i,s:r}=f(a);return`${e}${n}${y(b(s),32).slice(2)}${i.slice(2)}${r.slice(2)}`},Pe.signJoinAuthorization=(e,t,a,n,s,i)=>Pe.signAuthorizationFor(Se.JoinPool,e,t,a,n,s,i),Pe.signExitAuthorization=(e,t,a,n,s,i)=>Pe.signAuthorizationFor(Se.ExitPool,e,t,a,n,s,i),Pe.signSwapAuthorization=(e,t,a,n,s,i)=>Pe.signAuthorizationFor(Se.Swap,e,t,a,n,s,i),Pe.signBatchSwapAuthorization=(e,t,a,n,s,i)=>Pe.signAuthorizationFor(Se.BatchSwap,e,t,a,n,s,i),Pe.signSetRelayerApprovalAuthorization=(e,t,a,n,s,i)=>Pe.signAuthorizationFor(Se.SetRelayerApproval,e,t,a,n,s,i),Pe.signAuthorizationFor=async(e,t,a,n,s,i=r,o)=>{const{chainId:d}=await t.provider.getNetwork();if(!o){const e=await a.getAddress();o=await t.getNextNonce(e)}const c={name:"Balancer V2 Vault",version:"1",chainId:d,verifyingContract:t.address},l={[e]:[{name:"calldata",type:"bytes"},{name:"sender",type:"address"},{name:"nonce",type:"uint256"},{name:"deadline",type:"uint256"}]},p={calldata:s,sender:await Ae(n),nonce:o.toString(),deadline:i.toString()};return a._signTypedData(c,l,p)};class _e{constructor(){}}_e.signSetMinterApproval=async(e,t,a,n,s=r,i)=>{const{chainId:o}=await e.provider.getNetwork();if(!i){const t=await n.getAddress();i=await e.getNextNonce(t)}const c={name:"Balancer Minter",version:"1",chainId:o,verifyingContract:e.address},l={minter:await Ae(t),approval:a,nonce:i.toString(),deadline:s.toString()},p=await n._signTypedData(c,{SetMinterApproval:[{name:"minter",type:"address"},{name:"approval",type:"bool"},{name:"nonce",type:"uint256"},{name:"deadline",type:"uint256"}]},l);return{...f(p),deadline:d.from(s)}};const ve=async(e,t,a,n,s=r,i)=>{const{chainId:o}=await e.provider.getNetwork(),c=await t.getAddress();i||(i=await e.nonces(c));const l={name:await e.name(),version:"1",chainId:o,verifyingContract:e.address},p={owner:c,spender:await Ae(a),value:n,nonce:i,deadline:s},u=await t._signTypedData(l,{Permit:[{name:"owner",type:"address"},{name:"spender",type:"address"},{name:"value",type:"uint256"},{name:"nonce",type:"uint256"},{name:"deadline",type:"uint256"}]},p);return{...f(u),deadline:d.from(s),nonce:d.from(i)}},Oe=BigInt(0),Be=BigInt(1),ke=BigInt("1000000000000000000"),De=(e,t)=>{if(!e)throw new Error(t)};function Ne(e){const t=BigInt(18)-e;return ke*BigInt(10)**t}function Ce(e,t){return Re.mulDownFixed(e,t)}function Fe(e,t){const a=new Array(e.length);for(let n=0;n<e.length;++n)a[n]=Re.mulDownFixed(e[n],t[n]);return a}class Re{static add(e,t){const a=e+t;return De(t>=0&&a>=e||t<0&&a<e,"Errors.ADD_OVERFLOW"),a}static sub(e,t){De(t<=e,"Errors.SUB_OVERFLOW");return e-t}static max(e,t){return e>=t?e:t}static min(e,t){return e<t?e:t}static mul(e,t){const a=e*t;return De(e==Oe||a/e==t,"Errors.MUL_OVERFLOW"),a}static div(e,t,a){return a?this.divUp(e,t):this.divDown(e,t)}static divDown(e,t){return De(t!=Oe,"Errors.ZERO_DIVISION"),e/t}static divUp(e,t){return De(t!=Oe,"Errors.ZERO_DIVISION"),e==Oe?Oe:Be+(e-Be)/t}static mulUpFixed(e,t){const a=e*t;return De(e==Oe||a/e==t,"Errors.MUL_OVERFLOW"),a==Oe?Oe:(a-Be)/ke+Be}static divDownFixed(e,t){if(De(t!=Oe,"Errors.ZERO_DIVISION"),e==Oe)return Oe;return e*ke/t}static divUpFixed(e,t){if(De(t!=Oe,"Errors.ZERO_DIVISION"),e==Oe)return Oe;{const a=e*ke;return De(a/e==ke,"Errors.DIV_INTERNAL"),(a-Be)/t+Be}}static powUpFixed(e,t){const a=Me.pow(e,t),n=this.add(this.mulUpFixed(a,this.MAX_POW_RELATIVE_ERROR),Be);return this.add(a,n)}static complementFixed(e){return e<ke?ke-e:Oe}static mulDownFixed(e,t){const a=e*t;return De(e==Oe||a/e==t,"Errors.MUL_OVERFLOW"),a/ke}}Re.MAX_POW_RELATIVE_ERROR=BigInt(1e4);class Me{static pow(e,t){if(t===Oe)return this.ONE_18;if(e==Oe)return Oe;De(e<BigInt("57896044618658097711785492504343953926634992332820282019728792003956564819968"),"Errors.X_OUT_OF_BOUNDS");const a=e;De(t<this.MILD_EXPONENT_BOUND,"Errors.Y_OUT_OF_BOUNDS");const n=t;let s;if(this.LN_36_LOWER_BOUND<a&&a<this.LN_36_UPPER_BOUND){const e=this._ln_36(a);s=e/this.ONE_18*n+e%this.ONE_18*n/this.ONE_18}else s=this._ln(a)*n;return s/=this.ONE_18,De(this.MIN_NATURAL_EXPONENT<=s&&s<=this.MAX_NATURAL_EXPONENT,"Errors.PRODUCT_OUT_OF_BOUNDS"),this.exp(s)}static exp(e){if(De(e>=this.MIN_NATURAL_EXPONENT&&e<=this.MAX_NATURAL_EXPONENT,"Errors.INVALID_EXPONENT"),e<0)return this.ONE_18*this.ONE_18/this.exp(BigInt(-1)*e);let t;e>=this.x0?(e-=this.x0,t=this.a0):e>=this.x1?(e-=this.x1,t=this.a1):t=BigInt(1),e*=BigInt(100);let a=this.ONE_20;e>=this.x2&&(e-=this.x2,a=a*this.a2/this.ONE_20),e>=this.x3&&(e-=this.x3,a=a*this.a3/this.ONE_20),e>=this.x4&&(e-=this.x4,a=a*this.a4/this.ONE_20),e>=this.x5&&(e-=this.x5,a=a*this.a5/this.ONE_20),e>=this.x6&&(e-=this.x6,a=a*this.a6/this.ONE_20),e>=this.x7&&(e-=this.x7,a=a*this.a7/this.ONE_20),e>=this.x8&&(e-=this.x8,a=a*this.a8/this.ONE_20),e>=this.x9&&(e-=this.x9,a=a*this.a9/this.ONE_20);let n,s=this.ONE_20;return n=e,s+=n,n=n*e/this.ONE_20/BigInt(2),s+=n,n=n*e/this.ONE_20/BigInt(3),s+=n,n=n*e/this.ONE_20/BigInt(4),s+=n,n=n*e/this.ONE_20/BigInt(5),s+=n,n=n*e/this.ONE_20/BigInt(6),s+=n,n=n*e/this.ONE_20/BigInt(7),s+=n,n=n*e/this.ONE_20/BigInt(8),s+=n,n=n*e/this.ONE_20/BigInt(9),s+=n,n=n*e/this.ONE_20/BigInt(10),s+=n,n=n*e/this.ONE_20/BigInt(11),s+=n,n=n*e/this.ONE_20/BigInt(12),s+=n,a*s/this.ONE_20*t/BigInt(100)}static _ln_36(e){const t=((e*=this.ONE_18)-this.ONE_36)*this.ONE_36/(e+this.ONE_36),a=t*t/this.ONE_36;let n=t,s=n;return n=n*a/this.ONE_36,s+=n/BigInt(3),n=n*a/this.ONE_36,s+=n/BigInt(5),n=n*a/this.ONE_36,s+=n/BigInt(7),n=n*a/this.ONE_36,s+=n/BigInt(9),n=n*a/this.ONE_36,s+=n/BigInt(11),n=n*a/this.ONE_36,s+=n/BigInt(13),n=n*a/this.ONE_36,s+=n/BigInt(15),s*BigInt(2)}static _ln(e){if(e<this.ONE_18)return BigInt(-1)*this._ln(this.ONE_18*this.ONE_18/e);let t=Oe;e>=this.a0*this.ONE_18&&(e/=this.a0,t+=this.x0),e>=this.a1*this.ONE_18&&(e/=this.a1,t+=this.x1),t*=BigInt(100),(e*=BigInt(100))>=this.a2&&(e=e*this.ONE_20/this.a2,t+=this.x2),e>=this.a3&&(e=e*this.ONE_20/this.a3,t+=this.x3),e>=this.a4&&(e=e*this.ONE_20/this.a4,t+=this.x4),e>=this.a5&&(e=e*this.ONE_20/this.a5,t+=this.x5),e>=this.a6&&(e=e*this.ONE_20/this.a6,t+=this.x6),e>=this.a7&&(e=e*this.ONE_20/this.a7,t+=this.x7),e>=this.a8&&(e=e*this.ONE_20/this.a8,t+=this.x8),e>=this.a9&&(e=e*this.ONE_20/this.a9,t+=this.x9),e>=this.a10&&(e=e*this.ONE_20/this.a10,t+=this.x10),e>=this.a11&&(e=e*this.ONE_20/this.a11,t+=this.x11);const a=(e-this.ONE_20)*this.ONE_20/(e+this.ONE_20),n=a*a/this.ONE_20;let s=a,i=s;return s=s*n/this.ONE_20,i+=s/BigInt(3),s=s*n/this.ONE_20,i+=s/BigInt(5),s=s*n/this.ONE_20,i+=s/BigInt(7),s=s*n/this.ONE_20,i+=s/BigInt(9),s=s*n/this.ONE_20,i+=s/BigInt(11),i*=BigInt(2),(t+i)/BigInt(100)}}Me.ONE_18=BigInt("1000000000000000000"),Me.ONE_20=BigInt("100000000000000000000"),Me.ONE_36=BigInt("1000000000000000000000000000000000000"),Me.MAX_NATURAL_EXPONENT=BigInt("130000000000000000000"),Me.MIN_NATURAL_EXPONENT=BigInt("-41000000000000000000"),Me.LN_36_LOWER_BOUND=BigInt(Me.ONE_18)-BigInt("100000000000000000"),Me.LN_36_UPPER_BOUND=BigInt(Me.ONE_18)+BigInt("100000000000000000"),Me.MILD_EXPONENT_BOUND=BigInt(2)**BigInt(254)/Me.ONE_20,Me.x0=BigInt("128000000000000000000"),Me.a0=BigInt("38877084059945950922200000000000000000000000000000000000"),Me.x1=BigInt("64000000000000000000"),Me.a1=BigInt("6235149080811616882910000000"),Me.x2=BigInt("3200000000000000000000"),Me.a2=BigInt("7896296018268069516100000000000000"),Me.x3=BigInt("1600000000000000000000"),Me.a3=BigInt("888611052050787263676000000"),Me.x4=BigInt("800000000000000000000"),Me.a4=BigInt("298095798704172827474000"),Me.x5=BigInt("400000000000000000000"),Me.a5=BigInt("5459815003314423907810"),Me.x6=BigInt("200000000000000000000"),Me.a6=BigInt("738905609893065022723"),Me.x7=BigInt("100000000000000000000"),Me.a7=BigInt("271828182845904523536"),Me.x8=BigInt("50000000000000000000"),Me.a8=BigInt("164872127070012814685"),Me.x9=BigInt("25000000000000000000"),Me.a9=BigInt("128402541668774148407"),Me.x10=BigInt("12500000000000000000"),Me.a10=BigInt("113314845306682631683"),Me.x11=BigInt("6250000000000000000"),Me.a11=BigInt("106449445891785942956");const Le=(e,t)=>{let a=e.tokens.map((e=>e.address)),n=e.tokens.map((e=>e.decimals?e.decimals.toString():void 0)),s=n.map((e=>Ne(BigInt(e)))),i=e.tokens.map((e=>c(e.balance,e.decimals).toString())),r=e.tokens.map((e=>c(e.balance,18).toString())),o=e.tokens.map((e=>e.weight?c(e.weight,18).toString():void 0)),d=e.tokens.map((e=>e.priceRate?c(e.priceRate,18).toString():void 0));if(t){const e=new we(t);let c;[a,n,c,i,r,o,d]=e.sortTokens(a,n,s,i,r,o,d),s=c.map(BigInt)}const l=e.amp?c(e.amp,3).toString():void 0,p=c(e.totalShares,18).toString(),u=c(e.swapFee,18).toString(),y=[],b=[],f=[],m=a.indexOf(e.address);return-1!==m&&s.forEach(((e,t)=>{t!==m&&(y.push(s[t]),b.push(a[t]),f.push(i[t]))})),{parsedTokens:a,parsedDecimals:n,parsedBalances:i,parsedWeights:o,parsedPriceRates:d,parsedAmp:l,parsedTotalShares:p,parsedSwapFee:u,upScaledBalances:r,scalingFactors:s,scalingFactorsWithoutBpt:y,parsedTokensWithoutBpt:b,parsedBalancesWithoutBpt:f,bptIndex:m}},Ue={Popular:{Symbols:["WBTC","DAI","USDC","BAL","AAVE","WETH"]},Addresses:{nativeAsset:"0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE",wNativeAsset:"0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE",WETH:"0x0000000000000000000000000000000000000000",BAL:"0x0000000000000000000000000000000000000000"}},Ge={[ue.KOVAN]:{Popular:{Symbols:["WBTC","DAI","USDC","BAL","AAVE","WETH"]},Addresses:{nativeAsset:"0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE",wNativeAsset:"0xdFCeA9088c8A88A76FF74892C1457C17dfeef9C1",WETH:"0xdFCeA9088c8A88A76FF74892C1457C17dfeef9C1",BAL:"0xcb355677E36f390Ccc4a5d4bEADFbF1Eb2071c81",bbaUSD:"0x8fd162f338B770F7E879030830cDe9173367f301"},PriceChainMap:{"0xdfcea9088c8a88a76ff74892c1457c17dfeef9c1":"0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2","0x1c8e3bcb3378a443cc591f154c5ce0ebb4da9648":"0x2260fac5e5542a773aa44fbcfedf7c193bc2c599","0x8f4bebf498cc624a0797fe64114a6ff169eee078":"0xbc396689893d065f41bc2c6ecbee5e0085233447","0xaf9ac3235be96ed496db7969f60d354fe5e426b0":"0x9f8f72aa9304c8b593d555f12ef6589cc3a579a2","0xcb355677e36f390ccc4a5d4beadfbf1eb2071c81":"0xba100000625a3754423978a60c9317c58a424e3d","0xc2569dd7d0fd715b054fbf16e75b001e5c0c1115":"0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48","0x04df6e4121c27713ed22341e7c7df330f56f289b":"0x6b175474e89094c44da98b954eedeac495271d0f","0x4803bb90d18a1cb7a2187344fe4feb0e07878d05":"0xae7ab96520de3a18e5e111b5eaab095312d7fe84","0xff795577d9ac8bd7d90ee22b6c1703490b6512fd":"0x6b175474e89094c44da98b954eedeac495271d0f","0xe22da380ee6b445bb8273c81944adeb6e8450422":"0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48","0x13512979ade267ab5100878e2e0f485b568328a4":"0xdac17f958d2ee523a2206206994597c13d831ec7","0xa387b91e393cfb9356a460370842bc8dbb2f29af":"0x7f39c581f595b53c5cb19bd0b3f8da6c935e2ca0"}},[ue.GOERLI]:{Popular:{Symbols:["WBTC","DAI","USDC","BAL","USDT","WETH"]},Addresses:{nativeAsset:"0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE",wNativeAsset:"0xdFCeA9088c8A88A76FF74892C1457C17dfeef9C1",WETH:"0xdFCeA9088c8A88A76FF74892C1457C17dfeef9C1",BAL:"0xfA8449189744799aD2AcE7e0EBAC8BB7575eff47",bbaUSD:"0x13ACD41C585d7EbB4a9460f7C8f50BE60DC080Cd"},PriceChainMap:{"0xdfcea9088c8a88a76ff74892c1457c17dfeef9c1":"0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2","0x37f03a12241e9fd3658ad6777d289c3fb8512bc9":"0x2260fac5e5542a773aa44fbcfedf7c193bc2c599","0xfa8449189744799ad2ace7e0ebac8bb7575eff47":"0xba100000625a3754423978a60c9317c58a424e3d","0xe0c9275e44ea80ef17579d33c55136b7da269aeb":"0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48","0x8c9e6c40d3402480ace624730524facc5482798c":"0x6b175474e89094c44da98b954eedeac495271d0f","0x1f1f156e0317167c11aa412e3d1435ea29dc3cce":"0xdac17f958d2ee523a2206206994597c13d831ec7","0x4cb1892fddf14f772b2e39e299f44b2e5da90d04":"0x3ed3b47dd13ec9a98b44e6204a523e766b225811","0x811151066392fd641fe74a9b55a712670572d161":"0xbcca60bb61934080951369a648fb03df4f96263c","0x89534a24450081aa267c79b07411e9617d984052":"0x028171bca77440897b824ca71d1c56cac55b68a3","0x829f35cebbcd47d3c120793c12f7a232c903138b":"0x956f47f50a910163d8bf957cf5846d573e7f87ca","0xff386a3d08f80ac38c77930d173fa56c6286dc8b":"0x6810e776880c02933d47db1b9fc05908e5386b96"}},[ue.MAINNET]:{Popular:{Symbols:["WBTC","DAI","USDC","BAL","AAVE","WETH"]},Addresses:{nativeAsset:"0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE",wNativeAsset:"0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2",WETH:"0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2",BAL:"0xba100000625a3754423978a60c9317c58a424e3d",bbaUSD:"0x7B50775383d3D6f0215A8F290f2C9e2eEBBEceb2",bbaUSDv2:"0xA13a9247ea42D743238089903570127DdA72fE44"}},[ue.POLYGON]:{Popular:{Symbols:["WBTC","DAI","USDC","BAL","AAVE","WETH"]},Addresses:{nativeAsset:"0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE",wNativeAsset:"0x0d500B1d8E8eF31E21C99d1Db9A6444d3ADf1270",WETH:"0x7ceb23fd6bc0add59e62ac25578270cff1b9f619",BAL:"0x9a71012b13ca4d3d0cdc72a177df3ef03b0e76a3"}},[ue.ARBITRUM]:{Popular:{Symbols:["WBTC","DAI","USDC","BAL","AAVE","WETH"]},Addresses:{nativeAsset:"0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE",wNativeAsset:"0x82aF49447D8a07e3bd95BD0d56f35241523fBab1",WETH:"0x82aF49447D8a07e3bd95BD0d56f35241523fBab1",BAL:"0x040d1EdC9569d4Bab2D15287Dc5A4F10F56a56B8"}},[ue.GNOSIS]:{Popular:{Symbols:["xDAI","WXDAI","WETH","BAL"]},Addresses:{nativeAsset:"0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE",wNativeAsset:"0xe91d153e0b41518a2ce8dd3d7944fa863463a97d",WETH:"0x6A023CCd1ff6F2045C3309768eAd9E68F978f6e1",BAL:"0x7eF541E2a22058048904fE5744f9c7E4C57AF717"}},[ue.DEFIVERSE]:{Popular:{Symbols:["GDT","BAL","WETH","OAS"]},Addresses:{nativeAsset:"0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE",wNativeAsset:"0x5a89E11Cb554E00c2f51C4bb7F05bc7Ab0Fa6351",WETH:"0x5a89E11Cb554E00c2f51C4bb7F05bc7Ab0Fa6351",BAL:"",GDT:""},PriceChainMap:{"0x5a89e11cb554e00c2f51c4bb7f05bc7ab0fa6351":"0x5a89e11cb554e00c2f51c4bb7f05bc7ab0fa6351","0x7c6b91d9be155a6db01f749217d76ff02a7227f2":"0x7c6b91d9be155a6db01f749217d76ff02a7227f2"}},[ue.DEFIVERSE_TESTNET]:{Popular:{Symbols:["WETH","OAS"]},Addresses:{nativeAsset:"0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE",wNativeAsset:"0x6B382742b07AAbBA58c38d792B5d7CBAaB246e99",WETH:"0x6B382742b07AAbBA58c38d792B5d7CBAaB246e99",BAL:"",GDT:""},PriceChainMap:{}},[ue.OASYS]:{Popular:{Symbols:["GDT","BAL","WETH","OAS"]},Addresses:{nativeAsset:"0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE",wNativeAsset:"0x5200000000000000000000000000000000000001",WETH:"0x5200000000000000000000000000000000000001",BAL:"0x2B726256AdD04e65403cEf6679A2f2dfF7DDe9F9",GDT:""},PriceChainMap:{"0x5200000000000000000000000000000000000001":"0x5a89e11cb554e00c2f51c4bb7f05bc7ab0fa6351"}},[ue.OASYS_TESTNET]:{Popular:{Symbols:["GDT","BAL","WETH","OAS"]},Addresses:{nativeAsset:"0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE",wNativeAsset:"0x5200000000000000000000000000000000000001",WETH:"0x5200000000000000000000000000000000000001",BAL:"0x9288F664FEFc9f374A53C4307BD3c8F91e83f466",GDT:"0x9288F664FEFc9f374A53C4307BD3c8F91e83f466"},PriceChainMap:{"0x5200000000000000000000000000000000000001":"0x5a89e11cb554e00c2f51c4bb7f05bc7ab0fa6351"}},[ue.MEGAETH_TESTNET]:{Popular:{Symbols:["WETH","ETH"]},Addresses:{nativeAsset:"0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE",wNativeAsset:"0xAba76Cdc5910F6627856EB75Bcce0171376999C7",WETH:"0xAba76Cdc5910F6627856EB75Bcce0171376999C7",BAL:"0x8D23f3B57cF4B5Ed734574738Fa0Fc2C5b5e37d1"},PriceChainMap:{}},[ue.MEGAETH_MAINNET]:{Popular:{Symbols:["WETH","ETH"]},Addresses:{nativeAsset:"0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE",wNativeAsset:"0x4200000000000000000000000000000000000006",WETH:"0x4200000000000000000000000000000000000006",BAL:"0x3EeaBC1632B47b0da9681674E67160d65811E7AB"},PriceChainMap:{}}};var $e,qe,We,Ve,He,je,Xe;!function(e){e.Id="id",e.Address="address",e.PoolId="poolId"}($e||($e={})),function(e){e.Balance="balance",e.Id="id",e.PoolId="poolId",e.UserAddress="userAddress"}(qe||(qe={})),function(e){e.Id="id",e.UserAddress="user",e.GaugeId="gauge",e.Balance="balance"}(We||(We={})),function(e){e[e.GeneralPool=0]="GeneralPool",e[e.MinimalSwapInfoPool=1]="MinimalSwapInfoPool",e[e.TwoTokenPool=2]="TwoTokenPool"}(Ve||(Ve={})),function(e){e[e.DepositInternal=0]="DepositInternal",e[e.WithdrawInternal=1]="WithdrawInternal",e[e.TransferInternal=2]="TransferInternal",e[e.TransferExternal=3]="TransferExternal"}(He||(He={})),function(e){e[e.Withdraw=0]="Withdraw",e[e.Deposit=1]="Deposit",e[e.Update=2]="Update"}(je||(je={})),function(e){e.Weighted="Weighted",e.Investment="Investment",e.Stable="Stable",e.HighAmpComposableStable="HighAmpComposableStable",e.ComposableStable="ComposableStable",e.MetaStable="MetaStable",e.StablePhantom="StablePhantom",e.LiquidityBootstrapping="LiquidityBootstrapping",e.AaveLinear="AaveLinear",e.Linear="Linear",e.EulerLinear="EulerLinear",e.ERC4626Linear="ERC4626Linear",e.Element="Element",e.Gyro2="Gyro2",e.Gyro3="Gyro3",e.Managed="Managed"}(Xe||(Xe={}));let Ke=!1,Ye=!1;const Je={debug:1,default:2,info:2,warning:3,error:4,off:5};let Ze=Je.default,ze=null;const Qe=function(){try{const e=[];if(["NFD","NFC","NFKD","NFKC"].forEach((t=>{try{if("test"!=="test".normalize(t))throw new Error("bad normalize")}catch(a){e.push(t)}})),e.length)throw new Error("missing "+e.join(", "));if(String.fromCharCode(233).normalize("NFD")!==String.fromCharCode(101,769))throw new Error("broken implementation")}catch(e){return e.message}return null}();var et,tt;!function(e){e.DEBUG="DEBUG",e.INFO="INFO",e.WARNING="WARNING",e.ERROR="ERROR",e.OFF="OFF"}(et||(et={})),function(e){e.UNKNOWN_ERROR="UNKNOWN_ERROR",e.NOT_IMPLEMENTED="NOT_IMPLEMENTED",e.UNSUPPORTED_OPERATION="UNSUPPORTED_OPERATION",e.NETWORK_ERROR="NETWORK_ERROR",e.SERVER_ERROR="SERVER_ERROR",e.TIMEOUT="TIMEOUT",e.BUFFER_OVERRUN="BUFFER_OVERRUN",e.NUMERIC_FAULT="NUMERIC_FAULT",e.MISSING_NEW="MISSING_NEW",e.INVALID_ARGUMENT="INVALID_ARGUMENT",e.MISSING_ARGUMENT="MISSING_ARGUMENT",e.UNEXPECTED_ARGUMENT="UNEXPECTED_ARGUMENT",e.CALL_EXCEPTION="CALL_EXCEPTION",e.INSUFFICIENT_FUNDS="INSUFFICIENT_FUNDS",e.NONCE_EXPIRED="NONCE_EXPIRED",e.REPLACEMENT_UNDERPRICED="REPLACEMENT_UNDERPRICED",e.UNPREDICTABLE_GAS_LIMIT="UNPREDICTABLE_GAS_LIMIT",e.TRANSACTION_REPLACED="TRANSACTION_REPLACED",e.ACTION_REJECTED="ACTION_REJECTED"}(tt||(tt={}));const at="0123456789abcdef";class nt{constructor(e){Object.defineProperty(this,"version",{enumerable:!0,value:e,writable:!1})}_log(e,t){const a=e.toLowerCase();null==Je[a]&&this.throwArgumentError("invalid log level name","logLevel",e),Ze>Je[a]||console.log.apply(console,t)}debug(...e){this._log(nt.levels.DEBUG,e)}info(...e){this._log(nt.levels.INFO,e)}warn(...e){this._log(nt.levels.WARNING,e)}makeError(e,t,a){if(Ye)return this.makeError("censored error",t,{});t||(t=nt.errors.UNKNOWN_ERROR),a||(a={});const n=[];Object.keys(a).forEach((e=>{const t=a[e];try{if(t instanceof Uint8Array){let a="";for(let e=0;e<t.length;e++)a+=at[t[e]>>4],a+=at[15&t[e]];n.push(e+"=Uint8Array(0x"+a+")")}else n.push(e+"="+JSON.stringify(t))}catch(t){n.push(e+"="+JSON.stringify(a[e].toString()))}})),n.push(`code=${t}`),n.push(`version=${this.version}`);const s=e;let i="";switch(t){case tt.NUMERIC_FAULT:{i="NUMERIC_FAULT";const t=e;switch(t){case"overflow":case"underflow":case"division-by-zero":i+="-"+t;break;case"negative-power":case"negative-width":i+="-unsupported";break;case"unbound-bitwise-result":i+="-unbound-result"}break}case tt.CALL_EXCEPTION:case tt.INSUFFICIENT_FUNDS:case tt.MISSING_NEW:case tt.NONCE_EXPIRED:case tt.REPLACEMENT_UNDERPRICED:case tt.TRANSACTION_REPLACED:case tt.UNPREDICTABLE_GAS_LIMIT:i=t}i&&(e+=" [ See: https://links.ethers.org/v5-errors-"+i+" ]"),n.length&&(e+=" ("+n.join(", ")+")");const r=new Error(e);return r.reason=s,r.code=t,Object.keys(a).forEach((function(e){r[e]=a[e]})),r}throwError(e,t,a){throw this.makeError(e,t,a)}throwArgumentError(e,t,a){return this.throwError(e,nt.errors.INVALID_ARGUMENT,{argument:t,value:a})}assert(e,t,a,n){e||this.throwError(t,a,n)}assertArgument(e,t,a,n){e||this.throwArgumentError(t,a,n)}checkNormalize(e){Qe&&this.throwError("platform missing String.prototype.normalize",nt.errors.UNSUPPORTED_OPERATION,{operation:"String.prototype.normalize",form:Qe})}checkSafeUint53(e,t){"number"==typeof e&&(null==t&&(t="value not safe"),(e<0||e>=9007199254740991)&&this.throwError(t,nt.errors.NUMERIC_FAULT,{operation:"checkSafeInteger",fault:"out-of-safe-range",value:e}),e%1&&this.throwError(t,nt.errors.NUMERIC_FAULT,{operation:"checkSafeInteger",fault:"non-integer",value:e}))}checkArgumentCount(e,t,a){a=a?": "+a:"",e<t&&this.throwError("missing argument"+a,nt.errors.MISSING_ARGUMENT,{count:e,expectedCount:t}),e>t&&this.throwError("too many arguments"+a,nt.errors.UNEXPECTED_ARGUMENT,{count:e,expectedCount:t})}checkNew(e,t){e!==Object&&null!=e||this.throwError("missing new",nt.errors.MISSING_NEW,{name:t.name})}checkAbstract(e,t){e===t?this.throwError("cannot instantiate abstract class "+JSON.stringify(t.name)+" directly; use a sub-class",nt.errors.UNSUPPORTED_OPERATION,{name:e.name,operation:"new"}):e!==Object&&null!=e||this.throwError("missing new",nt.errors.MISSING_NEW,{name:t.name})}static globalLogger(){return ze||(ze=new nt("logger/5.7.0")),ze}static setCensorship(e,t){if(!e&&t&&this.globalLogger().throwError("cannot permanently disable censorship",nt.errors.UNSUPPORTED_OPERATION,{operation:"setCensorship"}),Ke){if(!e)return;this.globalLogger().throwError("error censorship permanent",nt.errors.UNSUPPORTED_OPERATION,{operation:"setCensorship"})}Ye=!!e,Ke=!!t}static setLogLevel(e){const t=Je[e.toLowerCase()];null!=t?Ze=t:nt.globalLogger().warn("invalid log level - "+e)}static from(e){return new nt(e)}}nt.errors=tt,nt.levels=et;const st=new nt("units/5.7.0"),it=["wei","kwei","mwei","gwei","szabo","finney","ether"];function rt(e,t){if("string"==typeof t){const e=it.indexOf(t);-1!==e&&(t=3*e)}return l(e,null!=t?t:18)}function ot(e,t){if("string"!=typeof e&&st.throwArgumentError("value must be a string","value",e),"string"==typeof t){const e=it.indexOf(t);-1!==e&&(t=3*e)}return c(e,null!=t?t:18)}const dt={[ue.MAINNET]:{waUSDT:"0xf8fd466f12e236f4c96f7cce6c79eadb819abf58",waUSDC:"0xd093fa4fb80d09bb30817fdcd442d4d02ed3e5de",waDAI:"0x02d60b84491589974263d922d9cc7a3152618ef6"},[ue.POLYGON]:{wamDAI:"0xee029120c72b0607344f35b17cdd90025e647b00",wamUSDC:"0x221836a597948dce8f3568e044ff123108acc42a",wamUSDT:"0x19c60a251e525fa88cd6f3768416a8024e98fc19"}},ct={...dt[ue.MAINNET],...dt[ue.POLYGON]},lt={[ue.MAINNET]:{[dt[ue.MAINNET].waUSDT]:{aToken:"0x3ed3b47dd13ec9a98b44e6204a523e766b225811",underlying:"0xdac17f958d2ee523a2206206994597c13d831ec7"},[dt[ue.MAINNET].waUSDC]:{aToken:"0xbcca60bb61934080951369a648fb03df4f96263c",underlying:"0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48"},[dt[ue.MAINNET].waDAI]:{aToken:"0x028171bca77440897b824ca71d1c56cac55b68a3",underlying:"0x6b175474e89094c44da98b954eedeac495271d0f"}},[ue.POLYGON]:{[dt[ue.POLYGON].wamUSDT]:{aToken:"0x60d55f02a771d515e077c9c2403a1ef324885cec",underlying:"0xc2132d05d31c914a87c6611c10748aeb04b58e8f"},[dt[ue.POLYGON].wamUSDC]:{aToken:"0x1a13f4ca1d028320a707d99520abfefca3998b7f",underlying:"0x2791bca1f2de4661ed88a30c99a7a9449aa84174"},[dt[ue.POLYGON].wamDAI]:{aToken:"0x27f8d03b3a2196956ed754badc28d73be8830a6e",underlying:"0x8f3cf7ad23cd3cadbd9735aff958023239c6a063"}}},pt={[ue.MAINNET]:Object.values(lt[ue.MAINNET]).map((e=>e.aToken)),[ue.POLYGON]:Object.values(lt[ue.POLYGON]).map((e=>e.aToken))},ut={[ue.MAINNET]:Object.values(lt[ue.MAINNET]).map((e=>e.underlying)),[ue.POLYGON]:Object.values(lt[ue.POLYGON]).map((e=>e.underlying))},yt={[ue.MAINNET]:Object.fromEntries(Object.keys(lt[ue.MAINNET]).map((e=>[lt[ue.MAINNET][e].underlying,e]))),[ue.POLYGON]:Object.fromEntries(Object.keys(lt[ue.POLYGON]).map((e=>[lt[ue.POLYGON][e].underlying,e])))},bt={[ue.MAINNET]:"https://api.thegraph.com/subgraphs/name/aave/protocol-v2",[ue.POLYGON]:"https://api.thegraph.com/subgraphs/name/aave/aave-v2-matic"},ft=async e=>{const t=Object.fromEntries(Object.keys(lt).map((e=>[e,0])));if(!e||e!=ue.MAINNET&&e!=ue.POLYGON)return t;try{const t={operationName:"getReserves",query:"\n query getReserves($aTokens: [String!], $underlyingAssets: [Bytes!]) {\n reserves(\n where: {\n aToken_in: $aTokens\n underlyingAsset_in: $underlyingAssets\n isActive: true\n }\n ) {\n underlyingAsset\n liquidityRate\n }\n }\n",variables:{aTokens:pt[e],underlyingAssets:ut[e]}},a=await h.post(bt[e],t),{data:{reserves:n}}=a.data,s=n.map((t=>[yt[e][t.underlyingAsset],Math.round(1e4*parseFloat(rt(d.from(t.liquidityRate),27)))]));return Object.fromEntries(s)}catch(e){return t}};function mt(e){const t={};return e.forEach((e=>{e.price&&(t[e.address]=e.price)})),t}function ht(e,t){let a=e.toLowerCase();return a=Tt(a,t),a=gt(a,t),a}const Tt=(e,t)=>{const a=(n=t,Ge[n]?Ge[n]:Ue).PriceChainMap;var n;return a&&a[e.toLowerCase()]||e},gt=(e,t)=>{const a=e.toLocaleLowerCase(),n=t;return null!=lt[n]&&null!=lt[n]&&Object.keys(lt[n]).includes(a)?lt[n][a].aToken:a};class It{constructor(e,t=200){this.fn=e,this.wait=t,this.requestSet=new Set,this.promisedCalls=[],this.promisedCount=0,this.debounceCancel=()=>{}}fetch(e){if(e&&this.requestSet.add(e),this.promisedCalls[this.promisedCount])return this.promisedCalls[this.promisedCount].promise;this.promisedCalls[this.promisedCount]=(()=>{let e=()=>{},t=()=>{};return{promise:new Promise(((a,n)=>{[e,t]=[a,n]})),reject:t,resolve:e}})();const{promise:t,resolve:a,reject:n}=this.promisedCalls[this.promisedCount];return this.timeout&&clearTimeout(this.timeout),this.timeout=setTimeout((()=>{this.promisedCount++;const e=[...this.requestSet];this.requestSet.clear(),this.fn(e).then((e=>{a(e),this.debounceCancel=()=>{}})).catch((e=>{e.response&&e.response.data&&e.response.data.error&&(e=e.response.data.error),n(e)}))}),this.wait),this.debounceCancel=()=>{this.timeout&&clearTimeout(this.timeout),n("Cancelled"),delete this.promisedCalls[this.promisedCount]},t}}function wt(e,t){const a=new RegExp(`[0-9]+\\.?[0-9]{0,${t}}`),n=e.match(a);let s=e;return n&&(s=n[0]),c(s,t)}function Et(e,t){return l(e,t).replace(/(.0$)/,"")}function xt(e){return wt(e,18).toBigInt()}function At(e){return l(d.from(e),18)}const St=e=>c(`${e}`,18),Pt=(e,t)=>p(e)===p(t);function _t(e,t,a){return[...e.slice(0,t),a,...e.slice(t)]}class vt{format(e){return e}}class Ot{constructor(){this.operatorMap={gt:"_gt",lt:"_lt",eq:"",in:"_in",not_in:"_not_in",contains:"_contains"}}format(e){const t={};return e.where&&Object.entries(e.where).forEach((([e,a])=>{Object.entries(a).forEach((([a,n])=>{t[`${e}${this.operatorMap[a]}`]=n}))})),{...e,where:t}}}class Bt{constructor(e){this.args=e}merge(e){const t=T(this.args,e.args,((e,t)=>{if(Array.isArray(e))return e.concat(t)}));return new Bt(t)}format(e){return e.format(this.args)}}var kt;function Dt(e,t,a,i,r,o){const c=new Array(r.length).fill(s);return r.forEach(((s,r)=>{if(e.some((e=>Pt(s,e)))){const e=d.from(o).add(n);c[r]=a===kt.SwapExactOut?c[r].add(d.from(i[r]).mul(e).div(n)):c[r].add(i[r])}if(t.some((e=>Pt(s,e)))){const e=n.sub(d.from(o));c[r]=a===kt.SwapExactIn?c[r].add(d.from(i[r]).mul(e).div(n)):c[r].add(i[r])}})),c}!function(e){e[e.SwapExactIn=0]="SwapExactIn",e[e.SwapExactOut=1]="SwapExactOut"}(kt||(kt={}));const Nt=d.from("10000"),Ct=(e,t)=>e.mul(t).div(Nt),Ft=(e,t)=>{const a=Ct(e,t);return e.sub(a)},Rt=(e,t)=>{const a=Ct(e,t);return e.add(a)},Mt="0x2FA699664752B34E90A414A42D62D7A8b2702B85",Lt={[ue.MAINNET]:{chainId:ue.MAINNET,addresses:{contracts:{vault:"0xBA12222222228d8Ba445958a75a0704d566BF2C8",multicall:"0xeefba1e63905ef1d7acba5a8513c70307c1ce441",balancerHelpers:"0x5aDDCCa35b7A0D07C74063c48700C8590E87864E",lidoRelayer:"0xdcdbf71A870cc60C6F9B621E28a7D3Ffd6Dd4965",relayerV3:"0x886A3Ec7bcC508B8795990B60Fa21f85F9dB7948",relayerV4:"0x2536dfeeCB7A0397CF98eDaDA8486254533b1aFA",gaugeController:"0xc128468b7ce63ea702c1f104d55a2566b13d3abd",feeDistributor:"0xD3cf852898b21fc233251427c2DC93d3d604F3BB",protocolFeePercentagesProvider:"0x97207B095e4D5C9a6e4cfbfcd2C3358E03B90c4A",veBal:"0xC128a9954e6c874eA3d62ce62B468bA073093F25",veBalProxy:"0x6f5a2eE11E7a772AeB5114A20d0D7c0ff61EB8A0",weightedPoolFactory:"0x8E9aa87E45e92bad84D5F8DD1bff34Fb92637dE9",composableStablePoolFactory:"0x85a80afee867adf27b50bdb7b76da70f1e853062"},tokens:{wrappedNativeAsset:"0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2",lbpRaisingTokens:["0x6B175474E89094C44Da98b954EedeAC495271d0F","0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48","0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2"],stETH:"0xae7ab96520de3a18e5e111b5eaab095312d7fe84",wstETH:"0x7f39c581f595b53c5cb19bd0b3f8da6c935e2ca0",bal:"0xba100000625a3754423978a60c9317c58a424e3d",veBal:"0xC128a9954e6c874eA3d62ce62B468bA073093F25",bbaUsd:"0x7b50775383d3d6f0215a8f290f2c9e2eebbeceb2"}},urls:{subgraph:"https://api.thegraph.com/subgraphs/name/balancer-labs/balancer-v2",gaugesSubgraph:"https://api.thegraph.com/subgraphs/name/balancer-labs/balancer-gauges",blockNumberSubgraph:"https://api.thegraph.com/subgraphs/name/blocklytics/ethereum-blocks"},pools:{wETHwstETH:{id:"0x32296969ef14eb0c6d29669c550d4a0449130230000200000000000000000080",address:"0x32296969ef14eb0c6d29669c550d4a0449130230"}},poolsToIgnore:["0xbd482ffb3e6e50dc1c437557c3bea2b68f3683ee"],sorConnectingTokens:[{symbol:"wEth",address:"0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2"},{symbol:"wstEth",address:"0x7f39C581F595B53c5cb19bD0b3f8dA6c935E2Ca0"},{symbol:"DOLA",address:"0x865377367054516e17014CcdED1e7d814EDC9ce4"}]},[ue.POLYGON]:{chainId:ue.POLYGON,addresses:{contracts:{vault:"0xBA12222222228d8Ba445958a75a0704d566BF2C8",multicall:"0xa1B2b503959aedD81512C37e9dce48164ec6a94d",relayerV3:"0xcf6a66E32dCa0e26AcC3426b851FD8aCbF12Dac7",relayerV4:"0x28A224d9d398a1eBB7BA69BCA515898966Bb1B6b",balancerHelpers:"0x239e55F427D44C3cc793f49bFB507ebe76638a2b",weightedPoolFactory:"0x0e39C3D9b2ec765eFd9c5c70BB290B1fCD8536E3",composableStablePoolFactory:"0x85a80afee867adf27b50bdb7b76da70f1e853062"},tokens:{bal:"0x9a71012b13ca4d3d0cdc72a177df3ef03b0e76a3",wrappedNativeAsset:"0x0d500B1d8E8eF31E21C99d1Db9A6444d3ADf1270"}},urls:{subgraph:"https://api.thegraph.com/subgraphs/name/balancer-labs/balancer-polygon-prune-v2",gaugesSubgraph:"https://api.thegraph.com/subgraphs/name/balancer-labs/balancer-gauges-polygon",blockNumberSubgraph:"https://api.thegraph.com/subgraphs/name/ianlapham/polygon-blocks"},pools:{},poolsToIgnore:["0x600bd01b6526611079e12e1ff93aba7a3e34226f"],sorConnectingTokens:[{symbol:"weth",address:"0x0d500B1d8E8eF31E21C99d1Db9A6444d3ADf1270"},{symbol:"bbrz2",address:"0xe22483774bd8611be2ad2f4194078dac9159f4ba"}]},[ue.ARBITRUM]:{chainId:ue.ARBITRUM,addresses:{contracts:{vault:"0xBA12222222228d8Ba445958a75a0704d566BF2C8",multicall:"0x269ff446d9892c9e19082564df3f5e8741e190a1",relayerV3:"0x42E49B48573c725ee32d2579060Ed06894f97002",relayerV4:"0x5bf3B7c14b10f16939d63Bd679264A1Aa951B4D5",balancerHelpers:"0x77d46184d22CA6a3726a2F500c776767b6A3d6Ab",weightedPoolFactory:"0x8df6EfEc5547e31B0eb7d1291B511FF8a2bf987c",composableStablePoolFactory:"0x85a80afee867adf27b50bdb7b76da70f1e853062"},tokens:{bal:"0x040d1edc9569d4bab2d15287dc5a4f10f56a56b8",wrappedNativeAsset:"0x82aF49447D8a07e3bd95BD0d56f35241523fBab1"}},urls:{subgraph:"https://api.thegraph.com/subgraphs/name/balancer-labs/balancer-arbitrum-v2",gaugesSubgraph:"https://api.thegraph.com/subgraphs/name/balancer-labs/balancer-gauges-arbitrum",blockNumberSubgraph:"https://api.thegraph.com/subgraphs/name/ianlapham/arbitrum-one-blocks"},pools:{},sorConnectingTokens:[{symbol:"weth",address:"0x82aF49447D8a07e3bd95BD0d56f35241523fBab1"}]},[ue.KOVAN]:{chainId:ue.KOVAN,addresses:{contracts:{vault:"0xBA12222222228d8Ba445958a75a0704d566BF2C8",multicall:"0x2cc8688C5f75E365aaEEb4ea8D6a480405A48D2A",veBal:"0x16ba924752EF283C7946db8A122a6742AA35C1DC",veBalProxy:"0x98D0d0a65cBeCCaa647a5a95cf27Cf2f00E1231C",balancerHelpers:"0x94905e703fEAd7f0fD0eEe355D267eE909784e6d",weightedPoolFactory:"0x8df6EfEc5547e31B0eb7d1291B511FF8a2bf987c"},tokens:{wrappedNativeAsset:"0xdFCeA9088c8A88A76FF74892C1457C17dfeef9C1"}},urls:{subgraph:"https://api.thegraph.com/subgraphs/name/balancer-labs/balancer-kovan-v2",gaugesSubgraph:"https://api.thegraph.com/subgraphs/name/balancer-labs/balancer-gauges"},pools:{}},[ue.ROPSTEN]:{chainId:ue.ROPSTEN,addresses:{contracts:{vault:"0xBA12222222228d8Ba445958a75a0704d566BF2C8",multicall:"0x53c43764255c17bd724f74c4ef150724ac50a3ed",balancerHelpers:""},tokens:{wrappedNativeAsset:"0xdFCeA9088c8A88A76FF74892C1457C17dfeef9C1"}},urls:{subgraph:"",gaugesSubgraph:"https://api.thegraph.com/subgraphs/name/balancer-labs/balancer-gauges"},pools:{}},[ue.RINKEBY]:{chainId:ue.RINKEBY,addresses:{contracts:{vault:"0xBA12222222228d8Ba445958a75a0704d566BF2C8",multicall:"0x42ad527de7d4e9d9d011ac45b31d8551f8fe9821",balancerHelpers:"0x5aDDCCa35b7A0D07C74063c48700C8590E87864E",weightedPoolFactory:"0x8df6EfEc5547e31B0eb7d1291B511FF8a2bf987c"},tokens:{wrappedNativeAsset:"0xdFCeA9088c8A88A76FF74892C1457C17dfeef9C1"}},urls:{subgraph:"https://api.thegraph.com/subgraphs/name/balancer-labs/balancer-rinkeby-v2",gaugesSubgraph:"https://api.thegraph.com/subgraphs/name/balancer-labs/balancer-gauges"},pools:{}},[ue.GOERLI]:{chainId:ue.GOERLI,addresses:{contracts:{vault:"0xBA12222222228d8Ba445958a75a0704d566BF2C8",multicall:"0x77dCa2C955b15e9dE4dbBCf1246B4B85b651e50e",relayerV3:"0x7b9B6f094DC2Bd1c12024b0D9CC63d6993Be1888",relayerV4:"0x00e695aA8000df01B8DC8401B4C34Fba5D56BBb2",gaugeController:"0xBB1CE49b16d55A1f2c6e88102f32144C7334B116",veBal:"0x33A99Dcc4C85C014cf12626959111D5898bbCAbF",veBalProxy:"0xA1F107D1cD709514AE8A914eCB757E95f9cedB31",balancerHelpers:"0x5aDDCCa35b7A0D07C74063c48700C8590E87864E",weightedPoolFactory:"0x8E9aa87E45e92bad84D5F8DD1bff34Fb92637dE9",composableStablePoolFactory:"0x85a80afee867adf27b50bdb7b76da70f1e853062"},tokens:{wrappedNativeAsset:"0xdFCeA9088c8A88A76FF74892C1457C17dfeef9C1"}},urls:{subgraph:"https://api.thegraph.com/subgraphs/name/balancer-labs/balancer-goerli-v2",gaugesSubgraph:"https://api.thegraph.com/subgraphs/name/balancer-labs/balancer-gauges-goerli",blockNumberSubgraph:"https://api.thegraph.com/subgraphs/name/blocklytics/goerli-blocks"},pools:{},sorConnectingTokens:[{symbol:"weth",address:"0xdFCeA9088c8A88A76FF74892C1457C17dfeef9C1"}]},[ue.OPTIMISM]:{chainId:ue.OPTIMISM,addresses:{contracts:{vault:"0xBA12222222228d8Ba445958a75a0704d566BF2C8",multicall:"0x2dc0e2aa608532da689e89e237df582b783e552c",relayerV3:"0x195CcCBE464EF9073d1f7A1ba1C9Bf0f56dfFFff",relayerV4:"0x1a58897Ab366082028ced3740900ecBD765Af738",balancerHelpers:"0x8E9aa87E45e92bad84D5F8DD1bff34Fb92637dE9",weightedPoolFactory:"0x0e39C3D9b2ec765eFd9c5c70BB290B1fCD8536E3",composableStablePoolFactory:"0x85a80afee867adf27b50bdb7b76da70f1e853062"},tokens:{wrappedNativeAsset:"0x4200000000000000000000000000000000000006"}},urls:{subgraph:"https://api.thegraph.com/subgraphs/name/beethovenxfi/beethovenx-optimism",gaugesSubgraph:""},pools:{},sorConnectingTokens:[{symbol:"weth",address:"0x4200000000000000000000000000000000000006"}]},[ue.GNOSIS]:{chainId:ue.GNOSIS,addresses:{contracts:{vault:"0xBA12222222228d8Ba445958a75a0704d566BF2C8",multicall:"0xbb6fab6b627947dae0a75808250d8b2652952cb5",relayerV4:"0xeF606F58A4FD0fCcb066c6203d0994694d3eB2D3",balancerHelpers:"0x8E9aa87E45e92bad84D5F8DD1bff34Fb92637dE9",weightedPoolFactory:"0xf302f9F50958c5593770FDf4d4812309fF77414f",composableStablePoolFactory:"0x76578ecf9a141296ec657847fb45b0585bcda3a6"},tokens:{wrappedNativeAsset:"0xe91D153E0b41518A2Ce8Dd3D7944Fa863463a97d"}},urls:{subgraph:"https://api.thegraph.com/subgraphs/name/balancer-labs/balancer-gnosis-chain-v2",gaugesSubgraph:""},pools:{},sorConnectingTokens:[{symbol:"weth",address:"0xe91D153E0b41518A2Ce8Dd3D7944Fa863463a97d"}]},[ue.DEFIVERSE]:{chainId:ue.DEFIVERSE,addresses:{contracts:{vault:"0x2FA699664752B34E90A414A42D62D7A8b2702B85",multicall:"0x8633dD7223f76c99bdc5a2D116FCF369d79852C4",relayerV4:"0x00e695aA8000df01B8DC8401B4C34Fba5D56BBb2",gaugeController:"",feeDistributor:"",protocolFeePercentagesProvider:"0xC462175C87672c7aad536c1248b72B1Cf46BEe27",veBal:"",veBalProxy:"",balancerHelpers:"0x4087EDb699803608A0214FD92e32119CAF57EcA3",weightedPoolFactory:"0xD1920DD25e4998B0d7cC8de7F12BeAf9796C7475",composableStablePoolFactory:"0xD01ad3085fb3e1fbB2541b5B3326B1F47B189747"},tokens:{wrappedNativeAsset:"0x5a89E11Cb554E00c2f51C4bb7F05bc7Ab0Fa6351",bal:"",veBal:""}},urls:{priceUrl:"https://price-api.gaming-dex.com/api/v1",subgraph:"https://graphnode.defi-verse.org/subgraphs/name/balancer-labs/defiverse",gaugesSubgraph:"https://graphnode.defi-verse.org/subgraphs/name/balancer-labs/gauges-defiverse"},pools:{},sorConnectingTokens:[{symbol:"weth",address:"0x5a89E11Cb554E00c2f51C4bb7F05bc7Ab0Fa6351"}]},[ue.DEFIVERSE_TESTNET]:{chainId:ue.DEFIVERSE_TESTNET,addresses:{contracts:{vault:"0x2Da016a77E290fb82F5af7051198304d57779f5d",multicall:"0xEB47269E97EeDB20EF782EB8caFb09ed55b02A39",relayerV4:"0x00e695aA8000df01B8DC8401B4C34Fba5D56BBb2",gaugeController:"",feeDistributor:"",protocolFeePercentagesProvider:"0x38d04d161247031484B31fB8403D20bed5287cf7",veBal:"",veBalProxy:"",balancerHelpers:"0x47404b46E0340F879ECC15977Ce196458cadc2DF",weightedPoolFactory:"0x48494Fa9eAd46EE8E3FcB66487a6dBBD34DcAFe3",composableStablePoolFactory:"0x58e6F99bB65378f47A520fC9630Bd711f2cf3Dc7"},tokens:{wrappedNativeAsset:"0x6B382742b07AAbBA58c38d792B5d7CBAaB246e99",bal:"0xb5C5C48D3082751f60EE1CAc8FC84a921931EC24"}},urls:{priceUrl:"https://price-api-testnet.gaming-dex.com/api/v1",subgraph:"https://graphnode-testnet.defi-verse.org/subgraphs/name/balancer-labs/defiverse-testnet-v2",gaugesSubgraph:"https://graphnode-testnet.defi-verse.org/subgraphs/name/balancer-labs/gauges-defiverse-testnet-v2"},pools:{},sorConnectingTokens:[{symbol:"weth",address:"0x6B382742b07AAbBA58c38d792B5d7CBAaB246e99"}]},[ue.OASYS]:{chainId:ue.OASYS,addresses:{contracts:{vault:"0xfb6f8FEdE0Cb63674Ab964affB93D65a4a7D55eA",multicall:"0xc52dc4a7dad06BEAB9230D482AcBEcFFc3aB009B",relayerV4:"0x00e695aA8000df01B8DC8401B4C34Fba5D56BBb2",gaugeController:"0x2D2BB676EfE00998ABf25aa499A19af16cC99F3e",feeDistributor:"0xE93F762E0d736fB2780bb9271233367942189B86",protocolFeePercentagesProvider:"0x56C181Ecf83e773978137b2B567d660768f8c8e3",veBal:"0x2B726256AdD04e65403cEf6679A2f2dfF7DDe9F9",veBalProxy:"0xe5276B39E604999c05d3051D896310A620E4Cc49",balancerHelpers:"0xf199DDb57d75225e13Fe13eb8BDDE8b16e188374",weightedPoolFactory:"0x4EF0b4827cE3D5FEcBc2C6ab80Ee81dBF9631D37",composableStablePoolFactory:"0x0A7A98c9553192755f22b282278f0FA26f4de742"},tokens:{wrappedNativeAsset:"0x5200000000000000000000000000000000000001",bal:"0x2B726256AdD04e65403cEf6679A2f2dfF7DDe9F9",veBal:"0x2B726256AdD04e65403cEf6679A2f2dfF7DDe9F9"}},urls:{priceUrl:"https://price-api.gaming-dex.com/api/v1",subgraph:"https://graphnode-oasys.defi-verse.org/subgraphs/name/balancer-labs/oasys",gaugesSubgraph:"https://graphnode-oasys.defi-verse.org/subgraphs/name/balancer-labs/gauges-oasys"},pools:{},sorConnectingTokens:[{symbol:"weth",address:"0x5200000000000000000000000000000000000001"}]},[ue.OASYS_TESTNET]:{chainId:ue.OASYS_TESTNET,addresses:{contracts:{vault:"0x1f7a0Bea1CB70FaA0f6b7B1126eCbd01Ef4E5BC8",multicall:"0xe5Fce05D922e3961F053bD2BF1F29F92d2a0a94B",relayerV4:"0x00e695aA8000df01B8DC8401B4C34Fba5D56BBb2",gaugeController:"0x82e3ACEE6e747B164327cca5e6309bb38f114848",feeDistributor:"0x8A55C4F4f178d62Da281c244e4AD98A9C72c418a",protocolFeePercentagesProvider:"0xACA587e675102f0fDcBc9FddC441f820cB2c64b9",veBal:"0x9288F664FEFc9f374A53C4307BD3c8F91e83f466",veBalProxy:"0x0b205Ed28BC51E7DE4686ef725488bCecEe87606",balancerHelpers:"0x3B847f3Fa5585Dc3aeDB40780fF47e31B0fF14C0",weightedPoolFactory:"0xd2d7F457B9749B6A0A637685A65681F03116125C",composableStablePoolFactory:"0xfDA8fa80dd77A99BF71BeCFce47077859e689898"},tokens:{wrappedNativeAsset:"0x5200000000000000000000000000000000000001",bal:"0x9288F664FEFc9f374A53C4307BD3c8F91e83f466",veBal:"0x9288F664FEFc9f374A53C4307BD3c8F91e83f466"}},urls:{priceUrl:"https://price-api-testnet.gaming-dex.com/api/v1",subgraph:"https://graphnode-oasys-testnet.defi-verse.org/subgraphs/name/balancer-labs/oasys-testnet",gaugesSubgraph:"https://graphnode-oasys-testnet.defi-verse.org/subgraphs/name/balancer-labs/gauges-oasys-testnet-v2"},pools:{},sorConnectingTokens:[{symbol:"weth",address:"0x5200000000000000000000000000000000000001"}]},[ue.MEGAETH_TESTNET]:{chainId:ue.MEGAETH_TESTNET,addresses:{contracts:{vault:"0x17e3debc39CD1239b08aC1df87593C57BE69171f",multicall:"0xC003DCBACe8a39fa6740284AbBd2FBf6467428ba",relayerV4:"0x00e695aA8000df01B8DC8401B4C34Fba5D56BBb2",gaugeController:"0x8b91eB206963A50B739fCe40CcB8E87384CE0576",feeDistributor:"",protocolFeePercentagesProvider:"0x379b189112a544976Fe7F5bdcF33fc787857c621",veBal:"0x8D23f3B57cF4B5Ed734574738Fa0Fc2C5b5e37d1",veBalProxy:"0x0AAea5d401Ea5f82a03edBBeE67cE665C349aA97",balancerHelpers:"0x0309DA369DF0f208d117c8291d34a041122Be0AD",weightedPoolFactory:"0x84F75879C0aC87eAFAF4f1E3E1A2372caAB5273b",composableStablePoolFactory:""},tokens:{wrappedNativeAsset:"0xAba76Cdc5910F6627856EB75Bcce0171376999C7",bal:"0x8D23f3B57cF4B5Ed734574738Fa0Fc2C5b5e37d1",veBal:"0x8D23f3B57cF4B5Ed734574738Fa0Fc2C5b5e37d1"}},urls:{priceUrl:"https://price-api-testnet.gaming-dex.com/api/v1",subgraph:"https://graphnode-megaeth-testnet.defi-verse.org/subgraphs/name/balancer-labs/megaeth-testnet",gaugesSubgraph:"https://graphnode-megaeth-testnet.defi-verse.org/subgraphs/name/balancer-labs/gauges-megaeth-testnet"},pools:{},sorConnectingTokens:[{symbol:"weth",address:"0xAba76Cdc5910F6627856EB75Bcce0171376999C7"}]},[ue.MEGAETH_MAINNET]:{chainId:ue.MEGAETH_MAINNET,addresses:{contracts:{vault:"0x56e0c32496c5F20B5a367aBb350629609FB3bA60",multicall:"0x32Ea7B7c8d85D26D53D4Ab6eb98a6C9012F7e1Da",relayerV4:"0x00e695aA8000df01B8DC8401B4C34Fba5D56BBb2",gaugeController:"0x3C7297968403fB10c4dA289814a0158Ec164bA7c",feeDistributor:"",protocolFeePercentagesProvider:"0x595d2E000B5493e40B2200448924D39DE5DEfbC5",veBal:"0x3EeaBC1632B47b0da9681674E67160d65811E7AB",veBalProxy:"0xcC463A1818b8b9Ac6F884DD77C031b352E3Bf11f",balancerHelpers:"0x2a46b959efc72a9f450E2ef11BF9b9322FB5a337",weightedPoolFactory:"0x083904D9006abDA7950337C7215Ecfc028855f0B",composableStablePoolFactory:""},tokens:{wrappedNativeAsset:"0x4200000000000000000000000000000000000006",bal:"0x3EeaBC1632B47b0da9681674E67160d65811E7AB",veBal:"0x3EeaBC1632B47b0da9681674E67160d65811E7AB"}},urls:{priceUrl:"https://price-api.gaming-dex.com/api/v1",subgraph:"https://graphnode-megaeth.defi-verse.org/subgraphs/name/balancer-labs/megaeth",gaugesSubgraph:"https://graphnode-megaeth.defi-verse.org/subgraphs/name/balancer-labs/gauges-megaeth"},pools:{},sorConnectingTokens:[{symbol:"weth",address:"0x4200000000000000000000000000000000000006"}]}},Ut=e=>Lt[e].addresses;var Gt;!function(e){e.SWAP_ZERO_RETURN_AMOUNT="SWAP_ZERO_RETURN_AMOUNT",e.UNWRAP_ZERO_AMOUNT="UNWRAP_ZERO_AMOUNT",e.WRAP_ZERO_AMOUNT="WRAP_ZERO_AMOUNT",e.QUERY_BATCH_SWAP="QUERY_BATCH_SWAP",e.POOL_DOESNT_EXIST="POOL_DOESNT_EXIST",e.UNSUPPORTED_POOL_TYPE="UNSUPPORTED_POOL_TYPE",e.UNSUPPORTED_PAIR="UNSUPPORTED_PAIR",e.NO_POOL_DATA="NO_POOL_DATA",e.INPUT_OUT_OF_BOUNDS="INPUT_OUT_OF_BOUNDS",e.INPUT_LENGTH_MISMATCH="INPUT_LENGTH_MISMATCH",e.INPUT_TOKEN_INVALID="INPUT_TOKEN_INVALID",e.INPUT_ZERO_NOT_ALLOWED="INPUT_ZERO_NOT_ALLOWED",e.INTERNAL_ERROR_INVALID_ABI="INTERNAL_ERROR_INVALID_ABI",e.TOKEN_MISMATCH="TOKEN_MISMATCH",e.MISSING_TOKENS="MISSING_TOKENS",e.MISSING_AMP="MISSING_AMP",e.MISSING_DECIMALS="MISSING_DECIMALS",e.MISSING_PRICE_RATE="MISSING_PRICE_RATE",e.MISSING_WEIGHT="MISSING_WEIGHT",e.RELAY_SWAP_AMOUNTS="RELAY_SWAP_AMOUNTS",e.NO_VALUE_PARAMETER="NO_VALUE_PARAMETER",e.ILLEGAL_PARAMETER="ILLEGAL_PARAMETER",e.TIMESTAMP_IN_THE_FUTURE="TIMESTAMP_IN_THE_FUTURE",e.JOIN_DELTA_AMOUNTS="JOIN_DELTA_AMOUNTS",e.EXIT_DELTA_AMOUNTS="EXIT_DELTA_AMOUNTS"}(Gt||(Gt={}));class $t extends Error{constructor(e){super($t.getMessage(e)),this.code=e,this.name="BalancerError"}static getMessage(e){switch(e){case Gt.SWAP_ZERO_RETURN_AMOUNT:return"queryBatchSwapWithSor returned 0 amount";case Gt.UNWRAP_ZERO_AMOUNT:return"swapUnwrapAaveStaticExactIn unwrapped amount < 0";case Gt.WRAP_ZERO_AMOUNT:return"swapUnwrapAaveStaticExactOut wrapped amount < 0";case Gt.QUERY_BATCH_SWAP:return"queryBatchSwap on chain call error";case Gt.POOL_DOESNT_EXIST:return"balancer pool does not exist";case Gt.UNSUPPORTED_POOL_TYPE:return"unsupported pool type";case Gt.UNSUPPORTED_PAIR:return"unsupported token pair";case Gt.NO_POOL_DATA:return"no pool data";case Gt.INPUT_OUT_OF_BOUNDS:return"input out of bounds";case Gt.INPUT_LENGTH_MISMATCH:return"input length mismatch";case Gt.INPUT_TOKEN_INVALID:return"input token invalid";case Gt.TOKEN_MISMATCH:return"token mismatch";case Gt.MISSING_DECIMALS:return"missing decimals";case Gt.MISSING_TOKENS:return"missing tokens";case Gt.MISSING_AMP:return"missing amp";case Gt.MISSING_PRICE_RATE:return"missing price rate";case Gt.MISSING_WEIGHT:return"missing weight";case Gt.INPUT_ZERO_NOT_ALLOWED:return"zero input not allowed";case Gt.RELAY_SWAP_AMOUNTS:return"Error when checking swap amounts";case Gt.NO_VALUE_PARAMETER:return"Illegal value passed as parameter";case Gt.TIMESTAMP_IN_THE_FUTURE:return"Timestamp cannot be in the future";case Gt.ILLEGAL_PARAMETER:return"An illegal parameter has been passed";case Gt.JOIN_DELTA_AMOUNTS:return"Error when checking join call deltas";case Gt.EXIT_DELTA_AMOUNTS:return"Error when checking exit call deltas";default:return"Unknown error"}}}class qt{constructor(){this.buildExitExactBPTIn=({exiter:e,pool:t,bptIn:a,slippage:n,shouldUnwrapNativeAsset:s,wrappedNativeAsset:r,singleTokenMaxOut:o})=>{if(!a.length||c(a,18).isNegative())throw new $t(Gt.INPUT_OUT_OF_BOUNDS);if(o&&o!==i&&!t.tokens.map((e=>e.address)).some((e=>Pt(e,o))))throw new $t(Gt.TOKEN_MISMATCH);if(!s&&o===i)throw new Error("shouldUnwrapNativeAsset and singleTokenMaxOut should not have conflicting values");if(t.tokens.some((e=>!e.decimals)))throw new $t(Gt.MISSING_DECIMALS);if(!t.amp)throw new $t(Gt.MISSING_AMP);const{parsedTokens:l,parsedAmp:p,parsedTotalShares:u,parsedSwapFee:y,upScaledBalances:b,scalingFactors:f}=Le(t),m=l.map((e=>e===r?i:e)),h=new we(r),[T,g,I]=h.sortTokens(s?m:l,b,f);let w,E=Array(l.length).fill("0"),x=Array(l.length).fill("0");if(o){const e=l.indexOf(o),t=A.StableMathBigInt._calcTokenOutGivenExactBptIn(BigInt(p),g.map((e=>BigInt(e))),e,BigInt(a),BigInt(u),BigInt(y)).toString();E[e]=t,x[e]=Ft(d.from(t),d.from(n)).toString(),w=Z.exitExactBPTInForOneTokenOut(a,e)}else{const e=function(e,t){const a=new Array(e.length);for(let n=0;n<e.length;++n)a[n]=Re.divDownFixed(e[n],t[n]);return a}(A.StableMathBigInt._calcTokensOutGivenExactBptIn(g.map((e=>BigInt(e))),BigInt(a),BigInt(u)).map((e=>e.toString())).map((e=>BigInt(e))),I.map((e=>BigInt(e))));E=e.map((e=>e.toString())),x=e.map((e=>Ft(d.from(e),d.from(n)).toString())),w=Z.exitExactBPTInForTokensOut(a)}const S=Mt,P="exitPool",_={poolId:t.id,sender:e,recipient:e,exitPoolRequest:{assets:T,minAmountsOut:x,userData:w,toInternalBalance:!1}};return{to:S,functionName:P,attributes:_,data:L.createInterface().encodeFunctionData(P,[_.poolId,_.sender,_.recipient,_.exitPoolRequest]),expectedAmountsOut:E,minAmountsOut:x}},this.buildExitExactTokensOut=({exiter:e,pool:t,tokensOut:a,amountsOut:n,slippage:s,wrappedNativeAsset:i})=>{if(a.length!=n.length||a.length!=t.tokensList.length)throw new $t(Gt.INPUT_LENGTH_MISMATCH);if(t.tokens.some((e=>!e.decimals)))throw new $t(Gt.MISSING_DECIMALS);if(!t.amp)throw new $t(Gt.MISSING_AMP);const{parsedTokens:r,parsedAmp:o,parsedTotalShares:c,parsedSwapFee:l,upScaledBalances:p,scalingFactors:u}=Le(t),y=new we(i),[,b,f]=y.sortTokens(r,p,u),[m,h]=y.sortTokens(a,n),T=Fe(h.map((e=>BigInt(e))),f.map((e=>BigInt(e)))),g=A.StableMathBigInt._calcBptInGivenExactTokensOut(BigInt(o),b.map((e=>BigInt(e))),T,BigInt(c),BigInt(l)).toString(),I=Rt(d.from(g),d.from(s)).toString(),w=Z.exitBPTInForExactTokensOut(h,I),E=Mt,x="exitPool",S={poolId:t.id,sender:e,recipient:e,exitPoolRequest:{assets:m,minAmountsOut:h,userData:w,toInternalBalance:!1}};return{to:E,functionName:x,attributes:S,data:L.createInterface().encodeFunctionData(x,[S.poolId,S.sender,S.recipient,S.exitPoolRequest]),expectedBPTIn:g,maxBPTIn:I}}}}class Wt{constructor(){this.buildJoin=({joiner:e,pool:t,tokensIn:a,amountsIn:n,slippage:s,wrappedNativeAsset:r})=>{if(a.length!=n.length||a.length!=t.tokensList.length)throw new $t(Gt.INPUT_LENGTH_MISMATCH);if(t.tokens.some((e=>!e.decimals)))throw new $t(Gt.MISSING_DECIMALS);if(!t.amp)throw new $t(Gt.MISSING_AMP);const{parsedTokens:o,parsedAmp:c,parsedTotalShares:l,parsedSwapFee:p,scalingFactors:u,upScaledBalances:y}=Le(t),b=new we(r),[f,m]=b.sortTokens(a,n),[,h,T]=b.sortTokens(o,y,u),g=Fe(m.map((e=>BigInt(e))),T.map((e=>BigInt(e)))),I=A.StableMathBigInt._calcBptOutGivenExactTokensIn(BigInt(c),h.map((e=>BigInt(e))),g,BigInt(l),BigInt(p)).toString(),w=Ft(d.from(I),d.from(s)).toString(),E=Z.joinExactTokensInForBPTOut(m,w),x=Mt,S="joinPool",P={poolId:t.id,sender:e,recipient:e,joinPoolRequest:{assets:f,maxAmountsIn:m,userData:E,fromInternalBalance:!1}},_=L.createInterface().encodeFunctionData(S,[P.poolId,P.sender,P.recipient,P.joinPoolRequest]),v=n.filter(((e,t)=>a[t]===i));return{to:x,functionName:S,attributes:P,data:_,value:v[0]?d.from(v[0]):void 0,minBPTOut:w,expectedBPTOut:I}}}}class Vt{calcTotal(e){var t,a;let n=d.from(0),s=d.from(0);for(let a=0;a<e.length;a++){const i=e[a];if(!(null===(t=i.price)||void 0===t?void 0:t.usd))continue;const r=wt(i.price.usd.toString(),18),o=wt(i.balance,18),d=o.mul(r);s=s.add(d),n=n.add(o)}if(n.gt(0)){const t=s.div(n);for(let i=0;i<e.length;i++){const r=e[i];if(null===(a=r.price)||void 0===a?void 0:a.usd)continue;const o=wt(r.balance,18),d=o.mul(t);s=s.add(d),n=n.add(o)}}return l(s,36).toString()}}class Ht{calcPoolSpotPrice(e,t,a){const n=S.fromPool(a),s=n.parsePoolPairData(e,t);return n._spotPriceAfterSwapExactTokenInForTokenOut(s,P).toString()}}function jt(e,t,a){return a?function(e,t){const a=ke-Re.divDownFixed(e,t);return a<0?BigInt(0):a}(e,t):function(e,t){const a=Re.divDownFixed(e,t)-ke;return a<0?BigInt(0):a}(e,t)}const Xt=BigInt(1e3);function Kt(e,t,a,n){const s=t.length,i=function(e,t,a){let n=Oe;const s=t.length;for(let e=0;e<s;e++)n+=t[e];if(n==Oe)return Oe;let i=Oe,r=n;const o=e*BigInt(s);for(let e=0;e<255;e++){let e=t[0]*BigInt(s);for(let n=1;n<s;n++)e=Re.div(Re.mul(Re.mul(e,t[n]),BigInt(s)),r,a);if(i=r,r=Re.div(Re.mul(Re.mul(BigInt(s),r),r)+Re.div(Re.mul(Re.mul(o,n),e),Xt,a),Re.mul(BigInt(s+1),r)+Re.div(Re.mul(o-Xt,e),Xt,!a),a),r>i){if(r-i<=1)return r}else if(i-r<=1)return r}throw new Error("Errors.STABLE_INVARIANT_DIDNT_CONVERGE")}(e,t,!0);let r=Oe,o=i/BigInt(s);for(let e=0;e<s;e++)e!=n&&(r+=t[e],o=o*i/(BigInt(s)*t[e]));const d=t[n],c=e*BigInt(s),l=c*r,p=BigInt(Xt)-c,u=BigInt(2)*c*d+l+p*i,y=o*BigInt(s+1)*Xt-p*d;return Re.divUpFixed(u*a/y,i)}class Yt{bptZeroPriceImpact(e,t){if(t.length!==e.tokensList.length)throw new $t(Gt.INPUT_LENGTH_MISMATCH);const{parsedBalances:a,parsedDecimals:n,parsedAmp:s,parsedTotalShares:i}=Le(e),r=n.map((e=>{if(!e)throw new $t(Gt.MISSING_DECIMALS);return BigInt(e)}));if(!s)throw new $t(Gt.MISSING_PRICE_RATE);const o=BigInt(i),d=r.map((e=>Ne(BigInt(e)))),c=a.map(((e,t)=>Ce(BigInt(e),d[t])));let l=Oe;for(let e=0;e<c.length;e++){const a=Kt(BigInt(s),c,o,e),n=Ne(BigInt(r[e]));l+=a*Ce(t[e],n)/ke}return l}calcPriceImpact(e,t,a,n){const s=this.bptZeroPriceImpact(e,t.map((e=>BigInt(e))));return jt(BigInt(a),s,n).toString()}}class Jt{constructor(e=new qt,t=new Wt,a=new Vt,n=new Ht,s=new Yt){this.exit=e,this.join=t,this.liquidity=a,this.spotPriceCalculator=n,this.priceImpactCalculator=s}}class Zt{calcPoolSpotPrice(e,t,a){const n=_.fromPool(a),s=n.parsePoolPairData(e,t);return n._spotPriceAfterSwapExactTokenInForTokenOut(s,P).toString()}}class zt{bptZeroPriceImpact(e,t){if(t.length!==e.tokensList.length-1)throw new $t(Gt.INPUT_LENGTH_MISMATCH);const a=g(e.tokensList),n=a.findIndex((t=>t==e.address)),{parsedBalances:s,parsedDecimals:i,parsedPriceRates:r,parsedAmp:o,parsedTotalShares:d}=Le(e),c=i.map((e=>{if(!e)throw new $t(Gt.MISSING_DECIMALS);return BigInt(e)})),l=r.map((e=>{if(!e)throw new $t(Gt.MISSING_PRICE_RATE);return BigInt(e)}));if(!o)throw new $t(Gt.MISSING_PRICE_RATE);const p=BigInt(d);a.splice(n,1);const u=c.map((e=>Ne(BigInt(e)))),y=s.map(((e,t)=>Ce(BigInt(e),u[t])));if(t.length!==a.length)throw new $t(Gt.INPUT_LENGTH_MISMATCH);y.splice(n,1);const b=y.map(((e,t)=>Re.mulDownFixed(e,l[t])));let f=Oe;for(let e=0;e<a.length;e++){const a=Kt(BigInt(o),b,p,e)*l[e]/ke,n=Ne(BigInt(c[e]));f+=a*Ce(t[e],n)/ke}return f}calcPriceImpact(e,t,a,n){const s=this.bptZeroPriceImpact(e,t.map((e=>BigInt(e))));return jt(BigInt(a),s,n).toString()}}class Qt{constructor(){this.buildJoin=({joiner:e,pool:t,tokensIn:a,amountsIn:n,slippage:s,wrappedNativeAsset:r})=>{if(a.length!=n.length||a.length!=t.tokensList.length-1)throw new $t(Gt.INPUT_LENGTH_MISMATCH);if(t.tokens.some((e=>!e.decimals)))throw new $t(Gt.MISSING_DECIMALS);const o=new we(r),[,c]=o.sortTokens(a,n),{parsedTokens:l,parsedAmp:p,parsedSwapFee:u,parsedTotalShares:y,scalingFactorsWithoutBpt:b,parsedBalancesWithoutBpt:f,bptIndex:m}=Le(t,r);if(!p)throw new $t(Gt.MISSING_AMP);const h=Fe(c.map(BigInt),b.map(BigInt)),T=v._calcBptOutGivenExactTokensIn(BigInt(p),f.map(BigInt),h,BigInt(y),BigInt(u)).toString(),g=Ft(d.from(T),d.from(s)).toString(),I=se.joinExactTokensInForBPTOut(c,g),w="joinPool",E={poolId:t.id,sender:e,recipient:e,joinPoolRequest:{assets:l,maxAmountsIn:_t(c,m,"0"),userData:I,fromInternalBalance:!1}},x=L.createInterface().encodeFunctionData(w,[E.poolId,E.sender,E.recipient,E.joinPoolRequest]),A=n.filter(((e,t)=>a[t]===i)),S=A[0]?d.from(A[0]):void 0;return{to:Mt,functionName:w,attributes:E,data:x,value:S,minBPTOut:g,expectedBPTOut:T}}}}class ea{constructor(){this.buildExitExactBPTIn=({exiter:e,pool:t,bptIn:a,slippage:n,shouldUnwrapNativeAsset:s,wrappedNativeAsset:i,singleTokenMaxOut:r})=>{throw new Error("To be implemented")},this.buildExitExactTokensOut=({exiter:e,pool:t,tokensOut:a,amountsOut:n,slippage:s,wrappedNativeAsset:i})=>{throw new Error("To be implemented")}}}class ta{constructor(e=new ea,t=new Vt,a=new Zt,n=new zt,s=new Qt){this.exit=e,this.liquidity=t,this.spotPriceCalculator=a,this.priceImpactCalculator=n,this.join=s}}class aa{constructor(){this.buildExitExactBPTIn=({exiter:e,pool:t,bptIn:a,slippage:n,shouldUnwrapNativeAsset:s,wrappedNativeAsset:r,singleTokenMaxOut:o})=>{if(!a.length||c(a,18).isNegative())throw new $t(Gt.INPUT_OUT_OF_BOUNDS);if(o&&o!==i&&!t.tokens.map((e=>e.address)).some((e=>Pt(e,o))))throw new $t(Gt.TOKEN_MISMATCH);if(!s&&o===i)throw new Error("shouldUnwrapNativeAsset and singleTokenMaxOut should not have conflicting values");const{parsedTokens:l,parsedBalances:p,parsedWeights:u,parsedTotalShares:y,parsedSwapFee:b}=Le(t),f=l.map((e=>e===r?i:e)),m=new we(r),[h,T,g]=m.sortTokens(s?f:l,p,u);let I,w=Array(h.length).fill("0"),E=Array(h.length).fill("0");if(o){const e=h.indexOf(o),t=A.WeightedMaths._calcTokenOutGivenExactBptIn(BigInt(T[e]),BigInt(g[e]),BigInt(a),BigInt(y),BigInt(b)).toString();w[e]=t,E[e]=Ft(d.from(t),d.from(n)).toString(),I=z.exitExactBPTInForOneTokenOut(a,e)}else w=A.WeightedMaths._calcTokensOutGivenExactBptIn(T.map((e=>BigInt(e))),BigInt(a),BigInt(y)).map((e=>e.toString())),E=w.map((e=>Ft(d.from(e),d.from(n)).toString())),I=z.exitExactBPTInForTokensOut(a);const x=Mt,S="exitPool",P={poolId:t.id,sender:e,recipient:e,exitPoolRequest:{assets:h,minAmountsOut:E,userData:I,toInternalBalance:!1}};return{to:x,functionName:S,attributes:P,data:L.createInterface().encodeFunctionData(S,[P.poolId,P.sender,P.recipient,P.exitPoolRequest]),expectedAmountsOut:w,minAmountsOut:E}},this.buildExitExactTokensOut=({exiter:e,pool:t,tokensOut:a,amountsOut:n,slippage:s,wrappedNativeAsset:i})=>{if(a.length!=n.length||a.length!=t.tokensList.length)throw new $t(Gt.INPUT_LENGTH_MISMATCH);const{parsedTokens:r,parsedBalances:o,parsedWeights:c,parsedTotalShares:l,parsedSwapFee:p}=Le(t),u=new we(i),[,y,b]=u.sortTokens(r,o,c),[f,m]=u.sortTokens(a,n),h=A.WeightedMaths._calcBptInGivenExactTokensOut(y.map((e=>BigInt(e))),b.map((e=>BigInt(e))),m.map((e=>BigInt(e))),BigInt(l),BigInt(p)).toString(),T=Rt(d.from(h),d.from(s)).toString(),g=z.exitBPTInForExactTokensOut(m,T),I=Mt,w="exitPool",E={poolId:t.id,sender:e,recipient:e,exitPoolRequest:{assets:f,minAmountsOut:m,userData:g,toInternalBalance:!1}};return{to:I,functionName:w,attributes:E,data:L.createInterface().encodeFunctionData(w,[E.poolId,E.sender,E.recipient,E.exitPoolRequest]),expectedBPTIn:h,maxBPTIn:T}}}}class na{constructor(){this.buildJoin=({joiner:e,pool:t,tokensIn:a,amountsIn:n,slippage:s,wrappedNativeAsset:r})=>{if(a.length!=n.length||a.length!=t.tokensList.length)throw new $t(Gt.INPUT_LENGTH_MISMATCH);if(t.tokens.some((e=>!e.decimals)))throw new $t(Gt.MISSING_DECIMALS);if(t.tokens.some((e=>!e.weight)))throw new $t(Gt.MISSING_WEIGHT);const{parsedTokens:o,parsedBalances:c,parsedWeights:l,parsedTotalShares:p,parsedSwapFee:u}=Le(t),y=new we(r),[b,f]=y.sortTokens(a,n),[,m,h]=y.sortTokens(o,c,l),T=O._calcBptOutGivenExactTokensIn(m.map((e=>BigInt(e))),h.map((e=>BigInt(e))),f.map((e=>BigInt(e))),BigInt(p),BigInt(u)).toString(),g=Ft(d.from(T),d.from(s)).toString(),I=z.joinExactTokensInForBPTOut(f,g),w=Mt,E="joinPool",x={poolId:t.id,sender:e,recipient:e,joinPoolRequest:{assets:b,maxAmountsIn:f,userData:I,fromInternalBalance:!1}},A=L.createInterface().encodeFunctionData(E,[x.poolId,x.sender,x.recipient,x.joinPoolRequest]),S=n.filter(((e,t)=>a[t]===i));return{to:w,functionName:E,attributes:x,data:A,value:S[0]?d.from(S[0]):void 0,minBPTOut:g,expectedBPTOut:T}}}}class sa{calcTotal(e){var t;let a=d.from(0),n=d.from(0);for(let s=0;s<e.length;s++){const i=e[s];if(!(null===(t=i.price)||void 0===t?void 0:t.usd))continue;let r;r=parseFloat(i.price.usd)<1?wt(parseFloat(i.price.usd).toFixed(10),10).mul(1e8):wt(i.price.usd,18);const o=wt(i.balance,18),d=wt(i.weight||"0",18),c=o.mul(r);n=n.add(c),a=a.add(d)}const s=e.reduce(((e,t)=>e.add(wt(t.weight||"0",18))),d.from(0));if(a.gt(0)){return Et(n.mul(s).div(a),36)}return"0"}}class ia{calcPoolSpotPrice(e,t,a){const n=e===a.address||t===a.address;if(n){const e={address:a.address,balance:a.totalShares,decimals:18,priceRate:"1",weight:"0"};a.tokens.push(e),a.tokensList.push(a.address)}const s=B.fromPool(a),i=s.parsePoolPairData(e,t),r=s._spotPriceAfterSwapExactTokenInForTokenOut(i,P).toString();return n&&(a.tokens.pop(),a.tokensList.pop()),r}}class ra{bptZeroPriceImpact(e,t){if(t.length!==e.tokensList.length)throw new $t(Gt.INPUT_LENGTH_MISMATCH);const{parsedBalances:a,parsedDecimals:n,parsedTotalShares:s,parsedWeights:i}=Le(e),r=BigInt(s),o=g(e.tokensList);let d=Oe;for(let e=0;e<o.length;e++){const s=n[e];let o,c;if(!s)throw new $t(Gt.MISSING_DECIMALS);o=Ne(BigInt(s)),c=Ce(BigInt(a[e]),o);const l=i[e];let p;if(!l)throw new $t(Gt.MISSING_WEIGHT);p=BigInt(l);d+=p*r/c*Ce(t[e],o)/ke}return d}calcPriceImpact(e,t,a,n){const s=this.bptZeroPriceImpact(e,t.map((e=>BigInt(e))));return jt(BigInt(a),s,n).toString()}}class oa{constructor(e=new aa,t=new na,a=new sa,n=new ia,s=new ra){this.exit=e,this.join=t,this.liquidity=a,this.spotPriceCalculator=n,this.priceImpactCalculator=s}}class da{constructor(){this.buildExitExactBPTIn=({exiter:e,pool:t,bptIn:a,slippage:n,shouldUnwrapNativeAsset:s,wrappedNativeAsset:r,singleTokenMaxOut:o})=>{if(!a.length||c(a,18).isNegative())throw new $t(Gt.INPUT_OUT_OF_BOUNDS);if(o&&o!==i&&!t.tokens.map((e=>e.address)).some((e=>Pt(e,o))))throw new $t(Gt.TOKEN_MISMATCH);if(!s&&o===i)throw new Error("shouldUnwrapNativeAsset and singleTokenMaxOut should not have conflicting values");if(t.tokens.some((e=>!e.decimals)))throw new $t(Gt.MISSING_DECIMALS);if(!t.amp)throw new $t(Gt.MISSING_AMP);if(t.tokens.some((e=>!e.priceRate)))throw new $t(Gt.MISSING_PRICE_RATE);const{parsedTokens:l,parsedBalances:p,parsedAmp:u,parsedPriceRates:y,parsedTotalShares:b,parsedSwapFee:f}=Le(t),m=l.map((e=>e===r?i:e)),h=new we(r),[T,g,I]=h.sortTokens(s?m:l,p,y),w=g.map(((e,t)=>d.from(e).mul(d.from(I[t])).div(c("1",18)).toString()));let E,x=Array(l.length).fill("0"),S=Array(l.length).fill("0");if(o){const e=T.indexOf(o),t=A.StableMathBigInt._calcTokenOutGivenExactBptIn(BigInt(u),w.map((e=>BigInt(e))),e,BigInt(a),BigInt(b),BigInt(f)).toString(),s=d.from(t).div(d.from(I[e])).mul(c("1",18)).toString();x[e]=s,S[e]=Ft(d.from(s),d.from(n)).toString(),E=Z.exitExactBPTInForOneTokenOut(a,e)}else{x=A.StableMathBigInt._calcTokensOutGivenExactBptIn(w.map((e=>BigInt(e))),BigInt(a),BigInt(b)).map((e=>e.toString())).map(((e,t)=>d.from(e).mul(c("1",18)).div(d.from(I[t])).toString())),S=x.map((e=>Ft(d.from(e),d.from(n)).toString())),E=Z.exitExactBPTInForTokensOut(a)}const P=Mt,_="exitPool",v={poolId:t.id,sender:e,recipient:e,exitPoolRequest:{assets:T,minAmountsOut:S,userData:E,toInternalBalance:!1}};return{to:P,functionName:_,attributes:v,data:L.createInterface().encodeFunctionData(_,[v.poolId,v.sender,v.recipient,v.exitPoolRequest]),expectedAmountsOut:x,minAmountsOut:S}},this.buildExitExactTokensOut=({exiter:e,pool:t,tokensOut:a,amountsOut:n,slippage:s,wrappedNativeAsset:i})=>{if(a.length!=n.length||a.length!=t.tokensList.length)throw new $t(Gt.INPUT_LENGTH_MISMATCH);if(t.tokens.some((e=>!e.decimals)))throw new $t(Gt.MISSING_DECIMALS);if(!t.amp)throw new $t(Gt.MISSING_AMP);if(t.tokens.some((e=>!e.priceRate)))throw new $t(Gt.MISSING_PRICE_RATE);const{parsedTokens:r,parsedBalances:o,parsedPriceRates:l,parsedAmp:p,parsedTotalShares:u,parsedSwapFee:y}=Le(t),b=new we(i),[,f,m]=b.sortTokens(r,o,l),[h,T]=b.sortTokens(a,n),g=T.map(((e,t)=>d.from(e).mul(d.from(m[t])).div(c("1",18)).toString())),I=f.map(((e,t)=>d.from(e).mul(d.from(m[t])).div(c("1",18)).toString())),w=A.StableMathBigInt._calcBptInGivenExactTokensOut(BigInt(p),I.map((e=>BigInt(e))),g.map((e=>BigInt(e))),BigInt(u),BigInt(y)).toString(),E=Rt(d.from(w),d.from(s)).toString(),x=Z.exitBPTInForExactTokensOut(T,E),S=T.map(((e,t)=>e===g[t]?e:d.from(e).sub(1).toString())),P=Mt,_="exitPool",v={poolId:t.id,sender:e,recipient:e,exitPoolRequest:{assets:h,minAmountsOut:S,userData:x,toInternalBalance:!1}};return{to:P,functionName:_,attributes:v,data:L.createInterface().encodeFunctionData(_,[v.poolId,v.sender,v.recipient,v.exitPoolRequest]),expectedBPTIn:w,maxBPTIn:E}}}}class ca{constructor(){this.buildJoin=({joiner:e,pool:t,tokensIn:a,amountsIn:n,slippage:s,wrappedNativeAsset:r})=>{if(a.length!=n.length||a.length!=t.tokensList.length)throw new $t(Gt.INPUT_LENGTH_MISMATCH);if(t.tokens.some((e=>!e.decimals)))throw new $t(Gt.MISSING_DECIMALS);if(!t.amp)throw new $t(Gt.MISSING_AMP);if(t.tokens.some((e=>!e.priceRate)))throw new $t(Gt.MISSING_PRICE_RATE);const{parsedTokens:o,parsedBalances:l,parsedPriceRates:p,parsedAmp:u,parsedTotalShares:y,parsedSwapFee:b}=Le(t),f=new we(r),[m,h]=f.sortTokens(a,n),[,T,g]=f.sortTokens(o,l,p),I=h.map(((e,t)=>d.from(e).mul(d.from(g[t])).div(c("1",18)).toString())),w=T.map(((e,t)=>d.from(e).mul(d.from(g[t])).div(c("1",18)).toString())),E=A.StableMathBigInt._calcBptOutGivenExactTokensIn(BigInt(u),w.map((e=>BigInt(e))),I.map((e=>BigInt(e))),BigInt(y),BigInt(b)).toString(),x=Ft(d.from(E),d.from(s)).toString(),S=Z.joinExactTokensInForBPTOut(h,x),P=Mt,_="joinPool",v={poolId:t.id,sender:e,recipient:e,joinPoolRequest:{assets:m,maxAmountsIn:h,userData:S,fromInternalBalance:!1}},O=L.createInterface().encodeFunctionData(_,[v.poolId,v.sender,v.recipient,v.joinPoolRequest]),B=n.filter(((e,t)=>a[t]===i));return{to:P,functionName:_,attributes:v,data:O,value:B[0]?d.from(B[0]):void 0,minBPTOut:x,expectedBPTOut:E}}}}class la{calcTotal(e){var t,a;let n=s,i=s;for(let a=0;a<e.length;a++){const s=e[a];if(!(null===(t=s.price)||void 0===t?void 0:t.usd))continue;const r=wt(s.price.usd.toString(),18),o=wt(s.balance,18),d=o.mul(r);i=i.add(d),n=n.add(o)}if(n.gt(0)){const t=i.div(n);for(let s=0;s<e.length;s++){const r=e[s];if(null===(a=r.price)||void 0===a?void 0:a.usd)continue;const o=wt(r.balance,18),d=o.mul(t);i=i.add(d),n=n.add(o)}}return l(i,36).toString()}}class pa{calcPoolSpotPrice(e,t,a){const n=k.fromPool(a),s=n.parsePoolPairData(e,t);return n._spotPriceAfterSwapExactTokenInForTokenOut(s,P).toString()}}class ua{bptZeroPriceImpact(e,t){if(t.length!==e.tokensList.length)throw new $t(Gt.INPUT_LENGTH_MISMATCH);const{parsedBalances:a,parsedDecimals:n,parsedPriceRates:s,parsedAmp:i,parsedTotalShares:r}=Le(e),o=BigInt(r),d=n.map((e=>{if(!e)throw new $t(Gt.MISSING_DECIMALS);return BigInt(e)})),c=s.map((e=>{if(!e)throw new $t(Gt.MISSING_PRICE_RATE);return BigInt(e)}));if(!i)throw new $t(Gt.MISSING_PRICE_RATE);const l=d.map((e=>Ne(BigInt(e)))),p=a.map(((e,t)=>Ce(BigInt(e),l[t]))),u=p.map(((e,t)=>Re.mulDownFixed(e,c[t])));let y=Oe;for(let a=0;a<p.length;a++){const n=Kt(BigInt(i),u,o,a)*c[a]/ke,s=Ne(BigInt(e.tokens[a].decimals));y+=n*Ce(t[a],s)/ke}return y}calcPriceImpact(e,t,a,n){const s=this.bptZeroPriceImpact(e,t.map((e=>BigInt(e))));return jt(BigInt(a),s,n).toString()}}class ya{constructor(e=new da,t=new ca,a=new la,n=new pa,s=new ua){this.exit=e,this.join=t,this.liquidity=a,this.spotPriceCalculator=n,this.priceImpactCalculator=s}}class ba{constructor(){this.buildExitExactBPTIn=({exiter:e,pool:t,bptIn:a,slippage:n,shouldUnwrapNativeAsset:s,wrappedNativeAsset:i,singleTokenMaxOut:r})=>{throw new Error("To be implemented")},this.buildExitExactTokensOut=({exiter:e,pool:t,tokensOut:a,amountsOut:n,slippage:s,wrappedNativeAsset:i})=>{throw new Error("To be implemented")}}}class fa{constructor(){this.buildJoin=({joiner:e,pool:t,tokensIn:a,amountsIn:n,slippage:s,wrappedNativeAsset:i})=>{throw new Error("To be implemented")}}}class ma{constructor(e=new ba,t=new fa,a=new Vt,n=new Zt,s=new zt){this.exit=e,this.join=t,this.liquidity=a,this.spotPriceCalculator=n,this.priceImpactCalculator=s}}class ha{constructor(){this.buildExitExactBPTIn=({exiter:e,pool:t,bptIn:a,slippage:n,shouldUnwrapNativeAsset:s,wrappedNativeAsset:i,singleTokenMaxOut:r})=>{throw new Error("To be implemented")},this.buildExitExactTokensOut=({exiter:e,pool:t,tokensOut:a,amountsOut:n,slippage:s,wrappedNativeAsset:i})=>{throw new Error("To be implemented")}}}class Ta{constructor(){this.buildJoin=({joiner:e,pool:t,tokensIn:a,amountsIn:n,slippage:s,wrappedNativeAsset:i})=>{throw new Error("To be implemented")}}}const ga=18,Ia=wt("1",ga);class wa{calcTotal(e){var t,a;let n=s,i=s;for(let a=0;a<e.length;a++){const s=e[a];if(!(null===(t=s.price)||void 0===t?void 0:t.usd))continue;const r=wt(s.price.usd.toString(),ga),o=wt(s.balance,ga),d=o.mul(r);i=i.add(d),n=n.add(o)}if(n.gt(0)){const t=i.div(n);for(let s=0;s<e.length;s++){const r=e[s];if(null===(a=r.price)||void 0===a?void 0:a.usd)continue;const o=wt(r.priceRate||"1",ga),d=wt(r.balance,ga).mul(o).div(Ia),c=d.mul(t);i=i.add(c),n=n.add(d)}}return Et(i,36)}}class Ea{calcPoolSpotPrice(e,t,a){const n=D.fromPool(a),s=n.parsePoolPairData(e,t);return n._spotPriceAfterSwapExactTokenInForTokenOut(s,P).toString()}}class xa{bptZeroPriceImpact(e,t){throw new Error("Linear Pool bptZeroPriceImpact Not Implented")}calcPriceImpact(e,t,a){throw new Error("Linear Pool Price Impact Not Implented")}}class Aa{constructor(e=new ha,t=new Ta,a=new wa,n=new Ea,s=new xa){this.exit=e,this.join=t,this.liquidity=a,this.spotPriceCalculator=n,this.priceImpactCalculator=s}}class Sa{constructor(e,t=new oa,a=new Jt,n=new ta,s=new ya,i=new ma,r=new Aa){this.weighted=t,this.stable=a,this.composableStable=n,this.metaStable=s,this.stablePhantom=i,this.linear=r}static from(e){switch(e){case"Weighted":case"Investment":case"LiquidityBootstrapping":return new oa;case"Stable":return new Jt;case"HighAmpComposableStable":case"ComposableStable":return new ta;case"MetaStable":return new ya;case"StablePhantom":return new ma;case"AaveLinear":case"EulerLinear":case"ERC4626Linear":return new Aa;default:throw new $t(Gt.UNSUPPORTED_POOL_TYPE)}}}class Pa{constructor(e,t){this.pools=e,this.tokenPrices=t}async getLiquidity(e){if(e.totalLiquidity)return e.totalLiquidity;const t=e.tokens.filter((t=>t.address!==e.address)),a=await Promise.all(t.map((async e=>{const t=await this.pools.findBy("address",e.address);if(!t)return;const a=wt(await this.getLiquidity(t),18),n=wt(t.totalShares,18),s=wt(e.balance,18),i=n.eq(0)?0:a.mul(s).div(n);return{address:t.address,liquidity:i.toString()}}))),n=a.reduce(((e,t)=>e.add(t?t.liquidity:d.from(0))),d.from(0)),s=t.filter((e=>!a.find((t=>(null==t?void 0:t.address)===e.address)))),i=await Promise.all(s.map((async e=>{var t;const a=await this.tokenPrices.find(e.address);return{address:e.address,decimals:e.decimals,priceRate:e.priceRate,price:(null==a?void 0:a.usd)&&a||{usd:null===(t=e.token)||void 0===t?void 0:t.latestUSDPrice},balance:e.balance,weight:e.weight}}))),r=wt(Sa.from(e.poolType).liquidity.calcTotal(i),18);return Et(n.add(r),18)}}async function _a(e,t,a,n){const s={sender:i,recipient:i,fromInternalBalance:!1,toInternalBalance:!1};try{return(await e.callStatic.queryBatchSwap(t,a,n,s)).map((e=>e.toString()))}catch(e){throw`queryBatchSwap call error: ${e}`}}async function va(e,t,a){a.fetchPools.fetchPools&&await e.fetchPools();const n=[],i=[];for(let t=0;t<a.tokensIn.length;t++){const r=await Oa(a.tokensIn[t],a.tokensOut[t],a.swapType,a.amounts[t].toString(),e);if(!r.returnAmount.gt(s))throw new $t(Gt.SWAP_ZERO_RETURN_AMOUNT);n.push(r.swaps),i.push(r.tokenAddresses)}const r=function(e,t){const a=[...new Set(e.flat())];t.forEach(((t,n)=>{t.forEach((t=>{t.assetInIndex=a.indexOf(e[n][t.assetInIndex]),t.assetOutIndex=a.indexOf(e[n][t.assetOutIndex])}))}));const n=t.flat();return{swaps:n,assets:a}}(i,n),o=a.swapType===kt.SwapExactIn?a.tokensOut:a.tokensIn,d=Array(o.length).fill("0");let c=Array(r.assets.length).fill("0");try{c=await _a(t,a.swapType,r.swaps,r.assets),c.length>0&&o.forEach(((e,t)=>{var a;return d[t]=null!==(a=c[r.assets.indexOf(e.toLowerCase())].toString())&&void 0!==a?a:s.toString()}))}catch(e){throw new $t(Gt.QUERY_BATCH_SWAP)}return{returnAmounts:d,swaps:r.swaps,assets:r.assets,deltas:c.map((e=>e.toString()))}}async function Oa(e,t,a,n,s){const i=a===kt.SwapExactIn?N.SwapExactIn:N.SwapExactOut;return await s.getSwaps(e.toLowerCase(),t.toLowerCase(),i,n)}var Ba=function(){return Ba=Object.assign||function(e){for(var t,a=1,n=arguments.length;a<n;a++)for(var s in t=arguments[a])Object.prototype.hasOwnProperty.call(t,s)&&(e[s]=t[s]);return e},Ba.apply(this,arguments)},ka=new Map,Da=new Map,Na=!0,Ca=!1;function Fa(e){return e.replace(/[\s,]+/g," ").trim()}function Ra(e){var t=new Set,a=[];return e.definitions.forEach((function(e){if("FragmentDefinition"===e.kind){var n=e.name.value,s=Fa((r=e.loc).source.body.substring(r.start,r.end)),i=Da.get(n);i&&!i.has(s)?Na&&console.warn("Warning: fragment with name "+n+" already exists.\ngraphql-tag enforces all fragment names across your application to be unique; read more about\nthis in the docs: http://dev.apollodata.com/core/fragments.html#unique-names"):i||Da.set(n,i=new Set),i.add(s),t.has(s)||(t.add(s),a.push(e))}else a.push(e);var r})),Ba(Ba({},e),{definitions:a})}function Ma(e){var t=Fa(e);if(!ka.has(t)){var a=V(e,{experimentalFragmentVariables:Ca,allowLegacyFragmentVariables:Ca});if(!a||"Document"!==a.kind)throw new Error("Not a valid GraphQL document.");ka.set(t,function(e){var t=new Set(e.definitions);t.forEach((function(e){e.loc&&delete e.loc,Object.keys(e).forEach((function(a){var n=e[a];n&&"object"==typeof n&&t.add(n)}))}));var a=e.loc;return a&&(delete a.startToken,delete a.endToken),e}(Ra(a)))}return ka.get(t)}function La(e){for(var t=[],a=1;a<arguments.length;a++)t[a-1]=arguments[a];"string"==typeof e&&(e=[e]);var n=e[0];return t.forEach((function(t,a){t&&"Document"===t.kind?n+=t.loc.source.body:n+=t,n+=e[a+1]})),Ma(n)}var Ua,Ga=La,$a=function(){ka.clear(),Da.clear()},qa=function(){Na=!1},Wa=function(){Ca=!0},Va=function(){Ca=!1};(Ua=La||(La={})).gql=Ga,Ua.resetCaches=$a,Ua.disableFragmentWarnings=qa,Ua.enableExperimentalFragmentVariables=Wa,Ua.disableExperimentalFragmentVariables=Va,La.default=La;var Ha,ja,Xa,Ka,Ya,Ja,Za,za,Qa,en,tn,an,nn,sn,rn,on,dn,cn,ln,pn,un,yn,bn,fn,mn,hn,Tn,gn=La;!function(e){e.EndAmp="endAmp",e.EndTimestamp="endTimestamp",e.Id="id",e.PoolId="poolId",e.ScheduledTimestamp="scheduledTimestamp",e.StartAmp="startAmp",e.StartTimestamp="startTimestamp"}(Ha||(Ha={})),function(e){e.Id="id",e.PoolCount="poolCount",e.Timestamp="timestamp",e.TotalLiquidity="totalLiquidity",e.TotalSwapCount="totalSwapCount",e.TotalSwapFee="totalSwapFee",e.TotalSwapVolume="totalSwapVolume",e.Vault="vault"}(ja||(ja={})),function(e){e.Id="id",e.PoolCount="poolCount",e.Pools="pools",e.TotalLiquidity="totalLiquidity",e.TotalSwapCount="totalSwapCount",e.TotalSwapFee="totalSwapFee",e.TotalSwapVolume="totalSwapVolume"}(Xa||(Xa={})),function(e){e.EndTimestamp="endTimestamp",e.EndWeights="endWeights",e.Id="id",e.PoolId="poolId",e.ScheduledTimestamp="scheduledTimestamp",e.StartTimestamp="startTimestamp",e.StartWeights="startWeights"}(Ka||(Ka={})),function(e){e.Exit="Exit",e.Join="Join"}(Ya||(Ya={})),function(e){e.Amounts="amounts",e.Id="id",e.Pool="pool",e.Sender="sender",e.Timestamp="timestamp",e.Tx="tx",e.Type="type",e.User="user",e.ValueUsd="valueUSD"}(Ja||(Ja={})),function(e){e.Asset="asset",e.Block="block",e.Id="id",e.PoolId="poolId",e.Price="price",e.PricingAsset="pricingAsset"}(Za||(Za={})),function(e){e.CashDelta="cashDelta",e.Id="id",e.ManagedDelta="managedDelta",e.PoolTokenId="poolTokenId",e.Timestamp="timestamp",e.Type="type"}(za||(za={})),function(e){e.Deposit="Deposit",e.Update="Update",e.Withdraw="Withdraw"}(Qa||(Qa={})),function(e){e.Asc="asc",e.Desc="desc"}(en||(en={})),function(e){e.Id="id",e.Pool="pool"}(tn||(tn={})),function(e){e.Block="block",e.Id="id",e.PoolId="poolId",e.PoolLiquidity="poolLiquidity",e.PoolShareValue="poolShareValue",e.PoolTotalShares="poolTotalShares",e.PricingAsset="pricingAsset"}(an||(an={})),function(e){e.Balance="balance",e.Id="id",e.PoolId="poolId",e.UserAddress="userAddress"}(nn||(nn={})),function(e){e.Amounts="amounts",e.HoldersCount="holdersCount",e.Id="id",e.Liquidity="liquidity",e.Pool="pool",e.SwapFees="swapFees",e.SwapVolume="swapVolume",e.SwapsCount="swapsCount",e.Timestamp="timestamp",e.TotalShares="totalShares"}(sn||(sn={})),function(e){e.Address="address",e.AssetManager="assetManager",e.Balance="balance",e.CashBalance="cashBalance",e.Decimals="decimals",e.Id="id",e.Index="index",e.IsExemptFromYieldProtocolFee="isExemptFromYieldProtocolFee",e.ManagedBalance="managedBalance",e.Managements="managements",e.Name="name",e.PoolId="poolId",e.PriceRate="priceRate",e.Symbol="symbol",e.Token="token",e.Weight="weight"}(rn||(rn={})),function(e){e.Address="address",e.Alpha="alpha",e.Amp="amp",e.BaseToken="baseToken",e.Beta="beta",e.C="c",e.CreateTime="createTime",e.DSq="dSq",e.Delta="delta",e.Epsilon="epsilon",e.ExpiryTime="expiryTime",e.Factory="factory",e.HistoricalValues="historicalValues",e.HoldersCount="holdersCount",e.Id="id",e.IsInRecoveryMode="isInRecoveryMode",e.IsPaused="isPaused",e.Lambda="lambda",e.LowerTarget="lowerTarget",e.MainIndex="mainIndex",e.ManagementFee="managementFee",e.Name="name",e.OracleEnabled="oracleEnabled",e.Owner="owner",e.PoolType="poolType",e.PoolTypeVersion="poolTypeVersion",e.PriceRateProviders="priceRateProviders",e.PrincipalToken="principalToken",e.ProtocolAumFeeCache="protocolAumFeeCache",e.ProtocolId="protocolId",e.ProtocolSwapFeeCache="protocolSwapFeeCache",e.ProtocolYieldFeeCache="protocolYieldFeeCache",e.Root3Alpha="root3Alpha",e.S="s",e.Shares="shares",e.Snapshots="snapshots",e.SqrtAlpha="sqrtAlpha",e.SqrtBeta="sqrtBeta",e.StrategyType="strategyType",e.SwapEnabled="swapEnabled",e.SwapFee="swapFee",e.Swaps="swaps",e.SwapsCount="swapsCount",e.Symbol="symbol",e.TauAlphaX="tauAlphaX",e.TauAlphaY="tauAlphaY",e.TauBetaX="tauBetaX",e.TauBetaY="tauBetaY",e.Tokens="tokens",e.TokensList="tokensList",e.TotalLiquidity="totalLiquidity",e.TotalShares="totalShares",e.TotalSwapFee="totalSwapFee",e.TotalSwapVolume="totalSwapVolume",e.TotalWeight="totalWeight",e.Tx="tx",e.U="u",e.UnitSeconds="unitSeconds",e.UpperTarget="upperTarget",e.V="v",e.VaultId="vaultID",e.W="w",e.WeightUpdates="weightUpdates",e.WrappedIndex="wrappedIndex",e.Z="z"}(on||(on={})),function(e){e.Address="address",e.CacheDuration="cacheDuration",e.CacheExpiry="cacheExpiry",e.Id="id",e.LastCached="lastCached",e.PoolId="poolId",e.Rate="rate",e.Token="token"}(dn||(dn={})),function(e){e.EndSwapFeePercentage="endSwapFeePercentage",e.EndTimestamp="endTimestamp",e.Id="id",e.Pool="pool",e.ScheduledTimestamp="scheduledTimestamp",e.StartSwapFeePercentage="startSwapFeePercentage",e.StartTimestamp="startTimestamp"}(cn||(cn={})),function(e){e.Caller="caller",e.Id="id",e.PoolId="poolId",e.Timestamp="timestamp",e.TokenAmountIn="tokenAmountIn",e.TokenAmountOut="tokenAmountOut",e.TokenIn="tokenIn",e.TokenInSym="tokenInSym",e.TokenOut="tokenOut",e.TokenOutSym="tokenOutSym",e.Tx="tx",e.UserAddress="userAddress",e.ValueUsd="valueUSD"}(ln||(ln={})),function(e){e.Amount="amount",e.Asset="asset",e.Block="block",e.Id="id",e.PoolId="poolId",e.Price="price",e.PricingAsset="pricingAsset",e.Timestamp="timestamp"}(pn||(pn={})),function(e){e.Id="id",e.Timestamp="timestamp",e.Token="token",e.TotalBalanceNotional="totalBalanceNotional",e.TotalBalanceUsd="totalBalanceUSD",e.TotalSwapCount="totalSwapCount",e.TotalVolumeNotional="totalVolumeNotional",e.TotalVolumeUsd="totalVolumeUSD"}(un||(un={})),function(e){e.Address="address",e.Decimals="decimals",e.Id="id",e.LatestFxPrice="latestFXPrice",e.LatestPrice="latestPrice",e.LatestUsdPrice="latestUSDPrice",e.Name="name",e.Pool="pool",e.Symbol="symbol",e.TotalBalanceNotional="totalBalanceNotional",e.TotalBalanceUsd="totalBalanceUSD",e.TotalSwapCount="totalSwapCount",e.TotalVolumeNotional="totalVolumeNotional",e.TotalVolumeUsd="totalVolumeUSD"}(yn||(yn={})),function(e){e.Id="id",e.Pair="pair",e.Timestamp="timestamp",e.TotalSwapFee="totalSwapFee",e.TotalSwapVolume="totalSwapVolume"}(bn||(bn={})),function(e){e.Id="id",e.Token0="token0",e.Token1="token1",e.TotalSwapFee="totalSwapFee",e.TotalSwapVolume="totalSwapVolume"}(fn||(fn={})),function(e){e.Balance="balance",e.Id="id",e.Token="token",e.UserAddress="userAddress"}(mn||(mn={})),function(e){e.Id="id",e.SharesOwned="sharesOwned",e.Swaps="swaps",e.UserInternalBalances="userInternalBalances"}(hn||(hn={})),function(e){e.Allow="allow",e.Deny="deny"}(Tn||(Tn={}));const In=gn`
|
|
2
2
|
fragment SubgraphPoolShare on PoolShare {
|
|
3
3
|
id
|
|
4
4
|
balance
|
|
@@ -485,5 +485,5 @@ ${gn`
|
|
|
485
485
|
}
|
|
486
486
|
}
|
|
487
487
|
}
|
|
488
|
-
`,ys=(e,t,a)=>e();function bs(e){return Wn(new W(e))}function fs(e){return function(e,t=ys){return{GaugeShare:(a,n)=>t((t=>e.request(ds,a,{...n,...t})),"GaugeShare","query"),GaugeShares:(a,n)=>t((t=>e.request(cs,a,{...n,...t})),"GaugeShares","query"),LiquidityGauges:(a,n)=>t((t=>e.request(ls,a,{...n,...t})),"LiquidityGauges","query"),Pools:(a,n)=>t((t=>e.request(ps,a,{...n,...t})),"Pools","query"),PoolGauges:(a,n)=>t((t=>e.request(us,a,{...n,...t})),"PoolGauges","query")}}(new W(e))}const ms=["function aggregate(tuple[](address target, bytes callData) memory calls) public view returns (uint256 blockNumber, bytes[] memory returnData)"],hs=(e,t)=>new u(e,ms,t);class Ts{constructor(e,a,n,s={}){this.options={},this.calls=[],this.paths=[],this.multiAddress=e,this.provider=a,this.interface=new t(n),this.options=s}call(e,t,a,n){return this.calls.push([t,a,n]),this.paths.push(e),this}async execute(e={}){const t=e;return(await this.executeMulticall()).forEach(((e,a)=>I(t,this.paths[a],e.length>1?e:e[0]))),this.calls=[],this.paths=[],t}async executeMulticall(){const e=hs(this.multiAddress,this.provider),[,t]=await e.aggregate(this.calls.map((([e,t,a])=>[e,this.interface.encodeFunctionData(t,a)])),this.options);return t.map(((e,t)=>this.interface.decodeFunctionResult(this.calls[t][1],e)))}}var gs=[{inputs:[{internalType:"contract IVault",name:"vault",type:"address"},{internalType:"string",name:"name",type:"string"},{internalType:"string",name:"symbol",type:"string"},{internalType:"contract IERC20[]",name:"tokens",type:"address[]"},{internalType:"uint256[]",name:"normalizedWeights",type:"uint256[]"},{internalType:"uint256",name:"swapFeePercentage",type:"uint256"},{internalType:"uint256",name:"pauseWindowDuration",type:"uint256"},{internalType:"uint256",name:"bufferPeriodDuration",type:"uint256"},{internalType:"address",name:"owner",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:!1,internalType:"bool",name:"paused",type:"bool"}],name:"PausedStateChanged",type:"event"},{anonymous:!1,inputs:[{indexed:!1,internalType:"uint256",name:"swapFeePercentage",type:"uint256"}],name:"SwapFeePercentageChanged",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:"pure",type:"function"},{inputs:[{internalType:"address",name:"spender",type:"address"},{internalType:"uint256",name:"amount",type:"uint256"}],name:"decreaseApproval",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"bytes4",name:"selector",type:"bytes4"}],name:"getActionId",outputs:[{internalType:"bytes32",name:"",type:"bytes32"}],stateMutability:"view",type:"function"},{inputs:[],name:"getAuthorizer",outputs:[{internalType:"contract IAuthorizer",name:"",type:"address"}],stateMutability:"view",type:"function"},{inputs:[],name:"getInvariant",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"getLastInvariant",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"getNormalizedWeights",outputs:[{internalType:"uint256[]",name:"",type:"uint256[]"}],stateMutability:"view",type:"function"},{inputs:[],name:"getOwner",outputs:[{internalType:"address",name:"",type:"address"}],stateMutability:"view",type:"function"},{inputs:[],name:"getPausedState",outputs:[{internalType:"bool",name:"paused",type:"bool"},{internalType:"uint256",name:"pauseWindowEndTime",type:"uint256"},{internalType:"uint256",name:"bufferPeriodEndTime",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"getPoolId",outputs:[{internalType:"bytes32",name:"",type:"bytes32"}],stateMutability:"view",type:"function"},{inputs:[],name:"getRate",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"getSwapFeePercentage",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"getVault",outputs:[{internalType:"contract IVault",name:"",type:"address"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"spender",type:"address"},{internalType:"uint256",name:"amount",type:"uint256"}],name:"increaseApproval",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:"bytes32",name:"poolId",type:"bytes32"},{internalType:"address",name:"sender",type:"address"},{internalType:"address",name:"recipient",type:"address"},{internalType:"uint256[]",name:"balances",type:"uint256[]"},{internalType:"uint256",name:"lastChangeBlock",type:"uint256"},{internalType:"uint256",name:"protocolSwapFeePercentage",type:"uint256"},{internalType:"bytes",name:"userData",type:"bytes"}],name:"onExitPool",outputs:[{internalType:"uint256[]",name:"",type:"uint256[]"},{internalType:"uint256[]",name:"",type:"uint256[]"}],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"bytes32",name:"poolId",type:"bytes32"},{internalType:"address",name:"sender",type:"address"},{internalType:"address",name:"recipient",type:"address"},{internalType:"uint256[]",name:"balances",type:"uint256[]"},{internalType:"uint256",name:"lastChangeBlock",type:"uint256"},{internalType:"uint256",name:"protocolSwapFeePercentage",type:"uint256"},{internalType:"bytes",name:"userData",type:"bytes"}],name:"onJoinPool",outputs:[{internalType:"uint256[]",name:"",type:"uint256[]"},{internalType:"uint256[]",name:"",type:"uint256[]"}],stateMutability:"nonpayable",type:"function"},{inputs:[{components:[{internalType:"enum IVault.SwapKind",name:"kind",type:"uint8"},{internalType:"contract IERC20",name:"tokenIn",type:"address"},{internalType:"contract IERC20",name:"tokenOut",type:"address"},{internalType:"uint256",name:"amount",type:"uint256"},{internalType:"bytes32",name:"poolId",type:"bytes32"},{internalType:"uint256",name:"lastChangeBlock",type:"uint256"},{internalType:"address",name:"from",type:"address"},{internalType:"address",name:"to",type:"address"},{internalType:"bytes",name:"userData",type:"bytes"}],internalType:"struct IPoolSwapStructs.SwapRequest",name:"request",type:"tuple"},{internalType:"uint256",name:"balanceTokenIn",type:"uint256"},{internalType:"uint256",name:"balanceTokenOut",type:"uint256"}],name:"onSwap",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:[{internalType:"bytes32",name:"poolId",type:"bytes32"},{internalType:"address",name:"sender",type:"address"},{internalType:"address",name:"recipient",type:"address"},{internalType:"uint256[]",name:"balances",type:"uint256[]"},{internalType:"uint256",name:"lastChangeBlock",type:"uint256"},{internalType:"uint256",name:"protocolSwapFeePercentage",type:"uint256"},{internalType:"bytes",name:"userData",type:"bytes"}],name:"queryExit",outputs:[{internalType:"uint256",name:"bptIn",type:"uint256"},{internalType:"uint256[]",name:"amountsOut",type:"uint256[]"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"bytes32",name:"poolId",type:"bytes32"},{internalType:"address",name:"sender",type:"address"},{internalType:"address",name:"recipient",type:"address"},{internalType:"uint256[]",name:"balances",type:"uint256[]"},{internalType:"uint256",name:"lastChangeBlock",type:"uint256"},{internalType:"uint256",name:"protocolSwapFeePercentage",type:"uint256"},{internalType:"bytes",name:"userData",type:"bytes"}],name:"queryJoin",outputs:[{internalType:"uint256",name:"bptOut",type:"uint256"},{internalType:"uint256[]",name:"amountsIn",type:"uint256[]"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"bool",name:"paused",type:"bool"}],name:"setPaused",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"uint256",name:"swapFeePercentage",type:"uint256"}],name:"setSwapFeePercentage",outputs:[],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"}],Is=[{inputs:[{internalType:"contract IVault",name:"vault",type:"address"},{internalType:"string",name:"name",type:"string"},{internalType:"string",name:"symbol",type:"string"},{internalType:"contract IERC20[]",name:"tokens",type:"address[]"},{internalType:"uint256",name:"amplificationParameter",type:"uint256"},{internalType:"uint256",name:"swapFeePercentage",type:"uint256"},{internalType:"uint256",name:"pauseWindowDuration",type:"uint256"},{internalType:"uint256",name:"bufferPeriodDuration",type:"uint256"},{internalType:"address",name:"owner",type:"address"}],stateMutability:"nonpayable",type:"constructor"},{anonymous:!1,inputs:[{indexed:!1,internalType:"uint256",name:"startValue",type:"uint256"},{indexed:!1,internalType:"uint256",name:"endValue",type:"uint256"},{indexed:!1,internalType:"uint256",name:"startTime",type:"uint256"},{indexed:!1,internalType:"uint256",name:"endTime",type:"uint256"}],name:"AmpUpdateStarted",type:"event"},{anonymous:!1,inputs:[{indexed:!1,internalType:"uint256",name:"currentValue",type:"uint256"}],name:"AmpUpdateStopped",type:"event"},{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:"bool",name:"paused",type:"bool"}],name:"PausedStateChanged",type:"event"},{anonymous:!1,inputs:[{indexed:!1,internalType:"uint256",name:"swapFeePercentage",type:"uint256"}],name:"SwapFeePercentageChanged",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:"amount",type:"uint256"}],name:"decreaseAllowance",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"bytes4",name:"selector",type:"bytes4"}],name:"getActionId",outputs:[{internalType:"bytes32",name:"",type:"bytes32"}],stateMutability:"view",type:"function"},{inputs:[],name:"getAmplificationParameter",outputs:[{internalType:"uint256",name:"value",type:"uint256"},{internalType:"bool",name:"isUpdating",type:"bool"},{internalType:"uint256",name:"precision",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"getAuthorizer",outputs:[{internalType:"contract IAuthorizer",name:"",type:"address"}],stateMutability:"view",type:"function"},{inputs:[],name:"getOwner",outputs:[{internalType:"address",name:"",type:"address"}],stateMutability:"view",type:"function"},{inputs:[],name:"getPausedState",outputs:[{internalType:"bool",name:"paused",type:"bool"},{internalType:"uint256",name:"pauseWindowEndTime",type:"uint256"},{internalType:"uint256",name:"bufferPeriodEndTime",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"getPoolId",outputs:[{internalType:"bytes32",name:"",type:"bytes32"}],stateMutability:"view",type:"function"},{inputs:[],name:"getRate",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"getSwapFeePercentage",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"getVault",outputs:[{internalType:"contract IVault",name:"",type:"address"}],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:"bytes32",name:"poolId",type:"bytes32"},{internalType:"address",name:"sender",type:"address"},{internalType:"address",name:"recipient",type:"address"},{internalType:"uint256[]",name:"balances",type:"uint256[]"},{internalType:"uint256",name:"lastChangeBlock",type:"uint256"},{internalType:"uint256",name:"protocolSwapFeePercentage",type:"uint256"},{internalType:"bytes",name:"userData",type:"bytes"}],name:"onExitPool",outputs:[{internalType:"uint256[]",name:"",type:"uint256[]"},{internalType:"uint256[]",name:"",type:"uint256[]"}],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"bytes32",name:"poolId",type:"bytes32"},{internalType:"address",name:"sender",type:"address"},{internalType:"address",name:"recipient",type:"address"},{internalType:"uint256[]",name:"balances",type:"uint256[]"},{internalType:"uint256",name:"lastChangeBlock",type:"uint256"},{internalType:"uint256",name:"protocolSwapFeePercentage",type:"uint256"},{internalType:"bytes",name:"userData",type:"bytes"}],name:"onJoinPool",outputs:[{internalType:"uint256[]",name:"",type:"uint256[]"},{internalType:"uint256[]",name:"",type:"uint256[]"}],stateMutability:"nonpayable",type:"function"},{inputs:[{components:[{internalType:"enum IVault.SwapKind",name:"kind",type:"uint8"},{internalType:"contract IERC20",name:"tokenIn",type:"address"},{internalType:"contract IERC20",name:"tokenOut",type:"address"},{internalType:"uint256",name:"amount",type:"uint256"},{internalType:"bytes32",name:"poolId",type:"bytes32"},{internalType:"uint256",name:"lastChangeBlock",type:"uint256"},{internalType:"address",name:"from",type:"address"},{internalType:"address",name:"to",type:"address"},{internalType:"bytes",name:"userData",type:"bytes"}],internalType:"struct IPoolSwapStructs.SwapRequest",name:"swapRequest",type:"tuple"},{internalType:"uint256[]",name:"balances",type:"uint256[]"},{internalType:"uint256",name:"indexIn",type:"uint256"},{internalType:"uint256",name:"indexOut",type:"uint256"}],name:"onSwap",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{components:[{internalType:"enum IVault.SwapKind",name:"kind",type:"uint8"},{internalType:"contract IERC20",name:"tokenIn",type:"address"},{internalType:"contract IERC20",name:"tokenOut",type:"address"},{internalType:"uint256",name:"amount",type:"uint256"},{internalType:"bytes32",name:"poolId",type:"bytes32"},{internalType:"uint256",name:"lastChangeBlock",type:"uint256"},{internalType:"address",name:"from",type:"address"},{internalType:"address",name:"to",type:"address"},{internalType:"bytes",name:"userData",type:"bytes"}],internalType:"struct IPoolSwapStructs.SwapRequest",name:"request",type:"tuple"},{internalType:"uint256",name:"balanceTokenIn",type:"uint256"},{internalType:"uint256",name:"balanceTokenOut",type:"uint256"}],name:"onSwap",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:[{internalType:"bytes32",name:"poolId",type:"bytes32"},{internalType:"address",name:"sender",type:"address"},{internalType:"address",name:"recipient",type:"address"},{internalType:"uint256[]",name:"balances",type:"uint256[]"},{internalType:"uint256",name:"lastChangeBlock",type:"uint256"},{internalType:"uint256",name:"protocolSwapFeePercentage",type:"uint256"},{internalType:"bytes",name:"userData",type:"bytes"}],name:"queryExit",outputs:[{internalType:"uint256",name:"bptIn",type:"uint256"},{internalType:"uint256[]",name:"amountsOut",type:"uint256[]"}],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"bytes32",name:"poolId",type:"bytes32"},{internalType:"address",name:"sender",type:"address"},{internalType:"address",name:"recipient",type:"address"},{internalType:"uint256[]",name:"balances",type:"uint256[]"},{internalType:"uint256",name:"lastChangeBlock",type:"uint256"},{internalType:"uint256",name:"protocolSwapFeePercentage",type:"uint256"},{internalType:"bytes",name:"userData",type:"bytes"}],name:"queryJoin",outputs:[{internalType:"uint256",name:"bptOut",type:"uint256"},{internalType:"uint256[]",name:"amountsIn",type:"uint256[]"}],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"contract IERC20",name:"token",type:"address"},{internalType:"bytes",name:"poolConfig",type:"bytes"}],name:"setAssetManagerPoolConfig",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"bool",name:"paused",type:"bool"}],name:"setPaused",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"uint256",name:"swapFeePercentage",type:"uint256"}],name:"setSwapFeePercentage",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"uint256",name:"rawEndValue",type:"uint256"},{internalType:"uint256",name:"endTime",type:"uint256"}],name:"startAmplificationParameterUpdate",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[],name:"stopAmplificationParameterUpdate",outputs:[],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"}],ws=[{inputs:[{internalType:"contract IERC20",name:"_underlying",type:"address"},{internalType:"contract IERC20",name:"_bond",type:"address"},{internalType:"uint256",name:"_expiration",type:"uint256"},{internalType:"uint256",name:"_unitSeconds",type:"uint256"},{internalType:"contract IVault",name:"vault",type:"address"},{internalType:"uint256",name:"_percentFee",type:"uint256"},{internalType:"uint256",name:"_percentFeeGov",type:"uint256"},{internalType:"address",name:"_governance",type:"address"},{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:!1,internalType:"uint256",name:"collectedBase",type:"uint256"},{indexed:!1,internalType:"uint256",name:"collectedBond",type:"uint256"},{indexed:!1,internalType:"uint256",name:"remainingBase",type:"uint256"},{indexed:!1,internalType:"uint256",name:"remainingBond",type:"uint256"}],name:"FeeCollection",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:[],name:"FEE_BOUND",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:"account",type:"address"}],name:"balanceOf",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"bond",outputs:[{internalType:"contract IERC20",name:"",type:"address"}],stateMutability:"view",type:"function"},{inputs:[],name:"bondDecimals",outputs:[{internalType:"uint8",name:"",type:"uint8"}],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:"amount",type:"uint256"}],name:"decreaseApproval",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"nonpayable",type:"function"},{inputs:[],name:"expiration",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"feesBond",outputs:[{internalType:"uint128",name:"",type:"uint128"}],stateMutability:"view",type:"function"},{inputs:[],name:"feesUnderlying",outputs:[{internalType:"uint128",name:"",type:"uint128"}],stateMutability:"view",type:"function"},{inputs:[],name:"getPoolId",outputs:[{internalType:"bytes32",name:"",type:"bytes32"}],stateMutability:"view",type:"function"},{inputs:[],name:"getVault",outputs:[{internalType:"contract IVault",name:"",type:"address"}],stateMutability:"view",type:"function"},{inputs:[],name:"governance",outputs:[{internalType:"address",name:"",type:"address"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"spender",type:"address"},{internalType:"uint256",name:"amount",type:"uint256"}],name:"increaseApproval",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:"bytes32",name:"poolId",type:"bytes32"},{internalType:"address",name:"",type:"address"},{internalType:"address",name:"recipient",type:"address"},{internalType:"uint256[]",name:"currentBalances",type:"uint256[]"},{internalType:"uint256",name:"",type:"uint256"},{internalType:"uint256",name:"protocolSwapFee",type:"uint256"},{internalType:"bytes",name:"userData",type:"bytes"}],name:"onExitPool",outputs:[{internalType:"uint256[]",name:"amountsOut",type:"uint256[]"},{internalType:"uint256[]",name:"dueProtocolFeeAmounts",type:"uint256[]"}],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"bytes32",name:"poolId",type:"bytes32"},{internalType:"address",name:"",type:"address"},{internalType:"address",name:"recipient",type:"address"},{internalType:"uint256[]",name:"currentBalances",type:"uint256[]"},{internalType:"uint256",name:"",type:"uint256"},{internalType:"uint256",name:"protocolSwapFee",type:"uint256"},{internalType:"bytes",name:"userData",type:"bytes"}],name:"onJoinPool",outputs:[{internalType:"uint256[]",name:"amountsIn",type:"uint256[]"},{internalType:"uint256[]",name:"dueProtocolFeeAmounts",type:"uint256[]"}],stateMutability:"nonpayable",type:"function"},{inputs:[{components:[{internalType:"enum IVault.SwapKind",name:"kind",type:"uint8"},{internalType:"contract IERC20",name:"tokenIn",type:"address"},{internalType:"contract IERC20",name:"tokenOut",type:"address"},{internalType:"uint256",name:"amount",type:"uint256"},{internalType:"bytes32",name:"poolId",type:"bytes32"},{internalType:"uint256",name:"lastChangeBlock",type:"uint256"},{internalType:"address",name:"from",type:"address"},{internalType:"address",name:"to",type:"address"},{internalType:"bytes",name:"userData",type:"bytes"}],internalType:"struct IPoolSwapStructs.SwapRequest",name:"swapRequest",type:"tuple"},{internalType:"uint256",name:"currentBalanceTokenIn",type:"uint256"},{internalType:"uint256",name:"currentBalanceTokenOut",type:"uint256"}],name:"onSwap",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"nonpayable",type:"function"},{inputs:[],name:"percentFee",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"percentFeeGov",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:[{internalType:"uint256",name:"amountX",type:"uint256"},{internalType:"uint256",name:"reserveX",type:"uint256"},{internalType:"uint256",name:"reserveY",type:"uint256"},{internalType:"bool",name:"out",type:"bool"}],name:"solveTradeInvariant",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:[],name:"underlying",outputs:[{internalType:"contract IERC20",name:"",type:"address"}],stateMutability:"view",type:"function"},{inputs:[],name:"underlyingDecimals",outputs:[{internalType:"uint8",name:"",type:"uint8"}],stateMutability:"view",type:"function"},{inputs:[],name:"unitSeconds",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"}],Es=[{inputs:[{internalType:"contract IVault",name:"vault",type:"address"},{internalType:"string",name:"name",type:"string"},{internalType:"string",name:"symbol",type:"string"},{internalType:"contract IERC20",name:"mainToken",type:"address"},{internalType:"contract IERC20",name:"wrappedToken",type:"address"},{internalType:"uint256",name:"upperTarget",type:"uint256"},{internalType:"uint256",name:"swapFeePercentage",type:"uint256"},{internalType:"uint256",name:"pauseWindowDuration",type:"uint256"},{internalType:"uint256",name:"bufferPeriodDuration",type:"uint256"},{internalType:"address",name:"owner",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:!1,internalType:"bool",name:"paused",type:"bool"}],name:"PausedStateChanged",type:"event"},{anonymous:!1,inputs:[{indexed:!1,internalType:"uint256",name:"swapFeePercentage",type:"uint256"}],name:"SwapFeePercentageChanged",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"contract IERC20",name:"token",type:"address"},{indexed:!1,internalType:"uint256",name:"lowerTarget",type:"uint256"},{indexed:!1,internalType:"uint256",name:"upperTarget",type:"uint256"}],name:"TargetsSet",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:"amount",type:"uint256"}],name:"decreaseAllowance",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"bytes4",name:"selector",type:"bytes4"}],name:"getActionId",outputs:[{internalType:"bytes32",name:"",type:"bytes32"}],stateMutability:"view",type:"function"},{inputs:[],name:"getAuthorizer",outputs:[{internalType:"contract IAuthorizer",name:"",type:"address"}],stateMutability:"view",type:"function"},{inputs:[],name:"getBptIndex",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"getMainIndex",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"getMainToken",outputs:[{internalType:"address",name:"",type:"address"}],stateMutability:"view",type:"function"},{inputs:[],name:"getOwner",outputs:[{internalType:"address",name:"",type:"address"}],stateMutability:"view",type:"function"},{inputs:[],name:"getPausedState",outputs:[{internalType:"bool",name:"paused",type:"bool"},{internalType:"uint256",name:"pauseWindowEndTime",type:"uint256"},{internalType:"uint256",name:"bufferPeriodEndTime",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"getPoolId",outputs:[{internalType:"bytes32",name:"",type:"bytes32"}],stateMutability:"view",type:"function"},{inputs:[],name:"getRate",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"getScalingFactors",outputs:[{internalType:"uint256[]",name:"",type:"uint256[]"}],stateMutability:"view",type:"function"},{inputs:[],name:"getSwapFeePercentage",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"getTargets",outputs:[{internalType:"uint256",name:"lowerTarget",type:"uint256"},{internalType:"uint256",name:"upperTarget",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"getVault",outputs:[{internalType:"contract IVault",name:"",type:"address"}],stateMutability:"view",type:"function"},{inputs:[],name:"getVirtualSupply",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"getWrappedIndex",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"getWrappedToken",outputs:[{internalType:"address",name:"",type:"address"}],stateMutability:"view",type:"function"},{inputs:[],name:"getWrappedTokenRate",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:"initialize",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:[{internalType:"bytes32",name:"poolId",type:"bytes32"},{internalType:"address",name:"sender",type:"address"},{internalType:"address",name:"recipient",type:"address"},{internalType:"uint256[]",name:"balances",type:"uint256[]"},{internalType:"uint256",name:"lastChangeBlock",type:"uint256"},{internalType:"uint256",name:"protocolSwapFeePercentage",type:"uint256"},{internalType:"bytes",name:"userData",type:"bytes"}],name:"onExitPool",outputs:[{internalType:"uint256[]",name:"",type:"uint256[]"},{internalType:"uint256[]",name:"",type:"uint256[]"}],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"bytes32",name:"poolId",type:"bytes32"},{internalType:"address",name:"sender",type:"address"},{internalType:"address",name:"recipient",type:"address"},{internalType:"uint256[]",name:"balances",type:"uint256[]"},{internalType:"uint256",name:"lastChangeBlock",type:"uint256"},{internalType:"uint256",name:"protocolSwapFeePercentage",type:"uint256"},{internalType:"bytes",name:"userData",type:"bytes"}],name:"onJoinPool",outputs:[{internalType:"uint256[]",name:"",type:"uint256[]"},{internalType:"uint256[]",name:"",type:"uint256[]"}],stateMutability:"nonpayable",type:"function"},{inputs:[{components:[{internalType:"enum IVault.SwapKind",name:"kind",type:"uint8"},{internalType:"contract IERC20",name:"tokenIn",type:"address"},{internalType:"contract IERC20",name:"tokenOut",type:"address"},{internalType:"uint256",name:"amount",type:"uint256"},{internalType:"bytes32",name:"poolId",type:"bytes32"},{internalType:"uint256",name:"lastChangeBlock",type:"uint256"},{internalType:"address",name:"from",type:"address"},{internalType:"address",name:"to",type:"address"},{internalType:"bytes",name:"userData",type:"bytes"}],internalType:"struct IPoolSwapStructs.SwapRequest",name:"request",type:"tuple"},{internalType:"uint256[]",name:"balances",type:"uint256[]"},{internalType:"uint256",name:"indexIn",type:"uint256"},{internalType:"uint256",name:"indexOut",type:"uint256"}],name:"onSwap",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:[{internalType:"bytes32",name:"poolId",type:"bytes32"},{internalType:"address",name:"sender",type:"address"},{internalType:"address",name:"recipient",type:"address"},{internalType:"uint256[]",name:"balances",type:"uint256[]"},{internalType:"uint256",name:"lastChangeBlock",type:"uint256"},{internalType:"uint256",name:"protocolSwapFeePercentage",type:"uint256"},{internalType:"bytes",name:"userData",type:"bytes"}],name:"queryExit",outputs:[{internalType:"uint256",name:"bptIn",type:"uint256"},{internalType:"uint256[]",name:"amountsOut",type:"uint256[]"}],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"bytes32",name:"poolId",type:"bytes32"},{internalType:"address",name:"sender",type:"address"},{internalType:"address",name:"recipient",type:"address"},{internalType:"uint256[]",name:"balances",type:"uint256[]"},{internalType:"uint256",name:"lastChangeBlock",type:"uint256"},{internalType:"uint256",name:"protocolSwapFeePercentage",type:"uint256"},{internalType:"bytes",name:"userData",type:"bytes"}],name:"queryJoin",outputs:[{internalType:"uint256",name:"bptOut",type:"uint256"},{internalType:"uint256[]",name:"amountsIn",type:"uint256[]"}],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"contract IERC20",name:"token",type:"address"},{internalType:"bytes",name:"poolConfig",type:"bytes"}],name:"setAssetManagerPoolConfig",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"bool",name:"paused",type:"bool"}],name:"setPaused",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"uint256",name:"swapFeePercentage",type:"uint256"}],name:"setSwapFeePercentage",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"uint256",name:"newLowerTarget",type:"uint256"},{internalType:"uint256",name:"newUpperTarget",type:"uint256"}],name:"setTargets",outputs:[],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"}],xs=[{inputs:[{components:[{internalType:"contract IVault",name:"vault",type:"address"},{internalType:"contract IProtocolFeePercentagesProvider",name:"protocolFeeProvider",type:"address"},{internalType:"string",name:"name",type:"string"},{internalType:"string",name:"symbol",type:"string"},{internalType:"contract IERC20[]",name:"tokens",type:"address[]"},{internalType:"contract IRateProvider[]",name:"rateProviders",type:"address[]"},{internalType:"uint256[]",name:"tokenRateCacheDurations",type:"uint256[]"},{internalType:"bool[]",name:"exemptFromYieldProtocolFeeFlags",type:"bool[]"},{internalType:"uint256",name:"amplificationParameter",type:"uint256"},{internalType:"uint256",name:"swapFeePercentage",type:"uint256"},{internalType:"uint256",name:"pauseWindowDuration",type:"uint256"},{internalType:"uint256",name:"bufferPeriodDuration",type:"uint256"},{internalType:"address",name:"owner",type:"address"}],internalType:"struct ComposableStablePool.NewPoolParams",name:"params",type:"tuple"}],stateMutability:"nonpayable",type:"constructor"},{anonymous:!1,inputs:[{indexed:!1,internalType:"uint256",name:"startValue",type:"uint256"},{indexed:!1,internalType:"uint256",name:"endValue",type:"uint256"},{indexed:!1,internalType:"uint256",name:"startTime",type:"uint256"},{indexed:!1,internalType:"uint256",name:"endTime",type:"uint256"}],name:"AmpUpdateStarted",type:"event"},{anonymous:!1,inputs:[{indexed:!1,internalType:"uint256",name:"currentValue",type:"uint256"}],name:"AmpUpdateStopped",type:"event"},{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:"bool",name:"paused",type:"bool"}],name:"PausedStateChanged",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"uint256",name:"feeType",type:"uint256"},{indexed:!1,internalType:"uint256",name:"protocolFeePercentage",type:"uint256"}],name:"ProtocolFeePercentageCacheUpdated",type:"event"},{anonymous:!1,inputs:[{indexed:!1,internalType:"bool",name:"enabled",type:"bool"}],name:"RecoveryModeStateChanged",type:"event"},{anonymous:!1,inputs:[{indexed:!1,internalType:"uint256",name:"swapFeePercentage",type:"uint256"}],name:"SwapFeePercentageChanged",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"uint256",name:"tokenIndex",type:"uint256"},{indexed:!1,internalType:"uint256",name:"rate",type:"uint256"}],name:"TokenRateCacheUpdated",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"uint256",name:"tokenIndex",type:"uint256"},{indexed:!0,internalType:"contract IRateProvider",name:"provider",type:"address"},{indexed:!1,internalType:"uint256",name:"cacheDuration",type:"uint256"}],name:"TokenRateProviderSet",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:"DELEGATE_PROTOCOL_SWAP_FEES_SENTINEL",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:[{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:"amount",type:"uint256"}],name:"decreaseAllowance",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"nonpayable",type:"function"},{inputs:[],name:"disableRecoveryMode",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[],name:"enableRecoveryMode",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"bytes4",name:"selector",type:"bytes4"}],name:"getActionId",outputs:[{internalType:"bytes32",name:"",type:"bytes32"}],stateMutability:"view",type:"function"},{inputs:[],name:"getActualSupply",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"getAmplificationParameter",outputs:[{internalType:"uint256",name:"value",type:"uint256"},{internalType:"bool",name:"isUpdating",type:"bool"},{internalType:"uint256",name:"precision",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"getAuthorizer",outputs:[{internalType:"contract IAuthorizer",name:"",type:"address"}],stateMutability:"view",type:"function"},{inputs:[],name:"getBptIndex",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"getDomainSeparator",outputs:[{internalType:"bytes32",name:"",type:"bytes32"}],stateMutability:"view",type:"function"},{inputs:[],name:"getLastJoinExitData",outputs:[{internalType:"uint256",name:"lastJoinExitAmplification",type:"uint256"},{internalType:"uint256",name:"lastPostJoinExitInvariant",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"getMinimumBpt",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"pure",type:"function"},{inputs:[{internalType:"address",name:"account",type:"address"}],name:"getNextNonce",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"getOwner",outputs:[{internalType:"address",name:"",type:"address"}],stateMutability:"view",type:"function"},{inputs:[],name:"getPausedState",outputs:[{internalType:"bool",name:"paused",type:"bool"},{internalType:"uint256",name:"pauseWindowEndTime",type:"uint256"},{internalType:"uint256",name:"bufferPeriodEndTime",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"getPoolId",outputs:[{internalType:"bytes32",name:"",type:"bytes32"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"uint256",name:"feeType",type:"uint256"}],name:"getProtocolFeePercentageCache",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"getProtocolFeesCollector",outputs:[{internalType:"contract IProtocolFeesCollector",name:"",type:"address"}],stateMutability:"view",type:"function"},{inputs:[],name:"getProtocolSwapFeeDelegation",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"view",type:"function"},{inputs:[],name:"getRate",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"getRateProviders",outputs:[{internalType:"contract IRateProvider[]",name:"",type:"address[]"}],stateMutability:"view",type:"function"},{inputs:[],name:"getScalingFactors",outputs:[{internalType:"uint256[]",name:"",type:"uint256[]"}],stateMutability:"view",type:"function"},{inputs:[],name:"getSwapFeePercentage",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"contract IERC20",name:"token",type:"address"}],name:"getTokenRate",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"contract IERC20",name:"token",type:"address"}],name:"getTokenRateCache",outputs:[{internalType:"uint256",name:"rate",type:"uint256"},{internalType:"uint256",name:"oldRate",type:"uint256"},{internalType:"uint256",name:"duration",type:"uint256"},{internalType:"uint256",name:"expires",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"getVault",outputs:[{internalType:"contract IVault",name:"",type:"address"}],stateMutability:"view",type:"function"},{inputs:[],name:"inRecoveryMode",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:"contract IERC20",name:"token",type:"address"}],name:"isTokenExemptFromYieldProtocolFee",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:"address",name:"owner",type:"address"}],name:"nonces",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"bytes32",name:"poolId",type:"bytes32"},{internalType:"address",name:"sender",type:"address"},{internalType:"address",name:"recipient",type:"address"},{internalType:"uint256[]",name:"balances",type:"uint256[]"},{internalType:"uint256",name:"lastChangeBlock",type:"uint256"},{internalType:"uint256",name:"protocolSwapFeePercentage",type:"uint256"},{internalType:"bytes",name:"userData",type:"bytes"}],name:"onExitPool",outputs:[{internalType:"uint256[]",name:"",type:"uint256[]"},{internalType:"uint256[]",name:"",type:"uint256[]"}],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"bytes32",name:"poolId",type:"bytes32"},{internalType:"address",name:"sender",type:"address"},{internalType:"address",name:"recipient",type:"address"},{internalType:"uint256[]",name:"balances",type:"uint256[]"},{internalType:"uint256",name:"lastChangeBlock",type:"uint256"},{internalType:"uint256",name:"protocolSwapFeePercentage",type:"uint256"},{internalType:"bytes",name:"userData",type:"bytes"}],name:"onJoinPool",outputs:[{internalType:"uint256[]",name:"",type:"uint256[]"},{internalType:"uint256[]",name:"",type:"uint256[]"}],stateMutability:"nonpayable",type:"function"},{inputs:[{components:[{internalType:"enum IVault.SwapKind",name:"kind",type:"uint8"},{internalType:"contract IERC20",name:"tokenIn",type:"address"},{internalType:"contract IERC20",name:"tokenOut",type:"address"},{internalType:"uint256",name:"amount",type:"uint256"},{internalType:"bytes32",name:"poolId",type:"bytes32"},{internalType:"uint256",name:"lastChangeBlock",type:"uint256"},{internalType:"address",name:"from",type:"address"},{internalType:"address",name:"to",type:"address"},{internalType:"bytes",name:"userData",type:"bytes"}],internalType:"struct IPoolSwapStructs.SwapRequest",name:"swapRequest",type:"tuple"},{internalType:"uint256[]",name:"balances",type:"uint256[]"},{internalType:"uint256",name:"indexIn",type:"uint256"},{internalType:"uint256",name:"indexOut",type:"uint256"}],name:"onSwap",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"nonpayable",type:"function"},{inputs:[],name:"pause",outputs:[],stateMutability:"nonpayable",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:"bytes32",name:"poolId",type:"bytes32"},{internalType:"address",name:"sender",type:"address"},{internalType:"address",name:"recipient",type:"address"},{internalType:"uint256[]",name:"balances",type:"uint256[]"},{internalType:"uint256",name:"lastChangeBlock",type:"uint256"},{internalType:"uint256",name:"protocolSwapFeePercentage",type:"uint256"},{internalType:"bytes",name:"userData",type:"bytes"}],name:"queryExit",outputs:[{internalType:"uint256",name:"bptIn",type:"uint256"},{internalType:"uint256[]",name:"amountsOut",type:"uint256[]"}],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"bytes32",name:"poolId",type:"bytes32"},{internalType:"address",name:"sender",type:"address"},{internalType:"address",name:"recipient",type:"address"},{internalType:"uint256[]",name:"balances",type:"uint256[]"},{internalType:"uint256",name:"lastChangeBlock",type:"uint256"},{internalType:"uint256",name:"protocolSwapFeePercentage",type:"uint256"},{internalType:"bytes",name:"userData",type:"bytes"}],name:"queryJoin",outputs:[{internalType:"uint256",name:"bptOut",type:"uint256"},{internalType:"uint256[]",name:"amountsIn",type:"uint256[]"}],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"contract IERC20",name:"token",type:"address"},{internalType:"bytes",name:"poolConfig",type:"bytes"}],name:"setAssetManagerPoolConfig",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"uint256",name:"swapFeePercentage",type:"uint256"}],name:"setSwapFeePercentage",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"contract IERC20",name:"token",type:"address"},{internalType:"uint256",name:"duration",type:"uint256"}],name:"setTokenRateCacheDuration",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"uint256",name:"rawEndValue",type:"uint256"},{internalType:"uint256",name:"endTime",type:"uint256"}],name:"startAmplificationParameterUpdate",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[],name:"stopAmplificationParameterUpdate",outputs:[],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:[],name:"unpause",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[],name:"updateProtocolFeePercentageCache",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"contract IERC20",name:"token",type:"address"}],name:"updateTokenRateCache",outputs:[],stateMutability:"nonpayable",type:"function"}];async function As(e,t,a,n){if(0===e.length)return e;const s=Object.values(Object.fromEntries([...L.abi,...Te,...gs,...Is,...ws,...Es,...xs].map((e=>[e.name,e])))),i=new Ts(t,n,s),r=Object.values(C),o=[];e.forEach((e=>{r.includes(e.poolType)?(o.push(e),i.call(`${e.id}.poolTokens`,a,"getPoolTokens",[e.id]),i.call(`${e.id}.totalSupply`,e.address,"totalSupply"),(e.poolType.includes("Linear")||"StablePhantom"===e.poolType)&&i.call(`${e.id}.virtualSupply`,e.address,"getVirtualSupply"),"ComposableStable"===e.poolType&&i.call(`${e.id}.actualSupply`,e.address,"getActualSupply"),"Weighted"===e.poolType||"LiquidityBootstrapping"===e.poolType||"Investment"===e.poolType?(i.call(`${e.id}.weights`,e.address,"getNormalizedWeights"),i.call(`${e.id}.swapFee`,e.address,"getSwapFeePercentage")):"Stable"===e.poolType||"MetaStable"===e.poolType||"StablePhantom"===e.poolType||"ComposableStable"===e.poolType?(i.call(`${e.id}.amp`,e.address,"getAmplificationParameter"),i.call(`${e.id}.swapFee`,e.address,"getSwapFeePercentage")):"Element"===e.poolType?i.call(`${e.id}.swapFee`,e.address,"percentFee"):e.poolType.toString().includes("Linear")?(i.call(`${e.id}.swapFee`,e.address,"getSwapFeePercentage"),i.call(`${e.id}.targets`,e.address,"getTargets"),i.call(`${e.id}.rate`,e.address,"getWrappedTokenRate")):e.poolType.toString().includes("Gyro")&&i.call(`${e.id}.swapFee`,e.address,"getSwapFeePercentage")):console.error(`Unknown pool type: ${e.poolType} ${e.id}`)}));let d={};try{d=await i.execute()}catch(e){throw"Issue with multicall execution."}const c=[];return Object.entries(d).forEach((([e,t],a)=>{try{const{poolTokens:n,swapFee:s,weights:i,totalSupply:r,virtualSupply:d,actualSupply:p}=t;if("Stable"===o[a].poolType||"MetaStable"===o[a].poolType||"StablePhantom"===o[a].poolType||"ComposableStable"===o[a].poolType){if(!t.amp)return void console.error(`Stable Pool Missing Amp: ${e}`);o[a].amp=l(t.amp[0],3)}if(o[a].poolType.includes("Linear")){if(!t.targets)return void console.error(`Linear Pool Missing Targets: ${e}`);o[a].lowerTarget=l(t.targets[0],18),o[a].upperTarget=l(t.targets[1],18);const n=o[a].wrappedIndex;if(void 0===n||void 0===t.rate)return void console.error(`Linear Pool Missing WrappedIndex or PriceRate: ${e}`);o[a].tokens[n].priceRate=l(t.rate,18)}if(o[a].swapFee=l(s,18),n.tokens.forEach(((t,s)=>{const r=o[a].tokens.find((e=>Pt(e.address,t)));if(!r)throw`Pool Missing Expected Token: ${e} ${t}`;r.balance=l(n.balances[s],r.decimals),i&&(r.weight=l(i[s],18))})),o[a].poolType.includes("Linear")||"StablePhantom"===o[a].poolType){if(void 0===d)return void console.error(`Pool with pre-minted BPT missing Virtual Supply: ${e}`);o[a].totalShares=l(d,18)}else if("ComposableStable"===o[a].poolType){if(void 0===p)return void console.error(`ComposableStable missing Actual Supply: ${e}`);o[a].totalShares=l(p,18)}else o[a].totalShares=l(r,18);c.push(o[a])}catch(e){throw`Issue with pool onchain data: ${e}`}})),c}class Ss{constructor(e,t,a,n){this.client=e,this.provider=t,this.network=a,this.sorConfig=n}async getPools(){const e=function(e){return e.map((e=>({...e,poolType:e.poolType||"",tokens:(e.tokens||[]).map((e=>({...e,weight:e.weight||null}))),totalWeight:e.totalWeight||void 0,amp:e.amp||void 0,expiryTime:e.expiryTime?w(e.expiryTime):void 0,unitSeconds:e.unitSeconds?w(e.unitSeconds):void 0,principalToken:e.principalToken||void 0,baseToken:e.baseToken||void 0})))}((await this.getSubgraphPools()).filter((e=>{if(!this.network.poolsToIgnore)return!0;return-1===this.network.poolsToIgnore.findIndex((t=>Pt(t,e.address)))})));return!1===this.sorConfig.fetchOnChainBalances?e:As(e,this.network.addresses.contracts.multicall,this.network.addresses.contracts.vault,this.provider)}async getSubgraphPools(){const{pool0:e,pool1000:t,pool2000:a}=await this.client.AllPools({where:{swapEnabled:!0,totalShares_gt:"1"},orderBy:on.TotalLiquidity,orderDirection:en.Desc});return[...e,...t,...a]}}class Ps{constructor(e){this.chainId=e}async getNativeAssetPriceInToken(e){const t=await this.getTokenPriceInNativeAsset(e);return""+1/parseFloat(t)}async getTokenPriceInNativeAsset(e){const t=`https://api.coingecko.com/api/v3/simple/token_price/${this.platformId}?contract_addresses=${e}&vs_currencies=${this.nativeAssetId}`,{data:a}=await h.get(t,{headers:{Accept:"application/json","Content-Type":"application/json"}});if(void 0===a[e.toLowerCase()][this.nativeAssetId])throw Error("No price returned from Coingecko");return a[e.toLowerCase()][this.nativeAssetId]}get platformId(){switch(this.chainId){case 1:case 42:case 248:case 16116:case 17117:return"ethereum";case 137:return"polygon-pos";case 42161:return"arbitrum-one";case 100:return"xdai"}return"3"}get nativeAssetId(){switch(this.chainId){case 1:case 42:case 42161:case 248:case 16116:case 17117:return"eth";case 137:return"";case 100:return"xdai"}return""}}class _s{constructor(e,t){this.client=e,this.weth=t.toLowerCase()}async getNativeAssetPriceInToken(e){const t=await this.getLatestPriceInEthFromSubgraph(e);if(!t)throw Error("No price found in the subgraph");return""+1/t}async getLatestPriceInEthFromSubgraph(e){e=e.toLowerCase();const{latestPrices:t}=await this.client.TokenLatestPrices({where:{asset_in:[e,this.weth]}}),a=E(t,"id");if(a[`${e}-${this.weth}`])return parseFloat(a[`${e}-${this.weth}`].price);const n=t.filter((t=>t.asset===e));for(const e of n){const t=a[`${e.pricingAsset}-${this.weth}`];if(t)return parseFloat(e.price)*parseFloat(t.price)}return null}}function vs(e){var t,a;if("number"==typeof e.network){const a=Lt[e.network];return{...a,urls:{...a.urls,subgraph:null!==(t=e.customSubgraphUrl)&&void 0!==t?t:a.urls.subgraph},tenderly:e.tenderly}}return{...e.network,urls:{...e.network.urls,subgraph:null!==(a=e.customSubgraphUrl)&&void 0!==a?a:e.network.urls.subgraph},tenderly:e.network.tenderly}}class Os extends F{constructor(e){const t=vs(e),a=Os.getSorConfig(e),n=Os.getSorNetworkConfig(t),s=new q(e.rpcUrl,e.network),i=bs(t.urls.subgraph);super(s,n,Os.getPoolDataService(t,a,s,i),Os.getTokenPriceService(t,a,i))}static getSorConfig(e){return{tokenPriceService:"coingecko",poolDataService:"subgraph",fetchOnChainBalances:!0,...e.sor}}static getSorNetworkConfig(e){var t;return{...e,vault:e.addresses.contracts.vault,weth:e.addresses.tokens.wrappedNativeAsset,lbpRaisingTokens:null===(t=e.addresses.tokens)||void 0===t?void 0:t.lbpRaisingTokens,wETHwstETH:e.pools.wETHwstETH,connectingTokens:e.sorConnectingTokens}}static getPoolDataService(e,t,a,n){return"object"==typeof t.poolDataService?t.poolDataService:new Ss(n,a,e,t)}static getTokenPriceService(e,t,a){return"object"==typeof t.tokenPriceService?t.tokenPriceService:("subgraph"===t.tokenPriceService&&new _s(a,e.addresses.tokens.wrappedNativeAsset),new Ps(e.chainId))}}function Bs(e){if(e.poolIds.length>2)throw new Error("Simple flash swap only supports a maximum of two pools");if(e.assets.length>2)throw new Error("Simple flash swap only supports a maximum of to two assets (tokens)")}function ks(e,t){return[{poolId:e[0],assetInIndex:0,assetOutIndex:1,amount:t,userData:"0x"},{poolId:e[1],assetInIndex:1,assetOutIndex:0,amount:"0",userData:"0x"}]}function Ds(e){return-1*Number(e)}function Ns(e){return x(e)}var Cs=[{inputs:[{internalType:"contract IVault",name:"vault",type:"address"},{internalType:"contract IERC20",name:"wstETH",type:"address"},{internalType:"contract IBalancerMinter",name:"minter",type:"address"}],stateMutability:"nonpayable",type:"constructor"},{inputs:[{internalType:"contract IERC20",name:"token",type:"address"},{internalType:"uint256",name:"amount",type:"uint256"}],name:"approveVault",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"enum IVault.SwapKind",name:"kind",type:"uint8"},{components:[{internalType:"bytes32",name:"poolId",type:"bytes32"},{internalType:"uint256",name:"assetInIndex",type:"uint256"},{internalType:"uint256",name:"assetOutIndex",type:"uint256"},{internalType:"uint256",name:"amount",type:"uint256"},{internalType:"bytes",name:"userData",type:"bytes"}],internalType:"struct IVault.BatchSwapStep[]",name:"swaps",type:"tuple[]"},{internalType:"contract IAsset[]",name:"assets",type:"address[]"},{components:[{internalType:"address",name:"sender",type:"address"},{internalType:"bool",name:"fromInternalBalance",type:"bool"},{internalType:"address payable",name:"recipient",type:"address"},{internalType:"bool",name:"toInternalBalance",type:"bool"}],internalType:"struct IVault.FundManagement",name:"funds",type:"tuple"},{internalType:"int256[]",name:"limits",type:"int256[]"},{internalType:"uint256",name:"deadline",type:"uint256"},{internalType:"uint256",name:"value",type:"uint256"},{components:[{internalType:"uint256",name:"index",type:"uint256"},{internalType:"uint256",name:"key",type:"uint256"}],internalType:"struct VaultActions.OutputReference[]",name:"outputReferences",type:"tuple[]"}],name:"batchSwap",outputs:[{internalType:"int256[]",name:"",type:"int256[]"}],stateMutability:"payable",type:"function"},{inputs:[{internalType:"bytes32",name:"poolId",type:"bytes32"},{internalType:"enum VaultActions.PoolKind",name:"kind",type:"uint8"},{internalType:"address",name:"sender",type:"address"},{internalType:"address payable",name:"recipient",type:"address"},{components:[{internalType:"contract IAsset[]",name:"assets",type:"address[]"},{internalType:"uint256[]",name:"minAmountsOut",type:"uint256[]"},{internalType:"bytes",name:"userData",type:"bytes"},{internalType:"bool",name:"toInternalBalance",type:"bool"}],internalType:"struct IVault.ExitPoolRequest",name:"request",type:"tuple"},{components:[{internalType:"uint256",name:"index",type:"uint256"},{internalType:"uint256",name:"key",type:"uint256"}],internalType:"struct VaultActions.OutputReference[]",name:"outputReferences",type:"tuple[]"}],name:"exitPool",outputs:[],stateMutability:"payable",type:"function"},{inputs:[{internalType:"contract IStakingLiquidityGauge[]",name:"gauges",type:"address[]"}],name:"gaugeClaimRewards",outputs:[],stateMutability:"payable",type:"function"},{inputs:[{internalType:"contract IStakingLiquidityGauge",name:"gauge",type:"address"},{internalType:"address",name:"sender",type:"address"},{internalType:"address",name:"recipient",type:"address"},{internalType:"uint256",name:"amount",type:"uint256"}],name:"gaugeDeposit",outputs:[],stateMutability:"payable",type:"function"},{inputs:[{internalType:"address[]",name:"gauges",type:"address[]"},{internalType:"uint256",name:"outputReference",type:"uint256"}],name:"gaugeMint",outputs:[],stateMutability:"payable",type:"function"},{inputs:[{internalType:"bool",name:"approval",type:"bool"},{internalType:"address",name:"user",type:"address"},{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:"gaugeSetMinterApproval",outputs:[],stateMutability:"payable",type:"function"},{inputs:[{internalType:"contract IStakingLiquidityGauge",name:"gauge",type:"address"},{internalType:"address",name:"sender",type:"address"},{internalType:"address",name:"recipient",type:"address"},{internalType:"uint256",name:"amount",type:"uint256"}],name:"gaugeWithdraw",outputs:[],stateMutability:"payable",type:"function"},{inputs:[],name:"getEntrypoint",outputs:[{internalType:"contract IBalancerRelayer",name:"",type:"address"}],stateMutability:"view",type:"function"},{inputs:[],name:"getVault",outputs:[{internalType:"contract IVault",name:"",type:"address"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"bytes32",name:"poolId",type:"bytes32"},{internalType:"enum VaultActions.PoolKind",name:"kind",type:"uint8"},{internalType:"address",name:"sender",type:"address"},{internalType:"address",name:"recipient",type:"address"},{components:[{internalType:"contract IAsset[]",name:"assets",type:"address[]"},{internalType:"uint256[]",name:"maxAmountsIn",type:"uint256[]"},{internalType:"bytes",name:"userData",type:"bytes"},{internalType:"bool",name:"fromInternalBalance",type:"bool"}],internalType:"struct IVault.JoinPoolRequest",name:"request",type:"tuple"},{internalType:"uint256",name:"value",type:"uint256"},{internalType:"uint256",name:"outputReference",type:"uint256"}],name:"joinPool",outputs:[],stateMutability:"payable",type:"function"},{inputs:[{components:[{internalType:"enum IVault.UserBalanceOpKind",name:"kind",type:"uint8"},{internalType:"contract IAsset",name:"asset",type:"address"},{internalType:"uint256",name:"amount",type:"uint256"},{internalType:"address",name:"sender",type:"address"},{internalType:"address payable",name:"recipient",type:"address"}],internalType:"struct IVault.UserBalanceOp[]",name:"ops",type:"tuple[]"},{internalType:"uint256",name:"value",type:"uint256"}],name:"manageUserBalance",outputs:[],stateMutability:"payable",type:"function"},{inputs:[{internalType:"uint256",name:"ref",type:"uint256"}],name:"peekChainedReferenceValue",outputs:[{internalType:"uint256",name:"value",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"relayer",type:"address"},{internalType:"bool",name:"approved",type:"bool"},{internalType:"bytes",name:"authorisation",type:"bytes"}],name:"setRelayerApproval",outputs:[],stateMutability:"payable",type:"function"},{inputs:[{internalType:"address",name:"recipient",type:"address"},{internalType:"uint256",name:"amount",type:"uint256"},{internalType:"uint256",name:"outputReference",type:"uint256"}],name:"stakeETH",outputs:[],stateMutability:"payable",type:"function"},{inputs:[{internalType:"address",name:"recipient",type:"address"},{internalType:"uint256",name:"amount",type:"uint256"},{internalType:"uint256",name:"outputReference",type:"uint256"}],name:"stakeETHAndWrap",outputs:[],stateMutability:"payable",type:"function"},{inputs:[{components:[{internalType:"bytes32",name:"poolId",type:"bytes32"},{internalType:"enum IVault.SwapKind",name:"kind",type:"uint8"},{internalType:"contract IAsset",name:"assetIn",type:"address"},{internalType:"contract IAsset",name:"assetOut",type:"address"},{internalType:"uint256",name:"amount",type:"uint256"},{internalType:"bytes",name:"userData",type:"bytes"}],internalType:"struct IVault.SingleSwap",name:"singleSwap",type:"tuple"},{components:[{internalType:"address",name:"sender",type:"address"},{internalType:"bool",name:"fromInternalBalance",type:"bool"},{internalType:"address payable",name:"recipient",type:"address"},{internalType:"bool",name:"toInternalBalance",type:"bool"}],internalType:"struct IVault.FundManagement",name:"funds",type:"tuple"},{internalType:"uint256",name:"limit",type:"uint256"},{internalType:"uint256",name:"deadline",type:"uint256"},{internalType:"uint256",name:"value",type:"uint256"},{internalType:"uint256",name:"outputReference",type:"uint256"}],name:"swap",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"payable",type:"function"},{inputs:[{internalType:"contract IStaticATokenLM",name:"staticToken",type:"address"},{internalType:"address",name:"sender",type:"address"},{internalType:"address",name:"recipient",type:"address"},{internalType:"uint256",name:"amount",type:"uint256"},{internalType:"bool",name:"toUnderlying",type:"bool"},{internalType:"uint256",name:"outputReference",type:"uint256"}],name:"unwrapAaveStaticToken",outputs:[],stateMutability:"payable",type:"function"},{inputs:[{internalType:"contract IERC4626",name:"wrappedToken",type:"address"},{internalType:"address",name:"sender",type:"address"},{internalType:"address",name:"recipient",type:"address"},{internalType:"uint256",name:"amount",type:"uint256"},{internalType:"uint256",name:"outputReference",type:"uint256"}],name:"unwrapERC4626",outputs:[],stateMutability:"payable",type:"function"},{inputs:[{internalType:"contract IUnbuttonToken",name:"wrapperToken",type:"address"},{internalType:"address",name:"sender",type:"address"},{internalType:"address",name:"recipient",type:"address"},{internalType:"uint256",name:"amount",type:"uint256"},{internalType:"uint256",name:"outputReference",type:"uint256"}],name:"unwrapUnbuttonToken",outputs:[],stateMutability:"payable",type:"function"},{inputs:[{internalType:"address",name:"sender",type:"address"},{internalType:"address",name:"recipient",type:"address"},{internalType:"uint256",name:"amount",type:"uint256"},{internalType:"uint256",name:"outputReference",type:"uint256"}],name:"unwrapWstETH",outputs:[],stateMutability:"payable",type:"function"},{inputs:[{internalType:"contract IERC20Permit",name:"token",type:"address"},{internalType:"address",name:"owner",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:"vaultPermit",outputs:[],stateMutability:"payable",type:"function"},{inputs:[{internalType:"contract IERC20PermitDAI",name:"token",type:"address"},{internalType:"address",name:"holder",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:"vaultPermitDAI",outputs:[],stateMutability:"payable",type:"function"},{inputs:[{internalType:"contract IStaticATokenLM",name:"staticToken",type:"address"},{internalType:"address",name:"sender",type:"address"},{internalType:"address",name:"recipient",type:"address"},{internalType:"uint256",name:"amount",type:"uint256"},{internalType:"bool",name:"fromUnderlying",type:"bool"},{internalType:"uint256",name:"outputReference",type:"uint256"}],name:"wrapAaveDynamicToken",outputs:[],stateMutability:"payable",type:"function"},{inputs:[{internalType:"contract IERC4626",name:"wrappedToken",type:"address"},{internalType:"address",name:"sender",type:"address"},{internalType:"address",name:"recipient",type:"address"},{internalType:"uint256",name:"amount",type:"uint256"},{internalType:"uint256",name:"outputReference",type:"uint256"}],name:"wrapERC4626",outputs:[],stateMutability:"payable",type:"function"},{inputs:[{internalType:"address",name:"sender",type:"address"},{internalType:"address",name:"recipient",type:"address"},{internalType:"uint256",name:"amount",type:"uint256"},{internalType:"uint256",name:"outputReference",type:"uint256"}],name:"wrapStETH",outputs:[],stateMutability:"payable",type:"function"},{inputs:[{internalType:"contract IUnbuttonToken",name:"wrapperToken",type:"address"},{internalType:"address",name:"sender",type:"address"},{internalType:"address",name:"recipient",type:"address"},{internalType:"uint256",name:"uAmount",type:"uint256"},{internalType:"uint256",name:"outputReference",type:"uint256"}],name:"wrapUnbuttonToken",outputs:[],stateMutability:"payable",type:"function"}];const Fs={"0xae7ab96520de3a18e5e111b5eaab095312d7fe84":"0x7f39c581f595b53c5cb19bd0b3f8da6c935e2ca0","0xd46ba6d942050d489dbd938a2c909a5d5039a161":"0xedb171c18ce90b633db442f2a6f72874093b49ef","0x1e6bb68acec8fefbd87d192be09bb274170a0548":"0xF03387d8d0FF326ab586A58E0ab4121d106147DF"};function Rs(e){let t=e;return Fs.hasOwnProperty(e)&&(t=Fs[e]),t}var Ms;function Ls(e,t,a){const{tokens:n,contracts:s}=Ut(a);let i={id:Ms.vault,address:s.vault};return n.stETH&&s.lidoRelayer&&[e,t].includes(n.stETH)&&(i={id:Ms.lido,address:s.lidoRelayer}),i}function Us(e){let t=L.abi;e.id===Ms.lido&&(t=Cs);return t.filter((e=>e.name&&["swap","batchSwap"].includes(e.name)))}function Gs(e){return{amount:e,max:t=>e.mul(1e3+t).div(1e3),min:t=>e.mul(1e3-t).div(1e3)}}function $s(e,t){const a=t===kt.SwapExactIn?e.swapAmount:e.returnAmount,n=t===kt.SwapExactIn?e.returnAmount:e.swapAmount,s=t===kt.SwapExactIn?e.swapAmountForSwaps||e.swapAmount:e.returnAmountFromSwaps||e.returnAmount,i=t===kt.SwapExactIn?e.returnAmountFromSwaps||e.returnAmount:e.swapAmountForSwaps||e.swapAmount,r=Rs(e.tokenIn),o=Rs(e.tokenOut);return{...e,amountIn:a,amountOut:n,amountInForLimits:Gs(s),amountOutForLimits:Gs(i),tokenInForSwaps:r,tokenOutFromSwaps:o}}!function(e){e[e.vault=1]="vault",e[e.lido=2]="lido"}(Ms||(Ms={}));class qs{constructor(e,t,a){this.kind=t,this.chainId=a,this.functionName="swap",this.swapInfo=$s(e,t),this.relayer=Ls(this.swapInfo.tokenIn,this.swapInfo.tokenOut,this.chainId)}setFunds(e,t){this.funds={sender:e,recipient:t||e,fromInternalBalance:!1,toInternalBalance:!1}}setDeadline(e){this.deadline=e.toString()}get amount(){return this.kind===kt.SwapExactOut?this.swapInfo.amountOutForLimits.amount:this.swapInfo.amountInForLimits.amount}setLimits(e){this.limit=this.kind===kt.SwapExactIn?this.swapInfo.amountOutForLimits.min(e).toString():this.swapInfo.amountInForLimits.max(e).toString()}get singleSwap(){return{poolId:this.swapInfo.swaps[0].poolId,kind:this.kind,assetIn:this.swapInfo.tokenInForSwaps,assetOut:this.swapInfo.tokenOutFromSwaps,amount:this.amount.toString(),userData:"0x"}}attributes(){var e;if(!this.funds||!this.limit||!this.deadline)throw new Error("Uninitialized arguments");let t={request:this.singleSwap,funds:this.funds,limit:this.limit,deadline:this.deadline};const a=this.fragment();return a[0].inputs&&(null===(e=a[0].inputs)||void 0===e?void 0:e.length)>4&&(t={...t,value:"0",outputReference:"0"}),t}data(){return new t(this.fragment()).encodeFunctionData("swap",Object.values(this.attributes()))}value(e){let t=d.from(0);return this.swapInfo.tokenIn===i&&(t=this.kind===kt.SwapExactIn?this.swapInfo.amountIn:this.swapInfo.amountInForLimits.max(e)),t}to(){return this.relayer.address}fragment(){return Us(this.relayer).filter((e=>e.name===this.functionName))}}class Ws{constructor(e,t,a){this.kind=t,this.chainId=a,this.functionName="batchSwap",this.swapInfo=$s(e,t),this.relayer=Ls(this.swapInfo.tokenIn,this.swapInfo.tokenOut,this.chainId)}setFunds(e,t){this.funds={sender:e,recipient:t||e,fromInternalBalance:!1,toInternalBalance:!1}}setDeadline(e){this.deadline=e}minAmountOut(e){return this.kind===kt.SwapExactIn?this.swapInfo.amountOutForLimits.min(e):this.swapInfo.amountOutForLimits.amount}maxAmountIn(e){return this.kind===kt.SwapExactOut?this.swapInfo.amountInForLimits.max(e):this.swapInfo.amountInForLimits.amount}setLimits(e){this.limits=this.swapInfo.tokenAddresses.map((t=>{let a=d.from(0);return t===this.swapInfo.tokenInForSwaps&&(a=this.maxAmountIn(e)),t===this.swapInfo.tokenOutFromSwaps&&(a=this.minAmountOut(e).mul(-1)),a})).map((e=>e.toString().split(".")[0]))}attributes(){var e;if(!this.funds||!this.limits||!this.deadline)throw new Error("Uninitialized arguments");let t={kind:this.kind,swaps:this.swapInfo.swaps,assets:this.swapInfo.tokenAddresses,funds:this.funds,limits:this.limits,deadline:this.deadline};const a=this.fragment();return a[0].inputs&&(null===(e=a[0].inputs)||void 0===e?void 0:e.length)>6&&(t={...t,value:"0",outputReferences:[]}),t}data(){return new t(this.fragment()).encodeFunctionData("batchSwap",Object.values(this.attributes()))}value(e){let t=d.from(0);return this.swapInfo.tokenIn===i&&(t=this.maxAmountIn(e)),t}to(){return this.relayer.address}fragment(){return Us(this.relayer).filter((e=>e.name===this.functionName))}}class Vs{constructor(e){e instanceof F?(this.sor=e,this.chainId=this.sor.provider._network.chainId):(this.sor=new Os(e),this.chainId=e.network),this.vaultContract=L.connect(Mt,this.sor.provider)}static getLimitsForSlippage(e,t,a,n,s,i){return Dt(e,t,a,n,s,i).map((e=>e.toString()))}async findRouteGivenIn({tokenIn:e,tokenOut:t,amount:a,gasPrice:n,maxPools:s=4}){return this.sor.getSwaps(e,t,N.SwapExactIn,a,{gasPrice:n,maxPools:s})}async findRouteGivenOut({tokenIn:e,tokenOut:t,amount:a,gasPrice:n,maxPools:s}){return this.sor.getSwaps(e,t,N.SwapExactOut,a,{gasPrice:n,maxPools:s})}buildSwap({userAddress:e,recipient:t,swapInfo:a,kind:n,deadline:s,maxSlippage:i}){if(!this.chainId)throw"Missing network configuration";const r=a.swaps.length>1?new Ws(a,n,this.chainId):new qs(a,n,this.chainId);r.setFunds(e,t),r.setDeadline(s),r.setLimits(i);const o=r.to(),{functionName:d}=r;return{to:o,functionName:d,attributes:r.attributes(),data:r.data(),value:r.value(i)}}static encodeBatchSwap(e){return L.createInterface().encodeFunctionData("batchSwap",[e.kind,e.swaps,e.assets,e.funds,e.limits,e.deadline])}static encodeSimpleFlashSwap(e){return this.encodeBatchSwap(function({poolIds:e,assets:t,flashLoanAmount:a,walletAddress:n}){Bs({poolIds:e,assets:t});const s=ks(e,a),i={sender:n,fromInternalBalance:!1,recipient:n,toInternalBalance:!1};return{kind:kt.SwapExactIn,swaps:s,assets:t,funds:i,limits:["0","0"],deadline:"999999999999999999"}}(e))}async fetchPools(){return this.sor.fetchPools()}getPools(){return this.sor.getPools()}async queryBatchSwap(e){return await _a(this.vaultContract,e.kind,e.swaps,e.assets)}async queryBatchSwapWithSor(e){return await va(this.sor,this.vaultContract,e)}async querySimpleFlashSwap(e){return await async function(e){Bs(e);const[t,a]=e.assets;try{const n=await _a(e.vaultContract,kt.SwapExactIn,ks(e.poolIds,e.flashLoanAmount),e.assets),s={[t]:Ds(n[0]).toString(),[a]:Ds(n[1]).toString()};return{profits:s,isProfitable:Ns([s[t],s[a]])>0}}catch(e){throw`Failed to querySimpleFlashSwap: ${e}`}}({...e,vaultContract:this.vaultContract})}async getSorSwap(e){return await Oa(e.tokenIn,e.tokenOut,e.swapType,e.amount,this.sor)}}const Hs=new t(Cs);class js{constructor(e){this.swaps=e instanceof Vs?e:new Vs(e)}static isChainedReference(e){const t=d.from(e),a=d.from("0xfff0000000000000000000000000000000000000000000000000000000000000"),n=t.toBigInt()&a.toBigInt();return"0xba10000000000000000000000000000000000000000000000000000000000000"===d.from(n)._hex.toString()}static encodeApproveVault(e,t){return Hs.encodeFunctionData("approveVault",[e,t])}static encodeSetRelayerApproval(e,t,a){return Hs.encodeFunctionData("setRelayerApproval",[e,t,a])}static encodeGaugeWithdraw(e,t,a,n){return Hs.encodeFunctionData("gaugeWithdraw",[e,t,a,n])}static encodeGaugeDeposit(e,t,a,n){return Hs.encodeFunctionData("gaugeDeposit",[e,t,a,n])}static encodeBatchSwap(e){return Hs.encodeFunctionData("batchSwap",[e.swapType,e.swaps,e.assets,e.funds,e.limits,e.deadline,e.value,e.outputReferences])}static encodeExitPool(e){return Hs.encodeFunctionData("exitPool",[e.poolId,e.poolKind,e.sender,e.recipient,e.exitPoolRequest,e.outputReferences])}static encodeJoinPool(e){return Hs.encodeFunctionData("joinPool",[e.poolId,e.kind,e.sender,e.recipient,e.joinPoolRequest,e.value,e.outputReference])}static encodeWrapAaveDynamicToken(e){return Hs.encodeFunctionData("wrapAaveDynamicToken",[e.staticToken,e.sender,e.recipient,e.amount,e.fromUnderlying,e.outputReference])}static encodeUnwrapAaveStaticToken(e){return Hs.encodeFunctionData("unwrapAaveStaticToken",[e.staticToken,e.sender,e.recipient,e.amount,e.toUnderlying,e.outputReferences])}static encodePeekChainedReferenceValue(e){return Hs.encodeFunctionData("peekChainedReferenceValue",[e])}static toChainedReference(e,t=!0){const a=t?js.CHAINED_REFERENCE_TEMP_PREFIX:js.CHAINED_REFERENCE_READONLY_PREFIX,n=`0x${a}${"0".repeat(64-a.length)}`;return d.from(n).add(e)}static fromChainedReference(e,t=!0){const a=t?js.CHAINED_REFERENCE_TEMP_PREFIX:js.CHAINED_REFERENCE_READONLY_PREFIX,n=`0x${a}${"0".repeat(64-a.length)}`;return d.from(e).sub(d.from(n))}static constructExitCall(e){const{assets:t,minAmountsOut:a,userData:n,toInternalBalance:s,poolId:i,poolKind:r,sender:o,recipient:d,outputReferences:c}=e,l={poolId:i,poolKind:r,sender:o,recipient:d,outputReferences:c,exitPoolRequest:{assets:t,minAmountsOut:a,userData:n,toInternalBalance:s}};return js.encodeExitPool(l)}static constructJoinCall(e){const{assets:t,maxAmountsIn:a,userData:n,fromInternalBalance:s,poolId:i,kind:r,sender:o,recipient:d,value:c,outputReference:l}=e,p={poolId:i,kind:r,sender:o,recipient:d,value:c,outputReference:l,joinPoolRequest:{assets:t,maxAmountsIn:a,userData:n,fromInternalBalance:s}};return js.encodeJoinPool(p)}async fetchPools(){return this.swaps.fetchPools()}getPools(){return this.swaps.getPools()}async exitPoolAndBatchSwap(e){const t=n.sub(d.from(e.slippage)),a=e.expectedAmountsOut.map((e=>d.from(e).mul(t).div(n).toString())),s=[];e.exitTokens.forEach(((e,t)=>{const a=js.toChainedReference(t);s.push({index:t,key:a})}));const i=js.constructExitCall({assets:e.exitTokens,minAmountsOut:a,userData:e.userData,toInternalBalance:!0,poolId:e.poolId,poolKind:0,sender:e.exiter,recipient:e.exiter,outputReferences:s,exitPoolRequest:{}}),o=await this.swaps.queryBatchSwapWithSor({tokensIn:e.exitTokens,tokensOut:e.finalTokensOut,swapType:kt.SwapExactIn,amounts:a,fetchPools:e.fetchPools});if(o.returnAmounts.includes("0"))throw new $t(Gt.SWAP_ZERO_RETURN_AMOUNT);o.swaps.forEach((t=>{const a=o.assets[t.assetInIndex],n=e.exitTokens.indexOf(a);-1!==n&&(t.amount=s[n].key.toString())}));const c=n.add(e.slippage);e.exitTokens.forEach(((t,a)=>{const s=o.assets.map((e=>e.toLowerCase())).indexOf(t.toLowerCase());-1!==s&&(o.deltas[s]=d.from(e.expectedAmountsOut[a]).mul(c).div(n).toString())}));const l=Vs.getLimitsForSlippage(e.exitTokens,e.finalTokensOut,kt.SwapExactIn,o.deltas,o.assets,"0"),p={sender:e.exiter,recipient:e.swapRecipient,fromInternalBalance:!0,toInternalBalance:!1};return{function:"multicall",params:[i,js.encodeBatchSwap({swapType:kt.SwapExactIn,swaps:o.swaps,assets:o.assets,funds:p,limits:l.map((e=>e.toString())),deadline:r,value:"0",outputReferences:[]})],outputs:{amountsOut:o.returnAmounts}}}async swapUnwrapAaveStaticExactIn(e,t,a,i,r,o,c={fetchPools:!0,fetchOnChain:!1}){const l=await this.swaps.queryBatchSwapWithSor({tokensIn:e,tokensOut:t,swapType:kt.SwapExactIn,amounts:a,fetchPools:c});if(l.returnAmounts.includes("0"))throw new $t(Gt.SWAP_ZERO_RETURN_AMOUNT);const p=Vs.getLimitsForSlippage(e,t,kt.SwapExactIn,l.deltas,l.assets,o);return{function:"multicall",params:this.encodeSwapUnwrap(t,kt.SwapExactIn,l.swaps,l.assets,r,p),outputs:{amountsOut:l.returnAmounts.map(((e,t)=>{const a=d.from(e).abs().mul(i[t]).div(n);if(!a.gt(s))throw new $t(Gt.UNWRAP_ZERO_AMOUNT);return a.toString()}))}}}async swapUnwrapAaveStaticExactOut(e,t,a,i,r,o,c={fetchPools:!0,fetchOnChain:!1}){const l=a.map(((e,t)=>{const a=d.from(e).mul(n).div(i[t]);if(!a.gt(s))throw new $t(Gt.WRAP_ZERO_AMOUNT);return a.toString()})),p=await this.swaps.queryBatchSwapWithSor({tokensIn:e,tokensOut:t,swapType:kt.SwapExactOut,amounts:l,fetchPools:c});if(p.returnAmounts.includes("0"))throw new $t(Gt.SWAP_ZERO_RETURN_AMOUNT);const u=Vs.getLimitsForSlippage(e,t,kt.SwapExactOut,p.deltas,p.assets,o);return{function:"multicall",params:this.encodeSwapUnwrap(t,kt.SwapExactOut,p.swaps,p.assets,r,u),outputs:{amountsIn:p.returnAmounts.map((e=>e.toString()))}}}encodeSwapUnwrap(e,t,a,n,s,i){const o=[],d=[];e.forEach(((e,t)=>{const a=n.findIndex((t=>t.toLowerCase()===e.toLowerCase()));if(-1===a)return;const i=js.toChainedReference(t);o.push({index:a,key:i});const r=js.encodeUnwrapAaveStaticToken({staticToken:e,sender:s.recipient,recipient:s.sender,amount:i,toUnderlying:!0,outputReferences:0});d.push(r)}));return[js.encodeBatchSwap({swapType:t,swaps:a,assets:n,funds:s,limits:i.map((e=>e.toString())),deadline:r,value:"0",outputReferences:o}),...d]}}js.CHAINED_REFERENCE_TEMP_PREFIX="ba10",js.CHAINED_REFERENCE_READONLY_PREFIX="ba11",js.signRelayerApproval=async(e,t,a,n)=>{const s=n.interface.encodeFunctionData("setRelayerApproval",[t,e,!0]),i=await Pe.signSetRelayerApprovalAuthorization(n,a,e,s);return Pe.encodeCalldataAuthorization("0x",r,i)};class Xs{constructor(e){this.url=vs(e).urls.subgraph,this.client=this.initClient()}initClient(){return Wn(new W(this.url))}}class Ks{constructor(e,t){this.swaps=t||new Vs(e)}async fetchPools(){return this.swaps.fetchPools()}getPools(){return this.swaps.getPools()}async getSpotPrice(e,t,a=[]){0===a.length&&(await this.fetchPools(),a=this.getPools());const n=R(a,0),s=this.swaps.sor.routeProposer.getCandidatePathsFromDict(e,t,0,n,4);if(0===s.length)throw new $t(Gt.UNSUPPORTED_PAIR);return M(s[0],0,P).toString()}}var Ys=[{constant:!0,inputs:[],name:"name",outputs:[{name:"",type:"string"}],payable:!1,stateMutability:"view",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:"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:[{name:"",type:"bool"}],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:"_owner",type:"address"}],name:"balanceOf",outputs:[{name:"balance",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:"_to",type:"address"},{name:"_value",type:"uint256"}],name:"transfer",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"},{payable:!0,stateMutability:"payable",type:"fallback"},{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"}];function Js(e){return Math.round(Date.now()/1e3)-e<86400}var Zs=[{name:"Deposit",inputs:[{name:"provider",type:"address",indexed:!0},{name:"value",type:"uint256",indexed:!1},{name:"locktime",type:"uint256",indexed:!0},{name:"type",type:"int128",indexed:!1},{name:"ts",type:"uint256",indexed:!1}],anonymous:!1,type:"event"},{name:"Withdraw",inputs:[{name:"provider",type:"address",indexed:!0},{name:"value",type:"uint256",indexed:!1},{name:"ts",type:"uint256",indexed:!1}],anonymous:!1,type:"event"},{name:"Supply",inputs:[{name:"prevSupply",type:"uint256",indexed:!1},{name:"supply",type:"uint256",indexed:!1}],anonymous:!1,type:"event"},{stateMutability:"nonpayable",type:"constructor",inputs:[{name:"token_addr",type:"address"},{name:"_name",type:"string"},{name:"_symbol",type:"string"},{name:"_authorizer_adaptor",type:"address"}],outputs:[]},{stateMutability:"view",type:"function",name:"token",inputs:[],outputs:[{name:"",type:"address"}]},{stateMutability:"view",type:"function",name:"name",inputs:[],outputs:[{name:"",type:"string"}]},{stateMutability:"view",type:"function",name:"symbol",inputs:[],outputs:[{name:"",type:"string"}]},{stateMutability:"view",type:"function",name:"decimals",inputs:[],outputs:[{name:"",type:"uint256"}]},{stateMutability:"view",type:"function",name:"admin",inputs:[],outputs:[{name:"",type:"address"}]},{stateMutability:"nonpayable",type:"function",name:"commit_smart_wallet_checker",inputs:[{name:"addr",type:"address"}],outputs:[]},{stateMutability:"nonpayable",type:"function",name:"apply_smart_wallet_checker",inputs:[],outputs:[]},{stateMutability:"view",type:"function",name:"get_last_user_slope",inputs:[{name:"addr",type:"address"}],outputs:[{name:"",type:"int128"}]},{stateMutability:"view",type:"function",name:"user_point_history__ts",inputs:[{name:"_addr",type:"address"},{name:"_idx",type:"uint256"}],outputs:[{name:"",type:"uint256"}]},{stateMutability:"view",type:"function",name:"locked__end",inputs:[{name:"_addr",type:"address"}],outputs:[{name:"",type:"uint256"}]},{stateMutability:"nonpayable",type:"function",name:"checkpoint",inputs:[],outputs:[]},{stateMutability:"nonpayable",type:"function",name:"deposit_for",inputs:[{name:"_addr",type:"address"},{name:"_value",type:"uint256"}],outputs:[]},{stateMutability:"nonpayable",type:"function",name:"create_lock",inputs:[{name:"_value",type:"uint256"},{name:"_unlock_time",type:"uint256"}],outputs:[]},{stateMutability:"nonpayable",type:"function",name:"increase_amount",inputs:[{name:"_value",type:"uint256"}],outputs:[]},{stateMutability:"nonpayable",type:"function",name:"increase_unlock_time",inputs:[{name:"_unlock_time",type:"uint256"}],outputs:[]},{stateMutability:"nonpayable",type:"function",name:"withdraw",inputs:[],outputs:[]},{stateMutability:"view",type:"function",name:"balanceOf",inputs:[{name:"addr",type:"address"}],outputs:[{name:"",type:"uint256"}]},{stateMutability:"view",type:"function",name:"balanceOf",inputs:[{name:"addr",type:"address"},{name:"_t",type:"uint256"}],outputs:[{name:"",type:"uint256"}]},{stateMutability:"view",type:"function",name:"balanceOfAt",inputs:[{name:"addr",type:"address"},{name:"_block",type:"uint256"}],outputs:[{name:"",type:"uint256"}]},{stateMutability:"view",type:"function",name:"totalSupply",inputs:[],outputs:[{name:"",type:"uint256"}]},{stateMutability:"view",type:"function",name:"totalSupply",inputs:[{name:"t",type:"uint256"}],outputs:[{name:"",type:"uint256"}]},{stateMutability:"view",type:"function",name:"totalSupplyAt",inputs:[{name:"_block",type:"uint256"}],outputs:[{name:"",type:"uint256"}]},{stateMutability:"view",type:"function",name:"supply",inputs:[],outputs:[{name:"",type:"uint256"}]},{stateMutability:"view",type:"function",name:"locked",inputs:[{name:"arg0",type:"address"}],outputs:[{name:"",type:"tuple",components:[{name:"amount",type:"int128"},{name:"end",type:"uint256"}]}]},{stateMutability:"view",type:"function",name:"epoch",inputs:[],outputs:[{name:"",type:"uint256"}]},{stateMutability:"view",type:"function",name:"point_history",inputs:[{name:"arg0",type:"uint256"}],outputs:[{name:"",type:"tuple",components:[{name:"bias",type:"int128"},{name:"slope",type:"int128"},{name:"ts",type:"uint256"},{name:"blk",type:"uint256"}]}]},{stateMutability:"view",type:"function",name:"user_point_history",inputs:[{name:"arg0",type:"address"},{name:"arg1",type:"uint256"}],outputs:[{name:"",type:"tuple",components:[{name:"bias",type:"int128"},{name:"slope",type:"int128"},{name:"ts",type:"uint256"},{name:"blk",type:"uint256"}]}]},{stateMutability:"view",type:"function",name:"user_point_epoch",inputs:[{name:"arg0",type:"address"}],outputs:[{name:"",type:"uint256"}]},{stateMutability:"view",type:"function",name:"slope_changes",inputs:[{name:"arg0",type:"uint256"}],outputs:[{name:"",type:"int128"}]},{stateMutability:"view",type:"function",name:"future_smart_wallet_checker",inputs:[],outputs:[{name:"",type:"address"}]},{stateMutability:"view",type:"function",name:"smart_wallet_checker",inputs:[],outputs:[{name:"",type:"address"}]}];class zs{constructor(e,t){this.addresses=e,this.provider=t}async getLockInfo(e){if(!this.addresses.veBal)throw new Error("veBal address must be defined");const t=new Ts(this.addresses.multicall,this.provider,Zs);t.call("locked",this.addresses.veBal,"locked",[e]),t.call("epoch",this.addresses.veBal,"epoch"),t.call("totalSupply",this.addresses.veBal,"totalSupply()");const a=await t.execute();return this.formatLockInfo(a)}formatLockInfo(e){const[t,a]=e.locked,n=t.gt(0),s=1e3*a.toNumber();const i=n&&Date.now()>s;return{lockedEndDate:s,lockedAmount:rt(t),totalSupply:rt(e.totalSupply),epoch:rt(e.epoch,0),hasExistingLock:n,isExpired:i}}}var Qs=[{inputs:[{internalType:"contract IVault",name:"vault",type:"address"},{internalType:"contract IERC20",name:"votingEscrow",type:"address"},{internalType:"contract IVeDelegation",name:"delegation",type:"address"}],stateMutability:"nonpayable",type:"constructor"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"newImplementation",type:"address"}],name:"DelegationImplementationUpdated",type:"event"},{inputs:[{internalType:"address",name:"user",type:"address"}],name:"adjustedBalanceOf",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"user",type:"address"}],name:"adjusted_balance_of",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"bytes4",name:"selector",type:"bytes4"}],name:"getActionId",outputs:[{internalType:"bytes32",name:"",type:"bytes32"}],stateMutability:"view",type:"function"},{inputs:[],name:"getAuthorizer",outputs:[{internalType:"contract IAuthorizer",name:"",type:"address"}],stateMutability:"view",type:"function"},{inputs:[],name:"getDelegationImplementation",outputs:[{internalType:"contract IVeDelegation",name:"",type:"address"}],stateMutability:"view",type:"function"},{inputs:[],name:"getVault",outputs:[{internalType:"contract IVault",name:"",type:"address"}],stateMutability:"view",type:"function"},{inputs:[],name:"getVotingEscrow",outputs:[{internalType:"contract IERC20",name:"",type:"address"}],stateMutability:"view",type:"function"},{inputs:[],name:"killDelegation",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"contract IVeDelegation",name:"delegation",type:"address"}],name:"setDelegation",outputs:[],stateMutability:"nonpayable",type:"function"}];class ei{constructor(e,t){if(!e.veBalProxy)throw new Error("veBalProxy address must be defined");this.instance=new u(e.veBalProxy,Qs,t)}async getAdjustedBalance(e){return rt(await this.instance.adjustedBalanceOf(e))}}var ti=[{inputs:[{internalType:"contract IVault",name:"vault",type:"address"},{internalType:"address",name:"libraryAddress",type:"address"}],stateMutability:"nonpayable",type:"constructor"},{inputs:[],name:"getLibrary",outputs:[{internalType:"address",name:"",type:"address"}],stateMutability:"view",type:"function"},{inputs:[],name:"getVault",outputs:[{internalType:"contract IVault",name:"",type:"address"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"bytes[]",name:"data",type:"bytes[]"}],name:"multicall",outputs:[{internalType:"bytes[]",name:"results",type:"bytes[]"}],stateMutability:"payable",type:"function"},{stateMutability:"payable",type:"receive"}],ai=[{inputs:[{internalType:"contract IVault",name:"vault",type:"address"},{internalType:"address",name:"libraryAddress",type:"address"}],stateMutability:"nonpayable",type:"constructor"},{inputs:[],name:"getLibrary",outputs:[{internalType:"address",name:"",type:"address"}],stateMutability:"view",type:"function"},{inputs:[],name:"getVault",outputs:[{internalType:"contract IVault",name:"",type:"address"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"bytes[]",name:"data",type:"bytes[]"}],name:"multicall",outputs:[{internalType:"bytes[]",name:"results",type:"bytes[]"}],stateMutability:"payable",type:"function"},{stateMutability:"payable",type:"receive"}];const ni=(e,t,a)=>{switch(a){case 3:return new u(e,ai,t);case 4:return new u(e,ti,t);default:throw new Error("relayer not supported")}};var si=[{name:"Deposit",inputs:[{name:"provider",type:"address",indexed:!0},{name:"value",type:"uint256",indexed:!1}],anonymous:!1,type:"event"},{name:"Withdraw",inputs:[{name:"provider",type:"address",indexed:!0},{name:"value",type:"uint256",indexed:!1}],anonymous:!1,type:"event"},{name:"UpdateLiquidityLimit",inputs:[{name:"user",type:"address",indexed:!0},{name:"original_balance",type:"uint256",indexed:!1},{name:"original_supply",type:"uint256",indexed:!1},{name:"working_balance",type:"uint256",indexed:!1},{name:"working_supply",type:"uint256",indexed:!1}],anonymous:!1,type:"event"},{name:"Transfer",inputs:[{name:"_from",type:"address",indexed:!0},{name:"_to",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"},{stateMutability:"nonpayable",type:"constructor",inputs:[{name:"minter",type:"address"},{name:"veBoostProxy",type:"address"}],outputs:[]},{stateMutability:"nonpayable",type:"function",name:"deposit",inputs:[{name:"_value",type:"uint256"}],outputs:[]},{stateMutability:"nonpayable",type:"function",name:"deposit",inputs:[{name:"_value",type:"uint256"},{name:"_addr",type:"address"}],outputs:[]},{stateMutability:"nonpayable",type:"function",name:"deposit",inputs:[{name:"_value",type:"uint256"},{name:"_addr",type:"address"},{name:"_claim_rewards",type:"bool"}],outputs:[]},{stateMutability:"nonpayable",type:"function",name:"withdraw",inputs:[{name:"_value",type:"uint256"}],outputs:[]},{stateMutability:"nonpayable",type:"function",name:"withdraw",inputs:[{name:"_value",type:"uint256"},{name:"_claim_rewards",type:"bool"}],outputs:[]},{stateMutability:"nonpayable",type:"function",name:"claim_rewards",inputs:[],outputs:[]},{stateMutability:"nonpayable",type:"function",name:"claim_rewards",inputs:[{name:"_addr",type:"address"}],outputs:[]},{stateMutability:"nonpayable",type:"function",name:"claim_rewards",inputs:[{name:"_addr",type:"address"},{name:"_receiver",type:"address"}],outputs:[]},{stateMutability:"nonpayable",type:"function",name:"transferFrom",inputs:[{name:"_from",type:"address"},{name:"_to",type:"address"},{name:"_value",type:"uint256"}],outputs:[{name:"",type:"bool"}]},{stateMutability:"nonpayable",type:"function",name:"transfer",inputs:[{name:"_to",type:"address"},{name:"_value",type:"uint256"}],outputs:[{name:"",type:"bool"}]},{stateMutability:"nonpayable",type:"function",name:"approve",inputs:[{name:"_spender",type:"address"},{name:"_value",type:"uint256"}],outputs:[{name:"",type:"bool"}]},{stateMutability:"nonpayable",type:"function",name:"permit",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"}],outputs:[{name:"",type:"bool"}]},{stateMutability:"nonpayable",type:"function",name:"increaseAllowance",inputs:[{name:"_spender",type:"address"},{name:"_added_value",type:"uint256"}],outputs:[{name:"",type:"bool"}]},{stateMutability:"nonpayable",type:"function",name:"decreaseAllowance",inputs:[{name:"_spender",type:"address"},{name:"_subtracted_value",type:"uint256"}],outputs:[{name:"",type:"bool"}]},{stateMutability:"nonpayable",type:"function",name:"user_checkpoint",inputs:[{name:"addr",type:"address"}],outputs:[{name:"",type:"bool"}]},{stateMutability:"nonpayable",type:"function",name:"set_rewards_receiver",inputs:[{name:"_receiver",type:"address"}],outputs:[]},{stateMutability:"nonpayable",type:"function",name:"kick",inputs:[{name:"addr",type:"address"}],outputs:[]},{stateMutability:"nonpayable",type:"function",name:"deposit_reward_token",inputs:[{name:"_reward_token",type:"address"},{name:"_amount",type:"uint256"}],outputs:[]},{stateMutability:"nonpayable",type:"function",name:"add_reward",inputs:[{name:"_reward_token",type:"address"},{name:"_distributor",type:"address"}],outputs:[]},{stateMutability:"nonpayable",type:"function",name:"set_reward_distributor",inputs:[{name:"_reward_token",type:"address"},{name:"_distributor",type:"address"}],outputs:[]},{stateMutability:"nonpayable",type:"function",name:"set_killed",inputs:[{name:"_is_killed",type:"bool"}],outputs:[]},{stateMutability:"view",type:"function",name:"claimed_reward",inputs:[{name:"_addr",type:"address"},{name:"_token",type:"address"}],outputs:[{name:"",type:"uint256"}]},{stateMutability:"view",type:"function",name:"claimable_reward",inputs:[{name:"_user",type:"address"},{name:"_reward_token",type:"address"}],outputs:[{name:"",type:"uint256"}]},{stateMutability:"view",type:"function",name:"claimable_reward_write",inputs:[{name:"_addr",type:"address"},{name:"_token",type:"address"}],outputs:[{name:"",type:"uint256"}]},{stateMutability:"view",type:"function",name:"claimable_tokens",inputs:[{name:"addr",type:"address"}],outputs:[{name:"",type:"uint256"}]},{stateMutability:"view",type:"function",name:"integrate_checkpoint",inputs:[],outputs:[{name:"",type:"uint256"}]},{stateMutability:"view",type:"function",name:"future_epoch_time",inputs:[],outputs:[{name:"",type:"uint256"}]},{stateMutability:"view",type:"function",name:"inflation_rate",inputs:[],outputs:[{name:"",type:"uint256"}]},{stateMutability:"view",type:"function",name:"decimals",inputs:[],outputs:[{name:"",type:"uint256"}]},{stateMutability:"view",type:"function",name:"version",inputs:[],outputs:[{name:"",type:"string"}]},{stateMutability:"view",type:"function",name:"allowance",inputs:[{name:"owner",type:"address"},{name:"spender",type:"address"}],outputs:[{name:"",type:"uint256"}]},{stateMutability:"nonpayable",type:"function",name:"initialize",inputs:[{name:"_lp_token",type:"address"}],outputs:[]},{stateMutability:"view",type:"function",name:"balanceOf",inputs:[{name:"arg0",type:"address"}],outputs:[{name:"",type:"uint256"}]},{stateMutability:"view",type:"function",name:"totalSupply",inputs:[],outputs:[{name:"",type:"uint256"}]},{stateMutability:"view",type:"function",name:"name",inputs:[],outputs:[{name:"",type:"string"}]},{stateMutability:"view",type:"function",name:"symbol",inputs:[],outputs:[{name:"",type:"string"}]},{stateMutability:"view",type:"function",name:"DOMAIN_SEPARATOR",inputs:[],outputs:[{name:"",type:"bytes32"}]},{stateMutability:"view",type:"function",name:"nonces",inputs:[{name:"arg0",type:"address"}],outputs:[{name:"",type:"uint256"}]},{stateMutability:"view",type:"function",name:"factory",inputs:[],outputs:[{name:"",type:"address"}]},{stateMutability:"view",type:"function",name:"lp_token",inputs:[],outputs:[{name:"",type:"address"}]},{stateMutability:"view",type:"function",name:"is_killed",inputs:[],outputs:[{name:"",type:"bool"}]},{stateMutability:"view",type:"function",name:"reward_count",inputs:[],outputs:[{name:"",type:"uint256"}]},{stateMutability:"view",type:"function",name:"reward_data",inputs:[{name:"arg0",type:"address"}],outputs:[{name:"",type:"tuple",components:[{name:"token",type:"address"},{name:"distributor",type:"address"},{name:"period_finish",type:"uint256"},{name:"rate",type:"uint256"},{name:"last_update",type:"uint256"},{name:"integral",type:"uint256"}]}]},{stateMutability:"view",type:"function",name:"rewards_receiver",inputs:[{name:"arg0",type:"address"}],outputs:[{name:"",type:"address"}]},{stateMutability:"view",type:"function",name:"reward_integral_for",inputs:[{name:"arg0",type:"address"},{name:"arg1",type:"address"}],outputs:[{name:"",type:"uint256"}]},{stateMutability:"view",type:"function",name:"working_balances",inputs:[{name:"arg0",type:"address"}],outputs:[{name:"",type:"uint256"}]},{stateMutability:"view",type:"function",name:"working_supply",inputs:[],outputs:[{name:"",type:"uint256"}]},{stateMutability:"view",type:"function",name:"integrate_inv_supply_of",inputs:[{name:"arg0",type:"address"}],outputs:[{name:"",type:"uint256"}]},{stateMutability:"view",type:"function",name:"integrate_checkpoint_of",inputs:[{name:"arg0",type:"address"}],outputs:[{name:"",type:"uint256"}]},{stateMutability:"view",type:"function",name:"integrate_fraction",inputs:[{name:"arg0",type:"address"}],outputs:[{name:"",type:"uint256"}]},{stateMutability:"view",type:"function",name:"period",inputs:[],outputs:[{name:"",type:"int128"}]},{stateMutability:"view",type:"function",name:"reward_tokens",inputs:[{name:"arg0",type:"uint256"}],outputs:[{name:"",type:"address"}]},{stateMutability:"view",type:"function",name:"period_timestamp",inputs:[{name:"arg0",type:"uint256"}],outputs:[{name:"",type:"uint256"}]},{stateMutability:"view",type:"function",name:"integrate_inv_supply",inputs:[{name:"arg0",type:"uint256"}],outputs:[{name:"",type:"uint256"}]}];class ii{constructor(e,t){this.contractAddresses="number"==typeof e?Lt[e].addresses.contracts:e,this.vault=L.connect(this.contractAddresses.vault,t),this.balancerHelpers=U.connect(this.contractAddresses.balancerHelpers,t),this.contractAddresses.lidoRelayer&&(this.lidoRelayer=G.connect(this.contractAddresses.lidoRelayer,t)),this.multicall=hs(this.contractAddresses.multicall,t),this.contractAddresses.relayerV3&&(this.relayerV3=ni(this.contractAddresses.relayerV3,t,3)),this.contractAddresses.relayerV4&&(this.relayerV4=ni(this.contractAddresses.relayerV4,t,4)),this.contractAddresses.veBal&&(this.veBal=new zs(this.contractAddresses,t)),this.contractAddresses.veBalProxy&&(this.veBalProxy=new ei(this.contractAddresses,t))}get contracts(){return{vault:this.vault,balancerHelpers:this.balancerHelpers,lidoRelayer:this.lidoRelayer,multicall:this.multicall,relayerV3:this.relayerV3,relayerV4:this.relayerV4,veBal:this.veBal,veBalProxy:this.veBalProxy,ERC20:this.getErc20,liquidityGauge:this.getLiquidityGauge}}getErc20(e,t){return((e,t)=>new u(e,Ys,t))(e,t)}getLiquidityGauge(e,t){return((e,t)=>new u(e,si,t))(e,t)}}const ri={1:{relayer:"0x886A3Ec7bcC508B8795990B60Fa21f85F9dB7948",staBal3:{id:"0x06df3b2bbb68adc8b0e302443692037ed9f91b42000000000000000000000063",address:"0x06df3b2bbb68adc8b0e302443692037ed9f91b42",gauge:"0x34f33cdaed8ba0e1ceece80e5f4a73bcf234cfac",assetOrder:["DAI","USDC","USDT"]},bbausd1:{id:"0x7b50775383d3d6f0215a8f290f2c9e2eebbeceb20000000000000000000000fe",address:"0x7b50775383d3d6f0215a8f290f2c9e2eebbeceb2",gauge:"0x68d019f64a7aa97e2d4e7363aee42251d08124fb",assetOrder:["bb-a-USDT","bb-a-DAI","bb-a-USDC"]},bbausd2:{id:"0xa13a9247ea42d743238089903570127dda72fe4400000000000000000000035d",address:"0xa13a9247ea42d743238089903570127dda72fe44",gauge:"0xa6325e799d266632d347e41265a69af111b05403"},linearUsdc1:{id:"0x9210f1204b5a24742eba12f710636d76240df3d00000000000000000000000fc",address:"0x9210F1204b5a24742Eba12f710636D76240dF3d0"},linearDai1:{id:"0x804cdb9116a10bb78768d3252355a1b18067bf8f0000000000000000000000fb",address:"0x804CdB9116a10bB78768D3252355a1b18067bF8f"},linearUsdt1:{id:"0x2bbf681cc4eb09218bee85ea2a5d3d13fa40fc0c0000000000000000000000fd",address:"0x2BBf681cC4eb09218BEe85EA2a5d3D13Fa40fC0C"},linearUsdc2:{id:"0x82698AECC9E28E9BB27608BD52CF57F704BD1B83000000000000000000000336",address:"0x82698aeCc9E28e9Bb27608Bd52cF57f704BD1B83"},linearDai2:{id:"0xAE37D54AE477268B9997D4161B96B8200755935C000000000000000000000337",address:"0xae37D54Ae477268B9997d4161B96b8200755935c"},linearUsdt2:{id:"0x2F4EB100552EF93840D5ADC30560E5513DFFFACB000000000000000000000334",address:"0x2F4eb100552ef93840d5aDC30560E5513DFfFACb"},maiusd:{id:"",address:"",gauge:"",assetOrder:["USDT","miMATIC","DAI","USDC"]},maibbausd:{id:"",address:"",gauge:"",assetOrder:["bb-a-USD","miMATIC"]},DAI:"0x6b175474e89094c44da98b954eedeac495271d0f",USDC:"0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48",USDT:"0xdAC17F958D2ee523a2206206994597C13D831ec7",waDAI:"0x02d60b84491589974263d922d9cc7a3152618ef6",waUSDC:"0xd093fa4fb80d09bb30817fdcd442d4d02ed3e5de",waUSDT:"0xf8fd466f12e236f4c96f7cce6c79eadb819abf58",miMATIC:""},5:{relayer:"0x7b9B6f094DC2Bd1c12024b0D9CC63d6993Be1888",staBal3:{id:"0xdcdd4a3d36dec8d57594e89763d069a7e9b223e2000000000000000000000062",address:"0xdcdd4a3d36dec8d57594e89763d069a7e9b223e2",gauge:"0xfd364cda96bb7db06b65706182c448a73f0a5f9a",assetOrder:["USDT","DAI","USDC"]},staBal3_2:{id:"0xff9d677474d4344379924e10b68c8fea67e03294000000000000000000000072",address:"0xff9d677474d4344379924e10b68c8fea67e03294",gauge:"0x4e4ebf2aa90e41174d716a5168895357762d68af",assetOrder:["USDT","DAI","USDC"]},staBal3_3:{id:"0x3bfc8a0509f1a68aefd446f6c19bf37b3c75a8fc0000000000000000000000a5",address:"0x3bfc8a0509f1a68aefd446f6c19bf37b3c75a8fc",gauge:"0x7776e1008d7c20ab54aa57a7c44fc7de602de29a",assetOrder:["USDT","DAI","USDC"]},bbausd1:{id:"0x13acd41c585d7ebb4a9460f7c8f50be60dc080cd00000000000000000000005f",address:"0x13acd41c585d7ebb4a9460f7c8f50be60dc080cd",gauge:"0xa2d0ea81a47d68598922cd54c59249ff58c2a3ff",assetOrder:["bb-a-USDC","bb-a-DAI","bb-a-USDT"]},bbausd2:{id:"0x13acd41c585d7ebb4a9460f7c8f50be60dc080cd00000000000000000000005f",address:"0x13acd41c585d7ebb4a9460f7c8f50be60dc080cd",gauge:"0xa2d0ea81a47d68598922cd54c59249ff58c2a3ff"},linearUsdc1:{id:"0x0595d1df64279ddb51f1bdc405fe2d0b4cc8668100000000000000000000005c",address:"0x0595d1df64279ddb51f1bdc405fe2d0b4cc86681"},linearDai1:{id:"0x5cea6a84ed13590ed14903925fa1a73c36297d9900000000000000000000005d",address:"0x5cea6a84ed13590ed14903925fa1a73c36297d99"},linearUsdt1:{id:"0xefd681a82970ac5d980b9b2d40499735e7bf3f1f00000000000000000000005e",address:"0xefd681a82970ac5d980b9b2d40499735e7bf3f1f"},linearUsdc2:{id:"0x0595d1df64279ddb51f1bdc405fe2d0b4cc8668100000000000000000000005c",address:"0x0595d1df64279ddb51f1bdc405fe2d0b4cc86681"},linearDai2:{id:"0x5cea6a84ed13590ed14903925fa1a73c36297d9900000000000000000000005d",address:"0x5cea6a84ed13590ed14903925fa1a73c36297d99"},linearUsdt2:{id:"0xefd681a82970ac5d980b9b2d40499735e7bf3f1f00000000000000000000005e",address:"0xefd681a82970ac5d980b9b2d40499735e7bf3f1f"},maiusd:{id:"0x6a8f9ab364b85725973d2a33cb9aae2dac43b5e30000000000000000000000a6",address:"0x6a8f9ab364b85725973d2a33cb9aae2dac43b5e3",gauge:"0x58141bdcecb7fbae006964f4131cf6f65c948357",assetOrder:["USDT","miMATIC","DAI","USDC"]},maibbausd:{id:"0xb04b03b78cf79788a1931545bd2744161029648f0000000000000000000000a8",address:"0xb04b03b78cf79788a1931545bd2744161029648f",gauge:"0xdc3f6fc8898830e53c777543fe252b14f22680d4",assetOrder:["bb-a-USD","miMATIC","MAI BSP"]},USDT:"0x1f1f156e0317167c11aa412e3d1435ea29dc3cce",DAI:"0x8c9e6c40d3402480ace624730524facc5482798c",USDC:"0xe0c9275e44ea80ef17579d33c55136b7da269aeb",waDAI:"0x89534a24450081aa267c79b07411e9617d984052",waUSDC:"0x811151066392fd641fe74a9b55a712670572d161",waUSDT:"0x4cb1892fddf14f772b2e39e299f44b2e5da90d04",miMATIC:"0x398106564948feeb1fedea0709ae7d969d62a391"},137:{relayer:"0xcf6a66E32dCa0e26AcC3426b851FD8aCbF12Dac7",staBal3:{id:"",address:"",gauge:"",assetOrder:["USDT","DAI","USDC"]},bbausd1:{id:"",address:"",gauge:"",assetOrder:["bb-a-USDC","bb-a-DAI","bb-a-USDT"]},bbausd2:{id:"0x48e6b98ef6329f8f0a30ebb8c7c960330d64808500000000000000000000075b",address:"0x48e6b98ef6329f8f0a30ebb8c7c960330d648085",gauge:""},linearUsdc1:{id:"",address:""},linearDai1:{id:"",address:""},linearUsdt1:{id:"",address:""},linearUsdc2:{id:"0xf93579002dbe8046c43fefe86ec78b1112247bb8000000000000000000000759",address:"0xf93579002dbe8046c43fefe86ec78b1112247bb8"},linearDai2:{id:"0x178e029173417b1f9c8bc16dcec6f697bc323746000000000000000000000758",address:"0x178e029173417b1f9c8bc16dcec6f697bc323746"},linearUsdt2:{id:"0xff4ce5aaab5a627bf82f4a571ab1ce94aa365ea600000000000000000000075a",address:"0xff4ce5aaab5a627bf82f4a571ab1ce94aa365ea6"},maiusd:{id:"0x06df3b2bbb68adc8b0e302443692037ed9f91b42000000000000000000000012",address:"0x06df3b2bbb68adc8b0e302443692037ed9f91b42",gauge:"0x72843281394e68de5d55bcf7072bb9b2ebc24150",assetOrder:["USDC","DAI","miMATIC","USDT"]},maibbausd:{id:"0xb54b2125b711cd183edd3dd09433439d5396165200000000000000000000075e",address:"0xb54b2125b711cd183edd3dd09433439d53961652",gauge:"0x9a105ef22a59484aa2731c357049f6a13d0891f5",assetOrder:["bb-a-USD","miMATIC"]},USDT:"0xc2132d05d31c914a87c6611c10748aeb04b58e8f",DAI:"0x8f3cf7ad23cd3cadbd9735aff958023239c6a063",USDC:"0x2791bca1f2de4661ed88a30c99a7a9449aa84174",waDAI:"0xEE029120c72b0607344f35B17cdD90025e647B00",waUSDC:"0x221836a597948Dce8F3568E044fF123108aCc42A",waUSDT:"0x19C60a251e525fa88Cd6f3768416a8024e98fC19",miMATIC:"0xa3fa99a148fa48d14ed51d610c367c61876997f1"}},oi=new t(ai),di=js.toChainedReference("21"),ci=js.toChainedReference("22"),li=js.toChainedReference("23"),pi=js.toChainedReference("24");class ui{constructor(e){this.addresses=ri[e]}calldata(e,t,a,n,s){if(d.from(t).lte(0))throw new $t(Gt.INPUT_ZERO_NOT_ALLOWED);const i=this.addresses.relayer;let r=[];s&&(r=[this.buildSetRelayerApproval(s)]),r=n?[...r,this.buildWithdraw(e,t),this.buildExit(i,t),this.buildSwap(a,i),this.buildDeposit(e)]:[...r,this.buildExit(e,t),this.buildSwap(a,e)];return{to:i,data:oi.encodeFunctionData("multicall",[r])}}buildExit(e,t){const{assetOrder:a}=this.addresses.staBal3,n=a.map((e=>this.addresses[e])),s=Z.exitExactBPTInForTokensOut(t),i=[{index:a.indexOf("DAI"),key:di},{index:a.indexOf("USDC"),key:ci},{index:a.indexOf("USDT"),key:li}];return js.constructExitCall({assets:n,minAmountsOut:["0","0","0"],userData:s,toInternalBalance:!0,poolId:this.addresses.staBal3.id,poolKind:0,sender:e,recipient:this.addresses.relayer,outputReferences:i,exitPoolRequest:{}})}buildSwap(e,t){const a=[this.addresses.bbausd2.address,this.addresses.DAI,this.addresses.linearDai2.address,this.addresses.USDC,this.addresses.linearUsdc2.address,this.addresses.USDT,this.addresses.linearUsdt2.address],n=[{index:0,key:pi}],s=[{poolId:this.addresses.linearDai2.id,assetInIndex:1,assetOutIndex:2,amount:di.toString(),userData:"0x"},{poolId:this.addresses.bbausd2.id,assetInIndex:2,assetOutIndex:0,amount:"0",userData:"0x"},{poolId:this.addresses.linearUsdc2.id,assetInIndex:3,assetOutIndex:4,amount:ci.toString(),userData:"0x"},{poolId:this.addresses.bbausd2.id,assetInIndex:4,assetOutIndex:0,amount:"0",userData:"0x"},{poolId:this.addresses.linearUsdt2.id,assetInIndex:5,assetOutIndex:6,amount:li.toString(),userData:"0x"},{poolId:this.addresses.bbausd2.id,assetInIndex:6,assetOutIndex:0,amount:"0",userData:"0x"}],i=[d.from(e).mul(-1).toString(),o.toString(),"0",o.toString(),"0",o.toString(),"0"],r={sender:this.addresses.relayer,recipient:t,fromInternalBalance:!0,toInternalBalance:!1};return js.encodeBatchSwap({swapType:kt.SwapExactIn,swaps:s,assets:a,funds:r,limits:i,deadline:d.from(Math.ceil(Date.now()/1e3)+3600),value:"0",outputReferences:n})}buildWithdraw(e,t){return js.encodeGaugeWithdraw(this.addresses.staBal3.gauge,e,this.addresses.relayer,t)}buildDeposit(e){return js.encodeGaugeDeposit(this.addresses.bbausd2.gauge,this.addresses.relayer,e,pi.toString())}buildSetRelayerApproval(e){return js.encodeSetRelayerApproval(this.addresses.relayer,!0,e)}}const yi=new t(ai),bi=js.toChainedReference("24");class fi{constructor(e){this.addresses=ri[e]}calldata(e,t,a,n,s,i){if(d.from(t).lte(0))throw new $t(Gt.INPUT_ZERO_NOT_ALLOWED);const r=this.addresses.relayer;let o=[];i&&(o=[this.buildSetRelayerApproval(i)]),o=n?[...o,this.buildWithdraw(e,t),this.buildSwap(t,a,r,r,s),this.buildDeposit(e)]:[...o,this.buildSwap(t,a,e,e,s)];const c=yi.encodeFunctionData("multicall",[o]);return{to:this.addresses.relayer,data:c}}buildSwap(e,t,a,n,i){const r=[this.addresses.bbausd2.address,this.addresses.waDAI,this.addresses.linearDai1.address,this.addresses.linearDai2.address,this.addresses.waUSDC,this.addresses.linearUsdc1.address,this.addresses.linearUsdc2.address,this.addresses.waUSDT,this.addresses.linearUsdt1.address,this.addresses.linearUsdt2.address,this.addresses.bbausd1.address],o=[{index:0,key:bi}],c=i.reduce(((e,t)=>e.add(d.from(t))),s),{assetOrder:l}=this.addresses.bbausd1,p=d.from(e).mul(i[l.indexOf("bb-a-USDC")]).div(c).toString(),u=d.from(e).mul(i[l.indexOf("bb-a-DAI")]).div(c).toString(),y=d.from(e).sub(p).sub(u).toString(),b=[{poolId:this.addresses.bbausd1.id,assetInIndex:10,assetOutIndex:2,amount:u,userData:"0x"},{poolId:this.addresses.linearDai1.id,assetInIndex:2,assetOutIndex:1,amount:"0",userData:"0x"},{poolId:this.addresses.linearDai2.id,assetInIndex:1,assetOutIndex:3,amount:"0",userData:"0x"},{poolId:this.addresses.bbausd2.id,assetInIndex:3,assetOutIndex:0,amount:"0",userData:"0x"},{poolId:this.addresses.bbausd1.id,assetInIndex:10,assetOutIndex:5,amount:p,userData:"0x"},{poolId:this.addresses.linearUsdc1.id,assetInIndex:5,assetOutIndex:4,amount:"0",userData:"0x"},{poolId:this.addresses.linearUsdc2.id,assetInIndex:4,assetOutIndex:6,amount:"0",userData:"0x"},{poolId:this.addresses.bbausd2.id,assetInIndex:6,assetOutIndex:0,amount:"0",userData:"0x"},{poolId:this.addresses.bbausd1.id,assetInIndex:10,assetOutIndex:8,amount:y,userData:"0x"},{poolId:this.addresses.linearUsdt1.id,assetInIndex:8,assetOutIndex:7,amount:"0",userData:"0x"},{poolId:this.addresses.linearUsdt2.id,assetInIndex:7,assetOutIndex:9,amount:"0",userData:"0x"},{poolId:this.addresses.bbausd2.id,assetInIndex:9,assetOutIndex:0,amount:"0",userData:"0x"}],f=[d.from(t).mul(-1).toString(),"0","0","0","0","0","0","0","0","0",e],m={sender:a,recipient:n,fromInternalBalance:!1,toInternalBalance:!1};return js.encodeBatchSwap({swapType:kt.SwapExactIn,swaps:b,assets:r,funds:m,limits:f,deadline:d.from(Math.ceil(Date.now()/1e3)+3600),value:"0",outputReferences:o})}buildWithdraw(e,t){return js.encodeGaugeWithdraw(this.addresses.bbausd1.gauge,e,this.addresses.relayer,t)}buildDeposit(e){return js.encodeGaugeDeposit(this.addresses.bbausd2.gauge,this.addresses.relayer,e,bi.toString())}buildSetRelayerApproval(e){return js.encodeSetRelayerApproval(this.addresses.relayer,!0,e)}}const mi=new t(ai),hi=js.toChainedReference("0"),Ti=[];class gi{constructor(e){this.addresses=ri[e]}calldata(e,t,a,n,s,i,r,o){if(i&&(null==t.gauge||null==a.gauge))throw new Error("Staked flow migration requires gauge addresses to be provided");const d=this.addresses.relayer;let c=[];o&&(c=[this.buildSetRelayerApproval(o)]),c=i?[...c,this.buildWithdraw(e,n,t.gauge),this.buildExit(t.id,d,n,r),this.buildSwap(s,d,a.id,a.address,r),this.buildDeposit(e,a.gauge)]:[...c,this.buildExit(t.id,e,n,r),this.buildSwap(s,e,a.id,a.address,r)];const l=mi.encodeFunctionData("multicall",[c]);return{to:this.addresses.relayer,data:l}}buildExit(e,t,a,n){const s=Z.exitExactBPTInForTokensOut(a),i=[];for(let e=0;e<n.length;e++)i[e]={index:e,key:js.toChainedReference(`${e+1}`)},Ti.push(i[e].key);const r=Array(n.length).fill("0");return js.constructExitCall({assets:n,minAmountsOut:r,userData:s,toInternalBalance:!0,poolId:e,poolKind:0,sender:t,recipient:this.addresses.relayer,outputReferences:i,exitPoolRequest:{}})}buildSwap(e,t,a,n,s){const i=[n,...s],r=[{index:0,key:hi}],c=[];for(let e=0;e<s.length;e++)c.push({poolId:a,assetInIndex:e+1,assetOutIndex:0,amount:Ti[e].toString(),userData:"0x"});const l=[d.from(e).mul(-1).toString()];for(let e=0;e<s.length;e++)l.push(o.toString());const p={sender:this.addresses.relayer,recipient:t,fromInternalBalance:!0,toInternalBalance:!1};return js.encodeBatchSwap({swapType:kt.SwapExactIn,swaps:c,assets:i,funds:p,limits:l,deadline:d.from(Math.ceil(Date.now()/1e3)+3600),value:"0",outputReferences:r})}buildWithdraw(e,t,a){return js.encodeGaugeWithdraw(a,e,this.addresses.relayer,t)}buildDeposit(e,t){return js.encodeGaugeDeposit(t,this.addresses.relayer,e,hi.toString())}buildSetRelayerApproval(e){return js.encodeSetRelayerApproval(this.addresses.relayer,!0,e)}}const Ii=new t(ai),wi=js.toChainedReference("20"),Ei=js.toChainedReference("21"),xi=js.toChainedReference("22"),Ai=js.toChainedReference("23"),Si=js.toChainedReference("24");class Pi{constructor(e){this.addresses=ri[e]}calldata(e,t,a,n,s){if(d.from(t).lte(0))throw new $t(Gt.INPUT_ZERO_NOT_ALLOWED);const i=this.addresses.relayer;let r=[];s&&(r=[this.buildSetRelayerApproval(s)]),r=n?[...r,this.buildWithdraw(e,t),this.buildExit(i,t),this.buildSwap(i,a),this.buildDeposit(e)]:[...r,this.buildExit(e,t),this.buildSwap(e,a)];return{to:i,data:Ii.encodeFunctionData("multicall",[r])}}buildExit(e,t){const{assetOrder:a}=this.addresses.maiusd,n=a.map((e=>this.addresses[e])),s=Z.exitExactBPTInForTokensOut(t),i=[{index:a.indexOf("miMATIC"),key:wi},{index:a.indexOf("DAI"),key:Ei},{index:a.indexOf("USDC"),key:xi},{index:a.indexOf("USDT"),key:Ai}],r=Array(n.length).fill("0");return js.constructExitCall({assets:n,minAmountsOut:r,userData:s,toInternalBalance:!0,poolId:this.addresses.maiusd.id,poolKind:0,sender:e,recipient:this.addresses.relayer,outputReferences:i,exitPoolRequest:{}})}buildSwap(e,t){const a=[this.addresses.bbausd2.address,this.addresses.DAI,this.addresses.linearDai2.address,this.addresses.USDC,this.addresses.linearUsdc2.address,this.addresses.USDT,this.addresses.linearUsdt2.address,this.addresses.miMATIC,this.addresses.maibbausd.address],n=[{index:8,key:Si}],s=[{poolId:this.addresses.linearDai2.id,assetInIndex:1,assetOutIndex:2,amount:Ei.toString(),userData:"0x"},{poolId:this.addresses.bbausd2.id,assetInIndex:2,assetOutIndex:0,amount:"0",userData:"0x"},{poolId:this.addresses.maibbausd.id,assetInIndex:0,assetOutIndex:8,amount:"0",userData:"0x"},{poolId:this.addresses.linearUsdc2.id,assetInIndex:3,assetOutIndex:4,amount:xi.toString(),userData:"0x"},{poolId:this.addresses.bbausd2.id,assetInIndex:4,assetOutIndex:0,amount:"0",userData:"0x"},{poolId:this.addresses.maibbausd.id,assetInIndex:0,assetOutIndex:8,amount:"0",userData:"0x"},{poolId:this.addresses.linearUsdt2.id,assetInIndex:5,assetOutIndex:6,amount:Ai.toString(),userData:"0x"},{poolId:this.addresses.bbausd2.id,assetInIndex:6,assetOutIndex:0,amount:"0",userData:"0x"},{poolId:this.addresses.maibbausd.id,assetInIndex:0,assetOutIndex:8,amount:"0",userData:"0x"},{poolId:this.addresses.maibbausd.id,assetInIndex:7,assetOutIndex:8,amount:wi.toString(),userData:"0x"}],i=["0",o.toString(),"0",o.toString(),"0",o.toString(),"0",o.toString(),d.from(t).mul(-1).toString()],r={sender:this.addresses.relayer,recipient:e,fromInternalBalance:!0,toInternalBalance:!1};return js.encodeBatchSwap({swapType:kt.SwapExactIn,swaps:s,assets:a,funds:r,limits:i,deadline:d.from(Math.ceil(Date.now()/1e3)+3600),value:"0",outputReferences:n})}buildWithdraw(e,t){return js.encodeGaugeWithdraw(this.addresses.maiusd.gauge,e,this.addresses.relayer,t)}buildDeposit(e){return js.encodeGaugeDeposit(this.addresses.maibbausd.gauge,this.addresses.relayer,e,Si.toString())}buildSetRelayerApproval(e){return js.encodeSetRelayerApproval(this.addresses.relayer,!0,e)}}class _i{constructor(e){this.network=e}stabal3(t,a,n,s,i){const r=new ui(this.network).calldata(t,a,n,s,i);return{to:r.to,data:r.data,decode:(t,a)=>{let n=a?2:1;i&&(n+=1);const s=e.decode(["bytes[]"],t);return e.decode(["int256[]"],s[0][n])[0][0].abs().toString()}}}bbaUsd(t,a,n,s,i,r){const o=new fi(this.network).calldata(t,a,n,s,i,r);return{to:o.to,data:o.data,decode:(t,a)=>{let n=a?1:0;r&&(n+=1);const s=e.decode(["bytes[]"],t);return e.decode(["int256[]"],s[0][n])[0][0].abs().toString()}}}stables(t,a,n,s,i,r,o,d){const c=new gi(this.network).calldata(t,a,n,s,i,r,o,d);return{to:c.to,data:c.data,decode:(t,a)=>{let n=a?2:1;d&&(n+=1);const s=e.decode(["bytes[]"],t);return e.decode(["int256[]"],s[0][n])[0][0].abs().toString()}}}maiusd(t,a,n,s,i){const r=new Pi(this.network).calldata(t,a,n,s,i);return{to:r.to,data:r.data,decode:(t,a)=>{let n=a?2:1;i&&(n+=1);const s=e.decode(["bytes[]"],t);return e.decode(["int256[]"],s[0][n])[0][8].abs().toString()}}}}class vi{constructor(e){this.network=e,this.migrations=new _i(e)}}class Oi{constructor(e,t){this.tokenPrices=e,this.tokenHistoricalPrices=t}async calcImpLoss(e,t){if(1e3*e>=Date.now())throw console.error(`[ImpermanentLossService][calcImpLoss]Error: ${$t.getMessage(Gt.TIMESTAMP_IN_THE_FUTURE)}`),new $t(Gt.TIMESTAMP_IN_THE_FUTURE);const a=await this.prepareData(e,t),n=this.getPoolValueDelta(a),s=this.getHoldValueDelta(a);return this.calculateImpermanentLoss(n,s)}calculateImpermanentLoss(e,t){return Math.floor(100*Math.abs(e/t-1)*100)/100}getPoolValueDelta(e){return e.reduce(((e,t)=>e*Math.pow(Math.abs(t.priceDelta+1),t.weight)),1)}getHoldValueDelta(e){return e.reduce(((e,t)=>e+Math.abs(t.priceDelta+1)*t.weight),0)}async prepareData(e,t){const a=t.tokens.filter((e=>e.address!==t.address)),n=this.getWeights(a),s=a.map((e=>e.address)),i=await this.getEntryPrices(e,s),r=await this.getExitPrices(a);return this.getAssets(a,r,i,n)}getAssets(e,t,a,n){return e.map(((e,s)=>({priceDelta:this.getDelta(a[e.address],t[e.address]),weight:n[s]})))}getDelta(e,t){if(0===e)throw console.error(`[ImpermanentLossService][getDelta]Error: ${$t.getMessage(Gt.ILLEGAL_PARAMETER)}: entry price is 0`),new $t(Gt.ILLEGAL_PARAMETER);return(t-e)/e}getWeights(e){const t=e.every((e=>!e.weight)),a=Math.round(1/e.length*100)/100,n=t?e.map((()=>a)):e.map((e=>{var t;return Number(null!==(t=e.weight)&&void 0!==t?t:0)}));if(n.some((e=>0===e)))throw console.error(`[ImpermanentLossService][getWeights]Error: ${$t.getMessage(Gt.MISSING_WEIGHT)}`),new $t(Gt.MISSING_WEIGHT);return n}async getExitPrices(e){var t;const a=await Promise.all(e.map((e=>this.tokenPrices.find(e.address)))).catch((()=>[]));if(!a.length||a.some((e=>void 0===(null==e?void 0:e.usd))))throw console.error(`[ImpermanentLossService][getExitPrices]Error: ${$t.getMessage(Gt.MISSING_PRICE_RATE)}`),new $t(Gt.MISSING_PRICE_RATE);const n=e.map(((e,t)=>({...e,price:a[t]}))),s={};for(const e of n)(null===(t=e.price)||void 0===t?void 0:t.usd)&&(s[e.address]=+e.price.usd);return s}async getEntryPrices(e,t){const a={};for(const n of t){const t=await this.tokenHistoricalPrices.findBy(n,e).catch((e=>{console.error(`[ImpermanentLossService][getEntryPrices]Error: ${e.message}`)}));if(!(null==t?void 0:t.usd))throw console.error(`[ImpermanentLossService][getEntryPrices]Error: ${$t.getMessage(Gt.MISSING_PRICE_RATE)}`),new $t(Gt.MISSING_PRICE_RATE);a[n]=+t.usd}return a}}const Bi=335e3,ki=1765411200,Di=(e=Math.round((new Date).getTime()/1e3))=>Bi;var Ni=Object.freeze({__proto__:null,INITIAL_RATE:Bi,START_EPOCH_TIME:ki,weekly:Di,total:e=>365*(Di()/7),between:(e,t)=>{if(e<ki)throw"start timestamp before emission schedule deployment";if(t<e)throw"cannot finish before starting";const a=t-e,n=Di()/7;return Math.round(a/86400)*n}});class Ci{constructor(e,t){this.repository=e,this.tokenPrices=t}async data(e=Date.now()){const t=await this.repository.multicallData(e),a=await this.tokenPrices.find(t.balAddress);if(!a||!a.usd)throw"No BAL USD price found";return{lastWeekBalRevenue:t.balAmount*parseFloat(a.usd),lastWeekBBAUsdRevenue:t.bbAUsdAmount*t.bbAUsdPrice,veBalSupply:t.veBalSupply}}}class Fi{constructor(e){this.yesterdaysPools=e}async last24h(e){let t;return this.yesterdaysPools&&(t=await this.yesterdaysPools.find(e.id)),e.totalSwapFee?(null==t?void 0:t.totalSwapFee)?parseFloat(e.totalSwapFee)-parseFloat(t.totalSwapFee):e.createTime&&Js(e.createTime)?parseFloat(e.totalSwapFee):0:0}}class Ri{constructor(e,t,a,n,s,i,r,o){this.pools=e,this.tokenPrices=t,this.tokenMeta=a,this.tokenYields=n,this.feeCollector=s,this.yesterdaysPools=i,this.liquidityGauges=r,this.feeDistributor=o}async swapFees(e){const t=await this.last24hFees(e),a=await this.totalLiquidity(e);if(!t||!a)return 0;const n=t*(1-await this.protocolSwapFeePercentage(e))/parseFloat(a)*1e4;return Math.round(365*n)}async tokenAprs(e){return{total:0,breakdown:{}}}async stakingApr(e,t=1){if(!this.liquidityGauges)return 0;const a=await this.liquidityGauges.findBy("poolId",e.id);if(!a||(248==e.chainId||9372==e.chainId||6343==e.chainId||4326==e.chainId)&&0==a.workingSupply||248!=e.chainId&&9372!=e.chainId&&6343!=e.chainId&&4326!=e.chainId&&0==a.totalSupply)return 0;const n=Lt[e.chainId].addresses.tokens.bal;if(!n)return 0;const[s,i]=await Promise.all([this.tokenPrices.find(n),this.bptPrice(e)]);if(!(null==s?void 0:s.usd))throw"Missing BAL price";const r=parseFloat(s.usd),o=Di()/7*365*a.relativeWeight*r,d=(a.workingSupply+.4)/.4*i;return Math.round(1e4*t*o/d)}async stakingAprNextPeriod(e,t=1){if(!this.liquidityGauges)return 0;const a=await this.liquidityGauges.findBy("poolId",e.id);if(!a)return 0;if(0==a.workingSupply)return a.relativeWeightNextPeriod&&a.relativeWeightNextPeriod>0?-1:0;const n=Lt[e.chainId].addresses.tokens.bal;if(!n)return 0;const[s,i]=await Promise.all([this.tokenPrices.find(n),this.bptPrice(e)]);if(!(null==s?void 0:s.usd))throw"Missing BAL price";const r=parseFloat(s.usd),o=Di()/7*365*(a.relativeWeightNextPeriod||0)*r,d=(a.workingSupply+.4)/.4*i;return Math.round(1e4*t*o/d)}async rewardAprs(e){if(!this.liquidityGauges)return{total:0,breakdown:{}};const t=await this.liquidityGauges.findBy("poolId",e.id);if(!t)return{total:0,breakdown:{}};if(!t.rewardTokens)return{total:0,breakdown:{}};if(Object.keys(t.rewardTokens).length<1)return{total:0,breakdown:{}};const a=Lt[e.chainId].addresses.tokens.bal,n=Object.keys(t.rewardTokens).filter((e=>e!=a)).map((async e=>{const a=t.rewardTokens[e];return this.rewardTokenApr(e,a)})),s=await this.bptPrice(e),i=t.totalSupply*s,r={};let o=0;for await(const e of Object.values(n)){const t=i>0?e.value/i:0,a=Math.round(1e4*t);o+=a,r[e.address]=a}return{total:o,breakdown:r}}async protocolApr(e){if(""!=e.id||!this.feeDistributor)return 0;const t=new Ci(this.feeDistributor,this.tokenPrices),{lastWeekBalRevenue:a,lastWeekBBAUsdRevenue:n,veBalSupply:s}=await t.data(),i=await this.bptPrice(e);if(!i)throw"bptPrice for veBal pool missing";const r=(a+n)/7;return Math.round(365*r*1e4/(i*s))}async apr(e){const[t,a,n,s,i,r]=await Promise.all([this.swapFees(e),this.tokenAprs(e),this.stakingApr(e),this.stakingApr(e,2.5),this.rewardAprs(e),this.protocolApr(e)]);return{swapFees:t,tokenAprs:a,stakingApr:{min:n,max:s},rewardAprs:i,protocolApr:r,min:t+a.total+i.total+n,max:t+a.total+i.total+r+s}}async aprNextPeriod(e){const[t,a,n,s,i,r]=await Promise.all([this.swapFees(e),this.tokenAprs(e),this.stakingAprNextPeriod(e),this.stakingAprNextPeriod(e,2.5),this.rewardAprs(e),this.protocolApr(e)]);return{swapFees:t,tokenAprs:a,stakingApr:{min:n,max:s},rewardAprs:i,protocolApr:r,min:t+a.total+i.total+n,max:t+a.total+i.total+r+s}}async last24hFees(e){return new Fi(this.yesterdaysPools).last24h(e)}async totalLiquidity(e){try{const t=new Pa(this.pools,this.tokenPrices);return await t.getLiquidity(e)}catch(t){return console.error("Liquidity calculcation failed, falling back to subgraph"),e.totalLiquidity}}async bptPrice(e){const t=await this.totalLiquidity(e),a=e.totalShares;return parseFloat(t)/parseFloat(a)}async protocolSwapFeePercentage(e){let t=0;return t="ComposableStable"==e.poolType||"Weighted"==e.poolType&&2==e.poolTypeVersion?0:e.protocolSwapFeeCache?parseFloat(e.protocolSwapFeeCache):await this.feeCollector.find("")||0,t}async rewardTokenApr(e,t){if(t.period_finish.toNumber()<Date.now()/1e3)return{address:e,value:0};{const a=t.rate.mul(86400).mul(365),n=await this.tokenPrices.find(e);if(n&&n.usd){let s=18;if(t.decimals)s=t.decimals;else{const t=await this.tokenMeta.find(e);t&&void 0!==t.decimals&&(s=t.decimals)}return{address:e,value:parseFloat(rt(a,s))*parseFloat(n.usd)}}throw`No USD price for ${e}`}}}const Mi=new Map;Mi.set(Xe.AaveLinear,"batchSwap"),Mi.set(Xe.EulerLinear,"batchSwap"),Mi.set(Xe.ERC4626Linear,"batchSwap"),Mi.set(Xe.Element,"batchSwap"),Mi.set(Xe.Investment,"joinPool"),Mi.set(Xe.LiquidityBootstrapping,"joinPool"),Mi.set(Xe.MetaStable,"joinPool"),Mi.set(Xe.Stable,"joinPool"),Mi.set(Xe.StablePhantom,"batchSwap"),Mi.set(Xe.Weighted,"joinPool"),Mi.set(Xe.ComposableStable,"joinPool");const Li=new Map;Li.set(Xe.AaveLinear,"batchSwap"),Mi.set(Xe.EulerLinear,"batchSwap"),Li.set(Xe.ERC4626Linear,"batchSwap"),Li.set(Xe.Element,"batchSwap"),Li.set(Xe.Investment,"exitPool"),Li.set(Xe.LiquidityBootstrapping,"exitPool"),Li.set(Xe.MetaStable,"exitPool"),Li.set(Xe.Stable,"exitPool"),Li.set(Xe.StablePhantom,"batchSwap"),Li.set(Xe.Weighted,"exitPool"),Li.set(Xe.ComposableStable,"exitPool");class Ui{constructor(e){this.pools=e}async buildGraphFromRootPool(e,t){const a=await this.pools.find(e);if(!a)throw new $t(Gt.POOL_DOESNT_EXIST);return(await this.buildGraphFromPool(a.address,0,void 0,n,t))[0]}getTokenTotal(e){const t=e.tokensList.indexOf(e.address);let a=s;const{parsedBalances:n}=Le(e);return n.forEach(((e,n)=>{t!==n&&(a=a.add(e))})),a}async buildGraphFromPool(e,t,a,n,s){var i;const r=await this.pools.findBy("address",e);if(!r){if(a){const s=await this.pools.findBy("address",a.address),r=null!==(i=s.tokens[s.tokensList.indexOf(e)].decimals)&&void 0!==i?i:18;return Ui.createInputTokenNode(t,e,r,a,n)}throw new $t(Gt.POOL_DOESNT_EXIST)}const o=Mi.get(r.poolType),l=Li.get(r.poolType);if(!o||!l)throw new $t(Gt.UNSUPPORTED_POOL_TYPE);const p=this.getTokenTotal(r),{spotPriceCalculator:u}=Sa.from(r.poolType),y={};let b=18;r.tokens.forEach((e=>{if(Pt(e.address,r.address))return void(b=e.decimals?e.decimals:18);const t=u.calcPoolSpotPrice(e.address,r.address,r);y[e.address]=t}));let f={address:r.address,id:r.id,type:r.poolType,joinAction:o,exitAction:l,children:[],marked:!1,index:t.toString(),parent:a,proportionOfParent:n,isLeaf:!1,spotPrices:y,decimals:b};if(t++,r.poolType.toString().includes("Linear"))[f,t]=this.createLinearNodeChildren(f,t,r,s);else{const{parsedBalances:e}=Le(r);for(let a=0;a<r.tokens.length;a++){if(Pt(r.tokens[a].address,r.address))continue;let i;if("Weighted"===r.poolType){const e=r.tokens[a].weight;i=c(e,18)}else i=d.from(e[a]).mul(1e18.toString()).div(p);const o=i.mul(n).div(1e18.toString()),l=await this.buildGraphFromPool(r.tokens[a].address,t,f,o,s);t=l[1],l[0]&&f.children.push(l[0])}}return[f,t]}createLinearNodeChildren(e,t,a,n){var s;if(n){const n=this.createWrappedTokenNode(a,t,e,e.proportionOfParent);return e.children.push(n[0]),[e,n[1]]}{if(void 0===a.mainIndex)throw new Error("Issue With Linear Pool");const n=null!==(s=a.tokens[a.mainIndex].decimals)&&void 0!==s?s:18,i=Ui.createInputTokenNode(t,a.tokensList[a.mainIndex],n,e,e.proportionOfParent);return e.children.push(i[0]),[e,t=i[1]]}}createWrappedTokenNode(e,t,a,n){var s;if(void 0===e.wrappedIndex||void 0===e.mainIndex)throw new Error("Issue With Linear Pool");let i="wrapAaveDynamicToken";if(e.poolType===Xe.ERC4626Linear)i="wrapERC4626";let r="unwrapAaveStaticToken";if(e.poolType===Xe.ERC4626Linear)r="unwrapERC4626";const o={type:"WrappedToken",address:e.tokensList[e.wrappedIndex],id:"N/A",children:[],marked:!1,joinAction:i,exitAction:r,index:t.toString(),parent:a,proportionOfParent:n,isLeaf:!1,spotPrices:{},decimals:18};t++;const d=null!==(s=e.tokens[e.mainIndex].decimals)&&void 0!==s?s:18,c=Ui.createInputTokenNode(t,e.tokensList[e.mainIndex],d,o,n);return o.children=[c[0]],[o,t=c[1]]}static createInputTokenNode(e,t,a,n,s){return[{address:t,id:"N/A",type:"Input",children:[],marked:!1,joinAction:"input",exitAction:"output",index:e.toString(),parent:n,proportionOfParent:s,isLeaf:!0,spotPrices:{},decimals:a},e+1]}static orderByBfs(e){const t=[],a=[];for(e.marked=!0,t.push(e);t.length>0;){const e=t.shift();e&&a.push(e),null==e||e.children.forEach((e=>{e.marked||(e.marked=!0,t.push(e))}))}return a}static getLeafAddresses(e){return e.filter((e=>e.isLeaf)).map((e=>e.address))}}Ui.getGraphNodes=async(e,t,a,n)=>{if(!await a.find(t))throw new $t(Gt.POOL_DOESNT_EXIST);const s=new Ui(a),i=await s.buildGraphFromRootPool(t,n);if(i.id!==t)throw new Error("Error creating graph nodes");return e?Ui.orderByBfs(i).reverse():Ui.orderByBfs(i)};class Gi{constructor(e,t){this.chainId=e,this.simulateMulticall=async(e,t,a,n)=>{const s={...await this.encodeBalanceAndAllowanceOverrides(a,n),...await this.encodeRelayerApprovalOverride(a,e)};return this.simulateTransaction(e,t,a,s)},this.simulateTransaction=async(e,t,a,n)=>{const s=Object.fromEntries(Object.keys(n).map((e=>[e,{storage:n[e].value}]))),i={network_id:this.chainId.toString(),block_number:this.blockNumber,from:a,to:e,input:t,save_if_fails:!0,simulation_type:"quick",state_objects:s},r=this.tenderlyUrl+"simulate";return(await h.post(r,i,this.opts)).data.transaction.transaction_info.call_trace.output},this.encodeRelayerApprovalOverride=async(e,t)=>{const a={[`${this.vaultAddress}`]:{value:{[`_approvedRelayers[${e}][${t}]`]:(!0).toString()}}};return await this.requestStateOverrides(a)},this.encodeBalanceAndAllowanceOverrides=async(e,t)=>{if(0===t.length)return{};let a={};t.forEach((t=>a={...a,[`${t}`]:{value:{[`_balances[${e}]`]:o.toString(),[`_allowances[${e}][${this.vaultAddress}]`]:o.toString(),[`balanceOf[${e}]`]:o.toString(),[`allowance[${e}][${this.vaultAddress}]`]:o.toString(),[`balances[${e}]`]:o.toString(),[`allowed[${e}][${this.vaultAddress}]`]:o.toString()}}}));const n=await this.requestStateOverrides(a);if(Object.keys(n).some((e=>2!==Object.keys(n[e].value).length)))throw new Error("Couldn't encode state overrides - states should match the ones in the contracts");return n},this.requestStateOverrides=async e=>{const t=this.tenderlyUrl+"contracts/encode-states",a={networkID:this.chainId.toString(),stateOverrides:e},n=(await h.post(t,a,this.opts)).data.stateOverrides;if(!n||Object.keys(n).length!==Object.keys(e).length)throw new Error("Couldn't encode state overrides - contracts should be verified and whitelisted on Tenderly");return n};const{contracts:a}=Ut(this.chainId);this.vaultAddress=a.vault,(null==t?void 0:t.user)&&(null==t?void 0:t.project)?this.tenderlyUrl=`https://api.tenderly.co/api/v1/account/${t.user}/project/${t.project}/`:this.tenderlyUrl="https://api.balancer.fi/tenderly/",(null==t?void 0:t.accessKey)&&(this.opts={headers:{"X-Access-Key":t.accessKey}}),this.blockNumber=null==t?void 0:t.blockNumber}}var $i;const qi=new t(ti);class Wi{constructor(t,a){this.pools=t,this.createCalls=async(e,t,a,n)=>{const{calls:s,outputIndexes:i,deltas:r}=this.createActionCalls(e,t,a);n&&s.unshift(this.createSetRelayerApproval(n));return{callData:qi.encodeFunctionData("multicall",[s]),outputIndexes:n?i.map((e=>e+1)):i,deltas:r}},this.amountsOutByJoinPath=async(t,a,n,s)=>{const i=[],r=await this.tenderlyHelper.simulateMulticall(this.relayer,a,t,n),o=e.decode(["bytes[]"],r)[0];let c=d.from("0");return s.forEach((t=>{const a=e.decode(["uint256"],o[t]);i.push(a.toString()),c=c.add(a.toString())})),{amountsOut:i,totalAmountOut:c.toString()}},this.minAmountsOutByJoinPath=(e,t,a)=>({minAmountsOut:t.map((t=>Ft(d.from(t),d.from(e)).toString())),totalMinAmountOut:Ft(d.from(a),d.from(e)).toString()}),this.createActionCalls=(e,t,a)=>{const n=[],s=[],i=!a,r={};return e.forEach(((e,o)=>{const d=e[0].isLeaf;if(e.forEach(((s,i)=>{let c;if(c=d?e.filter((e=>{var t;return s.children.map((e=>e.address)).includes(e.address)&&s.index===(null===(t=e.parent)||void 0===t?void 0:t.index)})):i>0?[e[i-1]]:[],c.length>0&&0===c.filter((e=>"0"!==e.index)).length)return void(s.index="0");c.some((e=>"input"===e.joinAction||"wrapAaveDynamicToken"===e.joinAction));const l=t,p=i===e.length-1,u=t,y=p&&a?a[o]:"0";switch(s.joinAction){case"wrapAaveDynamicToken":n.push(this.createAaveWrap(s,c,o,l,t));break;case"batchSwap":{const[e,t,a]=this.createBatchSwap(s,c,o,y,l,u);n.push(e),this.updateDeltas(r,t,a);break}case"joinPool":{const[e,t,a,i]=this.createJoinPool(s,c,o,y,l,u);n.push(e),this.updateDeltas(r,[s.address,...t],[i,...a]);break}}})),i){const e=100*o,t=js.encodePeekChainedReferenceValue(js.toChainedReference(e,!1));n.push(t),s.push(n.indexOf(t))}})),{calls:n,outputIndexes:s,deltas:r}},this.createSetRelayerApproval=e=>js.encodeSetRelayerApproval(this.relayer,!0,e),this.createAaveWrap=(e,t,a,n,s)=>{if(1!==t.length)throw new Error("aaveWrap nodes should always have a single child node");const i=t[0],r=e.address,o=i.index;return js.encodeWrapAaveDynamicToken({staticToken:r,sender:n,recipient:s,amount:o,fromUnderlying:!0,outputReference:this.getOutputRefValue(a,e).value})},this.createBatchSwap=(e,t,a,n,s,i)=>{if(1!==t.length)throw new Error("Unsupported batchswap");const r=t[0].address,c=this.getOutputRefValue(a,t[0]),l=[e.address,r],p=[d.from(n).mul(-1).toString(),c.isRef?o.toString():c.value],u=[{poolId:e.id,assetInIndex:1,assetOutIndex:0,amount:c.value,userData:"0x"}],y={sender:s,recipient:i,fromInternalBalance:s===this.relayer,toInternalBalance:i===this.relayer},b=[{index:l.map((e=>e.toLowerCase())).indexOf(e.address.toLowerCase()),key:d.from(this.getOutputRefValue(a,e).value)}],f=js.encodeBatchSwap({swapType:kt.SwapExactIn,swaps:u,assets:l,funds:y,limits:p,deadline:d.from(Math.ceil(Date.now()/1e3)+3600),value:"0",outputReferences:b}),m=s===this.relayer?"0":p[1];return[f,l,[i===this.relayer?"0":p[0],m]]},this.createJoinPool=(e,t,a,n,r,o)=>{const d=[],c=[];e.children.forEach((e=>{d.push(e.address);const n=t.find((t=>Pt(t.address,e.address)));n?c.push(this.getOutputRefValue(a,n).value):c.push("0")})),e.type===Xe.ComposableStable&&(d.push(e.address),c.push("0"));const l=new we(this.wrappedNativeAsset),[p,u]=l.sortTokens(d,c);let y=[];const b=p.map((e=>e.toLowerCase())).indexOf(e.address.toLowerCase());let f;y=-1===b?u:[...u.slice(0,b),...u.slice(b+1)],f=e.type===Xe.Weighted?z.joinExactTokensInForBPTOut(y,n):Z.joinExactTokensInForBPTOut(y,n);const m=p.indexOf(i),h=-1===m?"0":u[m],T=js.constructJoinCall({poolId:e.id,kind:0,sender:r,recipient:o,value:h,outputReference:this.getOutputRefValue(a,e).value,joinPoolRequest:{},assets:p,maxAmountsIn:u,userData:f,fromInternalBalance:r===this.relayer}),g=u.map((e=>js.isChainedReference(e)?"0":e)),I=js.isChainedReference(n)?"0":n;return[T,r===this.relayer?[]:p,r===this.relayer?[]:g,o===this.relayer?s.toString():s.sub(I).toString()]},this.getOutputRefValue=(e,t)=>"input"===t.joinAction?{value:t.index,isRef:!1}:"0"===t.index&&t.parent?{value:"0",isRef:!0}:{value:js.toChainedReference(d.from(t.index).add(100*e)).toString(),isRef:!0};const{tokens:n,contracts:r}=Ut(a.chainId);this.relayer=r.relayerV4,this.wrappedNativeAsset=n.wrappedNativeAsset,this.tenderlyHelper=new Gi(a.chainId,a.tenderly)}async joinPool(e,t,a,n,s,i,r){if(t.length!=a.length)throw new $t(Gt.INPUT_LENGTH_MISMATCH);const o=await Ui.getGraphNodes(!0,e,this.pools,s),d=Wi.getJoinPaths(o,t,a),c=Wi.totalBptZeroPriceImpact(d),{callData:l,outputIndexes:p}=await this.createCalls(d,n,void 0,r),{amountsOut:u,totalAmountOut:y}=await this.amountsOutByJoinPath(n,l,t,p),{minAmountsOut:b,totalMinAmountOut:f}=this.minAmountsOutByJoinPath(i,u,y),m=jt(BigInt(y),c.toBigInt(),!0).toString(),{callData:h,deltas:T}=await this.createCalls(d,n,b,r);return this.assertDeltas(e,T,t,a,f),{to:this.relayer,callData:h,expectedOut:y,minOut:f,priceImpact:m}}assertDeltas(e,t,a,n,s){var i;const r=ce(e);if(t[r.toLowerCase()].add(s).abs().gt(3))throw console.error("join assertDeltas, bptOut: ",r,s,null===(i=t[r.toLowerCase()])||void 0===i?void 0:i.toString()),new $t(Gt.JOIN_DELTA_AMOUNTS);delete t[r.toLowerCase()],a.forEach(((e,a)=>{var s,i;if(!d.from(n[a]).eq(0)&&(null===(s=t[e.toLowerCase()])||void 0===s?void 0:s.toString())!==n[a])throw console.error("join assertDeltas, tokenIn: ",e,n[a],null===(i=t[e.toLowerCase()])||void 0===i?void 0:i.toString()),new $t(Gt.JOIN_DELTA_AMOUNTS);delete t[e.toLowerCase()]}));for(const e in t)if("0"!==t[e].toString())throw console.error("join assertDeltas, non-input token should be 0: ",e,t[e].toString()),new $t(Gt.JOIN_DELTA_AMOUNTS)}updateDeltas(e,t,a){return t.forEach(((t,n)=>{const i=t.toLowerCase();e[i]||(e[i]=s),e[i]=e[i].add(a[n])})),e}}$i=Wi,Wi.getJoinPaths=(e,t,a)=>{const s=[],i=e.filter((e=>t.filter(((e,t)=>d.from(a[t]).gt(0))).map((e=>e.toLowerCase())).includes(e.address.toLowerCase())));i.some((e=>e.isLeaf))&&s.push(e);const r=i.filter((e=>!e.isLeaf));return r.forEach((e=>{const i=a.find(((a,n)=>Pt(t[n],e.address))),o=r.filter((t=>Pt(t.address,e.address))).reduce(((e,t)=>e.add(t.proportionOfParent)),d.from(0)),c=d.from(i).mul(e.proportionOfParent).div(o).toString(),[l]=Ui.createInputTokenNode(0,e.address,e.decimals,e.parent,n);l.index=c,l.isLeaf=!1;const p=[l];let u=e.parent;for(;u;)p.push(g(u)),u=u.parent;s.push(p)})),$i.updateInputAmounts(s,t,a),s},Wi.updateInputAmounts=(e,t,a)=>{const n=(e,t)=>{if(e.length>1){const a=e.reduce(((e,t)=>e.add(t.index)),d.from(0)),n=d.from(t).sub(a);e[0].index=n.add(e[0].index).toString()}},s=e.find((e=>e[0].isLeaf));if(s){const e=$i.updateTotalProportions(s);s.forEach((n=>{"input"===n.joinAction&&(n=$i.updateNodeAmount(n,t,a,e))})),t.forEach(((e,t)=>{const i=s.filter((t=>t.isLeaf&&Pt(t.address,e)));n(i,a[t])}))}const i=e.filter((e=>!e[0].isLeaf));i.length>1&&t.forEach(((e,t)=>{const s=i.map((e=>e[0])).filter((t=>Pt(t.address,e)));n(s,a[t])}))},Wi.totalBptZeroPriceImpact=e=>{let t=d.from("0");return e.forEach((e=>{if(e[0].isLeaf){e.filter((e=>e.isLeaf)).forEach((e=>{const a=$i.bptOutZeroPiForInputNode(e);t=t.add(a)}))}else{const a=$i.bptOutZeroPiForInputNode(e[0]);t=t.add(a)}})),t},Wi.bptOutZeroPiForInputNode=e=>{if("0"===e.index||"input"!==e.joinAction)return BigInt(0);let t=1,a=e.parent,n=e.address;for(;void 0!==a;){if("batchSwap"===a.joinAction||"joinPool"===a.joinAction){const e=a.spotPrices[n.toLowerCase()];t*=parseFloat(e),n=a.address}a=a.parent}const s=c(t.toFixed(18),18),i=Ne(BigInt(e.decimals)),r=Ce(BigInt(e.index),i);return Re.divDownFixed(r,s.toBigInt())},Wi.updateTotalProportions=e=>{const t={};return e.forEach((e=>{t[e.address]?t[e.address]=t[e.address].add(e.proportionOfParent):t[e.address]=e.proportionOfParent})),t},Wi.updateNodeAmount=(e,t,a,n)=>{const s=t.map((e=>e.toLowerCase())).indexOf(e.address.toLowerCase());if(-1===s)return e.index="0",e;const i=n[e.address],r=e.proportionOfParent.mul(1e18.toString()).div(i).mul(a[s]).div(1e18.toString());return e.index=r.toString(),e};const Vi=new t(ti);class Hi{constructor(t,a){this.pools=t,this.amountsOutByExitPath=async(t,a,n,s,i)=>{const r=await this.tenderlyHelper.simulateMulticall(this.relayer,a,t,[n]),o=e.decode(["bytes[]"],r)[0],c=s.map((t=>e.decode(["uint256"],o[t]).toString())),l=c.map((e=>Ft(d.from(e),d.from(i)).toString()));return{expectedAmountsOutByExitPath:c,minAmountsOutByExitPath:l}},this.amountsOutByTokenOut=(e,t,a,n)=>{const i={};t.forEach(((e,t)=>{var n;return i[e]=(null!==(n=i[e])&&void 0!==n?n:s).add(a[t])}));const r=e.map((e=>i[e].toString())),o=r.map((e=>Ft(d.from(e),d.from(n)).toString()));return{expectedAmountsOut:r,minAmountsOut:o}},this.getExitPaths=(e,t)=>{const a=e.map((e=>{const a=[e];for(;a[0].parent;)a.unshift(g(a[0].parent));return a[0].index=a[a.length-1].proportionOfParent.mul(t).div(n).toString(),a})),i=a.reduce(((e,t)=>{const a=t[0].index;return d.from(a).add(e)}),s),r=d.from(t).sub(i);return a[a.length-1][0].index=r.add(a[a.length-1][0].index).toString(),a},this.getOutputRef=(e,t)=>100*e+parseInt(t);const{tokens:i,contracts:r}=Ut(a.chainId);this.wrappedNativeAsset=i.wrappedNativeAsset,this.relayer=r.relayerV4,this.tenderlyHelper=new Gi(a.chainId,a.tenderly)}async exitPool(e,t,a,n,s){const i=await Ui.getGraphNodes(!1,e,this.pools,!1),r=i.filter((e=>"output"===e.exitAction)),o=this.getExitPaths(r,t),d=r.map((e=>e.address.toLowerCase())),c=[...new Set(d)].sort(),l=await this.createCalls(o,a,void 0,s),{expectedAmountsOutByExitPath:p,minAmountsOutByExitPath:u}=await this.amountsOutByExitPath(a,l.callData,i[0].address,l.outputIndexes,n),{callData:y,deltas:b}=await this.createCalls(o,a,u,s),{expectedAmountsOut:f,minAmountsOut:m}=this.amountsOutByTokenOut(c,d,p,n);this.assertDeltas(e,b,t,c,m);const h=await this.calculatePriceImpact(e,c,f,t);return{to:this.relayer,callData:y,tokensOut:c,expectedAmountsOut:f,minAmountsOut:m,priceImpact:h}}async calculatePriceImpact(e,t,a,n){const s=await Ui.getGraphNodes(!0,e,this.pools,!1),i=Wi.getJoinPaths(s,t,a),r=Wi.totalBptZeroPriceImpact(i);return jt(BigInt(n),r.toBigInt(),!1).toString()}assertDeltas(e,t,a,n,s){var i;const r=ce(e);if(t[r.toLowerCase()].sub(a).abs().gt(3))throw console.error("exit assertDeltas, bptIn: ",r,a,null===(i=t[r.toLowerCase()])||void 0===i?void 0:i.toString()),new $t(Gt.EXIT_DELTA_AMOUNTS);delete t[r.toLowerCase()],n.forEach(((e,a)=>{var n;if(t[e.toLowerCase()].add(s[a]).abs().gt(1))throw console.error("exit assertDeltas, tokenOut: ",e,s[a],null===(n=t[e.toLowerCase()])||void 0===n?void 0:n.toString()),new $t(Gt.EXIT_DELTA_AMOUNTS);delete t[e.toLowerCase()]}));for(const e in t)if("0"!==t[e].toString())throw console.error("exit assertDeltas, non-input token should be 0: ",e,t[e].toString()),new $t(Gt.EXIT_DELTA_AMOUNTS)}async createCalls(e,t,a,n){const{calls:s,outputIndexes:i,deltas:r}=this.createActionCalls(g(e),t,a);n&&s.unshift(js.encodeSetRelayerApproval(this.relayer,!0,n));return{callData:Vi.encodeFunctionData("multicall",[s]),outputIndexes:n?i.map((e=>e+1)):i,deltas:r}}updateDeltas(e,t,a){return t.forEach(((t,n)=>{const i=t.toLowerCase();e[i]||(e[i]=s),e[i]=e[i].add(a[n])})),e}createActionCalls(e,t,a){const n=[],s=[],i=!a,r={};return e.forEach(((e,o)=>{e.forEach((d=>{const c=!d.parent?t:this.relayer,l=d.children.find((t=>e.map((e=>e.index)).includes(t.index))),p="output"===(null==l?void 0:l.exitAction),u=p?t:this.relayer,y=p&&a?a[o]:"0";switch(d.exitAction){case"batchSwap":{const[e,t,a]=this.createBatchSwap(d,l,o,y,c,u);n.push(e),this.updateDeltas(r,t,a);break}case"exitPool":{const[e,t,a,s]=this.createExitPool(d,l,o,y,c,u);n.push(e),this.updateDeltas(r,[d.address,...a],[t,...s]);break}case"output":i&&(n.push(js.encodePeekChainedReferenceValue(js.toChainedReference(this.getOutputRef(o,d.index),!1))),s.push(n.length-1));break;default:return}}))})),{calls:n,outputIndexes:s,deltas:r}}createBatchSwap(e,t,a,n,s,i){const r=!e.parent?e.index:js.toChainedReference(this.getOutputRef(a,e.index)).toString(),c=t.address,l=[c,e.address],p=[d.from(n).mul(-1).toString(),js.isChainedReference(r)?o.toString():r],u=[{poolId:e.id,assetInIndex:1,assetOutIndex:0,amount:r,userData:"0x"}],y={sender:s,recipient:i,fromInternalBalance:!1,toInternalBalance:!1},b=[{index:l.map((e=>e.toLowerCase())).indexOf(c.toLowerCase()),key:js.toChainedReference(this.getOutputRef(a,t.index))}],f=js.encodeBatchSwap({swapType:kt.SwapExactIn,swaps:u,assets:l,funds:y,limits:p,deadline:d.from(Math.ceil(Date.now()/1e3)+3600),value:"0",outputReferences:b});let m=p[0];const h=p[1],T=s===this.relayer?"0":h;return m=i===this.relayer?"0":m,[f,l,[m,T]]}createExitPool(e,t,a,n,i,r){const o=t.address,d=!e.parent?e.index:js.toChainedReference(this.getOutputRef(a,e.index)).toString(),c=[],l=[];e.children.forEach((e=>{c.push(e.address),l.push(e.address===o?n:"0")})),e.type===Xe.ComposableStable&&(c.push(e.address),l.push("0"));const p=new we(this.wrappedNativeAsset),[u,y]=p.sortTokens(c,l);let b=[];const f=u.map((e=>e.toLowerCase())).indexOf(e.address.toLowerCase());let m;b=-1===f?u:[...u.slice(0,f),...u.slice(f+1)],m=e.type===Xe.Weighted?z.exitExactBPTInForOneTokenOut(d,b.indexOf(o)):Z.exitExactBPTInForOneTokenOut(d,b.indexOf(o));const h=[{index:u.map((e=>e.toLowerCase())).indexOf(o.toLowerCase()),key:js.toChainedReference(this.getOutputRef(a,t.index))}],T=js.constructExitCall({poolId:e.id,poolKind:0,sender:i,recipient:r,outputReferences:h,exitPoolRequest:{},assets:u,minAmountsOut:y,userData:m,toInternalBalance:!1}),g=y.map((e=>js.isChainedReference(e)?"0":s.sub(e).toString())),I=js.isChainedReference(d)?"0":d;return[T,i===this.relayer?s.toString():I,r===this.relayer?[]:u,r===this.relayer?[]:g]}}class ji{constructor(e){this.yesterdaysPools=e}async last24h(e){let t;return this.yesterdaysPools&&(t=await this.yesterdaysPools.find(e.id)),e.totalSwapVolume?(null==t?void 0:t.totalSwapVolume)?parseFloat(e.totalSwapVolume)-parseFloat(t.totalSwapVolume):e.createTime&&Js(e.createTime)?parseFloat(e.totalSwapVolume):0:0}}var Xi=[{inputs:[{internalType:"contract IVault",name:"vault",type:"address"},{internalType:"contract IProtocolFeePercentagesProvider",name:"protocolFeeProvider",type:"address"}],stateMutability:"nonpayable",type:"constructor"},{anonymous:!1,inputs:[],name:"FactoryDisabled",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"pool",type:"address"}],name:"PoolCreated",type:"event"},{inputs:[{internalType:"string",name:"name",type:"string"},{internalType:"string",name:"symbol",type:"string"},{internalType:"contract IERC20[]",name:"tokens",type:"address[]"},{internalType:"uint256",name:"amplificationParameter",type:"uint256"},{internalType:"contract IRateProvider[]",name:"rateProviders",type:"address[]"},{internalType:"uint256[]",name:"tokenRateCacheDurations",type:"uint256[]"},{internalType:"bool[]",name:"exemptFromYieldProtocolFeeFlags",type:"bool[]"},{internalType:"uint256",name:"swapFeePercentage",type:"uint256"},{internalType:"address",name:"owner",type:"address"}],name:"create",outputs:[{internalType:"contract ComposableStablePool",name:"",type:"address"}],stateMutability:"nonpayable",type:"function"},{inputs:[],name:"disable",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"bytes4",name:"selector",type:"bytes4"}],name:"getActionId",outputs:[{internalType:"bytes32",name:"",type:"bytes32"}],stateMutability:"view",type:"function"},{inputs:[],name:"getAuthorizer",outputs:[{internalType:"contract IAuthorizer",name:"",type:"address"}],stateMutability:"view",type:"function"},{inputs:[],name:"getCreationCode",outputs:[{internalType:"bytes",name:"",type:"bytes"}],stateMutability:"view",type:"function"},{inputs:[],name:"getCreationCodeContracts",outputs:[{internalType:"address",name:"contractA",type:"address"},{internalType:"address",name:"contractB",type:"address"}],stateMutability:"view",type:"function"},{inputs:[],name:"getPauseConfiguration",outputs:[{internalType:"uint256",name:"pauseWindowDuration",type:"uint256"},{internalType:"uint256",name:"bufferPeriodDuration",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"getVault",outputs:[{internalType:"contract IVault",name:"",type:"address"}],stateMutability:"view",type:"function"},{inputs:[],name:"isDisabled",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"pool",type:"address"}],name:"isPoolFromFactory",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"view",type:"function"}];class Ki{constructor(e){const{tokens:t}=Ut(e.chainId);this.wrappedNativeAsset=t.wrappedNativeAsset}create({factoryAddress:e,name:n,symbol:s,tokenAddresses:i,amplificationParameter:r,rateProviders:o,tokenRateCacheDurations:d,exemptFromYieldProtocolFeeFlags:c,swapFee:l,owner:p}){const u=xt(`${l}`),y=new we(this.wrappedNativeAsset),[b,f,m,h]=y.sortTokens(i,o,d,c),T=[n,s,b,r,f,m,h,u.toString(),p],g=new t(Xi),I=Xi.find((({name:e})=>"create"===e));if(!I)throw new $t(Gt.INTERNAL_ERROR_INVALID_ABI);const w=a.from(I);return{to:e,data:g.encodeFunctionData(w,T)}}buildInitJoin({joiner:e,poolId:t,poolAddress:a,tokensIn:n,amountsIn:s}){throw new Error("To be implemented")}}class Yi{constructor(e){const{tokens:t}=Ut(e.chainId);this.wrappedNativeAsset=t.wrappedNativeAsset}create({factoryAddress:e,name:n,symbol:s,tokenAddresses:i,weights:r,swapFee:o,owner:d}){const c=xt(`${o}`),l=new we(this.wrappedNativeAsset),[p,u]=l.sortTokens(i,r),y=[n,s,p,u,c.toString(),d],b=new t($.abi),f=$.abi.find((({name:e})=>"create"===e));if(!f)throw new $t(Gt.INTERNAL_ERROR_INVALID_ABI);const m=a.from(f);return{to:e,data:b.encodeFunctionData(m,y)}}buildInitJoin({joiner:e,poolId:t,tokensIn:a,amountsIn:n}){const s=new we(this.wrappedNativeAsset),[i,r]=s.sortTokens(a,n),o="joinPool",d={poolId:t,sender:e,recipient:e,joinPoolRequest:{assets:i,maxAmountsIn:r,userData:z.joinInit(r),fromInternalBalance:!1}},c=L.createInterface().encodeFunctionData(o,[d.poolId,d.sender,d.recipient,d.joinPoolRequest]);return{to:Mt,functionName:o,attributes:d,data:c}}}class Ji{constructor(e){this.networkConfig=e}of(e){switch(e){case"Weighted":return new Yi(this.networkConfig);case"Investment":case"LiquidityBootstrapping":case"Stable":case"MetaStable":case"StablePhantom":case"AaveLinear":case"ERC4626Linear":default:throw new $t(Gt.UNSUPPORTED_POOL_TYPE);case"ComposableStable":return new Ki(this.networkConfig)}}}class Zi{constructor(e){this.pool=e;const t=(e=>{switch(e){case Xe.Weighted:return z;case Xe.Stable:case Xe.MetaStable:case Xe.StablePhantom:case Xe.AaveLinear:case Xe.EulerLinear:case Xe.ERC4626Linear:case Xe.Element:case Xe.Gyro2:case Xe.Gyro3:return Z;case Xe.ComposableStable:return se}})(e.poolType);if(!t)throw"Pool type not supported";this.encoder=t}buildQueryJoinExactIn({sender:e=i,recipient:t=e,maxAmountsIn:a,minimumBPT:n=s,fromInternalBalance:r=!1}){const o=this.pool.tokensList.findIndex((e=>this.pool.id.includes(e))),d=[...this.pool.tokensList];o&&o>-1&&a.splice(o,1);const c=this.encoder.joinExactTokensInForBPTOut(a,n);return[this.pool.id,e,t,{assets:d,maxAmountsIn:a,userData:c,fromInternalBalance:r}]}buildQueryJoinExactOut({sender:e=i,recipient:t=e,maxAmountsIn:a=[],bptOut:n,tokenIn:s,fromInternalBalance:r=!1}){const o=this.pool.tokensList.indexOf(s),d=this.encoder.joinTokenInForExactBPTOut(n,o);return[this.pool.id,e,t,{assets:this.pool.tokensList,maxAmountsIn:a,userData:d,fromInternalBalance:r}]}buildQueryExitToSingleToken({sender:e=i,recipient:t=e,minAmountsOut:a=[],bptIn:n,tokenOut:s,toInternalBalance:r=!1}){const o=this.pool.tokensList.indexOf(s),d=this.encoder.exitExactBPTInForOneTokenOut(n,o);return[this.pool.id,e,t,{assets:this.pool.tokensList,minAmountsOut:a,userData:d,toInternalBalance:r}]}buildQueryExitProportionally({sender:e=i,recipient:t=e,minAmountsOut:a=[],bptIn:n,toInternalBalance:s=!1}){if(!this.encoder.exitExactBPTInForTokensOut)throw"Proportional exit not implemented";const r=this.encoder.exitExactBPTInForTokensOut(n);return[this.pool.id,e,t,{assets:this.pool.tokensList,minAmountsOut:a,userData:r,toInternalBalance:s}]}buildQueryExitExactOut({sender:e=i,recipient:t=e,minAmountsOut:a,maxBptIn:n=r,toInternalBalance:s=!1}){const o=this.pool.tokensList.findIndex((e=>this.pool.id.includes(e)));o&&o>-1&&a.splice(o,1);const d=this.encoder.exitBPTInForExactTokensOut(a,n);return[this.pool.id,e,t,{assets:this.pool.tokensList,minAmountsOut:a,userData:d,toInternalBalance:s}]}}class zi{constructor(e){this.liquidityGaugesRepository=e}async relativeWeight(e){const t=await this.liquidityGaugesRepository.findBy("poolId",e);return t?t.relativeWeight:0}async weekly(e){return Di()*await this.relativeWeight(e)}}const Qi=(e,t,a)=>{const n=e.tokens.filter((t=>!e.id.toLowerCase().includes(t.address.toLowerCase()))),s=n.findIndex((e=>e.address.toLowerCase()===t.toLowerCase()));if(-1==s)throw new Error("Token not found in pool");const i=n.map((e=>ot(e.balance,e.decimals))),r=d.from(a),o=i.map((e=>e.mul(r).div(i[s])));return{tokens:n.map((e=>e.address)),amounts:o.map((e=>e.toString()))}},er=(e,t)=>()=>{throw`${t} for poolType ${e} not implemented`};class tr{constructor(e,t){this.networkConfig=e,this.repositories=t,this.aprService=new Ri(this.repositories.pools,this.repositories.tokenPrices,this.repositories.tokenMeta,this.repositories.tokenYields,this.repositories.feeCollector,this.repositories.yesterdaysPools,this.repositories.liquidityGauges,this.repositories.feeDistributor),this.liquidityService=new Pa(t.pools,t.tokenPrices),this.joinService=new Wi(this.repositories.poolsOnChain,e),this.exitService=new Hi(this.repositories.poolsOnChain,e),this.feesService=new Fi(t.yesterdaysPools),this.volumeService=new ji(t.yesterdaysPools),this.poolFactory=new Ji(e),this.impermanentLossService=new Oi(t.tokenPrices,t.tokenHistoricalPrices),t.liquidityGauges&&(this.emissionsService=new zi(t.liquidityGauges)),this.proportionalAmounts=Qi}dataSource(){return this.repositories.pools}async apr(e){return this.aprService.apr(e)}async aprNextPeriod(e){return this.aprService.aprNextPeriod(e)}async impermanentLoss(e,t){return this.impermanentLossService.calcImpLoss(e,t)}async liquidity(e){return this.liquidityService.getLiquidity(e)}async generalisedJoin(e,t,a,n,s,i,r){return this.joinService.joinPool(e,t,a,n,s,i,r)}async generalisedExit(e,t,a,n,s){return this.exitService.exitPool(e,t,a,n,s)}async fees(e){return this.feesService.last24h(e)}async volume(e){return this.volumeService.last24h(e)}static wrap(e,t){let a,n,s;try{a=Sa.from(e.poolType),s={buildJoin:(t,n,s,r)=>a.join.buildJoin({joiner:t,pool:e,tokensIn:n,amountsIn:s,slippage:r,wrappedNativeAsset:i}),calcPriceImpact:async(t,n,s)=>a.priceImpactCalculator.calcPriceImpact(e,t,n,s),buildExitExactBPTIn:(t,n,s,r=!1,o)=>{if(a.exit.buildExitExactBPTIn)return a.exit.buildExitExactBPTIn({exiter:t,pool:e,bptIn:n,slippage:s,shouldUnwrapNativeAsset:r,wrappedNativeAsset:i,singleTokenMaxOut:o});throw"ExitExactBPTIn not supported"},buildExitExactTokensOut:(t,n,s,r)=>a.exit.buildExitExactTokensOut({exiter:t,pool:e,tokensOut:n,amountsOut:s,slippage:r,wrappedNativeAsset:i}),calcSpotPrice:(t,n)=>a.spotPriceCalculator.calcPoolSpotPrice(t,n,e),calcProportionalAmounts:(t,a)=>Qi(e,t,a)}}catch(t){"UNSUPPORTED_POOL_TYPE"!=t.code&&console.error(t),s={buildJoin:er(e.poolType,"buildJoin"),calcPriceImpact:er(e.poolType,"calcPriceImpact"),buildExitExactBPTIn:er(e.poolType,"buildExitExactBPTIn"),buildExitExactTokensOut:er(e.poolType,"buildExitExactTokensOut"),calcSpotPrice:er(e.poolType,"calcSpotPrice")}}try{n=new Zi(e),s={...s,buildQueryJoinExactIn:n.buildQueryJoinExactIn.bind(n),buildQueryJoinExactOut:n.buildQueryJoinExactOut.bind(n),buildQueryExitExactOut:n.buildQueryExitExactOut.bind(n),buildQueryExitToSingleToken:n.buildQueryExitToSingleToken.bind(n),buildQueryExitProportionally:n.buildQueryExitProportionally.bind(n)}}catch(t){s={...s,buildQueryJoinExactIn:er(e.poolType,"buildQueryJoinExactIn"),buildQueryJoinExactOut:er(e.poolType,"buildQueryJoinExactOut"),buildQueryExitExactOut:er(e.poolType,"buildQueryExitExactOut"),buildQueryExitToSingleToken:er(e.poolType,"buildQueryExitToSingleToken"),buildQueryExitProportionally:er(e.poolType,"buildQueryExitProportionally")}}const i=t.addresses.tokens.wrappedNativeAsset.toLowerCase();return{...e,...s}}async find(e){const t=await this.dataSource().find(e);if(t)return tr.wrap(t,this.networkConfig)}async findBy(e,t){if("id"==e)return this.find(t);if("address"==e){const e=await this.dataSource().findBy("address",t);if(!e)return;return tr.wrap(e,this.networkConfig)}throw`search by ${e} not implemented`}async all(){const e=await this.dataSource().all();return e?e.map((e=>tr.wrap(e,this.networkConfig))).filter((e=>e)):[]}async where(e){const t=await this.dataSource().where(e);if(!t)return[];return t.map((e=>tr.wrap(e,this.networkConfig))).filter((e=>e))}}const ar=new t(["function gauge_relative_weight(address gauge, uint timestamp) view returns (uint)","function gauge_relative_weight_write(address gauge, uint timestamp) returns (uint)"]);class nr{constructor(e,t,a){this.gaugeControllerAddress=t,this.multicall=hs(e,a)}async getRelativeWeights(e,t){const a=e.map((e=>[this.gaugeControllerAddress,ar.encodeFunctionData("gauge_relative_weight_write",[p(e),t||Math.floor(Date.now()/1e3)])])),[,n]=await this.multicall.aggregate(a);return e.reduce(((e,t,a)=>(e[t]||(e[t]=parseFloat(rt(n[a],18))),e)),{})}}class sr{async get(e){const t=await this.query(e);return(null==t?void 0:t.length)>0?t[0]:void 0}async find(e){return this.get({where:{id:e}})}async findBy(e,t){return this.get({where:{[String(e)]:t}})}async findAllBy(e,t,a=1e3,n=0){const s={where:{[String(e)]:t},first:a,skip:n};return this.query(s)}}class ir extends sr{constructor(e,t,a){super(),this.chainId=t,this.blockHeight=a,this.client=bs(e)}}class rr extends sr{constructor(e,t,a){super(),this.chainId=t,this.blockHeight=a,this.client=fs(e)}}class or extends rr{async query(e){e.orderBy||(e.orderBy=jn.Balance),e.orderDirection||(e.orderDirection=Zn.Desc),!e.block&&this.blockHeight&&(e.block={number:await this.blockHeight()});const{gaugeShares:t}=await this.client.GaugeShares(e);return t.map(this.mapType)}mapType(e){var t;return{id:e.id,balance:e.balance,userAddress:null===(t=e.user)||void 0===t?void 0:t.id,gauge:{id:e.gauge.id,poolId:e.gauge.poolId||void 0,isKilled:e.gauge.isKilled,totalSupply:e.gauge.totalSupply}}}async findByUser(e,t,a){return this.findAllBy(We.UserAddress,e,t,a)}async findByGauge(e,t,a){return this.findAllBy(We.GaugeId,e,t,a)}}const dr=new t(["function totalSupply() view returns (uint)","function working_supply() view returns (uint)","function reward_count() view returns (uint)","function reward_tokens(uint rewardIndex) view returns (address)","function reward_data(address rewardToken) view returns (tuple(address token, address distributor, uint period_finish, uint rate, uint last_update, uint integral) data)"]);class cr{constructor(e,t,a){this.chainId=t,this.multicall=hs(e,a)}async getTotalSupplies(e){const t=e.map((e=>[e,dr.encodeFunctionData("totalSupply",[])])),[,a]=await this.multicall.aggregate(t),n=a.map((e=>"0x"==e?"0x0":e));return e.reduce(((e,t,a)=>(e[t]||(e[t]=parseFloat(rt(n[a],18))),e)),{})}async getWorkingSupplies(e){const t=e.map((e=>[e,dr.encodeFunctionData("working_supply",[])])),[,a]=await this.multicall.aggregate(t),n=a.map((e=>"0x"==e?"0x0":e));return e.reduce(((e,t,a)=>(e[t]||(e[t]=parseFloat(rt(n[a],18))),e)),{})}async getRewardCounts(e){let t;if(248==this.chainId||9372==this.chainId||6343==this.chainId||4326==this.chainId){const a=e.map((e=>[e,dr.encodeFunctionData("reward_count",[])])),[,n]=await this.multicall.aggregate(a),s=n.map((e=>"0x"==e?"0x0":e));t=e.reduce(((e,t,a)=>(e[t]||(e[t]=parseInt(s[a])),e)),{})}else t=e.reduce(((e,t)=>(e[t]||(e[t]=1),e)),{});return t}async getRewardTokens(e,t){const a=t||await this.getRewardCounts(e),n=e.filter((e=>a[e]>0)),s=[0],i=n.map(((e,t)=>{const n=[];for(let t=0;t<a[e];t++)n.push([e,dr.encodeFunctionData("reward_tokens",[t])]);return s[t+1]=s[t]+a[e],n})).flat(),[,r]=await this.multicall.aggregate(i);return n.reduce(((e,t,a)=>{const n=s[a],i=s[a+1],o=[];for(let e=n;e<i;e++)o.push(dr.decodeFunctionResult("reward_tokens",r[e])[0]);return e[t]||(e[t]=o),e}),{})}async getRewardData(e,t){const a=t||await this.getRewardTokens(e),n=[0],s=Object.keys(a).map(((e,t)=>{const s=[];for(let t=0;t<a[e].length;t++)s.push([e,dr.encodeFunctionData("reward_data",[a[e][t]])]);return n[t+1]=n[t]+a[e].length,s})).flat(),[,i]=await this.multicall.aggregate(s),r=i.map((e=>dr.decodeFunctionResult("reward_data",e)[0]));return Object.keys(a).reduce(((e,t,s)=>{const i=n[s],o=a[t].reduce(((e,t,a)=>(e[t]||(e[t]=r[i+a]),e)),{});return e[t]||(e[t]=o),e}),{})}}class lr{constructor(e){this.gauges=[],this.client=fs(e)}async fetch(){const e=(await this.client.Pools({where:{preferentialGauge_not:null},first:1e3})).pools.map((e=>e.preferentialGauge));return this.gauges=e,this.gauges}async find(e){return 0==this.gauges.length&&await this.fetch(),this.gauges.find((t=>t.id==e))}async findBy(e,t){if(0==this.gauges.length&&await this.fetch(),"id"==e)return this.find(t);if("poolId"==e)return this.gauges.find((e=>e.poolId==t));if("poolAddress"==e)return this.gauges.find((e=>e.poolAddress==t));throw`search by ${e} not implemented`}}const pr=6048e5;class ur{constructor(e,t,a,n,s){this.chainId=n,this.workingSupplies={},this.workingSuppliesNextPeriod={},this.relativeWeights={},this.relativeWeightsNextPeriod={},this.rewardData={},a&&(this.gaugeController=new nr(t,a,s)),this.multicall=new cr(t,n,s),this.subgraph=new lr(e)}async fetch(){const e=await this.subgraph.fetch(),t=e.map((e=>e.id));if(248!=this.chainId&&9372!=this.chainId&&6343!=this.chainId&&4326!=this.chainId||(this.workingSupplies=await this.multicall.getWorkingSupplies(t)),this.gaugeController){this.relativeWeights=await this.gaugeController.getRelativeWeights(t);const e=Math.round(Math.floor((Date.now()+pr)/pr)*pr)/1e3;this.relativeWeightsNextPeriod=await this.gaugeController.getRelativeWeights(t,e)}let a=!1;return this.rewardData=e.reduce(((e,t)=>{var n;return e[n=t.id]||(e[n]=t.tokens?Object.fromEntries(t.tokens.map((e=>[e.id.split("-")[0],{distributor:"",last_update:d.from(0),integral:d.from(0),token:e.id.split("-")[0],decimals:e.decimals,rate:ot(e.rate||"0",e.decimals),period_finish:d.from(e.periodFinish||"0")}]))):{}),t.tokens&&t.tokens.length>0&&(a=!0),e}),{}),a||(this.rewardData=await this.multicall.getRewardData(t)),e.map(this.compose.bind(this))}async find(e){return this.gauges||(this.gauges=this.fetch()),(await this.gauges).find((t=>t.id==e))}async findBy(e,t){let a;if(this.gauges||(this.gauges=this.fetch()),"id"==e)return this.find(t);if("address"==e)return this.find(t);if("poolId"==e)a=(await this.gauges).find((e=>e.poolId==t));else{if("poolAddress"!=e)throw`search by ${e} not implemented`;a=(await this.gauges).find((e=>e.poolAddress==t))}return a}compose(e){return{id:e.id,address:e.id,name:e.symbol,poolId:e.poolId,poolAddress:e.poolAddress,totalSupply:parseFloat(e.totalSupply),workingSupply:this.workingSupplies[e.id],relativeWeight:this.relativeWeights[e.id],relativeWeightNextPeriod:this.relativeWeightsNextPeriod[e.id],rewardTokens:this.rewardData[e.id]}}}class yr{constructor(e,t){this.url=e,this.apiKey=t}async get(e){try{const t=this.toPayload(e),{data:a}=await h.post(this.url,t,{headers:{"x-api-key":this.apiKey}});if(a.errors)throw new Error(a.errors.map((e=>e.message)).join(","));return a.data}catch(e){throw console.error(e),e}return[]}toPayload(e){return JSON.stringify({query:H({query:e})})}}class br{constructor(e){var t,a;this.pools=[],this.skip=0,this.client=new yr(e.url,e.apiKey);this.query={args:Object.assign({},(null===(t=e.query)||void 0===t?void 0:t.args)||{chainId:248,orderBy:"totalLiquidity",orderDirection:"desc",where:{swapEnabled:{eq:!0}}}),attrs:Object.assign({},(null===(a=e.query)||void 0===a?void 0:a.attrs)||{id:!0,address:!0})},delete this.query.args.skip}fetchFromCache(e){const t=(null==e?void 0:e.first)||10,a=(null==e?void 0:e.skip)||0,n=this.pools.slice(a,t+a);return this.skip=a+t,n}async fetch(e){if(this.pools.length>((null==e?void 0:e.first)||10)+((null==e?void 0:e.skip)||0))return this.fetchFromCache(e);this.nextToken&&(this.query.args.nextToken=this.nextToken),(null==e?void 0:e.first)&&(this.query.args.first=2*e.first);const t=new Bt(this.query.args).format(new vt),a=this.query.attrs;a.nextToken=!0;const n={pools:{__args:t,...a}},s=(await this.client.get(n)).pools;return this.nextToken=s.nextToken,this.pools=this.pools.concat(s.pools.map(this.format)),this.skip=this.pools.length,this.fetchFromCache(e)}async find(e){return 0==this.pools.length&&await this.fetch(),this.findBy("id",e)}async findBy(e,t){0==this.pools.length&&await this.fetch();const a=this.pools.find((a=>a[e]==t));if(a)return this.format(a)}format(e){var t,a,n,s;if(null===(t=e.apr)||void 0===t?void 0:t.rewardAprs.breakdown){const t=JSON.parse(null===(a=e.apr)||void 0===a?void 0:a.rewardAprs.breakdown);e.apr.rewardAprs.breakdown=t}if(null===(n=e.apr)||void 0===n?void 0:n.tokenAprs.breakdown){const t=JSON.parse(null===(s=e.apr)||void 0===s?void 0:s.tokenAprs.breakdown);e.apr.tokenAprs.breakdown=t}return e}}class fr{constructor(e,t={}){this.providers=e,this.currentProviderIdx=0,this.timeout=t.timeout||1e4}async fetch(e){return this.fallbackQuery("fetch",[e])}get currentProvider(){if(this.providers.length&&!(this.currentProviderIdx>=this.providers.length))return this.providers[this.currentProviderIdx]}async find(e){return this.fallbackQuery("find",[e])}async findBy(e,t){return this.fallbackQuery("findBy",[e,t])}async fallbackQuery(e,t){if(this.currentProviderIdx>=this.providers.length)throw new Error("No working providers found");let a;try{const n=this.providers[this.currentProviderIdx];a=await Promise.race([n[e].apply(n,t),new Promise(((e,t)=>setTimeout((()=>t(new Error("timeout"))),this.timeout)))])}catch(n){const s=n.message;"timeout"===s?console.error("Provider "+this.currentProviderIdx+" timed out, falling back to next provider"):console.error("Provider "+this.currentProviderIdx+" failed with error: ",s,", falling back to next provider"),this.currentProviderIdx++,a=await this.fallbackQuery.call(this,e,t)}return a}}class mr{constructor(e){this.pools=e}async find(e){return this.pools.find((t=>t.id.toLowerCase()===e.toLowerCase()))}async findBy(e,t){return this.pools.find((a=>a[e]===t))}async all(){return this.pools}async where(e){return(await this.all()).filter(e)}}class hr{constructor(e){var t,a;this.skip=0,this.client=bs(e.url),this.blockHeight=e.blockHeight,this.chainId=e.chainId;const n={orderBy:on.TotalLiquidity,orderDirection:en.Desc,where:{swapEnabled:{eq:!0}}},s=Object.assign({},(null===(t=e.query)||void 0===t?void 0:t.args)||n),i=Object.assign({},(null===(a=e.query)||void 0===a?void 0:a.attrs)||{});this.query={args:s,attrs:i}}async fetchDefault(){const{pool0:e,pool1000:t,pool2000:a}=await this.client.AllPools({where:{swapEnabled:!0},orderBy:on.TotalLiquidity,orderDirection:en.Desc,block:await this.block()});return[...e,...t,...a].map(this.mapType.bind(this))}async fetch(e){(null==e?void 0:e.skip)&&(this.query.args.skip=e.skip),this.blockHeight&&(this.query.args.block={number:await this.blockHeight()}),this.query.args.first=(null==e?void 0:e.first)||1e3;const t=new Bt(this.query.args).format(new Ot),{pools:a}=await this.client.Pools(t);return this.skip=((null==e?void 0:e.skip)||0)+a.length,a.map(this.mapType.bind(this))}async find(e){return await this.findBy("id",e)}async findBy(e,t){return this.pools||(this.pools=this.fetchDefault()),(await this.pools).find((a=>a[e]==t))}async all(){return this.pools||(this.pools=this.fetchDefault()),this.pools}async block(){return this.blockHeight?{number:await this.blockHeight()}:void 0}async where(e){return this.pools||(this.pools=this.fetchDefault()),(await this.pools).filter(e)}mapType(e){var t,a,n,s,i,r,o,d,c;return{id:e.id,name:e.name||"",address:e.address,chainId:this.chainId,poolType:e.poolType,poolTypeVersion:e.poolTypeVersion||1,swapFee:e.swapFee,swapEnabled:e.swapEnabled,protocolYieldFeeCache:e.protocolYieldFeeCache||"0",protocolSwapFeeCache:e.protocolSwapFeeCache||"0",amp:null!==(t=e.amp)&&void 0!==t?t:void 0,owner:null!==(a=e.owner)&&void 0!==a?a:void 0,factory:null!==(n=e.factory)&&void 0!==n?n:void 0,symbol:null!==(s=e.symbol)&&void 0!==s?s:void 0,tokens:(e.tokens||[]).map(this.mapToken.bind(this)),tokensList:e.tokensList,tokenAddresses:(e.tokens||[]).map((e=>e.address)),totalLiquidity:e.totalLiquidity,totalShares:e.totalShares,totalSwapFee:e.totalSwapFee,totalSwapVolume:e.totalSwapVolume,priceRateProviders:null!==(i=e.priceRateProviders)&&void 0!==i?i:void 0,createTime:e.createTime,mainIndex:null!==(r=e.mainIndex)&&void 0!==r?r:void 0,wrappedIndex:null!==(o=e.wrappedIndex)&&void 0!==o?o:void 0,totalWeight:e.totalWeight||"1",lowerTarget:null!==(d=e.lowerTarget)&&void 0!==d?d:"0",upperTarget:null!==(c=e.upperTarget)&&void 0!==c?c:"0"}}mapToken(e){const t=this.mapSubPools(e.token);return{...e,isExemptFromYieldProtocolFee:e.isExemptFromYieldProtocolFee||!1,token:t}}mapSubPools(e){let t=null;return e.pool&&(t={id:e.pool.id,address:e.pool.address,totalShares:e.pool.totalShares,poolType:e.pool.poolType,mainIndex:e.pool.mainIndex||0},(null==e?void 0:e.pool.tokens)&&(t.tokens=e.pool.tokens.map(this.mapSubPoolToken.bind(this)))),{pool:t,latestUSDPrice:e.latestUSDPrice||void 0}}mapSubPoolToken(e){return{address:e.address,decimals:e.decimals,symbol:e.symbol,balance:e.balance,priceRate:e.priceRate,weight:e.weight,isExemptFromYieldProtocolFee:e.isExemptFromYieldProtocolFee||void 0,token:e.token?this.mapSubPools(e.token):void 0}}}class Tr{constructor(e){this.skip=0,this.poolsSubgraph=new hr({url:e.url,chainId:e.chainId,blockHeight:e.blockHeight,query:e.query}),this.provider=e.provider,this.multicall=e.multicall,this.vault=e.vault}async fetchDefault(){const e=await this.poolsSubgraph.fetch();return await As(e,this.multicall,this.vault,this.provider)}async fetch(e){const t=await this.poolsSubgraph.fetch(e);return await As(t,this.multicall,this.vault,this.provider)}async find(e){return await this.findBy("id",e)}async findBy(e,t){return this.pools||(this.pools=this.fetchDefault()),(await this.pools).find((a=>a[e]==t))}async all(){return this.pools||(this.pools=this.fetchDefault()),this.pools}async where(e){return this.pools||(this.pools=this.fetchDefault()),(await this.pools).filter(e)}}class gr extends rr{async query(e){!e.block&&this.blockHeight&&(e.block={number:await this.blockHeight()});const{pools:t}=await this.client.PoolGauges(e);return t.map(this.mapType)}mapType(e){return e}}var Ir;!function(e){e.Pool="pool",e.Sender="sender"}(Ir||(Ir={}));class wr extends ir{async query(e){e.orderBy||(e.orderBy=Ja.Timestamp),e.orderDirection||(e.orderDirection=en.Asc),!e.block&&this.blockHeight&&(e.block={number:await this.blockHeight()});const{joinExits:t}=await this.client.JoinExits(e);return t.map(this.mapType)}mapType(e){return{id:e.id,userAddress:e.user.id,poolId:e.pool.id,timestamp:e.timestamp,type:e.type,amounts:e.amounts,tokens:e.pool.tokensList}}async findByUser(e,t,a){return this.findAllBy(Ir.Sender,e,t,a)}async findJoins(e,t){return this.query({where:{sender:e,pool:t,type:"Join"}})}async findExits(e,t){return this.query({where:{sender:e,pool:t,type:"Exit"}})}async findByPool(e,t,a){return this.findAllBy(Ir.Pool,e,t,a)}}class Er extends ir{async query(e){e.orderBy||(e.orderBy=nn.Balance),e.orderDirection||(e.orderDirection=en.Desc),!e.block&&this.blockHeight&&(e.block={number:await this.blockHeight()});const{poolShares:t}=await this.client.PoolShares(e);return t.map(this.mapType)}mapType(e){return{id:e.id,userAddress:e.userAddress.id,poolId:e.poolId.id,balance:e.balance}}async findByUser(e,t,a){return this.findAllBy(qe.UserAddress,e,t,a)}async findByPool(e,t,a){return this.findAllBy(qe.PoolId,e,t,a)}}class xr{constructor(e){this.tokens=e}async find(e){return this.tokens.find((t=>t.address.toLowerCase()===e.toLowerCase()))}async findBy(e,t){return this.tokens.find((a=>a[e]===t))}}class Ar{constructor(e){this.tokenPrices=Object.fromEntries(Object.entries(e).map((([e,t])=>[e.toLowerCase(),t])))}async find(e){const t=e.toLowerCase(),a=this.tokenPrices[t];if(a)return a}async findBy(e,t){if("address"==e)return this.find(t)}}class Sr{constructor(e,t=1){this.chainId=t,this.prices={},this.baseTokenAddresses=e.map(ht),this.urlBase=`${Lt[t].urls.priceUrl}/price/?vs_currencies=usd,eth`,this.debouncer=new It(this.fetch.bind(this),200)}fetch(e,{signal:t}={}){return e.length,h.get(this.url(e),{signal:t}).then((({data:e})=>e)).finally((()=>{e.length}))}fetchNative({signal:e}={}){let t;!function(e){e.ETH="ethereum",e.MATIC="matic-network",e.XDAI="xdai",e.OAS="oasys"}(t||(t={}));const a=t.OAS,n=this.url(["0xdeaddeaddeaddeaddeaddeaddeaddeaddead0000"]);return h.get(n,{signal:e}).then((({data:e})=>e[a])).finally((()=>{}))}find(e){const t=e.toLowerCase();if(!this.prices[t]){if(0===Object.keys(this.prices).length)for(const e of this.baseTokenAddresses)this.prices[e]=this.debouncer.fetch(e).then((t=>t[e]));this.prices[t]=this.debouncer.fetch(t).then((e=>e[t]))}return this.prices[t]}async findBy(e,t){if("address"==e)return this.find(t)}platform(e){switch(e){case 1:case 5:case 42:case 31337:case 248:case 9372:case 6343:case 4326:case 16116:case 17117:return"ethereum";case 100:return"xdai";case 137:return"polygon-pos";case 42161:return"arbitrum-one"}return"3"}url(e){return`${this.urlBase}&contract_addresses=${e.join(",")}`}}class Pr{constructor(e=1){this.chainId=e,this.prices={},this.urlBase=`https://api.coingecko.com/api/v3/coins/${this.platform(e)}/contract/%TOKEN_ADDRESS%/market_chart/range?vs_currency=usd`}fetch(e,t,{signal:a}={}){const n=this.urlRange(e,t);return h.get(n,{signal:a}).then((({data:e})=>e)).finally((()=>{}))}async find(e){throw"Historic price requires point-in-time timestamp, please use findBy(address, timestamp)"}async findBy(e,t){const a=ht(e,this.chainId);return{usd:`${(await this.fetch(a,t)).prices[0][1]}`}}platform(e){switch(e){case 1:case 5:case 42:case 31337:case 248:case 9372:case 6343:case 4326:case 16116:case 17117:return"ethereum";case 137:return"polygon-pos";case 42161:return"arbitrum-one";case 100:return"xdai"}return"2"}urlRange(e,t){const a=t-3600,n=t+3600;return`${this.urlBase.replace("%TOKEN_ADDRESS%",e)}&from=${a}&to=${n}`}}class _r{constructor(e,t=1){this.subgraphUrl=e,this.chainId=t,this.prices={},this.debouncer=new It(this.fetch.bind(this),200)}async fetch(e,{signal:t}={}){return e.length,h.post(this.subgraphUrl,{variables:{addresses:e},query:"query($addresses: [String!]) {\n tokens(\n where: {\n id_in: $addresses\n }\n ) {\n address\n latestUSDPrice\n }\n }"},{signal:t}).then((e=>e.data.data)).then((({tokens:e})=>Object.fromEntries(e.map((e=>[e.address,{usd:e.latestUSDPrice||void 0}]))))).finally((()=>{e.length}))}async find(e){const t=ht(e,this.chainId);return this.prices[t]||(this.prices[t]=this.debouncer.fetch(t).then((e=>e[t]))),this.prices[t]}async findBy(e,t){if("address"==e)return this.find(t)}}class vr{constructor(e,t,a){this.coingeckoRepository=e,this.subgraphRepository=t,this.aaveRates=a}async find(e){let t;try{try{if(t=await this.coingeckoRepository.find(e),!(null==t?void 0:t.usd))throw new Error(`Price not found:${e}`)}catch(a){console.error(`Coingecko API error: ${e} ${a}`),t=await this.subgraphRepository.find(e)}}catch(e){console.error(e),t={eth:"0",usd:"0.1"}}return t}async findBy(e,t){if("address"===e)return this.find(t);throw`Token price search by ${e} not implemented`}}class Or{constructor(e,t){this.coingeckoRepository=e,this.aaveRates=t}async find(e){return this.findBy(e,Math.floor(Date.now()/1e3))}async findBy(e,t){const a=await this.coingeckoRepository.findBy(e,t),n=await this.aaveRates.getRate(e)||1;return a&&a.usd?{...a,usd:(parseFloat(a.usd)*n).toString()}:a}}const Br=new t(["function rate() view returns (uint256)"]);class kr{constructor(e,t,a){this.network=a,this.multicall=hs(e,t)}async fetch(e){const t=Object.values(dt[e]),a=t.map((e=>[e,Br.encodeFunctionData("rate",[])])),[,n]=await this.multicall.aggregate(a);return t.reduce(((e,t,a)=>(e[t]||(e[t]="0x"==n[a]?0:parseFloat(rt(n[a],27))),e)),{})}async getRate(e){return this.network!=ue.MAINNET&&this.network!=ue.POLYGON?1:Object.values(dt[this.network]).includes(e)?(this.rates||(this.rates=this.fetch(this.network)),(await this.rates)[e]):1}}const Dr=new t(["function getTokensDistributedInWeek(address token, uint timestamp) view returns (uint)"]),Nr=new t(["function totalSupply() view returns (uint)"]),Cr=new t(["function getRate() view returns (uint)"]);class Fr{constructor(e,t,a,n,s,i){this.feeDistributorAddress=t,this.balAddress=a,this.veBalAddress=n,this.bbAUsdAddress=s,this.multicall=hs(e,i)}async fetch(e){const t=this.getPreviousWeek(e),a=[[this.feeDistributorAddress,Dr.encodeFunctionData("getTokensDistributedInWeek",[p(this.balAddress),t])],[this.feeDistributorAddress,Dr.encodeFunctionData("getTokensDistributedInWeek",[p(this.bbAUsdAddress),t])],[this.veBalAddress,Nr.encodeFunctionData("totalSupply",[])],[this.bbAUsdAddress,Cr.encodeFunctionData("getRate",[])]],[,n]=await this.multicall.aggregate(a);return{balAmount:parseFloat(rt(n[0],18)),bbAUsdAmount:parseFloat(rt(n[1],18)),veBalSupply:parseFloat(rt(n[2],18)),bbAUsdPrice:parseFloat(rt(n[3],18)),balAddress:this.balAddress}}async multicallData(e){return this.data||(this.data=await this.fetch(e)),this.data}getPreviousWeek(e){const t=new Date(e);t.setUTCHours(0),t.setUTCMinutes(0),t.setUTCSeconds(0),t.setUTCMilliseconds(0);let a=t.getUTCDay()-4;return a<0&&(a+=7),a+=7,Math.floor(t.getTime()/1e3)-86400*a}}const Rr=new t(["function getProtocolFeesCollector() view returns (address)"]),Mr=new t(["function getSwapFeePercentage() view returns (uint)"]);let Lr;class Ur{constructor(e,t){this.provider=t,this.vault=new u(e,Rr,this.provider)}async fetch(){const e=await this.vault.getProtocolFeesCollector(),t=new u(e,Mr,this.provider),a=await t.getSwapFeePercentage();return parseFloat(rt(a,18))}async find(){return Lr||(Lr=this.fetch()),this.swapFeePercentage=await Lr,this.swapFeePercentage}async findBy(){return this.find()}}const Gr=new t(["function getSwapFeePercentage() view returns (uint)"]);let $r;class qr{constructor(e,t,a){this.protocolFeePercentagesProviderAddress=t,this.multicall=hs(e,a)}async fetch(){const e=[[this.protocolFeePercentagesProviderAddress,Gr.encodeFunctionData("getFeeTypePercentage",[0])],[this.protocolFeePercentagesProviderAddress,Gr.encodeFunctionData("getFeeTypePercentage",[2])]],[,t]=await this.multicall.aggregate(e);return{swapFee:parseFloat(rt(t[0],18)),yieldFee:parseFloat(rt(t[2],18))}}async getFees(){return $r||($r=this.fetch()),this.protocolFees=await $r,this.protocolFees}}const Wr={stETH:"0xae7ab96520de3a18e5e111b5eaab095312d7fe84",wstETH:"0x7f39c581f595b53c5cb19bd0b3f8da6c935e2ca0",arbitrumStEth:"0x5979d7b546e38e414f7e9822514be443a4800529"},Vr=async()=>{let e=0;try{const t=await h.get("https://lido-aprs-proxy.balancer.workers.dev/?network=1"),{data:a}=t.data;e=Math.round(100*parseFloat(a.smaApr))}catch(e){console.error("Failed to fetch stETH APR:",e)}return{[Wr.stETH]:e,[Wr.wstETH]:e,[Wr.arbitrumStEth]:e}},Hr={rETH:"0xae78736cd615f374d3085123a210448e74fc6393"},jr=async()=>{let e=0;try{const t=await h.get("https://api.rocketpool.net/api/apr"),{yearlyAPR:a}=t.data;e=Math.round(100*parseFloat(a))}catch(e){console.error("Failed to fetch APR:",e)}return{[Hr.rETH]:e}},Xr={stMATIC:"0x3a58a54c066fdc0f2d55fc9c89f0415c92ebf3c4"},Kr=async()=>{let e=0;try{const t=await h.get("https://lido-aprs-proxy.balancer.workers.dev/?network=137"),{apr:a}=t.data;e=Math.round(100*parseFloat(a))}catch(e){console.error("Failed to fetch stMATIC APR:",e)}return{[Xr.stMATIC]:e}},Yr={usdcUSDplus:"0x1aafc31091d93c3ff003cff5d2d8f7ba2e728425",usdcUSDplus2:"0x6933ec1ca55c06a894107860c92acdfd2dd8512f"},Jr=async()=>{let e=0;try{const{data:t}=await h.get("https://app.overnight.fi/api/balancer/week/apr");e=Math.round(1e4*parseFloat(t)/100)}catch(e){console.error("Failed to fetch USD+ APR:",e)}return Object.fromEntries(Object.values(Yr).map((t=>[t,e])))},Zr={sfrxETH:"0xac3e018457b222d93114458476f3e3416abbe38f"},zr=async()=>{let e=0;try{const t=await h.get("https://api.frax.finance/v2/frxeth/summary/latest"),{sfrxethApr:a}=t.data;e=Math.round(100*parseFloat(a))}catch(e){console.error("Failed to fetch APR:",e)}return{[Zr.sfrxETH]:e}},Qr={maticX:"0xfa68fb4628dff1028cfec22b4162fccd0d45efb6"},eo=async()=>{let e=0;try{const t=await h.get("https://generic-apr-proxy.balancer.workers.dev/?provider=stader"),{value:a}=t.data;e=Math.round(100*parseFloat(a))}catch(e){console.error("Failed to fetch APR:",e)}return{[Qr.maticX]:e}},to={qETH:"0x93ef1ea305d11a9b2a3ebb9bb4fcc34695292e7d"},ao=async()=>{let e=0;try{const t=await h.get("https://generic-apr-proxy.balancer.workers.dev/?provider=tranchess"),[{weeklyAveragePnlPercentage:a}]=t.data;e=Math.round(parseFloat(rt(d.from(a).mul(365).mul(1e4),18)))}catch(e){console.error("Failed to fetch qETH APR:",e)}return{[to.qETH]:e}},no={USDR:"0xaf0d9d65fc54de245cda37af3d18cbec860a4d4b"},so=async()=>{let e=0;try{const t=await h.get("https://generic-apr-proxy.balancer.workers.dev/?provider=usdr"),{usdr:a}=t.data;e=Math.round(100*parseFloat(a))}catch(e){console.error("Failed to fetch USDR APR:",e)}return{[no.USDR]:e}},io={rETH:"0x9559aaa82d9649c7a7b220e7c461d2e74c9a3593"},ro=async()=>{let e=0;try{const t=await h.get("https://drop-api.stafi.io/reth/v1/poolData/"),{stakeApr:a}=t.data.data;e=Math.round(100*parseFloat(a))}catch(e){console.error("Failed to fetch APR:",e)}return{[io.rETH]:e}},oo=new q("https://rpc.ankr.com/eth",1),co={getPoolsUI:new u("0x5954aB967Bc958940b7EB73ee84797Dc8a2AFbb9",[{inputs:[],name:"getPoolsUI",outputs:[{components:[{internalType:"uint256",name:"poolId",type:"uint256"},{internalType:"uint256",name:"stakedAmount",type:"uint256"},{components:[{internalType:"uint48",name:"startTimestampHour",type:"uint48"},{internalType:"uint48",name:"endTimestampHour",type:"uint48"},{internalType:"uint96",name:"rewardsPerHour",type:"uint96"},{internalType:"uint96",name:"capPerPosition",type:"uint96"}],internalType:"struct ApeCoinStaking.TimeRange",name:"currentTimeRange",type:"tuple"}],internalType:"struct ApeCoinStaking.PoolUI",name:"",type:"tuple"},{components:[{internalType:"uint256",name:"poolId",type:"uint256"},{internalType:"uint256",name:"stakedAmount",type:"uint256"},{components:[{internalType:"uint48",name:"startTimestampHour",type:"uint48"},{internalType:"uint48",name:"endTimestampHour",type:"uint48"},{internalType:"uint96",name:"rewardsPerHour",type:"uint96"},{internalType:"uint96",name:"capPerPosition",type:"uint96"}],internalType:"struct ApeCoinStaking.TimeRange",name:"currentTimeRange",type:"tuple"}],internalType:"struct ApeCoinStaking.PoolUI",name:"",type:"tuple"},{components:[{internalType:"uint256",name:"poolId",type:"uint256"},{internalType:"uint256",name:"stakedAmount",type:"uint256"},{components:[{internalType:"uint48",name:"startTimestampHour",type:"uint48"},{internalType:"uint48",name:"endTimestampHour",type:"uint48"},{internalType:"uint96",name:"rewardsPerHour",type:"uint96"},{internalType:"uint96",name:"capPerPosition",type:"uint96"}],internalType:"struct ApeCoinStaking.TimeRange",name:"currentTimeRange",type:"tuple"}],internalType:"struct ApeCoinStaking.PoolUI",name:"",type:"tuple"},{components:[{internalType:"uint256",name:"poolId",type:"uint256"},{internalType:"uint256",name:"stakedAmount",type:"uint256"},{components:[{internalType:"uint48",name:"startTimestampHour",type:"uint48"},{internalType:"uint48",name:"endTimestampHour",type:"uint48"},{internalType:"uint96",name:"rewardsPerHour",type:"uint96"},{internalType:"uint96",name:"capPerPosition",type:"uint96"}],internalType:"struct ApeCoinStaking.TimeRange",name:"currentTimeRange",type:"tuple"}],internalType:"struct ApeCoinStaking.PoolUI",name:"",type:"tuple"}],stateMutability:"view",type:"function"}],oo).getPoolsUI},lo={sApe:"0x7966c5bae631294d7cffcea5430b78c2f76db6fa"},po=async(e=1,t=co)=>{let a=0;try{const e=(await t.getPoolsUI())[0],n=e.stakedAmount,s=e.currentTimeRange.rewardsPerHour.mul(8760);a=Number(s.mul(1e4).div(n))}catch(e){console.error("Failed to fetch Tessera Ape Coin APR:",e)}return{[lo.sApe]:a}},uo={eUSDC:"0xeb91861f8a4e1c12333f42dce8fb0ecdc28da716",eDAI:"0xe025e3ca2be02316033184551d4d3aa22024d9dc",eUSDT:"0x4d19f33948b99800b6113ff3e83bec9b537c85d2",eFRAX:"0x5484451a88a35cd0878a1be177435ca8a0e4054e"},yo={[ue.MAINNET]:"https://api.thegraph.com/subgraphs/name/euler-xyz/euler-mainnet"},bo=async()=>{const e=ue.MAINNET,t={operationName:"getAssetsAPY",query:"\n query getAssetsAPY($eTokenAddress_in: [String!]) {\n assets(\n where: {\n eTokenAddress_in: $eTokenAddress_in\n }\n ) {\n eTokenAddress\n supplyAPY\n }\n }\n",variables:{eTokenAddress_in:Object.values(uo)}},a=await h.post(yo[e],t),{data:{assets:n}}=a.data,s={eUSDT:0,eDAI:0,eUSDC:0,eFRAX:0};return n.forEach((({eTokenAddress:e,supplyAPY:t})=>{const a=Object.entries(uo).filter((([,t])=>t.toLocaleLowerCase()===e.toLocaleLowerCase()))[0][0];s[a]=Math.round(1e4*parseFloat(rt(d.from(t),27)))})),{[uo.eUSDT]:s.eUSDT,[uo.eDAI]:s.eDAI,[uo.eUSDC]:s.eUSDC,[uo.eFRAX]:s.eFRAX}},fo=Object.fromEntries([...Object.values(Wr).map((e=>[e,Vr])),...Object.values(Xr).map((e=>[e,Kr])),...Object.values(ct).map((e=>[e,ft])),...Object.values(Yr).map((e=>[e,Jr])),...Object.values(Hr).map((e=>[e,jr])),...Object.values(Zr).map((e=>[e,zr])),...Object.values(Qr).map((e=>[e,eo])),...Object.values(to).map((e=>[e,ao])),...Object.values(no).map((e=>[e,so])),...Object.values(io).map((e=>[e,ro])),...Object.values(lo).map((e=>[e,po])),...Object.values(uo).map((e=>[e,bo]))]);class mo{constructor(e,t=fo){this.network=e,this.sources=t,this.yields={}}async fetch(e){const t=await this.sources[e](this.network);this.yields={...this.yields,...t}}async find(e){const t=e.toLocaleLowerCase();return Object.keys(this.sources).includes(t)&&!Object.keys(this.yields).includes(t)&&await this.fetch(t),this.yields[t]}async findBy(e,t){if("address"==e)return this.find(t)}}const ho=e=>`{\n blocks(first: 1, orderBy: timestamp, orderDirection: asc, where: { timestamp_gt: ${e} }) {\n number\n }\n}`,To=async(e,t)=>{const a={query:ho(t)},n=await h.post(e,a),{data:{blocks:s}}=n.data;return parseInt(s[0].number)};class go{constructor(e){this.endpoint=e,this.blocks={}}async find(e){if("dayAgo"==e){const e=""+(Math.floor(Date.now()/1e3)-86400);return this.blocks[e]||(this.blocks={...this.blocks,[e]:To(this.endpoint,e)}),this.blocks[e]}}async findBy(e="",t=""){}}var Io,wo,Eo=[{chainId:1,address:"0x8888801af4d980682e47f1a9036e589479e835c5",symbol:"mph"},{chainId:1,address:"0x27054b13b1b798b345b591a4d22e6562d47ea75a",symbol:"ast"},{chainId:1,address:"0x3301ee63fb29f863f2333bd4466acb46cd8323e6",symbol:"akita"},{chainId:1,address:"0x616e8bfa43f920657b3497dbf40d6b1a02d4608d",symbol:"aurabal"},{chainId:1,address:"0xc0c293ce456ff0ed870add98a0828dd4d2903dbf",symbol:"aura"},{chainId:1,address:"0x3472a5a71965499acd81997a54bba8d852c6e53d",symbol:"badger"},{chainId:1,address:"0xba100000625a3754423978a60c9317c58a424e3d",symbol:"bal"},{chainId:1,address:"0x804cdb9116a10bb78768d3252355a1b18067bf8f",symbol:"bb-a-dai"},{chainId:1,address:"0x9210f1204b5a24742eba12f710636d76240df3d0",symbol:"bb-a-usdc"},{chainId:1,address:"0x2bbf681cc4eb09218bee85ea2a5d3d13fa40fc0c",symbol:"bb-a-usdt"},{chainId:1,address:"0x7b50775383d3d6f0215a8f290f2c9e2eebbeceb2",symbol:"bb-a-usd"},{chainId:1,address:"0x2d94aa3e47d9d5024503ca8491fce9a2fb4da198",symbol:"bank"},{chainId:1,address:"0x0d8775f648430679a709e98d2b0cb6250d2887ef",symbol:"bat"},{chainId:1,address:"0xf17e65822b568b3903685a7c9f496cf7656cc6c2",symbol:"bico"},{chainId:1,address:"0x799ebfabe77a6e34311eeee9825190b9ece32824",symbol:"btrst"},{chainId:1,address:"0x514910771af9ca656af840dff83e8264ecf986ca",symbol:"link"},{chainId:1,address:"0x3506424f91fd33084466f402d5d97f05f8e3b4af",symbol:"chz"},{chainId:1,address:"0x41e5560054824ea6b0732e656e3ad64e20e94e45",symbol:"cvc"},{chainId:1,address:"0xc00e94cb662c3520282e6f5717214004a7f26888",symbol:"comp"},{chainId:1,address:"0xdef1ca1fb7fbcdc777520aa7f396b4e015f497ab",symbol:"cow"},{chainId:1,address:"0xd533a949740bb3306d119cc777fa900ba034cd52",symbol:"crv"},{chainId:1,address:"0x6b175474e89094c44da98b954eedeac495271d0f",symbol:"dai"},{chainId:1,address:"0xf2051511b9b121394fa75b8f7d4e7424337af687",symbol:"haus"},{chainId:1,address:"0x888888435fde8e7d4c54cab67f206e4199454c60",symbol:"dfx"},{chainId:1,address:"0x798d1be841a82a273720ce31c822c61a67a601c3",symbol:"digg"},{chainId:1,address:"0xf629cbd94d3791c9250152bd8dfbdf380e2a3b9c",symbol:"enj"},{chainId:1,address:"0xc18360217d8f7ab5e7c516566761ea12ce7f9d72",symbol:"ens"},{chainId:1,address:"0x4e15361fd6b4bb609fa63c81a2be19d873717870",symbol:"ftm"},{chainId:1,address:"0x956f47f50a910163d8bf957cf5846d573e7f87ca",symbol:"fei"},{chainId:1,address:"0xed1480d12be41d92f36f5f7bdd88212e381a3677",symbol:"fdt"},{chainId:1,address:"0x586aa273f262909eef8fa02d90ab65f5015e0516",symbol:"fiat"},{chainId:1,address:"0xde30da39c46104798bb5aa3fe8b9e0e1f348163f",symbol:"gtc"},{chainId:1,address:"0x900db999074d9277c5da2a43f252d74366230da0",symbol:"giv"},{chainId:1,address:"0x6810e776880c02933d47db1b9fc05908e5386b96",symbol:"gno"},{chainId:1,address:"0xba485b556399123261a5f9c95d413b4f93107407",symbol:"graviaura"},{chainId:1,address:"0x3ec8798b81485a254928b70cda1cf0a2bb0b74d7",symbol:"gro"},{chainId:1,address:"0xc011a73ee8576fb46f5e1c5751ca3b9fe0af2a6f",symbol:"snx"},{chainId:1,address:"0x5a98fcbea516cf06857215779fd812ca3bef1b32",symbol:"ldo"},{chainId:1,address:"0x6dea81c8171d0ba574754ef6f8b412f2ed88c54d",symbol:"lqty"},{chainId:1,address:"0x5f98805a4e8be255a32880fdec7f6728c6568ba0",symbol:"lusd"},{chainId:1,address:"0x965d79f1a1016b574a62986e13ca8ab04dfdd15c",symbol:"m2"},{chainId:1,address:"0x9f8f72aa9304c8b593d555f12ef6589cc3a579a2",symbol:"mkr"},{chainId:1,address:"0xd084944d3c05cd115c09d072b9f44ba3e0e45921",symbol:"fold"},{chainId:1,address:"0x7d1afa7b718fb893db30a3abc0cfc608aacfebb0",symbol:"matic"},{chainId:1,address:"0xa3bed4e1c75d00fa6f4e5e6922db7261b5e9acd2",symbol:"mta"},{chainId:1,address:"0x4b13006980acb09645131b91d259eaa111eaf5ba",symbol:"myc"},{chainId:1,address:"0x333a4823466879eef910a04d473505da62142069",symbol:"nation"},{chainId:1,address:"0xcfeaead4947f0705a14ec42ac3d44129e1ef3ed5",symbol:"note"},{chainId:1,address:"0x967da4048cd07ab37855c090aaf366e4ce1b9f48",symbol:"ocean"},{chainId:1,address:"0x64aa3364f17a4d01c6f1751fd97c2bd3d7e7f1d5",symbol:"ohm"},{chainId:1,address:"0xab846fb6c81370327e784ae7cbb6d6a6af6ff4bf",symbol:"pal"},{chainId:1,address:"0xcafe001067cdef266afb7eb5a286dcfd277f3de5",symbol:"psp"},{chainId:1,address:"0x68037790a0229e9ce6eaa8a99ea92964106c4703",symbol:"par"},{chainId:1,address:"0x45804880de22913dafe09f4980848ece6ecbaf78",symbol:"paxg"},{chainId:1,address:"0x89ab32156e46f46d02ade3fecbe5fc4243b9aaed",symbol:"pnt"},{chainId:1,address:"0x9992ec3cf6a55b00978cddf2b27bc6882d88d1ec",symbol:"poly"},{chainId:1,address:"0x43d4a3cd90ddd2f8f4f693170c9c8098163502ad",symbol:"d2d"},{chainId:1,address:"0xeb4c2781e4eba804ce9a9803c67d0893436bb27d",symbol:"renbtc"},{chainId:1,address:"0x408e41876cccdc0f92210600ef50372656052a38",symbol:"ren"},{chainId:1,address:"0xfb5453340c03db5ade474b27e68b6a9c6b2823eb",symbol:"robot"},{chainId:1,address:"0xd33526068d116ce69f19a9ee46f0bd304f21a51f",symbol:"rpl"},{chainId:1,address:"0xae78736cd615f374d3085123a210448e74fc6393",symbol:"reth"},{chainId:1,address:"0xfe18be6b3bd88a2d2a7f928d00292e7a9963cfc6",symbol:"sbtc"},{chainId:1,address:"0x476c5e26a75bd202a9683ffd34359c0cc15be0ff",symbol:"srm"},{chainId:1,address:"0x35e78b3982e87ecfd5b3f3265b601c046cdbe232",symbol:"xai"},{chainId:1,address:"0x3affcca64c2a6f4e3b6bd9c64cd2c969efd1ecbe",symbol:"dsla"},{chainId:1,address:"0xf24d8651578a55b0c119b9910759a351a3458895",symbol:"sdbal"},{chainId:1,address:"0x11c1a6b3ed6bb362954b29d3183cfa97a0c806aa",symbol:"str"},{chainId:1,address:"0x8f693ca8d21b157107184d29d398a8d082b38b76",symbol:"data"},{chainId:1,address:"0x470ebf5f030ed85fc1ed4c2d36b9dd02e77cf1b7",symbol:"temple"},{chainId:1,address:"0xa36fdbbae3c9d55a1d67ee5821d53b50b63a1ab9",symbol:"temp"},{chainId:1,address:"0xdac17f958d2ee523a2206206994597c13d831ec7",symbol:"usdt"},{chainId:1,address:"0x9c4a4204b79dd291d6b6571c5be8bbcd0622f050",symbol:"tcr"},{chainId:1,address:"0x226f7b842e0f0120b7e194d05432b3fd14773a9d",symbol:"unn"},{chainId:1,address:"0x1f9840a85d5af5bf1d1762f925bdaddc4201f984",symbol:"uni"},{chainId:1,address:"0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48",symbol:"usdc"},{chainId:1,address:"0x81f8f0bb1cb2a06649e51913a151f0e7ef6fa321",symbol:"vita"},{chainId:1,address:"0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2",symbol:"weth"},{chainId:1,address:"0xedb171c18ce90b633db442f2a6f72874093b49ef",symbol:"wampl"},{chainId:1,address:"0x2260fac5e5542a773aa44fbcfedf7c193bc2c599",symbol:"wbtc"},{chainId:1,address:"0xf203ca1769ca8e9e8fe1da9d147db68b6c919817",symbol:"wncg"},{chainId:1,address:"0x7f39c581f595b53c5cb19bd0b3f8da6c935e2ca0",symbol:"wsteth"},{chainId:1,address:"0x79c71d3436f39ce382d0f58f1b011d88100b9d91",symbol:"xns"},{chainId:1,address:"0x0bc529c00c6401aef6d220be8c6ea1667f6ad93e",symbol:"yfi"},{chainId:1,address:"0xbcca60bb61934080951369a648fb03df4f96263c",symbol:"ausdc"},{chainId:1,address:"0x028171bca77440897b824ca71d1c56cac55b68a3",symbol:"adai"},{chainId:1,address:"0x3ed3b47dd13ec9a98b44e6204a523e766b225811",symbol:"ausdt"},{chainId:137,address:"0x9c2c5fd7b07e95ee044ddeba0e97a665f142394f",symbol:"1inch"},{chainId:137,address:"0xd6df932a45c0f255f85145f286ea0b292b21c90b",symbol:"aave"},{chainId:137,address:"0xc3fdbadc7c795ef1d6ba111e06ff8f16a20ea539",symbol:"addy"},{chainId:137,address:"0xf84bd51eab957c2e7b7d646a3427c5a50848281d",symbol:"agar"},{chainId:137,address:"0x033d942a6b495c4071083f4cde1f17e986fe856c",symbol:"aga"},{chainId:137,address:"0x0e9b89007eee9c958c0eda24ef70723c2c93dd58",symbol:"amaticc"},{chainId:137,address:"0x034b2090b579228482520c589dbd397c53fc51cc",symbol:"vision"},{chainId:137,address:"0x2c89bbc92bd86f8075d1decc58c7f4e0107f286b",symbol:"avax"},{chainId:137,address:"0x49690541e3f6e933a9aa3cffee6010a7bb5b72d7",symbol:"axiav3"},{chainId:137,address:"0x9a71012b13ca4d3d0cdc72a177df3ef03b0e76a3",symbol:"bal"},{chainId:137,address:"0xdb7cb471dd0b49b29cab4a1c14d070f27216a0ab",symbol:"bank"},{chainId:137,address:"0xfbdd194376de19a88118e84e279b977f165d01b8",symbol:"bifi"},{chainId:137,address:"0xd6ca869a4ec9ed2c7e618062cdc45306d8dbbc14",symbol:"btc2x-fli-p"},{chainId:137,address:"0x53e0bca35ec356bd5dddfebbd1fc0fd03fabad39",symbol:"link"},{chainId:137,address:"0x172370d5cd63279efa6d502dab29171933a610af",symbol:"crv"},{chainId:137,address:"0x8f3cf7ad23cd3cadbd9735aff958023239c6a063",symbol:"dai"},{chainId:137,address:"0x1d607faa0a51518a7728580c238d912747e71f7a",symbol:"data"},{chainId:137,address:"0x85955046df4668e1dd369d2de9f3aeb98dd2a369",symbol:"dpi"},{chainId:137,address:"0xe7804d91dfcde7f776c90043e03eaa6df87e6395",symbol:"dfx"},{chainId:137,address:"0xf28164a485b0b2c90639e47b0f377b4a438a16b1",symbol:"dquick"},{chainId:137,address:"0x45c32fa6df82ead1e2ef74d17b76547eddfaff89",symbol:"frax"},{chainId:137,address:"0x50b728d8d964fd00c2d0aad81718b71311fef68a",symbol:"snx"},{chainId:137,address:"0x72928d5436ff65e57f72d5566dcd3baedc649a88",symbol:"hdao"},{chainId:137,address:"0x3ad707da309f3845cd602059901e39c4dcd66473",symbol:"eth2x-fli-p"},{chainId:137,address:"0x4f025829c4b13df652f38abd2ab901185ff1e609",symbol:"ieth-fli-p"},{chainId:137,address:"0x340f412860da7b7823df372a2b59ff78b7ae6abc",symbol:"imatic-fli-p"},{chainId:137,address:"0xf287d97b6345bad3d88856b26fb7c0ab3f2c7976",symbol:"matic2x-fli-p"},{chainId:137,address:"0x130ce4e4f76c2265f94a961d70618562de0bb8d2",symbol:"ibtc-fli-p"},{chainId:137,address:"0x596ebe76e2db4470966ea395b0d063ac6197a8c5",symbol:"jrt"},{chainId:137,address:"0x3a58a54c066fdc0f2d55fc9c89f0415c92ebf3c4",symbol:"stmatic"},{chainId:137,address:"0xf501dd45a1198c2e1b5aef5314a68b9006d842e0",symbol:"mta"},{chainId:137,address:"0xeaecc18198a475c921b24b8a6c1c1f0f5f3f7ea0",symbol:"seed"},{chainId:137,address:"0xfe712251173a2cd5f5be2b46bb528328ea3565e1",symbol:"mvi"},{chainId:137,address:"0xa3fa99a148fa48d14ed51d610c367c61876997f1",symbol:"mimatic"},{chainId:137,address:"0xa486c6bc102f409180ccb8a94ba045d39f8fc7cb",symbol:"nex"},{chainId:137,address:"0xe2aa7db6da1dae97c5f5c6914d285fbfcc32a128",symbol:"par"},{chainId:137,address:"0x580a84c73811e1839f75d86d75d88cca0c241ff4",symbol:"qi"},{chainId:137,address:"0x831753dd7087cac61ab5644b308642cc1c33dc13",symbol:"quick"},{chainId:137,address:"0xb5c064f955d8e7f38fe0460c556a72987494ee17",symbol:"quick"},{chainId:137,address:"0x00e5646f60ac6fb446f621d146b6e1886f002905",symbol:"rai"},{chainId:137,address:"0x431cd3c9ac9fc73644bf68bf5691f4b83f9e104f",symbol:"rbw"},{chainId:137,address:"0xdbf31df14b66535af65aac99c32e9ea844e14501",symbol:"renbtc"},{chainId:137,address:"0x501ace9c35e60f03a2af4d484f49f9b1efde9f40",symbol:"solace"},{chainId:137,address:"0xfa68fb4628dff1028cfec22b4162fccd0d45efb6",symbol:"maticx"},{chainId:137,address:"0x0b3f868e0be5597d5db7feb59e1cadbb0fdda50a",symbol:"sushi"},{chainId:137,address:"0xdf7837de1f2fa4631d716cf2502f8b230f1dcc32",symbol:"tel"},{chainId:137,address:"0xe6469ba6d2fd6130788e0ea9c0a0515900563b59",symbol:"ust"},{chainId:137,address:"0xc2132d05d31c914a87c6611c10748aeb04b58e8f",symbol:"usdt"},{chainId:137,address:"0x5fe2b58c013d7601147dcdd68c143a77499f5531",symbol:"grt"},{chainId:137,address:"0xbbba073c31bf03b8acf7c28ef0738decf3695683",symbol:"sand"},{chainId:137,address:"0x2934b36ca9a4b31e633c5be670c8c8b28b6aa015",symbol:"thx"},{chainId:137,address:"0x2f800db0fdb5223b3c3f354886d907a671414a7f",symbol:"bct"},{chainId:137,address:"0x2e1ad108ff1d8c782fcbbb89aad783ac49586756",symbol:"tusd"},{chainId:137,address:"0x3809dcdd5dde24b37abe64a5a339784c3323c44f",symbol:"swap"},{chainId:137,address:"0x7fbc10850cae055b27039af31bd258430e714c62",symbol:"ubt"},{chainId:137,address:"0x2791bca1f2de4661ed88a30c99a7a9449aa84174",symbol:"usdc"},{chainId:137,address:"0x7ceb23fd6bc0add59e62ac25578270cff1b9f619",symbol:"weth"},{chainId:137,address:"0x0d500b1d8e8ef31e21c99d1db9a6444d3adf1270",symbol:"wmatic"},{chainId:137,address:"0x1bfd67037b42cf73acf2047067bd4f2c47d9bfd6",symbol:"wbtc"},{chainId:137,address:"0x24834bbec7e39ef42f4a75eaf8e5b6486d3f0e57",symbol:"lunc"},{chainId:137,address:"0xf153eff70dc0bf3b085134928daeea248d9b30d0",symbol:"xmark"},{chainId:42161,address:"0x9f20de1fc9b161b34089cbeae888168b44b03461",symbol:"arbis"},{chainId:42161,address:"0x040d1edc9569d4bab2d15287dc5a4f10f56a56b8",symbol:"bal"},{chainId:42161,address:"0x031d35296154279dc1984dcd93e392b1f946737b",symbol:"cap"},{chainId:42161,address:"0xf97f4df75117a78c1a5a0dbb814af92458539fb4",symbol:"link"},{chainId:42161,address:"0x354a6da3fcde098f8389cad84b0182725c6c91de",symbol:"comp"},{chainId:42161,address:"0xf4d48ce3ee1ac3651998971541badbb9a14d7234",symbol:"cream"},{chainId:42161,address:"0x11cdb42b0eb46d95f990bedd4695a6e3fa034978",symbol:"crv"},{chainId:42161,address:"0xda10009cbd5d07dd0cecc66161fc93d7c9000da1",symbol:"dai"},{chainId:42161,address:"0x8038f3c971414fd1fc220ba727f2d4a0fc98cb65",symbol:"dht"},{chainId:42161,address:"0xf0b5ceefc89684889e5f7e0a7775bd100fcd3709",symbol:"dusd"},{chainId:42161,address:"0x6c2c06790b3e3e3c38e12ee22f8183b37a13ee55",symbol:"dpx"},{chainId:42161,address:"0x32eb7902d4134bf98a28b963d26de779af92a212",symbol:"rdpx"},{chainId:42161,address:"0xc3ae0333f0f34aa734d5493276223d95b8f9cb37",symbol:"dxd"},{chainId:42161,address:"0xfc5a1a6eb076a2c7ad06ed22c90d7e710e35ad0a",symbol:"gmx"},{chainId:42161,address:"0xa0b862f60edef4452f25b4160f177db44deb6cf1",symbol:"gno"},{chainId:42161,address:"0xb965029343d55189c25a7f3e0c9394dc0f5d41b1",symbol:"ndx"},{chainId:42161,address:"0x539bde0d7dbd336b79148aa742883198bbf60342",symbol:"magic"},{chainId:42161,address:"0x4e352cf164e64adcbad318c3a1e222e9eba4ce42",symbol:"mcb"},{chainId:42161,address:"0x3f56e0c36d275367b8c502090edf38289b3dea0d",symbol:"mimatic"},{chainId:42161,address:"0x965772e0e9c84b6f359c8597c891108dcf1c5b1a",symbol:"pickle"},{chainId:42161,address:"0x6694340fc020c5e6b96567843da2df01b2ce1eb6",symbol:"stg"},{chainId:42161,address:"0xd4d42f0b6def4ce0383636770ef773390d85c61a",symbol:"sushi"},{chainId:42161,address:"0xfd086bc7cd5c481dcc9c85ebe478a1c0b69fcbb9",symbol:"usdt"},{chainId:42161,address:"0x23a941036ae778ac51ab04cea08ed6e2fe103614",symbol:"grt"},{chainId:42161,address:"0xa72159fc390f0e3c6d415e658264c7c4051e9b87",symbol:"tcr"},{chainId:42161,address:"0x4d15a3a2286d883af0aa1b3f21367843fac63e07",symbol:"tusd"},{chainId:42161,address:"0xfa7f8980b0f1e64a2062791cc3b0871572f1f7f0",symbol:"uni"},{chainId:42161,address:"0xff970a61a04b1ca14834a43f5de4533ebddb5cc8",symbol:"usdc"},{chainId:42161,address:"0xa684cd057951541187f288294a1e1c2646aa2d24",symbol:"vsta"},{chainId:42161,address:"0x64343594ab9b56e99087bfa6f2335db24c2d1f17",symbol:"vst"},{chainId:42161,address:"0x82af49447d8a07e3bd95bd0d56f35241523fbab1",symbol:"weth"},{chainId:42161,address:"0x2f2a2543b76a4166549f7aab2e75bef0aefc5b0f",symbol:"wbtc"},{chainId:42161,address:"0x82e3a8f066a6989666b031d916c43672085b1582",symbol:"yfi"},{chainId:16116,address:"0x5a89E11Cb554E00c2f51C4bb7F05bc7Ab0Fa6351",symbol:"weth"},{chainId:9372,address:"0x5200000000000000000000000000000000000001",symbol:"weth"},{chainId:248,address:"0x5200000000000000000000000000000000000001",symbol:"weth"},{chainId:6343,address:"0xAba76Cdc5910F6627856EB75Bcce0171376999C7",symbol:"weth"},{chainId:4326,address:"0x4200000000000000000000000000000000000006",symbol:"weth"}];class xo{constructor(e,t,a){this.pools=new hr({url:e.urls.subgraph,chainId:e.chainId}),this.poolsOnChain=new Tr({url:e.urls.subgraph,chainId:e.chainId,provider:t,multicall:e.addresses.contracts.multicall,vault:e.addresses.contracts.vault,query:a}),this.poolShares=new Er(e.urls.subgraph,e.chainId),this.poolJoinExits=new wr(e.urls.subgraph,e.chainId),e.urls.gaugesSubgraph&&(this.poolGauges=new gr(e.urls.gaugesSubgraph,e.chainId),this.gaugeShares=new or(e.urls.gaugesSubgraph,e.chainId)),e.urls.blockNumberSubgraph&&(this.blockNumbers=new go(e.urls.blockNumberSubgraph));this.yesterdaysPools=new hr({url:e.urls.subgraph,chainId:e.chainId,blockHeight:async()=>{const e=await t.getBlockNumber();return Number(e)-5e3}});const n=Eo.filter((t=>t.chainId==e.chainId)).map((e=>e.address)),s=new Sr(n,e.chainId),i=new _r(e.urls.subgraph,e.chainId),r=new kr(e.addresses.contracts.multicall,t,e.chainId);this.tokenPrices=new vr(s,i,r);const o=new Pr(e.chainId);this.tokenHistoricalPrices=new Or(o,r),this.tokenMeta=new xr([]),e.urls.gaugesSubgraph&&(this.liquidityGauges=new ur(e.urls.gaugesSubgraph,e.addresses.contracts.multicall,e.addresses.contracts.gaugeController||"",e.chainId,t)),e.addresses.contracts.feeDistributor&&e.addresses.tokens.bal&&e.addresses.tokens.veBal&&e.addresses.tokens.bbaUsd&&(this.feeDistributor=new Fr(e.addresses.contracts.multicall,e.addresses.contracts.feeDistributor,e.addresses.tokens.bal,e.addresses.tokens.veBal,e.addresses.tokens.bbaUsd,t)),this.feeCollector=new Ur(e.addresses.contracts.vault,t),e.addresses.contracts.protocolFeePercentagesProvider&&(this.protocolFees=new qr(e.addresses.contracts.multicall,e.addresses.contracts.protocolFeePercentagesProvider,t)),this.tokenYields=new mo(e.chainId)}}class Ao{constructor(e,t=new Os(e),a=new Xs(e)){this.config=e,this.sor=t,this.subgraph=a,this.networkConfig=vs(e),this.provider=t.provider,this.data=new xo(this.networkConfig,t.provider,e.subgraphQuery),this.swaps=new Vs(this.config),this.relayer=new js(this.swaps),this.pricing=new Ks(e,this.swaps),this.pools=new tr(this.networkConfig,this.data),this.balancerContracts=new ii(this.networkConfig.addresses.contracts,t.provider),this.zaps=new vi(this.networkConfig.chainId)}get rpcProvider(){return this.sor.provider}get contracts(){return this.balancerContracts.contracts}}!function(e){e[e.Direct=0]="Direct",e[e.TokenIn=1]="TokenIn",e[e.TokenOut=2]="TokenOut",e[e.Middle=3]="Middle"}(Io||(Io={})),function(e){e[e.Swap=0]="Swap",e[e.BatchSwap=1]="BatchSwap",e[e.Join=2]="Join",e[e.Exit=3]="Exit"}(wo||(wo={}));const So={type:wo.BatchSwap,swaps:[],opRef:[],minOut:"0",assets:[],hasTokenIn:!1,hasTokenOut:!1,fromInternal:!1,toInternal:!1,limits:[],approveTokens:[],sender:"",receiver:""},Po=new t(ai);function _o(e,t){return e.some((e=>e.address.toLowerCase()===t.toLowerCase()))}function vo(e,t,a){return e!==N.SwapExactOut&&t.toLowerCase()!==i.toLowerCase()&&a.toLowerCase()!==i.toLowerCase()}function Oo(e,t){const a=t[e.assetOutIndex],n=ce(e.poolId);return a.toLowerCase()===n.toLowerCase()}function Bo(e,t){const a=t[e.assetInIndex],n=ce(e.poolId);return a.toLowerCase()===n.toLowerCase()}function ko(e,t,a){return t.some((t=>function(e,t,a){const n=e.find((e=>e.id===t.poolId));return"Weighted"===(null==n?void 0:n.poolType)&&[a[t.assetInIndex],a[t.assetOutIndex]].includes(n.address)}(e,t,a)))}function Do(e,t,a){let n={};var s;return e!==Io.TokenIn&&e!==Io.Middle||(s=a,n={index:t,key:js.toChainedReference(s)},a++),[n,a]}function No(e,t){return Ft(d.from(e),d.from(t)).toString()}function Co(e,t,a,n){let s=e.amount;return(a===Io.TokenOut||a===Io.Middle&&t===wo.Join||a===Io.Middle&&t===wo.Exit)&&(s=js.toChainedReference(n-1).toString()),s}function Fo(e,t,a,n){let s;return s=a===e&&n===t?Io.Direct:a===e?Io.TokenIn:n===t?Io.TokenOut:Io.Middle,s}function Ro(e,t){const a=function(e){const t=[],a=[],n=[];for(const s of e)s.type===wo.Exit||s.type===wo.Join?s.hasTokenIn?t.push(s):s.hasTokenOut?a.push(s):n.push(s):n.push(s);return[...t,...n,...a]}(e),n=function(e,t){const a=[];let n=g(So);n.assets=t,n.limits=Array(t.length).fill(d.from("0"));let s=!0,i={};for(const r of e)r.type===wo.Swap?(s&&(i=r,s=!1),r.isBptIn&&n.approveTokens.push(r.assets[r.swap.assetInIndex]),r.fromInternal===i.fromInternal&&r.toInternal===i.toInternal&&r.receiver===i.receiver&&r.sender===i.sender||n.swaps.length>0&&(a.push(n),n=g(So),n.assets=t,n.limits=Array(t.length).fill(d.from("0"))),n.swaps.push(r.swap),n.opRef.push(...r.opRef),n.fromInternal=r.fromInternal,n.toInternal=r.toInternal,n.sender=r.sender,n.receiver=r.receiver,r.hasTokenIn?(n.hasTokenIn=!0,n.limits[r.swap.assetInIndex]=n.limits[r.swap.assetInIndex].add(r.amountIn)):n.limits[r.swap.assetInIndex]=o,r.hasTokenOut&&(n.hasTokenOut=!0,n.limits[r.swap.assetOutIndex]=n.limits[r.swap.assetOutIndex].sub(r.minOut)),i=r):(n.swaps.length>0&&(a.push(n),n=g(So),n.assets=t,n.limits=Array(t.length).fill(d.from("0"))),a.push(r));return n.swaps.length>0&&a.push(n),a}(a,t);return n}function Mo(e,t,a,n,s,i,r,o){var d;const c=Fo(t,a,e.assetInIndex,e.assetOutIndex),l=Co(e,wo.Join,c,n),p=No(null!==(d=e.returnAmount)&&void 0!==d?d:"0",i),[u,y]=Do(c,e.assetOutIndex,n);let b=o,f=!0,m=!1;c!==Io.Direct&&c!==Io.TokenIn||(b=r,f=!1,m=!0);let h=o,T=!1;c!==Io.Direct&&c!==Io.TokenOut||(h=r,T=!0);return[{type:wo.Join,poolId:e.poolId,tokenIn:s[e.assetInIndex],bpt:s[e.assetOutIndex],opRef:u,minOut:p,amountIn:l,assets:s,actionStep:c,sender:b,receiver:h,fromInternal:f,hasTokenIn:m,hasTokenOut:T},y]}function Lo(e,t,a,n,s,i,r,o){var d;const c=Fo(t,a,e.assetInIndex,e.assetOutIndex),l=Co(e,wo.Exit,c,n),p=No(null!==(d=e.returnAmount)&&void 0!==d?d:"0",i),[u,y]=Do(c,e.assetOutIndex,n);let b=o,f=!1;c!==Io.Direct&&c!==Io.TokenIn||(b=r,f=!0);let m=!1,h=!0,T=o;c!==Io.Direct&&c!==Io.TokenOut||(T=r,h=!1,m=!0);return[{type:wo.Exit,poolId:e.poolId,tokenOut:s[e.assetOutIndex],bpt:s[e.assetInIndex],opRef:u.key?[u]:[],minOut:p,amountIn:l,assets:s,actionStep:c,sender:b,receiver:T,toInternal:h,hasTokenIn:f,hasTokenOut:m},y]}function Uo(e,t,a,n,s,i,r,o,d){var c;const l=Fo(t,a,e.assetInIndex,e.assetOutIndex),p=Co(e,wo.Swap,l,n);e.amount=p;const u=No(null!==(c=e.returnAmount)&&void 0!==c?c:"0",i),[y,b]=Do(l,e.assetOutIndex,n),f=l===Io.Direct||l===Io.TokenIn,m=l===Io.Direct||l===Io.TokenOut,h=_o(r,s[e.assetInIndex]);let T=!0;(f||h)&&(T=!1);let g,I,w=!0;(m||_o(r,s[e.assetOutIndex]))&&(w=!1),g=f?o:d,I=m?o:d;return[{type:wo.Swap,opRef:y.key?[y]:[],minOut:u,amountIn:p,assets:s,swap:e,hasTokenIn:f,hasTokenOut:m,fromInternal:T,toInternal:w,isBptIn:h,sender:g,receiver:I},b]}function Go(e,t,a){const n=e.tokensList,s=new we(a),[i]=s.sortTokens(n),r=t.tokenOut,o=i.findIndex((e=>e.toLowerCase()===r.toLowerCase())),d=Array(n.length).fill("0");d[o]=t.minOut;const c=t.amountIn,l={assets:i,minAmountsOut:d,userData:z.exitExactBPTInForOneTokenOut(c,o),toInternalBalance:t.toInternal,poolId:t.poolId,poolKind:0,sender:t.sender,recipient:t.receiver,outputReferences:t.opRef,exitPoolRequest:{}},p=js.constructExitCall(l),u=t.hasTokenOut?d[o]:"0";return[p,t.hasTokenIn?c:"0",u]}function $o(e,t,a){const n=e.tokensList,s=new we(a),[i]=s.sortTokens(n),r=t.tokenIn,o=i.findIndex((e=>e.toLowerCase()===r.toLowerCase())),d=Array(n.length).fill("0");d[o]=t.amountIn;const c=t.minOut,l=z.joinExactTokensInForBPTOut(d,c),p={poolId:t.poolId,sender:t.sender,recipient:t.receiver,kind:0,joinPoolRequest:{assets:i,maxAmountsIn:d,userData:l,fromInternalBalance:t.fromInternal},value:"0",outputReference:t.opRef.key?t.opRef.key.toString():"0"},u=js.encodeJoinPool(p),y=t.hasTokenOut?c:"0";return[u,t.hasTokenIn?d[o]:"0",y]}function qo(e,t,a){const n=[];for(const t of e.approveTokens){const e=js.encodeApproveVault(t,r.toString());n.push(e)}const s={sender:e.sender,recipient:e.receiver,fromInternalBalance:e.fromInternal,toInternalBalance:e.toInternal},i={swapType:kt.SwapExactIn,swaps:e.swaps,assets:e.assets,funds:s,limits:e.limits.map((e=>e.toString())),deadline:d.from(Math.ceil(Date.now()/1e3)+3600),value:"0",outputReferences:e.opRef},o=js.encodeBatchSwap(i);n.push(o);const c=e.assets.findIndex((e=>e.toLowerCase()===t.toLowerCase())),l=e.assets.findIndex((e=>e.toLowerCase()===a.toLowerCase()));return[n,e.hasTokenIn?e.limits[c].toString():"0",e.hasTokenOut?e.limits[l].abs().toString():"0"]}function Wo(e,t,a,n,s,i,r){const o=function(e,t,a,n,s,i,r,o){const d=n.findIndex((t=>t.toLowerCase()===e.toLowerCase())),c=n.findIndex((e=>e.toLowerCase()===t.toLowerCase())),l=[];let p=0,u={};for(const e of a)if(Oo(e,n)){const[t,a]=Mo(e,d,c,p,n,s,r,o);p=a,l.push(t),u=t}else{if(!Bo(e,n)){const t=e.amount,[a,y]=Uo(e,d,c,p,n,s,i,r,o);u.type===wo.Swap&&"0"===t&&(u.receiver=u.sender,u.toInternal=u.fromInternal,u.opRef=[],a.sender=u.receiver,a.fromInternal=u.fromInternal,a.amountIn="0",a.swap.amount="0"),p=y,l.push(a),u=a;continue}{const[t,a]=Lo(e,d,c,p,n,s,r,o);p=a,l.push(t),u=t}}return l}(e.tokenIn,e.tokenOut,e.swaps,e.tokenAddresses,i,t,a,n),c=Ro(o,e.tokenAddresses),l=[],p=[],u=[];r&&l.push(function(e,t){return js.encodeSetRelayerApproval(t,!0,e)}(r,n));for(const a of c){if(a.type===wo.Exit){const e=t.find((e=>e.id===a.poolId));if(void 0===e)throw new $t(Gt.NO_POOL_DATA);const[n,i,r]=Go(e,a,s);l.push(n),p.push(d.from(i)),u.push(d.from(r))}if(a.type===wo.Join){const e=t.find((e=>e.id===a.poolId));if(void 0===e)throw new $t(Gt.NO_POOL_DATA);const[n,i,r]=$o(e,a,s);l.push(n),p.push(d.from(i)),u.push(d.from(r))}if(a.type===wo.BatchSwap){const[t,n,s]=qo(a,e.tokenIn,e.tokenOut);l.push(...t),p.push(d.from(n)),u.push(d.from(s))}}!function(e,t,a,n){const s=e.reduce(((e=d.from(0),t)=>e.add(t))),i=t.reduce(((e=d.from(0),t)=>e.add(t))),r=i.sub(Ft(a.returnAmount,d.from(n)));if(!s.eq(a.swapAmount)||!r.lt("3"))throw new $t(Gt.RELAY_SWAP_AMOUNTS)}(p,u,e,i);return{to:n,data:Po.encodeFunctionData("multicall",[l]),rawCalls:l}}export{ye as APR_THRESHOLD,ge as AaveHelpers,kr as AaveRates,we as AssetHelpers,vt as BalancerAPIArgsFormatter,$t as BalancerError,Gt as BalancerErrorCode,xe as BalancerErrors,_e as BalancerMinterAuthorization,Ao as BalancerSDK,go as BlockNumberRepository,Pr as CoingeckoHistoricalPriceRepository,Sr as CoingeckoPriceRepository,se as ComposableStablePoolEncoder,ne as ComposableStablePoolExitKind,ae as ComposableStablePoolJoinKind,xo as Data,It as Debouncer,Ur as FeeCollectorRepository,Fr as FeeDistributorRepository,nr as GaugeControllerMulticallRepository,We as GaugeShareAttributes,or as GaugeSharesRepository,Bt as GraphQLArgsBuilder,Or as HistoricalPriceProvider,Pa as Liquidity,ur as LiquidityGaugeSubgraphRPCProvider,cr as LiquidityGaugesMulticallRepository,lr as LiquidityGaugesSubgraphRepository,Q as ManagedPoolEncoder,ue as Network,he as POOLS,je as PoolBalanceOpKind,$e as PoolGaugesAttributes,gr as PoolGaugesRepository,Ir as PoolJoinExitAttributes,wr as PoolJoinExitRepository,qe as PoolShareAttributes,Er as PoolSharesRepository,Ve as PoolSpecialization,Xe as PoolType,tr as Pools,br as PoolsBalancerAPIRepository,fr as PoolsFallbackRepository,mr as PoolsStaticRepository,Tr as PoolsSubgraphOnChainRepository,hr as PoolsSubgraphRepository,qr as ProtocolFeesProvider,js as Relayer,Se as RelayerAction,Pe as RelayerAuthorization,be as SHALLOW_COMPOSABLE_STABLE_BUFFER,Os as Sor,X as StablePhantomPoolJoinKind,Z as StablePoolEncoder,K as StablePoolExitKind,j as StablePoolJoinKind,Ar as StaticTokenPriceProvider,xr as StaticTokenProvider,Xs as Subgraph,Ot as SubgraphArgsFormatter,_r as SubgraphPriceRepository,kt as SwapType,Vs as Swaps,vr as TokenPriceProvider,mo as TokenYieldsRepository,He as UserBalanceOpKind,z as WeightedPoolEncoder,J as WeightedPoolExitKind,Y as WeightedPoolJoinKind,Ae as accountToAddress,Tt as addressMapIn,Ni as balEmissions,St as bn,Wo as buildRelayerCalls,vo as canUseJoinExit,Et as formatFixed,At as formatFromBigInt18,Dt as getLimitsForSlippage,ce as getPoolAddress,pe as getPoolNonce,le as getPoolSpecialization,_t as insert,te as isNormalizedWeights,Pt as isSameAddress,wt as parseFixed,Le as parsePoolInfo,xt as parseToBigInt18,ve as signPermit,ko as someJoinExit,de as splitPoolId,ee as toNormalizedWeights,ht as tokenAddressForPricing,mt as tokensToTokenPrices,gt as unwrapToken};
|
|
488
|
+
`,ys=(e,t,a)=>e();function bs(e){return Wn(new W(e))}function fs(e){return function(e,t=ys){return{GaugeShare:(a,n)=>t((t=>e.request(ds,a,{...n,...t})),"GaugeShare","query"),GaugeShares:(a,n)=>t((t=>e.request(cs,a,{...n,...t})),"GaugeShares","query"),LiquidityGauges:(a,n)=>t((t=>e.request(ls,a,{...n,...t})),"LiquidityGauges","query"),Pools:(a,n)=>t((t=>e.request(ps,a,{...n,...t})),"Pools","query"),PoolGauges:(a,n)=>t((t=>e.request(us,a,{...n,...t})),"PoolGauges","query")}}(new W(e))}const ms=["function aggregate(tuple[](address target, bytes callData) memory calls) public view returns (uint256 blockNumber, bytes[] memory returnData)"],hs=(e,t)=>new u(e,ms,t);class Ts{constructor(e,a,n,s={}){this.options={},this.calls=[],this.paths=[],this.multiAddress=e,this.provider=a,this.interface=new t(n),this.options=s}call(e,t,a,n){return this.calls.push([t,a,n]),this.paths.push(e),this}async execute(e={}){const t=e;return(await this.executeMulticall()).forEach(((e,a)=>I(t,this.paths[a],e.length>1?e:e[0]))),this.calls=[],this.paths=[],t}async executeMulticall(){const e=hs(this.multiAddress,this.provider),[,t]=await e.aggregate(this.calls.map((([e,t,a])=>[e,this.interface.encodeFunctionData(t,a)])),this.options);return t.map(((e,t)=>this.interface.decodeFunctionResult(this.calls[t][1],e)))}}var gs=[{inputs:[{internalType:"contract IVault",name:"vault",type:"address"},{internalType:"string",name:"name",type:"string"},{internalType:"string",name:"symbol",type:"string"},{internalType:"contract IERC20[]",name:"tokens",type:"address[]"},{internalType:"uint256[]",name:"normalizedWeights",type:"uint256[]"},{internalType:"uint256",name:"swapFeePercentage",type:"uint256"},{internalType:"uint256",name:"pauseWindowDuration",type:"uint256"},{internalType:"uint256",name:"bufferPeriodDuration",type:"uint256"},{internalType:"address",name:"owner",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:!1,internalType:"bool",name:"paused",type:"bool"}],name:"PausedStateChanged",type:"event"},{anonymous:!1,inputs:[{indexed:!1,internalType:"uint256",name:"swapFeePercentage",type:"uint256"}],name:"SwapFeePercentageChanged",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:"pure",type:"function"},{inputs:[{internalType:"address",name:"spender",type:"address"},{internalType:"uint256",name:"amount",type:"uint256"}],name:"decreaseApproval",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"bytes4",name:"selector",type:"bytes4"}],name:"getActionId",outputs:[{internalType:"bytes32",name:"",type:"bytes32"}],stateMutability:"view",type:"function"},{inputs:[],name:"getAuthorizer",outputs:[{internalType:"contract IAuthorizer",name:"",type:"address"}],stateMutability:"view",type:"function"},{inputs:[],name:"getInvariant",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"getLastInvariant",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"getNormalizedWeights",outputs:[{internalType:"uint256[]",name:"",type:"uint256[]"}],stateMutability:"view",type:"function"},{inputs:[],name:"getOwner",outputs:[{internalType:"address",name:"",type:"address"}],stateMutability:"view",type:"function"},{inputs:[],name:"getPausedState",outputs:[{internalType:"bool",name:"paused",type:"bool"},{internalType:"uint256",name:"pauseWindowEndTime",type:"uint256"},{internalType:"uint256",name:"bufferPeriodEndTime",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"getPoolId",outputs:[{internalType:"bytes32",name:"",type:"bytes32"}],stateMutability:"view",type:"function"},{inputs:[],name:"getRate",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"getSwapFeePercentage",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"getVault",outputs:[{internalType:"contract IVault",name:"",type:"address"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"spender",type:"address"},{internalType:"uint256",name:"amount",type:"uint256"}],name:"increaseApproval",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:"bytes32",name:"poolId",type:"bytes32"},{internalType:"address",name:"sender",type:"address"},{internalType:"address",name:"recipient",type:"address"},{internalType:"uint256[]",name:"balances",type:"uint256[]"},{internalType:"uint256",name:"lastChangeBlock",type:"uint256"},{internalType:"uint256",name:"protocolSwapFeePercentage",type:"uint256"},{internalType:"bytes",name:"userData",type:"bytes"}],name:"onExitPool",outputs:[{internalType:"uint256[]",name:"",type:"uint256[]"},{internalType:"uint256[]",name:"",type:"uint256[]"}],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"bytes32",name:"poolId",type:"bytes32"},{internalType:"address",name:"sender",type:"address"},{internalType:"address",name:"recipient",type:"address"},{internalType:"uint256[]",name:"balances",type:"uint256[]"},{internalType:"uint256",name:"lastChangeBlock",type:"uint256"},{internalType:"uint256",name:"protocolSwapFeePercentage",type:"uint256"},{internalType:"bytes",name:"userData",type:"bytes"}],name:"onJoinPool",outputs:[{internalType:"uint256[]",name:"",type:"uint256[]"},{internalType:"uint256[]",name:"",type:"uint256[]"}],stateMutability:"nonpayable",type:"function"},{inputs:[{components:[{internalType:"enum IVault.SwapKind",name:"kind",type:"uint8"},{internalType:"contract IERC20",name:"tokenIn",type:"address"},{internalType:"contract IERC20",name:"tokenOut",type:"address"},{internalType:"uint256",name:"amount",type:"uint256"},{internalType:"bytes32",name:"poolId",type:"bytes32"},{internalType:"uint256",name:"lastChangeBlock",type:"uint256"},{internalType:"address",name:"from",type:"address"},{internalType:"address",name:"to",type:"address"},{internalType:"bytes",name:"userData",type:"bytes"}],internalType:"struct IPoolSwapStructs.SwapRequest",name:"request",type:"tuple"},{internalType:"uint256",name:"balanceTokenIn",type:"uint256"},{internalType:"uint256",name:"balanceTokenOut",type:"uint256"}],name:"onSwap",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:[{internalType:"bytes32",name:"poolId",type:"bytes32"},{internalType:"address",name:"sender",type:"address"},{internalType:"address",name:"recipient",type:"address"},{internalType:"uint256[]",name:"balances",type:"uint256[]"},{internalType:"uint256",name:"lastChangeBlock",type:"uint256"},{internalType:"uint256",name:"protocolSwapFeePercentage",type:"uint256"},{internalType:"bytes",name:"userData",type:"bytes"}],name:"queryExit",outputs:[{internalType:"uint256",name:"bptIn",type:"uint256"},{internalType:"uint256[]",name:"amountsOut",type:"uint256[]"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"bytes32",name:"poolId",type:"bytes32"},{internalType:"address",name:"sender",type:"address"},{internalType:"address",name:"recipient",type:"address"},{internalType:"uint256[]",name:"balances",type:"uint256[]"},{internalType:"uint256",name:"lastChangeBlock",type:"uint256"},{internalType:"uint256",name:"protocolSwapFeePercentage",type:"uint256"},{internalType:"bytes",name:"userData",type:"bytes"}],name:"queryJoin",outputs:[{internalType:"uint256",name:"bptOut",type:"uint256"},{internalType:"uint256[]",name:"amountsIn",type:"uint256[]"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"bool",name:"paused",type:"bool"}],name:"setPaused",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"uint256",name:"swapFeePercentage",type:"uint256"}],name:"setSwapFeePercentage",outputs:[],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"}],Is=[{inputs:[{internalType:"contract IVault",name:"vault",type:"address"},{internalType:"string",name:"name",type:"string"},{internalType:"string",name:"symbol",type:"string"},{internalType:"contract IERC20[]",name:"tokens",type:"address[]"},{internalType:"uint256",name:"amplificationParameter",type:"uint256"},{internalType:"uint256",name:"swapFeePercentage",type:"uint256"},{internalType:"uint256",name:"pauseWindowDuration",type:"uint256"},{internalType:"uint256",name:"bufferPeriodDuration",type:"uint256"},{internalType:"address",name:"owner",type:"address"}],stateMutability:"nonpayable",type:"constructor"},{anonymous:!1,inputs:[{indexed:!1,internalType:"uint256",name:"startValue",type:"uint256"},{indexed:!1,internalType:"uint256",name:"endValue",type:"uint256"},{indexed:!1,internalType:"uint256",name:"startTime",type:"uint256"},{indexed:!1,internalType:"uint256",name:"endTime",type:"uint256"}],name:"AmpUpdateStarted",type:"event"},{anonymous:!1,inputs:[{indexed:!1,internalType:"uint256",name:"currentValue",type:"uint256"}],name:"AmpUpdateStopped",type:"event"},{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:"bool",name:"paused",type:"bool"}],name:"PausedStateChanged",type:"event"},{anonymous:!1,inputs:[{indexed:!1,internalType:"uint256",name:"swapFeePercentage",type:"uint256"}],name:"SwapFeePercentageChanged",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:"amount",type:"uint256"}],name:"decreaseAllowance",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"bytes4",name:"selector",type:"bytes4"}],name:"getActionId",outputs:[{internalType:"bytes32",name:"",type:"bytes32"}],stateMutability:"view",type:"function"},{inputs:[],name:"getAmplificationParameter",outputs:[{internalType:"uint256",name:"value",type:"uint256"},{internalType:"bool",name:"isUpdating",type:"bool"},{internalType:"uint256",name:"precision",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"getAuthorizer",outputs:[{internalType:"contract IAuthorizer",name:"",type:"address"}],stateMutability:"view",type:"function"},{inputs:[],name:"getOwner",outputs:[{internalType:"address",name:"",type:"address"}],stateMutability:"view",type:"function"},{inputs:[],name:"getPausedState",outputs:[{internalType:"bool",name:"paused",type:"bool"},{internalType:"uint256",name:"pauseWindowEndTime",type:"uint256"},{internalType:"uint256",name:"bufferPeriodEndTime",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"getPoolId",outputs:[{internalType:"bytes32",name:"",type:"bytes32"}],stateMutability:"view",type:"function"},{inputs:[],name:"getRate",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"getSwapFeePercentage",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"getVault",outputs:[{internalType:"contract IVault",name:"",type:"address"}],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:"bytes32",name:"poolId",type:"bytes32"},{internalType:"address",name:"sender",type:"address"},{internalType:"address",name:"recipient",type:"address"},{internalType:"uint256[]",name:"balances",type:"uint256[]"},{internalType:"uint256",name:"lastChangeBlock",type:"uint256"},{internalType:"uint256",name:"protocolSwapFeePercentage",type:"uint256"},{internalType:"bytes",name:"userData",type:"bytes"}],name:"onExitPool",outputs:[{internalType:"uint256[]",name:"",type:"uint256[]"},{internalType:"uint256[]",name:"",type:"uint256[]"}],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"bytes32",name:"poolId",type:"bytes32"},{internalType:"address",name:"sender",type:"address"},{internalType:"address",name:"recipient",type:"address"},{internalType:"uint256[]",name:"balances",type:"uint256[]"},{internalType:"uint256",name:"lastChangeBlock",type:"uint256"},{internalType:"uint256",name:"protocolSwapFeePercentage",type:"uint256"},{internalType:"bytes",name:"userData",type:"bytes"}],name:"onJoinPool",outputs:[{internalType:"uint256[]",name:"",type:"uint256[]"},{internalType:"uint256[]",name:"",type:"uint256[]"}],stateMutability:"nonpayable",type:"function"},{inputs:[{components:[{internalType:"enum IVault.SwapKind",name:"kind",type:"uint8"},{internalType:"contract IERC20",name:"tokenIn",type:"address"},{internalType:"contract IERC20",name:"tokenOut",type:"address"},{internalType:"uint256",name:"amount",type:"uint256"},{internalType:"bytes32",name:"poolId",type:"bytes32"},{internalType:"uint256",name:"lastChangeBlock",type:"uint256"},{internalType:"address",name:"from",type:"address"},{internalType:"address",name:"to",type:"address"},{internalType:"bytes",name:"userData",type:"bytes"}],internalType:"struct IPoolSwapStructs.SwapRequest",name:"swapRequest",type:"tuple"},{internalType:"uint256[]",name:"balances",type:"uint256[]"},{internalType:"uint256",name:"indexIn",type:"uint256"},{internalType:"uint256",name:"indexOut",type:"uint256"}],name:"onSwap",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{components:[{internalType:"enum IVault.SwapKind",name:"kind",type:"uint8"},{internalType:"contract IERC20",name:"tokenIn",type:"address"},{internalType:"contract IERC20",name:"tokenOut",type:"address"},{internalType:"uint256",name:"amount",type:"uint256"},{internalType:"bytes32",name:"poolId",type:"bytes32"},{internalType:"uint256",name:"lastChangeBlock",type:"uint256"},{internalType:"address",name:"from",type:"address"},{internalType:"address",name:"to",type:"address"},{internalType:"bytes",name:"userData",type:"bytes"}],internalType:"struct IPoolSwapStructs.SwapRequest",name:"request",type:"tuple"},{internalType:"uint256",name:"balanceTokenIn",type:"uint256"},{internalType:"uint256",name:"balanceTokenOut",type:"uint256"}],name:"onSwap",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:[{internalType:"bytes32",name:"poolId",type:"bytes32"},{internalType:"address",name:"sender",type:"address"},{internalType:"address",name:"recipient",type:"address"},{internalType:"uint256[]",name:"balances",type:"uint256[]"},{internalType:"uint256",name:"lastChangeBlock",type:"uint256"},{internalType:"uint256",name:"protocolSwapFeePercentage",type:"uint256"},{internalType:"bytes",name:"userData",type:"bytes"}],name:"queryExit",outputs:[{internalType:"uint256",name:"bptIn",type:"uint256"},{internalType:"uint256[]",name:"amountsOut",type:"uint256[]"}],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"bytes32",name:"poolId",type:"bytes32"},{internalType:"address",name:"sender",type:"address"},{internalType:"address",name:"recipient",type:"address"},{internalType:"uint256[]",name:"balances",type:"uint256[]"},{internalType:"uint256",name:"lastChangeBlock",type:"uint256"},{internalType:"uint256",name:"protocolSwapFeePercentage",type:"uint256"},{internalType:"bytes",name:"userData",type:"bytes"}],name:"queryJoin",outputs:[{internalType:"uint256",name:"bptOut",type:"uint256"},{internalType:"uint256[]",name:"amountsIn",type:"uint256[]"}],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"contract IERC20",name:"token",type:"address"},{internalType:"bytes",name:"poolConfig",type:"bytes"}],name:"setAssetManagerPoolConfig",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"bool",name:"paused",type:"bool"}],name:"setPaused",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"uint256",name:"swapFeePercentage",type:"uint256"}],name:"setSwapFeePercentage",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"uint256",name:"rawEndValue",type:"uint256"},{internalType:"uint256",name:"endTime",type:"uint256"}],name:"startAmplificationParameterUpdate",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[],name:"stopAmplificationParameterUpdate",outputs:[],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"}],ws=[{inputs:[{internalType:"contract IERC20",name:"_underlying",type:"address"},{internalType:"contract IERC20",name:"_bond",type:"address"},{internalType:"uint256",name:"_expiration",type:"uint256"},{internalType:"uint256",name:"_unitSeconds",type:"uint256"},{internalType:"contract IVault",name:"vault",type:"address"},{internalType:"uint256",name:"_percentFee",type:"uint256"},{internalType:"uint256",name:"_percentFeeGov",type:"uint256"},{internalType:"address",name:"_governance",type:"address"},{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:!1,internalType:"uint256",name:"collectedBase",type:"uint256"},{indexed:!1,internalType:"uint256",name:"collectedBond",type:"uint256"},{indexed:!1,internalType:"uint256",name:"remainingBase",type:"uint256"},{indexed:!1,internalType:"uint256",name:"remainingBond",type:"uint256"}],name:"FeeCollection",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:[],name:"FEE_BOUND",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:"account",type:"address"}],name:"balanceOf",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"bond",outputs:[{internalType:"contract IERC20",name:"",type:"address"}],stateMutability:"view",type:"function"},{inputs:[],name:"bondDecimals",outputs:[{internalType:"uint8",name:"",type:"uint8"}],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:"amount",type:"uint256"}],name:"decreaseApproval",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"nonpayable",type:"function"},{inputs:[],name:"expiration",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"feesBond",outputs:[{internalType:"uint128",name:"",type:"uint128"}],stateMutability:"view",type:"function"},{inputs:[],name:"feesUnderlying",outputs:[{internalType:"uint128",name:"",type:"uint128"}],stateMutability:"view",type:"function"},{inputs:[],name:"getPoolId",outputs:[{internalType:"bytes32",name:"",type:"bytes32"}],stateMutability:"view",type:"function"},{inputs:[],name:"getVault",outputs:[{internalType:"contract IVault",name:"",type:"address"}],stateMutability:"view",type:"function"},{inputs:[],name:"governance",outputs:[{internalType:"address",name:"",type:"address"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"spender",type:"address"},{internalType:"uint256",name:"amount",type:"uint256"}],name:"increaseApproval",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:"bytes32",name:"poolId",type:"bytes32"},{internalType:"address",name:"",type:"address"},{internalType:"address",name:"recipient",type:"address"},{internalType:"uint256[]",name:"currentBalances",type:"uint256[]"},{internalType:"uint256",name:"",type:"uint256"},{internalType:"uint256",name:"protocolSwapFee",type:"uint256"},{internalType:"bytes",name:"userData",type:"bytes"}],name:"onExitPool",outputs:[{internalType:"uint256[]",name:"amountsOut",type:"uint256[]"},{internalType:"uint256[]",name:"dueProtocolFeeAmounts",type:"uint256[]"}],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"bytes32",name:"poolId",type:"bytes32"},{internalType:"address",name:"",type:"address"},{internalType:"address",name:"recipient",type:"address"},{internalType:"uint256[]",name:"currentBalances",type:"uint256[]"},{internalType:"uint256",name:"",type:"uint256"},{internalType:"uint256",name:"protocolSwapFee",type:"uint256"},{internalType:"bytes",name:"userData",type:"bytes"}],name:"onJoinPool",outputs:[{internalType:"uint256[]",name:"amountsIn",type:"uint256[]"},{internalType:"uint256[]",name:"dueProtocolFeeAmounts",type:"uint256[]"}],stateMutability:"nonpayable",type:"function"},{inputs:[{components:[{internalType:"enum IVault.SwapKind",name:"kind",type:"uint8"},{internalType:"contract IERC20",name:"tokenIn",type:"address"},{internalType:"contract IERC20",name:"tokenOut",type:"address"},{internalType:"uint256",name:"amount",type:"uint256"},{internalType:"bytes32",name:"poolId",type:"bytes32"},{internalType:"uint256",name:"lastChangeBlock",type:"uint256"},{internalType:"address",name:"from",type:"address"},{internalType:"address",name:"to",type:"address"},{internalType:"bytes",name:"userData",type:"bytes"}],internalType:"struct IPoolSwapStructs.SwapRequest",name:"swapRequest",type:"tuple"},{internalType:"uint256",name:"currentBalanceTokenIn",type:"uint256"},{internalType:"uint256",name:"currentBalanceTokenOut",type:"uint256"}],name:"onSwap",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"nonpayable",type:"function"},{inputs:[],name:"percentFee",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"percentFeeGov",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:[{internalType:"uint256",name:"amountX",type:"uint256"},{internalType:"uint256",name:"reserveX",type:"uint256"},{internalType:"uint256",name:"reserveY",type:"uint256"},{internalType:"bool",name:"out",type:"bool"}],name:"solveTradeInvariant",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:[],name:"underlying",outputs:[{internalType:"contract IERC20",name:"",type:"address"}],stateMutability:"view",type:"function"},{inputs:[],name:"underlyingDecimals",outputs:[{internalType:"uint8",name:"",type:"uint8"}],stateMutability:"view",type:"function"},{inputs:[],name:"unitSeconds",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"}],Es=[{inputs:[{internalType:"contract IVault",name:"vault",type:"address"},{internalType:"string",name:"name",type:"string"},{internalType:"string",name:"symbol",type:"string"},{internalType:"contract IERC20",name:"mainToken",type:"address"},{internalType:"contract IERC20",name:"wrappedToken",type:"address"},{internalType:"uint256",name:"upperTarget",type:"uint256"},{internalType:"uint256",name:"swapFeePercentage",type:"uint256"},{internalType:"uint256",name:"pauseWindowDuration",type:"uint256"},{internalType:"uint256",name:"bufferPeriodDuration",type:"uint256"},{internalType:"address",name:"owner",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:!1,internalType:"bool",name:"paused",type:"bool"}],name:"PausedStateChanged",type:"event"},{anonymous:!1,inputs:[{indexed:!1,internalType:"uint256",name:"swapFeePercentage",type:"uint256"}],name:"SwapFeePercentageChanged",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"contract IERC20",name:"token",type:"address"},{indexed:!1,internalType:"uint256",name:"lowerTarget",type:"uint256"},{indexed:!1,internalType:"uint256",name:"upperTarget",type:"uint256"}],name:"TargetsSet",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:"amount",type:"uint256"}],name:"decreaseAllowance",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"bytes4",name:"selector",type:"bytes4"}],name:"getActionId",outputs:[{internalType:"bytes32",name:"",type:"bytes32"}],stateMutability:"view",type:"function"},{inputs:[],name:"getAuthorizer",outputs:[{internalType:"contract IAuthorizer",name:"",type:"address"}],stateMutability:"view",type:"function"},{inputs:[],name:"getBptIndex",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"getMainIndex",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"getMainToken",outputs:[{internalType:"address",name:"",type:"address"}],stateMutability:"view",type:"function"},{inputs:[],name:"getOwner",outputs:[{internalType:"address",name:"",type:"address"}],stateMutability:"view",type:"function"},{inputs:[],name:"getPausedState",outputs:[{internalType:"bool",name:"paused",type:"bool"},{internalType:"uint256",name:"pauseWindowEndTime",type:"uint256"},{internalType:"uint256",name:"bufferPeriodEndTime",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"getPoolId",outputs:[{internalType:"bytes32",name:"",type:"bytes32"}],stateMutability:"view",type:"function"},{inputs:[],name:"getRate",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"getScalingFactors",outputs:[{internalType:"uint256[]",name:"",type:"uint256[]"}],stateMutability:"view",type:"function"},{inputs:[],name:"getSwapFeePercentage",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"getTargets",outputs:[{internalType:"uint256",name:"lowerTarget",type:"uint256"},{internalType:"uint256",name:"upperTarget",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"getVault",outputs:[{internalType:"contract IVault",name:"",type:"address"}],stateMutability:"view",type:"function"},{inputs:[],name:"getVirtualSupply",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"getWrappedIndex",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"getWrappedToken",outputs:[{internalType:"address",name:"",type:"address"}],stateMutability:"view",type:"function"},{inputs:[],name:"getWrappedTokenRate",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:"initialize",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:[{internalType:"bytes32",name:"poolId",type:"bytes32"},{internalType:"address",name:"sender",type:"address"},{internalType:"address",name:"recipient",type:"address"},{internalType:"uint256[]",name:"balances",type:"uint256[]"},{internalType:"uint256",name:"lastChangeBlock",type:"uint256"},{internalType:"uint256",name:"protocolSwapFeePercentage",type:"uint256"},{internalType:"bytes",name:"userData",type:"bytes"}],name:"onExitPool",outputs:[{internalType:"uint256[]",name:"",type:"uint256[]"},{internalType:"uint256[]",name:"",type:"uint256[]"}],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"bytes32",name:"poolId",type:"bytes32"},{internalType:"address",name:"sender",type:"address"},{internalType:"address",name:"recipient",type:"address"},{internalType:"uint256[]",name:"balances",type:"uint256[]"},{internalType:"uint256",name:"lastChangeBlock",type:"uint256"},{internalType:"uint256",name:"protocolSwapFeePercentage",type:"uint256"},{internalType:"bytes",name:"userData",type:"bytes"}],name:"onJoinPool",outputs:[{internalType:"uint256[]",name:"",type:"uint256[]"},{internalType:"uint256[]",name:"",type:"uint256[]"}],stateMutability:"nonpayable",type:"function"},{inputs:[{components:[{internalType:"enum IVault.SwapKind",name:"kind",type:"uint8"},{internalType:"contract IERC20",name:"tokenIn",type:"address"},{internalType:"contract IERC20",name:"tokenOut",type:"address"},{internalType:"uint256",name:"amount",type:"uint256"},{internalType:"bytes32",name:"poolId",type:"bytes32"},{internalType:"uint256",name:"lastChangeBlock",type:"uint256"},{internalType:"address",name:"from",type:"address"},{internalType:"address",name:"to",type:"address"},{internalType:"bytes",name:"userData",type:"bytes"}],internalType:"struct IPoolSwapStructs.SwapRequest",name:"request",type:"tuple"},{internalType:"uint256[]",name:"balances",type:"uint256[]"},{internalType:"uint256",name:"indexIn",type:"uint256"},{internalType:"uint256",name:"indexOut",type:"uint256"}],name:"onSwap",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:[{internalType:"bytes32",name:"poolId",type:"bytes32"},{internalType:"address",name:"sender",type:"address"},{internalType:"address",name:"recipient",type:"address"},{internalType:"uint256[]",name:"balances",type:"uint256[]"},{internalType:"uint256",name:"lastChangeBlock",type:"uint256"},{internalType:"uint256",name:"protocolSwapFeePercentage",type:"uint256"},{internalType:"bytes",name:"userData",type:"bytes"}],name:"queryExit",outputs:[{internalType:"uint256",name:"bptIn",type:"uint256"},{internalType:"uint256[]",name:"amountsOut",type:"uint256[]"}],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"bytes32",name:"poolId",type:"bytes32"},{internalType:"address",name:"sender",type:"address"},{internalType:"address",name:"recipient",type:"address"},{internalType:"uint256[]",name:"balances",type:"uint256[]"},{internalType:"uint256",name:"lastChangeBlock",type:"uint256"},{internalType:"uint256",name:"protocolSwapFeePercentage",type:"uint256"},{internalType:"bytes",name:"userData",type:"bytes"}],name:"queryJoin",outputs:[{internalType:"uint256",name:"bptOut",type:"uint256"},{internalType:"uint256[]",name:"amountsIn",type:"uint256[]"}],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"contract IERC20",name:"token",type:"address"},{internalType:"bytes",name:"poolConfig",type:"bytes"}],name:"setAssetManagerPoolConfig",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"bool",name:"paused",type:"bool"}],name:"setPaused",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"uint256",name:"swapFeePercentage",type:"uint256"}],name:"setSwapFeePercentage",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"uint256",name:"newLowerTarget",type:"uint256"},{internalType:"uint256",name:"newUpperTarget",type:"uint256"}],name:"setTargets",outputs:[],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"}],xs=[{inputs:[{components:[{internalType:"contract IVault",name:"vault",type:"address"},{internalType:"contract IProtocolFeePercentagesProvider",name:"protocolFeeProvider",type:"address"},{internalType:"string",name:"name",type:"string"},{internalType:"string",name:"symbol",type:"string"},{internalType:"contract IERC20[]",name:"tokens",type:"address[]"},{internalType:"contract IRateProvider[]",name:"rateProviders",type:"address[]"},{internalType:"uint256[]",name:"tokenRateCacheDurations",type:"uint256[]"},{internalType:"bool[]",name:"exemptFromYieldProtocolFeeFlags",type:"bool[]"},{internalType:"uint256",name:"amplificationParameter",type:"uint256"},{internalType:"uint256",name:"swapFeePercentage",type:"uint256"},{internalType:"uint256",name:"pauseWindowDuration",type:"uint256"},{internalType:"uint256",name:"bufferPeriodDuration",type:"uint256"},{internalType:"address",name:"owner",type:"address"}],internalType:"struct ComposableStablePool.NewPoolParams",name:"params",type:"tuple"}],stateMutability:"nonpayable",type:"constructor"},{anonymous:!1,inputs:[{indexed:!1,internalType:"uint256",name:"startValue",type:"uint256"},{indexed:!1,internalType:"uint256",name:"endValue",type:"uint256"},{indexed:!1,internalType:"uint256",name:"startTime",type:"uint256"},{indexed:!1,internalType:"uint256",name:"endTime",type:"uint256"}],name:"AmpUpdateStarted",type:"event"},{anonymous:!1,inputs:[{indexed:!1,internalType:"uint256",name:"currentValue",type:"uint256"}],name:"AmpUpdateStopped",type:"event"},{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:"bool",name:"paused",type:"bool"}],name:"PausedStateChanged",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"uint256",name:"feeType",type:"uint256"},{indexed:!1,internalType:"uint256",name:"protocolFeePercentage",type:"uint256"}],name:"ProtocolFeePercentageCacheUpdated",type:"event"},{anonymous:!1,inputs:[{indexed:!1,internalType:"bool",name:"enabled",type:"bool"}],name:"RecoveryModeStateChanged",type:"event"},{anonymous:!1,inputs:[{indexed:!1,internalType:"uint256",name:"swapFeePercentage",type:"uint256"}],name:"SwapFeePercentageChanged",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"uint256",name:"tokenIndex",type:"uint256"},{indexed:!1,internalType:"uint256",name:"rate",type:"uint256"}],name:"TokenRateCacheUpdated",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"uint256",name:"tokenIndex",type:"uint256"},{indexed:!0,internalType:"contract IRateProvider",name:"provider",type:"address"},{indexed:!1,internalType:"uint256",name:"cacheDuration",type:"uint256"}],name:"TokenRateProviderSet",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:"DELEGATE_PROTOCOL_SWAP_FEES_SENTINEL",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:[{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:"amount",type:"uint256"}],name:"decreaseAllowance",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"nonpayable",type:"function"},{inputs:[],name:"disableRecoveryMode",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[],name:"enableRecoveryMode",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"bytes4",name:"selector",type:"bytes4"}],name:"getActionId",outputs:[{internalType:"bytes32",name:"",type:"bytes32"}],stateMutability:"view",type:"function"},{inputs:[],name:"getActualSupply",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"getAmplificationParameter",outputs:[{internalType:"uint256",name:"value",type:"uint256"},{internalType:"bool",name:"isUpdating",type:"bool"},{internalType:"uint256",name:"precision",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"getAuthorizer",outputs:[{internalType:"contract IAuthorizer",name:"",type:"address"}],stateMutability:"view",type:"function"},{inputs:[],name:"getBptIndex",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"getDomainSeparator",outputs:[{internalType:"bytes32",name:"",type:"bytes32"}],stateMutability:"view",type:"function"},{inputs:[],name:"getLastJoinExitData",outputs:[{internalType:"uint256",name:"lastJoinExitAmplification",type:"uint256"},{internalType:"uint256",name:"lastPostJoinExitInvariant",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"getMinimumBpt",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"pure",type:"function"},{inputs:[{internalType:"address",name:"account",type:"address"}],name:"getNextNonce",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"getOwner",outputs:[{internalType:"address",name:"",type:"address"}],stateMutability:"view",type:"function"},{inputs:[],name:"getPausedState",outputs:[{internalType:"bool",name:"paused",type:"bool"},{internalType:"uint256",name:"pauseWindowEndTime",type:"uint256"},{internalType:"uint256",name:"bufferPeriodEndTime",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"getPoolId",outputs:[{internalType:"bytes32",name:"",type:"bytes32"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"uint256",name:"feeType",type:"uint256"}],name:"getProtocolFeePercentageCache",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"getProtocolFeesCollector",outputs:[{internalType:"contract IProtocolFeesCollector",name:"",type:"address"}],stateMutability:"view",type:"function"},{inputs:[],name:"getProtocolSwapFeeDelegation",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"view",type:"function"},{inputs:[],name:"getRate",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"getRateProviders",outputs:[{internalType:"contract IRateProvider[]",name:"",type:"address[]"}],stateMutability:"view",type:"function"},{inputs:[],name:"getScalingFactors",outputs:[{internalType:"uint256[]",name:"",type:"uint256[]"}],stateMutability:"view",type:"function"},{inputs:[],name:"getSwapFeePercentage",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"contract IERC20",name:"token",type:"address"}],name:"getTokenRate",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"contract IERC20",name:"token",type:"address"}],name:"getTokenRateCache",outputs:[{internalType:"uint256",name:"rate",type:"uint256"},{internalType:"uint256",name:"oldRate",type:"uint256"},{internalType:"uint256",name:"duration",type:"uint256"},{internalType:"uint256",name:"expires",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"getVault",outputs:[{internalType:"contract IVault",name:"",type:"address"}],stateMutability:"view",type:"function"},{inputs:[],name:"inRecoveryMode",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:"contract IERC20",name:"token",type:"address"}],name:"isTokenExemptFromYieldProtocolFee",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:"address",name:"owner",type:"address"}],name:"nonces",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"bytes32",name:"poolId",type:"bytes32"},{internalType:"address",name:"sender",type:"address"},{internalType:"address",name:"recipient",type:"address"},{internalType:"uint256[]",name:"balances",type:"uint256[]"},{internalType:"uint256",name:"lastChangeBlock",type:"uint256"},{internalType:"uint256",name:"protocolSwapFeePercentage",type:"uint256"},{internalType:"bytes",name:"userData",type:"bytes"}],name:"onExitPool",outputs:[{internalType:"uint256[]",name:"",type:"uint256[]"},{internalType:"uint256[]",name:"",type:"uint256[]"}],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"bytes32",name:"poolId",type:"bytes32"},{internalType:"address",name:"sender",type:"address"},{internalType:"address",name:"recipient",type:"address"},{internalType:"uint256[]",name:"balances",type:"uint256[]"},{internalType:"uint256",name:"lastChangeBlock",type:"uint256"},{internalType:"uint256",name:"protocolSwapFeePercentage",type:"uint256"},{internalType:"bytes",name:"userData",type:"bytes"}],name:"onJoinPool",outputs:[{internalType:"uint256[]",name:"",type:"uint256[]"},{internalType:"uint256[]",name:"",type:"uint256[]"}],stateMutability:"nonpayable",type:"function"},{inputs:[{components:[{internalType:"enum IVault.SwapKind",name:"kind",type:"uint8"},{internalType:"contract IERC20",name:"tokenIn",type:"address"},{internalType:"contract IERC20",name:"tokenOut",type:"address"},{internalType:"uint256",name:"amount",type:"uint256"},{internalType:"bytes32",name:"poolId",type:"bytes32"},{internalType:"uint256",name:"lastChangeBlock",type:"uint256"},{internalType:"address",name:"from",type:"address"},{internalType:"address",name:"to",type:"address"},{internalType:"bytes",name:"userData",type:"bytes"}],internalType:"struct IPoolSwapStructs.SwapRequest",name:"swapRequest",type:"tuple"},{internalType:"uint256[]",name:"balances",type:"uint256[]"},{internalType:"uint256",name:"indexIn",type:"uint256"},{internalType:"uint256",name:"indexOut",type:"uint256"}],name:"onSwap",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"nonpayable",type:"function"},{inputs:[],name:"pause",outputs:[],stateMutability:"nonpayable",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:"bytes32",name:"poolId",type:"bytes32"},{internalType:"address",name:"sender",type:"address"},{internalType:"address",name:"recipient",type:"address"},{internalType:"uint256[]",name:"balances",type:"uint256[]"},{internalType:"uint256",name:"lastChangeBlock",type:"uint256"},{internalType:"uint256",name:"protocolSwapFeePercentage",type:"uint256"},{internalType:"bytes",name:"userData",type:"bytes"}],name:"queryExit",outputs:[{internalType:"uint256",name:"bptIn",type:"uint256"},{internalType:"uint256[]",name:"amountsOut",type:"uint256[]"}],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"bytes32",name:"poolId",type:"bytes32"},{internalType:"address",name:"sender",type:"address"},{internalType:"address",name:"recipient",type:"address"},{internalType:"uint256[]",name:"balances",type:"uint256[]"},{internalType:"uint256",name:"lastChangeBlock",type:"uint256"},{internalType:"uint256",name:"protocolSwapFeePercentage",type:"uint256"},{internalType:"bytes",name:"userData",type:"bytes"}],name:"queryJoin",outputs:[{internalType:"uint256",name:"bptOut",type:"uint256"},{internalType:"uint256[]",name:"amountsIn",type:"uint256[]"}],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"contract IERC20",name:"token",type:"address"},{internalType:"bytes",name:"poolConfig",type:"bytes"}],name:"setAssetManagerPoolConfig",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"uint256",name:"swapFeePercentage",type:"uint256"}],name:"setSwapFeePercentage",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"contract IERC20",name:"token",type:"address"},{internalType:"uint256",name:"duration",type:"uint256"}],name:"setTokenRateCacheDuration",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"uint256",name:"rawEndValue",type:"uint256"},{internalType:"uint256",name:"endTime",type:"uint256"}],name:"startAmplificationParameterUpdate",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[],name:"stopAmplificationParameterUpdate",outputs:[],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:[],name:"unpause",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[],name:"updateProtocolFeePercentageCache",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"contract IERC20",name:"token",type:"address"}],name:"updateTokenRateCache",outputs:[],stateMutability:"nonpayable",type:"function"}];async function As(e,t,a,n){if(0===e.length)return e;const s=Object.values(Object.fromEntries([...L.abi,...Te,...gs,...Is,...ws,...Es,...xs].map((e=>[e.name,e])))),i=new Ts(t,n,s),r=Object.values(C),o=[];e.forEach((e=>{r.includes(e.poolType)?(o.push(e),i.call(`${e.id}.poolTokens`,a,"getPoolTokens",[e.id]),i.call(`${e.id}.totalSupply`,e.address,"totalSupply"),(e.poolType.includes("Linear")||"StablePhantom"===e.poolType)&&i.call(`${e.id}.virtualSupply`,e.address,"getVirtualSupply"),"ComposableStable"===e.poolType&&i.call(`${e.id}.actualSupply`,e.address,"getActualSupply"),"Weighted"===e.poolType||"LiquidityBootstrapping"===e.poolType||"Investment"===e.poolType?(i.call(`${e.id}.weights`,e.address,"getNormalizedWeights"),i.call(`${e.id}.swapFee`,e.address,"getSwapFeePercentage")):"Stable"===e.poolType||"MetaStable"===e.poolType||"StablePhantom"===e.poolType||"ComposableStable"===e.poolType?(i.call(`${e.id}.amp`,e.address,"getAmplificationParameter"),i.call(`${e.id}.swapFee`,e.address,"getSwapFeePercentage")):"Element"===e.poolType?i.call(`${e.id}.swapFee`,e.address,"percentFee"):e.poolType.toString().includes("Linear")?(i.call(`${e.id}.swapFee`,e.address,"getSwapFeePercentage"),i.call(`${e.id}.targets`,e.address,"getTargets"),i.call(`${e.id}.rate`,e.address,"getWrappedTokenRate")):e.poolType.toString().includes("Gyro")&&i.call(`${e.id}.swapFee`,e.address,"getSwapFeePercentage")):console.error(`Unknown pool type: ${e.poolType} ${e.id}`)}));let d={};try{d=await i.execute()}catch(e){throw"Issue with multicall execution."}const c=[];return Object.entries(d).forEach((([e,t],a)=>{try{const{poolTokens:n,swapFee:s,weights:i,totalSupply:r,virtualSupply:d,actualSupply:p}=t;if("Stable"===o[a].poolType||"MetaStable"===o[a].poolType||"StablePhantom"===o[a].poolType||"ComposableStable"===o[a].poolType){if(!t.amp)return void console.error(`Stable Pool Missing Amp: ${e}`);o[a].amp=l(t.amp[0],3)}if(o[a].poolType.includes("Linear")){if(!t.targets)return void console.error(`Linear Pool Missing Targets: ${e}`);o[a].lowerTarget=l(t.targets[0],18),o[a].upperTarget=l(t.targets[1],18);const n=o[a].wrappedIndex;if(void 0===n||void 0===t.rate)return void console.error(`Linear Pool Missing WrappedIndex or PriceRate: ${e}`);o[a].tokens[n].priceRate=l(t.rate,18)}if(o[a].swapFee=l(s,18),n.tokens.forEach(((t,s)=>{const r=o[a].tokens.find((e=>Pt(e.address,t)));if(!r)throw`Pool Missing Expected Token: ${e} ${t}`;r.balance=l(n.balances[s],r.decimals),i&&(r.weight=l(i[s],18))})),o[a].poolType.includes("Linear")||"StablePhantom"===o[a].poolType){if(void 0===d)return void console.error(`Pool with pre-minted BPT missing Virtual Supply: ${e}`);o[a].totalShares=l(d,18)}else if("ComposableStable"===o[a].poolType){if(void 0===p)return void console.error(`ComposableStable missing Actual Supply: ${e}`);o[a].totalShares=l(p,18)}else o[a].totalShares=l(r,18);c.push(o[a])}catch(e){throw`Issue with pool onchain data: ${e}`}})),c}class Ss{constructor(e,t,a,n){this.client=e,this.provider=t,this.network=a,this.sorConfig=n}async getPools(){const e=function(e){return e.map((e=>({...e,poolType:e.poolType||"",tokens:(e.tokens||[]).map((e=>({...e,weight:e.weight||null}))),totalWeight:e.totalWeight||void 0,amp:e.amp||void 0,expiryTime:e.expiryTime?w(e.expiryTime):void 0,unitSeconds:e.unitSeconds?w(e.unitSeconds):void 0,principalToken:e.principalToken||void 0,baseToken:e.baseToken||void 0})))}((await this.getSubgraphPools()).filter((e=>{if(!this.network.poolsToIgnore)return!0;return-1===this.network.poolsToIgnore.findIndex((t=>Pt(t,e.address)))})));return!1===this.sorConfig.fetchOnChainBalances?e:As(e,this.network.addresses.contracts.multicall,this.network.addresses.contracts.vault,this.provider)}async getSubgraphPools(){const{pool0:e,pool1000:t,pool2000:a}=await this.client.AllPools({where:{swapEnabled:!0,totalShares_gt:"1"},orderBy:on.TotalLiquidity,orderDirection:en.Desc});return[...e,...t,...a]}}class Ps{constructor(e){this.chainId=e}async getNativeAssetPriceInToken(e){const t=await this.getTokenPriceInNativeAsset(e);return""+1/parseFloat(t)}async getTokenPriceInNativeAsset(e){const t=`https://api.coingecko.com/api/v3/simple/token_price/${this.platformId}?contract_addresses=${e}&vs_currencies=${this.nativeAssetId}`,{data:a}=await h.get(t,{headers:{Accept:"application/json","Content-Type":"application/json"}});if(void 0===a[e.toLowerCase()][this.nativeAssetId])throw Error("No price returned from Coingecko");return a[e.toLowerCase()][this.nativeAssetId]}get platformId(){switch(this.chainId){case 1:case 42:case 248:case 16116:case 17117:return"ethereum";case 137:return"polygon-pos";case 42161:return"arbitrum-one";case 100:return"xdai"}return"3"}get nativeAssetId(){switch(this.chainId){case 1:case 42:case 42161:case 248:case 16116:case 17117:return"eth";case 137:return"";case 100:return"xdai"}return""}}class _s{constructor(e,t){this.client=e,this.weth=t.toLowerCase()}async getNativeAssetPriceInToken(e){const t=await this.getLatestPriceInEthFromSubgraph(e);if(!t)throw Error("No price found in the subgraph");return""+1/t}async getLatestPriceInEthFromSubgraph(e){e=e.toLowerCase();const{latestPrices:t}=await this.client.TokenLatestPrices({where:{asset_in:[e,this.weth]}}),a=E(t,"id");if(a[`${e}-${this.weth}`])return parseFloat(a[`${e}-${this.weth}`].price);const n=t.filter((t=>t.asset===e));for(const e of n){const t=a[`${e.pricingAsset}-${this.weth}`];if(t)return parseFloat(e.price)*parseFloat(t.price)}return null}}function vs(e){var t,a;if("number"==typeof e.network){const a=Lt[e.network];return{...a,urls:{...a.urls,subgraph:null!==(t=e.customSubgraphUrl)&&void 0!==t?t:a.urls.subgraph},tenderly:e.tenderly}}return{...e.network,urls:{...e.network.urls,subgraph:null!==(a=e.customSubgraphUrl)&&void 0!==a?a:e.network.urls.subgraph},tenderly:e.network.tenderly}}class Os extends F{constructor(e){const t=vs(e),a=Os.getSorConfig(e),n=Os.getSorNetworkConfig(t),s=new q(e.rpcUrl,e.network),i=bs(t.urls.subgraph);super(s,n,Os.getPoolDataService(t,a,s,i),Os.getTokenPriceService(t,a,i))}static getSorConfig(e){return{tokenPriceService:"coingecko",poolDataService:"subgraph",fetchOnChainBalances:!0,...e.sor}}static getSorNetworkConfig(e){var t;return{...e,vault:e.addresses.contracts.vault,weth:e.addresses.tokens.wrappedNativeAsset,lbpRaisingTokens:null===(t=e.addresses.tokens)||void 0===t?void 0:t.lbpRaisingTokens,wETHwstETH:e.pools.wETHwstETH,connectingTokens:e.sorConnectingTokens}}static getPoolDataService(e,t,a,n){return"object"==typeof t.poolDataService?t.poolDataService:new Ss(n,a,e,t)}static getTokenPriceService(e,t,a){return"object"==typeof t.tokenPriceService?t.tokenPriceService:("subgraph"===t.tokenPriceService&&new _s(a,e.addresses.tokens.wrappedNativeAsset),new Ps(e.chainId))}}function Bs(e){if(e.poolIds.length>2)throw new Error("Simple flash swap only supports a maximum of two pools");if(e.assets.length>2)throw new Error("Simple flash swap only supports a maximum of to two assets (tokens)")}function ks(e,t){return[{poolId:e[0],assetInIndex:0,assetOutIndex:1,amount:t,userData:"0x"},{poolId:e[1],assetInIndex:1,assetOutIndex:0,amount:"0",userData:"0x"}]}function Ds(e){return-1*Number(e)}function Ns(e){return x(e)}var Cs=[{inputs:[{internalType:"contract IVault",name:"vault",type:"address"},{internalType:"contract IERC20",name:"wstETH",type:"address"},{internalType:"contract IBalancerMinter",name:"minter",type:"address"}],stateMutability:"nonpayable",type:"constructor"},{inputs:[{internalType:"contract IERC20",name:"token",type:"address"},{internalType:"uint256",name:"amount",type:"uint256"}],name:"approveVault",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"enum IVault.SwapKind",name:"kind",type:"uint8"},{components:[{internalType:"bytes32",name:"poolId",type:"bytes32"},{internalType:"uint256",name:"assetInIndex",type:"uint256"},{internalType:"uint256",name:"assetOutIndex",type:"uint256"},{internalType:"uint256",name:"amount",type:"uint256"},{internalType:"bytes",name:"userData",type:"bytes"}],internalType:"struct IVault.BatchSwapStep[]",name:"swaps",type:"tuple[]"},{internalType:"contract IAsset[]",name:"assets",type:"address[]"},{components:[{internalType:"address",name:"sender",type:"address"},{internalType:"bool",name:"fromInternalBalance",type:"bool"},{internalType:"address payable",name:"recipient",type:"address"},{internalType:"bool",name:"toInternalBalance",type:"bool"}],internalType:"struct IVault.FundManagement",name:"funds",type:"tuple"},{internalType:"int256[]",name:"limits",type:"int256[]"},{internalType:"uint256",name:"deadline",type:"uint256"},{internalType:"uint256",name:"value",type:"uint256"},{components:[{internalType:"uint256",name:"index",type:"uint256"},{internalType:"uint256",name:"key",type:"uint256"}],internalType:"struct VaultActions.OutputReference[]",name:"outputReferences",type:"tuple[]"}],name:"batchSwap",outputs:[{internalType:"int256[]",name:"",type:"int256[]"}],stateMutability:"payable",type:"function"},{inputs:[{internalType:"bytes32",name:"poolId",type:"bytes32"},{internalType:"enum VaultActions.PoolKind",name:"kind",type:"uint8"},{internalType:"address",name:"sender",type:"address"},{internalType:"address payable",name:"recipient",type:"address"},{components:[{internalType:"contract IAsset[]",name:"assets",type:"address[]"},{internalType:"uint256[]",name:"minAmountsOut",type:"uint256[]"},{internalType:"bytes",name:"userData",type:"bytes"},{internalType:"bool",name:"toInternalBalance",type:"bool"}],internalType:"struct IVault.ExitPoolRequest",name:"request",type:"tuple"},{components:[{internalType:"uint256",name:"index",type:"uint256"},{internalType:"uint256",name:"key",type:"uint256"}],internalType:"struct VaultActions.OutputReference[]",name:"outputReferences",type:"tuple[]"}],name:"exitPool",outputs:[],stateMutability:"payable",type:"function"},{inputs:[{internalType:"contract IStakingLiquidityGauge[]",name:"gauges",type:"address[]"}],name:"gaugeClaimRewards",outputs:[],stateMutability:"payable",type:"function"},{inputs:[{internalType:"contract IStakingLiquidityGauge",name:"gauge",type:"address"},{internalType:"address",name:"sender",type:"address"},{internalType:"address",name:"recipient",type:"address"},{internalType:"uint256",name:"amount",type:"uint256"}],name:"gaugeDeposit",outputs:[],stateMutability:"payable",type:"function"},{inputs:[{internalType:"address[]",name:"gauges",type:"address[]"},{internalType:"uint256",name:"outputReference",type:"uint256"}],name:"gaugeMint",outputs:[],stateMutability:"payable",type:"function"},{inputs:[{internalType:"bool",name:"approval",type:"bool"},{internalType:"address",name:"user",type:"address"},{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:"gaugeSetMinterApproval",outputs:[],stateMutability:"payable",type:"function"},{inputs:[{internalType:"contract IStakingLiquidityGauge",name:"gauge",type:"address"},{internalType:"address",name:"sender",type:"address"},{internalType:"address",name:"recipient",type:"address"},{internalType:"uint256",name:"amount",type:"uint256"}],name:"gaugeWithdraw",outputs:[],stateMutability:"payable",type:"function"},{inputs:[],name:"getEntrypoint",outputs:[{internalType:"contract IBalancerRelayer",name:"",type:"address"}],stateMutability:"view",type:"function"},{inputs:[],name:"getVault",outputs:[{internalType:"contract IVault",name:"",type:"address"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"bytes32",name:"poolId",type:"bytes32"},{internalType:"enum VaultActions.PoolKind",name:"kind",type:"uint8"},{internalType:"address",name:"sender",type:"address"},{internalType:"address",name:"recipient",type:"address"},{components:[{internalType:"contract IAsset[]",name:"assets",type:"address[]"},{internalType:"uint256[]",name:"maxAmountsIn",type:"uint256[]"},{internalType:"bytes",name:"userData",type:"bytes"},{internalType:"bool",name:"fromInternalBalance",type:"bool"}],internalType:"struct IVault.JoinPoolRequest",name:"request",type:"tuple"},{internalType:"uint256",name:"value",type:"uint256"},{internalType:"uint256",name:"outputReference",type:"uint256"}],name:"joinPool",outputs:[],stateMutability:"payable",type:"function"},{inputs:[{components:[{internalType:"enum IVault.UserBalanceOpKind",name:"kind",type:"uint8"},{internalType:"contract IAsset",name:"asset",type:"address"},{internalType:"uint256",name:"amount",type:"uint256"},{internalType:"address",name:"sender",type:"address"},{internalType:"address payable",name:"recipient",type:"address"}],internalType:"struct IVault.UserBalanceOp[]",name:"ops",type:"tuple[]"},{internalType:"uint256",name:"value",type:"uint256"}],name:"manageUserBalance",outputs:[],stateMutability:"payable",type:"function"},{inputs:[{internalType:"uint256",name:"ref",type:"uint256"}],name:"peekChainedReferenceValue",outputs:[{internalType:"uint256",name:"value",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"relayer",type:"address"},{internalType:"bool",name:"approved",type:"bool"},{internalType:"bytes",name:"authorisation",type:"bytes"}],name:"setRelayerApproval",outputs:[],stateMutability:"payable",type:"function"},{inputs:[{internalType:"address",name:"recipient",type:"address"},{internalType:"uint256",name:"amount",type:"uint256"},{internalType:"uint256",name:"outputReference",type:"uint256"}],name:"stakeETH",outputs:[],stateMutability:"payable",type:"function"},{inputs:[{internalType:"address",name:"recipient",type:"address"},{internalType:"uint256",name:"amount",type:"uint256"},{internalType:"uint256",name:"outputReference",type:"uint256"}],name:"stakeETHAndWrap",outputs:[],stateMutability:"payable",type:"function"},{inputs:[{components:[{internalType:"bytes32",name:"poolId",type:"bytes32"},{internalType:"enum IVault.SwapKind",name:"kind",type:"uint8"},{internalType:"contract IAsset",name:"assetIn",type:"address"},{internalType:"contract IAsset",name:"assetOut",type:"address"},{internalType:"uint256",name:"amount",type:"uint256"},{internalType:"bytes",name:"userData",type:"bytes"}],internalType:"struct IVault.SingleSwap",name:"singleSwap",type:"tuple"},{components:[{internalType:"address",name:"sender",type:"address"},{internalType:"bool",name:"fromInternalBalance",type:"bool"},{internalType:"address payable",name:"recipient",type:"address"},{internalType:"bool",name:"toInternalBalance",type:"bool"}],internalType:"struct IVault.FundManagement",name:"funds",type:"tuple"},{internalType:"uint256",name:"limit",type:"uint256"},{internalType:"uint256",name:"deadline",type:"uint256"},{internalType:"uint256",name:"value",type:"uint256"},{internalType:"uint256",name:"outputReference",type:"uint256"}],name:"swap",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"payable",type:"function"},{inputs:[{internalType:"contract IStaticATokenLM",name:"staticToken",type:"address"},{internalType:"address",name:"sender",type:"address"},{internalType:"address",name:"recipient",type:"address"},{internalType:"uint256",name:"amount",type:"uint256"},{internalType:"bool",name:"toUnderlying",type:"bool"},{internalType:"uint256",name:"outputReference",type:"uint256"}],name:"unwrapAaveStaticToken",outputs:[],stateMutability:"payable",type:"function"},{inputs:[{internalType:"contract IERC4626",name:"wrappedToken",type:"address"},{internalType:"address",name:"sender",type:"address"},{internalType:"address",name:"recipient",type:"address"},{internalType:"uint256",name:"amount",type:"uint256"},{internalType:"uint256",name:"outputReference",type:"uint256"}],name:"unwrapERC4626",outputs:[],stateMutability:"payable",type:"function"},{inputs:[{internalType:"contract IUnbuttonToken",name:"wrapperToken",type:"address"},{internalType:"address",name:"sender",type:"address"},{internalType:"address",name:"recipient",type:"address"},{internalType:"uint256",name:"amount",type:"uint256"},{internalType:"uint256",name:"outputReference",type:"uint256"}],name:"unwrapUnbuttonToken",outputs:[],stateMutability:"payable",type:"function"},{inputs:[{internalType:"address",name:"sender",type:"address"},{internalType:"address",name:"recipient",type:"address"},{internalType:"uint256",name:"amount",type:"uint256"},{internalType:"uint256",name:"outputReference",type:"uint256"}],name:"unwrapWstETH",outputs:[],stateMutability:"payable",type:"function"},{inputs:[{internalType:"contract IERC20Permit",name:"token",type:"address"},{internalType:"address",name:"owner",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:"vaultPermit",outputs:[],stateMutability:"payable",type:"function"},{inputs:[{internalType:"contract IERC20PermitDAI",name:"token",type:"address"},{internalType:"address",name:"holder",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:"vaultPermitDAI",outputs:[],stateMutability:"payable",type:"function"},{inputs:[{internalType:"contract IStaticATokenLM",name:"staticToken",type:"address"},{internalType:"address",name:"sender",type:"address"},{internalType:"address",name:"recipient",type:"address"},{internalType:"uint256",name:"amount",type:"uint256"},{internalType:"bool",name:"fromUnderlying",type:"bool"},{internalType:"uint256",name:"outputReference",type:"uint256"}],name:"wrapAaveDynamicToken",outputs:[],stateMutability:"payable",type:"function"},{inputs:[{internalType:"contract IERC4626",name:"wrappedToken",type:"address"},{internalType:"address",name:"sender",type:"address"},{internalType:"address",name:"recipient",type:"address"},{internalType:"uint256",name:"amount",type:"uint256"},{internalType:"uint256",name:"outputReference",type:"uint256"}],name:"wrapERC4626",outputs:[],stateMutability:"payable",type:"function"},{inputs:[{internalType:"address",name:"sender",type:"address"},{internalType:"address",name:"recipient",type:"address"},{internalType:"uint256",name:"amount",type:"uint256"},{internalType:"uint256",name:"outputReference",type:"uint256"}],name:"wrapStETH",outputs:[],stateMutability:"payable",type:"function"},{inputs:[{internalType:"contract IUnbuttonToken",name:"wrapperToken",type:"address"},{internalType:"address",name:"sender",type:"address"},{internalType:"address",name:"recipient",type:"address"},{internalType:"uint256",name:"uAmount",type:"uint256"},{internalType:"uint256",name:"outputReference",type:"uint256"}],name:"wrapUnbuttonToken",outputs:[],stateMutability:"payable",type:"function"}];const Fs={"0xae7ab96520de3a18e5e111b5eaab095312d7fe84":"0x7f39c581f595b53c5cb19bd0b3f8da6c935e2ca0","0xd46ba6d942050d489dbd938a2c909a5d5039a161":"0xedb171c18ce90b633db442f2a6f72874093b49ef","0x1e6bb68acec8fefbd87d192be09bb274170a0548":"0xF03387d8d0FF326ab586A58E0ab4121d106147DF"};function Rs(e){let t=e;return Fs.hasOwnProperty(e)&&(t=Fs[e]),t}var Ms;function Ls(e,t,a){const{tokens:n,contracts:s}=Ut(a);let i={id:Ms.vault,address:s.vault};return n.stETH&&s.lidoRelayer&&[e,t].includes(n.stETH)&&(i={id:Ms.lido,address:s.lidoRelayer}),i}function Us(e){let t=L.abi;e.id===Ms.lido&&(t=Cs);return t.filter((e=>e.name&&["swap","batchSwap"].includes(e.name)))}function Gs(e){return{amount:e,max:t=>e.mul(1e3+t).div(1e3),min:t=>e.mul(1e3-t).div(1e3)}}function $s(e,t){const a=t===kt.SwapExactIn?e.swapAmount:e.returnAmount,n=t===kt.SwapExactIn?e.returnAmount:e.swapAmount,s=t===kt.SwapExactIn?e.swapAmountForSwaps||e.swapAmount:e.returnAmountFromSwaps||e.returnAmount,i=t===kt.SwapExactIn?e.returnAmountFromSwaps||e.returnAmount:e.swapAmountForSwaps||e.swapAmount,r=Rs(e.tokenIn),o=Rs(e.tokenOut);return{...e,amountIn:a,amountOut:n,amountInForLimits:Gs(s),amountOutForLimits:Gs(i),tokenInForSwaps:r,tokenOutFromSwaps:o}}!function(e){e[e.vault=1]="vault",e[e.lido=2]="lido"}(Ms||(Ms={}));class qs{constructor(e,t,a){this.kind=t,this.chainId=a,this.functionName="swap",this.swapInfo=$s(e,t),this.relayer=Ls(this.swapInfo.tokenIn,this.swapInfo.tokenOut,this.chainId)}setFunds(e,t){this.funds={sender:e,recipient:t||e,fromInternalBalance:!1,toInternalBalance:!1}}setDeadline(e){this.deadline=e.toString()}get amount(){return this.kind===kt.SwapExactOut?this.swapInfo.amountOutForLimits.amount:this.swapInfo.amountInForLimits.amount}setLimits(e){this.limit=this.kind===kt.SwapExactIn?this.swapInfo.amountOutForLimits.min(e).toString():this.swapInfo.amountInForLimits.max(e).toString()}get singleSwap(){return{poolId:this.swapInfo.swaps[0].poolId,kind:this.kind,assetIn:this.swapInfo.tokenInForSwaps,assetOut:this.swapInfo.tokenOutFromSwaps,amount:this.amount.toString(),userData:"0x"}}attributes(){var e;if(!this.funds||!this.limit||!this.deadline)throw new Error("Uninitialized arguments");let t={request:this.singleSwap,funds:this.funds,limit:this.limit,deadline:this.deadline};const a=this.fragment();return a[0].inputs&&(null===(e=a[0].inputs)||void 0===e?void 0:e.length)>4&&(t={...t,value:"0",outputReference:"0"}),t}data(){return new t(this.fragment()).encodeFunctionData("swap",Object.values(this.attributes()))}value(e){let t=d.from(0);return this.swapInfo.tokenIn===i&&(t=this.kind===kt.SwapExactIn?this.swapInfo.amountIn:this.swapInfo.amountInForLimits.max(e)),t}to(){return this.relayer.address}fragment(){return Us(this.relayer).filter((e=>e.name===this.functionName))}}class Ws{constructor(e,t,a){this.kind=t,this.chainId=a,this.functionName="batchSwap",this.swapInfo=$s(e,t),this.relayer=Ls(this.swapInfo.tokenIn,this.swapInfo.tokenOut,this.chainId)}setFunds(e,t){this.funds={sender:e,recipient:t||e,fromInternalBalance:!1,toInternalBalance:!1}}setDeadline(e){this.deadline=e}minAmountOut(e){return this.kind===kt.SwapExactIn?this.swapInfo.amountOutForLimits.min(e):this.swapInfo.amountOutForLimits.amount}maxAmountIn(e){return this.kind===kt.SwapExactOut?this.swapInfo.amountInForLimits.max(e):this.swapInfo.amountInForLimits.amount}setLimits(e){this.limits=this.swapInfo.tokenAddresses.map((t=>{let a=d.from(0);return t===this.swapInfo.tokenInForSwaps&&(a=this.maxAmountIn(e)),t===this.swapInfo.tokenOutFromSwaps&&(a=this.minAmountOut(e).mul(-1)),a})).map((e=>e.toString().split(".")[0]))}attributes(){var e;if(!this.funds||!this.limits||!this.deadline)throw new Error("Uninitialized arguments");let t={kind:this.kind,swaps:this.swapInfo.swaps,assets:this.swapInfo.tokenAddresses,funds:this.funds,limits:this.limits,deadline:this.deadline};const a=this.fragment();return a[0].inputs&&(null===(e=a[0].inputs)||void 0===e?void 0:e.length)>6&&(t={...t,value:"0",outputReferences:[]}),t}data(){return new t(this.fragment()).encodeFunctionData("batchSwap",Object.values(this.attributes()))}value(e){let t=d.from(0);return this.swapInfo.tokenIn===i&&(t=this.maxAmountIn(e)),t}to(){return this.relayer.address}fragment(){return Us(this.relayer).filter((e=>e.name===this.functionName))}}class Vs{constructor(e){e instanceof F?(this.sor=e,this.chainId=this.sor.provider._network.chainId):(this.sor=new Os(e),this.chainId=e.network),this.vaultContract=L.connect(Mt,this.sor.provider)}static getLimitsForSlippage(e,t,a,n,s,i){return Dt(e,t,a,n,s,i).map((e=>e.toString()))}async findRouteGivenIn({tokenIn:e,tokenOut:t,amount:a,gasPrice:n,maxPools:s=4}){return this.sor.getSwaps(e,t,N.SwapExactIn,a,{gasPrice:n,maxPools:s})}async findRouteGivenOut({tokenIn:e,tokenOut:t,amount:a,gasPrice:n,maxPools:s}){return this.sor.getSwaps(e,t,N.SwapExactOut,a,{gasPrice:n,maxPools:s})}buildSwap({userAddress:e,recipient:t,swapInfo:a,kind:n,deadline:s,maxSlippage:i}){if(!this.chainId)throw"Missing network configuration";const r=a.swaps.length>1?new Ws(a,n,this.chainId):new qs(a,n,this.chainId);r.setFunds(e,t),r.setDeadline(s),r.setLimits(i);const o=r.to(),{functionName:d}=r;return{to:o,functionName:d,attributes:r.attributes(),data:r.data(),value:r.value(i)}}static encodeBatchSwap(e){return L.createInterface().encodeFunctionData("batchSwap",[e.kind,e.swaps,e.assets,e.funds,e.limits,e.deadline])}static encodeSimpleFlashSwap(e){return this.encodeBatchSwap(function({poolIds:e,assets:t,flashLoanAmount:a,walletAddress:n}){Bs({poolIds:e,assets:t});const s=ks(e,a),i={sender:n,fromInternalBalance:!1,recipient:n,toInternalBalance:!1};return{kind:kt.SwapExactIn,swaps:s,assets:t,funds:i,limits:["0","0"],deadline:"999999999999999999"}}(e))}async fetchPools(){return this.sor.fetchPools()}getPools(){return this.sor.getPools()}async queryBatchSwap(e){return await _a(this.vaultContract,e.kind,e.swaps,e.assets)}async queryBatchSwapWithSor(e){return await va(this.sor,this.vaultContract,e)}async querySimpleFlashSwap(e){return await async function(e){Bs(e);const[t,a]=e.assets;try{const n=await _a(e.vaultContract,kt.SwapExactIn,ks(e.poolIds,e.flashLoanAmount),e.assets),s={[t]:Ds(n[0]).toString(),[a]:Ds(n[1]).toString()};return{profits:s,isProfitable:Ns([s[t],s[a]])>0}}catch(e){throw`Failed to querySimpleFlashSwap: ${e}`}}({...e,vaultContract:this.vaultContract})}async getSorSwap(e){return await Oa(e.tokenIn,e.tokenOut,e.swapType,e.amount,this.sor)}}const Hs=new t(Cs);class js{constructor(e){this.swaps=e instanceof Vs?e:new Vs(e)}static isChainedReference(e){const t=d.from(e),a=d.from("0xfff0000000000000000000000000000000000000000000000000000000000000"),n=t.toBigInt()&a.toBigInt();return"0xba10000000000000000000000000000000000000000000000000000000000000"===d.from(n)._hex.toString()}static encodeApproveVault(e,t){return Hs.encodeFunctionData("approveVault",[e,t])}static encodeSetRelayerApproval(e,t,a){return Hs.encodeFunctionData("setRelayerApproval",[e,t,a])}static encodeGaugeWithdraw(e,t,a,n){return Hs.encodeFunctionData("gaugeWithdraw",[e,t,a,n])}static encodeGaugeDeposit(e,t,a,n){return Hs.encodeFunctionData("gaugeDeposit",[e,t,a,n])}static encodeBatchSwap(e){return Hs.encodeFunctionData("batchSwap",[e.swapType,e.swaps,e.assets,e.funds,e.limits,e.deadline,e.value,e.outputReferences])}static encodeExitPool(e){return Hs.encodeFunctionData("exitPool",[e.poolId,e.poolKind,e.sender,e.recipient,e.exitPoolRequest,e.outputReferences])}static encodeJoinPool(e){return Hs.encodeFunctionData("joinPool",[e.poolId,e.kind,e.sender,e.recipient,e.joinPoolRequest,e.value,e.outputReference])}static encodeWrapAaveDynamicToken(e){return Hs.encodeFunctionData("wrapAaveDynamicToken",[e.staticToken,e.sender,e.recipient,e.amount,e.fromUnderlying,e.outputReference])}static encodeUnwrapAaveStaticToken(e){return Hs.encodeFunctionData("unwrapAaveStaticToken",[e.staticToken,e.sender,e.recipient,e.amount,e.toUnderlying,e.outputReferences])}static encodePeekChainedReferenceValue(e){return Hs.encodeFunctionData("peekChainedReferenceValue",[e])}static toChainedReference(e,t=!0){const a=t?js.CHAINED_REFERENCE_TEMP_PREFIX:js.CHAINED_REFERENCE_READONLY_PREFIX,n=`0x${a}${"0".repeat(64-a.length)}`;return d.from(n).add(e)}static fromChainedReference(e,t=!0){const a=t?js.CHAINED_REFERENCE_TEMP_PREFIX:js.CHAINED_REFERENCE_READONLY_PREFIX,n=`0x${a}${"0".repeat(64-a.length)}`;return d.from(e).sub(d.from(n))}static constructExitCall(e){const{assets:t,minAmountsOut:a,userData:n,toInternalBalance:s,poolId:i,poolKind:r,sender:o,recipient:d,outputReferences:c}=e,l={poolId:i,poolKind:r,sender:o,recipient:d,outputReferences:c,exitPoolRequest:{assets:t,minAmountsOut:a,userData:n,toInternalBalance:s}};return js.encodeExitPool(l)}static constructJoinCall(e){const{assets:t,maxAmountsIn:a,userData:n,fromInternalBalance:s,poolId:i,kind:r,sender:o,recipient:d,value:c,outputReference:l}=e,p={poolId:i,kind:r,sender:o,recipient:d,value:c,outputReference:l,joinPoolRequest:{assets:t,maxAmountsIn:a,userData:n,fromInternalBalance:s}};return js.encodeJoinPool(p)}async fetchPools(){return this.swaps.fetchPools()}getPools(){return this.swaps.getPools()}async exitPoolAndBatchSwap(e){const t=n.sub(d.from(e.slippage)),a=e.expectedAmountsOut.map((e=>d.from(e).mul(t).div(n).toString())),s=[];e.exitTokens.forEach(((e,t)=>{const a=js.toChainedReference(t);s.push({index:t,key:a})}));const i=js.constructExitCall({assets:e.exitTokens,minAmountsOut:a,userData:e.userData,toInternalBalance:!0,poolId:e.poolId,poolKind:0,sender:e.exiter,recipient:e.exiter,outputReferences:s,exitPoolRequest:{}}),o=await this.swaps.queryBatchSwapWithSor({tokensIn:e.exitTokens,tokensOut:e.finalTokensOut,swapType:kt.SwapExactIn,amounts:a,fetchPools:e.fetchPools});if(o.returnAmounts.includes("0"))throw new $t(Gt.SWAP_ZERO_RETURN_AMOUNT);o.swaps.forEach((t=>{const a=o.assets[t.assetInIndex],n=e.exitTokens.indexOf(a);-1!==n&&(t.amount=s[n].key.toString())}));const c=n.add(e.slippage);e.exitTokens.forEach(((t,a)=>{const s=o.assets.map((e=>e.toLowerCase())).indexOf(t.toLowerCase());-1!==s&&(o.deltas[s]=d.from(e.expectedAmountsOut[a]).mul(c).div(n).toString())}));const l=Vs.getLimitsForSlippage(e.exitTokens,e.finalTokensOut,kt.SwapExactIn,o.deltas,o.assets,"0"),p={sender:e.exiter,recipient:e.swapRecipient,fromInternalBalance:!0,toInternalBalance:!1};return{function:"multicall",params:[i,js.encodeBatchSwap({swapType:kt.SwapExactIn,swaps:o.swaps,assets:o.assets,funds:p,limits:l.map((e=>e.toString())),deadline:r,value:"0",outputReferences:[]})],outputs:{amountsOut:o.returnAmounts}}}async swapUnwrapAaveStaticExactIn(e,t,a,i,r,o,c={fetchPools:!0,fetchOnChain:!1}){const l=await this.swaps.queryBatchSwapWithSor({tokensIn:e,tokensOut:t,swapType:kt.SwapExactIn,amounts:a,fetchPools:c});if(l.returnAmounts.includes("0"))throw new $t(Gt.SWAP_ZERO_RETURN_AMOUNT);const p=Vs.getLimitsForSlippage(e,t,kt.SwapExactIn,l.deltas,l.assets,o);return{function:"multicall",params:this.encodeSwapUnwrap(t,kt.SwapExactIn,l.swaps,l.assets,r,p),outputs:{amountsOut:l.returnAmounts.map(((e,t)=>{const a=d.from(e).abs().mul(i[t]).div(n);if(!a.gt(s))throw new $t(Gt.UNWRAP_ZERO_AMOUNT);return a.toString()}))}}}async swapUnwrapAaveStaticExactOut(e,t,a,i,r,o,c={fetchPools:!0,fetchOnChain:!1}){const l=a.map(((e,t)=>{const a=d.from(e).mul(n).div(i[t]);if(!a.gt(s))throw new $t(Gt.WRAP_ZERO_AMOUNT);return a.toString()})),p=await this.swaps.queryBatchSwapWithSor({tokensIn:e,tokensOut:t,swapType:kt.SwapExactOut,amounts:l,fetchPools:c});if(p.returnAmounts.includes("0"))throw new $t(Gt.SWAP_ZERO_RETURN_AMOUNT);const u=Vs.getLimitsForSlippage(e,t,kt.SwapExactOut,p.deltas,p.assets,o);return{function:"multicall",params:this.encodeSwapUnwrap(t,kt.SwapExactOut,p.swaps,p.assets,r,u),outputs:{amountsIn:p.returnAmounts.map((e=>e.toString()))}}}encodeSwapUnwrap(e,t,a,n,s,i){const o=[],d=[];e.forEach(((e,t)=>{const a=n.findIndex((t=>t.toLowerCase()===e.toLowerCase()));if(-1===a)return;const i=js.toChainedReference(t);o.push({index:a,key:i});const r=js.encodeUnwrapAaveStaticToken({staticToken:e,sender:s.recipient,recipient:s.sender,amount:i,toUnderlying:!0,outputReferences:0});d.push(r)}));return[js.encodeBatchSwap({swapType:t,swaps:a,assets:n,funds:s,limits:i.map((e=>e.toString())),deadline:r,value:"0",outputReferences:o}),...d]}}js.CHAINED_REFERENCE_TEMP_PREFIX="ba10",js.CHAINED_REFERENCE_READONLY_PREFIX="ba11",js.signRelayerApproval=async(e,t,a,n)=>{const s=n.interface.encodeFunctionData("setRelayerApproval",[t,e,!0]),i=await Pe.signSetRelayerApprovalAuthorization(n,a,e,s);return Pe.encodeCalldataAuthorization("0x",r,i)};class Xs{constructor(e){this.url=vs(e).urls.subgraph,this.client=this.initClient()}initClient(){return Wn(new W(this.url))}}class Ks{constructor(e,t){this.swaps=t||new Vs(e)}async fetchPools(){return this.swaps.fetchPools()}getPools(){return this.swaps.getPools()}async getSpotPrice(e,t,a=[]){0===a.length&&(await this.fetchPools(),a=this.getPools());const n=R(a,0),s=this.swaps.sor.routeProposer.getCandidatePathsFromDict(e,t,0,n,4);if(0===s.length)throw new $t(Gt.UNSUPPORTED_PAIR);return M(s[0],0,P).toString()}}var Ys=[{constant:!0,inputs:[],name:"name",outputs:[{name:"",type:"string"}],payable:!1,stateMutability:"view",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:"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:[{name:"",type:"bool"}],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:"_owner",type:"address"}],name:"balanceOf",outputs:[{name:"balance",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:"_to",type:"address"},{name:"_value",type:"uint256"}],name:"transfer",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"},{payable:!0,stateMutability:"payable",type:"fallback"},{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"}];function Js(e){return Math.round(Date.now()/1e3)-e<86400}var Zs=[{name:"Deposit",inputs:[{name:"provider",type:"address",indexed:!0},{name:"value",type:"uint256",indexed:!1},{name:"locktime",type:"uint256",indexed:!0},{name:"type",type:"int128",indexed:!1},{name:"ts",type:"uint256",indexed:!1}],anonymous:!1,type:"event"},{name:"Withdraw",inputs:[{name:"provider",type:"address",indexed:!0},{name:"value",type:"uint256",indexed:!1},{name:"ts",type:"uint256",indexed:!1}],anonymous:!1,type:"event"},{name:"Supply",inputs:[{name:"prevSupply",type:"uint256",indexed:!1},{name:"supply",type:"uint256",indexed:!1}],anonymous:!1,type:"event"},{stateMutability:"nonpayable",type:"constructor",inputs:[{name:"token_addr",type:"address"},{name:"_name",type:"string"},{name:"_symbol",type:"string"},{name:"_authorizer_adaptor",type:"address"}],outputs:[]},{stateMutability:"view",type:"function",name:"token",inputs:[],outputs:[{name:"",type:"address"}]},{stateMutability:"view",type:"function",name:"name",inputs:[],outputs:[{name:"",type:"string"}]},{stateMutability:"view",type:"function",name:"symbol",inputs:[],outputs:[{name:"",type:"string"}]},{stateMutability:"view",type:"function",name:"decimals",inputs:[],outputs:[{name:"",type:"uint256"}]},{stateMutability:"view",type:"function",name:"admin",inputs:[],outputs:[{name:"",type:"address"}]},{stateMutability:"nonpayable",type:"function",name:"commit_smart_wallet_checker",inputs:[{name:"addr",type:"address"}],outputs:[]},{stateMutability:"nonpayable",type:"function",name:"apply_smart_wallet_checker",inputs:[],outputs:[]},{stateMutability:"view",type:"function",name:"get_last_user_slope",inputs:[{name:"addr",type:"address"}],outputs:[{name:"",type:"int128"}]},{stateMutability:"view",type:"function",name:"user_point_history__ts",inputs:[{name:"_addr",type:"address"},{name:"_idx",type:"uint256"}],outputs:[{name:"",type:"uint256"}]},{stateMutability:"view",type:"function",name:"locked__end",inputs:[{name:"_addr",type:"address"}],outputs:[{name:"",type:"uint256"}]},{stateMutability:"nonpayable",type:"function",name:"checkpoint",inputs:[],outputs:[]},{stateMutability:"nonpayable",type:"function",name:"deposit_for",inputs:[{name:"_addr",type:"address"},{name:"_value",type:"uint256"}],outputs:[]},{stateMutability:"nonpayable",type:"function",name:"create_lock",inputs:[{name:"_value",type:"uint256"},{name:"_unlock_time",type:"uint256"}],outputs:[]},{stateMutability:"nonpayable",type:"function",name:"increase_amount",inputs:[{name:"_value",type:"uint256"}],outputs:[]},{stateMutability:"nonpayable",type:"function",name:"increase_unlock_time",inputs:[{name:"_unlock_time",type:"uint256"}],outputs:[]},{stateMutability:"nonpayable",type:"function",name:"withdraw",inputs:[],outputs:[]},{stateMutability:"view",type:"function",name:"balanceOf",inputs:[{name:"addr",type:"address"}],outputs:[{name:"",type:"uint256"}]},{stateMutability:"view",type:"function",name:"balanceOf",inputs:[{name:"addr",type:"address"},{name:"_t",type:"uint256"}],outputs:[{name:"",type:"uint256"}]},{stateMutability:"view",type:"function",name:"balanceOfAt",inputs:[{name:"addr",type:"address"},{name:"_block",type:"uint256"}],outputs:[{name:"",type:"uint256"}]},{stateMutability:"view",type:"function",name:"totalSupply",inputs:[],outputs:[{name:"",type:"uint256"}]},{stateMutability:"view",type:"function",name:"totalSupply",inputs:[{name:"t",type:"uint256"}],outputs:[{name:"",type:"uint256"}]},{stateMutability:"view",type:"function",name:"totalSupplyAt",inputs:[{name:"_block",type:"uint256"}],outputs:[{name:"",type:"uint256"}]},{stateMutability:"view",type:"function",name:"supply",inputs:[],outputs:[{name:"",type:"uint256"}]},{stateMutability:"view",type:"function",name:"locked",inputs:[{name:"arg0",type:"address"}],outputs:[{name:"",type:"tuple",components:[{name:"amount",type:"int128"},{name:"end",type:"uint256"}]}]},{stateMutability:"view",type:"function",name:"epoch",inputs:[],outputs:[{name:"",type:"uint256"}]},{stateMutability:"view",type:"function",name:"point_history",inputs:[{name:"arg0",type:"uint256"}],outputs:[{name:"",type:"tuple",components:[{name:"bias",type:"int128"},{name:"slope",type:"int128"},{name:"ts",type:"uint256"},{name:"blk",type:"uint256"}]}]},{stateMutability:"view",type:"function",name:"user_point_history",inputs:[{name:"arg0",type:"address"},{name:"arg1",type:"uint256"}],outputs:[{name:"",type:"tuple",components:[{name:"bias",type:"int128"},{name:"slope",type:"int128"},{name:"ts",type:"uint256"},{name:"blk",type:"uint256"}]}]},{stateMutability:"view",type:"function",name:"user_point_epoch",inputs:[{name:"arg0",type:"address"}],outputs:[{name:"",type:"uint256"}]},{stateMutability:"view",type:"function",name:"slope_changes",inputs:[{name:"arg0",type:"uint256"}],outputs:[{name:"",type:"int128"}]},{stateMutability:"view",type:"function",name:"future_smart_wallet_checker",inputs:[],outputs:[{name:"",type:"address"}]},{stateMutability:"view",type:"function",name:"smart_wallet_checker",inputs:[],outputs:[{name:"",type:"address"}]}];class zs{constructor(e,t){this.addresses=e,this.provider=t}async getLockInfo(e){if(!this.addresses.veBal)throw new Error("veBal address must be defined");const t=new Ts(this.addresses.multicall,this.provider,Zs);t.call("locked",this.addresses.veBal,"locked",[e]),t.call("epoch",this.addresses.veBal,"epoch"),t.call("totalSupply",this.addresses.veBal,"totalSupply()");const a=await t.execute();return this.formatLockInfo(a)}formatLockInfo(e){const[t,a]=e.locked,n=t.gt(0),s=1e3*a.toNumber();const i=n&&Date.now()>s;return{lockedEndDate:s,lockedAmount:rt(t),totalSupply:rt(e.totalSupply),epoch:rt(e.epoch,0),hasExistingLock:n,isExpired:i}}}var Qs=[{inputs:[{internalType:"contract IVault",name:"vault",type:"address"},{internalType:"contract IERC20",name:"votingEscrow",type:"address"},{internalType:"contract IVeDelegation",name:"delegation",type:"address"}],stateMutability:"nonpayable",type:"constructor"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"newImplementation",type:"address"}],name:"DelegationImplementationUpdated",type:"event"},{inputs:[{internalType:"address",name:"user",type:"address"}],name:"adjustedBalanceOf",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"user",type:"address"}],name:"adjusted_balance_of",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"bytes4",name:"selector",type:"bytes4"}],name:"getActionId",outputs:[{internalType:"bytes32",name:"",type:"bytes32"}],stateMutability:"view",type:"function"},{inputs:[],name:"getAuthorizer",outputs:[{internalType:"contract IAuthorizer",name:"",type:"address"}],stateMutability:"view",type:"function"},{inputs:[],name:"getDelegationImplementation",outputs:[{internalType:"contract IVeDelegation",name:"",type:"address"}],stateMutability:"view",type:"function"},{inputs:[],name:"getVault",outputs:[{internalType:"contract IVault",name:"",type:"address"}],stateMutability:"view",type:"function"},{inputs:[],name:"getVotingEscrow",outputs:[{internalType:"contract IERC20",name:"",type:"address"}],stateMutability:"view",type:"function"},{inputs:[],name:"killDelegation",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"contract IVeDelegation",name:"delegation",type:"address"}],name:"setDelegation",outputs:[],stateMutability:"nonpayable",type:"function"}];class ei{constructor(e,t){if(!e.veBalProxy)throw new Error("veBalProxy address must be defined");this.instance=new u(e.veBalProxy,Qs,t)}async getAdjustedBalance(e){return rt(await this.instance.adjustedBalanceOf(e))}}var ti=[{inputs:[{internalType:"contract IVault",name:"vault",type:"address"},{internalType:"address",name:"libraryAddress",type:"address"}],stateMutability:"nonpayable",type:"constructor"},{inputs:[],name:"getLibrary",outputs:[{internalType:"address",name:"",type:"address"}],stateMutability:"view",type:"function"},{inputs:[],name:"getVault",outputs:[{internalType:"contract IVault",name:"",type:"address"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"bytes[]",name:"data",type:"bytes[]"}],name:"multicall",outputs:[{internalType:"bytes[]",name:"results",type:"bytes[]"}],stateMutability:"payable",type:"function"},{stateMutability:"payable",type:"receive"}],ai=[{inputs:[{internalType:"contract IVault",name:"vault",type:"address"},{internalType:"address",name:"libraryAddress",type:"address"}],stateMutability:"nonpayable",type:"constructor"},{inputs:[],name:"getLibrary",outputs:[{internalType:"address",name:"",type:"address"}],stateMutability:"view",type:"function"},{inputs:[],name:"getVault",outputs:[{internalType:"contract IVault",name:"",type:"address"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"bytes[]",name:"data",type:"bytes[]"}],name:"multicall",outputs:[{internalType:"bytes[]",name:"results",type:"bytes[]"}],stateMutability:"payable",type:"function"},{stateMutability:"payable",type:"receive"}];const ni=(e,t,a)=>{switch(a){case 3:return new u(e,ai,t);case 4:return new u(e,ti,t);default:throw new Error("relayer not supported")}};var si=[{name:"Deposit",inputs:[{name:"provider",type:"address",indexed:!0},{name:"value",type:"uint256",indexed:!1}],anonymous:!1,type:"event"},{name:"Withdraw",inputs:[{name:"provider",type:"address",indexed:!0},{name:"value",type:"uint256",indexed:!1}],anonymous:!1,type:"event"},{name:"UpdateLiquidityLimit",inputs:[{name:"user",type:"address",indexed:!0},{name:"original_balance",type:"uint256",indexed:!1},{name:"original_supply",type:"uint256",indexed:!1},{name:"working_balance",type:"uint256",indexed:!1},{name:"working_supply",type:"uint256",indexed:!1}],anonymous:!1,type:"event"},{name:"Transfer",inputs:[{name:"_from",type:"address",indexed:!0},{name:"_to",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"},{stateMutability:"nonpayable",type:"constructor",inputs:[{name:"minter",type:"address"},{name:"veBoostProxy",type:"address"}],outputs:[]},{stateMutability:"nonpayable",type:"function",name:"deposit",inputs:[{name:"_value",type:"uint256"}],outputs:[]},{stateMutability:"nonpayable",type:"function",name:"deposit",inputs:[{name:"_value",type:"uint256"},{name:"_addr",type:"address"}],outputs:[]},{stateMutability:"nonpayable",type:"function",name:"deposit",inputs:[{name:"_value",type:"uint256"},{name:"_addr",type:"address"},{name:"_claim_rewards",type:"bool"}],outputs:[]},{stateMutability:"nonpayable",type:"function",name:"withdraw",inputs:[{name:"_value",type:"uint256"}],outputs:[]},{stateMutability:"nonpayable",type:"function",name:"withdraw",inputs:[{name:"_value",type:"uint256"},{name:"_claim_rewards",type:"bool"}],outputs:[]},{stateMutability:"nonpayable",type:"function",name:"claim_rewards",inputs:[],outputs:[]},{stateMutability:"nonpayable",type:"function",name:"claim_rewards",inputs:[{name:"_addr",type:"address"}],outputs:[]},{stateMutability:"nonpayable",type:"function",name:"claim_rewards",inputs:[{name:"_addr",type:"address"},{name:"_receiver",type:"address"}],outputs:[]},{stateMutability:"nonpayable",type:"function",name:"transferFrom",inputs:[{name:"_from",type:"address"},{name:"_to",type:"address"},{name:"_value",type:"uint256"}],outputs:[{name:"",type:"bool"}]},{stateMutability:"nonpayable",type:"function",name:"transfer",inputs:[{name:"_to",type:"address"},{name:"_value",type:"uint256"}],outputs:[{name:"",type:"bool"}]},{stateMutability:"nonpayable",type:"function",name:"approve",inputs:[{name:"_spender",type:"address"},{name:"_value",type:"uint256"}],outputs:[{name:"",type:"bool"}]},{stateMutability:"nonpayable",type:"function",name:"permit",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"}],outputs:[{name:"",type:"bool"}]},{stateMutability:"nonpayable",type:"function",name:"increaseAllowance",inputs:[{name:"_spender",type:"address"},{name:"_added_value",type:"uint256"}],outputs:[{name:"",type:"bool"}]},{stateMutability:"nonpayable",type:"function",name:"decreaseAllowance",inputs:[{name:"_spender",type:"address"},{name:"_subtracted_value",type:"uint256"}],outputs:[{name:"",type:"bool"}]},{stateMutability:"nonpayable",type:"function",name:"user_checkpoint",inputs:[{name:"addr",type:"address"}],outputs:[{name:"",type:"bool"}]},{stateMutability:"nonpayable",type:"function",name:"set_rewards_receiver",inputs:[{name:"_receiver",type:"address"}],outputs:[]},{stateMutability:"nonpayable",type:"function",name:"kick",inputs:[{name:"addr",type:"address"}],outputs:[]},{stateMutability:"nonpayable",type:"function",name:"deposit_reward_token",inputs:[{name:"_reward_token",type:"address"},{name:"_amount",type:"uint256"}],outputs:[]},{stateMutability:"nonpayable",type:"function",name:"add_reward",inputs:[{name:"_reward_token",type:"address"},{name:"_distributor",type:"address"}],outputs:[]},{stateMutability:"nonpayable",type:"function",name:"set_reward_distributor",inputs:[{name:"_reward_token",type:"address"},{name:"_distributor",type:"address"}],outputs:[]},{stateMutability:"nonpayable",type:"function",name:"set_killed",inputs:[{name:"_is_killed",type:"bool"}],outputs:[]},{stateMutability:"view",type:"function",name:"claimed_reward",inputs:[{name:"_addr",type:"address"},{name:"_token",type:"address"}],outputs:[{name:"",type:"uint256"}]},{stateMutability:"view",type:"function",name:"claimable_reward",inputs:[{name:"_user",type:"address"},{name:"_reward_token",type:"address"}],outputs:[{name:"",type:"uint256"}]},{stateMutability:"view",type:"function",name:"claimable_reward_write",inputs:[{name:"_addr",type:"address"},{name:"_token",type:"address"}],outputs:[{name:"",type:"uint256"}]},{stateMutability:"view",type:"function",name:"claimable_tokens",inputs:[{name:"addr",type:"address"}],outputs:[{name:"",type:"uint256"}]},{stateMutability:"view",type:"function",name:"integrate_checkpoint",inputs:[],outputs:[{name:"",type:"uint256"}]},{stateMutability:"view",type:"function",name:"future_epoch_time",inputs:[],outputs:[{name:"",type:"uint256"}]},{stateMutability:"view",type:"function",name:"inflation_rate",inputs:[],outputs:[{name:"",type:"uint256"}]},{stateMutability:"view",type:"function",name:"decimals",inputs:[],outputs:[{name:"",type:"uint256"}]},{stateMutability:"view",type:"function",name:"version",inputs:[],outputs:[{name:"",type:"string"}]},{stateMutability:"view",type:"function",name:"allowance",inputs:[{name:"owner",type:"address"},{name:"spender",type:"address"}],outputs:[{name:"",type:"uint256"}]},{stateMutability:"nonpayable",type:"function",name:"initialize",inputs:[{name:"_lp_token",type:"address"}],outputs:[]},{stateMutability:"view",type:"function",name:"balanceOf",inputs:[{name:"arg0",type:"address"}],outputs:[{name:"",type:"uint256"}]},{stateMutability:"view",type:"function",name:"totalSupply",inputs:[],outputs:[{name:"",type:"uint256"}]},{stateMutability:"view",type:"function",name:"name",inputs:[],outputs:[{name:"",type:"string"}]},{stateMutability:"view",type:"function",name:"symbol",inputs:[],outputs:[{name:"",type:"string"}]},{stateMutability:"view",type:"function",name:"DOMAIN_SEPARATOR",inputs:[],outputs:[{name:"",type:"bytes32"}]},{stateMutability:"view",type:"function",name:"nonces",inputs:[{name:"arg0",type:"address"}],outputs:[{name:"",type:"uint256"}]},{stateMutability:"view",type:"function",name:"factory",inputs:[],outputs:[{name:"",type:"address"}]},{stateMutability:"view",type:"function",name:"lp_token",inputs:[],outputs:[{name:"",type:"address"}]},{stateMutability:"view",type:"function",name:"is_killed",inputs:[],outputs:[{name:"",type:"bool"}]},{stateMutability:"view",type:"function",name:"reward_count",inputs:[],outputs:[{name:"",type:"uint256"}]},{stateMutability:"view",type:"function",name:"reward_data",inputs:[{name:"arg0",type:"address"}],outputs:[{name:"",type:"tuple",components:[{name:"token",type:"address"},{name:"distributor",type:"address"},{name:"period_finish",type:"uint256"},{name:"rate",type:"uint256"},{name:"last_update",type:"uint256"},{name:"integral",type:"uint256"}]}]},{stateMutability:"view",type:"function",name:"rewards_receiver",inputs:[{name:"arg0",type:"address"}],outputs:[{name:"",type:"address"}]},{stateMutability:"view",type:"function",name:"reward_integral_for",inputs:[{name:"arg0",type:"address"},{name:"arg1",type:"address"}],outputs:[{name:"",type:"uint256"}]},{stateMutability:"view",type:"function",name:"working_balances",inputs:[{name:"arg0",type:"address"}],outputs:[{name:"",type:"uint256"}]},{stateMutability:"view",type:"function",name:"working_supply",inputs:[],outputs:[{name:"",type:"uint256"}]},{stateMutability:"view",type:"function",name:"integrate_inv_supply_of",inputs:[{name:"arg0",type:"address"}],outputs:[{name:"",type:"uint256"}]},{stateMutability:"view",type:"function",name:"integrate_checkpoint_of",inputs:[{name:"arg0",type:"address"}],outputs:[{name:"",type:"uint256"}]},{stateMutability:"view",type:"function",name:"integrate_fraction",inputs:[{name:"arg0",type:"address"}],outputs:[{name:"",type:"uint256"}]},{stateMutability:"view",type:"function",name:"period",inputs:[],outputs:[{name:"",type:"int128"}]},{stateMutability:"view",type:"function",name:"reward_tokens",inputs:[{name:"arg0",type:"uint256"}],outputs:[{name:"",type:"address"}]},{stateMutability:"view",type:"function",name:"period_timestamp",inputs:[{name:"arg0",type:"uint256"}],outputs:[{name:"",type:"uint256"}]},{stateMutability:"view",type:"function",name:"integrate_inv_supply",inputs:[{name:"arg0",type:"uint256"}],outputs:[{name:"",type:"uint256"}]}];class ii{constructor(e,t){this.contractAddresses="number"==typeof e?Lt[e].addresses.contracts:e,this.vault=L.connect(this.contractAddresses.vault,t),this.balancerHelpers=U.connect(this.contractAddresses.balancerHelpers,t),this.contractAddresses.lidoRelayer&&(this.lidoRelayer=G.connect(this.contractAddresses.lidoRelayer,t)),this.multicall=hs(this.contractAddresses.multicall,t),this.contractAddresses.relayerV3&&(this.relayerV3=ni(this.contractAddresses.relayerV3,t,3)),this.contractAddresses.relayerV4&&(this.relayerV4=ni(this.contractAddresses.relayerV4,t,4)),this.contractAddresses.veBal&&(this.veBal=new zs(this.contractAddresses,t)),this.contractAddresses.veBalProxy&&(this.veBalProxy=new ei(this.contractAddresses,t))}get contracts(){return{vault:this.vault,balancerHelpers:this.balancerHelpers,lidoRelayer:this.lidoRelayer,multicall:this.multicall,relayerV3:this.relayerV3,relayerV4:this.relayerV4,veBal:this.veBal,veBalProxy:this.veBalProxy,ERC20:this.getErc20,liquidityGauge:this.getLiquidityGauge}}getErc20(e,t){return((e,t)=>new u(e,Ys,t))(e,t)}getLiquidityGauge(e,t){return((e,t)=>new u(e,si,t))(e,t)}}const ri={1:{relayer:"0x886A3Ec7bcC508B8795990B60Fa21f85F9dB7948",staBal3:{id:"0x06df3b2bbb68adc8b0e302443692037ed9f91b42000000000000000000000063",address:"0x06df3b2bbb68adc8b0e302443692037ed9f91b42",gauge:"0x34f33cdaed8ba0e1ceece80e5f4a73bcf234cfac",assetOrder:["DAI","USDC","USDT"]},bbausd1:{id:"0x7b50775383d3d6f0215a8f290f2c9e2eebbeceb20000000000000000000000fe",address:"0x7b50775383d3d6f0215a8f290f2c9e2eebbeceb2",gauge:"0x68d019f64a7aa97e2d4e7363aee42251d08124fb",assetOrder:["bb-a-USDT","bb-a-DAI","bb-a-USDC"]},bbausd2:{id:"0xa13a9247ea42d743238089903570127dda72fe4400000000000000000000035d",address:"0xa13a9247ea42d743238089903570127dda72fe44",gauge:"0xa6325e799d266632d347e41265a69af111b05403"},linearUsdc1:{id:"0x9210f1204b5a24742eba12f710636d76240df3d00000000000000000000000fc",address:"0x9210F1204b5a24742Eba12f710636D76240dF3d0"},linearDai1:{id:"0x804cdb9116a10bb78768d3252355a1b18067bf8f0000000000000000000000fb",address:"0x804CdB9116a10bB78768D3252355a1b18067bF8f"},linearUsdt1:{id:"0x2bbf681cc4eb09218bee85ea2a5d3d13fa40fc0c0000000000000000000000fd",address:"0x2BBf681cC4eb09218BEe85EA2a5d3D13Fa40fC0C"},linearUsdc2:{id:"0x82698AECC9E28E9BB27608BD52CF57F704BD1B83000000000000000000000336",address:"0x82698aeCc9E28e9Bb27608Bd52cF57f704BD1B83"},linearDai2:{id:"0xAE37D54AE477268B9997D4161B96B8200755935C000000000000000000000337",address:"0xae37D54Ae477268B9997d4161B96b8200755935c"},linearUsdt2:{id:"0x2F4EB100552EF93840D5ADC30560E5513DFFFACB000000000000000000000334",address:"0x2F4eb100552ef93840d5aDC30560E5513DFfFACb"},maiusd:{id:"",address:"",gauge:"",assetOrder:["USDT","miMATIC","DAI","USDC"]},maibbausd:{id:"",address:"",gauge:"",assetOrder:["bb-a-USD","miMATIC"]},DAI:"0x6b175474e89094c44da98b954eedeac495271d0f",USDC:"0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48",USDT:"0xdAC17F958D2ee523a2206206994597C13D831ec7",waDAI:"0x02d60b84491589974263d922d9cc7a3152618ef6",waUSDC:"0xd093fa4fb80d09bb30817fdcd442d4d02ed3e5de",waUSDT:"0xf8fd466f12e236f4c96f7cce6c79eadb819abf58",miMATIC:""},5:{relayer:"0x7b9B6f094DC2Bd1c12024b0D9CC63d6993Be1888",staBal3:{id:"0xdcdd4a3d36dec8d57594e89763d069a7e9b223e2000000000000000000000062",address:"0xdcdd4a3d36dec8d57594e89763d069a7e9b223e2",gauge:"0xfd364cda96bb7db06b65706182c448a73f0a5f9a",assetOrder:["USDT","DAI","USDC"]},staBal3_2:{id:"0xff9d677474d4344379924e10b68c8fea67e03294000000000000000000000072",address:"0xff9d677474d4344379924e10b68c8fea67e03294",gauge:"0x4e4ebf2aa90e41174d716a5168895357762d68af",assetOrder:["USDT","DAI","USDC"]},staBal3_3:{id:"0x3bfc8a0509f1a68aefd446f6c19bf37b3c75a8fc0000000000000000000000a5",address:"0x3bfc8a0509f1a68aefd446f6c19bf37b3c75a8fc",gauge:"0x7776e1008d7c20ab54aa57a7c44fc7de602de29a",assetOrder:["USDT","DAI","USDC"]},bbausd1:{id:"0x13acd41c585d7ebb4a9460f7c8f50be60dc080cd00000000000000000000005f",address:"0x13acd41c585d7ebb4a9460f7c8f50be60dc080cd",gauge:"0xa2d0ea81a47d68598922cd54c59249ff58c2a3ff",assetOrder:["bb-a-USDC","bb-a-DAI","bb-a-USDT"]},bbausd2:{id:"0x13acd41c585d7ebb4a9460f7c8f50be60dc080cd00000000000000000000005f",address:"0x13acd41c585d7ebb4a9460f7c8f50be60dc080cd",gauge:"0xa2d0ea81a47d68598922cd54c59249ff58c2a3ff"},linearUsdc1:{id:"0x0595d1df64279ddb51f1bdc405fe2d0b4cc8668100000000000000000000005c",address:"0x0595d1df64279ddb51f1bdc405fe2d0b4cc86681"},linearDai1:{id:"0x5cea6a84ed13590ed14903925fa1a73c36297d9900000000000000000000005d",address:"0x5cea6a84ed13590ed14903925fa1a73c36297d99"},linearUsdt1:{id:"0xefd681a82970ac5d980b9b2d40499735e7bf3f1f00000000000000000000005e",address:"0xefd681a82970ac5d980b9b2d40499735e7bf3f1f"},linearUsdc2:{id:"0x0595d1df64279ddb51f1bdc405fe2d0b4cc8668100000000000000000000005c",address:"0x0595d1df64279ddb51f1bdc405fe2d0b4cc86681"},linearDai2:{id:"0x5cea6a84ed13590ed14903925fa1a73c36297d9900000000000000000000005d",address:"0x5cea6a84ed13590ed14903925fa1a73c36297d99"},linearUsdt2:{id:"0xefd681a82970ac5d980b9b2d40499735e7bf3f1f00000000000000000000005e",address:"0xefd681a82970ac5d980b9b2d40499735e7bf3f1f"},maiusd:{id:"0x6a8f9ab364b85725973d2a33cb9aae2dac43b5e30000000000000000000000a6",address:"0x6a8f9ab364b85725973d2a33cb9aae2dac43b5e3",gauge:"0x58141bdcecb7fbae006964f4131cf6f65c948357",assetOrder:["USDT","miMATIC","DAI","USDC"]},maibbausd:{id:"0xb04b03b78cf79788a1931545bd2744161029648f0000000000000000000000a8",address:"0xb04b03b78cf79788a1931545bd2744161029648f",gauge:"0xdc3f6fc8898830e53c777543fe252b14f22680d4",assetOrder:["bb-a-USD","miMATIC","MAI BSP"]},USDT:"0x1f1f156e0317167c11aa412e3d1435ea29dc3cce",DAI:"0x8c9e6c40d3402480ace624730524facc5482798c",USDC:"0xe0c9275e44ea80ef17579d33c55136b7da269aeb",waDAI:"0x89534a24450081aa267c79b07411e9617d984052",waUSDC:"0x811151066392fd641fe74a9b55a712670572d161",waUSDT:"0x4cb1892fddf14f772b2e39e299f44b2e5da90d04",miMATIC:"0x398106564948feeb1fedea0709ae7d969d62a391"},137:{relayer:"0xcf6a66E32dCa0e26AcC3426b851FD8aCbF12Dac7",staBal3:{id:"",address:"",gauge:"",assetOrder:["USDT","DAI","USDC"]},bbausd1:{id:"",address:"",gauge:"",assetOrder:["bb-a-USDC","bb-a-DAI","bb-a-USDT"]},bbausd2:{id:"0x48e6b98ef6329f8f0a30ebb8c7c960330d64808500000000000000000000075b",address:"0x48e6b98ef6329f8f0a30ebb8c7c960330d648085",gauge:""},linearUsdc1:{id:"",address:""},linearDai1:{id:"",address:""},linearUsdt1:{id:"",address:""},linearUsdc2:{id:"0xf93579002dbe8046c43fefe86ec78b1112247bb8000000000000000000000759",address:"0xf93579002dbe8046c43fefe86ec78b1112247bb8"},linearDai2:{id:"0x178e029173417b1f9c8bc16dcec6f697bc323746000000000000000000000758",address:"0x178e029173417b1f9c8bc16dcec6f697bc323746"},linearUsdt2:{id:"0xff4ce5aaab5a627bf82f4a571ab1ce94aa365ea600000000000000000000075a",address:"0xff4ce5aaab5a627bf82f4a571ab1ce94aa365ea6"},maiusd:{id:"0x06df3b2bbb68adc8b0e302443692037ed9f91b42000000000000000000000012",address:"0x06df3b2bbb68adc8b0e302443692037ed9f91b42",gauge:"0x72843281394e68de5d55bcf7072bb9b2ebc24150",assetOrder:["USDC","DAI","miMATIC","USDT"]},maibbausd:{id:"0xb54b2125b711cd183edd3dd09433439d5396165200000000000000000000075e",address:"0xb54b2125b711cd183edd3dd09433439d53961652",gauge:"0x9a105ef22a59484aa2731c357049f6a13d0891f5",assetOrder:["bb-a-USD","miMATIC"]},USDT:"0xc2132d05d31c914a87c6611c10748aeb04b58e8f",DAI:"0x8f3cf7ad23cd3cadbd9735aff958023239c6a063",USDC:"0x2791bca1f2de4661ed88a30c99a7a9449aa84174",waDAI:"0xEE029120c72b0607344f35B17cdD90025e647B00",waUSDC:"0x221836a597948Dce8F3568E044fF123108aCc42A",waUSDT:"0x19C60a251e525fa88Cd6f3768416a8024e98fC19",miMATIC:"0xa3fa99a148fa48d14ed51d610c367c61876997f1"}},oi=new t(ai),di=js.toChainedReference("21"),ci=js.toChainedReference("22"),li=js.toChainedReference("23"),pi=js.toChainedReference("24");class ui{constructor(e){this.addresses=ri[e]}calldata(e,t,a,n,s){if(d.from(t).lte(0))throw new $t(Gt.INPUT_ZERO_NOT_ALLOWED);const i=this.addresses.relayer;let r=[];s&&(r=[this.buildSetRelayerApproval(s)]),r=n?[...r,this.buildWithdraw(e,t),this.buildExit(i,t),this.buildSwap(a,i),this.buildDeposit(e)]:[...r,this.buildExit(e,t),this.buildSwap(a,e)];return{to:i,data:oi.encodeFunctionData("multicall",[r])}}buildExit(e,t){const{assetOrder:a}=this.addresses.staBal3,n=a.map((e=>this.addresses[e])),s=Z.exitExactBPTInForTokensOut(t),i=[{index:a.indexOf("DAI"),key:di},{index:a.indexOf("USDC"),key:ci},{index:a.indexOf("USDT"),key:li}];return js.constructExitCall({assets:n,minAmountsOut:["0","0","0"],userData:s,toInternalBalance:!0,poolId:this.addresses.staBal3.id,poolKind:0,sender:e,recipient:this.addresses.relayer,outputReferences:i,exitPoolRequest:{}})}buildSwap(e,t){const a=[this.addresses.bbausd2.address,this.addresses.DAI,this.addresses.linearDai2.address,this.addresses.USDC,this.addresses.linearUsdc2.address,this.addresses.USDT,this.addresses.linearUsdt2.address],n=[{index:0,key:pi}],s=[{poolId:this.addresses.linearDai2.id,assetInIndex:1,assetOutIndex:2,amount:di.toString(),userData:"0x"},{poolId:this.addresses.bbausd2.id,assetInIndex:2,assetOutIndex:0,amount:"0",userData:"0x"},{poolId:this.addresses.linearUsdc2.id,assetInIndex:3,assetOutIndex:4,amount:ci.toString(),userData:"0x"},{poolId:this.addresses.bbausd2.id,assetInIndex:4,assetOutIndex:0,amount:"0",userData:"0x"},{poolId:this.addresses.linearUsdt2.id,assetInIndex:5,assetOutIndex:6,amount:li.toString(),userData:"0x"},{poolId:this.addresses.bbausd2.id,assetInIndex:6,assetOutIndex:0,amount:"0",userData:"0x"}],i=[d.from(e).mul(-1).toString(),o.toString(),"0",o.toString(),"0",o.toString(),"0"],r={sender:this.addresses.relayer,recipient:t,fromInternalBalance:!0,toInternalBalance:!1};return js.encodeBatchSwap({swapType:kt.SwapExactIn,swaps:s,assets:a,funds:r,limits:i,deadline:d.from(Math.ceil(Date.now()/1e3)+3600),value:"0",outputReferences:n})}buildWithdraw(e,t){return js.encodeGaugeWithdraw(this.addresses.staBal3.gauge,e,this.addresses.relayer,t)}buildDeposit(e){return js.encodeGaugeDeposit(this.addresses.bbausd2.gauge,this.addresses.relayer,e,pi.toString())}buildSetRelayerApproval(e){return js.encodeSetRelayerApproval(this.addresses.relayer,!0,e)}}const yi=new t(ai),bi=js.toChainedReference("24");class fi{constructor(e){this.addresses=ri[e]}calldata(e,t,a,n,s,i){if(d.from(t).lte(0))throw new $t(Gt.INPUT_ZERO_NOT_ALLOWED);const r=this.addresses.relayer;let o=[];i&&(o=[this.buildSetRelayerApproval(i)]),o=n?[...o,this.buildWithdraw(e,t),this.buildSwap(t,a,r,r,s),this.buildDeposit(e)]:[...o,this.buildSwap(t,a,e,e,s)];const c=yi.encodeFunctionData("multicall",[o]);return{to:this.addresses.relayer,data:c}}buildSwap(e,t,a,n,i){const r=[this.addresses.bbausd2.address,this.addresses.waDAI,this.addresses.linearDai1.address,this.addresses.linearDai2.address,this.addresses.waUSDC,this.addresses.linearUsdc1.address,this.addresses.linearUsdc2.address,this.addresses.waUSDT,this.addresses.linearUsdt1.address,this.addresses.linearUsdt2.address,this.addresses.bbausd1.address],o=[{index:0,key:bi}],c=i.reduce(((e,t)=>e.add(d.from(t))),s),{assetOrder:l}=this.addresses.bbausd1,p=d.from(e).mul(i[l.indexOf("bb-a-USDC")]).div(c).toString(),u=d.from(e).mul(i[l.indexOf("bb-a-DAI")]).div(c).toString(),y=d.from(e).sub(p).sub(u).toString(),b=[{poolId:this.addresses.bbausd1.id,assetInIndex:10,assetOutIndex:2,amount:u,userData:"0x"},{poolId:this.addresses.linearDai1.id,assetInIndex:2,assetOutIndex:1,amount:"0",userData:"0x"},{poolId:this.addresses.linearDai2.id,assetInIndex:1,assetOutIndex:3,amount:"0",userData:"0x"},{poolId:this.addresses.bbausd2.id,assetInIndex:3,assetOutIndex:0,amount:"0",userData:"0x"},{poolId:this.addresses.bbausd1.id,assetInIndex:10,assetOutIndex:5,amount:p,userData:"0x"},{poolId:this.addresses.linearUsdc1.id,assetInIndex:5,assetOutIndex:4,amount:"0",userData:"0x"},{poolId:this.addresses.linearUsdc2.id,assetInIndex:4,assetOutIndex:6,amount:"0",userData:"0x"},{poolId:this.addresses.bbausd2.id,assetInIndex:6,assetOutIndex:0,amount:"0",userData:"0x"},{poolId:this.addresses.bbausd1.id,assetInIndex:10,assetOutIndex:8,amount:y,userData:"0x"},{poolId:this.addresses.linearUsdt1.id,assetInIndex:8,assetOutIndex:7,amount:"0",userData:"0x"},{poolId:this.addresses.linearUsdt2.id,assetInIndex:7,assetOutIndex:9,amount:"0",userData:"0x"},{poolId:this.addresses.bbausd2.id,assetInIndex:9,assetOutIndex:0,amount:"0",userData:"0x"}],f=[d.from(t).mul(-1).toString(),"0","0","0","0","0","0","0","0","0",e],m={sender:a,recipient:n,fromInternalBalance:!1,toInternalBalance:!1};return js.encodeBatchSwap({swapType:kt.SwapExactIn,swaps:b,assets:r,funds:m,limits:f,deadline:d.from(Math.ceil(Date.now()/1e3)+3600),value:"0",outputReferences:o})}buildWithdraw(e,t){return js.encodeGaugeWithdraw(this.addresses.bbausd1.gauge,e,this.addresses.relayer,t)}buildDeposit(e){return js.encodeGaugeDeposit(this.addresses.bbausd2.gauge,this.addresses.relayer,e,bi.toString())}buildSetRelayerApproval(e){return js.encodeSetRelayerApproval(this.addresses.relayer,!0,e)}}const mi=new t(ai),hi=js.toChainedReference("0"),Ti=[];class gi{constructor(e){this.addresses=ri[e]}calldata(e,t,a,n,s,i,r,o){if(i&&(null==t.gauge||null==a.gauge))throw new Error("Staked flow migration requires gauge addresses to be provided");const d=this.addresses.relayer;let c=[];o&&(c=[this.buildSetRelayerApproval(o)]),c=i?[...c,this.buildWithdraw(e,n,t.gauge),this.buildExit(t.id,d,n,r),this.buildSwap(s,d,a.id,a.address,r),this.buildDeposit(e,a.gauge)]:[...c,this.buildExit(t.id,e,n,r),this.buildSwap(s,e,a.id,a.address,r)];const l=mi.encodeFunctionData("multicall",[c]);return{to:this.addresses.relayer,data:l}}buildExit(e,t,a,n){const s=Z.exitExactBPTInForTokensOut(a),i=[];for(let e=0;e<n.length;e++)i[e]={index:e,key:js.toChainedReference(`${e+1}`)},Ti.push(i[e].key);const r=Array(n.length).fill("0");return js.constructExitCall({assets:n,minAmountsOut:r,userData:s,toInternalBalance:!0,poolId:e,poolKind:0,sender:t,recipient:this.addresses.relayer,outputReferences:i,exitPoolRequest:{}})}buildSwap(e,t,a,n,s){const i=[n,...s],r=[{index:0,key:hi}],c=[];for(let e=0;e<s.length;e++)c.push({poolId:a,assetInIndex:e+1,assetOutIndex:0,amount:Ti[e].toString(),userData:"0x"});const l=[d.from(e).mul(-1).toString()];for(let e=0;e<s.length;e++)l.push(o.toString());const p={sender:this.addresses.relayer,recipient:t,fromInternalBalance:!0,toInternalBalance:!1};return js.encodeBatchSwap({swapType:kt.SwapExactIn,swaps:c,assets:i,funds:p,limits:l,deadline:d.from(Math.ceil(Date.now()/1e3)+3600),value:"0",outputReferences:r})}buildWithdraw(e,t,a){return js.encodeGaugeWithdraw(a,e,this.addresses.relayer,t)}buildDeposit(e,t){return js.encodeGaugeDeposit(t,this.addresses.relayer,e,hi.toString())}buildSetRelayerApproval(e){return js.encodeSetRelayerApproval(this.addresses.relayer,!0,e)}}const Ii=new t(ai),wi=js.toChainedReference("20"),Ei=js.toChainedReference("21"),xi=js.toChainedReference("22"),Ai=js.toChainedReference("23"),Si=js.toChainedReference("24");class Pi{constructor(e){this.addresses=ri[e]}calldata(e,t,a,n,s){if(d.from(t).lte(0))throw new $t(Gt.INPUT_ZERO_NOT_ALLOWED);const i=this.addresses.relayer;let r=[];s&&(r=[this.buildSetRelayerApproval(s)]),r=n?[...r,this.buildWithdraw(e,t),this.buildExit(i,t),this.buildSwap(i,a),this.buildDeposit(e)]:[...r,this.buildExit(e,t),this.buildSwap(e,a)];return{to:i,data:Ii.encodeFunctionData("multicall",[r])}}buildExit(e,t){const{assetOrder:a}=this.addresses.maiusd,n=a.map((e=>this.addresses[e])),s=Z.exitExactBPTInForTokensOut(t),i=[{index:a.indexOf("miMATIC"),key:wi},{index:a.indexOf("DAI"),key:Ei},{index:a.indexOf("USDC"),key:xi},{index:a.indexOf("USDT"),key:Ai}],r=Array(n.length).fill("0");return js.constructExitCall({assets:n,minAmountsOut:r,userData:s,toInternalBalance:!0,poolId:this.addresses.maiusd.id,poolKind:0,sender:e,recipient:this.addresses.relayer,outputReferences:i,exitPoolRequest:{}})}buildSwap(e,t){const a=[this.addresses.bbausd2.address,this.addresses.DAI,this.addresses.linearDai2.address,this.addresses.USDC,this.addresses.linearUsdc2.address,this.addresses.USDT,this.addresses.linearUsdt2.address,this.addresses.miMATIC,this.addresses.maibbausd.address],n=[{index:8,key:Si}],s=[{poolId:this.addresses.linearDai2.id,assetInIndex:1,assetOutIndex:2,amount:Ei.toString(),userData:"0x"},{poolId:this.addresses.bbausd2.id,assetInIndex:2,assetOutIndex:0,amount:"0",userData:"0x"},{poolId:this.addresses.maibbausd.id,assetInIndex:0,assetOutIndex:8,amount:"0",userData:"0x"},{poolId:this.addresses.linearUsdc2.id,assetInIndex:3,assetOutIndex:4,amount:xi.toString(),userData:"0x"},{poolId:this.addresses.bbausd2.id,assetInIndex:4,assetOutIndex:0,amount:"0",userData:"0x"},{poolId:this.addresses.maibbausd.id,assetInIndex:0,assetOutIndex:8,amount:"0",userData:"0x"},{poolId:this.addresses.linearUsdt2.id,assetInIndex:5,assetOutIndex:6,amount:Ai.toString(),userData:"0x"},{poolId:this.addresses.bbausd2.id,assetInIndex:6,assetOutIndex:0,amount:"0",userData:"0x"},{poolId:this.addresses.maibbausd.id,assetInIndex:0,assetOutIndex:8,amount:"0",userData:"0x"},{poolId:this.addresses.maibbausd.id,assetInIndex:7,assetOutIndex:8,amount:wi.toString(),userData:"0x"}],i=["0",o.toString(),"0",o.toString(),"0",o.toString(),"0",o.toString(),d.from(t).mul(-1).toString()],r={sender:this.addresses.relayer,recipient:e,fromInternalBalance:!0,toInternalBalance:!1};return js.encodeBatchSwap({swapType:kt.SwapExactIn,swaps:s,assets:a,funds:r,limits:i,deadline:d.from(Math.ceil(Date.now()/1e3)+3600),value:"0",outputReferences:n})}buildWithdraw(e,t){return js.encodeGaugeWithdraw(this.addresses.maiusd.gauge,e,this.addresses.relayer,t)}buildDeposit(e){return js.encodeGaugeDeposit(this.addresses.maibbausd.gauge,this.addresses.relayer,e,Si.toString())}buildSetRelayerApproval(e){return js.encodeSetRelayerApproval(this.addresses.relayer,!0,e)}}class _i{constructor(e){this.network=e}stabal3(t,a,n,s,i){const r=new ui(this.network).calldata(t,a,n,s,i);return{to:r.to,data:r.data,decode:(t,a)=>{let n=a?2:1;i&&(n+=1);const s=e.decode(["bytes[]"],t);return e.decode(["int256[]"],s[0][n])[0][0].abs().toString()}}}bbaUsd(t,a,n,s,i,r){const o=new fi(this.network).calldata(t,a,n,s,i,r);return{to:o.to,data:o.data,decode:(t,a)=>{let n=a?1:0;r&&(n+=1);const s=e.decode(["bytes[]"],t);return e.decode(["int256[]"],s[0][n])[0][0].abs().toString()}}}stables(t,a,n,s,i,r,o,d){const c=new gi(this.network).calldata(t,a,n,s,i,r,o,d);return{to:c.to,data:c.data,decode:(t,a)=>{let n=a?2:1;d&&(n+=1);const s=e.decode(["bytes[]"],t);return e.decode(["int256[]"],s[0][n])[0][0].abs().toString()}}}maiusd(t,a,n,s,i){const r=new Pi(this.network).calldata(t,a,n,s,i);return{to:r.to,data:r.data,decode:(t,a)=>{let n=a?2:1;i&&(n+=1);const s=e.decode(["bytes[]"],t);return e.decode(["int256[]"],s[0][n])[0][8].abs().toString()}}}}class vi{constructor(e){this.network=e,this.migrations=new _i(e)}}class Oi{constructor(e,t){this.tokenPrices=e,this.tokenHistoricalPrices=t}async calcImpLoss(e,t){if(1e3*e>=Date.now())throw console.error(`[ImpermanentLossService][calcImpLoss]Error: ${$t.getMessage(Gt.TIMESTAMP_IN_THE_FUTURE)}`),new $t(Gt.TIMESTAMP_IN_THE_FUTURE);const a=await this.prepareData(e,t),n=this.getPoolValueDelta(a),s=this.getHoldValueDelta(a);return this.calculateImpermanentLoss(n,s)}calculateImpermanentLoss(e,t){return Math.floor(100*Math.abs(e/t-1)*100)/100}getPoolValueDelta(e){return e.reduce(((e,t)=>e*Math.pow(Math.abs(t.priceDelta+1),t.weight)),1)}getHoldValueDelta(e){return e.reduce(((e,t)=>e+Math.abs(t.priceDelta+1)*t.weight),0)}async prepareData(e,t){const a=t.tokens.filter((e=>e.address!==t.address)),n=this.getWeights(a),s=a.map((e=>e.address)),i=await this.getEntryPrices(e,s),r=await this.getExitPrices(a);return this.getAssets(a,r,i,n)}getAssets(e,t,a,n){return e.map(((e,s)=>({priceDelta:this.getDelta(a[e.address],t[e.address]),weight:n[s]})))}getDelta(e,t){if(0===e)throw console.error(`[ImpermanentLossService][getDelta]Error: ${$t.getMessage(Gt.ILLEGAL_PARAMETER)}: entry price is 0`),new $t(Gt.ILLEGAL_PARAMETER);return(t-e)/e}getWeights(e){const t=e.every((e=>!e.weight)),a=Math.round(1/e.length*100)/100,n=t?e.map((()=>a)):e.map((e=>{var t;return Number(null!==(t=e.weight)&&void 0!==t?t:0)}));if(n.some((e=>0===e)))throw console.error(`[ImpermanentLossService][getWeights]Error: ${$t.getMessage(Gt.MISSING_WEIGHT)}`),new $t(Gt.MISSING_WEIGHT);return n}async getExitPrices(e){var t;const a=await Promise.all(e.map((e=>this.tokenPrices.find(e.address)))).catch((()=>[]));if(!a.length||a.some((e=>void 0===(null==e?void 0:e.usd))))throw console.error(`[ImpermanentLossService][getExitPrices]Error: ${$t.getMessage(Gt.MISSING_PRICE_RATE)}`),new $t(Gt.MISSING_PRICE_RATE);const n=e.map(((e,t)=>({...e,price:a[t]}))),s={};for(const e of n)(null===(t=e.price)||void 0===t?void 0:t.usd)&&(s[e.address]=+e.price.usd);return s}async getEntryPrices(e,t){const a={};for(const n of t){const t=await this.tokenHistoricalPrices.findBy(n,e).catch((e=>{console.error(`[ImpermanentLossService][getEntryPrices]Error: ${e.message}`)}));if(!(null==t?void 0:t.usd))throw console.error(`[ImpermanentLossService][getEntryPrices]Error: ${$t.getMessage(Gt.MISSING_PRICE_RATE)}`),new $t(Gt.MISSING_PRICE_RATE);a[n]=+t.usd}return a}}const Bi=335e3,ki=1765411200,Di=(e=Math.round((new Date).getTime()/1e3))=>Bi;var Ni=Object.freeze({__proto__:null,INITIAL_RATE:Bi,START_EPOCH_TIME:ki,weekly:Di,total:e=>365*(Di()/7),between:(e,t)=>{if(e<ki)throw"start timestamp before emission schedule deployment";if(t<e)throw"cannot finish before starting";const a=t-e,n=Di()/7;return Math.round(a/86400)*n}});class Ci{constructor(e,t){this.repository=e,this.tokenPrices=t}async data(e=Date.now()){const t=await this.repository.multicallData(e),a=await this.tokenPrices.find(t.balAddress);if(!a||!a.usd)throw"No BAL USD price found";return{lastWeekBalRevenue:t.balAmount*parseFloat(a.usd),lastWeekBBAUsdRevenue:t.bbAUsdAmount*t.bbAUsdPrice,veBalSupply:t.veBalSupply}}}class Fi{constructor(e){this.yesterdaysPools=e}async last24h(e){let t;return this.yesterdaysPools&&(t=await this.yesterdaysPools.find(e.id)),e.totalSwapFee?(null==t?void 0:t.totalSwapFee)?parseFloat(e.totalSwapFee)-parseFloat(t.totalSwapFee):e.createTime&&Js(e.createTime)?parseFloat(e.totalSwapFee):0:0}}class Ri{constructor(e,t,a,n,s,i,r,o){this.pools=e,this.tokenPrices=t,this.tokenMeta=a,this.tokenYields=n,this.feeCollector=s,this.yesterdaysPools=i,this.liquidityGauges=r,this.feeDistributor=o}async swapFees(e){const t=await this.last24hFees(e),a=await this.totalLiquidity(e);if(!t||!a)return 0;const n=t*(1-await this.protocolSwapFeePercentage(e))/parseFloat(a)*1e4;return Math.round(365*n)}async tokenAprs(e){return{total:0,breakdown:{}}}async stakingApr(e,t=1){if(!this.liquidityGauges)return 0;const a=await this.liquidityGauges.findBy("poolId",e.id);if(!a||(248==e.chainId||9372==e.chainId||6343==e.chainId||4326==e.chainId)&&0==a.workingSupply||248!=e.chainId&&9372!=e.chainId&&6343!=e.chainId&&4326!=e.chainId&&0==a.totalSupply)return 0;const n=Lt[e.chainId].addresses.tokens.bal;if(!n)return 0;const[s,i]=await Promise.all([this.tokenPrices.find(n),this.bptPrice(e)]);if(!(null==s?void 0:s.usd))throw"Missing BAL price";const r=parseFloat(s.usd),o=Di()/7*365*a.relativeWeight*r,d=(a.workingSupply+.4)/.4*i;return Math.round(1e4*t*o/d)}async stakingAprNextPeriod(e,t=1){if(!this.liquidityGauges)return 0;const a=await this.liquidityGauges.findBy("poolId",e.id);if(!a)return 0;if(0==a.workingSupply)return a.relativeWeightNextPeriod&&a.relativeWeightNextPeriod>0?-1:0;const n=Lt[e.chainId].addresses.tokens.bal;if(!n)return 0;const[s,i]=await Promise.all([this.tokenPrices.find(n),this.bptPrice(e)]);if(!(null==s?void 0:s.usd))throw"Missing BAL price";const r=parseFloat(s.usd),o=Di()/7*365*(a.relativeWeightNextPeriod||0)*r,d=(a.workingSupply+.4)/.4*i;return Math.round(1e4*t*o/d)}async rewardAprs(e){if(!this.liquidityGauges)return{total:0,breakdown:{}};const t=await this.liquidityGauges.findBy("poolId",e.id);if(!t)return{total:0,breakdown:{}};if(!t.rewardTokens)return{total:0,breakdown:{}};if(Object.keys(t.rewardTokens).length<1)return{total:0,breakdown:{}};const a=Lt[e.chainId].addresses.tokens.bal,n=Object.keys(t.rewardTokens).filter((e=>e!=a)).map((async e=>{const a=t.rewardTokens[e];return this.rewardTokenApr(e,a)})),s=await this.bptPrice(e),i=t.totalSupply*s,r={};let o=0;for await(const e of Object.values(n)){const t=i>0?e.value/i:0,a=Math.round(1e4*t);o+=a,r[e.address]=a}return{total:o,breakdown:r}}async protocolApr(e){if(""!=e.id||!this.feeDistributor)return 0;const t=new Ci(this.feeDistributor,this.tokenPrices),{lastWeekBalRevenue:a,lastWeekBBAUsdRevenue:n,veBalSupply:s}=await t.data(),i=await this.bptPrice(e);if(!i)throw"bptPrice for veBal pool missing";const r=(a+n)/7;return Math.round(365*r*1e4/(i*s))}async apr(e){const[t,a,n,s,i,r]=await Promise.all([this.swapFees(e),this.tokenAprs(e),this.stakingApr(e),this.stakingApr(e,2.5),this.rewardAprs(e),this.protocolApr(e)]);return{swapFees:t,tokenAprs:a,stakingApr:{min:n,max:s},rewardAprs:i,protocolApr:r,min:t+a.total+i.total+n,max:t+a.total+i.total+r+s}}async aprNextPeriod(e){const[t,a,n,s,i,r]=await Promise.all([this.swapFees(e),this.tokenAprs(e),this.stakingAprNextPeriod(e),this.stakingAprNextPeriod(e,2.5),this.rewardAprs(e),this.protocolApr(e)]);return{swapFees:t,tokenAprs:a,stakingApr:{min:n,max:s},rewardAprs:i,protocolApr:r,min:t+a.total+i.total+n,max:t+a.total+i.total+r+s}}async last24hFees(e){return new Fi(this.yesterdaysPools).last24h(e)}async totalLiquidity(e){try{const t=new Pa(this.pools,this.tokenPrices);return await t.getLiquidity(e)}catch(t){return console.error("Liquidity calculcation failed, falling back to subgraph"),e.totalLiquidity}}async bptPrice(e){const t=await this.totalLiquidity(e),a=e.totalShares;return parseFloat(t)/parseFloat(a)}async protocolSwapFeePercentage(e){let t=0;return t="ComposableStable"==e.poolType||"Weighted"==e.poolType&&2==e.poolTypeVersion?0:e.protocolSwapFeeCache?parseFloat(e.protocolSwapFeeCache):await this.feeCollector.find("")||0,t}async rewardTokenApr(e,t){if(t.period_finish.toNumber()<Date.now()/1e3)return{address:e,value:0};{const a=t.rate.mul(86400).mul(365),n=await this.tokenPrices.find(e);if(n&&n.usd){let s=18;if(t.decimals)s=t.decimals;else{const t=await this.tokenMeta.find(e);t&&void 0!==t.decimals&&(s=t.decimals)}return{address:e,value:parseFloat(rt(a,s))*parseFloat(n.usd)}}throw`No USD price for ${e}`}}}const Mi=new Map;Mi.set(Xe.AaveLinear,"batchSwap"),Mi.set(Xe.EulerLinear,"batchSwap"),Mi.set(Xe.ERC4626Linear,"batchSwap"),Mi.set(Xe.Element,"batchSwap"),Mi.set(Xe.Investment,"joinPool"),Mi.set(Xe.LiquidityBootstrapping,"joinPool"),Mi.set(Xe.MetaStable,"joinPool"),Mi.set(Xe.Stable,"joinPool"),Mi.set(Xe.StablePhantom,"batchSwap"),Mi.set(Xe.Weighted,"joinPool"),Mi.set(Xe.ComposableStable,"joinPool");const Li=new Map;Li.set(Xe.AaveLinear,"batchSwap"),Mi.set(Xe.EulerLinear,"batchSwap"),Li.set(Xe.ERC4626Linear,"batchSwap"),Li.set(Xe.Element,"batchSwap"),Li.set(Xe.Investment,"exitPool"),Li.set(Xe.LiquidityBootstrapping,"exitPool"),Li.set(Xe.MetaStable,"exitPool"),Li.set(Xe.Stable,"exitPool"),Li.set(Xe.StablePhantom,"batchSwap"),Li.set(Xe.Weighted,"exitPool"),Li.set(Xe.ComposableStable,"exitPool");class Ui{constructor(e){this.pools=e}async buildGraphFromRootPool(e,t){const a=await this.pools.find(e);if(!a)throw new $t(Gt.POOL_DOESNT_EXIST);return(await this.buildGraphFromPool(a.address,0,void 0,n,t))[0]}getTokenTotal(e){const t=e.tokensList.indexOf(e.address);let a=s;const{parsedBalances:n}=Le(e);return n.forEach(((e,n)=>{t!==n&&(a=a.add(e))})),a}async buildGraphFromPool(e,t,a,n,s){var i;const r=await this.pools.findBy("address",e);if(!r){if(a){const s=await this.pools.findBy("address",a.address),r=null!==(i=s.tokens[s.tokensList.indexOf(e)].decimals)&&void 0!==i?i:18;return Ui.createInputTokenNode(t,e,r,a,n)}throw new $t(Gt.POOL_DOESNT_EXIST)}const o=Mi.get(r.poolType),l=Li.get(r.poolType);if(!o||!l)throw new $t(Gt.UNSUPPORTED_POOL_TYPE);const p=this.getTokenTotal(r),{spotPriceCalculator:u}=Sa.from(r.poolType),y={};let b=18;r.tokens.forEach((e=>{if(Pt(e.address,r.address))return void(b=e.decimals?e.decimals:18);const t=u.calcPoolSpotPrice(e.address,r.address,r);y[e.address]=t}));let f={address:r.address,id:r.id,type:r.poolType,joinAction:o,exitAction:l,children:[],marked:!1,index:t.toString(),parent:a,proportionOfParent:n,isLeaf:!1,spotPrices:y,decimals:b};if(t++,r.poolType.toString().includes("Linear"))[f,t]=this.createLinearNodeChildren(f,t,r,s);else{const{parsedBalances:e}=Le(r);for(let a=0;a<r.tokens.length;a++){if(Pt(r.tokens[a].address,r.address))continue;let i;if("Weighted"===r.poolType){const e=r.tokens[a].weight;i=c(e,18)}else i=d.from(e[a]).mul(1e18.toString()).div(p);const o=i.mul(n).div(1e18.toString()),l=await this.buildGraphFromPool(r.tokens[a].address,t,f,o,s);t=l[1],l[0]&&f.children.push(l[0])}}return[f,t]}createLinearNodeChildren(e,t,a,n){var s;if(n){const n=this.createWrappedTokenNode(a,t,e,e.proportionOfParent);return e.children.push(n[0]),[e,n[1]]}{if(void 0===a.mainIndex)throw new Error("Issue With Linear Pool");const n=null!==(s=a.tokens[a.mainIndex].decimals)&&void 0!==s?s:18,i=Ui.createInputTokenNode(t,a.tokensList[a.mainIndex],n,e,e.proportionOfParent);return e.children.push(i[0]),[e,t=i[1]]}}createWrappedTokenNode(e,t,a,n){var s;if(void 0===e.wrappedIndex||void 0===e.mainIndex)throw new Error("Issue With Linear Pool");let i="wrapAaveDynamicToken";if(e.poolType===Xe.ERC4626Linear)i="wrapERC4626";let r="unwrapAaveStaticToken";if(e.poolType===Xe.ERC4626Linear)r="unwrapERC4626";const o={type:"WrappedToken",address:e.tokensList[e.wrappedIndex],id:"N/A",children:[],marked:!1,joinAction:i,exitAction:r,index:t.toString(),parent:a,proportionOfParent:n,isLeaf:!1,spotPrices:{},decimals:18};t++;const d=null!==(s=e.tokens[e.mainIndex].decimals)&&void 0!==s?s:18,c=Ui.createInputTokenNode(t,e.tokensList[e.mainIndex],d,o,n);return o.children=[c[0]],[o,t=c[1]]}static createInputTokenNode(e,t,a,n,s){return[{address:t,id:"N/A",type:"Input",children:[],marked:!1,joinAction:"input",exitAction:"output",index:e.toString(),parent:n,proportionOfParent:s,isLeaf:!0,spotPrices:{},decimals:a},e+1]}static orderByBfs(e){const t=[],a=[];for(e.marked=!0,t.push(e);t.length>0;){const e=t.shift();e&&a.push(e),null==e||e.children.forEach((e=>{e.marked||(e.marked=!0,t.push(e))}))}return a}static getLeafAddresses(e){return e.filter((e=>e.isLeaf)).map((e=>e.address))}}Ui.getGraphNodes=async(e,t,a,n)=>{if(!await a.find(t))throw new $t(Gt.POOL_DOESNT_EXIST);const s=new Ui(a),i=await s.buildGraphFromRootPool(t,n);if(i.id!==t)throw new Error("Error creating graph nodes");return e?Ui.orderByBfs(i).reverse():Ui.orderByBfs(i)};class Gi{constructor(e,t){this.chainId=e,this.simulateMulticall=async(e,t,a,n)=>{const s={...await this.encodeBalanceAndAllowanceOverrides(a,n),...await this.encodeRelayerApprovalOverride(a,e)};return this.simulateTransaction(e,t,a,s)},this.simulateTransaction=async(e,t,a,n)=>{const s=Object.fromEntries(Object.keys(n).map((e=>[e,{storage:n[e].value}]))),i={network_id:this.chainId.toString(),block_number:this.blockNumber,from:a,to:e,input:t,save_if_fails:!0,simulation_type:"quick",state_objects:s},r=this.tenderlyUrl+"simulate";return(await h.post(r,i,this.opts)).data.transaction.transaction_info.call_trace.output},this.encodeRelayerApprovalOverride=async(e,t)=>{const a={[`${this.vaultAddress}`]:{value:{[`_approvedRelayers[${e}][${t}]`]:(!0).toString()}}};return await this.requestStateOverrides(a)},this.encodeBalanceAndAllowanceOverrides=async(e,t)=>{if(0===t.length)return{};let a={};t.forEach((t=>a={...a,[`${t}`]:{value:{[`_balances[${e}]`]:o.toString(),[`_allowances[${e}][${this.vaultAddress}]`]:o.toString(),[`balanceOf[${e}]`]:o.toString(),[`allowance[${e}][${this.vaultAddress}]`]:o.toString(),[`balances[${e}]`]:o.toString(),[`allowed[${e}][${this.vaultAddress}]`]:o.toString()}}}));const n=await this.requestStateOverrides(a);if(Object.keys(n).some((e=>2!==Object.keys(n[e].value).length)))throw new Error("Couldn't encode state overrides - states should match the ones in the contracts");return n},this.requestStateOverrides=async e=>{const t=this.tenderlyUrl+"contracts/encode-states",a={networkID:this.chainId.toString(),stateOverrides:e},n=(await h.post(t,a,this.opts)).data.stateOverrides;if(!n||Object.keys(n).length!==Object.keys(e).length)throw new Error("Couldn't encode state overrides - contracts should be verified and whitelisted on Tenderly");return n};const{contracts:a}=Ut(this.chainId);this.vaultAddress=a.vault,(null==t?void 0:t.user)&&(null==t?void 0:t.project)?this.tenderlyUrl=`https://api.tenderly.co/api/v1/account/${t.user}/project/${t.project}/`:this.tenderlyUrl="https://api.balancer.fi/tenderly/",(null==t?void 0:t.accessKey)&&(this.opts={headers:{"X-Access-Key":t.accessKey}}),this.blockNumber=null==t?void 0:t.blockNumber}}var $i;const qi=new t(ti);class Wi{constructor(t,a){this.pools=t,this.createCalls=async(e,t,a,n)=>{const{calls:s,outputIndexes:i,deltas:r}=this.createActionCalls(e,t,a);n&&s.unshift(this.createSetRelayerApproval(n));return{callData:qi.encodeFunctionData("multicall",[s]),outputIndexes:n?i.map((e=>e+1)):i,deltas:r}},this.amountsOutByJoinPath=async(t,a,n,s)=>{const i=[],r=await this.tenderlyHelper.simulateMulticall(this.relayer,a,t,n),o=e.decode(["bytes[]"],r)[0];let c=d.from("0");return s.forEach((t=>{const a=e.decode(["uint256"],o[t]);i.push(a.toString()),c=c.add(a.toString())})),{amountsOut:i,totalAmountOut:c.toString()}},this.minAmountsOutByJoinPath=(e,t,a)=>({minAmountsOut:t.map((t=>Ft(d.from(t),d.from(e)).toString())),totalMinAmountOut:Ft(d.from(a),d.from(e)).toString()}),this.createActionCalls=(e,t,a)=>{const n=[],s=[],i=!a,r={};return e.forEach(((e,o)=>{const d=e[0].isLeaf;if(e.forEach(((s,i)=>{let c;if(c=d?e.filter((e=>{var t;return s.children.map((e=>e.address)).includes(e.address)&&s.index===(null===(t=e.parent)||void 0===t?void 0:t.index)})):i>0?[e[i-1]]:[],c.length>0&&0===c.filter((e=>"0"!==e.index)).length)return void(s.index="0");c.some((e=>"input"===e.joinAction||"wrapAaveDynamicToken"===e.joinAction));const l=t,p=i===e.length-1,u=t,y=p&&a?a[o]:"0";switch(s.joinAction){case"wrapAaveDynamicToken":n.push(this.createAaveWrap(s,c,o,l,t));break;case"batchSwap":{const[e,t,a]=this.createBatchSwap(s,c,o,y,l,u);n.push(e),this.updateDeltas(r,t,a);break}case"joinPool":{const[e,t,a,i]=this.createJoinPool(s,c,o,y,l,u);n.push(e),this.updateDeltas(r,[s.address,...t],[i,...a]);break}}})),i){const e=100*o,t=js.encodePeekChainedReferenceValue(js.toChainedReference(e,!1));n.push(t),s.push(n.indexOf(t))}})),{calls:n,outputIndexes:s,deltas:r}},this.createSetRelayerApproval=e=>js.encodeSetRelayerApproval(this.relayer,!0,e),this.createAaveWrap=(e,t,a,n,s)=>{if(1!==t.length)throw new Error("aaveWrap nodes should always have a single child node");const i=t[0],r=e.address,o=i.index;return js.encodeWrapAaveDynamicToken({staticToken:r,sender:n,recipient:s,amount:o,fromUnderlying:!0,outputReference:this.getOutputRefValue(a,e).value})},this.createBatchSwap=(e,t,a,n,s,i)=>{if(1!==t.length)throw new Error("Unsupported batchswap");const r=t[0].address,c=this.getOutputRefValue(a,t[0]),l=[e.address,r],p=[d.from(n).mul(-1).toString(),c.isRef?o.toString():c.value],u=[{poolId:e.id,assetInIndex:1,assetOutIndex:0,amount:c.value,userData:"0x"}],y={sender:s,recipient:i,fromInternalBalance:s===this.relayer,toInternalBalance:i===this.relayer},b=[{index:l.map((e=>e.toLowerCase())).indexOf(e.address.toLowerCase()),key:d.from(this.getOutputRefValue(a,e).value)}],f=js.encodeBatchSwap({swapType:kt.SwapExactIn,swaps:u,assets:l,funds:y,limits:p,deadline:d.from(Math.ceil(Date.now()/1e3)+3600),value:"0",outputReferences:b}),m=s===this.relayer?"0":p[1];return[f,l,[i===this.relayer?"0":p[0],m]]},this.createJoinPool=(e,t,a,n,r,o)=>{const d=[],c=[];e.children.forEach((e=>{d.push(e.address);const n=t.find((t=>Pt(t.address,e.address)));n?c.push(this.getOutputRefValue(a,n).value):c.push("0")})),e.type===Xe.ComposableStable&&(d.push(e.address),c.push("0"));const l=new we(this.wrappedNativeAsset),[p,u]=l.sortTokens(d,c);let y=[];const b=p.map((e=>e.toLowerCase())).indexOf(e.address.toLowerCase());let f;y=-1===b?u:[...u.slice(0,b),...u.slice(b+1)],f=e.type===Xe.Weighted?z.joinExactTokensInForBPTOut(y,n):Z.joinExactTokensInForBPTOut(y,n);const m=p.indexOf(i),h=-1===m?"0":u[m],T=js.constructJoinCall({poolId:e.id,kind:0,sender:r,recipient:o,value:h,outputReference:this.getOutputRefValue(a,e).value,joinPoolRequest:{},assets:p,maxAmountsIn:u,userData:f,fromInternalBalance:r===this.relayer}),g=u.map((e=>js.isChainedReference(e)?"0":e)),I=js.isChainedReference(n)?"0":n;return[T,r===this.relayer?[]:p,r===this.relayer?[]:g,o===this.relayer?s.toString():s.sub(I).toString()]},this.getOutputRefValue=(e,t)=>"input"===t.joinAction?{value:t.index,isRef:!1}:"0"===t.index&&t.parent?{value:"0",isRef:!0}:{value:js.toChainedReference(d.from(t.index).add(100*e)).toString(),isRef:!0};const{tokens:n,contracts:r}=Ut(a.chainId);this.relayer=r.relayerV4,this.wrappedNativeAsset=n.wrappedNativeAsset,this.tenderlyHelper=new Gi(a.chainId,a.tenderly)}async joinPool(e,t,a,n,s,i,r){if(t.length!=a.length)throw new $t(Gt.INPUT_LENGTH_MISMATCH);const o=await Ui.getGraphNodes(!0,e,this.pools,s),d=Wi.getJoinPaths(o,t,a),c=Wi.totalBptZeroPriceImpact(d),{callData:l,outputIndexes:p}=await this.createCalls(d,n,void 0,r),{amountsOut:u,totalAmountOut:y}=await this.amountsOutByJoinPath(n,l,t,p),{minAmountsOut:b,totalMinAmountOut:f}=this.minAmountsOutByJoinPath(i,u,y),m=jt(BigInt(y),c.toBigInt(),!0).toString(),{callData:h,deltas:T}=await this.createCalls(d,n,b,r);return this.assertDeltas(e,T,t,a,f),{to:this.relayer,callData:h,expectedOut:y,minOut:f,priceImpact:m}}assertDeltas(e,t,a,n,s){var i;const r=ce(e);if(t[r.toLowerCase()].add(s).abs().gt(3))throw console.error("join assertDeltas, bptOut: ",r,s,null===(i=t[r.toLowerCase()])||void 0===i?void 0:i.toString()),new $t(Gt.JOIN_DELTA_AMOUNTS);delete t[r.toLowerCase()],a.forEach(((e,a)=>{var s,i;if(!d.from(n[a]).eq(0)&&(null===(s=t[e.toLowerCase()])||void 0===s?void 0:s.toString())!==n[a])throw console.error("join assertDeltas, tokenIn: ",e,n[a],null===(i=t[e.toLowerCase()])||void 0===i?void 0:i.toString()),new $t(Gt.JOIN_DELTA_AMOUNTS);delete t[e.toLowerCase()]}));for(const e in t)if("0"!==t[e].toString())throw console.error("join assertDeltas, non-input token should be 0: ",e,t[e].toString()),new $t(Gt.JOIN_DELTA_AMOUNTS)}updateDeltas(e,t,a){return t.forEach(((t,n)=>{const i=t.toLowerCase();e[i]||(e[i]=s),e[i]=e[i].add(a[n])})),e}}$i=Wi,Wi.getJoinPaths=(e,t,a)=>{const s=[],i=e.filter((e=>t.filter(((e,t)=>d.from(a[t]).gt(0))).map((e=>e.toLowerCase())).includes(e.address.toLowerCase())));i.some((e=>e.isLeaf))&&s.push(e);const r=i.filter((e=>!e.isLeaf));return r.forEach((e=>{const i=a.find(((a,n)=>Pt(t[n],e.address))),o=r.filter((t=>Pt(t.address,e.address))).reduce(((e,t)=>e.add(t.proportionOfParent)),d.from(0)),c=d.from(i).mul(e.proportionOfParent).div(o).toString(),[l]=Ui.createInputTokenNode(0,e.address,e.decimals,e.parent,n);l.index=c,l.isLeaf=!1;const p=[l];let u=e.parent;for(;u;)p.push(g(u)),u=u.parent;s.push(p)})),$i.updateInputAmounts(s,t,a),s},Wi.updateInputAmounts=(e,t,a)=>{const n=(e,t)=>{if(e.length>1){const a=e.reduce(((e,t)=>e.add(t.index)),d.from(0)),n=d.from(t).sub(a);e[0].index=n.add(e[0].index).toString()}},s=e.find((e=>e[0].isLeaf));if(s){const e=$i.updateTotalProportions(s);s.forEach((n=>{"input"===n.joinAction&&(n=$i.updateNodeAmount(n,t,a,e))})),t.forEach(((e,t)=>{const i=s.filter((t=>t.isLeaf&&Pt(t.address,e)));n(i,a[t])}))}const i=e.filter((e=>!e[0].isLeaf));i.length>1&&t.forEach(((e,t)=>{const s=i.map((e=>e[0])).filter((t=>Pt(t.address,e)));n(s,a[t])}))},Wi.totalBptZeroPriceImpact=e=>{let t=d.from("0");return e.forEach((e=>{if(e[0].isLeaf){e.filter((e=>e.isLeaf)).forEach((e=>{const a=$i.bptOutZeroPiForInputNode(e);t=t.add(a)}))}else{const a=$i.bptOutZeroPiForInputNode(e[0]);t=t.add(a)}})),t},Wi.bptOutZeroPiForInputNode=e=>{if("0"===e.index||"input"!==e.joinAction)return BigInt(0);let t=1,a=e.parent,n=e.address;for(;void 0!==a;){if("batchSwap"===a.joinAction||"joinPool"===a.joinAction){const e=a.spotPrices[n.toLowerCase()];t*=parseFloat(e),n=a.address}a=a.parent}const s=c(t.toFixed(18),18),i=Ne(BigInt(e.decimals)),r=Ce(BigInt(e.index),i);return Re.divDownFixed(r,s.toBigInt())},Wi.updateTotalProportions=e=>{const t={};return e.forEach((e=>{t[e.address]?t[e.address]=t[e.address].add(e.proportionOfParent):t[e.address]=e.proportionOfParent})),t},Wi.updateNodeAmount=(e,t,a,n)=>{const s=t.map((e=>e.toLowerCase())).indexOf(e.address.toLowerCase());if(-1===s)return e.index="0",e;const i=n[e.address],r=e.proportionOfParent.mul(1e18.toString()).div(i).mul(a[s]).div(1e18.toString());return e.index=r.toString(),e};const Vi=new t(ti);class Hi{constructor(t,a){this.pools=t,this.amountsOutByExitPath=async(t,a,n,s,i)=>{const r=await this.tenderlyHelper.simulateMulticall(this.relayer,a,t,[n]),o=e.decode(["bytes[]"],r)[0],c=s.map((t=>e.decode(["uint256"],o[t]).toString())),l=c.map((e=>Ft(d.from(e),d.from(i)).toString()));return{expectedAmountsOutByExitPath:c,minAmountsOutByExitPath:l}},this.amountsOutByTokenOut=(e,t,a,n)=>{const i={};t.forEach(((e,t)=>{var n;return i[e]=(null!==(n=i[e])&&void 0!==n?n:s).add(a[t])}));const r=e.map((e=>i[e].toString())),o=r.map((e=>Ft(d.from(e),d.from(n)).toString()));return{expectedAmountsOut:r,minAmountsOut:o}},this.getExitPaths=(e,t)=>{const a=e.map((e=>{const a=[e];for(;a[0].parent;)a.unshift(g(a[0].parent));return a[0].index=a[a.length-1].proportionOfParent.mul(t).div(n).toString(),a})),i=a.reduce(((e,t)=>{const a=t[0].index;return d.from(a).add(e)}),s),r=d.from(t).sub(i);return a[a.length-1][0].index=r.add(a[a.length-1][0].index).toString(),a},this.getOutputRef=(e,t)=>100*e+parseInt(t);const{tokens:i,contracts:r}=Ut(a.chainId);this.wrappedNativeAsset=i.wrappedNativeAsset,this.relayer=r.relayerV4,this.tenderlyHelper=new Gi(a.chainId,a.tenderly)}async exitPool(e,t,a,n,s){const i=await Ui.getGraphNodes(!1,e,this.pools,!1),r=i.filter((e=>"output"===e.exitAction)),o=this.getExitPaths(r,t),d=r.map((e=>e.address.toLowerCase())),c=[...new Set(d)].sort(),l=await this.createCalls(o,a,void 0,s),{expectedAmountsOutByExitPath:p,minAmountsOutByExitPath:u}=await this.amountsOutByExitPath(a,l.callData,i[0].address,l.outputIndexes,n),{callData:y,deltas:b}=await this.createCalls(o,a,u,s),{expectedAmountsOut:f,minAmountsOut:m}=this.amountsOutByTokenOut(c,d,p,n);this.assertDeltas(e,b,t,c,m);const h=await this.calculatePriceImpact(e,c,f,t);return{to:this.relayer,callData:y,tokensOut:c,expectedAmountsOut:f,minAmountsOut:m,priceImpact:h}}async calculatePriceImpact(e,t,a,n){const s=await Ui.getGraphNodes(!0,e,this.pools,!1),i=Wi.getJoinPaths(s,t,a),r=Wi.totalBptZeroPriceImpact(i);return jt(BigInt(n),r.toBigInt(),!1).toString()}assertDeltas(e,t,a,n,s){var i;const r=ce(e);if(t[r.toLowerCase()].sub(a).abs().gt(3))throw console.error("exit assertDeltas, bptIn: ",r,a,null===(i=t[r.toLowerCase()])||void 0===i?void 0:i.toString()),new $t(Gt.EXIT_DELTA_AMOUNTS);delete t[r.toLowerCase()],n.forEach(((e,a)=>{var n;if(t[e.toLowerCase()].add(s[a]).abs().gt(1))throw console.error("exit assertDeltas, tokenOut: ",e,s[a],null===(n=t[e.toLowerCase()])||void 0===n?void 0:n.toString()),new $t(Gt.EXIT_DELTA_AMOUNTS);delete t[e.toLowerCase()]}));for(const e in t)if("0"!==t[e].toString())throw console.error("exit assertDeltas, non-input token should be 0: ",e,t[e].toString()),new $t(Gt.EXIT_DELTA_AMOUNTS)}async createCalls(e,t,a,n){const{calls:s,outputIndexes:i,deltas:r}=this.createActionCalls(g(e),t,a);n&&s.unshift(js.encodeSetRelayerApproval(this.relayer,!0,n));return{callData:Vi.encodeFunctionData("multicall",[s]),outputIndexes:n?i.map((e=>e+1)):i,deltas:r}}updateDeltas(e,t,a){return t.forEach(((t,n)=>{const i=t.toLowerCase();e[i]||(e[i]=s),e[i]=e[i].add(a[n])})),e}createActionCalls(e,t,a){const n=[],s=[],i=!a,r={};return e.forEach(((e,o)=>{e.forEach((d=>{const c=!d.parent?t:this.relayer,l=d.children.find((t=>e.map((e=>e.index)).includes(t.index))),p="output"===(null==l?void 0:l.exitAction),u=p?t:this.relayer,y=p&&a?a[o]:"0";switch(d.exitAction){case"batchSwap":{const[e,t,a]=this.createBatchSwap(d,l,o,y,c,u);n.push(e),this.updateDeltas(r,t,a);break}case"exitPool":{const[e,t,a,s]=this.createExitPool(d,l,o,y,c,u);n.push(e),this.updateDeltas(r,[d.address,...a],[t,...s]);break}case"output":i&&(n.push(js.encodePeekChainedReferenceValue(js.toChainedReference(this.getOutputRef(o,d.index),!1))),s.push(n.length-1));break;default:return}}))})),{calls:n,outputIndexes:s,deltas:r}}createBatchSwap(e,t,a,n,s,i){const r=!e.parent?e.index:js.toChainedReference(this.getOutputRef(a,e.index)).toString(),c=t.address,l=[c,e.address],p=[d.from(n).mul(-1).toString(),js.isChainedReference(r)?o.toString():r],u=[{poolId:e.id,assetInIndex:1,assetOutIndex:0,amount:r,userData:"0x"}],y={sender:s,recipient:i,fromInternalBalance:!1,toInternalBalance:!1},b=[{index:l.map((e=>e.toLowerCase())).indexOf(c.toLowerCase()),key:js.toChainedReference(this.getOutputRef(a,t.index))}],f=js.encodeBatchSwap({swapType:kt.SwapExactIn,swaps:u,assets:l,funds:y,limits:p,deadline:d.from(Math.ceil(Date.now()/1e3)+3600),value:"0",outputReferences:b});let m=p[0];const h=p[1],T=s===this.relayer?"0":h;return m=i===this.relayer?"0":m,[f,l,[m,T]]}createExitPool(e,t,a,n,i,r){const o=t.address,d=!e.parent?e.index:js.toChainedReference(this.getOutputRef(a,e.index)).toString(),c=[],l=[];e.children.forEach((e=>{c.push(e.address),l.push(e.address===o?n:"0")})),e.type===Xe.ComposableStable&&(c.push(e.address),l.push("0"));const p=new we(this.wrappedNativeAsset),[u,y]=p.sortTokens(c,l);let b=[];const f=u.map((e=>e.toLowerCase())).indexOf(e.address.toLowerCase());let m;b=-1===f?u:[...u.slice(0,f),...u.slice(f+1)],m=e.type===Xe.Weighted?z.exitExactBPTInForOneTokenOut(d,b.indexOf(o)):Z.exitExactBPTInForOneTokenOut(d,b.indexOf(o));const h=[{index:u.map((e=>e.toLowerCase())).indexOf(o.toLowerCase()),key:js.toChainedReference(this.getOutputRef(a,t.index))}],T=js.constructExitCall({poolId:e.id,poolKind:0,sender:i,recipient:r,outputReferences:h,exitPoolRequest:{},assets:u,minAmountsOut:y,userData:m,toInternalBalance:!1}),g=y.map((e=>js.isChainedReference(e)?"0":s.sub(e).toString())),I=js.isChainedReference(d)?"0":d;return[T,i===this.relayer?s.toString():I,r===this.relayer?[]:u,r===this.relayer?[]:g]}}class ji{constructor(e){this.yesterdaysPools=e}async last24h(e){let t;return this.yesterdaysPools&&(t=await this.yesterdaysPools.find(e.id)),e.totalSwapVolume?(null==t?void 0:t.totalSwapVolume)?parseFloat(e.totalSwapVolume)-parseFloat(t.totalSwapVolume):e.createTime&&Js(e.createTime)?parseFloat(e.totalSwapVolume):0:0}}var Xi=[{inputs:[{internalType:"contract IVault",name:"vault",type:"address"},{internalType:"contract IProtocolFeePercentagesProvider",name:"protocolFeeProvider",type:"address"}],stateMutability:"nonpayable",type:"constructor"},{anonymous:!1,inputs:[],name:"FactoryDisabled",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"pool",type:"address"}],name:"PoolCreated",type:"event"},{inputs:[{internalType:"string",name:"name",type:"string"},{internalType:"string",name:"symbol",type:"string"},{internalType:"contract IERC20[]",name:"tokens",type:"address[]"},{internalType:"uint256",name:"amplificationParameter",type:"uint256"},{internalType:"contract IRateProvider[]",name:"rateProviders",type:"address[]"},{internalType:"uint256[]",name:"tokenRateCacheDurations",type:"uint256[]"},{internalType:"bool[]",name:"exemptFromYieldProtocolFeeFlags",type:"bool[]"},{internalType:"uint256",name:"swapFeePercentage",type:"uint256"},{internalType:"address",name:"owner",type:"address"}],name:"create",outputs:[{internalType:"contract ComposableStablePool",name:"",type:"address"}],stateMutability:"nonpayable",type:"function"},{inputs:[],name:"disable",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"bytes4",name:"selector",type:"bytes4"}],name:"getActionId",outputs:[{internalType:"bytes32",name:"",type:"bytes32"}],stateMutability:"view",type:"function"},{inputs:[],name:"getAuthorizer",outputs:[{internalType:"contract IAuthorizer",name:"",type:"address"}],stateMutability:"view",type:"function"},{inputs:[],name:"getCreationCode",outputs:[{internalType:"bytes",name:"",type:"bytes"}],stateMutability:"view",type:"function"},{inputs:[],name:"getCreationCodeContracts",outputs:[{internalType:"address",name:"contractA",type:"address"},{internalType:"address",name:"contractB",type:"address"}],stateMutability:"view",type:"function"},{inputs:[],name:"getPauseConfiguration",outputs:[{internalType:"uint256",name:"pauseWindowDuration",type:"uint256"},{internalType:"uint256",name:"bufferPeriodDuration",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"getVault",outputs:[{internalType:"contract IVault",name:"",type:"address"}],stateMutability:"view",type:"function"},{inputs:[],name:"isDisabled",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"pool",type:"address"}],name:"isPoolFromFactory",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"view",type:"function"}];class Ki{constructor(e){const{tokens:t}=Ut(e.chainId);this.wrappedNativeAsset=t.wrappedNativeAsset}create({factoryAddress:e,name:n,symbol:s,tokenAddresses:i,amplificationParameter:r,rateProviders:o,tokenRateCacheDurations:d,exemptFromYieldProtocolFeeFlags:c,swapFee:l,owner:p}){const u=xt(`${l}`),y=new we(this.wrappedNativeAsset),[b,f,m,h]=y.sortTokens(i,o,d,c),T=[n,s,b,r,f,m,h,u.toString(),p],g=new t(Xi),I=Xi.find((({name:e})=>"create"===e));if(!I)throw new $t(Gt.INTERNAL_ERROR_INVALID_ABI);const w=a.from(I);return{to:e,data:g.encodeFunctionData(w,T)}}buildInitJoin({joiner:e,poolId:t,poolAddress:a,tokensIn:n,amountsIn:s}){throw new Error("To be implemented")}}class Yi{constructor(e){const{tokens:t}=Ut(e.chainId);this.wrappedNativeAsset=t.wrappedNativeAsset}create({factoryAddress:e,name:n,symbol:s,tokenAddresses:i,weights:r,swapFee:o,owner:d}){const c=xt(`${o}`),l=new we(this.wrappedNativeAsset),[p,u]=l.sortTokens(i,r),y=[n,s,p,u,c.toString(),d],b=new t($.abi),f=$.abi.find((({name:e})=>"create"===e));if(!f)throw new $t(Gt.INTERNAL_ERROR_INVALID_ABI);const m=a.from(f);return{to:e,data:b.encodeFunctionData(m,y)}}buildInitJoin({joiner:e,poolId:t,tokensIn:a,amountsIn:n}){const s=new we(this.wrappedNativeAsset),[i,r]=s.sortTokens(a,n),o="joinPool",d={poolId:t,sender:e,recipient:e,joinPoolRequest:{assets:i,maxAmountsIn:r,userData:z.joinInit(r),fromInternalBalance:!1}},c=L.createInterface().encodeFunctionData(o,[d.poolId,d.sender,d.recipient,d.joinPoolRequest]);return{to:Mt,functionName:o,attributes:d,data:c}}}class Ji{constructor(e){this.networkConfig=e}of(e){switch(e){case"Weighted":return new Yi(this.networkConfig);case"Investment":case"LiquidityBootstrapping":case"Stable":case"MetaStable":case"StablePhantom":case"AaveLinear":case"ERC4626Linear":default:throw new $t(Gt.UNSUPPORTED_POOL_TYPE);case"ComposableStable":return new Ki(this.networkConfig)}}}class Zi{constructor(e){this.pool=e;const t=(e=>{switch(e){case Xe.Weighted:return z;case Xe.Stable:case Xe.MetaStable:case Xe.StablePhantom:case Xe.AaveLinear:case Xe.EulerLinear:case Xe.ERC4626Linear:case Xe.Element:case Xe.Gyro2:case Xe.Gyro3:return Z;case Xe.ComposableStable:return se}})(e.poolType);if(!t)throw"Pool type not supported";this.encoder=t}buildQueryJoinExactIn({sender:e=i,recipient:t=e,maxAmountsIn:a,minimumBPT:n=s,fromInternalBalance:r=!1}){const o=this.pool.tokensList.findIndex((e=>this.pool.id.includes(e))),d=[...this.pool.tokensList];o&&o>-1&&a.splice(o,1);const c=this.encoder.joinExactTokensInForBPTOut(a,n);return[this.pool.id,e,t,{assets:d,maxAmountsIn:a,userData:c,fromInternalBalance:r}]}buildQueryJoinExactOut({sender:e=i,recipient:t=e,maxAmountsIn:a=[],bptOut:n,tokenIn:s,fromInternalBalance:r=!1}){const o=this.pool.tokensList.indexOf(s),d=this.encoder.joinTokenInForExactBPTOut(n,o);return[this.pool.id,e,t,{assets:this.pool.tokensList,maxAmountsIn:a,userData:d,fromInternalBalance:r}]}buildQueryExitToSingleToken({sender:e=i,recipient:t=e,minAmountsOut:a=[],bptIn:n,tokenOut:s,toInternalBalance:r=!1}){const o=this.pool.tokensList.indexOf(s),d=this.encoder.exitExactBPTInForOneTokenOut(n,o);return[this.pool.id,e,t,{assets:this.pool.tokensList,minAmountsOut:a,userData:d,toInternalBalance:r}]}buildQueryExitProportionally({sender:e=i,recipient:t=e,minAmountsOut:a=[],bptIn:n,toInternalBalance:s=!1}){if(!this.encoder.exitExactBPTInForTokensOut)throw"Proportional exit not implemented";const r=this.encoder.exitExactBPTInForTokensOut(n);return[this.pool.id,e,t,{assets:this.pool.tokensList,minAmountsOut:a,userData:r,toInternalBalance:s}]}buildQueryExitExactOut({sender:e=i,recipient:t=e,minAmountsOut:a,maxBptIn:n=r,toInternalBalance:s=!1}){const o=this.pool.tokensList.findIndex((e=>this.pool.id.includes(e)));o&&o>-1&&a.splice(o,1);const d=this.encoder.exitBPTInForExactTokensOut(a,n);return[this.pool.id,e,t,{assets:this.pool.tokensList,minAmountsOut:a,userData:d,toInternalBalance:s}]}}class zi{constructor(e){this.liquidityGaugesRepository=e}async relativeWeight(e){const t=await this.liquidityGaugesRepository.findBy("poolId",e);return t?t.relativeWeight:0}async weekly(e){return Di()*await this.relativeWeight(e)}}const Qi=(e,t,a)=>{const n=e.tokens.filter((t=>!e.id.toLowerCase().includes(t.address.toLowerCase()))),s=n.findIndex((e=>e.address.toLowerCase()===t.toLowerCase()));if(-1==s)throw new Error("Token not found in pool");const i=n.map((e=>ot(e.balance,e.decimals))),r=d.from(a),o=i.map((e=>e.mul(r).div(i[s])));return{tokens:n.map((e=>e.address)),amounts:o.map((e=>e.toString()))}},er=(e,t)=>()=>{throw`${t} for poolType ${e} not implemented`};class tr{constructor(e,t){this.networkConfig=e,this.repositories=t,this.aprService=new Ri(this.repositories.pools,this.repositories.tokenPrices,this.repositories.tokenMeta,this.repositories.tokenYields,this.repositories.feeCollector,this.repositories.yesterdaysPools,this.repositories.liquidityGauges,this.repositories.feeDistributor),this.liquidityService=new Pa(t.pools,t.tokenPrices),this.joinService=new Wi(this.repositories.poolsOnChain,e),this.exitService=new Hi(this.repositories.poolsOnChain,e),this.feesService=new Fi(t.yesterdaysPools),this.volumeService=new ji(t.yesterdaysPools),this.poolFactory=new Ji(e),this.impermanentLossService=new Oi(t.tokenPrices,t.tokenHistoricalPrices),t.liquidityGauges&&(this.emissionsService=new zi(t.liquidityGauges)),this.proportionalAmounts=Qi}dataSource(){return this.repositories.pools}async apr(e){return this.aprService.apr(e)}async aprNextPeriod(e){return this.aprService.aprNextPeriod(e)}async impermanentLoss(e,t){return this.impermanentLossService.calcImpLoss(e,t)}async liquidity(e){return this.liquidityService.getLiquidity(e)}async generalisedJoin(e,t,a,n,s,i,r){return this.joinService.joinPool(e,t,a,n,s,i,r)}async generalisedExit(e,t,a,n,s){return this.exitService.exitPool(e,t,a,n,s)}async fees(e){return this.feesService.last24h(e)}async volume(e){return this.volumeService.last24h(e)}static wrap(e,t){let a,n,s;try{a=Sa.from(e.poolType),s={buildJoin:(t,n,s,r)=>a.join.buildJoin({joiner:t,pool:e,tokensIn:n,amountsIn:s,slippage:r,wrappedNativeAsset:i}),calcPriceImpact:async(t,n,s)=>a.priceImpactCalculator.calcPriceImpact(e,t,n,s),buildExitExactBPTIn:(t,n,s,r=!1,o)=>{if(a.exit.buildExitExactBPTIn)return a.exit.buildExitExactBPTIn({exiter:t,pool:e,bptIn:n,slippage:s,shouldUnwrapNativeAsset:r,wrappedNativeAsset:i,singleTokenMaxOut:o});throw"ExitExactBPTIn not supported"},buildExitExactTokensOut:(t,n,s,r)=>a.exit.buildExitExactTokensOut({exiter:t,pool:e,tokensOut:n,amountsOut:s,slippage:r,wrappedNativeAsset:i}),calcSpotPrice:(t,n)=>a.spotPriceCalculator.calcPoolSpotPrice(t,n,e),calcProportionalAmounts:(t,a)=>Qi(e,t,a)}}catch(t){"UNSUPPORTED_POOL_TYPE"!=t.code&&console.error(t),s={buildJoin:er(e.poolType,"buildJoin"),calcPriceImpact:er(e.poolType,"calcPriceImpact"),buildExitExactBPTIn:er(e.poolType,"buildExitExactBPTIn"),buildExitExactTokensOut:er(e.poolType,"buildExitExactTokensOut"),calcSpotPrice:er(e.poolType,"calcSpotPrice")}}try{n=new Zi(e),s={...s,buildQueryJoinExactIn:n.buildQueryJoinExactIn.bind(n),buildQueryJoinExactOut:n.buildQueryJoinExactOut.bind(n),buildQueryExitExactOut:n.buildQueryExitExactOut.bind(n),buildQueryExitToSingleToken:n.buildQueryExitToSingleToken.bind(n),buildQueryExitProportionally:n.buildQueryExitProportionally.bind(n)}}catch(t){s={...s,buildQueryJoinExactIn:er(e.poolType,"buildQueryJoinExactIn"),buildQueryJoinExactOut:er(e.poolType,"buildQueryJoinExactOut"),buildQueryExitExactOut:er(e.poolType,"buildQueryExitExactOut"),buildQueryExitToSingleToken:er(e.poolType,"buildQueryExitToSingleToken"),buildQueryExitProportionally:er(e.poolType,"buildQueryExitProportionally")}}const i=t.addresses.tokens.wrappedNativeAsset.toLowerCase();return{...e,...s}}async find(e){const t=await this.dataSource().find(e);if(t)return tr.wrap(t,this.networkConfig)}async findBy(e,t){if("id"==e)return this.find(t);if("address"==e){const e=await this.dataSource().findBy("address",t);if(!e)return;return tr.wrap(e,this.networkConfig)}throw`search by ${e} not implemented`}async all(){const e=await this.dataSource().all();return e?e.map((e=>tr.wrap(e,this.networkConfig))).filter((e=>e)):[]}async where(e){const t=await this.dataSource().where(e);if(!t)return[];return t.map((e=>tr.wrap(e,this.networkConfig))).filter((e=>e))}}const ar=new t(["function gauge_relative_weight(address gauge, uint timestamp) view returns (uint)","function gauge_relative_weight_write(address gauge, uint timestamp) returns (uint)"]);class nr{constructor(e,t,a){this.gaugeControllerAddress=t,this.multicall=hs(e,a)}async getRelativeWeights(e,t){const a=e.map((e=>[this.gaugeControllerAddress,ar.encodeFunctionData("gauge_relative_weight_write",[p(e),t||Math.floor(Date.now()/1e3)])])),[,n]=await this.multicall.aggregate(a);return e.reduce(((e,t,a)=>(e[t]||(e[t]=parseFloat(rt(n[a],18))),e)),{})}}class sr{async get(e){const t=await this.query(e);return(null==t?void 0:t.length)>0?t[0]:void 0}async find(e){return this.get({where:{id:e}})}async findBy(e,t){return this.get({where:{[String(e)]:t}})}async findAllBy(e,t,a=1e3,n=0){const s={where:{[String(e)]:t},first:a,skip:n};return this.query(s)}}class ir extends sr{constructor(e,t,a){super(),this.chainId=t,this.blockHeight=a,this.client=bs(e)}}class rr extends sr{constructor(e,t,a){super(),this.chainId=t,this.blockHeight=a,this.client=fs(e)}}class or extends rr{async query(e){e.orderBy||(e.orderBy=jn.Balance),e.orderDirection||(e.orderDirection=Zn.Desc),!e.block&&this.blockHeight&&(e.block={number:await this.blockHeight()});const{gaugeShares:t}=await this.client.GaugeShares(e);return t.map(this.mapType)}mapType(e){var t;return{id:e.id,balance:e.balance,userAddress:null===(t=e.user)||void 0===t?void 0:t.id,gauge:{id:e.gauge.id,poolId:e.gauge.poolId||void 0,isKilled:e.gauge.isKilled,totalSupply:e.gauge.totalSupply}}}async findByUser(e,t,a){return this.findAllBy(We.UserAddress,e,t,a)}async findByGauge(e,t,a){return this.findAllBy(We.GaugeId,e,t,a)}}const dr=new t(["function totalSupply() view returns (uint)","function working_supply() view returns (uint)","function reward_count() view returns (uint)","function reward_tokens(uint rewardIndex) view returns (address)","function reward_data(address rewardToken) view returns (tuple(address token, address distributor, uint period_finish, uint rate, uint last_update, uint integral) data)"]);class cr{constructor(e,t,a){this.chainId=t,this.multicall=hs(e,a)}async getTotalSupplies(e){const t=e.map((e=>[e,dr.encodeFunctionData("totalSupply",[])])),[,a]=await this.multicall.aggregate(t),n=a.map((e=>"0x"==e?"0x0":e));return e.reduce(((e,t,a)=>(e[t]||(e[t]=parseFloat(rt(n[a],18))),e)),{})}async getWorkingSupplies(e){const t=e.map((e=>[e,dr.encodeFunctionData("working_supply",[])])),[,a]=await this.multicall.aggregate(t),n=a.map((e=>"0x"==e?"0x0":e));return e.reduce(((e,t,a)=>(e[t]||(e[t]=parseFloat(rt(n[a],18))),e)),{})}async getRewardCounts(e){let t;if(248==this.chainId||9372==this.chainId||6343==this.chainId||4326==this.chainId){const a=e.map((e=>[e,dr.encodeFunctionData("reward_count",[])])),[,n]=await this.multicall.aggregate(a),s=n.map((e=>"0x"==e?"0x0":e));t=e.reduce(((e,t,a)=>(e[t]||(e[t]=parseInt(s[a])),e)),{})}else t=e.reduce(((e,t)=>(e[t]||(e[t]=1),e)),{});return t}async getRewardTokens(e,t){const a=t||await this.getRewardCounts(e),n=e.filter((e=>a[e]>0)),s=[0],i=n.map(((e,t)=>{const n=[];for(let t=0;t<a[e];t++)n.push([e,dr.encodeFunctionData("reward_tokens",[t])]);return s[t+1]=s[t]+a[e],n})).flat(),[,r]=await this.multicall.aggregate(i);return n.reduce(((e,t,a)=>{const n=s[a],i=s[a+1],o=[];for(let e=n;e<i;e++)o.push(dr.decodeFunctionResult("reward_tokens",r[e])[0]);return e[t]||(e[t]=o),e}),{})}async getRewardData(e,t){const a=t||await this.getRewardTokens(e),n=[0],s=Object.keys(a).map(((e,t)=>{const s=[];for(let t=0;t<a[e].length;t++)s.push([e,dr.encodeFunctionData("reward_data",[a[e][t]])]);return n[t+1]=n[t]+a[e].length,s})).flat(),[,i]=await this.multicall.aggregate(s),r=i.map((e=>dr.decodeFunctionResult("reward_data",e)[0]));return Object.keys(a).reduce(((e,t,s)=>{const i=n[s],o=a[t].reduce(((e,t,a)=>(e[t]||(e[t]=r[i+a]),e)),{});return e[t]||(e[t]=o),e}),{})}}class lr{constructor(e){this.gauges=[],this.client=fs(e)}async fetch(){const e=(await this.client.Pools({where:{preferentialGauge_not:null},first:1e3})).pools.map((e=>e.preferentialGauge));return this.gauges=e,this.gauges}async find(e){return 0==this.gauges.length&&await this.fetch(),this.gauges.find((t=>t.id==e))}async findBy(e,t){if(0==this.gauges.length&&await this.fetch(),"id"==e)return this.find(t);if("poolId"==e)return this.gauges.find((e=>e.poolId==t));if("poolAddress"==e)return this.gauges.find((e=>e.poolAddress==t));throw`search by ${e} not implemented`}}const pr=6048e5;class ur{constructor(e,t,a,n,s){this.chainId=n,this.workingSupplies={},this.workingSuppliesNextPeriod={},this.relativeWeights={},this.relativeWeightsNextPeriod={},this.rewardData={},a&&(this.gaugeController=new nr(t,a,s)),this.multicall=new cr(t,n,s),this.subgraph=new lr(e)}async fetch(){const e=await this.subgraph.fetch(),t=e.map((e=>e.id));if(248!=this.chainId&&9372!=this.chainId&&6343!=this.chainId&&4326!=this.chainId||(this.workingSupplies=await this.multicall.getWorkingSupplies(t)),this.gaugeController){this.relativeWeights=await this.gaugeController.getRelativeWeights(t);const e=Math.round(Math.floor((Date.now()+pr)/pr)*pr)/1e3;this.relativeWeightsNextPeriod=await this.gaugeController.getRelativeWeights(t,e)}let a=!1;return this.rewardData=e.reduce(((e,t)=>{var n;return e[n=t.id]||(e[n]=t.tokens?Object.fromEntries(t.tokens.map((e=>[e.id.split("-")[0],{distributor:"",last_update:d.from(0),integral:d.from(0),token:e.id.split("-")[0],decimals:e.decimals,rate:ot(e.rate||"0",e.decimals),period_finish:d.from(e.periodFinish||"0")}]))):{}),t.tokens&&t.tokens.length>0&&(a=!0),e}),{}),a||(this.rewardData=await this.multicall.getRewardData(t)),e.map(this.compose.bind(this))}async find(e){return this.gauges||(this.gauges=this.fetch()),(await this.gauges).find((t=>t.id==e))}async findBy(e,t){let a;if(this.gauges||(this.gauges=this.fetch()),"id"==e)return this.find(t);if("address"==e)return this.find(t);if("poolId"==e)a=(await this.gauges).find((e=>e.poolId==t));else{if("poolAddress"!=e)throw`search by ${e} not implemented`;a=(await this.gauges).find((e=>e.poolAddress==t))}return a}compose(e){return{id:e.id,address:e.id,name:e.symbol,poolId:e.poolId,poolAddress:e.poolAddress,totalSupply:parseFloat(e.totalSupply),workingSupply:this.workingSupplies[e.id],relativeWeight:this.relativeWeights[e.id],relativeWeightNextPeriod:this.relativeWeightsNextPeriod[e.id],rewardTokens:this.rewardData[e.id]}}}class yr{constructor(e,t){this.url=e,this.apiKey=t}async get(e){try{const t=this.toPayload(e),{data:a}=await h.post(this.url,t,{headers:{"x-api-key":this.apiKey}});if(a.errors)throw new Error(a.errors.map((e=>e.message)).join(","));return a.data}catch(e){throw console.error(e),e}return[]}toPayload(e){return JSON.stringify({query:H({query:e})})}}class br{constructor(e){var t,a;this.pools=[],this.skip=0,this.client=new yr(e.url,e.apiKey);this.query={args:Object.assign({},(null===(t=e.query)||void 0===t?void 0:t.args)||{orderBy:"totalLiquidity",orderDirection:"desc",where:{swapEnabled:{eq:!0}}}),attrs:Object.assign({},(null===(a=e.query)||void 0===a?void 0:a.attrs)||{id:!0,address:!0})},delete this.query.args.skip}fetchFromCache(e){const t=(null==e?void 0:e.first)||10,a=(null==e?void 0:e.skip)||0,n=this.pools.slice(a,t+a);return this.skip=a+t,n}async fetch(e){if(this.pools.length>((null==e?void 0:e.first)||10)+((null==e?void 0:e.skip)||0))return this.fetchFromCache(e);this.nextToken&&(this.query.args.nextToken=this.nextToken),(null==e?void 0:e.first)&&(this.query.args.first=2*e.first);const t=new Bt(this.query.args).format(new vt),a=this.query.attrs;a.nextToken=!0;const n={pools:{__args:t,...a}},s=(await this.client.get(n)).pools;return this.nextToken=s.nextToken,this.pools=this.pools.concat(s.pools.map(this.format)),this.skip=this.pools.length,this.fetchFromCache(e)}async find(e){return 0==this.pools.length&&await this.fetch(),this.findBy("id",e)}async findBy(e,t){0==this.pools.length&&await this.fetch();const a=this.pools.find((a=>a[e]==t));if(a)return this.format(a)}format(e){var t,a,n,s;if(null===(t=e.apr)||void 0===t?void 0:t.rewardAprs.breakdown){const t=JSON.parse(null===(a=e.apr)||void 0===a?void 0:a.rewardAprs.breakdown);e.apr.rewardAprs.breakdown=t}if(null===(n=e.apr)||void 0===n?void 0:n.tokenAprs.breakdown){const t=JSON.parse(null===(s=e.apr)||void 0===s?void 0:s.tokenAprs.breakdown);e.apr.tokenAprs.breakdown=t}return e}}class fr{constructor(e,t={}){this.providers=e,this.currentProviderIdx=0,this.timeout=t.timeout||1e4}async fetch(e){return this.fallbackQuery("fetch",[e])}get currentProvider(){if(this.providers.length&&!(this.currentProviderIdx>=this.providers.length))return this.providers[this.currentProviderIdx]}async find(e){return this.fallbackQuery("find",[e])}async findBy(e,t){return this.fallbackQuery("findBy",[e,t])}async fallbackQuery(e,t){if(this.currentProviderIdx>=this.providers.length)throw new Error("No working providers found");let a;try{const n=this.providers[this.currentProviderIdx];a=await Promise.race([n[e].apply(n,t),new Promise(((e,t)=>setTimeout((()=>t(new Error("timeout"))),this.timeout)))])}catch(n){const s=n.message;"timeout"===s?console.error("Provider "+this.currentProviderIdx+" timed out, falling back to next provider"):console.error("Provider "+this.currentProviderIdx+" failed with error: ",s,", falling back to next provider"),this.currentProviderIdx++,a=await this.fallbackQuery.call(this,e,t)}return a}}class mr{constructor(e){this.pools=e}async find(e){return this.pools.find((t=>t.id.toLowerCase()===e.toLowerCase()))}async findBy(e,t){return this.pools.find((a=>a[e]===t))}async all(){return this.pools}async where(e){return(await this.all()).filter(e)}}class hr{constructor(e){var t,a;this.skip=0,this.client=bs(e.url),this.blockHeight=e.blockHeight,this.chainId=e.chainId;const n={orderBy:on.TotalLiquidity,orderDirection:en.Desc,where:{swapEnabled:{eq:!0}}},s=Object.assign({},(null===(t=e.query)||void 0===t?void 0:t.args)||n),i=Object.assign({},(null===(a=e.query)||void 0===a?void 0:a.attrs)||{});this.query={args:s,attrs:i}}async fetchDefault(){const{pool0:e,pool1000:t,pool2000:a}=await this.client.AllPools({where:{swapEnabled:!0},orderBy:on.TotalLiquidity,orderDirection:en.Desc,block:await this.block()});return[...e,...t,...a].map(this.mapType.bind(this))}async fetch(e){(null==e?void 0:e.skip)&&(this.query.args.skip=e.skip),this.blockHeight&&(this.query.args.block={number:await this.blockHeight()}),this.query.args.first=(null==e?void 0:e.first)||1e3;const t=new Bt(this.query.args).format(new Ot),{pools:a}=await this.client.Pools(t);return this.skip=((null==e?void 0:e.skip)||0)+a.length,a.map(this.mapType.bind(this))}async find(e){return await this.findBy("id",e)}async findBy(e,t){return this.pools||(this.pools=this.fetchDefault()),(await this.pools).find((a=>a[e]==t))}async all(){return this.pools||(this.pools=this.fetchDefault()),this.pools}async block(){return this.blockHeight?{number:await this.blockHeight()}:void 0}async where(e){return this.pools||(this.pools=this.fetchDefault()),(await this.pools).filter(e)}mapType(e){var t,a,n,s,i,r,o,d,c;return{id:e.id,name:e.name||"",address:e.address,chainId:this.chainId,poolType:e.poolType,poolTypeVersion:e.poolTypeVersion||1,swapFee:e.swapFee,swapEnabled:e.swapEnabled,protocolYieldFeeCache:e.protocolYieldFeeCache||"0",protocolSwapFeeCache:e.protocolSwapFeeCache||"0",amp:null!==(t=e.amp)&&void 0!==t?t:void 0,owner:null!==(a=e.owner)&&void 0!==a?a:void 0,factory:null!==(n=e.factory)&&void 0!==n?n:void 0,symbol:null!==(s=e.symbol)&&void 0!==s?s:void 0,tokens:(e.tokens||[]).map(this.mapToken.bind(this)),tokensList:e.tokensList,tokenAddresses:(e.tokens||[]).map((e=>e.address)),totalLiquidity:e.totalLiquidity,totalShares:e.totalShares,totalSwapFee:e.totalSwapFee,totalSwapVolume:e.totalSwapVolume,priceRateProviders:null!==(i=e.priceRateProviders)&&void 0!==i?i:void 0,createTime:e.createTime,mainIndex:null!==(r=e.mainIndex)&&void 0!==r?r:void 0,wrappedIndex:null!==(o=e.wrappedIndex)&&void 0!==o?o:void 0,totalWeight:e.totalWeight||"1",lowerTarget:null!==(d=e.lowerTarget)&&void 0!==d?d:"0",upperTarget:null!==(c=e.upperTarget)&&void 0!==c?c:"0"}}mapToken(e){const t=this.mapSubPools(e.token);return{...e,isExemptFromYieldProtocolFee:e.isExemptFromYieldProtocolFee||!1,token:t}}mapSubPools(e){let t=null;return e.pool&&(t={id:e.pool.id,address:e.pool.address,totalShares:e.pool.totalShares,poolType:e.pool.poolType,mainIndex:e.pool.mainIndex||0},(null==e?void 0:e.pool.tokens)&&(t.tokens=e.pool.tokens.map(this.mapSubPoolToken.bind(this)))),{pool:t,latestUSDPrice:e.latestUSDPrice||void 0}}mapSubPoolToken(e){return{address:e.address,decimals:e.decimals,symbol:e.symbol,balance:e.balance,priceRate:e.priceRate,weight:e.weight,isExemptFromYieldProtocolFee:e.isExemptFromYieldProtocolFee||void 0,token:e.token?this.mapSubPools(e.token):void 0}}}class Tr{constructor(e){this.skip=0,this.poolsSubgraph=new hr({url:e.url,chainId:e.chainId,blockHeight:e.blockHeight,query:e.query}),this.provider=e.provider,this.multicall=e.multicall,this.vault=e.vault}async fetchDefault(){const e=await this.poolsSubgraph.fetch();return await As(e,this.multicall,this.vault,this.provider)}async fetch(e){const t=await this.poolsSubgraph.fetch(e);return await As(t,this.multicall,this.vault,this.provider)}async find(e){return await this.findBy("id",e)}async findBy(e,t){return this.pools||(this.pools=this.fetchDefault()),(await this.pools).find((a=>a[e]==t))}async all(){return this.pools||(this.pools=this.fetchDefault()),this.pools}async where(e){return this.pools||(this.pools=this.fetchDefault()),(await this.pools).filter(e)}}class gr extends rr{async query(e){!e.block&&this.blockHeight&&(e.block={number:await this.blockHeight()});const{pools:t}=await this.client.PoolGauges(e);return t.map(this.mapType)}mapType(e){return e}}var Ir;!function(e){e.Pool="pool",e.Sender="sender"}(Ir||(Ir={}));class wr extends ir{async query(e){e.orderBy||(e.orderBy=Ja.Timestamp),e.orderDirection||(e.orderDirection=en.Asc),!e.block&&this.blockHeight&&(e.block={number:await this.blockHeight()});const{joinExits:t}=await this.client.JoinExits(e);return t.map(this.mapType)}mapType(e){return{id:e.id,userAddress:e.user.id,poolId:e.pool.id,timestamp:e.timestamp,type:e.type,amounts:e.amounts,tokens:e.pool.tokensList}}async findByUser(e,t,a){return this.findAllBy(Ir.Sender,e,t,a)}async findJoins(e,t){return this.query({where:{sender:e,pool:t,type:"Join"}})}async findExits(e,t){return this.query({where:{sender:e,pool:t,type:"Exit"}})}async findByPool(e,t,a){return this.findAllBy(Ir.Pool,e,t,a)}}class Er extends ir{async query(e){e.orderBy||(e.orderBy=nn.Balance),e.orderDirection||(e.orderDirection=en.Desc),!e.block&&this.blockHeight&&(e.block={number:await this.blockHeight()});const{poolShares:t}=await this.client.PoolShares(e);return t.map(this.mapType)}mapType(e){return{id:e.id,userAddress:e.userAddress.id,poolId:e.poolId.id,balance:e.balance}}async findByUser(e,t,a){return this.findAllBy(qe.UserAddress,e,t,a)}async findByPool(e,t,a){return this.findAllBy(qe.PoolId,e,t,a)}}class xr{constructor(e){this.tokens=e}async find(e){return this.tokens.find((t=>t.address.toLowerCase()===e.toLowerCase()))}async findBy(e,t){return this.tokens.find((a=>a[e]===t))}}class Ar{constructor(e){this.tokenPrices=Object.fromEntries(Object.entries(e).map((([e,t])=>[e.toLowerCase(),t])))}async find(e){const t=e.toLowerCase(),a=this.tokenPrices[t];if(a)return a}async findBy(e,t){if("address"==e)return this.find(t)}}class Sr{constructor(e,t=1){this.chainId=t,this.prices={},this.baseTokenAddresses=e.map(ht),this.urlBase=`${Lt[t].urls.priceUrl}/price/?vs_currencies=usd,eth`,this.debouncer=new It(this.fetch.bind(this),200)}fetch(e,{signal:t}={}){return e.length,h.get(this.url(e),{signal:t}).then((({data:e})=>e)).finally((()=>{e.length}))}fetchNative({signal:e}={}){let t;!function(e){e.ETH="ethereum",e.MATIC="matic-network",e.XDAI="xdai",e.OAS="oasys"}(t||(t={}));const a=t.OAS,n=this.url(["0xdeaddeaddeaddeaddeaddeaddeaddeaddead0000"]);return h.get(n,{signal:e}).then((({data:e})=>e[a])).finally((()=>{}))}find(e){const t=e.toLowerCase();if(!this.prices[t]){if(0===Object.keys(this.prices).length)for(const e of this.baseTokenAddresses)this.prices[e]=this.debouncer.fetch(e).then((t=>t[e]));this.prices[t]=this.debouncer.fetch(t).then((e=>e[t]))}return this.prices[t]}async findBy(e,t){if("address"==e)return this.find(t)}platform(e){switch(e){case 1:case 5:case 42:case 31337:case 248:case 9372:case 6343:case 4326:case 16116:case 17117:return"ethereum";case 100:return"xdai";case 137:return"polygon-pos";case 42161:return"arbitrum-one"}return"3"}url(e){return`${this.urlBase}&contract_addresses=${e.join(",")}`}}class Pr{constructor(e=1){this.chainId=e,this.prices={},this.urlBase=`https://api.coingecko.com/api/v3/coins/${this.platform(e)}/contract/%TOKEN_ADDRESS%/market_chart/range?vs_currency=usd`}fetch(e,t,{signal:a}={}){const n=this.urlRange(e,t);return h.get(n,{signal:a}).then((({data:e})=>e)).finally((()=>{}))}async find(e){throw"Historic price requires point-in-time timestamp, please use findBy(address, timestamp)"}async findBy(e,t){const a=ht(e,this.chainId);return{usd:`${(await this.fetch(a,t)).prices[0][1]}`}}platform(e){switch(e){case 1:case 5:case 42:case 31337:case 248:case 9372:case 6343:case 4326:case 16116:case 17117:return"ethereum";case 137:return"polygon-pos";case 42161:return"arbitrum-one";case 100:return"xdai"}return"2"}urlRange(e,t){const a=t-3600,n=t+3600;return`${this.urlBase.replace("%TOKEN_ADDRESS%",e)}&from=${a}&to=${n}`}}class _r{constructor(e,t=1){this.subgraphUrl=e,this.chainId=t,this.prices={},this.debouncer=new It(this.fetch.bind(this),200)}async fetch(e,{signal:t}={}){return e.length,h.post(this.subgraphUrl,{variables:{addresses:e},query:"query($addresses: [String!]) {\n tokens(\n where: {\n id_in: $addresses\n }\n ) {\n address\n latestUSDPrice\n }\n }"},{signal:t}).then((e=>e.data.data)).then((({tokens:e})=>Object.fromEntries(e.map((e=>[e.address,{usd:e.latestUSDPrice||void 0}]))))).finally((()=>{e.length}))}async find(e){const t=ht(e,this.chainId);return this.prices[t]||(this.prices[t]=this.debouncer.fetch(t).then((e=>e[t]))),this.prices[t]}async findBy(e,t){if("address"==e)return this.find(t)}}class vr{constructor(e,t,a){this.coingeckoRepository=e,this.subgraphRepository=t,this.aaveRates=a}async find(e){let t;try{try{if(t=await this.coingeckoRepository.find(e),!(null==t?void 0:t.usd))throw new Error(`Price not found:${e}`)}catch(a){console.error(`Coingecko API error: ${e} ${a}`),t=await this.subgraphRepository.find(e)}}catch(e){console.error(e),t={eth:"0",usd:"0.1"}}return t}async findBy(e,t){if("address"===e)return this.find(t);throw`Token price search by ${e} not implemented`}}class Or{constructor(e,t){this.coingeckoRepository=e,this.aaveRates=t}async find(e){return this.findBy(e,Math.floor(Date.now()/1e3))}async findBy(e,t){const a=await this.coingeckoRepository.findBy(e,t),n=await this.aaveRates.getRate(e)||1;return a&&a.usd?{...a,usd:(parseFloat(a.usd)*n).toString()}:a}}const Br=new t(["function rate() view returns (uint256)"]);class kr{constructor(e,t,a){this.network=a,this.multicall=hs(e,t)}async fetch(e){const t=Object.values(dt[e]),a=t.map((e=>[e,Br.encodeFunctionData("rate",[])])),[,n]=await this.multicall.aggregate(a);return t.reduce(((e,t,a)=>(e[t]||(e[t]="0x"==n[a]?0:parseFloat(rt(n[a],27))),e)),{})}async getRate(e){return this.network!=ue.MAINNET&&this.network!=ue.POLYGON?1:Object.values(dt[this.network]).includes(e)?(this.rates||(this.rates=this.fetch(this.network)),(await this.rates)[e]):1}}const Dr=new t(["function getTokensDistributedInWeek(address token, uint timestamp) view returns (uint)"]),Nr=new t(["function totalSupply() view returns (uint)"]),Cr=new t(["function getRate() view returns (uint)"]);class Fr{constructor(e,t,a,n,s,i){this.feeDistributorAddress=t,this.balAddress=a,this.veBalAddress=n,this.bbAUsdAddress=s,this.multicall=hs(e,i)}async fetch(e){const t=this.getPreviousWeek(e),a=[[this.feeDistributorAddress,Dr.encodeFunctionData("getTokensDistributedInWeek",[p(this.balAddress),t])],[this.feeDistributorAddress,Dr.encodeFunctionData("getTokensDistributedInWeek",[p(this.bbAUsdAddress),t])],[this.veBalAddress,Nr.encodeFunctionData("totalSupply",[])],[this.bbAUsdAddress,Cr.encodeFunctionData("getRate",[])]],[,n]=await this.multicall.aggregate(a);return{balAmount:parseFloat(rt(n[0],18)),bbAUsdAmount:parseFloat(rt(n[1],18)),veBalSupply:parseFloat(rt(n[2],18)),bbAUsdPrice:parseFloat(rt(n[3],18)),balAddress:this.balAddress}}async multicallData(e){return this.data||(this.data=await this.fetch(e)),this.data}getPreviousWeek(e){const t=new Date(e);t.setUTCHours(0),t.setUTCMinutes(0),t.setUTCSeconds(0),t.setUTCMilliseconds(0);let a=t.getUTCDay()-4;return a<0&&(a+=7),a+=7,Math.floor(t.getTime()/1e3)-86400*a}}const Rr=new t(["function getProtocolFeesCollector() view returns (address)"]),Mr=new t(["function getSwapFeePercentage() view returns (uint)"]);let Lr;class Ur{constructor(e,t){this.provider=t,this.vault=new u(e,Rr,this.provider)}async fetch(){const e=await this.vault.getProtocolFeesCollector(),t=new u(e,Mr,this.provider),a=await t.getSwapFeePercentage();return parseFloat(rt(a,18))}async find(){return Lr||(Lr=this.fetch()),this.swapFeePercentage=await Lr,this.swapFeePercentage}async findBy(){return this.find()}}const Gr=new t(["function getSwapFeePercentage() view returns (uint)"]);let $r;class qr{constructor(e,t,a){this.protocolFeePercentagesProviderAddress=t,this.multicall=hs(e,a)}async fetch(){const e=[[this.protocolFeePercentagesProviderAddress,Gr.encodeFunctionData("getFeeTypePercentage",[0])],[this.protocolFeePercentagesProviderAddress,Gr.encodeFunctionData("getFeeTypePercentage",[2])]],[,t]=await this.multicall.aggregate(e);return{swapFee:parseFloat(rt(t[0],18)),yieldFee:parseFloat(rt(t[2],18))}}async getFees(){return $r||($r=this.fetch()),this.protocolFees=await $r,this.protocolFees}}const Wr={stETH:"0xae7ab96520de3a18e5e111b5eaab095312d7fe84",wstETH:"0x7f39c581f595b53c5cb19bd0b3f8da6c935e2ca0",arbitrumStEth:"0x5979d7b546e38e414f7e9822514be443a4800529"},Vr=async()=>{let e=0;try{const t=await h.get("https://lido-aprs-proxy.balancer.workers.dev/?network=1"),{data:a}=t.data;e=Math.round(100*parseFloat(a.smaApr))}catch(e){console.error("Failed to fetch stETH APR:",e)}return{[Wr.stETH]:e,[Wr.wstETH]:e,[Wr.arbitrumStEth]:e}},Hr={rETH:"0xae78736cd615f374d3085123a210448e74fc6393"},jr=async()=>{let e=0;try{const t=await h.get("https://api.rocketpool.net/api/apr"),{yearlyAPR:a}=t.data;e=Math.round(100*parseFloat(a))}catch(e){console.error("Failed to fetch APR:",e)}return{[Hr.rETH]:e}},Xr={stMATIC:"0x3a58a54c066fdc0f2d55fc9c89f0415c92ebf3c4"},Kr=async()=>{let e=0;try{const t=await h.get("https://lido-aprs-proxy.balancer.workers.dev/?network=137"),{apr:a}=t.data;e=Math.round(100*parseFloat(a))}catch(e){console.error("Failed to fetch stMATIC APR:",e)}return{[Xr.stMATIC]:e}},Yr={usdcUSDplus:"0x1aafc31091d93c3ff003cff5d2d8f7ba2e728425",usdcUSDplus2:"0x6933ec1ca55c06a894107860c92acdfd2dd8512f"},Jr=async()=>{let e=0;try{const{data:t}=await h.get("https://app.overnight.fi/api/balancer/week/apr");e=Math.round(1e4*parseFloat(t)/100)}catch(e){console.error("Failed to fetch USD+ APR:",e)}return Object.fromEntries(Object.values(Yr).map((t=>[t,e])))},Zr={sfrxETH:"0xac3e018457b222d93114458476f3e3416abbe38f"},zr=async()=>{let e=0;try{const t=await h.get("https://api.frax.finance/v2/frxeth/summary/latest"),{sfrxethApr:a}=t.data;e=Math.round(100*parseFloat(a))}catch(e){console.error("Failed to fetch APR:",e)}return{[Zr.sfrxETH]:e}},Qr={maticX:"0xfa68fb4628dff1028cfec22b4162fccd0d45efb6"},eo=async()=>{let e=0;try{const t=await h.get("https://generic-apr-proxy.balancer.workers.dev/?provider=stader"),{value:a}=t.data;e=Math.round(100*parseFloat(a))}catch(e){console.error("Failed to fetch APR:",e)}return{[Qr.maticX]:e}},to={qETH:"0x93ef1ea305d11a9b2a3ebb9bb4fcc34695292e7d"},ao=async()=>{let e=0;try{const t=await h.get("https://generic-apr-proxy.balancer.workers.dev/?provider=tranchess"),[{weeklyAveragePnlPercentage:a}]=t.data;e=Math.round(parseFloat(rt(d.from(a).mul(365).mul(1e4),18)))}catch(e){console.error("Failed to fetch qETH APR:",e)}return{[to.qETH]:e}},no={USDR:"0xaf0d9d65fc54de245cda37af3d18cbec860a4d4b"},so=async()=>{let e=0;try{const t=await h.get("https://generic-apr-proxy.balancer.workers.dev/?provider=usdr"),{usdr:a}=t.data;e=Math.round(100*parseFloat(a))}catch(e){console.error("Failed to fetch USDR APR:",e)}return{[no.USDR]:e}},io={rETH:"0x9559aaa82d9649c7a7b220e7c461d2e74c9a3593"},ro=async()=>{let e=0;try{const t=await h.get("https://drop-api.stafi.io/reth/v1/poolData/"),{stakeApr:a}=t.data.data;e=Math.round(100*parseFloat(a))}catch(e){console.error("Failed to fetch APR:",e)}return{[io.rETH]:e}},oo=new q("https://rpc.ankr.com/eth",1),co={getPoolsUI:new u("0x5954aB967Bc958940b7EB73ee84797Dc8a2AFbb9",[{inputs:[],name:"getPoolsUI",outputs:[{components:[{internalType:"uint256",name:"poolId",type:"uint256"},{internalType:"uint256",name:"stakedAmount",type:"uint256"},{components:[{internalType:"uint48",name:"startTimestampHour",type:"uint48"},{internalType:"uint48",name:"endTimestampHour",type:"uint48"},{internalType:"uint96",name:"rewardsPerHour",type:"uint96"},{internalType:"uint96",name:"capPerPosition",type:"uint96"}],internalType:"struct ApeCoinStaking.TimeRange",name:"currentTimeRange",type:"tuple"}],internalType:"struct ApeCoinStaking.PoolUI",name:"",type:"tuple"},{components:[{internalType:"uint256",name:"poolId",type:"uint256"},{internalType:"uint256",name:"stakedAmount",type:"uint256"},{components:[{internalType:"uint48",name:"startTimestampHour",type:"uint48"},{internalType:"uint48",name:"endTimestampHour",type:"uint48"},{internalType:"uint96",name:"rewardsPerHour",type:"uint96"},{internalType:"uint96",name:"capPerPosition",type:"uint96"}],internalType:"struct ApeCoinStaking.TimeRange",name:"currentTimeRange",type:"tuple"}],internalType:"struct ApeCoinStaking.PoolUI",name:"",type:"tuple"},{components:[{internalType:"uint256",name:"poolId",type:"uint256"},{internalType:"uint256",name:"stakedAmount",type:"uint256"},{components:[{internalType:"uint48",name:"startTimestampHour",type:"uint48"},{internalType:"uint48",name:"endTimestampHour",type:"uint48"},{internalType:"uint96",name:"rewardsPerHour",type:"uint96"},{internalType:"uint96",name:"capPerPosition",type:"uint96"}],internalType:"struct ApeCoinStaking.TimeRange",name:"currentTimeRange",type:"tuple"}],internalType:"struct ApeCoinStaking.PoolUI",name:"",type:"tuple"},{components:[{internalType:"uint256",name:"poolId",type:"uint256"},{internalType:"uint256",name:"stakedAmount",type:"uint256"},{components:[{internalType:"uint48",name:"startTimestampHour",type:"uint48"},{internalType:"uint48",name:"endTimestampHour",type:"uint48"},{internalType:"uint96",name:"rewardsPerHour",type:"uint96"},{internalType:"uint96",name:"capPerPosition",type:"uint96"}],internalType:"struct ApeCoinStaking.TimeRange",name:"currentTimeRange",type:"tuple"}],internalType:"struct ApeCoinStaking.PoolUI",name:"",type:"tuple"}],stateMutability:"view",type:"function"}],oo).getPoolsUI},lo={sApe:"0x7966c5bae631294d7cffcea5430b78c2f76db6fa"},po=async(e=1,t=co)=>{let a=0;try{const e=(await t.getPoolsUI())[0],n=e.stakedAmount,s=e.currentTimeRange.rewardsPerHour.mul(8760);a=Number(s.mul(1e4).div(n))}catch(e){console.error("Failed to fetch Tessera Ape Coin APR:",e)}return{[lo.sApe]:a}},uo={eUSDC:"0xeb91861f8a4e1c12333f42dce8fb0ecdc28da716",eDAI:"0xe025e3ca2be02316033184551d4d3aa22024d9dc",eUSDT:"0x4d19f33948b99800b6113ff3e83bec9b537c85d2",eFRAX:"0x5484451a88a35cd0878a1be177435ca8a0e4054e"},yo={[ue.MAINNET]:"https://api.thegraph.com/subgraphs/name/euler-xyz/euler-mainnet"},bo=async()=>{const e=ue.MAINNET,t={operationName:"getAssetsAPY",query:"\n query getAssetsAPY($eTokenAddress_in: [String!]) {\n assets(\n where: {\n eTokenAddress_in: $eTokenAddress_in\n }\n ) {\n eTokenAddress\n supplyAPY\n }\n }\n",variables:{eTokenAddress_in:Object.values(uo)}},a=await h.post(yo[e],t),{data:{assets:n}}=a.data,s={eUSDT:0,eDAI:0,eUSDC:0,eFRAX:0};return n.forEach((({eTokenAddress:e,supplyAPY:t})=>{const a=Object.entries(uo).filter((([,t])=>t.toLocaleLowerCase()===e.toLocaleLowerCase()))[0][0];s[a]=Math.round(1e4*parseFloat(rt(d.from(t),27)))})),{[uo.eUSDT]:s.eUSDT,[uo.eDAI]:s.eDAI,[uo.eUSDC]:s.eUSDC,[uo.eFRAX]:s.eFRAX}},fo=Object.fromEntries([...Object.values(Wr).map((e=>[e,Vr])),...Object.values(Xr).map((e=>[e,Kr])),...Object.values(ct).map((e=>[e,ft])),...Object.values(Yr).map((e=>[e,Jr])),...Object.values(Hr).map((e=>[e,jr])),...Object.values(Zr).map((e=>[e,zr])),...Object.values(Qr).map((e=>[e,eo])),...Object.values(to).map((e=>[e,ao])),...Object.values(no).map((e=>[e,so])),...Object.values(io).map((e=>[e,ro])),...Object.values(lo).map((e=>[e,po])),...Object.values(uo).map((e=>[e,bo]))]);class mo{constructor(e,t=fo){this.network=e,this.sources=t,this.yields={}}async fetch(e){const t=await this.sources[e](this.network);this.yields={...this.yields,...t}}async find(e){const t=e.toLocaleLowerCase();return Object.keys(this.sources).includes(t)&&!Object.keys(this.yields).includes(t)&&await this.fetch(t),this.yields[t]}async findBy(e,t){if("address"==e)return this.find(t)}}const ho=e=>`{\n blocks(first: 1, orderBy: timestamp, orderDirection: asc, where: { timestamp_gt: ${e} }) {\n number\n }\n}`,To=async(e,t)=>{const a={query:ho(t)},n=await h.post(e,a),{data:{blocks:s}}=n.data;return parseInt(s[0].number)};class go{constructor(e){this.endpoint=e,this.blocks={}}async find(e){if("dayAgo"==e){const e=""+(Math.floor(Date.now()/1e3)-86400);return this.blocks[e]||(this.blocks={...this.blocks,[e]:To(this.endpoint,e)}),this.blocks[e]}}async findBy(e="",t=""){}}var Io,wo,Eo=[{chainId:1,address:"0x8888801af4d980682e47f1a9036e589479e835c5",symbol:"mph"},{chainId:1,address:"0x27054b13b1b798b345b591a4d22e6562d47ea75a",symbol:"ast"},{chainId:1,address:"0x3301ee63fb29f863f2333bd4466acb46cd8323e6",symbol:"akita"},{chainId:1,address:"0x616e8bfa43f920657b3497dbf40d6b1a02d4608d",symbol:"aurabal"},{chainId:1,address:"0xc0c293ce456ff0ed870add98a0828dd4d2903dbf",symbol:"aura"},{chainId:1,address:"0x3472a5a71965499acd81997a54bba8d852c6e53d",symbol:"badger"},{chainId:1,address:"0xba100000625a3754423978a60c9317c58a424e3d",symbol:"bal"},{chainId:1,address:"0x804cdb9116a10bb78768d3252355a1b18067bf8f",symbol:"bb-a-dai"},{chainId:1,address:"0x9210f1204b5a24742eba12f710636d76240df3d0",symbol:"bb-a-usdc"},{chainId:1,address:"0x2bbf681cc4eb09218bee85ea2a5d3d13fa40fc0c",symbol:"bb-a-usdt"},{chainId:1,address:"0x7b50775383d3d6f0215a8f290f2c9e2eebbeceb2",symbol:"bb-a-usd"},{chainId:1,address:"0x2d94aa3e47d9d5024503ca8491fce9a2fb4da198",symbol:"bank"},{chainId:1,address:"0x0d8775f648430679a709e98d2b0cb6250d2887ef",symbol:"bat"},{chainId:1,address:"0xf17e65822b568b3903685a7c9f496cf7656cc6c2",symbol:"bico"},{chainId:1,address:"0x799ebfabe77a6e34311eeee9825190b9ece32824",symbol:"btrst"},{chainId:1,address:"0x514910771af9ca656af840dff83e8264ecf986ca",symbol:"link"},{chainId:1,address:"0x3506424f91fd33084466f402d5d97f05f8e3b4af",symbol:"chz"},{chainId:1,address:"0x41e5560054824ea6b0732e656e3ad64e20e94e45",symbol:"cvc"},{chainId:1,address:"0xc00e94cb662c3520282e6f5717214004a7f26888",symbol:"comp"},{chainId:1,address:"0xdef1ca1fb7fbcdc777520aa7f396b4e015f497ab",symbol:"cow"},{chainId:1,address:"0xd533a949740bb3306d119cc777fa900ba034cd52",symbol:"crv"},{chainId:1,address:"0x6b175474e89094c44da98b954eedeac495271d0f",symbol:"dai"},{chainId:1,address:"0xf2051511b9b121394fa75b8f7d4e7424337af687",symbol:"haus"},{chainId:1,address:"0x888888435fde8e7d4c54cab67f206e4199454c60",symbol:"dfx"},{chainId:1,address:"0x798d1be841a82a273720ce31c822c61a67a601c3",symbol:"digg"},{chainId:1,address:"0xf629cbd94d3791c9250152bd8dfbdf380e2a3b9c",symbol:"enj"},{chainId:1,address:"0xc18360217d8f7ab5e7c516566761ea12ce7f9d72",symbol:"ens"},{chainId:1,address:"0x4e15361fd6b4bb609fa63c81a2be19d873717870",symbol:"ftm"},{chainId:1,address:"0x956f47f50a910163d8bf957cf5846d573e7f87ca",symbol:"fei"},{chainId:1,address:"0xed1480d12be41d92f36f5f7bdd88212e381a3677",symbol:"fdt"},{chainId:1,address:"0x586aa273f262909eef8fa02d90ab65f5015e0516",symbol:"fiat"},{chainId:1,address:"0xde30da39c46104798bb5aa3fe8b9e0e1f348163f",symbol:"gtc"},{chainId:1,address:"0x900db999074d9277c5da2a43f252d74366230da0",symbol:"giv"},{chainId:1,address:"0x6810e776880c02933d47db1b9fc05908e5386b96",symbol:"gno"},{chainId:1,address:"0xba485b556399123261a5f9c95d413b4f93107407",symbol:"graviaura"},{chainId:1,address:"0x3ec8798b81485a254928b70cda1cf0a2bb0b74d7",symbol:"gro"},{chainId:1,address:"0xc011a73ee8576fb46f5e1c5751ca3b9fe0af2a6f",symbol:"snx"},{chainId:1,address:"0x5a98fcbea516cf06857215779fd812ca3bef1b32",symbol:"ldo"},{chainId:1,address:"0x6dea81c8171d0ba574754ef6f8b412f2ed88c54d",symbol:"lqty"},{chainId:1,address:"0x5f98805a4e8be255a32880fdec7f6728c6568ba0",symbol:"lusd"},{chainId:1,address:"0x965d79f1a1016b574a62986e13ca8ab04dfdd15c",symbol:"m2"},{chainId:1,address:"0x9f8f72aa9304c8b593d555f12ef6589cc3a579a2",symbol:"mkr"},{chainId:1,address:"0xd084944d3c05cd115c09d072b9f44ba3e0e45921",symbol:"fold"},{chainId:1,address:"0x7d1afa7b718fb893db30a3abc0cfc608aacfebb0",symbol:"matic"},{chainId:1,address:"0xa3bed4e1c75d00fa6f4e5e6922db7261b5e9acd2",symbol:"mta"},{chainId:1,address:"0x4b13006980acb09645131b91d259eaa111eaf5ba",symbol:"myc"},{chainId:1,address:"0x333a4823466879eef910a04d473505da62142069",symbol:"nation"},{chainId:1,address:"0xcfeaead4947f0705a14ec42ac3d44129e1ef3ed5",symbol:"note"},{chainId:1,address:"0x967da4048cd07ab37855c090aaf366e4ce1b9f48",symbol:"ocean"},{chainId:1,address:"0x64aa3364f17a4d01c6f1751fd97c2bd3d7e7f1d5",symbol:"ohm"},{chainId:1,address:"0xab846fb6c81370327e784ae7cbb6d6a6af6ff4bf",symbol:"pal"},{chainId:1,address:"0xcafe001067cdef266afb7eb5a286dcfd277f3de5",symbol:"psp"},{chainId:1,address:"0x68037790a0229e9ce6eaa8a99ea92964106c4703",symbol:"par"},{chainId:1,address:"0x45804880de22913dafe09f4980848ece6ecbaf78",symbol:"paxg"},{chainId:1,address:"0x89ab32156e46f46d02ade3fecbe5fc4243b9aaed",symbol:"pnt"},{chainId:1,address:"0x9992ec3cf6a55b00978cddf2b27bc6882d88d1ec",symbol:"poly"},{chainId:1,address:"0x43d4a3cd90ddd2f8f4f693170c9c8098163502ad",symbol:"d2d"},{chainId:1,address:"0xeb4c2781e4eba804ce9a9803c67d0893436bb27d",symbol:"renbtc"},{chainId:1,address:"0x408e41876cccdc0f92210600ef50372656052a38",symbol:"ren"},{chainId:1,address:"0xfb5453340c03db5ade474b27e68b6a9c6b2823eb",symbol:"robot"},{chainId:1,address:"0xd33526068d116ce69f19a9ee46f0bd304f21a51f",symbol:"rpl"},{chainId:1,address:"0xae78736cd615f374d3085123a210448e74fc6393",symbol:"reth"},{chainId:1,address:"0xfe18be6b3bd88a2d2a7f928d00292e7a9963cfc6",symbol:"sbtc"},{chainId:1,address:"0x476c5e26a75bd202a9683ffd34359c0cc15be0ff",symbol:"srm"},{chainId:1,address:"0x35e78b3982e87ecfd5b3f3265b601c046cdbe232",symbol:"xai"},{chainId:1,address:"0x3affcca64c2a6f4e3b6bd9c64cd2c969efd1ecbe",symbol:"dsla"},{chainId:1,address:"0xf24d8651578a55b0c119b9910759a351a3458895",symbol:"sdbal"},{chainId:1,address:"0x11c1a6b3ed6bb362954b29d3183cfa97a0c806aa",symbol:"str"},{chainId:1,address:"0x8f693ca8d21b157107184d29d398a8d082b38b76",symbol:"data"},{chainId:1,address:"0x470ebf5f030ed85fc1ed4c2d36b9dd02e77cf1b7",symbol:"temple"},{chainId:1,address:"0xa36fdbbae3c9d55a1d67ee5821d53b50b63a1ab9",symbol:"temp"},{chainId:1,address:"0xdac17f958d2ee523a2206206994597c13d831ec7",symbol:"usdt"},{chainId:1,address:"0x9c4a4204b79dd291d6b6571c5be8bbcd0622f050",symbol:"tcr"},{chainId:1,address:"0x226f7b842e0f0120b7e194d05432b3fd14773a9d",symbol:"unn"},{chainId:1,address:"0x1f9840a85d5af5bf1d1762f925bdaddc4201f984",symbol:"uni"},{chainId:1,address:"0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48",symbol:"usdc"},{chainId:1,address:"0x81f8f0bb1cb2a06649e51913a151f0e7ef6fa321",symbol:"vita"},{chainId:1,address:"0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2",symbol:"weth"},{chainId:1,address:"0xedb171c18ce90b633db442f2a6f72874093b49ef",symbol:"wampl"},{chainId:1,address:"0x2260fac5e5542a773aa44fbcfedf7c193bc2c599",symbol:"wbtc"},{chainId:1,address:"0xf203ca1769ca8e9e8fe1da9d147db68b6c919817",symbol:"wncg"},{chainId:1,address:"0x7f39c581f595b53c5cb19bd0b3f8da6c935e2ca0",symbol:"wsteth"},{chainId:1,address:"0x79c71d3436f39ce382d0f58f1b011d88100b9d91",symbol:"xns"},{chainId:1,address:"0x0bc529c00c6401aef6d220be8c6ea1667f6ad93e",symbol:"yfi"},{chainId:1,address:"0xbcca60bb61934080951369a648fb03df4f96263c",symbol:"ausdc"},{chainId:1,address:"0x028171bca77440897b824ca71d1c56cac55b68a3",symbol:"adai"},{chainId:1,address:"0x3ed3b47dd13ec9a98b44e6204a523e766b225811",symbol:"ausdt"},{chainId:137,address:"0x9c2c5fd7b07e95ee044ddeba0e97a665f142394f",symbol:"1inch"},{chainId:137,address:"0xd6df932a45c0f255f85145f286ea0b292b21c90b",symbol:"aave"},{chainId:137,address:"0xc3fdbadc7c795ef1d6ba111e06ff8f16a20ea539",symbol:"addy"},{chainId:137,address:"0xf84bd51eab957c2e7b7d646a3427c5a50848281d",symbol:"agar"},{chainId:137,address:"0x033d942a6b495c4071083f4cde1f17e986fe856c",symbol:"aga"},{chainId:137,address:"0x0e9b89007eee9c958c0eda24ef70723c2c93dd58",symbol:"amaticc"},{chainId:137,address:"0x034b2090b579228482520c589dbd397c53fc51cc",symbol:"vision"},{chainId:137,address:"0x2c89bbc92bd86f8075d1decc58c7f4e0107f286b",symbol:"avax"},{chainId:137,address:"0x49690541e3f6e933a9aa3cffee6010a7bb5b72d7",symbol:"axiav3"},{chainId:137,address:"0x9a71012b13ca4d3d0cdc72a177df3ef03b0e76a3",symbol:"bal"},{chainId:137,address:"0xdb7cb471dd0b49b29cab4a1c14d070f27216a0ab",symbol:"bank"},{chainId:137,address:"0xfbdd194376de19a88118e84e279b977f165d01b8",symbol:"bifi"},{chainId:137,address:"0xd6ca869a4ec9ed2c7e618062cdc45306d8dbbc14",symbol:"btc2x-fli-p"},{chainId:137,address:"0x53e0bca35ec356bd5dddfebbd1fc0fd03fabad39",symbol:"link"},{chainId:137,address:"0x172370d5cd63279efa6d502dab29171933a610af",symbol:"crv"},{chainId:137,address:"0x8f3cf7ad23cd3cadbd9735aff958023239c6a063",symbol:"dai"},{chainId:137,address:"0x1d607faa0a51518a7728580c238d912747e71f7a",symbol:"data"},{chainId:137,address:"0x85955046df4668e1dd369d2de9f3aeb98dd2a369",symbol:"dpi"},{chainId:137,address:"0xe7804d91dfcde7f776c90043e03eaa6df87e6395",symbol:"dfx"},{chainId:137,address:"0xf28164a485b0b2c90639e47b0f377b4a438a16b1",symbol:"dquick"},{chainId:137,address:"0x45c32fa6df82ead1e2ef74d17b76547eddfaff89",symbol:"frax"},{chainId:137,address:"0x50b728d8d964fd00c2d0aad81718b71311fef68a",symbol:"snx"},{chainId:137,address:"0x72928d5436ff65e57f72d5566dcd3baedc649a88",symbol:"hdao"},{chainId:137,address:"0x3ad707da309f3845cd602059901e39c4dcd66473",symbol:"eth2x-fli-p"},{chainId:137,address:"0x4f025829c4b13df652f38abd2ab901185ff1e609",symbol:"ieth-fli-p"},{chainId:137,address:"0x340f412860da7b7823df372a2b59ff78b7ae6abc",symbol:"imatic-fli-p"},{chainId:137,address:"0xf287d97b6345bad3d88856b26fb7c0ab3f2c7976",symbol:"matic2x-fli-p"},{chainId:137,address:"0x130ce4e4f76c2265f94a961d70618562de0bb8d2",symbol:"ibtc-fli-p"},{chainId:137,address:"0x596ebe76e2db4470966ea395b0d063ac6197a8c5",symbol:"jrt"},{chainId:137,address:"0x3a58a54c066fdc0f2d55fc9c89f0415c92ebf3c4",symbol:"stmatic"},{chainId:137,address:"0xf501dd45a1198c2e1b5aef5314a68b9006d842e0",symbol:"mta"},{chainId:137,address:"0xeaecc18198a475c921b24b8a6c1c1f0f5f3f7ea0",symbol:"seed"},{chainId:137,address:"0xfe712251173a2cd5f5be2b46bb528328ea3565e1",symbol:"mvi"},{chainId:137,address:"0xa3fa99a148fa48d14ed51d610c367c61876997f1",symbol:"mimatic"},{chainId:137,address:"0xa486c6bc102f409180ccb8a94ba045d39f8fc7cb",symbol:"nex"},{chainId:137,address:"0xe2aa7db6da1dae97c5f5c6914d285fbfcc32a128",symbol:"par"},{chainId:137,address:"0x580a84c73811e1839f75d86d75d88cca0c241ff4",symbol:"qi"},{chainId:137,address:"0x831753dd7087cac61ab5644b308642cc1c33dc13",symbol:"quick"},{chainId:137,address:"0xb5c064f955d8e7f38fe0460c556a72987494ee17",symbol:"quick"},{chainId:137,address:"0x00e5646f60ac6fb446f621d146b6e1886f002905",symbol:"rai"},{chainId:137,address:"0x431cd3c9ac9fc73644bf68bf5691f4b83f9e104f",symbol:"rbw"},{chainId:137,address:"0xdbf31df14b66535af65aac99c32e9ea844e14501",symbol:"renbtc"},{chainId:137,address:"0x501ace9c35e60f03a2af4d484f49f9b1efde9f40",symbol:"solace"},{chainId:137,address:"0xfa68fb4628dff1028cfec22b4162fccd0d45efb6",symbol:"maticx"},{chainId:137,address:"0x0b3f868e0be5597d5db7feb59e1cadbb0fdda50a",symbol:"sushi"},{chainId:137,address:"0xdf7837de1f2fa4631d716cf2502f8b230f1dcc32",symbol:"tel"},{chainId:137,address:"0xe6469ba6d2fd6130788e0ea9c0a0515900563b59",symbol:"ust"},{chainId:137,address:"0xc2132d05d31c914a87c6611c10748aeb04b58e8f",symbol:"usdt"},{chainId:137,address:"0x5fe2b58c013d7601147dcdd68c143a77499f5531",symbol:"grt"},{chainId:137,address:"0xbbba073c31bf03b8acf7c28ef0738decf3695683",symbol:"sand"},{chainId:137,address:"0x2934b36ca9a4b31e633c5be670c8c8b28b6aa015",symbol:"thx"},{chainId:137,address:"0x2f800db0fdb5223b3c3f354886d907a671414a7f",symbol:"bct"},{chainId:137,address:"0x2e1ad108ff1d8c782fcbbb89aad783ac49586756",symbol:"tusd"},{chainId:137,address:"0x3809dcdd5dde24b37abe64a5a339784c3323c44f",symbol:"swap"},{chainId:137,address:"0x7fbc10850cae055b27039af31bd258430e714c62",symbol:"ubt"},{chainId:137,address:"0x2791bca1f2de4661ed88a30c99a7a9449aa84174",symbol:"usdc"},{chainId:137,address:"0x7ceb23fd6bc0add59e62ac25578270cff1b9f619",symbol:"weth"},{chainId:137,address:"0x0d500b1d8e8ef31e21c99d1db9a6444d3adf1270",symbol:"wmatic"},{chainId:137,address:"0x1bfd67037b42cf73acf2047067bd4f2c47d9bfd6",symbol:"wbtc"},{chainId:137,address:"0x24834bbec7e39ef42f4a75eaf8e5b6486d3f0e57",symbol:"lunc"},{chainId:137,address:"0xf153eff70dc0bf3b085134928daeea248d9b30d0",symbol:"xmark"},{chainId:42161,address:"0x9f20de1fc9b161b34089cbeae888168b44b03461",symbol:"arbis"},{chainId:42161,address:"0x040d1edc9569d4bab2d15287dc5a4f10f56a56b8",symbol:"bal"},{chainId:42161,address:"0x031d35296154279dc1984dcd93e392b1f946737b",symbol:"cap"},{chainId:42161,address:"0xf97f4df75117a78c1a5a0dbb814af92458539fb4",symbol:"link"},{chainId:42161,address:"0x354a6da3fcde098f8389cad84b0182725c6c91de",symbol:"comp"},{chainId:42161,address:"0xf4d48ce3ee1ac3651998971541badbb9a14d7234",symbol:"cream"},{chainId:42161,address:"0x11cdb42b0eb46d95f990bedd4695a6e3fa034978",symbol:"crv"},{chainId:42161,address:"0xda10009cbd5d07dd0cecc66161fc93d7c9000da1",symbol:"dai"},{chainId:42161,address:"0x8038f3c971414fd1fc220ba727f2d4a0fc98cb65",symbol:"dht"},{chainId:42161,address:"0xf0b5ceefc89684889e5f7e0a7775bd100fcd3709",symbol:"dusd"},{chainId:42161,address:"0x6c2c06790b3e3e3c38e12ee22f8183b37a13ee55",symbol:"dpx"},{chainId:42161,address:"0x32eb7902d4134bf98a28b963d26de779af92a212",symbol:"rdpx"},{chainId:42161,address:"0xc3ae0333f0f34aa734d5493276223d95b8f9cb37",symbol:"dxd"},{chainId:42161,address:"0xfc5a1a6eb076a2c7ad06ed22c90d7e710e35ad0a",symbol:"gmx"},{chainId:42161,address:"0xa0b862f60edef4452f25b4160f177db44deb6cf1",symbol:"gno"},{chainId:42161,address:"0xb965029343d55189c25a7f3e0c9394dc0f5d41b1",symbol:"ndx"},{chainId:42161,address:"0x539bde0d7dbd336b79148aa742883198bbf60342",symbol:"magic"},{chainId:42161,address:"0x4e352cf164e64adcbad318c3a1e222e9eba4ce42",symbol:"mcb"},{chainId:42161,address:"0x3f56e0c36d275367b8c502090edf38289b3dea0d",symbol:"mimatic"},{chainId:42161,address:"0x965772e0e9c84b6f359c8597c891108dcf1c5b1a",symbol:"pickle"},{chainId:42161,address:"0x6694340fc020c5e6b96567843da2df01b2ce1eb6",symbol:"stg"},{chainId:42161,address:"0xd4d42f0b6def4ce0383636770ef773390d85c61a",symbol:"sushi"},{chainId:42161,address:"0xfd086bc7cd5c481dcc9c85ebe478a1c0b69fcbb9",symbol:"usdt"},{chainId:42161,address:"0x23a941036ae778ac51ab04cea08ed6e2fe103614",symbol:"grt"},{chainId:42161,address:"0xa72159fc390f0e3c6d415e658264c7c4051e9b87",symbol:"tcr"},{chainId:42161,address:"0x4d15a3a2286d883af0aa1b3f21367843fac63e07",symbol:"tusd"},{chainId:42161,address:"0xfa7f8980b0f1e64a2062791cc3b0871572f1f7f0",symbol:"uni"},{chainId:42161,address:"0xff970a61a04b1ca14834a43f5de4533ebddb5cc8",symbol:"usdc"},{chainId:42161,address:"0xa684cd057951541187f288294a1e1c2646aa2d24",symbol:"vsta"},{chainId:42161,address:"0x64343594ab9b56e99087bfa6f2335db24c2d1f17",symbol:"vst"},{chainId:42161,address:"0x82af49447d8a07e3bd95bd0d56f35241523fbab1",symbol:"weth"},{chainId:42161,address:"0x2f2a2543b76a4166549f7aab2e75bef0aefc5b0f",symbol:"wbtc"},{chainId:42161,address:"0x82e3a8f066a6989666b031d916c43672085b1582",symbol:"yfi"},{chainId:16116,address:"0x5a89E11Cb554E00c2f51C4bb7F05bc7Ab0Fa6351",symbol:"weth"},{chainId:9372,address:"0x5200000000000000000000000000000000000001",symbol:"weth"},{chainId:248,address:"0x5200000000000000000000000000000000000001",symbol:"weth"},{chainId:6343,address:"0xAba76Cdc5910F6627856EB75Bcce0171376999C7",symbol:"weth"},{chainId:4326,address:"0x4200000000000000000000000000000000000006",symbol:"weth"}];class xo{constructor(e,t,a){this.pools=new hr({url:e.urls.subgraph,chainId:e.chainId}),this.poolsOnChain=new Tr({url:e.urls.subgraph,chainId:e.chainId,provider:t,multicall:e.addresses.contracts.multicall,vault:e.addresses.contracts.vault,query:a}),this.poolShares=new Er(e.urls.subgraph,e.chainId),this.poolJoinExits=new wr(e.urls.subgraph,e.chainId),e.urls.gaugesSubgraph&&(this.poolGauges=new gr(e.urls.gaugesSubgraph,e.chainId),this.gaugeShares=new or(e.urls.gaugesSubgraph,e.chainId)),e.urls.blockNumberSubgraph&&(this.blockNumbers=new go(e.urls.blockNumberSubgraph));this.yesterdaysPools=new hr({url:e.urls.subgraph,chainId:e.chainId,blockHeight:async()=>{const e=await t.getBlockNumber();return Number(e)-5e3}});const n=Eo.filter((t=>t.chainId==e.chainId)).map((e=>e.address)),s=new Sr(n,e.chainId),i=new _r(e.urls.subgraph,e.chainId),r=new kr(e.addresses.contracts.multicall,t,e.chainId);this.tokenPrices=new vr(s,i,r);const o=new Pr(e.chainId);this.tokenHistoricalPrices=new Or(o,r),this.tokenMeta=new xr([]),e.urls.gaugesSubgraph&&(this.liquidityGauges=new ur(e.urls.gaugesSubgraph,e.addresses.contracts.multicall,e.addresses.contracts.gaugeController||"",e.chainId,t)),e.addresses.contracts.feeDistributor&&e.addresses.tokens.bal&&e.addresses.tokens.veBal&&e.addresses.tokens.bbaUsd&&(this.feeDistributor=new Fr(e.addresses.contracts.multicall,e.addresses.contracts.feeDistributor,e.addresses.tokens.bal,e.addresses.tokens.veBal,e.addresses.tokens.bbaUsd,t)),this.feeCollector=new Ur(e.addresses.contracts.vault,t),e.addresses.contracts.protocolFeePercentagesProvider&&(this.protocolFees=new qr(e.addresses.contracts.multicall,e.addresses.contracts.protocolFeePercentagesProvider,t)),this.tokenYields=new mo(e.chainId)}}class Ao{constructor(e,t=new Os(e),a=new Xs(e)){this.config=e,this.sor=t,this.subgraph=a,this.networkConfig=vs(e),this.provider=t.provider,this.data=new xo(this.networkConfig,t.provider,e.subgraphQuery),this.swaps=new Vs(this.config),this.relayer=new js(this.swaps),this.pricing=new Ks(e,this.swaps),this.pools=new tr(this.networkConfig,this.data),this.balancerContracts=new ii(this.networkConfig.addresses.contracts,t.provider),this.zaps=new vi(this.networkConfig.chainId)}get rpcProvider(){return this.sor.provider}get contracts(){return this.balancerContracts.contracts}}!function(e){e[e.Direct=0]="Direct",e[e.TokenIn=1]="TokenIn",e[e.TokenOut=2]="TokenOut",e[e.Middle=3]="Middle"}(Io||(Io={})),function(e){e[e.Swap=0]="Swap",e[e.BatchSwap=1]="BatchSwap",e[e.Join=2]="Join",e[e.Exit=3]="Exit"}(wo||(wo={}));const So={type:wo.BatchSwap,swaps:[],opRef:[],minOut:"0",assets:[],hasTokenIn:!1,hasTokenOut:!1,fromInternal:!1,toInternal:!1,limits:[],approveTokens:[],sender:"",receiver:""},Po=new t(ai);function _o(e,t){return e.some((e=>e.address.toLowerCase()===t.toLowerCase()))}function vo(e,t,a){return e!==N.SwapExactOut&&t.toLowerCase()!==i.toLowerCase()&&a.toLowerCase()!==i.toLowerCase()}function Oo(e,t){const a=t[e.assetOutIndex],n=ce(e.poolId);return a.toLowerCase()===n.toLowerCase()}function Bo(e,t){const a=t[e.assetInIndex],n=ce(e.poolId);return a.toLowerCase()===n.toLowerCase()}function ko(e,t,a){return t.some((t=>function(e,t,a){const n=e.find((e=>e.id===t.poolId));return"Weighted"===(null==n?void 0:n.poolType)&&[a[t.assetInIndex],a[t.assetOutIndex]].includes(n.address)}(e,t,a)))}function Do(e,t,a){let n={};var s;return e!==Io.TokenIn&&e!==Io.Middle||(s=a,n={index:t,key:js.toChainedReference(s)},a++),[n,a]}function No(e,t){return Ft(d.from(e),d.from(t)).toString()}function Co(e,t,a,n){let s=e.amount;return(a===Io.TokenOut||a===Io.Middle&&t===wo.Join||a===Io.Middle&&t===wo.Exit)&&(s=js.toChainedReference(n-1).toString()),s}function Fo(e,t,a,n){let s;return s=a===e&&n===t?Io.Direct:a===e?Io.TokenIn:n===t?Io.TokenOut:Io.Middle,s}function Ro(e,t){const a=function(e){const t=[],a=[],n=[];for(const s of e)s.type===wo.Exit||s.type===wo.Join?s.hasTokenIn?t.push(s):s.hasTokenOut?a.push(s):n.push(s):n.push(s);return[...t,...n,...a]}(e),n=function(e,t){const a=[];let n=g(So);n.assets=t,n.limits=Array(t.length).fill(d.from("0"));let s=!0,i={};for(const r of e)r.type===wo.Swap?(s&&(i=r,s=!1),r.isBptIn&&n.approveTokens.push(r.assets[r.swap.assetInIndex]),r.fromInternal===i.fromInternal&&r.toInternal===i.toInternal&&r.receiver===i.receiver&&r.sender===i.sender||n.swaps.length>0&&(a.push(n),n=g(So),n.assets=t,n.limits=Array(t.length).fill(d.from("0"))),n.swaps.push(r.swap),n.opRef.push(...r.opRef),n.fromInternal=r.fromInternal,n.toInternal=r.toInternal,n.sender=r.sender,n.receiver=r.receiver,r.hasTokenIn?(n.hasTokenIn=!0,n.limits[r.swap.assetInIndex]=n.limits[r.swap.assetInIndex].add(r.amountIn)):n.limits[r.swap.assetInIndex]=o,r.hasTokenOut&&(n.hasTokenOut=!0,n.limits[r.swap.assetOutIndex]=n.limits[r.swap.assetOutIndex].sub(r.minOut)),i=r):(n.swaps.length>0&&(a.push(n),n=g(So),n.assets=t,n.limits=Array(t.length).fill(d.from("0"))),a.push(r));return n.swaps.length>0&&a.push(n),a}(a,t);return n}function Mo(e,t,a,n,s,i,r,o){var d;const c=Fo(t,a,e.assetInIndex,e.assetOutIndex),l=Co(e,wo.Join,c,n),p=No(null!==(d=e.returnAmount)&&void 0!==d?d:"0",i),[u,y]=Do(c,e.assetOutIndex,n);let b=o,f=!0,m=!1;c!==Io.Direct&&c!==Io.TokenIn||(b=r,f=!1,m=!0);let h=o,T=!1;c!==Io.Direct&&c!==Io.TokenOut||(h=r,T=!0);return[{type:wo.Join,poolId:e.poolId,tokenIn:s[e.assetInIndex],bpt:s[e.assetOutIndex],opRef:u,minOut:p,amountIn:l,assets:s,actionStep:c,sender:b,receiver:h,fromInternal:f,hasTokenIn:m,hasTokenOut:T},y]}function Lo(e,t,a,n,s,i,r,o){var d;const c=Fo(t,a,e.assetInIndex,e.assetOutIndex),l=Co(e,wo.Exit,c,n),p=No(null!==(d=e.returnAmount)&&void 0!==d?d:"0",i),[u,y]=Do(c,e.assetOutIndex,n);let b=o,f=!1;c!==Io.Direct&&c!==Io.TokenIn||(b=r,f=!0);let m=!1,h=!0,T=o;c!==Io.Direct&&c!==Io.TokenOut||(T=r,h=!1,m=!0);return[{type:wo.Exit,poolId:e.poolId,tokenOut:s[e.assetOutIndex],bpt:s[e.assetInIndex],opRef:u.key?[u]:[],minOut:p,amountIn:l,assets:s,actionStep:c,sender:b,receiver:T,toInternal:h,hasTokenIn:f,hasTokenOut:m},y]}function Uo(e,t,a,n,s,i,r,o,d){var c;const l=Fo(t,a,e.assetInIndex,e.assetOutIndex),p=Co(e,wo.Swap,l,n);e.amount=p;const u=No(null!==(c=e.returnAmount)&&void 0!==c?c:"0",i),[y,b]=Do(l,e.assetOutIndex,n),f=l===Io.Direct||l===Io.TokenIn,m=l===Io.Direct||l===Io.TokenOut,h=_o(r,s[e.assetInIndex]);let T=!0;(f||h)&&(T=!1);let g,I,w=!0;(m||_o(r,s[e.assetOutIndex]))&&(w=!1),g=f?o:d,I=m?o:d;return[{type:wo.Swap,opRef:y.key?[y]:[],minOut:u,amountIn:p,assets:s,swap:e,hasTokenIn:f,hasTokenOut:m,fromInternal:T,toInternal:w,isBptIn:h,sender:g,receiver:I},b]}function Go(e,t,a){const n=e.tokensList,s=new we(a),[i]=s.sortTokens(n),r=t.tokenOut,o=i.findIndex((e=>e.toLowerCase()===r.toLowerCase())),d=Array(n.length).fill("0");d[o]=t.minOut;const c=t.amountIn,l={assets:i,minAmountsOut:d,userData:z.exitExactBPTInForOneTokenOut(c,o),toInternalBalance:t.toInternal,poolId:t.poolId,poolKind:0,sender:t.sender,recipient:t.receiver,outputReferences:t.opRef,exitPoolRequest:{}},p=js.constructExitCall(l),u=t.hasTokenOut?d[o]:"0";return[p,t.hasTokenIn?c:"0",u]}function $o(e,t,a){const n=e.tokensList,s=new we(a),[i]=s.sortTokens(n),r=t.tokenIn,o=i.findIndex((e=>e.toLowerCase()===r.toLowerCase())),d=Array(n.length).fill("0");d[o]=t.amountIn;const c=t.minOut,l=z.joinExactTokensInForBPTOut(d,c),p={poolId:t.poolId,sender:t.sender,recipient:t.receiver,kind:0,joinPoolRequest:{assets:i,maxAmountsIn:d,userData:l,fromInternalBalance:t.fromInternal},value:"0",outputReference:t.opRef.key?t.opRef.key.toString():"0"},u=js.encodeJoinPool(p),y=t.hasTokenOut?c:"0";return[u,t.hasTokenIn?d[o]:"0",y]}function qo(e,t,a){const n=[];for(const t of e.approveTokens){const e=js.encodeApproveVault(t,r.toString());n.push(e)}const s={sender:e.sender,recipient:e.receiver,fromInternalBalance:e.fromInternal,toInternalBalance:e.toInternal},i={swapType:kt.SwapExactIn,swaps:e.swaps,assets:e.assets,funds:s,limits:e.limits.map((e=>e.toString())),deadline:d.from(Math.ceil(Date.now()/1e3)+3600),value:"0",outputReferences:e.opRef},o=js.encodeBatchSwap(i);n.push(o);const c=e.assets.findIndex((e=>e.toLowerCase()===t.toLowerCase())),l=e.assets.findIndex((e=>e.toLowerCase()===a.toLowerCase()));return[n,e.hasTokenIn?e.limits[c].toString():"0",e.hasTokenOut?e.limits[l].abs().toString():"0"]}function Wo(e,t,a,n,s,i,r){const o=function(e,t,a,n,s,i,r,o){const d=n.findIndex((t=>t.toLowerCase()===e.toLowerCase())),c=n.findIndex((e=>e.toLowerCase()===t.toLowerCase())),l=[];let p=0,u={};for(const e of a)if(Oo(e,n)){const[t,a]=Mo(e,d,c,p,n,s,r,o);p=a,l.push(t),u=t}else{if(!Bo(e,n)){const t=e.amount,[a,y]=Uo(e,d,c,p,n,s,i,r,o);u.type===wo.Swap&&"0"===t&&(u.receiver=u.sender,u.toInternal=u.fromInternal,u.opRef=[],a.sender=u.receiver,a.fromInternal=u.fromInternal,a.amountIn="0",a.swap.amount="0"),p=y,l.push(a),u=a;continue}{const[t,a]=Lo(e,d,c,p,n,s,r,o);p=a,l.push(t),u=t}}return l}(e.tokenIn,e.tokenOut,e.swaps,e.tokenAddresses,i,t,a,n),c=Ro(o,e.tokenAddresses),l=[],p=[],u=[];r&&l.push(function(e,t){return js.encodeSetRelayerApproval(t,!0,e)}(r,n));for(const a of c){if(a.type===wo.Exit){const e=t.find((e=>e.id===a.poolId));if(void 0===e)throw new $t(Gt.NO_POOL_DATA);const[n,i,r]=Go(e,a,s);l.push(n),p.push(d.from(i)),u.push(d.from(r))}if(a.type===wo.Join){const e=t.find((e=>e.id===a.poolId));if(void 0===e)throw new $t(Gt.NO_POOL_DATA);const[n,i,r]=$o(e,a,s);l.push(n),p.push(d.from(i)),u.push(d.from(r))}if(a.type===wo.BatchSwap){const[t,n,s]=qo(a,e.tokenIn,e.tokenOut);l.push(...t),p.push(d.from(n)),u.push(d.from(s))}}!function(e,t,a,n){const s=e.reduce(((e=d.from(0),t)=>e.add(t))),i=t.reduce(((e=d.from(0),t)=>e.add(t))),r=i.sub(Ft(a.returnAmount,d.from(n)));if(!s.eq(a.swapAmount)||!r.lt("3"))throw new $t(Gt.RELAY_SWAP_AMOUNTS)}(p,u,e,i);return{to:n,data:Po.encodeFunctionData("multicall",[l]),rawCalls:l}}export{ye as APR_THRESHOLD,ge as AaveHelpers,kr as AaveRates,we as AssetHelpers,vt as BalancerAPIArgsFormatter,$t as BalancerError,Gt as BalancerErrorCode,xe as BalancerErrors,_e as BalancerMinterAuthorization,Ao as BalancerSDK,go as BlockNumberRepository,Pr as CoingeckoHistoricalPriceRepository,Sr as CoingeckoPriceRepository,se as ComposableStablePoolEncoder,ne as ComposableStablePoolExitKind,ae as ComposableStablePoolJoinKind,xo as Data,It as Debouncer,Ur as FeeCollectorRepository,Fr as FeeDistributorRepository,nr as GaugeControllerMulticallRepository,We as GaugeShareAttributes,or as GaugeSharesRepository,Bt as GraphQLArgsBuilder,Or as HistoricalPriceProvider,Pa as Liquidity,ur as LiquidityGaugeSubgraphRPCProvider,cr as LiquidityGaugesMulticallRepository,lr as LiquidityGaugesSubgraphRepository,Q as ManagedPoolEncoder,ue as Network,he as POOLS,je as PoolBalanceOpKind,$e as PoolGaugesAttributes,gr as PoolGaugesRepository,Ir as PoolJoinExitAttributes,wr as PoolJoinExitRepository,qe as PoolShareAttributes,Er as PoolSharesRepository,Ve as PoolSpecialization,Xe as PoolType,tr as Pools,br as PoolsBalancerAPIRepository,fr as PoolsFallbackRepository,mr as PoolsStaticRepository,Tr as PoolsSubgraphOnChainRepository,hr as PoolsSubgraphRepository,qr as ProtocolFeesProvider,js as Relayer,Se as RelayerAction,Pe as RelayerAuthorization,be as SHALLOW_COMPOSABLE_STABLE_BUFFER,Os as Sor,X as StablePhantomPoolJoinKind,Z as StablePoolEncoder,K as StablePoolExitKind,j as StablePoolJoinKind,Ar as StaticTokenPriceProvider,xr as StaticTokenProvider,Xs as Subgraph,Ot as SubgraphArgsFormatter,_r as SubgraphPriceRepository,kt as SwapType,Vs as Swaps,vr as TokenPriceProvider,mo as TokenYieldsRepository,He as UserBalanceOpKind,z as WeightedPoolEncoder,J as WeightedPoolExitKind,Y as WeightedPoolJoinKind,Ae as accountToAddress,Tt as addressMapIn,Ni as balEmissions,St as bn,Wo as buildRelayerCalls,vo as canUseJoinExit,Et as formatFixed,At as formatFromBigInt18,Dt as getLimitsForSlippage,ce as getPoolAddress,pe as getPoolNonce,le as getPoolSpecialization,_t as insert,te as isNormalizedWeights,Pt as isSameAddress,wt as parseFixed,Le as parsePoolInfo,xt as parseToBigInt18,ve as signPermit,ko as someJoinExit,de as splitPoolId,ee as toNormalizedWeights,ht as tokenAddressForPricing,mt as tokensToTokenPrices,gt as unwrapToken};
|
|
489
489
|
//# sourceMappingURL=index.esm.js.map
|