@bananapus/nana-sdk-core 2.38.2 → 2.40.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 (89) hide show
  1. package/dist/cjs/review/heldWrite.d.ts +113 -0
  2. package/dist/cjs/review/heldWrite.d.ts.map +1 -0
  3. package/dist/cjs/review/heldWrite.js +569 -0
  4. package/dist/cjs/review/heldWrite.js.map +1 -0
  5. package/dist/cjs/review/index.d.ts +2 -0
  6. package/dist/cjs/review/index.d.ts.map +1 -1
  7. package/dist/cjs/review/index.js +2 -0
  8. package/dist/cjs/review/index.js.map +1 -1
  9. package/dist/cjs/review/messages.d.ts +30 -0
  10. package/dist/cjs/review/messages.d.ts.map +1 -1
  11. package/dist/cjs/review/messages.js +34 -1
  12. package/dist/cjs/review/messages.js.map +1 -1
  13. package/dist/cjs/review/react/HeldWritesNotice.d.ts +11 -0
  14. package/dist/cjs/review/react/HeldWritesNotice.d.ts.map +1 -0
  15. package/dist/cjs/review/react/HeldWritesNotice.js +22 -0
  16. package/dist/cjs/review/react/HeldWritesNotice.js.map +1 -0
  17. package/dist/cjs/review/react/index.d.ts +5 -0
  18. package/dist/cjs/review/react/index.d.ts.map +1 -0
  19. package/dist/cjs/review/react/index.js +21 -0
  20. package/dist/cjs/review/react/index.js.map +1 -0
  21. package/dist/cjs/review/react/useHeldWrite.d.ts +63 -0
  22. package/dist/cjs/review/react/useHeldWrite.d.ts.map +1 -0
  23. package/dist/cjs/review/react/useHeldWrite.js +107 -0
  24. package/dist/cjs/review/react/useHeldWrite.js.map +1 -0
  25. package/dist/cjs/review/react/useHeldWrites.d.ts +40 -0
  26. package/dist/cjs/review/react/useHeldWrites.d.ts.map +1 -0
  27. package/dist/cjs/review/react/useHeldWrites.js +95 -0
  28. package/dist/cjs/review/react/useHeldWrites.js.map +1 -0
  29. package/dist/cjs/review/react/useSavedAttempt.d.ts +54 -0
  30. package/dist/cjs/review/react/useSavedAttempt.d.ts.map +1 -0
  31. package/dist/cjs/review/react/useSavedAttempt.js +105 -0
  32. package/dist/cjs/review/react/useSavedAttempt.js.map +1 -0
  33. package/dist/cjs/review/savedAttempt.d.ts +180 -0
  34. package/dist/cjs/review/savedAttempt.d.ts.map +1 -0
  35. package/dist/cjs/review/savedAttempt.js +527 -0
  36. package/dist/cjs/review/savedAttempt.js.map +1 -0
  37. package/dist/cjs/review/writeHold.d.ts +94 -2
  38. package/dist/cjs/review/writeHold.d.ts.map +1 -1
  39. package/dist/cjs/review/writeHold.js +284 -43
  40. package/dist/cjs/review/writeHold.js.map +1 -1
  41. package/dist/cjs/review/writeRecovery.d.ts +58 -0
  42. package/dist/cjs/review/writeRecovery.d.ts.map +1 -1
  43. package/dist/cjs/review/writeRecovery.js +161 -2
  44. package/dist/cjs/review/writeRecovery.js.map +1 -1
  45. package/dist/esm/review/heldWrite.d.ts +113 -0
  46. package/dist/esm/review/heldWrite.d.ts.map +1 -0
  47. package/dist/esm/review/heldWrite.js +562 -0
  48. package/dist/esm/review/heldWrite.js.map +1 -0
  49. package/dist/esm/review/index.d.ts +2 -0
  50. package/dist/esm/review/index.d.ts.map +1 -1
  51. package/dist/esm/review/index.js +2 -0
  52. package/dist/esm/review/index.js.map +1 -1
  53. package/dist/esm/review/messages.d.ts +30 -0
  54. package/dist/esm/review/messages.d.ts.map +1 -1
  55. package/dist/esm/review/messages.js +32 -0
  56. package/dist/esm/review/messages.js.map +1 -1
  57. package/dist/esm/review/react/HeldWritesNotice.d.ts +11 -0
  58. package/dist/esm/review/react/HeldWritesNotice.d.ts.map +1 -0
  59. package/dist/esm/review/react/HeldWritesNotice.js +19 -0
  60. package/dist/esm/review/react/HeldWritesNotice.js.map +1 -0
  61. package/dist/esm/review/react/index.d.ts +5 -0
  62. package/dist/esm/review/react/index.d.ts.map +1 -0
  63. package/dist/esm/review/react/index.js +5 -0
  64. package/dist/esm/review/react/index.js.map +1 -0
  65. package/dist/esm/review/react/useHeldWrite.d.ts +63 -0
  66. package/dist/esm/review/react/useHeldWrite.d.ts.map +1 -0
  67. package/dist/esm/review/react/useHeldWrite.js +104 -0
  68. package/dist/esm/review/react/useHeldWrite.js.map +1 -0
  69. package/dist/esm/review/react/useHeldWrites.d.ts +40 -0
  70. package/dist/esm/review/react/useHeldWrites.d.ts.map +1 -0
  71. package/dist/esm/review/react/useHeldWrites.js +91 -0
  72. package/dist/esm/review/react/useHeldWrites.js.map +1 -0
  73. package/dist/esm/review/react/useSavedAttempt.d.ts +54 -0
  74. package/dist/esm/review/react/useSavedAttempt.d.ts.map +1 -0
  75. package/dist/esm/review/react/useSavedAttempt.js +102 -0
  76. package/dist/esm/review/react/useSavedAttempt.js.map +1 -0
  77. package/dist/esm/review/savedAttempt.d.ts +180 -0
  78. package/dist/esm/review/savedAttempt.d.ts.map +1 -0
  79. package/dist/esm/review/savedAttempt.js +524 -0
  80. package/dist/esm/review/savedAttempt.js.map +1 -0
  81. package/dist/esm/review/writeHold.d.ts +94 -2
  82. package/dist/esm/review/writeHold.d.ts.map +1 -1
  83. package/dist/esm/review/writeHold.js +285 -44
  84. package/dist/esm/review/writeHold.js.map +1 -1
  85. package/dist/esm/review/writeRecovery.d.ts +58 -0
  86. package/dist/esm/review/writeRecovery.d.ts.map +1 -1
  87. package/dist/esm/review/writeRecovery.js +160 -2
  88. package/dist/esm/review/writeRecovery.js.map +1 -1
  89. package/package.json +16 -2
