@berachain/berajs 0.2.8-beta.9 → 0.2.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 (237) hide show
  1. package/dist/{BeraError-_mQdkanr.d.cts → BeraError-7-A5JYy_.d.ts} +31 -2
  2. package/dist/{HoneyConfigProvider-DVP_9KZn.d.ts → HoneyConfigProvider-Dkj-_a5x.d.ts} +1 -1
  3. package/dist/{RequestError-BRIiJgHk.d.ts → RequestError-DBOIV65x.d.ts} +1 -1
  4. package/dist/abi/exports.mjs +4452 -2
  5. package/dist/actions/clients/exports.d.ts +2 -0
  6. package/dist/actions/clients/exports.mjs +12 -0
  7. package/dist/actions/exports.d.ts +104 -189
  8. package/dist/actions/exports.mjs +853 -2
  9. package/dist/actions/governance/exports.d.ts +140 -0
  10. package/dist/actions/governance/exports.mjs +226 -0
  11. package/dist/actions/server/exports.d.ts +13 -0
  12. package/dist/actions/server/exports.mjs +27 -0
  13. package/dist/chunk-3EARVV7K.mjs +414 -0
  14. package/dist/chunk-4Z4AK6SH.mjs +211 -0
  15. package/dist/chunk-75M6TF7M.mjs +25 -0
  16. package/dist/chunk-AFN4CVD3.mjs +326 -0
  17. package/dist/chunk-BGMRHTBQ.mjs +23 -0
  18. package/dist/chunk-CDFWPU2R.mjs +473 -0
  19. package/dist/chunk-CDK4YV3D.mjs +571 -0
  20. package/dist/chunk-DKMAIU74.mjs +62 -0
  21. package/dist/chunk-EXIUPSFN.mjs +86 -0
  22. package/dist/chunk-FFB5LFDW.mjs +35 -0
  23. package/dist/chunk-HQCOU6GY.mjs +243 -0
  24. package/dist/chunk-HSSJKHZ4.mjs +135 -0
  25. package/dist/chunk-J5I45WGQ.mjs +1769 -0
  26. package/dist/chunk-KQUMKB66.mjs +89 -0
  27. package/dist/chunk-NBYLMO2L.mjs +14 -0
  28. package/dist/chunk-NPBQLVL3.mjs +80 -0
  29. package/dist/chunk-O2NQFKJK.mjs +170 -0
  30. package/dist/chunk-QJIXTYTZ.mjs +4054 -0
  31. package/dist/chunk-SGIJVHZO.mjs +12 -0
  32. package/dist/chunk-SZ5C44L5.mjs +35 -0
  33. package/dist/chunk-WXXOISTU.mjs +96 -0
  34. package/dist/chunk-XIYN6AL6.mjs +160 -0
  35. package/dist/contexts/exports.d.ts +2 -2
  36. package/dist/contexts/exports.mjs +85 -2
  37. package/dist/enum/exports.d.ts +1 -1
  38. package/dist/enum/exports.mjs +46 -2
  39. package/dist/enum/governance/exports.d.ts +60 -0
  40. package/dist/enum/governance/exports.mjs +14 -0
  41. package/dist/errors/exports.d.ts +4 -3
  42. package/dist/errors/exports.mjs +48 -2
  43. package/dist/exports-BcUTGFUb.d.ts +40 -0
  44. package/dist/{getValidatorQueuedOperatorAddress-BcyxE9uw.d.ts → getValidatorQueuedOperatorAddress-Dw5KN5sh.d.ts} +2 -2
  45. package/dist/{global.d-5w_lvl2J.d.ts → global.d-BuGDKh4k.d.ts} +4 -240
  46. package/dist/hooks/exports.d.ts +69 -211
  47. package/dist/hooks/exports.mjs +7434 -4
  48. package/dist/hooks/governance/exports.d.ts +181 -0
  49. package/dist/hooks/governance/exports.mjs +888 -0
  50. package/dist/pol.d-CqPA9K6m.d.ts +142 -0
  51. package/dist/{txnEnum-7_o92X3N.d.cts → txnEnum-ByI5dtDi.d.ts} +2 -60
  52. package/dist/types/exports.d.ts +9 -9
  53. package/dist/types/exports.mjs +0 -1
  54. package/dist/types/governance/exports.d.ts +109 -0
  55. package/dist/types/governance/exports.mjs +0 -0
  56. package/dist/{useHoneySwapState-B494PQDl.d.ts → useHoneySwapState-vFmuFF0g.d.ts} +1 -1
  57. package/dist/utils/exports.d.ts +15 -6
  58. package/dist/utils/exports.mjs +825 -2
  59. package/package.json +49 -13
  60. package/src/actions/__test/transports.ts +61 -0
  61. package/src/actions/clients/exports.ts +4 -0
  62. package/src/actions/clients/getApolloClient.ts +58 -23
  63. package/src/actions/clients/getEnsoClient.ts +20 -9
  64. package/src/actions/dex/aggregators/enso/enso.ts +27 -17
  65. package/src/actions/dex/aggregators/enso/ensoErc4626.ts +2 -2
  66. package/src/actions/dex/aggregators/kyberswap.ts +18 -23
  67. package/src/actions/enso/__tests__/getEnsoUserTokensWithBalances.debug.test.ts +3 -6
  68. package/src/actions/exports.ts +4 -9
  69. package/src/actions/governance/exports.ts +9 -0
  70. package/src/actions/governance/getAllProposals.ts +10 -65
  71. package/src/actions/governance/getProposalDetails.ts +6 -33
  72. package/src/actions/governance/getProposalVotes.ts +8 -15
  73. package/src/actions/honey/getChartData.ts +27 -21
  74. package/src/actions/honey/getHoney24hVolume.ts +19 -22
  75. package/src/actions/pol/getAutoclaimedIncentives.ts +30 -0
  76. package/src/actions/pol/getBeraTokenTotalSupply.ts +45 -0
  77. package/src/actions/pol/getBgtIncentiveDistributorPaused.ts +35 -0
  78. package/src/actions/pol/getEarnedStakedBeraVault.ts +7 -11
  79. package/src/actions/pol/getGlobalData.ts +1 -0
  80. package/src/actions/pol/getHeroEarnVaults.ts +62 -0
  81. package/src/actions/pol/getIncentiveFeeClaimStats.ts +19 -38
  82. package/src/actions/pol/getSWBeraVaultMetadata.ts +1 -1
  83. package/src/actions/pol/getStakingDailyAssets.ts +7 -10
  84. package/src/actions/server/exports.ts +1 -0
  85. package/src/actions/server/getDailyValidatorBlockStats.ts +33 -0
  86. package/src/actions/tokens/getWalletBalances.integration.test.ts +3 -6
  87. package/src/actions/transactions/beraWriteContract.integration.test.ts +3 -6
  88. package/src/actions/validators/getDailyValidatorBlockStats.ts +25 -24
  89. package/src/actions/validators/getValidatorAnalytics.ts +20 -21
  90. package/src/actions/validators/getValidatorIncentiveDistribution.ts +33 -0
  91. package/src/enum/contracts.ts +1 -0
  92. package/src/enum/exports.ts +0 -1
  93. package/src/enum/governance/exports.ts +1 -0
  94. package/src/errors/BeraError.ts +47 -7
  95. package/src/errors/BeraTracing.unit.test.ts +65 -0
  96. package/src/errors/RequestError.ts +13 -1
  97. package/src/errors/exports.ts +5 -0
  98. package/src/errors/getRevertReason.integration.test.ts +3 -3
  99. package/src/errors/spanStatus.ts +78 -0
  100. package/src/errors/spanStatus.unit.test.ts +62 -0
  101. package/src/hooks/dex/useCreatePool.ts +1 -88
  102. package/src/hooks/dex/useOnChainPoolData.ts +27 -2
  103. package/src/hooks/dex/usePriceImpact.ts +12 -5
  104. package/src/hooks/enso/useBendDemultiply.ts +9 -1
  105. package/src/hooks/enso/useBendMultiply.ts +9 -1
  106. package/src/hooks/enso/useBendZapSupply.ts +26 -7
  107. package/src/hooks/enso/useEnsoSwapBundle.ts +17 -3
  108. package/src/hooks/enso/useEnsoUserTokensWithBalances.ts +13 -2
  109. package/src/hooks/exports.ts +2 -15
  110. package/src/hooks/governance/exports.ts +14 -0
  111. package/src/hooks/pol/useAutoclaimedIncentives.ts +49 -0
  112. package/src/hooks/pol/useStakedAPR.ts +2 -2
  113. package/src/hooks/pol/useStakedSnapshots.ts +5 -9
  114. package/src/hooks/validators/useValidator.ts +2 -0
  115. package/src/hooks/validators/useValidatorIncentiveDistribution.ts +39 -0
  116. package/src/types/bribe-boost.d.ts +8 -0
  117. package/src/types/exports.ts +0 -1
  118. package/src/types/governance/exports.ts +1 -0
  119. package/src/utils/beraFetch.ts +9 -3
  120. package/src/utils/exports.ts +1 -0
  121. package/src/utils/getServerSideClient.ts +4 -2
  122. package/src/utils/sanitizeRpcUrl.ts +22 -0
  123. package/src/utils/tracedTransport.ts +35 -0
  124. package/dist/BeraError-_mQdkanr.d.ts +0 -94
  125. package/dist/BexStatusProvider-DRymVlQf.d.cts +0 -70
  126. package/dist/HoneyConfigProvider-DfkjmzEf.d.cts +0 -390
  127. package/dist/RequestError-DSUzJ1Iy.d.cts +0 -144
  128. package/dist/abi/exports.cjs +0 -2
  129. package/dist/abi/exports.cjs.map +0 -1
  130. package/dist/abi/exports.d.cts +0 -6574
  131. package/dist/abi/exports.mjs.map +0 -1
  132. package/dist/actions/exports.cjs +0 -2
  133. package/dist/actions/exports.cjs.map +0 -1
  134. package/dist/actions/exports.d.cts +0 -1650
  135. package/dist/actions/exports.mjs.map +0 -1
  136. package/dist/chunk-45HIEVNI.cjs +0 -4
  137. package/dist/chunk-45HIEVNI.cjs.map +0 -1
  138. package/dist/chunk-47ILYVHC.mjs +0 -2
  139. package/dist/chunk-47ILYVHC.mjs.map +0 -1
  140. package/dist/chunk-575OK77P.mjs +0 -2
  141. package/dist/chunk-575OK77P.mjs.map +0 -1
  142. package/dist/chunk-5NVZG5N6.mjs +0 -2
  143. package/dist/chunk-5NVZG5N6.mjs.map +0 -1
  144. package/dist/chunk-6DIA6PXV.cjs +0 -2
  145. package/dist/chunk-6DIA6PXV.cjs.map +0 -1
  146. package/dist/chunk-6JJIZCVY.cjs +0 -2
  147. package/dist/chunk-6JJIZCVY.cjs.map +0 -1
  148. package/dist/chunk-7F72ZH4Q.mjs +0 -2
  149. package/dist/chunk-7F72ZH4Q.mjs.map +0 -1
  150. package/dist/chunk-AUA42YIG.mjs +0 -4
  151. package/dist/chunk-AUA42YIG.mjs.map +0 -1
  152. package/dist/chunk-BC2WX6O6.cjs +0 -2
  153. package/dist/chunk-BC2WX6O6.cjs.map +0 -1
  154. package/dist/chunk-CJOZC5Z2.cjs +0 -2
  155. package/dist/chunk-CJOZC5Z2.cjs.map +0 -1
  156. package/dist/chunk-D6L7LTA2.cjs +0 -2
  157. package/dist/chunk-D6L7LTA2.cjs.map +0 -1
  158. package/dist/chunk-DDEQFR3M.cjs +0 -2
  159. package/dist/chunk-DDEQFR3M.cjs.map +0 -1
  160. package/dist/chunk-GXV2JA36.mjs +0 -2
  161. package/dist/chunk-GXV2JA36.mjs.map +0 -1
  162. package/dist/chunk-ISYNEDET.mjs +0 -2
  163. package/dist/chunk-ISYNEDET.mjs.map +0 -1
  164. package/dist/chunk-JDDRTHFG.mjs +0 -2
  165. package/dist/chunk-JDDRTHFG.mjs.map +0 -1
  166. package/dist/chunk-JDZGYU5T.mjs +0 -2
  167. package/dist/chunk-JDZGYU5T.mjs.map +0 -1
  168. package/dist/chunk-LVOXBZMA.cjs +0 -2
  169. package/dist/chunk-LVOXBZMA.cjs.map +0 -1
  170. package/dist/chunk-MK5NS5B5.mjs +0 -2
  171. package/dist/chunk-MK5NS5B5.mjs.map +0 -1
  172. package/dist/chunk-NAXAZJJY.mjs +0 -2
  173. package/dist/chunk-NAXAZJJY.mjs.map +0 -1
  174. package/dist/chunk-NLVWRMGD.mjs +0 -2
  175. package/dist/chunk-NLVWRMGD.mjs.map +0 -1
  176. package/dist/chunk-OGBD5YOG.mjs +0 -2
  177. package/dist/chunk-OGBD5YOG.mjs.map +0 -1
  178. package/dist/chunk-OGJMSGB2.mjs +0 -2
  179. package/dist/chunk-OGJMSGB2.mjs.map +0 -1
  180. package/dist/chunk-OIYXOKTT.cjs +0 -2
  181. package/dist/chunk-OIYXOKTT.cjs.map +0 -1
  182. package/dist/chunk-OUD27MU7.cjs +0 -2
  183. package/dist/chunk-OUD27MU7.cjs.map +0 -1
  184. package/dist/chunk-PRLVZIKD.mjs +0 -2
  185. package/dist/chunk-PRLVZIKD.mjs.map +0 -1
  186. package/dist/chunk-Q2SNRLW3.cjs +0 -2
  187. package/dist/chunk-Q2SNRLW3.cjs.map +0 -1
  188. package/dist/chunk-REWME3FY.cjs +0 -2
  189. package/dist/chunk-REWME3FY.cjs.map +0 -1
  190. package/dist/chunk-RJN36GBU.mjs +0 -2
  191. package/dist/chunk-RJN36GBU.mjs.map +0 -1
  192. package/dist/chunk-RWOICHRW.cjs +0 -2
  193. package/dist/chunk-RWOICHRW.cjs.map +0 -1
  194. package/dist/chunk-S4CDSVLK.cjs +0 -2
  195. package/dist/chunk-S4CDSVLK.cjs.map +0 -1
  196. package/dist/chunk-SFEULGSX.cjs +0 -2
  197. package/dist/chunk-SFEULGSX.cjs.map +0 -1
  198. package/dist/chunk-WBTS6KFG.mjs +0 -2
  199. package/dist/chunk-WBTS6KFG.mjs.map +0 -1
  200. package/dist/chunk-WRFDB3QJ.cjs +0 -2
  201. package/dist/chunk-WRFDB3QJ.cjs.map +0 -1
  202. package/dist/chunk-XNJLSA6P.cjs +0 -2
  203. package/dist/chunk-XNJLSA6P.cjs.map +0 -1
  204. package/dist/contexts/exports.cjs +0 -2
  205. package/dist/contexts/exports.cjs.map +0 -1
  206. package/dist/contexts/exports.d.cts +0 -66
  207. package/dist/contexts/exports.mjs.map +0 -1
  208. package/dist/defaultFlags-D6KfkTZx.d.cts +0 -10
  209. package/dist/dex-C_BB0b0O.d.cts +0 -37
  210. package/dist/enum/exports.cjs +0 -2
  211. package/dist/enum/exports.cjs.map +0 -1
  212. package/dist/enum/exports.d.cts +0 -23
  213. package/dist/enum/exports.mjs.map +0 -1
  214. package/dist/errors/exports.cjs +0 -2
  215. package/dist/errors/exports.cjs.map +0 -1
  216. package/dist/errors/exports.d.cts +0 -327
  217. package/dist/errors/exports.mjs.map +0 -1
  218. package/dist/getValidatorQueuedOperatorAddress-Cql_D50j.d.cts +0 -562
  219. package/dist/global.d-B7IeayVX.d.cts +0 -474
  220. package/dist/honey-CYm0RWf4.d.cts +0 -14
  221. package/dist/hooks/exports.cjs +0 -4
  222. package/dist/hooks/exports.cjs.map +0 -1
  223. package/dist/hooks/exports.d.cts +0 -1734
  224. package/dist/hooks/exports.mjs.map +0 -1
  225. package/dist/polling-BKnyavLI.d.cts +0 -8
  226. package/dist/txnEnum-7_o92X3N.d.ts +0 -164
  227. package/dist/types/exports.cjs +0 -1
  228. package/dist/types/exports.cjs.map +0 -1
  229. package/dist/types/exports.d.cts +0 -90
  230. package/dist/types/exports.mjs.map +0 -1
  231. package/dist/useHoneySwapState-D6vpv19r.d.cts +0 -32
  232. package/dist/utils/exports.cjs +0 -2
  233. package/dist/utils/exports.cjs.map +0 -1
  234. package/dist/utils/exports.d.cts +0 -420
  235. package/dist/utils/exports.mjs.map +0 -1
  236. package/src/actions/dex/getIsTokenExploited.ts +0 -63
  237. package/src/hooks/dex/useExploitedTokens.ts +0 -57
