@bananapus/nana-sdk-core 2.34.1 → 2.36.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (63) hide show
  1. package/dist/cjs/review/index.d.ts +1 -0
  2. package/dist/cjs/review/index.d.ts.map +1 -1
  3. package/dist/cjs/review/index.js +1 -0
  4. package/dist/cjs/review/index.js.map +1 -1
  5. package/dist/cjs/review/messages.d.ts +2 -0
  6. package/dist/cjs/review/messages.d.ts.map +1 -1
  7. package/dist/cjs/review/messages.js +3 -1
  8. package/dist/cjs/review/messages.js.map +1 -1
  9. package/dist/cjs/review/safeRelayr.d.ts.map +1 -1
  10. package/dist/cjs/review/safeRelayr.js +42 -24
  11. package/dist/cjs/review/safeRelayr.js.map +1 -1
  12. package/dist/cjs/review/tabState.d.ts +23 -0
  13. package/dist/cjs/review/tabState.d.ts.map +1 -0
  14. package/dist/cjs/review/tabState.js +30 -0
  15. package/dist/cjs/review/tabState.js.map +1 -0
  16. package/dist/cjs/review/writeHold.d.ts +74 -58
  17. package/dist/cjs/review/writeHold.d.ts.map +1 -1
  18. package/dist/cjs/review/writeHold.js +651 -43
  19. package/dist/cjs/review/writeHold.js.map +1 -1
  20. package/dist/cjs/review/writeIntent.d.ts +41 -0
  21. package/dist/cjs/review/writeIntent.d.ts.map +1 -0
  22. package/dist/cjs/review/writeIntent.js +77 -0
  23. package/dist/cjs/review/writeIntent.js.map +1 -0
  24. package/dist/cjs/review/writeRecovery.d.ts +63 -3
  25. package/dist/cjs/review/writeRecovery.d.ts.map +1 -1
  26. package/dist/cjs/review/writeRecovery.js +233 -14
  27. package/dist/cjs/review/writeRecovery.js.map +1 -1
  28. package/dist/cjs/testing.d.ts +7 -0
  29. package/dist/cjs/testing.d.ts.map +1 -0
  30. package/dist/cjs/testing.js +30 -0
  31. package/dist/cjs/testing.js.map +1 -0
  32. package/dist/esm/review/index.d.ts +1 -0
  33. package/dist/esm/review/index.d.ts.map +1 -1
  34. package/dist/esm/review/index.js +1 -0
  35. package/dist/esm/review/index.js.map +1 -1
  36. package/dist/esm/review/messages.d.ts +2 -0
  37. package/dist/esm/review/messages.d.ts.map +1 -1
  38. package/dist/esm/review/messages.js +2 -0
  39. package/dist/esm/review/messages.js.map +1 -1
  40. package/dist/esm/review/safeRelayr.d.ts.map +1 -1
  41. package/dist/esm/review/safeRelayr.js +42 -24
  42. package/dist/esm/review/safeRelayr.js.map +1 -1
  43. package/dist/esm/review/tabState.d.ts +23 -0
  44. package/dist/esm/review/tabState.d.ts.map +1 -0
  45. package/dist/esm/review/tabState.js +26 -0
  46. package/dist/esm/review/tabState.js.map +1 -0
  47. package/dist/esm/review/writeHold.d.ts +74 -58
  48. package/dist/esm/review/writeHold.d.ts.map +1 -1
  49. package/dist/esm/review/writeHold.js +651 -44
  50. package/dist/esm/review/writeHold.js.map +1 -1
  51. package/dist/esm/review/writeIntent.d.ts +41 -0
  52. package/dist/esm/review/writeIntent.d.ts.map +1 -0
  53. package/dist/esm/review/writeIntent.js +73 -0
  54. package/dist/esm/review/writeIntent.js.map +1 -0
  55. package/dist/esm/review/writeRecovery.d.ts +63 -3
  56. package/dist/esm/review/writeRecovery.d.ts.map +1 -1
  57. package/dist/esm/review/writeRecovery.js +232 -16
  58. package/dist/esm/review/writeRecovery.js.map +1 -1
  59. package/dist/esm/testing.d.ts +7 -0
  60. package/dist/esm/testing.d.ts.map +1 -0
  61. package/dist/esm/testing.js +25 -0
  62. package/dist/esm/testing.js.map +1 -0
  63. package/package.json +6 -1
@@ -1,6 +1,6 @@
1
- import { type Hex, type PublicClient, type TransactionReceipt } from "viem";
1
+ import { type Address, type Hex, type PublicClient, type TransactionReceipt } from "viem";
2
2
  import { type SafeQueuedTransaction, type SafeServiceOptions } from "../safeService.js";
3
- import { verifyReviewedWriteReceipt, type HeldWriteStorage, type ReviewedWriteRecoveryInput, type ReviewedWriteRecoveryRecord } from "./writeRecovery.js";
3
+ import { type HeldWriteStorage, type ReviewedWriteRecoveryInput, type ReviewedWriteRecoveryRecord } from "./writeRecovery.js";
4
4
  /** The reads a write hold makes on the call's chain; a viem PublicClient satisfies it. */
