@moonwell-fi/moonwell-sdk 0.13.1 → 0.14.0

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 (41) hide show
  1. package/CHANGELOG.md +10 -0
  2. package/_cjs/actions/governance/getUserVoteReceipt.js +39 -25
  3. package/_cjs/actions/governance/getUserVoteReceipt.js.map +1 -1
  4. package/_cjs/actions/governance/governor-api-client.js +70 -33
  5. package/_cjs/actions/governance/governor-api-client.js.map +1 -1
  6. package/_cjs/actions/governance/proposals/common.js +29 -1
  7. package/_cjs/actions/governance/proposals/common.js.map +1 -1
  8. package/_cjs/actions/governance/proposals/getProposal.js +24 -17
  9. package/_cjs/actions/governance/proposals/getProposal.js.map +1 -1
  10. package/_cjs/actions/governance/proposals/getProposals.js +27 -9
  11. package/_cjs/actions/governance/proposals/getProposals.js.map +1 -1
  12. package/_cjs/errors/version.js +1 -1
  13. package/_esm/actions/governance/getUserVoteReceipt.js +48 -26
  14. package/_esm/actions/governance/getUserVoteReceipt.js.map +1 -1
  15. package/_esm/actions/governance/governor-api-client.js +87 -35
  16. package/_esm/actions/governance/governor-api-client.js.map +1 -1
  17. package/_esm/actions/governance/proposals/common.js +44 -1
  18. package/_esm/actions/governance/proposals/common.js.map +1 -1
  19. package/_esm/actions/governance/proposals/getProposal.js +36 -23
  20. package/_esm/actions/governance/proposals/getProposal.js.map +1 -1
  21. package/_esm/actions/governance/proposals/getProposals.js +44 -10
  22. package/_esm/actions/governance/proposals/getProposals.js.map +1 -1
  23. package/_esm/errors/version.js +1 -1
  24. package/_types/actions/governance/getUserVoteReceipt.d.ts +16 -0
  25. package/_types/actions/governance/getUserVoteReceipt.d.ts.map +1 -1
  26. package/_types/actions/governance/governor-api-client.d.ts +37 -12
  27. package/_types/actions/governance/governor-api-client.d.ts.map +1 -1
  28. package/_types/actions/governance/proposals/common.d.ts +14 -1
  29. package/_types/actions/governance/proposals/common.d.ts.map +1 -1
  30. package/_types/actions/governance/proposals/getProposal.d.ts +6 -1
  31. package/_types/actions/governance/proposals/getProposal.d.ts.map +1 -1
  32. package/_types/actions/governance/proposals/getProposals.d.ts +1 -1
  33. package/_types/actions/governance/proposals/getProposals.d.ts.map +1 -1
  34. package/_types/errors/version.d.ts +1 -1
  35. package/actions/governance/getUserVoteReceipt.ts +71 -31
  36. package/actions/governance/governor-api-client.ts +136 -62
  37. package/actions/governance/proposals/common.ts +51 -1
  38. package/actions/governance/proposals/getProposal.ts +46 -26
  39. package/actions/governance/proposals/getProposals.ts +48 -14
  40. package/errors/version.ts +1 -1
  41. package/package.json +1 -1
@@ -1,6 +1,7 @@
1
1
  import { moonbeam, moonriver } from "viem/chains";
2
2
  import { Amount, getEnvironmentFromArgs } from "../../../common/index.js";
3
- import { fetchProposal } from "../governor-api-client.js";
3
+ import { ProposalState } from "../../../types/proposal.js";
4
+ import { SUPPORTED_GOVERNOR_CHAIN_IDS, fetchProposal, isNotFoundError, } from "../governor-api-client.js";
4
5
  import { appendProposalExtendedData, formatApiProposalData, getCrossChainProposalData, getExtendedProposalData, getProposalData, getProposalsOnChainData, isMultichainProposal, } from "./common.js";
