@berachain/berajs 0.2.0 → 0.2.2
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/{transactionStore-BvStaXf3.d.ts → BexStatusProvider-nS3NcdxI.d.cts} +1 -41
- package/dist/{transactionStore-CQrGYSY2.d.cts → BexStatusProvider-nS3NcdxI.d.ts} +1 -41
- package/dist/abi/exports.cjs.map +1 -1
- package/dist/actions/exports.cjs +1 -1
- package/dist/actions/exports.cjs.map +1 -1
- package/dist/actions/exports.d.cts +4 -5
- package/dist/actions/exports.d.ts +4 -5
- package/dist/actions/exports.mjs +1 -1
- package/dist/{chunk-OS5AJMYJ.cjs → chunk-22J3YJDN.cjs} +2 -2
- package/dist/chunk-22J3YJDN.cjs.map +1 -0
- package/dist/{chunk-MTS5SZLA.mjs → chunk-2LL3P5PN.mjs} +2 -2
- package/dist/chunk-3YXSUBA5.mjs +2 -0
- package/dist/{chunk-H2QSRMVS.mjs.map → chunk-3YXSUBA5.mjs.map} +1 -1
- package/dist/chunk-55L7STYD.mjs +2 -0
- package/dist/chunk-55L7STYD.mjs.map +1 -0
- package/dist/{chunk-BOYZVULX.cjs → chunk-6LDOG5RL.cjs} +2 -2
- package/dist/chunk-6LDOG5RL.cjs.map +1 -0
- package/dist/{chunk-UQUWMHVF.cjs → chunk-7LNBSOVV.cjs} +2 -2
- package/dist/chunk-7LNBSOVV.cjs.map +1 -0
- package/dist/{chunk-ZQRACIGR.mjs → chunk-7SMWQ6SN.mjs} +2 -2
- package/dist/{chunk-7GWTHOLO.mjs → chunk-7WRTK7RJ.mjs} +2 -2
- package/dist/chunk-A4UDYSB6.mjs +4 -0
- package/dist/chunk-A4UDYSB6.mjs.map +1 -0
- package/dist/chunk-AX2YQQFQ.mjs +2 -0
- package/dist/chunk-AX2YQQFQ.mjs.map +1 -0
- package/dist/chunk-C6ZGUO4H.cjs +2 -0
- package/dist/chunk-C6ZGUO4H.cjs.map +1 -0
- package/dist/chunk-CYKCYPFR.cjs.map +1 -1
- package/dist/chunk-ECRMUMTA.mjs +2 -0
- package/dist/chunk-ECRMUMTA.mjs.map +1 -0
- package/dist/{chunk-ZAKA4TGK.cjs → chunk-FCWDGE62.cjs} +2 -2
- package/dist/chunk-FCWDGE62.cjs.map +1 -0
- package/dist/chunk-FL2N3XHK.cjs.map +1 -1
- package/dist/chunk-MUCEYO3E.cjs +4 -0
- package/dist/chunk-MUCEYO3E.cjs.map +1 -0
- package/dist/chunk-OIYXOKTT.cjs.map +1 -1
- package/dist/chunk-P2Q7CMUD.cjs +2 -0
- package/dist/chunk-P2Q7CMUD.cjs.map +1 -0
- package/dist/chunk-PKXAW6MO.cjs +2 -0
- package/dist/chunk-PKXAW6MO.cjs.map +1 -0
- package/dist/chunk-SWMJQOH6.cjs.map +1 -1
- package/dist/{chunk-YQGZMWDT.mjs → chunk-THATXCJK.mjs} +2 -2
- package/dist/chunk-VP7XUOSI.cjs.map +1 -1
- package/dist/chunk-VXL2ZZ4X.cjs.map +1 -1
- package/dist/chunk-WRFDB3QJ.cjs.map +1 -1
- package/dist/chunk-XNJLSA6P.cjs.map +1 -1
- package/dist/chunk-YZV5LKIP.cjs +2 -0
- package/dist/chunk-YZV5LKIP.cjs.map +1 -0
- package/dist/contexts/exports.cjs +1 -1
- package/dist/contexts/exports.cjs.map +1 -1
- package/dist/contexts/exports.d.cts +2 -10
- package/dist/contexts/exports.d.ts +2 -10
- package/dist/contexts/exports.mjs +1 -1
- package/dist/contexts/exports.mjs.map +1 -1
- package/dist/enum/exports.cjs.map +1 -1
- package/dist/enum/exports.d.cts +1 -2
- package/dist/enum/exports.d.ts +1 -2
- package/dist/errors/exports.cjs +1 -1
- package/dist/errors/exports.cjs.map +1 -1
- package/dist/errors/exports.d.cts +25 -2
- package/dist/errors/exports.d.ts +25 -2
- package/dist/errors/exports.mjs +1 -1
- package/dist/{getValidatorQueuedOperatorAddress-It0GsdvQ.d.cts → getValidatorQueuedOperatorAddress-Dstyaomr.d.cts} +1 -1
- package/dist/{getValidatorQueuedOperatorAddress-BX35p2Lv.d.ts → getValidatorQueuedOperatorAddress-RW4OMcD1.d.ts} +1 -1
- package/dist/{global.d-Ba-NIojH.d.cts → global.d-CN6l2b9E.d.cts} +1 -2
- package/dist/{global.d-By70bEv2.d.ts → global.d-wYu8G8IQ.d.ts} +1 -2
- package/dist/hooks/exports.cjs +2 -2
- package/dist/hooks/exports.cjs.map +1 -1
- package/dist/hooks/exports.d.cts +7 -15
- package/dist/hooks/exports.d.ts +7 -15
- package/dist/hooks/exports.mjs +3 -3
- package/dist/hooks/exports.mjs.map +1 -1
- package/dist/{txnEnum-BYNbCxla.d.ts → txnEnum-BlBYhNRl.d.cts} +74 -1
- package/dist/{txnEnum-BYNbCxla.d.cts → txnEnum-BlBYhNRl.d.ts} +74 -1
- package/dist/types/exports.cjs.map +1 -1
- package/dist/types/exports.d.cts +2 -3
- package/dist/types/exports.d.ts +2 -3
- package/dist/utils/exports.cjs +1 -1
- package/dist/utils/exports.cjs.map +1 -1
- package/dist/utils/exports.mjs +1 -1
- package/dist/utils/exports.mjs.map +1 -1
- package/package.json +3 -3
- package/src/actions/dex/aggregators/haiku.ts +1 -1
- package/src/actions/dex/aggregators/oogabooga.ts +1 -1
- package/src/actions/pol/getEarnedStakedBeraVault.ts +1 -1
- package/src/actions/pol/getStakingDailyAssets.ts +4 -1
- package/src/actions/tokens/getWalletBalances.integration.test.ts +1 -1
- package/src/contexts/exports.ts +0 -1
- package/src/data/contracts.ts +1 -1
- package/src/errors/BeraError.ts +11 -2
- package/src/errors/RequestError.ts +27 -1
- package/src/errors/errorMap.ts +7 -6
- package/src/errors/getErrorMessage.ts +59 -20
- package/src/errors/getRevertReason.integration.test.ts +1 -1
- package/src/hooks/exports.ts +0 -4
- package/src/hooks/pol/useStakedData.ts +1 -1
- package/dist/chunk-7SC4VD3U.cjs +0 -2
- package/dist/chunk-7SC4VD3U.cjs.map +0 -1
- package/dist/chunk-BHNQX4XC.mjs +0 -2
- package/dist/chunk-BHNQX4XC.mjs.map +0 -1
- package/dist/chunk-BOYZVULX.cjs.map +0 -1
- package/dist/chunk-C3G5KXCH.mjs +0 -2
- package/dist/chunk-C3G5KXCH.mjs.map +0 -1
- package/dist/chunk-G6NA6NSM.mjs +0 -4
- package/dist/chunk-G6NA6NSM.mjs.map +0 -1
- package/dist/chunk-H2QSRMVS.mjs +0 -2
- package/dist/chunk-IJM76AWK.cjs +0 -4
- package/dist/chunk-IJM76AWK.cjs.map +0 -1
- package/dist/chunk-MUNAP5TM.cjs +0 -2
- package/dist/chunk-MUNAP5TM.cjs.map +0 -1
- package/dist/chunk-OS5AJMYJ.cjs.map +0 -1
- package/dist/chunk-TJWKS54T.mjs +0 -2
- package/dist/chunk-TJWKS54T.mjs.map +0 -1
- package/dist/chunk-UQUWMHVF.cjs.map +0 -1
- package/dist/chunk-UXUWSRVV.cjs +0 -2
- package/dist/chunk-UXUWSRVV.cjs.map +0 -1
- package/dist/chunk-WTCBORPB.cjs +0 -2
- package/dist/chunk-WTCBORPB.cjs.map +0 -1
- package/dist/chunk-ZAKA4TGK.cjs.map +0 -1
- package/dist/contracts-CQIPk0Jc.d.cts +0 -74
- package/dist/contracts-CQIPk0Jc.d.ts +0 -74
- package/src/contexts/TransactionStoreContext.tsx +0 -87
- package/src/hooks/transactions/transactionStore.ts +0 -296
- package/src/hooks/transactions/transactionStore.unit.test.ts +0 -561
- package/src/hooks/transactions/useAddRecentTransaction.ts +0 -29
- package/src/hooks/transactions/useRecentTransactions.ts +0 -27
- package/src/hooks/transactions/useSetTransactionStatus.ts +0 -31
- /package/dist/{chunk-MTS5SZLA.mjs.map → chunk-2LL3P5PN.mjs.map} +0 -0
- /package/dist/{chunk-ZQRACIGR.mjs.map → chunk-7SMWQ6SN.mjs.map} +0 -0
- /package/dist/{chunk-7GWTHOLO.mjs.map → chunk-7WRTK7RJ.mjs.map} +0 -0
- /package/dist/{chunk-YQGZMWDT.mjs.map → chunk-THATXCJK.mjs.map} +0 -0
package/dist/chunk-H2QSRMVS.mjs
DELETED
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
import{c as T,e as a}from"./chunk-YQGZMWDT.mjs";function m(e){return{...e,...a(e,"BERA")&&T}}function d(e){return e.map(r=>m(r))}import s from"@berachain/utils/pkg/bignumber.js";var g=(e,r,i,o)=>{if(!e||!r||!i||!o)return 0;let t=new s(e).times(i),n=new s(r).times(o);if(t.lt(.01)||n.lt(.01)||t.isZero()||n.isZero())return 0;let u=n.div(t);return Number(new s(1).minus(u).toFixed())};export{m as a,d as b,g as c};
|
|
2
|
-
//# sourceMappingURL=chunk-H2QSRMVS.mjs.map
|
package/dist/chunk-IJM76AWK.cjs
DELETED
|
@@ -1,4 +0,0 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports, "__esModule", {value: true}); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } function _nullishCoalesce(lhs, rhsFn) { if (lhs != null) { return lhs; } else { return rhsFn(); } } async function _asyncNullishCoalesce(lhs, rhsFn) { if (lhs != null) { return lhs; } else { return await rhsFn(); } } function _optionalChain(ops) { let lastAccessLHS = undefined; let value = ops[0]; let i = 1; while (i < ops.length) { const op = ops[i]; const fn = ops[i + 1]; i += 2; if ((op === 'optionalAccess' || op === 'optionalCall') && value == null) { return undefined; } if (op === 'access' || op === 'optionalAccess') { lastAccessLHS = value; value = fn(value); } else if (op === 'call' || op === 'optionalCall') { value = fn((...args) => value.call(lastAccessLHS, ...args)); lastAccessLHS = undefined; } } return value; } async function _asyncOptionalChain(ops) { let lastAccessLHS = undefined; let value = ops[0]; let i = 1; while (i < ops.length) { const op = ops[i]; const fn = ops[i + 1]; i += 2; if ((op === 'optionalAccess' || op === 'optionalCall') && value == null) { return undefined; } if (op === 'access' || op === 'optionalAccess') { lastAccessLHS = value; value = await fn(value); } else if (op === 'call' || op === 'optionalCall') { value = await fn((...args) => value.call(lastAccessLHS, ...args)); lastAccessLHS = undefined; } } return value; } var _class;var _chunkVP7XUOSIcjs = require('./chunk-VP7XUOSI.cjs');var _chunkBOYZVULXcjs = require('./chunk-BOYZVULX.cjs');var _chunkUQUWMHVFcjs = require('./chunk-UQUWMHVF.cjs');var _chunkMUNAP5TMcjs = require('./chunk-MUNAP5TM.cjs');var _chunkOS5AJMYJcjs = require('./chunk-OS5AJMYJ.cjs');var _chunk7SC4VD3Ucjs = require('./chunk-7SC4VD3U.cjs');var _viem = require('viem');async function Oa({sharesAmount:e,vaultAddress:t,publicClient:r}){let a=await r.readContract({address:t,abi:_chunkVP7XUOSIcjs.a,functionName:"convertToAssets",args:[e]});return{raw:a,formatted:_viem.formatEther.call(void 0, a)}}var _client = require('@apollo/client');var _internal = require('@berachain/config/internal');var Ae=class extends _client.ApolloClient{constructor(t){super(t),this.url=t.url}async query(t){let r=Lt(t.query),a={url:this.url,type:"graphql"},o={"operation.type":"query","operation.source.url":a.url,"operation.source.type":a.type,"operation.source.queryName":r};try{let i=()=>super.query(t),l=await _chunkBOYZVULXcjs.a.startSpan({name:`GraphQL ${r}`,op:"BeraApolloClient.query",attributes:o},i);if(l.error||l.data===void 0)throw new (0, _chunk7SC4VD3Ucjs.e)({level:"fatal",tags:o,message:"Bera Apollo Client: No data returned from query, but error should be thrown since errorPolicy is none"});return{data:l.data}}catch(i){throw!_internal.appConfig.env.isProduction&&console.error("BeraApolloClient error",i),_client.ServerError.is(i)?new (0, _chunk7SC4VD3Ucjs.f)({response:i.response,cause:i,statusCode:i.statusCode,endpoint:a,tags:o}):i instanceof TypeError?new (0, _chunk7SC4VD3Ucjs.f)({level:"fatal",reason:"TypeError",response:i,cause:i,endpoint:a,tags:o}):new (0, _chunk7SC4VD3Ucjs.f)({response:i,tags:o,cause:i,endpoint:a})}}};function Lt(e){return _optionalChain([e, 'access', _2 => _2.definitions, 'access', _3 => _3.find, 'call', _4 => _4(r=>r.kind==="OperationDefinition"), 'optionalAccess', _5 => _5.name, 'optionalAccess', _6 => _6.value])}var _http = require('@apollo/client/link/http');var _config = require('@berachain/config');var _api = require('@berachain/graphql/dex/api'); var _api2 = _interopRequireDefault(_api);function _t(e){if(!_internal.currentDapp)return e;let t=typeof e=="string"?void 0:e.headers;return{uri:_config.getUriFromLink.call(void 0, e),headers:{...t,"x-graphql-client-name":`berachain.${_internal.currentDapp}.${process.env.NEXT_RUNTIME||"browser"}`,"x-graphql-client-version":`${process.env.VERCEL_TARGET_ENV}.${process.env.VERCEL_GIT_COMMIT_SHA}`}}}function Y(e,{ssrMode:t,inMemoryCacheOptions:r}={}){let a=_config.getUriFromLink.call(void 0, e),o=typeof e=="string"?void 0:e.headers;return new Ae({url:a,link:new (0, _http.HttpLink)({uri:a,headers:o}),defaultOptions:{query:{errorPolicy:"none",fetchPolicy:"no-cache"}},cache:new (0, _client.InMemoryCache)(r),ssrMode:t})}function g(e,{...t}){let{config:r}=_chunkOS5AJMYJcjs.a.call(void 0, t);switch(e){case"api":return Y(_t(r.api),{inMemoryCacheOptions:{possibleTypes:_api2.default.possibleTypes}});case"bend.whisk":if(!r.bend.whiskApi)throw new (0, _chunk7SC4VD3Ucjs.e)({message:"Bend whisk API is not configured on this chain",level:"error"});return Y(r.bend.whiskApi);case"honey.subgraph":return Y(r.honey.subgraph);case"pol.subgraph":return Y(r.pol.subgraph);case"governance.subgraph":return Y(r.governance.subgraph);case"blocks.subgraph":return Y(r.blocksSubgraph);case"bex.subgraph":return Y(r.bex.subgraph)}}var _bignumberjs = require('@berachain/utils/pkg/bignumber.js'); var _bignumberjs2 = _interopRequireDefault(_bignumberjs);var rt= (_class =class e{static __initStatic() {this.PATH_NOT_FOUND_REASON="NO_SWAP_PATHS"}__init() {this.needsAccountForQuote=!1}__init2() {this.notFoundMessages=[]}constructor(t={}){;_class.prototype.__init.call(this);_class.prototype.__init2.call(this);_class.prototype.__init3.call(this);let{config:r,chainId:a}=_chunkOS5AJMYJcjs.a.call(void 0, t);this.config=r,this.chainId=a}__init3() {this.url=""}parseAddresses(t,r){if(!_viem.isAddress.call(void 0, t)||!_viem.isAddress.call(void 0, r))throw new (0, _chunk7SC4VD3Ucjs.e)({message:`Invalid address: ${t} or ${r}`,level:"error"});return{tokenInAddress:_chunkOS5AJMYJcjs.e.call(void 0, t,"BERA")?this.config.tokens.wbera:t,tokenOutAddress:_chunkOS5AJMYJcjs.e.call(void 0, r,"BERA")?this.config.tokens.wbera:r,isTokenInNative:_chunkOS5AJMYJcjs.e.call(void 0, t,"BERA"),isTokenOutNative:_chunkOS5AJMYJcjs.e.call(void 0, r,"BERA")}}getAmountAfterFees(t,r){if(r===void 0)throw new (0, _chunk7SC4VD3Ucjs.e)({message:"aggregatorsFeeBps is required",level:"error"});let a=new (0, _bignumberjs2.default)(t).times(r).dividedBy(1e4).toFixed(0,_bignumberjs2.default.ROUND_DOWN);return new (0, _bignumberjs2.default)(t).minus(a).toFixed(0,_bignumberjs2.default.ROUND_DOWN)}getInputData({tokenIn:t,amountIn:r,isNative:a,isPermit2Approval:o=!1,permit2SpenderAddress:i}){return{tokenIn:t,amountIn:BigInt(r),isNative:a,isPermit2Approval:o,permit2SpenderAddress:_nullishCoalesce(i, () => (_viem.zeroAddress))}}getMinAmountOut(t,r){if(r===void 0)throw new (0, _chunk7SC4VD3Ucjs.e)({message:"slippage is required",level:"error"});let a=new (0, _bignumberjs2.default)(t).times(1-r/100);return a.isNaN()||a.isZero()?0n:BigInt(a.toFixed(0))}parseAllowanceRequirements({tokenIn:t,rawAmount:r,spender:a}){return _chunkOS5AJMYJcjs.e.call(void 0, t,"BERA")?[]:[{token:t,amount:{raw:r,formatted:_viem.formatUnits.call(void 0, BigInt(r),t.decimals)},spender:a}]}checkChainSupport({tokenIn:t,tokenOut:r}){return this.supportedChains===null?!0:this.supportedChains.includes(t.chainId)&&this.supportedChains.includes(r.chainId)}assertChainSupport({tokenIn:t,tokenOut:r,underlyingToken:a}){if(!this.checkChainSupport({tokenIn:t,tokenOut:r,underlyingToken:a}))throw new (0, _chunk7SC4VD3Ucjs.e)({message:`${this.name} does not support tokens chain ID: ${t.chainId} and ${r.chainId}`,level:"error"})}async fetch(t,r){try{return await _chunkMUNAP5TMcjs.b.call(void 0, {url:t,name:this.name,type:this.type},{method:"GET",headers:{"Content-Type":"application/json"},...r})}catch(a){let o=_chunkUQUWMHVFcjs.a.call(void 0, {cause:a});throw this.notFoundMessages.some(i=>o.message.includes(i))&&(o.reason=e.PATH_NOT_FOUND_REASON),o}}}, _class.__initStatic(), _class);var _berancersdk = require('@berachain-foundation/berancer-sdk');var _chains = require('viem/chains');for(let e of Object.keys(_internal.chainConfigs)){let{config:t,chainId:r}=_chunkOS5AJMYJcjs.a.call(void 0, {chainId:Number(e)});_berancersdk.API_CHAIN_NAMES[r]=t.bex.chainName,_berancersdk.CHAINS[r]=r===_chains.berachain.id?_chains.berachain:_chains.berachainBepolia,_berancersdk.BALANCER_RELAYER[r]=t.bex.relayer,_berancersdk.VAULT[r]=t.bex.vault,_berancersdk.BALANCER_QUERIES[r]=t.bex.queries,_berancersdk.WEIGHTED_POOL_FACTORY_BALANCER_V2[r]=_viem.zeroAddress,_berancersdk.COMPOSABLE_STABLE_POOL_FACTORY[r]=_viem.zeroAddress;let a=new (0, _berancersdk.Token)(r,_viem.zeroAddress,_chunkOS5AJMYJcjs.b.decimals,_chunkOS5AJMYJcjs.b.name,_chunkOS5AJMYJcjs.b.symbol,t.tokens.wbera);_berancersdk.NATIVE_ASSETS[r]=a}var _api3 = require('@berachain/graphql/pol/api');async function ko({textSearch:e,chain:t,first:r,orderBy:a,orderDirection:o,skip:i,fetchPolicy:l,userAddress:n,blacklistedPoolIds:s,...d}={}){let{config:u}=_chunkOS5AJMYJcjs.a.call(void 0, d),f=await g("api",d).query({query:_api.GetPools,variables:{textSearch:e,chain:_nullishCoalesce(t, () => (u.bex.chainName)),first:r,orderBy:_nullishCoalesce(a, () => (_api3.GqlPoolOrderBy.TotalLiquidity)),orderDirection:_nullishCoalesce(o, () => (_api3.GqlPoolOrderDirection.Desc)),skip:i,userAddress:n,blacklistedPoolIds:s},fetchPolicy:l});return{pools:_nullishCoalesce(f.data.poolGetPools, () => ([])),count:_nullishCoalesce(f.data.count, () => (0))}}async function Eo({poolId:e,account:t,...r}){let{config:a}=_chunkOS5AJMYJcjs.a.call(void 0, r),l=(await g("api",r).query({query:_api.GetPool,variables:{id:e,userAddress:t,chain:a.bex.chainName},fetchPolicy:"no-cache"})).data.poolGetPool;if(!l)throw new Error(`Pool not found for id: ${e} and user ${t}`);return l}async function Qo(e={}){let{config:t}=_chunkOS5AJMYJcjs.a.call(void 0, e);return(await g("api",e).query({query:_api.GetGlobalLiquidityAndSwapVolume,variables:{chain:t.bex.chainName}})).data}async function ot({publicClient:e,poolAddress:t}){let r=_berancersdk.weightedPoolV4Abi_V2,a=await e.multicall({contracts:[{address:t,abi:r,functionName:"inRecoveryMode"},{address:t,abi:r,functionName:"getPausedState"}],allowFailure:!1});return{isPoolInRecoveryMode:a[0],isPoolPaused:a[1][0]}}async function Ko({poolId:e,publicClient:t,...r}){let{config:a}=_chunkOS5AJMYJcjs.a.call(void 0, r),o=e.slice(0,42);if(!_viem.isAddress.call(void 0, o)||!_viem.isHex.call(void 0, e))throw new (0, _chunk7SC4VD3Ucjs.g)({property:"poolId",value:e,expected:"Hex"});try{let[i,l,n,s,d,u,m,f,b]=await Promise.all([t.readContract({address:o,abi:_viem.erc20Abi,functionName:"name"}),t.readContract({address:a.bex.vault,abi:_berancersdk.vaultV2Abi,functionName:"getPoolTokens",args:[e]}),t.readContract({address:o,abi:_viem.erc20Abi,functionName:"totalSupply"}),t.readContract({address:o,abi:_berancersdk.weightedPoolV4Abi_V2,functionName:"getSwapFeePercentage"}),t.readContract({address:o,abi:_berancersdk.weightedPoolV4Abi_V2,functionName:"version"}),t.readContract({address:o,abi:_berancersdk.weightedPoolV4Abi_V2,functionName:"decimals"}),t.readContract({address:a.bex.factories.composableStable,abi:_berancersdk.weightedPoolFactoryAbi_V3,functionName:"isPoolFromFactory",args:[o]}),t.readContract({address:a.bex.factories.weighted,abi:_berancersdk.weightedPoolFactoryAbi_V3,functionName:"isPoolFromFactory",args:[o]}),ot({publicClient:t,poolAddress:o})]),p=Number(u),A=JSON.parse(d),C,V,y;if(m?[C,y]=await Promise.all([t.readContract({address:o,abi:[{type:"function",name:"getActualSupply",stateMutability:"view",inputs:[],outputs:[{type:"uint256"}]}],functionName:"getActualSupply"}),t.readContract({address:o,abi:_berancersdk.stablePoolAbi_V3,functionName:"getAmplificationParameter"})]):A.name==="WeightedPool"&&(V=await t.readContract({address:o,abi:_berancersdk.weightedPoolV4Abi_V2,functionName:"getNormalizedWeights"})),!m&&!f)throw new Error(`Pool ${o} is not a valid BEX pool`);return{name:i,address:o,id:e,poolTokens:[l[0],l[1].map(String),Number(l[2])],totalSupply:_viem.formatUnits.call(void 0, _nullishCoalesce(C, () => (n)),p),swapFee:_viem.formatEther.call(void 0, s),decimals:p,weights:_optionalChain([V, 'optionalAccess', _7 => _7.map, 'call', _8 => _8(I=>_viem.formatEther.call(void 0, I))]),version:A,factory:m?a.bex.factories.composableStable:a.bex.factories.weighted,type:m?_api3.GqlPoolType.Stable:_api3.GqlPoolType.Weighted,amplificationParameter:y?[Number(y[0]),y[1],Number(y[2])]:void 0,pausedState:b}}catch(i){throw _chunkUQUWMHVFcjs.a.call(void 0, {cause:i})}}async function en({poolId:e,typeInArray:t,...r}){let{config:a}=_chunkOS5AJMYJcjs.a.call(void 0, r);return(await g("api",r).query({query:_api.GetPoolEvents,variables:{poolId:e,typeIn:t,chain:a.bex.chainName}})).data}async function sn({poolId:e,chain:t,...r}){if(!e||!_viem.isHex.call(void 0, e))throw new (0, _chunk7SC4VD3Ucjs.g)({property:"poolId",value:e,expected:"hex string"});let a=g("api",r),{data:o}=await a.query({query:_api.GetPoolHistoricalData,variables:{poolId:e,chain:t}});return o.poolGetSnapshots}var _subgraph = require('@berachain/graphql/dex/subgraph');async function mn({poolId:e,...t}){if(!_viem.isHex.call(void 0, e))throw new Error("poolId is not a valid hex string");return(await g("bex.subgraph",t).query({query:_subgraph.GetSubgraphPool,variables:{id:e}})).data.pool}var ae=({fieldOrType:e,value:t,required:r=!0,baseUrl:a,components:o})=>{if(!["bool","string"].includes(e)&&r&&(t==null||t===""))return"Required";if(e.startsWith("uint")||e.startsWith("int")){if(typeof t!="string")return"Invalid amount";try{let l=BigInt(t);if(e.startsWith("uint")&&l<0n)return"Negative amount"}catch (e2){return"Invalid amount"}return null}switch(e){case"string":return t!==void 0&&typeof t!="string"?"Invalid amount":null;case"bool":return typeof t!="boolean"?"Invalid amount":null;case"title":return t.length===0?"Required":null;case"description":return t.length===0?"Required":null;case"forumLink":if(t.length===0)return"Required";if(!URL.canParse(t))return"Invalid address";let l=new URL(a);return t.startsWith(l.toString())?null:"Must be a berachain forum link";case"address":return _viem.isAddress.call(void 0, t,{strict:!0})?null:"Invalid address";case"hex":return _viem.isHex.call(void 0, t,{strict:!0})?null:"Invalid address";case"abi":try{JSON.parse(t)}catch (e3){return"Invalid ABI"}return null;case"action":return _viem.isAddress.call(void 0, t,{strict:!0})?null:"Invalid address";case"tuple":if(typeof t=="object"&&Array.isArray(o)){let n={};for(let s of o)n[s.name]=ae({fieldOrType:s.type,value:t[s.name],components:s.components});return Object.values(n).every(s=>s===null)?null:n}return null;case"tuple[]":if(Array.isArray(t)){let n=t.map(s=>ae({fieldOrType:"tuple",value:s,components:o}));return n.every(s=>s===null)?null:n}return null;case"logoURI":return t===void 0||t===""||URL.canParse(t)&&new URL(t).protocol==="https:"?null:"Must be HTTPS or IPFS";case"url":return t===void 0||t===""||URL.canParse(t)&&new URL(t).protocol==="https:"?null:"Must be HTTPS";default:return console.error(`Invalid field or type: ${e}`),null}};var _governance = require('@berachain/graphql/governance');var Pr=!1,yn= exports.p =[_governance.ProposalStatus.Active,_governance.ProposalStatus.PendingQueue,_governance.ProposalStatus.PendingExecution,_governance.ProposalStatus.Defeated,_governance.ProposalStatus.QuorumNotReached];function we(e,t){let r=Date.now()/1e3;if(t!==void 0){if(e.status===_governance.ProposalStatus.CanceledByGuardian)return _governance.ProposalStatus.CanceledByGuardian;if(t===2)return Number(e.voteStartAt)<r?_governance.ProposalStatus.CanceledByUser:_governance.ProposalStatus.CanceledByGuardian;if(t===3)return e.pollResult?!e.quorum||BigInt(e.quorum)>BigInt(e.pollResult.totalTowardsQuorum)?_governance.ProposalStatus.QuorumNotReached:_governance.ProposalStatus.Defeated:_governance.ProposalStatus.QuorumNotReached;if(t===4)return _governance.ProposalStatus.PendingQueue;if(t===5)return Number(e.queueEnd)<Date.now()/1e3?_governance.ProposalStatus.PendingExecution:_governance.ProposalStatus.InQueue;if(t===6)return console.warn("Unexpected expired state on proposal id: ",e.id),_governance.ProposalStatus.Defeated}return e.status===_governance.ProposalStatus.InQueue&&Number(e.queueEnd)<Date.now()/1e3?_governance.ProposalStatus.PendingExecution:Pr&&t===1&&e.quorum&&BigInt(e.quorum)<BigInt(e.pollResult.totalTowardsQuorum)&&Number(e.pollResult.forPercentage)>Number(e.pollResult.againstPercentage)?_governance.ProposalStatus.PendingQueue:e.status===_governance.ProposalStatus.Pending?Number(e.voteStartAt)<r&&Number(e.voteEndAt)>r?_governance.ProposalStatus.Active:Number(e.voteEndAt)<r?e.pollResult?!e.quorum||BigInt(e.quorum)>BigInt(e.pollResult.totalTowardsQuorum)?_governance.ProposalStatus.QuorumNotReached:_optionalChain([e, 'access', _9 => _9.pollResult, 'optionalAccess', _10 => _10.against])>_optionalChain([e, 'access', _11 => _11.pollResult, 'optionalAccess', _12 => _12.for])?_governance.ProposalStatus.Defeated:_governance.ProposalStatus.PendingQueue:_governance.ProposalStatus.QuorumNotReached:_governance.ProposalStatus.Pending:e.status===_governance.ProposalStatus.Active&&Number(e.voteEndAt)<r?!e.quorum||BigInt(e.quorum)>BigInt(e.pollResult.totalTowardsQuorum)?_governance.ProposalStatus.QuorumNotReached:BigInt(_nullishCoalesce(_optionalChain([e, 'access', _13 => _13.pollResult, 'optionalAccess', _14 => _14.against]), () => (0n)))>BigInt(_nullishCoalesce(_optionalChain([e, 'access', _15 => _15.pollResult, 'optionalAccess', _16 => _16.for]), () => (0n)))?_governance.ProposalStatus.Defeated:_governance.ProposalStatus.PendingQueue:e.status===_governance.ProposalStatus.InQueue&&Number(e.queueEnd)<Date.now()/1e3?_governance.ProposalStatus.PendingExecution:e.status}async function Pn({where:e,orderBy:t,orderDirection:r,offset:a=0,perPage:o=20,text:i,...l}){try{if(o>1e3)throw new Error("perPage must be less than 1000");let n=g("governance.subgraph",l),[s]=await Promise.all([i?n.query({query:_governance.SearchProposals,variables:{offset:a,limit:o,where:e,text:i}}):n.query({query:_governance.GetProposals,variables:{offset:a,limit:o,where:e,orderBy:t,orderDirection:r}})]);return s.data.proposals.map(d=>({...d,status:we(d)}))}catch(n){throw console.error("getAllProposals:",n),n}}var Vn=(e,t)=>{let r={};return r.title=ae({fieldOrType:"title",value:e.title}),r.description=ae({fieldOrType:"description",value:e.description}),r.forumLink=ae({fieldOrType:"forumLink",value:e.forumLink,baseUrl:t.forumLink}),r};async function Gn({proposalId:e,...t}){let a=await g("governance.subgraph",t).query({query:_governance.GetProposal,variables:{id:e}});if(a.data.proposal)return{...a.data.proposal,status:we(a.data.proposal)}}var _graymatter = require('gray-matter'); var _graymatter2 = _interopRequireDefault(_graymatter);var Rr=e=>{let t=/#(?:([\w-]+)# )?(.+)\n([\s\S]*)/,r=e.match(t);if(r){let a=r[1]||null,o=r[2],i=r[3].replace(`
|
|
2
|
-
`,"<br />");return{type:a,title:o,content:i}}throw new Error("Invalid proposal body")},dt= exports.u =e=>{if(!e)return{isFrontMatter:!1,data:{title:"Loading..."},content:"",matter:"",language:"",orig:"",stringify:()=>""};let t=_nullishCoalesce(_optionalChain([e, 'optionalAccess', _17 => _17.description]), () => (""));if(_graymatter2.default.test(t))return{..._graymatter2.default.call(void 0, t),isFrontMatter:!0};try{let r=Rr(t);return{isFrontMatter:!1,data:{title:r.title},content:r.content,matter:"",language:"",orig:t,stringify:()=>t}}catch (e4){return{isFrontMatter:!1,data:{title:_optionalChain([e, 'optionalAccess', _18 => _18.description, 'optionalAccess', _19 => _19.split, 'call', _20 => _20(`
|
|
3
|
-
`), 'access', _21 => _21[0], 'access', _22 => _22.slice, 'call', _23 => _23(0,100)])},content:t,matter:"",language:"",orig:t,stringify:()=>t}}};async function Un(e){_chunkUQUWMHVFcjs.c.call(void 0, e.publicClient);let t;"tx"in e?t=e.tx:t=await e.publicClient.getTransactionReceipt({hash:e.txHash});let r=_optionalChain([t, 'optionalAccess', _24 => _24.logs])?_optionalChain([_viem.parseEventLogs.call(void 0, {abi:_chunkVP7XUOSIcjs.c,logs:t.logs,eventName:"ProposalCreated"}), 'optionalAccess', _25 => _25.at, 'call', _26 => _26(0)]):void 0;if(!t||!r)return null;let a=await e.publicClient.getBlock({blockNumber:t.blockNumber}),o=dt({description:_optionalChain([r, 'optionalAccess', _27 => _27.args, 'access', _28 => _28.description])});return{id:String(r.args.proposalId),proposalId:String(_optionalChain([r, 'optionalAccess', _29 => _29.args, 'access', _30 => _30.proposalId])),createdAt:a.timestamp.toString(),title:o.data.title,createdAtBlock:a.timestamp.toString(),voteStartAt:String(_optionalChain([r, 'optionalAccess', _31 => _31.args, 'access', _32 => _32.voteStart])),voteEndAt:String(_optionalChain([r, 'optionalAccess', _33 => _33.args, 'access', _34 => _34.voteEnd])),proposer:_optionalChain([r, 'optionalAccess', _35 => _35.args, 'access', _36 => _36.proposer]),description:o.content,unverifiedForumLink:o.data.forumLink,pollResult:{for:"0",forVotersCount:0,forPercentage:"0",against:"0",againstVotersCount:0,againstPercentage:"0",abstain:"0",abstainVotersCount:0,abstainPercentage:"0",total:"0",totalVotersCount:0,totalTowardsQuorum:"0"},status:_governance.ProposalStatus.Pending,quorum:null,topics:o.data.topics,votes:[],executableCalls:_optionalChain([r, 'optionalAccess', _37 => _37.args, 'access', _38 => _38.targets, 'access', _39 => _39.map, 'call', _40 => _40((i,l)=>({__typename:"ExecutableCall",id:`${t.transactionHash}-${l}`,target:i,value:String(_optionalChain([r, 'optionalAccess', _41 => _41.args, 'access', _42 => _42.values, 'access', _43 => _43[l]])),calldata:_optionalChain([r, 'optionalAccess', _44 => _44.args, 'access', _45 => _45.calldatas, 'access', _46 => _46[l]])}))]),timelock:void 0}}async function Mn({variables:e,...t}){return g("governance.subgraph",t).query({query:_governance.GetProposalVotes,variables:e})}var _honey = require('@berachain/graphql/honey');async function $n({days:e,...t}){return(await g("honey.subgraph",t).query({query:_honey.GetChartData,variables:{interval:_honey.Aggregation_Interval.Day,first:e}})).data}async function zn({client:e,collateralList:t,...r}){let{config:a}=_chunkOS5AJMYJcjs.a.call(void 0, r);try{let o=await e.readContract({address:a.honey.factory,abi:_chunkVP7XUOSIcjs.e,functionName:"getWeights"});return t.reduce((l,n,s)=>Object.assign(l,{[n.address]:o[s]}),{})}catch(o){throw console.log(o),o}}async function mt({address:e,publicClient:t,chainId:r}){try{if(!t)throw new Error("Public client not found");let[a,o,i]=await Promise.all([t.readContract({address:e,abi:_viem.erc20Abi,functionName:"decimals"}),t.readContract({address:e,abi:_viem.erc20Abi,functionName:"name"}),t.readContract({address:e,abi:_viem.erc20Abi,functionName:"symbol"})]),l={address:e,decimals:a,name:o,symbol:i,chainId:r};if(typeof l.decimals!="number"||typeof l.name!="string"||typeof l.symbol!="string")throw new Error(`Invalid ERC20 token. Address: ${e}`);return l}catch(a){throw console.error(a),_chunkUQUWMHVFcjs.a.call(void 0, {cause:a})}}async function Ge({client:e,tokenData:t,preferredCollateralOrder:r,...a}){let{config:o}=_chunkOS5AJMYJcjs.a.call(void 0, a),[i,l]=await Promise.all([e.readContract({address:o.honey.factory,abi:_chunkVP7XUOSIcjs.e,functionName:"numRegisteredAssets"}),e.readContract({address:o.honey.factory,abi:_chunkVP7XUOSIcjs.e,functionName:"referenceCollateral"})]),n=[];for(let f=0;f<i;f++)n.push(e.readContract({address:o.honey.factory,abi:_chunkVP7XUOSIcjs.e,functionName:"registeredAssets",args:[BigInt(f)]}));let s=await Promise.all(n),u=(await Promise.all(s.map(f=>{let b=_optionalChain([t, 'optionalAccess', _47 => _47.find, 'call', _48 => _48(p=>_chunkOS5AJMYJcjs.e.call(void 0, p,f))]);return b||mt({address:f,chainId:o.chainId,publicClient:e})}))).filter(f=>!!f).sort((f,b)=>s.indexOf(f.address)-s.indexOf(b.address)).map((f,b)=>({...f,order:b}));if(_optionalChain([r, 'optionalAccess', _49 => _49.length])){let f=[];for(let b of r){let p=u.find(A=>_chunkOS5AJMYJcjs.e.call(void 0, A.address,b.address));p&&(f.push(p),u.splice(u.indexOf(p),1))}u.unshift(...f)}let m=u.find(f=>_chunkOS5AJMYJcjs.e.call(void 0, f,l));if(!u)throw new Error("Collateral tokens not found");if(!m)throw new Error("Reference collateral address not found");return{collaterals:u,referenceCollateral:m}}async function pt({client:e,collateral:t,latestPrices:r,isPythWrapperEnabled:a,...o}){let{config:i}=_chunkOS5AJMYJcjs.a.call(void 0, o);try{let l=e.readContract({address:i.honey.factory,abi:_chunkVP7XUOSIcjs.e,functionName:"isBadCollateralAsset",args:[t.address]}),n=e.readContract({address:i.honey.factory,abi:_chunkVP7XUOSIcjs.e,functionName:"isPegged",args:[t.address]});if(a&&r){let u=r.prices.map(m=>_viem.parseUnits.call(void 0, m,18));n=e.readContract({address:i.honey.reader,abi:_chunkVP7XUOSIcjs.f,functionName:"isPeggedWithPrice",args:[t.address,u[0]]})}let[s,d]=await Promise.all([l,n]);return{isBlacklisted:s,isDepegged:!d}}catch(l){throw console.log(l),l}}async function ue({client:e,asset:t,amount:r,...a}){let{config:o}=_chunkOS5AJMYJcjs.a.call(void 0, a);try{let[i,l]=await Promise.all([e.readContract({address:o.honey.factory,abi:_chunkVP7XUOSIcjs.e,functionName:"vaults",args:[t]}),e.readContract({address:o.honey.factory,abi:_chunkVP7XUOSIcjs.e,functionName:"collectedFees",args:[o.honey.factory,t]})]);return await e.readContract({address:i,abi:_chunkVP7XUOSIcjs.d,functionName:"balanceOf",args:[o.honey.factory]})+_viem.parseEther.call(void 0, _nullishCoalesce(r, () => ("0")))-l}catch(i){throw console.log(i),i}}var Fr=_viem.parseEther.call(void 0, "1");async function Vi({client:e,asset:t,amount:r,isMint:a,isPythWrapperEnabled:o,latestPrices:i,...l}){let{config:n}=_chunkOS5AJMYJcjs.a.call(void 0, l);try{let s=await e.readContract({address:n.honey.factory,abi:_chunkVP7XUOSIcjs.e,functionName:"globalCap"});if(s>=Fr)return!1;let[{collaterals:d},u]=await Promise.all([Ge({client:e}),Ir({client:e,asset:t,amount:r,latestPrices:i,isPythWrapperEnabled:o})]);if(!u)return;for(let m in u)if((a&&_chunkOS5AJMYJcjs.e.call(void 0, d[m],t)||!a&&_chunkOS5AJMYJcjs.e.call(void 0, d[m],t))&&u[m]>s-_chunkMUNAP5TMcjs.d)return!0;return!1}catch(s){throw console.log(s),s}}async function Ir({client:e,asset:t,amount:r,latestPrices:a,isPythWrapperEnabled:o}){let{collaterals:i}=await Ge({client:e}),l=0n,n=[];for(let s of i){let d=await pt({client:e,collateral:t,latestPrices:a,isPythWrapperEnabled:o});if(_optionalChain([d, 'optionalAccess', _50 => _50.isBlacklisted])||_optionalChain([d, 'optionalAccess', _51 => _51.isDepegged]))continue;let u=await ue({client:e,asset:s.address,amount:_chunkOS5AJMYJcjs.e.call(void 0, s,t)?r:"0"});u&&(l+=u,n.push(u))}if(l===0n)return n;for(let s in i)n[s]=_viem.parseEther.call(void 0, n[s].toString())/l;return n}async function Ni({...e}={}){return(await g("honey.subgraph",e).query({query:_honey.GetGlobalData})).data}var Dr=(s=>(s.Mint="previewMintHoney",s.MintWithPrice="previewMintHoneyWithPrices",s.RequiredCollateral="previewMintCollaterals",s.RequiredCollateralWithPrice="previewMintCollateralsWithPrices",s.Redeem="previewRedeemCollaterals",s.RedeemWithPrice="previewRedeemCollateralsWithPrices",s.HoneyToRedeem="previewRedeemHoney",s.HoneyToRedeemWithPrice="previewRedeemHoneyWithPrices",s))(Dr||{});async function Fi({client:e,collateral:t,collateralList:r,amount:a,method:o,latestPrices:i,isPythWrapperEnabled:l,...n}){let{config:s}=_chunkOS5AJMYJcjs.a.call(void 0, n);try{let d=o==="previewMintHoney"||o==="previewRedeemHoney"||o==="previewMintHoneyWithPrices"||o==="previewRedeemHoneyWithPrices",u=_viem.parseUnits.call(void 0, a,d?t.decimals:18),m,f=[t.address,u];if(l&&i){let p=i.prices.map(A=>_viem.parseUnits.call(void 0, A,18));f=[t.address,u,p]}if(d){let p=await e.readContract({address:s.honey.reader,abi:_chunkVP7XUOSIcjs.f,functionName:o,args:f});m={collaterals:p[0],honey:p[1]}}else m={collaterals:await e.readContract({address:s.honey.reader,abi:_chunkVP7XUOSIcjs.f,functionName:o,args:f}),honey:u};let b=r.reduce((p,A)=>{let C=A.order;return A.address===t.address&&m.collaterals[C]===BigInt(0)?Object.assign(p,{[A.address]:m.collaterals[0]}):Object.assign(p,{[A.address]:m.collaterals[C]})},{});return b[t.address]===BigInt(0)&&(b[t.address]=m.collaterals[0]),{collaterals:b,honey:m.honey}}catch(d){throw console.log("error",d),d}}async function Wi({client:e,collateralList:t,honeyFactoryAddress:r,...a}){let{config:o}=_chunkOS5AJMYJcjs.a.call(void 0, a),i=_nullishCoalesce(r, () => (o.honey.factory));return await Promise.all(t.map(async n=>{let s=await e.readContract({address:o.honey.factory,abi:_chunkVP7XUOSIcjs.e,functionName:"vaults",args:[n.address]}),[d,u,[m,f]]=await Promise.all([e.readContract({address:s,abi:_chunkVP7XUOSIcjs.d,functionName:"balanceOf",args:[i]}),e.readContract({address:i,abi:_chunkVP7XUOSIcjs.e,functionName:"collectedAssetFees",args:[n.address]}),e.readContract({address:s,abi:_chunkVP7XUOSIcjs.d,functionName:"custodyInfo"})]),b=await e.readContract({address:s,abi:_chunkVP7XUOSIcjs.d,functionName:"convertToAssets",args:[d-u]});return{...n,balance:{raw:b.toString(),formatted:_viem.formatUnits.call(void 0, b,n.decimals)},vault:m?f:s}}))}var _hermesclient = require('@pythnetwork/hermes-client');var Lr="https://hermes.pyth.network";async function bt({priceFeedId:e}){let r=await new (0, _hermesclient.HermesClient)(Lr,{}).getLatestPriceUpdates(e,{encoding:"hex",parsed:!0});return{calldata:r.binary.data.map(a=>`0x${a}`),prices:_nullishCoalesce(_optionalChain([r, 'access', _52 => _52.parsed, 'optionalAccess', _53 => _53.flatMap, 'call', _54 => _54(a=>_viem.formatUnits.call(void 0, BigInt(a.price.price),a.price.expo*-1))]), () => ([]))}}async function Yi({client:e,asset:t,amount:r,isMint:a,referenceCollateral:o,...i}){let{config:l}=_chunkOS5AJMYJcjs.a.call(void 0, i);if(t===o.address)return!1;try{let[n]=await Promise.all([e.readContract({address:l.honey.factory,abi:_chunkVP7XUOSIcjs.e,functionName:"relativeCap",args:[t]})]),[s,d]=await Promise.all([ue({client:e,asset:t,amount:a?r:void 0}),ue({client:e,asset:o.address,amount:a?void 0:r})]);return d===0n?s!==0n:_viem.parseEther.call(void 0, (_nullishCoalesce(s, () => (0n))).toString())/(_nullishCoalesce(d, () => (0n)))>=n-_chunkMUNAP5TMcjs.d}catch(n){throw console.log(n),n}}async function yt({client:e,priceFeedId:t,...r}){let{config:a}=_chunkOS5AJMYJcjs.a.call(void 0, r);try{return await e.readContract({address:a.external.pyth,abi:_chunkVP7XUOSIcjs.n,functionName:"getUpdateFee",args:[t]})}catch(o){throw console.error("getPythUpdateFee",o),o}}var us=async({state:e,publicClient:t,priceFeedMap:r,collateralList:a,isPythWrapperEnabled:o,...i})=>{let{config:l}=_chunkOS5AJMYJcjs.a.call(void 0, i),n=_chunkOS5AJMYJcjs.d.call(void 0, i),{actionType:s,fromAmount:d,collaterals:u,isBasketModeEnabled:m}=e,f=o?l.honey.pythWrapper:l.honey.factory,b=a.map(p=>p.address);if(d[0]&&b.length){let p=s==="mint";if(o&&t&&r){let C=(await bt({priceFeedId:Object.values(r)})).calldata,V=0n;try{V=await yt({client:t,priceFeedId:C})}catch (e5){V=_chunkMUNAP5TMcjs.j.call(void 0, u.length)}return({account:y})=>{let I=[C,_optionalChain([u, 'access', _55 => _55[0], 'optionalAccess', _56 => _56.address]),_viem.parseUnits.call(void 0, d[0],_nullishCoalesce((p?_optionalChain([u, 'access', _57 => _57[0], 'optionalAccess', _58 => _58.decimals]):_optionalChain([n, 'optionalAccess', _59 => _59.decimals])), () => (18))),y,!!m];return{address:f,abi:_chunkVP7XUOSIcjs.g,functionName:p?"mint":"redeem",params:I,value:V}}}return({account:A})=>{let C=[_optionalChain([u, 'access', _60 => _60[0], 'optionalAccess', _61 => _61.address]),_viem.parseUnits.call(void 0, d[0],_nullishCoalesce((p?_optionalChain([u, 'access', _62 => _62[0], 'optionalAccess', _63 => _63.decimals]):_optionalChain([n, 'optionalAccess', _64 => _64.decimals])), () => (18))),A,!!m];return{value:0n,address:f,abi:_chunkVP7XUOSIcjs.e,functionName:p?"mint":"redeem",params:C}}}throw new Error("Something went wrong while creating the Honey swap payload")};async function gs({client:e,isMint:t,collateralList:r,latestPrices:a,isPythWrapperEnabled:o,...i}){let{config:l}=_chunkOS5AJMYJcjs.a.call(void 0, i);if(o&&a){if(r.length===0)return;let s=a.prices.map(u=>_viem.parseUnits.call(void 0, u,18));return await e.readContract({address:l.honey.reader,abi:_chunkVP7XUOSIcjs.f,functionName:"isBasketModeEnabledWithPrices",args:[t,s]})}return await e.readContract({address:l.honey.factory,abi:_chunkVP7XUOSIcjs.e,functionName:"isBasketModeEnabled",args:[t]})}async function hs({block:e,currentBlock:t,blockTime:r,publicClient:a}){if(_chunkUQUWMHVFcjs.b.call(void 0, e,"block"),_chunkUQUWMHVFcjs.c.call(void 0, a),t>e){let i=await a.getBlock({blockNumber:BigInt(e),includeTransactions:!1});return{timestamp:Number(i.timestamp)}}return{timestamp:_chunkMUNAP5TMcjs.k.call(void 0, Date.now())+r*(Number(e)-Number(t))}}var Hr=(a=>(a.Duration="duration",a.TargetRate="targetRate",a.TargetApr="targetApr",a))(Hr||{});async function vs(e,t){let[r,a,o,i,l,n]=await Promise.all([t.readContract({address:e,abi:_chunkVP7XUOSIcjs.k,functionName:"rewardsDuration"}),t.readContract({address:e,abi:_chunkVP7XUOSIcjs.k,functionName:"rewardVaultManager"}),t.readContract({address:e,abi:_chunkVP7XUOSIcjs.k,functionName:"rewardRate"}),t.readContract({address:e,abi:_chunkVP7XUOSIcjs.k,functionName:"periodFinish"}),t.readContract({address:e,abi:_chunkVP7XUOSIcjs.k,functionName:"targetRewardsPerSecond"}),t.readContract({address:e,abi:_chunkVP7XUOSIcjs.k,functionName:"minRewardDurationForTargetRate"})]),s=o*(i-BigInt(_chunkMUNAP5TMcjs.k.call(void 0, Date.now())))/10n**18n;return{rewardsDuration:Number(r),mode:l===0n?"duration":"targetRate",manager:a,rewardRate:_viem.formatUnits.call(void 0, o,36),periodFinish:Number(i),availableRewards:_viem.formatUnits.call(void 0, s,18),minRewardDurationForTargetRate:Number(n),targetRewardsPerSecond:_viem.formatUnits.call(void 0, l,36)}}function Ce(e,t,r){return e?r*t*_chunkMUNAP5TMcjs.x.call(void 0, 1)/e:null}function _r(e,t,r){return r?e*r/(t*_chunkMUNAP5TMcjs.x.call(void 0, 1)):0}function Ss({availableRewards:e,periodFinish:t,tvl:r,bgtPrice:a,MIN_REWARD_DURATION:o,MAX_REWARD_DURATION:i,...l}){let n=_chunkMUNAP5TMcjs.k.call(void 0, Date.now());if(n>t)return{apr:0,duration:0,rewardRate:0,targetRate:null,periodFinish:0,mode:null};if(l.mode==="targetRate"||l.mode==="targetApr"){let m,{minRewardDurationForTargetRate:f,currentDuration:b}=l;if(l.mode==="targetRate"?m=l.rewardRate:m=_r(l.apr,a,r),m===0){let C=Math.min(b,i),V=e?e/C:0;return{apr:Ce(r,a,V),duration:C,rewardRate:V,targetRate:null,periodFinish:C+n,mode:"duration"}}let p=f||o,A=e?e/m:0;if(A<p){let C=e?e/p:0;return{apr:Ce(r,a,C),duration:p,rewardRate:C,targetRate:C.toString(),periodFinish:p+n,mode:null}}return{apr:Ce(r,a,m),duration:A,rewardRate:m,targetRate:m.toString(),periodFinish:A+n,mode:null}}let{duration:s}=l,d=e/s;return{apr:Ce(r,a,d),mode:null,targetRate:null,duration:s,rewardRate:d,periodFinish:s+n}}async function xs({address:e,account:t,...r}){let{config:a}=_chunkOS5AJMYJcjs.a.call(void 0, r),o=`${a.bonder}/vaults/${e}/earnings/${t}`;return _chunkMUNAP5TMcjs.c.call(void 0, o)}async function Pe({filter:e,publicClient:t,...r}={}){let o=await g("api",r).query({query:_api3.GetVaults,variables:e}),i=await Promise.allSettled(o.data.polGetRewardVaults.vaults.map(async n=>{if(t)return Promise.allSettled(n.activeIncentives.map(s=>t.readContract({abi:_chunkVP7XUOSIcjs.k,address:n.address,functionName:"incentives",args:[s.tokenAddress]})))})),l=o.data.polGetRewardVaults.vaults.map((n,s)=>{let d=0,u=n.activeIncentives.map((m,f)=>{let b=Number(m.remainingAmountUsd)&&Number(m.remainingAmount)?Number(m.remainingAmountUsd)/Number(m.remainingAmount):0,p=_optionalChain([i, 'access', _65 => _65[s], 'optionalAccess', _66 => _66.status])==="fulfilled"&&_optionalChain([i, 'access', _67 => _67[s], 'optionalAccess', _68 => _68.value, 'optionalAccess', _69 => _69[f], 'optionalAccess', _70 => _70.status])==="fulfilled"?_viem.formatUnits.call(void 0, BigInt(i[s].value[f].value[2]),m.token.decimals):m.remainingAmount;return d+=Number(p)*Number(b),{...m,remainingAmount:p}});return{...n,dynamicData:{...n.dynamicData,allTimeReceivedBGTAmount:_nullishCoalesce(_optionalChain([n, 'access', _71 => _71.dynamicData, 'optionalAccess', _72 => _72.allTimeReceivedBGTAmount]), () => ("0")),bgtCapturePercentage:_nullishCoalesce(_optionalChain([n, 'access', _73 => _73.dynamicData, 'optionalAccess', _74 => _74.bgtCapturePercentage]), () => ("0")),activeIncentivesValueUsd:d.toString(),activeIncentivesRateUsd:_nullishCoalesce(_optionalChain([n, 'access', _75 => _75.dynamicData, 'optionalAccess', _76 => _76.activeIncentivesRateUsd]), () => ("0")),bgtCapturePerBlock:_nullishCoalesce(_optionalChain([n, 'access', _77 => _77.dynamicData, 'optionalAccess', _78 => _78.bgtCapturePerBlock]), () => ("0"))},activeIncentives:u}});return{pagination:o.data.polGetRewardVaults.pagination,gaugeList:l}}async function ht(e={}){let{config:t}=_chunkOS5AJMYJcjs.a.call(void 0, e),a=await g("api",e).query({query:_api3.GlobalData,variables:{chain:t.bex.chainName}});return{...a.data.polGetGlobalInfo,top3EmittingValidators:a.data.top3EmittingValidators.validators,allValidatorsCount:a.data.allValidatorsCount.pagination.totalCount}}async function wt({publicClient:e,...t}){let{config:r}=_chunkOS5AJMYJcjs.a.call(void 0, t);_chunkUQUWMHVFcjs.c.call(void 0, e);try{let a=await e.readContract({address:r.tokens.bgt,abi:_chunkVP7XUOSIcjs.j,functionName:"totalBoosts",args:[]});return _viem.formatEther.call(void 0, a)}catch(a){throw console.log(a),a}}async function Ct({publicClient:e,...t}){let{config:r}=_chunkOS5AJMYJcjs.a.call(void 0, t);_chunkUQUWMHVFcjs.c.call(void 0, e);try{let a=await e.readContract({address:r.tokens.bgt,abi:_viem.erc20Abi,functionName:"totalSupply",args:[]});return _viem.formatEther.call(void 0, _nullishCoalesce(a, () => (0n)))}catch(a){throw console.log(a),a}}async function Pt(e){let{gaugeList:t}=await Pe({filter:{orderBy:_api3.GqlRewardVaultOrderBy.Apr,orderDirection:_api3.GqlRewardVaultOrderDirection.Desc,pageSize:e,where:{includeNonWhitelisted:!1}}});return t}async function il(e){let[t,r,a,o]=await Promise.allSettled([ht(),Pt(300),Ct({publicClient:e}),wt({publicClient:e})]);return t.status==="rejected"&&_chunkUQUWMHVFcjs.f.captureException(_chunkUQUWMHVFcjs.a.call(void 0, {cause:t.reason,level:"warning"})),r.status==="rejected"&&_chunkUQUWMHVFcjs.f.captureException(_chunkUQUWMHVFcjs.a.call(void 0, {cause:r.reason,level:"warning"})),a.status==="rejected"&&_chunkUQUWMHVFcjs.f.captureException(_chunkUQUWMHVFcjs.a.call(void 0, {cause:a.reason,level:"warning"})),o.status==="rejected"&&_chunkUQUWMHVFcjs.f.captureException(_chunkUQUWMHVFcjs.a.call(void 0, {cause:o.reason,level:"warning"})),{bgtTotalSupply:a.status==="fulfilled"?a.value:void 0,globalCuttingBoard:r.status==="fulfilled"?r.value:[],bgtTotalBoosts:o.status==="fulfilled"?o.value:void 0,...t.status==="fulfilled"?t.value:{}}}var _subgraph3 = require('@berachain/graphql/pol/subgraph');async function Bt({...e}){let t=g("pol.subgraph",e),{data:r}=await t.query({query:_subgraph3.GetIncentiveFeeClaimStats});if(r.incentiveFeeClaims.length>0){let a=_optionalChain([r, 'optionalAccess', _79 => _79.incentiveFeeClaims, 'access', _80 => _80.reduce, 'call', _81 => _81((l,n)=>l+Number(n.payoutAmount),3e4)]),i=(_optionalChain([r, 'optionalAccess', _82 => _82.incentiveFeeClaims, 'access', _83 => _83.filter, 'call', _84 => _84(l=>Number(l.timestamp)/1e3>Date.now()-_chunkMUNAP5TMcjs.q.call(void 0, 1))])).reduce((l,n)=>l+Number(n.payoutAmount),0);return{sumAllClaims:a,sumClaimsInLast24Hours:i}}return{sumAllClaims:0,sumClaimsInLast24Hours:0}}async function pl(e={}){let{config:t}=_chunkOS5AJMYJcjs.a.call(void 0, e);try{let a=await(await fetch(t.lists.rewardVaultList)).json();if(!a.protocols)throw new Error("Missing protocols in market list");return{marketList:a.protocols,marketDictionary:a.protocols.reduce((o,i)=>(o[i.name]=i,o),{})}}catch(r){throw console.error("Error fetching validator information",r),r}}async function Al({account:e,validator:t,page:r=1,perPage:a=1e3,...o}){let{config:i}=_chunkOS5AJMYJcjs.a.call(void 0, o),l=await fetch(`${i.pol.bribeBoostApi}/api/v1/wallets/${e.toLowerCase()}/proofs/validator/${t.toLowerCase()}?page=${r}&per_page=${a}`,{cache:"no-store"});if(!l.ok){let s=await _chunkMUNAP5TMcjs.a.call(void 0, l);throw new (0, _chunk7SC4VD3Ucjs.e)({message:"Failed to fetch proofs on server",cause:{error:s,result:l,account:e,validator:t},reason:_optionalChain([s, 'optionalAccess', _85 => _85.reason])})}return await l.json()}async function Bl({address:e,publicClient:t}){return _chunkUQUWMHVFcjs.c.call(void 0, t),t.readContract({address:e,abi:_chunkVP7XUOSIcjs.m,functionName:"previewRedeem",args:[_viem.parseUnits.call(void 0, "1",18)]}).then(r=>Number(_viem.formatUnits.call(void 0, r,18))).catch(()=>0)}async function Nl({address:e,chainName:t,...r}){let{config:a}=_chunkOS5AJMYJcjs.a.call(void 0, r),o=_nullishCoalesce(t, () => (a.bex.chainName)),i=g("api",r),{data:l}=await i.query({query:_api3.GetRewardVault,variables:{vaultId:e,chain:o}});if(!_optionalChain([l, 'optionalAccess', _86 => _86.rewardVault]))throw new (0, _chunkBOYZVULXcjs.b)({resource:"Reward vault",id:e,chainId:a.chainId});return l.rewardVault}async function ql({address:e,stakingToken:t,publicClient:r}){let a=await r.readContract({address:e,abi:_chunkVP7XUOSIcjs.k,functionName:"getWhitelistedTokens"}),i=a.findIndex(n=>_berancersdk.isSameAddress.call(void 0, t,n))!==-1?await r.readContract({address:e,abi:_chunkVP7XUOSIcjs.k,functionName:"totalSupply"}):0n,l=await Promise.allSettled(a.map(async n=>{let[s,d,u,m]=await Promise.all([r.readContract({address:e,abi:_chunkVP7XUOSIcjs.k,functionName:"incentives",args:[n]}),r.readContract({address:n,abi:_viem.erc20Abi,functionName:"decimals"}),r.readContract({address:n,abi:_viem.erc20Abi,functionName:"symbol"}),r.readContract({address:n,abi:_viem.erc20Abi,functionName:"balanceOf",args:[e]})]),[f,b,p,A]=s;return{token:n,manager:A,minIncentiveRate:_viem.formatUnits.call(void 0, f,d),incentiveRate:_viem.formatUnits.call(void 0, b,d),remainingAmount:_viem.formatUnits.call(void 0, p,d),symbol:u,decimals:d,pendingAmount:_berancersdk.isSameAddress.call(void 0, t,n)?_viem.formatUnits.call(void 0, m-i-p,d):_viem.formatUnits.call(void 0, m-p,d)}}));return l.forEach((n,s)=>{n.status==="rejected"&&_chunkUQUWMHVFcjs.f.captureException(new (0, _chunk7SC4VD3Ucjs.e)({reason:n.reason,message:"Incorrect incentives token received.",level:"error",extra:{token:a[s],address:e,error:n.reason}}))}),l.map(n=>n.status==="fulfilled"?n.value:null).filter(n=>n!==null)}async function Ul({address:e,publicClient:t}){return await t.readContract({address:e,abi:_chunkVP7XUOSIcjs.k,functionName:"stakeToken"})}function na(e){return e==="DAY"?_api3.GqlSWberaVaultMetadataResolution.OneDay:_api3.GqlSWberaVaultMetadataResolution.SevenDays}async function Hl({window:e,...t}){let{config:r}=_chunkOS5AJMYJcjs.a.call(void 0, t),a=g("api",t);try{let o=await a.query({query:_api3.GetSWberaVaultMetadata,variables:{chain:r.bex.chainName,resolution:na(_nullishCoalesce(e, () => ("DAY")))}}),{apr:i}=o.data.polGetSWberaVaultMetadata;return Number(i)}catch(o){throw console.error("Failed to get SW Bera APR",o),o}}async function Kl({chain:e,range:t=_api3.GqlVaultSnapshotDataRange.ThirtyDays,...r}={}){let{config:a}=_chunkOS5AJMYJcjs.a.call(void 0, r),o=g("api",r);try{return(await o.query({query:_api3.GetSWberaVaultSnapshots,variables:{chain:_nullishCoalesce(e, () => (a.bex.chainName)),range:t}})).data.polGetSWberaVaultSnapshots}catch(i){throw console.error("Failed to get SW Bera Snapshots",i),i}}async function de({publicClient:e,address:t}){let r=await e.readContract({address:t,abi:_chunkVP7XUOSIcjs.m,functionName:"WITHDRAWAL_COOLDOWN"});return Number(r)}async function iu({address:e,publicClient:t,blockTime:r,...a}){let{config:o}=_chunkOS5AJMYJcjs.a.call(void 0, a);_chunkUQUWMHVFcjs.c.call(void 0, t);let i=26;try{let[l]=await Promise.all([t.getBlock({blockTag:"latest"})]),n=Math.floor(i*60*60/r),s=l.number-BigInt(n),[d,u,m,f,b,p,A,C,V,y,I]=await Promise.all([t.readContract({address:e,abi:_chunkVP7XUOSIcjs.m,functionName:"totalAssets"}),t.readContract({address:e,abi:_chunkVP7XUOSIcjs.m,functionName:"totalSupply"}),t.readContract({address:e,abi:_chunkVP7XUOSIcjs.m,functionName:"previewRedeem",args:[10n**18n],blockNumber:l.number}),t.readContract({address:o.tokens.wbera,abi:_viem.erc20Abi,functionName:"balanceOf",args:[e]}),t.readContract({address:e,abi:_chunkVP7XUOSIcjs.m,functionName:"totalAssets",blockNumber:s}),t.readContract({address:e,abi:_viem.erc20Abi,functionName:"totalSupply",blockNumber:s}),t.readContract({address:e,abi:_chunkVP7XUOSIcjs.m,functionName:"previewRedeem",args:[10n**18n],blockNumber:s}),t.readContract({address:o.tokens.wbera,abi:_viem.erc20Abi,functionName:"balanceOf",args:[e],blockNumber:s}),t.readContract({address:o.tokens.wbera,abi:_viem.erc20Abi,functionName:"totalSupply"}),de({publicClient:t,address:e}),Bt({})]),x=new (0, _bignumberjs2.default)(A.toString());return{current:{exchangeRate:new (0, _bignumberjs2.default)(m.toString()).toString(),totalSupply:new (0, _bignumberjs2.default)(u.toString()).dividedBy(1e18).toString(),totalAssets:new (0, _bignumberjs2.default)(d.toString()).dividedBy(1e18).toString(),tvl:new (0, _bignumberjs2.default)(f.toString()).dividedBy(1e18).toString()},previous:{exchangeRate:x.toString(),totalSupply:new (0, _bignumberjs2.default)(p.toString()).dividedBy(1e18).toString(),totalAssets:new (0, _bignumberjs2.default)(b.toString()).dividedBy(1e18).toString(),tvl:new (0, _bignumberjs2.default)(C.toString()).dividedBy(1e18).toString()},totalWBeraIssued:new (0, _bignumberjs2.default)(V.toString()).dividedBy(1e18).toString(),lockPeriod:y,totalBuyBacks:I.sumAllClaims,totalBuyBacksInLast24Hours:I.sumClaimsInLast24Hours}}catch(l){throw console.error("Failed to get SW Bera Vault Metadata",l),l}}function Rt(e){let t=Date.now(),r=e*1e3-t;if(r<=0)return;let a=_chunkMUNAP5TMcjs.k.call(void 0, r);return _chunkMUNAP5TMcjs.A.call(void 0, a,!0,!0)}async function pu({contractAddress:e,accountAddress:t,publicClient:r,version:a}){let o=[];function i(l,n){let[s,d,u]=l,m=s,f=Number(u)+Number(n),b=_chunkMUNAP5TMcjs.k.call(void 0, Date.now()),p=f-b;if(m>0){let A=Rt(p<=0?0:f);o.push({receiptTokenAddress:e,withdrawalAmount:m,timeRemaining:A})}}switch(a){case"V1":{let[l,n]=await Promise.all([r.readContract({address:e,abi:_chunkVP7XUOSIcjs.m,functionName:"withdrawalRequests",args:[t]}),de({publicClient:r,address:e})]);return i(l,n),o}case"V2":{let[l,n]=await Promise.all([r.readContract({address:e,abi:_chunkVP7XUOSIcjs.m,functionName:"getERC721WithdrawalRequestIds",args:[t]}),de({publicClient:r,address:e})]);if(_chunkOS5AJMYJcjs.e.call(void 0, e,"SWBERA")){let u=await r.readContract({address:e,abi:_chunkVP7XUOSIcjs.m,functionName:"withdrawalRequests",args:[t]});i(u,n)}let d=(await Promise.all(l.map(async u=>{let m=await r.readContract({address:e,abi:_chunkVP7XUOSIcjs.m,functionName:"getERC721WithdrawalRequest",args:[u]}),{assets:f,requestTime:b}=m;if(!f||!b)throw new Error("Invalid withdrawal request");let p=f,A=Number(b)+Number(n),C=_chunkMUNAP5TMcjs.k.call(void 0, Date.now()),V=A-C;if(p>0){let y=Rt(V<=0?0:A);return{withdrawalAmount:p,timeRemaining:y,withdrawalRequestId:u,receiptTokenAddress:e}}return null}))).filter(u=>u!==null);return o.push(...d),o}}}async function yu({vaultAddresses:e,publicClient:t}){_chunkUQUWMHVFcjs.c.call(void 0, t);try{let r=await Promise.all(e.map(async o=>await t.readContract({address:o,abi:_chunkVP7XUOSIcjs.m,functionName:"totalAssets"})));return e.reduce((o,i,l)=>(o[i]=r[l],o),{})}catch(r){throw console.error("Failed to get total staked amount",r),r}}async function Pu({account:e,...t}){let{config:r}=_chunkOS5AJMYJcjs.a.call(void 0, t),a=await fetch(`${r.pol.bribeBoostApi}/api/v1/wallets/${e.toLowerCase()}/rewards/aggregation`,{cache:"no-store"});if(!a.ok){let o=await _chunkMUNAP5TMcjs.a.call(void 0, a);throw new (0, _chunk7SC4VD3Ucjs.e)({message:"Failed to fetch incentives on server",cause:{error:o,result:a,account:e},reason:_optionalChain([o, 'optionalAccess', _87 => _87.error])})}return await a.json()}async function St({account:e,vaultAddress:t,publicClient:r}){if(!r)throw new Error("Missing public client");if(!e)throw new Error("Missing user account");if(!t)throw new Error("Missing vault address");return await r.readContract({address:t,abi:_chunkVP7XUOSIcjs.k,functionName:"earned",args:[e]})}async function kt({account:e,vaultAddress:t,publicClient:r}){_chunkUQUWMHVFcjs.c.call(void 0, r),_chunkUQUWMHVFcjs.d.call(void 0, e,"account"),_chunkUQUWMHVFcjs.d.call(void 0, t,"vaultAddress");try{let[a,o]=await Promise.all([r.readContract({address:t,abi:_chunkVP7XUOSIcjs.k,functionName:"balanceOf",args:[e]}),r.readContract({address:t,abi:_chunkVP7XUOSIcjs.k,functionName:"getTotalDelegateStaked",args:[e]})]);return{balance:a,delegated:o}}catch(a){throw console.log(a),a}}async function Nt({vaultAddress:e,publicClient:t}){if(!t)throw new Error("Missing public client");if(!e)throw new Error("Missing vault address");try{return await t.readContract({address:e,abi:_chunkVP7XUOSIcjs.k,functionName:"totalSupply",args:[]})}catch(r){throw console.log(r),r}}async function Iu({account:e,vaultAddress:t,publicClient:r}){let[a,o,i]=await Promise.all([kt({account:e,vaultAddress:t,publicClient:r}),St({account:e,vaultAddress:t,publicClient:r}),Nt({vaultAddress:t,publicClient:r})]),l=a.balance-a.delegated,n=i>0n?Number(Number.parseFloat(_viem.formatEther.call(void 0, a.balance))/Number.parseFloat(_viem.formatEther.call(void 0, i))).toString():"0";return{balance:a.balance,delegatedBalance:a.delegated,withdrawableBalance:l,rewards:_viem.formatEther.call(void 0, o),percentage:n}}async function Hu({account:e,publicClient:t,...r}){let{config:a}=_chunkOS5AJMYJcjs.a.call(void 0, r),l=await _asyncOptionalChain([(await g("api",r).query({query:_api3.GetUserVaults,variables:{userId:e,chain:a.bex.chainName}})), 'access', async _88 => _88.data, 'optionalAccess', async _89 => _89.userVaultDeposits, 'optionalAccess', async _90 => _90.deposits]);if(!l)return{totalBgtRewards:"0",vaults:[],totalStakedValue:0};let[n,s]=await Promise.all([t.multicall({allowFailure:!1,contracts:l.map(b=>({address:b.vaultAddress,abi:_chunkVP7XUOSIcjs.k,functionName:"earned",args:[e]}))}),t.multicall({allowFailure:!1,contracts:l.map(b=>({address:b.vaultAddress,abi:_chunkVP7XUOSIcjs.k,functionName:"balanceOf",args:[e]}))})]),{userVaults:d,total:u}=l.reduce((b,p,A)=>{let C=n[A],V=s[A];if(b.total+=C,!p.vault)return _chunkUQUWMHVFcjs.f.captureException(new (0, _chunk7SC4VD3Ucjs.e)({message:"Deposit data from API is missing vault",level:"error",extra:{deposit:p}})),console.error("Deposit data from API is missing vault",p),b;if(C>0n||V>0n){let y=_optionalChain([p, 'access', _91 => _91.vault, 'access', _92 => _92.dynamicData, 'optionalAccess', _93 => _93.tvl])&&Number(p.vault.stakingTokenAmount)!==0?Number(_nullishCoalesce(_optionalChain([p, 'access', _94 => _94.vault, 'access', _95 => _95.dynamicData, 'optionalAccess', _96 => _96.tvl]), () => (0)))/Number(p.vault.stakingTokenAmount):null;b.userVaults.push({...p,vault:p.vault,unclaimedBgt:_viem.formatUnits.call(void 0, C,18),formattedBalance:_viem.formatUnits.call(void 0, V,p.vault.stakingToken.decimals),stakingTokenPrice:y})}return b},{userVaults:[],total:0n}),m=[...d].sort((b,p)=>{if(b.vault.isVaultWhitelisted&&!p.vault.isVaultWhitelisted)return-1;if(!b.vault.isVaultWhitelisted&&p.vault.isVaultWhitelisted)return 1;let A=Number.parseFloat(b.unclaimedBgt);return Number.parseFloat(p.unclaimedBgt)-A});return{totalStakedValue:m.reduce((b,p)=>{let A=Number(_nullishCoalesce(_optionalChain([p, 'access', _97 => _97.vault, 'access', _98 => _98.dynamicData, 'optionalAccess', _99 => _99.tvl]), () => (0)));if(A===0)return b;let C=Number.parseFloat(p.vault.stakingTokenAmount),V=A/C;return b+V*Number(p.formattedBalance)},0),totalBgtRewards:_viem.formatUnits.call(void 0, u,18),vaults:m}}async function Ku({vault:e,chain:t,...r}){let{config:a}=_chunkOS5AJMYJcjs.a.call(void 0, r);return(await g("api",r).query({query:_api3.GetVaultHistory,variables:{...r,vaultId:e,chain:_nullishCoalesce(t, () => (a.bex.chainName))}})).data.polGetRewardVaultSnapshots}async function Zu({address:e,onlyActiveValidators:t,...r}){returnawait _asyncNullishCoalesce((await g("api",r).query({query:_api3.GetVaultValidators,variables:{vaultId:e,isActive:t}})).data.validators.validators, async () => ([]))}async function sc({addressIn:e,...t}){let{config:r,chainId:a}=_chunkOS5AJMYJcjs.a.call(void 0, t),o=e.map(n=>n.toLowerCase()).filter((n,s,d)=>n&&d.indexOf(n)===s),i=g("api",t),{data:l}=await i.query({query:_api.GetTokenCurrentPrices,variables:{chains:[r.bex.chainName],addressIn:o}});return l.tokenGetCurrentPrices.reduce((n,s)=>{if(!s.price||!s.address)return n;let d=s.address;return n[_viem.getAddress.call(void 0, d)]={price:_chunkMUNAP5TMcjs.C.call(void 0, s.price.toString()),updatedAt:s.updatedAt,chainId:a},n[d.toLowerCase()]={price:_chunkMUNAP5TMcjs.C.call(void 0, s.price.toString()),updatedAt:s.updatedAt,chainId:a},_chunkOS5AJMYJcjs.e.call(void 0, d,"WBERA")&&(n[_viem.zeroAddress]={price:_chunkMUNAP5TMcjs.C.call(void 0, s.price.toString()),updatedAt:s.updatedAt,chainId:a},n[r.tokens.bgt.toLowerCase()]={price:_chunkMUNAP5TMcjs.C.call(void 0, s.price.toString()),updatedAt:s.updatedAt,chainId:a},n[r.tokens.bgt]={price:_chunkMUNAP5TMcjs.C.call(void 0, s.price.toString()),updatedAt:s.updatedAt,chainId:a}),n},{})}var _core = require('@wagmi/core');async function mc({items:e,account:t,config:r}){_chunkUQUWMHVFcjs.b.call(void 0, e,"items"),_chunkUQUWMHVFcjs.b.call(void 0, r,"config"),_chunkUQUWMHVFcjs.b.call(void 0, t,"account");let a=Object.groupBy(e,i=>i.token.chainId);return(await Promise.allSettled(Object.entries(a).map(async([i,l])=>{if(!l)return[];let n=_core.getPublicClient.call(void 0, r,{chainId:Number(i)});return _chunkUQUWMHVFcjs.c.call(void 0, n,`publicClient ${i}`),(await n.multicall({contracts:l.map(u=>({address:u.token.address,abi:_viem.erc20Abi,functionName:"allowance",args:[t,u.spender]}))})).map((u,m)=>{let f=l[m];return u.error?void 0:{token:f.token,spender:f.spender,amount:f.amount,allowance:{raw:u.result.toString(),formatted:_viem.formatUnits.call(void 0, u.result,f.token.decimals)},needsApproval:u.result<BigInt(f.amount.raw)}}).filter(u=>!!u)}))).flatMap(i=>i.status==="fulfilled"?i.value:void 0).filter(i=>!!i)}async function Gt({publicClient:e,abi:t,...r}){let a=[..._chunk7SC4VD3Ucjs.b,..._nullishCoalesce(t, () => ([]))],o,i,l,n,s,d,u;if("txHash"in r){let m=await e.getTransaction({hash:r.txHash});if(!m.to)throw new (0, _chunk7SC4VD3Ucjs.g)({property:"tx",value:m,expected:"Transaction",message:"Trying to get revert reason for a contract creation"});s=m.input,i=m.to,l=m.from,n=m.value,o=m.blockNumber}else if(o=r.blockNumber,i=r.to,l=r.account,n=r.value,"data"in r)s=r.data;else if("functionName"in r&&"args"in r)d=r.functionName,u=r.args;else if(!n)throw new (0, _chunk7SC4VD3Ucjs.g)({property:"dataOrFunctionNameAndArgs",value:r,expected:"Hex or FunctionName and Args"});try{if(!a)if(s)await e.call({data:s,to:i,account:l,blockNumber:o,value:n});else throw new Error("Data is required if abi is not provided");if("functionName"in r&&"args"in r&&r.functionName)d=r.functionName,u=r.args;else if(s){if(!a){let m=await e.call({data:s,to:i,account:l,blockNumber:o,value:n});throw new Error(`Getting revert reason for successful simulation. Data: ${s}`,{cause:m})}try{let m=_viem.decodeFunctionData.call(void 0, {abi:a,data:s});d=m.functionName,u=m.args}catch(m){throw m instanceof _viem.AbiFunctionSignatureNotFoundError&&await e.call({data:s,to:i,account:l,blockNumber:o,value:n}),new Error("Data is required if abi is not provided")}}else throw new Error("No data or function name and args provided");throw a&&d?(await e.simulateContract({functionName:d,args:u,abi:a,address:i,account:l,blockNumber:o}),new (0, _chunkBOYZVULXcjs.c)({message:"Getting revert reason for successful simulation",functionName:d,to:i,txHash:"txHash"in r?r.txHash:void 0,input:r})):new Error("No data or function name and args provided")}catch(m){if(m instanceof Error)return _chunk7SC4VD3Ucjs.d.call(void 0, {error:m,abi:a,revertIfUnknown:!0});throw m}}var ka=_chunkMUNAP5TMcjs.l.call(void 0, 1),xt=(e,t)=>e*(100n+BigInt(t))/100n;function Ie({nonceResult:e,onWarning:t}){if(e.status==="fulfilled"){if(e.value&&e.value>Number.MAX_SAFE_INTEGER){_optionalChain([t, 'optionalCall', _100 => _100(new (0, _chunk7SC4VD3Ucjs.e)({message:"Nonce is too large. No nonce will be provided to avoid IntegerOutOfRangeError.",cause:e.value,level:"debug"}))]);return}return e.value}}function Na(e=_internal.defaultChainId){return e===_internal.ChainId.BEPOLIA?process.env.NEXT_PUBLIC_80069_ANVIL_IMPERSONATE_ACCOUNT==="true":process.env.NEXT_PUBLIC_80094_ANVIL_IMPERSONATE_ACCOUNT==="true"}async function Fc(e){if(process.env.NODE_ENV==="development"&&!e.contractName&&e.address&&!("calls"in e||e.calls))throw console.warn("beraWriteContract: Contract name is required. Either update the contract mapping in devrel or provide a contract name in ContractName enum","This is a development error and will be thrown in development mode only."),new (0, _chunk7SC4VD3Ucjs.g)({property:"contractName",value:e.contractName,expected:"ContractName",displayMessage:`[DEV] Contract name is required as it's not mapped in the devrel's contract mapping ${e.address}`,level:"error"});let{address:t,calls:r,value:a,gasLimit:o,onLoading:i,onSuccess:l,onWarning:n,onError:s,onSubmission:d,wagmiConfig:u,walletClient:m,account:f,txConfirmationTimeout:b=12e4,chainId:p=_internal.defaultChainId,impersonateAccount:A=Na(p),errorsAbi:C=[],pollingInterval:V=ka,...y}=e;_optionalChain([i, 'optionalCall', _101 => _101(e)]);let I="data"in y?y.data:void 0,x=[..._chunk7SC4VD3Ucjs.b,...C,..."abi"in y&&y.abi&&Array.isArray(y.abi)?y.abi:[]],T=m;if(!u){_optionalChain([s, 'optionalCall', _102 => _102(new (0, _chunk7SC4VD3Ucjs.g)({property:"wagmiConfig",value:u,expected:"Config"}),e)]);return}if(!(_optionalChain([T, 'optionalAccess', _103 => _103.account, 'optionalAccess', _104 => _104.type])==="local"))try{await _core.switchChain.call(void 0, u,{chainId:p})}catch(S){let E=S;_optionalChain([s, 'optionalCall', _105 => _105(new (0, _chunk7SC4VD3Ucjs.e)({cause:E,displayMessage:"There was an error switching to the chain."}),e)]);return}if(!T)try{T=await _core.getWalletClient.call(void 0, u,{chainId:p})}catch(S){_optionalChain([s, 'optionalCall', _106 => _106(new (0, _chunk7SC4VD3Ucjs.e)({cause:S,displayMessage:"There was an error connecting to the wallet."}),e)]);return}if(!T){_optionalChain([s, 'optionalCall', _107 => _107(new (0, _chunk7SC4VD3Ucjs.g)({displayMessage:"There was an error connecting to the wallet.",property:"walletClient",value:T,expected:"WalletClient"}),e)]);return}let Q=f||T.account;if(!Q){_optionalChain([s, 'optionalCall', _108 => _108(new (0, _chunk7SC4VD3Ucjs.g)({property:"account",value:Q,expected:"Account"}),e)]);return}let me=typeof Q=="string"?Q:Q.address,M=_core.getPublicClient.call(void 0, u,{chainId:p});try{_chunkUQUWMHVFcjs.c.call(void 0, M)}catch(S){_optionalChain([s, 'optionalCall', _109 => _109(S,e)]);return}if(A){let S=_chunkMUNAP5TMcjs.E.call(void 0, p);await S.impersonateAccount({address:me}),T=_viem.createWalletClient.call(void 0, {transport:_viem.http.call(void 0, S.transport.url),account:Q,chain:T.chain})}let q,ne={calls:"calls"in y?y.calls:void 0,params:"params"in y?y.params:void 0,value:a,data:"data"in y?y.data:void 0};try{let S=M.getTransactionCount({address:me,blockTag:"latest"}).catch(()=>{}),E={account:me,to:t,address:t,chainId:p,value:a};if(r){let D=r.map(h=>{if("abi"in h&&Array.isArray(x)&&x.push(...h.abi),"data"in h)return{to:h.address,data:h.data,value:_nullishCoalesce(h.value, () => (0n))};if("abi"in h&&"functionName"in h){let H="params"in h?h.params:void 0;return{to:h.address,abi:h.abi,functionName:h.functionName,args:H,value:_nullishCoalesce(h.value, () => (0n))}}return{to:h.address,value:_nullishCoalesce(h.value, () => (0n))}});if(e.enableSimulateCalls){let h=await M.simulateCalls({calls:D,account:Q}),H=h.results.findIndex(_=>_.status==="failure");if(H!==-1){if(h.block.number===null)throw new (0, _chunk7SC4VD3Ucjs.g)({property:"blockNumber",value:h.block.number,expected:"bigint",message:"Block number is null"});let _=h.results[H],{reason:ve}=_.data&&_.data!=="0x"?{reason:_chunk7SC4VD3Ucjs.c.call(void 0, _viem.decodeErrorResult.call(void 0, {data:_.data,abi:x}))}:_chunk7SC4VD3Ucjs.d.call(void 0, {error:_.error,revertIfUnknown:!1,abi:x});_optionalChain([s, 'optionalCall', _110 => _110(new (0, _chunkBOYZVULXcjs.c)({cause:_.error,txHash:q,chainId:p,reason:ve,abi:x,input:ne,blockNumber:h.block.number}),e)]);return}}if(process.env.NODE_ENV==="test")throw new (0, _chunk7SC4VD3Ucjs.g)({displayMessage:"Batch calls are not supported in test environment",expected:"not test",property:"NODE_ENV",value:process.env.NODE_ENV,level:"fatal"});let L=await T.sendCalls({calls:D,account:Q,forceAtomic:!0});_optionalChain([d, 'optionalCall', _111 => _111({id:L.id},e)]);let O=await T.waitForCallsStatus({id:L.id,pollingInterval:V,timeout:b});if(O.status==="success"){let h=_optionalChain([O, 'access', _112 => _112.receipts, 'optionalAccess', _113 => _113[0]]);if(!h)throw new (0, _chunk7SC4VD3Ucjs.e)({message:"Call status is success but no receipt was found",cause:O,level:"error",reason:"CALL_STATUS_SUCCESS_BUT_NO_RECEIPT"});return _optionalChain([l, 'optionalCall', _114 => _114(h,e)]),h}throw console.error("wallet_sendCalls: Call failed",O),new (0, _chunkBOYZVULXcjs.c)({cause:O,level:"error",input:ne,txHash:q,abi:x,chainId:p})}if(I){let[D,L,O]=await Promise.allSettled([M.call({...E,data:I}),_nullishCoalesce(o, () => (M.estimateGas({...E,data:I}))),S]);if(D.status==="rejected")throw D.reason;let h=L.status==="fulfilled"?xt(L.value,10):_chunkMUNAP5TMcjs.i;q=await T.sendTransaction({data:I,to:t,account:Q,gas:h,chainId:p,nonce:Ie({nonceResult:O,onWarning(H){_optionalChain([n, 'optionalCall', _115 => _115(H,e)])}}),value:a}),_optionalChain([d, 'optionalCall', _116 => _116({txHash:q},e)])}else if("abi"in y&&"functionName"in y){let{abi:D,functionName:L}=y,O="params"in y?y.params:void 0,[h,H,_]=await Promise.allSettled([M.simulateContract({...E,abi:x,functionName:L,args:O,account:Q}),_nullishCoalesce(o, () => (M.estimateContractGas({...E,abi:x,functionName:L,args:O}))),S]);if(h.status==="rejected")throw h.reason;let ve=_nullishCoalesce(o, () => ((H.status==="fulfilled"?xt(H.value,10):_chunkMUNAP5TMcjs.i)));q=await T.writeContract({...h.value.request,chainId:p,gas:ve,nonce:Ie({nonceResult:_,onWarning(qt){_optionalChain([n, 'optionalCall', _117 => _117(qt,e)])}})}),_optionalChain([d, 'optionalCall', _118 => _118({txHash:q},e)])}else{let[D]=await Promise.allSettled([S]);q=await T.sendTransaction({chainId:p,to:t,value:a,account:Q,nonce:Ie({nonceResult:D,onWarning(L){_optionalChain([n, 'optionalCall', _119 => _119(L,e)])}})}),_optionalChain([d, 'optionalCall', _120 => _120({txHash:q},e)])}process.env.NODE_ENV==="test"&&await _chunkMUNAP5TMcjs.E.call(void 0, p).mine({blocks:1});let z=await M.waitForTransactionReceipt({hash:q,pollingInterval:V,timeout:b,confirmations:1});if(z.status==="success")_optionalChain([l, 'optionalCall', _121 => _121(z,e)]);else{let D=await Gt({publicClient:M,blockNumber:z.blockNumber,to:t,account:me,abi:x,args:"params"in y?y.params:void 0,functionName:"functionName"in y?y.functionName:void 0,value:a,data:I});process.env.NODE_ENV==="test"&&console.error("beraWriteContract: Revert reason",D),_optionalChain([s, 'optionalCall', _122 => _122(new (0, _chunkBOYZVULXcjs.c)({reason:D.reason,txHash:q,receipt:z,to:t,functionName:"functionName"in y?y.functionName:void 0,input:ne,chainId:p,abi:x,blockNumber:z.blockNumber}),e)])}return z}catch(S){if(S instanceof _chunk7SC4VD3Ucjs.e)_optionalChain([s, 'optionalCall', _123 => _123(S,e)]);else if(S instanceof Error){let E=_chunk7SC4VD3Ucjs.d.call(void 0, {error:S,revertIfUnknown:!1,abi:x});if(E&&E.rootCause instanceof _viem.BaseError&&"url"in E.rootCause){_optionalChain([s, 'optionalCall', _124 => _124(new (0, _chunk7SC4VD3Ucjs.f)({cause:E.rootCause,response:void 0,endpoint:{url:E.rootCause.url,type:"rpc"},statusCode:E.rootCause instanceof _viem.HttpRequestError?E.rootCause.status:void 0}),e)]);return}_optionalChain([s, 'optionalCall', _125 => _125(new (0, _chunkBOYZVULXcjs.c)({cause:S,to:t,txHash:q,chainId:p,abi:x,functionName:"functionName"in y?y.functionName:void 0,input:ne}),e)])}else _optionalChain([s, 'optionalCall', _126 => _126(new (0, _chunkBOYZVULXcjs.c)({cause:S,txHash:q,to:t,chainId:p,functionName:"functionName"in y?y.functionName:void 0,input:ne,abi:x}),e)])}}async function Et({variables:e={},...t}={}){let{config:r}=_chunkOS5AJMYJcjs.a.call(void 0, t);return(await g("api",t).query({query:_api3.GetValidators,variables:{chain:r.bex.chainName,...e}})).data}async function Oc({allocation:e}){let t=await Pe({filter:{where:{vaultAddressIn:e.weights.map(a=>a.receiver)}}}),r=_nullishCoalesce(_optionalChain([e, 'optionalAccess', _127 => _127.start, 'access', _128 => _128.blockNumber]), () => (0));return _optionalChain([e, 'optionalAccess', _129 => _129.weights, 'access', _130 => _130.map, 'call', _131 => _131(a=>({percentage:a.percentage,receiver:a.receiver,startBlock:r,receivingVault:_optionalChain([t, 'optionalAccess', _132 => _132.gaugeList, 'access', _133 => _133.find, 'call', _134 => _134(o=>_viem.isAddressEqual.call(void 0, o.address,a.receiver))])}))])}async function $c({id:e,...t}){let{config:r}=_chunkOS5AJMYJcjs.a.call(void 0, t);return(await g("api",t).query({query:_api3.GetValidator,variables:{id:e,chain:r.bex.chainName}})).data}async function zc({pubKey:e,first:t=1,...r}){let a=g("pol.subgraph",r);try{return(await a.query({query:_subgraph3.GetValidatorBlockStats,variables:{pubKey:e,first:t}})).data}catch(o){throw console.error("GetValidatorBlockStats:",o),o}}function oe(e,t){return{start:{blockNumber:Number(e.startBlock),timestamp:e.startBlock!==0n?t:0},weights:e.weights.map(r=>({receiver:r.receiver,percentage:Number(r.percentageNumerator)/1e4}))}}function Fa(e,t){return e.start.blockNumber===t.start.blockNumber&&e.weights.every((r,a)=>r.percentage===t.weights[a].percentage)}async function td({client:e,pubKey:t,...r}){let{config:a}=_chunkOS5AJMYJcjs.a.call(void 0, r);try{let[o,i]=await Promise.all([e.readContract({address:a.pol.beraChef,abi:_chunkVP7XUOSIcjs.i,functionName:"getActiveRewardAllocation",args:[t]}),e.readContract({address:a.pol.beraChef,abi:_chunkVP7XUOSIcjs.i,functionName:"getSetActiveRewardAllocation",args:[t]})]),[l,n]=await Promise.all([o.startBlock!==0n?e.getBlock({blockNumber:BigInt(o.startBlock)}):{timestamp:0},i.startBlock!==0n?e.getBlock({blockNumber:BigInt(i.startBlock)}):{timestamp:0}]),s=oe(o,Number(l.timestamp)),d=oe(i,Number(n.timestamp)),u=!1;return d.start.blockNumber===0?u=!0:u=!Fa(d,s),{activeRewardAllocation:s,setRewardAllocation:d,isBaseline:u,isNeverSet:_optionalChain([d, 'optionalAccess', _135 => _135.start, 'access', _136 => _136.blockNumber])===0}}catch(o){throw console.log("getValidatorRewardAllocation:",o),o}}function id(e){return e.start.blockNumber===0}async function sd({client:e,...t}){let{config:r}=_chunkOS5AJMYJcjs.a.call(void 0, t),a=await e.readContract({address:r.pol.beraChef,abi:_chunkVP7XUOSIcjs.i,functionName:"getDefaultRewardAllocation",args:[]});return oe({...a,startBlock:0n},0)}async function dd({account:e,...t}){try{return(await g("pol.subgraph",t).query({query:_subgraph3.GetValidatorByAccount,variables:{account:e}})).data}catch(r){throw console.error("getManagedValidatorByAccount:",r),r}}async function pd({client:e,valPubKey:t}){return 5614}async function Ft({account:e,pubkey:t,publicClient:r,...a}){let{config:o}=_chunkOS5AJMYJcjs.a.call(void 0, a);if(!e)throw new Error("account is required");if(!r)throw new Error("publicClient is required");let[i,l,n]=await Promise.all([r.readContract({address:o.tokens.bgt,abi:_chunkVP7XUOSIcjs.j,functionName:"boosted",args:[e,t]}),r.readContract({address:o.tokens.bgt,abi:_chunkVP7XUOSIcjs.j,functionName:"boostedQueue",args:[e,t]}),r.readContract({address:o.tokens.bgt,abi:_chunkVP7XUOSIcjs.j,functionName:"dropBoostQueue",args:[e,t]})]);return{pubkey:t,activeBoostAmount:_viem.formatEther.call(void 0, i),queuedBoostAmount:_viem.formatEther.call(void 0, l[1]),queuedDropBoostAmount:_viem.formatEther.call(void 0, n[1]),queuedBoostStartBlock:l[0],queuedDropBoostStartBlock:n[0],hasPendingBoosts:Number(l[1])>0||Number(n[1])>0,hasActiveBoosts:Number(i)>0}}async function It({account:e,block:t,...r}){return await g("pol.subgraph",r).query({query:_subgraph3.GetUserValidatorInformation,variables:{address:e.toLowerCase(),block:t}})}async function Sd({account:e,publicClient:t,chain:r,...a}){let{config:o}=_chunkOS5AJMYJcjs.a.call(void 0, a),i=_nullishCoalesce(r, () => (o.bex.chainName)),l=await It({account:e}),[n,s]=await Promise.all([Et({variables:{chain:i,where:{idIn:l.data.userValidatorInformations.map(d=>d.validator.id)}}}),t&&_chunkMUNAP5TMcjs.F.call(void 0, {lastBlockTimestamp:_optionalChain([l, 'access', _137 => _137.data, 'access', _138 => _138._meta, 'optionalAccess', _139 => _139.block, 'access', _140 => _140.timestamp]),blockTime:o.averageBlockTime})?Promise.all(l.data.userValidatorInformations.map(d=>Ft({account:e,pubkey:d.validator.publicKey,publicClient:t}))):void 0]);return _optionalChain([n, 'optionalAccess', _141 => _141.validators, 'access', _142 => _142.validators, 'access', _143 => _143.map, 'call', _144 => _144(d=>{let u=s?s.find(m=>m.pubkey.toLowerCase()===d.pubkey.toLowerCase()):l.data.userValidatorInformations.find(m=>m.validator.id.toLowerCase()===d.id.toLowerCase());if(!u)throw new Error("User deposited not found");return{...d,userBoosts:{pubkey:"pubkey"in u?u.pubkey:u.validator.publicKey,activeBoostAmount:_optionalChain([u, 'optionalAccess', _145 => _145.activeBoostAmount]),queuedBoostAmount:_optionalChain([u, 'optionalAccess', _146 => _146.queuedBoostAmount]),queuedBoostStartBlock:Number(_optionalChain([u, 'optionalAccess', _147 => _147.queuedBoostStartBlock])),queuedDropBoostAmount:_optionalChain([u, 'optionalAccess', _148 => _148.queuedDropBoostAmount]),queuedDropBoostStartBlock:Number(_optionalChain([u, 'optionalAccess', _149 => _149.queuedDropBoostStartBlock])),hasPendingBoosts:Number(_optionalChain([u, 'optionalAccess', _150 => _150.queuedBoostAmount]))>0||Number(_optionalChain([u, 'optionalAccess', _151 => _151.queuedDropBoostAmount]))>0,hasActiveBoosts:Number(_optionalChain([u, 'optionalAccess', _152 => _152.activeBoostAmount]))>0}}})])}var Da=[{validatorAddress:"0x8f51e63d9921a461be29e73dca1c2385e1adc5943fbb36ded4ba96025ee8a783184d1118da08171f6ea831153c878a6d",earning:.045,staked:{amount:16114000000000000000n,formattedAmount:"161.14"},rewards:{amount:15214000000000000000n,formattedAmount:"152.14"}},{staked:{amount:141514000000000000000n,formattedAmount:"1415.14"},validatorAddress:"0x97b21253b17f4e814fe7505c15c18e68c85ab2477274ad370a762df50e3eb4cb1a48451e089bc22e158d7448549a8ab9",earning:.045,rewards:{amount:15414000000000000000n,formattedAmount:"154.14"},queueData:{stake:[{amount:16159000000000000000n,formattedAmount:"161.59"}],unstake:[{amount:16159000000000000000n,formattedAmount:"161.59",timestamp:_chunkMUNAP5TMcjs.k.call(void 0, Date.now()-72e6)}]}},{staked:{amount:141514000000000000000n,formattedAmount:"1415.14"},validatorAddress:"0xa2705d6b27891f3f5651f26547d1bb79e256f95f249d1ad717cef087d77d38b037e5d6dbaa2538930fd0731ec9b02f3a",earning:.145,rewards:{amount:15414000000000000000n,formattedAmount:"154.14"},queueData:{unstake:[{amount:16159000000000000000n,formattedAmount:"161.59",timestamp:_chunkMUNAP5TMcjs.k.call(void 0, Date.now()-72e6)}]}},{staked:{amount:141514000000000000000n,formattedAmount:"1415.14"},validatorAddress:"0xa2705d6b27891f3f5651f26547d1bb79e256f95f249d1ad717cef087d77d38b037e5d6dbaa2538930fd0731ec9b02f3a",earning:.145,rewards:{amount:15414000000000000000n,formattedAmount:"154.14"},queueData:{unstake:[{amount:16159000000000000000n,formattedAmount:"161.59",timestamp:_chunkMUNAP5TMcjs.k.call(void 0, Date.now()-72e6)}]}},{staked:{amount:141514000000000000000n,formattedAmount:"1415.14"},validatorAddress:"0xa2705d6b27891f3f5651f26547d1bb79e256f95f249d1ad717cef087d77d38b037e5d6dbaa2538930fd0731ec9b02f3a",earning:.145,rewards:{amount:15414000000000000000n,formattedAmount:"154.14"},queueData:{unstake:[{amount:16159000000000000000n,formattedAmount:"161.59",timestamp:_chunkMUNAP5TMcjs.k.call(void 0, Date.now()-72e6)}]}},{staked:{amount:141514000000000000000n,formattedAmount:"1415.14"},validatorAddress:"0xa2705d6b27891f3f5651f26547d1bb79e256f95f249d1ad717cef087d77d38b037e5d6dbaa2538930fd0731ec9b02f3a",earning:.145,rewards:{amount:15414000000000000000n,formattedAmount:"154.14"},queueData:{unstake:[{amount:16159000000000000000n,formattedAmount:"161.59",timestamp:_chunkMUNAP5TMcjs.k.call(void 0, Date.now()-72e6)}]}},{staked:{amount:141514000000000000000n,formattedAmount:"1415.14"},validatorAddress:"0xa2705d6b27891f3f5651f26547d1bb79e256f95f249d1ad717cef087d77d38b037e5d6dbaa2538930fd0731ec9b02f3a",earning:.145,rewards:{amount:15414000000000000000n,formattedAmount:"154.14"},queueData:{unstake:[{amount:16159000000000000000n,formattedAmount:"161.59",timestamp:_chunkMUNAP5TMcjs.k.call(void 0, Date.now()-72e6)}]}},{staked:{amount:241514000000000000000n,formattedAmount:"2415.14"},validatorAddress:"0xa4e4b63514f54d61da5197359f11ff1fc2930788ba2ffdd30c2fc059cbe0221020197bf9446b16ac347f36c7517a8686",earning:.145,rewards:{amount:15414000000000000000n,formattedAmount:"154.14"},queueData:{unstake:[{amount:1159000000000000000n,formattedAmount:"11.59",timestamp:_chunkMUNAP5TMcjs.k.call(void 0, Date.now()-36e6)}]}},{validatorAddress:"0xb0511ec039591e98bd4e183ba70b85572214a7ad8ca1a43e96ad3495d3821054927bc542e5482ec9733e35b7ef0b1f03",earning:.045,staked:{amount:141514000000000000000n,formattedAmount:"1415.14"},rewards:{amount:15414000000000000000n,formattedAmount:"154.14"},queueData:{stake:[{amount:1159000000000000000n,formattedAmount:"11.59"}]}}];async function Gd(e){return await new Promise(t=>setTimeout(t,2e3)),e==="0x4C368fFE3650379d6318C8d4630bc51f8Ad12bB6"?Da:[]}async function Id({pubkey:e,dayRange:t,...r}){return(await g("pol.subgraph",r).query({query:_subgraph3.GetValidatorAnalytics,variables:{pubKey:e,timestamp:_chunkMUNAP5TMcjs.y.call(void 0, t).toString()}})).data}async function Ud({client:e,pubKey:t,...r}){let{config:a}=_chunkOS5AJMYJcjs.a.call(void 0, r),o=await e.readContract({address:a.pol.beraChef,abi:_chunkVP7XUOSIcjs.i,functionName:"getValCommissionOnIncentiveTokens",args:[t]});return Number(_nullishCoalesce(o, () => (0n)))/1e4}var Od=(e,t,r)=>{if(!t||!e)return 0;let a=_chunkMUNAP5TMcjs.x.call(void 0, 1)/r;return(t?a*(Number(_optionalChain([e, 'access', _153 => _153.dynamicData, 'optionalAccess', _154 => _154.stakedBeraAmount]))/t):0)*Number.parseFloat(_nullishCoalesce(_optionalChain([e, 'access', _155 => _155.dynamicData, 'optionalAccess', _156 => _156.rewardRate]), () => ("0")))};async function Jd({client:e,pubKey:t,...r}){let{config:a}=_chunkOS5AJMYJcjs.a.call(void 0, r);try{return await e.readContract({address:a.depositContract,abi:_chunkVP7XUOSIcjs.h,functionName:"getOperator",args:[t]})}catch(o){throw console.log("getValidatorOperatorAddress:",o),o}}async function Yd({client:e,pubKey:t,...r}){let{config:a}=_chunkOS5AJMYJcjs.a.call(void 0, r),o=await e.readContract({address:a.pol.beraChef,abi:_chunkVP7XUOSIcjs.i,functionName:"getValQueuedCommissionOnIncentiveTokens",args:[t]});return{blockNumberLast:o.blockNumberLast,commissionRate:Number(o.commissionRate)/1e4}}async function em({client:e,pubKey:t,...r}){let{config:a}=_chunkOS5AJMYJcjs.a.call(void 0, r);try{return await e.readContract({address:a.depositContract,abi:_chunkVP7XUOSIcjs.h,functionName:"queuedOperator",args:[t]})}catch(o){throw console.log("getValidatorQueuedOperatorAddress:",o),o}}async function nm({client:e,pubKey:t,...r}){let{config:a}=_chunkOS5AJMYJcjs.a.call(void 0, r);try{let o=await e.readContract({address:a.pol.beraChef,abi:_chunkVP7XUOSIcjs.i,functionName:"getQueuedRewardAllocation",args:[t]});return oe(o,0)}catch(o){throw console.log("getValidatorQueuedRewardAllocation:",o),o}}exports.a = Oa; exports.b = Ae; exports.c = g; exports.d = _client.gql; exports.e = rt; exports.f = _berancersdk.BalancerApi; exports.g = ko; exports.h = Eo; exports.i = Qo; exports.j = ot; exports.k = Ko; exports.l = en; exports.m = sn; exports.n = mn; exports.o = ae; exports.p = yn; exports.q = we; exports.r = Pn; exports.s = Vn; exports.t = Gn; exports.u = dt; exports.v = Un; exports.w = Mn; exports.x = $n; exports.y = zn; exports.z = mt; exports.A = Ge; exports.B = pt; exports.C = Vi; exports.D = Ni; exports.E = Dr; exports.F = Fi; exports.G = Wi; exports.H = bt; exports.I = Yi; exports.J = yt; exports.K = us; exports.L = gs; exports.M = hs; exports.N = Hr; exports.O = vs; exports.P = Ss; exports.Q = xs; exports.R = Pe; exports.S = il; exports.T = Bt; exports.U = pl; exports.V = Al; exports.W = Bl; exports.X = Nl; exports.Y = ql; exports.Z = Ul; exports._ = Hl; exports.$ = Kl; exports.aa = de; exports.ba = iu; exports.ca = pu; exports.da = yu; exports.ea = Pu; exports.fa = St; exports.ga = Iu; exports.ha = Hu; exports.ia = Ku; exports.ja = Zu; exports.ka = sc; exports.la = mc; exports.ma = Na; exports.na = Fc; exports.oa = Et; exports.pa = Oc; exports.qa = $c; exports.ra = zc; exports.sa = oe; exports.ta = Fa; exports.ua = td; exports.va = id; exports.wa = sd; exports.xa = dd; exports.ya = pd; exports.za = Ft; exports.Aa = Sd; exports.Ba = Gd; exports.Ca = Id; exports.Da = Ud; exports.Ea = Od; exports.Fa = Jd; exports.Ga = Yd; exports.Ha = em; exports.Ia = nm;
|
|
4
|
-
//# sourceMappingURL=chunk-IJM76AWK.cjs.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["/Users/pong/coding/monobera/packages/berajs/dist/chunk-IJM76AWK.cjs","../src/actions/bend/getConvertToAssets.ts","../src/actions/clients/BeraApolloClient.ts","../src/actions/governance/parseProposalBody.ts","../src/actions/governance/getProposalFromTx.ts"],"names":["getConvertToAssets","sharesAmount","vaultAddress","publicClient","convertToAssets","metaMorphoAbi","formatEther","BeraApolloClient","ApolloClient","options","queryName","getQueryName","endpoint","tags","executeQuery","res","BeraTracing"],"mappings":"AAAA,q+CAA0H,wDAAyD,wDAAuE,wDAAyJ,wDAAgE,wDAAgF,4BCAte,MAU7D,SAAsBA,EAAAA,CAAmB,CACvC,YAAA,CAAAC,CAAAA,CACA,YAAA,CAAAC,CAAAA,CACA,YAAA,CAAAC,CACF,CAAA,CAAyE,CACvE,IAAMC,CAAAA,CAAkB,MAAMD,CAAAA,CAAa,YAAA,CAAa,CACtD,OAAA,CAASD,CAAAA,CACT,GAAA,CAAKG,mBAAAA,CACL,YAAA,CAAc,iBAAA,CACd,IAAA,CAAM,CAACJ,CAAY,CACrB,CAAC,CAAA,CACD,MAAO,CAAE,GAAA,CAAKG,CAAAA,CAAiB,SAAA,CAAWE,+BAAAA,CAA2B,CAAE,CACzE,CCtBA,wCAMO,sDAEmB,IAYbC,EAAAA,CAAN,MAAA,QAA+BC,oBAAa,CAIvC,WAEV,CACEC,CAAAA,CAMA,CACA,KAAA,CAAMA,CAAO,CAAA,CACb,IAAA,CAAK,GAAA,CAAMA,CAAAA,CAAQ,GACrB,CAEA,MAAM,KAAA,CAKJA,CAAAA,CAIC,CACD,IAAMC,CAAAA,CAAYC,EAAAA,CAAaF,CAAAA,CAAQ,KAAK,CAAA,CACtCG,CAAAA,CAAW,CACf,GAAA,CAAK,IAAA,CAAK,GAAA,CACV,IAAA,CAAM,SACR,CAAA,CAEMC,CAAAA,CAAO,CACX,gBAAA,CAAkB,OAAA,CAClB,sBAAA,CAAwBD,CAAAA,CAAS,GAAA,CACjC,uBAAA,CAAyBA,CAAAA,CAAS,IAAA,CAClC,4BAAA,CAA8BF,CAChC,CAAA,CAEA,GAAI,CACF,IAAMI,CAAAA,CAAe,CAAA,CAAA,EACnB,KAAA,CAAM,KAAA,CACJL,CACF,CAAA,CAEIM,CAAAA,CAAM,MAAMC,mBAAAA,CAAY,SAAA,CAC5B,CACE,IAAA,CAAM,CAAA,QAAA,EAAWN,CAAS,CAAA,CAAA;ACNQ;AC4BT","file":"/Users/pong/coding/monobera/packages/berajs/dist/chunk-IJM76AWK.cjs","sourcesContent":[null,"import { type Address, formatEther, type PublicClient } from \"viem\";\n\nimport { metaMorphoAbi } from \"~/abi/bend/metaMorpho\";\n\nexport interface GetConvertToAssetsProps {\n sharesAmount: bigint;\n vaultAddress: Address;\n publicClient: PublicClient;\n}\n\nexport async function getConvertToAssets({\n sharesAmount,\n vaultAddress,\n publicClient,\n}: GetConvertToAssetsProps): Promise<{ raw: bigint; formatted: string }> {\n const convertToAssets = await publicClient.readContract({\n address: vaultAddress,\n abi: metaMorphoAbi,\n functionName: \"convertToAssets\",\n args: [sharesAmount],\n });\n return { raw: convertToAssets, formatted: formatEther(convertToAssets) };\n}\n","import {\n ApolloClient,\n type DocumentNode,\n type ErrorLike,\n type OperationVariables,\n ServerError,\n} from \"@apollo/client\";\n\nimport { appConfig } from \"@berachain/config/internal\";\n\nimport { BeraError } from \"~/errors/BeraError\";\nimport { BeraTracing } from \"~/errors/BeraTracing\";\nimport { RequestError } from \"~/errors/RequestError\";\n\n/**\n * This is a wrapper around the ApolloClient that throws a BeraError if the query returns an error or no data.\n *\n * It's mostly a typescript helper that keeps data always defined since we use errorPolicy: \"none\" by default.\n * Such setting will throw an error if the query returns an error, rather than returning an object with undefined data and an error property.\n */\nexport class BeraApolloClient extends ApolloClient {\n /**\n * The URL of the endpoint. Used for error reporting only.\n */\n protected url: string;\n\n constructor(\n options: ApolloClient.Options & {\n /**\n * The URL of the endpoint. Used for error reporting only.\n */\n url: string;\n },\n ) {\n super(options);\n this.url = options.url;\n }\n\n async query<\n TData = unknown,\n TVariables extends OperationVariables = OperationVariables,\n >(\n // We handle errors in our custom logic so we don't need to pass errorPolicy here\n options: Omit<ApolloClient.QueryOptions<TData, TVariables>, \"errorPolicy\">,\n ): Promise<{\n // Only data is returned and we're sure it's not undefined due to errorPolicy\n data: TData;\n }> {\n const queryName = getQueryName(options.query);\n const endpoint = {\n url: this.url,\n type: \"graphql\",\n } as const;\n\n const tags = {\n \"operation.type\": \"query\",\n \"operation.source.url\": endpoint.url,\n \"operation.source.type\": endpoint.type,\n \"operation.source.queryName\": queryName,\n };\n\n try {\n const executeQuery = () =>\n super.query<TData, TVariables>(\n options as ApolloClient.QueryOptions<TData, TVariables>,\n );\n\n const res = await BeraTracing.startSpan(\n {\n name: `GraphQL ${queryName}`,\n op: \"BeraApolloClient.query\",\n attributes: tags,\n },\n executeQuery,\n );\n\n if (res.error || res.data === undefined) {\n throw new BeraError({\n level: \"fatal\",\n tags,\n message:\n \"Bera Apollo Client: No data returned from query, but error should be thrown since errorPolicy is none\",\n });\n }\n\n return { data: res.data } as const;\n } catch (error) {\n !appConfig.env.isProduction &&\n console.error(\"BeraApolloClient error\", error);\n\n if (ServerError.is(error)) {\n throw new RequestError({\n // reason: error,\n response: error.response,\n cause: error,\n statusCode: error.statusCode,\n endpoint,\n tags,\n });\n }\n if (error instanceof TypeError) {\n throw new RequestError({\n level: \"fatal\",\n reason: \"TypeError\",\n response: error,\n cause: error,\n endpoint,\n tags,\n });\n }\n throw new RequestError({\n response: error as ErrorLike,\n tags,\n cause: error,\n endpoint,\n });\n }\n }\n}\n\nfunction getQueryName(queryDefinition: DocumentNode) {\n const likelyNode = queryDefinition.definitions.find(\n (def) => def.kind === (\"OperationDefinition\" as const),\n );\n\n return likelyNode?.name?.value;\n}\n","import graymatter from \"gray-matter\";\n\nimport type { ProposalSelectionFragment } from \"@berachain/graphql/governance\";\n\nconst parseLegacyBody = (\n s: string,\n): { type: string | null; title: string; content: string } => {\n const pattern = /#(?:([\\w-]+)# )?(.+)\\n([\\s\\S]*)/;\n const match = s.match(pattern);\n\n if (match) {\n const type = match[1] || null;\n const title = match[2];\n const content = match[3].replace(\"\\n\", \"<br />\");\n return {\n type,\n title,\n content,\n };\n }\n\n throw new Error(\"Invalid proposal body\");\n};\n\nexport const parseProposalBody = (\n proposal?: Pick<ProposalSelectionFragment, \"description\">,\n): graymatter.GrayMatterFile<string> & {\n isFrontMatter: boolean;\n} => {\n if (!proposal) {\n return {\n isFrontMatter: false,\n data: { title: \"Loading...\" },\n content: \"\",\n matter: \"\",\n language: \"\",\n orig: \"\",\n stringify: () => \"\",\n };\n }\n\n const body = proposal?.description ?? \"\";\n\n if (graymatter.test(body)) {\n return { ...graymatter(body), isFrontMatter: true };\n }\n\n try {\n const legacyBody = parseLegacyBody(body);\n\n return {\n isFrontMatter: false,\n data: { title: legacyBody.title },\n content: legacyBody.content,\n matter: \"\",\n language: \"\",\n orig: body,\n stringify: () => body,\n };\n } catch {\n return {\n isFrontMatter: false,\n data: {\n title: proposal?.description?.split(\"\\n\")[0].slice(0, 100),\n },\n content: body,\n matter: \"\",\n language: \"\",\n orig: body,\n stringify: () => body,\n };\n }\n};\n","import {\n type Address,\n type PublicClient,\n parseEventLogs,\n type TransactionReceipt,\n} from \"viem\";\n\nimport {\n type ExecutableCallSubsetFragment,\n ProposalStatus,\n type ProposalWithVotesFragment,\n} from \"@berachain/graphql/governance\";\n\nimport { governanceAbi } from \"~/abi/governance/governance\";\nimport { assertPublicClient } from \"~/errors/assert\";\nimport { parseProposalBody } from \"./parseProposalBody\";\n\nexport async function getProposalFromTx(\n args: {\n publicClient: PublicClient | undefined;\n } & (\n | {\n tx: TransactionReceipt;\n }\n | {\n txHash: Address;\n }\n ),\n): Promise<ProposalWithVotesFragment | null> {\n assertPublicClient(args.publicClient);\n\n let tx: TransactionReceipt;\n\n if (\"tx\" in args) {\n tx = args.tx;\n } else {\n tx = await args.publicClient.getTransactionReceipt({ hash: args.txHash });\n }\n\n const creationEvent = tx?.logs\n ? parseEventLogs({\n abi: governanceAbi,\n logs: tx.logs,\n eventName: \"ProposalCreated\",\n })?.at(0)\n : undefined;\n\n if (!tx || !creationEvent) {\n return null;\n }\n\n const block = await args.publicClient.getBlock({\n blockNumber: tx.blockNumber,\n });\n const fm = parseProposalBody({\n description: creationEvent?.args.description as string,\n });\n\n return {\n id: String(creationEvent.args.proposalId),\n proposalId: String(creationEvent?.args.proposalId),\n createdAt: block.timestamp.toString(),\n title: fm.data.title,\n createdAtBlock: block.timestamp.toString(),\n voteStartAt: String(creationEvent?.args.voteStart),\n voteEndAt: String(creationEvent?.args.voteEnd),\n proposer: creationEvent?.args.proposer,\n description: fm.content,\n unverifiedForumLink: fm.data.forumLink,\n pollResult: {\n for: \"0\",\n forVotersCount: 0,\n forPercentage: \"0\",\n against: \"0\",\n againstVotersCount: 0,\n againstPercentage: \"0\",\n abstain: \"0\",\n abstainVotersCount: 0,\n abstainPercentage: \"0\",\n total: \"0\",\n totalVotersCount: 0,\n totalTowardsQuorum: \"0\",\n },\n status: ProposalStatus.Pending,\n quorum: null,\n topics: fm.data.topics,\n votes: [],\n executableCalls: creationEvent?.args.targets.map(\n (target, index) =>\n ({\n __typename: \"ExecutableCall\",\n id: `${tx.transactionHash}-${index}`,\n target: target as Address,\n value: String(creationEvent?.args.values[index]),\n calldata: creationEvent?.args.calldatas[index],\n }) satisfies ExecutableCallSubsetFragment,\n ),\n timelock: undefined,\n } satisfies ProposalWithVotesFragment;\n}\n"]}
|
package/dist/chunk-MUNAP5TM.cjs
DELETED
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports, "__esModule", {value: true}); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } function _nullishCoalesce(lhs, rhsFn) { if (lhs != null) { return lhs; } else { return rhsFn(); } } function _optionalChain(ops) { let lastAccessLHS = undefined; let value = ops[0]; let i = 1; while (i < ops.length) { const op = ops[i]; const fn = ops[i + 1]; i += 2; if ((op === 'optionalAccess' || op === 'optionalCall') && value == null) { return undefined; } if (op === 'access' || op === 'optionalAccess') { lastAccessLHS = value; value = fn(value); } else if (op === 'call' || op === 'optionalCall') { value = fn((...args) => value.call(lastAccessLHS, ...args)); lastAccessLHS = undefined; } } return value; }var _chunk7SC4VD3Ucjs = require('./chunk-7SC4VD3U.cjs');async function F(e){if(_optionalChain([e, 'access', _2 => _2.headers, 'access', _3 => _3.get, 'call', _4 => _4("content-type"), 'optionalAccess', _5 => _5.includes, 'call', _6 => _6("application/json")]))return await e.json();{let t=await e.text();try{return JSON.parse(t)}catch (e2){return{message:"Unknown error, can't decode response into JSON",cause:t}}}}async function C(e,n){try{let t=await fetch(typeof e=="string"||e instanceof URL?e:e.url,{...n});if(!t.ok){let r=await F(t);throw new (0, _chunk7SC4VD3Ucjs.f)({cause:r,response:t,endpoint:e})}return t}catch(t){throw t instanceof _chunk7SC4VD3Ucjs.f?t:new (0, _chunk7SC4VD3Ucjs.f)({cause:t,endpoint:e,response:void 0})}}async function ee(e,n){return(await C(e,{...n,headers:{Accept:"application/json",..._optionalChain([n, 'optionalAccess', _7 => _7.headers])}})).json()}var _viem = require('viem');var re=_viem.parseEther.call(void 0, "0.005"),oe= exports.e =1e5,se= exports.f =1,ue= exports.g =.1,ie= exports.h =50,ae= exports.i =7920027n;var ce=e=>2n*BigInt(e);function le(e){return Math.floor(e/1e3)}function O(e){return e*1e3}function V(e){return e*O(60)}function j(e){return e*60}function J(e){return e*V(60)}function q(e){return e*j(60)}function S(e){return e*J(24)}function w(e){return e*q(24)}function be(e){return e*S(7)}function pe(e){return e*w(7)}function de(e){return e*S(30)}function he(e){return e*w(30)}function ge(e){return e*S(365)}function Ne(e){return e*w(365)}function ye(e){let n=new Date;return n.setDate(n.getDate()-e)*1e3}var G=["January","February","March","April","May","June","July","August","September","October","November","December"],k=["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"];function Me(e,n){let t=new Date(e*1e3),r=t.getDate(),u="th";return r===1||r===21||r===31?u="st":r===2||r===22?u="nd":(r===3||r===23)&&(u="rd"),n?`${k[t.getMonth()]} ${r}`:`${G[t.getMonth()]} ${r}${u}, ${t.getFullYear()}`}function Ie(...e){let n=e[0],t,r,u,l;if(typeof e[1]!="object")t=_nullishCoalesce(e[1], () => (!1)),r=_nullishCoalesce(e[2], () => (!1)),l=_nullishCoalesce(e[3], () => (!1)),u=!0;else{let s=e[1];t=_nullishCoalesce(s.condensed, () => (!1));let o=_nullishCoalesce(s.greaterUnit, () => ("hours"));o==="days"?(r=!0,u=!0):o==="hours"?(r=!1,u=!0,l=!1):(r=!1,u=!0),l=_nullishCoalesce(s.showSeconds, () => (!1))}let a=Math.floor(n/(3600*24)),i=Math.floor(n%(3600*24)/3600),c=Math.floor(n%3600/60),m=n%60;if(r||(i+=a*24,a=0),a===0&&i===0&&c===0)return t?"< 1 M":"less than a minute";let g=a>0?`${a}${t?"D":" day"}${!t&&a!==1?"s":""}`:"",N=i>0?`${i}${t?"H":" hour"}${!t&&i!==1?"s":""}`:"",M=c>0&&u||!a&&!i?`${c}${t?"M":" minute"}${!t&&c!==1?"s":""}`:"",I=m>0&&l?`${m}${t?"S":" second"}${!t&&m!==1?"s":""}`:"";return[g,N,M,I].filter(Boolean).join(t?" ":", ")}var _bignumberjs = require('@berachain/utils/pkg/bignumber.js'); var _bignumberjs2 = _interopRequireDefault(_bignumberjs);var U=["","K","M","B","T","P","E","Z","Y"];function _(e){return e instanceof _bignumberjs2.default?e:new (0, _bignumberjs2.default)(e)}function X(e,n){return _(e).shiftedBy(n*-1)}function we(e,n={}){if(typeof n=="number"){let d=n;if(e==null)return"";if(typeof e=="object")throw new Error("Value must be a number if using deprecated version");let b=Number(e).toFixed(d);return b=b.replace(/(\.\d*?[1-9])0+$|\.0*$/,"$1"),b}let{visibleDecimals:t,compact:r=!0,percent:u=!1,roundDown:l=!1,roundUp:a=!1,compactThreshold:i,maxValue:c,symbol:m,prefixText:g="",suffixText:N="",showIsSmallerThanMin:M=!0,ifNullish:I=""}=n||{};if(e==null)return I;let s=u?Number(e)*100:Number(e);if(Number.isNaN(s))return"NaN";if(s===Number.POSITIVE_INFINITY)return"Infinity";if(s===Number.NEGATIVE_INFINITY)return"-Infinity";let o=_nullishCoalesce(t, () => (0));s===0?o=0:t===void 0&&(Math.abs(s)>1||u||m==="USD"?o=2:o=7);let D=10**-o,$=s!==0&&Math.abs(s)<Math.abs(D),R=s<0,L=c?Math.abs(s)>c:!1,p=$?D:s,T=r&&(!i||Math.abs(s)>i);l&&!T?p=Math.trunc(Number(p)*10**o)/10**o:a&&!T&&(p=Math.ceil(Number(p)*10**o)/10**o);let x;if(L)x=s>c?"\u221E":"-\u221E";else if(T){let d=_(p),b=d.abs().toFixed(0).length;i&&Math.abs(s)<=i&&(b=0);let E=Math.min(Math.floor(b?(b-1)/3:0),U.length-1),B=U[E],h=X(d,3*E).toNumber();l?h=Math.trunc(Number(h)*10**o)/10**o:a&&(h=Math.ceil(Number(h)*10**o)/10**o),x=`${new Intl.NumberFormat("en-US",{maximumFractionDigits:o,minimumFractionDigits:o}).format(h)}${B}`}else{let d=new Intl.NumberFormat("en-US",{maximumFractionDigits:o,minimumFractionDigits:o}).format(Math.abs(p));x=`${R?"-":""}${d}`}let f=[];return g&&f.push(g),$&&M&&f.push(s<0?">":"<"),_optionalChain([m, 'optionalAccess', _8 => _8.toLowerCase, 'call', _9 => _9()])==="usd"&&!u&&f.push("$"),f.push(x),u&&f.push("%"),_optionalChain([m, 'optionalAccess', _10 => _10.toLowerCase, 'call', _11 => _11()])!=="usd"&&typeof m<"u"&&f.push(" ",m),N&&f.push(N),f.join("")}var De=e=>e?Number(e)>Number.MAX_SAFE_INTEGER?Number.MAX_SAFE_INTEGER:_nullishCoalesce(Number(e), () => (0)):0,$e= exports.D =(e,n)=>{if(!e)return"0";let[t="0",r="0"]=`${e}`.split(".");return`${t}.${r.substring(0,n)}`};var _internal = require('@berachain/config/internal');function Ue(e=_internal.defaultChainId){let n=_internal.getRpcUrls.call(void 0, e);if(!n.isAnvil)throw new Error("No anvil RPC URL found");return _viem.createTestClient.call(void 0, {mode:"anvil",transport:_viem.http.call(void 0, n.jsonRpcUrl)})}function Re({lastBlockTimestamp:e,blockTime:n}){return e?e<Date.now()/1e3-n*10:!0}exports.a = F; exports.b = C; exports.c = ee; exports.d = re; exports.e = oe; exports.f = se; exports.g = ue; exports.h = ie; exports.i = ae; exports.j = ce; exports.k = le; exports.l = O; exports.m = V; exports.n = j; exports.o = J; exports.p = q; exports.q = S; exports.r = w; exports.s = be; exports.t = pe; exports.u = de; exports.v = he; exports.w = ge; exports.x = Ne; exports.y = ye; exports.z = Me; exports.A = Ie; exports.B = we; exports.C = De; exports.D = $e; exports.E = Ue; exports.F = Re;
|
|
2
|
-
//# sourceMappingURL=chunk-MUNAP5TM.cjs.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["/Users/pong/coding/monobera/packages/berajs/dist/chunk-MUNAP5TM.cjs","../src/utils/getErrorResponse.ts","../src/utils/beraFetch.ts","../src/utils/constants.ts","../src/utils/pythHoneyUtils.ts","../src/utils/time.ts","../src/utils/formatTimestamps.ts"],"names":["getErrorResponse","response","text","beraFetch","endpoint","options","error","RequestError","beraFetchJson","CAP_LIMIT_BUFFER","parseEther","MAX_CUSTOM_DEADLINE","MIN_CUSTOM_DEADLINE","MIN_CUSTOM_SLIPPAGE","MAX_CUSTOM_SLIPPAGE","DEFAULT_METAMASK_GAS_LIMIT","getPythDefaultUpdateFee","tokenListLength","msToSeconds","ms","seconds","minutes","minutesInSeconds","hours","hoursInSeconds","days","daysInSeconds","weeks","weeksInSeconds","months","monthsInSeconds","years","yearsInSeconds","calculateTimestampFromDays","daysRange","currentDate","monthNames","shortMonthNames","formatUnixTimestamp","unixTimestamp","isShort","date","day","daySuffix"],"mappings":"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","file":"/Users/pong/coding/monobera/packages/berajs/dist/chunk-MUNAP5TM.cjs","sourcesContent":[null,"/**\n * @deprecated use beraFetch instead\n */\nexport async function getErrorResponse(response: Response) {\n const contentType = response.headers.get(\"content-type\");\n\n if (contentType?.includes(\"application/json\")) {\n return await response.json();\n } else {\n const text = await response.text();\n try {\n return JSON.parse(text);\n } catch {\n return {\n message: \"Unknown error, can't decode response into JSON\",\n cause: text,\n };\n }\n }\n}\n","import { RequestError } from \"~/errors/RequestError\";\nimport { getErrorResponse } from \"./getErrorResponse\";\n\ntype RequestOptions = RequestInit;\n\nexport async function beraFetch(\n endpoint: ConstructorParameters<typeof RequestError>[0][\"endpoint\"],\n options?: RequestOptions,\n) {\n try {\n const response = await fetch(\n typeof endpoint === \"string\" || endpoint instanceof URL\n ? endpoint\n : endpoint.url,\n {\n ...options,\n },\n );\n if (!response.ok) {\n const error = await getErrorResponse(response);\n throw new RequestError({\n cause: error,\n // @to-do import getErrorResponse logic in this function\n // when it's removed from other places\n response: response,\n endpoint,\n });\n }\n return response;\n } catch (error) {\n if (error instanceof RequestError) {\n throw error;\n }\n\n throw new RequestError({\n cause: error,\n endpoint,\n response: undefined,\n });\n }\n}\n\nexport async function beraFetchJson<T>(\n endpoint: ConstructorParameters<typeof RequestError>[0][\"endpoint\"],\n options?: RequestOptions,\n) {\n const response = await beraFetch(endpoint, {\n ...options,\n headers: {\n Accept: \"application/json\",\n ...options?.headers,\n },\n });\n return response.json() as Promise<T>;\n}\n","import { parseEther } from \"viem\";\n\n// the buffer of the cap limit, if the user gets close to 10% of the cap limit\n// they should be warned\nexport const CAP_LIMIT_BUFFER = parseEther(\"0.005\");\n\n/**\n * Maximum allowed input for a custom deadline in seconds.\n * @type {number}\n */\nexport const MAX_CUSTOM_DEADLINE = 100000;\n\n/**\n * Minimum allowed input for a custom deadline in seconds.\n * @type {number}\n */\nexport const MIN_CUSTOM_DEADLINE = 1;\n\n/**\n * Minimum allowed input for a custom slippage tolerance percentage.\n * @type {number}\n */\nexport const MIN_CUSTOM_SLIPPAGE = 0.1;\n\n/**\n * Maximum allowed input for a custom slippage tolerance percentage.\n * @type {number}\n */\nexport const MAX_CUSTOM_SLIPPAGE = 50;\n\n/**\n * Default gas limit used by MetaMask\n * @see {@link https://github.com/MetaMask/metamask-extension/blob/06cf7459b963e26d0ae60312d4f9a342d07ab89d/ui/pages/confirmations/send/send.constants.js#L8}\n */\nexport const DEFAULT_METAMASK_GAS_LIMIT = 7920027n;\n","export const getPythDefaultUpdateFee = (tokenListLength: number) => {\n return 2n * BigInt(tokenListLength);\n};\n","/**\n * Convert milliseconds to seconds\n */\nexport function msToSeconds(ms: number): number {\n return Math.floor(ms / 1000);\n}\n\n/**\n * Time utility functions for converting between different time units.\n *\n * This utility file provides functions to convert between seconds, minutes, hours, and days.\n * Note on naming conventions: We use \"seconds\" instead of \"secondsToMs\" because JavaScript\n * is typically based in milliseconds, so the conversion to milliseconds is the more common\n * and expected operation. We use \"xxxInSeconds\" when converting to second-based units.\n */\n\n/**\n * Convert seconds to milliseconds\n */\nexport function seconds(seconds: number): number {\n return seconds * 1000;\n}\n\n/**\n * Convert minutes to milliseconds\n */\nexport function minutes(minutes: number): number {\n return minutes * seconds(60);\n}\n\n/**\n * Convert minutes to seconds\n */\nexport function minutesInSeconds(minutes: number): number {\n return minutes * 60;\n}\n\n/**\n * Convert hours to milliseconds\n */\nexport function hours(hours: number): number {\n return hours * minutes(60);\n}\n\n/**\n * Convert hours to seconds\n */\nexport function hoursInSeconds(hours: number): number {\n return hours * minutesInSeconds(60);\n}\n\n/**\n * Convert days to milliseconds\n */\nexport function days(days: number): number {\n return days * hours(24);\n}\n\n/**\n * Convert days to seconds\n */\nexport function daysInSeconds(days: number): number {\n return days * hoursInSeconds(24);\n}\n\n/**\n * Convert weeks to milliseconds\n */\nexport function weeks(weeks: number): number {\n return weeks * days(7);\n}\n\n/**\n * Convert weeks to seconds\n */\nexport function weeksInSeconds(weeks: number): number {\n return weeks * daysInSeconds(7);\n}\n\n/**\n * Convert months to milliseconds using 30 days per month\n */\nexport function months(months: number): number {\n return months * days(30);\n}\n\n/**\n * Convert months to seconds using 30 days per month\n */\nexport function monthsInSeconds(months: number): number {\n return months * daysInSeconds(30);\n}\n\n/**\n * Convert years to milliseconds using 365 days per year\n */\nexport function years(years: number): number {\n return years * days(365);\n}\n\n/**\n * Convert years to seconds using 365 days per year\n */\nexport function yearsInSeconds(years: number): number {\n return years * daysInSeconds(365);\n}\n","export function calculateTimestampFromDays(daysRange: number): number {\n const currentDate = new Date();\n return currentDate.setDate(currentDate.getDate() - daysRange) * 1000;\n}\n\nconst monthNames = [\n \"January\",\n \"February\",\n \"March\",\n \"April\",\n \"May\",\n \"June\",\n \"July\",\n \"August\",\n \"September\",\n \"October\",\n \"November\",\n \"December\",\n];\n\nconst shortMonthNames = [\n \"Jan\",\n \"Feb\",\n \"Mar\",\n \"Apr\",\n \"May\",\n \"Jun\",\n \"Jul\",\n \"Aug\",\n \"Sep\",\n \"Oct\",\n \"Nov\",\n \"Dec\",\n];\n\nexport function formatUnixTimestamp(unixTimestamp: number, isShort?: boolean) {\n const date = new Date(unixTimestamp * 1000);\n\n const day = date.getDate();\n let daySuffix = \"th\";\n\n if (day === 1 || day === 21 || day === 31) {\n daySuffix = \"st\";\n } else if (day === 2 || day === 22) {\n daySuffix = \"nd\";\n } else if (day === 3 || day === 23) {\n daySuffix = \"rd\";\n }\n\n if (isShort) {\n return `${shortMonthNames[date.getMonth()]} ${day}`;\n }\n\n return `${\n monthNames[date.getMonth()]\n } ${day}${daySuffix}, ${date.getFullYear()}`;\n}\n\ntype LegacyArgs = [number, boolean?, boolean?, boolean?];\ntype FormatTimeLeftArgs = [\n number,\n {\n condensed?: boolean;\n greaterUnit?: \"days\" | \"hours\" | \"minutes\";\n showSeconds?: boolean;\n },\n];\n\n/**\n * Formats the time left into a string like \"8 hours, 23 minutes\".\n *\n * @param timeLeftInSeconds - The time left in seconds.\n * @returns A formatted string representing the time left.\n */\nexport function formatTimeLeft(\n ...args: FormatTimeLeftArgs | LegacyArgs\n): string {\n const timeLeftInSeconds = args[0];\n let condensed: boolean;\n\n let showDays: boolean;\n\n let showMinutes: boolean;\n let showSeconds: boolean;\n\n if (typeof args[1] !== \"object\") {\n condensed = args[1] ?? false;\n showDays = args[2] ?? false;\n showSeconds = args[3] ?? false;\n showMinutes = true;\n } else {\n const opts = args[1];\n condensed = opts.condensed ?? false;\n const greaterUnit = opts.greaterUnit ?? \"hours\";\n\n if (greaterUnit === \"days\") {\n showDays = true;\n showMinutes = true;\n } else if (greaterUnit === \"hours\") {\n showDays = false;\n showMinutes = true;\n showSeconds = false;\n } else {\n // minutes is the default\n showDays = false;\n showMinutes = true;\n }\n showSeconds = opts.showSeconds ?? false;\n }\n\n let days = Math.floor(timeLeftInSeconds / (3600 * 24));\n let hours = Math.floor((timeLeftInSeconds % (3600 * 24)) / 3600);\n const minutes = Math.floor((timeLeftInSeconds % 3600) / 60);\n const seconds = timeLeftInSeconds % 60;\n\n // If showDays=false, roll days into hours\n if (!showDays) {\n hours += days * 24;\n days = 0;\n }\n\n if (days === 0 && hours === 0 && minutes === 0) {\n return condensed ? \"< 1 M\" : \"less than a minute\";\n }\n\n const daysDisplay =\n days > 0\n ? `${days}${condensed ? \"D\" : \" day\"}${\n !condensed && days !== 1 ? \"s\" : \"\"\n }`\n : \"\";\n\n const hoursDisplay =\n hours > 0\n ? `${hours}${condensed ? \"H\" : \" hour\"}${\n !condensed && hours !== 1 ? \"s\" : \"\"\n }`\n : \"\";\n\n const minutesDisplay =\n (minutes > 0 && showMinutes) || (!days && !hours)\n ? `${minutes}${condensed ? \"M\" : \" minute\"}${\n !condensed && minutes !== 1 ? \"s\" : \"\"\n }`\n : \"\";\n const secondsDisplay =\n seconds > 0 && showSeconds\n ? `${seconds}${condensed ? \"S\" : \" second\"}${\n !condensed && seconds !== 1 ? \"s\" : \"\"\n }`\n : \"\";\n return [daysDisplay, hoursDisplay, minutesDisplay, secondsDisplay]\n .filter(Boolean)\n .join(condensed ? \" \" : \", \");\n}\n"]}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["/Users/pong/coding/monobera/packages/berajs/dist/chunk-OS5AJMYJ.cjs","../src/utils/parseBaseArgs.ts"],"names":["parseBaseArgs","args","chainId","defaultChainId","config","chainConfigs","InvalidArgumentError"],"mappings":"AAAA,qOAAwC,sDCIjC,SAISA,CAAAA,CAAcC,CAAAA,CAA+B,CAC3D,IAAMC,CAAAA,kBAAUD,CAAAA,CAAK,OAAA,SAAWE,0BAAAA,CAC1BC,CAAAA,kBAAqBH,CAAAA,CAAK,MAAA,SAAUI,sBAAAA,CAAaH,CAAO,GAAA,CAE9D,EAAA,CAAID,CAAAA,CAAK,OAAA,EAAWA,CAAAA,CAAK,OAAA,GAAYG,CAAAA,CAAO,OAAA,CAE1C,MAAM,IAAIE,wBAAAA,CAAqB,CAC7B,QAAA,CAAU,SAAA,CACV,KAAA,CAAOJ,CAAAA,CACP,QAAA,CAAU,CAAA,gBAAA,EAAmBE,CAAAA,CAAO,OAAO,CAAA,CAAA","file":"/Users/pong/coding/monobera/packages/berajs/dist/chunk-OS5AJMYJ.cjs","sourcesContent":[null,"import {\n type BeraConfig,\n chainConfigs,\n defaultChainId,\n} from \"@berachain/config/internal\";\n\nimport { InvalidArgumentError } from \"~/errors/InvalidArgumentError\";\n\nexport function parseBaseArgs(args: BeraJS.BaseFunctionArgs) {\n const chainId = args.chainId ?? defaultChainId;\n const config: BeraConfig = args.config ?? chainConfigs[chainId];\n\n if (args.chainId && args.chainId !== config.chainId) {\n // this matches unless the config is explicitly provided\n throw new InvalidArgumentError({\n property: \"chainId\",\n value: chainId,\n expected: `config.chainId: ${config.chainId}`,\n });\n }\n\n return { config, chainId: config.chainId };\n}\n"]}
|
package/dist/chunk-TJWKS54T.mjs
DELETED
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
import{f as y}from"./chunk-C3G5KXCH.mjs";async function F(e){if(e.headers.get("content-type")?.includes("application/json"))return await e.json();{let t=await e.text();try{return JSON.parse(t)}catch{return{message:"Unknown error, can't decode response into JSON",cause:t}}}}async function C(e,n){try{let t=await fetch(typeof e=="string"||e instanceof URL?e:e.url,{...n});if(!t.ok){let r=await F(t);throw new y({cause:r,response:t,endpoint:e})}return t}catch(t){throw t instanceof y?t:new y({cause:t,endpoint:e,response:void 0})}}async function ee(e,n){return(await C(e,{...n,headers:{Accept:"application/json",...n?.headers}})).json()}import{parseEther as P}from"viem";var re=P("0.005"),oe=1e5,se=1,ue=.1,ie=50,ae=7920027n;var ce=e=>2n*BigInt(e);function le(e){return Math.floor(e/1e3)}function O(e){return e*1e3}function V(e){return e*O(60)}function j(e){return e*60}function J(e){return e*V(60)}function q(e){return e*j(60)}function S(e){return e*J(24)}function w(e){return e*q(24)}function be(e){return e*S(7)}function pe(e){return e*w(7)}function de(e){return e*S(30)}function he(e){return e*w(30)}function ge(e){return e*S(365)}function Ne(e){return e*w(365)}function ye(e){let n=new Date;return n.setDate(n.getDate()-e)*1e3}var G=["January","February","March","April","May","June","July","August","September","October","November","December"],k=["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"];function Me(e,n){let t=new Date(e*1e3),r=t.getDate(),u="th";return r===1||r===21||r===31?u="st":r===2||r===22?u="nd":(r===3||r===23)&&(u="rd"),n?`${k[t.getMonth()]} ${r}`:`${G[t.getMonth()]} ${r}${u}, ${t.getFullYear()}`}function Ie(...e){let n=e[0],t,r,u,l;if(typeof e[1]!="object")t=e[1]??!1,r=e[2]??!1,l=e[3]??!1,u=!0;else{let s=e[1];t=s.condensed??!1;let o=s.greaterUnit??"hours";o==="days"?(r=!0,u=!0):o==="hours"?(r=!1,u=!0,l=!1):(r=!1,u=!0),l=s.showSeconds??!1}let a=Math.floor(n/(3600*24)),i=Math.floor(n%(3600*24)/3600),c=Math.floor(n%3600/60),m=n%60;if(r||(i+=a*24,a=0),a===0&&i===0&&c===0)return t?"< 1 M":"less than a minute";let g=a>0?`${a}${t?"D":" day"}${!t&&a!==1?"s":""}`:"",N=i>0?`${i}${t?"H":" hour"}${!t&&i!==1?"s":""}`:"",M=c>0&&u||!a&&!i?`${c}${t?"M":" minute"}${!t&&c!==1?"s":""}`:"",I=m>0&&l?`${m}${t?"S":" second"}${!t&&m!==1?"s":""}`:"";return[g,N,M,I].filter(Boolean).join(t?" ":", ")}import A from"@berachain/utils/pkg/bignumber.js";var U=["","K","M","B","T","P","E","Z","Y"];function _(e){return e instanceof A?e:new A(e)}function X(e,n){return _(e).shiftedBy(n*-1)}function we(e,n={}){if(typeof n=="number"){let d=n;if(e==null)return"";if(typeof e=="object")throw new Error("Value must be a number if using deprecated version");let b=Number(e).toFixed(d);return b=b.replace(/(\.\d*?[1-9])0+$|\.0*$/,"$1"),b}let{visibleDecimals:t,compact:r=!0,percent:u=!1,roundDown:l=!1,roundUp:a=!1,compactThreshold:i,maxValue:c,symbol:m,prefixText:g="",suffixText:N="",showIsSmallerThanMin:M=!0,ifNullish:I=""}=n||{};if(e==null)return I;let s=u?Number(e)*100:Number(e);if(Number.isNaN(s))return"NaN";if(s===Number.POSITIVE_INFINITY)return"Infinity";if(s===Number.NEGATIVE_INFINITY)return"-Infinity";let o=t??0;s===0?o=0:t===void 0&&(Math.abs(s)>1||u||m==="USD"?o=2:o=7);let D=10**-o,$=s!==0&&Math.abs(s)<Math.abs(D),R=s<0,L=c?Math.abs(s)>c:!1,p=$?D:s,T=r&&(!i||Math.abs(s)>i);l&&!T?p=Math.trunc(Number(p)*10**o)/10**o:a&&!T&&(p=Math.ceil(Number(p)*10**o)/10**o);let x;if(L)x=s>c?"\u221E":"-\u221E";else if(T){let d=_(p),b=d.abs().toFixed(0).length;i&&Math.abs(s)<=i&&(b=0);let E=Math.min(Math.floor(b?(b-1)/3:0),U.length-1),B=U[E],h=X(d,3*E).toNumber();l?h=Math.trunc(Number(h)*10**o)/10**o:a&&(h=Math.ceil(Number(h)*10**o)/10**o),x=`${new Intl.NumberFormat("en-US",{maximumFractionDigits:o,minimumFractionDigits:o}).format(h)}${B}`}else{let d=new Intl.NumberFormat("en-US",{maximumFractionDigits:o,minimumFractionDigits:o}).format(Math.abs(p));x=`${R?"-":""}${d}`}let f=[];return g&&f.push(g),$&&M&&f.push(s<0?">":"<"),m?.toLowerCase()==="usd"&&!u&&f.push("$"),f.push(x),u&&f.push("%"),m?.toLowerCase()!=="usd"&&typeof m<"u"&&f.push(" ",m),N&&f.push(N),f.join("")}var De=e=>e?Number(e)>Number.MAX_SAFE_INTEGER?Number.MAX_SAFE_INTEGER:Number(e)??0:0,$e=(e,n)=>{if(!e)return"0";let[t="0",r="0"]=`${e}`.split(".");return`${t}.${r.substring(0,n)}`};import{createTestClient as Y,http as K}from"viem";import{defaultChainId as z,getRpcUrls as H}from"@berachain/config/internal";function Ue(e=z){let n=H(e);if(!n.isAnvil)throw new Error("No anvil RPC URL found");return Y({mode:"anvil",transport:K(n.jsonRpcUrl)})}function Re({lastBlockTimestamp:e,blockTime:n}){return e?e<Date.now()/1e3-n*10:!0}export{F as a,C as b,ee as c,re as d,oe as e,se as f,ue as g,ie as h,ae as i,ce as j,le as k,O as l,V as m,j as n,J as o,q as p,S as q,w as r,be as s,pe as t,de as u,he as v,ge as w,Ne as x,ye as y,Me as z,Ie as A,we as B,De as C,$e as D,Ue as E,Re as F};
|
|
2
|
-
//# sourceMappingURL=chunk-TJWKS54T.mjs.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/utils/getErrorResponse.ts","../src/utils/beraFetch.ts","../src/utils/constants.ts","../src/utils/pythHoneyUtils.ts","../src/utils/time.ts","../src/utils/formatTimestamps.ts","../src/utils/formatNumber.ts","../src/utils/getTestClient.ts","../src/utils/isSubgraphStale.ts"],"sourcesContent":["/**\n * @deprecated use beraFetch instead\n */\nexport async function getErrorResponse(response: Response) {\n const contentType = response.headers.get(\"content-type\");\n\n if (contentType?.includes(\"application/json\")) {\n return await response.json();\n } else {\n const text = await response.text();\n try {\n return JSON.parse(text);\n } catch {\n return {\n message: \"Unknown error, can't decode response into JSON\",\n cause: text,\n };\n }\n }\n}\n","import { RequestError } from \"~/errors/RequestError\";\nimport { getErrorResponse } from \"./getErrorResponse\";\n\ntype RequestOptions = RequestInit;\n\nexport async function beraFetch(\n endpoint: ConstructorParameters<typeof RequestError>[0][\"endpoint\"],\n options?: RequestOptions,\n) {\n try {\n const response = await fetch(\n typeof endpoint === \"string\" || endpoint instanceof URL\n ? endpoint\n : endpoint.url,\n {\n ...options,\n },\n );\n if (!response.ok) {\n const error = await getErrorResponse(response);\n throw new RequestError({\n cause: error,\n // @to-do import getErrorResponse logic in this function\n // when it's removed from other places\n response: response,\n endpoint,\n });\n }\n return response;\n } catch (error) {\n if (error instanceof RequestError) {\n throw error;\n }\n\n throw new RequestError({\n cause: error,\n endpoint,\n response: undefined,\n });\n }\n}\n\nexport async function beraFetchJson<T>(\n endpoint: ConstructorParameters<typeof RequestError>[0][\"endpoint\"],\n options?: RequestOptions,\n) {\n const response = await beraFetch(endpoint, {\n ...options,\n headers: {\n Accept: \"application/json\",\n ...options?.headers,\n },\n });\n return response.json() as Promise<T>;\n}\n","import { parseEther } from \"viem\";\n\n// the buffer of the cap limit, if the user gets close to 10% of the cap limit\n// they should be warned\nexport const CAP_LIMIT_BUFFER = parseEther(\"0.005\");\n\n/**\n * Maximum allowed input for a custom deadline in seconds.\n * @type {number}\n */\nexport const MAX_CUSTOM_DEADLINE = 100000;\n\n/**\n * Minimum allowed input for a custom deadline in seconds.\n * @type {number}\n */\nexport const MIN_CUSTOM_DEADLINE = 1;\n\n/**\n * Minimum allowed input for a custom slippage tolerance percentage.\n * @type {number}\n */\nexport const MIN_CUSTOM_SLIPPAGE = 0.1;\n\n/**\n * Maximum allowed input for a custom slippage tolerance percentage.\n * @type {number}\n */\nexport const MAX_CUSTOM_SLIPPAGE = 50;\n\n/**\n * Default gas limit used by MetaMask\n * @see {@link https://github.com/MetaMask/metamask-extension/blob/06cf7459b963e26d0ae60312d4f9a342d07ab89d/ui/pages/confirmations/send/send.constants.js#L8}\n */\nexport const DEFAULT_METAMASK_GAS_LIMIT = 7920027n;\n","export const getPythDefaultUpdateFee = (tokenListLength: number) => {\n return 2n * BigInt(tokenListLength);\n};\n","/**\n * Convert milliseconds to seconds\n */\nexport function msToSeconds(ms: number): number {\n return Math.floor(ms / 1000);\n}\n\n/**\n * Time utility functions for converting between different time units.\n *\n * This utility file provides functions to convert between seconds, minutes, hours, and days.\n * Note on naming conventions: We use \"seconds\" instead of \"secondsToMs\" because JavaScript\n * is typically based in milliseconds, so the conversion to milliseconds is the more common\n * and expected operation. We use \"xxxInSeconds\" when converting to second-based units.\n */\n\n/**\n * Convert seconds to milliseconds\n */\nexport function seconds(seconds: number): number {\n return seconds * 1000;\n}\n\n/**\n * Convert minutes to milliseconds\n */\nexport function minutes(minutes: number): number {\n return minutes * seconds(60);\n}\n\n/**\n * Convert minutes to seconds\n */\nexport function minutesInSeconds(minutes: number): number {\n return minutes * 60;\n}\n\n/**\n * Convert hours to milliseconds\n */\nexport function hours(hours: number): number {\n return hours * minutes(60);\n}\n\n/**\n * Convert hours to seconds\n */\nexport function hoursInSeconds(hours: number): number {\n return hours * minutesInSeconds(60);\n}\n\n/**\n * Convert days to milliseconds\n */\nexport function days(days: number): number {\n return days * hours(24);\n}\n\n/**\n * Convert days to seconds\n */\nexport function daysInSeconds(days: number): number {\n return days * hoursInSeconds(24);\n}\n\n/**\n * Convert weeks to milliseconds\n */\nexport function weeks(weeks: number): number {\n return weeks * days(7);\n}\n\n/**\n * Convert weeks to seconds\n */\nexport function weeksInSeconds(weeks: number): number {\n return weeks * daysInSeconds(7);\n}\n\n/**\n * Convert months to milliseconds using 30 days per month\n */\nexport function months(months: number): number {\n return months * days(30);\n}\n\n/**\n * Convert months to seconds using 30 days per month\n */\nexport function monthsInSeconds(months: number): number {\n return months * daysInSeconds(30);\n}\n\n/**\n * Convert years to milliseconds using 365 days per year\n */\nexport function years(years: number): number {\n return years * days(365);\n}\n\n/**\n * Convert years to seconds using 365 days per year\n */\nexport function yearsInSeconds(years: number): number {\n return years * daysInSeconds(365);\n}\n","export function calculateTimestampFromDays(daysRange: number): number {\n const currentDate = new Date();\n return currentDate.setDate(currentDate.getDate() - daysRange) * 1000;\n}\n\nconst monthNames = [\n \"January\",\n \"February\",\n \"March\",\n \"April\",\n \"May\",\n \"June\",\n \"July\",\n \"August\",\n \"September\",\n \"October\",\n \"November\",\n \"December\",\n];\n\nconst shortMonthNames = [\n \"Jan\",\n \"Feb\",\n \"Mar\",\n \"Apr\",\n \"May\",\n \"Jun\",\n \"Jul\",\n \"Aug\",\n \"Sep\",\n \"Oct\",\n \"Nov\",\n \"Dec\",\n];\n\nexport function formatUnixTimestamp(unixTimestamp: number, isShort?: boolean) {\n const date = new Date(unixTimestamp * 1000);\n\n const day = date.getDate();\n let daySuffix = \"th\";\n\n if (day === 1 || day === 21 || day === 31) {\n daySuffix = \"st\";\n } else if (day === 2 || day === 22) {\n daySuffix = \"nd\";\n } else if (day === 3 || day === 23) {\n daySuffix = \"rd\";\n }\n\n if (isShort) {\n return `${shortMonthNames[date.getMonth()]} ${day}`;\n }\n\n return `${\n monthNames[date.getMonth()]\n } ${day}${daySuffix}, ${date.getFullYear()}`;\n}\n\ntype LegacyArgs = [number, boolean?, boolean?, boolean?];\ntype FormatTimeLeftArgs = [\n number,\n {\n condensed?: boolean;\n greaterUnit?: \"days\" | \"hours\" | \"minutes\";\n showSeconds?: boolean;\n },\n];\n\n/**\n * Formats the time left into a string like \"8 hours, 23 minutes\".\n *\n * @param timeLeftInSeconds - The time left in seconds.\n * @returns A formatted string representing the time left.\n */\nexport function formatTimeLeft(\n ...args: FormatTimeLeftArgs | LegacyArgs\n): string {\n const timeLeftInSeconds = args[0];\n let condensed: boolean;\n\n let showDays: boolean;\n\n let showMinutes: boolean;\n let showSeconds: boolean;\n\n if (typeof args[1] !== \"object\") {\n condensed = args[1] ?? false;\n showDays = args[2] ?? false;\n showSeconds = args[3] ?? false;\n showMinutes = true;\n } else {\n const opts = args[1];\n condensed = opts.condensed ?? false;\n const greaterUnit = opts.greaterUnit ?? \"hours\";\n\n if (greaterUnit === \"days\") {\n showDays = true;\n showMinutes = true;\n } else if (greaterUnit === \"hours\") {\n showDays = false;\n showMinutes = true;\n showSeconds = false;\n } else {\n // minutes is the default\n showDays = false;\n showMinutes = true;\n }\n showSeconds = opts.showSeconds ?? false;\n }\n\n let days = Math.floor(timeLeftInSeconds / (3600 * 24));\n let hours = Math.floor((timeLeftInSeconds % (3600 * 24)) / 3600);\n const minutes = Math.floor((timeLeftInSeconds % 3600) / 60);\n const seconds = timeLeftInSeconds % 60;\n\n // If showDays=false, roll days into hours\n if (!showDays) {\n hours += days * 24;\n days = 0;\n }\n\n if (days === 0 && hours === 0 && minutes === 0) {\n return condensed ? \"< 1 M\" : \"less than a minute\";\n }\n\n const daysDisplay =\n days > 0\n ? `${days}${condensed ? \"D\" : \" day\"}${\n !condensed && days !== 1 ? \"s\" : \"\"\n }`\n : \"\";\n\n const hoursDisplay =\n hours > 0\n ? `${hours}${condensed ? \"H\" : \" hour\"}${\n !condensed && hours !== 1 ? \"s\" : \"\"\n }`\n : \"\";\n\n const minutesDisplay =\n (minutes > 0 && showMinutes) || (!days && !hours)\n ? `${minutes}${condensed ? \"M\" : \" minute\"}${\n !condensed && minutes !== 1 ? \"s\" : \"\"\n }`\n : \"\";\n const secondsDisplay =\n seconds > 0 && showSeconds\n ? `${seconds}${condensed ? \"S\" : \" second\"}${\n !condensed && seconds !== 1 ? \"s\" : \"\"\n }`\n : \"\";\n return [daysDisplay, hoursDisplay, minutesDisplay, secondsDisplay]\n .filter(Boolean)\n .join(condensed ? \" \" : \", \");\n}\n","import BigNumber from \"@berachain/utils/pkg/bignumber.js\";\n\nexport type BigNumberValue = string | number | BigNumber;\n\nexport interface FormatNumberOptions {\n /** Number of visible decimal places */\n visibleDecimals?: number;\n /** Whether to use compact notation (K, M, B, etc.) */\n compact?: boolean;\n /** Show as percentage */\n percent?: boolean;\n /** Round down instead of normal rounding */\n roundDown?: boolean;\n /** Round up instead of normal rounding */\n roundUp?: boolean;\n /** Threshold above which compact notation is used */\n compactThreshold?: number;\n /** Maximum value to display (shows ∞ if exceeded) */\n maxValue?: number;\n /** Currency symbol (e.g., \"USD\" for $) */\n symbol?: string;\n /** Prefix text */\n prefixText?: string;\n /** Suffix text */\n suffixText?: string;\n /** Show \"< min\" or \"> min\" indicators for very small values */\n showIsSmallerThanMin?: boolean;\n /** Text to show if value is null/undefined */\n ifNullish?: string;\n}\n\nconst POSTFIXES = [\"\", \"K\", \"M\", \"B\", \"T\", \"P\", \"E\", \"Z\", \"Y\"];\n\nfunction valueToBigNumber(amount: BigNumberValue): BigNumber {\n if (amount instanceof BigNumber) return amount;\n return new BigNumber(amount);\n}\n\nfunction normalizeBN(n: BigNumberValue, decimals: number): BigNumber {\n return valueToBigNumber(n).shiftedBy(decimals * -1);\n}\n\nexport function formatNumber(\n value: BigNumberValue | undefined | null,\n options: FormatNumberOptions | number = {},\n): string {\n if (typeof options === \"number\") {\n const decimals = options;\n if (value === undefined || value === null) {\n return \"\";\n }\n\n if (typeof value === \"object\") {\n throw new Error(\"Value must be a number if using deprecated version\");\n }\n\n // Convert to string with up to 8 decimal places\n let formatted = Number(value).toFixed(decimals);\n // Remove trailing zeros and decimal point if not needed\n formatted = formatted.replace(/(\\.\\d*?[1-9])0+$|\\.0*$/, \"$1\");\n return formatted;\n }\n\n const {\n visibleDecimals,\n compact = true,\n percent = false,\n roundDown = false,\n roundUp = false,\n compactThreshold,\n maxValue,\n symbol,\n prefixText = \"\",\n suffixText = \"\",\n showIsSmallerThanMin = true,\n ifNullish = \"\",\n } = options || {};\n\n // Handle null/undefined values\n if (value === undefined || value === null) {\n return ifNullish;\n }\n\n const number = percent ? Number(value) * 100 : Number(value);\n\n // Handle special numeric values\n if (Number.isNaN(number)) {\n return \"NaN\";\n }\n if (number === Number.POSITIVE_INFINITY) {\n return \"Infinity\";\n }\n if (number === Number.NEGATIVE_INFINITY) {\n return \"-Infinity\";\n }\n\n // Determine decimal places\n let decimals: number = visibleDecimals ?? 0;\n if (number === 0) {\n decimals = 0;\n } else if (visibleDecimals === undefined) {\n if (Math.abs(number) > 1 || percent || symbol === \"USD\") {\n decimals = 2;\n } else {\n decimals = 7;\n }\n }\n\n const minValue = 10 ** -(decimals as number);\n const isSmallerThanMin =\n number !== 0 && Math.abs(number) < Math.abs(minValue);\n const isNegative = number < 0;\n const isBiggerThanMax = maxValue ? Math.abs(number) > maxValue : false;\n\n let formattedNumber = isSmallerThanMin ? minValue : number;\n const forceCompact =\n compact && (!compactThreshold || Math.abs(number) > compactThreshold);\n\n // Apply rounding for non-compact numbers\n if (roundDown && !forceCompact) {\n formattedNumber =\n Math.trunc(Number(formattedNumber) * 10 ** decimals) / 10 ** decimals;\n } else if (roundUp && !forceCompact) {\n formattedNumber =\n Math.ceil(Number(formattedNumber) * 10 ** decimals) / 10 ** decimals;\n }\n\n let formattedValue: string;\n\n if (isBiggerThanMax) {\n formattedValue = number > maxValue! ? \"∞\" : \"-∞\";\n } else if (!forceCompact) {\n const absFormatted = new Intl.NumberFormat(\"en-US\", {\n maximumFractionDigits: decimals,\n minimumFractionDigits: decimals,\n }).format(Math.abs(formattedNumber));\n formattedValue = `${isNegative ? \"-\" : \"\"}${absFormatted}`;\n } else {\n // Compact number formatting\n const bnValue = valueToBigNumber(formattedNumber);\n let integerPlaces = bnValue.abs().toFixed(0).length;\n if (compactThreshold && Math.abs(number) <= compactThreshold) {\n integerPlaces = 0;\n }\n\n const significantDigitsGroup = Math.min(\n Math.floor(integerPlaces ? (integerPlaces - 1) / 3 : 0),\n POSTFIXES.length - 1,\n );\n\n const postfix = POSTFIXES[significantDigitsGroup];\n let compactValue = normalizeBN(\n bnValue,\n 3 * significantDigitsGroup,\n ).toNumber();\n\n if (roundDown) {\n compactValue =\n Math.trunc(Number(compactValue) * 10 ** decimals) / 10 ** decimals;\n } else if (roundUp) {\n compactValue =\n Math.ceil(Number(compactValue) * 10 ** decimals) / 10 ** decimals;\n }\n\n const prefix = new Intl.NumberFormat(\"en-US\", {\n maximumFractionDigits: decimals,\n minimumFractionDigits: decimals,\n }).format(compactValue);\n\n formattedValue = `${prefix}${postfix}`;\n }\n\n // Build the final formatted string\n const parts: string[] = [];\n\n // Add prefix text\n if (prefixText) {\n parts.push(prefixText);\n }\n\n // Add smaller than indicator\n if (isSmallerThanMin && showIsSmallerThanMin) {\n parts.push(number < 0 ? \">\" : \"<\");\n }\n\n // Add USD symbol\n if (symbol?.toLowerCase() === \"usd\" && !percent) {\n parts.push(\"$\");\n }\n\n // Add the formatted number\n parts.push(formattedValue);\n\n // Add percentage symbol\n if (percent) {\n parts.push(\"%\");\n }\n\n // Add other symbols\n if (symbol?.toLowerCase() !== \"usd\" && typeof symbol !== \"undefined\") {\n parts.push(\" \", symbol);\n }\n\n // Add suffix text\n if (suffixText) {\n parts.push(suffixText);\n }\n\n return parts.join(\"\");\n}\nexport const getSafeNumber = (value: string | undefined): number => {\n if (!value) return 0;\n return Number(value) > Number.MAX_SAFE_INTEGER\n ? Number.MAX_SAFE_INTEGER\n : (Number(value) ?? 0);\n};\n\nexport const truncateDecimal = (\n value: string | number | undefined,\n maxDecimal: number,\n): string => {\n if (!value) return \"0\";\n const [integerPart = \"0\", decimalPart = \"0\"] = `${value}`.split(\".\");\n return `${integerPart}.${decimalPart.substring(0, maxDecimal)}`;\n};\n","import { createTestClient, http } from \"viem\";\n\nimport {\n type ChainId,\n defaultChainId,\n getRpcUrls,\n} from \"@berachain/config/internal\";\n\nexport function getTestClient(chainId: ChainId = defaultChainId) {\n const rpc = getRpcUrls(chainId);\n\n if (!rpc.isAnvil) {\n throw new Error(\"No anvil RPC URL found\");\n }\n return createTestClient({\n mode: \"anvil\",\n transport: http(rpc.jsonRpcUrl),\n });\n}\n","export function isSubgraphStale({\n lastBlockTimestamp,\n blockTime,\n}: {\n lastBlockTimestamp: number | null | undefined;\n blockTime: number;\n}) {\n if (!lastBlockTimestamp) return true;\n return lastBlockTimestamp < Date.now() / 1000 - blockTime * 10;\n}\n"],"mappings":"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","names":["getErrorResponse","response","text","beraFetch","endpoint","options","response","error","getErrorResponse","RequestError","beraFetchJson","parseEther","CAP_LIMIT_BUFFER","MAX_CUSTOM_DEADLINE","MIN_CUSTOM_DEADLINE","MIN_CUSTOM_SLIPPAGE","MAX_CUSTOM_SLIPPAGE","DEFAULT_METAMASK_GAS_LIMIT","getPythDefaultUpdateFee","tokenListLength","msToSeconds","ms","seconds","minutes","minutesInSeconds","hours","hoursInSeconds","days","daysInSeconds","weeks","weeksInSeconds","months","monthsInSeconds","years","yearsInSeconds","calculateTimestampFromDays","daysRange","currentDate","monthNames","shortMonthNames","formatUnixTimestamp","unixTimestamp","isShort","date","day","daySuffix","formatTimeLeft","args","timeLeftInSeconds","condensed","showDays","showMinutes","showSeconds","opts","greaterUnit","days","hours","minutes","seconds","daysDisplay","hoursDisplay","minutesDisplay","secondsDisplay","BigNumber","POSTFIXES","valueToBigNumber","amount","normalizeBN","n","decimals","formatNumber","value","options","formatted","visibleDecimals","compact","percent","roundDown","roundUp","compactThreshold","maxValue","symbol","prefixText","suffixText","showIsSmallerThanMin","ifNullish","number","minValue","isSmallerThanMin","isNegative","isBiggerThanMax","formattedNumber","forceCompact","formattedValue","bnValue","integerPlaces","significantDigitsGroup","postfix","compactValue","absFormatted","parts","getSafeNumber","truncateDecimal","maxDecimal","integerPart","decimalPart","createTestClient","http","defaultChainId","getRpcUrls","getTestClient","chainId","rpc","isSubgraphStale","lastBlockTimestamp","blockTime"]}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["/Users/pong/coding/monobera/packages/berajs/dist/chunk-UQUWMHVF.cjs","../src/errors/initBeraError.ts","../src/errors/assert.ts","../src/utils/createEmitter.ts","../src/errors/BeraMonitoring.ts"],"names":["initBeraError","error","level","BaseError","parsed","parseViemError","RequestError","BeraError","_isDefined","value","_assert","property","fn","result","InvalidArgumentError","_assertDefined","isDefined","isValid","expectedType","assertDefined","assertPublicClient","assertAddress","isAddress","assertAmount","createEmitter","events","event","args","callback","cb","i","_emitter","BeraMonitoring","exception"],"mappings":"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","file":"/Users/pong/coding/monobera/packages/berajs/dist/chunk-UQUWMHVF.cjs","sourcesContent":[null,"import { BaseError } from \"viem\";\n\nimport { BeraError } from \"./BeraError\";\nimport { parseViemError } from \"./parseViemError\";\nimport { RequestError } from \"./RequestError\";\nimport type { SeverityLevel } from \"./severity\";\n\n/**\n * The preferred way to normalize any unknown error into a BeraError.\n *\n * This function acts as a smart factory that picks the correct BeraError subclass:\n *\n * 1. If `cause` is already a `BeraError`, returns it as-is (no double-wrapping).\n * 2. If `cause` is a viem `BaseError`, runs `parseViemError` to classify it:\n * - If the root cause is an `HttpRequestError` (RPC transport failure), wraps it\n * in a `RequestError` with the endpoint URL extracted from the error.\n * 3. Otherwise, wraps in a new `BeraError` — which triggers the automatic reason\n * detection pipeline in the BeraError constructor (parseViemError → errorMap → displayMessage).\n *\n * **Use this instead of `new BeraError({ cause })` when you don't know the error type.**\n * It ensures RequestErrors are correctly classified (important for Sentry filtering\n * and fingerprinting — RequestErrors are skipped from transaction error grouping).\n *\n * @example\n * ```ts\n * try {\n * await someOperation();\n * } catch (error) {\n * // Normalizes to the right subclass, reason auto-detected\n * throw initBeraError({ cause: error });\n * }\n * ```\n *\n * @example\n * ```ts\n * // Reporting to Sentry without rethrowing\n * catch (error) {\n * captureException(initBeraError({ cause: error }));\n * }\n * ```\n */\nexport function initBeraError({\n cause: error,\n level,\n}: {\n cause: unknown;\n /**\n * The severity level of the error, only used if the error is not a BeraError.\n */\n level?: SeverityLevel;\n}): BeraError {\n // ── Step 1: Check if it's a viem BaseError that wraps an RPC transport failure ──\n // parseViemError with revertIfUnknown=false won't throw — it returns { reason: undefined }\n // if the error chain doesn't match any known type.\n if (error instanceof BaseError) {\n const parsed = parseViemError({\n error,\n revertIfUnknown: false,\n });\n if (\n parsed.isRequestError &&\n parsed.rootCause instanceof BaseError &&\n \"url\" in parsed.rootCause &&\n typeof parsed.rootCause.url === \"string\"\n ) {\n // RPC transport failure (e.g. HTTP 502 from the RPC endpoint).\n // Wrapping in RequestError gives it proper endpoint tagging and level=\"warning\".\n return new RequestError({\n cause: parsed.rootCause,\n response: undefined,\n endpoint: {\n url: parsed.rootCause.url as string,\n type: \"rpc\",\n },\n level,\n });\n }\n }\n\n // ── Step 2: Return as-is if already a BeraError, otherwise wrap ──────────\n // The BeraError constructor will run automatic reason detection on the cause.\n const err =\n error instanceof BeraError\n ? error\n : new BeraError({\n cause: error,\n level,\n });\n\n return err;\n}\n","import type { GetPublicClientReturnType } from \"@wagmi/core\";\nimport { type Address, isAddress, type PublicClient } from \"viem\";\n\nimport { InvalidArgumentError } from \"./InvalidArgumentError\";\n\nfunction _isDefined<T>(value: T): value is NonNullable<T> {\n return value !== undefined && value !== null;\n}\n\ntype _AssertFn<T> = (value: T) => { expectedType: string; isValid: boolean };\n\n/**\n * Internal assertion function.\n * @throws An InvalidArgumentError if the value is not valid.\n */\nfunction _assert<T>({\n value,\n property,\n fn,\n}: {\n value: T;\n property: string;\n fn: _AssertFn<T>;\n}) {\n const result = fn(value);\n if (!result.isValid) {\n throw new InvalidArgumentError({\n property,\n value,\n expected: result.expectedType,\n });\n }\n}\n\nfunction _assertDefined<T>({\n value,\n property,\n fn,\n}: {\n value: T;\n property: string;\n fn: (value: T) => { expectedType: string; isValid: boolean };\n}) {\n _assert({\n value,\n property,\n fn: (value) => {\n const isDefined = _isDefined(value);\n const { isValid, expectedType } = fn(value);\n return {\n expectedType,\n isValid: isDefined && isValid,\n };\n },\n });\n}\n\n/**\n * Asserts that a value is defined.\n * @throws An InvalidArgumentError if the value is undefined or null.\n */\nexport function assertDefined<T>(\n /**\n * The value to assert.\n */\n value: T,\n /**\n * The property name.\n */\n property: string,\n): asserts value is NonNullable<T> {\n _assertDefined({\n value,\n property,\n fn: (value) => ({ expectedType: \"defined\", isValid: _isDefined(value) }),\n });\n}\n\n/**\n * Asserts that a value is a PublicClient.\n * @throws An InvalidArgumentError if the value is undefined or not a PublicClient.\n */\nexport function assertPublicClient(\n /**\n * The value to assert.\n */\n value: // it's important to have both types here because it helps with typescript build performance\n PublicClient | GetPublicClientReturnType | undefined,\n /**\n * The property name.\n */\n property: string = \"publicClient\",\n): asserts value is PublicClient {\n // there's no current way to check if a value is a PublicClient, so we just assert it's defined and `value: PublicClient` will do the rest\n assertDefined(value, property);\n}\n\n/**\n * Asserts that a value is an address (20 bytes).\n * @throws An InvalidArgumentError if the value is undefined, null, not a string, or not an address.\n */\nexport function assertAddress(\n /**\n * The value to assert.\n */\n value: string | undefined | null,\n /**\n * The property name.\n */\n property: string,\n): asserts value is Address {\n _assertDefined({\n value,\n property,\n fn: (value) => ({\n expectedType: \"Address\",\n isValid: typeof value === \"string\" && isAddress(value),\n }),\n });\n}\n\n/**\n * Asserts that a value is a number greater than 0.\n * @throws An InvalidArgumentError if the value is undefined, null, not a string or number, or not a number greater than 0.\n */\nexport function assertAmount(\n /**\n * The value to assert.\n */\n value: unknown,\n /**\n * The property name.\n */\n property: string,\n): asserts value is string | number {\n _assertDefined({\n value,\n property,\n fn: (value) => ({\n expectedType: \"number\",\n isValid:\n (typeof value === \"string\" || typeof value === \"number\") &&\n Number(value) > 0,\n }),\n });\n}\n","interface EventsMap {\n [event: string]: any;\n}\n\ninterface DefaultEvents extends EventsMap {\n [event: string]: (...args: any) => void;\n}\n\nexport type Unsubscribe = () => void;\n\nexport interface Emitter<Events extends EventsMap = DefaultEvents> {\n /**\n * Calls each of the listeners registered for a given event.\n *\n * ```js\n * ee.emit('tick', tickType, tickDuration)\n * ```\n *\n * @param event The event name.\n * @param args The arguments for listeners.\n */\n emit<K extends keyof Events>(event: K, ...args: Parameters<Events[K]>): void;\n\n /**\n * Add a listener for a given event.\n *\n * ```js\n * const unbind = ee.on('tick', (tickType, tickDuration) => {\n * count += 1\n * })\n *\n * disable () {\n * unbind()\n * }\n * ```\n *\n * @param event The event name.\n * @param cb The listener function.\n * @returns Unbind listener from event.\n */\n on<K extends keyof Events>(event: K, cb: Events[K]): Unsubscribe;\n events: Partial<{ [E in keyof Events]: Events[E][] }>;\n}\n\n/**\n * An interface for mixins that expose the `on` function (without the emitter\n * bound to `this`)\n *\n * ```js\n * import { createEmitter } from '~utils/createEmitter'\n *\n * class Ticker implements EmitterMixin<Events> {\n * constructor() {\n * this.emitter = createEmitter()\n * }\n * on(...args) {\n * return this.emitter.on(...args)\n * }\n * tick() {\n * this.emitter.emit('tick')\n * }\n * }\n * ```\n */\nexport interface EmitterMixin<Events extends EventsMap = DefaultEvents> {\n on<K extends keyof Events>(event: K, cb: Events[K]): Unsubscribe;\n}\n\n/**\n * Create event emitter.\n *\n * ```js\n * import { createEmitter } from '~/utils/createEmitter'\n *\n * class Ticker {\n * constructor() {\n * this.emitter = createEmitter()\n * }\n * on(...args) {\n * return this.emitter.on(...args)\n * }\n * tick() {\n * this.emitter.emit('tick')\n * }\n * }\n * ```\n *\n * Inspired by {@link https://github.com/ai/nanoevents}\n */\nexport function createEmitter<\n Events extends EventsMap = DefaultEvents,\n>(): Emitter<Events> {\n /**\n * Event names in keys and arrays with listeners in values.\n *\n * ```js\n * emitter1.events = emitter2.events\n * emitter2.events = { }\n * ```\n */\n const events: Partial<{ [E in keyof Events]: Events[E][] }> = {};\n\n return {\n emit(event, ...args) {\n for (const callback of events[event] || []) {\n callback(...args);\n }\n },\n events,\n on(event, cb) {\n if (!events[event]) {\n events[event] = [];\n }\n\n events[event].push(cb);\n\n return () => {\n events[event] = events[event]?.filter((i) => cb !== i);\n };\n },\n };\n}\n","import { createEmitter, type EmitterMixin } from \"~/utils/createEmitter\";\nimport type { BeraError } from \"./BeraError\";\nimport type { SeverityLevel } from \"./severity\";\n\n/**\n * Context passed alongside captured exceptions.\n * Mirrors the subset of Sentry's CaptureContext that berajs actually uses.\n */\nexport interface CaptureContext {\n level: SeverityLevel;\n extra?: Record<string, unknown>;\n tags?: Record<string, string | number | boolean | null | undefined>;\n fingerprint?: string[];\n data?: Record<string, unknown>;\n}\n\nexport interface ErrorEvent {\n exception: BeraError;\n timestamp: number;\n}\n\nconst _emitter = createEmitter<{ exception: (event: ErrorEvent) => void }>();\n\n/**\n * A generic error reporter for berajs.\n *\n * Instead of calling Sentry.captureException directly, berajs calls\n * `BeraMonitoring.captureException()`. Consumer apps subscribe via `.on()` and\n * forward events to their monitoring provider (Sentry, Datadog, etc.).\n *\n * @example\n * ```ts\n * // In berajs code:\n * import { BeraMonitoring } from \"~/errors/BeraMonitoring\";\n * BeraMonitoring.captureExceptionException(error);\n *\n * // In app instrumentation:\n * import { BeraMonitoring } from \"@berachain/berajs/errors\";\n * BeraMonitoring.on((event) => {\n * if (event.type === \"exception\") {\n * Sentry.captureException(event.exception);\n * }\n * });\n * ```\n */\nexport const BeraMonitoring: {\n captureException: (exception: BeraError) => void;\n} & EmitterMixin<{ exception: (event: ErrorEvent) => void }> = {\n /**\n * Capture an exception. Notifies all subscribers.\n */\n captureException(exception: BeraError): void {\n const event: ErrorEvent = {\n exception,\n timestamp: Date.now(),\n };\n _emitter.emit(\"exception\", event);\n },\n /**\n * Subscribe to error events.\n * @returns An unsubscribe function.\n */\n on(...args) {\n return _emitter.on(...args);\n },\n};\n"]}
|
package/dist/chunk-UXUWSRVV.cjs
DELETED
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports, "__esModule", {value: true}); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } function _nullishCoalesce(lhs, rhsFn) { if (lhs != null) { return lhs; } else { return rhsFn(); } } function _optionalChain(ops) { let lastAccessLHS = undefined; let value = ops[0]; let i = 1; while (i < ops.length) { const op = ops[i]; const fn = ops[i + 1]; i += 2; if ((op === 'optionalAccess' || op === 'optionalCall') && value == null) { return undefined; } if (op === 'access' || op === 'optionalAccess') { lastAccessLHS = value; value = fn(value); } else if (op === 'call' || op === 'optionalCall') { value = fn((...args) => value.call(lastAccessLHS, ...args)); lastAccessLHS = undefined; } } return value; }var _chunkZAKA4TGKcjs = require('./chunk-ZAKA4TGK.cjs');var _chunkUQUWMHVFcjs = require('./chunk-UQUWMHVF.cjs');var _chunkVXL2ZZ4Xcjs = require('./chunk-VXL2ZZ4X.cjs');var _chunkOS5AJMYJcjs = require('./chunk-OS5AJMYJ.cjs');var _chunk7SC4VD3Ucjs = require('./chunk-7SC4VD3U.cjs');var _react = require('react');var _edgeconfig = require('@berachain/config/internal/edge-config');var _jsxruntime = require('react/jsx-runtime');var I=_react.createContext.call(void 0, void 0);function De({children:e,flags:t,aggregators:o,swberaAprWindow:n="DAY"}){return _jsxruntime.jsx.call(void 0, I.Provider,{value:{..._chunkVXL2ZZ4Xcjs.a,...t,aggregators:o?Object.entries(o).filter(([,r])=>_edgeconfig.isFlagEnabled.call(void 0, r)).map(([r])=>r):void 0,swberaAprWindow:n},children:e})}function $(){let e=_react.useContext.call(void 0, I);if(!e)throw new Error("BeraFlagsProvider not found");return e}function Me(e){return $()[e]}var N=_react.createContext.call(void 0, {protocol:{isPaused:!1,factories:{composableStable:"enabled",weighted:"enabled",allPaused:!1}},onPoolChange:()=>{},pool:void 0});function Ye(){let e=_react.useContext.call(void 0, N);if(!e)throw new (0, _chunk7SC4VD3Ucjs.e)({level:"fatal",message:"BexStateContext is not defined"});return e}function _e({children:e,isVaultPaused:t,labels:o,factories:n}){let[r,p]=_react.useState.call(void 0, ),s=_nullishCoalesce((_optionalChain([r, 'optionalAccess', _2 => _2.isPaused])&&!_optionalChain([r, 'optionalAccess', _3 => _3.isInRecoveryMode])), () => (!1)),d=t||_optionalChain([r, 'optionalAccess', _4 => _4.isPaused]);return _jsxruntime.jsx.call(void 0, N.Provider,{value:{protocol:{isPaused:t,factories:{...n,allPaused:n.composableStable==="paused"&&n.weighted==="paused"}},labels:o,onPoolChange:p,pool:r?{...r,disablePoolWithdrawals:!!s,disablePoolDeposits:!!d}:void 0},children:e})}var _mainnet = require('@berachain/config/mainnet');function je(){return _react.useContext.call(void 0, D)}var D=_react.createContext.call(void 0, _mainnet.mainnet.averageBlockTime);function ze({children:e,blockTime:t,...o}){let{config:n}=_chunkOS5AJMYJcjs.a.call(void 0, o);return _jsxruntime.jsx.call(void 0, D.Provider,{value:_nullishCoalesce(t, () => (n.averageBlockTime)),children:e})}var M=_react.createContext.call(void 0, void 0);function et({children:e,...t}){return _jsxruntime.jsx.call(void 0, M.Provider,{value:t,children:e})}function tt(){let e=_react.useContext.call(void 0, M);if(!e)throw new Error("useHoneyConfig must be used within a HoneyConfigProvider");return e}var _swr = require('swr'); var _swr2 = _interopRequireDefault(_swr);var _hooks = require('@berachain/wagmi/hooks');var _core = require('@wagmi/core');var _viem = require('viem');async function O({account:e,wagmiConfig:t,chainId:o,ensoClient:n}){let p=(await n.getBalances({useEoa:!0,chainId:_nullishCoalesce(o, () => ("all")),eoaAddress:e})).map(a=>({name:a.name,symbol:a.symbol,decimals:a.decimals,address:_chunkOS5AJMYJcjs.e.call(void 0, a.token,"ETH")?_chunkOS5AJMYJcjs.b.address:a.token,logoURI:a.logoUri,balance:{raw:a.amount.toString(),formatted:_viem.formatUnits.call(void 0, BigInt(a.amount),a.decimals)},chainId:Number(a.chainId),price:Number(a.price)})),s=Object.groupBy(p,a=>_nullishCoalesce(a.chainId, () => (0))),d=await Promise.allSettled(Object.entries(s).map(async([a,u])=>{if(!u)return;let h=_core.getChains.call(void 0, t).find(c=>c.id===Number(a));if(!h)return;let i=_optionalChain([h, 'access', _5 => _5.contracts, 'optionalAccess', _6 => _6.multicall3, 'optionalAccess', _7 => _7.address]);if(!i)return _chunkUQUWMHVFcjs.f.captureException(new (0, _chunk7SC4VD3Ucjs.g)({property:"multicallAddress",value:i,expected:"Address",chainId:Number(a)})),u;let g=await _core.multicall.call(void 0, t,{chainId:Number(a),contracts:u.map(c=>_chunkZAKA4TGKcjs.b.call(void 0, {token:c,account:e,multicallAddress:i})),allowFailure:!0}),f=[];for(let c=0;c<u.length;c++){let l=u[c];if(g[c].status==="success"){let y=g[c].result;f.push({...l,balance:{raw:_nullishCoalesce(_optionalChain([y, 'optionalAccess', _8 => _8.toString, 'call', _9 => _9()]), () => ("0")),formatted:_viem.formatUnits.call(void 0, _nullishCoalesce(y, () => (0n)),l.decimals)}})}else console.error("error getting balance",g[c].error),_chunkUQUWMHVFcjs.f.captureException(_chunkUQUWMHVFcjs.a.call(void 0, {cause:g[c].error})),f.push(l)}return f})),m=[];for(let a of d)a.status==="fulfilled"?m.push(..._nullishCoalesce(a.value, () => ([]))):_chunkUQUWMHVFcjs.f.captureException(_chunkUQUWMHVFcjs.a.call(void 0, {cause:a.reason}));return m.sort((a,u)=>{let h=Number(a.balance.formatted)*(_nullishCoalesce(a.price, () => (0)));return Number(u.balance.formatted)*(_nullishCoalesce(u.price, () => (0)))-h})}function U({chainId:e}={},t){let{address:o}=_hooks.useBeraWallet.call(void 0, ),n=_hooks.useConfig.call(void 0, ),r=!!o&&(_nullishCoalesce(_optionalChain([t, 'optionalAccess', _10 => _10.opts, 'optionalAccess', _11 => _11.isEnabled]), () => (!0))),s=_swr2.default.call(void 0, r&&n?["useEnsoUserTokensWithBalances",o,e]:null,async([,d,m])=>O({account:d,wagmiConfig:n,chainId:_nullishCoalesce(m, () => ("all")),ensoClient:_chunkZAKA4TGKcjs.a.call(void 0, )}),{refreshInterval:1e5,isEnabled:r,..._optionalChain([t, 'optionalAccess', _12 => _12.opts])});return{...s,refresh:()=>s.mutate()}}function q({defaultTokenList:e=[],externalList:t=[]}){if(e.length===0)return{tokenList:t,customTokenList:t,featuredTokenList:[]};let o=e.map(s=>({...s,default:!0})),n=o.filter(s=>_optionalChain([s, 'access', _13 => _13.tags, 'optionalAccess', _14 => _14.some, 'call', _15 => _15(d=>d==="featured")])),r=[...o,...t];return{tokenList:r.filter((s,d)=>r.findIndex(m=>_chunkOS5AJMYJcjs.e.call(void 0, m,s))===d),customTokenList:t,featuredTokenList:n}}var xe=_react.createContext.call(void 0, void 0);function Ct({children:e,defaultTokens:t,edgeConfigTokenList:o,userTokens:n,onAddToken:r,onRemoveToken:p}){let{data:s,refresh:d}=U(),{tokenList:m=[],featuredTokenList:a=[]}=_react.useMemo.call(void 0, ()=>q({defaultTokenList:[...t,..._optionalChain([o, 'optionalAccess', _16 => _16.filter, 'call', _17 => _17(u=>_edgeconfig.isFlagEnabled.call(void 0, u.enabled))])],externalList:[...n,...(_nullishCoalesce(s, () => ([]))).map(u=>({...u,balance:void 0,price:void 0}))]}),[t,n,o,s]);return _jsxruntime.jsx.call(void 0, xe.Provider,{value:{tokenList:m,userTokens:n,featuredTokens:a,ensoTokens:s,onAddToken(u){r(u,{defaultTokens:t,userTokens:n,tokenList:m})},onRemoveToken:p,refresh:()=>{d()}},children:e})}var J="rk-transactions",K="transactions";function Y(e){try{let t=e?JSON.parse(e):{};return typeof t=="object"?t:{}}catch (e2){return{}}}function ve(e){return Object.entries(e).reduce((t,[o,n])=>({...t,[o]:Object.entries(n).reduce((r,[p,s])=>{if(!s)return r;let d=s.map(m=>({...m,chainId:Number(p)}));return r.push(...d),r},[])}),{})}var S=(e,t,o)=>o.findIndex(n=>n.hash===e.hash)===t;function Ce(e,t){let o=ve(e);for(let[n,r]of Object.entries(t))o[n]&&r?o[n]=[...r,...o[n]].filter(S):o[n]=_optionalChain([r, 'optionalAccess', _18 => _18.filter, 'call', _19 => _19(S)]);return o}function _(){let e=Y(typeof localStorage<"u"?localStorage.getItem(J):null),t=Y(typeof localStorage<"u"?localStorage.getItem(K):null);return Ce(e,t)}var Pe=/^0x([A-Fa-f0-9]{64})$/;function Se(e){if(!Pe.test(e.hash))throw new (0, _chunk7SC4VD3Ucjs.g)({property:"hash",value:e.hash,expected:"TransactionHash"});if(typeof e.description!="string")throw new (0, _chunk7SC4VD3Ucjs.g)({property:"description",value:e.description,expected:"string"});if(typeof e.confirmations<"u"&&(!Number.isInteger(e.confirmations)||e.confirmations<1))throw new (0, _chunk7SC4VD3Ucjs.g)({property:"confirmations",value:e.confirmations,expected:"positive integer"})}function V({config:e}){let t=_(),o=new Set,n=new Map;function r(i){return _nullishCoalesce(t[i], () => ([]))}function p(i,g){let f={...g,status:"pending"};try{Se(f),a(i,c=>[f,...c.filter(({hash:l})=>l!==f.hash)])}catch(c){_chunkUQUWMHVFcjs.f.captureException(_chunkUQUWMHVFcjs.a.call(void 0, {cause:c}))}}function s(i){a(i,()=>[])}function d(i,g,f){a(i,c=>c.map(l=>l.hash===g?{...l,status:f}:l))}async function m(i){let g=r(i).filter(f=>f.status==="pending");await Promise.allSettled(g.map(async f=>{let{confirmations:c,hash:l,chainId:y}=f,b=n.get(l);if(b)return await b;let B=_core.getPublicClient.call(void 0, e,{chainId:y});if(!B)return;let w=B.waitForTransactionReceipt({confirmations:c,hash:l}).then(({status:v})=>{v!==void 0&&d(i,l,Number(v)===0?"failed":"confirmed")}).catch(v=>{_chunkUQUWMHVFcjs.f.captureException(_chunkUQUWMHVFcjs.a.call(void 0, {cause:v}))}).finally(()=>{n.delete(l)});return n.set(l,w),await w}))}function a(i,g){t=_(),t[i]=_nullishCoalesce(t[i], () => ([]));let l=g(_nullishCoalesce(_optionalChain([t, 'optionalAccess', _20 => _20[i]]), () => ([]))).sort((y,b)=>b.timestamp-y.timestamp).slice(0,10);t[i]=l.length>0?l.filter(S):void 0,u(),h()}function u(){typeof localStorage>"u"||(localStorage.setItem(K,JSON.stringify(t)),localStorage.removeItem(J))}function h(){for(let i of o)i()}function P(i){return o.add(i),()=>{o.delete(i)}}return{addTransaction:p,clearTransactions:s,getTransactions:r,onChange:P,refreshPendingTransactions:m,setTransactionStatus:d}}var Q,X=_react.createContext.call(void 0, null);function It({children:e}){let{account:t}=_hooks.useBeraWagmi.call(void 0, ),o=_optionalChain([t, 'optionalAccess', _21 => _21.wallet, 'optionalAccess', _22 => _22.address]),n=_hooks.useConfig.call(void 0, ),[r]=_react.useState.call(void 0, ()=>_nullishCoalesce(Q, () => ((Q=V({config:n})))));return _react.useEffect.call(void 0, ()=>{if(!o)return;let p=()=>{r.refreshPendingTransactions(o)};p();let s=setInterval(p,12e4),d=()=>{document.visibilityState==="visible"&&p()};return typeof document<"u"&&document.addEventListener("visibilitychange",d),()=>{clearInterval(s),typeof document<"u"&&document.removeEventListener("visibilitychange",d)}},[r,o]),_jsxruntime.jsx.call(void 0, X.Provider,{value:r,children:e})}function Nt(){let e=_react.useContext.call(void 0, X);if(!e)throw new Error("Transaction hooks must be used within ");return e}exports.a = De; exports.b = $; exports.c = Me; exports.d = N; exports.e = Ye; exports.f = _e; exports.g = je; exports.h = D; exports.i = ze; exports.j = M; exports.k = et; exports.l = tt; exports.m = xe; exports.n = Ct; exports.o = Y; exports.p = ve; exports.q = S; exports.r = Ce; exports.s = V; exports.t = It; exports.u = Nt;
|
|
2
|
-
//# sourceMappingURL=chunk-UXUWSRVV.cjs.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["/Users/pong/coding/monobera/packages/berajs/dist/chunk-UXUWSRVV.cjs","../src/contexts/BeraFlags/BeraFlags.tsx","../src/contexts/BexStatusProvider.tsx","../src/contexts/block-time-provider.tsx","../src/contexts/HoneyConfigProvider.tsx","../src/contexts/TokensProvider.tsx","../src/hooks/enso/useEnsoUserTokensWithBalances.ts","../src/actions/enso/getEnsoUserTokensWithBalances.ts","../src/utils/formatTokenList.ts","../src/hooks/transactions/transactionStore.ts","../src/contexts/TransactionStoreContext.tsx"],"names":["BeraFlagContext","createContext","BeraFlagsProvider","children","flags","aggregators","swberaAprWindow","jsx","defaultFlags","value","isFlagEnabled","key","useBeraFlags","context","useContext","useBeraFlag","BexStateContext","useBexStatus","BeraError","BexStatusProvider","isVaultPaused","labels","factories","poolState","setPoolState","useState","disablePoolWithdrawals","disablePoolDeposits","useBlockTime","BlockTimeContext","mainnet","BlockTimeProvider","blockTime","args","config","parseBaseArgs","HoneyConfigContext","HoneyConfigProvider","props","useHoneyConfig","getEnsoUserTokensWithBalances","account","wagmiConfig","chainId","ensoClient","tokens","balance","isToken","beraToken","formatUnits","tokenByChainId","balances","chainTokens","chainConfig","getChains","chain","multicallAddress","BeraMonitoring","InvalidArgumentError","multicall","token","getBalanceCall","tokensWithBalances","index","initBeraError","flattenedBalances","result","b","aValue","useEnsoUserTokensWithBalances","options","fromAddress","useBeraWallet","useConfig","isEnabled","swrResponse","useSWR","getEnsoClient","formatTokenList","defaultTokenList","externalList","defaultList","featuredTokenList","tag","mergedList","item","i","TokenContext","TokensProvider","defaultTokens","edgeConfigTokenList","userTokens","onAddToken","onRemoveToken","ensoTokens","refresh","tokenList","useMemo","t","tk","storageKeyLegacy","storageKey","safeParseJsonData","string","convertLegacyDataToNewData","legacyData","acc","chains","transactions","transactionsArray","transaction","filterDuplicatefn","tx","idx","arr","otherTx","mergeData","newData","mergedData","loadData","data","transactionHashRegex","validateTransaction","createTransactionStore","listeners","transactionRequestCache","getTransactions","addTransaction","normalized","updateTransactions","hash","error","clearTransactions","setTransactionStatus","status","refreshPendingTransactions","pendingTransactions","confirmations","existingRequest","provider","getPublicClient","requestPromise","updateFn","a","persistData","notifyListeners","listener","onChange","fn","storeSingleton","TransactionStoreContext","TransactionStoreProvider","useBeraWagmi","address","store","useEffect","intervalId","onVisibilityChange","useTransactionStore"],"mappings":"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","file":"/Users/pong/coding/monobera/packages/berajs/dist/chunk-UXUWSRVV.cjs","sourcesContent":[null,"import { createContext, useContext } from \"react\";\n\nimport {\n type EdgeConfigSchema,\n isFlagEnabled,\n} from \"@berachain/config/internal/edge-config\";\n\nimport { type BeraFlags, defaultFlags } from \"./defaultFlags\";\n\nexport type { BeraFlags };\n\nexport type BeraFlagsContextReturn = BeraFlags & {\n /**\n * A list of aggregators that are enabled. If not provided, all aggregators are enabled.\n */\n aggregators: string[] | undefined;\n swberaAprWindow: Exclude<\n EdgeConfigSchema[\"pol\"][\"swberaAprWindow\"],\n undefined\n >;\n};\n\nconst BeraFlagContext = createContext<BeraFlagsContextReturn | undefined>(\n undefined,\n);\n\nexport function BeraFlagsProvider({\n children,\n flags,\n aggregators,\n swberaAprWindow = \"DAY\",\n}: {\n children: React.ReactNode;\n flags: BeraFlags;\n aggregators?: NonNullable<EdgeConfigSchema[\"bex\"]>[\"aggregators\"];\n swberaAprWindow?: EdgeConfigSchema[\"pol\"][\"swberaAprWindow\"];\n}) {\n return (\n <BeraFlagContext.Provider\n value={{\n ...defaultFlags,\n ...flags,\n aggregators: aggregators\n ? Object.entries(aggregators)\n .filter(([, value]) => isFlagEnabled(value))\n .map(([key]) => key)\n : undefined,\n swberaAprWindow,\n }}\n >\n {children}\n </BeraFlagContext.Provider>\n );\n}\n\nexport function useBeraFlags() {\n const context = useContext(BeraFlagContext);\n if (!context) {\n throw new Error(\"BeraFlagsProvider not found\");\n }\n return context;\n}\n\nexport function useBeraFlag<T extends keyof BeraFlagsContextReturn>(\n key: T,\n): BeraFlagsContextReturn[T] {\n const flags = useBeraFlags();\n return flags[key];\n}\n","import {\n createContext,\n type Dispatch,\n type PropsWithChildren,\n type SetStateAction,\n useContext,\n useState,\n} from \"react\";\nimport type { Hex } from \"viem\";\n\nimport type { EdgeConfigSchema } from \"@berachain/config/internal/edge-config\";\n\nimport { BeraError } from \"~/errors/BeraError\";\n\ntype FactoryStatus = {\n /**\n * If the composable stable factory is enabled\n */\n composableStable: \"paused\" | \"enabled\";\n /**\n * If the weighted factory is enabled\n */\n weighted: \"paused\" | \"enabled\";\n};\nexport interface BexStatusProviderProps {\n isVaultPaused: boolean;\n pool?: {\n id: Hex;\n isInRecoveryMode: boolean;\n isPaused: boolean;\n };\n factories: FactoryStatus;\n labels?: NonNullable<EdgeConfigSchema[\"bex\"]>[\"emergencyLabels\"];\n}\n\nexport const BexStateContext = createContext<{\n protocol: {\n isPaused: boolean;\n factories: FactoryStatus & { allPaused: boolean };\n };\n onPoolChange: Dispatch<SetStateAction<BexStatusProviderProps[\"pool\"]>>;\n pool?: {\n id: Hex;\n isInRecoveryMode: boolean;\n isPaused: boolean;\n disablePoolWithdrawals: boolean;\n disablePoolDeposits: boolean;\n };\n labels?: NonNullable<EdgeConfigSchema[\"bex\"]>[\"emergencyLabels\"];\n}>({\n protocol: {\n isPaused: false,\n factories: {\n composableStable: \"enabled\",\n weighted: \"enabled\",\n allPaused: false,\n },\n },\n onPoolChange: () => {},\n pool: undefined,\n});\n\n/**\n * @description Determines the status of a pool or vault and returns the appropriate messages and flags to disable functionality.\n * More information here https://www.notion.so/berachain/BEX-RecoveryMode-and-Pause-explained-17c6120abced80e0985dd589b57ff018\n *\n * @returns status flags to enable/disable/notify users across the BEX\n *\n **/\nexport function useBexStatus() {\n const context = useContext(BexStateContext);\n\n if (!context) {\n throw new BeraError({\n level: \"fatal\",\n message: \"BexStateContext is not defined\",\n });\n }\n\n return context;\n}\n\nexport function BexStatusProvider({\n children,\n isVaultPaused,\n labels,\n factories,\n}: PropsWithChildren<BexStatusProviderProps>) {\n const [poolState, setPoolState] = useState<BexStatusProviderProps[\"pool\"]>();\n // Determine whether to disable withdrawals for a pool (vault pause does not impact this)\n const disablePoolWithdrawals =\n (poolState?.isPaused && !poolState?.isInRecoveryMode) ?? false;\n\n // Determine whether to disable deposits for a pool (vault pause does not impact this)\n const disablePoolDeposits = isVaultPaused || poolState?.isPaused;\n\n // TODO: we dont yet support anything to disable staking/unstaking within reward vaults if they get paused\n\n return (\n <BexStateContext.Provider\n value={{\n protocol: {\n isPaused: isVaultPaused,\n factories: {\n ...factories,\n allPaused:\n factories.composableStable === \"paused\" &&\n factories.weighted === \"paused\",\n },\n },\n labels,\n onPoolChange: setPoolState,\n pool: poolState\n ? {\n ...poolState,\n disablePoolWithdrawals: !!disablePoolWithdrawals,\n disablePoolDeposits: !!disablePoolDeposits,\n }\n : undefined,\n }}\n >\n {children}\n </BexStateContext.Provider>\n );\n}\n","import { createContext, type PropsWithChildren, useContext } from \"react\";\n\nimport { mainnet } from \"@berachain/config/mainnet\";\n\nimport { parseBaseArgs } from \"~/utils/parseBaseArgs\";\n\n/**\n * Average berachain block time in seconds\n */\nexport function useBlockTime(): number {\n return useContext(BlockTimeContext);\n}\n\nexport const BlockTimeContext = createContext<number>(\n // this is the default block time for berachain, but actually overridden by the block time provider\n mainnet.averageBlockTime,\n);\n\nexport function BlockTimeProvider({\n children,\n blockTime,\n ...args\n}: PropsWithChildren<{\n blockTime?: number;\n}> &\n BeraJS.BaseFunctionArgs) {\n const { config } = parseBaseArgs(args);\n\n return (\n <BlockTimeContext.Provider value={blockTime ?? config.averageBlockTime}>\n {children}\n </BlockTimeContext.Provider>\n );\n}\n","import { createContext, useContext } from \"react\";\n\nimport type { HoneyFeeMap } from \"~/actions/honey/getHoneyFees\";\nimport type { TokenWithMetadata } from \"~/types/dex\";\nimport type { PythPriceFeedMap } from \"~/types/honeySwap\";\n\nexport const HoneyConfigContext = createContext<\n HoneyConfigContextReturn | undefined\n>(undefined);\n\nexport type TokenWithOrder = TokenWithMetadata & {\n order: number;\n};\nexport interface HoneyConfigContextReturn {\n /**\n * Map of the Pyth price feed ids for each collateral\n */\n priceFeedMap: PythPriceFeedMap;\n /**\n * This is the list of all the collaterals that are supported by the Honey protocol\n */\n collateralList: TokenWithOrder[];\n /**\n * This is the main collateral that is used to calculate the relative cap limit\n */\n referenceCollateral: TokenWithOrder;\n /**\n * An object that maps the redeem/mint rate for each collateral and the weighted rates for the basket mode\n */\n feeMap: HoneyFeeMap;\n flags: {\n /**\n * If true, mint/redeem will also update pyth prices\n */\n isPythWrapperEnabled: boolean;\n };\n /**\n * Honey protocol configs\n */\n protocol: {\n /**\n * Honey protocol paused state\n */\n isPaused: boolean;\n /**\n * The label for the Honey protocol paused message\n */\n pausedBannerLabel?: string;\n };\n}\n\nexport interface HoneyConfigProviderProps extends HoneyConfigContextReturn {\n children: React.ReactNode;\n}\n\nexport function HoneyConfigProvider({\n children,\n ...props\n}: HoneyConfigProviderProps) {\n return (\n <HoneyConfigContext.Provider value={props}>\n {children}\n </HoneyConfigContext.Provider>\n );\n}\n\nexport function useHoneyConfig() {\n const context = useContext(HoneyConfigContext);\n if (!context) {\n throw new Error(\"useHoneyConfig must be used within a HoneyConfigProvider\");\n }\n return context;\n}\n","import { createContext, type PropsWithChildren, useMemo } from \"react\";\n\nimport {\n type EdgeConfigSchema,\n isFlagEnabled,\n} from \"@berachain/config/internal/edge-config\";\n\nimport { useEnsoUserTokensWithBalances } from \"~/hooks/enso/useEnsoUserTokensWithBalances\";\nimport type { BalanceToken, Token, TokenWithMetadata } from \"~/types/dex\";\nimport { formatTokenList } from \"~/utils/formatTokenList\";\n\nexport interface TokensProviderContext {\n tokenList: TokenWithMetadata[];\n userTokens: Token[];\n featuredTokens: TokenWithMetadata[];\n onRemoveToken: (token: Token) => void;\n onAddToken: (token: Token) => void;\n refresh: () => void;\n ensoTokens: BalanceToken[] | undefined;\n}\n\nexport const TokenContext = createContext<TokensProviderContext | undefined>(\n undefined,\n);\n\nexport interface TokensProviderProps\n extends Omit<\n TokensProviderContext,\n \"tokenList\" | \"onAddToken\" | \"featuredTokens\" | \"ensoTokens\"\n > {\n onAddToken: (\n token: Token,\n context: {\n defaultTokens: TokenWithMetadata[];\n userTokens: Token[];\n tokenList: TokenWithMetadata[];\n },\n ) => void;\n defaultTokens: TokenWithMetadata[];\n edgeConfigTokenList: EdgeConfigSchema[\"tokens\"];\n}\n\nexport function TokensProvider({\n children,\n defaultTokens,\n edgeConfigTokenList,\n userTokens,\n onAddToken,\n onRemoveToken,\n}: PropsWithChildren<Omit<TokensProviderProps, \"refresh\">>) {\n const { data: ensoTokens, refresh } = useEnsoUserTokensWithBalances();\n\n const { tokenList = [], featuredTokenList = [] } = useMemo(\n () =>\n formatTokenList({\n defaultTokenList: [\n ...defaultTokens,\n ...(edgeConfigTokenList?.filter((token) =>\n isFlagEnabled(token.enabled),\n ) as TokenWithMetadata[]),\n ],\n externalList: [\n ...userTokens,\n ...(ensoTokens ?? []).map((t) => ({\n ...t,\n balance: undefined,\n price: undefined,\n })),\n ],\n }),\n [defaultTokens, userTokens, edgeConfigTokenList, ensoTokens],\n );\n\n return (\n <TokenContext.Provider\n value={{\n tokenList,\n userTokens,\n featuredTokens: featuredTokenList,\n ensoTokens,\n onAddToken(tk) {\n onAddToken(tk, { defaultTokens, userTokens, tokenList });\n },\n onRemoveToken,\n refresh: () => {\n refresh();\n },\n }}\n >\n {children}\n </TokenContext.Provider>\n );\n}\n","import useSWR from \"swr\";\n\nimport { useBeraWallet, useConfig } from \"@berachain/wagmi/hooks\";\n\nimport { getEnsoClient } from \"~/actions/clients/getEnsoClient\";\nimport { getEnsoUserTokensWithBalances } from \"~/actions/enso/getEnsoUserTokensWithBalances\";\nimport { POLLING } from \"~/enum/polling\";\nimport type { BalanceToken } from \"~/types/dex\";\nimport type { DefaultHookOptions } from \"~/types/global\";\n\nexport function useEnsoUserTokensWithBalances(\n { chainId }: { chainId?: number } = {},\n options?: DefaultHookOptions,\n) {\n const { address: fromAddress } = useBeraWallet();\n const wagmiConfig = useConfig();\n const isEnabled = !!fromAddress && (options?.opts?.isEnabled ?? true);\n\n const QUERY_KEY =\n isEnabled && wagmiConfig\n ? ([\"useEnsoUserTokensWithBalances\", fromAddress, chainId] as const)\n : null;\n\n const swrResponse = useSWR(\n QUERY_KEY,\n async ([, fromAddress, chainId]): Promise<BalanceToken[]> =>\n getEnsoUserTokensWithBalances({\n account: fromAddress,\n wagmiConfig,\n chainId: chainId ?? \"all\",\n ensoClient: getEnsoClient(),\n }),\n {\n refreshInterval: POLLING.NORMAL,\n isEnabled,\n ...options?.opts,\n },\n );\n return {\n ...swrResponse,\n refresh: () => swrResponse.mutate(),\n };\n}\n","import type { EnsoClient } from \"@ensofinance/sdk\";\nimport { type Config, getChains, multicall } from \"@wagmi/core\";\nimport { type Address, formatUnits } from \"viem\";\n\nimport { BeraMonitoring } from \"~/errors/BeraMonitoring\";\nimport { InvalidArgumentError } from \"~/errors/InvalidArgumentError\";\nimport { initBeraError } from \"~/errors/initBeraError\";\nimport type { BalanceToken } from \"~/types/dex\";\nimport { beraToken, isToken } from \"~/utils/tokens\";\nimport { getBalanceCall } from \"../tokens/getWalletBalances\";\n\n/**\n * Get user balances for each supported chain.\n *\n * This uses enso's balance endpoint to get the balances and RPC to get fresh balances.\n */\nexport async function getEnsoUserTokensWithBalances({\n account,\n wagmiConfig,\n chainId,\n ensoClient,\n}: {\n account: Address;\n wagmiConfig: Config;\n chainId: number | \"all\";\n ensoClient: EnsoClient;\n}): Promise<BalanceToken[]> {\n const ensoBalances = await ensoClient.getBalances({\n useEoa: true,\n chainId: chainId ?? \"all\",\n eoaAddress: account,\n });\n\n const tokens: BalanceToken[] = ensoBalances.map(\n (balance) =>\n ({\n name: balance.name,\n symbol: balance.symbol,\n decimals: balance.decimals,\n address: isToken(balance.token, \"ETH\")\n ? beraToken.address\n : balance.token,\n logoURI: balance.logoUri,\n balance: {\n raw: balance.amount.toString(),\n formatted: formatUnits(BigInt(balance.amount), balance.decimals),\n },\n\n chainId: Number(\n // @ts-expect-error - balance.chainId is defined just not typed by enso\n balance.chainId,\n ),\n price: Number(balance.price),\n }) as const satisfies BalanceToken,\n );\n\n const tokenByChainId = Object.groupBy(tokens, (a) => a.chainId ?? 0);\n\n const balances = await Promise.allSettled(\n Object.entries(tokenByChainId).map(async ([chainId, chainTokens]) => {\n if (!chainTokens) return undefined;\n const chainConfig = getChains(wagmiConfig).find(\n (chain) => chain.id === Number(chainId),\n );\n\n if (!chainConfig) {\n // if we've queried a chain that is not supported, we need to return undefined\n return undefined;\n }\n\n const multicall3 = chainConfig.contracts?.multicall3;\n\n const multicallAddress = multicall3?.address;\n\n if (!multicallAddress) {\n // if multicall is not supported on this chain, we need to use the enso balance\n // first let's report the error, as this is likely unexpected\n BeraMonitoring.captureException(\n new InvalidArgumentError({\n property: \"multicallAddress\",\n value: multicallAddress,\n expected: \"Address\",\n chainId: Number(chainId),\n }),\n );\n\n // we can return the tokens as is, as the balance is already set from the enso client\n return chainTokens;\n }\n\n const balances = await multicall(wagmiConfig, {\n chainId: Number(chainId),\n contracts: chainTokens.map((token) =>\n getBalanceCall({\n token,\n account,\n multicallAddress,\n }),\n ),\n allowFailure: true,\n });\n\n const tokensWithBalances: BalanceToken[] = [];\n\n for (let index = 0; index < chainTokens.length; index++) {\n const token = chainTokens[index];\n if (balances[index].status === \"success\") {\n const balance = balances[index].result;\n\n tokensWithBalances.push({\n ...token,\n balance: {\n raw: balance?.toString() ?? \"0\",\n formatted: formatUnits(balance ?? 0n, token.decimals),\n },\n });\n } else {\n console.error(\"error getting balance\", balances[index].error);\n BeraMonitoring.captureException(\n initBeraError({ cause: balances[index].error }),\n );\n // uses enso balance as fallback\n tokensWithBalances.push(token);\n }\n }\n\n return tokensWithBalances;\n }),\n );\n\n const flattenedBalances: BalanceToken[] = [];\n for (const result of balances) {\n if (result.status === \"fulfilled\") {\n flattenedBalances.push(...(result.value ?? []));\n } else {\n BeraMonitoring.captureException(initBeraError({ cause: result.reason }));\n }\n }\n\n return flattenedBalances.sort((a, b) => {\n const aValue = Number(a.balance.formatted) * (a.price ?? 0);\n const bValue = Number(b.balance.formatted) * (b.price ?? 0);\n return bValue - aValue;\n });\n}\n","import type { Token, TokenWithMetadata } from \"../types/dex\";\nimport { isToken } from \"./tokens\";\n\nexport interface FormatTokenListReturnType {\n /**\n * Token list including custom tokens\n */\n tokenList: Token[];\n /**\n * Custom token list (added by the user)\n */\n customTokenList?: Token[];\n /**\n * Featured token list\n */\n featuredTokenList?: Token[];\n}\n\nfunction formatTokenList({\n defaultTokenList = [],\n externalList = [],\n}: {\n defaultTokenList: TokenWithMetadata[];\n externalList?: Token[];\n}): FormatTokenListReturnType {\n if (defaultTokenList.length === 0) {\n return {\n tokenList: externalList,\n customTokenList: externalList,\n featuredTokenList: [],\n };\n }\n\n const defaultList = defaultTokenList.map((token) => {\n return { ...token, default: true };\n });\n\n const featuredTokenList = defaultList.filter((token) => {\n return token.tags?.some((tag) => tag === \"featured\");\n });\n\n const mergedList = [...defaultList, ...externalList];\n\n const uniqueList = mergedList.filter(\n (item, index) => mergedList.findIndex((i) => isToken(i, item)) === index,\n );\n\n return {\n tokenList: uniqueList,\n customTokenList: externalList,\n featuredTokenList,\n };\n}\n\nexport { formatTokenList };\n","import { type Config, getPublicClient } from \"@wagmi/core\";\nimport type { Address } from \"viem\";\n\nimport type { TransactionActionType } from \"~/enum/txnEnum\";\nimport { BeraMonitoring } from \"~/errors/BeraMonitoring\";\nimport { InvalidArgumentError } from \"~/errors/InvalidArgumentError\";\nimport { initBeraError } from \"~/errors/initBeraError\";\n\nconst storageKeyLegacy = \"rk-transactions\";\nconst storageKey = \"transactions\";\n\nexport type TransactionStatus = \"pending\" | \"confirmed\" | \"failed\";\n\nexport interface Transaction {\n hash: string;\n description: string;\n actionType?: TransactionActionType;\n timestamp: number;\n status: TransactionStatus;\n confirmations?: number;\n chainId: number;\n}\n\nexport type NewTransaction = Omit<Transaction, \"status\">;\n\nexport type DataLegacy = Record<\n string,\n Record<number, Transaction[] | undefined>\n>;\nexport type Data = Record<string, Transaction[] | undefined>;\n\nexport function safeParseJsonData<T = DataLegacy | Data>(\n string: string | null,\n): T {\n try {\n const value = string ? JSON.parse(string) : {};\n return typeof value === \"object\" ? value : {};\n } catch {\n return {} as T;\n }\n}\n/**\n *\n * @param legacyData - The legacy data to convert to the new data format.\n * removes the nested chains and converts the data to a flat array.\n * @returns Data in the new format with the chainId added to each transaction.\n */\nexport function convertLegacyDataToNewData(legacyData: DataLegacy): Data {\n return Object.entries(legacyData).reduce((acc, [account, chains]) => {\n return {\n ...acc,\n [account]: Object.entries(chains).reduce(\n (acc, [chainId, transactions]) => {\n if (!transactions) {\n return acc;\n }\n const transactionsArray = transactions.map(\n (transaction): Transaction => ({\n ...transaction,\n chainId: Number(chainId),\n }),\n );\n acc.push(...transactionsArray);\n return acc;\n },\n [] as NewTransaction[],\n ),\n };\n }, {});\n}\n\n/**\n * Filter out duplicate transactions by hash\n */\nexport const filterDuplicatefn = (\n tx: Transaction,\n idx: number,\n arr: Transaction[],\n) => arr.findIndex((otherTx) => otherTx.hash === tx.hash) === idx;\n\nexport function mergeData(legacyData: DataLegacy, newData: Data): Data {\n const mergedData = convertLegacyDataToNewData(legacyData);\n for (const [account, transactions] of Object.entries(newData)) {\n if (mergedData[account] && transactions) {\n // Merge and filter out duplicates by transaction hash\n mergedData[account] = [...transactions, ...mergedData[account]].filter(\n filterDuplicatefn,\n );\n } else {\n mergedData[account] = transactions?.filter(filterDuplicatefn);\n }\n }\n return mergedData;\n}\nfunction loadData(): Data {\n const legacyData = safeParseJsonData<DataLegacy>(\n typeof localStorage !== \"undefined\"\n ? localStorage.getItem(storageKeyLegacy)\n : null,\n );\n const data = safeParseJsonData<Data>(\n typeof localStorage !== \"undefined\"\n ? localStorage.getItem(storageKey)\n : null,\n );\n return mergeData(legacyData, data);\n}\n\nconst transactionHashRegex = /^0x([A-Fa-f0-9]{64})$/;\n\nfunction validateTransaction(transaction: Transaction | NewTransaction): void {\n if (!transactionHashRegex.test(transaction.hash)) {\n throw new InvalidArgumentError({\n property: \"hash\",\n value: transaction.hash,\n expected: \"TransactionHash\",\n });\n }\n\n if (typeof transaction.description !== \"string\") {\n throw new InvalidArgumentError({\n property: \"description\",\n value: transaction.description,\n expected: \"string\",\n });\n }\n\n if (\n typeof transaction.confirmations !== \"undefined\" &&\n (!Number.isInteger(transaction.confirmations) ||\n transaction.confirmations < 1)\n ) {\n throw new InvalidArgumentError({\n property: \"confirmations\",\n value: transaction.confirmations,\n expected: \"positive integer\",\n });\n }\n}\n\nexport function createTransactionStore({ config }: { config: Config }) {\n let data: Data = loadData();\n const listeners: Set<() => void> = new Set();\n const transactionRequestCache: Map<string, Promise<void>> = new Map();\n\n function getTransactions(account: string): Transaction[] {\n return data[account] ?? [];\n }\n\n function addTransaction(account: string, transaction: NewTransaction): void {\n const normalized: Transaction = { ...transaction, status: \"pending\" };\n\n try {\n validateTransaction(normalized);\n\n updateTransactions(account, (transactions) => {\n return [\n normalized,\n ...transactions.filter(({ hash }) => {\n // Omit any duplicate transactions\n return hash !== normalized.hash;\n }),\n ];\n });\n } catch (error) {\n BeraMonitoring.captureException(initBeraError({ cause: error }));\n }\n }\n\n function clearTransactions(account: string): void {\n updateTransactions(account, () => {\n return [];\n });\n }\n\n function setTransactionStatus(\n account: string,\n hash: string,\n status: TransactionStatus,\n ): void {\n updateTransactions(account, (transactions) => {\n return transactions.map((transaction) =>\n transaction.hash === hash ? { ...transaction, status } : transaction,\n );\n });\n }\n\n async function refreshPendingTransactions(account: string): Promise<void> {\n const pendingTransactions = getTransactions(account).filter(\n (transaction) => transaction.status === \"pending\",\n );\n\n await Promise.allSettled(\n pendingTransactions.map(async (transaction) => {\n const { confirmations, hash, chainId } = transaction;\n const existingRequest = transactionRequestCache.get(hash);\n\n if (existingRequest) {\n return await existingRequest;\n }\n\n const provider = getPublicClient(config, { chainId });\n if (!provider) {\n return;\n }\n\n const requestPromise = provider\n .waitForTransactionReceipt({ confirmations, hash: hash as Address })\n .then(({ status }) => {\n if (status === undefined) {\n return;\n }\n\n setTransactionStatus(\n account,\n hash,\n Number(status) === 0 ? \"failed\" : \"confirmed\",\n );\n })\n .catch((error) => {\n BeraMonitoring.captureException(initBeraError({ cause: error }));\n })\n .finally(() => {\n transactionRequestCache.delete(hash);\n });\n\n transactionRequestCache.set(hash, requestPromise);\n\n return await requestPromise;\n }),\n );\n }\n\n function updateTransactions(\n account: string,\n updateFn: (transactions: Transaction[]) => Transaction[],\n ): void {\n // Ensure we’re always operating on the latest data in case we have\n // multiple instances/tabs/etc. since we write all data back to\n // local storage after updating\n data = loadData();\n\n data[account] = data[account] ?? [];\n\n const MAX_TRANSACTIONS = 10;\n const updatedTransactions = updateFn(data?.[account] ?? []);\n\n const transactions = updatedTransactions\n // Sort by timestamp (latest first) and keep only the latest 10\n .sort((a, b) => b.timestamp - a.timestamp)\n .slice(0, MAX_TRANSACTIONS);\n\n data[account] =\n transactions.length > 0\n ? transactions.filter(filterDuplicatefn)\n : undefined;\n\n persistData();\n notifyListeners();\n }\n\n function persistData(): void {\n if (typeof localStorage === \"undefined\") {\n return;\n }\n\n localStorage.setItem(storageKey, JSON.stringify(data));\n // remove legacy data now that it has been converted to the new data format and saved to the new key\n localStorage.removeItem(storageKeyLegacy);\n }\n\n function notifyListeners(): void {\n for (const listener of listeners) {\n listener();\n }\n }\n\n function onChange(fn: () => void): () => void {\n listeners.add(fn);\n\n return () => {\n listeners.delete(fn);\n };\n }\n\n return {\n addTransaction,\n clearTransactions,\n getTransactions,\n onChange,\n refreshPendingTransactions,\n setTransactionStatus,\n };\n}\n\nexport type TransactionStore = ReturnType<typeof createTransactionStore>;\n","import type React from \"react\";\nimport { createContext, useContext, useEffect, useState } from \"react\";\n\nimport { useBeraWagmi, useConfig } from \"@berachain/wagmi/hooks\";\n\nimport {\n createTransactionStore,\n type TransactionStore,\n} from \"../hooks/transactions/transactionStore\";\n\n// Only allow a single instance of the store to exist at once\n// so that multiple RainbowKitProvider instances can share the same store.\n// We delay the creation of the store until the first time it is used\n// so that it always has access to a provider.\nlet storeSingleton: ReturnType<typeof createTransactionStore> | undefined;\n\nconst TransactionStoreContext = createContext<TransactionStore | null>(null);\n\nexport function TransactionStoreProvider({\n children,\n}: {\n children: React.ReactNode;\n}) {\n const { account } = useBeraWagmi();\n const address = account?.wallet?.address;\n const config = useConfig();\n\n // Use existing store if it exists, or lazily create one\n const [store] = useState(\n () =>\n storeSingleton ??\n (storeSingleton = createTransactionStore({\n config,\n })),\n );\n\n // Refresh pending transactions when address changes and periodically after.\n useEffect(() => {\n if (!address) {\n return;\n }\n\n const refresh = () => {\n void store.refreshPendingTransactions(address);\n };\n\n refresh();\n\n // periodic refresh catches pending txs loaded from storage when no useTxn callbacks will fire.\n // and are also not caught by the visibilitychange event when still pending.\n const intervalId = setInterval(refresh, 120_000);\n\n // refresh txs when the tab becomes visible again to catch txs confirmed while hidden.\n const onVisibilityChange = () => {\n if (document.visibilityState === \"visible\") {\n refresh();\n }\n };\n\n if (typeof document !== \"undefined\") {\n document.addEventListener(\"visibilitychange\", onVisibilityChange);\n }\n\n return () => {\n clearInterval(intervalId);\n if (typeof document !== \"undefined\") {\n document.removeEventListener(\"visibilitychange\", onVisibilityChange);\n }\n };\n }, [store, address]);\n\n return (\n <TransactionStoreContext.Provider value={store}>\n {children}\n </TransactionStoreContext.Provider>\n );\n}\n\nexport function useTransactionStore(): TransactionStore {\n const store = useContext(TransactionStoreContext);\n\n if (!store) {\n throw new Error(\"Transaction hooks must be used within \");\n }\n\n return store;\n}\n"]}
|