5
5
  export type WriteHoldClient = Pick<PublicClient, "getBlock" | "getBlockNumber" | "getChainId" | "getTransaction" | "getTransactionCount" | "getTransactionReceipt" | "request">;
6
6
  /** How a held write ended, when the hold saw it end. */
@@ -41,9 +41,9 @@ type Held<S extends string, Extra> = {
41
41
  * actually sent at (`sentNonce`, from its authenticated transaction; the
42
42
  * nonce read before the wallet opened only locates the call). The exit is
43
43
  * offered;
44
- * - `held-unchecked`: a saved hash the node doesn't know, on a record saved
45
- * with no nonce to check, or 30 minutes after the wallet returned it (or,
46
- * for a record saved before that time was kept, after it was first read). The
44
+ * - `held-unchecked`: a saved hash the node doesn't know 30 minutes after
45
+ * the wallet returned it (or, for a record saved before that time was
46
+ * kept or adopted without it, after it was first read). The
47
47
  * exit is offered, with a line that says so; a hash that shows up later is
48
48
  * followed as usual. A hash seen with its sent nonce that the node has not
49
49
  * known for 30 minutes, with that nonce unused at a canonical finalized
@@ -64,7 +64,23 @@ type Held<S extends string, Extra> = {
64
64
  * not final yet). It is kept until its result settles it, and never offered
65
65
  * a resend.
66
66
  */
67
- export type WriteHoldState = {
67
+ export type WriteHoldState = WriteHoldStateOf & {
68
+ /** Only while holds last in this tab alone: {@link WRITE_HOLD_IN_TAB_LINE}. */
69
+ notice?: string;
70
+ /**
71
+ * The reservation this state belongs to (on a clear, the one that ended),
72
+ * so an observer can ignore a newer reservation it didn't start.
73
+ */
74
+ reservation?: string;
75
+ /**
76
+ * On a result of state() or exit(): true when the gate read the chain
77
+ * under the call's lock; false when the lock was busy and this is only the
78
+ * saved record (its exit hidden). Never let a false one hide an exit
79
+ * already shown.
80
+ */
81
+ checked?: boolean;
82
+ };
83
+ type WriteHoldStateOf = {
68
84
  status: "clear";
69
85
  settled?: WriteHoldSettled;
70
86
  } | Held<"pending-known-hash", {
@@ -99,9 +115,11 @@ export type WriteHoldState = {
99
115
  exit: false;
100
116
  }>;
101
117
  /** Any state but `clear`. */
102
- export type WriteHeldState = Exclude<WriteHoldState, {
118
+ export type WriteHeldState = Exclude<WriteHoldStateOf, {
103
119
  status: "clear";
104
- }>;
120
+ }> & {
121
+ reservation?: string;
122
+ };
105
123
  /** A send was refused because the exact call is held; `state` says how. */
106
124
  export declare class WriteHeldError extends Error {
107
125
  readonly state: WriteHeldState;
@@ -114,6 +132,16 @@ export declare class WriteHoldNonceError extends Error {
114
132
  readonly name = "WriteHoldNonceError";
115
133
  constructor(cause: unknown);
116
134
  }
135
+ /**
136
+ * The review went stale: another window's attempt of the same write was
137
+ * reserved, and maybe settled (`settled`), while it was open. Review again;
138
+ * the next review sends normally.
139
+ */
140
+ export declare class WriteHoldStaleReviewError extends Error {
141
+ readonly settled?: WriteHoldSettled | undefined;
142
+ readonly name = "WriteHoldStaleReviewError";
143
+ constructor(settled?: WriteHoldSettled | undefined);
144
+ }
117
145
  /** The exact call is already being sent from another flow or tab. */
118
146
  export declare class WriteHoldBusyError extends Error {
119
147
  readonly name = "WriteHoldBusyError";
@@ -161,72 +189,60 @@ export declare function createWriteHold(options?: {
161
189
  attempts?: number;
162
190
  };
163
191
  }): {
164
- open: (call: ReviewedWriteRecoveryInput) => {
165
- state: (client: WriteHoldClient, checks?: {
166
- effect?: (chainId: number) => Promise<boolean>;
167
- }) => Promise<WriteHoldState>;
168
- /** What the saved record alone says, without asking the chain. */
192
+ open: (call: ReviewedWriteRecoveryInput, { legacy, }?: {
193
+ legacy?: (string | {
194
+ call: ReviewedWriteRecoveryInput["call"];
195
+ } | {
196
+ match: {
197
+ to: Address;
198
+ selector: Hex;
199
+ };
200
+ })[];
201
+ }) => {
169
202
  peek: () => WriteHoldState;
170
- /**
171
- * Every state this controller reads or makes for the call, and other
172
- * tabs' changes. The latest one, if any, is replayed at once.
173
- */
174
- subscribe(listener: (state: WriteHoldState) => void): () => void;
175
- /**
176
- * Send the call under its hold. A held call throws
177
- * {@link WriteHeldError} before anything opens, and another flow or tab
178
- * sending it throws {@link WriteHoldBusyError}. `run` hands the
179
- * {@link WriteHoldGate} to its wallet boundary. A write that may have
180
- * reached the wallet stays held whatever `run` throws.
181
- */
203
+ state(client: WriteHoldClient, checks?: {
204
+ effect?: (chainId: number) => Promise<boolean>;
205
+ }): Promise<WriteHoldState>;
182
206
  send<T>(client: WriteHoldClient, run: (gate: WriteHoldGate) => Promise<T>): Promise<T>;
183
- /**
184
- * The user checked their wallet. Only an exit-offered `snapshot`, the
185
- * state the user saw, is released, after the chain is asked once more:
186
- * any change refuses it, and a confirmation that landed meanwhile wins.
187
- * `released` true: send again.
188
- */
189
207
  exit(snapshot: WriteHoldState, acknowledgement: {
190
208
  checkedWallet: true;
191
209
  }, client: WriteHoldClient): Promise<{
192
210
  released: boolean;
193
211
  state: WriteHoldState;
194
212
  }>;
213
+ onReceipt: (receipt: TransactionReceipt, client: WriteHoldClient, proof?: {
214
+ calls: readonly ReviewedWriteRecoveryInput["call"][];
215
+ batch?: boolean;
216
+ } | undefined) => Promise<WriteHoldState>;
217
+ onUnproven: (client: WriteHoldClient, proposalHash?: `0x${string}` | undefined) => Promise<WriteHoldState>;
218
+ onExecuted: (client: WriteHoldClient, executionHash?: `0x${string}` | undefined) => Promise<WriteHoldState>;
219
+ attachHash: (client: WriteHoldClient, hash: `0x${string}`) => Promise<WriteHoldState>;
220
+ attachSafeNonce: (client: WriteHoldClient, args_1: {
221
+ safeTxHash: Hex;
222
+ nonce: number;
223
+ }) => Promise<WriteHoldState>;
224
+ adopt: (snapshot: WriteHoldState, evidence?: {
225
+ nonce?: number | bigint;
226
+ sentNonce?: number | bigint;
227
+ fromBlock?: bigint;
228
+ submittedAt?: number;
229
+ hash?: Hex;
230
+ safe?: {
231
+ safeTxHash: Hex;
232
+ };
233
+ } | undefined, client?: WriteHoldClient | undefined) => Promise<WriteHoldState>;
195
234
  /**
196
- * A receipt for the held write: an ordinary write's own hash, or a Safe
197
- * proposal's execution (`proof`: its whole batch). It releases only once
198
- * verified, and a revert only once final.
199
- */
200
- onReceipt(receipt: TransactionReceipt, client: WriteHoldClient, proof?: Parameters<typeof verifyReviewedWriteReceipt>[3]): Promise<WriteHoldState>;
201
- /**
202
- * The app's Safe follower ended without proof (its watch gave up, or
203
- * the service lost the proposal). `proposalHash`, when given, must name
204
- * the held one. It is held with the exit at once, through reloads;
205
- * authenticated evidence that arrives later still settles it.
206
- */
207
- onUnproven(client: WriteHoldClient, proposalHash?: Hex): Promise<WriteHoldState>;
208
- /**
209
- * Attach a hash the chain authenticates as this exact call, sent by the
210
- * account on the reservation's chain at or after its next nonce, and
211
- * not mined before it was reserved, to the held write that has none: under
212
- * one lock, without releasing it. The hold then follows that hash: no
213
- * exit while it is pending, and its receipt settles it.
214
- */
215
- attachHash(client: WriteHoldClient, hash: Hex): Promise<WriteHoldState>;
216
- /**
217
- * The app's word that the held Safe proposal ran, with its execution's
218
- * transaction when known. Nothing is saved as executed on its word:
219
- * the hash is kept as a candidate, and settles it only once its own
220
- * receipt proves this Safe's execution of the exact proposal or call.
235
+ * Every state this controller reads or makes for the call, and other
236
+ * tabs' changes. The latest one, if any, is replayed at once.
221
237
  */
222
- onExecuted(client: WriteHoldClient, executionHash?: Hex): Promise<WriteHoldState>;
238
+ subscribe(listener: (state: WriteHoldState) => void): () => void;
223
239
  };
224
240
  /** Whether holds outlive this tab right now. */
225
241
  durable: () => boolean;
226
242
  /** The review's line while holds last only in this tab, or null. */
227
243
  reviewLine: () => "This browser can't remember pending transactions. Check your wallet before repeating one." | null;
228
244
  /** Stop every settle poll and the tab listener (tests, teardown). */
229
- dispose(): void;
245
+ dispose: () => void;
230
246
  };
231
247
  export type WriteHold = ReturnType<typeof createWriteHold>;
232
248
  export type WriteHoldHandle = ReturnType<WriteHold["open"]>;
@@ -1 +1 @@
1
- {"version":3,"file":"writeHold.d.ts","sourceRoot":"","sources":["../../../src/review/writeHold.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"writeHold.d.ts","sourceRoot":"","sources":["../../../src/review/writeHold.ts"],"names":[],"mappings":"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"}