@temporalabs/treasury 0.1.1 → 0.1.2
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/NOTICE +4 -2
- package/README.md +68 -44
- package/THIRD_PARTY_NOTICES.connect-page.md +7420 -0
- package/THIRD_PARTY_NOTICES.md +4 -196
- package/dist/cli.d.ts +6 -0
- package/dist/cli.js +220 -0
- package/dist/cli.js.map +1 -0
- package/dist/client.d.ts +224 -239
- package/dist/client.js +147 -25
- package/dist/client.js.map +1 -1
- package/dist/config/earn.d.ts +33 -12
- package/dist/config/earn.js +33 -12
- package/dist/config/earn.js.map +1 -1
- package/dist/connect/ack.d.ts +59 -0
- package/dist/connect/ack.js +111 -0
- package/dist/connect/ack.js.map +1 -0
- package/dist/connect/commands.d.ts +78 -0
- package/dist/connect/commands.js +411 -0
- package/dist/connect/commands.js.map +1 -0
- package/dist/connect/config.d.ts +22 -0
- package/dist/connect/config.js +33 -0
- package/dist/connect/config.js.map +1 -0
- package/dist/connect/gate.d.ts +37 -0
- package/dist/connect/gate.js +115 -0
- package/dist/connect/gate.js.map +1 -0
- package/dist/connect/http.d.ts +54 -0
- package/dist/connect/http.js +205 -0
- package/dist/connect/http.js.map +1 -0
- package/dist/connect/open.d.ts +2 -0
- package/dist/connect/open.js +35 -0
- package/dist/connect/open.js.map +1 -0
- package/dist/connect/page.d.ts +5 -0
- package/dist/connect/page.js +69 -0
- package/dist/connect/page.js.map +1 -0
- package/dist/connect/session.d.ts +16 -0
- package/dist/connect/session.js +73 -0
- package/dist/connect/session.js.map +1 -0
- package/dist/connect/verify.d.ts +37 -0
- package/dist/connect/verify.js +89 -0
- package/dist/connect/verify.js.map +1 -0
- package/dist/connect-page.js +5141 -0
- package/dist/disclosures.d.ts +21 -6
- package/dist/disclosures.js +32 -7
- package/dist/disclosures.js.map +1 -1
- package/dist/earn/commands.d.ts +46 -0
- package/dist/earn/commands.js +483 -0
- package/dist/earn/commands.js.map +1 -0
- package/dist/links.d.ts +2 -0
- package/dist/links.js +38 -14
- package/dist/links.js.map +1 -1
- package/dist/position.d.ts +7 -5
- package/dist/position.js +35 -18
- package/dist/position.js.map +1 -1
- package/dist/preflight.d.ts +9 -0
- package/dist/preflight.js +14 -3
- package/dist/preflight.js.map +1 -1
- package/dist/quote.js +24 -7
- package/dist/quote.js.map +1 -1
- package/dist/redact.d.ts +3 -3
- package/dist/redact.js +3 -3
- package/dist/redact.js.map +1 -1
- package/dist/registry-schema.d.ts +5 -5
- package/dist/registry-schema.js +30 -16
- package/dist/registry-schema.js.map +1 -1
- package/dist/registry.d.ts +29 -6
- package/dist/registry.js +76 -13
- package/dist/registry.js.map +1 -1
- package/dist/{mcp-server.mjs → treasury.mjs} +29276 -44702
- package/dist/version.js +1 -1
- package/package.json +5 -5
- package/registry/vaults.json +105 -4
- package/dist/mcp/server.d.ts +0 -8
- package/dist/mcp/server.js +0 -368
- package/dist/mcp/server.js.map +0 -1
package/dist/position.d.ts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { type Address } from "viem";
|
|
2
2
|
import { type VaultEntry } from "./registry-schema.js";
|
|
3
|
-
import type
|
|
3
|
+
import { type ReadClient } from "./client.js";
|
|
4
4
|
/** The value `entryBasisUsdc` / `accruedYieldUsdc` carry when the event scan failed outright: not a number. */
|
|
5
5
|
export declare const UNKNOWN_AFTER_SCAN_FAILURE = "unknown \u2014 event scan failed; see scan.note";
|
|
6
6
|
/**
|
|
@@ -45,7 +45,7 @@ export interface Position {
|
|
|
45
45
|
sharePriceInAssets: string;
|
|
46
46
|
/**
|
|
47
47
|
* `source` names which RPC served the event scan, never its URL: `"logs rpc"` (the configured one)
|
|
48
|
-
* or `"fallback"` (the endpoint `TREASURY_LOGS_FALLBACK` names,
|
|
48
|
+
* or `"fallback"` (the endpoint `TREASURY_LOGS_FALLBACK` names, the chain's public one by default, used
|
|
49
49
|
* when the configured one could not cover the range). 🔴 `complete` is only a RECONCILIATION and is
|
|
50
50
|
* vacuously true for an empty window — `wholeHistory` is the coverage claim, and the note is written
|
|
51
51
|
* from it.
|
|
@@ -99,8 +99,9 @@ export interface PositionArgs {
|
|
|
99
99
|
* A second read client for the event scan, used only when `client` cannot cover the range: its
|
|
100
100
|
* eth_getLogs error is one no window can be sized from (measured 2026-09-14: publicnode refuses any
|
|
101
101
|
* range older than ~2,000 blocks with "Archive requests require a personal token"), or its window
|
|
102
|
-
* would need more than `maxLogRequests` requests (Alchemy free tier: 10 blocks). The
|
|
103
|
-
*
|
|
102
|
+
* would need more than `maxLogRequests` requests (Alchemy free tier: 10 blocks). The CLI passes
|
|
103
|
+
* the chain's public endpoint: Base's, whose 2,000-block window serves history, or Arbitrum One's,
|
|
104
|
+
* which served an 800,000-block range in one request (measured 2026-10-02). Omitted ⇒ no fallback.
|
|
104
105
|
*/
|
|
105
106
|
fallbackClient?: ReadClient;
|
|
106
107
|
/**
|
|
@@ -117,7 +118,8 @@ export interface PositionArgs {
|
|
|
117
118
|
}
|
|
118
119
|
/**
|
|
119
120
|
* Parses the provider's stated maximum range out of its error, e.g. "limited to a 2,000 range" /
|
|
120
|
-
* "up to a 10 block range"
|
|
121
|
+
* "up to a 10 block range" / "range 798952 exceeds limit of 10000" (Infura on Arbitrum One, measured
|
|
122
|
+
* 2026-10-02). `undefined` means the failure is NOT a window refusal — a caller must
|
|
121
123
|
* rethrow rather than narrow, or a dead provider and an empty result become the same answer.
|
|
122
124
|
* Exported for `tests/access.ts`, which walks a different contract's logs and needs the same
|
|
123
125
|
* distinction; NOT re-exported from index.ts.
|
package/dist/position.js
CHANGED
|
@@ -1,7 +1,9 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { parseAbiItem } from "viem";
|
|
2
2
|
import { erc4626Abi } from "./abi/erc4626.js";
|
|
3
3
|
import { describeError } from "./redact.js";
|
|
4
|
+
import { isRevert } from "./preflight.js";
|
|
4
5
|
import { formatAmount } from "./units.js";
|
|
6
|
+
import { CHAIN_INFO } from "./client.js";
|
|
5
7
|
/** ERC-4626's own events — the only durable record of what an account put in and took out. */
|
|
6
8
|
const depositEvent = parseAbiItem("event Deposit(address indexed sender, address indexed owner, uint256 assets, uint256 shares)");
|
|
7
9
|
const withdrawEvent = parseAbiItem("event Withdraw(address indexed sender, address indexed receiver, address indexed owner, uint256 assets, uint256 shares)");
|
|
@@ -17,13 +19,15 @@ export const UNKNOWN_AFTER_SCAN_FAILURE = "unknown — event scan failed; see sc
|
|
|
17
19
|
export const UNKNOWN_INCOMPLETE_SCAN = "unknown — the scan did not cover this position's history; see scan.note";
|
|
18
20
|
/**
|
|
19
21
|
* Parses the provider's stated maximum range out of its error, e.g. "limited to a 2,000 range" /
|
|
20
|
-
* "up to a 10 block range"
|
|
22
|
+
* "up to a 10 block range" / "range 798952 exceeds limit of 10000" (Infura on Arbitrum One, measured
|
|
23
|
+
* 2026-10-02). `undefined` means the failure is NOT a window refusal — a caller must
|
|
21
24
|
* rethrow rather than narrow, or a dead provider and an empty result become the same answer.
|
|
22
25
|
* Exported for `tests/access.ts`, which walks a different contract's logs and needs the same
|
|
23
26
|
* distinction; NOT re-exported from index.ts.
|
|
24
27
|
*/
|
|
25
28
|
export function rangeLimitFromError(e) {
|
|
26
|
-
const
|
|
29
|
+
const text = String(e).replace(/,/g, "");
|
|
30
|
+
const m = text.match(/(?:limited to a|up to a)\s+(\d+)\s*(?:block)?\s*range/i) ?? text.match(/range\s+\d+\s+exceeds limit of\s+(\d+)/i);
|
|
27
31
|
return m ? BigInt(m[1]) : undefined;
|
|
28
32
|
}
|
|
29
33
|
async function scanLogs(client, address, event, owner, from, to, maxRequests, refuseIfCapped, deadline, now) {
|
|
@@ -93,17 +97,6 @@ function txsOf(logs, decimals, symbol) {
|
|
|
93
97
|
amountUsdc: `${formatAmount(l.args.assets ?? 0n, decimals)} ${symbol}`,
|
|
94
98
|
}));
|
|
95
99
|
}
|
|
96
|
-
/**
|
|
97
|
-
* Did the CHAIN refuse this, or did the RPC fail to ask it? Every failure used to read as "cannot pay",
|
|
98
|
-
* so one HTTP 502 on the first simulation reported a fully-exitable position as unexitable AND blamed
|
|
99
|
-
* the vault for it (measured through a proxy that failed exactly one call: one attempt made, the vault
|
|
100
|
-
* never asked, `exitableNow: "unknown"`, note "the refusal is the vault's").
|
|
101
|
-
* viem's own error chain separates them: a real revert carries a ContractFunctionRevertedError or an
|
|
102
|
-
* ExecutionRevertedError; a transport failure does not.
|
|
103
|
-
*/
|
|
104
|
-
function isRevert(e) {
|
|
105
|
-
return e instanceof BaseError && e.walk((x) => x instanceof ContractFunctionRevertedError || x instanceof ExecutionRevertedError) !== null;
|
|
106
|
-
}
|
|
107
100
|
/**
|
|
108
101
|
* At most two simulated withdrawals — the whole position, then the vault's own liquid balance — and the
|
|
109
102
|
* answer is whichever the chain accepts. Simulation rather than arithmetic because the ceiling is
|
|
@@ -184,6 +177,19 @@ async function measureExit(a) {
|
|
|
184
177
|
// must NOT happen is describing it as something it was not: the note says what was
|
|
185
178
|
// asked, and a success is believed whatever bound produced it.
|
|
186
179
|
const boundedByLiquid = liquid < value;
|
|
180
|
+
// A liquid bound of 0 is no withdrawal to ask about: say it was not tried, never count it as a refusal.
|
|
181
|
+
if (liquid === 0n) {
|
|
182
|
+
return {
|
|
183
|
+
exitableNow: "unknown",
|
|
184
|
+
measuredAs: "refused, size unknown",
|
|
185
|
+
instantLiquidity: liquidText,
|
|
186
|
+
maxWithdrawSays: maxText,
|
|
187
|
+
// Whether a smaller amount can pass depends on the chassis, as in the liquid-bound note below.
|
|
188
|
+
note: `the vault REFUSED a full-position withdrawal at this block. Its liquid balance is ${liquidText}, so no smaller withdrawal bounded by it was tried. ${vault.chassis === "fusion"
|
|
189
|
+
? "This chassis pays withdrawals from the vault's own balance unless the fund has instant-withdrawal fuses, so a smaller amount is likely to be refused too until the fund unwinds"
|
|
190
|
+
: "This chassis also pays out of its markets, so a smaller amount may still pass"} — quote one with \`earn quote --direction withdraw\`. The refusal came from the vault, but it is not a shortfall this client could size.${advisory}`,
|
|
191
|
+
};
|
|
192
|
+
}
|
|
187
193
|
const askedFor = boundedByLiquid ? liquid : value;
|
|
188
194
|
const bounded = await attempt(askedFor);
|
|
189
195
|
if (bounded === "paid" && boundedByLiquid) {
|
|
@@ -192,7 +198,13 @@ async function measureExit(a) {
|
|
|
192
198
|
measuredAs: "vault's liquid balance",
|
|
193
199
|
instantLiquidity: liquidText,
|
|
194
200
|
maxWithdrawSays: maxText,
|
|
195
|
-
|
|
201
|
+
// Only Fusion pays a withdrawal from the vault's own balance, so only there is the idle balance the
|
|
202
|
+
// ceiling and "the rest needs an unwind" the explanation. A Morpho Vault V2 also pays through its
|
|
203
|
+
// liquidity adapter: there the idle balance is a bound that was probed and paid, not the most that can
|
|
204
|
+
// come out (#78; sizing the rest is #69).
|
|
205
|
+
note: vault.chassis === "fusion"
|
|
206
|
+
? `the whole position does NOT come out at this block: this chassis pays withdrawals from the vault's own balance, and the rest is deployed. ${fmt(liquid)} of ${fmt(value)} is payable now; the remainder needs the fund to unwind first.${advisory}`
|
|
207
|
+
: `the whole position does NOT come out at this block; a withdrawal of ${fmt(liquid)}, the vault's idle balance, simulates OK. This chassis also pays out of its markets, so more than that may be withdrawable now; the larger amount was not sized.${advisory}`,
|
|
196
208
|
};
|
|
197
209
|
}
|
|
198
210
|
// 🔴 A success is a success whatever bound produced it. The old gate reused the ATTEMPT condition as
|
|
@@ -314,6 +326,11 @@ export async function getPosition(args) {
|
|
|
314
326
|
// confident "0 USDC"). `!wholeHistory` subsumes both, including the honest zero.
|
|
315
327
|
const basisUnknown = !wholeHistory;
|
|
316
328
|
const fmtA = (x) => `${formatAmount(x, vault.asset.decimals)} ${vault.asset.symbol}`;
|
|
329
|
+
// The notes name the variable an operator would set, and that differs by chain.
|
|
330
|
+
const chain = CHAIN_INFO[vault.chainId];
|
|
331
|
+
const logsEnv = chain.logsRpcEnv;
|
|
332
|
+
// TREASURY_LOGS_FALLBACK can NAME a fallback on Base only; elsewhere it can only forbid one.
|
|
333
|
+
const fallbackNamedBy = vault.chainId === 8453 ? `TREASURY_LOGS_FALLBACK, ${chain.name}'s public endpoint by default` : `${chain.name}'s public endpoint; TREASURY_LOGS_FALLBACK=off forbids it`;
|
|
317
334
|
return {
|
|
318
335
|
vault: vault.symbol,
|
|
319
336
|
principal,
|
|
@@ -338,12 +355,12 @@ export async function getPosition(args) {
|
|
|
338
355
|
...(providerWindow !== undefined ? { providerWindow: providerWindow.toString() } : {}),
|
|
339
356
|
source,
|
|
340
357
|
wholeHistory,
|
|
341
|
-
note: (handover && !scanFailure ? `the configured logs RPC could not cover this range (${handover}), so the fallback endpoint (
|
|
342
|
-
? `event scan FAILED (${scanFailure}): the provider's eth_getLogs error was not one this client can size a window from, so no history was read — basis and yield are unknown, not zero. Set
|
|
358
|
+
note: (handover && !scanFailure ? `the configured logs RPC could not cover this range (${handover}), so the fallback endpoint (${fallbackNamedBy}) served the scan. ` : "") + (scanFailure
|
|
359
|
+
? `event scan FAILED (${scanFailure}): the provider's eth_getLogs error was not one this client can size a window from, so no history was read — basis and yield are unknown, not zero. Set ${logsEnv} to a provider with a known window (Alchemy, Infura, ${chain.name} public), or use the agent's own deposit receipts.`
|
|
343
360
|
: wholeHistory
|
|
344
361
|
? "the scan covered every block from the vault's deployment, and shares in − shares out reconciles to the balance: the basis covers this position's whole history"
|
|
345
362
|
: capped
|
|
346
|
-
? `the scan was CUT SHORT — ${block - fromBlock + 1n} of the ${block - (deployed ?? 0n) + 1n} blocks since deployment, at the provider's ${providerWindow ?? "?"}-block eth_getLogs window and ${timedOut ? `a ${Math.round((args.budgetMs ?? 30_000) / 1000)}s time budget` : `${maxReq} requests`}; covering the rest needs about ${providerWindow ? (block - (deployed ?? 0n) + providerWindow) / providerWindow : BigInt(maxReq)} requests per event. ${complete ? "Shares in − shares out happens to reconcile over that window, which an empty window does vacuously — it is NOT evidence the history was covered." : "Basis and yield are unknown, not bounds."} Set
|
|
363
|
+
? `the scan was CUT SHORT — ${block - fromBlock + 1n} of the ${block - (deployed ?? 0n) + 1n} blocks since deployment, at the provider's ${providerWindow ?? "?"}-block eth_getLogs window and ${timedOut ? `a ${Math.round((args.budgetMs ?? 30_000) / 1000)}s time budget` : `${maxReq} requests`}; covering the rest needs about ${providerWindow ? (block - (deployed ?? 0n) + providerWindow) / providerWindow : BigInt(maxReq)} requests per event. ${complete ? "Shares in − shares out happens to reconcile over that window, which an empty window does vacuously — it is NOT evidence the history was covered." : "Basis and yield are unknown, not bounds."} Set ${logsEnv} to a provider with a wide eth_getLogs range${timedOut ? "" : ", raise max_log_requests"}, or use the agent's own deposit receipts.`
|
|
347
364
|
: complete
|
|
348
365
|
? `shares in − shares out reconciles over the ${block - fromBlock + 1n} blocks scanned, but the scan started at block ${fromBlock}${deployed === undefined ? " and the registry does not record when this vault was deployed" : `, after the vault's deployment block ${deployed}`} — deposits and withdrawals before it cancel out unseen, so this is a WINDOW, NOT the whole history. Omit lookback_blocks to scan from deployment.`
|
|
349
366
|
: "shares in − shares out ≠ balance: history predates the window or shares moved by transfer — basis and yield are unknown, not totals"),
|
package/dist/position.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"position.js","sourceRoot":"","sources":["../src/position.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"position.js","sourceRoot":"","sources":["../src/position.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAgB,MAAM,MAAM,CAAC;AAClD,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAE9C,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAC5C,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAC1C,OAAO,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAC1C,OAAO,EAAE,UAAU,EAAmB,MAAM,aAAa,CAAC;AAE1D,8FAA8F;AAC9F,MAAM,YAAY,GAAG,YAAY,CAAC,8FAA8F,CAAC,CAAC;AAClI,MAAM,aAAa,GAAG,YAAY,CAChC,yHAAyH,CAC1H,CAAC;AAEF,+GAA+G;AAC/G,MAAM,CAAC,MAAM,0BAA0B,GAAG,4CAA4C,CAAC;AAEvF;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,uBAAuB,GAAG,yEAAyE,CAAC;AA+GjH;;;;;;;GAOG;AACH,MAAM,UAAU,mBAAmB,CAAC,CAAU;IAC5C,MAAM,IAAI,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;IACzC,MAAM,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,wDAAwD,CAAC,IAAI,IAAI,CAAC,KAAK,CAAC,yCAAyC,CAAC,CAAC;IACxI,OAAO,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAE,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;AACvC,CAAC;AAED,KAAK,UAAU,QAAQ,CACrB,MAAkB,EAClB,OAAgB,EAChB,KAAQ,EACR,KAAc,EACd,IAAY,EACZ,EAAU,EACV,WAAmB,EACnB,cAAuB,EACvB,QAAgB,EAChB,GAAiB;IAEjB,MAAM,UAAU,GAAG,EAAE,KAAK,EAAW,CAAC;IACtC,IAAI,CAAC;QACH,MAAM,IAAI,GAAG,MAAM,MAAM,CAAC,OAAO,CAAC,EAAE,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,UAAU,EAAE,SAAS,EAAE,IAAI,EAAE,OAAO,EAAE,EAAE,EAAE,CAAC,CAAC;QACtG,OAAO,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC;IACjE,CAAC;IAAC,OAAO,CAAC,EAAE,CAAC;QACX,MAAM,MAAM,GAAG,mBAAmB,CAAC,CAAC,CAAC,CAAC;QACtC,IAAI,CAAC,MAAM;YAAE,MAAM,CAAC,CAAC;QACrB,yFAAyF;QACzF,6FAA6F;QAC7F,MAAM,MAAM,GAAG,CAAC,EAAE,GAAG,IAAI,GAAG,MAAM,CAAC,GAAG,MAAM,CAAC;QAC7C,IAAI,cAAc,IAAI,MAAM,GAAG,MAAM,CAAC,WAAW,CAAC;YAAE,MAAM,IAAI,eAAe,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;QAC9F,sGAAsG;QACtG,MAAM,GAAG,GAAkD,EAAW,CAAC;QACvE,IAAI,EAAE,GAAG,EAAE,CAAC;QACZ,IAAI,QAAQ,GAAG,CAAC,CAAC;QACjB,OAAO,EAAE,IAAI,IAAI,IAAI,QAAQ,GAAG,WAAW,IAAI,GAAG,EAAE,GAAG,QAAQ,EAAE,CAAC;YAChE,MAAM,EAAE,GAAG,EAAE,GAAG,MAAM,GAAG,EAAE,GAAG,IAAI,CAAC,CAAC,CAAC,EAAE,GAAG,MAAM,GAAG,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC;YAC7D,MAAM,KAAK,GAAG,MAAM,MAAM,CAAC,OAAO,CAAC,EAAE,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,UAAU,EAAE,SAAS,EAAE,EAAE,EAAE,OAAO,EAAE,EAAE,EAAE,CAAC,CAAC;YACpG,GAAiB,CAAC,IAAI,CAAC,GAAI,KAAmB,CAAC,CAAC;YACjD,QAAQ,IAAI,CAAC,CAAC;YACd,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC;QACf,CAAC;QACD,OAAO,EAAE,IAAI,EAAE,GAAG,EAAE,WAAW,EAAE,EAAE,GAAG,EAAE,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,IAAI,IAAI,EAAE,MAAM,EAAE,CAAC;IACnF,CAAC;AACH,CAAC;AAED,sFAAsF;AACtF,MAAM,eAAgB,SAAQ,KAAK;IAEtB;IACA;IAFX,YACW,MAAc,EACd,MAAc;QAEvB,KAAK,CAAC,kBAAkB,MAAM,mCAAmC,MAAM,0BAA0B,CAAC,CAAC;QAH1F,WAAM,GAAN,MAAM,CAAQ;QACd,WAAM,GAAN,MAAM,CAAQ;IAGzB,CAAC;CACF;AAyBD;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,YAAY,GAAG,GAAG,CAAC;AAEhC;;;;;;GAMG;AACH,SAAS,KAAK,CAAC,IAAgB,EAAE,QAAgB,EAAE,MAAc;IAC/D,MAAM,GAAG,GAAG,CAAC,CAAW,EAAoB,EAAE,CAAC,CAAC,CAAC,CAAC,WAAW,IAAI,CAAC,EAAE,EAAE,CAAC,CAAC,QAAQ,IAAI,CAAC,CAAC,CAAC,CAAC;IACxF,MAAM,MAAM,GAAG,CAAC,GAAG,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE;QACrC,MAAM,CAAC,EAAE,EAAE,EAAE,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC;QACxB,MAAM,CAAC,EAAE,EAAE,EAAE,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC;QACxB,OAAO,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAChD,CAAC,CAAC,CAAC;IACH,OAAO,MAAM,CAAC,KAAK,CAAC,CAAC,YAAY,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;QAC7C,MAAM,EAAE,CAAC,CAAC,eAAe;QACzB,WAAW,EAAE,CAAC,CAAC,WAAW,KAAK,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,QAAQ,EAAE;QACrE,UAAU,EAAE,GAAG,YAAY,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,IAAI,EAAE,EAAE,QAAQ,CAAC,IAAI,MAAM,EAAE;KACvE,CAAC,CAAC,CAAC;AACN,CAAC;AAED;;;;;;;;GAQG;AACH,KAAK,UAAU,WAAW,CAAC,CAQ1B;IACC,MAAM,EAAE,KAAK,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,GAAG,CAAC,CAAC;IACtD,MAAM,GAAG,GAAG,CAAC,CAAS,EAAE,EAAE,CAAC,GAAG,YAAY,CAAC,CAAC,EAAE,KAAK,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,KAAK,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC;IAE5F,mFAAmF;IACnF,IAAI,MAAM,KAAK,EAAE,EAAE,CAAC;QAClB,OAAO,EAAE,WAAW,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,UAAU,EAAE,qBAAqB,EAAE,gBAAgB,EAAE,UAAU,EAAE,eAAe,EAAE,UAAU,EAAE,IAAI,EAAE,8BAA8B,EAAE,CAAC;IACtK,CAAC;IAED,MAAM,IAAI,GAAG,KAAK,EAAE,EAAyB,EAAqE,EAAE;QAClH,IAAI,CAAC;YACH,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,SAAS,EAAE,CAAC;QAClD,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACX,OAAO,EAAE,MAAM,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC;QACpD,CAAC;IACH,CAAC,CAAC;IACF,MAAM,CAAC,UAAU,EAAE,OAAO,CAAC,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC;QAC9C,IAAI,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC,YAAY,CAAC,EAAE,OAAO,EAAE,KAAK,CAAC,KAAK,CAAC,OAAO,EAAE,GAAG,EAAE,UAAU,EAAE,YAAY,EAAE,WAAW,EAAE,IAAI,EAAE,CAAC,KAAK,CAAC,OAAO,CAAC,EAAE,CAAoB,CAAC;QACvJ,IAAI,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC,YAAY,CAAC,EAAE,OAAO,EAAE,KAAK,CAAC,OAAO,EAAE,GAAG,EAAE,UAAU,EAAE,YAAY,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC,SAAS,CAAC,EAAE,CAAoB,CAAC;KAChJ,CAAC,CAAC;IACH,MAAM,MAAM,GAAG,UAAU,CAAC,KAAK,CAAC;IAChC,MAAM,UAAU,GAAG,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,MAAM,KAAK,QAAQ,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,mCAAmC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;IAC5I,MAAM,OAAO,GACX,OAAO,CAAC,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,KAAK,QAAQ,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,mCAAmC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;IACtI,iGAAiG;IACjG,MAAM,QAAQ,GAAG,OAAO,CAAC,KAAK,KAAK,SAAS,IAAI,OAAO,CAAC,KAAK,GAAG,EAAE,CAAC,CAAC,CAAC,uBAAuB,OAAO,4DAA4D,CAAC,CAAC,CAAC,EAAE,CAAC;IAErK,yEAAyE;IACzE,IAAI,KAAK,KAAK,EAAE,EAAE,CAAC;QACjB,OAAO;YACL,WAAW,EAAE,GAAG,CAAC,EAAE,CAAC;YACpB,UAAU,EAAE,qBAAqB;YACjC,gBAAgB,EAAE,UAAU;YAC5B,eAAe,EAAE,OAAO;YACxB,IAAI,EAAE,qBAAqB,YAAY,CAAC,MAAM,EAAE,KAAK,CAAC,aAAa,CAAC,IAAI,KAAK,CAAC,MAAM,+EAA+E;SACpK,CAAC;IACJ,CAAC;IAED,MAAM,OAAO,GAAG,KAAK,EAAE,MAAc,EAA8C,EAAE;QACnF,IAAI,MAAM,KAAK,EAAE;YAAE,OAAO,SAAS,CAAC;QACpC,IAAI,CAAC,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC,QAAQ;YAAE,OAAO,YAAY,CAAC;QAC/C,IAAI,CAAC;YACH,MAAM,MAAM,CAAC,gBAAgB,CAAC,EAAE,OAAO,EAAE,KAAK,CAAC,OAAO,EAAE,GAAG,EAAE,UAAU,EAAE,YAAY,EAAE,UAAU,EAAE,IAAI,EAAE,CAAC,MAAM,EAAE,SAAS,EAAE,SAAS,CAAC,EAAE,OAAO,EAAE,SAAS,EAAE,CAAC,CAAC;YAC/J,OAAO,MAAM,CAAC;QAChB,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACX,OAAO,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,YAAY,CAAC;QAChD,CAAC;IACH,CAAC,CAAC;IACF,MAAM,UAAU,GAAG,CAAC,IAAY,EAAoB,EAAE,CAAC,CAAC;QACtD,WAAW,EAAE,SAAS;QACtB,UAAU,EAAE,cAAc;QAC1B,gBAAgB,EAAE,UAAU;QAC5B,eAAe,EAAE,OAAO;QACxB,IAAI,EAAE,GAAG,IAAI,2HAA2H,QAAQ,EAAE;KACnJ,CAAC,CAAC;IAEH,MAAM,IAAI,GAAG,MAAM,OAAO,CAAC,KAAK,CAAC,CAAC;IAClC,IAAI,IAAI,KAAK,MAAM,EAAE,CAAC;QACpB,OAAO,EAAE,WAAW,EAAE,GAAG,CAAC,KAAK,CAAC,EAAE,UAAU,EAAE,eAAe,EAAE,gBAAgB,EAAE,UAAU,EAAE,eAAe,EAAE,OAAO,EAAE,IAAI,EAAE,iEAAiE,QAAQ,EAAE,EAAE,CAAC;IAC7M,CAAC;IACD,IAAI,IAAI,KAAK,YAAY;QAAE,OAAO,UAAU,CAAC,+DAA+D,CAAC,CAAC;IAE9G,sGAAsG;IACtG,iGAAiG;IACjG,sCAAsC;IACtC,IAAI,MAAM,KAAK,SAAS;QAAE,OAAO,UAAU,CAAC,+FAA+F,CAAC,CAAC;IAC7I,+FAA+F;IAC/F,0FAA0F;IAC1F,sGAAsG;IACtG,mFAAmF;IACnF,+DAA+D;IAC/D,MAAM,eAAe,GAAG,MAAM,GAAG,KAAK,CAAC;IACvC,wGAAwG;IACxG,IAAI,MAAM,KAAK,EAAE,EAAE,CAAC;QAClB,OAAO;YACL,WAAW,EAAE,SAAS;YACtB,UAAU,EAAE,uBAAuB;YACnC,gBAAgB,EAAE,UAAU;YAC5B,eAAe,EAAE,OAAO;YACxB,+FAA+F;YAC/F,IAAI,EAAE,qFAAqF,UAAU,uDACnG,KAAK,CAAC,OAAO,KAAK,QAAQ;gBACxB,CAAC,CAAC,iLAAiL;gBACnL,CAAC,CAAC,+EACN,4IAA4I,QAAQ,EAAE;SACvJ,CAAC;IACJ,CAAC;IACD,MAAM,QAAQ,GAAG,eAAe,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC;IAClD,MAAM,OAAO,GAAG,MAAM,OAAO,CAAC,QAAQ,CAAC,CAAC;IACxC,IAAI,OAAO,KAAK,MAAM,IAAI,eAAe,EAAE,CAAC;QAC1C,OAAO;YACL,WAAW,EAAE,GAAG,CAAC,MAAM,CAAC;YACxB,UAAU,EAAE,wBAAwB;YACpC,gBAAgB,EAAE,UAAU;YAC5B,eAAe,EAAE,OAAO;YACxB,oGAAoG;YACpG,kGAAkG;YAClG,uGAAuG;YACvG,0CAA0C;YAC1C,IAAI,EACF,KAAK,CAAC,OAAO,KAAK,QAAQ;gBACxB,CAAC,CAAC,6IAA6I,GAAG,CAAC,MAAM,CAAC,OAAO,GAAG,CAAC,KAAK,CAAC,iEAAiE,QAAQ,EAAE;gBACtP,CAAC,CAAC,uEAAuE,GAAG,CAAC,MAAM,CAAC,mKAAmK,QAAQ,EAAE;SACtQ,CAAC;IACJ,CAAC;IACD,qGAAqG;IACrG,sGAAsG;IACtG,gGAAgG;IAChG,wCAAwC;IACxC,IAAI,OAAO,KAAK,MAAM,EAAE,CAAC;QACvB,OAAO,EAAE,WAAW,EAAE,GAAG,CAAC,KAAK,CAAC,EAAE,UAAU,EAAE,eAAe,EAAE,gBAAgB,EAAE,UAAU,EAAE,eAAe,EAAE,OAAO,EAAE,IAAI,EAAE,iNAAiN,QAAQ,EAAE,EAAE,CAAC;IAC7V,CAAC;IACD,IAAI,OAAO,KAAK,YAAY;QAAE,OAAO,UAAU,CAAC,yFAAyF,CAAC,CAAC;IAC3I,OAAO;QACL,WAAW,EAAE,SAAS;QACtB,UAAU,EAAE,uBAAuB;QACnC,gBAAgB,EAAE,UAAU;QAC5B,eAAe,EAAE,OAAO;QACxB,kGAAkG;QAClG,6FAA6F;QAC7F,+BAA+B;QAC/B,IAAI,EAAE,qBAAqB,eAAe,CAAC,CAAC,CAAC,qEAAqE,UAAU,GAAG,CAAC,CAAC,CAAC,2DAA2D,UAAU,qEAAqE,+HAA+H,QAAQ,EAAE;KACtZ,CAAC;AACJ,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,WAAW,CAAC,IAAkB;IAClD,MAAM,EAAE,KAAK,EAAE,SAAS,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC;IAC1C,MAAM,QAAQ,GAAG,IAAI,CAAC,cAAc,IAAI,QAAU,CAAC;IACnD,MAAM,QAAQ,GAAG,GAAG,IAAI,MAAM,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC;IAEpD,MAAM,CAAC,KAAK,EAAE,MAAM,EAAE,gBAAgB,CAAC,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC;QAC1D,MAAM,CAAC,cAAc,EAAE;QACvB,MAAM,CAAC,YAAY,CAAC,EAAE,OAAO,EAAE,KAAK,CAAC,OAAO,EAAE,GAAG,EAAE,UAAU,EAAE,YAAY,EAAE,WAAW,EAAE,IAAI,EAAE,CAAC,SAAS,CAAC,EAAE,CAAC;QAC9G,MAAM,CAAC,YAAY,CAAC,EAAE,OAAO,EAAE,KAAK,CAAC,OAAO,EAAE,GAAG,EAAE,UAAU,EAAE,YAAY,EAAE,iBAAiB,EAAE,IAAI,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC;KACpH,CAAC,CAAC;IACH,MAAM,KAAK,GACT,MAAM,KAAK,EAAE;QACX,CAAC,CAAC,EAAE;QACJ,CAAC,CAAC,MAAM,MAAM,CAAC,YAAY,CAAC,EAAE,OAAO,EAAE,KAAK,CAAC,OAAO,EAAE,GAAG,EAAE,UAAU,EAAE,YAAY,EAAE,iBAAiB,EAAE,IAAI,EAAE,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;IAE9H,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,IAAI,IAAI,CAAC,GAAG,CAAC;IACjC,iHAAiH;IACjH,mGAAmG;IACnG,yGAAyG;IACzG,qGAAqG;IACrG,uBAAuB;IACvB,MAAM,YAAY,GAAG,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,YAAY,IAAI,MAAM,CAAC,CAAC;IAC3D,MAAM,IAAI,GAAG,MAAM,WAAW,CAAC,EAAE,KAAK,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,QAAQ,EAAE,YAAY,EAAE,GAAG,EAAE,CAAC,CAAC;IACzG,MAAM,QAAQ,GAAG,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,QAAQ,IAAI,MAAM,CAAC,CAAC;IAEnD,kGAAkG;IAClG,mGAAmG;IACnG,gDAAgD;IAChD,MAAM,QAAQ,GAAG,KAAK,CAAC,eAAe,KAAK,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,eAAe,CAAC,CAAC;IACjG,MAAM,UAAU,GAAG,KAAK,GAAG,QAAQ,CAAC,CAAC,CAAC,KAAK,GAAG,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC;IAC5D,MAAM,MAAM,GACV,QAAQ,KAAK,SAAS,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC,cAAc,KAAK,SAAS,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,UAAU,GAAG,QAAQ,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,QAAQ,CAAC;IACrI,MAAM,MAAM,GAAG,IAAI,CAAC,cAAc,IAAI,GAAG,CAAC;IAC1C,MAAM,QAAQ,GAAG,IAAI,CAAC,cAAc,CAAC;IAErC,mGAAmG;IACnG,iEAAiE;IACjE,MAAM,QAAQ,GAAG,KAAK,EAAE,CAAa,EAAE,cAAuB,EAAyB,EAAE;QACvF,MAAM,CAAC,GAAG,MAAM,QAAQ,CAAC,CAAC,EAAE,KAAK,CAAC,OAAO,EAAE,YAAY,EAAE,SAAS,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,cAAc,EAAE,QAAQ,EAAE,GAAG,CAAC,CAAC;QAC1H,MAAM,CAAC,GAAG,MAAM,QAAQ,CAAC,CAAC,EAAE,KAAK,CAAC,OAAO,EAAE,aAAa,EAAE,SAAS,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,cAAc,EAAE,QAAQ,EAAE,GAAG,CAAC,CAAC;QAC3H,OAAO,CAAC,CAAoB,EAAE,CAAoB,CAAC,CAAC;IACtD,CAAC,CAAC;IAEF,8FAA8F;IAC9F,qGAAqG;IACrG,yEAAyE;IACzE,kGAAkG;IAClG,+FAA+F;IAC/F,yEAAyE;IACzE,IAAI,WAA+B,CAAC;IACpC,IAAI,MAAM,GAA4B,UAAU,CAAC;IACjD,IAAI,QAA4B,CAAC;IACjC,MAAM,KAAK,GAAS,EAAE,IAAI,EAAE,EAAE,EAAE,WAAW,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,SAAS,EAAE,CAAC;IACtF,IAAI,MAAoB,CAAC;IACzB,IAAI,CAAC;QACH,MAAM,GAAG,MAAM,QAAQ,CAAC,MAAM,EAAE,QAAQ,KAAK,SAAS,CAAC,CAAC;IAC1D,CAAC;IAAC,OAAO,YAAqB,EAAE,CAAC;QAC/B,IAAI,CAAC,QAAQ,EAAE,CAAC;YACd,WAAW,GAAG,aAAa,CAAC,YAAY,CAAC,CAAC;YAC1C,MAAM,GAAG,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;QAC1B,CAAC;aAAM,CAAC;YACN,QAAQ,GAAG,YAAY,YAAY,eAAe,CAAC,CAAC,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC,CAAC,uBAAuB,aAAa,CAAC,YAAY,EAAE,GAAG,CAAC,EAAE,CAAC;YACtI,IAAI,CAAC;gBACH,MAAM,GAAG,MAAM,QAAQ,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC;gBACzC,6FAA6F;gBAC7F,2CAA2C;gBAC3C,MAAM,GAAG,UAAU,CAAC;YACtB,CAAC;YAAC,OAAO,aAAsB,EAAE,CAAC;gBAChC,WAAW,GAAG,aAAa,QAAQ,eAAe,aAAa,CAAC,aAAa,CAAC,EAAE,CAAC;gBACjF,MAAM,GAAG,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;YAC1B,CAAC;QACH,CAAC;IACH,CAAC;IACD,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,MAAM,CAAC;IACtB,MAAM,IAAI,GAAG,CAAC,CAAC,IAAI,CAAC;IACpB,MAAM,GAAG,GAAG,CAAC,CAAC,IAAI,CAAC;IACnB,MAAM,SAAS,GAAG,CAAC,CAAC,WAAW,GAAG,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC;IAChF,MAAM,MAAM,GAAG,CAAC,CAAC,MAAM,IAAI,CAAC,CAAC,MAAM,CAAC;IACpC,MAAM,QAAQ,GAAG,MAAM,IAAI,GAAG,EAAE,IAAI,QAAQ,CAAC;IAC7C,MAAM,cAAc,GAAG,CAAC,CAAC,MAAM,IAAI,CAAC,CAAC,MAAM,CAAC;IAC5C,MAAM,eAAe,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,IAAI,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC;IAC7E,MAAM,eAAe,GAAG,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,IAAI,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC;IAC5E,MAAM,eAAe,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,IAAI,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC;IAC7E,MAAM,eAAe,GAAG,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,IAAI,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC;IAC5E,MAAM,KAAK,GAAG,eAAe,GAAG,eAAe,CAAC;IAChD,iGAAiG;IACjG,sFAAsF;IACtF,MAAM,QAAQ,GAAG,eAAe,GAAG,eAAe,KAAK,MAAM,CAAC;IAC9D,8FAA8F;IAC9F,qGAAqG;IACrG,iGAAiG;IACjG,oFAAoF;IACpF,MAAM,YAAY,GAAG,QAAQ,KAAK,SAAS,IAAI,SAAS,IAAI,QAAQ,IAAI,CAAC,MAAM,IAAI,QAAQ,CAAC;IAC5F,4FAA4F;IAC5F,kGAAkG;IAClG,mEAAmE;IACnE,gGAAgG;IAChG,gGAAgG;IAChG,yFAAyF;IACzF,gGAAgG;IAChG,iFAAiF;IACjF,MAAM,YAAY,GAAG,CAAC,YAAY,CAAC;IAEnC,MAAM,IAAI,GAAG,CAAC,CAAS,EAAE,EAAE,CAAC,GAAG,YAAY,CAAC,CAAC,EAAE,KAAK,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,KAAK,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC;IAC7F,gFAAgF;IAChF,MAAM,KAAK,GAAG,UAAU,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;IACxC,MAAM,OAAO,GAAG,KAAK,CAAC,UAAU,CAAC;IACjC,6FAA6F;IAC7F,MAAM,eAAe,GACnB,KAAK,CAAC,OAAO,KAAK,IAAI,CAAC,CAAC,CAAC,2BAA2B,KAAK,CAAC,IAAI,+BAA+B,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,IAAI,2DAA2D,CAAC;IAC3K,OAAO;QACL,KAAK,EAAE,KAAK,CAAC,MAAM;QACnB,SAAS;QACT,WAAW,EAAE,YAAY,CAAC,MAAM,EAAE,KAAK,CAAC,aAAa,CAAC;QACtD,MAAM,EAAE,GAAG,YAAY,CAAC,MAAM,EAAE,KAAK,CAAC,aAAa,CAAC,IAAI,KAAK,CAAC,MAAM,EAAE;QACtE,SAAS,EAAE,IAAI,CAAC,KAAK,CAAC;QACtB,IAAI;QACJ,kGAAkG;QAClG,0EAA0E;QAC1E,cAAc,EAAE,WAAW,CAAC,CAAC,CAAC,0BAA0B,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,uBAAuB,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC;QAC/G,gBAAgB,EAAE,WAAW,CAAC,CAAC,CAAC,0BAA0B,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,uBAAuB,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;QACzH,kBAAkB,EAAE,GAAG,YAAY,CAAC,gBAAgB,EAAE,KAAK,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,KAAK,CAAC,KAAK,CAAC,MAAM,YAAY;QAC7G,IAAI,EAAE;YACJ,SAAS,EAAE,SAAS,CAAC,QAAQ,EAAE;YAC/B,OAAO,EAAE,KAAK,CAAC,QAAQ,EAAE;YACzB,QAAQ,EAAE,IAAI,CAAC,MAAM;YACrB,WAAW,EAAE,GAAG,CAAC,MAAM;YACvB,UAAU,EAAE,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,KAAK,CAAC,QAAQ,EAAE,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC;YACjE,WAAW,EAAE,KAAK,CAAC,GAAG,EAAE,KAAK,CAAC,KAAK,CAAC,QAAQ,EAAE,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC;YACjE,QAAQ;YACR,MAAM;YACN,GAAG,CAAC,cAAc,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,cAAc,EAAE,cAAc,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YACtF,MAAM;YACN,YAAY;YACZ,IAAI,EAAE,CAAC,QAAQ,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,uDAAuD,QAAQ,gCAAgC,eAAe,qBAAqB,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,WAAW;gBACxL,CAAC,CAAC,sBAAsB,WAAW,2JAA2J,OAAO,wDAAwD,KAAK,CAAC,IAAI,oDAAoD;gBAC3T,CAAC,CAAC,YAAY;oBACZ,CAAC,CAAC,gKAAgK;oBAClK,CAAC,CAAC,MAAM;wBACN,CAAC,CAAC,4BAA4B,KAAK,GAAG,SAAS,GAAG,EAAE,WAAW,KAAK,GAAG,CAAC,QAAQ,IAAI,EAAE,CAAC,GAAG,EAAE,+CAA+C,cAAc,IAAI,GAAG,iCAAiC,QAAQ,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,QAAQ,IAAI,MAAM,CAAC,GAAG,IAAI,CAAC,eAAe,CAAC,CAAC,CAAC,GAAG,MAAM,WAAW,mCAAmC,cAAc,CAAC,CAAC,CAAC,CAAC,KAAK,GAAG,CAAC,QAAQ,IAAI,EAAE,CAAC,GAAG,cAAc,CAAC,GAAG,cAAc,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,wBAAwB,QAAQ,CAAC,CAAC,CAAC,kJAAkJ,CAAC,CAAC,CAAC,0CAA0C,QAAQ,OAAO,+CAA+C,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,0BAA0B,4CAA4C;wBAC1xB,CAAC,CAAC,QAAQ;4BACR,CAAC,CAAC,8CAA8C,KAAK,GAAG,SAAS,GAAG,EAAE,kDAAkD,SAAS,GAAG,QAAQ,KAAK,SAAS,CAAC,CAAC,CAAC,gEAAgE,CAAC,CAAC,CAAC,wCAAwC,QAAQ,EAAE,oJAAoJ;4BACta,CAAC,CAAC,qIAAqI,CAAC;SACjJ;QACD,eAAe,EAAE,MAAM,CAAC,KAAK,CAAC;KAC/B,CAAC;AACJ,CAAC"}
|
package/dist/preflight.d.ts
CHANGED
|
@@ -27,6 +27,15 @@ export declare function classifyRevert(obs: RevertObservation): {
|
|
|
27
27
|
status: PreflightStatus;
|
|
28
28
|
note: string;
|
|
29
29
|
};
|
|
30
|
+
/**
|
|
31
|
+
* Did the CHAIN refuse this, or did the RPC fail to ask it? Every failure used to read as "cannot pay",
|
|
32
|
+
* so one HTTP 502 on the first simulation reported a fully-exitable position as unexitable AND blamed
|
|
33
|
+
* the vault for it (measured through a proxy that failed exactly one call: one attempt made, the vault
|
|
34
|
+
* never asked, `exitableNow: "unknown"`, note "the refusal is the vault's").
|
|
35
|
+
* viem's own error chain separates them: a real revert carries a ContractFunctionRevertedError or an
|
|
36
|
+
* ExecutionRevertedError; a transport failure does not.
|
|
37
|
+
*/
|
|
38
|
+
export declare function isRevert(e: unknown): boolean;
|
|
30
39
|
/** Pulls the revert payload out of viem's error chain. Returns undefined for anything that is not a definite revert. */
|
|
31
40
|
export declare function extractRevert(err: unknown): RevertObservation | undefined;
|
|
32
41
|
export interface PreflightResult {
|
package/dist/preflight.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { BaseError, ContractFunctionRevertedError, } from "viem";
|
|
1
|
+
import { BaseError, ContractFunctionRevertedError, ExecutionRevertedError, } from "viem";
|
|
2
2
|
import { erc4626Abi, knownRevertSelectors } from "./abi/erc4626.js";
|
|
3
3
|
import { erc4626Chassis } from "./registry-schema.js";
|
|
4
4
|
import { describeError } from "./redact.js";
|
|
@@ -34,6 +34,17 @@ export function classifyRevert(obs) {
|
|
|
34
34
|
`insufficient asset balance at the depositor; a chassis-specific gate this client has not seen. Raw: ${obs.raw ?? "n/a"}.`,
|
|
35
35
|
};
|
|
36
36
|
}
|
|
37
|
+
/**
|
|
38
|
+
* Did the CHAIN refuse this, or did the RPC fail to ask it? Every failure used to read as "cannot pay",
|
|
39
|
+
* so one HTTP 502 on the first simulation reported a fully-exitable position as unexitable AND blamed
|
|
40
|
+
* the vault for it (measured through a proxy that failed exactly one call: one attempt made, the vault
|
|
41
|
+
* never asked, `exitableNow: "unknown"`, note "the refusal is the vault's").
|
|
42
|
+
* viem's own error chain separates them: a real revert carries a ContractFunctionRevertedError or an
|
|
43
|
+
* ExecutionRevertedError; a transport failure does not.
|
|
44
|
+
*/
|
|
45
|
+
export function isRevert(e) {
|
|
46
|
+
return e instanceof BaseError && e.walk((x) => x instanceof ContractFunctionRevertedError || x instanceof ExecutionRevertedError) !== null;
|
|
47
|
+
}
|
|
37
48
|
/** Pulls the revert payload out of viem's error chain. Returns undefined for anything that is not a definite revert. */
|
|
38
49
|
export function extractRevert(err) {
|
|
39
50
|
if (!(err instanceof BaseError))
|
|
@@ -127,8 +138,8 @@ export async function preflightDeposit(args) {
|
|
|
127
138
|
const previewShares = await client.readContract({ address: vault.address, abi: erc4626Abi, functionName: "previewDeposit", args: [assets] });
|
|
128
139
|
quotes.previewShares = `${formatAmount(previewShares, vault.shareDecimals)} ${vault.symbol}`;
|
|
129
140
|
}
|
|
130
|
-
catch {
|
|
131
|
-
findings.push("previewDeposit() reverted; no shares quote");
|
|
141
|
+
catch (e) {
|
|
142
|
+
findings.push(isRevert(e) ? "previewDeposit() reverted; no shares quote" : `previewDeposit() could not be read, so no shares quote (the RPC failed, not the vault): ${describeError(e)}`);
|
|
132
143
|
}
|
|
133
144
|
// The verdict: simulate the real call from the real depositor.
|
|
134
145
|
try {
|
package/dist/preflight.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"preflight.js","sourceRoot":"","sources":["../src/preflight.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,SAAS,EACT,6BAA6B,
|
|
1
|
+
{"version":3,"file":"preflight.js","sourceRoot":"","sources":["../src/preflight.ts"],"names":[],"mappings":"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"}
|
package/dist/quote.js
CHANGED
|
@@ -1,20 +1,28 @@
|
|
|
1
1
|
import { erc4626Abi } from "./abi/erc4626.js";
|
|
2
2
|
import { describeError } from "./redact.js";
|
|
3
3
|
import { parseAmount, formatAmount } from "./units.js";
|
|
4
|
-
import { preflightDeposit, extractRevert } from "./preflight.js";
|
|
4
|
+
import { preflightDeposit, extractRevert, isRevert } from "./preflight.js";
|
|
5
5
|
export async function quoteDeposit(args) {
|
|
6
6
|
const { vault, depositor, client } = args;
|
|
7
7
|
const assets = parseAmount(args.assetsHuman, vault.asset.decimals, `deposit amount (${vault.asset.symbol})`);
|
|
8
8
|
const pre = await preflightDeposit({ vault, depositor, assetsHuman: args.assetsHuman, client });
|
|
9
|
+
let previewError;
|
|
9
10
|
const [previewShares, oneShareInAssets] = await Promise.all([
|
|
10
|
-
client.readContract({ address: vault.address, abi: erc4626Abi, functionName: "previewDeposit", args: [assets] }).catch(() =>
|
|
11
|
+
client.readContract({ address: vault.address, abi: erc4626Abi, functionName: "previewDeposit", args: [assets] }).catch((e) => {
|
|
12
|
+
previewError = e;
|
|
13
|
+
return undefined;
|
|
14
|
+
}),
|
|
11
15
|
client.readContract({ address: vault.address, abi: erc4626Abi, functionName: "convertToAssets", args: [10n ** BigInt(vault.shareDecimals)] }),
|
|
12
16
|
]);
|
|
13
17
|
const q = {
|
|
14
18
|
vault: vault.symbol,
|
|
15
19
|
depositor,
|
|
16
20
|
amountUsdc: `${formatAmount(assets, vault.asset.decimals)} ${vault.asset.symbol}`,
|
|
17
|
-
expectedShares: previewShares
|
|
21
|
+
expectedShares: previewShares !== undefined
|
|
22
|
+
? `${formatAmount(previewShares, vault.shareDecimals)} ${vault.symbol}`
|
|
23
|
+
: isRevert(previewError)
|
|
24
|
+
? "unavailable (previewDeposit reverted)"
|
|
25
|
+
: `unavailable (previewDeposit could not be read; the RPC failed, not the vault: ${describeError(previewError)})`,
|
|
18
26
|
sharePriceInAssets: `${formatAmount(oneShareInAssets, vault.asset.decimals)} ${vault.asset.symbol} per share`,
|
|
19
27
|
preflight: pre,
|
|
20
28
|
canProceed: pre.canDeposit,
|
|
@@ -49,14 +57,23 @@ export async function quoteWithdraw(args) {
|
|
|
49
57
|
// "approve first" wording is wrong here (it was reused, and told an agent to approve USDC
|
|
50
58
|
// when the vault simply had 0.80 USDC liquid — measured 2026-09-13 on a Fusion vault).
|
|
51
59
|
const reason = obs.reason ?? "";
|
|
60
|
+
const said = reason || obs.selector || "no reason returned";
|
|
52
61
|
if (toBurn !== undefined && held < toBurn) {
|
|
53
|
-
note = `withdraw() reverted: the owner holds ${formatAmount(held, vault.shareDecimals)} ${vault.symbol} against ${formatAmount(toBurn, vault.shareDecimals)} needed — insufficient shares. (${
|
|
62
|
+
note = `withdraw() reverted: the owner holds ${formatAmount(held, vault.shareDecimals)} ${vault.symbol} against ${formatAmount(toBurn, vault.shareDecimals)} needed — insufficient shares. (${said})`;
|
|
54
63
|
}
|
|
55
|
-
else if (/transfer amount exceeds balance|ERC20InsufficientBalance/i.test(reason) || liquid < assets) {
|
|
56
|
-
|
|
64
|
+
else if (vault.chassis === "fusion" && (/transfer amount exceeds balance|ERC20InsufficientBalance/i.test(reason) || liquid < assets)) {
|
|
65
|
+
// Only Fusion pays a withdrawal from the vault's own balance (and, where it has them, its
|
|
66
|
+
// instant-withdrawal fuses), so only there does idle balance below the amount explain a revert.
|
|
67
|
+
// A Morpho Vault V2 holds almost no idle asset and pays out of its markets: reading
|
|
68
|
+
// `liquid < assets` there reported every revert as this note and hid the real one (#78).
|
|
69
|
+
note = `withdraw() reverted ("${said}"): the vault holds ${formatAmount(liquid, vault.asset.decimals)} ${vault.asset.symbol} liquid against ${formatAmount(assets, vault.asset.decimals)} requested — this chassis pays withdrawals from its own balance in the same block; the rest is deployed and needs the fund to unwind first. Withdraw at most the liquid amount now, or wait. maxWithdraw() (${maxW === undefined ? "reverted" : formatAmount(maxW, vault.asset.decimals)}) does not know this.`;
|
|
70
|
+
}
|
|
71
|
+
else if (vault.chassis === "morpho-v2") {
|
|
72
|
+
const shares = toBurn === undefined ? "previewWithdraw reverted, so the shares needed are unknown" : `the owner holds enough shares (${formatAmount(held, vault.shareDecimals)} against ${formatAmount(toBurn, vault.shareDecimals)} needed)`;
|
|
73
|
+
note = `withdraw() reverted "${said}" for ${formatAmount(assets, vault.asset.decimals)} ${vault.asset.symbol}; ${shares}. A Morpho Vault V2 pays a withdrawal from its idle ${vault.asset.symbol} and then through its liquidity adapter, so the revert can come from the vault or from a market it withdraws from; the reason above is the chain's own. A smaller amount may still pass: quote it before preparing anything.`;
|
|
57
74
|
}
|
|
58
75
|
else {
|
|
59
|
-
note = `withdraw() reverted "${
|
|
76
|
+
note = `withdraw() reverted "${said}" — not a balance or liquidity shortfall; treat as a vault-side refusal.`;
|
|
60
77
|
}
|
|
61
78
|
}
|
|
62
79
|
else {
|
package/dist/quote.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"quote.js","sourceRoot":"","sources":["../src/quote.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAE9C,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAC5C,OAAO,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAEvD,OAAO,EAAE,gBAAgB,EAAE,aAAa,EAAwB,MAAM,gBAAgB,CAAC;
|
|
1
|
+
{"version":3,"file":"quote.js","sourceRoot":"","sources":["../src/quote.ts"],"names":[],"mappings":"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"}
|
package/dist/redact.d.ts
CHANGED
|
@@ -13,7 +13,7 @@
|
|
|
13
13
|
* `Request body:` / `http(s)://…` content masked → the error's name.
|
|
14
14
|
*/
|
|
15
15
|
export declare function describeError(e: unknown, max?: number): string;
|
|
16
|
-
/** Register the source of known-secret values. Called by
|
|
16
|
+
/** Register the source of known-secret values. Called by `buildCommands()` before any command runs. */
|
|
17
17
|
export declare function registerSecretSource(f: () => readonly string[]): void;
|
|
18
18
|
/**
|
|
19
19
|
* Mask literal secret VALUES wherever they appear, in any shape.
|
|
@@ -34,8 +34,8 @@ export declare function registerSecretSource(f: () => readonly string[]): void;
|
|
|
34
34
|
* split across whitespace. No implementation can, and attempting it would over-redact wildly; those
|
|
35
35
|
* are the residual the shape rules below exist for (review).
|
|
36
36
|
*
|
|
37
|
-
* ⚠️ VALUE MASKING IS A PROPERTY OF THE
|
|
38
|
-
* called
|
|
37
|
+
* ⚠️ VALUE MASKING IS A PROPERTY OF THE COMMANDS, NOT OF THIS LIBRARY. `registerSecretSource` is
|
|
38
|
+
* called in `buildCommands()`. A consumer importing `describeError`/`redactEndpoints`
|
|
39
39
|
* directly gets `secretSource = () => []` and therefore the shape rules only — which degrades safely
|
|
40
40
|
* and is the documented backstop, but is not inherited.
|
|
41
41
|
*/
|
package/dist/redact.js
CHANGED
|
@@ -35,7 +35,7 @@ export function describeError(e, max = 200) {
|
|
|
35
35
|
* process (tests do it), and a snapshot taken at import time would go stale.
|
|
36
36
|
*/
|
|
37
37
|
let secretSource = () => [];
|
|
38
|
-
/** Register the source of known-secret values. Called by
|
|
38
|
+
/** Register the source of known-secret values. Called by `buildCommands()` before any command runs. */
|
|
39
39
|
export function registerSecretSource(f) {
|
|
40
40
|
secretSource = f;
|
|
41
41
|
}
|
|
@@ -58,8 +58,8 @@ export function registerSecretSource(f) {
|
|
|
58
58
|
* split across whitespace. No implementation can, and attempting it would over-redact wildly; those
|
|
59
59
|
* are the residual the shape rules below exist for (review).
|
|
60
60
|
*
|
|
61
|
-
* ⚠️ VALUE MASKING IS A PROPERTY OF THE
|
|
62
|
-
* called
|
|
61
|
+
* ⚠️ VALUE MASKING IS A PROPERTY OF THE COMMANDS, NOT OF THIS LIBRARY. `registerSecretSource` is
|
|
62
|
+
* called in `buildCommands()`. A consumer importing `describeError`/`redactEndpoints`
|
|
63
63
|
* directly gets `secretSource = () => []` and therefore the shape rules only — which degrades safely
|
|
64
64
|
* and is the documented backstop, but is not inherited.
|
|
65
65
|
*/
|
package/dist/redact.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"redact.js","sourceRoot":"","sources":["../src/redact.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AACH,MAAM,UAAU,aAAa,CAAC,CAAU,EAAE,GAAG,GAAG,GAAG;IACjD,MAAM,IAAI,GAAG,CAA4F,CAAC;IAC1G,IAAI,CAAS,CAAC;IACd,IAAI,IAAI,IAAI,OAAO,IAAI,CAAC,YAAY,KAAK,QAAQ,IAAI,IAAI,CAAC,YAAY,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAClF,CAAC,GAAG,IAAI,CAAC,YAAY,CAAC;QACtB,IAAI,OAAO,IAAI,CAAC,OAAO,KAAK,QAAQ,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC;YAAE,CAAC,GAAG,GAAG,CAAC,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;IAC3H,CAAC;SAAM,IAAI,IAAI,IAAI,OAAO,IAAI,CAAC,OAAO,KAAK,QAAQ,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC;QAAE,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC;;QAC5F,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;IACnB,CAAC,GAAG,eAAe,CAAC,CAAC,CAAC,CAAC;IACvB,MAAM,SAAS,GAAG,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,MAAM,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC;IACtE,OAAO,SAAS,CAAC,MAAM,GAAG,GAAG,CAAC,CAAC,CAAC,GAAG,SAAS,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,SAAS,CAAC;AAC5E,CAAC;AAED;;;;;GAKG;AACH,IAAI,YAAY,GAA4B,GAAG,EAAE,CAAC,EAAE,CAAC;AAErD,
|
|
1
|
+
{"version":3,"file":"redact.js","sourceRoot":"","sources":["../src/redact.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AACH,MAAM,UAAU,aAAa,CAAC,CAAU,EAAE,GAAG,GAAG,GAAG;IACjD,MAAM,IAAI,GAAG,CAA4F,CAAC;IAC1G,IAAI,CAAS,CAAC;IACd,IAAI,IAAI,IAAI,OAAO,IAAI,CAAC,YAAY,KAAK,QAAQ,IAAI,IAAI,CAAC,YAAY,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAClF,CAAC,GAAG,IAAI,CAAC,YAAY,CAAC;QACtB,IAAI,OAAO,IAAI,CAAC,OAAO,KAAK,QAAQ,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC;YAAE,CAAC,GAAG,GAAG,CAAC,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;IAC3H,CAAC;SAAM,IAAI,IAAI,IAAI,OAAO,IAAI,CAAC,OAAO,KAAK,QAAQ,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC;QAAE,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC;;QAC5F,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;IACnB,CAAC,GAAG,eAAe,CAAC,CAAC,CAAC,CAAC;IACvB,MAAM,SAAS,GAAG,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,MAAM,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC;IACtE,OAAO,SAAS,CAAC,MAAM,GAAG,GAAG,CAAC,CAAC,CAAC,GAAG,SAAS,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,SAAS,CAAC;AAC5E,CAAC;AAED;;;;;GAKG;AACH,IAAI,YAAY,GAA4B,GAAG,EAAE,CAAC,EAAE,CAAC;AAErD,uGAAuG;AACvG,MAAM,UAAU,oBAAoB,CAAC,CAA0B;IAC7D,YAAY,GAAG,CAAC,CAAC;AACnB,CAAC;AAED;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,MAAM,UAAU,aAAa,CAAC,CAAS,EAAE,UAA6B,YAAY,EAAE;IAClF,IAAI,GAAG,GAAG,CAAC,CAAC;IACZ,KAAK,MAAM,GAAG,IAAI,OAAO,EAAE,CAAC;QAC1B,IAAI,CAAC,GAAG,IAAI,GAAG,CAAC,MAAM,GAAG,CAAC;YAAE,SAAS;QACrC,GAAG,GAAG,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,uCAAuC;IAClF,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC;AAED,sHAAsH;AACtH,MAAM,UAAU,eAAe,CAAC,CAAS;IACvC,OAAO,aAAa,CAAC,CAAC,CAAC;QACrB,sFAAsF;SACrF,OAAO,CAAC,wCAAwC,EAAE,gBAAgB,CAAC;QACpE,yFAAyF;QACzF,8FAA8F;QAC9F,2FAA2F;QAC3F,yFAAyF;QACzF,kFAAkF;QAClF,mFAAmF;SAClF,OAAO,CACN,+GAA+G,EAC/G,CAAC,CAAC,EAAE,KAAa,EAAE,IAAY,EAAE,EAAE,CACjC,+DAA+D,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,KAAK,iBAAiB,CAC7G;QACD,sDAAsD;SACrD,OAAO,CAAC,yDAAyD,EAAE,gBAAgB,CAAC;SACpF,OAAO,CAAC,kDAAkD,EAAE,EAAE,CAAC;SAC/D,OAAO,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC;AAC9B,CAAC"}
|
|
@@ -8,13 +8,13 @@ export type Chassis = z.infer<typeof chassisSchema>;
|
|
|
8
8
|
/**
|
|
9
9
|
* Which chassis expose a standard ERC-4626 `deposit`/`redeem` to a depositor. Enzyme does not
|
|
10
10
|
* (`buyShares` via the comptroller), which is what every refusal path in this client is measured
|
|
11
|
-
* against: build, pre-flight, the
|
|
11
|
+
* against: build, pre-flight, the command boundary and the default-vault rule all discriminate on it.
|
|
12
12
|
*/
|
|
13
13
|
export declare const erc4626Chassis: ReadonlySet<Chassis>;
|
|
14
14
|
/**
|
|
15
15
|
* Whose contract the depositor's USDC actually enters.
|
|
16
|
-
* - `morpho`: a public third-party Morpho vault, reached directly. No row uses it today (Tempora vaults only).
|
|
17
|
-
* - `tempora`: a Tempora fund vault (the product; each fund joins as it goes live).
|
|
16
|
+
* - `morpho`: a public third-party Morpho vault, reached directly. No row uses it today (Tempora Labs vaults only).
|
|
17
|
+
* - `tempora`: a Tempora Labs fund vault (the product; each fund joins as it goes live).
|
|
18
18
|
*/
|
|
19
19
|
export declare const backendSchema: z.ZodEnum<{
|
|
20
20
|
morpho: "morpho";
|
|
@@ -45,7 +45,7 @@ export declare const vaultEntrySchema: z.ZodObject<{
|
|
|
45
45
|
symbol: z.ZodString;
|
|
46
46
|
name: z.ZodString;
|
|
47
47
|
warning: z.ZodString;
|
|
48
|
-
chainId: z.ZodLiteral<8453>;
|
|
48
|
+
chainId: z.ZodUnion<readonly [z.ZodLiteral<8453>, z.ZodLiteral<42161>, z.ZodLiteral<4663>]>;
|
|
49
49
|
address: z.ZodPipe<z.ZodString & z.ZodType<`0x${string}`, string, z.core.$ZodTypeInternals<`0x${string}`, string>>, z.ZodTransform<`0x${string}`, `0x${string}`>>;
|
|
50
50
|
chassis: z.ZodEnum<{
|
|
51
51
|
"morpho-v2": "morpho-v2";
|
|
@@ -88,7 +88,7 @@ export declare const registrySchema: z.ZodObject<{
|
|
|
88
88
|
symbol: z.ZodString;
|
|
89
89
|
name: z.ZodString;
|
|
90
90
|
warning: z.ZodString;
|
|
91
|
-
chainId: z.ZodLiteral<8453>;
|
|
91
|
+
chainId: z.ZodUnion<readonly [z.ZodLiteral<8453>, z.ZodLiteral<42161>, z.ZodLiteral<4663>]>;
|
|
92
92
|
address: z.ZodPipe<z.ZodString & z.ZodType<`0x${string}`, string, z.core.$ZodTypeInternals<`0x${string}`, string>>, z.ZodTransform<`0x${string}`, `0x${string}`>>;
|
|
93
93
|
chassis: z.ZodEnum<{
|
|
94
94
|
"morpho-v2": "morpho-v2";
|
package/dist/registry-schema.js
CHANGED
|
@@ -10,13 +10,13 @@ export const chassisSchema = z.enum(["morpho-v2", "fusion", "enzyme"]);
|
|
|
10
10
|
/**
|
|
11
11
|
* Which chassis expose a standard ERC-4626 `deposit`/`redeem` to a depositor. Enzyme does not
|
|
12
12
|
* (`buyShares` via the comptroller), which is what every refusal path in this client is measured
|
|
13
|
-
* against: build, pre-flight, the
|
|
13
|
+
* against: build, pre-flight, the command boundary and the default-vault rule all discriminate on it.
|
|
14
14
|
*/
|
|
15
15
|
export const erc4626Chassis = new Set(["morpho-v2", "fusion"]);
|
|
16
16
|
/**
|
|
17
17
|
* Whose contract the depositor's USDC actually enters.
|
|
18
|
-
* - `morpho`: a public third-party Morpho vault, reached directly. No row uses it today (Tempora vaults only).
|
|
19
|
-
* - `tempora`: a Tempora fund vault (the product; each fund joins as it goes live).
|
|
18
|
+
* - `morpho`: a public third-party Morpho vault, reached directly. No row uses it today (Tempora Labs vaults only).
|
|
19
|
+
* - `tempora`: a Tempora Labs fund vault (the product; each fund joins as it goes live).
|
|
20
20
|
*/
|
|
21
21
|
export const backendSchema = z.enum(["morpho", "tempora"]);
|
|
22
22
|
/**
|
|
@@ -52,11 +52,20 @@ export const vaultEntrySchema = z
|
|
|
52
52
|
* than summarising it.
|
|
53
53
|
*/
|
|
54
54
|
warning: z.string().min(1),
|
|
55
|
-
|
|
55
|
+
/**
|
|
56
|
+
* The chain the vault is on. One literal per chain in `chains` (`src/client.ts`), spelled out so
|
|
57
|
+
* `VaultEntry["chainId"]` stays a union of literals — `registry.test.ts` holds the two lists equal.
|
|
58
|
+
* 🔴 Adding a chain here also needs its row in `CHAIN_INFO` (a compile error until it has one) and
|
|
59
|
+
* in `links.ts`'s explorer map (which throws on a chain it does not know).
|
|
60
|
+
*/
|
|
61
|
+
chainId: z.union([z.literal(8453), z.literal(42161), z.literal(4663)]),
|
|
56
62
|
address,
|
|
57
63
|
chassis: chassisSchema,
|
|
58
64
|
backend: backendSchema,
|
|
59
|
-
/**
|
|
65
|
+
/**
|
|
66
|
+
* Exactly one vault PER CHAIN carries this: the vault the tools use when a caller names a chain
|
|
67
|
+
* and no vault. Which chain is used when the caller names neither is `EARN.defaultChain`.
|
|
68
|
+
*/
|
|
60
69
|
isDefault: z.boolean().default(false),
|
|
61
70
|
asset: z.object({ address, symbol: z.string().min(1), decimals: z.number().int().min(0).max(36) }),
|
|
62
71
|
/** Measured on-chain via `decimals()`. 18 on Morpho V2 and Enzyme, 8 on Fusion — never assume. */
|
|
@@ -100,17 +109,22 @@ export const registrySchema = z
|
|
|
100
109
|
.superRefine((r, ctx) => {
|
|
101
110
|
const symbols = new Set();
|
|
102
111
|
const addrs = new Set();
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
112
|
+
// One default PER CHAIN that has a vault: a caller who names a chain and no vault must get an
|
|
113
|
+
// answer on every chain the registry offers, and exactly one.
|
|
114
|
+
for (const chainId of [...new Set(r.vaults.map((v) => v.chainId))]) {
|
|
115
|
+
const defaults = r.vaults.filter((v) => v.chainId === chainId && v.isDefault);
|
|
116
|
+
if (defaults.length !== 1) {
|
|
117
|
+
ctx.addIssue({ code: "custom", path: ["vaults"], message: `exactly one vault per chain must be isDefault; chain ${chainId} has ${defaults.length}` });
|
|
118
|
+
}
|
|
119
|
+
// A default may be WHITELIST_GATED. The
|
|
120
|
+
// pre-flight re-measures access live on every call and refuses a non-member, so
|
|
121
|
+
// a gated default costs an agent a clear refusal, never funds. It must still be a chassis this client
|
|
122
|
+
// can build for, and it may not be closed for any other reason.
|
|
123
|
+
for (const d of defaults) {
|
|
124
|
+
if (!(erc4626Chassis.has(d.chassis) && (d.depositOpen.open || d.depositOpen.reason === "WHITELIST_GATED"))) {
|
|
125
|
+
ctx.addIssue({ code: "custom", path: ["vaults"], message: `the default vault (${d.symbol}) must be ERC-4626 and either measured open or WHITELIST_GATED` });
|
|
126
|
+
}
|
|
127
|
+
}
|
|
114
128
|
}
|
|
115
129
|
r.vaults.forEach((v, i) => {
|
|
116
130
|
if (symbols.has(v.symbol))
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"registry-schema.js","sourceRoot":"","sources":["../src/registry-schema.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,MAAM,CAAC;AAE7C,oGAAoG;AACpG,uEAAuE;AACvE,MAAM,OAAO,GAAG,CAAC;KACd,MAAM,EAAE;KACR,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,SAAS,CAAC,CAAC,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,EAAE,EAAE,OAAO,EAAE,+BAA+B,EAAE,CAAC;KAC3F,SAAS,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC;AAEnC,MAAM,CAAC,MAAM,aAAa,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,WAAW,EAAE,QAAQ,EAAE,QAAQ,CAAC,CAAC,CAAC;AAGvE;;;;GAIG;AACH,MAAM,CAAC,MAAM,cAAc,GAAyB,IAAI,GAAG,CAAU,CAAC,WAAW,EAAE,QAAQ,CAAC,CAAC,CAAC;AAG9F;;;;GAIG;AACH,MAAM,CAAC,MAAM,aAAa,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,QAAQ,EAAE,SAAS,CAAC,CAAC,CAAC;AAG3D;;;;;GAKG;AACH,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAAC,CAAC,MAAM,CAAC;IACxC,IAAI,EAAE,CAAC,CAAC,OAAO,EAAE;IACjB,MAAM,EAAE,CAAC,CAAC,OAAO,CAAC,iCAAiC,CAAC;IACpD,eAAe,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,QAAQ,EAAE;IAC5C,aAAa,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IACpC,uGAAuG;IACvG,MAAM,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,iBAAiB,EAAE,iBAAiB,EAAE,aAAa,EAAE,QAAQ,EAAE,gBAAgB,CAAC,CAAC,CAAC,QAAQ,EAAE;IAC5G,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;CAC9B,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,gBAAgB,GAAG,CAAC;KAC9B,MAAM,CAAC;IACN;;;;OAIG;IACH,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,8BAA8B,CAAC;IAC/D,yDAAyD;IACzD,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IACvB;;;;;;OAMG;IACH,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IAC1B,OAAO,EAAE,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC;
|
|
1
|
+
{"version":3,"file":"registry-schema.js","sourceRoot":"","sources":["../src/registry-schema.ts"],"names":[],"mappings":"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"}
|