5
6
  export async function getProposal(client, args) {
6
7
  const { proposalId } = args;
@@ -12,46 +13,58 @@ export async function getProposal(client, args) {
12
13
  environment.chainId !== moonriver.id) {
13
14
  return undefined;
14
15
  }
15
- try {
16
- if (environment.chainId === moonbeam.id) {
17
- // Moonbeam: Use new Governor API
18
- return await getMoonbeamProposal(environment, proposalId);
16
+ if (environment.chainId === moonbeam.id) {
17
+ return getMoonbeamProposal(environment, proposalId, args.chainId);
18
+ }
19
+ return getMoonriverProposal(environment, proposalId);
20
+ }
21
+ /**
22
+ * Fetch a single proposal for Moonbeam using the Governor API.
23
+ *
24
+ * When `chainId` is provided we hit only that chain. When omitted we try the
25
+ * supported chains in order (Ethereum first since that's where active multigov
26
+ * proposals live) and fall back on `NotFoundError`. Real outages (5xx, network
27
+ * errors) propagate so callers can distinguish "missing" from "broken".
28
+ */
29
+ async function getMoonbeamProposal(governanceEnvironment, proposalId, chainId) {
30
+ const tryChains = chainId ? [chainId] : SUPPORTED_GOVERNOR_CHAIN_IDS;
31
+ let apiProposal;
32
+ for (const cid of tryChains) {
33
+ try {
34
+ apiProposal = await fetchProposal(governanceEnvironment, cid, proposalId);
35
+ break;
19
36
  }
20
- else {
21
- // Moonriver: Use old Ponder approach
22
- return await getMoonriverProposal(environment, proposalId);
37
+ catch (error) {
38
+ if (isNotFoundError(error))
39
+ continue;
40
+ throw error;
23
41
  }
24
42
  }
25
- catch (error) {
26
- console.error(`[getProposal] Error fetching proposal ${proposalId}:`, error);
43
+ if (!apiProposal) {
27
44
  return undefined;
28
45
  }
29
- }
30
- /**
31
- * Fetch a single proposal for Moonbeam using the new Governor API
32
- */
33
- async function getMoonbeamProposal(governanceEnvironment, proposalId) {
34
- const apiProposalId = `${proposalId}`;
35
- const apiProposal = await fetchProposal(governanceEnvironment, apiProposalId);
36
46
  const formattedData = formatApiProposalData(apiProposal);
37
47
  const onChainDataList = await getProposalsOnChainData([apiProposal], governanceEnvironment);
38
48
  const onChainData = onChainDataList[0];
39
49
  const isMultichain = isMultichainProposal(apiProposal.targets);
40
- let proposalState = onChainData.state;
50
+ // For cross-chain proposals, onChainData.state is already API-derived inside
51
+ // getProposalsOnChainData, so the post-processing below acts as a no-op
52
+ // (votesCollected is false and the derived state is already terminal).
41
53
  const now = Math.floor(Date.now() / 1000);
42
- if (proposalState === 0 &&
54
+ let proposalState = onChainData.state;
55
+ if (proposalState === ProposalState.Pending &&
43
56
  now >= apiProposal.votingStartTime &&
44
57
  now <= apiProposal.votingEndTime) {
45
- proposalState = 1; // Active
58
+ proposalState = ProposalState.Active;
46
59
  }
47
60
  if (formattedData.executed) {
48
- proposalState = 7; // ProposalState.Executed
61
+ proposalState = ProposalState.Executed;
49
62
  }
50
63
  else if (isMultichain &&
51
64
  onChainData.votesCollected &&
52
65
  now > apiProposal.votingEndTime &&
53
- proposalState < 5) {
54
- proposalState = 5; // ProposalState.Queued
66
+ proposalState < ProposalState.Queued) {
67
+ proposalState = ProposalState.Queued;
55
68
  }
56
69
  const proposal = {
57
70
  id: apiProposal.proposalId,
@@ -1 +1 @@
1
- {"version":3,"file":"getProposal.js","sourceRoot":"","sources":["../../../../actions/governance/proposals/getProposal.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"getProposal.js","sourceRoot":"","sources":["../../../../actions/governance/proposals/getProposal.ts"],"names":[],"mappings":"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"}
@@ -1,6 +1,7 @@
1
1
  import { moonbeam, moonriver } from "viem/chains";
2
2
  import { Amount, getEnvironmentsFromArgs } from "../../../common/index.js";
3
3
  import * as logger from "../../../logger/console.js";
4
+ import { ProposalState } from "../../../types/proposal.js";
4
5
  import { fetchAllProposals } from "../governor-api-client.js";
5
6
  import { appendProposalExtendedData, formatApiProposalData, getCrossChainProposalData, getExtendedProposalData, getProposalData, getProposalsOnChainData, isMultichainProposal, } from "./common.js";
6
7
  export async function getProposals(client, args) {
@@ -23,35 +24,68 @@ export async function getProposals(client, args) {
23
24
  }
24
25
  }));
25
26
  const proposals = allProposals.flat();
26
- const sortedProposals = proposals.sort((a, b) => b.proposalId - a.proposalId);
27
+ // Newer multigov-ethereum proposals (chainId=1) and historical Moonbeam
28
+ // proposals (chainId=1284) restart their proposalId counters from 1, so IDs
29
+ // may collide across chains. Sort by proposalId desc with chainId as a
30
+ // stable tiebreaker (smaller chainId — Ethereum — wins).
31
+ const sortedProposals = proposals.sort((a, b) => {
32
+ if (b.proposalId !== a.proposalId)
33
+ return b.proposalId - a.proposalId;
34
+ return a.chainId - b.chainId;
35
+ });
27
36
  logger.end(logId);
28
37
  return sortedProposals;
29
38
  }
30
39
  /**
31
- * Fetch proposals for Moonbeam using the new Governor API
40
+ * Fetch proposals for Moonbeam using the Governor API.
41
+ *
42
+ * The same indexer DO serves two chains:
43
+ * - chainId=1 (Ethereum) — the active multigov contract
44
+ * - chainId=1284 (Moonbeam) — historical proposals
45
+ *
46
+ * Uses `Promise.allSettled` so a transient outage on one chain doesn't take
47
+ * down the other — partial results are preferred over a hard failure.
32
48
  */
33
49
  async function getMoonbeamProposals(governanceEnvironment) {
34
- const apiProposals = await fetchAllProposals(governanceEnvironment);
50
+ const results = await Promise.allSettled([
51
+ fetchAllProposals(governanceEnvironment, { chainId: 1 }),
52
+ fetchAllProposals(governanceEnvironment, { chainId: 1284 }),
53
+ ]);
54
+ const chainsAttempted = [1, 1284];
55
+ const apiProposals = [];
56
+ results.forEach((result, index) => {
57
+ if (result.status === "fulfilled") {
58
+ apiProposals.push(...result.value);
59
+ }
60
+ else {
61
+ console.warn(`[getProposals] Failed to fetch proposals for chainId=${chainsAttempted[index]}; continuing with remaining chains.`, result.reason);
62
+ }
63
+ });
35
64
  const onChainDataList = await getProposalsOnChainData(apiProposals, governanceEnvironment);
36
65
  const proposals = apiProposals.map((apiProposal, index) => {
37
66
  const onChainData = onChainDataList[index];
38
67
  const formattedData = formatApiProposalData(apiProposal);
39
- let proposalState = onChainData.state;
68
+ const isMultichain = isMultichainProposal(apiProposal.targets);
69
+ // `onChainData.state` is already API-derived for cross-chain proposals
70
+ // (handled inside getProposalsOnChainData), so the post-processing below
71
+ // is a no-op for them — derived states already reflect executed/canceled/
72
+ // queued/active/pending, and votesCollected is false so the Queued branch
73
+ // never fires.
40
74
  const now = Math.floor(Date.now() / 1000);
41
- if (proposalState === 0 &&
75
+ let proposalState = onChainData.state;
76
+ if (proposalState === ProposalState.Pending &&
42
77
  now >= apiProposal.votingStartTime &&
43
78
  now <= apiProposal.votingEndTime) {
44
- proposalState = 1; // Active
79
+ proposalState = ProposalState.Active;
45
80
  }
46
- const isMultichain = isMultichainProposal(apiProposal.targets);
47
81
  if (formattedData.executed) {
48
- proposalState = 7; // ProposalState.Executed
82
+ proposalState = ProposalState.Executed;
49
83
  }
50
84
  else if (isMultichain &&
51
85
  onChainData.votesCollected &&
52
86
  now > apiProposal.votingEndTime &&
53
- proposalState < 5) {
54
- proposalState = 5; // ProposalState.Queued
87
+ proposalState < ProposalState.Queued) {
88
+ proposalState = ProposalState.Queued;
55
89
  }
56
90
  const proposal = {
57
91
  id: apiProposal.proposalId,
@@ -1 +1 @@
1
- {"version":3,"file":"getProposals.js","sourceRoot":"","sources":["../../../../actions/governance/proposals/getProposals.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAElD,OAAO,EAAE,MAAM,EAAE,uBAAuB,EAAE,MAAM,0BAA0B,CAAC;AAG3E,OAAO,KAAK,MAAM,MAAM,4BAA4B,CAAC;AAErD,OAAO,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAC;AAC9D,OAAO,EACL,0BAA0B,EAC1B,qBAAqB,EACrB,yBAAyB,EACzB,uBAAuB,EACvB,eAAe,EACf,uBAAuB,EACvB,oBAAoB,GACrB,MAAM,aAAa,CAAC;AASrB,MAAM,CAAC,KAAK,UAAU,YAAY,CAIhC,MAAsB,EACtB,IAAoD;IAEpD,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC,cAAc,EAAE,8BAA8B,CAAC,CAAC;IAE3E,MAAM,YAAY,GAAG,uBAAuB,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;IAE3D,MAAM,sBAAsB,GAAG,YAAY,CAAC,MAAM,CAChD,CAAC,WAAW,EAAE,EAAE,CACd,WAAW,CAAC,OAAO,KAAK,QAAQ,CAAC,EAAE;QACnC,WAAW,CAAC,OAAO,KAAK,SAAS,CAAC,EAAE,CACvC,CAAC;IAEF,IAAI,sBAAsB,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACxC,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;QAClB,OAAO,EAAE,CAAC;IACZ,CAAC;IAED,MAAM,YAAY,GAAG,MAAM,OAAO,CAAC,GAAG,CACpC,sBAAsB,CAAC,GAAG,CAAC,KAAK,EAAE,qBAAqB,EAAE,EAAE;QACzD,IAAI,qBAAqB,CAAC,OAAO,KAAK,QAAQ,CAAC,EAAE,EAAE,CAAC;YAClD,iCAAiC;YACjC,OAAO,oBAAoB,CAAC,qBAAqB,CAAC,CAAC;QACrD,CAAC;aAAM,CAAC;YACN,qCAAqC;YACrC,OAAO,qBAAqB,CAAC,qBAAqB,CAAC,CAAC;QACtD,CAAC;IACH,CAAC,CAAC,CACH,CAAC;IAEF,MAAM,SAAS,GAAG,YAAY,CAAC,IAAI,EAAE,CAAC;IACtC,MAAM,eAAe,GAAG,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,UAAU,GAAG,CAAC,CAAC,UAAU,CAAC,CAAC;IAE9E,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;IAElB,OAAO,eAAe,CAAC;AACzB,CAAC;AAED;;GAEG;AACH,KAAK,UAAU,oBAAoB,CACjC,qBAAkC;IAElC,MAAM,YAAY,GAAG,MAAM,iBAAiB,CAAC,qBAAqB,CAAC,CAAC;IACpE,MAAM,eAAe,GAAG,MAAM,uBAAuB,CACnD,YAAY,EACZ,qBAAqB,CACtB,CAAC;IAEF,MAAM,SAAS,GAAe,YAAY,CAAC,GAAG,CAAC,CAAC,WAAW,EAAE,KAAK,EAAE,EAAE;QACpE,MAAM,WAAW,GAAG,eAAe,CAAC,KAAK,CAAE,CAAC;QAE5C,MAAM,aAAa,GAAG,qBAAqB,CAAC,WAAW,CAAC,CAAC;QAEzD,IAAI,aAAa,GAAG,WAAW,CAAC,KAAK,CAAC;QACtC,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,CAAC;QAE1C,IACE,aAAa,KAAK,CAAC;YACnB,GAAG,IAAI,WAAW,CAAC,eAAe;YAClC,GAAG,IAAI,WAAW,CAAC,aAAa,EAChC,CAAC;YACD,aAAa,GAAG,CAAC,CAAC,CAAC,SAAS;QAC9B,CAAC;QAED,MAAM,YAAY,GAAG,oBAAoB,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;QAE/D,IAAI,aAAa,CAAC,QAAQ,EAAE,CAAC;YAC3B,aAAa,GAAG,CAAC,CAAC,CAAC,yBAAyB;QAC9C,CAAC;aAAM,IACL,YAAY;YACZ,WAAW,CAAC,cAAc;YAC1B,GAAG,GAAG,WAAW,CAAC,aAAa;YAC/B,aAAa,GAAG,CAAC,EACjB,CAAC;YACD,aAAa,GAAG,CAAC,CAAC,CAAC,uBAAuB;QAC5C,CAAC;QAED,MAAM,QAAQ,GAAa;YACzB,EAAE,EAAE,WAAW,CAAC,UAAU;YAC1B,OAAO,EAAE,WAAW,CAAC,OAAO;YAC5B,UAAU,EAAE,WAAW,CAAC,UAAU;YAClC,QAAQ,EAAE,WAAW,CAAC,QAAyB;YAC/C,GAAG,EAAE,WAAW,CAAC,GAAG;YACpB,cAAc,EAAE,WAAW,CAAC,eAAe;YAC3C,YAAY,EAAE,WAAW,CAAC,aAAa;YACvC,UAAU,EAAE,MAAM,CAAC,WAAW,CAAC,WAAW,CAAC;YAC3C,QAAQ,EAAE,aAAa,CAAC,QAAQ;YAChC,YAAY,EAAE,aAAa,CAAC,YAAY;YACxC,YAAY,EAAE,aAAa,CAAC,YAAY;YACxC,UAAU,EAAE,aAAa,CAAC,UAAU;YACpC,QAAQ,EAAE,aAAa,CAAC,QAAQ;YAChC,QAAQ,EAAE,aAAa,CAAC,QAAQ;YAChC,MAAM,EAAE,IAAI,MAAM,CAAC,WAAW,CAAC,MAAM,EAAE,EAAE,CAAC;YAC1C,KAAK,EAAE,aAAa;YACpB,gBAAgB;YAChB,KAAK,EAAE,aAAa,CAAC,KAAK;YAC1B,QAAQ,EAAE,aAAa,CAAC,QAAQ;YAChC,WAAW,EAAE,WAAW,CAAC,WAAW;YACpC,OAAO,EAAE,WAAW,CAAC,OAAO;YAC5B,SAAS,EAAE,WAAW,CAAC,SAAS;YAChC,UAAU,EAAE,EAAE;YACd,YAAY,EAAE,aAAa,CAAC,YAAY;YACxC,WAAW,EAAE,qBAAqB;SACnC,CAAC;QAEF,IAAI,YAAY,EAAE,CAAC;YACjB,QAAQ,CAAC,UAAU,GAAG;gBACpB,EAAE,EAAE,WAAW,CAAC,UAAU;gBAC1B,cAAc,EAAE,WAAW,CAAC,cAAc;aAC3C,CAAC;QACJ,CAAC;QAED,OAAO,QAAQ,CAAC;IAClB,CAAC,CAAC,CAAC;IAEH,OAAO,SAAS,CAAC;AACnB,CAAC;AAED;;GAEG;AACH,KAAK,UAAU,qBAAqB,CAClC,qBAAkC;IAElC,MAAM,CAAC,UAAU,EAAE,YAAY,EAAE,cAAc,CAAC,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC;QACnE,eAAe,CAAC,EAAE,WAAW,EAAE,qBAAqB,EAAE,CAAC;QACvD,yBAAyB,CAAC,EAAE,WAAW,EAAE,qBAAqB,EAAE,CAAC;QACjE,uBAAuB,CAAC,EAAE,WAAW,EAAE,qBAAqB,EAAE,CAAC;KAChE,CAAC,CAAC;IAEH,MAAM,SAAS,GAAG,CAAC,GAAG,UAAU,EAAE,GAAG,YAAY,CAAC,CAAC;IAEnD,SAAS,CAAC,OAAO,CAAC,CAAC,QAAQ,EAAE,EAAE;QAC7B,QAAQ,CAAC,WAAW,GAAG,qBAAqB,CAAC;IAC/C,CAAC,CAAC,CAAC;IAEH,0BAA0B,CAAC,SAAS,EAAE,cAAc,CAAC,CAAC;IAEtD,OAAO,SAAS,CAAC;AACnB,CAAC"}
1
+ {"version":3,"file":"getProposals.js","sourceRoot":"","sources":["../../../../actions/governance/proposals/getProposals.ts"],"names":[],"mappings":"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"}
@@ -1,2 +1,2 @@
1
- export const version = '0.13.1';
1
+ export const version = '0.14.0';
2
2
  //# sourceMappingURL=version.js.map
@@ -7,7 +7,23 @@ export type GetUserVoteReceiptParameters<environments, network extends Chain | u
7
7
  proposalId: number;
8
8
  /** User address*/
9
9
  userAddress: Address;
10
+ /**
11
+ * The chain the proposal lives on (1 = Ethereum multigov,
12
+ * 1284 = Moonbeam historical). When omitted, every supported chain is queried
13
+ * and non-empty receipts are concatenated — proposalIds may collide across
14
+ * chains (they represent different proposals), so a single bare proposalId
15
+ * can have votes on both Ethereum and Moonbeam.
16
+ */
17
+ chainId?: number;
10
18
  };
11
19
  export type GetUserVoteReceiptReturnType = Promise<VoteReceipt[]>;
20
+ /**
21
+ * Fetch a user's vote receipts for a proposal.
22
+ *
23
+ * Returns the "didn't vote" stub when the proposal exists on at least one
24
+ * queried chain but the user hasn't voted there. Throws `GovernorNotFoundError`
25
+ * when the proposal doesn't exist on any queried chain — callers can use that
26
+ * to distinguish "the user didn't vote" from "this proposal isn't visible".
27
+ */
12
28
  export declare function getUserVoteReceipt<environments, Network extends Chain | undefined>(client: MoonwellClient, args: GetUserVoteReceiptParameters<environments, Network>): GetUserVoteReceiptReturnType;
13
29
  //# sourceMappingURL=getUserVoteReceipt.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"getUserVoteReceipt.d.ts","sourceRoot":"","sources":["../../../actions/governance/getUserVoteReceipt.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,MAAM,CAAC;AAC3C,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,sCAAsC,CAAC;AAE3E,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,uBAAuB,CAAC;AAClE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,4BAA4B,CAAC;AAG9D,MAAM,MAAM,4BAA4B,CACtC,YAAY,EACZ,OAAO,SAAS,KAAK,GAAG,SAAS,IAC/B,oBAAoB,CAAC,YAAY,EAAE,OAAO,CAAC,GAAG;IAChD,yBAAyB;IACzB,UAAU,EAAE,MAAM,CAAC;IAEnB,kBAAkB;IAClB,WAAW,EAAE,OAAO,CAAC;CACtB,CAAC;AAEF,MAAM,MAAM,4BAA4B,GAAG,OAAO,CAAC,WAAW,EAAE,CAAC,CAAC;AAElE,wBAAsB,kBAAkB,CACtC,YAAY,EACZ,OAAO,SAAS,KAAK,GAAG,SAAS,EAEjC,MAAM,EAAE,cAAc,EACtB,IAAI,EAAE,4BAA4B,CAAC,YAAY,EAAE,OAAO,CAAC,GACxD,4BAA4B,CAyC9B"}
1
+ {"version":3,"file":"getUserVoteReceipt.d.ts","sourceRoot":"","sources":["../../../actions/governance/getUserVoteReceipt.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,MAAM,CAAC;AAC3C,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,sCAAsC,CAAC;AAE3E,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,uBAAuB,CAAC;AAClE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,4BAA4B,CAAC;AAS9D,MAAM,MAAM,4BAA4B,CACtC,YAAY,EACZ,OAAO,SAAS,KAAK,GAAG,SAAS,IAC/B,oBAAoB,CAAC,YAAY,EAAE,OAAO,CAAC,GAAG;IAChD,yBAAyB;IACzB,UAAU,EAAE,MAAM,CAAC;IAEnB,kBAAkB;IAClB,WAAW,EAAE,OAAO,CAAC;IAErB;;;;;;OAMG;IACH,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB,CAAC;AAEF,MAAM,MAAM,4BAA4B,GAAG,OAAO,CAAC,WAAW,EAAE,CAAC,CAAC;AAElE;;;;;;;GAOG;AACH,wBAAsB,kBAAkB,CACtC,YAAY,EACZ,OAAO,SAAS,KAAK,GAAG,SAAS,EAEjC,MAAM,EAAE,cAAc,EACtB,IAAI,EAAE,4BAA4B,CAAC,YAAY,EAAE,OAAO,CAAC,GACxD,4BAA4B,CA0D9B"}
@@ -1,4 +1,25 @@
1
1
  import type { Environment } from "../../environments/index.js";
2
+ /**
3
+ * Chains the governor indexer serves. Ethereum first because that's where the
4
+ * active multigov contract lives; Moonbeam follows for the historical archive.
5
+ */
6
+ export declare const SUPPORTED_GOVERNOR_CHAIN_IDS: readonly [1, 1284];
7
+ /**
8
+ * Build the chain-prefixed proposal key the indexer requires
9
+ * (e.g. chainId=1, proposalId=7 → "1-0000000007").
10
+ */
11
+ export declare const buildProposalKey: (chainId: number, proposalId: number | string) => string;
12
+ /**
13
+ * Thrown by proposal-scoped fetchers when the indexer reports the proposal
14
+ * doesn't exist (HTTP 404). Callers use `isNotFoundError` to drive chainId
15
+ * fallback without misclassifying a real 5xx outage as "not found".
16
+ */
17
+ export declare class GovernorNotFoundError extends Error {
18
+ readonly chainId: number;
19
+ readonly proposalId: number | string;
20
+ constructor(chainId: number, proposalId: number | string);
21
+ }
22
+ export declare const isNotFoundError: (error: unknown) => boolean;
2
23
  /**
3
24
  * Paginated response type
4
25
  */
@@ -77,38 +98,42 @@ export type ApiVoteReceipt = {
77
98
  chainId: number;
78
99
  timestamp: number;
79
100
  };
101
+ export type FetchProposalsOptions = PaginationOptions & {
102
+ chainId: number;
103
+ };
80
104
  /**
81
105
  * Fetch proposals from Governor API
106
+ *
107
+ * `chainId` is required by the indexer — 1 (Ethereum multigov) or
108
+ * 1284 (Moonbeam historical). Missing/unsupported chainId returns 400.
82
109
  */
83
- export declare function fetchProposals(environment: Environment, options?: PaginationOptions & {
84
- chainId?: number;
85
- }): Promise<PaginatedResponse<ApiProposal>>;
110
+ export declare function fetchProposals(environment: Environment, options: FetchProposalsOptions): Promise<PaginatedResponse<ApiProposal>>;
86
111
  /**
87
- * Fetch all proposals (handles pagination internally)
112
+ * Fetch all proposals for a given chainId (handles pagination internally)
88
113
  */
89
- export declare function fetchAllProposals(environment: Environment, options?: {
90
- chainId?: number;
114
+ export declare function fetchAllProposals(environment: Environment, options: {
115
+ chainId: number;
91
116
  }): Promise<ApiProposal[]>;
92
117
  /**
93
118
  * Fetch a single proposal from Governor API
94
119
  */
95
- export declare function fetchProposal(environment: Environment, proposalId: string): Promise<ApiProposal>;
120
+ export declare function fetchProposal(environment: Environment, chainId: number, proposalId: number | string): Promise<ApiProposal>;
96
121
  /**
97
122
  * Fetch votes for a proposal
98
123
  */
99
- export declare function fetchProposalVotes(environment: Environment, proposalId: string, options?: PaginationOptions): Promise<PaginatedResponse<ApiVote>>;
124
+ export declare function fetchProposalVotes(environment: Environment, chainId: number, proposalId: number | string, options?: PaginationOptions): Promise<PaginatedResponse<ApiVote>>;
100
125
  /**
101
126
  * Fetch all votes for a proposal (handles pagination internally)
102
127
  */
103
- export declare function fetchAllProposalVotes(environment: Environment, proposalId: string): Promise<ApiVote[]>;
128
+ export declare function fetchAllProposalVotes(environment: Environment, chainId: number, proposalId: number | string): Promise<ApiVote[]>;
104
129
  /**
105
130
  * Fetch state changes for a proposal
106
131
  */
107
- export declare function fetchProposalStateChanges(environment: Environment, proposalId: string, options?: PaginationOptions): Promise<PaginatedResponse<ApiProposalStateChange>>;
132
+ export declare function fetchProposalStateChanges(environment: Environment, chainId: number, proposalId: number | string, options?: PaginationOptions): Promise<PaginatedResponse<ApiProposalStateChange>>;
108
133
  /**
109
134
  * Fetch all state changes for a proposal (handles pagination internally)
110
135
  */
111
- export declare function fetchAllProposalStateChanges(environment: Environment, proposalId: string): Promise<ApiProposalStateChange[]>;
136
+ export declare function fetchAllProposalStateChanges(environment: Environment, chainId: number, proposalId: number | string): Promise<ApiProposalStateChange[]>;
112
137
  /**
113
138
  * Fetch all voters (delegates)
114
139
  */
@@ -141,5 +166,5 @@ export declare function fetchAllVoterVotes(environment: Environment, address: st
141
166
  * Fetch vote receipts for a specific user on a proposal
142
167
  * Returns all votes across all chains for multichain proposals
143
168
  */
144
- export declare function fetchUserVoteReceipt(environment: Environment, proposalId: string, voterAddress: string): Promise<ApiVoteReceipt[]>;
169
+ export declare function fetchUserVoteReceipt(environment: Environment, chainId: number, proposalId: number | string, voterAddress: string): Promise<ApiVoteReceipt[]>;
145
170
  //# sourceMappingURL=governor-api-client.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"governor-api-client.d.ts","sourceRoot":"","sources":["../../../actions/governance/governor-api-client.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"governor-api-client.d.ts","sourceRoot":"","sources":["../../../actions/governance/governor-api-client.ts"],"names":[],"mappings":"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"}
@@ -1,6 +1,6 @@
1
1
  import { Amount } from "../../../common/index.js";
2
2
  import type { Environment } from "../../../environments/index.js";
3
- import { type Proposal } from "../../../types/proposal.js";
3
+ import { type Proposal, ProposalState } from "../../../types/proposal.js";
4
4
  import type { ApiProposal } from "../governor-api-client.js";
5
5
  export declare const WORMHOLE_CONTRACT = "0xc8e2b0cd52cf01b0ce87d389daa3d414d4ce29f3";
6
6
  type PonderExtendedProposalData = {
@@ -56,6 +56,19 @@ export type ApiProposalFormatted = {
56
56
  title: string;
57
57
  subtitle: string;
58
58
  };
59
+ /**
60
+ * Derive a ProposalState value from API data alone (no on-chain read).
61
+ *
62
+ * Used for proposals whose chainId doesn't match the governance environment's
63
+ * chainId — e.g. chainId=1 (Ethereum multigov) proposals reached through the
64
+ * Moonbeam governance environment, where on-chain reads against Moonbeam's
65
+ * governor would be meaningless.
66
+ *
67
+ * Precedence (highest wins): Executed → Canceled → Queued → Active → Pending.
68
+ * Executed wins over Canceled because the SDK treats EXECUTED state changes as
69
+ * the terminal truth even when an earlier CANCELED event is present.
70
+ */
71
+ export declare const deriveProposalStateFromApi: (formatted: ApiProposalFormatted, apiProposal: ApiProposal, now: number) => ProposalState;
59
72
  /**
60
73
  * Parses and formats API proposal data
61
74
  */
@@ -1 +1 @@
1
- {"version":3,"file":"common.d.ts","sourceRoot":"","sources":["../../../../actions/governance/proposals/common.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"common.d.ts","sourceRoot":"","sources":["../../../../actions/governance/proposals/common.ts"],"names":[],"mappings":"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"}
@@ -1,9 +1,14 @@
1
1
  import type { MoonwellClient } from "../../../client/createMoonwellClient.js";
2
2
  import type { NetworkParameterType } from "../../../common/types.js";
3
3
  import type { Chain } from "../../../environments/index.js";
4
- import type { Proposal } from "../../../types/proposal.js";
4
+ import { type Proposal } from "../../../types/proposal.js";
5
5
  export type GetProposalParameters<environments, network extends Chain | undefined> = NetworkParameterType<environments, network> & {
6
6
  proposalId: number;
7
+ /**
8
+ * The chain the proposal lives on (1 = Ethereum multigov,
9
+ * 1284 = Moonbeam historical). When omitted, both are tried in turn.
10
+ */
11
+ chainId?: number;
7
12
  };
8
13
  export type GetProposalReturnType = Promise<Proposal | undefined>;
9
14
  export declare function getProposal<environments, Network extends Chain | undefined>(client: MoonwellClient, args: GetProposalParameters<environments, Network>): GetProposalReturnType;
@@ -1 +1 @@
1
- {"version":3,"file":"getProposal.d.ts","sourceRoot":"","sources":["../../../../actions/governance/proposals/getProposal.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,yCAAyC,CAAC;AAE9E,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,0BAA0B,CAAC;AACrE,OAAO,KAAK,EAAE,KAAK,EAAe,MAAM,gCAAgC,CAAC;AACzE,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,4BAA4B,CAAC;AAY3D,MAAM,MAAM,qBAAqB,CAC/B,YAAY,EACZ,OAAO,SAAS,KAAK,GAAG,SAAS,IAC/B,oBAAoB,CAAC,YAAY,EAAE,OAAO,CAAC,GAAG;IAChD,UAAU,EAAE,MAAM,CAAC;CACpB,CAAC;AAEF,MAAM,MAAM,qBAAqB,GAAG,OAAO,CAAC,QAAQ,GAAG,SAAS,CAAC,CAAC;AAElE,wBAAsB,WAAW,CAC/B,YAAY,EACZ,OAAO,SAAS,KAAK,GAAG,SAAS,EAEjC,MAAM,EAAE,cAAc,EACtB,IAAI,EAAE,qBAAqB,CAAC,YAAY,EAAE,OAAO,CAAC,GACjD,qBAAqB,CA8BvB"}
1
+ {"version":3,"file":"getProposal.d.ts","sourceRoot":"","sources":["../../../../actions/governance/proposals/getProposal.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,yCAAyC,CAAC;AAE9E,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,0BAA0B,CAAC;AACrE,OAAO,KAAK,EAAE,KAAK,EAAe,MAAM,gCAAgC,CAAC;AACzE,OAAO,EAAE,KAAK,QAAQ,EAAiB,MAAM,4BAA4B,CAAC;AAiB1E,MAAM,MAAM,qBAAqB,CAC/B,YAAY,EACZ,OAAO,SAAS,KAAK,GAAG,SAAS,IAC/B,oBAAoB,CAAC,YAAY,EAAE,OAAO,CAAC,GAAG;IAChD,UAAU,EAAE,MAAM,CAAC;IACnB;;;OAGG;IACH,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB,CAAC;AAEF,MAAM,MAAM,qBAAqB,GAAG,OAAO,CAAC,QAAQ,GAAG,SAAS,CAAC,CAAC;AAElE,wBAAsB,WAAW,CAC/B,YAAY,EACZ,OAAO,SAAS,KAAK,GAAG,SAAS,EAEjC,MAAM,EAAE,cAAc,EACtB,IAAI,EAAE,qBAAqB,CAAC,YAAY,EAAE,OAAO,CAAC,GACjD,qBAAqB,CAmBvB"}
@@ -1,7 +1,7 @@
1
1
  import type { MoonwellClient } from "../../../client/createMoonwellClient.js";
2
2
  import type { OptionalNetworkParameterType } from "../../../common/types.js";
3
3
  import type { Chain } from "../../../environments/index.js";
4
- import type { Proposal } from "../../../types/proposal.js";
4
+ import { type Proposal } from "../../../types/proposal.js";
5
5
  export type GetProposalsParameters<environments, network extends Chain | undefined> = OptionalNetworkParameterType<environments, network>;
6
6
  export type GetProposalsReturnType = Promise<Proposal[]>;
7
7
  export declare function getProposals<environments, Network extends Chain | undefined>(client: MoonwellClient, args?: GetProposalsParameters<environments, Network>): GetProposalsReturnType;
@@ -1 +1 @@
1
- {"version":3,"file":"getProposals.d.ts","sourceRoot":"","sources":["../../../../actions/governance/proposals/getProposals.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,yCAAyC,CAAC;AAE9E,OAAO,KAAK,EAAE,4BAA4B,EAAE,MAAM,0BAA0B,CAAC;AAC7E,OAAO,KAAK,EAAE,KAAK,EAAe,MAAM,gCAAgC,CAAC;AAEzE,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,4BAA4B,CAAC;AAY3D,MAAM,MAAM,sBAAsB,CAChC,YAAY,EACZ,OAAO,SAAS,KAAK,GAAG,SAAS,IAC/B,4BAA4B,CAAC,YAAY,EAAE,OAAO,CAAC,CAAC;AAExD,MAAM,MAAM,sBAAsB,GAAG,OAAO,CAAC,QAAQ,EAAE,CAAC,CAAC;AAEzD,wBAAsB,YAAY,CAChC,YAAY,EACZ,OAAO,SAAS,KAAK,GAAG,SAAS,EAEjC,MAAM,EAAE,cAAc,EACtB,IAAI,CAAC,EAAE,sBAAsB,CAAC,YAAY,EAAE,OAAO,CAAC,GACnD,sBAAsB,CAkCxB"}
1
+ {"version":3,"file":"getProposals.d.ts","sourceRoot":"","sources":["../../../../actions/governance/proposals/getProposals.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,yCAAyC,CAAC;AAE9E,OAAO,KAAK,EAAE,4BAA4B,EAAE,MAAM,0BAA0B,CAAC;AAC7E,OAAO,KAAK,EAAE,KAAK,EAAe,MAAM,gCAAgC,CAAC;AAEzE,OAAO,EAAE,KAAK,QAAQ,EAAiB,MAAM,4BAA4B,CAAC;AAY1E,MAAM,MAAM,sBAAsB,CAChC,YAAY,EACZ,OAAO,SAAS,KAAK,GAAG,SAAS,IAC/B,4BAA4B,CAAC,YAAY,EAAE,OAAO,CAAC,CAAC;AAExD,MAAM,MAAM,sBAAsB,GAAG,OAAO,CAAC,QAAQ,EAAE,CAAC,CAAC;AAEzD,wBAAsB,YAAY,CAChC,YAAY,EACZ,OAAO,SAAS,KAAK,GAAG,SAAS,EAEjC,MAAM,EAAE,cAAc,EACtB,IAAI,CAAC,EAAE,sBAAsB,CAAC,YAAY,EAAE,OAAO,CAAC,GACnD,sBAAsB,CAyCxB"}
@@ -1,2 +1,2 @@
1
- export declare const version = "0.13.1";
1
+ export declare const version = "0.14.0";
2
2
  //# sourceMappingURL=version.d.ts.map
@@ -3,7 +3,13 @@ import type { MoonwellClient } from "../../client/createMoonwellClient.js";
3
3
  import { Amount, getEnvironmentFromArgs } from "../../common/index.js";
4
4
  import type { NetworkParameterType } from "../../common/types.js";
5
5
  import type { VoteReceipt } from "../../types/voteReceipt.js";
6
- import { fetchUserVoteReceipt } from "./governor-api-client.js";
6
+ import {
7
+ type ApiVoteReceipt,
8
+ GovernorNotFoundError,
9
+ SUPPORTED_GOVERNOR_CHAIN_IDS,
10
+ fetchUserVoteReceipt,
11
+ isNotFoundError,
12
+ } from "./governor-api-client.js";
7
13
 
8
14
  export type GetUserVoteReceiptParameters<
9
15
  environments,
@@ -14,10 +20,27 @@ export type GetUserVoteReceiptParameters<
14
20
 
15
21
  /** User address*/
16
22
  userAddress: Address;
23
+
24
+ /**
25
+ * The chain the proposal lives on (1 = Ethereum multigov,
26
+ * 1284 = Moonbeam historical). When omitted, every supported chain is queried
27
+ * and non-empty receipts are concatenated — proposalIds may collide across
28
+ * chains (they represent different proposals), so a single bare proposalId
29
+ * can have votes on both Ethereum and Moonbeam.
30
+ */
31
+ chainId?: number;
17
32
  };
18
33
 
19
34
  export type GetUserVoteReceiptReturnType = Promise<VoteReceipt[]>;
20
35
 
36
+ /**
37
+ * Fetch a user's vote receipts for a proposal.
38
+ *
39
+ * Returns the "didn't vote" stub when the proposal exists on at least one
40
+ * queried chain but the user hasn't voted there. Throws `GovernorNotFoundError`
41
+ * when the proposal doesn't exist on any queried chain — callers can use that
42
+ * to distinguish "the user didn't vote" from "this proposal isn't visible".
43
+ */
21
44
  export async function getUserVoteReceipt<
22
45
  environments,
23
46
  Network extends Chain | undefined,
@@ -25,44 +48,61 @@ export async function getUserVoteReceipt<
25
48
  client: MoonwellClient,
26
49
  args: GetUserVoteReceiptParameters<environments, Network>,
27
50
  ): GetUserVoteReceiptReturnType {
28
- const { proposalId, userAddress } = args;
51
+ const { proposalId, userAddress, chainId } = args;
29
52
 
30
53
  const environment = getEnvironmentFromArgs(client, args);
31
-
32
54
  if (!environment) {
33
55
  return [];
34
56
  }
35
57
 
36
- try {
37
- const apiVoteReceipts = await fetchUserVoteReceipt(
38
- environment,
39
- `${proposalId}`,
40
- userAddress,
41
- );
58
+ const tryChains = chainId ? [chainId] : SUPPORTED_GOVERNOR_CHAIN_IDS;
42
59
 
43
- if (apiVoteReceipts.length === 0) {
44
- return [
45
- {
46
- chainId: environment.chainId,
47
- proposalId,
48
- account: userAddress,
49
- voted: false,
50
- option: 0,
51
- votes: new Amount(0, 18),
52
- },
53
- ];
60
+ const collected: ApiVoteReceipt[] = [];
61
+ let anyChainAcknowledged = false;
62
+ const notFoundChainIds: number[] = [];
63
+
64
+ for (const cid of tryChains) {
65
+ try {
66
+ const apiVoteReceipts = await fetchUserVoteReceipt(
67
+ environment,
68
+ cid,
69
+ proposalId,
70
+ userAddress,
71
+ );
72
+ anyChainAcknowledged = true;
73
+ collected.push(...apiVoteReceipts);
74
+ } catch (error) {
75
+ if (isNotFoundError(error)) {
76
+ notFoundChainIds.push(cid);
77
+ continue;
78
+ }
79
+ throw error;
54
80
  }
81
+ }
55
82
 
56
- return apiVoteReceipts.map((apiReceipt) => ({
57
- chainId: apiReceipt.chainId,
58
- proposalId,
59
- account: userAddress as Address,
60
- voted: true,
61
- option: apiReceipt.voteValue,
62
- votes: new Amount(BigInt(apiReceipt.votes), 18),
63
- }));
64
- } catch (error) {
65
- const message = error instanceof Error ? error.message : String(error);
66
- throw new Error(`Failed to fetch user vote receipt: ${message}`);
83
+ if (!anyChainAcknowledged) {
84
+ throw new GovernorNotFoundError(notFoundChainIds[0] ?? 0, proposalId);
67
85
  }
86
+
87
+ if (collected.length === 0) {
88
+ return [
89
+ {
90
+ chainId: environment.chainId,
91
+ proposalId,
92
+ account: userAddress,
93
+ voted: false,
94
+ option: 0,
95
+ votes: new Amount(0, 18),
96
+ },
97
+ ];
98
+ }
99
+
100
+ return collected.map((apiReceipt) => ({
101
+ chainId: apiReceipt.chainId,
102
+ proposalId,
103
+ account: userAddress,
104
+ voted: true,
105
+ option: apiReceipt.voteValue,
106
+ votes: new Amount(BigInt(apiReceipt.votes), 18),
107
+ }));
68
108
  }