@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.
Files changed (174) hide show
  1. package/dist/RequestError-BRIiJgHk.d.ts +144 -0
  2. package/dist/RequestError-DSUzJ1Iy.d.cts +144 -0
  3. package/dist/abi/exports.cjs +1 -4452
  4. package/dist/abi/exports.cjs.map +1 -1
  5. package/dist/abi/exports.mjs +1 -4452
  6. package/dist/abi/exports.mjs.map +1 -1
  7. package/dist/actions/exports.cjs +1 -913
  8. package/dist/actions/exports.cjs.map +1 -1
  9. package/dist/actions/exports.d.cts +11 -5
  10. package/dist/actions/exports.d.ts +11 -5
  11. package/dist/actions/exports.mjs +1 -913
  12. package/dist/actions/exports.mjs.map +1 -1
  13. package/dist/chunk-45HIEVNI.cjs +4 -0
  14. package/dist/chunk-45HIEVNI.cjs.map +1 -0
  15. package/dist/chunk-47ILYVHC.mjs +2 -0
  16. package/dist/{chunk-SGZP4O6R.mjs.map → chunk-47ILYVHC.mjs.map} +1 -1
  17. package/dist/chunk-575OK77P.mjs +2 -0
  18. package/dist/{chunk-GLWPRM33.mjs.map → chunk-575OK77P.mjs.map} +1 -1
  19. package/dist/chunk-5NVZG5N6.mjs +2 -0
  20. package/dist/{chunk-4GFN4LEP.mjs.map → chunk-5NVZG5N6.mjs.map} +1 -1
  21. package/dist/chunk-6DIA6PXV.cjs +2 -0
  22. package/dist/chunk-6DIA6PXV.cjs.map +1 -0
  23. package/dist/chunk-6JJIZCVY.cjs +2 -0
  24. package/dist/chunk-6JJIZCVY.cjs.map +1 -0
  25. package/dist/chunk-7F72ZH4Q.mjs +2 -0
  26. package/dist/{chunk-VA5L5FDG.mjs.map → chunk-7F72ZH4Q.mjs.map} +1 -1
  27. package/dist/chunk-AUA42YIG.mjs +4 -0
  28. package/dist/chunk-AUA42YIG.mjs.map +1 -0
  29. package/dist/chunk-BC2WX6O6.cjs +2 -0
  30. package/dist/chunk-BC2WX6O6.cjs.map +1 -0
  31. package/dist/chunk-CJOZC5Z2.cjs +2 -0
  32. package/dist/chunk-CJOZC5Z2.cjs.map +1 -0
  33. package/dist/chunk-D6L7LTA2.cjs +2 -0
  34. package/dist/chunk-D6L7LTA2.cjs.map +1 -0
  35. package/dist/chunk-DDEQFR3M.cjs +2 -0
  36. package/dist/chunk-DDEQFR3M.cjs.map +1 -0
  37. package/dist/chunk-GXV2JA36.mjs +2 -0
  38. package/dist/{chunk-7QKRRIHI.mjs.map → chunk-GXV2JA36.mjs.map} +1 -1
  39. package/dist/chunk-ISYNEDET.mjs +2 -0
  40. package/dist/{chunk-VA3BQ34H.mjs.map → chunk-ISYNEDET.mjs.map} +1 -1
  41. package/dist/chunk-JDDRTHFG.mjs +2 -0
  42. package/dist/chunk-JDDRTHFG.mjs.map +1 -0
  43. package/dist/chunk-JDZGYU5T.mjs +2 -0
  44. package/dist/{chunk-I3FTWD6I.mjs.map → chunk-JDZGYU5T.mjs.map} +1 -1
  45. package/dist/chunk-LVOXBZMA.cjs +2 -0
  46. package/dist/chunk-LVOXBZMA.cjs.map +1 -0
  47. package/dist/chunk-MK5NS5B5.mjs +2 -0
  48. package/dist/{chunk-7TFV6UKF.mjs.map → chunk-MK5NS5B5.mjs.map} +1 -1
  49. package/dist/chunk-NAXAZJJY.mjs +2 -0
  50. package/dist/{chunk-ZCEFC2TK.mjs.map → chunk-NAXAZJJY.mjs.map} +1 -1
  51. package/dist/chunk-NLVWRMGD.mjs +2 -0
  52. package/dist/{chunk-GWSTVITN.mjs.map → chunk-NLVWRMGD.mjs.map} +1 -1
  53. package/dist/chunk-OGBD5YOG.mjs +2 -0
  54. package/dist/{chunk-JA4DHMTG.mjs.map → chunk-OGBD5YOG.mjs.map} +1 -1
  55. package/dist/chunk-OGJMSGB2.mjs +2 -0
  56. package/dist/{chunk-KL6YZ5VR.mjs.map → chunk-OGJMSGB2.mjs.map} +1 -1
  57. package/dist/chunk-OIYXOKTT.cjs +2 -0
  58. package/dist/chunk-OIYXOKTT.cjs.map +1 -0
  59. package/dist/chunk-OUD27MU7.cjs +2 -0
  60. package/dist/chunk-OUD27MU7.cjs.map +1 -0
  61. package/dist/chunk-PRLVZIKD.mjs +2 -0
  62. package/dist/chunk-PRLVZIKD.mjs.map +1 -0
  63. package/dist/chunk-Q2SNRLW3.cjs +2 -0
  64. package/dist/chunk-Q2SNRLW3.cjs.map +1 -0
  65. package/dist/chunk-REWME3FY.cjs +2 -0
  66. package/dist/chunk-REWME3FY.cjs.map +1 -0
  67. package/dist/chunk-RJN36GBU.mjs +2 -0
  68. package/dist/chunk-RJN36GBU.mjs.map +1 -0
  69. package/dist/chunk-RWOICHRW.cjs +2 -0
  70. package/dist/chunk-RWOICHRW.cjs.map +1 -0
  71. package/dist/chunk-S4CDSVLK.cjs +2 -0
  72. package/dist/chunk-S4CDSVLK.cjs.map +1 -0
  73. package/dist/chunk-SFEULGSX.cjs +2 -0
  74. package/dist/chunk-SFEULGSX.cjs.map +1 -0
  75. package/dist/chunk-WBTS6KFG.mjs +2 -0
  76. package/dist/{chunk-ZBTRKBSI.mjs.map → chunk-WBTS6KFG.mjs.map} +1 -1
  77. package/dist/chunk-WRFDB3QJ.cjs +2 -0
  78. package/dist/chunk-WRFDB3QJ.cjs.map +1 -0
  79. package/dist/chunk-XNJLSA6P.cjs +2 -0
  80. package/dist/chunk-XNJLSA6P.cjs.map +1 -0
  81. package/dist/contexts/exports.cjs +1 -82
  82. package/dist/contexts/exports.cjs.map +1 -1
  83. package/dist/contexts/exports.mjs +1 -82
  84. package/dist/contexts/exports.mjs.map +1 -1
  85. package/dist/enum/exports.cjs +1 -58
  86. package/dist/enum/exports.cjs.map +1 -1
  87. package/dist/enum/exports.mjs +1 -58
  88. package/dist/enum/exports.mjs.map +1 -1
  89. package/dist/errors/exports.cjs +1 -38
  90. package/dist/errors/exports.cjs.map +1 -1
  91. package/dist/errors/exports.d.cts +3 -89
  92. package/dist/errors/exports.d.ts +3 -89
  93. package/dist/errors/exports.mjs +1 -38
  94. package/dist/hooks/exports.cjs +3 -8332
  95. package/dist/hooks/exports.cjs.map +1 -1
  96. package/dist/hooks/exports.d.cts +13 -27
  97. package/dist/hooks/exports.d.ts +13 -27
  98. package/dist/hooks/exports.mjs +3 -8332
  99. package/dist/hooks/exports.mjs.map +1 -1
  100. package/dist/utils/exports.cjs +1 -786
  101. package/dist/utils/exports.cjs.map +1 -1
  102. package/dist/utils/exports.d.cts +10 -2
  103. package/dist/utils/exports.d.ts +10 -2
  104. package/dist/utils/exports.mjs +1 -786
  105. package/dist/utils/exports.mjs.map +1 -1
  106. package/package.json +14 -3
  107. package/src/actions/clients/BeraApolloClient.ts +9 -0
  108. package/src/actions/clients/getApolloClient.ts +12 -2
  109. package/src/actions/dex/aggregators/base.ts +1 -1
  110. package/src/actions/exports.ts +1 -1
  111. package/src/actions/honey/getChartData.ts +5 -5
  112. package/src/actions/honey/getHoney24hVolume.ts +30 -0
  113. package/src/actions/pol/getEarnedStakedBeraVault.ts +12 -2
  114. package/src/actions/pol/getStakingDailyAssets.ts +7 -1
  115. package/src/data/contracts.ts +5 -0
  116. package/src/errors/RequestError.ts +2 -1
  117. package/src/hooks/exports.ts +1 -1
  118. package/src/hooks/honey/useHoney24hVolume.ts +16 -0
  119. package/src/utils/beraFetch.ts +70 -15
  120. package/dist/RequestError-A8XJ6QR9.d.cts +0 -57
  121. package/dist/RequestError-Dk97z8rm.d.ts +0 -57
  122. package/dist/chunk-2R73G2PO.mjs +0 -4698
  123. package/dist/chunk-2R73G2PO.mjs.map +0 -1
  124. package/dist/chunk-3M47ZRXT.mjs +0 -417
  125. package/dist/chunk-3M47ZRXT.mjs.map +0 -1
  126. package/dist/chunk-4GFN4LEP.mjs +0 -97
  127. package/dist/chunk-5N7QQS55.cjs +0 -130
  128. package/dist/chunk-5N7QQS55.cjs.map +0 -1
  129. package/dist/chunk-5NMATIH4.mjs +0 -130
  130. package/dist/chunk-5NMATIH4.mjs.map +0 -1
  131. package/dist/chunk-7QKRRIHI.mjs +0 -1844
  132. package/dist/chunk-7TFV6UKF.mjs +0 -24
  133. package/dist/chunk-A4FPM7U3.cjs +0 -63
  134. package/dist/chunk-A4FPM7U3.cjs.map +0 -1
  135. package/dist/chunk-BDHINMWQ.cjs +0 -417
  136. package/dist/chunk-BDHINMWQ.cjs.map +0 -1
  137. package/dist/chunk-BEHP54S3.cjs +0 -24
  138. package/dist/chunk-BEHP54S3.cjs.map +0 -1
  139. package/dist/chunk-EGDXV2PT.cjs +0 -36
  140. package/dist/chunk-EGDXV2PT.cjs.map +0 -1
  141. package/dist/chunk-EWBKSMPG.cjs +0 -13
  142. package/dist/chunk-EWBKSMPG.cjs.map +0 -1
  143. package/dist/chunk-F6ZW7ZDD.cjs +0 -403
  144. package/dist/chunk-F6ZW7ZDD.cjs.map +0 -1
  145. package/dist/chunk-FTXTRUYT.cjs +0 -170
  146. package/dist/chunk-FTXTRUYT.cjs.map +0 -1
  147. package/dist/chunk-GLWPRM33.mjs +0 -13
  148. package/dist/chunk-GWSTVITN.mjs +0 -572
  149. package/dist/chunk-H3Z37RYU.cjs +0 -15
  150. package/dist/chunk-H3Z37RYU.cjs.map +0 -1
  151. package/dist/chunk-I3FTWD6I.mjs +0 -170
  152. package/dist/chunk-JA4DHMTG.mjs +0 -15
  153. package/dist/chunk-KL6YZ5VR.mjs +0 -63
  154. package/dist/chunk-MXWPP6MS.cjs +0 -572
  155. package/dist/chunk-MXWPP6MS.cjs.map +0 -1
  156. package/dist/chunk-SGZP4O6R.mjs +0 -135
  157. package/dist/chunk-TDW5SPXR.cjs +0 -244
  158. package/dist/chunk-TDW5SPXR.cjs.map +0 -1
  159. package/dist/chunk-TGK3IXDN.cjs +0 -169
  160. package/dist/chunk-TGK3IXDN.cjs.map +0 -1
  161. package/dist/chunk-TJEW6YCJ.cjs +0 -97
  162. package/dist/chunk-TJEW6YCJ.cjs.map +0 -1
  163. package/dist/chunk-VA3BQ34H.mjs +0 -403
  164. package/dist/chunk-VA5L5FDG.mjs +0 -36
  165. package/dist/chunk-XSGCRLSD.cjs +0 -1844
  166. package/dist/chunk-XSGCRLSD.cjs.map +0 -1
  167. package/dist/chunk-XV3GG3HC.cjs +0 -135
  168. package/dist/chunk-XV3GG3HC.cjs.map +0 -1
  169. package/dist/chunk-Y5B224UX.cjs +0 -4698
  170. package/dist/chunk-Y5B224UX.cjs.map +0 -1
  171. package/dist/chunk-ZBTRKBSI.mjs +0 -169
  172. package/dist/chunk-ZCEFC2TK.mjs +0 -244
  173. package/src/actions/honey/getHoneyGlobalData.ts +0 -21
  174. package/src/hooks/honey/useHoneyGlobalData.ts +0 -23
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/actions/bend/getMaxDeposit.ts","../../src/actions/dex/getPoolWithState.ts","../../src/actions/dex/getVaultPausedState.ts","../../src/actions/governance/getDecodedFunctionData.ts","../../src/actions/honey/getHoneyFees.ts","../../src/actions/honey/getHoneyPausedState.ts","../../src/actions/honey/getHoneyPythPriceOracle.ts","../../src/actions/honey/getHoneyRootPriceOracle.ts","../../src/actions/pol/getBlockTime.ts","../../src/actions/pol/getLSTStakeConfig.ts","../../src/actions/pol/getRewardVaultDurationConstants.ts","../../src/actions/pol/getRewardVaultBeaconImplementation.ts","../../src/abi/utils/upgradableBeacon.ts","../../src/actions/pol/getRewardVaultFromToken.ts","../../src/actions/pyth/getHoneyPythFeeds.ts","../../src/actions/tokens/getTokens.ts","../../src/actions/validators/getActiveBoostAndCommissionChangeDelay.ts","../../src/actions/validators/utils/aggregateValidatorIncentives.ts","../../src/actions/validators/utils/getValidatorBoostApy.ts"],"sourcesContent":["import { type Address, formatEther, type PublicClient } from \"viem\";\n\nimport { metaMorphoV11Abi as metaMorphoAbi } from \"@berachain/abis/bend-metamorpho/metaMorphoV11\";\n\ninterface GetMaxDepositProps {\n vaultAddress: Address;\n publicClient: PublicClient;\n}\n\nexport async function getMaxDeposit({\n vaultAddress,\n publicClient,\n}: GetMaxDepositProps): Promise<string> {\n const maxDeposit = await publicClient.readContract({\n address: vaultAddress,\n abi: metaMorphoAbi,\n functionName: \"maxDeposit\",\n args: [vaultAddress],\n });\n return formatEther(maxDeposit);\n}\n","import {\n type MinimalToken,\n mapPoolType,\n type PoolState,\n} from \"@berachain-foundation/berancer-sdk\";\nimport type { Address } from \"viem\";\n\nimport type { MinimalPoolFragment } from \"@berachain/graphql/dex/api\";\n\nexport const getPoolState = (apiPool: MinimalPoolFragment): PoolState => {\n return {\n type: mapPoolType(apiPool.type),\n protocolVersion: apiPool.protocolVersion as 1 | 2 | 3,\n tokens: apiPool.tokens.map<MinimalToken>(\n (pt) =>\n ({\n ...pt,\n address: pt.address as Address,\n }) satisfies MinimalToken,\n ),\n id: apiPool.id as Address,\n address: apiPool.address as Address,\n } satisfies PoolState;\n};\n","import type { PublicClient } from \"viem\";\n\nimport { vaultAbi as balancerVaultAbi } from \"@berachain/abis/bex/vault\";\n\nimport { parseBaseArgs } from \"../../utils/parseBaseArgs\";\n\nexport async function getVaultPausedState({\n publicClient,\n ...args\n}: BeraJS.BaseFunctionArgs & {\n publicClient: PublicClient;\n}) {\n const { config } = parseBaseArgs(args);\n\n const vaultPausedState = await publicClient.readContract({\n address: config.bex.vault,\n abi: balancerVaultAbi,\n functionName: \"getPausedState\",\n });\n\n return vaultPausedState[0];\n}\n","import {\n type Abi,\n type AbiFunction,\n type AbiItem,\n type Address,\n decodeFunctionData,\n erc20Abi,\n type PublicClient,\n pad,\n toFunctionSignature,\n trim,\n} from \"viem\";\n\nimport { appConfig, defaultChainId } from \"@berachain/config/internal\";\n\nimport { beraChefAbi } from \"@berachain/abis/pol/rewards/beraChef\";\nimport { rewardVaultAbi } from \"@berachain/abis/pol/rewards/rewardVault\";\n\n// Function to check if ABI contains proxy-related functions\nfunction isProxyABI(abi: Abi): boolean {\n return abi.some((item: AbiItem) => {\n const i = item as {\n name?: string;\n type: string;\n inputs?: readonly { name?: string }[];\n };\n return (\n i.name === \"implementation\" ||\n i.name === \"proxyType\" ||\n (i.type === \"constructor\" && i.inputs?.[0]?.name === \"implementation\")\n );\n });\n}\n\n/**\n * {@link https://docs.berascan.com/api-endpoints/contracts}\n */\nasync function _getAbi({\n contractAddress,\n chainId,\n publicClient,\n}: {\n contractAddress: Address;\n chainId: number;\n publicClient: PublicClient;\n}) {\n const url = `https://api.etherscan.io/v2/api?module=contract&action=getabi&address=${contractAddress}&apikey=${appConfig.apiKeys.private.etherscan}&chainId=${chainId}`;\n\n const response = await fetch(url);\n\n if (!response.ok) {\n throw new Error(`Failed to fetch ABI: ${response.statusText}`);\n }\n\n const data = await response.json();\n if (data.status === \"0\") throw new Error(data.result);\n\n const abi = JSON.parse(data.result);\n if (!isProxyABI(abi)) return abi;\n\n const implementationResult = await publicClient.getStorageAt({\n address: contractAddress,\n // bytes32(uint256(keccak256('eip1967.proxy.implementation')) - 1)).\n slot: \"0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc\",\n });\n\n // if implementation is not set, it might be a beacon proxy\n if (!implementationResult || trim(implementationResult) === \"0x00\")\n return abi;\n // storage slot has 32 byes (64 characters) but an address only has 20 bytes (40 characters)\n const implementationAddress = pad(trim(implementationResult), { size: 20 });\n return _getAbi({\n contractAddress: implementationAddress as `0x${string}`,\n chainId,\n publicClient,\n });\n}\n\nasync function _getAbiForCallData({\n address,\n callData,\n knownAbi,\n chainId,\n publicClient,\n}: {\n address: Address;\n callData: `0x${string}`;\n knownAbi: AbiItem[];\n chainId: number;\n publicClient: PublicClient;\n}) {\n try {\n if (decodeFunctionData({ data: callData, abi: knownAbi })) {\n return knownAbi;\n }\n } catch {}\n\n return _getAbi({ contractAddress: address, chainId, publicClient }).catch(\n () => undefined,\n );\n}\n\nfunction _decodeCallData(callData: `0x${string}`, abi: AbiItem[]) {\n try {\n return decodeFunctionData({ data: callData, abi });\n } catch {\n return undefined;\n }\n}\n\nfunction _findAbiItem(abi: AbiItem[], functionName: string) {\n return abi.find(\n (a: AbiItem) => a.type === \"function\" && a.name === functionName,\n ) as AbiFunction | undefined;\n}\n\nfunction _getFunctionSignature(abiItem: AbiFunction | undefined) {\n if (!abiItem) return;\n try {\n return toFunctionSignature(abiItem);\n } catch (error) {\n console.error(error);\n }\n}\n\nexport interface GetDecodedFunctionDataArgs {\n /** Contract address that emitted the calldata */\n address: Address;\n /** Raw calldata to decode */\n callData: `0x${string}`;\n /** @default defaultChainId */\n chainId?: number;\n publicClient: PublicClient;\n}\n\n/**\n * Decodes the function data from a given contract address and calldata.\n *\n * Attempts to decode using a known set of ABIs first, then falls back to\n * fetching the ABI from the block-explorer API.\n *\n * @returns An object with the decoded ABI item, function signature, function name, and arguments.\n */\nexport async function getDecodedFunctionData({\n address,\n callData,\n chainId = defaultChainId,\n publicClient,\n}: GetDecodedFunctionDataArgs) {\n const knownAbi = [...beraChefAbi, ...rewardVaultAbi, ...erc20Abi];\n\n const abi = await _getAbiForCallData({\n address,\n callData,\n knownAbi,\n chainId,\n publicClient,\n });\n\n const decodedData = _decodeCallData(callData, abi);\n\n if (!abi || !decodedData) {\n return { args: [] };\n }\n\n const abiItem = _findAbiItem(abi, decodedData.functionName);\n\n const functionSignature = _getFunctionSignature(abiItem);\n\n return {\n abiItem,\n functionSignature,\n functionName: decodedData.functionName,\n args: decodedData.args as unknown[],\n };\n}\n","import { type Address, formatUnits, type PublicClient } from \"viem\";\n\nimport { honeyFactoryAbi } from \"@berachain/abis/honey/honeyFactory\";\n\nimport type { Token } from \"@berachain/graphql/pol/api\";\n\nimport { parseBaseArgs } from \"../../utils/parseBaseArgs\";\n\nexport interface CollateralRates {\n mintFee: number;\n redeemFee: number;\n}\n\nexport interface HoneyFeeMap {\n single: Record<Address, CollateralRates>;\n basket: CollateralRates;\n}\n\nexport interface CollateralRatesArgs extends BeraJS.BaseFunctionArgs {\n client: PublicClient;\n collateralList: Token[];\n}\n\n/**\n * Fetches the mint and redeem rates for all collateral tokens and calculates the weighted basket rates\n * @param {Object} params - The parameters object\n * @param {PublicClient} params.client - The Viem public client instance\n * @param {Address[]} params.collateralList - Array of collateral token addresses\n * @returns {Promise<HoneyFeeMap | undefined>} Object containing individual collateral rates and weighted basket rates,\n * or undefined if the operation fails\n */\nexport async function getHoneyFees({\n client,\n collateralList,\n ...args\n}: CollateralRatesArgs): Promise<HoneyFeeMap> {\n const { config } = parseBaseArgs(args);\n\n try {\n // create a list for all the promises needed, fetch the mint and redeem rates for each collateral token\n const promiseList: Record<\"mint\" | \"redeem\", Promise<bigint>[]> = {\n mint: [],\n redeem: [],\n };\n for (const coll of collateralList) {\n promiseList.mint.push(\n client.readContract({\n address: config.honey.factory,\n abi: honeyFactoryAbi,\n functionName: \"mintRates\",\n args: [coll.address as Address],\n }),\n );\n promiseList.redeem.push(\n client.readContract({\n address: config.honey.factory,\n abi: honeyFactoryAbi,\n functionName: \"redeemRates\",\n args: [coll.address as Address],\n }),\n );\n }\n const [mintRates, redeemRates, collateralWeights] = await Promise.all([\n Promise.all(promiseList.mint),\n Promise.all(promiseList.redeem),\n // fetch the collateral weights, needed to calculate the weighted basket rates\n client.readContract({\n address: config.honey.factory,\n abi: honeyFactoryAbi,\n functionName: \"getWeights\",\n }),\n ]);\n\n // calculate the weighted basket rates and the single collateral rates\n\n return collateralList.reduce<HoneyFeeMap>(\n (acc, coll) => {\n const collIdx = collateralList.indexOf(coll);\n acc.single[coll.address as Address] = {\n mintFee: 1 - +formatUnits(mintRates[collIdx], 18),\n redeemFee: 1 - +formatUnits(redeemRates[collIdx], 18),\n };\n acc.basket.mintFee +=\n acc.single[coll.address as Address].mintFee *\n +formatUnits(collateralWeights[collIdx], 18);\n\n acc.basket.redeemFee +=\n acc.single[coll.address as Address].redeemFee *\n +formatUnits(collateralWeights[collIdx], 18);\n return acc;\n },\n {\n single: {},\n basket: { mintFee: 0, redeemFee: 0 },\n },\n );\n } catch (e) {\n console.log(e);\n throw e;\n }\n}\n","import type { PublicClient } from \"viem\";\n\nimport { honeyAbi } from \"@berachain/abis/honey/honey\";\n\nimport { parseBaseArgs } from \"../../utils/parseBaseArgs\";\n\n/**\n * Gets the pause state of the Honey protocol\n * @returns boolean\n */\nexport async function getHoneyPausedState({\n client,\n ...args\n}: BeraJS.BaseFunctionArgs & {\n client: PublicClient;\n}) {\n const { config } = parseBaseArgs(args);\n const honeyAddress = config.honey.token;\n const honeyPausedState = await client.readContract({\n address: honeyAddress,\n abi: honeyAbi,\n functionName: \"paused\",\n });\n\n return honeyPausedState;\n}\n","import type { Address, PublicClient } from \"viem\";\n\nimport { rootPriceOracleAbi as honeyRootOracleAbi } from \"@berachain/abis/extras/rootPriceOracle\";\n\n/**\n * Gets the address of the Honey Pyth Oracle, which is called by the Honey Root Price Oracle to get the price of the collaterals\n * @returns\n */\nexport async function getHoneyPythOracle({\n pythOracle,\n publicClient,\n}: {\n publicClient: PublicClient;\n pythOracle: Address;\n}) {\n return publicClient.readContract({\n address: pythOracle,\n abi: honeyRootOracleAbi,\n functionName: \"pythOracle\",\n });\n}\n","import type { Address, PublicClient } from \"viem\";\n\nimport { honeyFactoryAbi } from \"@berachain/abis/honey/honeyFactory\";\n\nimport { parseBaseArgs } from \"../../utils/parseBaseArgs\";\n\n/**\n * Gets the address of the Honey Root Price Oracle, which keeps the logic to price the collaterals\n */\nexport async function getHoneyRootPriceOracle({\n publicClient,\n factory,\n ...args\n}: BeraJS.BaseFunctionArgs & {\n publicClient: PublicClient;\n factory?: Address;\n}): Promise<Address> {\n const { config } = parseBaseArgs(args);\n return publicClient.readContract({\n address: factory ?? config.honey.factory,\n abi: honeyFactoryAbi,\n functionName: \"priceOracle\",\n });\n}\n","import type { PublicClient } from \"viem\";\n\nimport { assertPublicClient } from \"../../errors/assert\";\nimport { parseBaseArgs } from \"../../utils/parseBaseArgs\";\nimport { hoursInSeconds, msToSeconds } from \"../../utils/time\";\n\nexport async function getBlockTime({\n defaultBlockTime,\n publicClient,\n blocksSpan,\n ...args\n}: {\n defaultBlockTime?: number;\n blocksSpan?: number;\n publicClient: PublicClient | undefined;\n} & BeraJS.BaseFunctionArgs): Promise<number> {\n assertPublicClient(publicClient);\n\n const { config } = parseBaseArgs(args);\n\n const blockTime = defaultBlockTime ?? config.averageBlockTime;\n const span = blocksSpan ?? Math.floor(hoursInSeconds(1) / blockTime);\n\n const currentBlock = await publicClient?.getBlock({ blockTag: \"latest\" });\n const oldestBlock = await publicClient?.getBlock({\n blockNumber: currentBlock.number - BigInt(span),\n });\n\n return (\n // we need to use current timestamp as the latest block might not have been minted (chain halted)\n (msToSeconds(Date.now()) - Number(oldestBlock?.timestamp)) /\n (Number(currentBlock?.number) - Number(oldestBlock?.number))\n );\n}\n","import type { Address, PublicClient } from \"viem\";\n\nimport { lstStakerVaultAbi } from \"@berachain/abis/pol/lst/lstStakerVault\";\n\nimport { assertPublicClient } from \"../../errors/assert\";\nimport type { TokenWithMetadata } from \"../../types/dex\";\nimport type { StakingConfig } from \"../../types/staking\";\nimport { parseBaseArgs } from \"../../utils/parseBaseArgs\";\nimport { isToken } from \"../../utils/tokens\";\n\nexport type GetLSTStakeConfigArgs = {\n tokenList: TokenWithMetadata[];\n publicClient?: PublicClient;\n lstStakingVaults: Address[];\n} & BeraJS.BaseFunctionArgs;\n\n/**\n * Builds staking configs from on-chain LST vaults and optional native configs.\n */\nexport async function getLSTStakeConfig({\n tokenList,\n publicClient,\n lstStakingVaults,\n ...args\n}: GetLSTStakeConfigArgs): Promise<StakingConfig[]> {\n assertPublicClient(publicClient);\n\n const { config } = parseBaseArgs({\n ...args,\n chainId: publicClient.chain?.id ?? args.chainId,\n });\n\n const lstStakingTokens = tokenList.filter((token) =>\n lstStakingVaults.includes(token.address),\n );\n\n if (lstStakingTokens.length === 0) {\n return [];\n }\n\n const assets = await Promise.all(\n lstStakingTokens.map(async (stakingToken) => {\n // read the asset token address from the lst staking vault\n const assetTokenAddress = await publicClient.readContract({\n address: stakingToken.address,\n abi: lstStakerVaultAbi,\n functionName: \"asset\",\n });\n return { assetTokenAddress, stakingToken };\n }),\n );\n\n return assets.reduce<StakingConfig[]>(\n (acc, { assetTokenAddress, stakingToken }) => {\n const assetToken = tokenList.find((token) =>\n isToken(token, assetTokenAddress),\n );\n if (!assetToken) return acc;\n acc.push({\n id: stakingToken.address,\n receiptToken: stakingToken,\n inputTokens: [assetToken],\n });\n return acc;\n },\n [],\n );\n}\n","import type { PublicClient } from \"viem\";\n\nimport { rewardVaultAbi } from \"@berachain/abis/pol/rewards/rewardVault\";\n\nimport { assertPublicClient } from \"../../errors/assert\";\nimport { getRewardVaultBeaconImplementation } from \"./getRewardVaultBeaconImplementation\";\n\nexport interface RewardVaultDurationConstants {\n minRewardDuration: number;\n maxRewardDuration: number;\n}\n\n/**\n * Returns the minimum and maximum reward duration constants for all reward vaults.\n */\nexport async function getRewardVaultDurationConstants({\n publicClient,\n ...baseArgs\n}: BeraJS.BaseFunctionArgs & {\n publicClient: PublicClient;\n}): Promise<RewardVaultDurationConstants> {\n assertPublicClient(publicClient);\n\n const beaconImplementation = await getRewardVaultBeaconImplementation({\n publicClient,\n ...baseArgs,\n });\n\n const [minRewardDuration, maxRewardDuration] = await Promise.all([\n publicClient.readContract({\n address: beaconImplementation,\n abi: rewardVaultAbi,\n functionName: \"MIN_REWARD_DURATION\",\n }),\n publicClient.readContract({\n address: beaconImplementation,\n abi: rewardVaultAbi,\n functionName: \"MAX_REWARD_DURATION\",\n }),\n ]);\n\n return {\n minRewardDuration: Number(minRewardDuration),\n maxRewardDuration: Number(maxRewardDuration),\n };\n}\n","import type { Address, PublicClient } from \"viem\";\n\nimport { rewardVaultFactoryAbi } from \"@berachain/abis/pol/rewards/rewardVaultFactory\";\n\nimport { upgradableBeaconAbi } from \"../../abi/utils/upgradableBeacon\";\nimport { assertAddress, assertDefined } from \"../../errors/assert\";\nimport { parseBaseArgs } from \"../../utils/parseBaseArgs\";\n\n/**\n * Returns the beacon implementation address for all reward vaults.\n */\nexport async function getRewardVaultBeaconImplementation({\n publicClient,\n ...args\n}: BeraJS.BaseFunctionArgs & {\n publicClient: PublicClient;\n}): Promise<Address> {\n const { config } = parseBaseArgs(args);\n const factoryAddress = config.pol.factory;\n assertDefined(publicClient, \"publicClient\");\n assertAddress(config.pol.factory, \"factoryAddress\");\n\n // from the factory contract, we get the beacon address\n const beacon = await publicClient.readContract({\n address: factoryAddress,\n abi: rewardVaultFactoryAbi,\n functionName: \"beacon\",\n });\n\n // from the beacon contract, we get the current implementation address\n return publicClient.readContract({\n address: beacon,\n abi: upgradableBeaconAbi,\n functionName: \"implementation\",\n });\n}\n","export const upgradableBeaconAbi = [\n {\n inputs: [\n { internalType: \"address\", name: \"initialOwner\", type: \"address\" },\n {\n internalType: \"address\",\n name: \"initialImplementation\",\n type: \"address\",\n },\n ],\n stateMutability: \"payable\",\n type: \"constructor\",\n },\n { inputs: [], name: \"NewImplementationHasNoCode\", type: \"error\" },\n { inputs: [], name: \"NewOwnerIsZeroAddress\", type: \"error\" },\n { inputs: [], name: \"Unauthorized\", type: \"error\" },\n {\n anonymous: false,\n inputs: [\n {\n indexed: true,\n internalType: \"address\",\n name: \"oldOwner\",\n type: \"address\",\n },\n {\n indexed: true,\n internalType: \"address\",\n name: \"newOwner\",\n type: \"address\",\n },\n ],\n name: \"OwnershipTransferred\",\n type: \"event\",\n },\n {\n anonymous: false,\n inputs: [\n {\n indexed: true,\n internalType: \"address\",\n name: \"implementation\",\n type: \"address\",\n },\n ],\n name: \"Upgraded\",\n type: \"event\",\n },\n {\n inputs: [],\n name: \"implementation\",\n outputs: [{ internalType: \"address\", name: \"result\", type: \"address\" }],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [],\n name: \"owner\",\n outputs: [{ internalType: \"address\", name: \"result\", type: \"address\" }],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [],\n name: \"renounceOwnership\",\n outputs: [],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [{ internalType: \"address\", name: \"newOwner\", type: \"address\" }],\n name: \"transferOwnership\",\n outputs: [],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [\n { internalType: \"address\", name: \"newImplementation\", type: \"address\" },\n ],\n name: \"upgradeTo\",\n outputs: [],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n] as const;\n","import { type Address, type PublicClient, zeroAddress } from \"viem\";\n\nimport { rewardVaultFactoryAbi } from \"@berachain/abis/pol/rewards/rewardVaultFactory\";\n\nimport { parseBaseArgs } from \"../../utils/parseBaseArgs\";\n\nexport async function getRewardVaultFromToken({\n tokenAddress,\n publicClient,\n factoryAddress,\n ...args\n}: {\n tokenAddress: Address;\n publicClient: PublicClient;\n factoryAddress?: Address;\n} & BeraJS.BaseFunctionArgs) {\n const { config } = parseBaseArgs(args);\n\n const vaultAddress = await publicClient.readContract({\n address: factoryAddress ?? config.pol.factory,\n abi: rewardVaultFactoryAbi,\n functionName: \"getVault\",\n args: [tokenAddress],\n });\n\n if (vaultAddress === zeroAddress) {\n return null;\n }\n\n return vaultAddress;\n}\n","import type { PublicClient } from \"viem\";\n\nimport type { Address } from \"@berachain/config\";\n\nimport { pythPriceOracleAbi } from \"@berachain/abis/extras/pythPriceOracle\";\n\nimport type { PythPriceFeedMap } from \"../../types/honeySwap\";\nimport { parseBaseArgs } from \"../../utils/parseBaseArgs\";\n\n/**\n * Given a list of tokens, it will return the price feed ids for each token according to honey priceOracle\n * @returns\n */\nexport async function getHoneyPythFeeds({\n tokenList,\n publicClient,\n ...args\n}: {\n tokenList: readonly Address[];\n publicClient: PublicClient;\n} & BeraJS.BaseFunctionArgs): Promise<PythPriceFeedMap> {\n const { config } = parseBaseArgs(args);\n\n try {\n const priceFeedIds = await Promise.all(\n tokenList.map((token) =>\n publicClient.readContract({\n address: config.honey.pythOracle,\n abi: pythPriceOracleAbi,\n functionName: \"feeds\",\n args: [token],\n }),\n ),\n );\n\n return tokenList.reduce<PythPriceFeedMap>(\n (acc, token, index) => ({\n ...acc,\n [token]: priceFeedIds[index],\n }),\n {},\n );\n } catch (e) {\n console.error(\"getPythPriceFeedId\", e);\n throw e;\n }\n}\n","import type { TokenWithMetadata } from \"../../types/dex\";\nimport { beraFetchJson } from \"../../utils/beraFetch\";\nimport { parseBaseArgs } from \"../../utils/parseBaseArgs\";\n\nexport async function getTokens({\n url,\n ...args\n}: BeraJS.BaseFunctionArgs & { url?: string } = {}): Promise<\n TokenWithMetadata[]\n> {\n const { config } = parseBaseArgs(args);\n const tokenList = await beraFetchJson<{ tokens: TokenWithMetadata[] }>({\n url: url ?? config.lists.tokenList,\n type: \"rest\",\n name: \"GitHub\",\n });\n\n return tokenList.tokens ?? [];\n}\n","import type { PublicClient } from \"viem\";\n\nimport type { EdgeConfigSchema } from \"@berachain/config/internal/edge-config\";\n\nimport { bgtAbi } from \"@berachain/abis/pol/bgt\";\nimport { beraChefAbi } from \"@berachain/abis/pol/rewards/beraChef\";\n\nimport { parseBaseArgs } from \"../../utils/parseBaseArgs\";\n\nexport interface ActiveBoostAndCommissionChangeDelay {\n boostDelay: number;\n unboostDelay: number;\n commissionChangeDelay: number;\n rewardAllocationBlockDelay: number;\n maxWeightPerVault: number;\n maxNumWeightsPerRewardAllocation: number;\n /**\n * Percentage of the validator's commission rate that can be changed at once.\n *\n * @example 1 => 100%\n */\n maxCommissionRate: number;\n /**\n * The number of blocks after which a reward allocation is considered stale and will fallback\n * to baseline reward allocation.\n *\n */\n rewardAllocationInactivityBlockSpan: number;\n /**\n * The number of hours in advance to warn the operator that the reward allocation is expiring.\n */\n ui: EdgeConfigSchema[\"pol\"][\"automatedRewardAllocation\"];\n}\n\nexport async function getActiveBoostAndCommissionChangeDelay({\n publicClient,\n ui,\n ...args\n}: BeraJS.BaseFunctionArgs &\n Pick<ActiveBoostAndCommissionChangeDelay, \"ui\"> & {\n publicClient: PublicClient;\n }): Promise<ActiveBoostAndCommissionChangeDelay> {\n const { config } = parseBaseArgs(args);\n\n const [\n maxCommissionRate,\n commissionChangeDelay,\n rewardAllocationBlockDelay,\n maxWeightPerVault,\n maxNumWeightsPerRewardAllocation,\n dropBoostDelay,\n activateBoostDelay,\n rewardAllocationInactivityBlockSpan,\n ] = await Promise.all([\n publicClient.readContract({\n address: config.pol.beraChef,\n abi: beraChefAbi,\n functionName: \"MAX_COMMISSION_RATE\",\n }),\n publicClient.readContract({\n address: config.pol.beraChef,\n abi: beraChefAbi,\n functionName: \"commissionChangeDelay\",\n }),\n publicClient.readContract({\n address: config.pol.beraChef,\n abi: beraChefAbi,\n functionName: \"rewardAllocationBlockDelay\",\n }),\n publicClient.readContract({\n address: config.pol.beraChef,\n abi: beraChefAbi,\n functionName: \"maxWeightPerVault\",\n }),\n publicClient.readContract({\n address: config.pol.beraChef,\n abi: beraChefAbi,\n functionName: \"maxNumWeightsPerRewardAllocation\",\n }),\n publicClient.readContract({\n address: config.tokens.bgt,\n abi: bgtAbi,\n functionName: \"dropBoostDelay\",\n }),\n publicClient.readContract({\n address: config.tokens.bgt,\n abi: bgtAbi,\n functionName: \"activateBoostDelay\",\n }),\n publicClient.readContract({\n address: config.pol.beraChef,\n abi: beraChefAbi,\n functionName: \"rewardAllocationInactivityBlockSpan\",\n }),\n ]);\n\n return {\n maxCommissionRate: Number(maxCommissionRate) / 1e4,\n boostDelay: Number(activateBoostDelay),\n unboostDelay: Number(dropBoostDelay),\n commissionChangeDelay: Number(commissionChangeDelay),\n rewardAllocationBlockDelay: Number(rewardAllocationBlockDelay),\n maxWeightPerVault: Number(maxWeightPerVault) / 1e4,\n maxNumWeightsPerRewardAllocation: Number(maxNumWeightsPerRewardAllocation),\n rewardAllocationInactivityBlockSpan: Number(\n rewardAllocationInactivityBlockSpan,\n ),\n ui,\n };\n}\n","import type {\n ApiMinimalVaultIncentiveFragment,\n ApiValidatorRewardAllocationWeightFragment,\n} from \"@berachain/graphql/pol/api\";\nimport BigNumber from \"@berachain/utils/pkg/bignumber.js\";\n\nexport function aggregateValidatorIncentives({\n rewardAllocationWeights,\n activeOnly = true,\n}: {\n rewardAllocationWeights: ApiValidatorRewardAllocationWeightFragment[];\n activeOnly?: boolean;\n}): ApiMinimalVaultIncentiveFragment[] {\n const map = rewardAllocationWeights\n .filter((x) => x?.receivingVault)\n\n .reduce((acc, rv) => {\n for (const incentive of rv.receivingVault?.activeIncentives ?? []) {\n if (activeOnly && incentive.remainingAmount === \"0\") {\n continue;\n }\n const incentiveRate = new BigNumber(incentive.incentiveRate).times(\n rv.percentage,\n );\n\n const incentiveRateUsd = new BigNumber(\n incentive.incentiveRateUsd,\n ).times(rv.percentage);\n\n const token = incentive.token.address.toLowerCase();\n\n const existing = acc.get(token);\n if (existing) {\n acc.set(token, {\n ...existing,\n incentiveRate: new BigNumber(existing.incentiveRate)\n .plus(incentiveRate)\n .toString(),\n incentiveRateUsd: new BigNumber(existing.incentiveRateUsd)\n .plus(incentiveRateUsd)\n .toString(),\n remainingAmount: new BigNumber(existing.remainingAmount)\n .plus(incentive.remainingAmount)\n .toString(),\n remainingAmountUsd: new BigNumber(existing.remainingAmountUsd)\n .plus(incentive.remainingAmountUsd)\n .toString(),\n });\n } else {\n acc.set(token, {\n ...incentive,\n tokenAddress: incentive.token.address,\n token: incentive.token,\n incentiveRate: incentiveRate.toString(),\n incentiveRateUsd: incentiveRateUsd.toString(),\n remainingAmount: incentive.remainingAmount,\n });\n }\n }\n return acc;\n }, new Map<string, ApiMinimalVaultIncentiveFragment>());\n\n return Array.from(map.values());\n}\n","import type { ApiValidatorFragment } from \"@berachain/graphql/pol/api\";\n\nexport function getValidatorReturnPerBgt(\n validator: Pick<\n ApiValidatorFragment,\n \"dynamicData\" | \"rewardAllocationWeights\"\n >,\n): number {\n return validator?.rewardAllocationWeights?.reduce((acc, ab) => {\n if (!ab) return acc;\n\n const totalIncentiveValue =\n ab.receivingVault?.activeIncentives\n .filter((inc) => Number(inc.remainingAmount) > 0)\n .reduce((totalIncentiveValue, currIncentive) => {\n const tokenPrice =\n Number(currIncentive.remainingAmountUsd) /\n Number(currIncentive.remainingAmount);\n\n return (\n totalIncentiveValue +\n Number(currIncentive.incentiveRate) * tokenPrice\n );\n }, 0) ?? 0;\n\n return acc + totalIncentiveValue * ab.percentage;\n }, 0);\n}\n\nexport function getValidatorBoostApy({\n validator,\n bgtPrice,\n}: {\n validator: Pick<\n ApiValidatorFragment,\n \"dynamicData\" | \"rewardAllocationWeights\"\n >;\n bgtPrice: number;\n}): number {\n const validatorActiveBoostAmount = Number(\n validator.dynamicData?.activeBoostAmount ?? 0,\n );\n\n const returnPerBgt = getValidatorReturnPerBgt(validator);\n\n if (!returnPerBgt || !validatorActiveBoostAmount) {\n // As of now, a validator cannot send rewards to the vaults if it has no active boost amount\n // If baseRate changes on chain, we should update this function\n return 0;\n }\n\n const boostApy =\n (returnPerBgt *\n Number(validator.dynamicData?.lastDayDistributedBGTAmount ?? 0) *\n 365) /\n (validatorActiveBoostAmount * bgtPrice);\n\n return boostApy;\n}\n"],"mappings":"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","names":["honeyFactoryAbi","honeyFactoryAbi","rewardVaultAbi","rewardVaultAbi","rewardVaultFactoryAbi","rewardVaultFactoryAbi","beraChefAbi","beraChefAbi","totalIncentiveValue"]}
1
+ {"version":3,"sources":["../../src/actions/bend/getMaxDeposit.ts","../../src/actions/dex/getPoolWithState.ts","../../src/actions/dex/getVaultPausedState.ts","../../src/actions/governance/getDecodedFunctionData.ts","../../src/actions/honey/getHoneyFees.ts","../../src/actions/honey/getHoneyPausedState.ts","../../src/actions/honey/getHoneyPythPriceOracle.ts","../../src/actions/honey/getHoneyRootPriceOracle.ts","../../src/actions/pol/getBlockTime.ts","../../src/actions/pol/getLSTStakeConfig.ts","../../src/actions/pol/getRewardVaultDurationConstants.ts","../../src/actions/pol/getRewardVaultBeaconImplementation.ts","../../src/abi/utils/upgradableBeacon.ts","../../src/actions/pol/getRewardVaultFromToken.ts","../../src/actions/pyth/getHoneyPythFeeds.ts","../../src/actions/tokens/getTokens.ts","../../src/actions/validators/getActiveBoostAndCommissionChangeDelay.ts","../../src/actions/validators/utils/aggregateValidatorIncentives.ts","../../src/actions/validators/utils/getValidatorBoostApy.ts"],"sourcesContent":["import { type Address, formatEther, type PublicClient } from \"viem\";\n\nimport { metaMorphoV11Abi as metaMorphoAbi } from \"@berachain/abis/bend-metamorpho/metaMorphoV11\";\n\ninterface GetMaxDepositProps {\n vaultAddress: Address;\n publicClient: PublicClient;\n}\n\nexport async function getMaxDeposit({\n vaultAddress,\n publicClient,\n}: GetMaxDepositProps): Promise<string> {\n const maxDeposit = await publicClient.readContract({\n address: vaultAddress,\n abi: metaMorphoAbi,\n functionName: \"maxDeposit\",\n args: [vaultAddress],\n });\n return formatEther(maxDeposit);\n}\n","import {\n type MinimalToken,\n mapPoolType,\n type PoolState,\n} from \"@berachain-foundation/berancer-sdk\";\nimport type { Address } from \"viem\";\n\nimport type { MinimalPoolFragment } from \"@berachain/graphql/dex/api\";\n\nexport const getPoolState = (apiPool: MinimalPoolFragment): PoolState => {\n return {\n type: mapPoolType(apiPool.type),\n protocolVersion: apiPool.protocolVersion as 1 | 2 | 3,\n tokens: apiPool.tokens.map<MinimalToken>(\n (pt) =>\n ({\n ...pt,\n address: pt.address as Address,\n }) satisfies MinimalToken,\n ),\n id: apiPool.id as Address,\n address: apiPool.address as Address,\n } satisfies PoolState;\n};\n","import type { PublicClient } from \"viem\";\n\nimport { vaultAbi as balancerVaultAbi } from \"@berachain/abis/bex/vault\";\n\nimport { parseBaseArgs } from \"../../utils/parseBaseArgs\";\n\nexport async function getVaultPausedState({\n publicClient,\n ...args\n}: BeraJS.BaseFunctionArgs & {\n publicClient: PublicClient;\n}) {\n const { config } = parseBaseArgs(args);\n\n const vaultPausedState = await publicClient.readContract({\n address: config.bex.vault,\n abi: balancerVaultAbi,\n functionName: \"getPausedState\",\n });\n\n return vaultPausedState[0];\n}\n","import {\n type Abi,\n type AbiFunction,\n type AbiItem,\n type Address,\n decodeFunctionData,\n erc20Abi,\n type PublicClient,\n pad,\n toFunctionSignature,\n trim,\n} from \"viem\";\n\nimport { appConfig, defaultChainId } from \"@berachain/config/internal\";\n\nimport { beraChefAbi } from \"@berachain/abis/pol/rewards/beraChef\";\nimport { rewardVaultAbi } from \"@berachain/abis/pol/rewards/rewardVault\";\n\n// Function to check if ABI contains proxy-related functions\nfunction isProxyABI(abi: Abi): boolean {\n return abi.some((item: AbiItem) => {\n const i = item as {\n name?: string;\n type: string;\n inputs?: readonly { name?: string }[];\n };\n return (\n i.name === \"implementation\" ||\n i.name === \"proxyType\" ||\n (i.type === \"constructor\" && i.inputs?.[0]?.name === \"implementation\")\n );\n });\n}\n\n/**\n * {@link https://docs.berascan.com/api-endpoints/contracts}\n */\nasync function _getAbi({\n contractAddress,\n chainId,\n publicClient,\n}: {\n contractAddress: Address;\n chainId: number;\n publicClient: PublicClient;\n}) {\n const url = `https://api.etherscan.io/v2/api?module=contract&action=getabi&address=${contractAddress}&apikey=${appConfig.apiKeys.private.etherscan}&chainId=${chainId}`;\n\n const response = await fetch(url);\n\n if (!response.ok) {\n throw new Error(`Failed to fetch ABI: ${response.statusText}`);\n }\n\n const data = await response.json();\n if (data.status === \"0\") throw new Error(data.result);\n\n const abi = JSON.parse(data.result);\n if (!isProxyABI(abi)) return abi;\n\n const implementationResult = await publicClient.getStorageAt({\n address: contractAddress,\n // bytes32(uint256(keccak256('eip1967.proxy.implementation')) - 1)).\n slot: \"0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc\",\n });\n\n // if implementation is not set, it might be a beacon proxy\n if (!implementationResult || trim(implementationResult) === \"0x00\")\n return abi;\n // storage slot has 32 byes (64 characters) but an address only has 20 bytes (40 characters)\n const implementationAddress = pad(trim(implementationResult), { size: 20 });\n return _getAbi({\n contractAddress: implementationAddress as `0x${string}`,\n chainId,\n publicClient,\n });\n}\n\nasync function _getAbiForCallData({\n address,\n callData,\n knownAbi,\n chainId,\n publicClient,\n}: {\n address: Address;\n callData: `0x${string}`;\n knownAbi: AbiItem[];\n chainId: number;\n publicClient: PublicClient;\n}) {\n try {\n if (decodeFunctionData({ data: callData, abi: knownAbi })) {\n return knownAbi;\n }\n } catch {}\n\n return _getAbi({ contractAddress: address, chainId, publicClient }).catch(\n () => undefined,\n );\n}\n\nfunction _decodeCallData(callData: `0x${string}`, abi: AbiItem[]) {\n try {\n return decodeFunctionData({ data: callData, abi });\n } catch {\n return undefined;\n }\n}\n\nfunction _findAbiItem(abi: AbiItem[], functionName: string) {\n return abi.find(\n (a: AbiItem) => a.type === \"function\" && a.name === functionName,\n ) as AbiFunction | undefined;\n}\n\nfunction _getFunctionSignature(abiItem: AbiFunction | undefined) {\n if (!abiItem) return;\n try {\n return toFunctionSignature(abiItem);\n } catch (error) {\n console.error(error);\n }\n}\n\nexport interface GetDecodedFunctionDataArgs {\n /** Contract address that emitted the calldata */\n address: Address;\n /** Raw calldata to decode */\n callData: `0x${string}`;\n /** @default defaultChainId */\n chainId?: number;\n publicClient: PublicClient;\n}\n\n/**\n * Decodes the function data from a given contract address and calldata.\n *\n * Attempts to decode using a known set of ABIs first, then falls back to\n * fetching the ABI from the block-explorer API.\n *\n * @returns An object with the decoded ABI item, function signature, function name, and arguments.\n */\nexport async function getDecodedFunctionData({\n address,\n callData,\n chainId = defaultChainId,\n publicClient,\n}: GetDecodedFunctionDataArgs) {\n const knownAbi = [...beraChefAbi, ...rewardVaultAbi, ...erc20Abi];\n\n const abi = await _getAbiForCallData({\n address,\n callData,\n knownAbi,\n chainId,\n publicClient,\n });\n\n const decodedData = _decodeCallData(callData, abi);\n\n if (!abi || !decodedData) {\n return { args: [] };\n }\n\n const abiItem = _findAbiItem(abi, decodedData.functionName);\n\n const functionSignature = _getFunctionSignature(abiItem);\n\n return {\n abiItem,\n functionSignature,\n functionName: decodedData.functionName,\n args: decodedData.args as unknown[],\n };\n}\n","import { type Address, formatUnits, type PublicClient } from \"viem\";\n\nimport { honeyFactoryAbi } from \"@berachain/abis/honey/honeyFactory\";\n\nimport type { Token } from \"@berachain/graphql/pol/api\";\n\nimport { parseBaseArgs } from \"../../utils/parseBaseArgs\";\n\nexport interface CollateralRates {\n mintFee: number;\n redeemFee: number;\n}\n\nexport interface HoneyFeeMap {\n single: Record<Address, CollateralRates>;\n basket: CollateralRates;\n}\n\nexport interface CollateralRatesArgs extends BeraJS.BaseFunctionArgs {\n client: PublicClient;\n collateralList: Token[];\n}\n\n/**\n * Fetches the mint and redeem rates for all collateral tokens and calculates the weighted basket rates\n * @param {Object} params - The parameters object\n * @param {PublicClient} params.client - The Viem public client instance\n * @param {Address[]} params.collateralList - Array of collateral token addresses\n * @returns {Promise<HoneyFeeMap | undefined>} Object containing individual collateral rates and weighted basket rates,\n * or undefined if the operation fails\n */\nexport async function getHoneyFees({\n client,\n collateralList,\n ...args\n}: CollateralRatesArgs): Promise<HoneyFeeMap> {\n const { config } = parseBaseArgs(args);\n\n try {\n // create a list for all the promises needed, fetch the mint and redeem rates for each collateral token\n const promiseList: Record<\"mint\" | \"redeem\", Promise<bigint>[]> = {\n mint: [],\n redeem: [],\n };\n for (const coll of collateralList) {\n promiseList.mint.push(\n client.readContract({\n address: config.honey.factory,\n abi: honeyFactoryAbi,\n functionName: \"mintRates\",\n args: [coll.address as Address],\n }),\n );\n promiseList.redeem.push(\n client.readContract({\n address: config.honey.factory,\n abi: honeyFactoryAbi,\n functionName: \"redeemRates\",\n args: [coll.address as Address],\n }),\n );\n }\n const [mintRates, redeemRates, collateralWeights] = await Promise.all([\n Promise.all(promiseList.mint),\n Promise.all(promiseList.redeem),\n // fetch the collateral weights, needed to calculate the weighted basket rates\n client.readContract({\n address: config.honey.factory,\n abi: honeyFactoryAbi,\n functionName: \"getWeights\",\n }),\n ]);\n\n // calculate the weighted basket rates and the single collateral rates\n\n return collateralList.reduce<HoneyFeeMap>(\n (acc, coll) => {\n const collIdx = collateralList.indexOf(coll);\n acc.single[coll.address as Address] = {\n mintFee: 1 - +formatUnits(mintRates[collIdx], 18),\n redeemFee: 1 - +formatUnits(redeemRates[collIdx], 18),\n };\n acc.basket.mintFee +=\n acc.single[coll.address as Address].mintFee *\n +formatUnits(collateralWeights[collIdx], 18);\n\n acc.basket.redeemFee +=\n acc.single[coll.address as Address].redeemFee *\n +formatUnits(collateralWeights[collIdx], 18);\n return acc;\n },\n {\n single: {},\n basket: { mintFee: 0, redeemFee: 0 },\n },\n );\n } catch (e) {\n console.log(e);\n throw e;\n }\n}\n","import type { PublicClient } from \"viem\";\n\nimport { honeyAbi } from \"@berachain/abis/honey/honey\";\n\nimport { parseBaseArgs } from \"../../utils/parseBaseArgs\";\n\n/**\n * Gets the pause state of the Honey protocol\n * @returns boolean\n */\nexport async function getHoneyPausedState({\n client,\n ...args\n}: BeraJS.BaseFunctionArgs & {\n client: PublicClient;\n}) {\n const { config } = parseBaseArgs(args);\n const honeyAddress = config.honey.token;\n const honeyPausedState = await client.readContract({\n address: honeyAddress,\n abi: honeyAbi,\n functionName: \"paused\",\n });\n\n return honeyPausedState;\n}\n","import type { Address, PublicClient } from \"viem\";\n\nimport { rootPriceOracleAbi as honeyRootOracleAbi } from \"@berachain/abis/extras/rootPriceOracle\";\n\n/**\n * Gets the address of the Honey Pyth Oracle, which is called by the Honey Root Price Oracle to get the price of the collaterals\n * @returns\n */\nexport async function getHoneyPythOracle({\n pythOracle,\n publicClient,\n}: {\n publicClient: PublicClient;\n pythOracle: Address;\n}) {\n return publicClient.readContract({\n address: pythOracle,\n abi: honeyRootOracleAbi,\n functionName: \"pythOracle\",\n });\n}\n","import type { Address, PublicClient } from \"viem\";\n\nimport { honeyFactoryAbi } from \"@berachain/abis/honey/honeyFactory\";\n\nimport { parseBaseArgs } from \"../../utils/parseBaseArgs\";\n\n/**\n * Gets the address of the Honey Root Price Oracle, which keeps the logic to price the collaterals\n */\nexport async function getHoneyRootPriceOracle({\n publicClient,\n factory,\n ...args\n}: BeraJS.BaseFunctionArgs & {\n publicClient: PublicClient;\n factory?: Address;\n}): Promise<Address> {\n const { config } = parseBaseArgs(args);\n return publicClient.readContract({\n address: factory ?? config.honey.factory,\n abi: honeyFactoryAbi,\n functionName: \"priceOracle\",\n });\n}\n","import type { PublicClient } from \"viem\";\n\nimport { assertPublicClient } from \"../../errors/assert\";\nimport { parseBaseArgs } from \"../../utils/parseBaseArgs\";\nimport { hoursInSeconds, msToSeconds } from \"../../utils/time\";\n\nexport async function getBlockTime({\n defaultBlockTime,\n publicClient,\n blocksSpan,\n ...args\n}: {\n defaultBlockTime?: number;\n blocksSpan?: number;\n publicClient: PublicClient | undefined;\n} & BeraJS.BaseFunctionArgs): Promise<number> {\n assertPublicClient(publicClient);\n\n const { config } = parseBaseArgs(args);\n\n const blockTime = defaultBlockTime ?? config.averageBlockTime;\n const span = blocksSpan ?? Math.floor(hoursInSeconds(1) / blockTime);\n\n const currentBlock = await publicClient?.getBlock({ blockTag: \"latest\" });\n const oldestBlock = await publicClient?.getBlock({\n blockNumber: currentBlock.number - BigInt(span),\n });\n\n return (\n // we need to use current timestamp as the latest block might not have been minted (chain halted)\n (msToSeconds(Date.now()) - Number(oldestBlock?.timestamp)) /\n (Number(currentBlock?.number) - Number(oldestBlock?.number))\n );\n}\n","import type { Address, PublicClient } from \"viem\";\n\nimport { lstStakerVaultAbi } from \"@berachain/abis/pol/lst/lstStakerVault\";\n\nimport { assertPublicClient } from \"../../errors/assert\";\nimport type { TokenWithMetadata } from \"../../types/dex\";\nimport type { StakingConfig } from \"../../types/staking\";\nimport { parseBaseArgs } from \"../../utils/parseBaseArgs\";\nimport { isToken } from \"../../utils/tokens\";\n\nexport type GetLSTStakeConfigArgs = {\n tokenList: TokenWithMetadata[];\n publicClient?: PublicClient;\n lstStakingVaults: Address[];\n} & BeraJS.BaseFunctionArgs;\n\n/**\n * Builds staking configs from on-chain LST vaults and optional native configs.\n */\nexport async function getLSTStakeConfig({\n tokenList,\n publicClient,\n lstStakingVaults,\n ...args\n}: GetLSTStakeConfigArgs): Promise<StakingConfig[]> {\n assertPublicClient(publicClient);\n\n const { config } = parseBaseArgs({\n ...args,\n chainId: publicClient.chain?.id ?? args.chainId,\n });\n\n const lstStakingTokens = tokenList.filter((token) =>\n lstStakingVaults.includes(token.address),\n );\n\n if (lstStakingTokens.length === 0) {\n return [];\n }\n\n const assets = await Promise.all(\n lstStakingTokens.map(async (stakingToken) => {\n // read the asset token address from the lst staking vault\n const assetTokenAddress = await publicClient.readContract({\n address: stakingToken.address,\n abi: lstStakerVaultAbi,\n functionName: \"asset\",\n });\n return { assetTokenAddress, stakingToken };\n }),\n );\n\n return assets.reduce<StakingConfig[]>(\n (acc, { assetTokenAddress, stakingToken }) => {\n const assetToken = tokenList.find((token) =>\n isToken(token, assetTokenAddress),\n );\n if (!assetToken) return acc;\n acc.push({\n id: stakingToken.address,\n receiptToken: stakingToken,\n inputTokens: [assetToken],\n });\n return acc;\n },\n [],\n );\n}\n","import type { PublicClient } from \"viem\";\n\nimport { rewardVaultAbi } from \"@berachain/abis/pol/rewards/rewardVault\";\n\nimport { assertPublicClient } from \"../../errors/assert\";\nimport { getRewardVaultBeaconImplementation } from \"./getRewardVaultBeaconImplementation\";\n\nexport interface RewardVaultDurationConstants {\n minRewardDuration: number;\n maxRewardDuration: number;\n}\n\n/**\n * Returns the minimum and maximum reward duration constants for all reward vaults.\n */\nexport async function getRewardVaultDurationConstants({\n publicClient,\n ...baseArgs\n}: BeraJS.BaseFunctionArgs & {\n publicClient: PublicClient;\n}): Promise<RewardVaultDurationConstants> {\n assertPublicClient(publicClient);\n\n const beaconImplementation = await getRewardVaultBeaconImplementation({\n publicClient,\n ...baseArgs,\n });\n\n const [minRewardDuration, maxRewardDuration] = await Promise.all([\n publicClient.readContract({\n address: beaconImplementation,\n abi: rewardVaultAbi,\n functionName: \"MIN_REWARD_DURATION\",\n }),\n publicClient.readContract({\n address: beaconImplementation,\n abi: rewardVaultAbi,\n functionName: \"MAX_REWARD_DURATION\",\n }),\n ]);\n\n return {\n minRewardDuration: Number(minRewardDuration),\n maxRewardDuration: Number(maxRewardDuration),\n };\n}\n","import type { Address, PublicClient } from \"viem\";\n\nimport { rewardVaultFactoryAbi } from \"@berachain/abis/pol/rewards/rewardVaultFactory\";\n\nimport { upgradableBeaconAbi } from \"../../abi/utils/upgradableBeacon\";\nimport { assertAddress, assertDefined } from \"../../errors/assert\";\nimport { parseBaseArgs } from \"../../utils/parseBaseArgs\";\n\n/**\n * Returns the beacon implementation address for all reward vaults.\n */\nexport async function getRewardVaultBeaconImplementation({\n publicClient,\n ...args\n}: BeraJS.BaseFunctionArgs & {\n publicClient: PublicClient;\n}): Promise<Address> {\n const { config } = parseBaseArgs(args);\n const factoryAddress = config.pol.factory;\n assertDefined(publicClient, \"publicClient\");\n assertAddress(config.pol.factory, \"factoryAddress\");\n\n // from the factory contract, we get the beacon address\n const beacon = await publicClient.readContract({\n address: factoryAddress,\n abi: rewardVaultFactoryAbi,\n functionName: \"beacon\",\n });\n\n // from the beacon contract, we get the current implementation address\n return publicClient.readContract({\n address: beacon,\n abi: upgradableBeaconAbi,\n functionName: \"implementation\",\n });\n}\n","export const upgradableBeaconAbi = [\n {\n inputs: [\n { internalType: \"address\", name: \"initialOwner\", type: \"address\" },\n {\n internalType: \"address\",\n name: \"initialImplementation\",\n type: \"address\",\n },\n ],\n stateMutability: \"payable\",\n type: \"constructor\",\n },\n { inputs: [], name: \"NewImplementationHasNoCode\", type: \"error\" },\n { inputs: [], name: \"NewOwnerIsZeroAddress\", type: \"error\" },\n { inputs: [], name: \"Unauthorized\", type: \"error\" },\n {\n anonymous: false,\n inputs: [\n {\n indexed: true,\n internalType: \"address\",\n name: \"oldOwner\",\n type: \"address\",\n },\n {\n indexed: true,\n internalType: \"address\",\n name: \"newOwner\",\n type: \"address\",\n },\n ],\n name: \"OwnershipTransferred\",\n type: \"event\",\n },\n {\n anonymous: false,\n inputs: [\n {\n indexed: true,\n internalType: \"address\",\n name: \"implementation\",\n type: \"address\",\n },\n ],\n name: \"Upgraded\",\n type: \"event\",\n },\n {\n inputs: [],\n name: \"implementation\",\n outputs: [{ internalType: \"address\", name: \"result\", type: \"address\" }],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [],\n name: \"owner\",\n outputs: [{ internalType: \"address\", name: \"result\", type: \"address\" }],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [],\n name: \"renounceOwnership\",\n outputs: [],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [{ internalType: \"address\", name: \"newOwner\", type: \"address\" }],\n name: \"transferOwnership\",\n outputs: [],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [\n { internalType: \"address\", name: \"newImplementation\", type: \"address\" },\n ],\n name: \"upgradeTo\",\n outputs: [],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n] as const;\n","import { type Address, type PublicClient, zeroAddress } from \"viem\";\n\nimport { rewardVaultFactoryAbi } from \"@berachain/abis/pol/rewards/rewardVaultFactory\";\n\nimport { parseBaseArgs } from \"../../utils/parseBaseArgs\";\n\nexport async function getRewardVaultFromToken({\n tokenAddress,\n publicClient,\n factoryAddress,\n ...args\n}: {\n tokenAddress: Address;\n publicClient: PublicClient;\n factoryAddress?: Address;\n} & BeraJS.BaseFunctionArgs) {\n const { config } = parseBaseArgs(args);\n\n const vaultAddress = await publicClient.readContract({\n address: factoryAddress ?? config.pol.factory,\n abi: rewardVaultFactoryAbi,\n functionName: \"getVault\",\n args: [tokenAddress],\n });\n\n if (vaultAddress === zeroAddress) {\n return null;\n }\n\n return vaultAddress;\n}\n","import type { PublicClient } from \"viem\";\n\nimport type { Address } from \"@berachain/config\";\n\nimport { pythPriceOracleAbi } from \"@berachain/abis/extras/pythPriceOracle\";\n\nimport type { PythPriceFeedMap } from \"../../types/honeySwap\";\nimport { parseBaseArgs } from \"../../utils/parseBaseArgs\";\n\n/**\n * Given a list of tokens, it will return the price feed ids for each token according to honey priceOracle\n * @returns\n */\nexport async function getHoneyPythFeeds({\n tokenList,\n publicClient,\n ...args\n}: {\n tokenList: readonly Address[];\n publicClient: PublicClient;\n} & BeraJS.BaseFunctionArgs): Promise<PythPriceFeedMap> {\n const { config } = parseBaseArgs(args);\n\n try {\n const priceFeedIds = await Promise.all(\n tokenList.map((token) =>\n publicClient.readContract({\n address: config.honey.pythOracle,\n abi: pythPriceOracleAbi,\n functionName: \"feeds\",\n args: [token],\n }),\n ),\n );\n\n return tokenList.reduce<PythPriceFeedMap>(\n (acc, token, index) => ({\n ...acc,\n [token]: priceFeedIds[index],\n }),\n {},\n );\n } catch (e) {\n console.error(\"getPythPriceFeedId\", e);\n throw e;\n }\n}\n","import type { TokenWithMetadata } from \"../../types/dex\";\nimport { beraFetchJson } from \"../../utils/beraFetch\";\nimport { parseBaseArgs } from \"../../utils/parseBaseArgs\";\n\nexport async function getTokens({\n url,\n ...args\n}: BeraJS.BaseFunctionArgs & { url?: string } = {}): Promise<\n TokenWithMetadata[]\n> {\n const { config } = parseBaseArgs(args);\n const tokenList = await beraFetchJson<{ tokens: TokenWithMetadata[] }>({\n url: url ?? config.lists.tokenList,\n type: \"rest\",\n name: \"GitHub\",\n });\n\n return tokenList.tokens ?? [];\n}\n","import type { PublicClient } from \"viem\";\n\nimport type { EdgeConfigSchema } from \"@berachain/config/internal/edge-config\";\n\nimport { bgtAbi } from \"@berachain/abis/pol/bgt\";\nimport { beraChefAbi } from \"@berachain/abis/pol/rewards/beraChef\";\n\nimport { parseBaseArgs } from \"../../utils/parseBaseArgs\";\n\nexport interface ActiveBoostAndCommissionChangeDelay {\n boostDelay: number;\n unboostDelay: number;\n commissionChangeDelay: number;\n rewardAllocationBlockDelay: number;\n maxWeightPerVault: number;\n maxNumWeightsPerRewardAllocation: number;\n /**\n * Percentage of the validator's commission rate that can be changed at once.\n *\n * @example 1 => 100%\n */\n maxCommissionRate: number;\n /**\n * The number of blocks after which a reward allocation is considered stale and will fallback\n * to baseline reward allocation.\n *\n */\n rewardAllocationInactivityBlockSpan: number;\n /**\n * The number of hours in advance to warn the operator that the reward allocation is expiring.\n */\n ui: EdgeConfigSchema[\"pol\"][\"automatedRewardAllocation\"];\n}\n\nexport async function getActiveBoostAndCommissionChangeDelay({\n publicClient,\n ui,\n ...args\n}: BeraJS.BaseFunctionArgs &\n Pick<ActiveBoostAndCommissionChangeDelay, \"ui\"> & {\n publicClient: PublicClient;\n }): Promise<ActiveBoostAndCommissionChangeDelay> {\n const { config } = parseBaseArgs(args);\n\n const [\n maxCommissionRate,\n commissionChangeDelay,\n rewardAllocationBlockDelay,\n maxWeightPerVault,\n maxNumWeightsPerRewardAllocation,\n dropBoostDelay,\n activateBoostDelay,\n rewardAllocationInactivityBlockSpan,\n ] = await Promise.all([\n publicClient.readContract({\n address: config.pol.beraChef,\n abi: beraChefAbi,\n functionName: \"MAX_COMMISSION_RATE\",\n }),\n publicClient.readContract({\n address: config.pol.beraChef,\n abi: beraChefAbi,\n functionName: \"commissionChangeDelay\",\n }),\n publicClient.readContract({\n address: config.pol.beraChef,\n abi: beraChefAbi,\n functionName: \"rewardAllocationBlockDelay\",\n }),\n publicClient.readContract({\n address: config.pol.beraChef,\n abi: beraChefAbi,\n functionName: \"maxWeightPerVault\",\n }),\n publicClient.readContract({\n address: config.pol.beraChef,\n abi: beraChefAbi,\n functionName: \"maxNumWeightsPerRewardAllocation\",\n }),\n publicClient.readContract({\n address: config.tokens.bgt,\n abi: bgtAbi,\n functionName: \"dropBoostDelay\",\n }),\n publicClient.readContract({\n address: config.tokens.bgt,\n abi: bgtAbi,\n functionName: \"activateBoostDelay\",\n }),\n publicClient.readContract({\n address: config.pol.beraChef,\n abi: beraChefAbi,\n functionName: \"rewardAllocationInactivityBlockSpan\",\n }),\n ]);\n\n return {\n maxCommissionRate: Number(maxCommissionRate) / 1e4,\n boostDelay: Number(activateBoostDelay),\n unboostDelay: Number(dropBoostDelay),\n commissionChangeDelay: Number(commissionChangeDelay),\n rewardAllocationBlockDelay: Number(rewardAllocationBlockDelay),\n maxWeightPerVault: Number(maxWeightPerVault) / 1e4,\n maxNumWeightsPerRewardAllocation: Number(maxNumWeightsPerRewardAllocation),\n rewardAllocationInactivityBlockSpan: Number(\n rewardAllocationInactivityBlockSpan,\n ),\n ui,\n };\n}\n","import type {\n ApiMinimalVaultIncentiveFragment,\n ApiValidatorRewardAllocationWeightFragment,\n} from \"@berachain/graphql/pol/api\";\nimport BigNumber from \"@berachain/utils/pkg/bignumber.js\";\n\nexport function aggregateValidatorIncentives({\n rewardAllocationWeights,\n activeOnly = true,\n}: {\n rewardAllocationWeights: ApiValidatorRewardAllocationWeightFragment[];\n activeOnly?: boolean;\n}): ApiMinimalVaultIncentiveFragment[] {\n const map = rewardAllocationWeights\n .filter((x) => x?.receivingVault)\n\n .reduce((acc, rv) => {\n for (const incentive of rv.receivingVault?.activeIncentives ?? []) {\n if (activeOnly && incentive.remainingAmount === \"0\") {\n continue;\n }\n const incentiveRate = new BigNumber(incentive.incentiveRate).times(\n rv.percentage,\n );\n\n const incentiveRateUsd = new BigNumber(\n incentive.incentiveRateUsd,\n ).times(rv.percentage);\n\n const token = incentive.token.address.toLowerCase();\n\n const existing = acc.get(token);\n if (existing) {\n acc.set(token, {\n ...existing,\n incentiveRate: new BigNumber(existing.incentiveRate)\n .plus(incentiveRate)\n .toString(),\n incentiveRateUsd: new BigNumber(existing.incentiveRateUsd)\n .plus(incentiveRateUsd)\n .toString(),\n remainingAmount: new BigNumber(existing.remainingAmount)\n .plus(incentive.remainingAmount)\n .toString(),\n remainingAmountUsd: new BigNumber(existing.remainingAmountUsd)\n .plus(incentive.remainingAmountUsd)\n .toString(),\n });\n } else {\n acc.set(token, {\n ...incentive,\n tokenAddress: incentive.token.address,\n token: incentive.token,\n incentiveRate: incentiveRate.toString(),\n incentiveRateUsd: incentiveRateUsd.toString(),\n remainingAmount: incentive.remainingAmount,\n });\n }\n }\n return acc;\n }, new Map<string, ApiMinimalVaultIncentiveFragment>());\n\n return Array.from(map.values());\n}\n","import type { ApiValidatorFragment } from \"@berachain/graphql/pol/api\";\n\nexport function getValidatorReturnPerBgt(\n validator: Pick<\n ApiValidatorFragment,\n \"dynamicData\" | \"rewardAllocationWeights\"\n >,\n): number {\n return validator?.rewardAllocationWeights?.reduce((acc, ab) => {\n if (!ab) return acc;\n\n const totalIncentiveValue =\n ab.receivingVault?.activeIncentives\n .filter((inc) => Number(inc.remainingAmount) > 0)\n .reduce((totalIncentiveValue, currIncentive) => {\n const tokenPrice =\n Number(currIncentive.remainingAmountUsd) /\n Number(currIncentive.remainingAmount);\n\n return (\n totalIncentiveValue +\n Number(currIncentive.incentiveRate) * tokenPrice\n );\n }, 0) ?? 0;\n\n return acc + totalIncentiveValue * ab.percentage;\n }, 0);\n}\n\nexport function getValidatorBoostApy({\n validator,\n bgtPrice,\n}: {\n validator: Pick<\n ApiValidatorFragment,\n \"dynamicData\" | \"rewardAllocationWeights\"\n >;\n bgtPrice: number;\n}): number {\n const validatorActiveBoostAmount = Number(\n validator.dynamicData?.activeBoostAmount ?? 0,\n );\n\n const returnPerBgt = getValidatorReturnPerBgt(validator);\n\n if (!returnPerBgt || !validatorActiveBoostAmount) {\n // As of now, a validator cannot send rewards to the vaults if it has no active boost amount\n // If baseRate changes on chain, we should update this function\n return 0;\n }\n\n const boostApy =\n (returnPerBgt *\n Number(validator.dynamicData?.lastDayDistributedBGTAmount ?? 0) *\n 365) /\n (validatorActiveBoostAmount * bgtPrice);\n\n return boostApy;\n}\n"],"mappings":"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","names":["formatEther","metaMorphoAbi","getMaxDeposit","vaultAddress","publicClient","maxDeposit","mapPoolType","getPoolState","apiPool","pt","balancerVaultAbi","getVaultPausedState","publicClient","args","config","parseBaseArgs","balancerVaultAbi","decodeFunctionData","erc20Abi","pad","toFunctionSignature","trim","appConfig","defaultChainId","beraChefAbi","rewardVaultAbi","isProxyABI","abi","item","i","_getAbi","contractAddress","chainId","publicClient","url","response","data","implementationResult","implementationAddress","_getAbiForCallData","address","callData","knownAbi","_decodeCallData","_findAbiItem","functionName","a","_getFunctionSignature","abiItem","error","getDecodedFunctionData","decodedData","functionSignature","formatUnits","honeyFactoryAbi","getHoneyFees","client","collateralList","args","config","parseBaseArgs","promiseList","coll","honeyFactoryAbi","mintRates","redeemRates","collateralWeights","acc","collIdx","formatUnits","e","honeyAbi","getHoneyPausedState","client","args","config","parseBaseArgs","honeyAddress","honeyAbi","honeyRootOracleAbi","getHoneyPythOracle","pythOracle","publicClient","honeyFactoryAbi","getHoneyRootPriceOracle","publicClient","factory","args","config","parseBaseArgs","honeyFactoryAbi","getBlockTime","defaultBlockTime","publicClient","blocksSpan","args","assertPublicClient","config","parseBaseArgs","blockTime","span","hoursInSeconds","currentBlock","oldestBlock","msToSeconds","lstStakerVaultAbi","getLSTStakeConfig","tokenList","publicClient","lstStakingVaults","args","assertPublicClient","config","parseBaseArgs","lstStakingTokens","token","stakingToken","lstStakerVaultAbi","acc","assetTokenAddress","assetToken","isToken","rewardVaultAbi","rewardVaultFactoryAbi","upgradableBeaconAbi","getRewardVaultBeaconImplementation","publicClient","args","config","parseBaseArgs","factoryAddress","assertDefined","assertAddress","beacon","rewardVaultFactoryAbi","upgradableBeaconAbi","getRewardVaultDurationConstants","publicClient","baseArgs","assertPublicClient","beaconImplementation","getRewardVaultBeaconImplementation","minRewardDuration","maxRewardDuration","rewardVaultAbi","zeroAddress","rewardVaultFactoryAbi","getRewardVaultFromToken","tokenAddress","publicClient","factoryAddress","args","config","parseBaseArgs","vaultAddress","rewardVaultFactoryAbi","zeroAddress","pythPriceOracleAbi","getHoneyPythFeeds","tokenList","publicClient","args","config","parseBaseArgs","priceFeedIds","token","pythPriceOracleAbi","acc","index","e","getTokens","url","args","config","parseBaseArgs","beraFetchJson","bgtAbi","beraChefAbi","getActiveBoostAndCommissionChangeDelay","publicClient","ui","args","config","parseBaseArgs","maxCommissionRate","commissionChangeDelay","rewardAllocationBlockDelay","maxWeightPerVault","maxNumWeightsPerRewardAllocation","dropBoostDelay","activateBoostDelay","rewardAllocationInactivityBlockSpan","beraChefAbi","bgtAbi","aggregateValidatorIncentives","rewardAllocationWeights","activeOnly","map","x","acc","rv","incentive","incentiveRate","bignumber_js_default","incentiveRateUsd","token","existing","getValidatorReturnPerBgt","validator","acc","ab","totalIncentiveValue","inc","currIncentive","tokenPrice","getValidatorBoostApy","bgtPrice","validatorActiveBoostAmount","returnPerBgt"]}
@@ -0,0 +1,4 @@
1
+ "use strict";Object.defineProperty(exports, "__esModule", {value: true}); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } function _nullishCoalesce(lhs, rhsFn) { if (lhs != null) { return lhs; } else { return rhsFn(); } } async function _asyncNullishCoalesce(lhs, rhsFn) { if (lhs != null) { return lhs; } else { return await rhsFn(); } } function _optionalChain(ops) { let lastAccessLHS = undefined; let value = ops[0]; let i = 1; while (i < ops.length) { const op = ops[i]; const fn = ops[i + 1]; i += 2; if ((op === 'optionalAccess' || op === 'optionalCall') && value == null) { return undefined; } if (op === 'access' || op === 'optionalAccess') { lastAccessLHS = value; value = fn(value); } else if (op === 'call' || op === 'optionalCall') { value = fn((...args) => value.call(lastAccessLHS, ...args)); lastAccessLHS = undefined; } } return value; } async function _asyncOptionalChain(ops) { let lastAccessLHS = undefined; let value = ops[0]; let i = 1; while (i < ops.length) { const op = ops[i]; const fn = ops[i + 1]; i += 2; if ((op === 'optionalAccess' || op === 'optionalCall') && value == null) { return undefined; } if (op === 'access' || op === 'optionalAccess') { lastAccessLHS = value; value = await fn(value); } else if (op === 'call' || op === 'optionalCall') { value = await fn((...args) => value.call(lastAccessLHS, ...args)); lastAccessLHS = undefined; } } return value; } var _class;var _chunkOUD27MU7cjs = require('./chunk-OUD27MU7.cjs');var _chunkREWME3FYcjs = require('./chunk-REWME3FY.cjs');var _chunkLVOXBZMAcjs = require('./chunk-LVOXBZMA.cjs');var _chunk6DIA6PXVcjs = require('./chunk-6DIA6PXV.cjs');var _chunkSFEULGSXcjs = require('./chunk-SFEULGSX.cjs');var _chunkS4CDSVLKcjs = require('./chunk-S4CDSVLK.cjs');var _chunk6JJIZCVYcjs = require('./chunk-6JJIZCVY.cjs');var _viem = require('viem');var _metaMorphoV11 = require('@berachain/abis/bend-metamorpho/metaMorphoV11');async function Ao({sharesAmount:e,vaultAddress:t,publicClient:r}){let a=await r.readContract({address:t,abi:_metaMorphoV11.metaMorphoV11Abi,functionName:"convertToAssets",args:[e]});return{raw:a,formatted:_viem.formatEther.call(void 0, a)}}var _client = require('@apollo/client');var _internal = require('@berachain/config/internal');var me=class extends _client.ApolloClient{constructor(t){super(t),this.url=t.url,this.serviceName=t.name}async query(t){let r=_t(t.query),a={url:this.url,type:"graphql",name:this.serviceName},o={"operation.type":"query","operation.source.name":a.name,"operation.source.url":a.url,"operation.source.type":a.type,"operation.source.queryName":r};try{let n=()=>super.query(t),s=await _chunkS4CDSVLKcjs.a.startSpan({name:`GraphQL ${r}`,op:"BeraApolloClient.query",attributes:o},n);if(s.error||s.data===void 0)throw new (0, _chunk6JJIZCVYcjs.f)({level:"fatal",tags:o,message:"Bera Apollo Client: No data returned from query, but error should be thrown since errorPolicy is none"});return{data:s.data}}catch(n){throw!_internal.appConfig.env.isProduction&&console.error("BeraApolloClient error",n),_client.ServerError.is(n)?new (0, _chunk6JJIZCVYcjs.g)({response:n.response,cause:n,statusCode:n.statusCode,endpoint:a,tags:o}):n instanceof TypeError?new (0, _chunk6JJIZCVYcjs.g)({level:"fatal",reason:"TypeError",response:n,cause:n,endpoint:a,tags:o}):new (0, _chunk6JJIZCVYcjs.g)({response:n,tags:o,cause:n,endpoint:a})}}};function _t(e){return _optionalChain([e, 'access', _2 => _2.definitions, 'access', _3 => _3.find, 'call', _4 => _4(r=>r.kind==="OperationDefinition"), 'optionalAccess', _5 => _5.name, 'optionalAccess', _6 => _6.value])}var _http = require('@apollo/client/link/http');var _config = require('@berachain/config');var _api = require('@berachain/graphql/dex/api'); var _api2 = _interopRequireDefault(_api);function Yt(e){let t=typeof e=="string"?void 0:e.headers,r=!!_internal.currentDapp,a=process.env.VERCEL_ENV==="test",o=_config.getUriFromLink.call(void 0, e),n=typeof e=="string"?"unknown":e.name;return{uri:o,name:n,headers:{...t,"x-graphql-client-name":`berachain.${r?"dapps":a?"test":"berajs"}`,"x-graphql-client-version":`${process.env.VERCEL_TARGET_ENV}.${process.env.VERCEL_GIT_COMMIT_SHA}`}}}function _(e,{ssrMode:t,inMemoryCacheOptions:r}={}){let a=_config.getUriFromLink.call(void 0, e),o=typeof e=="string"?void 0:e.headers,n=typeof e=="string"?void 0:e.name;return!n&&a.includes(_internal.goldskyBaseUrl)&&(n=a.replace(_internal.goldskyBaseUrl,"").replace("/gn","")),new me({url:a,name:_nullishCoalesce(n, () => ("unknown")),link:new (0, _http.HttpLink)({uri:a,headers:o}),defaultOptions:{query:{errorPolicy:"none",fetchPolicy:"no-cache"}},cache:new (0, _client.InMemoryCache)(r),ssrMode:t})}function b(e,{...t}){let{config:r}=_chunkSFEULGSXcjs.a.call(void 0, t);switch(e){case"api":return _(Yt(r.api),{inMemoryCacheOptions:{possibleTypes:_api2.default.possibleTypes}});case"bend.whisk":if(!r.bend.whiskApi)throw new (0, _chunk6JJIZCVYcjs.f)({message:"Bend whisk API is not configured on this chain",level:"error"});return _(r.bend.whiskApi);case"honey.subgraph":return _(r.honey.subgraph);case"pol.subgraph":return _(r.pol.subgraph);case"pol.fees":return _(r.pol.feesSubgraph);case"governance.subgraph":return _(r.governance.subgraph);case"bex.subgraph":return _(r.bex.subgraph)}}var ze= (_class =class e{static __initStatic() {this.PATH_NOT_FOUND_REASON="NO_SWAP_PATHS"}__init() {this.needsAccountForQuote=!1}__init2() {this.notFoundMessages=[]}constructor(t={}){;_class.prototype.__init.call(this);_class.prototype.__init2.call(this);_class.prototype.__init3.call(this);let{config:r,chainId:a}=_chunkSFEULGSXcjs.a.call(void 0, t);this.config=r,this.chainId=a}__init3() {this.url=""}parseAddresses(t,r){if(!_viem.isAddress.call(void 0, t)||!_viem.isAddress.call(void 0, r))throw new (0, _chunk6JJIZCVYcjs.f)({message:`Invalid address: ${t} or ${r}`,level:"error"});return{tokenInAddress:_chunkSFEULGSXcjs.e.call(void 0, t,"BERA")?this.config.tokens.wbera:t,tokenOutAddress:_chunkSFEULGSXcjs.e.call(void 0, r,"BERA")?this.config.tokens.wbera:r,isTokenInNative:_chunkSFEULGSXcjs.e.call(void 0, t,"BERA"),isTokenOutNative:_chunkSFEULGSXcjs.e.call(void 0, r,"BERA")}}getAmountAfterFees(t,r){if(r===void 0)throw new (0, _chunk6JJIZCVYcjs.f)({message:"aggregatorsFeeBps is required",level:"error"});let a=new (0, _chunk6DIA6PXVcjs.a)(t).times(r).dividedBy(1e4).toFixed(0,_chunk6DIA6PXVcjs.a.ROUND_DOWN);return new (0, _chunk6DIA6PXVcjs.a)(t).minus(a).toFixed(0,_chunk6DIA6PXVcjs.a.ROUND_DOWN)}getInputData({tokenIn:t,amountIn:r,isNative:a,isPermit2Approval:o=!1,permit2SpenderAddress:n}){return{tokenIn:t,amountIn:BigInt(r),isNative:a,isPermit2Approval:o,permit2SpenderAddress:_nullishCoalesce(n, () => (_viem.zeroAddress))}}getMinAmountOut(t,r){if(r===void 0)throw new (0, _chunk6JJIZCVYcjs.f)({message:"slippage is required",level:"error"});let a=new (0, _chunk6DIA6PXVcjs.a)(t).times(1-r/100);return a.isNaN()||a.isZero()?0n:BigInt(a.toFixed(0))}parseAllowanceRequirements({tokenIn:t,rawAmount:r,spender:a}){return _chunkSFEULGSXcjs.e.call(void 0, t,"BERA")?[]:[{token:t,amount:{raw:r,formatted:_viem.formatUnits.call(void 0, BigInt(r),t.decimals)},spender:a}]}checkChainSupport({tokenIn:t,tokenOut:r}){return this.supportedChains===null?!0:this.supportedChains.includes(t.chainId)&&this.supportedChains.includes(r.chainId)}assertChainSupport({tokenIn:t,tokenOut:r,underlyingToken:a}){if(!this.checkChainSupport({tokenIn:t,tokenOut:r,underlyingToken:a}))throw new (0, _chunk6JJIZCVYcjs.f)({message:`${this.name} does not support tokens chain ID: ${t.chainId} and ${r.chainId}`,level:"error"})}async fetch(t,r){try{return await _chunk6DIA6PXVcjs.c.call(void 0, {url:t,name:this.name,type:this.type},{method:"GET",headers:{"Content-Type":"application/json"},...r})}catch(a){let o=_chunkLVOXBZMAcjs.a.call(void 0, {cause:a});throw this.notFoundMessages.some(n=>o.message.includes(n))&&(o.reason=e.PATH_NOT_FOUND_REASON),o}}}, _class.__initStatic(), _class);var _berancersdk = require('@berachain-foundation/berancer-sdk');var _chains = require('viem/chains');for(let e of Object.keys(_internal.chainConfigs)){let{config:t,chainId:r}=_chunkSFEULGSXcjs.a.call(void 0, {chainId:Number(e)});_berancersdk.API_CHAIN_NAMES[r]=t.bex.chainName,_berancersdk.CHAINS[r]=r===_chains.berachain.id?_chains.berachain:_chains.berachainBepolia,_berancersdk.BALANCER_RELAYER[r]=t.bex.relayer,_berancersdk.VAULT[r]=t.bex.vault,_berancersdk.BALANCER_QUERIES[r]=t.bex.queries,_berancersdk.WEIGHTED_POOL_FACTORY_BALANCER_V2[r]=_viem.zeroAddress,_berancersdk.COMPOSABLE_STABLE_POOL_FACTORY[r]=_viem.zeroAddress;let a=new (0, _berancersdk.Token)(r,_viem.zeroAddress,_chunkSFEULGSXcjs.b.decimals,_chunkSFEULGSXcjs.b.name,_chunkSFEULGSXcjs.b.symbol,t.tokens.wbera);_berancersdk.NATIVE_ASSETS[r]=a}var _api3 = require('@berachain/graphql/pol/api');async function an({textSearch:e,chain:t,first:r,orderBy:a,orderDirection:o,skip:n,fetchPolicy:s,userAddress:i,blacklistedPoolIds:l,...d}={}){let{config:u}=_chunkSFEULGSXcjs.a.call(void 0, d),f=await b("api",d).query({query:_api.GetPools,variables:{textSearch:e,chain:_nullishCoalesce(t, () => (u.bex.chainName)),first:r,orderBy:_nullishCoalesce(a, () => (_api3.GqlPoolOrderBy.TotalLiquidity)),orderDirection:_nullishCoalesce(o, () => (_api3.GqlPoolOrderDirection.Desc)),skip:n,userAddress:i,blacklistedPoolIds:l},fetchPolicy:s});return{pools:_nullishCoalesce(f.data.poolGetPools, () => ([])),count:_nullishCoalesce(f.data.count, () => (0))}}async function un({poolId:e,account:t,...r}){let{config:a}=_chunkSFEULGSXcjs.a.call(void 0, r),s=(await b("api",r).query({query:_api.GetPool,variables:{id:e,userAddress:t,chain:a.bex.chainName},fetchPolicy:"no-cache"})).data.poolGetPool;if(!s)throw new Error(`Pool not found for id: ${e} and user ${t}`);return s}async function fn(e={}){let{config:t}=_chunkSFEULGSXcjs.a.call(void 0, e);return(await b("api",e).query({query:_api.GetGlobalLiquidityAndSwapVolume,variables:{chain:t.bex.chainName}})).data}async function Ze({publicClient:e,poolAddress:t}){let r=_berancersdk.weightedPoolV4Abi_V2,a=await e.multicall({contracts:[{address:t,abi:r,functionName:"inRecoveryMode"},{address:t,abi:r,functionName:"getPausedState"}],allowFailure:!1});return{isPoolInRecoveryMode:a[0],isPoolPaused:a[1][0]}}async function Rn({poolId:e,publicClient:t,...r}){let{config:a}=_chunkSFEULGSXcjs.a.call(void 0, r),o=e.slice(0,42);if(!_viem.isAddress.call(void 0, o)||!_viem.isHex.call(void 0, e))throw new (0, _chunk6JJIZCVYcjs.h)({property:"poolId",value:e,expected:"Hex"});try{let[n,s,i,l,d,u,m,f,g]=await Promise.all([t.readContract({address:o,abi:_viem.erc20Abi,functionName:"name"}),t.readContract({address:a.bex.vault,abi:_berancersdk.vaultV2Abi,functionName:"getPoolTokens",args:[e]}),t.readContract({address:o,abi:_viem.erc20Abi,functionName:"totalSupply"}),t.readContract({address:o,abi:_berancersdk.weightedPoolV4Abi_V2,functionName:"getSwapFeePercentage"}),t.readContract({address:o,abi:_berancersdk.weightedPoolV4Abi_V2,functionName:"version"}),t.readContract({address:o,abi:_berancersdk.weightedPoolV4Abi_V2,functionName:"decimals"}),t.readContract({address:a.bex.factories.composableStable,abi:_berancersdk.weightedPoolFactoryAbi_V3,functionName:"isPoolFromFactory",args:[o]}),t.readContract({address:a.bex.factories.weighted,abi:_berancersdk.weightedPoolFactoryAbi_V3,functionName:"isPoolFromFactory",args:[o]}),Ze({publicClient:t,poolAddress:o})]),p=Number(u),A=JSON.parse(d),h,P,y;if(m?[h,y]=await Promise.all([t.readContract({address:o,abi:[{type:"function",name:"getActualSupply",stateMutability:"view",inputs:[],outputs:[{type:"uint256"}]}],functionName:"getActualSupply"}),t.readContract({address:o,abi:_berancersdk.stablePoolAbi_V3,functionName:"getAmplificationParameter"})]):A.name==="WeightedPool"&&(P=await t.readContract({address:o,abi:_berancersdk.weightedPoolV4Abi_V2,functionName:"getNormalizedWeights"})),!m&&!f)throw new Error(`Pool ${o} is not a valid BEX pool`);return{name:n,address:o,id:e,poolTokens:[s[0],s[1].map(String),Number(s[2])],totalSupply:_viem.formatUnits.call(void 0, _nullishCoalesce(h, () => (i)),p),swapFee:_viem.formatEther.call(void 0, l),decimals:p,weights:_optionalChain([P, 'optionalAccess', _7 => _7.map, 'call', _8 => _8(I=>_viem.formatEther.call(void 0, I))]),version:A,factory:m?a.bex.factories.composableStable:a.bex.factories.weighted,type:m?_api3.GqlPoolType.Stable:_api3.GqlPoolType.Weighted,amplificationParameter:y?[Number(y[0]),y[1],Number(y[2])]:void 0,pausedState:g}}catch(n){throw _chunkLVOXBZMAcjs.a.call(void 0, {cause:n})}}async function xn({poolId:e,typeInArray:t,...r}){let{config:a}=_chunkSFEULGSXcjs.a.call(void 0, r);return(await b("api",r).query({query:_api.GetPoolEvents,variables:{poolId:e,typeIn:t,chain:a.bex.chainName}})).data}async function qn({poolId:e,chain:t,...r}){if(!e||!_viem.isHex.call(void 0, e))throw new (0, _chunk6JJIZCVYcjs.h)({property:"poolId",value:e,expected:"hex string"});let a=b("api",r),{data:o}=await a.query({query:_api.GetPoolHistoricalData,variables:{poolId:e,chain:t}});return o.poolGetSnapshots}function Y({fieldOrType:e,value:t,required:r=!0,baseUrl:a,components:o}){if(!["bool","string"].includes(e)&&r&&(t==null||t===""))return"Required";if(e.startsWith("uint")||e.startsWith("int")){if(typeof t!="string")return"Invalid amount";try{let s=BigInt(t);if(e.startsWith("uint")&&s<0n)return"Negative amount"}catch (e2){return"Invalid amount"}return null}switch(e){case"string":return t!==void 0&&typeof t!="string"?"Invalid amount":null;case"bool":return typeof t!="boolean"?"Invalid amount":null;case"title":return typeof t!="string"||t.length===0?"Required":null;case"description":return typeof t!="string"||t.length===0?"Required":null;case"forumLink":{if(typeof t!="string"||t.length===0)return"Required";if(!URL.canParse(t))return"Invalid address";let s=new URL(a);return t.startsWith(s.toString())?null:"Must be a berachain forum link"}case"address":return typeof t!="string"||!_viem.isAddress.call(void 0, t,{strict:!0})?"Invalid address":null;case"hex":return typeof t!="string"||!_viem.isHex.call(void 0, t,{strict:!0})?"Invalid address":null;case"abi":if(typeof t!="string")return"Invalid ABI";try{JSON.parse(t)}catch (e3){return"Invalid ABI"}return null;case"action":return typeof t!="string"||!_viem.isAddress.call(void 0, t,{strict:!0})?"Invalid address":null;case"tuple":if(typeof t=="object"&&Array.isArray(o)){let s={};for(let i of o){let l=i,d=l.name;s[d]=Y({fieldOrType:l.type,value:t[d],components:l.components})}return Object.values(s).every(i=>i===null)?null:s}return null;case"tuple[]":if(Array.isArray(t)){let s=t.map(i=>Y({fieldOrType:"tuple",value:i,components:o}));return s.every(i=>i===null)?null:s}return null;case"logoURI":return t===void 0||t===""?null:typeof t!="string"||!URL.canParse(t)||new URL(t).protocol!=="https:"?"Must be HTTPS or IPFS":null;case"url":return t===void 0||t===""?null:typeof t!="string"||!URL.canParse(t)||new URL(t).protocol!=="https:"?"Must be HTTPS":null;default:return console.error(`Invalid field or type: ${e}`),null}}var _governance = require('@berachain/graphql/governance');var Rr=!1,Ln= exports.o =[_governance.ProposalStatus.Active,_governance.ProposalStatus.PendingQueue,_governance.ProposalStatus.PendingExecution,_governance.ProposalStatus.Defeated,_governance.ProposalStatus.QuorumNotReached];function fe(e,t){let r=Date.now()/1e3;if(t!==void 0){if(e.status===_governance.ProposalStatus.CanceledByGuardian)return _governance.ProposalStatus.CanceledByGuardian;if(t===2)return Number(e.voteStartAt)<r?_governance.ProposalStatus.CanceledByUser:_governance.ProposalStatus.CanceledByGuardian;if(t===3)return e.pollResult?!e.quorum||BigInt(e.quorum)>BigInt(e.pollResult.totalTowardsQuorum)?_governance.ProposalStatus.QuorumNotReached:_governance.ProposalStatus.Defeated:_governance.ProposalStatus.QuorumNotReached;if(t===4)return _governance.ProposalStatus.PendingQueue;if(t===5)return Number(e.queueEnd)<Date.now()/1e3?_governance.ProposalStatus.PendingExecution:_governance.ProposalStatus.InQueue;if(t===6)return console.warn("Unexpected expired state on proposal id: ",e.id),_governance.ProposalStatus.Defeated}return e.status===_governance.ProposalStatus.InQueue&&Number(e.queueEnd)<Date.now()/1e3?_governance.ProposalStatus.PendingExecution:Rr&&t===1&&e.quorum&&BigInt(e.quorum)<BigInt(e.pollResult.totalTowardsQuorum)&&Number(e.pollResult.forPercentage)>Number(e.pollResult.againstPercentage)?_governance.ProposalStatus.PendingQueue:e.status===_governance.ProposalStatus.Pending?Number(e.voteStartAt)<r&&Number(e.voteEndAt)>r?_governance.ProposalStatus.Active:Number(e.voteEndAt)<r?e.pollResult?!e.quorum||BigInt(e.quorum)>BigInt(e.pollResult.totalTowardsQuorum)?_governance.ProposalStatus.QuorumNotReached:_optionalChain([e, 'access', _9 => _9.pollResult, 'optionalAccess', _10 => _10.against])>_optionalChain([e, 'access', _11 => _11.pollResult, 'optionalAccess', _12 => _12.for])?_governance.ProposalStatus.Defeated:_governance.ProposalStatus.PendingQueue:_governance.ProposalStatus.QuorumNotReached:_governance.ProposalStatus.Pending:e.status===_governance.ProposalStatus.Active&&Number(e.voteEndAt)<r?!e.quorum||BigInt(e.quorum)>BigInt(e.pollResult.totalTowardsQuorum)?_governance.ProposalStatus.QuorumNotReached:BigInt(_nullishCoalesce(_optionalChain([e, 'access', _13 => _13.pollResult, 'optionalAccess', _14 => _14.against]), () => (0n)))>BigInt(_nullishCoalesce(_optionalChain([e, 'access', _15 => _15.pollResult, 'optionalAccess', _16 => _16.for]), () => (0n)))?_governance.ProposalStatus.Defeated:_governance.ProposalStatus.PendingQueue:e.status===_governance.ProposalStatus.InQueue&&Number(e.queueEnd)<Date.now()/1e3?_governance.ProposalStatus.PendingExecution:e.status}async function Jn({where:e,orderBy:t,orderDirection:r,offset:a=0,perPage:o=20,text:n,...s}){try{if(o>1e3)throw new Error("perPage must be less than 1000");let i=b("governance.subgraph",s),[l]=await Promise.all([n?i.query({query:_governance.SearchProposals,variables:{offset:a,limit:o,where:e,text:n}}):i.query({query:_governance.GetProposals,variables:{offset:a,limit:o,where:e,orderBy:t,orderDirection:r}})]);return l.data.proposals.map(d=>({...d,status:fe(d)}))}catch(i){throw console.error("getAllProposals:",i),i}}function Kn({proposal:e,currentTopic:t}){let r={};return r.title=Y({fieldOrType:"title",value:e.title}),r.description=Y({fieldOrType:"description",value:e.description}),r.forumLink=Y({fieldOrType:"forumLink",value:e.forumLink,baseUrl:t.forumLink}),r}async function ei({proposalId:e,...t}){let a=await b("governance.subgraph",t).query({query:_governance.GetProposal,variables:{id:e}});if(a.data.proposal)return{...a.data.proposal,status:fe(a.data.proposal)}}var _graymatter = require('gray-matter'); var _graymatter2 = _interopRequireDefault(_graymatter);function Nr(e){let t=/#(?:([\w-]+)# )?(.+)\n([\s\S]*)/,r=e.match(t);if(r){let a=r[1]||null,o=r[2],n=r[3].replace(`
2
+ `,"<br />");return{type:a,title:o,content:n}}throw new Error("Invalid proposal body")}function it(e){if(!e)return{isFrontMatter:!1,data:{title:"Loading..."},content:"",matter:"",language:"",orig:"",stringify:()=>""};let t=_nullishCoalesce(_optionalChain([e, 'optionalAccess', _17 => _17.description]), () => (""));if(_graymatter2.default.test(t))return{..._graymatter2.default.call(void 0, t),isFrontMatter:!0};try{let r=Nr(t);return{isFrontMatter:!1,data:{title:r.title},content:r.content,matter:"",language:"",orig:t,stringify:()=>t}}catch (e4){return{isFrontMatter:!1,data:{title:_optionalChain([e, 'optionalAccess', _18 => _18.description, 'optionalAccess', _19 => _19.split, 'call', _20 => _20(`
3
+ `), 'access', _21 => _21[0], 'access', _22 => _22.slice, 'call', _23 => _23(0,100)])},content:t,matter:"",language:"",orig:t,stringify:()=>t}}}var _berachainGovernance = require('@berachain/abis/gov/berachainGovernance');async function ui(e){_chunkLVOXBZMAcjs.c.call(void 0, e.publicClient);let t;"tx"in e?t=e.tx:t=await e.publicClient.getTransactionReceipt({hash:e.txHash});let r=_optionalChain([t, 'optionalAccess', _24 => _24.logs])?_optionalChain([_viem.parseEventLogs.call(void 0, {abi:_berachainGovernance.berachainGovernanceAbi,logs:t.logs,eventName:"ProposalCreated"}), 'optionalAccess', _25 => _25.at, 'call', _26 => _26(0)]):void 0;if(!t||!r)return null;let a=await e.publicClient.getBlock({blockNumber:t.blockNumber}),o=it({description:_optionalChain([r, 'optionalAccess', _27 => _27.args, 'access', _28 => _28.description])});return{id:String(r.args.proposalId),proposalId:String(_optionalChain([r, 'optionalAccess', _29 => _29.args, 'access', _30 => _30.proposalId])),createdAt:a.timestamp.toString(),title:o.data.title,createdAtBlock:a.timestamp.toString(),voteStartAt:String(_optionalChain([r, 'optionalAccess', _31 => _31.args, 'access', _32 => _32.voteStart])),voteEndAt:String(_optionalChain([r, 'optionalAccess', _33 => _33.args, 'access', _34 => _34.voteEnd])),proposer:_optionalChain([r, 'optionalAccess', _35 => _35.args, 'access', _36 => _36.proposer]),description:o.content,unverifiedForumLink:o.data.forumLink,pollResult:{for:"0",forVotersCount:0,forPercentage:"0",against:"0",againstVotersCount:0,againstPercentage:"0",abstain:"0",abstainVotersCount:0,abstainPercentage:"0",total:"0",totalVotersCount:0,totalTowardsQuorum:"0"},status:_governance.ProposalStatus.Pending,quorum:null,topics:o.data.topics,votes:[],executableCalls:_optionalChain([r, 'optionalAccess', _37 => _37.args, 'access', _38 => _38.targets, 'access', _39 => _39.map, 'call', _40 => _40((n,s)=>({__typename:"ExecutableCall",id:`${t.transactionHash}-${s}`,target:n,value:String(_optionalChain([r, 'optionalAccess', _41 => _41.args, 'access', _42 => _42.values, 'access', _43 => _43[s]])),calldata:_optionalChain([r, 'optionalAccess', _44 => _44.args, 'access', _45 => _45.calldatas, 'access', _46 => _46[s]])}))]),timelock:void 0}}async function pi({variables:e,...t}){return b("governance.subgraph",t).query({query:_governance.GetProposalVotes,variables:e})}var _honey = require('@berachain/graphql/honey');async function yi({days:e,...t}){return(await b("honey.subgraph",t).query({query:_honey.GetSnapshots,variables:{interval:_honey.Aggregation_Interval.Day,first:e}})).data}var _honeyFactory = require('@berachain/abis/honey/honeyFactory');async function Ci({client:e,collateralList:t,...r}){let{config:a}=_chunkSFEULGSXcjs.a.call(void 0, r);try{let o=await e.readContract({address:a.honey.factory,abi:_honeyFactory.honeyFactoryAbi,functionName:"getWeights"});return t.reduce((s,i,l)=>Object.assign(s,{[i.address]:o[l]}),{})}catch(o){throw console.log(o),o}}async function st({address:e,publicClient:t,chainId:r}){try{_chunkLVOXBZMAcjs.c.call(void 0, t);let[a,o,n]=await Promise.all([t.readContract({address:e,abi:_viem.erc20Abi,functionName:"decimals"}),t.readContract({address:e,abi:_viem.erc20Abi,functionName:"name"}),t.readContract({address:e,abi:_viem.erc20Abi,functionName:"symbol"})]);return{address:e,decimals:a,name:o,symbol:n,chainId:r}}catch(a){throw _chunkLVOXBZMAcjs.a.call(void 0, {cause:a})}}async function ke({client:e,tokenData:t,preferredCollateralOrder:r,...a}){let{config:o}=_chunkSFEULGSXcjs.a.call(void 0, a),[n,s]=await Promise.all([e.readContract({address:o.honey.factory,abi:_honeyFactory.honeyFactoryAbi,functionName:"numRegisteredAssets"}),e.readContract({address:o.honey.factory,abi:_honeyFactory.honeyFactoryAbi,functionName:"referenceCollateral"})]),i=[];for(let f=0;f<n;f++)i.push(e.readContract({address:o.honey.factory,abi:_honeyFactory.honeyFactoryAbi,functionName:"registeredAssets",args:[BigInt(f)]}));let l=await Promise.all(i),u=(await Promise.all(l.map(f=>{let g=_optionalChain([t, 'optionalAccess', _47 => _47.find, 'call', _48 => _48(p=>_chunkSFEULGSXcjs.e.call(void 0, p,f))]);return g||st({address:f,chainId:o.chainId,publicClient:e})}))).filter(f=>!!f).sort((f,g)=>l.indexOf(f.address)-l.indexOf(g.address)).map((f,g)=>({...f,order:g}));if(_optionalChain([r, 'optionalAccess', _49 => _49.length])){let f=[];for(let g of r){let p=u.find(A=>_chunkSFEULGSXcjs.e.call(void 0, A.address,g.address));p&&(f.push(p),u.splice(u.indexOf(p),1))}u.unshift(...f)}let m=u.find(f=>_chunkSFEULGSXcjs.e.call(void 0, f,s));if(!u)throw new Error("Collateral tokens not found");if(!m)throw new Error("Reference collateral address not found");return{collaterals:u,referenceCollateral:m}}var _honeyFactoryReader = require('@berachain/abis/honey/honeyFactoryReader');async function ut({client:e,collateral:t,latestPrices:r,isPythWrapperEnabled:a,...o}){let{config:n}=_chunkSFEULGSXcjs.a.call(void 0, o);try{let s=e.readContract({address:n.honey.factory,abi:_honeyFactory.honeyFactoryAbi,functionName:"isBadCollateralAsset",args:[t.address]}),i=e.readContract({address:n.honey.factory,abi:_honeyFactory.honeyFactoryAbi,functionName:"isPegged",args:[t.address]});if(a&&r){let u=r.prices.map(m=>_viem.parseUnits.call(void 0, m,18));i=e.readContract({address:n.honey.reader,abi:_honeyFactoryReader.honeyFactoryReaderAbi,functionName:"isPeggedWithPrice",args:[t.address,u[0]]})}let[l,d]=await Promise.all([s,i]);return{isBlacklisted:l,isDepegged:!d}}catch(s){throw console.log(s),s}}var _collateralVault = require('@berachain/abis/honey/collateralVault');async function re({client:e,asset:t,amount:r,...a}){let{config:o}=_chunkSFEULGSXcjs.a.call(void 0, a);try{let[n,s]=await Promise.all([e.readContract({address:o.honey.factory,abi:_honeyFactory.honeyFactoryAbi,functionName:"vaults",args:[t]}),e.readContract({address:o.honey.factory,abi:_honeyFactory.honeyFactoryAbi,functionName:"collectedFees",args:[o.honey.factory,t]})]);return await e.readContract({address:n,abi:_collateralVault.collateralVaultAbi,functionName:"balanceOf",args:[o.honey.factory]})+_viem.parseEther.call(void 0, _nullishCoalesce(r, () => ("0")))-s}catch(n){throw console.log(n),n}}var Or=_viem.parseEther.call(void 0, "1");async function Yi({client:e,asset:t,amount:r,isMint:a,isPythWrapperEnabled:o,latestPrices:n,...s}){let{config:i}=_chunkSFEULGSXcjs.a.call(void 0, s);try{let l=await e.readContract({address:i.honey.factory,abi:_honeyFactory.honeyFactoryAbi,functionName:"globalCap"});if(l>=Or)return!1;let[{collaterals:d},u]=await Promise.all([ke({client:e}),Mr({client:e,asset:t,amount:r,latestPrices:n,isPythWrapperEnabled:o})]);if(!u)return;for(let m in u)if((a&&_chunkSFEULGSXcjs.e.call(void 0, d[m],t)||!a&&_chunkSFEULGSXcjs.e.call(void 0, d[m],t))&&u[m]>l-_chunk6DIA6PXVcjs.e)return!0;return!1}catch(l){throw console.log(l),l}}async function Mr({client:e,asset:t,amount:r,latestPrices:a,isPythWrapperEnabled:o}){let{collaterals:n}=await ke({client:e}),s=0n,i=[];for(let l of n){let d=await ut({client:e,collateral:t,latestPrices:a,isPythWrapperEnabled:o});if(_optionalChain([d, 'optionalAccess', _50 => _50.isBlacklisted])||_optionalChain([d, 'optionalAccess', _51 => _51.isDepegged]))continue;let u=await re({client:e,asset:l.address,amount:_chunkSFEULGSXcjs.e.call(void 0, l,t)?r:"0"});u&&(s+=u,i.push(u))}if(s===0n)return i;for(let l in n)i[l]=_viem.parseEther.call(void 0, i[l].toString())/s;return i}async function ts({...e}={}){return await _asyncOptionalChain([(await b("honey.subgraph",e).query({query:_honey.GetSnapshots,variables:{interval:_honey.Aggregation_Interval.Hour,first:24}})), 'access', async _52 => _52.data, 'optionalAccess', async _53 => _53.honeySnapshots, 'access', async _54 => _54.reduce, 'call', async _55 => _55((a,o)=>new (0, _chunk6DIA6PXVcjs.a)(o.totalVolume).plus(a),new (0, _chunk6DIA6PXVcjs.a)(0))])}var Jr=(l=>(l.Mint="previewMintHoney",l.MintWithPrice="previewMintHoneyWithPrices",l.RequiredCollateral="previewMintCollaterals",l.RequiredCollateralWithPrice="previewMintCollateralsWithPrices",l.Redeem="previewRedeemCollaterals",l.RedeemWithPrice="previewRedeemCollateralsWithPrices",l.HoneyToRedeem="previewRedeemHoney",l.HoneyToRedeemWithPrice="previewRedeemHoneyWithPrices",l))(Jr||{});async function is({client:e,collateral:t,collateralList:r,amount:a,method:o,latestPrices:n,isPythWrapperEnabled:s,...i}){let{config:l}=_chunkSFEULGSXcjs.a.call(void 0, i);try{let d=o==="previewMintHoney"||o==="previewRedeemHoney"||o==="previewMintHoneyWithPrices"||o==="previewRedeemHoneyWithPrices",u=_viem.parseUnits.call(void 0, a,d?t.decimals:18),m,f=[t.address,u];if(s&&n){let p=n.prices.map(A=>_viem.parseUnits.call(void 0, A,18));f=[t.address,u,p]}if(d){let p=await e.readContract({address:l.honey.reader,abi:_honeyFactoryReader.honeyFactoryReaderAbi,functionName:o,args:f});m={collaterals:p[0],honey:p[1]}}else m={collaterals:await e.readContract({address:l.honey.reader,abi:_honeyFactoryReader.honeyFactoryReaderAbi,functionName:o,args:f}),honey:u};let g=r.reduce((p,A)=>{let h=A.order;return A.address===t.address&&m.collaterals[h]===BigInt(0)?Object.assign(p,{[A.address]:m.collaterals[0]}):Object.assign(p,{[A.address]:m.collaterals[h]})},{});return g[t.address]===BigInt(0)&&(g[t.address]=m.collaterals[0]),{collaterals:g,honey:m.honey}}catch(d){throw console.log("error",d),d}}async function ms({client:e,collateralList:t,honeyFactoryAddress:r,...a}){let{config:o}=_chunkSFEULGSXcjs.a.call(void 0, a),n=_nullishCoalesce(r, () => (o.honey.factory));return await Promise.all(t.map(async i=>{let l=await e.readContract({address:o.honey.factory,abi:_honeyFactory.honeyFactoryAbi,functionName:"vaults",args:[i.address]}),[d,u,[m,f]]=await Promise.all([e.readContract({address:l,abi:_collateralVault.collateralVaultAbi,functionName:"balanceOf",args:[n]}),e.readContract({address:n,abi:_honeyFactory.honeyFactoryAbi,functionName:"collectedAssetFees",args:[i.address]}),e.readContract({address:l,abi:_collateralVault.collateralVaultAbi,functionName:"custodyInfo"})]),g=await e.readContract({address:l,abi:_collateralVault.collateralVaultAbi,functionName:"convertToAssets",args:[d-u]});return{...i,balance:{raw:g.toString(),formatted:_viem.formatUnits.call(void 0, g,i.decimals)},vault:m?f:l}}))}var _hermesclient = require('@pythnetwork/hermes-client');var Yr="https://hermes.pyth.network";async function gt({priceFeedId:e}){let r=await new (0, _hermesclient.HermesClient)(Yr,{}).getLatestPriceUpdates(e,{encoding:"hex",parsed:!0});return{calldata:r.binary.data.map(a=>`0x${a}`),prices:_nullishCoalesce(_optionalChain([r, 'access', _56 => _56.parsed, 'optionalAccess', _57 => _57.flatMap, 'call', _58 => _58(a=>_viem.formatUnits.call(void 0, BigInt(a.price.price),a.price.expo*-1))]), () => ([]))}}async function Ps({client:e,asset:t,amount:r,isMint:a,referenceCollateral:o,...n}){let{config:s}=_chunkSFEULGSXcjs.a.call(void 0, n);if(t===o.address)return!1;try{let[i]=await Promise.all([e.readContract({address:s.honey.factory,abi:_honeyFactory.honeyFactoryAbi,functionName:"relativeCap",args:[t]})]),[l,d]=await Promise.all([re({client:e,asset:t,amount:a?r:void 0}),re({client:e,asset:o.address,amount:a?void 0:r})]);return d===0n?l!==0n:_viem.parseEther.call(void 0, (_nullishCoalesce(l, () => (0n))).toString())/(_nullishCoalesce(d, () => (0n)))>=i-_chunk6DIA6PXVcjs.e}catch(i){throw console.log(i),i}}async function bt({client:e,priceFeedId:t,...r}){let{config:a}=_chunkSFEULGSXcjs.a.call(void 0, r);try{return await e.readContract({address:a.external.pyth,abi:_chunkOUD27MU7cjs.a,functionName:"getUpdateFee",args:[t]})}catch(o){throw console.error("getPythUpdateFee",o),o}}var _honeyFactoryPythWrapper = require('@berachain/abis/honey/honeyFactoryPythWrapper');var Is=async({state:e,publicClient:t,priceFeedMap:r,collateralList:a,isPythWrapperEnabled:o,...n})=>{let{config:s}=_chunkSFEULGSXcjs.a.call(void 0, n),i=_chunkSFEULGSXcjs.d.call(void 0, n),{actionType:l,fromAmount:d,collaterals:u,isBasketModeEnabled:m}=e,f=o?s.honey.pythWrapper:s.honey.factory,g=a.map(p=>p.address);if(d[0]&&g.length){let p=l==="mint";if(o&&t&&r){let h=(await gt({priceFeedId:Object.values(r)})).calldata,P=0n;try{P=await bt({client:t,priceFeedId:h})}catch (e5){P=_chunk6DIA6PXVcjs.k.call(void 0, u.length)}return({account:y})=>{let I=[h,_optionalChain([u, 'access', _59 => _59[0], 'optionalAccess', _60 => _60.address]),_viem.parseUnits.call(void 0, d[0],_nullishCoalesce((p?_optionalChain([u, 'access', _61 => _61[0], 'optionalAccess', _62 => _62.decimals]):_optionalChain([i, 'optionalAccess', _63 => _63.decimals])), () => (18))),y,!!m];return{address:f,abi:_honeyFactoryPythWrapper.honeyFactoryPythWrapperAbi,functionName:p?"mint":"redeem",params:I,value:P}}}return({account:A})=>{let h=[_optionalChain([u, 'access', _64 => _64[0], 'optionalAccess', _65 => _65.address]),_viem.parseUnits.call(void 0, d[0],_nullishCoalesce((p?_optionalChain([u, 'access', _66 => _66[0], 'optionalAccess', _67 => _67.decimals]):_optionalChain([i, 'optionalAccess', _68 => _68.decimals])), () => (18))),A,!!m];return{value:0n,address:f,abi:_honeyFactory.honeyFactoryAbi,functionName:p?"mint":"redeem",params:h}}}throw new Error("Something went wrong while creating the Honey swap payload")};async function Ls({client:e,isMint:t,collateralList:r,latestPrices:a,isPythWrapperEnabled:o,...n}){let{config:s}=_chunkSFEULGSXcjs.a.call(void 0, n);if(o&&a){if(r.length===0)return;let l=a.prices.map(u=>_viem.parseUnits.call(void 0, u,18));return await e.readContract({address:s.honey.reader,abi:_honeyFactoryReader.honeyFactoryReaderAbi,functionName:"isBasketModeEnabledWithPrices",args:[t,l]})}return await e.readContract({address:s.honey.factory,abi:_honeyFactory.honeyFactoryAbi,functionName:"isBasketModeEnabled",args:[t]})}async function _s({block:e,currentBlock:t,blockTime:r,publicClient:a}){if(_chunkLVOXBZMAcjs.b.call(void 0, e,"block"),_chunkLVOXBZMAcjs.c.call(void 0, a),t>e){let n=await a.getBlock({blockNumber:BigInt(e),includeTransactions:!1});return{timestamp:Number(n.timestamp)}}return{timestamp:_chunk6DIA6PXVcjs.l.call(void 0, Date.now())+r*(Number(e)-Number(t))}}var _rewardVault = require('@berachain/abis/pol/rewards/rewardVault');var oa=(a=>(a.Duration="duration",a.TargetRate="targetRate",a.TargetApr="targetApr",a))(oa||{});async function Ys(e,t){let[r,a,o,n,s,i]=await Promise.all([t.readContract({address:e,abi:_rewardVault.rewardVaultAbi,functionName:"rewardsDuration"}),t.readContract({address:e,abi:_rewardVault.rewardVaultAbi,functionName:"rewardVaultManager"}),t.readContract({address:e,abi:_rewardVault.rewardVaultAbi,functionName:"rewardRate"}),t.readContract({address:e,abi:_rewardVault.rewardVaultAbi,functionName:"periodFinish"}),t.readContract({address:e,abi:_rewardVault.rewardVaultAbi,functionName:"targetRewardsPerSecond"}),t.readContract({address:e,abi:_rewardVault.rewardVaultAbi,functionName:"minRewardDurationForTargetRate"})]),l=o*(n-BigInt(_chunk6DIA6PXVcjs.l.call(void 0, Date.now())))/10n**18n;return{rewardsDuration:Number(r),mode:s===0n?"duration":"targetRate",manager:a,rewardRate:_viem.formatUnits.call(void 0, o,36),periodFinish:Number(n),availableRewards:_viem.formatUnits.call(void 0, l,18),minRewardDurationForTargetRate:Number(i),targetRewardsPerSecond:_viem.formatUnits.call(void 0, s,36)}}function ge(e,t,r){return e?r*t*_chunk6DIA6PXVcjs.y.call(void 0, 1)/e:null}function na(e,t,r){return r?e*r/(t*_chunk6DIA6PXVcjs.y.call(void 0, 1)):0}function Zs({availableRewards:e,periodFinish:t,tvl:r,bgtPrice:a,MIN_REWARD_DURATION:o,MAX_REWARD_DURATION:n,...s}){let i=_chunk6DIA6PXVcjs.l.call(void 0, Date.now());if(i>t)return{apr:0,duration:0,rewardRate:0,targetRate:null,periodFinish:0,mode:null};if(s.mode==="targetRate"||s.mode==="targetApr"){let m,{minRewardDurationForTargetRate:f,currentDuration:g}=s;if(s.mode==="targetRate"?m=s.rewardRate:m=na(s.apr,a,r),m===0){let h=Math.min(g,n),P=e?e/h:0;return{apr:ge(r,a,P),duration:h,rewardRate:P,targetRate:null,periodFinish:h+i,mode:"duration"}}let p=f||o,A=e?e/m:0;if(A<p){let h=e?e/p:0;return{apr:ge(r,a,h),duration:p,rewardRate:h,targetRate:h.toString(),periodFinish:p+i,mode:null}}return{apr:ge(r,a,m),duration:A,rewardRate:m,targetRate:m.toString(),periodFinish:A+i,mode:null}}let{duration:l}=s,d=e/l;return{apr:ge(r,a,d),mode:null,targetRate:null,duration:l,rewardRate:d,periodFinish:l+i}}async function ol({address:e,account:t,...r}){let{config:a}=_chunkSFEULGSXcjs.a.call(void 0, r),o=`${_config.getUriFromLink.call(void 0, a.staking)}/vaults/${e}/earnings/${t}`;return _chunk6DIA6PXVcjs.d.call(void 0, {url:o,name:typeof a.staking=="string"?"backend-railway":a.staking.name,type:"rest"})}async function be({filter:e,publicClient:t,...r}={}){let o=await b("api",r).query({query:_api3.GetVaults,variables:e}),n=await Promise.allSettled(o.data.polGetRewardVaults.vaults.map(async i=>{if(t)return Promise.allSettled(i.activeIncentives.map(l=>t.readContract({abi:_rewardVault.rewardVaultAbi,address:i.address,functionName:"incentives",args:[l.tokenAddress]})))})),s=o.data.polGetRewardVaults.vaults.map((i,l)=>{let d=0,u=i.activeIncentives.map((m,f)=>{let g=Number(m.remainingAmountUsd)&&Number(m.remainingAmount)?Number(m.remainingAmountUsd)/Number(m.remainingAmount):0,p=_optionalChain([n, 'access', _69 => _69[l], 'optionalAccess', _70 => _70.status])==="fulfilled"&&_optionalChain([n, 'access', _71 => _71[l], 'optionalAccess', _72 => _72.value, 'optionalAccess', _73 => _73[f], 'optionalAccess', _74 => _74.status])==="fulfilled"?_viem.formatUnits.call(void 0, BigInt(n[l].value[f].value[2]),m.token.decimals):m.remainingAmount;return d+=Number(p)*Number(g),{...m,remainingAmount:p}});return{...i,dynamicData:{...i.dynamicData,allTimeReceivedBGTAmount:_nullishCoalesce(_optionalChain([i, 'access', _75 => _75.dynamicData, 'optionalAccess', _76 => _76.allTimeReceivedBGTAmount]), () => ("0")),bgtCapturePercentage:_nullishCoalesce(_optionalChain([i, 'access', _77 => _77.dynamicData, 'optionalAccess', _78 => _78.bgtCapturePercentage]), () => ("0")),activeIncentivesValueUsd:d.toString(),activeIncentivesRateUsd:_nullishCoalesce(_optionalChain([i, 'access', _79 => _79.dynamicData, 'optionalAccess', _80 => _80.activeIncentivesRateUsd]), () => ("0")),bgtCapturePerBlock:_nullishCoalesce(_optionalChain([i, 'access', _81 => _81.dynamicData, 'optionalAccess', _82 => _82.bgtCapturePerBlock]), () => ("0"))},activeIncentives:u}});return{pagination:o.data.polGetRewardVaults.pagination,gaugeList:s}}async function At(e={}){let{config:t}=_chunkSFEULGSXcjs.a.call(void 0, e),a=await b("api",e).query({query:_api3.GlobalData,variables:{chain:t.bex.chainName}});return{...a.data.polGetGlobalInfo,top3EmittingValidators:a.data.top3EmittingValidators.validators,allValidatorsCount:a.data.allValidatorsCount.pagination.totalCount}}var _bgt = require('@berachain/abis/pol/bgt');async function ht({publicClient:e,...t}){let{config:r}=_chunkSFEULGSXcjs.a.call(void 0, t);_chunkLVOXBZMAcjs.c.call(void 0, e);try{let a=await e.readContract({address:r.tokens.bgt,abi:_bgt.bgtAbi,functionName:"totalBoosts",args:[]});return _viem.formatEther.call(void 0, a)}catch(a){throw console.log(a),a}}async function wt({publicClient:e,...t}){let{config:r}=_chunkSFEULGSXcjs.a.call(void 0, t);_chunkLVOXBZMAcjs.c.call(void 0, e);try{let a=await e.readContract({address:r.tokens.bgt,abi:_viem.erc20Abi,functionName:"totalSupply",args:[]});return _viem.formatEther.call(void 0, _nullishCoalesce(a, () => (0n)))}catch(a){throw console.log(a),a}}async function Ct(e){let{gaugeList:t}=await be({filter:{orderBy:_api3.GqlRewardVaultOrderBy.Apr,orderDirection:_api3.GqlRewardVaultOrderDirection.Desc,pageSize:e,where:{includeNonWhitelisted:!1}}});return t}async function Fl(e){let[t,r,a,o]=await Promise.allSettled([At(),Ct(300),wt({publicClient:e}),ht({publicClient:e})]);return t.status==="rejected"&&_chunkLVOXBZMAcjs.g.captureException(_chunkLVOXBZMAcjs.a.call(void 0, {cause:t.reason,level:"warning"})),r.status==="rejected"&&_chunkLVOXBZMAcjs.g.captureException(_chunkLVOXBZMAcjs.a.call(void 0, {cause:r.reason,level:"warning"})),a.status==="rejected"&&_chunkLVOXBZMAcjs.g.captureException(_chunkLVOXBZMAcjs.a.call(void 0, {cause:a.reason,level:"warning"})),o.status==="rejected"&&_chunkLVOXBZMAcjs.g.captureException(_chunkLVOXBZMAcjs.a.call(void 0, {cause:o.reason,level:"warning"})),{bgtTotalSupply:a.status==="fulfilled"?a.value:void 0,globalCuttingBoard:r.status==="fulfilled"?r.value:[],bgtTotalBoosts:o.status==="fulfilled"?o.value:void 0,...t.status==="fulfilled"?t.value:{}}}var _fees = require('@berachain/graphql/pol/fees');async function Pt({...e}){let t=b("pol.fees",e),{data:r}=await t.query({query:_fees.GetIncentiveFeeClaimStats});if(r.incentiveFeeClaims.length>0){let a=_optionalChain([r, 'optionalAccess', _83 => _83.incentiveFeeClaims, 'access', _84 => _84.reduce, 'call', _85 => _85((s,i)=>s+Number(i.payoutAmount),3e4)]),n=(_optionalChain([r, 'optionalAccess', _86 => _86.incentiveFeeClaims, 'access', _87 => _87.filter, 'call', _88 => _88(s=>Number(s.timestamp)/1e3>Date.now()-_chunk6DIA6PXVcjs.r.call(void 0, 1))])).reduce((s,i)=>s+Number(i.payoutAmount),0);return{sumAllClaims:a,sumClaimsInLast24Hours:n}}return{sumAllClaims:0,sumClaimsInLast24Hours:0}}async function Wl(e={}){let{config:t}=_chunkSFEULGSXcjs.a.call(void 0, e);try{let a=await(await fetch(t.lists.rewardVaultList)).json();if(!a.protocols)throw new Error("Missing protocols in market list");return{marketList:a.protocols,marketDictionary:a.protocols.reduce((o,n)=>(o[n.name]=n,o),{})}}catch(r){throw console.error("Error fetching validator information",r),r}}async function _l({account:e,validator:t,page:r=1,perPage:a=1e3,...o}){let{config:n}=_chunkSFEULGSXcjs.a.call(void 0, o),s=await fetch(`${n.pol.bribeBoostApi}/api/v1/wallets/${e.toLowerCase()}/proofs/validator/${t.toLowerCase()}?page=${r}&per_page=${a}`,{cache:"no-store"});if(!s.ok){let l=await _chunk6DIA6PXVcjs.b.call(void 0, s);throw new (0, _chunk6JJIZCVYcjs.f)({message:"Failed to fetch proofs on server",cause:{error:l,result:s,account:e,validator:t},reason:_optionalChain([l, 'optionalAccess', _89 => _89.reason])})}return await s.json()}var _wberaStakerVault = require('@berachain/abis/pol/wberaStakerVault');async function Yl({address:e,publicClient:t}){return _chunkLVOXBZMAcjs.c.call(void 0, t),t.readContract({address:e,abi:_wberaStakerVault.wberaStakerVaultAbi,functionName:"previewRedeem",args:[_viem.parseUnits.call(void 0, "1",18)]}).then(r=>Number(_viem.formatUnits.call(void 0, r,18))).catch(()=>0)}async function ru({address:e,chainName:t,...r}){let{config:a}=_chunkSFEULGSXcjs.a.call(void 0, r),o=_nullishCoalesce(t, () => (a.bex.chainName)),n=b("api",r),{data:s}=await n.query({query:_api3.GetRewardVault,variables:{vaultId:e,chain:o}});if(!_optionalChain([s, 'optionalAccess', _90 => _90.rewardVault]))throw new (0, _chunkREWME3FYcjs.a)({resource:"Reward vault",id:e,chainId:a.chainId});return s.rewardVault}function oe(e,t){return e.status==="success"?e.result:t}async function uu({address:e,stakingToken:t,publicClient:r}){let a=await r.readContract({address:e,abi:_rewardVault.rewardVaultAbi,functionName:"getWhitelistedTokens"}),n=a.findIndex(i=>_berancersdk.isSameAddress.call(void 0, t,i))!==-1?await r.readContract({address:e,abi:_rewardVault.rewardVaultAbi,functionName:"totalSupply"}):0n,s=await Promise.allSettled(a.map(async i=>{let[l,d,u,m,f]=await r.multicall({allowFailure:!0,contracts:[{address:e,abi:_rewardVault.rewardVaultAbi,functionName:"incentives",args:[i]},{address:i,abi:_viem.erc20Abi,functionName:"decimals"},{address:i,abi:_viem.erc20Abi,functionName:"name"},{address:i,abi:_viem.erc20Abi,functionName:"symbol"},{address:i,abi:_viem.erc20Abi,functionName:"balanceOf",args:[e]}]});if(l.status==="failure")throw new (0, _chunk6JJIZCVYcjs.f)({cause:l.error,message:"Failed to get incentive info. This is not possible.",level:"error",extra:{token:i,address:e}});let[g,p,A,h]=l.result,P=oe(d,18);return{token:i,manager:h,minIncentiveRate:_viem.formatUnits.call(void 0, g,P),incentiveRate:_viem.formatUnits.call(void 0, p,P),remainingAmount:_viem.formatUnits.call(void 0, A,P),name:oe(u,void 0),symbol:oe(m,void 0),decimals:P,pendingAmount:_berancersdk.isSameAddress.call(void 0, t,i)?_viem.formatUnits.call(void 0, oe(f,0n)-n-A,P):_viem.formatUnits.call(void 0, oe(f,0n)-A,P)}}));return s.forEach((i,l)=>{i.status==="rejected"&&_chunkLVOXBZMAcjs.g.captureException(new (0, _chunk6JJIZCVYcjs.f)({reason:i.reason,message:"Incorrect incentives token received.",level:"error",extra:{token:a[l],address:e,error:i.reason}}))}),s.map(i=>i.status==="fulfilled"?i.value:null).filter(i=>i!==null)}async function mu({address:e,publicClient:t}){return await t.readContract({address:e,abi:_rewardVault.rewardVaultAbi,functionName:"stakeToken"})}function va(e){return e==="DAY"?_api3.GqlSWberaVaultMetadataResolution.OneDay:_api3.GqlSWberaVaultMetadataResolution.SevenDays}async function yu({window:e,...t}){let{config:r}=_chunkSFEULGSXcjs.a.call(void 0, t),a=b("api",t);try{let o=await a.query({query:_api3.GetSWberaVaultMetadata,variables:{chain:r.bex.chainName,resolution:va(_nullishCoalesce(e, () => ("DAY")))}}),{apr:n}=o.data.polGetSWberaVaultMetadata;return Number(n)}catch(o){throw console.error("Failed to get SW Bera APR",o),o}}async function Pu({chain:e,range:t=_api3.GqlVaultSnapshotDataRange.ThirtyDays,...r}={}){let{config:a}=_chunkSFEULGSXcjs.a.call(void 0, r),o=b("api",r);try{return(await o.query({query:_api3.GetSWberaVaultSnapshots,variables:{chain:_nullishCoalesce(e, () => (a.bex.chainName)),range:t}})).data.polGetSWberaVaultSnapshots}catch(n){throw console.error("Failed to get SW Bera Snapshots",n),n}}async function ne({publicClient:e,address:t}){let r=await e.readContract({address:t,abi:_wberaStakerVault.wberaStakerVaultAbi,functionName:"WITHDRAWAL_COOLDOWN"});return Number(r)}async function Gu({address:e,underlyingAsset:t,publicClient:r,blockTime:a}){_chunkLVOXBZMAcjs.c.call(void 0, r);let o=26;try{let n=await r.getBlock({blockTag:"latest"}),s=Math.floor(o*60*60/a),i=n.number-BigInt(s),[l,d,u,m,f,g,p,A,h,P,y]=await Promise.all([r.readContract({address:e,abi:_viem.erc4626Abi,functionName:"totalAssets"}),r.readContract({address:e,abi:_viem.erc4626Abi,functionName:"totalSupply"}),r.readContract({address:e,abi:_viem.erc4626Abi,functionName:"previewRedeem",args:[10n**18n],blockNumber:n.number}),r.readContract({address:t,abi:_viem.erc20Abi,functionName:"balanceOf",args:[e]}),r.readContract({address:e,abi:_viem.erc4626Abi,functionName:"totalAssets",blockNumber:i}),r.readContract({address:e,abi:_viem.erc20Abi,functionName:"totalSupply",blockNumber:i}),r.readContract({address:e,abi:_viem.erc4626Abi,functionName:"previewRedeem",args:[10n**18n],blockNumber:i}),r.readContract({address:t,abi:_viem.erc20Abi,functionName:"balanceOf",args:[e],blockNumber:i}),r.readContract({address:t,abi:_viem.erc20Abi,functionName:"totalSupply"}),ne({publicClient:r,address:e}),Pt({})]),I=new (0, _chunk6DIA6PXVcjs.a)(p.toString()),N=new (0, _chunk6DIA6PXVcjs.a)(u.toString());return{address:e,current:{exchangeRate:N.toString(),totalSupply:new (0, _chunk6DIA6PXVcjs.a)(d.toString()).dividedBy(1e18).toString(),totalAssets:new (0, _chunk6DIA6PXVcjs.a)(l.toString()).dividedBy(1e18).toString(),tvl:new (0, _chunk6DIA6PXVcjs.a)(m.toString()).dividedBy(1e18).toString()},previous:{exchangeRate:I.toString(),totalSupply:new (0, _chunk6DIA6PXVcjs.a)(g.toString()).dividedBy(1e18).toString(),totalAssets:new (0, _chunk6DIA6PXVcjs.a)(f.toString()).dividedBy(1e18).toString(),tvl:new (0, _chunk6DIA6PXVcjs.a)(A.toString()).dividedBy(1e18).toString()},totalWBeraIssued:new (0, _chunk6DIA6PXVcjs.a)(h.toString()).dividedBy(1e18).toString(),lockPeriod:P,totalBuyBacks:y.sumAllClaims,totalBuyBacksInLast24Hours:y.sumClaimsInLast24Hours}}catch(n){throw console.error("Failed to get SW Bera Vault Metadata",n),n}}function Rt(e){let t=Date.now(),r=e*1e3-t;if(r<=0)return;let a=_chunk6DIA6PXVcjs.l.call(void 0, r);return _chunk6DIA6PXVcjs.B.call(void 0, a,!0,!0)}async function Qu({contractAddress:e,accountAddress:t,publicClient:r,version:a}){let o=[];function n(s,i){let[l,d,u]=s,m=l,f=Number(u)+Number(i),g=_chunk6DIA6PXVcjs.l.call(void 0, Date.now()),p=f-g;if(m>0){let A=Rt(p<=0?0:f);o.push({receiptTokenAddress:e,withdrawalAmount:m,timeRemaining:A})}}switch(a){case"V1":{let[s,i]=await Promise.all([r.readContract({address:e,abi:_wberaStakerVault.wberaStakerVaultAbi,functionName:"withdrawalRequests",args:[t]}),ne({publicClient:r,address:e})]);return n(s,i),o}case"V2":{let[s,i]=await Promise.all([r.readContract({address:e,abi:_wberaStakerVault.wberaStakerVaultAbi,functionName:"getERC721WithdrawalRequestIds",args:[t]}),ne({publicClient:r,address:e})]);if(_chunkSFEULGSXcjs.e.call(void 0, e,"SWBERA")){let u=await r.readContract({address:e,abi:_wberaStakerVault.wberaStakerVaultAbi,functionName:"withdrawalRequests",args:[t]});n(u,i)}let d=(await Promise.all(s.map(async u=>{let m=await r.readContract({address:e,abi:_wberaStakerVault.wberaStakerVaultAbi,functionName:"getERC721WithdrawalRequest",args:[u]}),{assets:f,requestTime:g}=m;if(!f||!g)throw new Error("Invalid withdrawal request");let p=f,A=Number(g)+Number(i),h=_chunk6DIA6PXVcjs.l.call(void 0, Date.now()),P=A-h;if(p>0){let y=Rt(P<=0?0:A);return{withdrawalAmount:p,timeRemaining:y,withdrawalRequestId:u,receiptTokenAddress:e}}return null}))).filter(u=>u!==null);return o.push(...d),o}}}async function Ou({vaultAddresses:e,publicClient:t}){_chunkLVOXBZMAcjs.c.call(void 0, t);try{let r=await Promise.all(e.map(async o=>t.readContract({address:o,abi:_wberaStakerVault.wberaStakerVaultAbi,functionName:"totalAssets"})));return e.reduce((o,n,s)=>(o[n]=r[s],o),{})}catch(r){throw console.error("Failed to get total staked amount",r),r}}async function $u({account:e,...t}){let{config:r}=_chunkSFEULGSXcjs.a.call(void 0, t),a=await fetch(`${r.pol.bribeBoostApi}/api/v1/wallets/${e.toLowerCase()}/rewards/aggregation`,{cache:"no-store"});if(!a.ok){let o=await _chunk6DIA6PXVcjs.b.call(void 0, a);throw new (0, _chunk6JJIZCVYcjs.f)({message:"Failed to fetch incentives on server",cause:{error:o,result:a,account:e},reason:_optionalChain([o, 'optionalAccess', _91 => _91.error])})}return a.json()}async function Vt({account:e,vaultAddress:t,publicClient:r}){if(!r)throw new Error("Missing public client");if(!e)throw new Error("Missing user account");if(!t)throw new Error("Missing vault address");return r.readContract({address:t,abi:_rewardVault.rewardVaultAbi,functionName:"earned",args:[e]})}async function kt({account:e,vaultAddress:t,publicClient:r}){_chunkLVOXBZMAcjs.c.call(void 0, r),_chunkLVOXBZMAcjs.d.call(void 0, e,"account"),_chunkLVOXBZMAcjs.d.call(void 0, t,"vaultAddress");try{let[a,o]=await Promise.all([r.readContract({address:t,abi:_rewardVault.rewardVaultAbi,functionName:"balanceOf",args:[e]}),r.readContract({address:t,abi:_rewardVault.rewardVaultAbi,functionName:"getTotalDelegateStaked",args:[e]})]);return{balance:a,delegated:o}}catch(a){throw console.log(a),a}}async function Nt({vaultAddress:e,publicClient:t}){if(!t)throw new Error("Missing public client");if(!e)throw new Error("Missing vault address");try{return await t.readContract({address:e,abi:_rewardVault.rewardVaultAbi,functionName:"totalSupply",args:[]})}catch(r){throw console.log(r),r}}async function ic({account:e,vaultAddress:t,publicClient:r}){let[a,o,n]=await Promise.all([kt({account:e,vaultAddress:t,publicClient:r}),Vt({account:e,vaultAddress:t,publicClient:r}),Nt({vaultAddress:t,publicClient:r})]),s=a.balance-a.delegated,i=n>0n?Number(Number.parseFloat(_viem.formatEther.call(void 0, a.balance))/Number.parseFloat(_viem.formatEther.call(void 0, n))).toString():"0";return{balance:a.balance,delegatedBalance:a.delegated,withdrawableBalance:s,rewards:_viem.formatEther.call(void 0, o),percentage:i}}async function gc({account:e,publicClient:t,...r}){let{config:a}=_chunkSFEULGSXcjs.a.call(void 0, r),s=await _asyncOptionalChain([(await b("api",r).query({query:_api3.GetUserVaults,variables:{userId:e,chain:a.bex.chainName}})), 'access', async _92 => _92.data, 'optionalAccess', async _93 => _93.userVaultDeposits, 'optionalAccess', async _94 => _94.deposits]);if(!s)return{totalBgtRewards:"0",vaults:[],totalStakedValue:0};let[i,l]=await Promise.all([t.multicall({allowFailure:!1,contracts:s.map(g=>({address:g.vaultAddress,abi:_rewardVault.rewardVaultAbi,functionName:"earned",args:[e]}))}),t.multicall({allowFailure:!1,contracts:s.map(g=>({address:g.vaultAddress,abi:_rewardVault.rewardVaultAbi,functionName:"balanceOf",args:[e]}))})]),{userVaults:d,total:u}=s.reduce((g,p,A)=>{let h=i[A],P=l[A];if(g.total+=h,!p.vault)return _chunkLVOXBZMAcjs.g.captureException(new (0, _chunk6JJIZCVYcjs.f)({message:"Deposit data from API is missing vault",level:"error",extra:{deposit:p}})),console.error("Deposit data from API is missing vault",p),g;if(h>0n||P>0n){let y=_optionalChain([p, 'access', _95 => _95.vault, 'access', _96 => _96.dynamicData, 'optionalAccess', _97 => _97.tvl])&&Number(p.vault.stakingTokenAmount)!==0?Number(_nullishCoalesce(_optionalChain([p, 'access', _98 => _98.vault, 'access', _99 => _99.dynamicData, 'optionalAccess', _100 => _100.tvl]), () => (0)))/Number(p.vault.stakingTokenAmount):null;g.userVaults.push({...p,vault:p.vault,unclaimedBgt:_viem.formatUnits.call(void 0, h,18),formattedBalance:_viem.formatUnits.call(void 0, P,p.vault.stakingToken.decimals),stakingTokenPrice:y})}return g},{userVaults:[],total:0n}),m=[...d].sort((g,p)=>{if(g.vault.isVaultWhitelisted&&!p.vault.isVaultWhitelisted)return-1;if(!g.vault.isVaultWhitelisted&&p.vault.isVaultWhitelisted)return 1;let A=Number.parseFloat(g.unclaimedBgt);return Number.parseFloat(p.unclaimedBgt)-A});return{totalStakedValue:m.reduce((g,p)=>{let A=Number(_nullishCoalesce(_optionalChain([p, 'access', _101 => _101.vault, 'access', _102 => _102.dynamicData, 'optionalAccess', _103 => _103.tvl]), () => (0)));if(A===0)return g;let h=Number.parseFloat(p.vault.stakingTokenAmount),P=A/h;return g+P*Number(p.formattedBalance)},0),totalBgtRewards:_viem.formatUnits.call(void 0, u,18),vaults:m}}async function wc({vault:e,chain:t,...r}){let{config:a}=_chunkSFEULGSXcjs.a.call(void 0, r);return(await b("api",r).query({query:_api3.GetVaultHistory,variables:{...r,vaultId:e,chain:_nullishCoalesce(t, () => (a.bex.chainName))}})).data.polGetRewardVaultSnapshots}async function vc({address:e,onlyActiveValidators:t,...r}){return await _asyncNullishCoalesce((await b("api",r).query({query:_api3.GetVaultValidators,variables:{vaultId:e,isActive:t}})).data.validators.validators, async () => ([]))}async function Tc({addressIn:e,...t}){let{config:r,chainId:a}=_chunkSFEULGSXcjs.a.call(void 0, t),o=e.map(i=>i.toLowerCase()).filter((i,l,d)=>i&&d.indexOf(i)===l),n=b("api",t),{data:s}=await n.query({query:_api.GetTokenCurrentPrices,variables:{chains:[r.bex.chainName],addressIn:o}});return s.tokenGetCurrentPrices.reduce((i,l)=>{if(!l.price||!l.address)return i;let d=l.address;return i[_viem.getAddress.call(void 0, d)]={price:_chunk6DIA6PXVcjs.D.call(void 0, l.price.toString()),updatedAt:l.updatedAt,chainId:a},i[d.toLowerCase()]={price:_chunk6DIA6PXVcjs.D.call(void 0, l.price.toString()),updatedAt:l.updatedAt,chainId:a},_chunkSFEULGSXcjs.e.call(void 0, d,"WBERA")&&(i[_viem.zeroAddress]={price:_chunk6DIA6PXVcjs.D.call(void 0, l.price.toString()),updatedAt:l.updatedAt,chainId:a},i[r.tokens.bgt.toLowerCase()]={price:_chunk6DIA6PXVcjs.D.call(void 0, l.price.toString()),updatedAt:l.updatedAt,chainId:a},i[r.tokens.bgt]={price:_chunk6DIA6PXVcjs.D.call(void 0, l.price.toString()),updatedAt:l.updatedAt,chainId:a}),i},{})}var _core = require('@wagmi/core');async function Dc({items:e,account:t,config:r}){_chunkLVOXBZMAcjs.b.call(void 0, e,"items"),_chunkLVOXBZMAcjs.b.call(void 0, r,"config"),_chunkLVOXBZMAcjs.b.call(void 0, t,"account");let a=Object.groupBy(e,n=>n.token.chainId);return(await Promise.allSettled(Object.entries(a).map(async([n,s])=>{if(!s)return[];let i=_core.getPublicClient.call(void 0, r,{chainId:Number(n)});return _chunkLVOXBZMAcjs.c.call(void 0, i,`publicClient ${n}`),(await i.multicall({contracts:s.map(u=>({address:u.token.address,abi:_viem.erc20Abi,functionName:"allowance",args:[t,u.spender]}))})).map((u,m)=>{let f=s[m];return u.error?void 0:{token:f.token,spender:f.spender,amount:f.amount,allowance:{raw:u.result.toString(),formatted:_viem.formatUnits.call(void 0, u.result,f.token.decimals)},needsApproval:u.result<BigInt(f.amount.raw)}}).filter(u=>!!u)}))).flatMap(n=>n.status==="fulfilled"?n.value:void 0).filter(n=>!!n)}async function Gt({publicClient:e,abi:t,...r}){let a=[..._chunk6JJIZCVYcjs.c,..._nullishCoalesce(t, () => ([]))],o,n,s,i,l,d,u;if("txHash"in r){let m=await e.getTransaction({hash:r.txHash});if(!m.to)throw new (0, _chunk6JJIZCVYcjs.h)({property:"tx",value:m,expected:"Transaction",message:"Trying to get revert reason for a contract creation"});l=m.input,n=m.to,s=m.from,i=m.value,o=m.blockNumber}else if(o=r.blockNumber,n=r.to,s=r.account,i=r.value,"data"in r)l=r.data;else if("functionName"in r&&"args"in r)d=r.functionName,u=r.args;else if(!i)throw new (0, _chunk6JJIZCVYcjs.h)({property:"dataOrFunctionNameAndArgs",value:r,expected:"Hex or FunctionName and Args"});try{if(!a)if(l)await e.call({data:l,to:n,account:s,blockNumber:o,value:i});else throw new Error("Data is required if abi is not provided");if("functionName"in r&&"args"in r&&r.functionName)d=r.functionName,u=r.args;else if(l){if(!a){let m=await e.call({data:l,to:n,account:s,blockNumber:o,value:i});throw new Error(`Getting revert reason for successful simulation. Data: ${l}`,{cause:m})}try{let m=_viem.decodeFunctionData.call(void 0, {abi:a,data:l});d=m.functionName,u=m.args}catch(m){throw m instanceof _viem.AbiFunctionSignatureNotFoundError&&await e.call({data:l,to:n,account:s,blockNumber:o,value:i}),new Error("Data is required if abi is not provided")}}else throw new Error("No data or function name and args provided");throw a&&d?(await e.simulateContract({functionName:d,args:u,abi:a,address:n,account:s,blockNumber:o}),new (0, _chunkREWME3FYcjs.b)({message:"Getting revert reason for successful simulation",functionName:d,to:n,txHash:"txHash"in r?r.txHash:void 0,input:r})):new Error("No data or function name and args provided")}catch(m){if(m instanceof Error)return _chunk6JJIZCVYcjs.e.call(void 0, {error:m,abi:a,revertIfUnknown:!0});throw m}}var za=_chunk6DIA6PXVcjs.m.call(void 0, 1),Tt=(e,t)=>e*(100n+BigInt(t))/100n;function Ee({nonceResult:e,onWarning:t}){if(e.status==="fulfilled"){if(e.value&&e.value>Number.MAX_SAFE_INTEGER){_optionalChain([t, 'optionalCall', _104 => _104(new (0, _chunk6JJIZCVYcjs.f)({message:"Nonce is too large. No nonce will be provided to avoid IntegerOutOfRangeError.",cause:e.value,level:"debug"}))]);return}return e.value}}function Xa(e=_internal.defaultChainId){return e===_internal.ChainId.BEPOLIA?process.env.NEXT_PUBLIC_80069_ANVIL_IMPERSONATE_ACCOUNT==="true":process.env.NEXT_PUBLIC_80094_ANVIL_IMPERSONATE_ACCOUNT==="true"}async function nd(e){if(process.env.NODE_ENV==="development"&&!e.contractName&&e.address&&!("calls"in e||e.calls))throw console.warn("beraWriteContract: Contract name is required. Either update the contract mapping in devrel or provide a contract name in ContractName enum","This is a development error and will be thrown in development mode only."),new (0, _chunk6JJIZCVYcjs.h)({property:"contractName",value:e.contractName,expected:"ContractName",displayMessage:`[DEV] Contract name is required as it's not mapped in the devrel's contract mapping ${e.address}`,level:"error"});let{address:t,calls:r,value:a,gasLimit:o,onLoading:n,onSuccess:s,onWarning:i,onError:l,onSubmission:d,wagmiConfig:u,walletClient:m,account:f,txConfirmationTimeout:g=12e4,chainId:p=_internal.defaultChainId,impersonateAccount:A=Xa(p),errorsAbi:h=[],pollingInterval:P=za,...y}=e;_optionalChain([n, 'optionalCall', _105 => _105(e)]);let I="data"in y?y.data:void 0,N=[..._chunk6JJIZCVYcjs.c,...h,..."abi"in y&&y.abi&&Array.isArray(y.abi)?y.abi:[]],T=m;if(!u){_optionalChain([l, 'optionalCall', _106 => _106(new (0, _chunk6JJIZCVYcjs.h)({property:"wagmiConfig",value:u,expected:"Config"}),e)]);return}if(!(_optionalChain([T, 'optionalAccess', _107 => _107.account, 'optionalAccess', _108 => _108.type])==="local"))try{await _core.switchChain.call(void 0, u,{chainId:p})}catch(R){let x=R;_optionalChain([l, 'optionalCall', _109 => _109(new (0, _chunk6JJIZCVYcjs.f)({cause:x,displayMessage:"There was an error switching to the chain."}),e)]);return}if(!T)try{T=await _core.getWalletClient.call(void 0, u,{chainId:p})}catch(R){_optionalChain([l, 'optionalCall', _110 => _110(new (0, _chunk6JJIZCVYcjs.f)({cause:R,displayMessage:"There was an error connecting to the wallet."}),e)]);return}if(!T){_optionalChain([l, 'optionalCall', _111 => _111(new (0, _chunk6JJIZCVYcjs.h)({displayMessage:"There was an error connecting to the wallet.",property:"walletClient",value:T,expected:"WalletClient"}),e)]);return}let q=f||T.account;if(!q){_optionalChain([l, 'optionalCall', _112 => _112(new (0, _chunk6JJIZCVYcjs.h)({property:"account",value:q,expected:"Account"}),e)]);return}let se=typeof q=="string"?q:q.address,W=_core.getPublicClient.call(void 0, u,{chainId:p});try{_chunkLVOXBZMAcjs.c.call(void 0, W)}catch(R){_optionalChain([l, 'optionalCall', _113 => _113(R,e)]);return}if(A){let R=_chunk6DIA6PXVcjs.F.call(void 0, p);await R.impersonateAccount({address:se}),T=_viem.createWalletClient.call(void 0, {transport:_viem.http.call(void 0, R.transport.url),account:q,chain:T.chain})}let F,Z={calls:"calls"in y?y.calls:void 0,params:"params"in y?y.params:void 0,value:a,data:"data"in y?y.data:void 0};try{let R=W.getTransactionCount({address:se,blockTag:"latest"}).catch(()=>{}),x={account:se,to:t,address:t,chainId:p,value:a};if(r){let E=r.map(w=>{if("abi"in w&&Array.isArray(N)&&N.push(...w.abi),"data"in w)return{to:w.address,data:w.data,value:_nullishCoalesce(w.value, () => (0n))};if("abi"in w&&"functionName"in w){let L="params"in w?w.params:void 0;return{to:w.address,abi:w.abi,functionName:w.functionName,args:L,value:_nullishCoalesce(w.value, () => (0n))}}return{to:w.address,value:_nullishCoalesce(w.value, () => (0n))}});if(e.enableSimulateCalls){let w=await W.simulateCalls({calls:E,account:q}),L=w.results.findIndex(O=>O.status==="failure");if(L!==-1){if(w.block.number===null)throw new (0, _chunk6JJIZCVYcjs.h)({property:"blockNumber",value:w.block.number,expected:"bigint",message:"Block number is null"});let O=w.results[L],{reason:Ce}=O.data&&O.data!=="0x"?{reason:_chunk6JJIZCVYcjs.d.call(void 0, _viem.decodeErrorResult.call(void 0, {data:O.data,abi:N}))}:_chunk6JJIZCVYcjs.e.call(void 0, {error:O.error,revertIfUnknown:!1,abi:N});_optionalChain([l, 'optionalCall', _114 => _114(new (0, _chunkREWME3FYcjs.b)({cause:O.error,txHash:F,chainId:p,reason:Ce,abi:N,input:Z,blockNumber:w.block.number}),e)]);return}}if(process.env.NODE_ENV==="test")throw new (0, _chunk6JJIZCVYcjs.h)({displayMessage:"Batch calls are not supported in test environment",expected:"not test",property:"NODE_ENV",value:process.env.NODE_ENV,level:"fatal"});let Q=await T.sendCalls({calls:E,account:q,forceAtomic:!0});_optionalChain([d, 'optionalCall', _115 => _115({id:Q.id},e)]);let U=await T.waitForCallsStatus({id:Q.id,pollingInterval:P,timeout:g});if(U.status==="success"){let w=_optionalChain([U, 'access', _116 => _116.receipts, 'optionalAccess', _117 => _117[0]]);if(!w)throw new (0, _chunk6JJIZCVYcjs.f)({message:"Call status is success but no receipt was found",cause:U,level:"error",reason:"CALL_STATUS_SUCCESS_BUT_NO_RECEIPT"});return _optionalChain([s, 'optionalCall', _118 => _118(w,e)]),w}throw console.error("wallet_sendCalls: Call failed",U),new (0, _chunkREWME3FYcjs.b)({cause:U,level:"error",input:Z,txHash:F,abi:N,chainId:p})}if(I){let[E,Q,U]=await Promise.allSettled([W.call({...x,data:I}),_nullishCoalesce(o, () => (W.estimateGas({...x,data:I}))),R]);if(E.status==="rejected")throw E.reason;let w=Q.status==="fulfilled"?Tt(Q.value,10):_chunk6DIA6PXVcjs.j;F=await T.sendTransaction({data:I,to:t,account:q,gas:w,chainId:p,nonce:Ee({nonceResult:U,onWarning(L){_optionalChain([i, 'optionalCall', _119 => _119(L,e)])}}),value:a}),_optionalChain([d, 'optionalCall', _120 => _120({txHash:F},e)])}else if("abi"in y&&"functionName"in y){let{abi:E,functionName:Q}=y,U="params"in y?y.params:void 0,[w,L,O]=await Promise.allSettled([W.simulateContract({...x,abi:N,functionName:Q,args:U,account:q}),_nullishCoalesce(o, () => (W.estimateContractGas({...x,abi:N,functionName:Q,args:U}))),R]);if(w.status==="rejected")throw w.reason;let Ce=_nullishCoalesce(o, () => ((L.status==="fulfilled"?Tt(L.value,10):_chunk6DIA6PXVcjs.j)));F=await T.writeContract({...w.value.request,chainId:p,gas:Ce,nonce:Ee({nonceResult:O,onWarning(Ut){_optionalChain([i, 'optionalCall', _121 => _121(Ut,e)])}})}),_optionalChain([d, 'optionalCall', _122 => _122({txHash:F},e)])}else{let[E]=await Promise.allSettled([R]);F=await T.sendTransaction({chainId:p,to:t,value:a,account:q,nonce:Ee({nonceResult:E,onWarning(Q){_optionalChain([i, 'optionalCall', _123 => _123(Q,e)])}})}),_optionalChain([d, 'optionalCall', _124 => _124({txHash:F},e)])}process.env.NODE_ENV==="test"&&await _chunk6DIA6PXVcjs.F.call(void 0, p).mine({blocks:1});let J=await W.waitForTransactionReceipt({hash:F,pollingInterval:P,timeout:g,confirmations:1});if(J.status==="success")_optionalChain([s, 'optionalCall', _125 => _125(J,e)]);else{let E=await Gt({publicClient:W,blockNumber:J.blockNumber,to:t,account:se,abi:N,args:"params"in y?y.params:void 0,functionName:"functionName"in y?y.functionName:void 0,value:a,data:I});process.env.NODE_ENV==="test"&&console.error("beraWriteContract: Revert reason",E),_optionalChain([l, 'optionalCall', _126 => _126(new (0, _chunkREWME3FYcjs.b)({reason:E.reason,txHash:F,receipt:J,to:t,functionName:"functionName"in y?y.functionName:void 0,input:Z,chainId:p,abi:N,blockNumber:J.blockNumber}),e)])}return J}catch(R){if(R instanceof _chunk6JJIZCVYcjs.f)_optionalChain([l, 'optionalCall', _127 => _127(R,e)]);else if(R instanceof Error){let x=_chunk6JJIZCVYcjs.e.call(void 0, {error:R,revertIfUnknown:!1,abi:N});if(x&&x.rootCause instanceof _viem.BaseError&&"url"in x.rootCause){_optionalChain([l, 'optionalCall', _128 => _128(new (0, _chunk6JJIZCVYcjs.g)({cause:x.rootCause,response:void 0,endpoint:{url:x.rootCause.url,type:"rpc"},statusCode:x.rootCause instanceof _viem.HttpRequestError?x.rootCause.status:void 0}),e)]);return}_optionalChain([l, 'optionalCall', _129 => _129(new (0, _chunkREWME3FYcjs.b)({cause:R,to:t,txHash:F,chainId:p,abi:N,functionName:"functionName"in y?y.functionName:void 0,input:Z}),e)])}else _optionalChain([l, 'optionalCall', _130 => _130(new (0, _chunkREWME3FYcjs.b)({cause:R,txHash:F,to:t,chainId:p,functionName:"functionName"in y?y.functionName:void 0,input:Z,abi:N}),e)])}}async function Et({variables:e={},...t}={}){let{config:r}=_chunkSFEULGSXcjs.a.call(void 0, t);return(await b("api",t).query({query:_api3.GetValidators,variables:{chain:r.bex.chainName,...e}})).data}async function pd({allocation:e}){let t=await be({filter:{where:{vaultAddressIn:e.weights.map(a=>a.receiver)}}}),r=_nullishCoalesce(_optionalChain([e, 'optionalAccess', _131 => _131.start, 'access', _132 => _132.blockNumber]), () => (0));return _optionalChain([e, 'optionalAccess', _133 => _133.weights, 'access', _134 => _134.map, 'call', _135 => _135(a=>({percentage:a.percentage,receiver:a.receiver,startBlock:r,receivingVault:_optionalChain([t, 'optionalAccess', _136 => _136.gaugeList, 'access', _137 => _137.find, 'call', _138 => _138(o=>_viem.isAddressEqual.call(void 0, o.address,a.receiver))])}))])}async function Ad({id:e,...t}){let{config:r}=_chunkSFEULGSXcjs.a.call(void 0, t);return(await b("api",t).query({query:_api3.GetValidator,variables:{id:e,chain:r.bex.chainName}})).data}var _subgraph = require('@berachain/graphql/pol/subgraph');async function Pd({pubKey:e,first:t=1,...r}){let a=b("pol.subgraph",r);try{return(await a.query({query:_subgraph.GetValidatorBlockStats,variables:{pubKey:e,first:t}})).data}catch(o){throw console.error("GetValidatorBlockStats:",o),o}}var _beraChef = require('@berachain/abis/pol/rewards/beraChef');function X(e,t){return{start:{blockNumber:Number(e.startBlock),timestamp:e.startBlock!==0n?t:0},weights:e.weights.map(r=>({receiver:r.receiver,percentage:Number(r.percentageNumerator)/1e4}))}}function ao(e,t){return e.start.blockNumber===t.start.blockNumber&&e.weights.every((r,a)=>r.percentage===t.weights[a].percentage)}async function Vd({client:e,pubKey:t,...r}){let{config:a}=_chunkSFEULGSXcjs.a.call(void 0, r);try{let[o,n]=await Promise.all([e.readContract({address:a.pol.beraChef,abi:_beraChef.beraChefAbi,functionName:"getActiveRewardAllocation",args:[t]}),e.readContract({address:a.pol.beraChef,abi:_beraChef.beraChefAbi,functionName:"getSetActiveRewardAllocation",args:[t]})]),[s,i]=await Promise.all([o.startBlock!==0n?e.getBlock({blockNumber:BigInt(o.startBlock)}):{timestamp:0},n.startBlock!==0n?e.getBlock({blockNumber:BigInt(n.startBlock)}):{timestamp:0}]),l=X(o,Number(s.timestamp)),d=X(n,Number(i.timestamp)),u=!1;return d.start.blockNumber===0?u=!0:u=!ao(d,l),{activeRewardAllocation:l,setRewardAllocation:d,isBaseline:u,isNeverSet:_optionalChain([d, 'optionalAccess', _139 => _139.start, 'access', _140 => _140.blockNumber])===0}}catch(o){throw console.log("getValidatorRewardAllocation:",o),o}}function Gd(e){return e.start.blockNumber===0}async function Td({client:e,...t}){let{config:r}=_chunkSFEULGSXcjs.a.call(void 0, t),a=await e.readContract({address:r.pol.beraChef,abi:_beraChef.beraChefAbi,functionName:"getDefaultRewardAllocation",args:[]});return X({...a,startBlock:0n},0)}async function Ed({client:e,valPubKey:t}){return 5614}async function qt({account:e,pubkey:t,publicClient:r,...a}){let{config:o}=_chunkSFEULGSXcjs.a.call(void 0, a);if(!e)throw new Error("account is required");if(!r)throw new Error("publicClient is required");let[n,s,i]=await Promise.all([r.readContract({address:o.tokens.bgt,abi:_bgt.bgtAbi,functionName:"boosted",args:[e,t]}),r.readContract({address:o.tokens.bgt,abi:_bgt.bgtAbi,functionName:"boostedQueue",args:[e,t]}),r.readContract({address:o.tokens.bgt,abi:_bgt.bgtAbi,functionName:"dropBoostQueue",args:[e,t]})]),l=n-i[1];return{pubkey:t,droppableBoostAmount:_viem.formatEther.call(void 0, l),activeBoostAmount:_viem.formatEther.call(void 0, n),queuedBoostAmount:_viem.formatEther.call(void 0, s[1]),queuedDropBoostAmount:_viem.formatEther.call(void 0, i[1]),queuedBoostStartBlock:s[0],queuedDropBoostStartBlock:i[0],hasPendingBoosts:s[1]>0n||i[1]>0n,hasActiveBoosts:n>0n,hasDroppableBoosts:l>0n}}async function Dt({account:e,...t}){let{config:r}=_chunkSFEULGSXcjs.a.call(void 0, t);return b("api",t).query({query:_api3.GetUserValidatorInformation,variables:{address:e.toLowerCase(),chain:r.bex.chainName}})}async function Kd({account:e,publicClient:t,chain:r,...a}){let{config:o}=_chunkSFEULGSXcjs.a.call(void 0, a),n=_nullishCoalesce(r, () => (o.bex.chainName)),s=await Dt({account:e}),[i,l]=await Promise.all([Et({variables:{chain:n,where:{idIn:s.data.polGetValidatorBoosts.boosts.map(d=>d.validatorId)}}}),Promise.all(s.data.polGetValidatorBoosts.boosts.filter(d=>!!d.validator).map(d=>qt({account:e,pubkey:d.validator.pubkey,publicClient:t})))]);return _optionalChain([i, 'optionalAccess', _141 => _141.validators, 'access', _142 => _142.validators, 'access', _143 => _143.map, 'call', _144 => _144(d=>{let u=l.find(f=>f.pubkey.toLowerCase()===d.pubkey.toLowerCase());if(!u)throw new Error("User deposited not found");let m=_viem.parseEther.call(void 0, _nullishCoalesce(_optionalChain([u, 'optionalAccess', _145 => _145.activeBoostAmount]), () => ("0")))-_viem.parseEther.call(void 0, _optionalChain([u, 'optionalAccess', _146 => _146.queuedDropBoostAmount]));return{...d,userBoosts:{pubkey:u.pubkey,activeBoostAmount:_optionalChain([u, 'optionalAccess', _147 => _147.activeBoostAmount]),queuedBoostAmount:_optionalChain([u, 'optionalAccess', _148 => _148.queuedBoostAmount]),queuedBoostStartBlock:Number(_optionalChain([u, 'optionalAccess', _149 => _149.queuedBoostStartBlock])),queuedDropBoostAmount:_optionalChain([u, 'optionalAccess', _150 => _150.queuedDropBoostAmount]),queuedDropBoostStartBlock:Number(_optionalChain([u, 'optionalAccess', _151 => _151.queuedDropBoostStartBlock])),droppableBoostAmount:_viem.formatEther.call(void 0, m),hasPendingBoosts:Number(_optionalChain([u, 'optionalAccess', _152 => _152.queuedBoostAmount]))>0||Number(_optionalChain([u, 'optionalAccess', _153 => _153.queuedDropBoostAmount]))>0,hasActiveBoosts:Number(_optionalChain([u, 'optionalAccess', _154 => _154.activeBoostAmount]))>0,hasDroppableBoosts:m>0n}}})])}var so=[{validatorAddress:"0x8f51e63d9921a461be29e73dca1c2385e1adc5943fbb36ded4ba96025ee8a783184d1118da08171f6ea831153c878a6d",earning:.045,staked:{amount:16114000000000000000n,formattedAmount:"161.14"},rewards:{amount:15214000000000000000n,formattedAmount:"152.14"}},{staked:{amount:141514000000000000000n,formattedAmount:"1415.14"},validatorAddress:"0x97b21253b17f4e814fe7505c15c18e68c85ab2477274ad370a762df50e3eb4cb1a48451e089bc22e158d7448549a8ab9",earning:.045,rewards:{amount:15414000000000000000n,formattedAmount:"154.14"},queueData:{stake:[{amount:16159000000000000000n,formattedAmount:"161.59"}],unstake:[{amount:16159000000000000000n,formattedAmount:"161.59",timestamp:_chunk6DIA6PXVcjs.l.call(void 0, Date.now()-72e6)}]}},{staked:{amount:141514000000000000000n,formattedAmount:"1415.14"},validatorAddress:"0xa2705d6b27891f3f5651f26547d1bb79e256f95f249d1ad717cef087d77d38b037e5d6dbaa2538930fd0731ec9b02f3a",earning:.145,rewards:{amount:15414000000000000000n,formattedAmount:"154.14"},queueData:{unstake:[{amount:16159000000000000000n,formattedAmount:"161.59",timestamp:_chunk6DIA6PXVcjs.l.call(void 0, Date.now()-72e6)}]}},{staked:{amount:141514000000000000000n,formattedAmount:"1415.14"},validatorAddress:"0xa2705d6b27891f3f5651f26547d1bb79e256f95f249d1ad717cef087d77d38b037e5d6dbaa2538930fd0731ec9b02f3a",earning:.145,rewards:{amount:15414000000000000000n,formattedAmount:"154.14"},queueData:{unstake:[{amount:16159000000000000000n,formattedAmount:"161.59",timestamp:_chunk6DIA6PXVcjs.l.call(void 0, Date.now()-72e6)}]}},{staked:{amount:141514000000000000000n,formattedAmount:"1415.14"},validatorAddress:"0xa2705d6b27891f3f5651f26547d1bb79e256f95f249d1ad717cef087d77d38b037e5d6dbaa2538930fd0731ec9b02f3a",earning:.145,rewards:{amount:15414000000000000000n,formattedAmount:"154.14"},queueData:{unstake:[{amount:16159000000000000000n,formattedAmount:"161.59",timestamp:_chunk6DIA6PXVcjs.l.call(void 0, Date.now()-72e6)}]}},{staked:{amount:141514000000000000000n,formattedAmount:"1415.14"},validatorAddress:"0xa2705d6b27891f3f5651f26547d1bb79e256f95f249d1ad717cef087d77d38b037e5d6dbaa2538930fd0731ec9b02f3a",earning:.145,rewards:{amount:15414000000000000000n,formattedAmount:"154.14"},queueData:{unstake:[{amount:16159000000000000000n,formattedAmount:"161.59",timestamp:_chunk6DIA6PXVcjs.l.call(void 0, Date.now()-72e6)}]}},{staked:{amount:141514000000000000000n,formattedAmount:"1415.14"},validatorAddress:"0xa2705d6b27891f3f5651f26547d1bb79e256f95f249d1ad717cef087d77d38b037e5d6dbaa2538930fd0731ec9b02f3a",earning:.145,rewards:{amount:15414000000000000000n,formattedAmount:"154.14"},queueData:{unstake:[{amount:16159000000000000000n,formattedAmount:"161.59",timestamp:_chunk6DIA6PXVcjs.l.call(void 0, Date.now()-72e6)}]}},{staked:{amount:241514000000000000000n,formattedAmount:"2415.14"},validatorAddress:"0xa4e4b63514f54d61da5197359f11ff1fc2930788ba2ffdd30c2fc059cbe0221020197bf9446b16ac347f36c7517a8686",earning:.145,rewards:{amount:15414000000000000000n,formattedAmount:"154.14"},queueData:{unstake:[{amount:1159000000000000000n,formattedAmount:"11.59",timestamp:_chunk6DIA6PXVcjs.l.call(void 0, Date.now()-36e6)}]}},{validatorAddress:"0xb0511ec039591e98bd4e183ba70b85572214a7ad8ca1a43e96ad3495d3821054927bc542e5482ec9733e35b7ef0b1f03",earning:.045,staked:{amount:141514000000000000000n,formattedAmount:"1415.14"},rewards:{amount:15414000000000000000n,formattedAmount:"154.14"},queueData:{stake:[{amount:1159000000000000000n,formattedAmount:"11.59"}]}}];async function Xd(e){return await new Promise(t=>setTimeout(t,2e3)),e==="0x4C368fFE3650379d6318C8d4630bc51f8Ad12bB6"?so:[]}async function am({pubkey:e,dayRange:t,...r}){return(await b("pol.subgraph",r).query({query:_subgraph.GetValidatorAnalytics,variables:{pubKey:e,timestamp:_chunk6DIA6PXVcjs.z.call(void 0, t).toString()}})).data}async function sm({client:e,pubKey:t,...r}){let{config:a}=_chunkSFEULGSXcjs.a.call(void 0, r),o=await e.readContract({address:a.pol.beraChef,abi:_beraChef.beraChefAbi,functionName:"getValCommissionOnIncentiveTokens",args:[t]});return Number(_nullishCoalesce(o, () => (0n)))/1e4}var cm=(e,t,r)=>{if(!t||!e)return 0;let a=_chunk6DIA6PXVcjs.y.call(void 0, 1)/r;return(t?a*(Number(_optionalChain([e, 'access', _155 => _155.dynamicData, 'optionalAccess', _156 => _156.stakedBeraAmount]))/t):0)*Number.parseFloat(_nullishCoalesce(_optionalChain([e, 'access', _157 => _157.dynamicData, 'optionalAccess', _158 => _158.rewardRate]), () => ("0")))};var _beaconDeposit = require('@berachain/abis/pol/beaconDeposit');async function fm({client:e,pubKey:t,...r}){let{config:a}=_chunkSFEULGSXcjs.a.call(void 0, r);try{return await e.readContract({address:a.depositContract,abi:_beaconDeposit.beaconDepositAbi,functionName:"getOperator",args:[t]})}catch(o){throw console.log("getValidatorOperatorAddress:",o),o}}async function Am({client:e,pubKey:t,...r}){let{config:a}=_chunkSFEULGSXcjs.a.call(void 0, r),o=await e.readContract({address:a.pol.beraChef,abi:_beraChef.beraChefAbi,functionName:"getValQueuedCommissionOnIncentiveTokens",args:[t]});return{blockNumberLast:o.blockNumberLast,commissionRate:Number(o.commissionRate)/1e4}}async function Pm({client:e,pubKey:t,...r}){let{config:a}=_chunkSFEULGSXcjs.a.call(void 0, r);try{return await e.readContract({address:a.depositContract,abi:_beaconDeposit.beaconDepositAbi,functionName:"queuedOperator",args:[t]})}catch(o){throw console.log("getValidatorQueuedOperatorAddress:",o),o}}async function Sm({client:e,pubKey:t,...r}){let{config:a}=_chunkSFEULGSXcjs.a.call(void 0, r);try{let o=await e.readContract({address:a.pol.beraChef,abi:_beraChef.beraChefAbi,functionName:"getQueuedRewardAllocation",args:[t]});return X(o,0)}catch(o){throw console.log("getValidatorQueuedRewardAllocation:",o),o}}exports.a = Ao; exports.b = me; exports.c = b; exports.d = _client.gql; exports.e = ze; exports.f = _berancersdk.BalancerApi; exports.g = an; exports.h = un; exports.i = fn; exports.j = Ze; exports.k = Rn; exports.l = xn; exports.m = qn; exports.n = Y; exports.o = Ln; exports.p = fe; exports.q = Jn; exports.r = Kn; exports.s = ei; exports.t = it; exports.u = ui; exports.v = pi; exports.w = yi; exports.x = Ci; exports.y = st; exports.z = ke; exports.A = ut; exports.B = Yi; exports.C = ts; exports.D = Jr; exports.E = is; exports.F = ms; exports.G = gt; exports.H = Ps; exports.I = bt; exports.J = Is; exports.K = Ls; exports.L = _s; exports.M = oa; exports.N = Ys; exports.O = Zs; exports.P = ol; exports.Q = be; exports.R = Fl; exports.S = Pt; exports.T = Wl; exports.U = _l; exports.V = Yl; exports.W = ru; exports.X = uu; exports.Y = mu; exports.Z = yu; exports._ = Pu; exports.$ = ne; exports.aa = Gu; exports.ba = Qu; exports.ca = Ou; exports.da = $u; exports.ea = Vt; exports.fa = ic; exports.ga = gc; exports.ha = wc; exports.ia = vc; exports.ja = Tc; exports.ka = Dc; exports.la = Xa; exports.ma = nd; exports.na = Et; exports.oa = pd; exports.pa = Ad; exports.qa = Pd; exports.ra = X; exports.sa = ao; exports.ta = Vd; exports.ua = Gd; exports.va = Td; exports.wa = Ed; exports.xa = qt; exports.ya = Kd; exports.za = Xd; exports.Aa = am; exports.Ba = sm; exports.Ca = cm; exports.Da = fm; exports.Ea = Am; exports.Fa = Pm; exports.Ga = Sm;
4
+ //# sourceMappingURL=chunk-45HIEVNI.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["/Users/pong/coding/monobera/packages/berajs/dist/chunk-45HIEVNI.cjs","../src/actions/bend/getConvertToAssets.ts","../src/actions/clients/BeraApolloClient.ts","../src/actions/governance/parseProposalBody.ts","../src/actions/governance/getProposalFromTx.ts"],"names":["getConvertToAssets","sharesAmount","vaultAddress","publicClient","convertToAssets","metaMorphoAbi","formatEther","BeraApolloClient","ApolloClient","options","queryName","getQueryName","endpoint","tags","executeQuery","res","BeraTracing"],"mappings":"AAAA,q+CAAyC,wDAAiD,wDAAsE,wDAAuJ,wDAAgE,wDAA0C,wDAA+E,4BCAnb,8EAEX,MAQlD,SAAsBA,EAAAA,CAAmB,CACvC,YAAA,CAAAC,CAAAA,CACA,YAAA,CAAAC,CAAAA,CACA,YAAA,CAAAC,CACF,CAAA,CAAyE,CACvE,IAAMC,CAAAA,CAAkB,MAAMD,CAAAA,CAAa,YAAA,CAAa,CACtD,OAAA,CAASD,CAAAA,CACT,GAAA,CAAKG,+BAAAA,CACL,YAAA,CAAc,iBAAA,CACd,IAAA,CAAM,CAACJ,CAAY,CACrB,CAAC,CAAA,CACD,MAAO,CAAE,GAAA,CAAKG,CAAAA,CAAiB,SAAA,CAAWE,+BAAAA,CAA2B,CAAE,CACzE,CCtBA,wCAMO,sDAEmB,IAYbC,EAAAA,CAAN,MAAA,QAA+BC,oBAAa,CAIvC,WAGV,CACEC,CAAAA,CAUA,CACA,KAAA,CAAMA,CAAO,CAAA,CACb,IAAA,CAAK,GAAA,CAAMA,CAAAA,CAAQ,GAAA,CACnB,IAAA,CAAK,WAAA,CAAcA,CAAAA,CAAQ,IAC7B,CAEA,MAAM,KAAA,CAKJA,CAAAA,CAIC,CACD,IAAMC,CAAAA,CAAYC,EAAAA,CAAaF,CAAAA,CAAQ,KAAK,CAAA,CAEtCG,CAAAA,CAAW,CACf,GAAA,CAAK,IAAA,CAAK,GAAA,CACV,IAAA,CAAM,SAAA,CACN,IAAA,CAAM,IAAA,CAAK,WACb,CAAA,CAEMC,CAAAA,CAAO,CACX,gBAAA,CAAkB,OAAA,CAClB,uBAAA,CAAyBD,CAAAA,CAAS,IAAA,CAClC,sBAAA,CAAwBA,CAAAA,CAAS,GAAA,CACjC,uBAAA,CAAyBA,CAAAA,CAAS,IAAA,CAClC,4BAAA,CAA8BF,CAChC,CAAA,CAEA,GAAI,CACF,IAAMI,CAAAA,CAAe,CAAA,CAAA,EACnB,KAAA,CAAM,KAAA,CACJL,CACF,CAAA,CAEIM,CAAAA,CAAM,MAAMC,mBAAAA,CAAY,SAAA,CAC5B,CACE,IAAA,CAAM,CAAA,QAAA,EAAWN,CAAS,CAAA,CAAA;ACLQ;AC8BA","file":"/Users/pong/coding/monobera/packages/berajs/dist/chunk-45HIEVNI.cjs","sourcesContent":[null,"import { type Address, formatEther, type PublicClient } from \"viem\";\n\nimport { metaMorphoV11Abi as metaMorphoAbi } from \"@berachain/abis/bend-metamorpho/metaMorphoV11\";\n\nexport interface GetConvertToAssetsProps {\n sharesAmount: bigint;\n vaultAddress: Address;\n publicClient: PublicClient;\n}\n\nexport async function getConvertToAssets({\n sharesAmount,\n vaultAddress,\n publicClient,\n}: GetConvertToAssetsProps): Promise<{ raw: bigint; formatted: string }> {\n const convertToAssets = await publicClient.readContract({\n address: vaultAddress,\n abi: metaMorphoAbi,\n functionName: \"convertToAssets\",\n args: [sharesAmount],\n });\n return { raw: convertToAssets, formatted: formatEther(convertToAssets) };\n}\n","import {\n ApolloClient,\n type DocumentNode,\n type ErrorLike,\n type OperationVariables,\n ServerError,\n} from \"@apollo/client\";\n\nimport { appConfig } from \"@berachain/config/internal\";\n\nimport { BeraError } from \"../../errors/BeraError\";\nimport { BeraTracing } from \"../../errors/BeraTracing\";\nimport { RequestError } from \"../../errors/RequestError\";\n\n/**\n * This is a wrapper around the ApolloClient that throws a BeraError if the query returns an error or no data.\n *\n * It's mostly a typescript helper that keeps data always defined since we use errorPolicy: \"none\" by default.\n * Such setting will throw an error if the query returns an error, rather than returning an object with undefined data and an error property.\n */\nexport class BeraApolloClient extends ApolloClient {\n /**\n * The URL of the endpoint. Used for error reporting only.\n */\n protected url: string;\n\n protected serviceName: string;\n constructor(\n options: ApolloClient.Options & {\n /**\n * The URL of the endpoint. Used for error reporting only.\n */\n url: string;\n /**\n * The name of the graphql service. Used for error reporting only.\n */\n name: string;\n },\n ) {\n super(options);\n this.url = options.url;\n this.serviceName = options.name;\n }\n\n async query<\n TData = unknown,\n TVariables extends OperationVariables = OperationVariables,\n >(\n // We handle errors in our custom logic so we don't need to pass errorPolicy here\n options: Omit<ApolloClient.QueryOptions<TData, TVariables>, \"errorPolicy\">,\n ): Promise<{\n // Only data is returned and we're sure it's not undefined due to errorPolicy\n data: TData;\n }> {\n const queryName = getQueryName(options.query);\n\n const endpoint = {\n url: this.url,\n type: \"graphql\",\n name: this.serviceName,\n } as const;\n\n const tags = {\n \"operation.type\": \"query\",\n \"operation.source.name\": endpoint.name,\n \"operation.source.url\": endpoint.url,\n \"operation.source.type\": endpoint.type,\n \"operation.source.queryName\": queryName,\n };\n\n try {\n const executeQuery = () =>\n super.query<TData, TVariables>(\n options as ApolloClient.QueryOptions<TData, TVariables>,\n );\n\n const res = await BeraTracing.startSpan(\n {\n name: `GraphQL ${queryName}`,\n op: \"BeraApolloClient.query\",\n attributes: tags,\n },\n executeQuery,\n );\n\n if (res.error || res.data === undefined) {\n throw new BeraError({\n level: \"fatal\",\n tags,\n message:\n \"Bera Apollo Client: No data returned from query, but error should be thrown since errorPolicy is none\",\n });\n }\n\n return { data: res.data } as const;\n } catch (error) {\n !appConfig.env.isProduction &&\n console.error(\"BeraApolloClient error\", error);\n\n if (ServerError.is(error)) {\n throw new RequestError({\n // reason: error,\n response: error.response,\n cause: error,\n statusCode: error.statusCode,\n endpoint,\n tags,\n });\n }\n if (error instanceof TypeError) {\n throw new RequestError({\n level: \"fatal\",\n reason: \"TypeError\",\n response: error,\n cause: error,\n endpoint,\n tags,\n });\n }\n throw new RequestError({\n response: error as ErrorLike,\n tags,\n cause: error,\n endpoint,\n });\n }\n }\n}\n\nfunction getQueryName(queryDefinition: DocumentNode) {\n const likelyNode = queryDefinition.definitions.find(\n (def) => def.kind === (\"OperationDefinition\" as const),\n );\n\n return likelyNode?.name?.value;\n}\n","import graymatter from \"gray-matter\";\n\nimport type { ProposalSelectionFragment } from \"@berachain/graphql/governance\";\n\nexport type ParseProposalBodyResult = graymatter.GrayMatterFile<string> & {\n /** Whether the body uses YAML front-matter (true) or legacy heading format (false) */\n isFrontMatter: boolean;\n};\n\nfunction parseLegacyBody(s: string): {\n type: string | null;\n title: string;\n content: string;\n} {\n const pattern = /#(?:([\\w-]+)# )?(.+)\\n([\\s\\S]*)/;\n const match = s.match(pattern);\n\n if (match) {\n const type = match[1] || null;\n const title = match[2];\n const content = match[3].replace(\"\\n\", \"<br />\");\n return {\n type,\n title,\n content,\n };\n }\n\n throw new Error(\"Invalid proposal body\");\n}\n\n/**\n * Parses the body of a governance proposal into structured front-matter and content.\n * Supports YAML front-matter format and a legacy heading-based format.\n * Falls back to raw description on parse failure.\n */\nexport function parseProposalBody(\n proposal?: Pick<ProposalSelectionFragment, \"description\">,\n): ParseProposalBodyResult {\n if (!proposal) {\n return {\n isFrontMatter: false,\n data: { title: \"Loading...\" },\n content: \"\",\n matter: \"\",\n language: \"\",\n orig: \"\",\n stringify: () => \"\",\n };\n }\n\n const body = proposal?.description ?? \"\";\n\n if (graymatter.test(body)) {\n return { ...graymatter(body), isFrontMatter: true };\n }\n\n try {\n const legacyBody = parseLegacyBody(body);\n\n return {\n isFrontMatter: false,\n data: { title: legacyBody.title },\n content: legacyBody.content,\n matter: \"\",\n language: \"\",\n orig: body,\n stringify: () => body,\n };\n } catch {\n return {\n isFrontMatter: false,\n data: {\n title: proposal?.description?.split(\"\\n\")[0].slice(0, 100),\n },\n content: body,\n matter: \"\",\n language: \"\",\n orig: body,\n stringify: () => body,\n };\n }\n}\n","import {\n type Address,\n type PublicClient,\n parseEventLogs,\n type TransactionReceipt,\n} from \"viem\";\n\nimport { berachainGovernanceAbi as governanceAbi } from \"@berachain/abis/gov/berachainGovernance\";\n\nimport {\n type ExecutableCallSubsetFragment,\n ProposalStatus,\n type ProposalWithVotesFragment,\n} from \"@berachain/graphql/governance\";\n\nimport { assertPublicClient } from \"../../errors/assert\";\nimport { parseProposalBody } from \"./parseProposalBody\";\n\nexport type GetProposalFromTxArgs = {\n /** Viem public client used to fetch block and receipt data */\n publicClient: PublicClient | undefined;\n} & (\n | {\n /** Pre-fetched transaction receipt */\n tx: TransactionReceipt;\n }\n | {\n /** Transaction hash to look up */\n txHash: Address;\n }\n);\n\n/**\n * Reconstructs a `ProposalWithVotesFragment` from the `ProposalCreated` event\n * emitted in a given transaction. Returns `null` if the event is not found.\n */\nexport async function getProposalFromTx(\n args: GetProposalFromTxArgs,\n): Promise<ProposalWithVotesFragment | null> {\n assertPublicClient(args.publicClient);\n\n let tx: TransactionReceipt;\n\n if (\"tx\" in args) {\n tx = args.tx;\n } else {\n tx = await args.publicClient.getTransactionReceipt({ hash: args.txHash });\n }\n\n const creationEvent = tx?.logs\n ? parseEventLogs({\n abi: governanceAbi,\n logs: tx.logs,\n eventName: \"ProposalCreated\",\n })?.at(0)\n : undefined;\n\n if (!tx || !creationEvent) {\n return null;\n }\n\n const block = await args.publicClient.getBlock({\n blockNumber: tx.blockNumber,\n });\n const fm = parseProposalBody({\n description: creationEvent?.args.description as string,\n });\n\n return {\n id: String(creationEvent.args.proposalId),\n proposalId: String(creationEvent?.args.proposalId),\n createdAt: block.timestamp.toString(),\n title: fm.data.title,\n createdAtBlock: block.timestamp.toString(),\n voteStartAt: String(creationEvent?.args.voteStart),\n voteEndAt: String(creationEvent?.args.voteEnd),\n proposer: creationEvent?.args.proposer,\n description: fm.content,\n unverifiedForumLink: fm.data.forumLink,\n pollResult: {\n for: \"0\",\n forVotersCount: 0,\n forPercentage: \"0\",\n against: \"0\",\n againstVotersCount: 0,\n againstPercentage: \"0\",\n abstain: \"0\",\n abstainVotersCount: 0,\n abstainPercentage: \"0\",\n total: \"0\",\n totalVotersCount: 0,\n totalTowardsQuorum: \"0\",\n },\n status: ProposalStatus.Pending,\n quorum: null,\n topics: fm.data.topics,\n votes: [],\n executableCalls: creationEvent?.args.targets.map(\n (target, index) =>\n ({\n __typename: \"ExecutableCall\",\n id: `${tx.transactionHash}-${index}`,\n target: target as Address,\n value: String(creationEvent?.args.values[index]),\n calldata: creationEvent?.args.calldatas[index],\n }) satisfies ExecutableCallSubsetFragment,\n ),\n timelock: undefined,\n } satisfies ProposalWithVotesFragment;\n}\n"]}
@@ -0,0 +1,2 @@
1
+ import{a as p}from"./chunk-NAXAZJJY.mjs";import{b as r,c as b,d as u}from"./chunk-WBTS6KFG.mjs";import{a as g,e as d}from"./chunk-5NVZG5N6.mjs";import{EnsoClient as h}from"@ensofinance/sdk";import{appConfig as k}from"@berachain/config/internal";var T=process.env.NODE_ENV!=="development"&&process.env.NODE_ENV!=="test";function U({useProxy:e=T,...n}={}){let{config:a}=g(n);return new h({baseURL:e?`${a.bex.aggregatorsProxyUrl}/enso/api/v1/`:void 0,apiKey:e?"":k.apiKeys.public.enso})}import{getChainId as w,getPublicClient as E}from"@wagmi/core";import{erc20Abi as P,formatUnits as v,isAddress as x}from"viem";function N({token:e,account:n,multicallAddress:a}){return d(e,"BERA")||d(e,"ETH")?{address:a,abi:p,functionName:"getEthBalance",args:[n]}:{address:e.address,abi:P,functionName:"balanceOf",args:[n]}}async function _({account:e,tokenList:n,wagmiConfig:a}){if(r(a,"config"),!e||!n)throw new Error("account or tokenList is not defined");u(e,"account");let C=n.filter(t=>x(t.address)),B=Object.groupBy(C,t=>t.chainId??w(a));return(await Promise.allSettled(Object.entries(B).map(async([t,o])=>{r(o,"tokens");let s=E(a,{chainId:Number(t)});b(s,`publicClient ${t}`),r(s.chain,"publicClient.chain"),r(s.chain.contracts,"publicClient.chain.contracts"),r(s.chain.contracts.multicall3,"publicClient.chain.contracts.multicall3");let{multicall3:c}=s.chain.contracts,f=typeof c=="string"?c:c.address;u(f,"multicall3Address");let A=o.map(i=>N({token:i,account:e,multicallAddress:f}));return(await s.multicall({contracts:A})).map((i,y)=>{let l=o[y];if(i.error)return{...l,balance:{raw:"0",formatted:"0"}};let m=v(i.result,l?.decimals||18);return{...l,balance:{raw:i.result.toString(),formatted:m.includes("e")?"0":m}}})}))).flatMap(t=>t.status==="fulfilled"?t.value:[])}export{U as a,N as b,_ as c};
2
+ //# sourceMappingURL=chunk-47ILYVHC.mjs.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/actions/clients/getEnsoClient.ts","../src/actions/tokens/getWalletBalances.ts"],"sourcesContent":["import { EnsoClient } from \"@ensofinance/sdk\";\n\nimport { appConfig } from \"@berachain/config/internal\";\n\nimport { parseBaseArgs } from \"../../utils/parseBaseArgs\";\n\nconst isProduction =\n process.env.NODE_ENV !== \"development\" && process.env.NODE_ENV !== \"test\";\n\nexport function getEnsoClient({\n useProxy = isProduction,\n ...args\n}: BeraJS.BaseFunctionArgs & { useProxy?: boolean } = {}) {\n const { config } = parseBaseArgs(args);\n return new EnsoClient({\n baseURL: useProxy\n ? `${config.bex.aggregatorsProxyUrl}/enso/api/v1/`\n : undefined,\n apiKey: useProxy\n ? // no API key since proxy has CORS for .berachain.com domains\n \"\"\n : appConfig.apiKeys.public.enso,\n });\n}\n","import { type Config, getChainId, getPublicClient } from \"@wagmi/core\";\nimport {\n type Address,\n type ContractFunctionParameters,\n erc20Abi,\n formatUnits,\n isAddress,\n} from \"viem\";\n\nimport { multicall3Abi } from \"../../abi/utils/multicall3\";\nimport {\n assertAddress,\n assertDefined,\n assertPublicClient,\n} from \"../../errors/assert\";\nimport type { BalanceToken, Token } from \"../../types/dex\";\nimport { isToken } from \"../../utils/tokens\";\n\nexport interface GetWalletBalances {\n account: string | undefined;\n tokenList: Token[] | undefined;\n wagmiConfig: Config | undefined;\n}\n\n/**\n * Returns the payload for the balanceOf call for a given token and account.\n *\n * @internal\n * @returns\n */\nexport function getBalanceCall({\n token,\n account,\n multicallAddress,\n}: {\n token: Token;\n account: Address;\n multicallAddress: Address;\n}) {\n if (isToken(token, \"BERA\") || isToken(token, \"ETH\")) {\n return {\n address: multicallAddress,\n abi: multicall3Abi,\n functionName: \"getEthBalance\",\n args: [account],\n } as const satisfies ContractFunctionParameters<\n typeof multicall3Abi,\n \"view\",\n \"getEthBalance\"\n >;\n }\n return {\n address: token.address as Address,\n abi: erc20Abi,\n functionName: \"balanceOf\",\n args: [account],\n } as const satisfies ContractFunctionParameters<\n typeof erc20Abi,\n \"view\",\n \"balanceOf\"\n >;\n}\n\n/**\n * fetch the balances of a given wallet address\n */\nexport async function getWalletBalances({\n account,\n tokenList,\n wagmiConfig: config,\n}: GetWalletBalances): Promise<BalanceToken[] | undefined> {\n assertDefined(config, \"config\");\n if (!account || !tokenList)\n throw new Error(\"account or tokenList is not defined\");\n\n assertAddress(account, \"account\");\n\n const filteredTokenList = tokenList.filter((token) =>\n isAddress(token.address),\n );\n\n const tokensByChainId = Object.groupBy(\n filteredTokenList,\n (token) => token.chainId ?? getChainId(config),\n );\n\n const res = await Promise.allSettled(\n Object.entries(tokensByChainId).map(async ([chainId, tokens]) => {\n assertDefined(tokens, \"tokens\");\n const publicClient = getPublicClient(config, {\n chainId: Number(chainId),\n });\n assertPublicClient(publicClient, `publicClient ${chainId}`);\n assertDefined(publicClient.chain, \"publicClient.chain\");\n assertDefined(\n publicClient.chain.contracts,\n \"publicClient.chain.contracts\",\n );\n assertDefined(\n publicClient.chain.contracts.multicall3,\n \"publicClient.chain.contracts.multicall3\",\n );\n\n const { multicall3 } = publicClient.chain.contracts;\n\n const multicall3Address =\n typeof multicall3 === \"string\" ? multicall3 : multicall3.address;\n\n assertAddress(multicall3Address, \"multicall3Address\");\n\n const call = tokens.map((token: Token) =>\n getBalanceCall({\n token,\n account,\n multicallAddress: multicall3Address,\n }),\n );\n\n const result = await publicClient.multicall({\n contracts: call,\n });\n\n return result.map((item, index) => {\n const token = tokens[index];\n if (item.error) {\n return { ...token, balance: { raw: \"0\", formatted: \"0\" } };\n }\n const formattedBalance = formatUnits(\n item.result,\n token?.decimals || 18,\n );\n\n const resultBalanceToken: BalanceToken = {\n ...token,\n balance: {\n raw: item.result.toString(),\n // TODO: this was done 10 months ago, i'm not sure it's a good solution.\n formatted: formattedBalance.includes(\"e\") ? \"0\" : formattedBalance,\n },\n } satisfies BalanceToken;\n return resultBalanceToken;\n });\n }),\n );\n\n return res.flatMap((result) =>\n result.status === \"fulfilled\" ? result.value : [],\n );\n}\n"],"mappings":"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","names":[]}
1
+ {"version":3,"sources":["../src/actions/clients/getEnsoClient.ts","../src/actions/tokens/getWalletBalances.ts"],"sourcesContent":["import { EnsoClient } from \"@ensofinance/sdk\";\n\nimport { appConfig } from \"@berachain/config/internal\";\n\nimport { parseBaseArgs } from \"../../utils/parseBaseArgs\";\n\nconst isProduction =\n process.env.NODE_ENV !== \"development\" && process.env.NODE_ENV !== \"test\";\n\nexport function getEnsoClient({\n useProxy = isProduction,\n ...args\n}: BeraJS.BaseFunctionArgs & { useProxy?: boolean } = {}) {\n const { config } = parseBaseArgs(args);\n return new EnsoClient({\n baseURL: useProxy\n ? `${config.bex.aggregatorsProxyUrl}/enso/api/v1/`\n : undefined,\n apiKey: useProxy\n ? // no API key since proxy has CORS for .berachain.com domains\n \"\"\n : appConfig.apiKeys.public.enso,\n });\n}\n","import { type Config, getChainId, getPublicClient } from \"@wagmi/core\";\nimport {\n type Address,\n type ContractFunctionParameters,\n erc20Abi,\n formatUnits,\n isAddress,\n} from \"viem\";\n\nimport { multicall3Abi } from \"../../abi/utils/multicall3\";\nimport {\n assertAddress,\n assertDefined,\n assertPublicClient,\n} from \"../../errors/assert\";\nimport type { BalanceToken, Token } from \"../../types/dex\";\nimport { isToken } from \"../../utils/tokens\";\n\nexport interface GetWalletBalances {\n account: string | undefined;\n tokenList: Token[] | undefined;\n wagmiConfig: Config | undefined;\n}\n\n/**\n * Returns the payload for the balanceOf call for a given token and account.\n *\n * @internal\n * @returns\n */\nexport function getBalanceCall({\n token,\n account,\n multicallAddress,\n}: {\n token: Token;\n account: Address;\n multicallAddress: Address;\n}) {\n if (isToken(token, \"BERA\") || isToken(token, \"ETH\")) {\n return {\n address: multicallAddress,\n abi: multicall3Abi,\n functionName: \"getEthBalance\",\n args: [account],\n } as const satisfies ContractFunctionParameters<\n typeof multicall3Abi,\n \"view\",\n \"getEthBalance\"\n >;\n }\n return {\n address: token.address as Address,\n abi: erc20Abi,\n functionName: \"balanceOf\",\n args: [account],\n } as const satisfies ContractFunctionParameters<\n typeof erc20Abi,\n \"view\",\n \"balanceOf\"\n >;\n}\n\n/**\n * fetch the balances of a given wallet address\n */\nexport async function getWalletBalances({\n account,\n tokenList,\n wagmiConfig: config,\n}: GetWalletBalances): Promise<BalanceToken[] | undefined> {\n assertDefined(config, \"config\");\n if (!account || !tokenList)\n throw new Error(\"account or tokenList is not defined\");\n\n assertAddress(account, \"account\");\n\n const filteredTokenList = tokenList.filter((token) =>\n isAddress(token.address),\n );\n\n const tokensByChainId = Object.groupBy(\n filteredTokenList,\n (token) => token.chainId ?? getChainId(config),\n );\n\n const res = await Promise.allSettled(\n Object.entries(tokensByChainId).map(async ([chainId, tokens]) => {\n assertDefined(tokens, \"tokens\");\n const publicClient = getPublicClient(config, {\n chainId: Number(chainId),\n });\n assertPublicClient(publicClient, `publicClient ${chainId}`);\n assertDefined(publicClient.chain, \"publicClient.chain\");\n assertDefined(\n publicClient.chain.contracts,\n \"publicClient.chain.contracts\",\n );\n assertDefined(\n publicClient.chain.contracts.multicall3,\n \"publicClient.chain.contracts.multicall3\",\n );\n\n const { multicall3 } = publicClient.chain.contracts;\n\n const multicall3Address =\n typeof multicall3 === \"string\" ? multicall3 : multicall3.address;\n\n assertAddress(multicall3Address, \"multicall3Address\");\n\n const call = tokens.map((token: Token) =>\n getBalanceCall({\n token,\n account,\n multicallAddress: multicall3Address,\n }),\n );\n\n const result = await publicClient.multicall({\n contracts: call,\n });\n\n return result.map((item, index) => {\n const token = tokens[index];\n if (item.error) {\n return { ...token, balance: { raw: \"0\", formatted: \"0\" } };\n }\n const formattedBalance = formatUnits(\n item.result,\n token?.decimals || 18,\n );\n\n const resultBalanceToken: BalanceToken = {\n ...token,\n balance: {\n raw: item.result.toString(),\n // TODO: this was done 10 months ago, i'm not sure it's a good solution.\n formatted: formattedBalance.includes(\"e\") ? \"0\" : formattedBalance,\n },\n } satisfies BalanceToken;\n return resultBalanceToken;\n });\n }),\n );\n\n return res.flatMap((result) =>\n result.status === \"fulfilled\" ? result.value : [],\n );\n}\n"],"mappings":"gJAAA,OAAS,cAAAA,MAAkB,mBAE3B,OAAS,aAAAC,MAAiB,6BAI1B,IAAMC,EACJ,QAAQ,IAAI,WAAa,eAAiB,QAAQ,IAAI,WAAa,OAE9D,SAASC,EAAc,CAC5B,SAAAC,EAAWF,EACX,GAAGG,CACL,EAAsD,CAAC,EAAG,CACxD,GAAM,CAAE,OAAAC,CAAO,EAAIC,EAAcF,CAAI,EACrC,OAAO,IAAIG,EAAW,CACpB,QAASJ,EACL,GAAGE,EAAO,IAAI,mBAAmB,gBACjC,OACJ,OAAQF,EAEJ,GACAK,EAAU,QAAQ,OAAO,IAC/B,CAAC,CACH,CCvBA,OAAsB,cAAAC,EAAY,mBAAAC,MAAuB,cACzD,OAGE,YAAAC,EACA,eAAAC,EACA,aAAAC,MACK,OAuBA,SAASC,EAAe,CAC7B,MAAAC,EACA,QAAAC,EACA,iBAAAC,CACF,EAIG,CACD,OAAIC,EAAQH,EAAO,MAAM,GAAKG,EAAQH,EAAO,KAAK,EACzC,CACL,QAASE,EACT,IAAKE,EACL,aAAc,gBACd,KAAM,CAACH,CAAO,CAChB,EAMK,CACL,QAASD,EAAM,QACf,IAAKK,EACL,aAAc,YACd,KAAM,CAACJ,CAAO,CAChB,CAKF,CAKA,eAAsBK,EAAkB,CACtC,QAAAL,EACA,UAAAM,EACA,YAAaC,CACf,EAA2D,CAEzD,GADAC,EAAcD,EAAQ,QAAQ,EAC1B,CAACP,GAAW,CAACM,EACf,MAAM,IAAI,MAAM,qCAAqC,EAEvDG,EAAcT,EAAS,SAAS,EAEhC,IAAMU,EAAoBJ,EAAU,OAAQP,GAC1CY,EAAUZ,EAAM,OAAO,CACzB,EAEMa,EAAkB,OAAO,QAC7BF,EACCX,GAAUA,EAAM,SAAWc,EAAWN,CAAM,CAC/C,EA6DA,OA3DY,MAAM,QAAQ,WACxB,OAAO,QAAQK,CAAe,EAAE,IAAI,MAAO,CAACE,EAASC,CAAM,IAAM,CAC/DP,EAAcO,EAAQ,QAAQ,EAC9B,IAAMC,EAAeC,EAAgBV,EAAQ,CAC3C,QAAS,OAAOO,CAAO,CACzB,CAAC,EACDI,EAAmBF,EAAc,gBAAgBF,CAAO,EAAE,EAC1DN,EAAcQ,EAAa,MAAO,oBAAoB,EACtDR,EACEQ,EAAa,MAAM,UACnB,8BACF,EACAR,EACEQ,EAAa,MAAM,UAAU,WAC7B,yCACF,EAEA,GAAM,CAAE,WAAAG,CAAW,EAAIH,EAAa,MAAM,UAEpCI,EACJ,OAAOD,GAAe,SAAWA,EAAaA,EAAW,QAE3DV,EAAcW,EAAmB,mBAAmB,EAEpD,IAAMC,EAAON,EAAO,IAAKhB,GACvBD,EAAe,CACb,MAAAC,EACA,QAAAC,EACA,iBAAkBoB,CACpB,CAAC,CACH,EAMA,OAJe,MAAMJ,EAAa,UAAU,CAC1C,UAAWK,CACb,CAAC,GAEa,IAAI,CAACC,EAAMC,IAAU,CACjC,IAAMxB,EAAQgB,EAAOQ,CAAK,EAC1B,GAAID,EAAK,MACP,MAAO,CAAE,GAAGvB,EAAO,QAAS,CAAE,IAAK,IAAK,UAAW,GAAI,CAAE,EAE3D,IAAMyB,EAAmBC,EACvBH,EAAK,OACLvB,GAAO,UAAY,EACrB,EAUA,MARyC,CACvC,GAAGA,EACH,QAAS,CACP,IAAKuB,EAAK,OAAO,SAAS,EAE1B,UAAWE,EAAiB,SAAS,GAAG,EAAI,IAAMA,CACpD,CACF,CAEF,CAAC,CACH,CAAC,CACH,GAEW,QAASE,GAClBA,EAAO,SAAW,YAAcA,EAAO,MAAQ,CAAC,CAClD,CACF","names":["EnsoClient","appConfig","isProduction","getEnsoClient","useProxy","args","config","parseBaseArgs","EnsoClient","appConfig","getChainId","getPublicClient","erc20Abi","formatUnits","isAddress","getBalanceCall","token","account","multicallAddress","isToken","multicall3Abi","erc20Abi","getWalletBalances","tokenList","config","assertDefined","assertAddress","filteredTokenList","isAddress","tokensByChainId","getChainId","chainId","tokens","publicClient","getPublicClient","assertPublicClient","multicall3","multicall3Address","call","item","index","formattedBalance","formatUnits","result"]}
@@ -0,0 +1,2 @@
1
+ var A=(R=>(R[R.FAST=1e4]="FAST",R[R.NORMAL=1e5]="NORMAL",R[R.SLOW=18e4]="SLOW",R[R.REFRESH_BLOCK_INTERVAL=1e4]="REFRESH_BLOCK_INTERVAL",R))(A||{});export{A as a};
2
+ //# sourceMappingURL=chunk-575OK77P.mjs.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/enum/polling.ts"],"sourcesContent":["enum POLLING {\n FAST = 10000, // 10 sec\n NORMAL = 100000, // 100 sec\n SLOW = 180000, // 3 min\n REFRESH_BLOCK_INTERVAL = 10000, // 10 sec\n}\n\nexport { POLLING };\n"],"mappings":";AAAA,IAAK,UAAL,kBAAKA,aAAL;AACE,EAAAA,kBAAA,UAAO,OAAP;AACA,EAAAA,kBAAA,YAAS,OAAT;AACA,EAAAA,kBAAA,UAAO,QAAP;AACA,EAAAA,kBAAA,4BAAyB,OAAzB;AAJG,SAAAA;AAAA,GAAA;","names":["POLLING"]}
1
+ {"version":3,"sources":["../src/enum/polling.ts"],"sourcesContent":["enum POLLING {\n FAST = 10000, // 10 sec\n NORMAL = 100000, // 100 sec\n SLOW = 180000, // 3 min\n REFRESH_BLOCK_INTERVAL = 10000, // 10 sec\n}\n\nexport { POLLING };\n"],"mappings":"AAAA,IAAKA,OACHA,IAAA,KAAO,KAAP,OACAA,IAAA,OAAS,KAAT,SACAA,IAAA,KAAO,MAAP,OACAA,IAAA,uBAAyB,KAAzB,yBAJGA,OAAA","names":["POLLING"]}
@@ -0,0 +1,2 @@
1
+ import{h as t}from"./chunk-GXV2JA36.mjs";import{chainConfigs as A,defaultChainId as m}from"@berachain/config/internal";function i(o){let n=o.chainId??m,e=o.config??A[n];if(o.chainId&&o.chainId!==e.chainId)throw new t({property:"chainId",value:n,expected:`config.chainId: ${e.chainId}`});return{config:e,chainId:e.chainId}}import{ethAddress as p,isAddress as B,zeroAddress as f}from"viem";import{mainnet as d}from"@berachain/config/mainnet";var I={address:f,decimals:18,name:"Bera",symbol:"BERA",logoURI:"https://imagedelivery.net/qNj7Q3MCke89zoKzav7eDQ/tokens/0x0000000000000000000000000000000000000000.png/public"},R={address:d.tokens.wbera,decimals:18,name:"WBera",symbol:"WBERA"};function l(o){let{config:n,chainId:e}=i(o);return{address:n.honey.token,symbol:"HONEY",name:"Honey",decimals:18,chainId:e}}function b(...o){let[n,e,r]=o;if(n===void 0)return!1;let s=typeof n=="string"?n:n.address;if(typeof e=="string"&&!B(e)&&!e.startsWith("0x")){if(e==="BERA")return s.toLowerCase()===f;if(e==="WBERA")return s.toLowerCase()===d.tokens.wbera;if(e==="ETH")return s.toLowerCase()===p;if(e==="SWBERA")return s.toLowerCase()===d.tokens.swbera.toLowerCase();if(r===void 0)throw new t({property:"baseArgs",value:r,expected:"BeraJS.BaseFunctionArgs",message:"baseArgs is required when compared to a known token different than BERA or WBERA. Checking against token: "+e+" and token address: "+s});let{config:a}=i(r),c={BGT:a.tokens.bgt,HONEY:a.honey.token,SWBERA:a.tokens.swbera,ETH:p};if(e in c)return s.toLowerCase()===c[e].toLowerCase()}let k=typeof e=="object"?e.address:e;return s.toLowerCase()===k.toLowerCase()}export{i as a,I as b,R as c,l as d,b as e};
2
+ //# sourceMappingURL=chunk-5NVZG5N6.mjs.map