dexe-mcp 0.9.0 → 0.11.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 (67) hide show
  1. package/CHANGELOG.md +94 -20
  2. package/README.md +6 -6
  3. package/dist/config.d.ts +22 -0
  4. package/dist/config.d.ts.map +1 -1
  5. package/dist/config.js +30 -0
  6. package/dist/config.js.map +1 -1
  7. package/dist/env/schema.d.ts +21 -0
  8. package/dist/env/schema.d.ts.map +1 -1
  9. package/dist/env/schema.js +21 -0
  10. package/dist/env/schema.js.map +1 -1
  11. package/dist/lib/controllingVoters.d.ts +44 -0
  12. package/dist/lib/controllingVoters.d.ts.map +1 -0
  13. package/dist/lib/controllingVoters.js +152 -0
  14. package/dist/lib/controllingVoters.js.map +1 -0
  15. package/dist/lib/dangerousSelectors.d.ts +1 -1
  16. package/dist/lib/dangerousSelectors.d.ts.map +1 -1
  17. package/dist/lib/dangerousSelectors.js +12 -22
  18. package/dist/lib/dangerousSelectors.js.map +1 -1
  19. package/dist/lib/decoders.d.ts +4 -4
  20. package/dist/lib/decoders.d.ts.map +1 -1
  21. package/dist/lib/decoders.js +2 -2
  22. package/dist/lib/govProposalView.d.ts +37 -0
  23. package/dist/lib/govProposalView.d.ts.map +1 -0
  24. package/dist/lib/govProposalView.js +42 -0
  25. package/dist/lib/govProposalView.js.map +1 -0
  26. package/dist/lib/protocolAdvisories.d.ts +12 -13
  27. package/dist/lib/protocolAdvisories.d.ts.map +1 -1
  28. package/dist/lib/protocolAdvisories.js +23 -16
  29. package/dist/lib/protocolAdvisories.js.map +1 -1
  30. package/dist/lib/quorumRisk.d.ts +92 -0
  31. package/dist/lib/quorumRisk.d.ts.map +1 -0
  32. package/dist/lib/quorumRisk.js +159 -0
  33. package/dist/lib/quorumRisk.js.map +1 -0
  34. package/dist/tools/daoDeploy.d.ts.map +1 -1
  35. package/dist/tools/daoDeploy.js +32 -0
  36. package/dist/tools/daoDeploy.js.map +1 -1
  37. package/dist/tools/flow.d.ts.map +1 -1
  38. package/dist/tools/flow.js +90 -1
  39. package/dist/tools/flow.js.map +1 -1
  40. package/dist/tools/gov.js +2 -2
  41. package/dist/tools/index.d.ts.map +1 -1
  42. package/dist/tools/index.js +2 -0
  43. package/dist/tools/index.js.map +1 -1
  44. package/dist/tools/otc.d.ts +20 -0
  45. package/dist/tools/otc.d.ts.map +1 -1
  46. package/dist/tools/otc.js +188 -58
  47. package/dist/tools/otc.js.map +1 -1
  48. package/dist/tools/proposalBuild.d.ts.map +1 -1
  49. package/dist/tools/proposalBuild.js +19 -5
  50. package/dist/tools/proposalBuild.js.map +1 -1
  51. package/dist/tools/proposalBuildComplex.d.ts.map +1 -1
  52. package/dist/tools/proposalBuildComplex.js +12 -1
  53. package/dist/tools/proposalBuildComplex.js.map +1 -1
  54. package/dist/tools/proposalBuildMore.d.ts.map +1 -1
  55. package/dist/tools/proposalBuildMore.js +8 -5
  56. package/dist/tools/proposalBuildMore.js.map +1 -1
  57. package/dist/tools/risk.d.ts +4 -0
  58. package/dist/tools/risk.d.ts.map +1 -0
  59. package/dist/tools/risk.js +255 -0
  60. package/dist/tools/risk.js.map +1 -0
  61. package/dist/tools/subgraph.d.ts.map +1 -1
  62. package/dist/tools/subgraph.js +19 -15
  63. package/dist/tools/subgraph.js.map +1 -1
  64. package/dist/tools/voteBuild.d.ts.map +1 -1
  65. package/dist/tools/voteBuild.js +16 -4
  66. package/dist/tools/voteBuild.js.map +1 -1
  67. package/package.json +2 -2
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/tools/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/tools/index.ts"],"names":[],"mappings":"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"}
@@ -2,6 +2,26 @@ import type { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
2
2
  import type { ToolContext } from "./context.js";
3
3
  import { SignerManager } from "../lib/signer.js";
4
4
  import type { TxPayload } from "../lib/calldata.js";
5
+ /**
6
+ * Exact mirror of `ITokenSaleProposal.TierView` — a NESTED struct of
7
+ * `{ tierInitParams, tierInfo, tierAdditionalInfo }`. The previous flat shape
8
+ * (saleTokenAddress before claimLockDuration, reversed VestingSettings) was
9
+ * the pre-Bug-#25 field order and decoded garbage against live tiers.
10
+ * Field order verified against
11
+ * `DeXe-Protocol/contracts/interfaces/gov/proposals/ITokenSaleProposal.sol`.
12
+ */
13
+ export declare const TIER_VIEW_TUPLE: string;
14
+ export declare const GET_TIER_VIEWS_FRAGMENT = "function getTierViews(uint256 offset, uint256 limit) view returns (tuple(tuple(tuple(string name, string description) metadata, uint256 totalTokenProvided, uint64 saleStartTime, uint64 saleEndTime, uint64 claimLockDuration, address saleTokenAddress, address[] purchaseTokenAddresses, uint256[] exchangeRates, uint256 minAllocationPerUser, uint256 maxAllocationPerUser, tuple(uint256 vestingPercentage, uint64 vestingDuration, uint64 cliffPeriod, uint64 unlockStep) vestingSettings, tuple(uint8 participationType, bytes data)[] participationDetails) tierInitParams, tuple(bool isOff, uint256 totalSold, string uri, tuple(uint64 vestingStartTime, uint64 vestingEndTime) vestingTierInfo) tierInfo, tuple(bytes32 merkleRoot, string merkleUri, uint256 lastModified) tierAdditionalInfo)[] tierViews)";
15
+ /**
16
+ * Protocol-wide native-coin sentinel (`Globals.sol::ETHEREUM_ADDRESS`).
17
+ * `TokenSaleProposalBuy` keys exchange rates by this address and checks
18
+ * `tokenToBuyWith != ETHEREUM_ADDRESS` for the native path — passing the
19
+ * zero address on-chain reverts with "TSP: incorrect token". We accept the
20
+ * zero address as caller input for convenience, but calldata must always
21
+ * carry ETHEREUM_ADDRESS.
22
+ */
23
+ export declare const ETHEREUM_ADDRESS = "0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE";
24
+ export declare function isNativeSentinel(addr: string): boolean;
5
25
  /**
6
26
  * W29: exact-scope ERC20 approval for an OTC purchase.
7
27
  *
@@ -1 +1 @@
1
- {"version":3,"file":"otc.d.ts","sourceRoot":"","sources":["../../src/tools/otc.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AACzE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAChD,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAGjD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAiEpD;;;;;;;;;GASG;AACH,wBAAgB,kBAAkB,CAChC,YAAY,EAAE,MAAM,EACpB,iBAAiB,EAAE,MAAM,EACzB,MAAM,EAAE,MAAM,EACd,OAAO,EAAE,MAAM,GACd,SAAS,CAQX;AAID,wBAAgB,gBAAgB,CAC9B,MAAM,EAAE,SAAS,EACjB,GAAG,EAAE,WAAW,EAChB,MAAM,EAAE,aAAa,GACpB,IAAI,CAukBN"}
1
+ {"version":3,"file":"otc.d.ts","sourceRoot":"","sources":["../../src/tools/otc.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AACzE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAChD,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAGjD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AA6BpD;;;;;;;GAOG;AACH,eAAO,MAAM,eAAe,QAKvB,CAAC;AAEN,eAAO,MAAM,uBAAuB,8xBAAuG,CAAC;AAoC5I;;;;;;;GAOG;AACH,eAAO,MAAM,gBAAgB,+CAA+C,CAAC;AAE7E,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAGtD;AAED;;;;;;;;;GASG;AACH,wBAAgB,kBAAkB,CAChC,YAAY,EAAE,MAAM,EACpB,iBAAiB,EAAE,MAAM,EACzB,MAAM,EAAE,MAAM,EACd,OAAO,EAAE,MAAM,GACd,SAAS,CAQX;AA8DD,wBAAgB,gBAAgB,CAC9B,MAAM,EAAE,SAAS,EACjB,GAAG,EAAE,WAAW,EAChB,MAAM,EAAE,aAAa,GACpB,IAAI,CAypBN"}
package/dist/tools/otc.js CHANGED
@@ -1,10 +1,11 @@
1
1
  import { z } from "zod";
2
- import { Interface, ZeroAddress, isAddress, getAddress } from "ethers";
2
+ import { Interface, ZeroAddress, ZeroHash, isAddress, getAddress } from "ethers";
3
3
  import { RpcProvider } from "../rpc.js";
4
4
  import { multicall } from "../lib/multicall.js";
5
5
  import { runProposalCreate, sendOrCollect } from "./flow.js";
6
6
  import { resolveChain } from "../config.js";
7
7
  import { buildTokenSaleMultiActions, tierSchema, } from "./proposalBuildComplex.js";
8
+ import { PinataClient } from "../lib/ipfs.js";
8
9
  import { buildAddressMerkleTree, computeLeafHash, verifyProof, } from "../lib/merkleTree.js";
9
10
  import { simulateCalldata } from "./simulate.js";
10
11
  import { parseUintString } from "../lib/amount.js";
@@ -17,9 +18,23 @@ const ERC20_ABI = new Interface([
17
18
  "function allowance(address owner, address spender) view returns (uint256)",
18
19
  "function approve(address spender, uint256 amount) returns (bool)",
19
20
  ]);
21
+ /**
22
+ * Exact mirror of `ITokenSaleProposal.TierView` — a NESTED struct of
23
+ * `{ tierInitParams, tierInfo, tierAdditionalInfo }`. The previous flat shape
24
+ * (saleTokenAddress before claimLockDuration, reversed VestingSettings) was
25
+ * the pre-Bug-#25 field order and decoded garbage against live tiers.
26
+ * Field order verified against
27
+ * `DeXe-Protocol/contracts/interfaces/gov/proposals/ITokenSaleProposal.sol`.
28
+ */
29
+ export const TIER_VIEW_TUPLE = "tuple(" +
30
+ "tuple(tuple(string name, string description) metadata, uint256 totalTokenProvided, uint64 saleStartTime, uint64 saleEndTime, uint64 claimLockDuration, address saleTokenAddress, address[] purchaseTokenAddresses, uint256[] exchangeRates, uint256 minAllocationPerUser, uint256 maxAllocationPerUser, tuple(uint256 vestingPercentage, uint64 vestingDuration, uint64 cliffPeriod, uint64 unlockStep) vestingSettings, tuple(uint8 participationType, bytes data)[] participationDetails) tierInitParams, " +
31
+ "tuple(bool isOff, uint256 totalSold, string uri, tuple(uint64 vestingStartTime, uint64 vestingEndTime) vestingTierInfo) tierInfo, " +
32
+ "tuple(bytes32 merkleRoot, string merkleUri, uint256 lastModified) tierAdditionalInfo" +
33
+ ")";
34
+ export const GET_TIER_VIEWS_FRAGMENT = `function getTierViews(uint256 offset, uint256 limit) view returns (${TIER_VIEW_TUPLE}[] tierViews)`;
20
35
  const TOKEN_SALE_ABI = new Interface([
21
36
  "function latestTierId() view returns (uint256)",
22
- "function getTierViews(uint256 offset, uint256 limit) view returns (tuple(tuple(string name, string description) metadata, uint256 totalTokenProvided, uint256 saleStartTime, uint256 saleEndTime, address saleTokenAddress, uint256 claimLockDuration, address[] purchaseTokenAddresses, uint256[] exchangeRates, uint256 minAllocationPerUser, uint256 maxAllocationPerUser, tuple(uint256 cliffPeriod, uint256 unlockStep, uint256 vestingDuration, uint256 vestingPercentage) vestingSettings, tuple(uint8 participationType, bytes data)[] participationDetails)[] tiers)",
37
+ GET_TIER_VIEWS_FRAGMENT,
23
38
  "function getUserViews(address user, uint256[] tierIds, bytes32[][] proofs) view returns (tuple(bool canParticipate, tuple(bool isClaimed, bool canClaim, uint64 claimUnlockTime, uint256 claimTotalAmount, uint256 boughtTotalAmount, address[] lockedTokenAddresses, uint256[] lockedTokenAmounts, address[] lockedNftAddresses, uint256[][] lockedNftIds, address[] purchaseTokenAddresses, uint256[] purchaseTokenAmounts) purchaseView, tuple(uint64 latestVestingWithdraw, uint64 nextUnlockTime, uint256 nextUnlockAmount, uint256 vestingTotalAmount, uint256 vestingWithdrawnAmount, uint256 amountToWithdraw, uint256 lockedAmount) vestingUserView)[] userViews)",
24
39
  "function buy(uint256 tierId, address tokenToBuyWith, uint256 amount, bytes32[] proof) payable",
25
40
  "function claim(uint256[] tierIds)",
@@ -45,8 +60,18 @@ function ok(data) {
45
60
  function bigintReplacer(_k, v) {
46
61
  return typeof v === "bigint" ? v.toString() : v;
47
62
  }
48
- function isNativeSentinel(addr) {
49
- return addr.toLowerCase() === ZeroAddress.toLowerCase();
63
+ /**
64
+ * Protocol-wide native-coin sentinel (`Globals.sol::ETHEREUM_ADDRESS`).
65
+ * `TokenSaleProposalBuy` keys exchange rates by this address and checks
66
+ * `tokenToBuyWith != ETHEREUM_ADDRESS` for the native path — passing the
67
+ * zero address on-chain reverts with "TSP: incorrect token". We accept the
68
+ * zero address as caller input for convenience, but calldata must always
69
+ * carry ETHEREUM_ADDRESS.
70
+ */
71
+ export const ETHEREUM_ADDRESS = "0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE";
72
+ export function isNativeSentinel(addr) {
73
+ const a = addr.toLowerCase();
74
+ return a === ZeroAddress || a === ETHEREUM_ADDRESS.toLowerCase();
50
75
  }
51
76
  /**
52
77
  * W29: exact-scope ERC20 approval for an OTC purchase.
@@ -67,6 +92,50 @@ export function buildExactApproval(paymentToken, tokenSaleProposal, amount, chai
67
92
  description: `ERC20.approve(${tokenSaleProposal}, ${amount})`,
68
93
  };
69
94
  }
95
+ /**
96
+ * Frontend-compat (app.dexe.io): the buyer UI regenerates merkle proofs from
97
+ * the IPFS `{ list: [...] }` JSON referenced by the tier's MerkleWhitelist
98
+ * uri (`useTokenSaleWhiteListProofFetcher`). A merkle tier created with an
99
+ * empty uri is unbuyable through the frontend — nobody can fetch the list to
100
+ * derive a proof. So before encoding, upload the whitelist and inject
101
+ * `ipfs://<cid>` into the participation spec (matches the frontend's
102
+ * `IpfsEntity.path` format; addresses lowercased like the frontend does).
103
+ */
104
+ async function resolveMerkleUris(tiers, pinataJwt) {
105
+ const uploaded = [];
106
+ const warnings = [];
107
+ const out = [];
108
+ for (const tier of tiers) {
109
+ const parts = tier.participation ?? [];
110
+ const needsUpload = parts.some((p) => p.type === "MerkleWhitelist" && !p.uri && (p.users?.length ?? 0) > 0);
111
+ if (!needsUpload) {
112
+ out.push(tier);
113
+ continue;
114
+ }
115
+ if (!pinataJwt) {
116
+ warnings.push(`Tier "${tier.name}": MerkleWhitelist uri left empty (DEXE_PINATA_JWT unset) — ` +
117
+ `app.dexe.io buyers cannot regenerate proofs for this tier; distribute the whitelist out-of-band.`);
118
+ out.push(tier);
119
+ continue;
120
+ }
121
+ const pinata = new PinataClient(pinataJwt);
122
+ const newParts = [];
123
+ for (const p of parts) {
124
+ if (p.type === "MerkleWhitelist" && !p.uri && (p.users?.length ?? 0) > 0) {
125
+ const list = p.users.map((u) => u.toLowerCase());
126
+ const res = await pinata.pinJson({ list }, { name: `otc-whitelist:${tier.name.slice(0, 24)}` });
127
+ const uri = `ipfs://${res.cid}`;
128
+ uploaded.push({ tierName: tier.name, uri });
129
+ newParts.push({ ...p, uri });
130
+ }
131
+ else {
132
+ newParts.push(p);
133
+ }
134
+ }
135
+ out.push({ ...tier, participation: newParts });
136
+ }
137
+ return { tiers: out, uploaded, warnings };
138
+ }
70
139
  // ---------- register ----------
71
140
  export function registerOtcTools(server, ctx, signer) {
72
141
  const rpc = new RpcProvider(ctx.config);
@@ -75,7 +144,8 @@ export function registerOtcTools(server, ctx, signer) {
75
144
  // =============================================
76
145
  server.tool("dexe_otc_dao_open_sale", "OTC composite — propose to open a multi-tier token sale on a deployed OTC DAO. " +
77
146
  "Builds the multi-tier `createTiers` envelope (deduped/summed approves, auto-merkle, " +
78
- "auto-addToWhitelist for plain Whitelist tiers), then runs the full proposal_create " +
147
+ "auto-addToWhitelist for plain Whitelist tiers, auto-upload of merkle whitelists to " +
148
+ "IPFS so app.dexe.io buyers can regenerate proofs), then runs the full proposal_create " +
79
149
  "flow: balance + threshold check, ERC20 approve to UserKeeper if needed, deposit, " +
80
150
  "IPFS proposal-metadata upload, `createProposalAndVote`. " +
81
151
  "When DEXE_PRIVATE_KEY is set, signs and broadcasts each tx; otherwise returns " +
@@ -100,9 +170,21 @@ export function registerOtcTools(server, ctx, signer) {
100
170
  buildOnly: z.boolean().default(false).describe("If true, return just the envelope (actions + metadata + merkle roots) without running the proposal_create flow. Skips IPFS upload and DAO state reads."),
101
171
  }, async (input) => {
102
172
  try {
173
+ // Frontend-compat: merkle tiers must reference their whitelist on
174
+ // IPFS or app.dexe.io buyers cannot derive proofs. buildOnly skips
175
+ // uploads by design — the caller owns IPFS there.
176
+ let tiers = input.tiers;
177
+ let whitelistUploads = [];
178
+ let whitelistWarnings = [];
179
+ if (!input.buildOnly) {
180
+ const resolved = await resolveMerkleUris(input.tiers, ctx.config.pinataJwt);
181
+ tiers = resolved.tiers;
182
+ whitelistUploads = resolved.uploaded;
183
+ whitelistWarnings = resolved.warnings;
184
+ }
103
185
  const built = buildTokenSaleMultiActions({
104
186
  tokenSaleProposal: input.tokenSaleProposal,
105
- tiers: input.tiers,
187
+ tiers,
106
188
  latestTierId: input.latestTierId,
107
189
  proposalName: input.proposalName,
108
190
  proposalDescription: input.proposalDescription,
@@ -164,6 +246,8 @@ export function registerOtcTools(server, ctx, signer) {
164
246
  tierNames: built.tierNames,
165
247
  derivedMerkleRoots: built.derivedMerkleRoots,
166
248
  whitelistRequests: built.whitelistRequests,
249
+ merkleWhitelistUploads: whitelistUploads,
250
+ ...(whitelistWarnings.length > 0 ? { warnings: whitelistWarnings } : {}),
167
251
  tierIdsAfterExecute: input.tiers.map((_, i) => (parseUintString(input.latestTierId, "latestTierId") + 1n + BigInt(i)).toString()),
168
252
  },
169
253
  });
@@ -177,8 +261,9 @@ export function registerOtcTools(server, ctx, signer) {
177
261
  // =============================================
178
262
  server.tool("dexe_otc_buyer_status", "OTC buyer aggregator — reads tier params + user state across N tiers and returns a " +
179
263
  "render-ready summary (purchasable status, claimable amount, vesting withdrawable, " +
180
- "lockup ETA). When `whitelistUsers` is supplied per tier, computes the merkle proof " +
181
- "for the user against that list. Read-only.", {
264
+ "lockup ETA, totalSold, on-chain merkle root). When `whitelists` is supplied per tier, " +
265
+ "computes the user's merkle proof against that list AND passes it into getUserViews — " +
266
+ "so `canParticipate` is accurate for merkle-gated tiers. Read-only.", {
182
267
  tokenSaleProposal: z.string(),
183
268
  tierIds: z.array(z.string()).min(1),
184
269
  user: z.string(),
@@ -207,23 +292,52 @@ export function registerOtcTools(server, ctx, signer) {
207
292
  const maxTier = tierIdNums.reduce((a, b) => (a > b ? a : b));
208
293
  const offset = (minTier - 1n).toString();
209
294
  const limit = (maxTier - minTier + 1n).toString();
210
- const calls = [
211
- {
212
- target: tokenSaleProposal,
213
- iface: TOKEN_SALE_ABI,
214
- method: "getTierViews",
215
- args: [BigInt(offset), BigInt(limit)],
216
- allowFailure: true,
217
- },
218
- {
219
- target: tokenSaleProposal,
220
- iface: TOKEN_SALE_ABI,
221
- method: "getUserViews",
222
- args: [userAddr, tierIdNums, tierIdNums.map(() => [])],
223
- allowFailure: true,
224
- },
225
- ];
226
295
  try {
296
+ // Pre-compute merkle proofs per tier BEFORE the reads — the contract's
297
+ // getUserViews takes bytes32[][] proofs, and canParticipate for
298
+ // MerkleWhitelist tiers is proof-dependent (empty proofs => false even
299
+ // for included users). Mirrors the frontend's useFetchMergedTierViews.
300
+ const whitelistByTier = new Map(whitelists.map((w) => [w.tierId, w.users]));
301
+ const merkleByTier = new Map();
302
+ for (const [tierId, wlUsers] of whitelistByTier) {
303
+ if (!wlUsers || wlUsers.length === 0)
304
+ continue;
305
+ const checksummed = wlUsers.map((u) => {
306
+ if (!isAddress(u))
307
+ throw new Error(`whitelist user invalid: ${u}`);
308
+ return getAddress(u);
309
+ });
310
+ const tree = buildAddressMerkleTree(checksummed);
311
+ const idx = checksummed.findIndex((a) => a.toLowerCase() === userAddr.toLowerCase());
312
+ if (idx >= 0) {
313
+ const leaf = computeLeafHash([userAddr], ["address"]);
314
+ const proof = tree.proofs[idx];
315
+ merkleByTier.set(tierId, {
316
+ root: tree.root,
317
+ proof,
318
+ included: verifyProof(proof, tree.root, leaf),
319
+ });
320
+ }
321
+ else {
322
+ merkleByTier.set(tierId, { root: tree.root, proof: [], included: false });
323
+ }
324
+ }
325
+ const calls = [
326
+ {
327
+ target: tokenSaleProposal,
328
+ iface: TOKEN_SALE_ABI,
329
+ method: "getTierViews",
330
+ args: [BigInt(offset), BigInt(limit)],
331
+ allowFailure: true,
332
+ },
333
+ {
334
+ target: tokenSaleProposal,
335
+ iface: TOKEN_SALE_ABI,
336
+ method: "getUserViews",
337
+ args: [userAddr, tierIdNums, tierIds.map((id) => merkleByTier.get(id)?.proof ?? [])],
338
+ allowFailure: true,
339
+ },
340
+ ];
227
341
  const res = await multicall(provider, calls);
228
342
  if (!res[0].success)
229
343
  return err(`getTierViews failed: ${res[0].error}`);
@@ -231,55 +345,64 @@ export function registerOtcTools(server, ctx, signer) {
231
345
  return err(`getUserViews failed: ${res[1].error}`);
232
346
  const tierViewsRange = res[0].value;
233
347
  const userViews = res[1].value;
234
- const whitelistByTier = new Map(whitelists.map((w) => [w.tierId, w.users]));
235
348
  const summaries = tierIds.map((tierIdStr, i) => {
236
349
  const tierIdx = Number(BigInt(tierIdStr) - minTier);
237
- const tier = tierViewsRange[tierIdx];
238
- if (!tier) {
350
+ // Contract returns nested TierView { tierInitParams, tierInfo,
351
+ // tierAdditionalInfo } — see TIER_VIEW_TUPLE.
352
+ const tv = tierViewsRange[tierIdx];
353
+ if (!tv) {
239
354
  return { tierId: tierIdStr, error: "tier not found in range" };
240
355
  }
356
+ const tier = tv.tierInitParams;
241
357
  const uv = userViews[i];
242
358
  if (!uv) {
243
359
  return { tierId: tierIdStr, error: "user view missing" };
244
360
  }
245
- // Surface participation requirements + compute merkle proof for user
246
- // when caller supplied a whitelist.
361
+ // Surface participation requirements; the merkle proof (if a
362
+ // whitelist was supplied) was already computed pre-read.
247
363
  const participation = tier.participationDetails.map((p) => ({
248
- type: PARTICIPATION_TYPE_NAMES[p.participationType] ?? `Unknown(${p.participationType})`,
364
+ type: PARTICIPATION_TYPE_NAMES[Number(p.participationType)] ??
365
+ `Unknown(${p.participationType})`,
249
366
  data: p.data,
250
367
  }));
251
- const wlList = whitelistByTier.get(tierIdStr);
252
- let merkle;
253
- if (wlList && wlList.length > 0) {
254
- const checksummed = wlList.map((u) => {
255
- if (!isAddress(u))
256
- throw new Error(`whitelist user invalid: ${u}`);
257
- return getAddress(u);
258
- });
259
- const tree = buildAddressMerkleTree(checksummed);
260
- const idx = checksummed.findIndex((a) => a.toLowerCase() === userAddr.toLowerCase());
261
- if (idx >= 0) {
262
- const leaf = computeLeafHash([userAddr], ["address"]);
263
- const proof = tree.proofs[idx];
264
- merkle = { root: tree.root, proof, included: verifyProof(proof, tree.root, leaf) };
265
- }
266
- else {
267
- merkle = { root: tree.root, proof: [], included: false };
368
+ const onchainMerkleRoot = tv.tierAdditionalInfo.merkleRoot === ZeroHash
369
+ ? null
370
+ : tv.tierAdditionalInfo.merkleRoot;
371
+ const merkleLocal = merkleByTier.get(tierIdStr);
372
+ const merkle = merkleLocal
373
+ ? {
374
+ ...merkleLocal,
375
+ onchainRoot: onchainMerkleRoot,
376
+ // Guards against a stale/foreign whitelist: the proof only
377
+ // works on-chain when the roots match.
378
+ rootMatchesOnchain: onchainMerkleRoot === null
379
+ ? null
380
+ : merkleLocal.root.toLowerCase() === onchainMerkleRoot.toLowerCase(),
268
381
  }
269
- }
382
+ : undefined;
270
383
  return {
271
384
  tierId: tierIdStr,
272
- metadata: tier.metadata,
385
+ metadata: { name: tier.metadata.name, description: tier.metadata.description },
273
386
  saleTokenAddress: tier.saleTokenAddress,
274
387
  saleStartTime: tier.saleStartTime,
275
388
  saleEndTime: tier.saleEndTime,
276
389
  totalTokenProvided: tier.totalTokenProvided,
277
- purchaseTokenAddresses: tier.purchaseTokenAddresses,
278
- exchangeRates: tier.exchangeRates,
390
+ totalSold: tv.tierInfo.totalSold,
391
+ isOff: tv.tierInfo.isOff,
392
+ tierUri: tv.tierInfo.uri || null,
393
+ onchainMerkleRoot,
394
+ merkleUri: tv.tierAdditionalInfo.merkleUri || null,
395
+ purchaseTokenAddresses: [...tier.purchaseTokenAddresses],
396
+ exchangeRates: [...tier.exchangeRates],
279
397
  minAllocationPerUser: tier.minAllocationPerUser,
280
398
  maxAllocationPerUser: tier.maxAllocationPerUser,
281
399
  claimLockDuration: tier.claimLockDuration,
282
- vestingSettings: tier.vestingSettings,
400
+ vestingSettings: {
401
+ vestingPercentage: tier.vestingSettings.vestingPercentage,
402
+ vestingDuration: tier.vestingSettings.vestingDuration,
403
+ cliffPeriod: tier.vestingSettings.cliffPeriod,
404
+ unlockStep: tier.vestingSettings.unlockStep,
405
+ },
283
406
  participation,
284
407
  user: {
285
408
  canParticipate: uv.canParticipate,
@@ -316,7 +439,10 @@ export function registerOtcTools(server, ctx, signer) {
316
439
  .optional()
317
440
  .describe("Target chain id. Defaults to the MCP's default chain."),
318
441
  tierId: z.string(),
319
- tokenToBuyWith: z.string().describe("Payment token; use 0x000...000 for native BNB"),
442
+ tokenToBuyWith: z
443
+ .string()
444
+ .describe("Payment token; for native BNB pass 0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE (protocol ETHEREUM_ADDRESS). " +
445
+ "The zero address is accepted as an alias, but calldata always carries ETHEREUM_ADDRESS — the contract keys exchange rates by it."),
320
446
  amount: z
321
447
  .string()
322
448
  .describe("Amount to spend, as an 18-decimal-normalized quantity. On-chain buy() converts it via from18Safe(token) to the payment token's native decimals: for an 18-decimal token this equals raw wei; for a token with d<18 decimals pass rawAmount * 10^(18-d). Passing raw native wei for a non-18-decimal token under-pays by 10^(18-d)."),
@@ -340,6 +466,10 @@ export function registerOtcTools(server, ctx, signer) {
340
466
  const tierIdBn = parseUintString(input.tierId, "tierId");
341
467
  const amountBn = parseUintString(input.amount, "amount");
342
468
  const native = isNativeSentinel(input.tokenToBuyWith);
469
+ // Contract-canonical payment token: native buys MUST carry
470
+ // ETHEREUM_ADDRESS (0xEeee…EEeE) — the zero address reverts on-chain
471
+ // with "TSP: incorrect token".
472
+ const tokenArg = native ? ETHEREUM_ADDRESS : getAddress(input.tokenToBuyWith);
343
473
  // Compute proof from whitelistUsers if needed.
344
474
  let proof = input.proof;
345
475
  if (proof.length === 0 && input.whitelistUsers.length > 0) {
@@ -369,14 +499,14 @@ export function registerOtcTools(server, ctx, signer) {
369
499
  if (!native) {
370
500
  const calls = [
371
501
  {
372
- target: input.tokenToBuyWith,
502
+ target: tokenArg,
373
503
  iface: ERC20_ABI,
374
504
  method: "balanceOf",
375
505
  args: [userAddr],
376
506
  allowFailure: true,
377
507
  },
378
508
  {
379
- target: input.tokenToBuyWith,
509
+ target: tokenArg,
380
510
  iface: ERC20_ABI,
381
511
  method: "allowance",
382
512
  args: [userAddr, input.tokenSaleProposal],
@@ -390,7 +520,7 @@ export function registerOtcTools(server, ctx, signer) {
390
520
  return err(`Insufficient ${input.tokenToBuyWith} balance: have ${balance}, need ${amountBn}.`);
391
521
  }
392
522
  if (allowance < amountBn) {
393
- payloads.push(buildExactApproval(input.tokenToBuyWith, input.tokenSaleProposal, amountBn, chainId));
523
+ payloads.push(buildExactApproval(tokenArg, input.tokenSaleProposal, amountBn, chainId));
394
524
  }
395
525
  else {
396
526
  skipped.push({ label: "ERC20.approve", reason: "Allowance sufficient" });
@@ -399,7 +529,7 @@ export function registerOtcTools(server, ctx, signer) {
399
529
  // buy()
400
530
  const buyData = TOKEN_SALE_ABI.encodeFunctionData("buy", [
401
531
  tierIdBn,
402
- input.tokenToBuyWith,
532
+ tokenArg,
403
533
  amountBn,
404
534
  proof,
405
535
  ]);
@@ -408,7 +538,7 @@ export function registerOtcTools(server, ctx, signer) {
408
538
  data: buyData,
409
539
  value: native ? amountBn.toString() : "0",
410
540
  chainId,
411
- description: `TokenSaleProposal.buy(tier=${tierIdBn}, ${native ? "native" : input.tokenToBuyWith}, ${amountBn})`,
541
+ description: `TokenSaleProposal.buy(tier=${tierIdBn}, ${native ? `native (${ETHEREUM_ADDRESS})` : tokenArg}, ${amountBn})`,
412
542
  });
413
543
  // Optional simulation gate: preflight the buy() against live state before
414
544
  // we ever touch the broadcast path. Skipped on dryRun since dryRun
@@ -1 +1 @@
1
- {"version":3,"file":"otc.js","sourceRoot":"","sources":["../../src/tools/otc.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,SAAS,EAAE,WAAW,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,QAAQ,CAAC;AAIvE,OAAO,EAAE,WAAW,EAAE,MAAM,WAAW,CAAC;AACxC,OAAO,EAAE,SAAS,EAAa,MAAM,qBAAqB,CAAC;AAE3D,OAAO,EAAE,iBAAiB,EAAE,aAAa,EAA4B,MAAM,WAAW,CAAC;AACvF,OAAO,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAC5C,OAAO,EACL,0BAA0B,EAC1B,UAAU,GACX,MAAM,2BAA2B,CAAC;AACnC,OAAO,EACL,sBAAsB,EACtB,eAAe,EACf,WAAW,GACZ,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAC;AACjD,OAAO,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AAEnD,SAAS,WAAW,CAAC,OAAe;IAClC,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAe,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;AAChF,CAAC;AAED,sCAAsC;AAEtC,MAAM,SAAS,GAAG,IAAI,SAAS,CAAC;IAC9B,oDAAoD;IACpD,2EAA2E;IAC3E,kEAAkE;CACnE,CAAC,CAAC;AAEH,MAAM,cAAc,GAAG,IAAI,SAAS,CAAC;IACnC,gDAAgD;IAChD,+iBAA+iB;IAC/iB,4oBAA4oB;IAC5oB,+FAA+F;IAC/F,mCAAmC;IACnC,6CAA6C;CAC9C,CAAC,CAAC;AAEH,MAAM,wBAAwB,GAAG;IAC/B,UAAU;IACV,WAAW;IACX,MAAM;IACN,WAAW;IACX,SAAS;IACT,iBAAiB;CACT,CAAC;AAEX,gCAAgC;AAEhC,SAAS,GAAG,CAAC,OAAe;IAC1B,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAe,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;AAChF,CAAC;AAED,SAAS,EAAE,CAAC,IAA6B;IACvC,OAAO;QACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAe,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,cAAc,EAAE,CAAC,CAAC,EAAE,CAAC;KACpF,CAAC;AACJ,CAAC;AAED,SAAS,cAAc,CAAC,EAAU,EAAE,CAAU;IAC5C,OAAO,OAAO,CAAC,KAAK,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;AAClD,CAAC;AAED,SAAS,gBAAgB,CAAC,IAAY;IACpC,OAAO,IAAI,CAAC,WAAW,EAAE,KAAK,WAAW,CAAC,WAAW,EAAE,CAAC;AAC1D,CAAC;AAED;;;;;;;;;GASG;AACH,MAAM,UAAU,kBAAkB,CAChC,YAAoB,EACpB,iBAAyB,EACzB,MAAc,EACd,OAAe;IAEf,OAAO;QACL,EAAE,EAAE,YAAY;QAChB,IAAI,EAAE,SAAS,CAAC,kBAAkB,CAAC,SAAS,EAAE,CAAC,iBAAiB,EAAE,MAAM,CAAC,CAAC;QAC1E,KAAK,EAAE,GAAG;QACV,OAAO;QACP,WAAW,EAAE,iBAAiB,iBAAiB,KAAK,MAAM,GAAG;KAC9D,CAAC;AACJ,CAAC;AAED,iCAAiC;AAEjC,MAAM,UAAU,gBAAgB,CAC9B,MAAiB,EACjB,GAAgB,EAChB,MAAqB;IAErB,MAAM,GAAG,GAAG,IAAI,WAAW,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;IAExC,gDAAgD;IAChD,yBAAyB;IACzB,gDAAgD;IAChD,MAAM,CAAC,IAAI,CACT,wBAAwB,EACxB,iFAAiF;QAC/E,sFAAsF;QACtF,qFAAqF;QACrF,mFAAmF;QACnF,0DAA0D;QAC1D,gFAAgF;QAChF,kFAAkF;QAClF,+DAA+D,EACjE;QACE,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,iBAAiB,CAAC;QAC/C,OAAO,EAAE,CAAC;aACP,MAAM,EAAE;aACR,GAAG,EAAE;aACL,QAAQ,EAAE;aACV,QAAQ,EAAE;aACV,QAAQ,CAAC,uDAAuD,CAAC;QACpE,iBAAiB,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,kCAAkC,CAAC;QAC1E,KAAK,EAAE,CAAC,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;QACjC,YAAY,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC;QACrC,YAAY,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,OAAO,CAAC,qBAAqB,CAAC;QACvD,mBAAmB,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC;QAC3C,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;QACjC,UAAU,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC;QAC3C,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;QAC3B,MAAM,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,QAAQ,CAAC,uEAAuE,CAAC;QACpH,SAAS,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,QAAQ,CAAC,wJAAwJ,CAAC;KACzM,EACD,KAAK,EAAE,KAAK,EAAE,EAAE;QACd,IAAI,CAAC;YACH,MAAM,KAAK,GAAG,0BAA0B,CAAC;gBACvC,iBAAiB,EAAE,KAAK,CAAC,iBAAiB;gBAC1C,KAAK,EAAE,KAAK,CAAC,KAAK;gBAClB,YAAY,EAAE,KAAK,CAAC,YAAY;gBAChC,YAAY,EAAE,KAAK,CAAC,YAAY;gBAChC,mBAAmB,EAAE,KAAK,CAAC,mBAAmB;aAC/C,CAAC,CAAC;YAEH,IAAI,KAAK,CAAC,SAAS,EAAE,CAAC;gBACpB,OAAO,EAAE,CAAC;oBACR,IAAI,EAAE,WAAW;oBACjB,GAAG,EAAE;wBACH,iBAAiB,EAAE,KAAK,CAAC,iBAAiB;wBAC1C,SAAS,EAAE,KAAK,CAAC,KAAK,CAAC,MAAM;wBAC7B,SAAS,EAAE,KAAK,CAAC,SAAS;wBAC1B,kBAAkB,EAAE,KAAK,CAAC,kBAAkB;wBAC5C,iBAAiB,EAAE,KAAK,CAAC,iBAAiB;wBAC1C,mBAAmB,EAAE,KAAK,CAAC,KAAK,CAAC,GAAG,CAClC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,eAAe,CAAC,KAAK,CAAC,YAAY,EAAE,cAAc,CAAC,GAAG,EAAE,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE,CAC5F;qBACF;oBACD,QAAQ,EAAE,KAAK,CAAC,QAAQ;oBACxB,OAAO,EAAE,KAAK,CAAC,OAAO;iBACvB,CAAC,CAAC;YACL,CAAC;YAED,6DAA6D;YAC7D,mEAAmE;YACnE,6CAA6C;YAC7C,MAAM,YAAY,GAAI,KAAK,CAAC,QAAkC,CAAC,OAAO,CAAC;YACvE,MAAM,aAAa,GAAwB;gBACzC,OAAO,EAAE,KAAK,CAAC,OAAO;gBACtB,OAAO,EAAE,KAAK,CAAC,OAAO;gBACtB,YAAY,EAAE,QAAQ;gBACtB,KAAK,EAAE,KAAK,CAAC,YAAY;gBACzB,WAAW,EAAE,KAAK,CAAC,mBAAmB;gBACtC,YAAY,EAAE,KAAK,CAAC,OAAO;gBAC3B,QAAQ,EAAE,WAAW;gBACrB,qBAAqB,EAAE;oBACrB,MAAM,EAAE,KAAK;oBACb,GAAG,CAAC,YAAY,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,YAAY,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;iBACnD;gBACD,UAAU,EAAE,KAAK,CAAC,UAAU;gBAC5B,UAAU,EAAE,KAAK,CAAC,UAAU;gBAC5B,IAAI,EAAE,KAAK,CAAC,IAAI;gBAChB,MAAM,EAAE,KAAK,CAAC,MAAM;aACrB,CAAC;YACF,MAAM,MAAM,GAAG,MAAM,iBAAiB,CAAC,aAAa,EAAE,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC,CAAC;YAE5E,sEAAsE;YACtE,sEAAsE;YACtE,sEAAsE;YACtE,IAAI,UAAU,GAA4B,EAAE,CAAC;YAC7C,IAAI,CAAC;gBACH,MAAM,GAAG,GAAG,MAAM,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,IAAI,IAAI,IAAI,CAAC;gBAC9C,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAA4B,CAAC;YAC1D,CAAC;YAAC,MAAM,CAAC;gBACP,qEAAqE;gBACrE,OAAO,MAAM,CAAC;YAChB,CAAC;YAED,OAAO,EAAE,CAAC;gBACR,GAAG,UAAU;gBACb,GAAG,EAAE;oBACH,iBAAiB,EAAE,KAAK,CAAC,iBAAiB;oBAC1C,SAAS,EAAE,KAAK,CAAC,KAAK,CAAC,MAAM;oBAC7B,SAAS,EAAE,KAAK,CAAC,SAAS;oBAC1B,kBAAkB,EAAE,KAAK,CAAC,kBAAkB;oBAC5C,iBAAiB,EAAE,KAAK,CAAC,iBAAiB;oBAC1C,mBAAmB,EAAE,KAAK,CAAC,KAAK,CAAC,GAAG,CAClC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,eAAe,CAAC,KAAK,CAAC,YAAY,EAAE,cAAc,CAAC,GAAG,EAAE,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE,CAC5F;iBACF;aACF,CAAC,CAAC;QACL,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACX,OAAO,GAAG,CAAC,CAAC,YAAY,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;QACzD,CAAC;IACH,CAAC,CACF,CAAC;IAEF,gDAAgD;IAChD,wBAAwB;IACxB,gDAAgD;IAChD,MAAM,CAAC,IAAI,CACT,uBAAuB,EACvB,qFAAqF;QACnF,oFAAoF;QACpF,qFAAqF;QACrF,4CAA4C,EAC9C;QACE,iBAAiB,EAAE,CAAC,CAAC,MAAM,EAAE;QAC7B,OAAO,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;QACnC,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE;QAChB,UAAU,EAAE,CAAC;aACV,KAAK,CACJ,CAAC,CAAC,MAAM,CAAC;YACP,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE;YAClB,KAAK,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;SAClC,CAAC,CACH;aACA,OAAO,CAAC,EAAE,CAAC;aACX,QAAQ,CAAC,qEAAqE,CAAC;KACnF,EACD,KAAK,EAAE,EAAE,iBAAiB,EAAE,OAAO,EAAE,IAAI,EAAE,UAAU,EAAE,EAAE,EAAE;QACzD,IAAI,CAAC,SAAS,CAAC,iBAAiB,CAAC;YAAE,OAAO,GAAG,CAAC,8BAA8B,iBAAiB,EAAE,CAAC,CAAC;QACjG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC;YAAE,OAAO,GAAG,CAAC,iBAAiB,IAAI,EAAE,CAAC,CAAC;QAC1D,MAAM,EAAE,GAAG,GAAG,CAAC,WAAW,EAAE,CAAC;QAC7B,IAAI,OAAO,IAAI,EAAE;YAAE,OAAO,WAAW,CAAC,GAAG,EAAE,CAAC,KAAK,KAAK,EAAE,CAAC,WAAW,EAAE,CAAC,CAAC;QACxE,MAAM,QAAQ,GAAG,EAAE,CAAC,EAAE,CAAC;QACvB,MAAM,QAAQ,GAAG,UAAU,CAAC,IAAI,CAAC,CAAC;QAElC,qEAAqE;QACrE,2EAA2E;QAC3E,uDAAuD;QACvD,MAAM,UAAU,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,eAAe,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC,CAAC;QACpE,MAAM,OAAO,GAAG,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QAC7D,MAAM,OAAO,GAAG,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QAC7D,MAAM,MAAM,GAAG,CAAC,OAAO,GAAG,EAAE,CAAC,CAAC,QAAQ,EAAE,CAAC;QACzC,MAAM,KAAK,GAAG,CAAC,OAAO,GAAG,OAAO,GAAG,EAAE,CAAC,CAAC,QAAQ,EAAE,CAAC;QAElD,MAAM,KAAK,GAAW;YACpB;gBACE,MAAM,EAAE,iBAAiB;gBACzB,KAAK,EAAE,cAAc;gBACrB,MAAM,EAAE,cAAc;gBACtB,IAAI,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC;gBACrC,YAAY,EAAE,IAAI;aACnB;YACD;gBACE,MAAM,EAAE,iBAAiB;gBACzB,KAAK,EAAE,cAAc;gBACrB,MAAM,EAAE,cAAc;gBACtB,IAAI,EAAE,CAAC,QAAQ,EAAE,UAAU,EAAE,UAAU,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC;gBACtD,YAAY,EAAE,IAAI;aACnB;SACF,CAAC;QAEF,IAAI,CAAC;YACH,MAAM,GAAG,GAAG,MAAM,SAAS,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC;YAC7C,IAAI,CAAC,GAAG,CAAC,CAAC,CAAE,CAAC,OAAO;gBAAE,OAAO,GAAG,CAAC,wBAAwB,GAAG,CAAC,CAAC,CAAE,CAAC,KAAK,EAAE,CAAC,CAAC;YAC1E,IAAI,CAAC,GAAG,CAAC,CAAC,CAAE,CAAC,OAAO;gBAAE,OAAO,GAAG,CAAC,wBAAwB,GAAG,CAAC,CAAC,CAAE,CAAC,KAAK,EAAE,CAAC,CAAC;YAE1E,MAAM,cAAc,GAAG,GAAG,CAAC,CAAC,CAAE,CAAC,KAA6B,CAAC;YAC7D,MAAM,SAAS,GAAG,GAAG,CAAC,CAAC,CAAE,CAAC,KAA6B,CAAC;YAExD,MAAM,eAAe,GAAG,IAAI,GAAG,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;YAE5E,MAAM,SAAS,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,SAAS,EAAE,CAAC,EAAE,EAAE;gBAC7C,MAAM,OAAO,GAAG,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,GAAG,OAAO,CAAC,CAAC;gBACpD,MAAM,IAAI,GAAG,cAAc,CAAC,OAAO,CAoB9B,CAAC;gBACN,IAAI,CAAC,IAAI,EAAE,CAAC;oBACV,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,KAAK,EAAE,yBAAyB,EAAE,CAAC;gBACjE,CAAC;gBAED,MAAM,EAAE,GAAG,SAAS,CAAC,CAAC,CAmBjB,CAAC;gBACN,IAAI,CAAC,EAAE,EAAE,CAAC;oBACR,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,KAAK,EAAE,mBAAmB,EAAE,CAAC;gBAC3D,CAAC;gBAED,qEAAqE;gBACrE,oCAAoC;gBACpC,MAAM,aAAa,GAAG,IAAI,CAAC,oBAAoB,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;oBAC1D,IAAI,EAAE,wBAAwB,CAAC,CAAC,CAAC,iBAAiB,CAAC,IAAI,WAAW,CAAC,CAAC,iBAAiB,GAAG;oBACxF,IAAI,EAAE,CAAC,CAAC,IAAI;iBACb,CAAC,CAAC,CAAC;gBAEJ,MAAM,MAAM,GAAG,eAAe,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;gBAC9C,IAAI,MAAwE,CAAC;gBAC7E,IAAI,MAAM,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;oBAChC,MAAM,WAAW,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE;wBACnC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC;4BAAE,MAAM,IAAI,KAAK,CAAC,2BAA2B,CAAC,EAAE,CAAC,CAAC;wBACnE,OAAO,UAAU,CAAC,CAAC,CAAC,CAAC;oBACvB,CAAC,CAAC,CAAC;oBACH,MAAM,IAAI,GAAG,sBAAsB,CAAC,WAAW,CAAC,CAAC;oBACjD,MAAM,GAAG,GAAG,WAAW,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,WAAW,EAAE,KAAK,QAAQ,CAAC,WAAW,EAAE,CAAC,CAAC;oBACrF,IAAI,GAAG,IAAI,CAAC,EAAE,CAAC;wBACb,MAAM,IAAI,GAAG,eAAe,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC;wBACtD,MAAM,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,CAAE,CAAC;wBAChC,MAAM,GAAG,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,KAAK,EAAE,QAAQ,EAAE,WAAW,CAAC,KAAK,EAAE,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,EAAE,CAAC;oBACrF,CAAC;yBAAM,CAAC;wBACN,MAAM,GAAG,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC;oBAC3D,CAAC;gBACH,CAAC;gBAED,OAAO;oBACL,MAAM,EAAE,SAAS;oBACjB,QAAQ,EAAE,IAAI,CAAC,QAAQ;oBACvB,gBAAgB,EAAE,IAAI,CAAC,gBAAgB;oBACvC,aAAa,EAAE,IAAI,CAAC,aAAa;oBACjC,WAAW,EAAE,IAAI,CAAC,WAAW;oBAC7B,kBAAkB,EAAE,IAAI,CAAC,kBAAkB;oBAC3C,sBAAsB,EAAE,IAAI,CAAC,sBAAsB;oBACnD,aAAa,EAAE,IAAI,CAAC,aAAa;oBACjC,oBAAoB,EAAE,IAAI,CAAC,oBAAoB;oBAC/C,oBAAoB,EAAE,IAAI,CAAC,oBAAoB;oBAC/C,iBAAiB,EAAE,IAAI,CAAC,iBAAiB;oBACzC,eAAe,EAAE,IAAI,CAAC,eAAe;oBACrC,aAAa;oBACb,IAAI,EAAE;wBACJ,cAAc,EAAE,EAAE,CAAC,cAAc;wBACjC,QAAQ,EAAE,EAAE,CAAC,YAAY;wBACzB,OAAO,EAAE,EAAE,CAAC,eAAe;wBAC3B,SAAS,EACP,EAAE,CAAC,YAAY,CAAC,QAAQ,IAAI,CAAC,EAAE,CAAC,YAAY,CAAC,SAAS;4BACpD,CAAC,CAAC,EAAE,CAAC,YAAY,CAAC,gBAAgB;4BAClC,CAAC,CAAC,EAAE;wBACR,mBAAmB,EAAE,EAAE,CAAC,eAAe,CAAC,gBAAgB;qBACzD;oBACD,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;iBAC9B,CAAC;YACJ,CAAC,CAAC,CAAC;YAEH,OAAO,EAAE,CAAC,EAAE,iBAAiB,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,SAAS,EAAE,CAAC,CAAC;QACrE,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACX,OAAO,GAAG,CAAC,CAAC,YAAY,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;QACzD,CAAC;IACH,CAAC,CACF,CAAC;IAEF,gDAAgD;IAChD,qBAAqB;IACrB,gDAAgD;IAChD,MAAM,CAAC,IAAI,CACT,oBAAoB,EACpB,uFAAuF;QACrF,uGAAuG;QACvG,iFAAiF;QACjF,gFAAgF;QAChF,6FAA6F;QAC7F,iBAAiB,EACnB;QACE,iBAAiB,EAAE,CAAC,CAAC,MAAM,EAAE;QAC7B,OAAO,EAAE,CAAC;aACP,MAAM,EAAE;aACR,GAAG,EAAE;aACL,QAAQ,EAAE;aACV,QAAQ,EAAE;aACV,QAAQ,CAAC,uDAAuD,CAAC;QACpE,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE;QAClB,cAAc,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,+CAA+C,CAAC;QACpF,MAAM,EAAE,CAAC;aACN,MAAM,EAAE;aACR,QAAQ,CACP,oUAAoU,CACrU;QACH,KAAK,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC;QACtC,cAAc,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,kCAAkC,CAAC;QAC5F,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;QAC3B,MAAM,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,QAAQ,CAAC,uEAAuE,CAAC;QACpH,aAAa,EAAE,CAAC;aACb,OAAO,EAAE;aACT,OAAO,CAAC,KAAK,CAAC;aACd,QAAQ,CACP,6HAA6H,CAC9H;KACJ,EACD,KAAK,EAAE,KAAK,EAAE,EAAE;QACd,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,iBAAiB,CAAC;YAAE,OAAO,GAAG,CAAC,2BAA2B,CAAC,CAAC;QACjF,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,cAAc,CAAC;YAAE,OAAO,GAAG,CAAC,wBAAwB,CAAC,CAAC;QAE3E,MAAM,YAAY,GAChB,KAAK,CAAC,IAAI,IAAI,CAAC,MAAM,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;QACvE,IAAI,CAAC,YAAY;YAAE,OAAO,GAAG,CAAC,yCAAyC,CAAC,CAAC;QAEzE,MAAM,QAAQ,GAAG,UAAU,CAAC,YAAY,CAAC,CAAC;QAC1C,MAAM,QAAQ,GAAG,eAAe,CAAC,KAAK,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;QACzD,MAAM,QAAQ,GAAG,eAAe,CAAC,KAAK,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;QACzD,MAAM,MAAM,GAAG,gBAAgB,CAAC,KAAK,CAAC,cAAc,CAAC,CAAC;QAEtD,+CAA+C;QAC/C,IAAI,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC;QACxB,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,IAAI,KAAK,CAAC,cAAc,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC1D,MAAM,WAAW,GAAG,KAAK,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE;gBACjD,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC;oBAAE,MAAM,IAAI,KAAK,CAAC,2BAA2B,CAAC,EAAE,CAAC,CAAC;gBACnE,OAAO,UAAU,CAAC,CAAC,CAAC,CAAC;YACvB,CAAC,CAAC,CAAC;YACH,MAAM,IAAI,GAAG,sBAAsB,CAAC,WAAW,CAAC,CAAC;YACjD,MAAM,GAAG,GAAG,WAAW,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,WAAW,EAAE,KAAK,QAAQ,CAAC,WAAW,EAAE,CAAC,CAAC;YACrF,IAAI,GAAG,GAAG,CAAC;gBAAE,OAAO,GAAG,CAAC,QAAQ,QAAQ,sBAAsB,WAAW,CAAC,MAAM,YAAY,CAAC,CAAC;YAC9F,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,CAAE,CAAC;QAC5B,CAAC;QAED,MAAM,KAAK,GAAG,YAAY,CAAC,GAAG,CAAC,MAAM,EAAE,KAAK,CAAC,OAAO,CAAC,CAAC;QACtD,MAAM,OAAO,GAAG,KAAK,CAAC,OAAO,CAAC;QAC9B,MAAM,GAAG,GAAG,GAAG,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;QACrC,IAAI,OAAO,IAAI,GAAG;YAAE,OAAO,WAAW,CAAC,GAAG,GAAG,CAAC,KAAK,KAAK,GAAG,CAAC,WAAW,EAAE,CAAC,CAAC;QAC3E,MAAM,QAAQ,GAAG,GAAG,CAAC,EAAE,CAAC;QACxB,MAAM,QAAQ,GAAgB,EAAE,CAAC;QACjC,MAAM,OAAO,GAAwC,EAAE,CAAC;QAExD,iEAAiE;QACjE,uEAAuE;QACvE,IAAI,OAAO,GAAG,EAAE,CAAC;QACjB,IAAI,SAAS,GAAG,EAAE,CAAC;QACnB,IAAI,CAAC,MAAM,EAAE,CAAC;YACZ,MAAM,KAAK,GAAW;gBACpB;oBACE,MAAM,EAAE,KAAK,CAAC,cAAc;oBAC5B,KAAK,EAAE,SAAS;oBAChB,MAAM,EAAE,WAAW;oBACnB,IAAI,EAAE,CAAC,QAAQ,CAAC;oBAChB,YAAY,EAAE,IAAI;iBACnB;gBACD;oBACE,MAAM,EAAE,KAAK,CAAC,cAAc;oBAC5B,KAAK,EAAE,SAAS;oBAChB,MAAM,EAAE,WAAW;oBACnB,IAAI,EAAE,CAAC,QAAQ,EAAE,KAAK,CAAC,iBAAiB,CAAC;oBACzC,YAAY,EAAE,IAAI;iBACnB;aACF,CAAC;YACF,MAAM,GAAG,GAAG,MAAM,SAAS,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC;YAC7C,OAAO,GAAG,GAAG,CAAC,CAAC,CAAE,CAAC,OAAO,CAAC,CAAC,CAAE,GAAG,CAAC,CAAC,CAAE,CAAC,KAAgB,CAAC,CAAC,CAAC,EAAE,CAAC;YAC3D,SAAS,GAAG,GAAG,CAAC,CAAC,CAAE,CAAC,OAAO,CAAC,CAAC,CAAE,GAAG,CAAC,CAAC,CAAE,CAAC,KAAgB,CAAC,CAAC,CAAC,EAAE,CAAC;YAE7D,IAAI,CAAC,KAAK,CAAC,MAAM,IAAI,OAAO,GAAG,QAAQ,EAAE,CAAC;gBACxC,OAAO,GAAG,CACR,gBAAgB,KAAK,CAAC,cAAc,kBAAkB,OAAO,UAAU,QAAQ,GAAG,CACnF,CAAC;YACJ,CAAC;YAED,IAAI,SAAS,GAAG,QAAQ,EAAE,CAAC;gBACzB,QAAQ,CAAC,IAAI,CACX,kBAAkB,CAAC,KAAK,CAAC,cAAc,EAAE,KAAK,CAAC,iBAAiB,EAAE,QAAQ,EAAE,OAAO,CAAC,CACrF,CAAC;YACJ,CAAC;iBAAM,CAAC;gBACN,OAAO,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,eAAe,EAAE,MAAM,EAAE,sBAAsB,EAAE,CAAC,CAAC;YAC3E,CAAC;QACH,CAAC;QAED,QAAQ;QACR,MAAM,OAAO,GAAG,cAAc,CAAC,kBAAkB,CAAC,KAAK,EAAE;YACvD,QAAQ;YACR,KAAK,CAAC,cAAc;YACpB,QAAQ;YACR,KAAK;SACN,CAAC,CAAC;QACH,QAAQ,CAAC,IAAI,CAAC;YACZ,EAAE,EAAE,KAAK,CAAC,iBAAiB;YAC3B,IAAI,EAAE,OAAO;YACb,KAAK,EAAE,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,GAAG;YACzC,OAAO;YACP,WAAW,EAAE,8BAA8B,QAAQ,KAAK,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,cAAc,KAAK,QAAQ,GAAG;SACjH,CAAC,CAAC;QAEH,0EAA0E;QAC1E,mEAAmE;QACnE,4CAA4C;QAC5C,IAAI,UAAmB,CAAC;QACxB,IAAI,KAAK,CAAC,aAAa,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC;YACzC,MAAM,GAAG,GAAG,MAAM,gBAAgB,CAAC,GAAG,EAAE;gBACtC,EAAE,EAAE,KAAK,CAAC,iBAAiB;gBAC3B,IAAI,EAAE,OAAO;gBACb,KAAK,EAAE,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,SAAS;gBAC/C,IAAI,EAAE,QAAQ;aACf,CAAC,CAAC;YACH,UAAU,GAAG,GAAG,CAAC;YACjB,IAAI,CAAC,GAAG,CAAC,OAAO,EAAE,CAAC;gBACjB,OAAO,GAAG,CACR,uCAAuC,GAAG,CAAC,YAAY,IAAI,gBAAgB,EAAE,CAC9E,CAAC;YACJ,CAAC;QACH,CAAC;QAED,MAAM,MAAM,GAAG,MAAM,aAAa,CAAC,MAAM,EAAE,QAAQ,EAAE,EAAE,MAAM,EAAE,KAAK,CAAC,MAAM,EAAE,OAAO,EAAE,CAAC,CAAC;QAExF,OAAO,EAAE,CAAC;YACR,IAAI,EAAE,MAAM,CAAC,IAAI;YACjB,MAAM,EAAE,KAAK,CAAC,MAAM;YACpB,IAAI,EAAE,QAAQ;YACd,MAAM;YACN,MAAM,EAAE,QAAQ,CAAC,QAAQ,EAAE;YAC3B,WAAW,EAAE,KAAK,CAAC,MAAM;YACzB,SAAS,EAAE,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,OAAO,CAAC,QAAQ,EAAE,EAAE,SAAS,EAAE,SAAS,CAAC,QAAQ,EAAE,EAAE;YAC3F,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,UAAU,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YACrC,KAAK,EAAE,CAAC,GAAG,OAAO,EAAE,GAAG,MAAM,CAAC,KAAK,CAAC;SACrC,CAAC,CAAC;IACL,CAAC,CACF,CAAC;IAEF,gDAAgD;IAChD,2BAA2B;IAC3B,gDAAgD;IAChD,MAAM,CAAC,IAAI,CACT,0BAA0B,EAC1B,iFAAiF;QAC/E,yEAAyE;QACzE,sFAAsF;QACtF,2FAA2F,EAC7F;QACE,iBAAiB,EAAE,CAAC,CAAC,MAAM,EAAE;QAC7B,OAAO,EAAE,CAAC;aACP,MAAM,EAAE;aACR,GAAG,EAAE;aACL,QAAQ,EAAE;aACV,QAAQ,EAAE;aACV,QAAQ,CAAC,uDAAuD,CAAC;QACpE,OAAO,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;QACnC,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;QAC3B,MAAM,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,QAAQ,CAAC,uEAAuE,CAAC;KACrH,EACD,KAAK,EAAE,KAAK,EAAE,EAAE;QACd,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,iBAAiB,CAAC;YAAE,OAAO,GAAG,CAAC,2BAA2B,CAAC,CAAC;QACjF,MAAM,YAAY,GAChB,KAAK,CAAC,IAAI,IAAI,CAAC,MAAM,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;QACvE,IAAI,CAAC,YAAY;YAAE,OAAO,GAAG,CAAC,yCAAyC,CAAC,CAAC;QAEzE,MAAM,QAAQ,GAAG,UAAU,CAAC,YAAY,CAAC,CAAC;QAC1C,MAAM,SAAS,GAAG,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,eAAe,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC,CAAC;QAEzE,MAAM,KAAK,GAAG,YAAY,CAAC,GAAG,CAAC,MAAM,EAAE,KAAK,CAAC,OAAO,CAAC,CAAC;QACtD,MAAM,OAAO,GAAG,KAAK,CAAC,OAAO,CAAC;QAC9B,MAAM,GAAG,GAAG,GAAG,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;QACrC,IAAI,OAAO,IAAI,GAAG;YAAE,OAAO,WAAW,CAAC,GAAG,GAAG,CAAC,KAAK,KAAK,GAAG,CAAC,WAAW,EAAE,CAAC,CAAC;QAC3E,MAAM,QAAQ,GAAG,GAAG,CAAC,EAAE,CAAC;QAExB,MAAM,GAAG,GAAG,MAAM,SAAS,CAAC,QAAQ,EAAE;YACpC;gBACE,MAAM,EAAE,KAAK,CAAC,iBAAiB;gBAC/B,KAAK,EAAE,cAAc;gBACrB,MAAM,EAAE,cAAc;gBACtB,IAAI,EAAE,CAAC,QAAQ,EAAE,SAAS,EAAE,SAAS,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC;gBACpD,YAAY,EAAE,IAAI;aACnB;SACF,CAAC,CAAC;QACH,IAAI,CAAC,GAAG,CAAC,CAAC,CAAE,CAAC,OAAO;YAAE,OAAO,GAAG,CAAC,wBAAwB,GAAG,CAAC,CAAC,CAAE,CAAC,KAAK,EAAE,CAAC,CAAC;QAE1E,MAAM,SAAS,GAAG,GAAG,CAAC,CAAC,CAAE,CAAC,KAA6B,CAAC;QAExD,MAAM,SAAS,GAAa,EAAE,CAAC;QAC/B,MAAM,YAAY,GAAa,EAAE,CAAC;QAClC,MAAM,OAAO,GAAG,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;YAC9C,MAAM,EAAE,GAAG,SAAS,CAAC,CAAC,CASjB,CAAC;YACN,MAAM,CAAC,GACL,EAAE,EAAE,YAAY,EAAE,QAAQ,IAAI,CAAC,EAAE,EAAE,YAAY,EAAE,SAAS;gBACxD,CAAC,CAAC,EAAE,CAAC,YAAY,CAAC,gBAAgB;gBAClC,CAAC,CAAC,EAAE,CAAC;YACT,MAAM,CAAC,GAAG,EAAE,EAAE,eAAe,EAAE,gBAAgB,IAAI,EAAE,CAAC;YACtD,IAAI,CAAC,GAAG,EAAE;gBAAE,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;YACnC,IAAI,CAAC,GAAG,EAAE;gBAAE,YAAY,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;YACtC,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,CAAC,CAAC,QAAQ,EAAE,EAAE,mBAAmB,EAAE,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC;QAChF,CAAC,CAAC,CAAC;QAEH,MAAM,QAAQ,GAAgB,EAAE,CAAC;QACjC,MAAM,OAAO,GAAwC,EAAE,CAAC;QAExD,IAAI,SAAS,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC3B,OAAO,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,yBAAyB,EAAE,MAAM,EAAE,mCAAmC,EAAE,CAAC,CAAC;QAClG,CAAC;aAAM,CAAC;YACN,QAAQ,CAAC,IAAI,CAAC;gBACZ,EAAE,EAAE,KAAK,CAAC,iBAAiB;gBAC3B,IAAI,EAAE,cAAc,CAAC,kBAAkB,CAAC,OAAO,EAAE,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;gBACnF,KAAK,EAAE,GAAG;gBACV,OAAO;gBACP,WAAW,EAAE,4BAA4B,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI;aACjE,CAAC,CAAC;QACL,CAAC;QAED,IAAI,YAAY,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC9B,OAAO,CAAC,IAAI,CAAC;gBACX,KAAK,EAAE,mCAAmC;gBAC1C,MAAM,EAAE,yCAAyC;aAClD,CAAC,CAAC;QACL,CAAC;aAAM,CAAC;YACN,QAAQ,CAAC,IAAI,CAAC;gBACZ,EAAE,EAAE,KAAK,CAAC,iBAAiB;gBAC3B,IAAI,EAAE,cAAc,CAAC,kBAAkB,CAAC,iBAAiB,EAAE;oBACzD,YAAY,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;iBACnC,CAAC;gBACF,KAAK,EAAE,GAAG;gBACV,OAAO;gBACP,WAAW,EAAE,sCAAsC,YAAY,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI;aAC9E,CAAC,CAAC;QACL,CAAC;QAED,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC1B,OAAO,EAAE,CAAC;gBACR,IAAI,EAAE,MAAM;gBACZ,IAAI,EAAE,QAAQ;gBACd,iBAAiB,EAAE,KAAK,CAAC,iBAAiB;gBAC1C,OAAO;gBACP,KAAK,EAAE,OAAO;aACf,CAAC,CAAC;QACL,CAAC;QAED,MAAM,MAAM,GAAG,MAAM,aAAa,CAAC,MAAM,EAAE,QAAQ,EAAE,EAAE,MAAM,EAAE,KAAK,CAAC,MAAM,EAAE,OAAO,EAAE,CAAC,CAAC;QAExF,OAAO,EAAE,CAAC;YACR,IAAI,EAAE,MAAM,CAAC,IAAI;YACjB,IAAI,EAAE,QAAQ;YACd,iBAAiB,EAAE,KAAK,CAAC,iBAAiB;YAC1C,cAAc,EAAE,SAAS;YACzB,sBAAsB,EAAE,YAAY;YACpC,OAAO;YACP,KAAK,EAAE,CAAC,GAAG,OAAO,EAAE,GAAG,MAAM,CAAC,KAAK,CAAC;SACrC,CAAC,CAAC;IACL,CAAC,CACF,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"otc.js","sourceRoot":"","sources":["../../src/tools/otc.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"proposalBuild.d.ts","sourceRoot":"","sources":["../../src/tools/proposalBuild.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AACzE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AA2ChD,wBAAgB,0BAA0B,CAAC,MAAM,EAAE,SAAS,EAAE,GAAG,EAAE,WAAW,GAAG,IAAI,CAOpF"}
1
+ {"version":3,"file":"proposalBuild.d.ts","sourceRoot":"","sources":["../../src/tools/proposalBuild.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AACzE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AA4ChD,wBAAgB,0BAA0B,CAAC,MAAM,EAAE,SAAS,EAAE,GAAG,EAAE,WAAW,GAAG,IAAI,CAOpF"}
@@ -4,6 +4,7 @@ import { buildPayload } from "../lib/calldata.js";
4
4
  import { checkBlacklist, blacklistError } from "../lib/blacklist.js";
5
5
  import { findForbiddenSelector, dangerousSelectorError } from "../lib/dangerousSelectors.js";
6
6
  import { CUSTOM_ABI_DEFAULT_ROUTING_ADVISORY } from "../lib/protocolAdvisories.js";
7
+ import { buildTimeTreasuryAdvisory } from "../lib/quorumRisk.js";
7
8
  import { PROPOSAL_CATALOG, EXTERNAL_METADATA_SHAPE, INTERNAL_METADATA_SHAPE, } from "../lib/proposalCatalog.js";
8
9
  const GOV_POOL_ABI = [
9
10
  "function createProposal(string descriptionURL, tuple(address executor, uint256 value, bytes data)[] actionsOnFor, tuple(address executor, uint256 value, bytes data)[] actionsOnAgainst)",
@@ -119,6 +120,9 @@ function registerBuildExternal(server, ctx) {
119
120
  if (forbidden)
120
121
  return errorResult(dangerousSelectorError(forbidden, a.executor));
121
122
  }
123
+ // Layer 4 (treasury-safety advisory): flag any value-moving /
124
+ // allowance-granting action so a reviewer checks quorum before voting.
125
+ const treasuryAdvisory = buildTimeTreasuryAdvisory([...on, ...against].map((a) => ({ executor: a.executor, value: a.value.toString(), data: a.data })), ctx.config.treasuryGuard);
122
126
  let payload;
123
127
  if (andVote) {
124
128
  payload = buildPayload({
@@ -148,7 +152,7 @@ function registerBuildExternal(server, ctx) {
148
152
  description: `GovPool.createProposal (${on.length} for / ${against.length} against)`,
149
153
  });
150
154
  }
151
- return payloadResult(payload);
155
+ return payloadResult(payload, treasuryAdvisory);
152
156
  }
153
157
  catch (err) {
154
158
  return errorResult(err instanceof Error ? err.message : String(err));
@@ -233,8 +237,15 @@ function registerBuildCustomAbi(server, ctx) {
233
237
  return errorResult(dangerousSelectorError(forbidden, target));
234
238
  const action = { executor: target, value, data };
235
239
  const preview = `ProposalAction → ${target}.${method}(${args.length} args), value=${value}, calldata=${data.slice(0, 18)}…`;
240
+ const treasuryAdvisory = buildTimeTreasuryAdvisory([action], ctx.config.treasuryGuard);
236
241
  return {
237
- content: [{ type: "text", text: `${preview}\n\n${CUSTOM_ABI_DEFAULT_ROUTING_ADVISORY}` }],
242
+ content: [
243
+ {
244
+ type: "text",
245
+ text: `${preview}\n\n${CUSTOM_ABI_DEFAULT_ROUTING_ADVISORY}` +
246
+ (treasuryAdvisory ? `\n\n${treasuryAdvisory}` : ""),
247
+ },
248
+ ],
238
249
  structuredContent: { action, preview },
239
250
  };
240
251
  }
@@ -352,11 +363,13 @@ function registerBuildTokenTransfer(server, ctx) {
352
363
  };
353
364
  const nextStep = `1) dexe_ipfs_upload_proposal_metadata with { title: "${proposalName}", description, extra: changes } → get CID\n` +
354
365
  `2) dexe_proposal_build_external with govPool="${govPool}", descriptionURL=<CID>, actionsOnFor=actions`;
366
+ const treasuryAdvisory = buildTimeTreasuryAdvisory(actions, ctx.config.treasuryGuard);
355
367
  return {
356
368
  content: [
357
369
  {
358
370
  type: "text",
359
- text: `Built token-transfer proposal scaffolding.\n\nAction: ${actionLabel}\n\nNext:\n${nextStep}`,
371
+ text: `Built token-transfer proposal scaffolding.\n\nAction: ${actionLabel}\n\nNext:\n${nextStep}` +
372
+ (treasuryAdvisory ? `\n\n${treasuryAdvisory}` : ""),
360
373
  },
361
374
  ],
362
375
  structuredContent: { metadata, actions, nextStep },
@@ -377,12 +390,13 @@ function payloadSchema() {
377
390
  description: z.string(),
378
391
  };
379
392
  }
380
- function payloadResult(payload) {
393
+ function payloadResult(payload, advisory) {
381
394
  return {
382
395
  content: [
383
396
  {
384
397
  type: "text",
385
- text: `${payload.description}\n to : ${payload.to}\n value: ${payload.value}\n data : ${payload.data.slice(0, 66)}…`,
398
+ text: `${payload.description}\n to : ${payload.to}\n value: ${payload.value}\n data : ${payload.data.slice(0, 66)}…` +
399
+ (advisory ? `\n\n${advisory}` : ""),
386
400
  },
387
401
  ],
388
402
  structuredContent: { ...payload },