@berachain/berajs 0.2.8-beta.4 → 0.2.8-beta.7
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/abi/exports.cjs +1 -4452
- package/dist/abi/exports.cjs.map +1 -1
- package/dist/abi/exports.mjs +1 -4452
- package/dist/abi/exports.mjs.map +1 -1
- package/dist/actions/exports.cjs +1 -918
- package/dist/actions/exports.cjs.map +1 -1
- package/dist/actions/exports.d.cts +95 -50
- package/dist/actions/exports.d.ts +95 -50
- package/dist/actions/exports.mjs +1 -918
- package/dist/actions/exports.mjs.map +1 -1
- package/dist/chunk-3MZ7MLKF.mjs +2 -0
- package/dist/{chunk-PBCE7JTE.mjs.map → chunk-3MZ7MLKF.mjs.map} +1 -1
- package/dist/chunk-53TSJM6P.cjs +2 -0
- package/dist/chunk-53TSJM6P.cjs.map +1 -0
- package/dist/chunk-575OK77P.mjs +2 -0
- package/dist/{chunk-GLWPRM33.mjs.map → chunk-575OK77P.mjs.map} +1 -1
- package/dist/chunk-5W7UKRHX.mjs +2 -0
- package/dist/{chunk-J6EHBYSV.mjs.map → chunk-5W7UKRHX.mjs.map} +1 -1
- package/dist/chunk-6K252BGM.mjs +2 -0
- package/dist/{chunk-CYBZH6U3.mjs.map → chunk-6K252BGM.mjs.map} +1 -1
- package/dist/chunk-CWKDFUFR.mjs +2 -0
- package/dist/{chunk-OWUI3VPI.mjs.map → chunk-CWKDFUFR.mjs.map} +1 -1
- package/dist/chunk-D6L7LTA2.cjs +2 -0
- package/dist/chunk-D6L7LTA2.cjs.map +1 -0
- package/dist/chunk-DDEQFR3M.cjs +2 -0
- package/dist/chunk-DDEQFR3M.cjs.map +1 -0
- package/dist/chunk-DKY4QPWU.cjs +2 -0
- package/dist/chunk-DKY4QPWU.cjs.map +1 -0
- package/dist/chunk-DTBJO6VT.cjs +2 -0
- package/dist/chunk-DTBJO6VT.cjs.map +1 -0
- package/dist/chunk-ESAVA5OD.mjs +2 -0
- package/dist/{chunk-ALPEMPZI.mjs.map → chunk-ESAVA5OD.mjs.map} +1 -1
- package/dist/chunk-JDZGYU5T.mjs +2 -0
- package/dist/{chunk-WEULAXBE.mjs.map → chunk-JDZGYU5T.mjs.map} +1 -1
- package/dist/chunk-JLFBRMOF.cjs +2 -0
- package/dist/chunk-JLFBRMOF.cjs.map +1 -0
- package/dist/chunk-KT6L4K4K.cjs +2 -0
- package/dist/chunk-KT6L4K4K.cjs.map +1 -0
- package/dist/chunk-MASD43N5.mjs +4 -0
- package/dist/chunk-MASD43N5.mjs.map +1 -0
- package/dist/chunk-MGGPHKA2.cjs +4 -0
- package/dist/chunk-MGGPHKA2.cjs.map +1 -0
- package/dist/chunk-MK5NS5B5.mjs +2 -0
- package/dist/{chunk-7TFV6UKF.mjs.map → chunk-MK5NS5B5.mjs.map} +1 -1
- package/dist/chunk-NAXAZJJY.mjs +2 -0
- package/dist/{chunk-ZCEFC2TK.mjs.map → chunk-NAXAZJJY.mjs.map} +1 -1
- package/dist/chunk-NLVWRMGD.mjs +2 -0
- package/dist/{chunk-GWSTVITN.mjs.map → chunk-NLVWRMGD.mjs.map} +1 -1
- package/dist/chunk-OGBD5YOG.mjs +2 -0
- package/dist/{chunk-JA4DHMTG.mjs.map → chunk-OGBD5YOG.mjs.map} +1 -1
- package/dist/chunk-OGJMSGB2.mjs +2 -0
- package/dist/{chunk-KL6YZ5VR.mjs.map → chunk-OGJMSGB2.mjs.map} +1 -1
- package/dist/chunk-OIYXOKTT.cjs +2 -0
- package/dist/chunk-OIYXOKTT.cjs.map +1 -0
- package/dist/chunk-OUD27MU7.cjs +2 -0
- package/dist/chunk-OUD27MU7.cjs.map +1 -0
- package/dist/chunk-QFLDL4UV.cjs +2 -0
- package/dist/chunk-QFLDL4UV.cjs.map +1 -0
- package/dist/chunk-RSDCKN4Q.mjs +2 -0
- package/dist/chunk-RSDCKN4Q.mjs.map +1 -0
- package/dist/chunk-RWOICHRW.cjs +2 -0
- package/dist/chunk-RWOICHRW.cjs.map +1 -0
- package/dist/chunk-SSPFPAWX.mjs +2 -0
- package/dist/{chunk-WAFQFAI7.mjs.map → chunk-SSPFPAWX.mjs.map} +1 -1
- package/dist/chunk-UENDEN3M.mjs +2 -0
- package/dist/{chunk-MKS6W5NI.mjs.map → chunk-UENDEN3M.mjs.map} +1 -1
- package/dist/chunk-UFIM7WQ4.cjs +2 -0
- package/dist/chunk-UFIM7WQ4.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-ZYXVUXFQ.cjs +2 -0
- package/dist/chunk-ZYXVUXFQ.cjs.map +1 -0
- package/dist/contexts/exports.cjs +1 -82
- package/dist/contexts/exports.cjs.map +1 -1
- package/dist/contexts/exports.mjs +1 -82
- package/dist/contexts/exports.mjs.map +1 -1
- package/dist/enum/exports.cjs +1 -58
- package/dist/enum/exports.cjs.map +1 -1
- package/dist/enum/exports.d.cts +1 -1
- package/dist/enum/exports.d.ts +1 -1
- package/dist/enum/exports.mjs +1 -58
- package/dist/enum/exports.mjs.map +1 -1
- package/dist/errors/exports.cjs +1 -38
- package/dist/errors/exports.cjs.map +1 -1
- package/dist/errors/exports.mjs +1 -38
- package/dist/{getValidatorQueuedOperatorAddress-DUZOmxLV.d.ts → getValidatorQueuedOperatorAddress-BcyxE9uw.d.ts} +2 -2
- package/dist/{getValidatorQueuedOperatorAddress-BQXkSFd9.d.cts → getValidatorQueuedOperatorAddress-Cql_D50j.d.cts} +2 -2
- package/dist/{global.d-SU9Epq0M.d.ts → global.d-5w_lvl2J.d.ts} +1 -1
- package/dist/{global.d-6aSWIkV_.d.cts → global.d-B7IeayVX.d.cts} +1 -1
- package/dist/hooks/exports.cjs +3 -8327
- package/dist/hooks/exports.cjs.map +1 -1
- package/dist/hooks/exports.d.cts +4 -4
- package/dist/hooks/exports.d.ts +4 -4
- package/dist/hooks/exports.mjs +3 -8327
- package/dist/hooks/exports.mjs.map +1 -1
- package/dist/{txnEnum-CCuQUFlh.d.cts → txnEnum-7_o92X3N.d.cts} +2 -0
- package/dist/{txnEnum-CCuQUFlh.d.ts → txnEnum-7_o92X3N.d.ts} +2 -0
- package/dist/types/exports.d.cts +2 -2
- package/dist/types/exports.d.ts +2 -2
- package/dist/utils/exports.cjs +1 -786
- package/dist/utils/exports.cjs.map +1 -1
- package/dist/utils/exports.mjs +1 -786
- package/dist/utils/exports.mjs.map +1 -1
- package/package.json +5 -5
- package/src/actions/clients/getApolloClient.ts +11 -4
- package/src/actions/dex/aggregators/base.ts +1 -3
- package/src/actions/dex/getOnChainPool.ts +1 -1
- package/src/actions/enso/getBendMultiplyBundle.ts +9 -2
- package/src/actions/enso/util.ts +6 -8
- package/src/actions/governance/checkProposalField.ts +108 -54
- package/src/actions/governance/computeActualStatus.ts +7 -3
- package/src/actions/governance/getAllProposals.ts +15 -8
- package/src/actions/governance/getBodyErrors.ts +13 -5
- package/src/actions/governance/getDecodedFunctionData.ts +31 -27
- package/src/actions/governance/getProposalDetails.ts +8 -4
- package/src/actions/governance/getProposalFromTx.ts +19 -10
- package/src/actions/governance/getProposalParams.ts +17 -17
- package/src/actions/governance/getProposalVotes.ts +7 -3
- package/src/actions/governance/getQuorum.ts +7 -7
- package/src/actions/governance/parseProposalBody.ts +19 -9
- package/src/actions/pol/getRewardVaultIncentives.ts +2 -2
- package/src/actions/tokens/getTokenInformation.ts +8 -15
- package/src/actions/tokens/getUnderlyingToken.ts +1 -3
- package/src/enum/txnEnum.ts +2 -0
- package/src/errors/BeraError.ts +7 -2
- package/src/hooks/dex/usePoolHistoricalData.ts +1 -1
- package/src/hooks/enso/useBendZapSupply.ts +1 -1
- package/src/hooks/perps/usePythUpdateFee.ts +1 -1
- package/src/hooks/validators/useValidatorRewardAllocation.ts +1 -1
- package/dist/chunk-24HMIYTN.cjs +0 -36
- package/dist/chunk-24HMIYTN.cjs.map +0 -1
- package/dist/chunk-2LL77B3T.cjs +0 -135
- package/dist/chunk-2LL77B3T.cjs.map +0 -1
- package/dist/chunk-3LXVARBJ.cjs +0 -417
- package/dist/chunk-3LXVARBJ.cjs.map +0 -1
- package/dist/chunk-4HDIUUSV.cjs +0 -130
- package/dist/chunk-4HDIUUSV.cjs.map +0 -1
- package/dist/chunk-7ONKBHXY.cjs +0 -169
- package/dist/chunk-7ONKBHXY.cjs.map +0 -1
- package/dist/chunk-7TFV6UKF.mjs +0 -24
- package/dist/chunk-A4FPM7U3.cjs +0 -63
- package/dist/chunk-A4FPM7U3.cjs.map +0 -1
- package/dist/chunk-A7P3JVU7.cjs +0 -4694
- package/dist/chunk-A7P3JVU7.cjs.map +0 -1
- package/dist/chunk-ALPEMPZI.mjs +0 -417
- package/dist/chunk-BEHP54S3.cjs +0 -24
- package/dist/chunk-BEHP54S3.cjs.map +0 -1
- package/dist/chunk-CYBZH6U3.mjs +0 -135
- package/dist/chunk-EWBKSMPG.cjs +0 -13
- package/dist/chunk-EWBKSMPG.cjs.map +0 -1
- package/dist/chunk-GLWPRM33.mjs +0 -13
- package/dist/chunk-GWSTVITN.mjs +0 -572
- package/dist/chunk-H3Z37RYU.cjs +0 -15
- package/dist/chunk-H3Z37RYU.cjs.map +0 -1
- package/dist/chunk-HCC4FJTD.cjs +0 -97
- package/dist/chunk-HCC4FJTD.cjs.map +0 -1
- package/dist/chunk-J6EHBYSV.mjs +0 -97
- package/dist/chunk-JA4DHMTG.mjs +0 -15
- package/dist/chunk-KL6YZ5VR.mjs +0 -63
- package/dist/chunk-MILSHCKW.cjs +0 -168
- package/dist/chunk-MILSHCKW.cjs.map +0 -1
- package/dist/chunk-MKS6W5NI.mjs +0 -403
- package/dist/chunk-MXWPP6MS.cjs +0 -572
- package/dist/chunk-MXWPP6MS.cjs.map +0 -1
- package/dist/chunk-OWUI3VPI.mjs +0 -169
- package/dist/chunk-PBCE7JTE.mjs +0 -36
- package/dist/chunk-QISQSMCV.cjs +0 -1843
- package/dist/chunk-QISQSMCV.cjs.map +0 -1
- package/dist/chunk-SYWYIMY7.mjs +0 -4694
- package/dist/chunk-SYWYIMY7.mjs.map +0 -1
- package/dist/chunk-TDW5SPXR.cjs +0 -244
- package/dist/chunk-TDW5SPXR.cjs.map +0 -1
- package/dist/chunk-TGHG6Q3C.cjs +0 -403
- package/dist/chunk-TGHG6Q3C.cjs.map +0 -1
- package/dist/chunk-WAFQFAI7.mjs +0 -130
- package/dist/chunk-WEULAXBE.mjs +0 -168
- package/dist/chunk-ZCEFC2TK.mjs +0 -244
- package/dist/chunk-ZV7DCQQY.mjs +0 -1843
- package/dist/chunk-ZV7DCQQY.mjs.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/utils/formatInputTokenValue.ts","../../src/utils/formatUsd.ts","../../src/utils/getContractName.ts","../../src/data/contracts.ts","../../src/utils/getHoneySwapMessage.ts","../../src/utils/getServerSideClient.ts","../../src/utils/isDifferenceExceedingThreshold.ts","../../src/utils/isSubgraphStale.ts","../../src/utils/layerZeroScan.ts","../../src/utils/parseWhiskToken.ts","../../src/utils/truncateHash.ts","../../src/utils/validatorUptimeStatus.ts"],"sourcesContent":["export const formatInputTokenValue = (inputValue: string) => {\n if (inputValue === \"0\") return inputValue;\n // Remove all non-numeric characters except for the decimal point, and remove leading zeros\n let filteredValue = inputValue.replace(/^0+/, \"\").replaceAll(/[^0-9.]/g, \"\");\n\n // Keep the 0\n if (filteredValue.startsWith(\".\")) {\n filteredValue = `0${filteredValue}`;\n }\n\n return filteredValue;\n};\n","/**\n * @deprecated use the FormattedNumber component instead\n */\nexport function formatUsd(\n input: string | number,\n hideDecimals?: boolean,\n): string {\n const decimalsSettings = hideDecimals\n ? { minimumFractionDigits: 0, maximumFractionDigits: 0 }\n : {};\n const formatter = new Intl.NumberFormat(\"en-US\", {\n style: \"currency\",\n currency: \"USD\",\n ...decimalsSettings,\n });\n try {\n const isNumber = (value: unknown): value is number =>\n typeof value === \"number\";\n const isString = (value: unknown): value is string =>\n typeof value === \"string\";\n\n if (!isNumber(input) && !isString(input)) {\n return formatter.format(0);\n }\n\n let num: number;\n\n if (isString(input)) {\n num = Number.parseFloat(input);\n\n if (Number.isNaN(num)) {\n num = 0;\n }\n } else {\n num = input;\n\n if (Number.isNaN(num)) {\n num = 0;\n }\n }\n return formatter.format(num);\n } catch (e) {\n console.log(e);\n return formatter.format(0);\n }\n}\n","import type { Address } from \"viem\";\n\nimport { type ChainId, defaultChainId } from \"@berachain/config/internal\";\n\nimport { contracts } from \"../data/contracts\";\n\n/**\n * Get a human readable name for a contract address.\n */\nexport function getContractName({\n address,\n chainId = defaultChainId,\n}: {\n address: Address | undefined;\n chainId?: ChainId | \"name\";\n}): string | undefined {\n if (!address) {\n return undefined;\n }\n\n const contract = contracts.find((contract) => {\n const contractAddress = contract[chainId as keyof typeof contract];\n return contractAddress?.toLowerCase() === address.toLowerCase();\n });\n\n return contract?.name;\n}\n","/**\n * This file is generated by the getContractNames.js script.\n * Do not edit this file manually, run `pnpm contracts:update` to update it.\n */\nexport const contracts = [\n {\n \"80069\": \"0x0000000000000000000000000000000000000000\",\n \"80094\": \"0x0000000000000000000000000000000000000000\",\n name: \"zeroAddress\",\n },\n {\n \"80094\": \"0x141De07E5D4C4759EC9301DA106115D4841f66cD\",\n name: \"nfts.bongBears\",\n },\n {\n \"80094\": \"0xA0CF472E6132F6B822a944f6F31aA7b261c7c375\",\n name: \"nfts.bondBears\",\n },\n {\n \"80094\": \"0xf49ec5db255854C4a567de5AB3826c9AAbaFc7cF\",\n name: \"nfts.booBears\",\n },\n {\n \"80094\": \"0xDDeAf391c4be2d01ca52aBb8C159a06820ef078C\",\n name: \"nfts.babyBears\",\n },\n {\n \"80094\": \"0x7711B2Eb2451259dbF211e30157ceB7CFeb79a19\",\n name: \"nfts.bandBears\",\n },\n {\n \"80094\": \"0x72D876D9cdf4001b836f8E47254d0551EdA2eebB\",\n name: \"nfts.bitBears\",\n },\n {\n \"80069\": \"\",\n \"80094\": \"0x24147243f9c08d835C218Cda1e135f8dFD0517D0\",\n name: \"bend.morpho\",\n },\n {\n \"80069\": \"\",\n \"80094\": \"0xcf247Df3A2322Dea0D408f011c194906E77a6f62\",\n name: \"bend.adaptiveCurveIrm\",\n },\n {\n \"80069\": \"\",\n \"80094\": \"0xF920140A65D0f412f2AB3e76C4fEAB5Eef0657ae\",\n name: \"bend.bundler3\",\n },\n {\n \"80069\": \"\",\n \"80094\": \"0xd2B9667F5214115E27937C410cAeE83E3a901Df7\",\n name: \"bend.generalAdapter1\",\n },\n {\n \"80069\": \"\",\n \"80094\": \"0x5EDd48C6ACBd565Eeb31702FD9fa9Cbc86fbE616\",\n name: \"bend.metaMorphoFactoryV1_1\",\n },\n {\n \"80069\": \"\",\n \"80094\": \"0x80108Ee81A92091Db6B8B2326B1875ce9388f461\",\n name: \"bend.metaFeePartitioner\",\n },\n {\n \"80069\": \"\",\n \"80094\": \"0xB62F34Ab315eaDeAc698e8EaEB6Fc2650951BFe7\",\n name: \"bend.publicAllocator\",\n },\n {\n \"80069\": \"\",\n \"80094\": \"0xAf2FDC54f7bc9d6e8C2D2760E908f4e1beB04d9E\",\n name: \"bend.morphoChainlinkOracleV2Factory\",\n },\n {\n \"80069\": \"\",\n \"80094\": \"0x46fE2bc33b661E01A8946BbC3Bf43F2B8382d802\",\n name: \"bend.urdFactory\",\n },\n {\n \"80069\": \"\",\n \"80094\": \"0x30BbA9CD9Eb8c95824aa42Faa1Bb397b07545bc1\",\n name: \"bend.vaults.re7HoneyVault\",\n },\n {\n \"80069\": \"0xb0d005Fe83E3F1ec876C1a64700c5F0d6265d9E3\",\n \"80094\": \"0x77DA09bC82652f9A14d1b170a001e759640298e6\",\n name: \"pol.bgtIncentiveDistributor\",\n },\n {\n \"80069\": \"0x1984Baf659607Cc5f206c55BB3B00eb3E180190B\",\n \"80094\": \"0x1984Baf659607Cc5f206c55BB3B00eb3E180190B\",\n name: \"pol.bgtIncentiveFeeCollector\",\n },\n {\n \"80069\": \"0x118D2cEeE9785eaf70C15Cd74CD84c9f8c3EeC9a\",\n \"80094\": \"0x118D2cEeE9785eaf70C15Cd74CD84c9f8c3EeC9a\",\n name: \"pol.wberaStakerVault\",\n },\n {\n \"80069\": \"0x4242424242424242424242424242424242424242\",\n \"80094\": \"0x4242424242424242424242424242424242424242\",\n name: \"pol.beaconDeposit\",\n },\n {\n \"80069\": \"0xdf960E8F3F19C481dDE769edEDD439ea1a63426a\",\n \"80094\": \"0xdf960E8F3F19C481dDE769edEDD439ea1a63426a\",\n name: \"pol.berachef\",\n },\n {\n \"80069\": \"0x1AE7dD7AE06F6C58B4524d9c1f816094B1bcCD8e\",\n \"80094\": \"0x1AE7dD7AE06F6C58B4524d9c1f816094B1bcCD8e\",\n name: \"pol.blockRewardController\",\n },\n {\n \"80069\": \"0xD2f19a79b026Fb636A7c300bF5947df113940761\",\n \"80094\": \"0xD2f19a79b026Fb636A7c300bF5947df113940761\",\n name: \"pol.distributor\",\n },\n {\n \"80069\": \"0x94Ad6Ac84f6C6FbA8b8CCbD71d9f4f101def52a8\",\n \"80094\": \"0x94Ad6Ac84f6C6FbA8b8CCbD71d9f4f101def52a8\",\n name: \"pol.rewardVaultFactory\",\n },\n {\n \"80069\": \"0x44F07Ce5AfeCbCC406e6beFD40cc2998eEb8c7C6\",\n \"80094\": \"0x44F07Ce5AfeCbCC406e6beFD40cc2998eEb8c7C6\",\n name: \"pol.bgtStaker\",\n },\n {\n \"80069\": \"0x7bb8DdaC7FbE3FFC0f4B3c73C4F158B06CF82650\",\n \"80094\": \"0x7Bb8DdaC7FbE3FFC0f4B3c73C4F158B06CF82650\",\n name: \"pol.feeCollector\",\n },\n {\n \"80069\": \"0x4f4A5c2194B8e856b7a05B348F6ba3978FB6f6D5\",\n \"80094\": \"0x4f4A5c2194B8e856b7a05B348F6ba3978FB6f6D5\",\n name: \"pol.governance\",\n },\n {\n \"80069\": \"0xb5f2000b5744f207c931526cAE2134cAa8b6862a\",\n \"80094\": \"0xb5f2000b5744f207c931526cAE2134cAa8b6862a\",\n name: \"pol.timelock\",\n },\n {\n \"80069\": \"0x176c081E95C82CA68DEa20CA419C7506Aa063C24\",\n \"80094\": \"0xb79b43dBA821Cb67751276Ce050fF4111445fB99\",\n name: \"stakingPools.stakingPoolContractsFactory\",\n },\n {\n \"80069\": \"0x8b472791aC2f9e9Bd85f8919401b8Ce3bdFd464c\",\n \"80094\": \"0xAd17932a5B1aaeEa73D277a6AE670623F176E0D0\",\n name: \"stakingPools.delegationHandlerFactory\",\n },\n {\n \"80069\": \"0xAFAc2f11Cb39F0521b22494F6101002ce653D2f4\",\n \"80094\": \"0xE858802Ed532C6DAD2D196AB5B1F2C15F9cb52b4\",\n name: \"stakingPools.withdrawalVault\",\n },\n {\n \"80069\": \"0x656b95E550C07a9ffe548bd4085c72418Ceb1dba\",\n \"80094\": \"0x656b95E550C07a9ffe548bd4085c72418Ceb1dba\",\n name: \"tokens.bgt\",\n },\n {\n \"80069\": \"0xFCBD14DC51f0A4d49d5E53C2E0950e0bC26d0Dce\",\n \"80094\": \"0xFCBD14DC51f0A4d49d5E53C2E0950e0bC26d0Dce\",\n name: \"tokens.honey\",\n },\n {\n \"80069\": \"0xA4aFef880F5cE1f63c9fb48F661E27F8B4216401\",\n \"80094\": \"0xA4aFef880F5cE1f63c9fb48F661E27F8B4216401\",\n name: \"tokens.honeyFactory\",\n },\n {\n \"80069\": \"0x285e147060CDc5ba902786d3A471224ee6cE0F91\",\n \"80094\": \"0x285e147060CDc5ba902786d3A471224ee6cE0F91\",\n name: \"tokens.honeyFactoryReader\",\n },\n {\n \"80069\": \"0x6969696969696969696969696969696969696969\",\n \"80094\": \"0x6969696969696969696969696969696969696969\",\n name: \"tokens.wbera\",\n },\n {\n \"80069\": \"\",\n \"80094\": \"0x549943e04f40284185054145c6E4e9568C1D3241\",\n name: \"tokens.usdc\",\n },\n {\n \"80069\": \"\",\n \"80094\": \"0x0555E30da8f98308EdB960aa94C0Db47230d2B9c\",\n name: \"tokens.wbtc\",\n },\n {\n \"80069\": \"\",\n \"80094\": \"0x2F6F07CDcf3588944Bf4C42aC74ff24bF56e7590\",\n name: \"tokens.weth\",\n },\n {\n \"80069\": \"0x708cA656b68A6b7384a488A36aD33505a77241FE\",\n \"80094\": \"0x4Be03f781C497A489E3cB0287833452cA9B9E80B\",\n name: \"bex.vault\",\n },\n {\n \"80069\": \"0x05A607aCf3548E84DD1E44c3706F850c849058Da\",\n \"80094\": \"0xB8Cf46Cf1b1476E707619913a70B2085d26f1707\",\n name: \"bex.protocolFeesCollector\",\n },\n {\n \"80069\": \"0xC7c981ADcDC5d48fed0CD52807fb2bAB22676C8f\",\n \"80094\": \"0x5083737EC75a728c265BE578C9d0d5333a2c5951\",\n name: \"bex.balancerHelpers\",\n },\n {\n \"80069\": \"0x0dC9964F6CA33d9EF38DEB4925234766127C6B36\",\n \"80094\": \"0x55dccE8165C88aAd4403a15A9cE3A8E244657dD2\",\n name: \"bex.poolCreationHelper\",\n },\n {\n \"80069\": \"0x8c2D77f0CfcD4Af9cF41494EfE500FE324012c06\",\n \"80094\": \"0x1635F0E1B3e8A6713d03aE155ba79458Ba3240C7\",\n name: \"bex.protocolFeesWithdrawer\",\n },\n {\n \"80069\": \"0xB60DbBaCEaeC23486a64d12089F467ef949f1bb1\",\n \"80094\": \"0xDfA30BDa0375d4763711AB0CC8D91B20bfCC87E1\",\n name: \"bex.stablePoolFactory\",\n },\n {\n \"80069\": \"0xfD772657FC8c4Ed3884AfF151b680883814052FA\",\n \"80094\": \"0xCB4AE3030bA06F7EEE54A7B96AfcA7457f9525cf\",\n name: \"bex.batchRelayerLibrary\",\n },\n {\n \"80069\": \"0x263a1C5B2c5851beA2177eb8D6caefdfF2A25601\",\n \"80094\": \"0x4151083172b2CEFB83A33fD7FC9F6cBabb3Fd08d\",\n name: \"bex.batchRelayerQueryLibrary\",\n },\n {\n \"80069\": \"0x343215E156Ff586711a5B8C49Fe3099BAF22624C\",\n \"80094\": \"0x6044f181aB5E9C05A4ed9Ce295f3B178d2492EE7\",\n name: \"bex.balancerRelayer\",\n },\n {\n \"80069\": \"0xf1d23276C7b271B2aC595C78977b2312E9954D57\",\n \"80094\": \"0xa966fA8F2d5B087FFFA499C0C1240589371Af409\",\n name: \"bex.weightedPoolFactory\",\n },\n {\n \"80069\": \"0x8119E412E00fe3c857739E95dB147817Bf615dB8\",\n \"80094\": \"0x33C88ffdEe710ed3908C791137Bd1D4421AabBBf\",\n name: \"bex.protocolFeePercentagesProvider\",\n },\n {\n \"80069\": \"0xE3723383a0EA73D5c0dE424BAA97F97f86f6cF92\",\n \"80094\": \"0x3C612e132624f4Bd500eE1495F54565F0bcc9b59\",\n name: \"bex.balancerQueries\",\n },\n {\n \"80069\": \"0x1453b808C88AAa5e5965f8d86123921E96F045Aa\",\n \"80094\": \"0x71047aE39A7aA4f7d923542F459e50B974644Ef2\",\n name: \"bex.authorizer\",\n },\n {\n \"80069\": \"0x41675C099F32341bf84BFc5382aF534df5C7461a\",\n \"80094\": \"0x41675C099F32341bf84BFc5382aF534df5C7461a\",\n name: \"safe.safe\",\n },\n {\n \"80069\": \"0x4e1DCf7AD4e460CfD30791CCC4F9c8a4f820ec67\",\n \"80094\": \"0x4e1DCf7AD4e460CfD30791CCC4F9c8a4f820ec67\",\n name: \"safe.safeProxyFactory\",\n },\n {\n \"80069\": \"0x38869bf66a61cF6bDB996A6aE40D5853Fd43B526\",\n \"80094\": \"0x38869bf66a61cF6bDB996A6aE40D5853Fd43B526\",\n name: \"safe.multiSend\",\n },\n {\n \"80069\": \"0x9641d764fc13c8B624c04430C7356C1C7C8102e2\",\n \"80094\": \"0x9641d764fc13c8B624c04430C7356C1C7C8102e2\",\n name: \"safe.multiSendCallOnly\",\n },\n {\n \"80069\": \"0xfd0732Dc9E303f09fCEf3a7388Ad10A83459Ec99\",\n \"80094\": \"0xfd0732Dc9E303f09fCEf3a7388Ad10A83459Ec99\",\n name: \"safe.compatibilityFallbackHandler\",\n },\n {\n \"80069\": \"0xd53cd0aB83D845Ac265BE939c57F53AD838012c9\",\n \"80094\": \"0xd53cd0aB83D845Ac265BE939c57F53AD838012c9\",\n name: \"safe.signMessageLib\",\n },\n {\n \"80069\": \"0x3d4BA2E0884aa488718476ca2FB8Efc291A46199\",\n \"80094\": \"0x3d4BA2E0884aa488718476ca2FB8Efc291A46199\",\n name: \"safe.simulateTxAccessor\",\n },\n {\n \"80069\": \"0x9b35Af71d77eaf8d7e40252370304687390A1A52\",\n \"80094\": \"0x9b35Af71d77eaf8d7e40252370304687390A1A52\",\n name: \"safe.createCall\",\n },\n {\n \"80069\": \"0x4e59b44847b379578588920cA78FbF26c0B4956C\",\n \"80094\": \"0x4e59b44847b379578588920cA78FbF26c0B4956C\",\n name: \"other.create2\",\n },\n {\n \"80069\": \"0xcA11bde05977b3631167028862bE2a173976CA11\",\n \"80094\": \"0xcA11bde05977b3631167028862bE2a173976CA11\",\n name: \"other.multicall3\",\n },\n {\n \"80069\": \"0x000000000022D473030F116dDEE9F6B43aC78BA3\",\n \"80094\": \"0x000000000022D473030F116dDEE9F6B43aC78BA3\",\n name: \"other.permit2\",\n },\n {\n \"80069\": \"0xEe233a69A36Db7fC10E03e921D90DEC52Cdce6e2\",\n \"80094\": \"0xEe233a69A36Db7fC10E03e921D90DEC52Cdce6e2\",\n name: \"pol.rewardVaultHelper\",\n },\n {\n \"80069\": \"0x7f09Cf6958631513aF0400488F65c7B5c0313F52\",\n \"80094\": \"0xc8FD9a3fB3Dad4C22c9F8Cfa7cecC318A667A791\",\n name: \"pol.rewardAllocationFactory\",\n },\n {\n \"80069\": \"0xba1ba1ba1ba1ba1ba1ba1ba1ba1ba1ba1ba1ba1b\",\n \"80094\": \"0xba1ba1ba1ba1ba1ba1ba1ba1ba1ba1ba1ba1ba1b\",\n name: \"bex.balancerDelegatedOwnership\",\n },\n {\n \"80069\": \"0x0000000000000000000000000000000000000000\",\n \"80094\": \"0x1BDB1cf792419d2eaB5aBa8076B8f4257744fA58\",\n name: \"bex.aggregatorsRouter\",\n },\n {\n \"80069\": \"0x0000000000000000000000000000000000000000\",\n \"80094\": \"0x4AD3c5A427Af60F8Dd982023aE012233A66CA1f8\",\n name: \"bex.aggregatorsRouterExecutor\",\n },\n {\n \"80069\": null,\n \"80094\": \"0x24aC999FF132B32c5b3956973b6213B0d07eB2C7\",\n name: \"bex.haikuRouter\",\n },\n {\n \"80069\": null,\n \"80094\": \"0x69495273D6Dc572A830A4D6e00400a1e9d5B8f71\",\n name: \"bex.haikuAgentAddress\",\n },\n {\n \"80069\": \"0x0eFeC4379805fAFA7269Ec599a6921f388C8841a\",\n \"80094\": \"0xB5787B8f7b07a00229b617c4B7a616185857C147\",\n name: \"bex.recoverFundsContract\",\n },\n {\n \"80069\": \"0x5CA67e134c52B1d11E038A5a4eD8Ddcdb1238943\",\n \"80094\": \"0x5CA67e134c52B1d11E038A5a4eD8Ddcdb1238943\",\n name: \"honey.pythOracle\",\n },\n {\n \"80069\": \"0xE5Ad9BA751714ec8cdd554b5a9f12BFcA13980cB\",\n \"80094\": \"0xF5686e448BE103beA465105bEb9d284a34ae7e95\",\n name: \"honey.pythWrapper\",\n },\n {\n \"80069\": \"0x2880aB155794e7179c9eE2e38200202908C17B43\",\n \"80094\": \"0x2880aB155794e7179c9eE2e38200202908C17B43\",\n name: \"external.pyth\",\n },\n {\n \"80069\": null,\n \"80094\": \"0xC5FabF3a7E98a2ed89f5d5057Ab010634Ca7e71f\",\n name: \"bend.staging.morpho\",\n },\n {\n \"80069\": null,\n \"80094\": \"0x1d5376e532CcF25b740270624111D665830E5dB9\",\n name: \"bend.staging.adaptiveCurveIrm\",\n },\n {\n \"80069\": null,\n \"80094\": \"0x524061B659380a5e4576d76F0951303B20B5932f\",\n name: \"bend.staging.metaMorphoFactory\",\n },\n {\n \"80069\": null,\n \"80094\": \"0xFD6e68bC20be2a01Ec1Df687c83f927087D52811\",\n name: \"bend.staging.publicAllocator\",\n },\n {\n \"80069\": null,\n \"80094\": \"0x56811e1BFfF951B98c7940d3aCe0e549Ec4fDee8\",\n name: \"bend.staging.bundler3\",\n },\n {\n \"80069\": null,\n \"80094\": \"0x257a41E20BBfe90D750646C2e00bA700D55958C5\",\n name: \"bend.staging.generalAdapter1\",\n },\n {\n \"80094\": \"0x19DcFf4e8Ff0B554D8a1f22d289A449fd4FbddBa\",\n name: \"bend.staging.supportedVaults.0\",\n },\n {\n \"80094\": \"0xC0808A144CE2ea85bF84EBD1dDF5D59429f59dDE\",\n name: \"bend.staging.supportedVaults.1\",\n },\n {\n \"80069\": null,\n \"80094\": \"0xc914a663837eb21c5a650716e015659686597e55\",\n name: \"enso.walletV2Factory\",\n },\n {\n \"80069\": null,\n \"80094\": \"0x5dE09823D9143886896507107590d9859F3E390b\",\n name: \"enso.walletFlashloanAdapter\",\n },\n] as const;\n","import type { IHoneySwapState } from \"../hooks/honey/useHoneySwapState\";\nimport { formatNumber } from \"./formatNumber\";\n\n/**\n * Get the message shown in the transaction confirmation modal for honey swaps\n * @returns {string} The message\n */\nexport function getHoneySwapMessage({\n collaterals,\n actionType,\n toAmount,\n fromAmount,\n isBasketModeEnabled,\n}: Pick<\n IHoneySwapState,\n | \"collaterals\"\n | \"actionType\"\n | \"toAmount\"\n | \"fromAmount\"\n | \"isBasketModeEnabled\"\n>): string {\n if (collaterals.length > 0) {\n if (actionType === \"mint\") {\n const msg = [\"Minting\"];\n msg.push(formatNumber(Number(toAmount[0]), 5));\n msg.push(\"Honey from\");\n if (isBasketModeEnabled) {\n for (const idx in collaterals) {\n msg.push(formatNumber(Number(fromAmount[idx]), 5));\n msg.push(`${collaterals[idx].symbol}`);\n if (+idx < collaterals.length - 2) {\n msg[msg.length - 1] = msg[msg.length - 1].concat(\",\");\n } else if (+idx === collaterals.length - 1) {\n msg[msg.length - 1] = msg[msg.length - 1].concat(\".\");\n } else {\n msg.push(\"and\");\n }\n }\n } else {\n msg.push(formatNumber(Number(fromAmount[0]), 5));\n msg.push(`${collaterals[0].symbol}`);\n }\n return msg.join(\" \");\n }\n const msg = [\"Redeeming\"];\n if (isBasketModeEnabled) {\n for (const idx in collaterals) {\n msg.push(formatNumber(Number(toAmount[idx]), 5));\n msg.push(`${collaterals[idx].symbol}`);\n if (+idx < collaterals.length - 2) {\n msg[msg.length - 1] = msg[msg.length - 1].concat(\",\");\n } else if (+idx === collaterals.length - 1) {\n msg.push(\"for\");\n msg.push(formatNumber(Number(fromAmount[0]), 5));\n msg.push(\"Honey.\");\n } else {\n msg.push(\"and\");\n }\n }\n } else {\n msg.push(formatNumber(Number(toAmount[0]), 5));\n msg.push(`${collaterals[0].symbol}`);\n msg.push(\"for\");\n msg.push(formatNumber(Number(fromAmount[0]), 5));\n msg.push(\"Honey.\");\n }\n return msg.join(\" \");\n }\n return \"\";\n}\n","import { createPublicClient, fallback, http, type PublicClient } from \"viem\";\nimport { berachain, berachainBepolia } from \"viem/chains\";\n\nimport {\n ChainId,\n defaultChainId,\n getRpcUrls,\n} from \"@berachain/config/internal\";\n\n/**\n * This is a singleton to avoid creating a new client for each request.\n *\n * A single client manages batch requests when parallel requests are made on different instances.\n */\nconst _clients: Map<ChainId, PublicClient> = new Map();\n\nexport const getServerSidePublicClient = (\n args: { chainId?: ChainId } = {},\n): PublicClient => {\n const chainId: ChainId = args.chainId ?? defaultChainId;\n\n if (_clients.has(chainId)) {\n return _clients.get(chainId)!;\n }\n\n const rpcs = getRpcUrls(chainId);\n const fallbackTransports = [\n rpcs.privateRcpUrl,\n rpcs.jsonRpcUrl,\n rpcs.alchemyJsonRpcUrl,\n rpcs.publicJsonRpcUrl,\n ]\n .filter((i) => i)\n .map((url) => http(url));\n\n if (fallbackTransports.length === 0) {\n fallbackTransports.push(http());\n }\n const chain = chainId === ChainId.MAINNET ? berachain : berachainBepolia;\n const client = createPublicClient({\n chain,\n transport: fallback(fallbackTransports),\n });\n\n _clients.set(chainId, client);\n\n return client;\n};\n","import BigNumber from \"@berachain/utils/pkg/bignumber.js\";\n\nexport const isDifferenceExceedingThreshold = (\n initialAmount: string,\n newAmount: string,\n threshold: number,\n) => {\n const upperBound = new BigNumber(1 + threshold).times(initialAmount);\n const lowerBound = new BigNumber(1 - threshold).times(initialAmount);\n return (\n upperBound.isLessThan(newAmount) || lowerBound.isGreaterThan(newAmount)\n );\n};\n","export function isSubgraphStale({\n lastBlockTimestamp,\n blockTime,\n}: {\n lastBlockTimestamp: number | null | undefined;\n blockTime: number;\n}) {\n if (!lastBlockTimestamp) return true;\n return lastBlockTimestamp < Date.now() / 1000 - blockTime * 10;\n}\n","import { BeraError } from \"../errors/BeraError\";\nimport { InvalidArgumentError } from \"../errors/InvalidArgumentError\";\nimport { RequestError } from \"../errors/RequestError\";\nimport { beraFetchJson } from \"./beraFetch\";\n\nconst LAYERZERO_SCAN_MAINNET_URL = \"https://api-mainnet.layerzero-scan.com\";\n\nexport enum LayerZeroMessageStatus {\n INFLIGHT = \"INFLIGHT\",\n DELIVERED = \"DELIVERED\",\n FAILED = \"FAILED\",\n}\n\nexport type LayerZeroMessage = {\n srcUaAddress: string;\n dstUaAddress: string;\n srcChainId: number;\n dstChainId: number;\n dstTxHash?: string;\n dstTxError?: string;\n srcTxHash?: string;\n srcBlockHash?: string;\n srcBlockNumber?: string;\n srcUaNonce: number;\n status: LayerZeroMessageStatus;\n};\n\nexport type LayerZeroDeliveredMessage = LayerZeroMessage & {\n dstTxHash: string;\n};\n\ntype GetMessagesBySrcTxHashResponse = {\n messages: LayerZeroMessage[];\n};\n\nconst sleep = (ms: number) => new Promise((resolve) => setTimeout(resolve, ms));\n\nasync function getMessagesBySrcTxHash(\n srcTxHash: string,\n): Promise<GetMessagesBySrcTxHashResponse> {\n return beraFetchJson<GetMessagesBySrcTxHashResponse>({\n url: `${LAYERZERO_SCAN_MAINNET_URL}/tx/${srcTxHash}`,\n type: \"rest\",\n name: \"LayerZero Scan\",\n });\n}\n\nexport type WaitForMessageReceivedOptions = {\n pollInterval?: number;\n timeout?: number;\n};\n\n/**\n * Polls LayerZero scan API until the cross-chain message is delivered or fails.\n * HTTP errors are silently retried until timeout.\n *\n * @param srcTxHash - The source transaction hash to track\n * @param options - Configuration options\n * @param options.pollInterval - Polling interval in ms (default: 3000)\n * @param options.timeout - Timeout in ms (default: 600000 / 10 minutes)\n * @returns The delivered message with destination tx hash\n * @throws InvalidArgumentError if srcTxHash is missing\n * @throws BeraError if message fails, times out, or multiple messages found\n */\nexport async function waitForLayerZeroMessageReceived(\n srcTxHash: string,\n options: WaitForMessageReceivedOptions = {},\n): Promise<LayerZeroDeliveredMessage> {\n const { pollInterval = 3000, timeout = 600_000 } = options;\n\n if (!srcTxHash) {\n throw new InvalidArgumentError({\n property: \"srcTxHash\",\n value: srcTxHash,\n expected: \"string\",\n });\n }\n\n const startTime = Date.now();\n\n while (true) {\n // check timeout\n if (Date.now() - startTime > timeout) {\n throw new BeraError({\n message: `LayerZero message tracking timed out after ${timeout}ms`,\n reason: \"LAYERZERO_TIMEOUT\",\n level: \"warning\",\n });\n }\n\n try {\n const { messages } = await getMessagesBySrcTxHash(srcTxHash);\n const message = messages[0];\n\n if (messages.length > 1) {\n throw new BeraError({\n message: \"More than one LayerZero message found for transaction\",\n reason: \"LAYERZERO_MULTIPLE_MESSAGES\",\n });\n }\n\n if (message?.status === LayerZeroMessageStatus.FAILED) {\n throw new BeraError({\n message: `LayerZero message failed: ${message.dstTxError}`,\n reason: \"LAYERZERO_MESSAGE_FAILED\",\n });\n }\n\n if (message?.status === LayerZeroMessageStatus.DELIVERED) {\n return message as LayerZeroDeliveredMessage;\n }\n } catch (error) {\n // re-throw non-retryable errors (validation, timeout, failed message)\n // but allow RequestError to retry (network issues, temporary API errors)\n if (error instanceof BeraError && !(error instanceof RequestError)) {\n throw error;\n }\n }\n\n await sleep(pollInterval);\n }\n}\n","import type { TokenInfoFragmentFragment } from \"@berachain/graphql/bend/whisk\";\n\nimport type { TokenWithMetadata } from \"../types/dex\";\n\n/**\n * Parse a token from the Whisk API into a TokenWithMetadata object.\n *\n * @returns\n */\nexport function parseWhiskToken(token: TokenInfoFragmentFragment) {\n return {\n ...token,\n chainId: token.chain.id,\n } as const satisfies TokenWithMetadata;\n}\n","/**\n * Truncate a transaction or address hash and optionally format with uppercase letters and a lowercase 'x'.\n */\nexport const truncateHash = (\n address: `0x${string}` | string,\n startLength = 4,\n endLength = 4,\n formatUppercase = false,\n) => {\n if (!address) return \"\";\n\n const formattedAddress = formatUppercase\n ? address.toUpperCase().replace(/^0X/, \"0x\")\n : address;\n\n return `${formattedAddress.substring(\n 0,\n startLength,\n )}...${formattedAddress.substring(formattedAddress.length - endLength)}`;\n};\n","import { GqlValidatorBlockUptimeStatus } from \"@berachain/graphql/pol/api\";\n\n/**\n * Determines if a validator was the proposer for a specific block.\n * The proposer is responsible for creating and proposing new blocks to the network.\n *\n * @param status - The validator's block uptime status from the GraphQL API\n * @returns boolean\n */\nexport function isValidatorProposer(\n status: GqlValidatorBlockUptimeStatus | undefined,\n): boolean | undefined {\n if (!status) return undefined;\n return status === GqlValidatorBlockUptimeStatus.Proposed;\n}\n\n/**\n * Determines if a validator signed a specific block.\n * Block signers participate in consensus by validating and signing blocks.\n *\n * @param status - The validator's block uptime status from the GraphQL API\n * @returns boolean\n *\n */\nexport function isValidatorSigner(\n status: GqlValidatorBlockUptimeStatus | undefined,\n): boolean | undefined {\n if (!status) return undefined;\n return status === GqlValidatorBlockUptimeStatus.Signed;\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAO,IAAM,wBAAwB,CAAC,eAAuB;AAC3D,MAAI,eAAe,IAAK,QAAO;AAE/B,MAAI,gBAAgB,WAAW,QAAQ,OAAO,EAAE,EAAE,WAAW,YAAY,EAAE;AAG3E,MAAI,cAAc,WAAW,GAAG,GAAG;AACjC,oBAAgB,IAAI,aAAa;AAAA,EACnC;AAEA,SAAO;AACT;;;ACRO,SAAS,UACd,OACA,cACQ;AACR,QAAM,mBAAmB,eACrB,EAAE,uBAAuB,GAAG,uBAAuB,EAAE,IACrD,CAAC;AACL,QAAM,YAAY,IAAI,KAAK,aAAa,SAAS;AAAA,IAC/C,OAAO;AAAA,IACP,UAAU;AAAA,IACV,GAAG;AAAA,EACL,CAAC;AACD,MAAI;AACF,UAAM,WAAW,CAAC,UAChB,OAAO,UAAU;AACnB,UAAM,WAAW,CAAC,UAChB,OAAO,UAAU;AAEnB,QAAI,CAAC,SAAS,KAAK,KAAK,CAAC,SAAS,KAAK,GAAG;AACxC,aAAO,UAAU,OAAO,CAAC;AAAA,IAC3B;AAEA,QAAI;AAEJ,QAAI,SAAS,KAAK,GAAG;AACnB,YAAM,OAAO,WAAW,KAAK;AAE7B,UAAI,OAAO,MAAM,GAAG,GAAG;AACrB,cAAM;AAAA,MACR;AAAA,IACF,OAAO;AACL,YAAM;AAEN,UAAI,OAAO,MAAM,GAAG,GAAG;AACrB,cAAM;AAAA,MACR;AAAA,IACF;AACA,WAAO,UAAU,OAAO,GAAG;AAAA,EAC7B,SAAS,GAAG;AACV,YAAQ,IAAI,CAAC;AACb,WAAO,UAAU,OAAO,CAAC;AAAA,EAC3B;AACF;;;AC3CA,SAAuB,sBAAsB;;;ACEtC,IAAM,YAAY;AAAA,EACvB;AAAA,IACE,SAAS;AAAA,IACT,SAAS;AAAA,IACT,MAAM;AAAA,EACR;AAAA,EACA;AAAA,IACE,SAAS;AAAA,IACT,MAAM;AAAA,EACR;AAAA,EACA;AAAA,IACE,SAAS;AAAA,IACT,MAAM;AAAA,EACR;AAAA,EACA;AAAA,IACE,SAAS;AAAA,IACT,MAAM;AAAA,EACR;AAAA,EACA;AAAA,IACE,SAAS;AAAA,IACT,MAAM;AAAA,EACR;AAAA,EACA;AAAA,IACE,SAAS;AAAA,IACT,MAAM;AAAA,EACR;AAAA,EACA;AAAA,IACE,SAAS;AAAA,IACT,MAAM;AAAA,EACR;AAAA,EACA;AAAA,IACE,SAAS;AAAA,IACT,SAAS;AAAA,IACT,MAAM;AAAA,EACR;AAAA,EACA;AAAA,IACE,SAAS;AAAA,IACT,SAAS;AAAA,IACT,MAAM;AAAA,EACR;AAAA,EACA;AAAA,IACE,SAAS;AAAA,IACT,SAAS;AAAA,IACT,MAAM;AAAA,EACR;AAAA,EACA;AAAA,IACE,SAAS;AAAA,IACT,SAAS;AAAA,IACT,MAAM;AAAA,EACR;AAAA,EACA;AAAA,IACE,SAAS;AAAA,IACT,SAAS;AAAA,IACT,MAAM;AAAA,EACR;AAAA,EACA;AAAA,IACE,SAAS;AAAA,IACT,SAAS;AAAA,IACT,MAAM;AAAA,EACR;AAAA,EACA;AAAA,IACE,SAAS;AAAA,IACT,SAAS;AAAA,IACT,MAAM;AAAA,EACR;AAAA,EACA;AAAA,IACE,SAAS;AAAA,IACT,SAAS;AAAA,IACT,MAAM;AAAA,EACR;AAAA,EACA;AAAA,IACE,SAAS;AAAA,IACT,SAAS;AAAA,IACT,MAAM;AAAA,EACR;AAAA,EACA;AAAA,IACE,SAAS;AAAA,IACT,SAAS;AAAA,IACT,MAAM;AAAA,EACR;AAAA,EACA;AAAA,IACE,SAAS;AAAA,IACT,SAAS;AAAA,IACT,MAAM;AAAA,EACR;AAAA,EACA;AAAA,IACE,SAAS;AAAA,IACT,SAAS;AAAA,IACT,MAAM;AAAA,EACR;AAAA,EACA;AAAA,IACE,SAAS;AAAA,IACT,SAAS;AAAA,IACT,MAAM;AAAA,EACR;AAAA,EACA;AAAA,IACE,SAAS;AAAA,IACT,SAAS;AAAA,IACT,MAAM;AAAA,EACR;AAAA,EACA;AAAA,IACE,SAAS;AAAA,IACT,SAAS;AAAA,IACT,MAAM;AAAA,EACR;AAAA,EACA;AAAA,IACE,SAAS;AAAA,IACT,SAAS;AAAA,IACT,MAAM;AAAA,EACR;AAAA,EACA;AAAA,IACE,SAAS;AAAA,IACT,SAAS;AAAA,IACT,MAAM;AAAA,EACR;AAAA,EACA;AAAA,IACE,SAAS;AAAA,IACT,SAAS;AAAA,IACT,MAAM;AAAA,EACR;AAAA,EACA;AAAA,IACE,SAAS;AAAA,IACT,SAAS;AAAA,IACT,MAAM;AAAA,EACR;AAAA,EACA;AAAA,IACE,SAAS;AAAA,IACT,SAAS;AAAA,IACT,MAAM;AAAA,EACR;AAAA,EACA;AAAA,IACE,SAAS;AAAA,IACT,SAAS;AAAA,IACT,MAAM;AAAA,EACR;AAAA,EACA;AAAA,IACE,SAAS;AAAA,IACT,SAAS;AAAA,IACT,MAAM;AAAA,EACR;AAAA,EACA;AAAA,IACE,SAAS;AAAA,IACT,SAAS;AAAA,IACT,MAAM;AAAA,EACR;AAAA,EACA;AAAA,IACE,SAAS;AAAA,IACT,SAAS;AAAA,IACT,MAAM;AAAA,EACR;AAAA,EACA;AAAA,IACE,SAAS;AAAA,IACT,SAAS;AAAA,IACT,MAAM;AAAA,EACR;AAAA,EACA;AAAA,IACE,SAAS;AAAA,IACT,SAAS;AAAA,IACT,MAAM;AAAA,EACR;AAAA,EACA;AAAA,IACE,SAAS;AAAA,IACT,SAAS;AAAA,IACT,MAAM;AAAA,EACR;AAAA,EACA;AAAA,IACE,SAAS;AAAA,IACT,SAAS;AAAA,IACT,MAAM;AAAA,EACR;AAAA,EACA;AAAA,IACE,SAAS;AAAA,IACT,SAAS;AAAA,IACT,MAAM;AAAA,EACR;AAAA,EACA;AAAA,IACE,SAAS;AAAA,IACT,SAAS;AAAA,IACT,MAAM;AAAA,EACR;AAAA,EACA;AAAA,IACE,SAAS;AAAA,IACT,SAAS;AAAA,IACT,MAAM;AAAA,EACR;AAAA,EACA;AAAA,IACE,SAAS;AAAA,IACT,SAAS;AAAA,IACT,MAAM;AAAA,EACR;AAAA,EACA;AAAA,IACE,SAAS;AAAA,IACT,SAAS;AAAA,IACT,MAAM;AAAA,EACR;AAAA,EACA;AAAA,IACE,SAAS;AAAA,IACT,SAAS;AAAA,IACT,MAAM;AAAA,EACR;AAAA,EACA;AAAA,IACE,SAAS;AAAA,IACT,SAAS;AAAA,IACT,MAAM;AAAA,EACR;AAAA,EACA;AAAA,IACE,SAAS;AAAA,IACT,SAAS;AAAA,IACT,MAAM;AAAA,EACR;AAAA,EACA;AAAA,IACE,SAAS;AAAA,IACT,SAAS;AAAA,IACT,MAAM;AAAA,EACR;AAAA,EACA;AAAA,IACE,SAAS;AAAA,IACT,SAAS;AAAA,IACT,MAAM;AAAA,EACR;AAAA,EACA;AAAA,IACE,SAAS;AAAA,IACT,SAAS;AAAA,IACT,MAAM;AAAA,EACR;AAAA,EACA;AAAA,IACE,SAAS;AAAA,IACT,SAAS;AAAA,IACT,MAAM;AAAA,EACR;AAAA,EACA;AAAA,IACE,SAAS;AAAA,IACT,SAAS;AAAA,IACT,MAAM;AAAA,EACR;AAAA,EACA;AAAA,IACE,SAAS;AAAA,IACT,SAAS;AAAA,IACT,MAAM;AAAA,EACR;AAAA,EACA;AAAA,IACE,SAAS;AAAA,IACT,SAAS;AAAA,IACT,MAAM;AAAA,EACR;AAAA,EACA;AAAA,IACE,SAAS;AAAA,IACT,SAAS;AAAA,IACT,MAAM;AAAA,EACR;AAAA,EACA;AAAA,IACE,SAAS;AAAA,IACT,SAAS;AAAA,IACT,MAAM;AAAA,EACR;AAAA,EACA;AAAA,IACE,SAAS;AAAA,IACT,SAAS;AAAA,IACT,MAAM;AAAA,EACR;AAAA,EACA;AAAA,IACE,SAAS;AAAA,IACT,SAAS;AAAA,IACT,MAAM;AAAA,EACR;AAAA,EACA;AAAA,IACE,SAAS;AAAA,IACT,SAAS;AAAA,IACT,MAAM;AAAA,EACR;AAAA,EACA;AAAA,IACE,SAAS;AAAA,IACT,SAAS;AAAA,IACT,MAAM;AAAA,EACR;AAAA,EACA;AAAA,IACE,SAAS;AAAA,IACT,SAAS;AAAA,IACT,MAAM;AAAA,EACR;AAAA,EACA;AAAA,IACE,SAAS;AAAA,IACT,SAAS;AAAA,IACT,MAAM;AAAA,EACR;AAAA,EACA;AAAA,IACE,SAAS;AAAA,IACT,SAAS;AAAA,IACT,MAAM;AAAA,EACR;AAAA,EACA;AAAA,IACE,SAAS;AAAA,IACT,SAAS;AAAA,IACT,MAAM;AAAA,EACR;AAAA,EACA;AAAA,IACE,SAAS;AAAA,IACT,SAAS;AAAA,IACT,MAAM;AAAA,EACR;AAAA,EACA;AAAA,IACE,SAAS;AAAA,IACT,SAAS;AAAA,IACT,MAAM;AAAA,EACR;AAAA,EACA;AAAA,IACE,SAAS;AAAA,IACT,SAAS;AAAA,IACT,MAAM;AAAA,EACR;AAAA,EACA;AAAA,IACE,SAAS;AAAA,IACT,SAAS;AAAA,IACT,MAAM;AAAA,EACR;AAAA,EACA;AAAA,IACE,SAAS;AAAA,IACT,SAAS;AAAA,IACT,MAAM;AAAA,EACR;AAAA,EACA;AAAA,IACE,SAAS;AAAA,IACT,SAAS;AAAA,IACT,MAAM;AAAA,EACR;AAAA,EACA;AAAA,IACE,SAAS;AAAA,IACT,SAAS;AAAA,IACT,MAAM;AAAA,EACR;AAAA,EACA;AAAA,IACE,SAAS;AAAA,IACT,SAAS;AAAA,IACT,MAAM;AAAA,EACR;AAAA,EACA;AAAA,IACE,SAAS;AAAA,IACT,SAAS;AAAA,IACT,MAAM;AAAA,EACR;AAAA,EACA;AAAA,IACE,SAAS;AAAA,IACT,SAAS;AAAA,IACT,MAAM;AAAA,EACR;AAAA,EACA;AAAA,IACE,SAAS;AAAA,IACT,SAAS;AAAA,IACT,MAAM;AAAA,EACR;AAAA,EACA;AAAA,IACE,SAAS;AAAA,IACT,SAAS;AAAA,IACT,MAAM;AAAA,EACR;AAAA,EACA;AAAA,IACE,SAAS;AAAA,IACT,SAAS;AAAA,IACT,MAAM;AAAA,EACR;AAAA,EACA;AAAA,IACE,SAAS;AAAA,IACT,SAAS;AAAA,IACT,MAAM;AAAA,EACR;AAAA,EACA;AAAA,IACE,SAAS;AAAA,IACT,SAAS;AAAA,IACT,MAAM;AAAA,EACR;AAAA,EACA;AAAA,IACE,SAAS;AAAA,IACT,SAAS;AAAA,IACT,MAAM;AAAA,EACR;AAAA,EACA;AAAA,IACE,SAAS;AAAA,IACT,SAAS;AAAA,IACT,MAAM;AAAA,EACR;AAAA,EACA;AAAA,IACE,SAAS;AAAA,IACT,SAAS;AAAA,IACT,MAAM;AAAA,EACR;AAAA,EACA;AAAA,IACE,SAAS;AAAA,IACT,SAAS;AAAA,IACT,MAAM;AAAA,EACR;AAAA,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","names":["contract","msg","defaultChainId","LayerZeroMessageStatus"]}
|
|
1
|
+
{"version":3,"sources":["../../src/utils/formatInputTokenValue.ts","../../src/utils/formatUsd.ts","../../src/utils/getContractName.ts","../../src/data/contracts.ts","../../src/utils/getHoneySwapMessage.ts","../../src/utils/getServerSideClient.ts","../../src/utils/isDifferenceExceedingThreshold.ts","../../src/utils/isSubgraphStale.ts","../../src/utils/layerZeroScan.ts","../../src/utils/parseWhiskToken.ts","../../src/utils/truncateHash.ts","../../src/utils/validatorUptimeStatus.ts"],"sourcesContent":["export const formatInputTokenValue = (inputValue: string) => {\n if (inputValue === \"0\") return inputValue;\n // Remove all non-numeric characters except for the decimal point, and remove leading zeros\n let filteredValue = inputValue.replace(/^0+/, \"\").replaceAll(/[^0-9.]/g, \"\");\n\n // Keep the 0\n if (filteredValue.startsWith(\".\")) {\n filteredValue = `0${filteredValue}`;\n }\n\n return filteredValue;\n};\n","/**\n * @deprecated use the FormattedNumber component instead\n */\nexport function formatUsd(\n input: string | number,\n hideDecimals?: boolean,\n): string {\n const decimalsSettings = hideDecimals\n ? { minimumFractionDigits: 0, maximumFractionDigits: 0 }\n : {};\n const formatter = new Intl.NumberFormat(\"en-US\", {\n style: \"currency\",\n currency: \"USD\",\n ...decimalsSettings,\n });\n try {\n const isNumber = (value: unknown): value is number =>\n typeof value === \"number\";\n const isString = (value: unknown): value is string =>\n typeof value === \"string\";\n\n if (!isNumber(input) && !isString(input)) {\n return formatter.format(0);\n }\n\n let num: number;\n\n if (isString(input)) {\n num = Number.parseFloat(input);\n\n if (Number.isNaN(num)) {\n num = 0;\n }\n } else {\n num = input;\n\n if (Number.isNaN(num)) {\n num = 0;\n }\n }\n return formatter.format(num);\n } catch (e) {\n console.log(e);\n return formatter.format(0);\n }\n}\n","import type { Address } from \"viem\";\n\nimport { type ChainId, defaultChainId } from \"@berachain/config/internal\";\n\nimport { contracts } from \"../data/contracts\";\n\n/**\n * Get a human readable name for a contract address.\n */\nexport function getContractName({\n address,\n chainId = defaultChainId,\n}: {\n address: Address | undefined;\n chainId?: ChainId | \"name\";\n}): string | undefined {\n if (!address) {\n return undefined;\n }\n\n const contract = contracts.find((contract) => {\n const contractAddress = contract[chainId as keyof typeof contract];\n return contractAddress?.toLowerCase() === address.toLowerCase();\n });\n\n return contract?.name;\n}\n","/**\n * This file is generated by the getContractNames.js script.\n * Do not edit this file manually, run `pnpm contracts:update` to update it.\n */\nexport const contracts = [\n {\n \"80069\": \"0x0000000000000000000000000000000000000000\",\n \"80094\": \"0x0000000000000000000000000000000000000000\",\n name: \"zeroAddress\",\n },\n {\n \"80094\": \"0x141De07E5D4C4759EC9301DA106115D4841f66cD\",\n name: \"nfts.bongBears\",\n },\n {\n \"80094\": \"0xA0CF472E6132F6B822a944f6F31aA7b261c7c375\",\n name: \"nfts.bondBears\",\n },\n {\n \"80094\": \"0xf49ec5db255854C4a567de5AB3826c9AAbaFc7cF\",\n name: \"nfts.booBears\",\n },\n {\n \"80094\": \"0xDDeAf391c4be2d01ca52aBb8C159a06820ef078C\",\n name: \"nfts.babyBears\",\n },\n {\n \"80094\": \"0x7711B2Eb2451259dbF211e30157ceB7CFeb79a19\",\n name: \"nfts.bandBears\",\n },\n {\n \"80094\": \"0x72D876D9cdf4001b836f8E47254d0551EdA2eebB\",\n name: \"nfts.bitBears\",\n },\n {\n \"80069\": \"\",\n \"80094\": \"0x24147243f9c08d835C218Cda1e135f8dFD0517D0\",\n name: \"bend.morpho\",\n },\n {\n \"80069\": \"\",\n \"80094\": \"0xcf247Df3A2322Dea0D408f011c194906E77a6f62\",\n name: \"bend.adaptiveCurveIrm\",\n },\n {\n \"80069\": \"\",\n \"80094\": \"0xF920140A65D0f412f2AB3e76C4fEAB5Eef0657ae\",\n name: \"bend.bundler3\",\n },\n {\n \"80069\": \"\",\n \"80094\": \"0xd2B9667F5214115E27937C410cAeE83E3a901Df7\",\n name: \"bend.generalAdapter1\",\n },\n {\n \"80069\": \"\",\n \"80094\": \"0x5EDd48C6ACBd565Eeb31702FD9fa9Cbc86fbE616\",\n name: \"bend.metaMorphoFactoryV1_1\",\n },\n {\n \"80069\": \"\",\n \"80094\": \"0x80108Ee81A92091Db6B8B2326B1875ce9388f461\",\n name: \"bend.metaFeePartitioner\",\n },\n {\n \"80069\": \"\",\n \"80094\": \"0xB62F34Ab315eaDeAc698e8EaEB6Fc2650951BFe7\",\n name: \"bend.publicAllocator\",\n },\n {\n \"80069\": \"\",\n \"80094\": \"0xAf2FDC54f7bc9d6e8C2D2760E908f4e1beB04d9E\",\n name: \"bend.morphoChainlinkOracleV2Factory\",\n },\n {\n \"80069\": \"\",\n \"80094\": \"0x46fE2bc33b661E01A8946BbC3Bf43F2B8382d802\",\n name: \"bend.urdFactory\",\n },\n {\n \"80069\": \"\",\n \"80094\": \"0x30BbA9CD9Eb8c95824aa42Faa1Bb397b07545bc1\",\n name: \"bend.vaults.re7HoneyVault\",\n },\n {\n \"80069\": \"0xb0d005Fe83E3F1ec876C1a64700c5F0d6265d9E3\",\n \"80094\": \"0x77DA09bC82652f9A14d1b170a001e759640298e6\",\n name: \"pol.bgtIncentiveDistributor\",\n },\n {\n \"80069\": \"0x1984Baf659607Cc5f206c55BB3B00eb3E180190B\",\n \"80094\": \"0x1984Baf659607Cc5f206c55BB3B00eb3E180190B\",\n name: \"pol.bgtIncentiveFeeCollector\",\n },\n {\n \"80069\": \"0x118D2cEeE9785eaf70C15Cd74CD84c9f8c3EeC9a\",\n \"80094\": \"0x118D2cEeE9785eaf70C15Cd74CD84c9f8c3EeC9a\",\n name: \"pol.wberaStakerVault\",\n },\n {\n \"80069\": \"0x4242424242424242424242424242424242424242\",\n \"80094\": \"0x4242424242424242424242424242424242424242\",\n name: \"pol.beaconDeposit\",\n },\n {\n \"80069\": \"0xdf960E8F3F19C481dDE769edEDD439ea1a63426a\",\n \"80094\": \"0xdf960E8F3F19C481dDE769edEDD439ea1a63426a\",\n name: \"pol.berachef\",\n },\n {\n \"80069\": \"0x1AE7dD7AE06F6C58B4524d9c1f816094B1bcCD8e\",\n \"80094\": \"0x1AE7dD7AE06F6C58B4524d9c1f816094B1bcCD8e\",\n name: \"pol.blockRewardController\",\n },\n {\n \"80069\": \"0xD2f19a79b026Fb636A7c300bF5947df113940761\",\n \"80094\": \"0xD2f19a79b026Fb636A7c300bF5947df113940761\",\n name: \"pol.distributor\",\n },\n {\n \"80069\": \"0x94Ad6Ac84f6C6FbA8b8CCbD71d9f4f101def52a8\",\n \"80094\": \"0x94Ad6Ac84f6C6FbA8b8CCbD71d9f4f101def52a8\",\n name: \"pol.rewardVaultFactory\",\n },\n {\n \"80069\": \"0x44F07Ce5AfeCbCC406e6beFD40cc2998eEb8c7C6\",\n \"80094\": \"0x44F07Ce5AfeCbCC406e6beFD40cc2998eEb8c7C6\",\n name: \"pol.bgtStaker\",\n },\n {\n \"80069\": \"0x7bb8DdaC7FbE3FFC0f4B3c73C4F158B06CF82650\",\n \"80094\": \"0x7Bb8DdaC7FbE3FFC0f4B3c73C4F158B06CF82650\",\n name: \"pol.feeCollector\",\n },\n {\n \"80069\": \"0x4f4A5c2194B8e856b7a05B348F6ba3978FB6f6D5\",\n \"80094\": \"0x4f4A5c2194B8e856b7a05B348F6ba3978FB6f6D5\",\n name: \"pol.governance\",\n },\n {\n \"80069\": \"0xb5f2000b5744f207c931526cAE2134cAa8b6862a\",\n \"80094\": \"0xb5f2000b5744f207c931526cAE2134cAa8b6862a\",\n name: \"pol.timelock\",\n },\n {\n \"80069\": \"0x176c081E95C82CA68DEa20CA419C7506Aa063C24\",\n \"80094\": \"0xb79b43dBA821Cb67751276Ce050fF4111445fB99\",\n name: \"stakingPools.stakingPoolContractsFactory\",\n },\n {\n \"80069\": \"0x8b472791aC2f9e9Bd85f8919401b8Ce3bdFd464c\",\n \"80094\": \"0xAd17932a5B1aaeEa73D277a6AE670623F176E0D0\",\n name: \"stakingPools.delegationHandlerFactory\",\n },\n {\n \"80069\": \"0xAFAc2f11Cb39F0521b22494F6101002ce653D2f4\",\n \"80094\": \"0xE858802Ed532C6DAD2D196AB5B1F2C15F9cb52b4\",\n name: \"stakingPools.withdrawalVault\",\n },\n {\n \"80069\": \"0x656b95E550C07a9ffe548bd4085c72418Ceb1dba\",\n \"80094\": \"0x656b95E550C07a9ffe548bd4085c72418Ceb1dba\",\n name: \"tokens.bgt\",\n },\n {\n \"80069\": \"0xFCBD14DC51f0A4d49d5E53C2E0950e0bC26d0Dce\",\n \"80094\": \"0xFCBD14DC51f0A4d49d5E53C2E0950e0bC26d0Dce\",\n name: \"tokens.honey\",\n },\n {\n \"80069\": \"0xA4aFef880F5cE1f63c9fb48F661E27F8B4216401\",\n \"80094\": \"0xA4aFef880F5cE1f63c9fb48F661E27F8B4216401\",\n name: \"tokens.honeyFactory\",\n },\n {\n \"80069\": \"0x285e147060CDc5ba902786d3A471224ee6cE0F91\",\n \"80094\": \"0x285e147060CDc5ba902786d3A471224ee6cE0F91\",\n name: \"tokens.honeyFactoryReader\",\n },\n {\n \"80069\": \"0x6969696969696969696969696969696969696969\",\n \"80094\": \"0x6969696969696969696969696969696969696969\",\n name: \"tokens.wbera\",\n },\n {\n \"80069\": \"\",\n \"80094\": \"0x549943e04f40284185054145c6E4e9568C1D3241\",\n name: \"tokens.usdc\",\n },\n {\n \"80069\": \"\",\n \"80094\": \"0x0555E30da8f98308EdB960aa94C0Db47230d2B9c\",\n name: \"tokens.wbtc\",\n },\n {\n \"80069\": \"\",\n \"80094\": \"0x2F6F07CDcf3588944Bf4C42aC74ff24bF56e7590\",\n name: \"tokens.weth\",\n },\n {\n \"80069\": \"0x708cA656b68A6b7384a488A36aD33505a77241FE\",\n \"80094\": \"0x4Be03f781C497A489E3cB0287833452cA9B9E80B\",\n name: \"bex.vault\",\n },\n {\n \"80069\": \"0x05A607aCf3548E84DD1E44c3706F850c849058Da\",\n \"80094\": \"0xB8Cf46Cf1b1476E707619913a70B2085d26f1707\",\n name: \"bex.protocolFeesCollector\",\n },\n {\n \"80069\": \"0xC7c981ADcDC5d48fed0CD52807fb2bAB22676C8f\",\n \"80094\": \"0x5083737EC75a728c265BE578C9d0d5333a2c5951\",\n name: \"bex.balancerHelpers\",\n },\n {\n \"80069\": \"0x0dC9964F6CA33d9EF38DEB4925234766127C6B36\",\n \"80094\": \"0x55dccE8165C88aAd4403a15A9cE3A8E244657dD2\",\n name: \"bex.poolCreationHelper\",\n },\n {\n \"80069\": \"0x8c2D77f0CfcD4Af9cF41494EfE500FE324012c06\",\n \"80094\": \"0x1635F0E1B3e8A6713d03aE155ba79458Ba3240C7\",\n name: \"bex.protocolFeesWithdrawer\",\n },\n {\n \"80069\": \"0xB60DbBaCEaeC23486a64d12089F467ef949f1bb1\",\n \"80094\": \"0xDfA30BDa0375d4763711AB0CC8D91B20bfCC87E1\",\n name: \"bex.stablePoolFactory\",\n },\n {\n \"80069\": \"0xfD772657FC8c4Ed3884AfF151b680883814052FA\",\n \"80094\": \"0xCB4AE3030bA06F7EEE54A7B96AfcA7457f9525cf\",\n name: \"bex.batchRelayerLibrary\",\n },\n {\n \"80069\": \"0x263a1C5B2c5851beA2177eb8D6caefdfF2A25601\",\n \"80094\": \"0x4151083172b2CEFB83A33fD7FC9F6cBabb3Fd08d\",\n name: \"bex.batchRelayerQueryLibrary\",\n },\n {\n \"80069\": \"0x343215E156Ff586711a5B8C49Fe3099BAF22624C\",\n \"80094\": \"0x6044f181aB5E9C05A4ed9Ce295f3B178d2492EE7\",\n name: \"bex.balancerRelayer\",\n },\n {\n \"80069\": \"0xf1d23276C7b271B2aC595C78977b2312E9954D57\",\n \"80094\": \"0xa966fA8F2d5B087FFFA499C0C1240589371Af409\",\n name: \"bex.weightedPoolFactory\",\n },\n {\n \"80069\": \"0x8119E412E00fe3c857739E95dB147817Bf615dB8\",\n \"80094\": \"0x33C88ffdEe710ed3908C791137Bd1D4421AabBBf\",\n name: \"bex.protocolFeePercentagesProvider\",\n },\n {\n \"80069\": \"0xE3723383a0EA73D5c0dE424BAA97F97f86f6cF92\",\n \"80094\": \"0x3C612e132624f4Bd500eE1495F54565F0bcc9b59\",\n name: \"bex.balancerQueries\",\n },\n {\n \"80069\": \"0x1453b808C88AAa5e5965f8d86123921E96F045Aa\",\n \"80094\": \"0x71047aE39A7aA4f7d923542F459e50B974644Ef2\",\n name: \"bex.authorizer\",\n },\n {\n \"80069\": \"0x41675C099F32341bf84BFc5382aF534df5C7461a\",\n \"80094\": \"0x41675C099F32341bf84BFc5382aF534df5C7461a\",\n name: \"safe.safe\",\n },\n {\n \"80069\": \"0x4e1DCf7AD4e460CfD30791CCC4F9c8a4f820ec67\",\n \"80094\": \"0x4e1DCf7AD4e460CfD30791CCC4F9c8a4f820ec67\",\n name: \"safe.safeProxyFactory\",\n },\n {\n \"80069\": \"0x38869bf66a61cF6bDB996A6aE40D5853Fd43B526\",\n \"80094\": \"0x38869bf66a61cF6bDB996A6aE40D5853Fd43B526\",\n name: \"safe.multiSend\",\n },\n {\n \"80069\": \"0x9641d764fc13c8B624c04430C7356C1C7C8102e2\",\n \"80094\": \"0x9641d764fc13c8B624c04430C7356C1C7C8102e2\",\n name: \"safe.multiSendCallOnly\",\n },\n {\n \"80069\": \"0xfd0732Dc9E303f09fCEf3a7388Ad10A83459Ec99\",\n \"80094\": \"0xfd0732Dc9E303f09fCEf3a7388Ad10A83459Ec99\",\n name: \"safe.compatibilityFallbackHandler\",\n },\n {\n \"80069\": \"0xd53cd0aB83D845Ac265BE939c57F53AD838012c9\",\n \"80094\": \"0xd53cd0aB83D845Ac265BE939c57F53AD838012c9\",\n name: \"safe.signMessageLib\",\n },\n {\n \"80069\": \"0x3d4BA2E0884aa488718476ca2FB8Efc291A46199\",\n \"80094\": \"0x3d4BA2E0884aa488718476ca2FB8Efc291A46199\",\n name: \"safe.simulateTxAccessor\",\n },\n {\n \"80069\": \"0x9b35Af71d77eaf8d7e40252370304687390A1A52\",\n \"80094\": \"0x9b35Af71d77eaf8d7e40252370304687390A1A52\",\n name: \"safe.createCall\",\n },\n {\n \"80069\": \"0x4e59b44847b379578588920cA78FbF26c0B4956C\",\n \"80094\": \"0x4e59b44847b379578588920cA78FbF26c0B4956C\",\n name: \"other.create2\",\n },\n {\n \"80069\": \"0xcA11bde05977b3631167028862bE2a173976CA11\",\n \"80094\": \"0xcA11bde05977b3631167028862bE2a173976CA11\",\n name: \"other.multicall3\",\n },\n {\n \"80069\": \"0x000000000022D473030F116dDEE9F6B43aC78BA3\",\n \"80094\": \"0x000000000022D473030F116dDEE9F6B43aC78BA3\",\n name: \"other.permit2\",\n },\n {\n \"80069\": \"0xEe233a69A36Db7fC10E03e921D90DEC52Cdce6e2\",\n \"80094\": \"0xEe233a69A36Db7fC10E03e921D90DEC52Cdce6e2\",\n name: \"pol.rewardVaultHelper\",\n },\n {\n \"80069\": \"0x7f09Cf6958631513aF0400488F65c7B5c0313F52\",\n \"80094\": \"0xc8FD9a3fB3Dad4C22c9F8Cfa7cecC318A667A791\",\n name: \"pol.rewardAllocationFactory\",\n },\n {\n \"80069\": \"0xba1ba1ba1ba1ba1ba1ba1ba1ba1ba1ba1ba1ba1b\",\n \"80094\": \"0xba1ba1ba1ba1ba1ba1ba1ba1ba1ba1ba1ba1ba1b\",\n name: \"bex.balancerDelegatedOwnership\",\n },\n {\n \"80069\": \"0x0000000000000000000000000000000000000000\",\n \"80094\": \"0x1BDB1cf792419d2eaB5aBa8076B8f4257744fA58\",\n name: \"bex.aggregatorsRouter\",\n },\n {\n \"80069\": \"0x0000000000000000000000000000000000000000\",\n \"80094\": \"0x4AD3c5A427Af60F8Dd982023aE012233A66CA1f8\",\n name: \"bex.aggregatorsRouterExecutor\",\n },\n {\n \"80069\": null,\n \"80094\": \"0x24aC999FF132B32c5b3956973b6213B0d07eB2C7\",\n name: \"bex.haikuRouter\",\n },\n {\n \"80069\": null,\n \"80094\": \"0x69495273D6Dc572A830A4D6e00400a1e9d5B8f71\",\n name: \"bex.haikuAgentAddress\",\n },\n {\n \"80069\": \"0x0eFeC4379805fAFA7269Ec599a6921f388C8841a\",\n \"80094\": \"0xB5787B8f7b07a00229b617c4B7a616185857C147\",\n name: \"bex.recoverFundsContract\",\n },\n {\n \"80069\": \"0x5CA67e134c52B1d11E038A5a4eD8Ddcdb1238943\",\n \"80094\": \"0x5CA67e134c52B1d11E038A5a4eD8Ddcdb1238943\",\n name: \"honey.pythOracle\",\n },\n {\n \"80069\": \"0xE5Ad9BA751714ec8cdd554b5a9f12BFcA13980cB\",\n \"80094\": \"0xF5686e448BE103beA465105bEb9d284a34ae7e95\",\n name: \"honey.pythWrapper\",\n },\n {\n \"80069\": \"0x2880aB155794e7179c9eE2e38200202908C17B43\",\n \"80094\": \"0x2880aB155794e7179c9eE2e38200202908C17B43\",\n name: \"external.pyth\",\n },\n {\n \"80069\": null,\n \"80094\": \"0xC5FabF3a7E98a2ed89f5d5057Ab010634Ca7e71f\",\n name: \"bend.staging.morpho\",\n },\n {\n \"80069\": null,\n \"80094\": \"0x1d5376e532CcF25b740270624111D665830E5dB9\",\n name: \"bend.staging.adaptiveCurveIrm\",\n },\n {\n \"80069\": null,\n \"80094\": \"0x524061B659380a5e4576d76F0951303B20B5932f\",\n name: \"bend.staging.metaMorphoFactory\",\n },\n {\n \"80069\": null,\n \"80094\": \"0xFD6e68bC20be2a01Ec1Df687c83f927087D52811\",\n name: \"bend.staging.publicAllocator\",\n },\n {\n \"80069\": null,\n \"80094\": \"0x56811e1BFfF951B98c7940d3aCe0e549Ec4fDee8\",\n name: \"bend.staging.bundler3\",\n },\n {\n \"80069\": null,\n \"80094\": \"0x257a41E20BBfe90D750646C2e00bA700D55958C5\",\n name: \"bend.staging.generalAdapter1\",\n },\n {\n \"80094\": \"0x19DcFf4e8Ff0B554D8a1f22d289A449fd4FbddBa\",\n name: \"bend.staging.supportedVaults.0\",\n },\n {\n \"80094\": \"0xC0808A144CE2ea85bF84EBD1dDF5D59429f59dDE\",\n name: \"bend.staging.supportedVaults.1\",\n },\n {\n \"80069\": null,\n \"80094\": \"0xc914a663837eb21c5a650716e015659686597e55\",\n name: \"enso.walletV2Factory\",\n },\n {\n \"80069\": null,\n \"80094\": \"0x5dE09823D9143886896507107590d9859F3E390b\",\n name: \"enso.walletFlashloanAdapter\",\n },\n] as const;\n","import type { IHoneySwapState } from \"../hooks/honey/useHoneySwapState\";\nimport { formatNumber } from \"./formatNumber\";\n\n/**\n * Get the message shown in the transaction confirmation modal for honey swaps\n * @returns {string} The message\n */\nexport function getHoneySwapMessage({\n collaterals,\n actionType,\n toAmount,\n fromAmount,\n isBasketModeEnabled,\n}: Pick<\n IHoneySwapState,\n | \"collaterals\"\n | \"actionType\"\n | \"toAmount\"\n | \"fromAmount\"\n | \"isBasketModeEnabled\"\n>): string {\n if (collaterals.length > 0) {\n if (actionType === \"mint\") {\n const msg = [\"Minting\"];\n msg.push(formatNumber(Number(toAmount[0]), 5));\n msg.push(\"Honey from\");\n if (isBasketModeEnabled) {\n for (const idx in collaterals) {\n msg.push(formatNumber(Number(fromAmount[idx]), 5));\n msg.push(`${collaterals[idx].symbol}`);\n if (+idx < collaterals.length - 2) {\n msg[msg.length - 1] = msg[msg.length - 1].concat(\",\");\n } else if (+idx === collaterals.length - 1) {\n msg[msg.length - 1] = msg[msg.length - 1].concat(\".\");\n } else {\n msg.push(\"and\");\n }\n }\n } else {\n msg.push(formatNumber(Number(fromAmount[0]), 5));\n msg.push(`${collaterals[0].symbol}`);\n }\n return msg.join(\" \");\n }\n const msg = [\"Redeeming\"];\n if (isBasketModeEnabled) {\n for (const idx in collaterals) {\n msg.push(formatNumber(Number(toAmount[idx]), 5));\n msg.push(`${collaterals[idx].symbol}`);\n if (+idx < collaterals.length - 2) {\n msg[msg.length - 1] = msg[msg.length - 1].concat(\",\");\n } else if (+idx === collaterals.length - 1) {\n msg.push(\"for\");\n msg.push(formatNumber(Number(fromAmount[0]), 5));\n msg.push(\"Honey.\");\n } else {\n msg.push(\"and\");\n }\n }\n } else {\n msg.push(formatNumber(Number(toAmount[0]), 5));\n msg.push(`${collaterals[0].symbol}`);\n msg.push(\"for\");\n msg.push(formatNumber(Number(fromAmount[0]), 5));\n msg.push(\"Honey.\");\n }\n return msg.join(\" \");\n }\n return \"\";\n}\n","import { createPublicClient, fallback, http, type PublicClient } from \"viem\";\nimport { berachain, berachainBepolia } from \"viem/chains\";\n\nimport {\n ChainId,\n defaultChainId,\n getRpcUrls,\n} from \"@berachain/config/internal\";\n\n/**\n * This is a singleton to avoid creating a new client for each request.\n *\n * A single client manages batch requests when parallel requests are made on different instances.\n */\nconst _clients: Map<ChainId, PublicClient> = new Map();\n\nexport const getServerSidePublicClient = (\n args: { chainId?: ChainId } = {},\n): PublicClient => {\n const chainId: ChainId = args.chainId ?? defaultChainId;\n\n if (_clients.has(chainId)) {\n return _clients.get(chainId)!;\n }\n\n const rpcs = getRpcUrls(chainId);\n const fallbackTransports = [\n rpcs.privateRcpUrl,\n rpcs.jsonRpcUrl,\n rpcs.alchemyJsonRpcUrl,\n rpcs.publicJsonRpcUrl,\n ]\n .filter((i) => i)\n .map((url) => http(url));\n\n if (fallbackTransports.length === 0) {\n fallbackTransports.push(http());\n }\n const chain = chainId === ChainId.MAINNET ? berachain : berachainBepolia;\n const client = createPublicClient({\n chain,\n transport: fallback(fallbackTransports),\n });\n\n _clients.set(chainId, client);\n\n return client;\n};\n","import BigNumber from \"@berachain/utils/pkg/bignumber.js\";\n\nexport const isDifferenceExceedingThreshold = (\n initialAmount: string,\n newAmount: string,\n threshold: number,\n) => {\n const upperBound = new BigNumber(1 + threshold).times(initialAmount);\n const lowerBound = new BigNumber(1 - threshold).times(initialAmount);\n return (\n upperBound.isLessThan(newAmount) || lowerBound.isGreaterThan(newAmount)\n );\n};\n","export function isSubgraphStale({\n lastBlockTimestamp,\n blockTime,\n}: {\n lastBlockTimestamp: number | null | undefined;\n blockTime: number;\n}) {\n if (!lastBlockTimestamp) return true;\n return lastBlockTimestamp < Date.now() / 1000 - blockTime * 10;\n}\n","import { BeraError } from \"../errors/BeraError\";\nimport { InvalidArgumentError } from \"../errors/InvalidArgumentError\";\nimport { RequestError } from \"../errors/RequestError\";\nimport { beraFetchJson } from \"./beraFetch\";\n\nconst LAYERZERO_SCAN_MAINNET_URL = \"https://api-mainnet.layerzero-scan.com\";\n\nexport enum LayerZeroMessageStatus {\n INFLIGHT = \"INFLIGHT\",\n DELIVERED = \"DELIVERED\",\n FAILED = \"FAILED\",\n}\n\nexport type LayerZeroMessage = {\n srcUaAddress: string;\n dstUaAddress: string;\n srcChainId: number;\n dstChainId: number;\n dstTxHash?: string;\n dstTxError?: string;\n srcTxHash?: string;\n srcBlockHash?: string;\n srcBlockNumber?: string;\n srcUaNonce: number;\n status: LayerZeroMessageStatus;\n};\n\nexport type LayerZeroDeliveredMessage = LayerZeroMessage & {\n dstTxHash: string;\n};\n\ntype GetMessagesBySrcTxHashResponse = {\n messages: LayerZeroMessage[];\n};\n\nconst sleep = (ms: number) => new Promise((resolve) => setTimeout(resolve, ms));\n\nasync function getMessagesBySrcTxHash(\n srcTxHash: string,\n): Promise<GetMessagesBySrcTxHashResponse> {\n return beraFetchJson<GetMessagesBySrcTxHashResponse>({\n url: `${LAYERZERO_SCAN_MAINNET_URL}/tx/${srcTxHash}`,\n type: \"rest\",\n name: \"LayerZero Scan\",\n });\n}\n\nexport type WaitForMessageReceivedOptions = {\n pollInterval?: number;\n timeout?: number;\n};\n\n/**\n * Polls LayerZero scan API until the cross-chain message is delivered or fails.\n * HTTP errors are silently retried until timeout.\n *\n * @param srcTxHash - The source transaction hash to track\n * @param options - Configuration options\n * @param options.pollInterval - Polling interval in ms (default: 3000)\n * @param options.timeout - Timeout in ms (default: 600000 / 10 minutes)\n * @returns The delivered message with destination tx hash\n * @throws InvalidArgumentError if srcTxHash is missing\n * @throws BeraError if message fails, times out, or multiple messages found\n */\nexport async function waitForLayerZeroMessageReceived(\n srcTxHash: string,\n options: WaitForMessageReceivedOptions = {},\n): Promise<LayerZeroDeliveredMessage> {\n const { pollInterval = 3000, timeout = 600_000 } = options;\n\n if (!srcTxHash) {\n throw new InvalidArgumentError({\n property: \"srcTxHash\",\n value: srcTxHash,\n expected: \"string\",\n });\n }\n\n const startTime = Date.now();\n\n while (true) {\n // check timeout\n if (Date.now() - startTime > timeout) {\n throw new BeraError({\n message: `LayerZero message tracking timed out after ${timeout}ms`,\n reason: \"LAYERZERO_TIMEOUT\",\n level: \"warning\",\n });\n }\n\n try {\n const { messages } = await getMessagesBySrcTxHash(srcTxHash);\n const message = messages[0];\n\n if (messages.length > 1) {\n throw new BeraError({\n message: \"More than one LayerZero message found for transaction\",\n reason: \"LAYERZERO_MULTIPLE_MESSAGES\",\n });\n }\n\n if (message?.status === LayerZeroMessageStatus.FAILED) {\n throw new BeraError({\n message: `LayerZero message failed: ${message.dstTxError}`,\n reason: \"LAYERZERO_MESSAGE_FAILED\",\n });\n }\n\n if (message?.status === LayerZeroMessageStatus.DELIVERED) {\n return message as LayerZeroDeliveredMessage;\n }\n } catch (error) {\n // re-throw non-retryable errors (validation, timeout, failed message)\n // but allow RequestError to retry (network issues, temporary API errors)\n if (error instanceof BeraError && !(error instanceof RequestError)) {\n throw error;\n }\n }\n\n await sleep(pollInterval);\n }\n}\n","import type { TokenInfoFragmentFragment } from \"@berachain/graphql/bend/whisk\";\n\nimport type { TokenWithMetadata } from \"../types/dex\";\n\n/**\n * Parse a token from the Whisk API into a TokenWithMetadata object.\n *\n * @returns\n */\nexport function parseWhiskToken(token: TokenInfoFragmentFragment) {\n return {\n ...token,\n chainId: token.chain.id,\n } as const satisfies TokenWithMetadata;\n}\n","/**\n * Truncate a transaction or address hash and optionally format with uppercase letters and a lowercase 'x'.\n */\nexport const truncateHash = (\n address: `0x${string}` | string,\n startLength = 4,\n endLength = 4,\n formatUppercase = false,\n) => {\n if (!address) return \"\";\n\n const formattedAddress = formatUppercase\n ? address.toUpperCase().replace(/^0X/, \"0x\")\n : address;\n\n return `${formattedAddress.substring(\n 0,\n startLength,\n )}...${formattedAddress.substring(formattedAddress.length - endLength)}`;\n};\n","import { GqlValidatorBlockUptimeStatus } from \"@berachain/graphql/pol/api\";\n\n/**\n * Determines if a validator was the proposer for a specific block.\n * The proposer is responsible for creating and proposing new blocks to the network.\n *\n * @param status - The validator's block uptime status from the GraphQL API\n * @returns boolean\n */\nexport function isValidatorProposer(\n status: GqlValidatorBlockUptimeStatus | undefined,\n): boolean | undefined {\n if (!status) return undefined;\n return status === GqlValidatorBlockUptimeStatus.Proposed;\n}\n\n/**\n * Determines if a validator signed a specific block.\n * Block signers participate in consensus by validating and signing blocks.\n *\n * @param status - The validator's block uptime status from the GraphQL API\n * @returns boolean\n *\n */\nexport function isValidatorSigner(\n status: GqlValidatorBlockUptimeStatus | undefined,\n): boolean | undefined {\n if (!status) return undefined;\n return status === GqlValidatorBlockUptimeStatus.Signed;\n}\n"],"mappings":"yeAAO,IAAMA,GAAyBC,GAAuB,CAC3D,GAAIA,IAAe,IAAK,OAAOA,EAE/B,IAAIC,EAAgBD,EAAW,QAAQ,MAAO,EAAE,EAAE,WAAW,WAAY,EAAE,EAG3E,OAAIC,EAAc,WAAW,GAAG,IAC9BA,EAAgB,IAAIA,CAAa,IAG5BA,CACT,ECRO,SAASC,GACdC,EACAC,EACQ,CACR,IAAMC,EAAmBD,EACrB,CAAE,sBAAuB,EAAG,sBAAuB,CAAE,EACrD,CAAC,EACCE,EAAY,IAAI,KAAK,aAAa,QAAS,CAC/C,MAAO,WACP,SAAU,MACV,GAAGD,CACL,CAAC,EACD,GAAI,CACF,IAAME,EAAYC,GAChB,OAAOA,GAAU,SACbC,EAAYD,GAChB,OAAOA,GAAU,SAEnB,GAAI,CAACD,EAASJ,CAAK,GAAK,CAACM,EAASN,CAAK,EACrC,OAAOG,EAAU,OAAO,CAAC,EAG3B,IAAII,EAEJ,OAAID,EAASN,CAAK,GAChBO,EAAM,OAAO,WAAWP,CAAK,EAEzB,OAAO,MAAMO,CAAG,IAClBA,EAAM,KAGRA,EAAMP,EAEF,OAAO,MAAMO,CAAG,IAClBA,EAAM,IAGHJ,EAAU,OAAOI,CAAG,CAC7B,OAASC,EAAG,CACV,eAAQ,IAAIA,CAAC,EACNL,EAAU,OAAO,CAAC,CAC3B,CACF,CC3CA,OAAuB,kBAAAM,MAAsB,6BCEtC,IAAMC,EAAY,CACvB,CACE,MAAS,6CACT,MAAS,6CACT,KAAM,aACR,EACA,CACE,MAAS,6CACT,KAAM,gBACR,EACA,CACE,MAAS,6CACT,KAAM,gBACR,EACA,CACE,MAAS,6CACT,KAAM,eACR,EACA,CACE,MAAS,6CACT,KAAM,gBACR,EACA,CACE,MAAS,6CACT,KAAM,gBACR,EACA,CACE,MAAS,6CACT,KAAM,eACR,EACA,CACE,MAAS,GACT,MAAS,6CACT,KAAM,aACR,EACA,CACE,MAAS,GACT,MAAS,6CACT,KAAM,uBACR,EACA,CACE,MAAS,GACT,MAAS,6CACT,KAAM,eACR,EACA,CACE,MAAS,GACT,MAAS,6CACT,KAAM,sBACR,EACA,CACE,MAAS,GACT,MAAS,6CACT,KAAM,4BACR,EACA,CACE,MAAS,GACT,MAAS,6CACT,KAAM,yBACR,EACA,CACE,MAAS,GACT,MAAS,6CACT,KAAM,sBACR,EACA,CACE,MAAS,GACT,MAAS,6CACT,KAAM,qCACR,EACA,CACE,MAAS,GACT,MAAS,6CACT,KAAM,iBACR,EACA,CACE,MAAS,GACT,MAAS,6CACT,KAAM,2BACR,EACA,CACE,MAAS,6CACT,MAAS,6CACT,KAAM,6BACR,EACA,CACE,MAAS,6CACT,MAAS,6CACT,KAAM,8BACR,EACA,CACE,MAAS,6CACT,MAAS,6CACT,KAAM,sBACR,EACA,CACE,MAAS,6CACT,MAAS,6CACT,KAAM,mBACR,EACA,CACE,MAAS,6CACT,MAAS,6CACT,KAAM,cACR,EACA,CACE,MAAS,6CACT,MAAS,6CACT,KAAM,2BACR,EACA,CACE,MAAS,6CACT,MAAS,6CACT,KAAM,iBACR,EACA,CACE,MAAS,6CACT,MAAS,6CACT,KAAM,wBACR,EACA,CACE,MAAS,6CACT,MAAS,6CACT,KAAM,eACR,EACA,CACE,MAAS,6CACT,MAAS,6CACT,KAAM,kBACR,EACA,CACE,MAAS,6CACT,MAAS,6CACT,KAAM,gBACR,EACA,CACE,MAAS,6CACT,MAAS,6CACT,KAAM,cACR,EACA,CACE,MAAS,6CACT,MAAS,6CACT,KAAM,0CACR,EACA,CACE,MAAS,6CACT,MAAS,6CACT,KAAM,uCACR,EACA,CACE,MAAS,6CACT,MAAS,6CACT,KAAM,8BACR,EACA,CACE,MAAS,6CACT,MAAS,6CACT,KAAM,YACR,EACA,CACE,MAAS,6CACT,MAAS,6CACT,KAAM,cACR,EACA,CACE,MAAS,6CACT,MAAS,6CACT,KAAM,qBACR,EACA,CACE,MAAS,6CACT,MAAS,6CACT,KAAM,2BACR,EACA,CACE,MAAS,6CACT,MAAS,6CACT,KAAM,cACR,EACA,CACE,MAAS,GACT,MAAS,6CACT,KAAM,aACR,EACA,CACE,MAAS,GACT,MAAS,6CACT,KAAM,aACR,EACA,CACE,MAAS,GACT,MAAS,6CACT,KAAM,aACR,EACA,CACE,MAAS,6CACT,MAAS,6CACT,KAAM,WACR,EACA,CACE,MAAS,6CACT,MAAS,6CACT,KAAM,2BACR,EACA,CACE,MAAS,6CACT,MAAS,6CACT,KAAM,qBACR,EACA,CACE,MAAS,6CACT,MAAS,6CACT,KAAM,wBACR,EACA,CACE,MAAS,6CACT,MAAS,6CACT,KAAM,4BACR,EACA,CACE,MAAS,6CACT,MAAS,6CACT,KAAM,uBACR,EACA,CACE,MAAS,6CACT,MAAS,6CACT,KAAM,yBACR,EACA,CACE,MAAS,6CACT,MAAS,6CACT,KAAM,8BACR,EACA,CACE,MAAS,6CACT,MAAS,6CACT,KAAM,qBACR,EACA,CACE,MAAS,6CACT,MAAS,6CACT,KAAM,yBACR,EACA,CACE,MAAS,6CACT,MAAS,6CACT,KAAM,oCACR,EACA,CACE,MAAS,6CACT,MAAS,6CACT,KAAM,qBACR,EACA,CACE,MAAS,6CACT,MAAS,6CACT,KAAM,gBACR,EACA,CACE,MAAS,6CACT,MAAS,6CACT,KAAM,WACR,EACA,CACE,MAAS,6CACT,MAAS,6CACT,KAAM,uBACR,EACA,CACE,MAAS,6CACT,MAAS,6CACT,KAAM,gBACR,EACA,CACE,MAAS,6CACT,MAAS,6CACT,KAAM,wBACR,EACA,CACE,MAAS,6CACT,MAAS,6CACT,KAAM,mCACR,EACA,CACE,MAAS,6CACT,MAAS,6CACT,KAAM,qBACR,EACA,CACE,MAAS,6CACT,MAAS,6CACT,KAAM,yBACR,EACA,CACE,MAAS,6CACT,MAAS,6CACT,KAAM,iBACR,EACA,CACE,MAAS,6CACT,MAAS,6CACT,KAAM,eACR,EACA,CACE,MAAS,6CACT,MAAS,6CACT,KAAM,kBACR,EACA,CACE,MAAS,6CACT,MAAS,6CACT,KAAM,eACR,EACA,CACE,MAAS,6CACT,MAAS,6CACT,KAAM,uBACR,EACA,CACE,MAAS,6CACT,MAAS,6CACT,KAAM,6BACR,EACA,CACE,MAAS,6CACT,MAAS,6CACT,KAAM,gCACR,EACA,CACE,MAAS,6CACT,MAAS,6CACT,KAAM,uBACR,EACA,C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","names":["formatInputTokenValue","inputValue","filteredValue","formatUsd","input","hideDecimals","decimalsSettings","formatter","isNumber","value","isString","num","e","defaultChainId","contracts","getContractName","address","chainId","defaultChainId","contracts","contract","getHoneySwapMessage","collaterals","actionType","toAmount","fromAmount","isBasketModeEnabled","msg","formatNumber","idx","createPublicClient","fallback","http","berachain","berachainBepolia","ChainId","defaultChainId","getRpcUrls","_clients","getServerSidePublicClient","args","chainId","rpcs","fallbackTransports","i","url","chain","client","isDifferenceExceedingThreshold","initialAmount","newAmount","threshold","upperBound","bignumber_js_default","lowerBound","isSubgraphStale","lastBlockTimestamp","blockTime","LAYERZERO_SCAN_MAINNET_URL","LayerZeroMessageStatus","sleep","ms","resolve","getMessagesBySrcTxHash","srcTxHash","beraFetchJson","waitForLayerZeroMessageReceived","options","pollInterval","timeout","InvalidArgumentError","startTime","BeraError","messages","message","error","RequestError","parseWhiskToken","token","truncateHash","address","startLength","endLength","formatUppercase","formattedAddress","GqlValidatorBlockUptimeStatus","isValidatorProposer","status","isValidatorSigner"]}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@berachain/berajs",
|
|
3
|
-
"version": "0.2.8-beta.
|
|
3
|
+
"version": "0.2.8-beta.7",
|
|
4
4
|
"sideEffects": false,
|
|
5
5
|
"files": [
|
|
6
6
|
"dist",
|
|
@@ -13,7 +13,7 @@
|
|
|
13
13
|
"@apollo/client": "4.1.6",
|
|
14
14
|
"@berachain-foundation/berancer-sdk": "1.1.4",
|
|
15
15
|
"@berachain/abis": "0.1.0",
|
|
16
|
-
"@berachain/config": "0.1.
|
|
16
|
+
"@berachain/config": "0.1.5",
|
|
17
17
|
"@berachain/graphql": "0.4.9",
|
|
18
18
|
"@ensofinance/sdk": "2.0.12",
|
|
19
19
|
"@pythnetwork/hermes-client": "2.0.0",
|
|
@@ -29,8 +29,8 @@
|
|
|
29
29
|
"typescript": "5.5.4",
|
|
30
30
|
"viem": "2.45.0",
|
|
31
31
|
"vitest": "3.2.4",
|
|
32
|
-
"@berachain/
|
|
33
|
-
"@berachain/
|
|
32
|
+
"@berachain/utils": "0.1.0",
|
|
33
|
+
"@berachain/wagmi": "0.4.2"
|
|
34
34
|
},
|
|
35
35
|
"exports": {
|
|
36
36
|
"./*": {
|
|
@@ -51,7 +51,7 @@
|
|
|
51
51
|
"react": "^19.1",
|
|
52
52
|
"react-dom": "^19.1",
|
|
53
53
|
"viem": "^2.41.2",
|
|
54
|
-
"@berachain/wagmi": "0.4.
|
|
54
|
+
"@berachain/wagmi": "0.4.2"
|
|
55
55
|
},
|
|
56
56
|
"scripts": {
|
|
57
57
|
"build": "tsup",
|
|
@@ -16,15 +16,22 @@ import { BeraApolloClient } from "./BeraApolloClient";
|
|
|
16
16
|
* @see {@link https://stellate.co/docs/graphql-metrics/tracking/clients}
|
|
17
17
|
*/
|
|
18
18
|
function applyStellateClientName(url: BeraConfigHttpLink): BeraConfigHttpLink {
|
|
19
|
-
if (!currentDapp) {
|
|
20
|
-
return url;
|
|
21
|
-
}
|
|
22
19
|
const headers = typeof url === "string" ? undefined : url.headers;
|
|
20
|
+
const isDapp = !!currentDapp;
|
|
21
|
+
const isTest = process.env.VERCEL_ENV === "test";
|
|
22
|
+
|
|
23
23
|
return {
|
|
24
24
|
uri: getUriFromLink(url),
|
|
25
25
|
headers: {
|
|
26
26
|
...headers,
|
|
27
|
-
"x-graphql-client-name": `berachain.${
|
|
27
|
+
"x-graphql-client-name": `berachain.${
|
|
28
|
+
isDapp
|
|
29
|
+
? "dapps"
|
|
30
|
+
: isTest
|
|
31
|
+
? "test"
|
|
32
|
+
: // this tracks usage of the berajs package in other packages
|
|
33
|
+
"berajs"
|
|
34
|
+
}`,
|
|
28
35
|
"x-graphql-client-version": `${process.env.VERCEL_TARGET_ENV}.${process.env.VERCEL_GIT_COMMIT_SHA}`,
|
|
29
36
|
},
|
|
30
37
|
};
|
|
@@ -213,7 +213,7 @@ export abstract class BaseAggregator {
|
|
|
213
213
|
|
|
214
214
|
protected async fetch(url: string | URL, options?: RequestInit) {
|
|
215
215
|
try {
|
|
216
|
-
|
|
216
|
+
return beraFetch(
|
|
217
217
|
{ url, name: this.name, type: this.type },
|
|
218
218
|
{
|
|
219
219
|
method: "GET",
|
|
@@ -223,8 +223,6 @@ export abstract class BaseAggregator {
|
|
|
223
223
|
...options,
|
|
224
224
|
},
|
|
225
225
|
);
|
|
226
|
-
|
|
227
|
-
return response;
|
|
228
226
|
} catch (err) {
|
|
229
227
|
const error = initBeraError({ cause: err });
|
|
230
228
|
if (
|
|
@@ -245,6 +245,8 @@ export async function getBendMultiplyBundle({
|
|
|
245
245
|
},
|
|
246
246
|
];
|
|
247
247
|
|
|
248
|
+
const hasWalletSupply = rawSupplyCollateralAmount !== "0";
|
|
249
|
+
|
|
248
250
|
const flashloanActions = [
|
|
249
251
|
{
|
|
250
252
|
protocol: "bend",
|
|
@@ -252,8 +254,13 @@ export async function getBendMultiplyBundle({
|
|
|
252
254
|
args: {
|
|
253
255
|
flashloanToken: loanAddress,
|
|
254
256
|
flashloanAmount: rawBorrowAmount,
|
|
255
|
-
tokenIn
|
|
256
|
-
|
|
257
|
+
// Only include tokenIn/amountIn when the user is supplying collateral
|
|
258
|
+
// from their wallet. For loop-only (multiply from existing position
|
|
259
|
+
// collateral), no wallet transfer is needed.
|
|
260
|
+
...(hasWalletSupply && {
|
|
261
|
+
tokenIn: collateralAddress,
|
|
262
|
+
amountIn: rawSupplyCollateralAmount,
|
|
263
|
+
}),
|
|
257
264
|
tokenOut: loanAddress,
|
|
258
265
|
callback: [
|
|
259
266
|
// [0] Swap the flashloaned loan tokens into collateral
|
package/src/actions/enso/util.ts
CHANGED
|
@@ -37,10 +37,9 @@ function toBigIntOrUndefined(
|
|
|
37
37
|
|
|
38
38
|
/**
|
|
39
39
|
* Get the zap transactions for a given bundle.
|
|
40
|
-
* @param args - The arguments for the zap transactions.
|
|
41
40
|
* @returns The zap transaction & approval transaction if required.
|
|
42
41
|
*/
|
|
43
|
-
export
|
|
42
|
+
export async function getTransactionsFromBundle({
|
|
44
43
|
fromAddress,
|
|
45
44
|
amountIn,
|
|
46
45
|
tokenIn,
|
|
@@ -48,7 +47,7 @@ export const getTransactionsFromBundle = async ({
|
|
|
48
47
|
ensoClient,
|
|
49
48
|
bundle,
|
|
50
49
|
publicClient,
|
|
51
|
-
}: GetZapTransactionsArgs): Promise<GetZapTransactions>
|
|
50
|
+
}: GetZapTransactionsArgs): Promise<GetZapTransactions> {
|
|
52
51
|
const transactions: GetZapTransactions = [];
|
|
53
52
|
/**
|
|
54
53
|
* If the token is not the native token, we need to check if approval is required.
|
|
@@ -92,15 +91,14 @@ export const getTransactionsFromBundle = async ({
|
|
|
92
91
|
gasLimit: BigInt(bundle.gas),
|
|
93
92
|
});
|
|
94
93
|
return transactions;
|
|
95
|
-
}
|
|
94
|
+
}
|
|
96
95
|
|
|
97
96
|
/**
|
|
98
97
|
* Get ensowallet transactions for a bundle with approval handling.
|
|
99
98
|
* Checks allowance on the ensowallet spender and prepends approval when needed.
|
|
100
|
-
* @param args - The arguments for transaction generation.
|
|
101
99
|
* @returns The bundle transaction and optional approval transaction.
|
|
102
100
|
*/
|
|
103
|
-
export
|
|
101
|
+
export async function getEnsoWalletTransactionsWithApproval({
|
|
104
102
|
fromAddress,
|
|
105
103
|
amountIn,
|
|
106
104
|
tokenIn,
|
|
@@ -109,7 +107,7 @@ export const getEnsoWalletTransactionsWithApproval = async ({
|
|
|
109
107
|
}: GetEnsoWalletTransactionsWithApprovalArgs): Promise<{
|
|
110
108
|
transactions: GetZapTransactions;
|
|
111
109
|
approval: AllowanceQueryItem | null;
|
|
112
|
-
}>
|
|
110
|
+
}> {
|
|
113
111
|
const transactions: GetZapTransactions = [];
|
|
114
112
|
const spender = getAddress(bundle.tx.to);
|
|
115
113
|
let approval: AllowanceQueryItem | null = null;
|
|
@@ -163,7 +161,7 @@ export const getEnsoWalletTransactionsWithApproval = async ({
|
|
|
163
161
|
gasLimit: bundle.gas ? BigInt(bundle.gas) : undefined,
|
|
164
162
|
});
|
|
165
163
|
return { transactions, approval };
|
|
166
|
-
}
|
|
164
|
+
}
|
|
167
165
|
|
|
168
166
|
/**
|
|
169
167
|
* Compute the fraction of swap output retained after accounting for slippage.
|
|
@@ -10,43 +10,74 @@ type CheckProposalFieldResult =
|
|
|
10
10
|
| CheckProposalFieldResultMinimal[]
|
|
11
11
|
| Record<string, CheckProposalFieldResultMinimal>;
|
|
12
12
|
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
baseUrl?: string;
|
|
39
|
-
components?: readonly (AbiParameter | readonly AbiParameter[])[];
|
|
40
|
-
}): CheckProposalFieldResult;
|
|
13
|
+
/**
|
|
14
|
+
* Internal implementation arg covering the full union of all valid fieldOrType
|
|
15
|
+
* values. The public overloads below provide the narrowed return types.
|
|
16
|
+
*/
|
|
17
|
+
interface CheckProposalFieldImplArg {
|
|
18
|
+
fieldOrType:
|
|
19
|
+
| "address"
|
|
20
|
+
| "hex"
|
|
21
|
+
| "abi"
|
|
22
|
+
| "string"
|
|
23
|
+
| "bool"
|
|
24
|
+
| `uint${string}`
|
|
25
|
+
| `int${string}`
|
|
26
|
+
| "action"
|
|
27
|
+
| "title"
|
|
28
|
+
| "forumLink"
|
|
29
|
+
| "description"
|
|
30
|
+
| "logoURI"
|
|
31
|
+
| "url"
|
|
32
|
+
| "tuple[]"
|
|
33
|
+
| "tuple";
|
|
34
|
+
value: unknown;
|
|
35
|
+
required?: boolean;
|
|
36
|
+
baseUrl?: string;
|
|
37
|
+
components?: readonly (AbiParameter | readonly AbiParameter[])[];
|
|
41
38
|
}
|
|
42
|
-
|
|
43
|
-
|
|
39
|
+
|
|
40
|
+
/**
|
|
41
|
+
* Validates a single proposal field or ABI-typed value.
|
|
42
|
+
* Returns `null` if valid, or a `ProposalErrorCodes` value describing the problem.
|
|
43
|
+
*/
|
|
44
|
+
export function checkProposalField(arg: {
|
|
45
|
+
fieldOrType:
|
|
46
|
+
| "address"
|
|
47
|
+
| "hex"
|
|
48
|
+
| "abi"
|
|
49
|
+
| "string"
|
|
50
|
+
| "bool"
|
|
51
|
+
| `uint${string}`
|
|
52
|
+
| `int${string}`
|
|
53
|
+
| "action"
|
|
54
|
+
| "title"
|
|
55
|
+
| "forumLink"
|
|
56
|
+
| "description"
|
|
57
|
+
| "logoURI"
|
|
58
|
+
| "url";
|
|
59
|
+
value: unknown;
|
|
60
|
+
required?: boolean;
|
|
61
|
+
baseUrl?: string;
|
|
62
|
+
components?: readonly (AbiParameter | readonly AbiParameter[])[];
|
|
63
|
+
}): CheckProposalFieldResultMinimal;
|
|
64
|
+
/**
|
|
65
|
+
* For tuple/tuple[] types, may return nested error structures.
|
|
66
|
+
*/
|
|
67
|
+
export function checkProposalField(arg: {
|
|
68
|
+
fieldOrType: "tuple[]" | "tuple";
|
|
69
|
+
value: unknown;
|
|
70
|
+
required?: boolean;
|
|
71
|
+
baseUrl?: string;
|
|
72
|
+
components?: readonly (AbiParameter | readonly AbiParameter[])[];
|
|
73
|
+
}): CheckProposalFieldResult;
|
|
74
|
+
export function checkProposalField({
|
|
44
75
|
fieldOrType,
|
|
45
76
|
value,
|
|
46
77
|
required = true,
|
|
47
78
|
baseUrl,
|
|
48
79
|
components,
|
|
49
|
-
})
|
|
80
|
+
}: CheckProposalFieldImplArg): CheckProposalFieldResult {
|
|
50
81
|
const notRequiredAbiTypes = ["bool", "string"];
|
|
51
82
|
|
|
52
83
|
if (
|
|
@@ -89,19 +120,19 @@ export const checkProposalField: CheckProposalField = ({
|
|
|
89
120
|
return null;
|
|
90
121
|
|
|
91
122
|
case "title":
|
|
92
|
-
if (value.length === 0) {
|
|
123
|
+
if (typeof value !== "string" || value.length === 0) {
|
|
93
124
|
return ProposalErrorCodes.REQUIRED;
|
|
94
125
|
}
|
|
95
126
|
return null;
|
|
96
127
|
|
|
97
128
|
case "description":
|
|
98
|
-
if (value.length === 0) {
|
|
129
|
+
if (typeof value !== "string" || value.length === 0) {
|
|
99
130
|
return ProposalErrorCodes.REQUIRED;
|
|
100
131
|
}
|
|
101
132
|
return null;
|
|
102
133
|
|
|
103
|
-
case "forumLink":
|
|
104
|
-
if (value.length === 0) {
|
|
134
|
+
case "forumLink": {
|
|
135
|
+
if (typeof value !== "string" || value.length === 0) {
|
|
105
136
|
return ProposalErrorCodes.REQUIRED;
|
|
106
137
|
}
|
|
107
138
|
|
|
@@ -109,8 +140,7 @@ export const checkProposalField: CheckProposalField = ({
|
|
|
109
140
|
return ProposalErrorCodes.INVALID_ADDRESS;
|
|
110
141
|
}
|
|
111
142
|
|
|
112
|
-
|
|
113
|
-
const base = new URL(baseUrl as string);
|
|
143
|
+
const base = new URL(baseUrl!);
|
|
114
144
|
|
|
115
145
|
// base.pathname = "/c/";
|
|
116
146
|
|
|
@@ -119,21 +149,25 @@ export const checkProposalField: CheckProposalField = ({
|
|
|
119
149
|
}
|
|
120
150
|
|
|
121
151
|
return null;
|
|
152
|
+
}
|
|
122
153
|
|
|
123
154
|
case "address":
|
|
124
|
-
if (!isAddress(value, { strict: true })) {
|
|
155
|
+
if (typeof value !== "string" || !isAddress(value, { strict: true })) {
|
|
125
156
|
return ProposalErrorCodes.INVALID_ADDRESS;
|
|
126
157
|
}
|
|
127
158
|
|
|
128
159
|
return null;
|
|
129
160
|
|
|
130
161
|
case "hex":
|
|
131
|
-
if (!isHex(value, { strict: true })) {
|
|
162
|
+
if (typeof value !== "string" || !isHex(value, { strict: true })) {
|
|
132
163
|
return ProposalErrorCodes.INVALID_ADDRESS;
|
|
133
164
|
}
|
|
134
165
|
return null;
|
|
135
166
|
|
|
136
167
|
case "abi":
|
|
168
|
+
if (typeof value !== "string") {
|
|
169
|
+
return ProposalErrorCodes.INVALID_ABI;
|
|
170
|
+
}
|
|
137
171
|
try {
|
|
138
172
|
JSON.parse(value);
|
|
139
173
|
} catch {
|
|
@@ -142,20 +176,29 @@ export const checkProposalField: CheckProposalField = ({
|
|
|
142
176
|
return null;
|
|
143
177
|
|
|
144
178
|
case "action":
|
|
145
|
-
if (!isAddress(value, { strict: true })) {
|
|
179
|
+
if (typeof value !== "string" || !isAddress(value, { strict: true })) {
|
|
146
180
|
return ProposalErrorCodes.INVALID_ADDRESS;
|
|
147
181
|
}
|
|
148
182
|
return null;
|
|
149
183
|
|
|
150
184
|
case "tuple":
|
|
151
185
|
if (typeof value === "object" && Array.isArray(components)) {
|
|
152
|
-
const errors: Record<string,
|
|
186
|
+
const errors: Record<string, CheckProposalFieldResult> = {};
|
|
153
187
|
|
|
154
188
|
for (const component of components) {
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
components
|
|
189
|
+
// Intersect with components? to access the field safely;
|
|
190
|
+
// it only exists on tuple AbiParameter variants
|
|
191
|
+
const abiParam = component as AbiParameter & {
|
|
192
|
+
components?: readonly AbiParameter[];
|
|
193
|
+
};
|
|
194
|
+
const name = abiParam.name!;
|
|
195
|
+
// fieldOrType is cast to "tuple" | "tuple[]" to satisfy overload 2
|
|
196
|
+
// (returns CheckProposalFieldResult). The actual runtime type dispatches
|
|
197
|
+
// to the correct branch.
|
|
198
|
+
errors[name] = checkProposalField({
|
|
199
|
+
fieldOrType: abiParam.type as "tuple" | "tuple[]",
|
|
200
|
+
value: (value as Record<string, unknown>)[name],
|
|
201
|
+
components: abiParam.components,
|
|
159
202
|
});
|
|
160
203
|
}
|
|
161
204
|
|
|
@@ -163,7 +206,7 @@ export const checkProposalField: CheckProposalField = ({
|
|
|
163
206
|
return null;
|
|
164
207
|
}
|
|
165
208
|
|
|
166
|
-
return errors
|
|
209
|
+
return errors as Record<string, CheckProposalFieldResultMinimal>;
|
|
167
210
|
}
|
|
168
211
|
|
|
169
212
|
return null;
|
|
@@ -182,30 +225,41 @@ export const checkProposalField: CheckProposalField = ({
|
|
|
182
225
|
return null;
|
|
183
226
|
}
|
|
184
227
|
|
|
185
|
-
|
|
228
|
+
// errors contains tuple results (null | Record<string, ...>);
|
|
229
|
+
// cast is intentional — the type definition predates nested support
|
|
230
|
+
return errors as unknown as CheckProposalFieldResultMinimal[];
|
|
186
231
|
}
|
|
187
232
|
|
|
188
233
|
return null;
|
|
234
|
+
|
|
189
235
|
case "logoURI": {
|
|
190
236
|
if (value === undefined || value === "") {
|
|
191
237
|
return null;
|
|
192
238
|
}
|
|
193
|
-
if (
|
|
194
|
-
|
|
239
|
+
if (
|
|
240
|
+
typeof value !== "string" ||
|
|
241
|
+
!URL.canParse(value) ||
|
|
242
|
+
new URL(value).protocol !== "https:"
|
|
243
|
+
) {
|
|
244
|
+
return ProposalErrorCodes.MUST_BE_HTTPS_OR_IPFS;
|
|
195
245
|
}
|
|
196
|
-
return
|
|
246
|
+
return null;
|
|
197
247
|
}
|
|
198
248
|
case "url": {
|
|
199
249
|
if (value === undefined || value === "") {
|
|
200
250
|
return null;
|
|
201
251
|
}
|
|
202
|
-
if (
|
|
203
|
-
|
|
252
|
+
if (
|
|
253
|
+
typeof value !== "string" ||
|
|
254
|
+
!URL.canParse(value) ||
|
|
255
|
+
new URL(value).protocol !== "https:"
|
|
256
|
+
) {
|
|
257
|
+
return ProposalErrorCodes.MUST_BE_HTTPS;
|
|
204
258
|
}
|
|
205
|
-
return
|
|
259
|
+
return null;
|
|
206
260
|
}
|
|
207
261
|
default:
|
|
208
262
|
console.error(`Invalid field or type: ${fieldOrType}`);
|
|
209
263
|
return null;
|
|
210
264
|
}
|
|
211
|
-
}
|
|
265
|
+
}
|