@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.
- package/dist/{BeraError-_mQdkanr.d.cts → BeraError-7-A5JYy_.d.ts} +31 -2
- package/dist/{HoneyConfigProvider-DVP_9KZn.d.ts → HoneyConfigProvider-Dkj-_a5x.d.ts} +1 -1
- package/dist/{RequestError-BRIiJgHk.d.ts → RequestError-DBOIV65x.d.ts} +1 -1
- package/dist/abi/exports.mjs +4452 -2
- package/dist/actions/clients/exports.d.ts +2 -0
- package/dist/actions/clients/exports.mjs +12 -0
- package/dist/actions/exports.d.ts +104 -189
- package/dist/actions/exports.mjs +853 -2
- package/dist/actions/governance/exports.d.ts +140 -0
- package/dist/actions/governance/exports.mjs +226 -0
- package/dist/actions/server/exports.d.ts +13 -0
- package/dist/actions/server/exports.mjs +27 -0
- package/dist/chunk-3EARVV7K.mjs +414 -0
- package/dist/chunk-4Z4AK6SH.mjs +211 -0
- package/dist/chunk-75M6TF7M.mjs +25 -0
- package/dist/chunk-AFN4CVD3.mjs +326 -0
- package/dist/chunk-BGMRHTBQ.mjs +23 -0
- package/dist/chunk-CDFWPU2R.mjs +473 -0
- package/dist/chunk-CDK4YV3D.mjs +571 -0
- package/dist/chunk-DKMAIU74.mjs +62 -0
- package/dist/chunk-EXIUPSFN.mjs +86 -0
- package/dist/chunk-FFB5LFDW.mjs +35 -0
- package/dist/chunk-HQCOU6GY.mjs +243 -0
- package/dist/chunk-HSSJKHZ4.mjs +135 -0
- package/dist/chunk-J5I45WGQ.mjs +1769 -0
- package/dist/chunk-KQUMKB66.mjs +89 -0
- package/dist/chunk-NBYLMO2L.mjs +14 -0
- package/dist/chunk-NPBQLVL3.mjs +80 -0
- package/dist/chunk-O2NQFKJK.mjs +170 -0
- package/dist/chunk-QJIXTYTZ.mjs +4054 -0
- package/dist/chunk-SGIJVHZO.mjs +12 -0
- package/dist/chunk-SZ5C44L5.mjs +35 -0
- package/dist/chunk-WXXOISTU.mjs +96 -0
- package/dist/chunk-XIYN6AL6.mjs +160 -0
- package/dist/contexts/exports.d.ts +2 -2
- package/dist/contexts/exports.mjs +85 -2
- package/dist/enum/exports.d.ts +1 -1
- package/dist/enum/exports.mjs +46 -2
- package/dist/enum/governance/exports.d.ts +60 -0
- package/dist/enum/governance/exports.mjs +14 -0
- package/dist/errors/exports.d.ts +4 -3
- package/dist/errors/exports.mjs +48 -2
- package/dist/exports-BcUTGFUb.d.ts +40 -0
- package/dist/{getValidatorQueuedOperatorAddress-BcyxE9uw.d.ts → getValidatorQueuedOperatorAddress-Dw5KN5sh.d.ts} +2 -2
- package/dist/{global.d-5w_lvl2J.d.ts → global.d-BuGDKh4k.d.ts} +4 -240
- package/dist/hooks/exports.d.ts +69 -211
- package/dist/hooks/exports.mjs +7434 -4
- package/dist/hooks/governance/exports.d.ts +181 -0
- package/dist/hooks/governance/exports.mjs +888 -0
- package/dist/pol.d-CqPA9K6m.d.ts +142 -0
- package/dist/{txnEnum-7_o92X3N.d.cts → txnEnum-ByI5dtDi.d.ts} +2 -60
- package/dist/types/exports.d.ts +9 -9
- package/dist/types/exports.mjs +0 -1
- package/dist/types/governance/exports.d.ts +109 -0
- package/dist/types/governance/exports.mjs +0 -0
- package/dist/{useHoneySwapState-B494PQDl.d.ts → useHoneySwapState-vFmuFF0g.d.ts} +1 -1
- package/dist/utils/exports.d.ts +15 -6
- package/dist/utils/exports.mjs +825 -2
- package/package.json +49 -13
- package/src/actions/__test/transports.ts +61 -0
- package/src/actions/clients/exports.ts +4 -0
- package/src/actions/clients/getApolloClient.ts +58 -23
- package/src/actions/clients/getEnsoClient.ts +20 -9
- package/src/actions/dex/aggregators/enso/enso.ts +27 -17
- package/src/actions/dex/aggregators/enso/ensoErc4626.ts +2 -2
- package/src/actions/dex/aggregators/kyberswap.ts +18 -23
- package/src/actions/enso/__tests__/getEnsoUserTokensWithBalances.debug.test.ts +3 -6
- package/src/actions/exports.ts +4 -9
- package/src/actions/governance/exports.ts +9 -0
- package/src/actions/governance/getAllProposals.ts +10 -65
- package/src/actions/governance/getProposalDetails.ts +6 -33
- package/src/actions/governance/getProposalVotes.ts +8 -15
- package/src/actions/honey/getChartData.ts +27 -21
- package/src/actions/honey/getHoney24hVolume.ts +19 -22
- package/src/actions/pol/getAutoclaimedIncentives.ts +30 -0
- package/src/actions/pol/getBeraTokenTotalSupply.ts +45 -0
- package/src/actions/pol/getBgtIncentiveDistributorPaused.ts +35 -0
- package/src/actions/pol/getEarnedStakedBeraVault.ts +7 -11
- package/src/actions/pol/getGlobalData.ts +1 -0
- package/src/actions/pol/getHeroEarnVaults.ts +62 -0
- package/src/actions/pol/getIncentiveFeeClaimStats.ts +19 -38
- package/src/actions/pol/getSWBeraVaultMetadata.ts +1 -1
- package/src/actions/pol/getStakingDailyAssets.ts +7 -10
- package/src/actions/server/exports.ts +1 -0
- package/src/actions/server/getDailyValidatorBlockStats.ts +33 -0
- package/src/actions/tokens/getWalletBalances.integration.test.ts +3 -6
- package/src/actions/transactions/beraWriteContract.integration.test.ts +3 -6
- package/src/actions/validators/getDailyValidatorBlockStats.ts +25 -24
- package/src/actions/validators/getValidatorAnalytics.ts +20 -21
- package/src/actions/validators/getValidatorIncentiveDistribution.ts +33 -0
- package/src/enum/contracts.ts +1 -0
- package/src/enum/exports.ts +0 -1
- package/src/enum/governance/exports.ts +1 -0
- package/src/errors/BeraError.ts +47 -7
- package/src/errors/BeraTracing.unit.test.ts +65 -0
- package/src/errors/RequestError.ts +13 -1
- package/src/errors/exports.ts +5 -0
- package/src/errors/getRevertReason.integration.test.ts +3 -3
- package/src/errors/spanStatus.ts +78 -0
- package/src/errors/spanStatus.unit.test.ts +62 -0
- package/src/hooks/dex/useCreatePool.ts +1 -88
- package/src/hooks/dex/useOnChainPoolData.ts +27 -2
- package/src/hooks/dex/usePriceImpact.ts +12 -5
- package/src/hooks/enso/useBendDemultiply.ts +9 -1
- package/src/hooks/enso/useBendMultiply.ts +9 -1
- package/src/hooks/enso/useBendZapSupply.ts +26 -7
- package/src/hooks/enso/useEnsoSwapBundle.ts +17 -3
- package/src/hooks/enso/useEnsoUserTokensWithBalances.ts +13 -2
- package/src/hooks/exports.ts +2 -15
- package/src/hooks/governance/exports.ts +14 -0
- package/src/hooks/pol/useAutoclaimedIncentives.ts +49 -0
- package/src/hooks/pol/useStakedAPR.ts +2 -2
- package/src/hooks/pol/useStakedSnapshots.ts +5 -9
- package/src/hooks/validators/useValidator.ts +2 -0
- package/src/hooks/validators/useValidatorIncentiveDistribution.ts +39 -0
- package/src/types/bribe-boost.d.ts +8 -0
- package/src/types/exports.ts +0 -1
- package/src/types/governance/exports.ts +1 -0
- package/src/utils/beraFetch.ts +9 -3
- package/src/utils/exports.ts +1 -0
- package/src/utils/getServerSideClient.ts +4 -2
- package/src/utils/sanitizeRpcUrl.ts +22 -0
- package/src/utils/tracedTransport.ts +35 -0
- package/dist/BeraError-_mQdkanr.d.ts +0 -94
- package/dist/BexStatusProvider-DRymVlQf.d.cts +0 -70
- package/dist/HoneyConfigProvider-DfkjmzEf.d.cts +0 -390
- package/dist/RequestError-DSUzJ1Iy.d.cts +0 -144
- package/dist/abi/exports.cjs +0 -2
- package/dist/abi/exports.cjs.map +0 -1
- package/dist/abi/exports.d.cts +0 -6574
- package/dist/abi/exports.mjs.map +0 -1
- package/dist/actions/exports.cjs +0 -2
- package/dist/actions/exports.cjs.map +0 -1
- package/dist/actions/exports.d.cts +0 -1650
- package/dist/actions/exports.mjs.map +0 -1
- package/dist/chunk-45HIEVNI.cjs +0 -4
- package/dist/chunk-45HIEVNI.cjs.map +0 -1
- package/dist/chunk-47ILYVHC.mjs +0 -2
- package/dist/chunk-47ILYVHC.mjs.map +0 -1
- package/dist/chunk-575OK77P.mjs +0 -2
- package/dist/chunk-575OK77P.mjs.map +0 -1
- package/dist/chunk-5NVZG5N6.mjs +0 -2
- package/dist/chunk-5NVZG5N6.mjs.map +0 -1
- package/dist/chunk-6DIA6PXV.cjs +0 -2
- package/dist/chunk-6DIA6PXV.cjs.map +0 -1
- package/dist/chunk-6JJIZCVY.cjs +0 -2
- package/dist/chunk-6JJIZCVY.cjs.map +0 -1
- package/dist/chunk-7F72ZH4Q.mjs +0 -2
- package/dist/chunk-7F72ZH4Q.mjs.map +0 -1
- package/dist/chunk-AUA42YIG.mjs +0 -4
- package/dist/chunk-AUA42YIG.mjs.map +0 -1
- package/dist/chunk-BC2WX6O6.cjs +0 -2
- package/dist/chunk-BC2WX6O6.cjs.map +0 -1
- package/dist/chunk-CJOZC5Z2.cjs +0 -2
- package/dist/chunk-CJOZC5Z2.cjs.map +0 -1
- package/dist/chunk-D6L7LTA2.cjs +0 -2
- package/dist/chunk-D6L7LTA2.cjs.map +0 -1
- package/dist/chunk-DDEQFR3M.cjs +0 -2
- package/dist/chunk-DDEQFR3M.cjs.map +0 -1
- package/dist/chunk-GXV2JA36.mjs +0 -2
- package/dist/chunk-GXV2JA36.mjs.map +0 -1
- package/dist/chunk-ISYNEDET.mjs +0 -2
- package/dist/chunk-ISYNEDET.mjs.map +0 -1
- package/dist/chunk-JDDRTHFG.mjs +0 -2
- package/dist/chunk-JDDRTHFG.mjs.map +0 -1
- package/dist/chunk-JDZGYU5T.mjs +0 -2
- package/dist/chunk-JDZGYU5T.mjs.map +0 -1
- package/dist/chunk-LVOXBZMA.cjs +0 -2
- package/dist/chunk-LVOXBZMA.cjs.map +0 -1
- package/dist/chunk-MK5NS5B5.mjs +0 -2
- package/dist/chunk-MK5NS5B5.mjs.map +0 -1
- package/dist/chunk-NAXAZJJY.mjs +0 -2
- package/dist/chunk-NAXAZJJY.mjs.map +0 -1
- package/dist/chunk-NLVWRMGD.mjs +0 -2
- package/dist/chunk-NLVWRMGD.mjs.map +0 -1
- package/dist/chunk-OGBD5YOG.mjs +0 -2
- package/dist/chunk-OGBD5YOG.mjs.map +0 -1
- package/dist/chunk-OGJMSGB2.mjs +0 -2
- package/dist/chunk-OGJMSGB2.mjs.map +0 -1
- package/dist/chunk-OIYXOKTT.cjs +0 -2
- package/dist/chunk-OIYXOKTT.cjs.map +0 -1
- package/dist/chunk-OUD27MU7.cjs +0 -2
- package/dist/chunk-OUD27MU7.cjs.map +0 -1
- package/dist/chunk-PRLVZIKD.mjs +0 -2
- package/dist/chunk-PRLVZIKD.mjs.map +0 -1
- package/dist/chunk-Q2SNRLW3.cjs +0 -2
- package/dist/chunk-Q2SNRLW3.cjs.map +0 -1
- package/dist/chunk-REWME3FY.cjs +0 -2
- package/dist/chunk-REWME3FY.cjs.map +0 -1
- package/dist/chunk-RJN36GBU.mjs +0 -2
- package/dist/chunk-RJN36GBU.mjs.map +0 -1
- package/dist/chunk-RWOICHRW.cjs +0 -2
- package/dist/chunk-RWOICHRW.cjs.map +0 -1
- package/dist/chunk-S4CDSVLK.cjs +0 -2
- package/dist/chunk-S4CDSVLK.cjs.map +0 -1
- package/dist/chunk-SFEULGSX.cjs +0 -2
- package/dist/chunk-SFEULGSX.cjs.map +0 -1
- package/dist/chunk-WBTS6KFG.mjs +0 -2
- package/dist/chunk-WBTS6KFG.mjs.map +0 -1
- package/dist/chunk-WRFDB3QJ.cjs +0 -2
- package/dist/chunk-WRFDB3QJ.cjs.map +0 -1
- package/dist/chunk-XNJLSA6P.cjs +0 -2
- package/dist/chunk-XNJLSA6P.cjs.map +0 -1
- package/dist/contexts/exports.cjs +0 -2
- package/dist/contexts/exports.cjs.map +0 -1
- package/dist/contexts/exports.d.cts +0 -66
- package/dist/contexts/exports.mjs.map +0 -1
- package/dist/defaultFlags-D6KfkTZx.d.cts +0 -10
- package/dist/dex-C_BB0b0O.d.cts +0 -37
- package/dist/enum/exports.cjs +0 -2
- package/dist/enum/exports.cjs.map +0 -1
- package/dist/enum/exports.d.cts +0 -23
- package/dist/enum/exports.mjs.map +0 -1
- package/dist/errors/exports.cjs +0 -2
- package/dist/errors/exports.cjs.map +0 -1
- package/dist/errors/exports.d.cts +0 -327
- package/dist/errors/exports.mjs.map +0 -1
- package/dist/getValidatorQueuedOperatorAddress-Cql_D50j.d.cts +0 -562
- package/dist/global.d-B7IeayVX.d.cts +0 -474
- package/dist/honey-CYm0RWf4.d.cts +0 -14
- package/dist/hooks/exports.cjs +0 -4
- package/dist/hooks/exports.cjs.map +0 -1
- package/dist/hooks/exports.d.cts +0 -1734
- package/dist/hooks/exports.mjs.map +0 -1
- package/dist/polling-BKnyavLI.d.cts +0 -8
- package/dist/txnEnum-7_o92X3N.d.ts +0 -164
- package/dist/types/exports.cjs +0 -1
- package/dist/types/exports.cjs.map +0 -1
- package/dist/types/exports.d.cts +0 -90
- package/dist/types/exports.mjs.map +0 -1
- package/dist/useHoneySwapState-D6vpv19r.d.cts +0 -32
- package/dist/utils/exports.cjs +0 -2
- package/dist/utils/exports.cjs.map +0 -1
- package/dist/utils/exports.d.cts +0 -420
- package/dist/utils/exports.mjs.map +0 -1
- package/src/actions/dex/getIsTokenExploited.ts +0 -63
- package/src/hooks/dex/useExploitedTokens.ts +0 -57
|
@@ -0,0 +1,326 @@
|
|
|
1
|
+
import {
|
|
2
|
+
assertPublicClient
|
|
3
|
+
} from "./chunk-KQUMKB66.mjs";
|
|
4
|
+
|
|
5
|
+
// src/actions/governance/checkProposalField.ts
|
|
6
|
+
import { isAddress, isHex } from "viem";
|
|
7
|
+
function checkProposalField({
|
|
8
|
+
fieldOrType,
|
|
9
|
+
value,
|
|
10
|
+
required = true,
|
|
11
|
+
baseUrl,
|
|
12
|
+
components
|
|
13
|
+
}) {
|
|
14
|
+
const notRequiredAbiTypes = ["bool", "string"];
|
|
15
|
+
if (!notRequiredAbiTypes.includes(fieldOrType) && required && (value === void 0 || value === null || value === "")) {
|
|
16
|
+
return "Required" /* REQUIRED */;
|
|
17
|
+
}
|
|
18
|
+
if (fieldOrType.startsWith("uint") || fieldOrType.startsWith("int")) {
|
|
19
|
+
if (typeof value !== "string") {
|
|
20
|
+
return "Invalid amount" /* INVALID_AMOUNT */;
|
|
21
|
+
}
|
|
22
|
+
try {
|
|
23
|
+
const valueBN = BigInt(value);
|
|
24
|
+
if (fieldOrType.startsWith("uint")) {
|
|
25
|
+
if (valueBN < 0n) {
|
|
26
|
+
return "Negative amount" /* NEGATIVE_AMOUNT */;
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
} catch {
|
|
30
|
+
return "Invalid amount" /* INVALID_AMOUNT */;
|
|
31
|
+
}
|
|
32
|
+
return null;
|
|
33
|
+
}
|
|
34
|
+
switch (fieldOrType) {
|
|
35
|
+
case "string":
|
|
36
|
+
if (value !== void 0 && typeof value !== "string") {
|
|
37
|
+
return "Invalid amount" /* INVALID_AMOUNT */;
|
|
38
|
+
}
|
|
39
|
+
return null;
|
|
40
|
+
case "bool":
|
|
41
|
+
if (typeof value !== "boolean") {
|
|
42
|
+
return "Invalid amount" /* INVALID_AMOUNT */;
|
|
43
|
+
}
|
|
44
|
+
return null;
|
|
45
|
+
case "title":
|
|
46
|
+
if (typeof value !== "string" || value.length === 0) {
|
|
47
|
+
return "Required" /* REQUIRED */;
|
|
48
|
+
}
|
|
49
|
+
return null;
|
|
50
|
+
case "description":
|
|
51
|
+
if (typeof value !== "string" || value.length === 0) {
|
|
52
|
+
return "Required" /* REQUIRED */;
|
|
53
|
+
}
|
|
54
|
+
return null;
|
|
55
|
+
case "forumLink": {
|
|
56
|
+
if (typeof value !== "string" || value.length === 0) {
|
|
57
|
+
return "Required" /* REQUIRED */;
|
|
58
|
+
}
|
|
59
|
+
if (!URL.canParse(value)) {
|
|
60
|
+
return "Invalid address" /* INVALID_ADDRESS */;
|
|
61
|
+
}
|
|
62
|
+
const base = new URL(baseUrl);
|
|
63
|
+
if (!value.startsWith(base.toString())) {
|
|
64
|
+
return "Must be a berachain forum link" /* INVALID_BASEPATH */;
|
|
65
|
+
}
|
|
66
|
+
return null;
|
|
67
|
+
}
|
|
68
|
+
case "address":
|
|
69
|
+
if (typeof value !== "string" || !isAddress(value, { strict: true })) {
|
|
70
|
+
return "Invalid address" /* INVALID_ADDRESS */;
|
|
71
|
+
}
|
|
72
|
+
return null;
|
|
73
|
+
case "hex":
|
|
74
|
+
if (typeof value !== "string" || !isHex(value, { strict: true })) {
|
|
75
|
+
return "Invalid address" /* INVALID_ADDRESS */;
|
|
76
|
+
}
|
|
77
|
+
return null;
|
|
78
|
+
case "abi":
|
|
79
|
+
if (typeof value !== "string") {
|
|
80
|
+
return "Invalid ABI" /* INVALID_ABI */;
|
|
81
|
+
}
|
|
82
|
+
try {
|
|
83
|
+
JSON.parse(value);
|
|
84
|
+
} catch {
|
|
85
|
+
return "Invalid ABI" /* INVALID_ABI */;
|
|
86
|
+
}
|
|
87
|
+
return null;
|
|
88
|
+
case "action":
|
|
89
|
+
if (typeof value !== "string" || !isAddress(value, { strict: true })) {
|
|
90
|
+
return "Invalid address" /* INVALID_ADDRESS */;
|
|
91
|
+
}
|
|
92
|
+
return null;
|
|
93
|
+
case "tuple":
|
|
94
|
+
if (typeof value === "object" && Array.isArray(components)) {
|
|
95
|
+
const errors = {};
|
|
96
|
+
for (const component of components) {
|
|
97
|
+
const abiParam = component;
|
|
98
|
+
const name = abiParam.name;
|
|
99
|
+
errors[name] = checkProposalField({
|
|
100
|
+
fieldOrType: abiParam.type,
|
|
101
|
+
value: value[name],
|
|
102
|
+
components: abiParam.components
|
|
103
|
+
});
|
|
104
|
+
}
|
|
105
|
+
if (Object.values(errors).every((v) => v === null)) {
|
|
106
|
+
return null;
|
|
107
|
+
}
|
|
108
|
+
return errors;
|
|
109
|
+
}
|
|
110
|
+
return null;
|
|
111
|
+
case "tuple[]":
|
|
112
|
+
if (Array.isArray(value)) {
|
|
113
|
+
const errors = value.map(
|
|
114
|
+
(v) => checkProposalField({
|
|
115
|
+
fieldOrType: "tuple",
|
|
116
|
+
value: v,
|
|
117
|
+
components
|
|
118
|
+
})
|
|
119
|
+
);
|
|
120
|
+
if (errors.every((v) => v === null)) {
|
|
121
|
+
return null;
|
|
122
|
+
}
|
|
123
|
+
return errors;
|
|
124
|
+
}
|
|
125
|
+
return null;
|
|
126
|
+
case "logoURI": {
|
|
127
|
+
if (value === void 0 || value === "") {
|
|
128
|
+
return null;
|
|
129
|
+
}
|
|
130
|
+
if (typeof value !== "string" || !URL.canParse(value) || new URL(value).protocol !== "https:") {
|
|
131
|
+
return "Must be HTTPS or IPFS" /* MUST_BE_HTTPS_OR_IPFS */;
|
|
132
|
+
}
|
|
133
|
+
return null;
|
|
134
|
+
}
|
|
135
|
+
case "url": {
|
|
136
|
+
if (value === void 0 || value === "") {
|
|
137
|
+
return null;
|
|
138
|
+
}
|
|
139
|
+
if (typeof value !== "string" || !URL.canParse(value) || new URL(value).protocol !== "https:") {
|
|
140
|
+
return "Must be HTTPS" /* MUST_BE_HTTPS */;
|
|
141
|
+
}
|
|
142
|
+
return null;
|
|
143
|
+
}
|
|
144
|
+
default:
|
|
145
|
+
console.error(`Invalid field or type: ${fieldOrType}`);
|
|
146
|
+
return null;
|
|
147
|
+
}
|
|
148
|
+
}
|
|
149
|
+
|
|
150
|
+
// src/actions/governance/getAllProposals.ts
|
|
151
|
+
async function getAllProposals(_args) {
|
|
152
|
+
return [];
|
|
153
|
+
}
|
|
154
|
+
|
|
155
|
+
// src/actions/governance/getBodyErrors.ts
|
|
156
|
+
function getBodyErrors({
|
|
157
|
+
proposal,
|
|
158
|
+
currentTopic
|
|
159
|
+
}) {
|
|
160
|
+
const e = {};
|
|
161
|
+
e.title = checkProposalField({
|
|
162
|
+
fieldOrType: "title",
|
|
163
|
+
value: proposal.title
|
|
164
|
+
});
|
|
165
|
+
e.description = checkProposalField({
|
|
166
|
+
fieldOrType: "description",
|
|
167
|
+
value: proposal.description
|
|
168
|
+
});
|
|
169
|
+
e.forumLink = checkProposalField({
|
|
170
|
+
fieldOrType: "forumLink",
|
|
171
|
+
value: proposal.forumLink,
|
|
172
|
+
baseUrl: currentTopic.forumLink
|
|
173
|
+
});
|
|
174
|
+
return e;
|
|
175
|
+
}
|
|
176
|
+
|
|
177
|
+
// src/actions/governance/getProposalDetails.ts
|
|
178
|
+
async function getProposalDetails(_args) {
|
|
179
|
+
return void 0;
|
|
180
|
+
}
|
|
181
|
+
|
|
182
|
+
// src/actions/governance/parseProposalBody.ts
|
|
183
|
+
import graymatter from "gray-matter";
|
|
184
|
+
function parseLegacyBody(s) {
|
|
185
|
+
const pattern = /#(?:([\w-]+)# )?(.+)\n([\s\S]*)/;
|
|
186
|
+
const match = s.match(pattern);
|
|
187
|
+
if (match) {
|
|
188
|
+
const type = match[1] || null;
|
|
189
|
+
const title = match[2];
|
|
190
|
+
const content = match[3].replace("\n", "<br />");
|
|
191
|
+
return {
|
|
192
|
+
type,
|
|
193
|
+
title,
|
|
194
|
+
content
|
|
195
|
+
};
|
|
196
|
+
}
|
|
197
|
+
throw new Error("Invalid proposal body");
|
|
198
|
+
}
|
|
199
|
+
function parseProposalBody(proposal) {
|
|
200
|
+
if (!proposal) {
|
|
201
|
+
return {
|
|
202
|
+
isFrontMatter: false,
|
|
203
|
+
data: { title: "Loading..." },
|
|
204
|
+
content: "",
|
|
205
|
+
matter: "",
|
|
206
|
+
language: "",
|
|
207
|
+
orig: "",
|
|
208
|
+
stringify: () => ""
|
|
209
|
+
};
|
|
210
|
+
}
|
|
211
|
+
const body = proposal?.description ?? "";
|
|
212
|
+
if (graymatter.test(body)) {
|
|
213
|
+
return { ...graymatter(body), isFrontMatter: true };
|
|
214
|
+
}
|
|
215
|
+
try {
|
|
216
|
+
const legacyBody = parseLegacyBody(body);
|
|
217
|
+
return {
|
|
218
|
+
isFrontMatter: false,
|
|
219
|
+
data: { title: legacyBody.title },
|
|
220
|
+
content: legacyBody.content,
|
|
221
|
+
matter: "",
|
|
222
|
+
language: "",
|
|
223
|
+
orig: body,
|
|
224
|
+
stringify: () => body
|
|
225
|
+
};
|
|
226
|
+
} catch {
|
|
227
|
+
return {
|
|
228
|
+
isFrontMatter: false,
|
|
229
|
+
data: {
|
|
230
|
+
title: proposal?.description?.split("\n")[0].slice(0, 100)
|
|
231
|
+
},
|
|
232
|
+
content: body,
|
|
233
|
+
matter: "",
|
|
234
|
+
language: "",
|
|
235
|
+
orig: body,
|
|
236
|
+
stringify: () => body
|
|
237
|
+
};
|
|
238
|
+
}
|
|
239
|
+
}
|
|
240
|
+
|
|
241
|
+
// src/actions/governance/getProposalFromTx.ts
|
|
242
|
+
import {
|
|
243
|
+
parseEventLogs
|
|
244
|
+
} from "viem";
|
|
245
|
+
import { berachainGovernanceAbi as governanceAbi } from "@berachain/abis/gov/berachainGovernance";
|
|
246
|
+
import {
|
|
247
|
+
ProposalStatus
|
|
248
|
+
} from "@berachain/graphql/governance";
|
|
249
|
+
async function getProposalFromTx(args) {
|
|
250
|
+
assertPublicClient(args.publicClient);
|
|
251
|
+
let tx;
|
|
252
|
+
if ("tx" in args) {
|
|
253
|
+
tx = args.tx;
|
|
254
|
+
} else {
|
|
255
|
+
tx = await args.publicClient.getTransactionReceipt({ hash: args.txHash });
|
|
256
|
+
}
|
|
257
|
+
const creationEvent = tx?.logs ? parseEventLogs({
|
|
258
|
+
abi: governanceAbi,
|
|
259
|
+
logs: tx.logs,
|
|
260
|
+
eventName: "ProposalCreated"
|
|
261
|
+
})?.at(0) : void 0;
|
|
262
|
+
if (!tx || !creationEvent) {
|
|
263
|
+
return null;
|
|
264
|
+
}
|
|
265
|
+
const block = await args.publicClient.getBlock({
|
|
266
|
+
blockNumber: tx.blockNumber
|
|
267
|
+
});
|
|
268
|
+
const fm = parseProposalBody({
|
|
269
|
+
description: creationEvent?.args.description
|
|
270
|
+
});
|
|
271
|
+
return {
|
|
272
|
+
id: String(creationEvent.args.proposalId),
|
|
273
|
+
proposalId: String(creationEvent?.args.proposalId),
|
|
274
|
+
createdAt: block.timestamp.toString(),
|
|
275
|
+
title: fm.data.title,
|
|
276
|
+
createdAtBlock: block.timestamp.toString(),
|
|
277
|
+
voteStartAt: String(creationEvent?.args.voteStart),
|
|
278
|
+
voteEndAt: String(creationEvent?.args.voteEnd),
|
|
279
|
+
proposer: creationEvent?.args.proposer,
|
|
280
|
+
description: fm.content,
|
|
281
|
+
unverifiedForumLink: fm.data.forumLink,
|
|
282
|
+
pollResult: {
|
|
283
|
+
for: "0",
|
|
284
|
+
forVotersCount: 0,
|
|
285
|
+
forPercentage: "0",
|
|
286
|
+
against: "0",
|
|
287
|
+
againstVotersCount: 0,
|
|
288
|
+
againstPercentage: "0",
|
|
289
|
+
abstain: "0",
|
|
290
|
+
abstainVotersCount: 0,
|
|
291
|
+
abstainPercentage: "0",
|
|
292
|
+
total: "0",
|
|
293
|
+
totalVotersCount: 0,
|
|
294
|
+
totalTowardsQuorum: "0"
|
|
295
|
+
},
|
|
296
|
+
status: ProposalStatus.Pending,
|
|
297
|
+
quorum: null,
|
|
298
|
+
topics: fm.data.topics,
|
|
299
|
+
votes: [],
|
|
300
|
+
executableCalls: creationEvent?.args.targets.map(
|
|
301
|
+
(target, index) => ({
|
|
302
|
+
__typename: "ExecutableCall",
|
|
303
|
+
id: `${tx.transactionHash}-${index}`,
|
|
304
|
+
target,
|
|
305
|
+
value: String(creationEvent?.args.values[index]),
|
|
306
|
+
calldata: creationEvent?.args.calldatas[index]
|
|
307
|
+
})
|
|
308
|
+
),
|
|
309
|
+
timelock: void 0
|
|
310
|
+
};
|
|
311
|
+
}
|
|
312
|
+
|
|
313
|
+
// src/actions/governance/getProposalVotes.ts
|
|
314
|
+
async function getProposalVotes(_args) {
|
|
315
|
+
return { data: { votes: [] } };
|
|
316
|
+
}
|
|
317
|
+
|
|
318
|
+
export {
|
|
319
|
+
checkProposalField,
|
|
320
|
+
getAllProposals,
|
|
321
|
+
getBodyErrors,
|
|
322
|
+
getProposalDetails,
|
|
323
|
+
parseProposalBody,
|
|
324
|
+
getProposalFromTx,
|
|
325
|
+
getProposalVotes
|
|
326
|
+
};
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
// src/contexts/BeraFlags/defaultFlags.ts
|
|
2
|
+
var defaultFlags = {
|
|
3
|
+
isGovernanceEnabled: true,
|
|
4
|
+
enableEip5792: false,
|
|
5
|
+
proxyAggregatorsThroughVercel: false,
|
|
6
|
+
isEmbeddedWalletsEnabled: true,
|
|
7
|
+
sponsorGas: false,
|
|
8
|
+
enableSimulateCalls: false,
|
|
9
|
+
isBendVaultDataHourly: true,
|
|
10
|
+
isBendLoopingEnabled: false,
|
|
11
|
+
isMultiChainZapBendEnabled: false,
|
|
12
|
+
isZapStakeBeraEnabled: false,
|
|
13
|
+
mockValidatorOperator: false,
|
|
14
|
+
mockValidatorRewardAllocator: false,
|
|
15
|
+
isBgtPolRewardToken: true,
|
|
16
|
+
mockRewardDurationManager: false,
|
|
17
|
+
mockIncentiveManager: false,
|
|
18
|
+
isHoneyPythWrapperEnabled: true
|
|
19
|
+
};
|
|
20
|
+
|
|
21
|
+
export {
|
|
22
|
+
defaultFlags
|
|
23
|
+
};
|