otto-intel-mcp 0.1.2 → 0.1.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (239) hide show
  1. package/README.md +76 -18
  2. package/dist/account-userop-policy-definition.d.ts +14 -0
  3. package/dist/account-userop-policy-definition.js +12 -0
  4. package/dist/account-userop-policy-relation.d.ts +371 -0
  5. package/dist/account-userop-policy-relation.js +87 -0
  6. package/dist/adapter/cdp-signer.d.ts +76 -9
  7. package/dist/adapter/cdp-signer.js +274 -33
  8. package/dist/adapter/evm-call-failure.d.ts +29 -0
  9. package/dist/adapter/evm-call-failure.js +109 -0
  10. package/dist/adapter/refusal.d.ts +1 -1
  11. package/dist/adapter/refusal.js +13 -0
  12. package/dist/adapter/route-simulator.d.ts +91 -0
  13. package/dist/adapter/route-simulator.js +143 -0
  14. package/dist/adapter-cdp-index.d.ts +1 -1
  15. package/dist/executable-equities.d.ts +55 -0
  16. package/dist/executable-equities.js +116 -0
  17. package/dist/executable-yield-markets.d.ts +261 -0
  18. package/dist/executable-yield-markets.js +154 -0
  19. package/dist/execution-account-gas-quote.d.ts +141 -0
  20. package/dist/execution-account-gas-quote.js +443 -0
  21. package/dist/execution-account-gas-review.d.ts +123 -0
  22. package/dist/execution-account-gas-review.js +104 -0
  23. package/dist/execution-account-gas-runtime.d.ts +33 -0
  24. package/dist/execution-account-gas-runtime.js +131 -0
  25. package/dist/execution-account-gas-view.d.ts +936 -0
  26. package/dist/execution-account-gas-view.js +56 -0
  27. package/dist/execution-config.d.ts +3 -0
  28. package/dist/execution-config.js +4 -0
  29. package/dist/execution-delegated-definition.d.ts +7 -6
  30. package/dist/execution-delegated-definition.js +13 -2
  31. package/dist/execution-delegation-admin-definition.d.ts +127 -5
  32. package/dist/execution-delegation-admin-definition.js +155 -5
  33. package/dist/execution-delegation-admin.d.ts +48 -2
  34. package/dist/execution-delegation-admin.js +422 -12
  35. package/dist/execution-delegation-cap-store.d.ts +386 -0
  36. package/dist/execution-delegation-cap-store.js +1150 -0
  37. package/dist/execution-delegation-exit-definition.d.ts +309 -0
  38. package/dist/execution-delegation-exit-definition.js +204 -0
  39. package/dist/execution-delegation-exit-store.d.ts +114 -0
  40. package/dist/execution-delegation-exit-store.js +671 -0
  41. package/dist/execution-delegation-exit.d.ts +4 -0
  42. package/dist/execution-delegation-exit.js +614 -0
  43. package/dist/execution-delegation-finality.d.ts +22 -0
  44. package/dist/execution-delegation-finality.js +90 -0
  45. package/dist/execution-delegation-operation-store.d.ts +129 -0
  46. package/dist/execution-delegation-operation-store.js +1107 -0
  47. package/dist/execution-delegation-operations-definition.d.ts +282 -0
  48. package/dist/execution-delegation-operations-definition.js +117 -0
  49. package/dist/execution-delegation-operations.d.ts +6 -0
  50. package/dist/execution-delegation-operations.js +282 -0
  51. package/dist/execution-delegation-policy.d.ts +154 -8
  52. package/dist/execution-delegation-policy.js +273 -40
  53. package/dist/execution-delegation.d.ts +51 -0
  54. package/dist/execution-delegation.js +441 -31
  55. package/dist/execution-errors.d.ts +1 -1
  56. package/dist/execution-errors.js +122 -0
  57. package/dist/execution-index.d.ts +7 -2
  58. package/dist/execution-index.js +7 -2
  59. package/dist/execution-journal-schema.d.ts +96 -0
  60. package/dist/execution-journal-schema.js +368 -0
  61. package/dist/execution-journal-tables.d.ts +14 -0
  62. package/dist/execution-journal-tables.js +227 -0
  63. package/dist/execution-policy-compatibility.d.ts +34 -0
  64. package/dist/execution-policy-compatibility.js +76 -0
  65. package/dist/execution-registration.d.ts +54 -2
  66. package/dist/execution-registration.js +151 -5
  67. package/dist/execution-sponsored-account-profile.d.ts +32 -0
  68. package/dist/execution-sponsored-account-profile.js +59 -0
  69. package/dist/execution-sponsored-account.d.ts +1519 -0
  70. package/dist/execution-sponsored-account.js +222 -0
  71. package/dist/execution-sponsored-definition.d.ts +1713 -0
  72. package/dist/execution-sponsored-definition.js +185 -0
  73. package/dist/execution-sponsored-gas-policy.d.ts +27 -0
  74. package/dist/execution-sponsored-gas-policy.js +110 -0
  75. package/dist/execution-sponsored-hosted.d.ts +3 -0
  76. package/dist/execution-sponsored-hosted.js +71 -0
  77. package/dist/execution-sponsored-index.d.ts +1322 -0
  78. package/dist/execution-sponsored-index.js +102 -0
  79. package/dist/execution-sponsored-mcp-definition.d.ts +1662 -0
  80. package/dist/execution-sponsored-mcp-definition.js +94 -0
  81. package/dist/execution-sponsored-receipt.d.ts +47 -0
  82. package/dist/execution-sponsored-receipt.js +74 -0
  83. package/dist/execution-sponsored-registration.d.ts +14 -0
  84. package/dist/execution-sponsored-registration.js +77 -0
  85. package/dist/execution-sponsored-runtime.d.ts +84 -0
  86. package/dist/execution-sponsored-runtime.js +149 -0
  87. package/dist/execution-sponsored-settlement.d.ts +15 -0
  88. package/dist/execution-sponsored-settlement.js +88 -0
  89. package/dist/execution-sponsored-store.d.ts +67 -0
  90. package/dist/execution-sponsored-store.js +517 -0
  91. package/dist/execution-sponsored-transport.d.ts +90 -0
  92. package/dist/execution-sponsored-transport.js +180 -0
  93. package/dist/execution-tool-definitions.d.ts +21 -21
  94. package/dist/execution-tool-definitions.js +0 -7
  95. package/dist/execution-tools.d.ts +53 -1
  96. package/dist/execution-tools.js +171 -13
  97. package/dist/execution-worker-guard.d.ts +28 -0
  98. package/dist/execution-worker-guard.js +124 -0
  99. package/dist/hybrid-yield-index.d.ts +10 -0
  100. package/dist/hybrid-yield-index.js +11 -0
  101. package/dist/hybrid-yield-markets.d.ts +96 -0
  102. package/dist/hybrid-yield-markets.js +124 -0
  103. package/dist/hybrid-yield.d.ts +411 -0
  104. package/dist/hybrid-yield.js +155 -0
  105. package/dist/hyperliquid-order-builder.js +4 -0
  106. package/dist/lifi-execution-client.d.ts +6 -0
  107. package/dist/lifi-execution-client.js +3 -0
  108. package/dist/lp-userop-account.d.ts +461 -0
  109. package/dist/lp-userop-account.js +417 -0
  110. package/dist/lp-userop-authority.d.ts +49 -0
  111. package/dist/lp-userop-authority.js +211 -0
  112. package/dist/lp-userop-definition.d.ts +233 -0
  113. package/dist/lp-userop-definition.js +85 -0
  114. package/dist/lp-userop-hosted.d.ts +3 -0
  115. package/dist/lp-userop-hosted.js +73 -0
  116. package/dist/lp-userop-index.d.ts +1569 -0
  117. package/dist/lp-userop-index.js +112 -0
  118. package/dist/lp-userop-mcp-definition.d.ts +1220 -0
  119. package/dist/lp-userop-mcp-definition.js +46 -0
  120. package/dist/lp-userop-operation.d.ts +1230 -0
  121. package/dist/lp-userop-operation.js +140 -0
  122. package/dist/lp-userop-registration.d.ts +14 -0
  123. package/dist/lp-userop-registration.js +70 -0
  124. package/dist/lp-userop-settlement.d.ts +89 -0
  125. package/dist/lp-userop-settlement.js +184 -0
  126. package/dist/lp-userop.d.ts +643 -0
  127. package/dist/lp-userop.js +343 -0
  128. package/dist/native-yield-account-definition.d.ts +1192 -0
  129. package/dist/native-yield-account-definition.js +232 -0
  130. package/dist/native-yield-account-gas.d.ts +58 -0
  131. package/dist/native-yield-account-gas.js +228 -0
  132. package/dist/native-yield-account-index.d.ts +23 -0
  133. package/dist/native-yield-account-index.js +28 -0
  134. package/dist/native-yield-account-policy.d.ts +168 -0
  135. package/dist/native-yield-account-policy.js +525 -0
  136. package/dist/native-yield-account-rpc.d.ts +8 -0
  137. package/dist/native-yield-account-rpc.js +128 -0
  138. package/dist/native-yield-account-runtime.d.ts +71 -0
  139. package/dist/native-yield-account-runtime.js +125 -0
  140. package/dist/native-yield-account-store.d.ts +40 -0
  141. package/dist/native-yield-account-store.js +307 -0
  142. package/dist/native-yield-account.d.ts +662 -0
  143. package/dist/native-yield-account.js +371 -0
  144. package/dist/native-yield-consent-store.d.ts +20 -0
  145. package/dist/native-yield-consent-store.js +317 -0
  146. package/dist/native-yield-definition.d.ts +288 -0
  147. package/dist/native-yield-definition.js +105 -0
  148. package/dist/native-yield-reader.d.ts +4 -0
  149. package/dist/native-yield-reader.js +137 -0
  150. package/dist/native-yield-settlement.d.ts +48 -0
  151. package/dist/native-yield-settlement.js +167 -0
  152. package/dist/native-yield-simulation.d.ts +18 -0
  153. package/dist/native-yield-simulation.js +45 -0
  154. package/dist/native-yield-userop-account.d.ts +675 -0
  155. package/dist/native-yield-userop-account.js +357 -0
  156. package/dist/native-yield-userop-authority.d.ts +214 -0
  157. package/dist/native-yield-userop-authority.js +296 -0
  158. package/dist/native-yield-userop-definition.d.ts +331 -0
  159. package/dist/native-yield-userop-definition.js +105 -0
  160. package/dist/native-yield-userop-hosted.d.ts +3 -0
  161. package/dist/native-yield-userop-hosted.js +71 -0
  162. package/dist/native-yield-userop-index.d.ts +1522 -0
  163. package/dist/native-yield-userop-index.js +142 -0
  164. package/dist/native-yield-userop-mcp-definition.d.ts +1356 -0
  165. package/dist/native-yield-userop-mcp-definition.js +50 -0
  166. package/dist/native-yield-userop-operation.d.ts +845 -0
  167. package/dist/native-yield-userop-operation.js +127 -0
  168. package/dist/native-yield-userop-policy.d.ts +23 -0
  169. package/dist/native-yield-userop-policy.js +25 -0
  170. package/dist/native-yield-userop-registration.d.ts +17 -0
  171. package/dist/native-yield-userop-registration.js +76 -0
  172. package/dist/native-yield-userop-settlement.d.ts +8 -0
  173. package/dist/native-yield-userop-settlement.js +79 -0
  174. package/dist/native-yield-userop-simulation.d.ts +18 -0
  175. package/dist/native-yield-userop-simulation.js +34 -0
  176. package/dist/native-yield-userop.d.ts +35 -0
  177. package/dist/native-yield-userop.js +156 -0
  178. package/dist/native-yield-verify.d.ts +30 -0
  179. package/dist/native-yield-verify.js +141 -0
  180. package/dist/native-yield.d.ts +17 -0
  181. package/dist/native-yield.js +119 -0
  182. package/dist/stdio-main.js +0 -0
  183. package/dist/stock-buy-definition.d.ts +338 -0
  184. package/dist/stock-buy-definition.js +127 -0
  185. package/dist/stock-buy-oracle.d.ts +8 -0
  186. package/dist/stock-buy-oracle.js +22 -0
  187. package/dist/stock-buy.d.ts +17 -0
  188. package/dist/stock-buy.js +164 -0
  189. package/dist/tool-definitions.d.ts +3 -1
  190. package/dist/tool-definitions.js +55 -2
  191. package/dist/vendor/lp-v3/lp-v3-atomic-contract.d.ts +445 -0
  192. package/dist/vendor/lp-v3/lp-v3-atomic-contract.js +90 -0
  193. package/dist/vendor/lp-v3/lp-v3-atomic-evidence.d.ts +14 -0
  194. package/dist/vendor/lp-v3/lp-v3-atomic-evidence.js +82 -0
  195. package/dist/vendor/lp-v3/lp-v3-atomic-index.d.ts +80 -0
  196. package/dist/vendor/lp-v3/lp-v3-atomic-index.js +19 -0
  197. package/dist/vendor/lp-v3/lp-v3-atomic-plan.d.ts +43 -0
  198. package/dist/vendor/lp-v3/lp-v3-atomic-plan.js +112 -0
  199. package/dist/vendor/lp-v3/lp-v3-atomic-read-contract.d.ts +312 -0
  200. package/dist/vendor/lp-v3/lp-v3-atomic-read-contract.js +41 -0
  201. package/dist/vendor/lp-v3/lp-v3-atomic-read-index.d.ts +3 -0
  202. package/dist/vendor/lp-v3/lp-v3-atomic-read-index.js +3 -0
  203. package/dist/vendor/lp-v3/lp-v3-atomic-read-rpc.d.ts +49 -0
  204. package/dist/vendor/lp-v3/lp-v3-atomic-read-rpc.js +88 -0
  205. package/dist/vendor/lp-v3/lp-v3-atomic-read.d.ts +17 -0
  206. package/dist/vendor/lp-v3/lp-v3-atomic-read.js +232 -0
  207. package/dist/vendor/lp-v3/lp-v3-atomic-settlement.d.ts +105 -0
  208. package/dist/vendor/lp-v3/lp-v3-atomic-settlement.js +162 -0
  209. package/dist/vendor/lp-v3/lp-v3-collect-protocol-contract.d.ts +606 -0
  210. package/dist/vendor/lp-v3/lp-v3-collect-protocol-contract.js +59 -0
  211. package/dist/vendor/lp-v3/lp-v3-collect-protocol-index.d.ts +168 -0
  212. package/dist/vendor/lp-v3/lp-v3-collect-protocol-index.js +23 -0
  213. package/dist/vendor/lp-v3/lp-v3-collect-protocol-observation.d.ts +32 -0
  214. package/dist/vendor/lp-v3/lp-v3-collect-protocol-observation.js +228 -0
  215. package/dist/vendor/lp-v3/lp-v3-collect-protocol-plan.d.ts +11 -0
  216. package/dist/vendor/lp-v3/lp-v3-collect-protocol-plan.js +91 -0
  217. package/dist/vendor/lp-v3/lp-v3-collect-protocol-reconcile.d.ts +9 -0
  218. package/dist/vendor/lp-v3/lp-v3-collect-protocol-reconcile.js +124 -0
  219. package/dist/vendor/lp-v3/lp-v3-contract.d.ts +538 -0
  220. package/dist/vendor/lp-v3/lp-v3-contract.js +137 -0
  221. package/dist/vendor/lp-v3/lp-v3-evidence.d.ts +25 -0
  222. package/dist/vendor/lp-v3/lp-v3-evidence.js +168 -0
  223. package/dist/vendor/lp-v3/lp-v3-plan.d.ts +22 -0
  224. package/dist/vendor/lp-v3/lp-v3-plan.js +135 -0
  225. package/dist/vendor/lp-v3/types.d.ts +131 -0
  226. package/dist/vendor/lp-v3/types.js +6 -0
  227. package/dist/vendor/lp-v3/v4-math.d.ts +18 -0
  228. package/dist/vendor/lp-v3/v4-math.js +90 -0
  229. package/dist/yield-deposit-definition.d.ts +374 -0
  230. package/dist/yield-deposit-definition.js +123 -0
  231. package/dist/yield-deposit.d.ts +16 -0
  232. package/dist/yield-deposit.js +149 -0
  233. package/dist/yield-route-semantics.d.ts +27 -0
  234. package/dist/yield-route-semantics.js +71 -0
  235. package/dist/yield-withdraw-definition.d.ts +357 -0
  236. package/dist/yield-withdraw-definition.js +90 -0
  237. package/dist/yield-withdraw.d.ts +11 -0
  238. package/dist/yield-withdraw.js +122 -0
  239. package/package.json +239 -7