@@ -0,0 +1,180 @@
1
+ import type { Address, Hex } from "viem";
2
+ import type { WriteHeldState, WriteHold, WriteHoldClient, WriteHoldHandle } from "./writeHold.js";
3
+ import { type HeldWriteStorage, type ReviewedWriteRecoveryInput } from "./writeRecovery.js";
4
+ /** What the app's domain check says of one transaction (or, given none, of a search for the attempt). */
5
+ export type SavedAttemptProof<T> =
6
+ /** The chain shows this attempt ran, with the app's result (a project ID, a launch). */
7
+ {
8
+ result: "proven";
9
+ value: T;
10
+ }
11
+ /** The transaction is some other write. */
12
+ | {
13
+ result: "not-this";
14
+ reason?: string;
15
+ }
16
+ /** It couldn't be read or shown. */
17
+ | {
18
+ result: "unknown";
19
+ reason?: string;
20
+ };
21
+ /** Where a saved attempt was held, and what the app saved of it. Only what was saved: nothing fresh. */
22
+ export type SavedAttemptScope = {
23
+ chainId: number;
24
+ /** The account that sent it: the wallet, or the Safe. */
25
+ account: Address;
26
+ /** Whether `account` is a Safe; a saved `safeTxHash` says so too. */
27
+ safe?: boolean;
28
+ /** Every intent namespace the attempt may be held under, the current one first, legacy ones after. */
29
+ namespaces: readonly string[];
30
+ /** The exact saved call, when kept: a saved hash is adopted into the hold against it. */
31
+ call?: ReviewedWriteRecoveryInput["call"];
32
+ /**
33
+ * The app's re-read of its own domain journal, required: awaited under
34
+ * the hold's locks before any check or exit retirement, it is the final say
35
+ * of Rule E (only a followed settlement retires a success). Return false,
36
+ * or throw, while the journal records the attempt's success or can't be
37
+ * read.
38
+ */
39
+ confirmRetirable(): Promise<boolean>;
40
+ saved?: {
41
+ /**
42
+ * The app's send began: the wallet may have opened. Only an explicit
43
+ * `false`, with no hash or nonce evidence, is proof that nothing was sent.
44
+ */
45
+ started?: boolean;
46
+ /** The transaction hash the wallet returned. */
47
+ hash?: Hex;
48
+ /** The Safe proposal the wallet returned. */
49
+ safeTxHash?: Hex;
50
+ /** That proposal's Safe nonce, when saved. */
51
+ safeNonce?: number;
52
+ /** The account's next nonce before the wallet opened, with the block it was read at. */
53
+ nonce?: number | bigint;
54
+ sentNonce?: number | bigint;
55
+ fromBlock?: bigint;
56
+ /** When the wallet returned the hash, in milliseconds since the epoch. */
57
+ submittedAt?: number;
58
+ /** Settlements already shown before this attempt began: never this attempt's. */
59
+ before?: readonly Hex[];
60
+ };
61
+ };
62
+ /** A saved attempt with the app's domain check of a transaction (or, given none, its search for the attempt). */
63
+ export type SavedAttempt<T> = SavedAttemptScope & {
64
+ authenticate(hash: Hex | undefined): Promise<SavedAttemptProof<T>>;
65
+ };
66
+ /**
67
+ * What a retirement returned. `durable: false`: it lasts in this tab alone
68
+ * (show `SAVED_ATTEMPT_TAB_ONLY_LINE`); another tab or a reload asks
69
+ * again, never sends. `reason: "unreadable"`: the browser has storage but
70
+ * can't read it, so the warned exit may be offered.
71
+ */
72
+ export type SavedAttemptRetired = {
73
+ retired: false;
74
+ reason?: "unreadable";
75
+ } | {
76
+ retired: true;
77
+ durable: boolean;
78
+ };
79
+ /** Why an attempt is retired: the only three things that retire one. */
80
+ export type SavedAttemptRetirement =
81
+ /** The user's exit released the hold. */
82
+ {
83
+ by: "exit";
84
+ }
85
+ /**
86
+ * The user's "I checked it. ..." on exactly this check outcome. With
87
+ * `force: "unreadable"` (the warned "I checked my wallet. Continue anyway",
88
+ * offered only after a retirement came back `reason: "unreadable"`), it
89
+ * retires in this tab alone if the hold's storage still can't be read.
90
+ */
91
+ | {
92
+ by: "check";
93
+ outcome: SavedAttemptCheck;
94
+ force?: "unreadable";
95
+ }
96
+ /** The app followed and recorded this settlement. */
97
+ | {
98
+ by: "settled";
99
+ hash?: Hex;
100
+ };
101
+ export type SavedAttemptCheck = {
102
+ status: "check";
103
+ /** What couldn't be shown, for logs and details. */
104
+ reason: string;
105
+ line: string;
106
+ warning: string;
107
+ /** The hold evidence this check evaluated: the user's check retires exactly this. */
108
+ evidence: string;
109
+ };
110
+ /**
111
+ * How recovering a saved attempt ended, the one rule every app follows
112
+ * before any send or discard:
113
+ * - `held`: the hold still holds the write. Count nothing; show `state`, and
114
+ * its exit when due (through `handle`);
115
+ * - `done`: `success` ran. `authenticated: true` when the app's check showed
116
+ * it as this attempt (`value`); `false` when the hold settled it but the
117
+ * app's details are unavailable (`reason`): record its `hash` and follow it,
118
+ * with "Check again" (recover again) as its only action. Either way, never
119
+ * send it again; only `retire({ by: "settled" })` retires it. `failed` is
120
+ * the hold's proven revert of it;
121
+ * - `check`: it can't be shown. One explicit action, "I checked it. ...",
122
+ * and only that, retires it (`retire({ by: "check", outcome })`);
123
+ * - `none`: the hold proves nothing was reserved and nothing saved says it
124
+ * was sent, or the attempt was retired (`retired`): by the user or a
125
+ * followed settlement, or by the SDK itself when it dropped every
126
+ * reservation of it on a definite wallet rejection or an abort before the
127
+ * wallet opened (`"rejected"`: nothing can have been sent).
128
+ */
129
+ export type SavedAttemptOutcome<T> = {
130
+ status: "held";
131
+ state: WriteHeldState;
132
+ handle: WriteHoldHandle;
133
+ } | {
134
+ status: "done";
135
+ result: "success";
136
+ authenticated: true;
137
+ hash?: Hex;
138
+ value: T;
139
+ } | {
140
+ status: "done";
141
+ result: "success";
142
+ authenticated: false;
143
+ /** The settled transaction; absent when another tab's check proved it without one. */
144
+ hash?: Hex;
145
+ reason: string;
146
+ } | {
147
+ status: "done";
148
+ result: "failed";
149
+ hash: Hex;
150
+ } | SavedAttemptCheck | {
151
+ status: "none";
152
+ retired?: SavedAttemptRetirement["by"] | "rejected";
153
+ };
154
+ /**
155
+ * Saved-attempt recovery over the app's write hold, framework-free: every
156
+ * app's launches, linked plans, shop updates and other saved writes recover
157
+ * the same way. Pass the hold's own `storage` and `locks` when it was made
158
+ * with custom ones; the defaults are the hold's defaults.
159
+ *
160
+ * - Recovery needs only what was saved: run it right after a saved attempt is
161
+ * found, before any fresh-send preparation.
162
+ * - Absence of evidence is `check`, never `none`: a missing hold record, a
163
+ * refused or unreadable adoption, an empty search and every exception.
164
+ * - A settled success always wins: it is never downgraded by a later failed
165
+ * or empty read, and it blocks discard until followed.
166
+ * - Only the user's exit, the user's check action, a followed settlement and
167
+ * the SDK's own drop of a rejected reservation retire an attempt, persisted under the hold's locks for every tab and
168
+ * reload, and only for the hold evidence they saw.
169
+ */
170
+ export declare function createSavedAttemptRecovery(options: {
171
+ hold: WriteHold;
172
+ storage?: HeldWriteStorage;
173
+ locks?: Pick<LockManager, "request">;
174
+ }): {
175
+ recover: <T>(attempt: SavedAttempt<T>, client: WriteHoldClient) => Promise<SavedAttemptOutcome<T>>;
176
+ retire: (attempt: SavedAttemptScope, reason: SavedAttemptRetirement) => Promise<SavedAttemptRetired>;
177
+ canDiscard: (attempt: SavedAttemptScope) => boolean;
178
+ };
179
+ export type SavedAttemptRecovery = ReturnType<typeof createSavedAttemptRecovery>;
180
+ //# sourceMappingURL=savedAttempt.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"savedAttempt.d.ts","sourceRoot":"","sources":["../../../src/review/savedAttempt.ts"],"names":[],"mappings":"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"}