@berachain/berajs 0.2.8-beta.8 → 0.2.8-beta.9
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/RequestError-BRIiJgHk.d.ts +144 -0
- package/dist/RequestError-DSUzJ1Iy.d.cts +144 -0
- 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 -913
- package/dist/actions/exports.cjs.map +1 -1
- package/dist/actions/exports.d.cts +11 -5
- package/dist/actions/exports.d.ts +11 -5
- package/dist/actions/exports.mjs +1 -913
- package/dist/actions/exports.mjs.map +1 -1
- package/dist/chunk-45HIEVNI.cjs +4 -0
- package/dist/chunk-45HIEVNI.cjs.map +1 -0
- package/dist/chunk-47ILYVHC.mjs +2 -0
- package/dist/{chunk-SGZP4O6R.mjs.map → chunk-47ILYVHC.mjs.map} +1 -1
- package/dist/chunk-575OK77P.mjs +2 -0
- package/dist/{chunk-GLWPRM33.mjs.map → chunk-575OK77P.mjs.map} +1 -1
- package/dist/chunk-5NVZG5N6.mjs +2 -0
- package/dist/{chunk-4GFN4LEP.mjs.map → chunk-5NVZG5N6.mjs.map} +1 -1
- package/dist/chunk-6DIA6PXV.cjs +2 -0
- package/dist/chunk-6DIA6PXV.cjs.map +1 -0
- package/dist/chunk-6JJIZCVY.cjs +2 -0
- package/dist/chunk-6JJIZCVY.cjs.map +1 -0
- package/dist/chunk-7F72ZH4Q.mjs +2 -0
- package/dist/{chunk-VA5L5FDG.mjs.map → chunk-7F72ZH4Q.mjs.map} +1 -1
- package/dist/chunk-AUA42YIG.mjs +4 -0
- package/dist/chunk-AUA42YIG.mjs.map +1 -0
- package/dist/chunk-BC2WX6O6.cjs +2 -0
- package/dist/chunk-BC2WX6O6.cjs.map +1 -0
- package/dist/chunk-CJOZC5Z2.cjs +2 -0
- package/dist/chunk-CJOZC5Z2.cjs.map +1 -0
- 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-GXV2JA36.mjs +2 -0
- package/dist/{chunk-7QKRRIHI.mjs.map → chunk-GXV2JA36.mjs.map} +1 -1
- package/dist/chunk-ISYNEDET.mjs +2 -0
- package/dist/{chunk-VA3BQ34H.mjs.map → chunk-ISYNEDET.mjs.map} +1 -1
- package/dist/chunk-JDDRTHFG.mjs +2 -0
- package/dist/chunk-JDDRTHFG.mjs.map +1 -0
- package/dist/chunk-JDZGYU5T.mjs +2 -0
- package/dist/{chunk-I3FTWD6I.mjs.map → chunk-JDZGYU5T.mjs.map} +1 -1
- package/dist/chunk-LVOXBZMA.cjs +2 -0
- package/dist/chunk-LVOXBZMA.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-PRLVZIKD.mjs +2 -0
- package/dist/chunk-PRLVZIKD.mjs.map +1 -0
- package/dist/chunk-Q2SNRLW3.cjs +2 -0
- package/dist/chunk-Q2SNRLW3.cjs.map +1 -0
- package/dist/chunk-REWME3FY.cjs +2 -0
- package/dist/chunk-REWME3FY.cjs.map +1 -0
- package/dist/chunk-RJN36GBU.mjs +2 -0
- package/dist/chunk-RJN36GBU.mjs.map +1 -0
- package/dist/chunk-RWOICHRW.cjs +2 -0
- package/dist/chunk-RWOICHRW.cjs.map +1 -0
- package/dist/chunk-S4CDSVLK.cjs +2 -0
- package/dist/chunk-S4CDSVLK.cjs.map +1 -0
- package/dist/chunk-SFEULGSX.cjs +2 -0
- package/dist/chunk-SFEULGSX.cjs.map +1 -0
- package/dist/chunk-WBTS6KFG.mjs +2 -0
- package/dist/{chunk-ZBTRKBSI.mjs.map → chunk-WBTS6KFG.mjs.map} +1 -1
- 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/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.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.d.cts +3 -89
- package/dist/errors/exports.d.ts +3 -89
- package/dist/errors/exports.mjs +1 -38
- package/dist/hooks/exports.cjs +3 -8332
- package/dist/hooks/exports.cjs.map +1 -1
- package/dist/hooks/exports.d.cts +13 -27
- package/dist/hooks/exports.d.ts +13 -27
- package/dist/hooks/exports.mjs +3 -8332
- package/dist/hooks/exports.mjs.map +1 -1
- package/dist/utils/exports.cjs +1 -786
- package/dist/utils/exports.cjs.map +1 -1
- package/dist/utils/exports.d.cts +10 -2
- package/dist/utils/exports.d.ts +10 -2
- package/dist/utils/exports.mjs +1 -786
- package/dist/utils/exports.mjs.map +1 -1
- package/package.json +14 -3
- package/src/actions/clients/BeraApolloClient.ts +9 -0
- package/src/actions/clients/getApolloClient.ts +12 -2
- package/src/actions/dex/aggregators/base.ts +1 -1
- package/src/actions/exports.ts +1 -1
- package/src/actions/honey/getChartData.ts +5 -5
- package/src/actions/honey/getHoney24hVolume.ts +30 -0
- package/src/actions/pol/getEarnedStakedBeraVault.ts +12 -2
- package/src/actions/pol/getStakingDailyAssets.ts +7 -1
- package/src/data/contracts.ts +5 -0
- package/src/errors/RequestError.ts +2 -1
- package/src/hooks/exports.ts +1 -1
- package/src/hooks/honey/useHoney24hVolume.ts +16 -0
- package/src/utils/beraFetch.ts +70 -15
- package/dist/RequestError-A8XJ6QR9.d.cts +0 -57
- package/dist/RequestError-Dk97z8rm.d.ts +0 -57
- package/dist/chunk-2R73G2PO.mjs +0 -4698
- package/dist/chunk-2R73G2PO.mjs.map +0 -1
- package/dist/chunk-3M47ZRXT.mjs +0 -417
- package/dist/chunk-3M47ZRXT.mjs.map +0 -1
- package/dist/chunk-4GFN4LEP.mjs +0 -97
- package/dist/chunk-5N7QQS55.cjs +0 -130
- package/dist/chunk-5N7QQS55.cjs.map +0 -1
- package/dist/chunk-5NMATIH4.mjs +0 -130
- package/dist/chunk-5NMATIH4.mjs.map +0 -1
- package/dist/chunk-7QKRRIHI.mjs +0 -1844
- 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-BDHINMWQ.cjs +0 -417
- package/dist/chunk-BDHINMWQ.cjs.map +0 -1
- package/dist/chunk-BEHP54S3.cjs +0 -24
- package/dist/chunk-BEHP54S3.cjs.map +0 -1
- package/dist/chunk-EGDXV2PT.cjs +0 -36
- package/dist/chunk-EGDXV2PT.cjs.map +0 -1
- package/dist/chunk-EWBKSMPG.cjs +0 -13
- package/dist/chunk-EWBKSMPG.cjs.map +0 -1
- package/dist/chunk-F6ZW7ZDD.cjs +0 -403
- package/dist/chunk-F6ZW7ZDD.cjs.map +0 -1
- package/dist/chunk-FTXTRUYT.cjs +0 -170
- package/dist/chunk-FTXTRUYT.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-I3FTWD6I.mjs +0 -170
- package/dist/chunk-JA4DHMTG.mjs +0 -15
- package/dist/chunk-KL6YZ5VR.mjs +0 -63
- package/dist/chunk-MXWPP6MS.cjs +0 -572
- package/dist/chunk-MXWPP6MS.cjs.map +0 -1
- package/dist/chunk-SGZP4O6R.mjs +0 -135
- package/dist/chunk-TDW5SPXR.cjs +0 -244
- package/dist/chunk-TDW5SPXR.cjs.map +0 -1
- package/dist/chunk-TGK3IXDN.cjs +0 -169
- package/dist/chunk-TGK3IXDN.cjs.map +0 -1
- package/dist/chunk-TJEW6YCJ.cjs +0 -97
- package/dist/chunk-TJEW6YCJ.cjs.map +0 -1
- package/dist/chunk-VA3BQ34H.mjs +0 -403
- package/dist/chunk-VA5L5FDG.mjs +0 -36
- package/dist/chunk-XSGCRLSD.cjs +0 -1844
- package/dist/chunk-XSGCRLSD.cjs.map +0 -1
- package/dist/chunk-XV3GG3HC.cjs +0 -135
- package/dist/chunk-XV3GG3HC.cjs.map +0 -1
- package/dist/chunk-Y5B224UX.cjs +0 -4698
- package/dist/chunk-Y5B224UX.cjs.map +0 -1
- package/dist/chunk-ZBTRKBSI.mjs +0 -169
- package/dist/chunk-ZCEFC2TK.mjs +0 -244
- package/src/actions/honey/getHoneyGlobalData.ts +0 -21
- package/src/hooks/honey/useHoneyGlobalData.ts +0 -23
|
@@ -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\": \"0xAf10B532cCC25B26a8e28913D5C4056a77e7a178\",\n \"80094\": \"0xc41bbD6695AB6bdc6D04701b15f4CE5EbA2e2500\",\n name: \"pol.lstStakerVaultFactory\",\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":"ugBAAO,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,2BACR,EACA,CACE,MAAS,6CACT,MAAS,6CACT,KAAM,gCACR,EACA,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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.9",
|
|
4
4
|
"sideEffects": false,
|
|
5
5
|
"files": [
|
|
6
6
|
"dist",
|
|
@@ -13,8 +13,8 @@
|
|
|
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.
|
|
17
|
-
"@berachain/graphql": "0.4.
|
|
16
|
+
"@berachain/config": "0.1.8",
|
|
17
|
+
"@berachain/graphql": "0.4.10-beta.2",
|
|
18
18
|
"@ensofinance/sdk": "2.0.12",
|
|
19
19
|
"@pythnetwork/hermes-client": "2.0.0",
|
|
20
20
|
"@wagmi/core": "2.22.1",
|
|
@@ -53,6 +53,17 @@
|
|
|
53
53
|
"viem": "^2.41.2",
|
|
54
54
|
"@berachain/wagmi": "0.4.2"
|
|
55
55
|
},
|
|
56
|
+
"peerDependenciesMeta": {
|
|
57
|
+
"react": {
|
|
58
|
+
"optional": true
|
|
59
|
+
},
|
|
60
|
+
"react-dom": {
|
|
61
|
+
"optional": true
|
|
62
|
+
},
|
|
63
|
+
"viem": {
|
|
64
|
+
"optional": false
|
|
65
|
+
}
|
|
66
|
+
},
|
|
56
67
|
"scripts": {
|
|
57
68
|
"build": "tsup",
|
|
58
69
|
"prebuild": "pnpm contracts:update",
|
|
@@ -24,16 +24,22 @@ export class BeraApolloClient extends ApolloClient {
|
|
|
24
24
|
*/
|
|
25
25
|
protected url: string;
|
|
26
26
|
|
|
27
|
+
protected serviceName: string;
|
|
27
28
|
constructor(
|
|
28
29
|
options: ApolloClient.Options & {
|
|
29
30
|
/**
|
|
30
31
|
* The URL of the endpoint. Used for error reporting only.
|
|
31
32
|
*/
|
|
32
33
|
url: string;
|
|
34
|
+
/**
|
|
35
|
+
* The name of the graphql service. Used for error reporting only.
|
|
36
|
+
*/
|
|
37
|
+
name: string;
|
|
33
38
|
},
|
|
34
39
|
) {
|
|
35
40
|
super(options);
|
|
36
41
|
this.url = options.url;
|
|
42
|
+
this.serviceName = options.name;
|
|
37
43
|
}
|
|
38
44
|
|
|
39
45
|
async query<
|
|
@@ -47,13 +53,16 @@ export class BeraApolloClient extends ApolloClient {
|
|
|
47
53
|
data: TData;
|
|
48
54
|
}> {
|
|
49
55
|
const queryName = getQueryName(options.query);
|
|
56
|
+
|
|
50
57
|
const endpoint = {
|
|
51
58
|
url: this.url,
|
|
52
59
|
type: "graphql",
|
|
60
|
+
name: this.serviceName,
|
|
53
61
|
} as const;
|
|
54
62
|
|
|
55
63
|
const tags = {
|
|
56
64
|
"operation.type": "query",
|
|
65
|
+
"operation.source.name": endpoint.name,
|
|
57
66
|
"operation.source.url": endpoint.url,
|
|
58
67
|
"operation.source.type": endpoint.type,
|
|
59
68
|
"operation.source.queryName": queryName,
|
|
@@ -3,7 +3,7 @@ import { HttpLink } from "@apollo/client/link/http";
|
|
|
3
3
|
|
|
4
4
|
import type { HttpLink as BeraConfigHttpLink } from "@berachain/config";
|
|
5
5
|
import { getUriFromLink } from "@berachain/config";
|
|
6
|
-
import { currentDapp } from "@berachain/config/internal";
|
|
6
|
+
import { currentDapp, goldskyBaseUrl } from "@berachain/config/internal";
|
|
7
7
|
|
|
8
8
|
import apiResults from "@berachain/graphql/dex/api";
|
|
9
9
|
|
|
@@ -20,8 +20,12 @@ function applyStellateClientName(url: BeraConfigHttpLink): BeraConfigHttpLink {
|
|
|
20
20
|
const isDapp = !!currentDapp;
|
|
21
21
|
const isTest = process.env.VERCEL_ENV === "test";
|
|
22
22
|
|
|
23
|
+
const uri = getUriFromLink(url);
|
|
24
|
+
const name = typeof url === "string" ? "unknown" : url.name;
|
|
25
|
+
|
|
23
26
|
return {
|
|
24
|
-
uri
|
|
27
|
+
uri,
|
|
28
|
+
name,
|
|
25
29
|
headers: {
|
|
26
30
|
...headers,
|
|
27
31
|
"x-graphql-client-name": `berachain.${
|
|
@@ -51,9 +55,15 @@ function getClient(
|
|
|
51
55
|
) {
|
|
52
56
|
const url = getUriFromLink(endpoint);
|
|
53
57
|
const headers = typeof endpoint === "string" ? undefined : endpoint.headers;
|
|
58
|
+
let name = typeof endpoint === "string" ? undefined : endpoint.name;
|
|
59
|
+
|
|
60
|
+
if (!name && url.includes(goldskyBaseUrl)) {
|
|
61
|
+
name = url.replace(goldskyBaseUrl, "").replace("/gn", "");
|
|
62
|
+
}
|
|
54
63
|
|
|
55
64
|
return new BeraApolloClient({
|
|
56
65
|
url,
|
|
66
|
+
name: name ?? "unknown",
|
|
57
67
|
link: new HttpLink({
|
|
58
68
|
uri: url,
|
|
59
69
|
headers,
|
package/src/actions/exports.ts
CHANGED
|
@@ -37,9 +37,9 @@ export * from "./governance/parseProposalBody";
|
|
|
37
37
|
export * from "./honey/getChartData";
|
|
38
38
|
export * from "./honey/getCollateralWeights";
|
|
39
39
|
export * from "./honey/getGlobalCapLimit";
|
|
40
|
+
export * from "./honey/getHoney24hVolume";
|
|
40
41
|
export * from "./honey/getHoneyCollaterals";
|
|
41
42
|
export * from "./honey/getHoneyFees";
|
|
42
|
-
export * from "./honey/getHoneyGlobalData";
|
|
43
43
|
export * from "./honey/getHoneyPausedState";
|
|
44
44
|
export * from "./honey/getHoneyPreview";
|
|
45
45
|
export * from "./honey/getHoneyPythPriceOracle";
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import {
|
|
2
2
|
Aggregation_Interval,
|
|
3
|
-
|
|
4
|
-
type
|
|
5
|
-
type
|
|
3
|
+
GetSnapshots,
|
|
4
|
+
type GetSnapshotsQuery,
|
|
5
|
+
type GetSnapshotsQueryVariables,
|
|
6
6
|
} from "@berachain/graphql/honey";
|
|
7
7
|
|
|
8
8
|
import { getApolloClient } from "../clients/getApolloClient";
|
|
@@ -14,9 +14,9 @@ export async function getChartData({
|
|
|
14
14
|
}) {
|
|
15
15
|
const client = getApolloClient("honey.subgraph", args);
|
|
16
16
|
|
|
17
|
-
const res = await client.query<
|
|
17
|
+
const res = await client.query<GetSnapshotsQuery, GetSnapshotsQueryVariables>(
|
|
18
18
|
{
|
|
19
|
-
query:
|
|
19
|
+
query: GetSnapshots,
|
|
20
20
|
variables: {
|
|
21
21
|
interval: Aggregation_Interval.Day,
|
|
22
22
|
first: days,
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import {
|
|
2
|
+
Aggregation_Interval,
|
|
3
|
+
GetSnapshots,
|
|
4
|
+
type GetSnapshotsQuery,
|
|
5
|
+
type GetSnapshotsQueryVariables,
|
|
6
|
+
} from "@berachain/graphql/honey";
|
|
7
|
+
import BigNumber from "@berachain/utils/pkg/bignumber.js";
|
|
8
|
+
|
|
9
|
+
import { getApolloClient } from "../clients/getApolloClient";
|
|
10
|
+
|
|
11
|
+
export async function getHoney24hVolume({
|
|
12
|
+
...args
|
|
13
|
+
}: BeraJS.BaseFunctionArgs = {}) {
|
|
14
|
+
const client = getApolloClient("honey.subgraph", args);
|
|
15
|
+
const result = await client.query<
|
|
16
|
+
GetSnapshotsQuery,
|
|
17
|
+
GetSnapshotsQueryVariables
|
|
18
|
+
>({
|
|
19
|
+
query: GetSnapshots,
|
|
20
|
+
variables: {
|
|
21
|
+
interval: Aggregation_Interval.Hour,
|
|
22
|
+
first: 24,
|
|
23
|
+
},
|
|
24
|
+
});
|
|
25
|
+
|
|
26
|
+
return result.data?.honeySnapshots.reduce(
|
|
27
|
+
(acc, curr) => new BigNumber(curr.totalVolume).plus(acc),
|
|
28
|
+
new BigNumber(0),
|
|
29
|
+
);
|
|
30
|
+
}
|
|
@@ -1,5 +1,7 @@
|
|
|
1
1
|
import type { Address } from "viem";
|
|
2
2
|
|
|
3
|
+
import { getUriFromLink } from "@berachain/config";
|
|
4
|
+
|
|
3
5
|
import { beraFetchJson } from "../../utils/beraFetch";
|
|
4
6
|
import { parseBaseArgs } from "../../utils/parseBaseArgs";
|
|
5
7
|
|
|
@@ -26,6 +28,14 @@ export async function getEarnedStakedBeraVault({
|
|
|
26
28
|
}: BeraJS.BaseFunctionArgs &
|
|
27
29
|
GetEarnedStakedBeraVaultArgs): Promise<StakingHistoryData> {
|
|
28
30
|
const { config } = parseBaseArgs(args);
|
|
29
|
-
|
|
30
|
-
|
|
31
|
+
|
|
32
|
+
const url = `${getUriFromLink(config.staking)}/vaults/${address}/earnings/${account}`;
|
|
33
|
+
return beraFetchJson<StakingHistoryData>({
|
|
34
|
+
url,
|
|
35
|
+
name:
|
|
36
|
+
typeof config.staking === "string"
|
|
37
|
+
? "backend-railway"
|
|
38
|
+
: config.staking.name,
|
|
39
|
+
type: "rest",
|
|
40
|
+
});
|
|
31
41
|
}
|
|
@@ -1,5 +1,7 @@
|
|
|
1
1
|
import type { Address } from "viem";
|
|
2
2
|
|
|
3
|
+
import { getUriFromLink } from "@berachain/config";
|
|
4
|
+
|
|
3
5
|
import { beraFetchJson } from "../../utils/beraFetch";
|
|
4
6
|
import { parseBaseArgs } from "../../utils/parseBaseArgs";
|
|
5
7
|
|
|
@@ -16,9 +18,13 @@ export async function getStakingDailyAssets({
|
|
|
16
18
|
);
|
|
17
19
|
|
|
18
20
|
const { config } = parseBaseArgs({});
|
|
19
|
-
const url = `${config.staking}/vaults/${address}/total-assets-by-day?start=${startDayDate.toISOString().split("T")[0]}`;
|
|
21
|
+
const url = `${getUriFromLink(config.staking)}/vaults/${address}/total-assets-by-day?start=${startDayDate.toISOString().split("T")[0]}`;
|
|
20
22
|
return beraFetchJson<{ _timestamp: number; total_assets: string }[]>({
|
|
21
23
|
url,
|
|
24
|
+
name:
|
|
25
|
+
typeof config.staking === "string"
|
|
26
|
+
? "backend-railway"
|
|
27
|
+
: config.staking.name,
|
|
22
28
|
type: "rest",
|
|
23
29
|
});
|
|
24
30
|
}
|
package/src/data/contracts.ts
CHANGED
|
@@ -327,6 +327,11 @@ export const contracts = [
|
|
|
327
327
|
"80094": "0xc8FD9a3fB3Dad4C22c9F8Cfa7cecC318A667A791",
|
|
328
328
|
name: "pol.rewardAllocationFactory",
|
|
329
329
|
},
|
|
330
|
+
{
|
|
331
|
+
"80069": "0xAf10B532cCC25B26a8e28913D5C4056a77e7a178",
|
|
332
|
+
"80094": "0xc41bbD6695AB6bdc6D04701b15f4CE5EbA2e2500",
|
|
333
|
+
name: "pol.lstStakerVaultFactory",
|
|
334
|
+
},
|
|
330
335
|
{
|
|
331
336
|
"80069": "0xba1ba1ba1ba1ba1ba1ba1ba1ba1ba1ba1ba1ba1b",
|
|
332
337
|
"80094": "0xba1ba1ba1ba1ba1ba1ba1ba1ba1ba1ba1ba1ba1b",
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import type { ErrorLike } from "@apollo/client";
|
|
2
2
|
|
|
3
|
+
import { getUriFromLink } from "@berachain/config";
|
|
3
4
|
import { mainnet } from "@berachain/config/mainnet";
|
|
4
5
|
|
|
5
6
|
import { BeraError, type IBeraErrorArgs } from "./BeraError";
|
|
@@ -148,7 +149,7 @@ export class RequestError extends BeraError {
|
|
|
148
149
|
|
|
149
150
|
if (
|
|
150
151
|
this.queryRichfulDomains.some((domain) =>
|
|
151
|
-
this.endpoint.url.includes(domain),
|
|
152
|
+
this.endpoint.url.includes(getUriFromLink(domain)),
|
|
152
153
|
)
|
|
153
154
|
) {
|
|
154
155
|
// remove query params if it's an aggregator url
|
package/src/hooks/exports.ts
CHANGED
|
@@ -53,10 +53,10 @@ export * from "./governance/useQuorum";
|
|
|
53
53
|
export * from "./honey/useCappedGlobally";
|
|
54
54
|
export * from "./honey/useCappedRelatively";
|
|
55
55
|
export * from "./honey/useCollateralWeights";
|
|
56
|
+
export * from "./honey/useHoney24hVolume";
|
|
56
57
|
export * from "./honey/useHoneyAlerts";
|
|
57
58
|
export * from "./honey/useHoneyBalances";
|
|
58
59
|
export * from "./honey/useHoneyChartData";
|
|
59
|
-
export * from "./honey/useHoneyGlobalData";
|
|
60
60
|
export * from "./honey/useHoneySwapState";
|
|
61
61
|
export * from "./honey/useHoneyVaultsBalance";
|
|
62
62
|
export * from "./honey/useIsBadCollateralAsset";
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import useSWR from "swr";
|
|
2
|
+
|
|
3
|
+
import { getHoney24hVolume } from "../../actions/honey/getHoney24hVolume";
|
|
4
|
+
import { POLLING } from "../../enum/polling";
|
|
5
|
+
|
|
6
|
+
export function useHoney24hVolume() {
|
|
7
|
+
const response = useSWR(["useHoney24hVolume"], () => getHoney24hVolume(), {
|
|
8
|
+
refreshInterval: POLLING.SLOW,
|
|
9
|
+
});
|
|
10
|
+
|
|
11
|
+
return {
|
|
12
|
+
...response,
|
|
13
|
+
|
|
14
|
+
refresh: () => response.mutate(),
|
|
15
|
+
};
|
|
16
|
+
}
|
package/src/utils/beraFetch.ts
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { BeraTracing, type SpanContext } from "../errors/BeraTracing";
|
|
1
2
|
import { RequestError } from "../errors/RequestError";
|
|
2
3
|
import { getErrorResponse } from "./getErrorResponse";
|
|
3
4
|
|
|
@@ -6,27 +7,81 @@ type RequestOptions = RequestInit;
|
|
|
6
7
|
export async function beraFetch(
|
|
7
8
|
endpoint: ConstructorParameters<typeof RequestError>[0]["endpoint"],
|
|
8
9
|
options?: RequestOptions,
|
|
10
|
+
spanContext?: SpanContext & {
|
|
11
|
+
/**
|
|
12
|
+
* If true, keep all query params in the span URL.
|
|
13
|
+
* If an array of strings, keep only the query params in the array.
|
|
14
|
+
* If false, remove all query params from the span URL.
|
|
15
|
+
* If not provided, remove all query params from the span URL.
|
|
16
|
+
*/
|
|
17
|
+
keepQueryParams?: boolean | string[];
|
|
18
|
+
},
|
|
9
19
|
) {
|
|
10
20
|
try {
|
|
11
|
-
|
|
21
|
+
let spanUrl = (
|
|
12
22
|
typeof endpoint === "string" || endpoint instanceof URL
|
|
13
|
-
? endpoint
|
|
14
|
-
: endpoint.url
|
|
23
|
+
? endpoint.toString()
|
|
24
|
+
: endpoint.url.toString()
|
|
25
|
+
).replace(/0x[a-fA-F0-9]{40}/g, ":address");
|
|
26
|
+
|
|
27
|
+
if (spanContext?.keepQueryParams !== true && URL.canParse(spanUrl)) {
|
|
28
|
+
const queryParams = new URL(spanUrl).searchParams;
|
|
29
|
+
if (Array.isArray(spanContext?.keepQueryParams)) {
|
|
30
|
+
const searchParams = new URLSearchParams();
|
|
31
|
+
|
|
32
|
+
for (const param of spanContext.keepQueryParams) {
|
|
33
|
+
searchParams.set(param, queryParams.get(param) ?? "");
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
const newUrl = new URL(spanUrl);
|
|
37
|
+
newUrl.search = searchParams.toString();
|
|
38
|
+
spanUrl = newUrl.toString();
|
|
39
|
+
} else {
|
|
40
|
+
const newUrl = new URL(spanUrl);
|
|
41
|
+
newUrl.search = "";
|
|
42
|
+
spanUrl = newUrl.toString();
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
return await BeraTracing.startSpan(
|
|
15
47
|
{
|
|
16
|
-
|
|
48
|
+
op: "beraFetch",
|
|
49
|
+
name: "beraFetch",
|
|
50
|
+
attributes:
|
|
51
|
+
typeof endpoint === "string" || endpoint instanceof URL
|
|
52
|
+
? {
|
|
53
|
+
"operation.source.url": spanUrl,
|
|
54
|
+
...spanContext?.attributes,
|
|
55
|
+
}
|
|
56
|
+
: ({
|
|
57
|
+
"operation.source.url": spanUrl,
|
|
58
|
+
"operation.source.type": endpoint.type,
|
|
59
|
+
"operation.source.name": endpoint.name,
|
|
60
|
+
...spanContext?.attributes,
|
|
61
|
+
} satisfies SpanContext["attributes"]),
|
|
62
|
+
},
|
|
63
|
+
async () => {
|
|
64
|
+
const response = await fetch(
|
|
65
|
+
typeof endpoint === "string" || endpoint instanceof URL
|
|
66
|
+
? endpoint
|
|
67
|
+
: endpoint.url,
|
|
68
|
+
{
|
|
69
|
+
...options,
|
|
70
|
+
},
|
|
71
|
+
);
|
|
72
|
+
if (!response.ok) {
|
|
73
|
+
const error = await getErrorResponse(response);
|
|
74
|
+
throw new RequestError({
|
|
75
|
+
cause: error,
|
|
76
|
+
// @to-do import getErrorResponse logic in this function
|
|
77
|
+
// when it's removed from other places
|
|
78
|
+
response: response,
|
|
79
|
+
endpoint,
|
|
80
|
+
});
|
|
81
|
+
}
|
|
82
|
+
return response;
|
|
17
83
|
},
|
|
18
84
|
);
|
|
19
|
-
if (!response.ok) {
|
|
20
|
-
const error = await getErrorResponse(response);
|
|
21
|
-
throw new RequestError({
|
|
22
|
-
cause: error,
|
|
23
|
-
// @to-do import getErrorResponse logic in this function
|
|
24
|
-
// when it's removed from other places
|
|
25
|
-
response: response,
|
|
26
|
-
endpoint,
|
|
27
|
-
});
|
|
28
|
-
}
|
|
29
|
-
return response;
|
|
30
85
|
} catch (error) {
|
|
31
86
|
if (error instanceof RequestError) {
|
|
32
87
|
throw error;
|