@@ -0,0 +1,90 @@
1
+ import { parseTransaction } from 'viem';
2
+ import { refuse } from './execution-errors.js';
3
+ function exactDelegatedChainTransaction(chain, operation, step) {
4
+ try {
5
+ const expected = parseTransaction(step.request.transaction);
6
+ return (expected.type === 'eip1559' && chain.type === expected.type && expected.chainId === 8453 &&
7
+ chain.hash.toLowerCase() === step.transactionHash.toLowerCase() &&
8
+ chain.from.toLowerCase() === operation.account.toLowerCase() &&
9
+ chain.to?.toLowerCase() === expected.to?.toLowerCase() &&
10
+ chain.input.toLowerCase() === expected.data?.toLowerCase() &&
11
+ chain.value === (expected.value ?? 0n) && chain.nonce === expected.nonce &&
12
+ chain.gas === expected.gas && chain.maxFeePerGas === expected.maxFeePerGas &&
13
+ chain.maxPriorityFeePerGas === expected.maxPriorityFeePerGas && chain.chainId === expected.chainId &&
14
+ JSON.stringify(chain.accessList ?? []) === JSON.stringify(expected.accessList ?? []) &&
15
+ step.request.userId === operation.userId &&
16
+ step.request.address.toLowerCase() === operation.account.toLowerCase() && step.request.network === 'base');
17
+ }
18
+ catch {
19
+ return false;
20
+ }
21
+ }
22
+ /**
23
+ * One exact finality rule for both the live worker and crash reconciliation. Ordinary canonical
24
+ * inclusion is not enough to release the cross-rail claim: the finalized head, canonical block,
25
+ * transaction request, and durable receipt must all agree.
26
+ */
27
+ export async function verifyDelegatedStepFinality(pub, operation, step) {
28
+ const receiptBackedTerminal = (step.state === 'confirmed' || step.state === 'failed') && step.receipt !== undefined;
29
+ if (step.state === 'failed' && !step.receipt)
30
+ return { outcome: 'verified' };
31
+ if (step.state !== 'submitted' && !receiptBackedTerminal)
32
+ return { outcome: 'unverified' };
33
+ if (!step.transactionHash)
34
+ return refuse('DELEGATION_REPLAY_MISMATCH', `the receipt-bearing delegated step ${step.index} has no durable transaction hash`);
35
+ let receipt;
36
+ try {
37
+ receipt = await pub.getTransactionReceipt({ hash: step.transactionHash });
38
+ }
39
+ catch {
40
+ return { outcome: 'unverified' };
41
+ }
42
+ let finalized;
43
+ try {
44
+ finalized = await pub.getBlock({ blockTag: 'finalized' });
45
+ }
46
+ catch {
47
+ return { outcome: 'unverified' };
48
+ }
49
+ if (finalized.number === null || finalized.hash === null || receipt.blockNumber > finalized.number)
50
+ return { outcome: 'unverified' };
51
+ let canonical;
52
+ let transaction;
53
+ try {
54
+ [canonical, transaction] = await Promise.all([
55
+ pub.getBlock({ blockNumber: receipt.blockNumber }),
56
+ pub.getTransaction({ hash: step.transactionHash }),
57
+ ]);
58
+ }
59
+ catch {
60
+ return { outcome: 'unverified' };
61
+ }
62
+ if (canonical.number !== receipt.blockNumber ||
63
+ canonical.hash?.toLowerCase() !== receipt.blockHash.toLowerCase() ||
64
+ (receipt.blockNumber === finalized.number &&
65
+ receipt.blockHash.toLowerCase() !== finalized.hash.toLowerCase()) ||
66
+ receipt.transactionHash.toLowerCase() !== step.transactionHash.toLowerCase() ||
67
+ receipt.from.toLowerCase() !== operation.account.toLowerCase() ||
68
+ transaction.blockHash?.toLowerCase() !== receipt.blockHash.toLowerCase() ||
69
+ transaction.blockNumber !== receipt.blockNumber ||
70
+ !exactDelegatedChainTransaction(transaction, operation, step) ||
71
+ receipt.to?.toLowerCase() !== transaction.to?.toLowerCase())
72
+ return refuse('DELEGATION_REPLAY_MISMATCH', `the finalized Base transaction or receipt for step ${step.index} does not match its durable request`);
73
+ const observed = {
74
+ transactionHash: step.transactionHash,
75
+ status: receipt.status,
76
+ blockNumber: receipt.blockNumber.toString(),
77
+ blockHash: receipt.blockHash,
78
+ gasUsed: receipt.gasUsed.toString(),
79
+ };
80
+ if (step.receipt && (step.receipt.transactionHash.toLowerCase() !== observed.transactionHash.toLowerCase() ||
81
+ step.receipt.status !== observed.status ||
82
+ step.receipt.blockNumber !== observed.blockNumber ||
83
+ step.receipt.blockHash.toLowerCase() !== observed.blockHash.toLowerCase() ||
84
+ step.receipt.gasUsed !== observed.gasUsed))
85
+ return refuse('DELEGATION_REPLAY_MISMATCH', `the canonical receipt for delegated step ${step.index} changed from its durable receipt`);
86
+ return step.state === 'submitted'
87
+ ? { outcome: 'seal', receipt: observed }
88
+ : { outcome: 'verified' };
89
+ }
90
+ //# sourceMappingURL=execution-delegation-finality.js.map
@@ -0,0 +1,129 @@
1
+ import { type DelegatedSendResult } from './execution-delegated-definition.js';
2
+ /** Public Base response version; the shared on-disk schema is versioned independently. */
3
+ export declare const DELEGATION_OPERATION_JOURNAL_SCHEMA_VERSION: 2;
4
+ export declare const DELEGATION_OPERATION_DB_FILE: "operations.db";
5
+ export declare const DELEGATION_OPERATION_HISTORY_LIMIT: 20;
6
+ /**
7
+ * SQLite's WAL-reset race is fixed in the maintained 3.44 and 3.50 branches and
8
+ * in the 3.51 line from 3.51.3 onward. Durable multi-process claims must refuse
9
+ * runtimes outside those known-safe release lines rather than rely on a deploy
10
+ * convention that an old worker can silently violate.
11
+ */
12
+ export declare function sqliteWalRuntimeIsSafe(version: string | undefined): boolean;
13
+ export declare const DELEGATION_OPERATION_STATES: readonly ["prepared", "submitted", "confirmed", "failed", "unknown"];
14
+ export type DelegationOperationState = (typeof DELEGATION_OPERATION_STATES)[number];
15
+ export declare const DELEGATION_OPERATION_STEP_STATES: readonly ["prepared", "submitted", "confirmed", "failed", "unknown"];
16
+ export type DelegationOperationStepState = (typeof DELEGATION_OPERATION_STEP_STATES)[number];
17
+ export declare const DELEGATION_OPERATION_STEP_KINDS: readonly ["approve_reset", "approve", "call", "allowance_clear"];
18
+ export type DelegationOperationStepKind = (typeof DELEGATION_OPERATION_STEP_KINDS)[number];
19
+ export interface DelegationOperationBinding {
20
+ readonly artifactId: string;
21
+ readonly userId: string;
22
+ readonly account: string;
23
+ readonly chainId: 8453;
24
+ readonly fingerprint: string;
25
+ }
26
+ export interface DelegationOperationJournalStatus {
27
+ readonly schemaVersion: typeof DELEGATION_OPERATION_JOURNAL_SCHEMA_VERSION;
28
+ readonly ready: boolean;
29
+ readonly coverageStartedAt: string | null;
30
+ }
31
+ export interface DelegationOperationStep {
32
+ readonly index: number;
33
+ readonly kind: DelegationOperationStepKind;
34
+ readonly state: DelegationOperationStepState;
35
+ readonly transactionHash?: string;
36
+ }
37
+ export interface DelegationOperationRecoveryStep extends DelegationOperationStep {
38
+ readonly request: DelegationCdpSendRequest;
39
+ readonly idempotencyKey: string;
40
+ readonly receipt?: DelegationOperationReceipt;
41
+ }
42
+ /** Static success fields sealed before the signer can hand the first request to CDP. */
43
+ export type DelegationOperationRecoveryContext = Omit<DelegatedSendResult, 'steps' | 'replayed'>;
44
+ export interface DelegationOperationRecoveryRecord extends Omit<DelegationOperationRecord, 'steps'> {
45
+ readonly steps: readonly DelegationOperationRecoveryStep[];
46
+ /** Missing only on rows written by a pre-recovery build; those rows cannot be promoted to success. */
47
+ readonly recoveryContext?: DelegationOperationRecoveryContext;
48
+ }
49
+ export interface DelegationOperationRecord extends DelegationOperationBinding {
50
+ readonly state: DelegationOperationState;
51
+ readonly createdAt: string;
52
+ readonly updatedAt: string;
53
+ readonly steps: readonly DelegationOperationStep[];
54
+ readonly result?: unknown;
55
+ }
56
+ /** The exact request handed to `cdp.endUser.sendEvmTransaction`. Never returned by the read tool. */
57
+ export interface DelegationCdpSendRequest {
58
+ readonly userId: string;
59
+ readonly address: string;
60
+ readonly transaction: `0x${string}`;
61
+ readonly network: 'base';
62
+ readonly idempotencyKey: string;
63
+ }
64
+ export interface DelegationOperationReceipt {
65
+ readonly transactionHash: string;
66
+ readonly status: 'success' | 'reverted';
67
+ readonly blockNumber: string;
68
+ readonly blockHash: string;
69
+ readonly gasUsed: string;
70
+ }
71
+ export type BeginDelegationOperation = {
72
+ readonly outcome: 'started';
73
+ readonly record: DelegationOperationRecord;
74
+ } | {
75
+ readonly outcome: 'existing';
76
+ readonly record: DelegationOperationRecord;
77
+ } | {
78
+ readonly outcome: 'busy';
79
+ readonly record: DelegationOperationRecord;
80
+ } | {
81
+ readonly outcome: 'conflict';
82
+ readonly kind: 'mint' | 'exit' | 'native' | 'sponsored';
83
+ readonly claimId: string;
84
+ } | {
85
+ readonly outcome: 'mismatch';
86
+ };
87
+ export interface DelegationOperationSnapshot {
88
+ readonly journal: DelegationOperationJournalStatus;
89
+ /** Global for this user, even when `artifactId` selected one terminal row. */
90
+ readonly unresolved: boolean;
91
+ readonly operations: readonly DelegationOperationRecord[];
92
+ }
93
+ export interface DelegationOperationStore {
94
+ readonly available: boolean;
95
+ readonly unavailableReason?: string;
96
+ journalStatus(): Promise<DelegationOperationJournalStatus>;
97
+ /** Explicit rollout transition. Call only after every pre-journal worker has drained. */
98
+ markReadyAfterLegacyDrain(nowMs: number): Promise<DelegationOperationJournalStatus>;
99
+ begin(binding: DelegationOperationBinding, nowMs: number): Promise<BeginDelegationOperation>;
100
+ /** Seal the non-transaction result fields before any signer/CDP work begins. Idempotent only byte-for-byte. */
101
+ setRecoveryContext(binding: DelegationOperationBinding, context: DelegationOperationRecoveryContext, nowMs: number): Promise<void>;
102
+ readArtifact(artifactId: string): Promise<DelegationOperationRecord | undefined>;
103
+ /** Private server-only recovery view. Serialized requests and idempotency keys never reach MCP output. */
104
+ readRecoveryArtifact(artifactId: string): Promise<DelegationOperationRecoveryRecord | undefined>;
105
+ snapshotForUser(userId: string, artifactId?: string, terminalLimit?: number): Promise<DelegationOperationSnapshot>;
106
+ prepareStep(binding: DelegationOperationBinding, index: number, kind: DelegationOperationStepKind, request: DelegationCdpSendRequest, nowMs: number): Promise<void>;
107
+ markStepSubmitted(binding: DelegationOperationBinding, index: number, idempotencyKey: string, transactionHash: string, nowMs: number): Promise<void>;
108
+ markStepUnknown(binding: DelegationOperationBinding, index: number, idempotencyKey: string, nowMs: number): Promise<void>;
109
+ /** A final local guard refused after journaling and before the CDP call; zero sends are known. */
110
+ markStepNotSubmitted(binding: DelegationOperationBinding, index: number, idempotencyKey: string, nowMs: number): Promise<void>;
111
+ markStepReceipt(binding: DelegationOperationBinding, index: number, idempotencyKey: string, receipt: DelegationOperationReceipt, nowMs: number): Promise<void>;
112
+ finalizeSuccess(binding: DelegationOperationBinding, result: unknown, nowMs: number): Promise<void>;
113
+ /** Terminal only when every attempted CDP request has a known terminal outcome (or none was attempted). */
114
+ finalizeFailure(binding: DelegationOperationBinding, failureCode: string, nowMs: number): Promise<DelegationOperationRecord>;
115
+ close?(): void;
116
+ }
117
+ export declare class DelegationOperationJournalNotReadyError extends Error {
118
+ constructor();
119
+ }
120
+ /** A stable UUID-v4-form key accepted by CDP, derived only from the bound artifact and step. */
121
+ export declare function delegationOperationIdempotencyKey(artifactId: string, index: number): string;
122
+ export declare function unavailableDelegationOperationStore(reason: string): DelegationOperationStore;
123
+ export declare function openDelegationOperationStore(root: string, nowMs?: number): Promise<DelegationOperationStore>;
124
+ export declare function createDelegationOperationStore(env?: NodeJS.ProcessEnv): Promise<DelegationOperationStore>;
125
+ /** Test/local implementation with the same binding and unresolved-operation semantics. */
126
+ export declare function inMemoryDelegationOperationStore(options?: {
127
+ readonly ready?: boolean;
128
+ readonly nowMs?: number;
129
+ }): DelegationOperationStore;