@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
|
@@ -1,24 +1,17 @@
|
|
|
1
|
-
import {
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
type GetProposalVotesQueryVariables,
|
|
1
|
+
import type {
|
|
2
|
+
GetProposalVotesQuery,
|
|
3
|
+
GetProposalVotesQueryVariables,
|
|
5
4
|
} from "@berachain/graphql/governance";
|
|
6
5
|
|
|
7
|
-
import { getApolloClient } from "../clients/getApolloClient";
|
|
8
|
-
|
|
9
6
|
export type GetProposalVotesArgs = BeraJS.BaseFunctionArgs & {
|
|
10
7
|
/** GraphQL variables forwarded to the GetProposalVotes query */
|
|
11
8
|
variables: GetProposalVotesQueryVariables;
|
|
12
9
|
};
|
|
13
10
|
|
|
14
11
|
/** Fetches the votes for a proposal from the subgraph */
|
|
15
|
-
export async function getProposalVotes(
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
return governanceClient.query<GetProposalVotesQuery>({
|
|
21
|
-
query: GetProposalVotes,
|
|
22
|
-
variables,
|
|
23
|
-
});
|
|
12
|
+
export async function getProposalVotes(
|
|
13
|
+
_args: GetProposalVotesArgs,
|
|
14
|
+
): Promise<{ data: GetProposalVotesQuery }> {
|
|
15
|
+
// Governance subgraph not live — return empty until indexer is available
|
|
16
|
+
return { data: { votes: [] } };
|
|
24
17
|
}
|
|
@@ -1,27 +1,33 @@
|
|
|
1
|
-
import {
|
|
2
|
-
Aggregation_Interval,
|
|
3
|
-
GetSnapshots,
|
|
4
|
-
type GetSnapshotsQuery,
|
|
5
|
-
type GetSnapshotsQueryVariables,
|
|
6
|
-
} from "@berachain/graphql/honey";
|
|
1
|
+
import type { GetSnapshotsQuery } from "@berachain/graphql/honey";
|
|
7
2
|
|
|
8
|
-
import {
|
|
3
|
+
import { BeraError } from "../../errors/BeraError";
|
|
4
|
+
import { beraFetchJson } from "../../utils/beraFetch";
|
|
5
|
+
|
|
6
|
+
/**
|
|
7
|
+
* Browser-only. Hits the typed `/api/honey/snapshots` endpoint.
|
|
8
|
+
* Server callers must compose the upstream query directly (this action is
|
|
9
|
+
* not server-safe — `fetch` against a relative URL has no origin off-browser).
|
|
10
|
+
*/
|
|
9
11
|
export async function getChartData({
|
|
10
12
|
days,
|
|
11
|
-
|
|
12
|
-
}: BeraJS.BaseFunctionArgs & {
|
|
13
|
+
}: {
|
|
13
14
|
days: number;
|
|
14
|
-
}) {
|
|
15
|
-
|
|
15
|
+
}): Promise<GetSnapshotsQuery> {
|
|
16
|
+
if (typeof window === "undefined") {
|
|
17
|
+
throw new BeraError({
|
|
18
|
+
message:
|
|
19
|
+
"getChartData is browser-only; call from a Client Component / SWR hook",
|
|
20
|
+
level: "error",
|
|
21
|
+
});
|
|
22
|
+
}
|
|
16
23
|
|
|
17
|
-
const
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
return res.data;
|
|
24
|
+
const params = new URLSearchParams({ interval: "day", first: String(days) });
|
|
25
|
+
const honeySnapshots = await beraFetchJson<
|
|
26
|
+
GetSnapshotsQuery["honeySnapshots"]
|
|
27
|
+
>({
|
|
28
|
+
url: `/api/honey/snapshots?${params}`,
|
|
29
|
+
name: "honey-snapshots",
|
|
30
|
+
type: "rest",
|
|
31
|
+
});
|
|
32
|
+
return { honeySnapshots };
|
|
27
33
|
}
|
|
@@ -1,29 +1,26 @@
|
|
|
1
|
-
import {
|
|
2
|
-
Aggregation_Interval,
|
|
3
|
-
GetSnapshots,
|
|
4
|
-
type GetSnapshotsQuery,
|
|
5
|
-
type GetSnapshotsQueryVariables,
|
|
6
|
-
} from "@berachain/graphql/honey";
|
|
1
|
+
import type { GetSnapshotsQuery } from "@berachain/graphql/honey";
|
|
7
2
|
import BigNumber from "@berachain/utils/pkg/bignumber.js";
|
|
8
3
|
|
|
9
|
-
import {
|
|
4
|
+
import { BeraError } from "../../errors/BeraError";
|
|
5
|
+
import { beraFetchJson } from "../../utils/beraFetch";
|
|
10
6
|
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
variables: {
|
|
21
|
-
interval: Aggregation_Interval.Hour,
|
|
22
|
-
first: 24,
|
|
23
|
-
},
|
|
24
|
-
});
|
|
7
|
+
/** Browser-only. Hits `/api/honey/snapshots?interval=hour&first=24` and reduces. */
|
|
8
|
+
export async function getHoney24hVolume(): Promise<BigNumber | undefined> {
|
|
9
|
+
if (typeof window === "undefined") {
|
|
10
|
+
throw new BeraError({
|
|
11
|
+
message:
|
|
12
|
+
"getHoney24hVolume is browser-only; call from a Client Component / SWR hook",
|
|
13
|
+
level: "error",
|
|
14
|
+
});
|
|
15
|
+
}
|
|
25
16
|
|
|
26
|
-
|
|
17
|
+
const params = new URLSearchParams({ interval: "hour", first: "24" });
|
|
18
|
+
const snapshots = await beraFetchJson<GetSnapshotsQuery["honeySnapshots"]>({
|
|
19
|
+
url: `/api/honey/snapshots?${params}`,
|
|
20
|
+
name: "honey-snapshots",
|
|
21
|
+
type: "rest",
|
|
22
|
+
});
|
|
23
|
+
return snapshots.reduce(
|
|
27
24
|
(acc, curr) => new BigNumber(curr.totalVolume).plus(acc),
|
|
28
25
|
new BigNumber(0),
|
|
29
26
|
);
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import type { Address } from "viem";
|
|
2
|
+
|
|
3
|
+
import type { AutoclaimedIncentivesResponse } from "../../types/bribe-boost";
|
|
4
|
+
import { beraFetchJson } from "../../utils/beraFetch";
|
|
5
|
+
import { parseBaseArgs } from "../../utils/parseBaseArgs";
|
|
6
|
+
|
|
7
|
+
/**
|
|
8
|
+
* Server-side function to fetch the incentives the bot autoclaimed on behalf
|
|
9
|
+
* of a wallet during the BGT → BERA cutover. Only valid to call once the
|
|
10
|
+
* bgtIncentiveDistributor contract is paused.
|
|
11
|
+
*/
|
|
12
|
+
export async function getAutoclaimedIncentives({
|
|
13
|
+
account,
|
|
14
|
+
...args
|
|
15
|
+
}: {
|
|
16
|
+
account: Address;
|
|
17
|
+
} & BeraJS.BaseFunctionArgs): Promise<AutoclaimedIncentivesResponse | null> {
|
|
18
|
+
const { config } = parseBaseArgs(args);
|
|
19
|
+
|
|
20
|
+
return beraFetchJson<AutoclaimedIncentivesResponse>(
|
|
21
|
+
{
|
|
22
|
+
url: `${
|
|
23
|
+
config.pol.bribeBoostApi
|
|
24
|
+
}/api/v1/wallets/${account.toLowerCase()}/autoclaimed`,
|
|
25
|
+
name: "pol-autoclaimed-incentives",
|
|
26
|
+
type: "rest",
|
|
27
|
+
},
|
|
28
|
+
{ cache: "no-store" },
|
|
29
|
+
);
|
|
30
|
+
}
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
import { ChainId } from "@berachain/config";
|
|
2
|
+
|
|
3
|
+
import { beraFetchJson } from "../../utils/beraFetch";
|
|
4
|
+
import { parseBaseArgs } from "../../utils/parseBaseArgs";
|
|
5
|
+
|
|
6
|
+
interface SupplyMonitorBeraStatsResponse {
|
|
7
|
+
/** Total BERA supply, in whole BERA units. */
|
|
8
|
+
totalSupply: number;
|
|
9
|
+
/** Circulating BERA supply, in whole BERA units. */
|
|
10
|
+
circulatingSupply: number;
|
|
11
|
+
}
|
|
12
|
+
|
|
13
|
+
export type GetBeraTokenTotalSupplyArgs = BeraJS.BaseFunctionArgs;
|
|
14
|
+
|
|
15
|
+
/**
|
|
16
|
+
* Fetches the native BERA total supply (in whole BERA units) from the
|
|
17
|
+
* Berachain supply-monitor service.
|
|
18
|
+
*/
|
|
19
|
+
export async function getBeraTokenTotalSupply(
|
|
20
|
+
args: GetBeraTokenTotalSupplyArgs = {},
|
|
21
|
+
): Promise<string> {
|
|
22
|
+
const { config } = parseBaseArgs(args);
|
|
23
|
+
// supply-monitor only exposes BERA stats for mainnet/bepolia; returns 0 on other chains.
|
|
24
|
+
const network = config.chainId === ChainId.MAINNET ? "mainnet" : "bepolia";
|
|
25
|
+
|
|
26
|
+
// `supplyMonitor` is typed as `HttpLink` (string | { uri, name, ... }).
|
|
27
|
+
// Both forms are accepted; pick the URL out of whichever shape was used.
|
|
28
|
+
const supplyMonitor = config.pol.supplyMonitor;
|
|
29
|
+
const baseUrl =
|
|
30
|
+
typeof supplyMonitor === "string" ? supplyMonitor : supplyMonitor.uri;
|
|
31
|
+
|
|
32
|
+
const data = await beraFetchJson<SupplyMonitorBeraStatsResponse>(
|
|
33
|
+
{
|
|
34
|
+
url: `${baseUrl}/api/stats/bera?network=${network}`,
|
|
35
|
+
name:
|
|
36
|
+
typeof supplyMonitor === "string"
|
|
37
|
+
? "supply-monitor-bera"
|
|
38
|
+
: supplyMonitor.name,
|
|
39
|
+
type: "rest",
|
|
40
|
+
},
|
|
41
|
+
{ cache: "no-store" },
|
|
42
|
+
);
|
|
43
|
+
|
|
44
|
+
return data.totalSupply.toString();
|
|
45
|
+
}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
import type { PublicClient } from "viem";
|
|
2
|
+
|
|
3
|
+
import { bgtIncentiveDistributorAbi } from "@berachain/abis/pol/rewards/bgtIncentiveDistributor";
|
|
4
|
+
|
|
5
|
+
import { assertPublicClient } from "../../errors/assert";
|
|
6
|
+
import { parseBaseArgs } from "../../utils/parseBaseArgs";
|
|
7
|
+
|
|
8
|
+
/**
|
|
9
|
+
* Reads `paused()` on the BGT incentive distributor. Used to gate the
|
|
10
|
+
* autoclaim banner — when `true`, users can no longer self-claim and the
|
|
11
|
+
* bot is responsible for distributing incentives on their behalf.
|
|
12
|
+
*
|
|
13
|
+
* Fails closed: any read error returns `false` so the banner stays hidden.
|
|
14
|
+
*/
|
|
15
|
+
export async function getBgtIncentiveDistributorPaused({
|
|
16
|
+
publicClient,
|
|
17
|
+
...args
|
|
18
|
+
}: {
|
|
19
|
+
publicClient: PublicClient | undefined;
|
|
20
|
+
} & BeraJS.BaseFunctionArgs): Promise<boolean> {
|
|
21
|
+
assertPublicClient(publicClient);
|
|
22
|
+
|
|
23
|
+
const { config } = parseBaseArgs(args);
|
|
24
|
+
|
|
25
|
+
try {
|
|
26
|
+
const paused = await publicClient.readContract({
|
|
27
|
+
address: config.pol.bgtIncentiveDistributor,
|
|
28
|
+
abi: bgtIncentiveDistributorAbi,
|
|
29
|
+
functionName: "paused",
|
|
30
|
+
});
|
|
31
|
+
return paused;
|
|
32
|
+
} catch {
|
|
33
|
+
return false;
|
|
34
|
+
}
|
|
35
|
+
}
|
|
@@ -2,15 +2,11 @@ import type { Address } from "viem";
|
|
|
2
2
|
|
|
3
3
|
import { getUriFromLink } from "@berachain/config";
|
|
4
4
|
|
|
5
|
+
import type { VaultEarningResponse } from "@berachain/graphql/api";
|
|
6
|
+
|
|
5
7
|
import { beraFetchJson } from "../../utils/beraFetch";
|
|
6
8
|
import { parseBaseArgs } from "../../utils/parseBaseArgs";
|
|
7
9
|
|
|
8
|
-
type StakingHistoryData = {
|
|
9
|
-
currentDepositRate: string;
|
|
10
|
-
earningsRealized: string;
|
|
11
|
-
earningsTotal: string;
|
|
12
|
-
};
|
|
13
|
-
|
|
14
10
|
type GetEarnedStakedBeraVaultArgs = {
|
|
15
11
|
/**
|
|
16
12
|
* The token that the user has staked
|
|
@@ -26,16 +22,16 @@ export async function getEarnedStakedBeraVault({
|
|
|
26
22
|
account,
|
|
27
23
|
...args
|
|
28
24
|
}: BeraJS.BaseFunctionArgs &
|
|
29
|
-
GetEarnedStakedBeraVaultArgs): Promise<
|
|
25
|
+
GetEarnedStakedBeraVaultArgs): Promise<VaultEarningResponse> {
|
|
30
26
|
const { config } = parseBaseArgs(args);
|
|
31
27
|
|
|
32
|
-
const url = `${getUriFromLink(config.
|
|
33
|
-
return beraFetchJson<
|
|
28
|
+
const url = `${getUriFromLink(config.backend)}/vaults/${address}/earnings/${account}`;
|
|
29
|
+
return beraFetchJson<VaultEarningResponse>({
|
|
34
30
|
url,
|
|
35
31
|
name:
|
|
36
|
-
typeof config.
|
|
32
|
+
typeof config.backend === "string"
|
|
37
33
|
? "backend-railway"
|
|
38
|
-
: config.
|
|
34
|
+
: config.backend.name,
|
|
39
35
|
type: "rest",
|
|
40
36
|
});
|
|
41
37
|
}
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
import {
|
|
2
|
+
type ApiVaultFragment,
|
|
3
|
+
GetHeroEarnVaults,
|
|
4
|
+
type GetHeroEarnVaultsQuery,
|
|
5
|
+
type GetHeroEarnVaultsQueryVariables,
|
|
6
|
+
} from "@berachain/graphql/pol/api";
|
|
7
|
+
|
|
8
|
+
import { getApolloClient } from "../clients/getApolloClient";
|
|
9
|
+
|
|
10
|
+
export interface HeroEarnVaults {
|
|
11
|
+
/**
|
|
12
|
+
* Top-APR PoL reward vaults, ordered by APR descending. Callers typically
|
|
13
|
+
* read `[0]` for the "Earn with PoL" hero subtitle. `bestAprExcludedAddresses`
|
|
14
|
+
* lets callers filter out non-incentivized earn actions whose APR figures
|
|
15
|
+
* would otherwise dominate the listing and mislead users.
|
|
16
|
+
*/
|
|
17
|
+
bestApr: ApiVaultFragment[];
|
|
18
|
+
/**
|
|
19
|
+
* Highest-APR PoL reward vault among vaults whose protocol is "bend".
|
|
20
|
+
* Its `stakingToken.address` is a Bend vault share token — match it back
|
|
21
|
+
* against `bendVaults` to combine the PoL reward APR with the underlying
|
|
22
|
+
* Bend native supply APY.
|
|
23
|
+
*/
|
|
24
|
+
bendRewardVault: ApiVaultFragment[];
|
|
25
|
+
/**
|
|
26
|
+
* Minimal Bend native vault data (address + `totalApy`) used to look up the
|
|
27
|
+
* underlying Bend supply APY for whichever Bend vault `bendRewardVault`
|
|
28
|
+
* resolves to.
|
|
29
|
+
*/
|
|
30
|
+
bendVaults: GetHeroEarnVaultsQuery["bendVaults"];
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
/**
|
|
34
|
+
* Batched fetch for the hub home page hero cards. Issues a single GraphQL
|
|
35
|
+
* request to the BEX API that returns:
|
|
36
|
+
* - the top-APR PoL reward vaults (for the "Earn with PoL" card)
|
|
37
|
+
* - the highest-APR Bend-protocol PoL reward vault (for the "Lend" card)
|
|
38
|
+
* - minimal Bend native vault data, so callers can add the Bend supply APY
|
|
39
|
+
* on top of the PoL reward APR when displaying the combined Lend APY
|
|
40
|
+
*/
|
|
41
|
+
export async function getHeroEarnVaults({
|
|
42
|
+
bestAprExcludedAddresses = [],
|
|
43
|
+
...args
|
|
44
|
+
}: {
|
|
45
|
+
bestAprExcludedAddresses?: string[];
|
|
46
|
+
} & BeraJS.BaseFunctionArgs = {}): Promise<HeroEarnVaults> {
|
|
47
|
+
const bexApiGraphqlClient = getApolloClient("api", args);
|
|
48
|
+
|
|
49
|
+
const res = await bexApiGraphqlClient.query<
|
|
50
|
+
GetHeroEarnVaultsQuery,
|
|
51
|
+
GetHeroEarnVaultsQueryVariables
|
|
52
|
+
>({
|
|
53
|
+
query: GetHeroEarnVaults,
|
|
54
|
+
variables: { bestAprExcludedAddresses },
|
|
55
|
+
});
|
|
56
|
+
|
|
57
|
+
return {
|
|
58
|
+
bestApr: res.data.bestApr.vaults,
|
|
59
|
+
bendRewardVault: res.data.bendRewardVault.vaults,
|
|
60
|
+
bendVaults: res.data.bendVaults,
|
|
61
|
+
};
|
|
62
|
+
}
|
|
@@ -1,43 +1,24 @@
|
|
|
1
|
-
import {
|
|
2
|
-
|
|
3
|
-
type GetIncentiveFeeClaimStatsQuery,
|
|
4
|
-
type GetIncentiveFeeClaimStatsQueryVariables,
|
|
5
|
-
} from "@berachain/graphql/pol/fees";
|
|
1
|
+
import { BeraError } from "../../errors/BeraError";
|
|
2
|
+
import { beraFetchJson } from "../../utils/beraFetch";
|
|
6
3
|
|
|
7
|
-
|
|
8
|
-
|
|
4
|
+
export type IncentiveFeeClaimStats = {
|
|
5
|
+
sumAllClaims: number;
|
|
6
|
+
sumClaimsInLast24Hours: number;
|
|
7
|
+
};
|
|
9
8
|
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
query: GetIncentiveFeeClaimStats,
|
|
19
|
-
});
|
|
20
|
-
|
|
21
|
-
if (data.incentiveFeeClaims.length > 0) {
|
|
22
|
-
const sumAllClaims = data?.incentiveFeeClaims.reduce(
|
|
23
|
-
(acc, curr) => acc + Number(curr.payoutAmount),
|
|
24
|
-
30_000, // this is due to a bug in the subgraph, where the first claim of 50_000 was counted as 20_000, once hunter pushed the fix we can upgrade it.
|
|
25
|
-
);
|
|
26
|
-
const claimsInLast24Hours = data?.incentiveFeeClaims.filter(
|
|
27
|
-
(claim) => Number(claim.timestamp) / 1000 > Date.now() - days(1),
|
|
28
|
-
);
|
|
29
|
-
const sumClaimsInLast24Hours = claimsInLast24Hours.reduce(
|
|
30
|
-
(acc, curr) => acc + Number(curr.payoutAmount),
|
|
31
|
-
0,
|
|
32
|
-
);
|
|
33
|
-
return {
|
|
34
|
-
sumAllClaims,
|
|
35
|
-
sumClaimsInLast24Hours,
|
|
36
|
-
};
|
|
9
|
+
/** Browser-only. Hits `/api/pol/incentive-fee-claims` (server computes totals). */
|
|
10
|
+
export async function getIncentiveFeeClaimStats(): Promise<IncentiveFeeClaimStats> {
|
|
11
|
+
if (typeof window === "undefined") {
|
|
12
|
+
throw new BeraError({
|
|
13
|
+
message:
|
|
14
|
+
"getIncentiveFeeClaimStats is browser-only; call from a Client Component / SWR hook",
|
|
15
|
+
level: "error",
|
|
16
|
+
});
|
|
37
17
|
}
|
|
38
18
|
|
|
39
|
-
return {
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
19
|
+
return beraFetchJson<IncentiveFeeClaimStats>({
|
|
20
|
+
url: "/api/pol/incentive-fee-claims",
|
|
21
|
+
name: "pol-incentive-fee-claims",
|
|
22
|
+
type: "rest",
|
|
23
|
+
});
|
|
43
24
|
}
|
|
@@ -2,6 +2,8 @@ import type { Address } from "viem";
|
|
|
2
2
|
|
|
3
3
|
import { getUriFromLink } from "@berachain/config";
|
|
4
4
|
|
|
5
|
+
import type { VaultStatsByDayResponse } from "@berachain/graphql/api";
|
|
6
|
+
|
|
5
7
|
import { beraFetchJson } from "../../utils/beraFetch";
|
|
6
8
|
import { parseBaseArgs } from "../../utils/parseBaseArgs";
|
|
7
9
|
|
|
@@ -11,20 +13,15 @@ export async function getStakingDailyAssets({
|
|
|
11
13
|
}: {
|
|
12
14
|
address: Address;
|
|
13
15
|
range: 30 | 60 | 90;
|
|
14
|
-
}): Promise<
|
|
15
|
-
const now = new Date();
|
|
16
|
-
const startDayDate = new Date(
|
|
17
|
-
now.getTime() - Number(range) * 24 * 60 * 60 * 1000,
|
|
18
|
-
);
|
|
19
|
-
|
|
16
|
+
}): Promise<VaultStatsByDayResponse> {
|
|
20
17
|
const { config } = parseBaseArgs({});
|
|
21
|
-
const url = `${getUriFromLink(config.
|
|
22
|
-
return beraFetchJson<
|
|
18
|
+
const url = `${getUriFromLink(config.backend)}/vaults/${address}/stats-by-day?days=${range}`;
|
|
19
|
+
return beraFetchJson<VaultStatsByDayResponse>({
|
|
23
20
|
url,
|
|
24
21
|
name:
|
|
25
|
-
typeof config.
|
|
22
|
+
typeof config.backend === "string"
|
|
26
23
|
? "backend-railway"
|
|
27
|
-
: config.
|
|
24
|
+
: config.backend.name,
|
|
28
25
|
type: "rest",
|
|
29
26
|
});
|
|
30
27
|
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from "./getDailyValidatorBlockStats";
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
import type { Address } from "viem";
|
|
2
|
+
|
|
3
|
+
import {
|
|
4
|
+
GetValidatorBlockStats,
|
|
5
|
+
type GetValidatorBlockStatsQuery,
|
|
6
|
+
type GetValidatorBlockStatsQueryVariables,
|
|
7
|
+
} from "@berachain/graphql/pol/subgraph";
|
|
8
|
+
|
|
9
|
+
import { getApolloClient } from "../clients/getApolloClient";
|
|
10
|
+
|
|
11
|
+
/**
|
|
12
|
+
* Server-only RSC variant. Goes directly to the pol subgraph upstream
|
|
13
|
+
* (no auth required) through the shared Apollo client factory.
|
|
14
|
+
*/
|
|
15
|
+
export async function getDailyValidatorBlockStats({
|
|
16
|
+
pubKey,
|
|
17
|
+
first = 1,
|
|
18
|
+
...args
|
|
19
|
+
}: BeraJS.BaseFunctionArgs & {
|
|
20
|
+
pubKey: Address;
|
|
21
|
+
first?: number;
|
|
22
|
+
}): Promise<GetValidatorBlockStatsQuery | undefined> {
|
|
23
|
+
const client = getApolloClient("pol.subgraph", args);
|
|
24
|
+
|
|
25
|
+
const result = await client.query<
|
|
26
|
+
GetValidatorBlockStatsQuery,
|
|
27
|
+
GetValidatorBlockStatsQueryVariables
|
|
28
|
+
>({
|
|
29
|
+
query: GetValidatorBlockStats,
|
|
30
|
+
variables: { pubKey, first },
|
|
31
|
+
});
|
|
32
|
+
return result.data;
|
|
33
|
+
}
|
|
@@ -2,15 +2,12 @@ import { ethAddress } from "viem";
|
|
|
2
2
|
import { assert, describe, expect, it } from "vitest";
|
|
3
3
|
|
|
4
4
|
import { appConfig } from "@berachain/config/internal";
|
|
5
|
-
import {
|
|
6
|
-
defaultChain,
|
|
7
|
-
externalChains,
|
|
8
|
-
transports,
|
|
9
|
-
} from "@berachain/config/internal/wagmi";
|
|
5
|
+
import { defaultChain, externalChains } from "@berachain/config/internal/wagmi";
|
|
10
6
|
|
|
11
7
|
import { getConfig } from "@berachain/wagmi/config";
|
|
12
8
|
|
|
13
9
|
import { isToken } from "../../utils/tokens";
|
|
10
|
+
import { testTransports } from "../__test/transports";
|
|
14
11
|
import { getTokens } from "./getTokens";
|
|
15
12
|
import { getWalletBalances } from "./getWalletBalances";
|
|
16
13
|
|
|
@@ -22,7 +19,7 @@ import { getWalletBalances } from "./getWalletBalances";
|
|
|
22
19
|
const account = "0x08194D89A52C1410F4bcc46FE11AC2387aC69de8";
|
|
23
20
|
describe("getWalletBalances", async () => {
|
|
24
21
|
const { wagmi: wagmiConfig } = getConfig({
|
|
25
|
-
transports,
|
|
22
|
+
transports: testTransports,
|
|
26
23
|
defaultChain,
|
|
27
24
|
chains: externalChains,
|
|
28
25
|
thirdweb: { clientId: appConfig.apiKeys.public.thirdweb },
|
|
@@ -11,11 +11,7 @@ import { mnemonicToAccount } from "viem/accounts";
|
|
|
11
11
|
import { assert, describe, expect, it } from "vitest";
|
|
12
12
|
|
|
13
13
|
import { appConfig, ChainId, getRpcUrls } from "@berachain/config/internal";
|
|
14
|
-
import {
|
|
15
|
-
defaultChain,
|
|
16
|
-
externalChains,
|
|
17
|
-
transports,
|
|
18
|
-
} from "@berachain/config/internal/wagmi";
|
|
14
|
+
import { defaultChain, externalChains } from "@berachain/config/internal/wagmi";
|
|
19
15
|
|
|
20
16
|
import { bgtAbi } from "@berachain/abis/pol/bgt";
|
|
21
17
|
import { rewardVaultAbi } from "@berachain/abis/pol/rewards/rewardVault";
|
|
@@ -28,6 +24,7 @@ import { getServerSidePublicClient } from "../../utils/getServerSideClient";
|
|
|
28
24
|
import { getTestClient } from "../../utils/getTestClient";
|
|
29
25
|
import { parseBaseArgs } from "../../utils/parseBaseArgs";
|
|
30
26
|
import { anvilMnemonic } from "../../utils/test-utils";
|
|
27
|
+
import { testTransports } from "../__test/transports";
|
|
31
28
|
import { getUserVaults } from "../pol/getUserVaults";
|
|
32
29
|
import { beraWriteContract } from "./beraWriteContract";
|
|
33
30
|
|
|
@@ -38,7 +35,7 @@ const testFn: IContractWriteFn = async (_args) => {
|
|
|
38
35
|
describe("beraWriteContract", () => {
|
|
39
36
|
const { config } = parseBaseArgs({ chainId: defaultChain.id });
|
|
40
37
|
const beraWagmiConfig = getConfig({
|
|
41
|
-
transports,
|
|
38
|
+
transports: testTransports,
|
|
42
39
|
defaultChain,
|
|
43
40
|
chains: externalChains,
|
|
44
41
|
thirdweb: { clientId: appConfig.apiKeys.public.thirdweb },
|
|
@@ -1,37 +1,38 @@
|
|
|
1
1
|
import type { Address } from "viem";
|
|
2
2
|
|
|
3
|
-
import {
|
|
4
|
-
GetValidatorBlockStats,
|
|
5
|
-
type GetValidatorBlockStatsQuery,
|
|
6
|
-
type GetValidatorBlockStatsQueryVariables,
|
|
7
|
-
} from "@berachain/graphql/pol/subgraph";
|
|
3
|
+
import type { GetValidatorBlockStatsQuery } from "@berachain/graphql/pol/subgraph";
|
|
8
4
|
|
|
9
|
-
import {
|
|
5
|
+
import { BeraError } from "../../errors/BeraError";
|
|
6
|
+
import { beraFetchJson } from "../../utils/beraFetch";
|
|
10
7
|
|
|
8
|
+
/**
|
|
9
|
+
* Browser-only. Hits `/api/pol/validator-block-stats`. Server callers (RSC)
|
|
10
|
+
* should import from `@berachain/berajs/actions/server` instead — that path
|
|
11
|
+
* has the static Apollo + GraphQL imports and does not pass through the
|
|
12
|
+
* browser endpoint.
|
|
13
|
+
*/
|
|
11
14
|
export async function getDailyValidatorBlockStats({
|
|
12
15
|
pubKey,
|
|
13
16
|
first = 1,
|
|
14
|
-
|
|
15
|
-
}: BeraJS.BaseFunctionArgs & {
|
|
17
|
+
}: {
|
|
16
18
|
pubKey: Address;
|
|
17
19
|
first?: number;
|
|
18
20
|
}): Promise<GetValidatorBlockStatsQuery | undefined> {
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
>({
|
|
25
|
-
query: GetValidatorBlockStats,
|
|
26
|
-
variables: {
|
|
27
|
-
pubKey,
|
|
28
|
-
first,
|
|
29
|
-
},
|
|
21
|
+
if (typeof window === "undefined") {
|
|
22
|
+
throw new BeraError({
|
|
23
|
+
message:
|
|
24
|
+
"getDailyValidatorBlockStats is browser-only; for RSC use @berachain/berajs/actions/server",
|
|
25
|
+
level: "error",
|
|
30
26
|
});
|
|
31
|
-
|
|
32
|
-
return result.data;
|
|
33
|
-
} catch (e) {
|
|
34
|
-
console.error("GetValidatorBlockStats:", e);
|
|
35
|
-
throw e;
|
|
36
27
|
}
|
|
28
|
+
|
|
29
|
+
const params = new URLSearchParams({
|
|
30
|
+
pubkey: pubKey,
|
|
31
|
+
first: String(first),
|
|
32
|
+
});
|
|
33
|
+
return beraFetchJson<GetValidatorBlockStatsQuery>({
|
|
34
|
+
url: `/api/pol/validator-block-stats?${params}`,
|
|
35
|
+
name: "pol-validator-block-stats",
|
|
36
|
+
type: "rest",
|
|
37
|
+
});
|
|
37
38
|
}
|