@@ -0,0 +1,140 @@
1
+ import { AbiParameter, Address, PublicClient, AbiFunction, TransactionReceipt } from 'viem';
2
+ import { ProposalErrorCodes, ProposalState } from '../../enum/governance/exports.js';
3
+ import { ProposalStatus, ProposalSelectionFragment, Proposal_Filter, Proposal_OrderBy, OrderDirection, ProposalWithVotesFragment, GetProposalVotesQueryVariables, GetProposalVotesQuery } from '@berachain/graphql/governance';
4
+ import { CustomProposal, GovernanceTopic, CustomProposalErrors } from '../../types/governance/exports.js';
5
+ import graymatter from 'gray-matter';
6
+
7
+ type CheckProposalFieldResultMinimal = ProposalErrorCodes | null;
8
+ type CheckProposalFieldResult = ProposalErrorCodes | null | CheckProposalFieldResultMinimal[] | Record<string, CheckProposalFieldResultMinimal>;
9
+ /**
10
+ * Validates a single proposal field or ABI-typed value.
11
+ * Returns `null` if valid, or a `ProposalErrorCodes` value describing the problem.
12
+ */
13
+ declare function checkProposalField(arg: {
14
+ fieldOrType: "address" | "hex" | "abi" | "string" | "bool" | `uint${string}` | `int${string}` | "action" | "title" | "forumLink" | "description" | "logoURI" | "url";
15
+ value: unknown;
16
+ required?: boolean;
17
+ baseUrl?: string;
18
+ components?: readonly (AbiParameter | readonly AbiParameter[])[];
19
+ }): CheckProposalFieldResultMinimal;
20
+ /**
21
+ * For tuple/tuple[] types, may return nested error structures.
22
+ */
23
+ declare function checkProposalField(arg: {
24
+ fieldOrType: "tuple[]" | "tuple";
25
+ value: unknown;
26
+ required?: boolean;
27
+ baseUrl?: string;
28
+ components?: readonly (AbiParameter | readonly AbiParameter[])[];
29
+ }): CheckProposalFieldResult;
30
+
31
+ declare const MOCKED_PROPOSAL_STATUSES: readonly ProposalStatus[];
32
+ /**
33
+ * Derives the effective `ProposalStatus` by reconciling subgraph data with the
34
+ * on-chain contract state. Falls back to subgraph timestamps when the on-chain
35
+ * state is unavailable.
36
+ */
37
+ declare function computeActualStatus(
38
+ /** Subgraph proposal data */
39
+ proposal: ProposalSelectionFragment,
40
+ /** Value returned by the `state` function of the governance contract */
41
+ proposalOnChainState?: ProposalState): ProposalStatus;
42
+
43
+ type GetAllProposalsArgs = BeraJS.BaseFunctionArgs & {
44
+ /** Subgraph filter applied to the proposals query */
45
+ where: Proposal_Filter;
46
+ /** Number of proposals to skip (for pagination) */
47
+ offset?: number;
48
+ /** Maximum proposals per page; must be ≤ 1000 */
49
+ perPage?: number;
50
+ orderBy?: Proposal_OrderBy;
51
+ orderDirection?: OrderDirection;
52
+ /** Full-text search query; switches to the search endpoint when provided */
53
+ text?: string;
54
+ };
55
+ /** Fetches a paginated list of governance proposals from the subgraph */
56
+ declare function getAllProposals(_args: GetAllProposalsArgs): Promise<ProposalSelectionFragment[] | undefined>;
57
+
58
+ interface GetBodyErrorsArgs {
59
+ /** The proposal to validate */
60
+ proposal: CustomProposal;
61
+ /** The current governance topic, used for forum link base URL validation */
62
+ currentTopic: GovernanceTopic;
63
+ }
64
+ /** Validates the body fields (title, description, forum link) of a proposal */
65
+ declare function getBodyErrors({ proposal, currentTopic, }: GetBodyErrorsArgs): CustomProposalErrors;
66
+
67
+ interface GetDecodedFunctionDataArgs {
68
+ /** Contract address that emitted the calldata */
69
+ address: Address;
70
+ /** Raw calldata to decode */
71
+ callData: `0x${string}`;
72
+ /** @default defaultChainId */
73
+ chainId?: number;
74
+ publicClient: PublicClient;
75
+ }
76
+ /**
77
+ * Decodes the function data from a given contract address and calldata.
78
+ *
79
+ * Attempts to decode using a known set of ABIs first, then falls back to
80
+ * fetching the ABI from the block-explorer API.
81
+ *
82
+ * @returns An object with the decoded ABI item, function signature, function name, and arguments.
83
+ */
84
+ declare function getDecodedFunctionData({ address, callData, chainId, publicClient, }: GetDecodedFunctionDataArgs): Promise<{
85
+ args: never[];
86
+ abiItem?: undefined;
87
+ functionSignature?: undefined;
88
+ functionName?: undefined;
89
+ } | {
90
+ abiItem: AbiFunction | undefined;
91
+ functionSignature: string | undefined;
92
+ functionName: string;
93
+ args: unknown[];
94
+ }>;
95
+
96
+ type GetProposalDetailsArgs = BeraJS.BaseFunctionArgs & {
97
+ /** On-chain proposal ID */
98
+ proposalId: string;
99
+ client?: PublicClient;
100
+ };
101
+ /** Fetches a single proposal with its vote data from the subgraph */
102
+ declare function getProposalDetails(_args: GetProposalDetailsArgs): Promise<ProposalWithVotesFragment | undefined>;
103
+
104
+ type GetProposalFromTxArgs = {
105
+ /** Viem public client used to fetch block and receipt data */
106
+ publicClient: PublicClient | undefined;
107
+ } & ({
108
+ /** Pre-fetched transaction receipt */
109
+ tx: TransactionReceipt;
110
+ } | {
111
+ /** Transaction hash to look up */
112
+ txHash: Address;
113
+ });
114
+ /**
115
+ * Reconstructs a `ProposalWithVotesFragment` from the `ProposalCreated` event
116
+ * emitted in a given transaction. Returns `null` if the event is not found.
117
+ */
118
+ declare function getProposalFromTx(args: GetProposalFromTxArgs): Promise<ProposalWithVotesFragment | null>;
119
+
120
+ type GetProposalVotesArgs = BeraJS.BaseFunctionArgs & {
121
+ /** GraphQL variables forwarded to the GetProposalVotes query */
122
+ variables: GetProposalVotesQueryVariables;
123
+ };
124
+ /** Fetches the votes for a proposal from the subgraph */
125
+ declare function getProposalVotes(_args: GetProposalVotesArgs): Promise<{
126
+ data: GetProposalVotesQuery;
127
+ }>;
128
+
129
+ type ParseProposalBodyResult = graymatter.GrayMatterFile<string> & {
130
+ /** Whether the body uses YAML front-matter (true) or legacy heading format (false) */
131
+ isFrontMatter: boolean;
132
+ };
133
+ /**
134
+ * Parses the body of a governance proposal into structured front-matter and content.
135
+ * Supports YAML front-matter format and a legacy heading-based format.
136
+ * Falls back to raw description on parse failure.
137
+ */
138
+ declare function parseProposalBody(proposal?: Pick<ProposalSelectionFragment, "description">): ParseProposalBodyResult;
139
+
140
+ export { type GetAllProposalsArgs, type GetBodyErrorsArgs, type GetDecodedFunctionDataArgs, type GetProposalDetailsArgs, type GetProposalFromTxArgs, type GetProposalVotesArgs, MOCKED_PROPOSAL_STATUSES, type ParseProposalBodyResult, checkProposalField, computeActualStatus, getAllProposals, getBodyErrors, getDecodedFunctionData, getProposalDetails, getProposalFromTx, getProposalVotes, parseProposalBody };
@@ -0,0 +1,226 @@
1
+ import {
2
+ checkProposalField,
3
+ getAllProposals,
4
+ getBodyErrors,
5
+ getProposalDetails,
6
+ getProposalFromTx,
7
+ getProposalVotes,
8
+ parseProposalBody
9
+ } from "../../chunk-AFN4CVD3.mjs";
10
+ import "../../chunk-DKMAIU74.mjs";
11
+ import "../../chunk-KQUMKB66.mjs";
12
+ import "../../chunk-J5I45WGQ.mjs";
13
+
14
+ // src/actions/governance/computeActualStatus.ts
15
+ import {
16
+ ProposalStatus
17
+ } from "@berachain/graphql/governance";
18
+ var GOVERNANCE_ACCELERATE_PROPOSAL = false;
19
+ var MOCKED_PROPOSAL_STATUSES = [
20
+ ProposalStatus.Active,
21
+ ProposalStatus.PendingQueue,
22
+ ProposalStatus.PendingExecution,
23
+ ProposalStatus.Defeated,
24
+ ProposalStatus.QuorumNotReached
25
+ ];
26
+ function computeActualStatus(proposal, proposalOnChainState) {
27
+ const timestampInSeconds = Date.now() / 1e3;
28
+ if (proposalOnChainState !== void 0) {
29
+ if (proposal.status === ProposalStatus.CanceledByGuardian) {
30
+ return ProposalStatus.CanceledByGuardian;
31
+ }
32
+ if (proposalOnChainState === 2 /* Canceled */) {
33
+ if (Number(proposal.voteStartAt) < timestampInSeconds)
34
+ return ProposalStatus.CanceledByUser;
35
+ return ProposalStatus.CanceledByGuardian;
36
+ }
37
+ if (proposalOnChainState === 3 /* Defeated */) {
38
+ if (!proposal.pollResult) {
39
+ return ProposalStatus.QuorumNotReached;
40
+ }
41
+ if (
42
+ // Quorum might be null if no votes were cast.
43
+ !proposal.quorum || BigInt(proposal.quorum) > BigInt(proposal.pollResult.totalTowardsQuorum)
44
+ ) {
45
+ return ProposalStatus.QuorumNotReached;
46
+ }
47
+ return ProposalStatus.Defeated;
48
+ }
49
+ if (proposalOnChainState === 4 /* Succeeded */) {
50
+ return ProposalStatus.PendingQueue;
51
+ }
52
+ if (proposalOnChainState === 5 /* Queued */) {
53
+ if (Number(proposal.queueEnd) < Date.now() / 1e3) {
54
+ return ProposalStatus.PendingExecution;
55
+ }
56
+ return ProposalStatus.InQueue;
57
+ }
58
+ if (proposalOnChainState === 6 /* Expired */) {
59
+ console.warn("Unexpected expired state on proposal id: ", proposal.id);
60
+ return ProposalStatus.Defeated;
61
+ }
62
+ }
63
+ if (proposal.status === ProposalStatus.InQueue) {
64
+ if (Number(proposal.queueEnd) < Date.now() / 1e3) {
65
+ return ProposalStatus.PendingExecution;
66
+ }
67
+ }
68
+ if (GOVERNANCE_ACCELERATE_PROPOSAL && proposalOnChainState === 1 /* Active */ && proposal.quorum && BigInt(proposal.quorum) < BigInt(proposal.pollResult.totalTowardsQuorum) && Number(proposal.pollResult.forPercentage) > Number(proposal.pollResult.againstPercentage)) {
69
+ return ProposalStatus.PendingQueue;
70
+ }
71
+ if (proposal.status === ProposalStatus.Pending) {
72
+ if (Number(proposal.voteStartAt) < timestampInSeconds && Number(proposal.voteEndAt) > timestampInSeconds) {
73
+ return ProposalStatus.Active;
74
+ }
75
+ if (Number(proposal.voteEndAt) < timestampInSeconds) {
76
+ if (!proposal.pollResult) {
77
+ return ProposalStatus.QuorumNotReached;
78
+ }
79
+ if (!proposal.quorum || BigInt(proposal.quorum) > BigInt(proposal.pollResult.totalTowardsQuorum)) {
80
+ return ProposalStatus.QuorumNotReached;
81
+ }
82
+ if (proposal.pollResult?.against > proposal.pollResult?.for) {
83
+ return ProposalStatus.Defeated;
84
+ }
85
+ return ProposalStatus.PendingQueue;
86
+ }
87
+ return ProposalStatus.Pending;
88
+ }
89
+ if (proposal.status === ProposalStatus.Active && Number(proposal.voteEndAt) < timestampInSeconds) {
90
+ if (!proposal.quorum || BigInt(proposal.quorum) > BigInt(proposal.pollResult.totalTowardsQuorum)) {
91
+ return ProposalStatus.QuorumNotReached;
92
+ }
93
+ if (BigInt(proposal.pollResult?.against ?? 0n) > BigInt(proposal.pollResult?.for ?? 0n)) {
94
+ return ProposalStatus.Defeated;
95
+ }
96
+ return ProposalStatus.PendingQueue;
97
+ }
98
+ if (proposal.status === ProposalStatus.InQueue) {
99
+ if (Number(proposal.queueEnd) < Date.now() / 1e3) {
100
+ return ProposalStatus.PendingExecution;
101
+ }
102
+ }
103
+ return proposal.status;
104
+ }
105
+
106
+ // src/actions/governance/getDecodedFunctionData.ts
107
+ import {
108
+ decodeFunctionData,
109
+ erc20Abi,
110
+ pad,
111
+ toFunctionSignature,
112
+ trim
113
+ } from "viem";
114
+ import { appConfig, defaultChainId } from "@berachain/config/internal";
115
+ import { beraChefAbi } from "@berachain/abis/pol/rewards/beraChef";
116
+ import { rewardVaultAbi } from "@berachain/abis/pol/rewards/rewardVault";
117
+ function isProxyABI(abi) {
118
+ return abi.some((item) => {
119
+ const i = item;
120
+ return i.name === "implementation" || i.name === "proxyType" || i.type === "constructor" && i.inputs?.[0]?.name === "implementation";
121
+ });
122
+ }
123
+ async function _getAbi({
124
+ contractAddress,
125
+ chainId,
126
+ publicClient
127
+ }) {
128
+ const url = `https://api.etherscan.io/v2/api?module=contract&action=getabi&address=${contractAddress}&apikey=${appConfig.apiKeys.private.etherscan}&chainId=${chainId}`;
129
+ const response = await fetch(url);
130
+ if (!response.ok) {
131
+ throw new Error(`Failed to fetch ABI: ${response.statusText}`);
132
+ }
133
+ const data = await response.json();
134
+ if (data.status === "0") throw new Error(data.result);
135
+ const abi = JSON.parse(data.result);
136
+ if (!isProxyABI(abi)) return abi;
137
+ const implementationResult = await publicClient.getStorageAt({
138
+ address: contractAddress,
139
+ // bytes32(uint256(keccak256('eip1967.proxy.implementation')) - 1)).
140
+ slot: "0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc"
141
+ });
142
+ if (!implementationResult || trim(implementationResult) === "0x00")
143
+ return abi;
144
+ const implementationAddress = pad(trim(implementationResult), { size: 20 });
145
+ return _getAbi({
146
+ contractAddress: implementationAddress,
147
+ chainId,
148
+ publicClient
149
+ });
150
+ }
151
+ async function _getAbiForCallData({
152
+ address,
153
+ callData,
154
+ knownAbi,
155
+ chainId,
156
+ publicClient
157
+ }) {
158
+ try {
159
+ if (decodeFunctionData({ data: callData, abi: knownAbi })) {
160
+ return knownAbi;
161
+ }
162
+ } catch {
163
+ }
164
+ return _getAbi({ contractAddress: address, chainId, publicClient }).catch(
165
+ () => void 0
166
+ );
167
+ }
168
+ function _decodeCallData(callData, abi) {
169
+ try {
170
+ return decodeFunctionData({ data: callData, abi });
171
+ } catch {
172
+ return void 0;
173
+ }
174
+ }
175
+ function _findAbiItem(abi, functionName) {
176
+ return abi.find(
177
+ (a) => a.type === "function" && a.name === functionName
178
+ );
179
+ }
180
+ function _getFunctionSignature(abiItem) {
181
+ if (!abiItem) return;
182
+ try {
183
+ return toFunctionSignature(abiItem);
184
+ } catch (error) {
185
+ console.error(error);
186
+ }
187
+ }
188
+ async function getDecodedFunctionData({
189
+ address,
190
+ callData,
191
+ chainId = defaultChainId,
192
+ publicClient
193
+ }) {
194
+ const knownAbi = [...beraChefAbi, ...rewardVaultAbi, ...erc20Abi];
195
+ const abi = await _getAbiForCallData({
196
+ address,
197
+ callData,
198
+ knownAbi,
199
+ chainId,
200
+ publicClient
201
+ });
202
+ const decodedData = _decodeCallData(callData, abi);
203
+ if (!abi || !decodedData) {
204
+ return { args: [] };
205
+ }
206
+ const abiItem = _findAbiItem(abi, decodedData.functionName);
207
+ const functionSignature = _getFunctionSignature(abiItem);
208
+ return {
209
+ abiItem,
210
+ functionSignature,
211
+ functionName: decodedData.functionName,
212
+ args: decodedData.args
213
+ };
214
+ }
215
+ export {
216
+ MOCKED_PROPOSAL_STATUSES,
217
+ checkProposalField,
218
+ computeActualStatus,
219
+ getAllProposals,
220
+ getBodyErrors,
221
+ getDecodedFunctionData,
222
+ getProposalDetails,
223
+ getProposalFromTx,
224
+ getProposalVotes,
225
+ parseProposalBody
226
+ };
@@ -0,0 +1,13 @@
1
+ import { Address } from 'viem';
2
+ import { GetValidatorBlockStatsQuery } from '@berachain/graphql/pol/subgraph';
3
+
4
+ /**
5
+ * Server-only RSC variant. Goes directly to the pol subgraph upstream
6
+ * (no auth required) through the shared Apollo client factory.
7
+ */
8
+ declare function getDailyValidatorBlockStats({ pubKey, first, ...args }: BeraJS.BaseFunctionArgs & {
9
+ pubKey: Address;
10
+ first?: number;
11
+ }): Promise<GetValidatorBlockStatsQuery | undefined>;
12
+
13
+ export { getDailyValidatorBlockStats };
@@ -0,0 +1,27 @@
1
+ import {
2
+ getApolloClient
3
+ } from "../../chunk-4Z4AK6SH.mjs";
4
+ import "../../chunk-75M6TF7M.mjs";
5
+ import "../../chunk-SZ5C44L5.mjs";
6
+ import "../../chunk-XIYN6AL6.mjs";
7
+ import "../../chunk-J5I45WGQ.mjs";
8
+
9
+ // src/actions/server/getDailyValidatorBlockStats.ts
10
+ import {
11
+ GetValidatorBlockStats
12
+ } from "@berachain/graphql/pol/subgraph";
13
+ async function getDailyValidatorBlockStats({
14
+ pubKey,
15
+ first = 1,
16
+ ...args
17
+ }) {
18
+ const client = getApolloClient("pol.subgraph", args);
19
+ const result = await client.query({
20
+ query: GetValidatorBlockStats,
21
+ variables: { pubKey, first }
22
+ });
23
+ return result.data;
24
+ }
25
+ export {
26
+ getDailyValidatorBlockStats
27
+ };