@berachain/berajs 0.1.2 → 0.2.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/{BeraError-D1HS_rbb.d.cts → BeraError-_mQdkanr.d.cts} +35 -10
- package/dist/{BeraError-D1HS_rbb.d.ts → BeraError-_mQdkanr.d.ts} +35 -10
- package/dist/HoneyConfigProvider-CK6mOKFH.d.ts +390 -0
- package/dist/HoneyConfigProvider-Ca3ouozs.d.cts +390 -0
- package/dist/{RequestError-D8AE6xnI.d.cts → RequestError-A8XJ6QR9.d.cts} +1 -1
- package/dist/{RequestError-m4jxyM7D.d.ts → RequestError-Dk97z8rm.d.ts} +1 -1
- package/dist/abi/exports.cjs +2 -0
- package/dist/abi/exports.cjs.map +1 -0
- package/dist/abi/{index.d.cts → exports.d.cts} +12369 -9122
- package/dist/abi/{index.d.ts → exports.d.ts} +12369 -9122
- package/dist/abi/exports.mjs +2 -0
- package/dist/abi/exports.mjs.map +1 -0
- package/dist/actions/exports.cjs +2 -0
- package/dist/actions/exports.cjs.map +1 -0
- package/dist/actions/{index.d.cts → exports.d.cts} +79 -107
- package/dist/actions/{index.d.ts → exports.d.ts} +79 -107
- package/dist/actions/exports.mjs +2 -0
- package/dist/actions/exports.mjs.map +1 -0
- package/dist/chunk-22J3YJDN.cjs +2 -0
- package/dist/chunk-22J3YJDN.cjs.map +1 -0
- package/dist/chunk-2LL3P5PN.mjs +2 -0
- package/dist/chunk-2LL3P5PN.mjs.map +1 -0
- package/dist/chunk-3YXSUBA5.mjs +2 -0
- package/dist/chunk-3YXSUBA5.mjs.map +1 -0
- package/dist/chunk-55L7STYD.mjs +2 -0
- package/dist/chunk-55L7STYD.mjs.map +1 -0
- package/dist/chunk-575OK77P.mjs +2 -0
- package/dist/chunk-575OK77P.mjs.map +1 -0
- package/dist/chunk-6LDOG5RL.cjs +2 -0
- package/dist/chunk-6LDOG5RL.cjs.map +1 -0
- package/dist/chunk-7LNBSOVV.cjs +2 -0
- package/dist/chunk-7LNBSOVV.cjs.map +1 -0
- package/dist/chunk-7SMWQ6SN.mjs +2 -0
- package/dist/chunk-7SMWQ6SN.mjs.map +1 -0
- package/dist/chunk-7WRTK7RJ.mjs +2 -0
- package/dist/chunk-7WRTK7RJ.mjs.map +1 -0
- 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-C3FHGFLK.mjs +2 -0
- package/dist/chunk-C3FHGFLK.mjs.map +1 -0
- package/dist/chunk-C6ZGUO4H.cjs +2 -0
- package/dist/chunk-C6ZGUO4H.cjs.map +1 -0
- package/dist/chunk-CYKCYPFR.cjs +2 -0
- package/dist/chunk-CYKCYPFR.cjs.map +1 -0
- package/dist/chunk-ECRMUMTA.mjs +2 -0
- package/dist/chunk-ECRMUMTA.mjs.map +1 -0
- package/dist/chunk-F4BKSBEM.mjs +2 -0
- package/dist/chunk-F4BKSBEM.mjs.map +1 -0
- package/dist/chunk-FCWDGE62.cjs +2 -0
- package/dist/chunk-FCWDGE62.cjs.map +1 -0
- package/dist/chunk-FL2N3XHK.cjs +2 -0
- package/dist/chunk-FL2N3XHK.cjs.map +1 -0
- package/dist/chunk-MUCEYO3E.cjs +4 -0
- package/dist/chunk-MUCEYO3E.cjs.map +1 -0
- package/dist/chunk-NAXAZJJY.mjs +2 -0
- package/dist/chunk-NAXAZJJY.mjs.map +1 -0
- package/dist/chunk-OGJMSGB2.mjs +2 -0
- package/dist/chunk-OGJMSGB2.mjs.map +1 -0
- package/dist/chunk-OIYXOKTT.cjs +2 -0
- package/dist/chunk-OIYXOKTT.cjs.map +1 -0
- 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-Q3SCM6WL.mjs +2 -0
- package/dist/chunk-Q3SCM6WL.mjs.map +1 -0
- package/dist/chunk-SWMJQOH6.cjs +2 -0
- package/dist/chunk-SWMJQOH6.cjs.map +1 -0
- package/dist/chunk-TEBJWAVU.mjs +2 -0
- package/dist/chunk-TEBJWAVU.mjs.map +1 -0
- package/dist/chunk-THATXCJK.mjs +2 -0
- package/dist/chunk-THATXCJK.mjs.map +1 -0
- package/dist/chunk-VP7XUOSI.cjs +2 -0
- package/dist/chunk-VP7XUOSI.cjs.map +1 -0
- package/dist/chunk-VXL2ZZ4X.cjs +2 -0
- package/dist/chunk-VXL2ZZ4X.cjs.map +1 -0
- package/dist/chunk-WRFDB3QJ.cjs +2 -0
- package/dist/chunk-WRFDB3QJ.cjs.map +1 -0
- package/dist/chunk-XNJLSA6P.cjs +2 -0
- package/dist/chunk-XNJLSA6P.cjs.map +1 -0
- package/dist/chunk-YXLFOEZN.mjs +2 -0
- package/dist/chunk-YXLFOEZN.mjs.map +1 -0
- package/dist/chunk-YZV5LKIP.cjs +2 -0
- package/dist/chunk-YZV5LKIP.cjs.map +1 -0
- package/dist/contexts/exports.cjs +2 -0
- package/dist/contexts/exports.cjs.map +1 -0
- package/dist/contexts/{index.d.cts → exports.d.cts} +10 -27
- package/dist/contexts/{index.d.ts → exports.d.ts} +10 -27
- package/dist/contexts/exports.mjs +2 -0
- package/dist/contexts/exports.mjs.map +1 -0
- package/dist/{defaultFlags-V-tJs2K8.d.cts → defaultFlags-d0kPbT0i.d.cts} +1 -1
- package/dist/{defaultFlags-V-tJs2K8.d.ts → defaultFlags-d0kPbT0i.d.ts} +1 -1
- package/dist/dex-C_BB0b0O.d.cts +37 -0
- package/dist/dex-C_BB0b0O.d.ts +37 -0
- package/dist/enum/exports.cjs +2 -0
- package/dist/enum/exports.cjs.map +1 -0
- package/dist/enum/exports.d.cts +23 -0
- package/dist/enum/exports.d.ts +23 -0
- package/dist/enum/exports.mjs +2 -0
- package/dist/enum/exports.mjs.map +1 -0
- package/dist/errors/exports.cjs +2 -0
- package/dist/errors/exports.cjs.map +1 -0
- package/dist/errors/exports.d.cts +408 -0
- package/dist/errors/exports.d.ts +408 -0
- package/dist/errors/exports.mjs +2 -0
- package/dist/{getValidatorQueuedOperatorAddress-Ne2zoiiV.d.ts → getValidatorQueuedOperatorAddress-Dstyaomr.d.cts} +125 -15
- package/dist/{getValidatorQueuedOperatorAddress-9xY2RUGe.d.cts → getValidatorQueuedOperatorAddress-RW4OMcD1.d.ts} +125 -15
- package/dist/global.d-CN6l2b9E.d.cts +473 -0
- package/dist/global.d-wYu8G8IQ.d.ts +473 -0
- package/dist/honey-CYm0RWf4.d.cts +14 -0
- package/dist/honey-CYm0RWf4.d.ts +14 -0
- package/dist/hooks/exports.cjs +4 -0
- package/dist/hooks/exports.cjs.map +1 -0
- package/dist/hooks/{index.d.cts → exports.d.cts} +218 -176
- package/dist/hooks/{index.d.ts → exports.d.ts} +218 -176
- package/dist/hooks/exports.mjs +4 -0
- package/dist/hooks/exports.mjs.map +1 -0
- package/dist/{txnEnum-BQKDfaeH.d.cts → txnEnum-BlBYhNRl.d.cts} +75 -1
- package/dist/{txnEnum-BQKDfaeH.d.ts → txnEnum-BlBYhNRl.d.ts} +75 -1
- package/dist/types/exports.cjs +1 -0
- package/dist/types/exports.cjs.map +1 -0
- package/dist/types/exports.d.cts +57 -0
- package/dist/types/exports.d.ts +57 -0
- package/dist/types/exports.mjs +1 -0
- package/dist/{useHoneySwapState-C-9BV4VB.d.cts → useHoneySwapState-B-vmIP1b.d.cts} +1 -1
- package/dist/{useHoneySwapState-CUY5Sm1b.d.ts → useHoneySwapState-D1DKG_Of.d.ts} +1 -1
- package/dist/utils/exports.cjs +2 -0
- package/dist/utils/exports.cjs.map +1 -0
- package/dist/utils/{index.d.cts → exports.d.cts} +83 -20
- package/dist/utils/{index.d.ts → exports.d.ts} +83 -20
- package/dist/utils/exports.mjs +2 -0
- package/dist/utils/exports.mjs.map +1 -0
- package/package.json +19 -20
- package/src/abi/{index.ts → exports.ts} +3 -0
- package/src/abi/pol/LSTStakerVault.ts +2032 -0
- package/src/abi/utils/openChainErrors.ts +71 -30
- package/src/abi/utils/thirdwebMinimalAccount.ts +616 -0
- package/src/actions/clients/BeraApolloClient.ts +8 -6
- package/src/actions/dex/__tests__/aggregators.unit.test.ts +2 -5
- package/src/actions/dex/aggregators/base.ts +74 -16
- package/src/actions/dex/aggregators/bex.ts +54 -74
- package/src/actions/dex/aggregators/bgt.ts +31 -8
- package/src/actions/dex/aggregators/{enso.ts → enso/enso.ts} +18 -14
- package/src/actions/dex/aggregators/enso/ensoErc4626.debug.test.ts +37 -0
- package/src/actions/dex/aggregators/enso/ensoErc4626.ts +176 -0
- package/src/actions/dex/aggregators/erc4626.ts +122 -0
- package/src/actions/dex/aggregators/fly.ts +59 -53
- package/src/actions/dex/aggregators/haiku.ts +52 -54
- package/src/actions/dex/aggregators/honey.ts +54 -45
- package/src/actions/dex/aggregators/kyberswap.ts +41 -39
- package/src/actions/dex/aggregators/oogabooga.ts +47 -46
- package/src/actions/dex/aggregators/openOcean.ts +51 -46
- package/src/actions/dex/aggregators/wbera.ts +54 -42
- package/src/actions/dex/b-sdk.ts +5 -2
- package/src/actions/dex/getIsTokenExploited.ts +2 -2
- package/src/actions/enso/{zap.ts → getEnsoSwapBundle.ts} +4 -5
- package/src/actions/enso/getEnsoUserTokensWithBalances.debug.test.ts +73 -0
- package/src/actions/enso/{getEnsoUserToken.ts → getEnsoUserTokensWithBalances.ts} +42 -30
- package/src/actions/enso/util.ts +1 -1
- package/src/actions/{index.ts → exports.ts} +5 -0
- package/src/actions/governance/__tests__/checkProposalField.unit.test.ts +1 -1
- package/src/actions/governance/__tests__/getQuorum.integration.test.ts +1 -1
- package/src/actions/governance/checkProposalField.ts +1 -1
- package/src/actions/governance/computeActualStatus.ts +1 -1
- package/src/actions/governance/getBodyErrors.ts +1 -1
- package/src/actions/governance/getDecodedFunctionData.ts +1 -4
- package/src/actions/governance/getProposalDetails.ts +2 -2
- package/src/actions/governance/getProposalFromTx.ts +1 -2
- package/src/actions/governance/getProposalParams.ts +7 -8
- package/src/actions/governance/getQuorum.ts +1 -2
- package/src/actions/honey/getCollateralWeights.ts +1 -1
- package/src/actions/honey/getHoneyCollaterals.ts +1 -0
- package/src/actions/honey/getHoneyVaultsBalance.ts +51 -55
- package/src/actions/honey/getSwapPayload.ts +37 -35
- package/src/actions/honey/tests/pyth.integration.test.ts +0 -1
- package/src/actions/pol/__tests__/getAllValidators.integration.test.ts +1 -1
- package/src/actions/pol/getEarnedStakedBeraVault.ts +31 -0
- package/src/actions/pol/getGlobalData.ts +14 -13
- package/src/actions/pol/getLSTStakeConfig.ts +67 -0
- package/src/actions/pol/getMarkets.ts +1 -1
- package/src/actions/pol/getRewardProofsByValidator.ts +1 -1
- package/src/actions/pol/getRewardVaultIncentives.ts +3 -5
- package/src/actions/pol/getRewardVaults.ts +2 -3
- package/src/actions/pol/getSWBeraVaultMetadata.ts +7 -5
- package/src/actions/pol/getSWBeraWithdrawal.ts +41 -27
- package/src/actions/pol/getStakeWithdrawalCooldown.ts +5 -7
- package/src/actions/pol/getStakingDailyAssets.ts +24 -0
- package/src/actions/pol/getStakingTokenInformation.ts +3 -4
- package/src/actions/pol/getTotalStakedAmount.ts +47 -0
- package/src/actions/pol/getUserClaimableIncentives.ts +1 -1
- package/src/actions/pol/getUserVaults.ts +8 -6
- package/src/actions/pol/getUserVaultsBalance.ts +4 -16
- package/src/actions/prices/getTokenCurrentPrices.ts +8 -3
- package/src/actions/tokens/getAllowances.ts +68 -41
- package/src/actions/tokens/getTokenInformation.ts +4 -1
- package/src/actions/tokens/getTokens.ts +1 -1
- package/src/actions/tokens/getUnderlyingToken.ts +53 -0
- package/src/actions/tokens/getWalletBalances.integration.test.ts +53 -14
- package/src/actions/tokens/getWalletBalances.ts +69 -43
- package/src/actions/transactions/beraWriteContract.integration.test.ts +18 -6
- package/src/actions/transactions/beraWriteContract.ts +3 -3
- package/src/actions/validators/getUserActiveValidators.ts +2 -3
- package/src/actions/validators/getUserBoostsOnValidator.ts +2 -3
- package/src/contexts/BeraFlags/defaultFlags.ts +4 -0
- package/src/contexts/SwrFallback.tsx +13 -3
- package/src/contexts/TokensProvider.tsx +35 -8
- package/src/contexts/block-time-provider.tsx +1 -1
- package/src/contexts/{index.ts → exports.ts} +0 -1
- package/src/data/contracts.ts +17 -2
- package/src/enum/contracts.ts +13 -0
- package/src/enum/dex.ts +29 -0
- package/src/enum/{index.ts → exports.ts} +3 -0
- package/src/enum/governance.ts +61 -0
- package/src/enum/honey.ts +12 -0
- package/src/enum/txnEnum.ts +1 -0
- package/src/errors/BeraError.ts +61 -13
- package/src/errors/BeraMonitoring.ts +66 -0
- package/src/errors/BeraTracing.ts +79 -0
- package/src/errors/BeraTracing.unit.test.ts +198 -0
- package/src/errors/RequestError.ts +29 -3
- package/src/errors/assert.ts +4 -2
- package/src/errors/assert.unit.test.ts +6 -2
- package/src/errors/errorMap.ts +19 -8
- package/src/errors/{index.ts → exports.ts} +7 -0
- package/src/errors/getErrorMessage.ts +67 -9
- package/src/errors/getRevertReason.integration.test.ts +18 -6
- package/src/errors/getRevertReason.ts +41 -2
- package/src/errors/initBeraError.ts +52 -7
- package/src/errors/parseViemError.ts +114 -27
- package/src/errors/severity.ts +12 -0
- package/src/hooks/bend/useGetConvertToAssets.ts +3 -2
- package/src/hooks/dex/useAggregatorsQuotes.ts +126 -365
- package/src/hooks/dex/useAllUserPools.ts +1 -1
- package/src/hooks/dex/useApiPool.ts +1 -1
- package/src/hooks/dex/useCreatePool.ts +6 -5
- package/src/hooks/dex/useExploitedTokens.ts +1 -1
- package/src/hooks/dex/useLiquidityMismatch.ts +2 -5
- package/src/hooks/dex/useLpPosition.ts +21 -20
- package/src/hooks/dex/useMultipleTokenApprovalsWithSlippage.ts +40 -29
- package/src/hooks/dex/usePollPoolCreationRelayerApproval.ts +1 -1
- package/src/hooks/dex/usePoolEvents.ts +1 -1
- package/src/hooks/dex/usePools.ts +1 -1
- package/src/hooks/dex/usePriceImpact.ts +40 -0
- package/src/hooks/dex/useSingleAggregatorQuote.ts +350 -0
- package/src/hooks/enso/useBendZapSupply.ts +216 -0
- package/src/hooks/enso/useEnsoSwapBundle.ts +107 -0
- package/src/hooks/enso/useEnsoUserTokensWithBalances.ts +43 -0
- package/src/hooks/enso/useZapStakeBera.ts +113 -0
- package/src/hooks/{index.ts → exports.ts} +17 -10
- package/src/hooks/governance/useCreateProposal.ts +8 -8
- package/src/hooks/governance/usePollAllProposals.ts +1 -1
- package/src/hooks/governance/usePollProposal.ts +1 -1
- package/src/hooks/governance/usePollProposalThreshold.ts +1 -1
- package/src/hooks/governance/usePollUserDelegates.ts +1 -1
- package/src/hooks/governance/useProposalState.ts +2 -2
- package/src/hooks/honey/useCappedGlobally.ts +2 -1
- package/src/hooks/honey/useCappedRelatively.ts +1 -1
- package/src/hooks/honey/useCollateralWeights.ts +2 -1
- package/src/hooks/honey/useHoneyAlerts.ts +11 -11
- package/src/hooks/honey/useHoneyBalances.ts +7 -3
- package/src/hooks/honey/useHoneyGlobalData.ts +2 -1
- package/src/hooks/honey/useHoneySwapState.ts +2 -1
- package/src/hooks/honey/useHoneyVaultsBalance.ts +1 -1
- package/src/hooks/honey/useIsBadCollateralAsset.ts +2 -1
- package/src/hooks/honey/useIsBasketModeEnabled.ts +1 -1
- package/src/hooks/honey/usePythLatestPrices.ts +1 -1
- package/src/hooks/pol/useOnChainRewardVault.ts +3 -2
- package/src/hooks/pol/usePollGlobalData.ts +1 -1
- package/src/hooks/pol/usePollMarkets.ts +1 -1
- package/src/hooks/pol/useQueuedBeraUnlock.ts +17 -15
- package/src/hooks/pol/useRewardTokenToBeraRate.ts +6 -3
- package/src/hooks/pol/useRewardVault.ts +1 -1
- package/src/hooks/pol/useRewardVaults.ts +1 -1
- package/src/hooks/pol/useSWBeraVaultMetadata.ts +35 -0
- package/src/hooks/pol/useStakedAPR.ts +38 -0
- package/src/hooks/pol/useStakedData.ts +117 -0
- package/src/hooks/pol/useStakedSnapshots.ts +52 -0
- package/src/hooks/pol/useTotalStakedAmount.ts +30 -0
- package/src/hooks/pol/useUserVaultInfo.ts +1 -1
- package/src/hooks/pol/useVaultValidators.ts +1 -1
- package/src/hooks/tokens/useMultipleTokenInformation.ts +15 -6
- package/src/hooks/tokens/usePollAllowances.ts +15 -19
- package/src/hooks/tokens/usePollBalance.ts +8 -4
- package/src/hooks/tokens/usePollWalletBalances.ts +14 -11
- package/src/hooks/tokens/useStakingTokenInformation.ts +2 -1
- package/src/hooks/tokens/useTokenCurrentPrice.ts +4 -2
- package/src/hooks/tokens/useTokenCurrentPrices.ts +92 -13
- package/src/hooks/tokens/useTokenInformation.ts +11 -6
- package/src/hooks/tokens/useTokenPrice.ts +21 -0
- package/src/hooks/tokens/useTokenPrices.ts +133 -0
- package/src/hooks/tokens/useTokens.ts +1 -0
- package/src/hooks/tokens/useUnderlyingAsset.ts +23 -0
- package/src/hooks/useContractWrite/useBeraContractWrite.ts +2 -1
- package/src/hooks/validators/useAllValidators.ts +1 -1
- package/src/hooks/validators/useApiValidator.ts +1 -1
- package/src/hooks/validators/useDailyValidatorBlockStats.ts +1 -1
- package/src/hooks/validators/useManagedValidatorByAccount.ts +1 -1
- package/src/hooks/validators/useManagedValidatorRole.ts +1 -1
- package/src/hooks/validators/useOnChainValidator.ts +1 -1
- package/src/hooks/validators/useStakingPoolBatch.ts +1 -1
- package/src/hooks/validators/useUserActiveValidators.ts +1 -1
- package/src/hooks/validators/useUserBoostsOnValidator.ts +1 -1
- package/src/hooks/validators/useUserClaimableIncentives.ts +8 -8
- package/src/hooks/validators/useValidator.ts +1 -1
- package/src/hooks/validators/useValidatorAnalytics.ts +1 -1
- package/src/hooks/validators/useValidatorCommission.ts +1 -1
- package/src/hooks/validators/useValidatorQueuedCommission.ts +1 -1
- package/src/hooks/validators/useValidatorQueuedOperatorAddress.ts +1 -1
- package/src/hooks/validators/useValidatorQueuedRewardAllocation.ts +1 -1
- package/src/hooks/validators/useValidatorRewardAllocation.ts +1 -1
- package/src/types/{dex.ts → dex.d.ts} +96 -67
- package/src/types/{enso.ts → enso.d.ts} +1 -1
- package/src/types/exports.ts +8 -0
- package/src/types/{global.ts → global.d.ts} +1 -30
- package/src/types/{governance.ts → governance.d.ts} +2 -64
- package/src/types/{honeySwap.ts → honeySwap.d.ts} +1 -13
- package/src/types/{pol.ts → pol.d.ts} +12 -1
- package/src/types/staking.d.ts +22 -0
- package/src/utils/createEmitter.ts +122 -0
- package/src/utils/createEmitter.unit.test.ts +149 -0
- package/src/utils/{index.ts → exports.ts} +3 -2
- package/src/utils/filter.ts +34 -0
- package/src/utils/formatNumber.ts +1 -1
- package/src/utils/formatNumber.unit.test.ts +2 -1
- package/src/utils/formatTokenList.ts +4 -10
- package/src/utils/getHoneySwapMessage.test.ts +1 -2
- package/src/utils/getServerSideClient.ts +4 -5
- package/src/utils/isDifferenceExceedingThreshold.ts +1 -1
- package/src/utils/layerZeroScan.ts +122 -0
- package/src/utils/math.ts +1 -1
- package/src/utils/parseWhiskToken.ts +15 -0
- package/src/utils/poolNamings.ts +1 -1
- package/src/utils/tokens.ts +23 -7
- package/dist/HoneyConfigProvider-6PXZJMSU.d.cts +0 -562
- package/dist/HoneyConfigProvider-CwDFrt02.d.ts +0 -562
- package/dist/abi/index.cjs +0 -2
- package/dist/abi/index.cjs.map +0 -1
- package/dist/abi/index.mjs +0 -2
- package/dist/actions/index.cjs +0 -2
- package/dist/actions/index.cjs.map +0 -1
- package/dist/actions/index.mjs +0 -2
- package/dist/aggregatorsRouter-Cny4B_MB.d.cts +0 -593
- package/dist/aggregatorsRouter-Cny4B_MB.d.ts +0 -593
- package/dist/chunk-22MQVFHP.cjs +0 -2
- package/dist/chunk-22MQVFHP.cjs.map +0 -1
- package/dist/chunk-3TKSVFZ3.mjs +0 -2
- package/dist/chunk-3TKSVFZ3.mjs.map +0 -1
- package/dist/chunk-6VF3RF53.cjs +0 -3
- package/dist/chunk-6VF3RF53.cjs.map +0 -1
- package/dist/chunk-6W22TFYA.mjs +0 -2
- package/dist/chunk-6W22TFYA.mjs.map +0 -1
- package/dist/chunk-AMRJ4B36.mjs +0 -2
- package/dist/chunk-AMRJ4B36.mjs.map +0 -1
- package/dist/chunk-DS2ZDVKU.mjs +0 -2
- package/dist/chunk-DS2ZDVKU.mjs.map +0 -1
- package/dist/chunk-ED43NYSE.cjs +0 -2
- package/dist/chunk-ED43NYSE.cjs.map +0 -1
- package/dist/chunk-EU4WFADK.cjs +0 -2
- package/dist/chunk-EU4WFADK.cjs.map +0 -1
- package/dist/chunk-HCTFDGXL.mjs +0 -2
- package/dist/chunk-HCTFDGXL.mjs.map +0 -1
- package/dist/chunk-IOSYBHKU.mjs +0 -2
- package/dist/chunk-IOSYBHKU.mjs.map +0 -1
- package/dist/chunk-JMKLDDKY.cjs +0 -2
- package/dist/chunk-JMKLDDKY.cjs.map +0 -1
- package/dist/chunk-KMKUXP2S.mjs +0 -3
- package/dist/chunk-KMKUXP2S.mjs.map +0 -1
- package/dist/chunk-OJXJ6CZ4.mjs +0 -4
- package/dist/chunk-OJXJ6CZ4.mjs.map +0 -1
- package/dist/chunk-PHIOKO3A.mjs +0 -2
- package/dist/chunk-PHIOKO3A.mjs.map +0 -1
- package/dist/chunk-QCK474XD.cjs +0 -2
- package/dist/chunk-QCK474XD.cjs.map +0 -1
- package/dist/chunk-REDXXUK7.cjs +0 -2
- package/dist/chunk-REDXXUK7.cjs.map +0 -1
- package/dist/chunk-S74ZMG2G.cjs +0 -2
- package/dist/chunk-S74ZMG2G.cjs.map +0 -1
- package/dist/chunk-TOAXF4YW.cjs +0 -2
- package/dist/chunk-TOAXF4YW.cjs.map +0 -1
- package/dist/chunk-UZ5CB33M.cjs +0 -2
- package/dist/chunk-UZ5CB33M.cjs.map +0 -1
- package/dist/chunk-VYWYJR63.mjs +0 -2
- package/dist/chunk-VYWYJR63.mjs.map +0 -1
- package/dist/chunk-XFPTQMAK.cjs +0 -4
- package/dist/chunk-XFPTQMAK.cjs.map +0 -1
- package/dist/chunk-YK4NINF5.mjs +0 -2
- package/dist/chunk-YK4NINF5.mjs.map +0 -1
- package/dist/contexts/index.cjs +0 -2
- package/dist/contexts/index.cjs.map +0 -1
- package/dist/contexts/index.mjs +0 -2
- package/dist/contexts/index.mjs.map +0 -1
- package/dist/enum/index.cjs +0 -2
- package/dist/enum/index.cjs.map +0 -1
- package/dist/enum/index.d.cts +0 -31
- package/dist/enum/index.d.ts +0 -31
- package/dist/enum/index.mjs +0 -2
- package/dist/enum/index.mjs.map +0 -1
- package/dist/errors/index.cjs +0 -2
- package/dist/errors/index.cjs.map +0 -1
- package/dist/errors/index.d.cts +0 -204
- package/dist/errors/index.d.ts +0 -204
- package/dist/errors/index.mjs +0 -2
- package/dist/errors/index.mjs.map +0 -1
- package/dist/hooks/index.cjs +0 -4
- package/dist/hooks/index.cjs.map +0 -1
- package/dist/hooks/index.mjs +0 -4
- package/dist/hooks/index.mjs.map +0 -1
- package/dist/staking-F9Nx9TKD.d.ts +0 -246
- package/dist/staking-f4BpYH7l.d.cts +0 -246
- package/dist/types/index.cjs +0 -2
- package/dist/types/index.cjs.map +0 -1
- package/dist/types/index.d.cts +0 -56
- package/dist/types/index.d.ts +0 -56
- package/dist/types/index.mjs +0 -2
- package/dist/types/index.mjs.map +0 -1
- package/dist/utils/index.cjs +0 -2
- package/dist/utils/index.cjs.map +0 -1
- package/dist/utils/index.mjs +0 -2
- package/dist/utils/index.mjs.map +0 -1
- package/src/actions/dex/getTransactionCount.ts +0 -29
- package/src/actions/enso/bend.ts +0 -143
- package/src/actions/enso/getEnsoUserToken.debug.test.ts +0 -57
- package/src/contexts/berajsProvider/context.tsx +0 -49
- package/src/contexts/berajsProvider/index.ts +0 -2
- package/src/contexts/berajsProvider/useBeraJs.ts +0 -18
- package/src/hooks/dex/usePollVaultIsPaused.ts +0 -30
- package/src/hooks/enso/useBendTransactionRequests.ts +0 -247
- package/src/hooks/enso/useEnsoZap.ts +0 -166
- package/src/hooks/enso/useZapTransactionRequests.ts +0 -81
- package/src/hooks/pol/useEarnedStakedBeraVault.ts +0 -59
- package/src/hooks/pol/useStakedBeraSnapshots.ts +0 -27
- package/src/hooks/transactions/TransactionStoreContext.tsx +0 -59
- package/src/hooks/transactions/transactionStore.ts +0 -275
- package/src/hooks/transactions/transactionStore.unit.test.ts +0 -508
- package/src/hooks/transactions/useAddRecentTransaction.ts +0 -29
- package/src/hooks/transactions/useRecentTransactions.ts +0 -27
- package/src/hooks/validators/validatorRoleManager.ts +0 -0
- package/src/types/index.ts +0 -8
- package/src/types/staking.ts +0 -7
- package/src/utils/formatAggregatorsQuotes.ts +0 -57
- package/src/utils/formatAggregatorsQuotes.unit.test.ts +0 -191
- package/src/utils/sentryBeforeSend.ts +0 -52
- /package/dist/{abi/index.mjs.map → errors/exports.mjs.map} +0 -0
- /package/dist/{actions/index.mjs.map → types/exports.mjs.map} +0 -0
- /package/src/actions/dex/{__tests__ → aggregators}/haiku.integration.test.ts +0 -0
- /package/src/types/{bribe-boost.ts → bribe-boost.d.ts} +0 -0
|
@@ -1,33 +1,34 @@
|
|
|
1
|
-
import { V as ValidatorRewardAllocation } from '../getValidatorQueuedOperatorAddress-
|
|
2
|
-
export { f as GetBgtAprSimulationArgs, h as GetBgtAprSimulationResult, G as GetConvertToAssetsProps, s as GetGaugeData, c as GetHoneyVaultsBalanceResponse, m as GetMarkets, q as GetRewardVaultRewardsReturn,
|
|
1
|
+
import { V as ValidatorRewardAllocation } from '../getValidatorQueuedOperatorAddress-RW4OMcD1.js';
|
|
2
|
+
export { B as BaseAggregator, f as GetBgtAprSimulationArgs, h as GetBgtAprSimulationResult, G as GetConvertToAssetsProps, s as GetGaugeData, c as GetHoneyVaultsBalanceResponse, m as GetMarkets, q as GetRewardVaultRewardsReturn, x as GetUserVaultsResponse, z as GetVaultHistoryArgs, k as GlobalData, I as IsBadCollateralArgs, e as IsBadCollateralResponse, O as OnChainPool, P as PoolStatus, p as RewardVaultDistributionMode, R as RewardVaultIncentive, S as StakedBeraWithdrawal, E as UserBoostsOnValidator, H as UserStakingPoolPosition, U as UserVault, K as ValidatorQueuedCommission, M as ValidatorQueuedOperatorAddress, Q as ValidatorRewardAllocationRaw, T as ValidatorRewardAllocationUpdate, W as ValidatorRewardAllocationUpdateWithExpiration, C as ValidatorWithUserBoost, u as VaultMetadata, X as formatValidatorRewardAllocation, j as getBgtAprSimulation, g as getConvertToAssets, l as getGlobalData, d as getHoneyVaultsBalance, n as getMarkets, a as getOnChainPool, b as getPoolPausedState, o as getRewardVaultIncentives, r as getRewardVaultRewards, t as getRewardVaults, v as getSWBeraVaultMetadata, w as getSWBeraWithdrawal, D as getUserActiveValidators, F as getUserBoostsOnValidator, J as getUserStakingPositions, y as getUserVaults, L as getValidatorQueuedCommission, N as getValidatorQueuedOperatorAddress, Z as getValidatorRewardAllocation, A as getVaultHistory, i as isBadCollateralAsset, Y as isSameRewardAllocation } from '../getValidatorQueuedOperatorAddress-RW4OMcD1.js';
|
|
3
3
|
import { Address, PublicClient, AbiParameter, AbiFunction, TransactionReceipt, Abi, ContractFunctionArgs, ContractFunctionName, WalletCallReceipt } from 'viem';
|
|
4
4
|
import { ApolloClient, OperationVariables, FetchPolicy } from '@apollo/client';
|
|
5
5
|
export { gql } from '@apollo/client';
|
|
6
|
-
import {
|
|
7
|
-
import { A as Aggregators, i as IAggregatorArgs, I as IRawAggregatorQuote, a as Token, P as PythLatestUpdates, b as TokenWithMetadata, T as TokenWithOrder, j as PythPriceFeedMap, k as TokenCurrentPriceMap, l as AllowanceToken, M as MinimalERC20, B as BalanceToken, m as IContractWrite } from '../HoneyConfigProvider-CwDFrt02.js';
|
|
8
|
-
export { C as CollateralRates, o as CollateralRatesArgs, n as HoneyFeeMap, r as HoneyPreviewArgs, q as HoneyPreviewMethod, t as HoneyPreviewReadResult, s as HoneyPreviewResult, p as getHoneyFees, v as getHoneyPreview, w as getPythLatestPrices } from '../HoneyConfigProvider-CwDFrt02.js';
|
|
6
|
+
import { EnsoClient } from '@ensofinance/sdk';
|
|
9
7
|
import { PoolState } from '@berachain-foundation/berancer-sdk';
|
|
10
8
|
export { BalancerApi } from '@berachain-foundation/berancer-sdk';
|
|
11
9
|
import * as _berachain_graphql_dex_api from '@berachain/graphql/dex/api';
|
|
12
10
|
import { GetPoolsQueryVariables, GetGlobalLiquidityAndSwapVolumeQuery, GetPoolEventsQuery, GqlChain, PoolHistoricalDataFragment, MinimalPoolFragment } from '@berachain/graphql/dex/api';
|
|
13
|
-
import { GqlPoolEventType, GqlChain as GqlChain$1, ApiVaultFragment, ApiValidatorFragment, GetValidatorsQueryVariables, GetValidatorsQuery, ApiRewardAllocationWeightFragment, GetValidatorQuery, ApiValidatorMinimalFragment } from '@berachain/graphql/pol/api';
|
|
14
|
-
import { a as ProposalErrorCodes,
|
|
11
|
+
import { GqlPoolEventType, GqlChain as GqlChain$1, ApiVaultFragment, GqlVaultSnapshotDataRange, GetSWberaVaultSnapshotsQuery, ApiValidatorFragment, GetValidatorsQueryVariables, GetValidatorsQuery, ApiRewardAllocationWeightFragment, GetValidatorQuery, ApiValidatorMinimalFragment } from '@berachain/graphql/pol/api';
|
|
12
|
+
import { a as ProposalErrorCodes, P as ProposalState } from '../txnEnum-BlBYhNRl.js';
|
|
15
13
|
import { ProposalStatus, ProposalSelectionFragment, Proposal_Filter, Proposal_OrderBy, OrderDirection, ProposalWithVotesFragment, GetProposalVotesQueryVariables, GetProposalVotesQuery } from '@berachain/graphql/governance';
|
|
16
|
-
import {
|
|
14
|
+
import { C as CustomProposal, G as GovernanceTopic, a as CustomProposalErrors, S as StakingConfig, B as BribeBoostRewardProof, b as BribeBoostRewardItem, U as UserVaultInfo, I as IContractWrite } from '../global.d-wYu8G8IQ.js';
|
|
17
15
|
import graymatter from 'gray-matter';
|
|
18
16
|
import { GetChartDataQuery, GetGlobalDataQuery } from '@berachain/graphql/honey';
|
|
17
|
+
import { b as Token, P as PythLatestUpdates, a as TokenWithMetadata, T as TokenWithOrder, h as PythPriceFeedMap, i as TokenCurrentPriceMap, A as AllowanceQueryItem, j as AllowanceToken, M as MinimalERC20, B as BalanceToken } from '../HoneyConfigProvider-CK6mOKFH.js';
|
|
18
|
+
export { C as CollateralRates, l as CollateralRatesArgs, k as HoneyFeeMap, o as HoneyPreviewArgs, n as HoneyPreviewMethod, q as HoneyPreviewReadResult, p as HoneyPreviewResult, m as getHoneyFees, r as getHoneyPreview, s as getPythLatestPrices } from '../HoneyConfigProvider-CK6mOKFH.js';
|
|
19
19
|
import { EdgeConfigSchema } from '@berachain/config/internal/edge-config';
|
|
20
20
|
import { p as pythWrapperAbi, h as honeyFactoryAbi } from '../pythWrapper-CBjsmmsK.js';
|
|
21
|
-
import { I as IHoneySwapState } from '../useHoneySwapState-
|
|
21
|
+
import { I as IHoneySwapState } from '../useHoneySwapState-D1DKG_Of.js';
|
|
22
22
|
import { Address as Address$1 } from '@berachain/config';
|
|
23
|
+
import { Config } from '@wagmi/core';
|
|
23
24
|
import { GetValidatorBlockStatsQuery, GetValidatorByAccountQuery, GetValidatorAnalyticsQuery } from '@berachain/graphql/pol/subgraph';
|
|
25
|
+
import '@berachain/config/internal';
|
|
26
|
+
import '../dex-C_BB0b0O.js';
|
|
27
|
+
import 'swr';
|
|
28
|
+
import '../BeraError-_mQdkanr.js';
|
|
24
29
|
import 'react/jsx-runtime';
|
|
25
30
|
import 'react';
|
|
26
|
-
import '../
|
|
27
|
-
import 'swr';
|
|
28
|
-
import '../txnEnum-BQKDfaeH.js';
|
|
29
|
-
import '../BeraError-D1HS_rbb.js';
|
|
30
|
-
import '@sentry/nextjs';
|
|
31
|
+
import '../honey-CYm0RWf4.js';
|
|
31
32
|
|
|
32
33
|
interface GetMaxDepositProps {
|
|
33
34
|
vaultAddress: Address;
|
|
@@ -60,60 +61,9 @@ declare class BeraApolloClient extends ApolloClient {
|
|
|
60
61
|
type GraphqlClient = "honey.subgraph" | "pol.subgraph" | "governance.subgraph" | "blocks.subgraph" | "bex.subgraph" | "api" | "bend.whisk";
|
|
61
62
|
declare function getApolloClient(clientName: GraphqlClient, { ...args }: BeraJS.BaseFunctionArgs): BeraApolloClient;
|
|
62
63
|
|
|
63
|
-
declare
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
static PATH_NOT_FOUND_REASON: string;
|
|
67
|
-
notFoundMessages: string[];
|
|
68
|
-
config: BeraConfig;
|
|
69
|
-
chainId: ChainId;
|
|
70
|
-
constructor(args?: BeraJS.BaseFunctionArgs);
|
|
71
|
-
/**
|
|
72
|
-
* Identifies the url of the last sent request. Might not have all query params.
|
|
73
|
-
* Mainly used for error reporting.
|
|
74
|
-
*/
|
|
75
|
-
url: string;
|
|
76
|
-
abstract readonly type: "rest" | "graphql" | "rpc";
|
|
77
|
-
abstract getQuote(args: IAggregatorArgs): Promise<IRawAggregatorQuote | undefined> | Promise<IRawAggregatorQuote<false> | undefined>;
|
|
78
|
-
/**
|
|
79
|
-
* return wbera for native tokens to accomodate the aggregator's router logic
|
|
80
|
-
*/
|
|
81
|
-
protected parseAddresses(tokenIn: string, tokenOut: string): {
|
|
82
|
-
tokenInAddress: Address;
|
|
83
|
-
tokenOutAddress: Address;
|
|
84
|
-
isTokenInNative: boolean;
|
|
85
|
-
isTokenOutNative: boolean;
|
|
86
|
-
};
|
|
87
|
-
/**
|
|
88
|
-
* Calculate input amount after fees
|
|
89
|
-
*/
|
|
90
|
-
protected getAmountAfterFees(amount: string, aggregatorsFeeBps?: number): string;
|
|
91
|
-
/**
|
|
92
|
-
* Formats input data for aggregator swaps
|
|
93
|
-
*/
|
|
94
|
-
protected getInputData({ tokenIn, amountIn, isNative, isPermit2Approval, permit2SpenderAddress, }: {
|
|
95
|
-
tokenIn: Address;
|
|
96
|
-
amountIn: string;
|
|
97
|
-
isNative: boolean;
|
|
98
|
-
isPermit2Approval?: boolean;
|
|
99
|
-
permit2SpenderAddress?: Address;
|
|
100
|
-
}): {
|
|
101
|
-
tokenIn: `0x${string}`;
|
|
102
|
-
amountIn: bigint;
|
|
103
|
-
isNative: boolean;
|
|
104
|
-
isPermit2Approval: boolean;
|
|
105
|
-
permit2SpenderAddress: `0x${string}`;
|
|
106
|
-
};
|
|
107
|
-
/**
|
|
108
|
-
* Calculate min amount out
|
|
109
|
-
*/
|
|
110
|
-
protected getMinAmountOut(amountOut: string, slippage: number): bigint;
|
|
111
|
-
/**
|
|
112
|
-
* Check if chain is supported
|
|
113
|
-
*/
|
|
114
|
-
protected checkChainSupport(): void;
|
|
115
|
-
protected fetch(url: string | URL, options?: RequestInit): Promise<Response>;
|
|
116
|
-
}
|
|
64
|
+
declare function getEnsoClient({ useProxy, ...args }?: BeraJS.BaseFunctionArgs & {
|
|
65
|
+
useProxy?: boolean;
|
|
66
|
+
}): EnsoClient;
|
|
117
67
|
|
|
118
68
|
declare function getAllPools({ textSearch, chain, first, orderBy, orderDirection, skip, fetchPolicy, userAddress, blacklistedPoolIds, ...args }?: Partial<GetPoolsQueryVariables & {
|
|
119
69
|
fetchPolicy: FetchPolicy;
|
|
@@ -688,11 +638,11 @@ declare function getDecodedFunctionData({ address, callData, chainId, publicClie
|
|
|
688
638
|
|
|
689
639
|
declare function getProposalDetails({ proposalId, ...args }: BeraJS.BaseFunctionArgs & {
|
|
690
640
|
proposalId: string;
|
|
691
|
-
client?:
|
|
641
|
+
client?: PublicClient;
|
|
692
642
|
}): Promise<ProposalWithVotesFragment | undefined>;
|
|
693
643
|
|
|
694
644
|
declare function getProposalFromTx(args: {
|
|
695
|
-
publicClient: PublicClient |
|
|
645
|
+
publicClient: PublicClient | undefined;
|
|
696
646
|
} & ({
|
|
697
647
|
tx: TransactionReceipt;
|
|
698
648
|
} | {
|
|
@@ -829,16 +779,17 @@ interface GetSwapPayloadReturn {
|
|
|
829
779
|
abi: Abi;
|
|
830
780
|
functionName: "mint" | "redeem";
|
|
831
781
|
params: ContractFunctionArgs<typeof pythWrapperAbi, "payable", "mint" | "redeem"> | ContractFunctionArgs<typeof honeyFactoryAbi, "nonpayable", "mint" | "redeem">;
|
|
832
|
-
value
|
|
782
|
+
value: bigint;
|
|
833
783
|
}
|
|
834
|
-
declare const getSwapPayload: ({ state,
|
|
784
|
+
declare const getSwapPayload: ({ state, publicClient, priceFeedMap, collateralList, isPythWrapperEnabled, ...args }: BeraJS.BaseFunctionArgs & {
|
|
835
785
|
state: Pick<IHoneySwapState, "actionType" | "fromAmount" | "collaterals" | "isBasketModeEnabled">;
|
|
836
|
-
account: Address | undefined;
|
|
837
786
|
collateralList: TokenWithMetadata[];
|
|
838
787
|
publicClient: PublicClient | undefined;
|
|
839
788
|
priceFeedMap?: PythPriceFeedMap;
|
|
840
789
|
isPythWrapperEnabled: boolean;
|
|
841
|
-
}) => Promise<
|
|
790
|
+
}) => Promise<({ account }: {
|
|
791
|
+
account: Address;
|
|
792
|
+
}) => GetSwapPayloadReturn>;
|
|
842
793
|
|
|
843
794
|
declare function isBasketModeEnabled({ client, isMint, collateralList, latestPrices, isPythWrapperEnabled, ...args }: {
|
|
844
795
|
client: PublicClient;
|
|
@@ -866,11 +817,38 @@ declare function getBlockTime({ defaultBlockTime, blocksSpan, ...args }?: {
|
|
|
866
817
|
blocksSpan?: number;
|
|
867
818
|
} & BeraJS.BaseFunctionArgs): Promise<number>;
|
|
868
819
|
|
|
820
|
+
type StakingHistoryData = {
|
|
821
|
+
currentDepositRate: string;
|
|
822
|
+
earningsRealized: string;
|
|
823
|
+
earningsTotal: string;
|
|
824
|
+
};
|
|
825
|
+
type GetEarnedStakedBeraVaultArgs = {
|
|
826
|
+
/**
|
|
827
|
+
* The token that the user has staked
|
|
828
|
+
*/
|
|
829
|
+
address: Address;
|
|
830
|
+
/**
|
|
831
|
+
* The account that the user has staked
|
|
832
|
+
*/
|
|
833
|
+
account: Address;
|
|
834
|
+
};
|
|
835
|
+
declare function getEarnedStakedBeraVault({ address, account, ...args }: BeraJS.BaseFunctionArgs & GetEarnedStakedBeraVaultArgs): Promise<StakingHistoryData>;
|
|
836
|
+
|
|
869
837
|
declare function getIncentiveFeeClaimStats({ ...args }: BeraJS.BaseFunctionArgs): Promise<{
|
|
870
838
|
sumAllClaims: number;
|
|
871
839
|
sumClaimsInLast24Hours: number;
|
|
872
840
|
}>;
|
|
873
841
|
|
|
842
|
+
type GetLSTStakeConfigArgs = {
|
|
843
|
+
tokenList: TokenWithMetadata[];
|
|
844
|
+
publicClient?: PublicClient;
|
|
845
|
+
lstStakingVaults: Address[];
|
|
846
|
+
} & BeraJS.BaseFunctionArgs;
|
|
847
|
+
/**
|
|
848
|
+
* Builds staking configs from on-chain LST vaults and optional native configs.
|
|
849
|
+
*/
|
|
850
|
+
declare function getLSTStakeConfig({ tokenList, publicClient, lstStakingVaults, ...args }: GetLSTStakeConfigArgs): Promise<StakingConfig[]>;
|
|
851
|
+
|
|
874
852
|
declare function getRewardProofsByValidator({ account, validator, page, perPage, ...args }: {
|
|
875
853
|
account: Address;
|
|
876
854
|
validator: Address;
|
|
@@ -934,38 +912,32 @@ declare function getStakedBeraAPR({ window, ...args }: {
|
|
|
934
912
|
window: "DAY" | "WEEK";
|
|
935
913
|
} & BeraJS.BaseFunctionArgs): Promise<number>;
|
|
936
914
|
|
|
937
|
-
|
|
938
|
-
|
|
939
|
-
|
|
940
|
-
|
|
941
|
-
interface VaultMetadata {
|
|
942
|
-
current: {
|
|
943
|
-
exchangeRate: string;
|
|
944
|
-
totalSupply: string;
|
|
945
|
-
totalAssets: string;
|
|
946
|
-
tvl: string;
|
|
947
|
-
};
|
|
948
|
-
previous: {
|
|
949
|
-
exchangeRate: string;
|
|
950
|
-
totalSupply: string;
|
|
951
|
-
totalAssets: string;
|
|
952
|
-
tvl: string;
|
|
953
|
-
};
|
|
954
|
-
totalWBeraIssued: string;
|
|
955
|
-
lockPeriod?: number;
|
|
956
|
-
totalBuyBacks: number;
|
|
957
|
-
totalBuyBacksInLast24Hours: number;
|
|
958
|
-
}
|
|
915
|
+
type GetStakedBeraSnapshotsArgs = {
|
|
916
|
+
chain?: GqlChain$1;
|
|
917
|
+
range?: GqlVaultSnapshotDataRange;
|
|
918
|
+
} & BeraJS.BaseFunctionArgs;
|
|
959
919
|
/**
|
|
960
920
|
*
|
|
961
|
-
* @param address - The address of the vault
|
|
962
921
|
* @throws {Error} If the vault is not found
|
|
963
922
|
* @returns
|
|
964
923
|
*/
|
|
965
|
-
declare function
|
|
924
|
+
declare function getStakedBeraSnapshots({ chain, range, ...args }?: GetStakedBeraSnapshotsArgs): Promise<GetSWberaVaultSnapshotsQuery["polGetSWberaVaultSnapshots"]>;
|
|
925
|
+
|
|
926
|
+
declare function getStakeWithdrawalCooldown({ publicClient, address, }: {
|
|
927
|
+
publicClient: PublicClient;
|
|
966
928
|
address: Address;
|
|
929
|
+
}): Promise<number>;
|
|
930
|
+
|
|
931
|
+
/**
|
|
932
|
+
* Get the total staked amount for a given vault address
|
|
933
|
+
* @param vaultAddresses - The addresses of the vaults to get the total staked amount for
|
|
934
|
+
* @param publicClient - The public client to use to get the total staked amount
|
|
935
|
+
* @returns The total staked amount for the given vault addresses
|
|
936
|
+
*/
|
|
937
|
+
declare function getTotalStakedAmount({ vaultAddresses, publicClient, }: {
|
|
938
|
+
vaultAddresses: Address$1[];
|
|
967
939
|
publicClient?: PublicClient;
|
|
968
|
-
} & BeraJS.BaseFunctionArgs): Promise<
|
|
940
|
+
} & BeraJS.BaseFunctionArgs): Promise<Record<Address$1, bigint>>;
|
|
969
941
|
|
|
970
942
|
/**
|
|
971
943
|
* Server-side function to get user claimable incentives grouped by validator
|
|
@@ -1018,20 +990,20 @@ declare function getPythUpdateFee({ client, priceFeedId, ...args }: {
|
|
|
1018
990
|
} & BeraJS.BaseFunctionArgs): Promise<bigint>;
|
|
1019
991
|
|
|
1020
992
|
interface GetAllowances {
|
|
1021
|
-
|
|
993
|
+
items: AllowanceQueryItem[] | undefined;
|
|
1022
994
|
account: `0x${string}` | undefined;
|
|
1023
|
-
|
|
1024
|
-
publicClient: PublicClient | undefined;
|
|
995
|
+
config: Config | undefined;
|
|
1025
996
|
}
|
|
1026
997
|
type GetAllowancesResponse = AllowanceToken[] | undefined;
|
|
1027
|
-
declare function getAllowances({
|
|
998
|
+
declare function getAllowances({ items: itemsList, account, config, }: GetAllowances): Promise<GetAllowancesResponse>;
|
|
1028
999
|
|
|
1029
1000
|
interface GetTokenInformation {
|
|
1030
1001
|
address: Address;
|
|
1031
1002
|
publicClient: PublicClient;
|
|
1003
|
+
chainId: number;
|
|
1032
1004
|
}
|
|
1033
1005
|
type GetTokenInformationResponse = MinimalERC20 | undefined;
|
|
1034
|
-
declare function getTokenInformation({ address, publicClient, }: GetTokenInformation): Promise<GetTokenInformationResponse>;
|
|
1006
|
+
declare function getTokenInformation({ address, publicClient, chainId, }: GetTokenInformation): Promise<GetTokenInformationResponse>;
|
|
1035
1007
|
|
|
1036
1008
|
declare function getTokens({ url, ...args }?: BeraJS.BaseFunctionArgs & {
|
|
1037
1009
|
url?: string;
|
|
@@ -1040,7 +1012,7 @@ declare function getTokens({ url, ...args }?: BeraJS.BaseFunctionArgs & {
|
|
|
1040
1012
|
interface GetWalletBalances {
|
|
1041
1013
|
account: string | undefined;
|
|
1042
1014
|
tokenList: Token[] | undefined;
|
|
1043
|
-
|
|
1015
|
+
wagmiConfig: Config | undefined;
|
|
1044
1016
|
}
|
|
1045
1017
|
/**
|
|
1046
1018
|
* Returns the payload for the balanceOf call for a given token and account.
|
|
@@ -1531,7 +1503,7 @@ declare function getBalanceCall({ token, account, multicallAddress, }: {
|
|
|
1531
1503
|
/**
|
|
1532
1504
|
* fetch the balances of a given wallet address
|
|
1533
1505
|
*/
|
|
1534
|
-
declare function getWalletBalances({ account, tokenList,
|
|
1506
|
+
declare function getWalletBalances({ account, tokenList, wagmiConfig: config, }: GetWalletBalances): Promise<BalanceToken[] | undefined>;
|
|
1535
1507
|
|
|
1536
1508
|
declare function isImpersonateAccount(chainId?: number): boolean;
|
|
1537
1509
|
declare function beraWriteContract<abi extends Abi | undefined = undefined, functionName extends abi extends Abi ? ContractFunctionName<abi> : never = abi extends Abi ? ContractFunctionName<abi> : never, params extends abi extends Abi ? ContractFunctionArgs<abi, "payable" | "nonpayable", functionName> : never = abi extends Abi ? ContractFunctionArgs<abi, "payable" | "nonpayable", functionName> : never>(args: IContractWrite<abi, functionName, params> & {
|
|
@@ -1647,4 +1619,4 @@ declare function getValidatorBoostApy({ validator, bgtPrice, }: {
|
|
|
1647
1619
|
bgtPrice: number;
|
|
1648
1620
|
}): number;
|
|
1649
1621
|
|
|
1650
|
-
export { type ActiveBoostAndCommissionChangeDelay,
|
|
1622
|
+
export { type ActiveBoostAndCommissionChangeDelay, BeraApolloClient, type GetAllowances, type GetAllowancesResponse, type GetLSTStakeConfigArgs, type GetStakedBeraSnapshotsArgs, type GetTokenInformation, type GetTokenInformationResponse, type GetUserVaultInfoParams, type GetUserVaultsInfo, type GetWalletBalances, MOCKED_PROPOSAL_STATUSES, type PoolDayData, PythLatestUpdates, type RewardVaultDurationConstants, ValidatorRewardAllocation, beraWriteContract, checkProposalField, computeActualStatus, getActiveBoostAndCommissionChangeDelay, getAllPools, getAllProposals, getAllValidators, getAllowances, getApiEnrichedAllocation, getApiPool, getApiValidator, getApolloClient, getBalanceCall, getBlockTime, getBlockTimestamp, getBodyErrors, getChartData, getCollateralWeights, getDailyValidatorBlockStats, getDecodedFunctionData, getDefaultRewardAllocation, getEarnedStakedBeraVault, getEnsoClient, getGlobalCapLimit, getGlobalLiquidityAndSwapVolume, getHoneyCollaterals, getHoneyGlobalData, getHoneyPausedState, getHoneyPythFeeds, getHoneyPythOracle, getHoneyRootPriceOracle, getIncentiveFeeClaimStats, getLSTStakeConfig, getManagedValidatorByAccount, getMaxDeposit, getPoolEvents, getPoolHistoricalData, getPoolState, getProposalDetails, getProposalFromTx, getProposalVotes, getPythUpdateFee, getRelativeCapLimit, getRewardProofsByValidator, getRewardTokenToBeraRate, getRewardVault, getRewardVaultDurationConstants, getRewardVaultFromToken, getRewardVaultStakingToken, getStakeWithdrawalCooldown, getStakedBeraAPR, getStakedBeraSnapshots, getStakingPoolBatch, getSubgraphPool, getSwapPayload, getTokenCurrentPrices, getTokenInformation, getTokens, getTotalStakedAmount, getUserClaimableIncentives, getUserVaultInfo, getUserVaultsReward, getValidatorAnalytics, getValidatorBoostApy, getValidatorCommission, getValidatorEstimatedBgtPerYear, getValidatorOperatorAddress, getValidatorQueuedRewardAllocation, getValidatorReturnPerBgt, getVaultPausedState, getVaultValidators, getWalletBalances, isBasketModeEnabled, isDefaultRewardAllocation, isImpersonateAccount, parseProposalBody };
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import{a as w,b as B,c as k,d as N}from"../chunk-F4BKSBEM.mjs";import{$ as Ze,A as ke,Aa as St,B as Ne,Ba as Dt,C as Se,Ca as Ft,D as De,Da as Tt,E as Fe,Ea as Rt,F as Te,Fa as vt,G as Re,Ga as It,H as ve,Ha as Mt,I as Ie,Ia as Vt,J as Me,K as Ve,L as Oe,M as We,N as Je,O as Ge,P as _e,Q as He,R as Ee,S as $e,T as qe,U as Le,V as Ue,W as Qe,X as ze,Y as Xe,Z as je,_ as Ke,a as te,aa as Ye,b as J,ba as et,c as h,ca as tt,d as G,da as rt,e as oe,ea as ot,f as ae,fa as at,g as ne,ga as nt,h as ie,ha as it,i as se,ia as st,j as me,ja as mt,k as pe,ka as pt,l as de,la as dt,m as ce,ma as lt,n as ue,na as ft,o as le,oa as yt,p as fe,pa as bt,q as ye,qa as xt,r as be,ra as gt,s as xe,sa as At,t as ge,ta as ht,u as Ae,ua as Ct,v as he,va as Pt,w as Ce,wa as wt,x as Pe,xa as Bt,y as we,ya as kt,z as Be,za as Nt}from"../chunk-A4UDYSB6.mjs";import{a as C,b as P,e as l,i as u,j as A,k as f,l as y}from"../chunk-Q3SCM6WL.mjs";import{a as re,b as ct,c as ut}from"../chunk-7SMWQ6SN.mjs";import"../chunk-NAXAZJJY.mjs";import"../chunk-OGJMSGB2.mjs";import"../chunk-7WRTK7RJ.mjs";import{b as F,c as b,d as T}from"../chunk-2LL3P5PN.mjs";import{d as S,l as R,q as v}from"../chunk-ECRMUMTA.mjs";import{a as m,e as D}from"../chunk-THATXCJK.mjs";import"../chunk-AX2YQQFQ.mjs";import{formatEther as _}from"viem";async function Jt({vaultAddress:e,publicClient:t}){let r=await t.readContract({address:e,abi:C,functionName:"maxDeposit",args:[e]});return _(r)}import{mapPoolType as H}from"@berachain-foundation/berancer-sdk";var Ht=e=>({type:H(e.type),protocolVersion:e.protocolVersion,tokens:e.tokens.map(t=>({...t,address:t.address})),id:e.id,address:e.address});async function Lt({publicClient:e,...t}){let{config:r}=m(t);return(await e.readContract({address:r.bex.vault,abi:P,functionName:"getPausedState"}))[0]}import{decodeFunctionData as M,erc20Abi as E,pad as $,toFunctionSignature as q,trim as I}from"viem";import{appConfig as L,defaultChainId as U}from"@berachain/config/internal";function Q(e){return e.some(t=>t.name==="implementation"||t.name==="proxyType"||t.type==="constructor"&&t.inputs?.[0]?.name==="implementation")}async function V({contractAddress:e,chainId:t,publicClient:r}){let o=`https://api.etherscan.io/v2/api?module=contract&action=getabi&address=${e}&apikey=${L.apiKeys.private.etherscan}&chainId=${t}`,a=await fetch(o);if(!a.ok)throw new Error(`Failed to fetch ABI: ${a.statusText}`);let n=await a.json();if(n.status==="0")throw new Error(n.result);let p=JSON.parse(n.result);if(!Q(p))return p;let i=await r.getStorageAt({address:e,slot:"0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc"});if(!i||I(i)==="0x00")return p;let s=$(I(i),{size:20});return V({contractAddress:s,chainId:t,publicClient:r})}async function z({address:e,callData:t,knownAbi:r,chainId:o,publicClient:a}){try{if(M({data:t,abi:r}))return r}catch{}try{return await V({contractAddress:e,chainId:o,publicClient:a})}catch{}}function X(e,t){try{return M({data:e,abi:t})}catch{return}}function j(e,t){return e.find(r=>r.type==="function"&&r.name===t)}function K(e){if(e)try{return q(e)}catch(t){console.error(t)}}async function Kt({address:e,callData:t,chainId:r=U,publicClient:o}){let a=[...u,...f,...E],n=await z({address:e,callData:t,knownAbi:a,chainId:r,publicClient:o}),p=X(t,n);if(!n||!p)return{args:[]};let i=j(n,p.functionName),s=K(i);return{abiItem:i,functionSignature:s,functionName:p.functionName,args:p.args}}import{formatUnits as x}from"viem";async function rr({client:e,collateralList:t,...r}){let{config:o}=m(r);try{let a={mint:[],redeem:[]};for(let s of t)a.mint.push(e.readContract({address:o.honey.factory,abi:l,functionName:"mintRates",args:[s.address]})),a.redeem.push(e.readContract({address:o.honey.factory,abi:l,functionName:"redeemRates",args:[s.address]}));let[n,p,i]=await Promise.all([Promise.all(a.mint),Promise.all(a.redeem),e.readContract({address:o.honey.factory,abi:l,functionName:"getWeights"})]);return t.reduce((s,d)=>{let c=t.indexOf(d);return s.single[d.address]={mintFee:1-+x(n[c],18),redeemFee:1-+x(p[c],18)},s.basket.mintFee+=s.single[d.address].mintFee*+x(i[c],18),s.basket.redeemFee+=s.single[d.address].redeemFee*+x(i[c],18),s},{single:{},basket:{mintFee:0,redeemFee:0}})}catch(a){throw console.log(a),a}}async function ir({client:e,...t}){let{config:r}=m(t),o=r.honey.token;return await e.readContract({address:o,abi:w,functionName:"paused"})}async function pr({pythOracle:e,publicClient:t}){return await t.readContract({address:e,abi:B,functionName:"pythOracle"})}async function lr({publicClient:e,factory:t,...r}){let{config:o}=m(r);return await e.readContract({address:t??o.honey.factory,abi:l,functionName:"priceOracle"})}import{GetBlocksTimeStamp as Z}from"@berachain/graphql/chain";async function Ar({defaultBlockTime:e,blocksSpan:t,...r}={}){let{config:o}=m(r),a=h("blocks.subgraph",r),n=e??o.averageBlockTime,p=t??Math.floor(v(1)/n),s=(await a.query({query:Z,variables:{skip:p}})).data;return(R(Date.now())-Number(s?.oldest[0]?.timestamp))/(Number(s?.newest[0]?.number)-Number(s?.oldest[0]?.number))}async function kr({tokenList:e,publicClient:t,lstStakingVaults:r,...o}){b(t);let{config:a}=m({...o,chainId:t.chain?.id??o.chainId}),n=e.filter(i=>r.includes(i.address));return n.length===0?[]:(await Promise.all(n.map(async i=>({assetTokenAddress:await t.readContract({address:i.address,abi:N,functionName:"asset"}),stakingToken:i})))).reduce((i,{assetTokenAddress:s,stakingToken:d})=>{let c=e.find(g=>D(g,s));return c&&i.push({id:d.address,receiptToken:d,inputTokens:[c]}),i},[])}var O=[{inputs:[{internalType:"address",name:"initialOwner",type:"address"},{internalType:"address",name:"initialImplementation",type:"address"}],stateMutability:"payable",type:"constructor"},{inputs:[],name:"NewImplementationHasNoCode",type:"error"},{inputs:[],name:"NewOwnerIsZeroAddress",type:"error"},{inputs:[],name:"Unauthorized",type:"error"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"oldOwner",type:"address"},{indexed:!0,internalType:"address",name:"newOwner",type:"address"}],name:"OwnershipTransferred",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"implementation",type:"address"}],name:"Upgraded",type:"event"},{inputs:[],name:"implementation",outputs:[{internalType:"address",name:"result",type:"address"}],stateMutability:"view",type:"function"},{inputs:[],name:"owner",outputs:[{internalType:"address",name:"result",type:"address"}],stateMutability:"view",type:"function"},{inputs:[],name:"renounceOwnership",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"newOwner",type:"address"}],name:"transferOwnership",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"newImplementation",type:"address"}],name:"upgradeTo",outputs:[],stateMutability:"nonpayable",type:"function"}];async function W({publicClient:e,...t}){let{config:r}=m(t),o=r.pol.factory;F(e,"publicClient"),T(r.pol.factory,"factoryAddress");let a=await e.readContract({address:o,abi:y,functionName:"beacon"});return await e.readContract({address:a,abi:O,functionName:"implementation"})}async function Or({publicClient:e,...t}){b(e);let r=await W({publicClient:e,...t}),[o,a]=await Promise.all([e.readContract({address:r,abi:f,functionName:"MIN_REWARD_DURATION"}),e.readContract({address:r,abi:f,functionName:"MAX_REWARD_DURATION"})]);return{minRewardDuration:Number(o),maxRewardDuration:Number(a)}}import{zeroAddress as Y}from"viem";async function Hr({tokenAddress:e,publicClient:t,factoryAddress:r,...o}){let{config:a}=m(o),n=await t.readContract({address:r??a.pol.factory,abi:y,functionName:"getVault",args:[e]});return n===Y?null:n}async function Lr({tokenList:e,publicClient:t,...r}){let{config:o}=m(r);try{let a=await Promise.all(e.map(n=>t.readContract({address:o.honey.pythOracle,abi:k,functionName:"feeds",args:[n]})));return e.reduce((n,p,i)=>({...n,[p]:a[i]}),{})}catch(a){throw console.error("getPythPriceFeedId",a),a}}async function Xr({url:e,...t}={}){let{config:r}=m(t);return(await S({url:e??r.lists.tokenList,type:"rest",name:"GitHub"})).tokens??[]}async function eo({publicClient:e,ui:t,...r}){let{config:o}=m(r),[a,n,p,i,s,d,c,g]=await Promise.all([e.readContract({address:o.pol.beraChef,abi:u,functionName:"MAX_COMMISSION_RATE"}),e.readContract({address:o.pol.beraChef,abi:u,functionName:"commissionChangeDelay"}),e.readContract({address:o.pol.beraChef,abi:u,functionName:"rewardAllocationBlockDelay"}),e.readContract({address:o.pol.beraChef,abi:u,functionName:"maxWeightPerVault"}),e.readContract({address:o.pol.beraChef,abi:u,functionName:"maxNumWeightsPerRewardAllocation"}),e.readContract({address:o.tokens.bgt,abi:A,functionName:"dropBoostDelay"}),e.readContract({address:o.tokens.bgt,abi:A,functionName:"activateBoostDelay"}),e.readContract({address:o.pol.beraChef,abi:u,functionName:"rewardAllocationInactivityBlockSpan"})]);return{maxCommissionRate:Number(a)/1e4,boostDelay:Number(c),unboostDelay:Number(d),commissionChangeDelay:Number(n),rewardAllocationBlockDelay:Number(p),maxWeightPerVault:Number(i)/1e4,maxNumWeightsPerRewardAllocation:Number(s),rewardAllocationInactivityBlockSpan:Number(g),ui:t}}function ee(e){return e?.rewardAllocationWeights?.reduce((t,r)=>{if(!r)return t;let o=r.receivingVault?.activeIncentives.filter(a=>Number(a.remainingAmount)>0).reduce((a,n)=>{let p=Number(n.remainingAmountUsd)/Number(n.remainingAmount);return a+Number(n.incentiveRate)*p},0)??0;return t+o*r.percentage},0)}function ro({validator:e,bgtPrice:t}){let r=Number(e.dynamicData?.activeBoostAmount??0),o=ee(e);return!o||!r?0:o*Number(e.dynamicData?.lastDayDistributedBGTAmount??0)*365/(r*t)}export{ae as BalancerApi,oe as BaseAggregator,J as BeraApolloClient,Fe as HoneyPreviewMethod,fe as MOCKED_PROPOSAL_STATUSES,Je as RewardVaultDistributionMode,ft as beraWriteContract,le as checkProposalField,ye as computeActualStatus,At as formatValidatorRewardAllocation,eo as getActiveBoostAndCommissionChangeDelay,ne as getAllPools,be as getAllProposals,yt as getAllValidators,dt as getAllowances,bt as getApiEnrichedAllocation,ie as getApiPool,xt as getApiValidator,h as getApolloClient,ct as getBalanceCall,_e as getBgtAprSimulation,Ar as getBlockTime,We as getBlockTimestamp,xe as getBodyErrors,Pe as getChartData,we as getCollateralWeights,te as getConvertToAssets,gt as getDailyValidatorBlockStats,Kt as getDecodedFunctionData,wt as getDefaultRewardAllocation,He as getEarnedStakedBeraVault,re as getEnsoClient,Se as getGlobalCapLimit,$e as getGlobalData,se as getGlobalLiquidityAndSwapVolume,ke as getHoneyCollaterals,rr as getHoneyFees,De as getHoneyGlobalData,ir as getHoneyPausedState,Te as getHoneyPreview,Lr as getHoneyPythFeeds,pr as getHoneyPythOracle,lr as getHoneyRootPriceOracle,Re as getHoneyVaultsBalance,qe as getIncentiveFeeClaimStats,kr as getLSTStakeConfig,Bt as getManagedValidatorByAccount,Le as getMarkets,Jt as getMaxDeposit,pe as getOnChainPool,de as getPoolEvents,ce as getPoolHistoricalData,me as getPoolPausedState,Ht as getPoolState,ge as getProposalDetails,he as getProposalFromTx,Ce as getProposalVotes,ve as getPythLatestPrices,Me as getPythUpdateFee,Ie as getRelativeCapLimit,Ue as getRewardProofsByValidator,Qe as getRewardTokenToBeraRate,ze as getRewardVault,Or as getRewardVaultDurationConstants,Hr as getRewardVaultFromToken,Xe as getRewardVaultIncentives,Ge as getRewardVaultRewards,je as getRewardVaultStakingToken,Ee as getRewardVaults,et as getSWBeraVaultMetadata,tt as getSWBeraWithdrawal,Ye as getStakeWithdrawalCooldown,Ke as getStakedBeraAPR,Ze as getStakedBeraSnapshots,kt as getStakingPoolBatch,ue as getSubgraphPool,Ve as getSwapPayload,pt as getTokenCurrentPrices,Be as getTokenInformation,Xr as getTokens,rt as getTotalStakedAmount,St as getUserActiveValidators,Nt as getUserBoostsOnValidator,ot as getUserClaimableIncentives,Dt as getUserStakingPositions,nt as getUserVaultInfo,it as getUserVaults,at as getUserVaultsReward,Ft as getValidatorAnalytics,ro as getValidatorBoostApy,Tt as getValidatorCommission,Rt as getValidatorEstimatedBgtPerYear,vt as getValidatorOperatorAddress,It as getValidatorQueuedCommission,Mt as getValidatorQueuedOperatorAddress,Vt as getValidatorQueuedRewardAllocation,ee as getValidatorReturnPerBgt,Ct as getValidatorRewardAllocation,st as getVaultHistory,Lt as getVaultPausedState,mt as getVaultValidators,ut as getWalletBalances,G as gql,Ne as isBadCollateralAsset,Oe as isBasketModeEnabled,Pt as isDefaultRewardAllocation,lt as isImpersonateAccount,ht as isSameRewardAllocation,Ae as parseProposalBody};
|
|
2
|
+
//# sourceMappingURL=exports.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../src/actions/bend/getMaxDeposit.ts","../../src/actions/dex/getPoolWithState.ts","../../src/actions/dex/getVaultPausedState.ts","../../src/actions/governance/getDecodedFunctionData.ts","../../src/actions/honey/getHoneyFees.ts","../../src/actions/honey/getHoneyPausedState.ts","../../src/actions/honey/getHoneyPythPriceOracle.ts","../../src/actions/honey/getHoneyRootPriceOracle.ts","../../src/actions/pol/getBlockTime.ts","../../src/actions/pol/getLSTStakeConfig.ts","../../src/abi/utils/upgradableBeacon.ts","../../src/actions/pol/getRewardVaultBeaconImplementation.ts","../../src/actions/pol/getRewardVaultDurationConstants.ts","../../src/actions/pol/getRewardVaultFromToken.ts","../../src/actions/pyth/getHoneyPythFeeds.ts","../../src/actions/tokens/getTokens.ts","../../src/actions/validators/getActiveBoostAndCommissionChangeDelay.ts","../../src/actions/validators/utils/getValidatorBoostApy.ts"],"sourcesContent":["import { type Address, formatEther, type PublicClient } from \"viem\";\n\nimport { metaMorphoAbi } from \"~/abi/bend/metaMorpho\";\n\ninterface GetMaxDepositProps {\n vaultAddress: Address;\n publicClient: PublicClient;\n}\n\nexport async function getMaxDeposit({\n vaultAddress,\n publicClient,\n}: GetMaxDepositProps): Promise<string> {\n const maxDeposit = await publicClient.readContract({\n address: vaultAddress,\n abi: metaMorphoAbi,\n functionName: \"maxDeposit\",\n args: [vaultAddress],\n });\n return formatEther(maxDeposit);\n}\n","import {\n type MinimalToken,\n mapPoolType,\n type PoolState,\n} from \"@berachain-foundation/berancer-sdk\";\nimport type { Address } from \"viem\";\n\nimport type { MinimalPoolFragment } from \"@berachain/graphql/dex/api\";\n\nexport const getPoolState = (apiPool: MinimalPoolFragment): PoolState => {\n return {\n type: mapPoolType(apiPool.type),\n protocolVersion: apiPool.protocolVersion as 1 | 2 | 3,\n tokens: apiPool.tokens.map<MinimalToken>(\n (pt) =>\n ({\n ...pt,\n address: pt.address as Address,\n }) satisfies MinimalToken,\n ),\n id: apiPool.id as Address,\n address: apiPool.address as Address,\n } satisfies PoolState;\n};\n","import type { PublicClient } from \"viem\";\n\nimport { balancerVaultAbi } from \"~/abi/bex/balancerVault\";\nimport { parseBaseArgs } from \"~/utils/parseBaseArgs\";\n\nexport async function getVaultPausedState({\n publicClient,\n ...args\n}: BeraJS.BaseFunctionArgs & {\n publicClient: PublicClient;\n}) {\n const { config } = parseBaseArgs(args);\n\n const vaultPausedState = await publicClient.readContract({\n address: config.bex.vault,\n abi: balancerVaultAbi,\n functionName: \"getPausedState\",\n });\n\n return vaultPausedState[0];\n}\n","import {\n type Abi,\n type AbiFunction,\n type AbiItem,\n type Address,\n decodeFunctionData,\n erc20Abi,\n type PublicClient,\n pad,\n toFunctionSignature,\n trim,\n} from \"viem\";\n\nimport { appConfig, defaultChainId } from \"@berachain/config/internal\";\n\nimport { beraChefAbi } from \"~/abi/pol/beraChef\";\nimport { rewardVaultAbi } from \"~/abi/pol/rewardVault\";\n\n// Function to check if ABI contains proxy-related functions\nfunction isProxyABI(abi: Abi[]): boolean {\n return abi.some(\n (item: any) =>\n item.name === \"implementation\" ||\n item.name === \"proxyType\" ||\n (item.type === \"constructor\" &&\n item.inputs?.[0]?.name === \"implementation\"),\n );\n}\n\n/**\n * {@link https://docs.berascan.com/api-endpoints/contracts}\n */\nasync function _getAbi({\n contractAddress,\n chainId,\n publicClient,\n}: {\n contractAddress: Address;\n chainId: number;\n publicClient: PublicClient;\n}) {\n const url = `https://api.etherscan.io/v2/api?module=contract&action=getabi&address=${contractAddress}&apikey=${appConfig.apiKeys.private.etherscan}&chainId=${chainId}`;\n\n const response = await fetch(url);\n\n if (!response.ok) {\n throw new Error(`Failed to fetch ABI: ${response.statusText}`);\n }\n\n const data = await response.json();\n if (data.status === \"0\") throw new Error(data.result);\n\n const abi = JSON.parse(data.result);\n if (!isProxyABI(abi)) return abi;\n\n const implementationResult = await publicClient.getStorageAt({\n address: contractAddress,\n // bytes32(uint256(keccak256('eip1967.proxy.implementation')) - 1)).\n slot: \"0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc\",\n });\n\n // if implementation is not set, it might be a beacon proxy\n if (!implementationResult || trim(implementationResult) === \"0x00\")\n return abi;\n // storage slot has 32 byes (64 characters) but an address only has 20 bytes (40 characters)\n const implementationAddress = pad(trim(implementationResult), { size: 20 });\n return _getAbi({\n contractAddress: implementationAddress as `0x${string}`,\n chainId,\n publicClient,\n });\n}\n\nasync function _getAbiForCallData({\n address,\n callData,\n knownAbi,\n chainId,\n publicClient,\n}: {\n address: Address;\n callData: `0x${string}`;\n knownAbi: AbiItem[];\n chainId: number;\n publicClient: PublicClient;\n}) {\n try {\n if (decodeFunctionData({ data: callData, abi: knownAbi })) {\n return knownAbi;\n }\n } catch {}\n try {\n return await _getAbi({ contractAddress: address, chainId, publicClient });\n } catch {}\n}\n\nfunction _decodeCallData(callData: `0x${string}`, abi: AbiItem[]) {\n try {\n return decodeFunctionData({ data: callData, abi });\n } catch {\n return undefined;\n }\n}\n\nfunction _findAbiItem(abi: AbiItem[], functionName: string) {\n return abi.find(\n (a: AbiItem) => a.type === \"function\" && a.name === functionName,\n ) as AbiFunction | undefined;\n}\n\nfunction _getFunctionSignature(abiItem: AbiFunction | undefined) {\n if (!abiItem) return;\n try {\n return toFunctionSignature(abiItem);\n } catch (error) {\n console.error(error);\n }\n}\n\n/**\n * Decodes the function data from a given contract address and calldata.\n *\n * This function attempts to decode the provided calldata using a known set of ABIs.\n * If the call data cannot be decoded with the known ABIs, it fetches the ABI from the blockexplorer API.\n *\n * @param address - The contract address.\n * @param callData - The calldata to decode, in hexadecimal format.\n * @returns An object containing the decoded ABI item, function signature, function name, and arguments.\n */\nexport async function getDecodedFunctionData({\n address,\n callData,\n chainId = defaultChainId,\n publicClient,\n}: {\n address: Address;\n callData: `0x${string}`;\n chainId?: number;\n publicClient: PublicClient;\n}) {\n const knownAbi = [...beraChefAbi, ...rewardVaultAbi, ...erc20Abi];\n\n const abi = await _getAbiForCallData({\n address,\n callData,\n knownAbi,\n chainId,\n publicClient,\n });\n\n const decodedData = _decodeCallData(callData, abi);\n\n if (!abi || !decodedData) {\n return { args: [] };\n }\n\n const abiItem = _findAbiItem(abi, decodedData.functionName);\n\n const functionSignature = _getFunctionSignature(abiItem);\n\n return {\n abiItem,\n functionSignature,\n functionName: decodedData.functionName,\n args: decodedData.args as unknown[],\n };\n}\n","import { type Address, formatUnits, type PublicClient } from \"viem\";\n\nimport type { Token } from \"@berachain/graphql/pol/api\";\n\nimport { honeyFactoryAbi } from \"~/abi/honey/honeyFactory\";\nimport { parseBaseArgs } from \"~/utils/parseBaseArgs\";\n\nexport interface CollateralRates {\n mintFee: number;\n redeemFee: number;\n}\n\nexport interface HoneyFeeMap {\n single: Record<Address, CollateralRates>;\n basket: CollateralRates;\n}\n\nexport interface CollateralRatesArgs extends BeraJS.BaseFunctionArgs {\n client: PublicClient;\n collateralList: Token[];\n}\n\n/**\n * Fetches the mint and redeem rates for all collateral tokens and calculates the weighted basket rates\n * @param {Object} params - The parameters object\n * @param {PublicClient} params.client - The Viem public client instance\n * @param {Address[]} params.collateralList - Array of collateral token addresses\n * @returns {Promise<HoneyFeeMap | undefined>} Object containing individual collateral rates and weighted basket rates,\n * or undefined if the operation fails\n */\nexport async function getHoneyFees({\n client,\n collateralList,\n ...args\n}: CollateralRatesArgs): Promise<HoneyFeeMap> {\n const { config } = parseBaseArgs(args);\n\n try {\n // create a list for all the promises needed, fetch the mint and redeem rates for each collateral token\n const promiseList: Record<\"mint\" | \"redeem\", Promise<bigint>[]> = {\n mint: [],\n redeem: [],\n };\n for (const coll of collateralList) {\n promiseList.mint.push(\n client.readContract({\n address: config.honey.factory,\n abi: honeyFactoryAbi,\n functionName: \"mintRates\",\n args: [coll.address as Address],\n }),\n );\n promiseList.redeem.push(\n client.readContract({\n address: config.honey.factory,\n abi: honeyFactoryAbi,\n functionName: \"redeemRates\",\n args: [coll.address as Address],\n }),\n );\n }\n const [mintRates, redeemRates, collateralWeights] = await Promise.all([\n Promise.all(promiseList.mint),\n Promise.all(promiseList.redeem),\n // fetch the collateral weights, needed to calculate the weighted basket rates\n client.readContract({\n address: config.honey.factory,\n abi: honeyFactoryAbi,\n functionName: \"getWeights\",\n }),\n ]);\n\n // calculate the weighted basket rates and the single collateral rates\n\n return collateralList.reduce<HoneyFeeMap>(\n (acc, coll) => {\n const collIdx = collateralList.indexOf(coll);\n acc.single[coll.address as Address] = {\n mintFee: 1 - +formatUnits(mintRates[collIdx], 18),\n redeemFee: 1 - +formatUnits(redeemRates[collIdx], 18),\n };\n acc.basket.mintFee +=\n acc.single[coll.address as Address].mintFee *\n +formatUnits(collateralWeights[collIdx], 18);\n\n acc.basket.redeemFee +=\n acc.single[coll.address as Address].redeemFee *\n +formatUnits(collateralWeights[collIdx], 18);\n return acc;\n },\n {\n single: {},\n basket: { mintFee: 0, redeemFee: 0 },\n },\n );\n } catch (e) {\n console.log(e);\n throw e;\n }\n}\n","import type { PublicClient } from \"viem\";\n\nimport { honeyAbi } from \"~/abi/honey/honey\";\nimport { parseBaseArgs } from \"~/utils/parseBaseArgs\";\n\n/**\n * Gets the pause state of the Honey protocol\n * @returns boolean\n */\nexport async function getHoneyPausedState({\n client,\n ...args\n}: BeraJS.BaseFunctionArgs & {\n client: PublicClient;\n}) {\n const { config } = parseBaseArgs(args);\n const honeyAddress = config.honey.token;\n const honeyPausedState = await client.readContract({\n address: honeyAddress,\n abi: honeyAbi,\n functionName: \"paused\",\n });\n\n return honeyPausedState;\n}\n","import type { Address, PublicClient } from \"viem\";\n\nimport { honeyRootOracleAbi } from \"~/abi/honey/honeyRootOracle\";\n\n/**\n * Gets the address of the Honey Pyth Oracle, which is called by the Honey Root Price Oracle to get the price of the collaterals\n * @returns\n */\nexport async function getHoneyPythOracle({\n pythOracle,\n publicClient,\n}: {\n publicClient: PublicClient;\n pythOracle: Address;\n}) {\n return await publicClient.readContract({\n address: pythOracle,\n abi: honeyRootOracleAbi,\n functionName: \"pythOracle\",\n });\n}\n","import type { Address, PublicClient } from \"viem\";\n\nimport { honeyFactoryAbi } from \"~/abi/honey/honeyFactory\";\nimport { parseBaseArgs } from \"~/utils/parseBaseArgs\";\n\n/**\n * Gets the address of the Honey Root Price Oracle, which keeps the logic to price the collaterals\n */\nexport async function getHoneyRootPriceOracle({\n publicClient,\n factory,\n ...args\n}: BeraJS.BaseFunctionArgs & {\n publicClient: PublicClient;\n factory?: Address;\n}): Promise<Address> {\n const { config } = parseBaseArgs(args);\n return await publicClient.readContract({\n address: factory ?? config.honey.factory,\n abi: honeyFactoryAbi,\n functionName: \"priceOracle\",\n });\n}\n","import {\n GetBlocksTimeStamp,\n type GetBlocksTimeStampQuery,\n type GetBlocksTimeStampQueryVariables,\n} from \"@berachain/graphql/chain\";\n\nimport { parseBaseArgs } from \"~/utils/parseBaseArgs\";\nimport { hoursInSeconds, msToSeconds } from \"~/utils/time\";\nimport { getApolloClient } from \"../clients/getApolloClient\";\n\nexport async function getBlockTime({\n defaultBlockTime,\n blocksSpan,\n ...args\n}: {\n defaultBlockTime?: number;\n blocksSpan?: number;\n} & BeraJS.BaseFunctionArgs = {}): Promise<number> {\n const { config } = parseBaseArgs(args);\n\n const blocksClient = getApolloClient(\"blocks.subgraph\", args);\n\n const blockTime = defaultBlockTime ?? config.averageBlockTime;\n const span = blocksSpan ?? Math.floor(hoursInSeconds(1) / blockTime);\n\n const res = await blocksClient.query<\n GetBlocksTimeStampQuery,\n GetBlocksTimeStampQueryVariables\n >({\n query: GetBlocksTimeStamp,\n variables: {\n skip: span,\n },\n });\n\n const data = res.data;\n\n return (\n // we need to use current timestamp as the latest block might not have been minted (chain halted)\n (msToSeconds(Date.now()) - Number(data?.oldest[0]?.timestamp)) /\n (Number(data?.newest[0]?.number) - Number(data?.oldest[0]?.number))\n );\n}\n","import type { Address, PublicClient } from \"viem\";\n\nimport { lstStakerVaultAbi } from \"~/abi/pol/LSTStakerVault\";\nimport { assertPublicClient } from \"~/errors/assert\";\nimport type { TokenWithMetadata } from \"~/types/dex\";\nimport type { StakingConfig } from \"~/types/staking\";\nimport { parseBaseArgs } from \"~/utils/parseBaseArgs\";\nimport { isToken } from \"~/utils/tokens\";\n\nexport type GetLSTStakeConfigArgs = {\n tokenList: TokenWithMetadata[];\n publicClient?: PublicClient;\n lstStakingVaults: Address[];\n} & BeraJS.BaseFunctionArgs;\n\n/**\n * Builds staking configs from on-chain LST vaults and optional native configs.\n */\nexport async function getLSTStakeConfig({\n tokenList,\n publicClient,\n lstStakingVaults,\n ...args\n}: GetLSTStakeConfigArgs): Promise<StakingConfig[]> {\n assertPublicClient(publicClient);\n\n const { config } = parseBaseArgs({\n ...args,\n chainId: publicClient.chain?.id ?? args.chainId,\n });\n\n const lstStakingTokens = tokenList.filter((token) =>\n lstStakingVaults.includes(token.address),\n );\n\n if (lstStakingTokens.length === 0) {\n return [];\n }\n\n const assets = await Promise.all(\n lstStakingTokens.map(async (stakingToken) => {\n // read the asset token address from the lst staking vault\n const assetTokenAddress = await publicClient.readContract({\n address: stakingToken.address,\n abi: lstStakerVaultAbi,\n functionName: \"asset\",\n });\n return { assetTokenAddress, stakingToken };\n }),\n );\n\n return assets.reduce<StakingConfig[]>(\n (acc, { assetTokenAddress, stakingToken }) => {\n const assetToken = tokenList.find((token) =>\n isToken(token, assetTokenAddress),\n );\n if (!assetToken) return acc;\n acc.push({\n id: stakingToken.address,\n receiptToken: stakingToken,\n inputTokens: [assetToken],\n });\n return acc;\n },\n [],\n );\n}\n","export const upgradableBeaconAbi = [\n {\n inputs: [\n { internalType: \"address\", name: \"initialOwner\", type: \"address\" },\n {\n internalType: \"address\",\n name: \"initialImplementation\",\n type: \"address\",\n },\n ],\n stateMutability: \"payable\",\n type: \"constructor\",\n },\n { inputs: [], name: \"NewImplementationHasNoCode\", type: \"error\" },\n { inputs: [], name: \"NewOwnerIsZeroAddress\", type: \"error\" },\n { inputs: [], name: \"Unauthorized\", type: \"error\" },\n {\n anonymous: false,\n inputs: [\n {\n indexed: true,\n internalType: \"address\",\n name: \"oldOwner\",\n type: \"address\",\n },\n {\n indexed: true,\n internalType: \"address\",\n name: \"newOwner\",\n type: \"address\",\n },\n ],\n name: \"OwnershipTransferred\",\n type: \"event\",\n },\n {\n anonymous: false,\n inputs: [\n {\n indexed: true,\n internalType: \"address\",\n name: \"implementation\",\n type: \"address\",\n },\n ],\n name: \"Upgraded\",\n type: \"event\",\n },\n {\n inputs: [],\n name: \"implementation\",\n outputs: [{ internalType: \"address\", name: \"result\", type: \"address\" }],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [],\n name: \"owner\",\n outputs: [{ internalType: \"address\", name: \"result\", type: \"address\" }],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [],\n name: \"renounceOwnership\",\n outputs: [],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [{ internalType: \"address\", name: \"newOwner\", type: \"address\" }],\n name: \"transferOwnership\",\n outputs: [],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [\n { internalType: \"address\", name: \"newImplementation\", type: \"address\" },\n ],\n name: \"upgradeTo\",\n outputs: [],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n] as const;\n","import type { Address, PublicClient } from \"viem\";\n\nimport { rewardVaultFactoryAbi } from \"~/abi/pol/rewardVaultFactory\";\nimport { upgradableBeaconAbi } from \"~/abi/utils/upgradableBeacon\";\nimport { assertAddress, assertDefined } from \"~/errors/assert\";\nimport { parseBaseArgs } from \"~/utils/parseBaseArgs\";\n\n/**\n * Returns the beacon implementation address for all reward vaults.\n */\nexport async function getRewardVaultBeaconImplementation({\n publicClient,\n ...args\n}: BeraJS.BaseFunctionArgs & {\n publicClient: PublicClient;\n}): Promise<Address> {\n const { config } = parseBaseArgs(args);\n const factoryAddress = config.pol.factory;\n assertDefined(publicClient, \"publicClient\");\n assertAddress(config.pol.factory, \"factoryAddress\");\n\n // from the factory contract, we get the beacon address\n const beacon = await publicClient.readContract({\n address: factoryAddress,\n abi: rewardVaultFactoryAbi,\n functionName: \"beacon\",\n });\n\n // from the beacon contract, we get the current implementation address\n return await publicClient.readContract({\n address: beacon,\n abi: upgradableBeaconAbi,\n functionName: \"implementation\",\n });\n}\n","import type { PublicClient } from \"viem\";\n\nimport { rewardVaultAbi } from \"~/abi/pol/rewardVault\";\nimport { assertPublicClient } from \"~/errors/assert\";\nimport { getRewardVaultBeaconImplementation } from \"./getRewardVaultBeaconImplementation\";\n\nexport interface RewardVaultDurationConstants {\n minRewardDuration: number;\n maxRewardDuration: number;\n}\n\n/**\n * Returns the minimum and maximum reward duration constants for all reward vaults.\n */\nexport async function getRewardVaultDurationConstants({\n publicClient,\n ...baseArgs\n}: BeraJS.BaseFunctionArgs & {\n publicClient: PublicClient;\n}): Promise<RewardVaultDurationConstants> {\n assertPublicClient(publicClient);\n\n const beaconImplementation = await getRewardVaultBeaconImplementation({\n publicClient,\n ...baseArgs,\n });\n\n const [minRewardDuration, maxRewardDuration] = await Promise.all([\n publicClient.readContract({\n address: beaconImplementation,\n abi: rewardVaultAbi,\n functionName: \"MIN_REWARD_DURATION\",\n }),\n publicClient.readContract({\n address: beaconImplementation,\n abi: rewardVaultAbi,\n functionName: \"MAX_REWARD_DURATION\",\n }),\n ]);\n\n return {\n minRewardDuration: Number(minRewardDuration),\n maxRewardDuration: Number(maxRewardDuration),\n };\n}\n","import { type Address, type PublicClient, zeroAddress } from \"viem\";\n\nimport { rewardVaultFactoryAbi } from \"~/abi/pol/rewardVaultFactory\";\nimport { parseBaseArgs } from \"~/utils/parseBaseArgs\";\n\nexport async function getRewardVaultFromToken({\n tokenAddress,\n publicClient,\n factoryAddress,\n ...args\n}: {\n tokenAddress: Address;\n publicClient: PublicClient;\n factoryAddress?: Address;\n} & BeraJS.BaseFunctionArgs) {\n const { config } = parseBaseArgs(args);\n\n const vaultAddress = await publicClient.readContract({\n address: factoryAddress ?? config.pol.factory,\n abi: rewardVaultFactoryAbi,\n functionName: \"getVault\",\n args: [tokenAddress],\n });\n\n if (vaultAddress === zeroAddress) {\n return null;\n }\n\n return vaultAddress;\n}\n","import type { PublicClient } from \"viem\";\n\nimport type { Address } from \"@berachain/config\";\n\nimport { pythPriceOracleAbi } from \"~/abi/honey/pythPriceOracle\";\nimport type { PythPriceFeedMap } from \"~/types/honeySwap\";\nimport { parseBaseArgs } from \"~/utils/parseBaseArgs\";\n\n/**\n * Given a list of tokens, it will return the price feed ids for each token according to honey priceOracle\n * @returns\n */\nexport async function getHoneyPythFeeds({\n tokenList,\n publicClient,\n ...args\n}: {\n tokenList: readonly Address[];\n publicClient: PublicClient;\n} & BeraJS.BaseFunctionArgs): Promise<PythPriceFeedMap> {\n const { config } = parseBaseArgs(args);\n\n try {\n const priceFeedIds = await Promise.all(\n tokenList.map((token) =>\n publicClient.readContract({\n address: config.honey.pythOracle,\n abi: pythPriceOracleAbi,\n functionName: \"feeds\",\n args: [token],\n }),\n ),\n );\n\n return tokenList.reduce<PythPriceFeedMap>(\n (acc, token, index) => ({\n ...acc,\n [token]: priceFeedIds[index],\n }),\n {},\n );\n } catch (e) {\n console.error(\"getPythPriceFeedId\", e);\n throw e;\n }\n}\n","import type { TokenWithMetadata } from \"~/types/dex\";\nimport { beraFetchJson } from \"~/utils/beraFetch\";\nimport { parseBaseArgs } from \"~/utils/parseBaseArgs\";\n\nexport async function getTokens({\n url,\n ...args\n}: BeraJS.BaseFunctionArgs & { url?: string } = {}): Promise<\n TokenWithMetadata[]\n> {\n const { config } = parseBaseArgs(args);\n const tokenList = await beraFetchJson<{ tokens: TokenWithMetadata[] }>({\n url: url ?? config.lists.tokenList,\n type: \"rest\",\n name: \"GitHub\",\n });\n\n return tokenList.tokens ?? [];\n}\n","import type { PublicClient } from \"viem\";\n\nimport type { EdgeConfigSchema } from \"@berachain/config/internal/edge-config\";\n\nimport { beraChefAbi } from \"~/abi/pol/beraChef\";\nimport { bgtAbi } from \"~/abi/pol/bgt\";\nimport { parseBaseArgs } from \"~/utils/parseBaseArgs\";\n\nexport interface ActiveBoostAndCommissionChangeDelay {\n boostDelay: number;\n unboostDelay: number;\n commissionChangeDelay: number;\n rewardAllocationBlockDelay: number;\n maxWeightPerVault: number;\n maxNumWeightsPerRewardAllocation: number;\n /**\n * Percentage of the validator's commission rate that can be changed at once.\n *\n * @example 1 => 100%\n */\n maxCommissionRate: number;\n /**\n * The number of blocks after which a reward allocation is considered stale and will fallback\n * to baseline reward allocation.\n *\n */\n rewardAllocationInactivityBlockSpan: number;\n /**\n * The number of hours in advance to warn the operator that the reward allocation is expiring.\n */\n ui: EdgeConfigSchema[\"pol\"][\"automatedRewardAllocation\"];\n}\n\nexport async function getActiveBoostAndCommissionChangeDelay({\n publicClient,\n ui,\n ...args\n}: BeraJS.BaseFunctionArgs &\n Pick<ActiveBoostAndCommissionChangeDelay, \"ui\"> & {\n publicClient: PublicClient;\n }): Promise<ActiveBoostAndCommissionChangeDelay> {\n const { config } = parseBaseArgs(args);\n\n const [\n maxCommissionRate,\n commissionChangeDelay,\n rewardAllocationBlockDelay,\n maxWeightPerVault,\n maxNumWeightsPerRewardAllocation,\n dropBoostDelay,\n activateBoostDelay,\n rewardAllocationInactivityBlockSpan,\n ] = await Promise.all([\n publicClient.readContract({\n address: config.pol.beraChef,\n abi: beraChefAbi,\n functionName: \"MAX_COMMISSION_RATE\",\n }),\n publicClient.readContract({\n address: config.pol.beraChef,\n abi: beraChefAbi,\n functionName: \"commissionChangeDelay\",\n }),\n publicClient.readContract({\n address: config.pol.beraChef,\n abi: beraChefAbi,\n functionName: \"rewardAllocationBlockDelay\",\n }),\n publicClient.readContract({\n address: config.pol.beraChef,\n abi: beraChefAbi,\n functionName: \"maxWeightPerVault\",\n }),\n publicClient.readContract({\n address: config.pol.beraChef,\n abi: beraChefAbi,\n functionName: \"maxNumWeightsPerRewardAllocation\",\n }),\n publicClient.readContract({\n address: config.tokens.bgt,\n abi: bgtAbi,\n functionName: \"dropBoostDelay\",\n }),\n publicClient.readContract({\n address: config.tokens.bgt,\n abi: bgtAbi,\n functionName: \"activateBoostDelay\",\n }),\n publicClient.readContract({\n address: config.pol.beraChef,\n abi: beraChefAbi,\n functionName: \"rewardAllocationInactivityBlockSpan\",\n }),\n ]);\n\n return {\n maxCommissionRate: Number(maxCommissionRate) / 1e4,\n boostDelay: Number(activateBoostDelay),\n unboostDelay: Number(dropBoostDelay),\n commissionChangeDelay: Number(commissionChangeDelay),\n rewardAllocationBlockDelay: Number(rewardAllocationBlockDelay),\n maxWeightPerVault: Number(maxWeightPerVault) / 1e4,\n maxNumWeightsPerRewardAllocation: Number(maxNumWeightsPerRewardAllocation),\n rewardAllocationInactivityBlockSpan: Number(\n rewardAllocationInactivityBlockSpan,\n ),\n ui,\n };\n}\n","import type { ApiValidatorFragment } from \"@berachain/graphql/pol/api\";\n\nexport function getValidatorReturnPerBgt(\n validator: Pick<\n ApiValidatorFragment,\n \"dynamicData\" | \"rewardAllocationWeights\"\n >,\n): number {\n return validator?.rewardAllocationWeights?.reduce((acc, ab) => {\n if (!ab) return acc;\n\n const totalIncentiveValue =\n ab.receivingVault?.activeIncentives\n .filter((inc) => Number(inc.remainingAmount) > 0)\n .reduce((totalIncentiveValue, currIncentive) => {\n const tokenPrice =\n Number(currIncentive.remainingAmountUsd) /\n Number(currIncentive.remainingAmount);\n\n return (\n totalIncentiveValue +\n Number(currIncentive.incentiveRate) * tokenPrice\n );\n }, 0) ?? 0;\n\n return acc + totalIncentiveValue * ab.percentage;\n }, 0);\n}\n\nexport function getValidatorBoostApy({\n validator,\n bgtPrice,\n}: {\n validator: Pick<\n ApiValidatorFragment,\n \"dynamicData\" | \"rewardAllocationWeights\"\n >;\n bgtPrice: number;\n}): number {\n const validatorActiveBoostAmount = Number(\n validator.dynamicData?.activeBoostAmount ?? 0,\n );\n\n const returnPerBgt = getValidatorReturnPerBgt(validator);\n\n if (!returnPerBgt || !validatorActiveBoostAmount) {\n // As of now, a validator cannot send rewards to the vaults if it has no active boost amount\n // If baseRate changes on chain, we should update this function\n return 0;\n }\n\n const boostApy =\n (returnPerBgt *\n Number(validator.dynamicData?.lastDayDistributedBGTAmount ?? 0) *\n 365) /\n (validatorActiveBoostAmount * bgtPrice);\n\n return boostApy;\n}\n"],"mappings":"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","names":["formatEther","getMaxDeposit","vaultAddress","publicClient","maxDeposit","metaMorphoAbi","formatEther","mapPoolType","getPoolState","apiPool","pt","getVaultPausedState","publicClient","args","config","parseBaseArgs","balancerVaultAbi","decodeFunctionData","erc20Abi","pad","toFunctionSignature","trim","appConfig","defaultChainId","isProxyABI","abi","item","_getAbi","contractAddress","chainId","publicClient","url","appConfig","response","data","implementationResult","trim","implementationAddress","pad","_getAbiForCallData","address","callData","knownAbi","decodeFunctionData","_decodeCallData","_findAbiItem","functionName","a","_getFunctionSignature","abiItem","toFunctionSignature","error","getDecodedFunctionData","defaultChainId","beraChefAbi","rewardVaultAbi","erc20Abi","decodedData","functionSignature","formatUnits","getHoneyFees","client","collateralList","args","config","parseBaseArgs","promiseList","coll","honeyFactoryAbi","mintRates","redeemRates","collateralWeights","acc","collIdx","formatUnits","e","getHoneyPausedState","client","args","config","parseBaseArgs","honeyAddress","honeyAbi","getHoneyPythOracle","pythOracle","publicClient","honeyRootOracleAbi","getHoneyRootPriceOracle","publicClient","factory","args","config","parseBaseArgs","honeyFactoryAbi","GetBlocksTimeStamp","getBlockTime","defaultBlockTime","blocksSpan","args","config","parseBaseArgs","blocksClient","getApolloClient","blockTime","span","hoursInSeconds","data","GetBlocksTimeStamp","msToSeconds","getLSTStakeConfig","tokenList","publicClient","lstStakingVaults","args","assertPublicClient","config","parseBaseArgs","lstStakingTokens","token","stakingToken","lstStakerVaultAbi","acc","assetTokenAddress","assetToken","isToken","upgradableBeaconAbi","getRewardVaultBeaconImplementation","publicClient","args","config","parseBaseArgs","factoryAddress","assertDefined","assertAddress","beacon","rewardVaultFactoryAbi","upgradableBeaconAbi","getRewardVaultDurationConstants","publicClient","baseArgs","assertPublicClient","beaconImplementation","getRewardVaultBeaconImplementation","minRewardDuration","maxRewardDuration","rewardVaultAbi","zeroAddress","getRewardVaultFromToken","tokenAddress","publicClient","factoryAddress","args","config","parseBaseArgs","vaultAddress","rewardVaultFactoryAbi","zeroAddress","getHoneyPythFeeds","tokenList","publicClient","args","config","parseBaseArgs","priceFeedIds","token","pythPriceOracleAbi","acc","index","e","getTokens","url","args","config","parseBaseArgs","beraFetchJson","getActiveBoostAndCommissionChangeDelay","publicClient","ui","args","config","parseBaseArgs","maxCommissionRate","commissionChangeDelay","rewardAllocationBlockDelay","maxWeightPerVault","maxNumWeightsPerRewardAllocation","dropBoostDelay","activateBoostDelay","rewardAllocationInactivityBlockSpan","beraChefAbi","bgtAbi","getValidatorReturnPerBgt","validator","acc","ab","totalIncentiveValue","inc","currIncentive","tokenPrice","getValidatorBoostApy","bgtPrice","validatorActiveBoostAmount","returnPerBgt"]}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
"use strict";Object.defineProperty(exports, "__esModule", {value: true}); function _nullishCoalesce(lhs, rhsFn) { if (lhs != null) { return lhs; } else { return rhsFn(); } }var _chunkC6ZGUO4Hcjs = require('./chunk-C6ZGUO4H.cjs');var _internal = require('@berachain/config/internal');function i(o){let n=_nullishCoalesce(o.chainId, () => (_internal.defaultChainId)),e=_nullishCoalesce(o.config, () => (_internal.chainConfigs[n]));if(o.chainId&&o.chainId!==e.chainId)throw new (0, _chunkC6ZGUO4Hcjs.h)({property:"chainId",value:n,expected:`config.chainId: ${e.chainId}`});return{config:e,chainId:e.chainId}}var _viem = require('viem');var _mainnet = require('@berachain/config/mainnet');var I={address:_viem.zeroAddress,decimals:18,name:"Bera",symbol:"BERA",logoURI:"https://res.cloudinary.com/duv0g402y/image/upload/v1738720154/brand/berachain-chain-logo.png.png"},l= exports.c ={address:_mainnet.mainnet.tokens.wbera,decimals:18,name:"WBera",symbol:"WBERA"};function R(o){let{config:n,chainId:e}=i(o);return{address:n.honey.token,symbol:"HONEY",name:"Honey",decimals:18,chainId:e}}function b(...o){let[n,e,r]=o;if(n===void 0)return!1;let s=typeof n=="string"?n:n.address;if(typeof e=="string"&&!_viem.isAddress.call(void 0, e)&&!e.startsWith("0x")){if(e==="BERA")return s.toLowerCase()===_viem.zeroAddress;if(e==="WBERA")return s.toLowerCase()===_mainnet.mainnet.tokens.wbera;if(e==="ETH")return s.toLowerCase()===_viem.ethAddress;if(e==="SWBERA")return s.toLowerCase()===_mainnet.mainnet.tokens.swbera.toLowerCase();if(r===void 0)throw new (0, _chunkC6ZGUO4Hcjs.h)({property:"baseArgs",value:r,expected:"BeraJS.BaseFunctionArgs",message:"baseArgs is required when compared to a known token different than BERA or WBERA. Checking against token: "+e+" and token address: "+s});let{config:a}=i(r),c={BGT:a.tokens.bgt,HONEY:a.honey.token,SWBERA:a.tokens.swbera,ETH:_viem.ethAddress};if(e in c)return s.toLowerCase()===c[e].toLowerCase()}let k=typeof e=="object"?e.address:e;return s.toLowerCase()===k.toLowerCase()}exports.a = i; exports.b = I; exports.c = l; exports.d = R; exports.e = b;
|
|
2
|
+
//# sourceMappingURL=chunk-22J3YJDN.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["/Users/liammcaweeney/Work/bera/monobera/packages/berajs/dist/chunk-22J3YJDN.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/liammcaweeney/Work/bera/monobera/packages/berajs/dist/chunk-22J3YJDN.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"]}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import{e as o,f as i,g as a,h as p}from"./chunk-AX2YQQFQ.mjs";import{BaseError as u}from"viem";function k({cause:e,level:t}){if(e instanceof u){let n=o({error:e,revertIfUnknown:!1});if(n.isRequestError&&n.rootCause instanceof u&&"url"in n.rootCause&&typeof n.rootCause.url=="string")return new a({cause:n.rootCause,response:void 0,endpoint:{url:n.rootCause.url,type:"rpc"},level:t})}return e instanceof i?e:new i({cause:e,level:t})}import{isAddress as m}from"viem";function c(e){return e!=null}function x({value:e,property:t,fn:r}){let n=r(e);if(!n.isValid)throw new p({property:t,value:e,expected:n.expectedType})}function s({value:e,property:t,fn:r}){x({value:e,property:t,fn:n=>{let l=c(n),{isValid:E,expectedType:v}=r(n);return{expectedType:v,isValid:l&&E}}})}function y(e,t){s({value:e,property:t,fn:r=>({expectedType:"defined",isValid:c(r)})})}function D(e,t="publicClient"){y(e,t)}function K(e,t){s({value:e,property:t,fn:r=>({expectedType:"Address",isValid:typeof r=="string"&&m(r)})})}function M(e,t){s({value:e,property:t,fn:r=>({expectedType:"number",isValid:(typeof r=="string"||typeof r=="number")&&Number(r)>0})})}function f(){let e={};return{emit(t,...r){for(let n of e[t]||[])n(...r)},events:e,on(t,r){return e[t]||(e[t]=[]),e[t].push(r),()=>{e[t]=e[t]?.filter(n=>r!==n)}}}}var d=f(),_={captureException(e){let t={exception:e,timestamp:Date.now()};d.emit("exception",t)},on(...e){return d.on(...e)}};export{k as a,y as b,D as c,K as d,M as e,_ as f};
|
|
2
|
+
//# sourceMappingURL=chunk-2LL3P5PN.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/errors/initBeraError.ts","../src/errors/assert.ts","../src/utils/createEmitter.ts","../src/errors/BeraMonitoring.ts"],"sourcesContent":["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"],"mappings":"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","names":["BaseError","initBeraError","error","level","BaseError","parsed","parseViemError","RequestError","BeraError","isAddress","_isDefined","value","_assert","property","fn","result","InvalidArgumentError","_assertDefined","isDefined","isValid","expectedType","assertDefined","assertPublicClient","assertAddress","isAddress","assertAmount","createEmitter","events","event","args","callback","cb","i","_emitter","createEmitter","BeraMonitoring","exception","event","args"]}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import{a as t}from"./chunk-ECRMUMTA.mjs";import{c as T,e as a}from"./chunk-THATXCJK.mjs";function m(e){return{...e,...a(e,"BERA")&&T}}function d(e){return e.map(r=>m(r))}var g=(e,r,i,o)=>{if(!e||!r||!i||!o)return 0;let n=new t(e).times(i),s=new t(r).times(o);if(n.lt(.01)||s.lt(.01)||n.isZero()||s.isZero())return 0;let u=s.div(n);return Number(new t(1).minus(u).toFixed())};export{m as a,d as b,g as c};
|
|
2
|
+
//# sourceMappingURL=chunk-3YXSUBA5.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/utils/tokenWrapping.ts","../src/utils/math.ts"],"sourcesContent":["import { isToken, wBeraToken } from \"./tokens\";\n\ntype BaseToken = {\n address: string;\n};\n\nexport function wrapNativeToken<T extends BaseToken>(token: T): T {\n return {\n ...token,\n ...(isToken(token, \"BERA\") && wBeraToken),\n };\n}\n\nexport function wrapNativeTokens<T extends BaseToken>(tokens: T[]): T[] {\n return tokens.map((token) => wrapNativeToken(token));\n}\n","import BigNumber from \"@berachain/utils/pkg/bignumber.js\";\n\n/**\n * Compute the price impact of a swap\n * @param {string} tokenInPrice - The price of the input token\n * @param {string} tokenOutPrice - The price of the output token\n * @param {string} inAmount - The amount of the input token\n * @param {string} outAmount - The amount of the output token\n * @returns {number} The price impact of the swap\n */\nexport const computePriceImpact = (\n tokenInPrice: string,\n tokenOutPrice: string,\n inAmount: string,\n outAmount: string,\n): number => {\n if (!tokenInPrice || !tokenOutPrice || !inAmount || !outAmount) return 0;\n\n const usdIn = new BigNumber(tokenInPrice).times(inAmount);\n const usdOut = new BigNumber(tokenOutPrice).times(outAmount);\n\n // is the amount is close to 0, return 0\n if (usdIn.lt(0.01) || usdOut.lt(0.01)) return 0;\n if (usdIn.isZero() || usdOut.isZero()) return 0;\n\n const ratio = usdOut.div(usdIn);\n return Number(new BigNumber(1).minus(ratio).toFixed());\n};\n"],"mappings":"yFAMO,SAASA,EAAqCC,EAAa,CAChE,MAAO,CACL,GAAGA,EACH,GAAIC,EAAQD,EAAO,MAAM,GAAKE,CAChC,CACF,CAEO,SAASC,EAAsCC,EAAkB,CACtE,OAAOA,EAAO,IAAKJ,GAAUD,EAAgBC,CAAK,CAAC,CACrD,CCLO,IAAMK,EAAqB,CAChCC,EACAC,EACAC,EACAC,IACW,CACX,GAAI,CAACH,GAAgB,CAACC,GAAiB,CAACC,GAAY,CAACC,EAAW,MAAO,GAEvE,IAAMC,EAAQ,IAAIC,EAAUL,CAAY,EAAE,MAAME,CAAQ,EAClDI,EAAS,IAAID,EAAUJ,CAAa,EAAE,MAAME,CAAS,EAI3D,GADIC,EAAM,GAAG,GAAI,GAAKE,EAAO,GAAG,GAAI,GAChCF,EAAM,OAAO,GAAKE,EAAO,OAAO,EAAG,MAAO,GAE9C,IAAMC,EAAQD,EAAO,IAAIF,CAAK,EAC9B,OAAO,OAAO,IAAIC,EAAU,CAAC,EAAE,MAAME,CAAK,EAAE,QAAQ,CAAC,CACvD","names":["wrapNativeToken","token","isToken","wBeraToken","wrapNativeTokens","tokens","computePriceImpact","tokenInPrice","tokenOutPrice","inAmount","outAmount","usdIn","bignumber_js_default","usdOut","ratio"]}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import{a as B,b as E}from"./chunk-7SMWQ6SN.mjs";import{a as h,f as g}from"./chunk-2LL3P5PN.mjs";import{a as S}from"./chunk-C3FHGFLK.mjs";import{a as y,b as v,e as m}from"./chunk-THATXCJK.mjs";import{f as P,h as b}from"./chunk-AX2YQQFQ.mjs";import{createContext as N,useContext as O}from"react";import{isFlagEnabled as U}from"@berachain/config/internal/edge-config";import{jsx as Y}from"react/jsx-runtime";var W=N(void 0);function pe({children:e,flags:t,aggregators:a,swberaAprWindow:n="DAY"}){return Y(W.Provider,{value:{...S,...t,aggregators:a?Object.entries(a).filter(([,r])=>U(r)).map(([r])=>r):void 0,swberaAprWindow:n},children:e})}function D(){let e=O(W);if(!e)throw new Error("BeraFlagsProvider not found");return e}function fe(e){return D()[e]}import{createContext as V,useContext as q,useState as K}from"react";import{jsx as Q}from"react/jsx-runtime";var w=V({protocol:{isPaused:!1,factories:{composableStable:"enabled",weighted:"enabled",allPaused:!1}},onPoolChange:()=>{},pool:void 0});function Te(){let e=q(w);if(!e)throw new P({level:"fatal",message:"BexStateContext is not defined"});return e}function he({children:e,isVaultPaused:t,labels:a,factories:n}){let[r,u]=K(),s=(r?.isPaused&&!r?.isInRecoveryMode)??!1,l=t||r?.isPaused;return Q(w.Provider,{value:{protocol:{isPaused:t,factories:{...n,allPaused:n.composableStable==="paused"&&n.weighted==="paused"}},labels:a,onPoolChange:u,pool:r?{...r,disablePoolWithdrawals:!!s,disablePoolDeposits:!!l}:void 0},children:e})}import{createContext as _,useContext as G}from"react";import{mainnet as J}from"@berachain/config/mainnet";import{jsx as z}from"react/jsx-runtime";function ve(){return G(F)}var F=_(J.averageBlockTime);function Ee({children:e,blockTime:t,...a}){let{config:n}=y(a);return z(F.Provider,{value:t??n.averageBlockTime,children:e})}import{createContext as X,useContext as Z}from"react";import{jsx as $}from"react/jsx-runtime";var L=X(void 0);function Fe({children:e,...t}){return $(L.Provider,{value:t,children:e})}function Le(){let e=Z(L);if(!e)throw new Error("useHoneyConfig must be used within a HoneyConfigProvider");return e}import{createContext as re,useMemo as ae}from"react";import{isFlagEnabled as se}from"@berachain/config/internal/edge-config";import oe from"swr";import{useBeraWallet as te,useConfig as ne}from"@berachain/wagmi/hooks";import{getChains as j,multicall as ee}from"@wagmi/core";import{formatUnits as M}from"viem";async function R({account:e,wagmiConfig:t,chainId:a,ensoClient:n}){let u=(await n.getBalances({useEoa:!0,chainId:a??"all",eoaAddress:e})).map(o=>({name:o.name,symbol:o.symbol,decimals:o.decimals,address:m(o.token,"ETH")?v.address:o.token,logoURI:o.logoUri,balance:{raw:o.amount.toString(),formatted:M(BigInt(o.amount),o.decimals)},chainId:Number(o.chainId),price:Number(o.price)})),s=Object.groupBy(u,o=>o.chainId??0),l=await Promise.allSettled(Object.entries(s).map(async([o,i])=>{if(!i)return;let p=j(t).find(d=>d.id===Number(o));if(!p)return;let k=p.contracts?.multicall3?.address;if(!k)return g.captureException(new b({property:"multicallAddress",value:k,expected:"Address",chainId:Number(o)})),i;let f=await ee(t,{chainId:Number(o),contracts:i.map(d=>E({token:d,account:e,multicallAddress:k})),allowFailure:!0}),x=[];for(let d=0;d<i.length;d++){let T=i[d];if(f[d].status==="success"){let C=f[d].result;x.push({...T,balance:{raw:C?.toString()??"0",formatted:M(C??0n,T.decimals)}})}else console.error("error getting balance",f[d].error),g.captureException(h({cause:f[d].error})),x.push(T)}return x})),c=[];for(let o of l)o.status==="fulfilled"?c.push(...o.value??[]):g.captureException(h({cause:o.reason}));return c.sort((o,i)=>{let p=Number(o.balance.formatted)*(o.price??0);return Number(i.balance.formatted)*(i.price??0)-p})}function A({chainId:e}={},t){let{address:a}=te(),n=ne(),r=!!a&&(t?.opts?.isEnabled??!0),s=oe(r&&n?["useEnsoUserTokensWithBalances",a,e]:null,async([,l,c])=>R({account:l,wagmiConfig:n,chainId:c??"all",ensoClient:B()}),{refreshInterval:1e5,isEnabled:r,...t?.opts});return{...s,refresh:()=>s.mutate()}}function H({defaultTokenList:e=[],externalList:t=[]}){if(e.length===0)return{tokenList:t,customTokenList:t,featuredTokenList:[]};let a=e.map(s=>({...s,default:!0})),n=a.filter(s=>s.tags?.some(l=>l==="featured")),r=[...a,...t];return{tokenList:r.filter((s,l)=>r.findIndex(c=>m(c,s))===l),customTokenList:t,featuredTokenList:n}}import{jsx as le}from"react/jsx-runtime";var ie=re(void 0);function je({children:e,defaultTokens:t,edgeConfigTokenList:a,userTokens:n,onAddToken:r,onRemoveToken:u}){let{data:s,refresh:l}=A(),{tokenList:c=[],featuredTokenList:o=[]}=ae(()=>H({defaultTokenList:[...t,...a?.filter(i=>se(i.enabled))],externalList:[...n,...(s??[]).map(i=>({...i,balance:void 0,price:void 0}))]}),[t,n,a,s]);return le(ie.Provider,{value:{tokenList:c,userTokens:n,featuredTokens:o,ensoTokens:s,onAddToken(i){r(i,{defaultTokens:t,userTokens:n,tokenList:c})},onRemoveToken:u,refresh:()=>{l()}},children:e})}export{pe as a,D as b,fe as c,w as d,Te as e,he as f,ve as g,F as h,Ee as i,L as j,Fe as k,Le as l,ie as m,je as n};
|
|
2
|
+
//# sourceMappingURL=chunk-55L7STYD.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../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"],"sourcesContent":["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"],"mappings":"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","names":["createContext","useContext","isFlagEnabled","jsx","BeraFlagContext","createContext","BeraFlagsProvider","children","flags","aggregators","swberaAprWindow","defaultFlags","value","isFlagEnabled","key","useBeraFlags","context","useContext","useBeraFlag","createContext","useContext","useState","jsx","BexStateContext","createContext","useBexStatus","context","useContext","BeraError","BexStatusProvider","children","isVaultPaused","labels","factories","poolState","setPoolState","useState","disablePoolWithdrawals","disablePoolDeposits","createContext","useContext","mainnet","jsx","useBlockTime","useContext","BlockTimeContext","createContext","mainnet","BlockTimeProvider","children","blockTime","args","config","parseBaseArgs","createContext","useContext","jsx","HoneyConfigContext","HoneyConfigProvider","children","props","useHoneyConfig","context","createContext","useMemo","isFlagEnabled","useSWR","useBeraWallet","useConfig","getChains","multicall","formatUnits","getEnsoUserTokensWithBalances","account","wagmiConfig","chainId","ensoClient","tokens","balance","isToken","beraToken","formatUnits","tokenByChainId","a","balances","chainTokens","chainConfig","getChains","chain","multicallAddress","BeraMonitoring","InvalidArgumentError","multicall","token","getBalanceCall","tokensWithBalances","index","initBeraError","flattenedBalances","result","b","aValue","useEnsoUserTokensWithBalances","chainId","options","fromAddress","useBeraWallet","wagmiConfig","useConfig","isEnabled","swrResponse","useSWR","getEnsoUserTokensWithBalances","getEnsoClient","formatTokenList","defaultTokenList","externalList","defaultList","token","featuredTokenList","tag","mergedList","item","index","i","isToken","jsx","TokenContext","createContext","TokensProvider","children","defaultTokens","edgeConfigTokenList","userTokens","onAddToken","onRemoveToken","ensoTokens","refresh","useEnsoUserTokensWithBalances","tokenList","featuredTokenList","useMemo","formatTokenList","token","isFlagEnabled","t","tk"]}
|