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.
- package/CHANGELOG.md +94 -20
- package/README.md +6 -6
- package/dist/config.d.ts +22 -0
- package/dist/config.d.ts.map +1 -1
- package/dist/config.js +30 -0
- package/dist/config.js.map +1 -1
- package/dist/env/schema.d.ts +21 -0
- package/dist/env/schema.d.ts.map +1 -1
- package/dist/env/schema.js +21 -0
- package/dist/env/schema.js.map +1 -1
- package/dist/lib/controllingVoters.d.ts +44 -0
- package/dist/lib/controllingVoters.d.ts.map +1 -0
- package/dist/lib/controllingVoters.js +152 -0
- package/dist/lib/controllingVoters.js.map +1 -0
- package/dist/lib/dangerousSelectors.d.ts +1 -1
- package/dist/lib/dangerousSelectors.d.ts.map +1 -1
- package/dist/lib/dangerousSelectors.js +12 -22
- package/dist/lib/dangerousSelectors.js.map +1 -1
- package/dist/lib/decoders.d.ts +4 -4
- package/dist/lib/decoders.d.ts.map +1 -1
- package/dist/lib/decoders.js +2 -2
- package/dist/lib/govProposalView.d.ts +37 -0
- package/dist/lib/govProposalView.d.ts.map +1 -0
- package/dist/lib/govProposalView.js +42 -0
- package/dist/lib/govProposalView.js.map +1 -0
- package/dist/lib/protocolAdvisories.d.ts +12 -13
- package/dist/lib/protocolAdvisories.d.ts.map +1 -1
- package/dist/lib/protocolAdvisories.js +23 -16
- package/dist/lib/protocolAdvisories.js.map +1 -1
- package/dist/lib/quorumRisk.d.ts +92 -0
- package/dist/lib/quorumRisk.d.ts.map +1 -0
- package/dist/lib/quorumRisk.js +159 -0
- package/dist/lib/quorumRisk.js.map +1 -0
- package/dist/tools/daoDeploy.d.ts.map +1 -1
- package/dist/tools/daoDeploy.js +32 -0
- package/dist/tools/daoDeploy.js.map +1 -1
- package/dist/tools/flow.d.ts.map +1 -1
- package/dist/tools/flow.js +90 -1
- package/dist/tools/flow.js.map +1 -1
- package/dist/tools/gov.js +2 -2
- package/dist/tools/index.d.ts.map +1 -1
- package/dist/tools/index.js +2 -0
- package/dist/tools/index.js.map +1 -1
- package/dist/tools/otc.d.ts +20 -0
- package/dist/tools/otc.d.ts.map +1 -1
- package/dist/tools/otc.js +188 -58
- package/dist/tools/otc.js.map +1 -1
- package/dist/tools/proposalBuild.d.ts.map +1 -1
- package/dist/tools/proposalBuild.js +19 -5
- package/dist/tools/proposalBuild.js.map +1 -1
- package/dist/tools/proposalBuildComplex.d.ts.map +1 -1
- package/dist/tools/proposalBuildComplex.js +12 -1
- package/dist/tools/proposalBuildComplex.js.map +1 -1
- package/dist/tools/proposalBuildMore.d.ts.map +1 -1
- package/dist/tools/proposalBuildMore.js +8 -5
- package/dist/tools/proposalBuildMore.js.map +1 -1
- package/dist/tools/risk.d.ts +4 -0
- package/dist/tools/risk.d.ts.map +1 -0
- package/dist/tools/risk.js +255 -0
- package/dist/tools/risk.js.map +1 -0
- package/dist/tools/subgraph.d.ts.map +1 -1
- package/dist/tools/subgraph.js +19 -15
- package/dist/tools/subgraph.js.map +1 -1
- package/dist/tools/voteBuild.d.ts.map +1 -1
- package/dist/tools/voteBuild.js +16 -4
- package/dist/tools/voteBuild.js.map +1 -1
- package/package.json +2 -2
package/dist/tools/index.js.map
CHANGED
|
@@ -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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"}
|
package/dist/tools/otc.d.ts
CHANGED
|
@@ -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
|
*
|
package/dist/tools/otc.d.ts.map
CHANGED
|
@@ -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;
|
|
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
|
-
|
|
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
|
-
|
|
49
|
-
|
|
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
|
|
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
|
|
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 `
|
|
181
|
-
"
|
|
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
|
-
|
|
238
|
-
|
|
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
|
|
246
|
-
//
|
|
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] ??
|
|
364
|
+
type: PARTICIPATION_TYPE_NAMES[Number(p.participationType)] ??
|
|
365
|
+
`Unknown(${p.participationType})`,
|
|
249
366
|
data: p.data,
|
|
250
367
|
}));
|
|
251
|
-
const
|
|
252
|
-
|
|
253
|
-
|
|
254
|
-
|
|
255
|
-
|
|
256
|
-
|
|
257
|
-
|
|
258
|
-
|
|
259
|
-
|
|
260
|
-
|
|
261
|
-
|
|
262
|
-
|
|
263
|
-
|
|
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
|
-
|
|
278
|
-
|
|
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:
|
|
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
|
|
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:
|
|
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:
|
|
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(
|
|
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
|
-
|
|
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 ?
|
|
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
|
package/dist/tools/otc.js.map
CHANGED
|
@@ -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;
|
|
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: [
|
|
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 },
|