@bananapus/nana-sdk-core 3.5.2 → 4.0.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 (292) hide show
  1. package/bin/wallet-check.mjs +489 -0
  2. package/dist/cjs/actions/suckerPairs.d.ts +5 -3
  3. package/dist/cjs/actions/suckerPairs.d.ts.map +1 -1
  4. package/dist/cjs/actions/suckerPairs.js +6 -26
  5. package/dist/cjs/actions/suckerPairs.js.map +1 -1
  6. package/dist/cjs/pause.d.ts +2 -0
  7. package/dist/cjs/pause.d.ts.map +1 -1
  8. package/dist/cjs/pause.js +17 -0
  9. package/dist/cjs/pause.js.map +1 -1
  10. package/dist/cjs/review/confirm.d.ts +52 -0
  11. package/dist/cjs/review/confirm.d.ts.map +1 -0
  12. package/dist/cjs/review/confirm.js +88 -0
  13. package/dist/cjs/review/confirm.js.map +1 -0
  14. package/dist/cjs/review/contractWrite.d.ts +5 -3
  15. package/dist/cjs/review/contractWrite.d.ts.map +1 -1
  16. package/dist/cjs/review/contractWrite.js +8 -7
  17. package/dist/cjs/review/contractWrite.js.map +1 -1
  18. package/dist/cjs/review/decode.d.ts +19 -1
  19. package/dist/cjs/review/decode.d.ts.map +1 -1
  20. package/dist/cjs/review/decode.js +30 -11
  21. package/dist/cjs/review/decode.js.map +1 -1
  22. package/dist/cjs/review/decodeCall.d.ts +21 -0
  23. package/dist/cjs/review/decodeCall.d.ts.map +1 -0
  24. package/dist/cjs/review/decodeCall.js +183 -0
  25. package/dist/cjs/review/decodeCall.js.map +1 -0
  26. package/dist/cjs/review/heldWrite.d.ts.map +1 -1
  27. package/dist/cjs/review/heldWrite.js +5 -4
  28. package/dist/cjs/review/heldWrite.js.map +1 -1
  29. package/dist/cjs/review/index.d.ts +11 -0
  30. package/dist/cjs/review/index.d.ts.map +1 -1
  31. package/dist/cjs/review/index.js +24 -0
  32. package/dist/cjs/review/index.js.map +1 -1
  33. package/dist/cjs/review/intents.d.ts +10 -0
  34. package/dist/cjs/review/intents.d.ts.map +1 -1
  35. package/dist/cjs/review/intents.js +13 -0
  36. package/dist/cjs/review/intents.js.map +1 -1
  37. package/dist/cjs/review/lineError.d.ts +34 -0
  38. package/dist/cjs/review/lineError.d.ts.map +1 -0
  39. package/dist/cjs/review/lineError.js +42 -0
  40. package/dist/cjs/review/lineError.js.map +1 -0
  41. package/dist/cjs/review/messages.d.ts +15 -3
  42. package/dist/cjs/review/messages.d.ts.map +1 -1
  43. package/dist/cjs/review/messages.js +16 -4
  44. package/dist/cjs/review/messages.js.map +1 -1
  45. package/dist/cjs/review/model.d.ts +149 -0
  46. package/dist/cjs/review/model.d.ts.map +1 -0
  47. package/dist/cjs/review/model.js +750 -0
  48. package/dist/cjs/review/model.js.map +1 -0
  49. package/dist/cjs/review/plan.d.ts +63 -0
  50. package/dist/cjs/review/plan.d.ts.map +1 -0
  51. package/dist/cjs/review/plan.js +149 -0
  52. package/dist/cjs/review/plan.js.map +1 -0
  53. package/dist/cjs/review/react/index.d.ts +1 -0
  54. package/dist/cjs/review/react/index.d.ts.map +1 -1
  55. package/dist/cjs/review/react/index.js +1 -0
  56. package/dist/cjs/review/react/index.js.map +1 -1
  57. package/dist/cjs/review/react/useReviewedRun.d.ts +96 -0
  58. package/dist/cjs/review/react/useReviewedRun.d.ts.map +1 -0
  59. package/dist/cjs/review/react/useReviewedRun.js +261 -0
  60. package/dist/cjs/review/react/useReviewedRun.js.map +1 -0
  61. package/dist/cjs/review/receipt.d.ts +4 -1
  62. package/dist/cjs/review/receipt.d.ts.map +1 -1
  63. package/dist/cjs/review/receipt.js +7 -3
  64. package/dist/cjs/review/receipt.js.map +1 -1
  65. package/dist/cjs/review/relayr.d.ts +13 -4
  66. package/dist/cjs/review/relayr.d.ts.map +1 -1
  67. package/dist/cjs/review/relayr.js +51 -8
  68. package/dist/cjs/review/relayr.js.map +1 -1
  69. package/dist/cjs/review/relayrSend.d.ts +135 -0
  70. package/dist/cjs/review/relayrSend.d.ts.map +1 -0
  71. package/dist/cjs/review/relayrSend.js +943 -0
  72. package/dist/cjs/review/relayrSend.js.map +1 -0
  73. package/dist/cjs/review/reviewQueue.d.ts +10 -9
  74. package/dist/cjs/review/reviewQueue.d.ts.map +1 -1
  75. package/dist/cjs/review/reviewQueue.js +19 -29
  76. package/dist/cjs/review/reviewQueue.js.map +1 -1
  77. package/dist/cjs/review/reviewRequests.d.ts +86 -0
  78. package/dist/cjs/review/reviewRequests.d.ts.map +1 -0
  79. package/dist/cjs/review/reviewRequests.js +266 -0
  80. package/dist/cjs/review/reviewRequests.js.map +1 -0
  81. package/dist/cjs/review/safeRelayr.d.ts +3 -1
  82. package/dist/cjs/review/safeRelayr.d.ts.map +1 -1
  83. package/dist/cjs/review/safeRelayr.js +5 -1
  84. package/dist/cjs/review/safeRelayr.js.map +1 -1
  85. package/dist/cjs/review/safeSend.d.ts +69 -0
  86. package/dist/cjs/review/safeSend.d.ts.map +1 -0
  87. package/dist/cjs/review/safeSend.js +308 -0
  88. package/dist/cjs/review/safeSend.js.map +1 -0
  89. package/dist/cjs/review/send.d.ts +241 -0
  90. package/dist/cjs/review/send.d.ts.map +1 -0
  91. package/dist/cjs/review/send.js +1017 -0
  92. package/dist/cjs/review/send.js.map +1 -0
  93. package/dist/cjs/review/sequence.d.ts +77 -0
  94. package/dist/cjs/review/sequence.d.ts.map +1 -0
  95. package/dist/cjs/review/sequence.js +232 -0
  96. package/dist/cjs/review/sequence.js.map +1 -0
  97. package/dist/cjs/review/sign.d.ts +109 -0
  98. package/dist/cjs/review/sign.d.ts.map +1 -0
  99. package/dist/cjs/review/sign.js +374 -0
  100. package/dist/cjs/review/sign.js.map +1 -0
  101. package/dist/cjs/review/simulation.d.ts +41 -2
  102. package/dist/cjs/review/simulation.d.ts.map +1 -1
  103. package/dist/cjs/review/simulation.js +99 -29
  104. package/dist/cjs/review/simulation.js.map +1 -1
  105. package/dist/cjs/review/transaction-message.d.ts +13 -0
  106. package/dist/cjs/review/transaction-message.d.ts.map +1 -1
  107. package/dist/cjs/review/transaction-message.js +25 -0
  108. package/dist/cjs/review/transaction-message.js.map +1 -1
  109. package/dist/cjs/review/transactionReview.d.ts +27 -19
  110. package/dist/cjs/review/transactionReview.d.ts.map +1 -1
  111. package/dist/cjs/review/transactionReview.js +22 -63
  112. package/dist/cjs/review/transactionReview.js.map +1 -1
  113. package/dist/cjs/review/wallet.d.ts +82 -0
  114. package/dist/cjs/review/wallet.d.ts.map +1 -0
  115. package/dist/cjs/review/wallet.js +157 -0
  116. package/dist/cjs/review/wallet.js.map +1 -0
  117. package/dist/cjs/review/writeHold.d.ts +100 -12
  118. package/dist/cjs/review/writeHold.d.ts.map +1 -1
  119. package/dist/cjs/review/writeHold.js +61 -13
  120. package/dist/cjs/review/writeHold.js.map +1 -1
  121. package/dist/cjs/review/writeRecovery.d.ts +6 -1
  122. package/dist/cjs/review/writeRecovery.d.ts.map +1 -1
  123. package/dist/cjs/review/writeRecovery.js +108 -40
  124. package/dist/cjs/review/writeRecovery.js.map +1 -1
  125. package/dist/cjs/safeService.d.ts +27 -4
  126. package/dist/cjs/safeService.d.ts.map +1 -1
  127. package/dist/cjs/safeService.js +120 -3
  128. package/dist/cjs/safeService.js.map +1 -1
  129. package/dist/cjs/testing.d.ts +24 -0
  130. package/dist/cjs/testing.d.ts.map +1 -1
  131. package/dist/cjs/testing.js +26 -1
  132. package/dist/cjs/testing.js.map +1 -1
  133. package/dist/cjs/v6/defifa.d.ts.map +1 -1
  134. package/dist/cjs/v6/defifa.js +24 -23
  135. package/dist/cjs/v6/defifa.js.map +1 -1
  136. package/dist/cjs/v6/executionErrors.d.ts.map +1 -1
  137. package/dist/cjs/v6/executionErrors.js +3 -2
  138. package/dist/cjs/v6/executionErrors.js.map +1 -1
  139. package/dist/cjs/v6/pay.d.ts +25 -8
  140. package/dist/cjs/v6/pay.d.ts.map +1 -1
  141. package/dist/cjs/v6/pay.js +117 -23
  142. package/dist/cjs/v6/pay.js.map +1 -1
  143. package/dist/cjs/v6/suckers.d.ts +30 -0
  144. package/dist/cjs/v6/suckers.d.ts.map +1 -1
  145. package/dist/cjs/v6/suckers.js +69 -5
  146. package/dist/cjs/v6/suckers.js.map +1 -1
  147. package/dist/esm/actions/suckerPairs.d.ts +5 -3
  148. package/dist/esm/actions/suckerPairs.d.ts.map +1 -1
  149. package/dist/esm/actions/suckerPairs.js +7 -27
  150. package/dist/esm/actions/suckerPairs.js.map +1 -1
  151. package/dist/esm/pause.d.ts +2 -0
  152. package/dist/esm/pause.d.ts.map +1 -1
  153. package/dist/esm/pause.js +16 -0
  154. package/dist/esm/pause.js.map +1 -1
  155. package/dist/esm/review/confirm.d.ts +52 -0
  156. package/dist/esm/review/confirm.d.ts.map +1 -0
  157. package/dist/esm/review/confirm.js +83 -0
  158. package/dist/esm/review/confirm.js.map +1 -0
  159. package/dist/esm/review/contractWrite.d.ts +5 -3
  160. package/dist/esm/review/contractWrite.d.ts.map +1 -1
  161. package/dist/esm/review/contractWrite.js +8 -7
  162. package/dist/esm/review/contractWrite.js.map +1 -1
  163. package/dist/esm/review/decode.d.ts +19 -1
  164. package/dist/esm/review/decode.d.ts.map +1 -1
  165. package/dist/esm/review/decode.js +29 -14
  166. package/dist/esm/review/decode.js.map +1 -1
  167. package/dist/esm/review/decodeCall.d.ts +21 -0
  168. package/dist/esm/review/decodeCall.d.ts.map +1 -0
  169. package/dist/esm/review/decodeCall.js +180 -0
  170. package/dist/esm/review/decodeCall.js.map +1 -0
  171. package/dist/esm/review/heldWrite.d.ts.map +1 -1
  172. package/dist/esm/review/heldWrite.js +5 -4
  173. package/dist/esm/review/heldWrite.js.map +1 -1
  174. package/dist/esm/review/index.d.ts +11 -0
  175. package/dist/esm/review/index.d.ts.map +1 -1
  176. package/dist/esm/review/index.js +11 -0
  177. package/dist/esm/review/index.js.map +1 -1
  178. package/dist/esm/review/intents.d.ts +10 -0
  179. package/dist/esm/review/intents.d.ts.map +1 -1
  180. package/dist/esm/review/intents.js +12 -0
  181. package/dist/esm/review/intents.js.map +1 -1
  182. package/dist/esm/review/lineError.d.ts +34 -0
  183. package/dist/esm/review/lineError.d.ts.map +1 -0
  184. package/dist/esm/review/lineError.js +36 -0
  185. package/dist/esm/review/lineError.js.map +1 -0
  186. package/dist/esm/review/messages.d.ts +15 -3
  187. package/dist/esm/review/messages.d.ts.map +1 -1
  188. package/dist/esm/review/messages.js +15 -3
  189. package/dist/esm/review/messages.js.map +1 -1
  190. package/dist/esm/review/model.d.ts +149 -0
  191. package/dist/esm/review/model.d.ts.map +1 -0
  192. package/dist/esm/review/model.js +746 -0
  193. package/dist/esm/review/model.js.map +1 -0
  194. package/dist/esm/review/plan.d.ts +63 -0
  195. package/dist/esm/review/plan.d.ts.map +1 -0
  196. package/dist/esm/review/plan.js +141 -0
  197. package/dist/esm/review/plan.js.map +1 -0
  198. package/dist/esm/review/react/index.d.ts +1 -0
  199. package/dist/esm/review/react/index.d.ts.map +1 -1
  200. package/dist/esm/review/react/index.js +1 -0
  201. package/dist/esm/review/react/index.js.map +1 -1
  202. package/dist/esm/review/react/useReviewedRun.d.ts +96 -0
  203. package/dist/esm/review/react/useReviewedRun.d.ts.map +1 -0
  204. package/dist/esm/review/react/useReviewedRun.js +257 -0
  205. package/dist/esm/review/react/useReviewedRun.js.map +1 -0
  206. package/dist/esm/review/receipt.d.ts +4 -1
  207. package/dist/esm/review/receipt.d.ts.map +1 -1
  208. package/dist/esm/review/receipt.js +6 -2
  209. package/dist/esm/review/receipt.js.map +1 -1
  210. package/dist/esm/review/relayr.d.ts +13 -4
  211. package/dist/esm/review/relayr.d.ts.map +1 -1
  212. package/dist/esm/review/relayr.js +50 -8
  213. package/dist/esm/review/relayr.js.map +1 -1
  214. package/dist/esm/review/relayrSend.d.ts +135 -0
  215. package/dist/esm/review/relayrSend.d.ts.map +1 -0
  216. package/dist/esm/review/relayrSend.js +934 -0
  217. package/dist/esm/review/relayrSend.js.map +1 -0
  218. package/dist/esm/review/reviewQueue.d.ts +10 -9
  219. package/dist/esm/review/reviewQueue.d.ts.map +1 -1
  220. package/dist/esm/review/reviewQueue.js +17 -26
  221. package/dist/esm/review/reviewQueue.js.map +1 -1
  222. package/dist/esm/review/reviewRequests.d.ts +86 -0
  223. package/dist/esm/review/reviewRequests.d.ts.map +1 -0
  224. package/dist/esm/review/reviewRequests.js +263 -0
  225. package/dist/esm/review/reviewRequests.js.map +1 -0
  226. package/dist/esm/review/safeRelayr.d.ts +3 -1
  227. package/dist/esm/review/safeRelayr.d.ts.map +1 -1
  228. package/dist/esm/review/safeRelayr.js +5 -1
  229. package/dist/esm/review/safeRelayr.js.map +1 -1
  230. package/dist/esm/review/safeSend.d.ts +69 -0
  231. package/dist/esm/review/safeSend.d.ts.map +1 -0
  232. package/dist/esm/review/safeSend.js +303 -0
  233. package/dist/esm/review/safeSend.js.map +1 -0
  234. package/dist/esm/review/send.d.ts +241 -0
  235. package/dist/esm/review/send.d.ts.map +1 -0
  236. package/dist/esm/review/send.js +1011 -0
  237. package/dist/esm/review/send.js.map +1 -0
  238. package/dist/esm/review/sequence.d.ts +77 -0
  239. package/dist/esm/review/sequence.d.ts.map +1 -0
  240. package/dist/esm/review/sequence.js +223 -0
  241. package/dist/esm/review/sequence.js.map +1 -0
  242. package/dist/esm/review/sign.d.ts +109 -0
  243. package/dist/esm/review/sign.d.ts.map +1 -0
  244. package/dist/esm/review/sign.js +368 -0
  245. package/dist/esm/review/sign.js.map +1 -0
  246. package/dist/esm/review/simulation.d.ts +41 -2
  247. package/dist/esm/review/simulation.d.ts.map +1 -1
  248. package/dist/esm/review/simulation.js +95 -29
  249. package/dist/esm/review/simulation.js.map +1 -1
  250. package/dist/esm/review/transaction-message.d.ts +13 -0
  251. package/dist/esm/review/transaction-message.d.ts.map +1 -1
  252. package/dist/esm/review/transaction-message.js +23 -0
  253. package/dist/esm/review/transaction-message.js.map +1 -1
  254. package/dist/esm/review/transactionReview.d.ts +27 -19
  255. package/dist/esm/review/transactionReview.d.ts.map +1 -1
  256. package/dist/esm/review/transactionReview.js +19 -56
  257. package/dist/esm/review/transactionReview.js.map +1 -1
  258. package/dist/esm/review/wallet.d.ts +82 -0
  259. package/dist/esm/review/wallet.d.ts.map +1 -0
  260. package/dist/esm/review/wallet.js +150 -0
  261. package/dist/esm/review/wallet.js.map +1 -0
  262. package/dist/esm/review/writeHold.d.ts +100 -12
  263. package/dist/esm/review/writeHold.d.ts.map +1 -1
  264. package/dist/esm/review/writeHold.js +59 -13
  265. package/dist/esm/review/writeHold.js.map +1 -1
  266. package/dist/esm/review/writeRecovery.d.ts +6 -1
  267. package/dist/esm/review/writeRecovery.d.ts.map +1 -1
  268. package/dist/esm/review/writeRecovery.js +111 -43
  269. package/dist/esm/review/writeRecovery.js.map +1 -1
  270. package/dist/esm/safeService.d.ts +27 -4
  271. package/dist/esm/safeService.d.ts.map +1 -1
  272. package/dist/esm/safeService.js +119 -4
  273. package/dist/esm/safeService.js.map +1 -1
  274. package/dist/esm/testing.d.ts +24 -0
  275. package/dist/esm/testing.d.ts.map +1 -1
  276. package/dist/esm/testing.js +23 -1
  277. package/dist/esm/testing.js.map +1 -1
  278. package/dist/esm/v6/defifa.d.ts.map +1 -1
  279. package/dist/esm/v6/defifa.js +24 -23
  280. package/dist/esm/v6/defifa.js.map +1 -1
  281. package/dist/esm/v6/executionErrors.d.ts.map +1 -1
  282. package/dist/esm/v6/executionErrors.js +3 -2
  283. package/dist/esm/v6/executionErrors.js.map +1 -1
  284. package/dist/esm/v6/pay.d.ts +25 -8
  285. package/dist/esm/v6/pay.d.ts.map +1 -1
  286. package/dist/esm/v6/pay.js +115 -22
  287. package/dist/esm/v6/pay.js.map +1 -1
  288. package/dist/esm/v6/suckers.d.ts +30 -0
  289. package/dist/esm/v6/suckers.d.ts.map +1 -1
  290. package/dist/esm/v6/suckers.js +67 -5
  291. package/dist/esm/v6/suckers.js.map +1 -1
  292. package/package.json +11 -2
@@ -0,0 +1 @@
1
+ {"version":3,"file":"send.js","sourceRoot":"","sources":["../../../src/review/send.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,77 @@
1
+ import { type Address, type Hex } from "viem";
2
+ import type { ReviewedCall } from "./send.js";
3
+ import { type HeldWriteStorage } from "./writeRecovery.js";
4
+ /**
5
+ * A reviewed multi-step action saved once its review is confirmed, before
6
+ * the first wallet call, and advanced as each step's receipt lands, so an
7
+ * interrupted action resumes at its first incomplete step without sending a
8
+ * completed one again.
9
+ */
10
+ export type ReviewedSequenceRecord = {
11
+ version: 1;
12
+ id: string;
13
+ account: Address;
14
+ /** The site's action key, e.g. `payIntent(...)`. */
15
+ scope: string;
16
+ /** The last confirmed review's model. */
17
+ modelId: Hex;
18
+ calls: ReviewedCall[];
19
+ /** Each completed step's transaction hash, in order: step `completed.length` is next. */
20
+ completed: Hex[];
21
+ /**
22
+ * The step whose wallet call opened and whose receipt was not seen yet,
23
+ * with its write hold's reservation: only that reservation's outcome
24
+ * decides it.
25
+ */
26
+ sending?: {
27
+ step: number;
28
+ reservation: string;
29
+ };
30
+ /** A Safe-connected step's proposal, waiting for its signers (`sending` names its reservation). */
31
+ proposed?: {
32
+ step: number;
33
+ safeTxHash: Hex;
34
+ };
35
+ };
36
+ export declare const REVIEWED_SEQUENCE_HELD_LINE = "A step of this action is still pending. Nothing was discarded.";
37
+ export declare const REVIEWED_SEQUENCE_UNFINISHED_LINE = "An earlier run of this action is unfinished. Resume it or discard it.";
38
+ export declare const REVIEWED_SEQUENCE_MOVED_LINE = "This action moved on in another window. Nothing was sent; resume it again.";
39
+ export declare const REVIEWED_SEQUENCE_UNCERTAIN_LINE = "This step's outcome can't be confirmed here, so nothing was sent. Check your wallet's activity, then discard this action to start again.";
40
+ type Options = {
41
+ storage?: HeldWriteStorage;
42
+ };
43
+ export declare const REVIEWED_SEQUENCE_UNSAVABLE_LINE = "This action has an argument that can't be saved to resume it. Nothing was sent.";
44
+ /** Refuse, before any review, calls that could not be saved exactly. */
45
+ export declare function assertSavableCalls(calls: readonly ReviewedCall[]): void;
46
+ /**
47
+ * What is saved for `scope` and `account`: the raw value, which a run
48
+ * passes back as `expected` to change it, and the unfinished sequence it
49
+ * holds (one with a step sent or in flight), if any.
50
+ */
51
+ export declare function readReviewedSequence(scope: string, account: Address, storage: HeldWriteStorage): {
52
+ raw: string | null;
53
+ record: ReviewedSequenceRecord | null;
54
+ };
55
+ /**
56
+ * The unfinished sequence saved for `scope` and `account`: one with a step
57
+ * sent or in flight. Null when none is (an unreadable one included).
58
+ */
59
+ export declare function findReviewedSequence(scope: string, account: Address, options?: Options): ReviewedSequenceRecord | null;
60
+ /**
61
+ * Save `record` over exactly `expected`, the value this run last read or
62
+ * wrote at its key, so another window's change since (a step it sent, or
63
+ * the sequence it finished and removed) is never overwritten. Returns the
64
+ * value written, the next `expected`.
65
+ */
66
+ export declare function saveReviewedSequence(record: ReviewedSequenceRecord, storage: HeldWriteStorage, expected: string | null): Promise<string>;
67
+ /** Remove `record` if its key still holds exactly `expected`. */
68
+ export declare function removeReviewedSequence(record: ReviewedSequenceRecord, storage: HeldWriteStorage, expected: string | null): Promise<void>;
69
+ /**
70
+ * Drop an unfinished sequence, so the action can be reviewed fresh. Refused
71
+ * while any remaining step is held (sent, or proposed, and not yet settled):
72
+ * its hold decides it first. Refused too when the saved sequence is no
73
+ * longer `record` (another window moved it on).
74
+ */
75
+ export declare function discardReviewedSequence(record: ReviewedSequenceRecord, options?: Options): Promise<void>;
76
+ export {};
77
+ //# sourceMappingURL=sequence.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sequence.d.ts","sourceRoot":"","sources":["../../../src/review/sequence.ts"],"names":[],"mappings":"AACA,OAAO,EAAoB,KAAK,OAAO,EAAE,KAAK,GAAG,EAAE,MAAM,MAAM,CAAC;AAEhE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,WAAW,CAAC;AAC9C,OAAO,EAIL,KAAK,gBAAgB,EACtB,MAAM,oBAAoB,CAAC;AAE5B;;;;;GAKG;AACH,MAAM,MAAM,sBAAsB,GAAG;IACnC,OAAO,EAAE,CAAC,CAAC;IACX,EAAE,EAAE,MAAM,CAAC;IACX,OAAO,EAAE,OAAO,CAAC;IACjB,oDAAoD;IACpD,KAAK,EAAE,MAAM,CAAC;IACd,yCAAyC;IACzC,OAAO,EAAE,GAAG,CAAC;IACb,KAAK,EAAE,YAAY,EAAE,CAAC;IACtB,yFAAyF;IACzF,SAAS,EAAE,GAAG,EAAE,CAAC;IACjB;;;;OAIG;IACH,OAAO,CAAC,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,WAAW,EAAE,MAAM,CAAA;KAAE,CAAC;IAChD,mGAAmG;IACnG,QAAQ,CAAC,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,UAAU,EAAE,GAAG,CAAA;KAAE,CAAC;CAC9C,CAAC;AAEF,eAAO,MAAM,2BAA2B,mEAC0B,CAAC;AACnE,eAAO,MAAM,iCAAiC,0EAC2B,CAAC;AAC1E,eAAO,MAAM,4BAA4B,+EACqC,CAAC;AAC/E,eAAO,MAAM,gCAAgC,6IAC+F,CAAC;AAI7I,KAAK,OAAO,GAAG;IAAE,OAAO,CAAC,EAAE,gBAAgB,CAAA;CAAE,CAAC;AAO9C,eAAO,MAAM,gCAAgC,oFACsC,CAAC;AAsCpF,wEAAwE;AACxE,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,SAAS,YAAY,EAAE,GAAG,IAAI,CAEvE;AAwGD;;;;GAIG;AACH,wBAAgB,oBAAoB,CAClC,KAAK,EAAE,MAAM,EACb,OAAO,EAAE,OAAO,EAChB,OAAO,EAAE,gBAAgB,GACxB;IAAE,GAAG,EAAE,MAAM,GAAG,IAAI,CAAC;IAAC,MAAM,EAAE,sBAAsB,GAAG,IAAI,CAAA;CAAE,CAK/D;AAED;;;GAGG;AACH,wBAAgB,oBAAoB,CAClC,KAAK,EAAE,MAAM,EACb,OAAO,EAAE,OAAO,EAChB,OAAO,GAAE,OAAY,GACpB,sBAAsB,GAAG,IAAI,CAM/B;AAED;;;;;GAKG;AACH,wBAAgB,oBAAoB,CAClC,MAAM,EAAE,sBAAsB,EAC9B,OAAO,EAAE,gBAAgB,EACzB,QAAQ,EAAE,MAAM,GAAG,IAAI,GACtB,OAAO,CAAC,MAAM,CAAC,CASjB;AAED,iEAAiE;AACjE,wBAAgB,sBAAsB,CACpC,MAAM,EAAE,sBAAsB,EAC9B,OAAO,EAAE,gBAAgB,EACzB,QAAQ,EAAE,MAAM,GAAG,IAAI,GACtB,OAAO,CAAC,IAAI,CAAC,CAOf;AAqDD;;;;;GAKG;AACH,wBAAgB,uBAAuB,CACrC,MAAM,EAAE,sBAAsB,EAC9B,OAAO,GAAE,OAAY,GACpB,OAAO,CAAC,IAAI,CAAC,CAcf"}
@@ -0,0 +1,223 @@
1
+ import { ReviewLineError } from "./lineError.js";
2
+ import { isAddress, isHex } from "viem";
3
+ import { isHexBytes, uint256 } from "../untrusted.js";
4
+ import { createHeldWriteStorage, browserLocks, listReviewedWrites, } from "./writeRecovery.js";
5
+ export const REVIEWED_SEQUENCE_HELD_LINE = "A step of this action is still pending. Nothing was discarded.";
6
+ export const REVIEWED_SEQUENCE_UNFINISHED_LINE = "An earlier run of this action is unfinished. Resume it or discard it.";
7
+ export const REVIEWED_SEQUENCE_MOVED_LINE = "This action moved on in another window. Nothing was sent; resume it again.";
8
+ export const REVIEWED_SEQUENCE_UNCERTAIN_LINE = "This step's outcome can't be confirmed here, so nothing was sent. Check your wallet's activity, then discard this action to start again.";
9
+ const PREFIX = "nana-sdk:sequence:";
10
+ function sequenceKey(scope, account) {
11
+ if (!scope)
12
+ throw new ReviewLineError("Provide a sequence scope.");
13
+ return `${PREFIX}${account.toLowerCase()}:${scope}`;
14
+ }
15
+ export const REVIEWED_SEQUENCE_UNSAVABLE_LINE = "This action has an argument that can't be saved to resume it. Nothing was sent.";
16
+ /**
17
+ * JSON with every value tagged, so no saved argument can read as another
18
+ * kind: a bigint is `{ n }`, every plain object `{ o }`. Anything else that
19
+ * JSON would change (bytes, a class instance, a hole in an array) is
20
+ * refused, never saved as something else.
21
+ */
22
+ const encode = (value) => {
23
+ if (typeof value === "bigint")
24
+ return { n: value.toString() };
25
+ if (Array.isArray(value))
26
+ return value.map((item) => {
27
+ if (item === undefined)
28
+ throw new ReviewLineError(REVIEWED_SEQUENCE_UNSAVABLE_LINE);
29
+ return encode(item);
30
+ });
31
+ if (value && typeof value === "object") {
32
+ const prototype = Object.getPrototypeOf(value);
33
+ if (prototype !== Object.prototype && prototype !== null)
34
+ throw new ReviewLineError(REVIEWED_SEQUENCE_UNSAVABLE_LINE);
35
+ return {
36
+ o: Object.fromEntries(Object.entries(value).flatMap(([key, item]) => item === undefined ? [] : [[key, encode(item)]])),
37
+ };
38
+ }
39
+ if (value === undefined ||
40
+ typeof value === "function" ||
41
+ typeof value === "symbol" ||
42
+ (typeof value === "number" && !Number.isFinite(value)))
43
+ throw new ReviewLineError(REVIEWED_SEQUENCE_UNSAVABLE_LINE);
44
+ return value;
45
+ };
46
+ /** Refuse, before any review, calls that could not be saved exactly. */
47
+ export function assertSavableCalls(calls) {
48
+ encode(calls);
49
+ }
50
+ const decode = (value) => Array.isArray(value)
51
+ ? value.map(decode)
52
+ : value && typeof value === "object"
53
+ ? "n" in value
54
+ ? BigInt(value.n)
55
+ : Object.fromEntries(Object.entries(value.o).map(([key, item]) => [
56
+ key,
57
+ decode(item),
58
+ ]))
59
+ : value;
60
+ /** The sequence's id stays a top-level field, as the held-write storage reconciles records by it. */
61
+ const serialize = (record) => JSON.stringify({ id: record.id, sequence: encode(record) });
62
+ /** Run `work` under the sequence's lock across windows: every compare and change of its saved value. */
63
+ function locked(key, work) {
64
+ return browserLocks().request(key, { mode: "exclusive" }, async () => work());
65
+ }
66
+ /** A saved step's legacy hold source, as `WriteHoldLegacySource` allows. */
67
+ function legacySource(source) {
68
+ if (typeof source === "string")
69
+ return true;
70
+ // Exactly one variant: resume reads whichever it finds.
71
+ if (!source || typeof source !== "object" || Object.keys(source).length !== 1)
72
+ return false;
73
+ if ("call" in source) {
74
+ const call = source.call;
75
+ return (!!call &&
76
+ isAddress(call.to, { strict: false }) &&
77
+ isHexBytes(call.data) &&
78
+ (call.value === undefined || uint256(call.value) !== null));
79
+ }
80
+ if ("match" in source) {
81
+ const match = source.match;
82
+ return (!!match &&
83
+ isAddress(match.to, { strict: false }) &&
84
+ typeof match.selector === "string" &&
85
+ /^0x[0-9a-f]{8}$/iu.test(match.selector));
86
+ }
87
+ return false;
88
+ }
89
+ function parse(raw, key) {
90
+ if (raw === null)
91
+ return null;
92
+ try {
93
+ const saved = JSON.parse(raw);
94
+ const record = decode(saved.sequence);
95
+ /** Only the next step can be in flight. */
96
+ const step = (value) => value === record.completed.length;
97
+ const valid = record.version === 1 &&
98
+ typeof record.id === "string" &&
99
+ saved.id === record.id &&
100
+ isAddress(record.account, { strict: false }) &&
101
+ typeof record.scope === "string" &&
102
+ sequenceKey(record.scope, record.account) === key &&
103
+ isHex(record.modelId) &&
104
+ Array.isArray(record.calls) &&
105
+ record.calls.length > 0 &&
106
+ record.calls.every((call) => Number.isInteger(call?.chainId) &&
107
+ isAddress(call.to, { strict: false }) &&
108
+ isHex(call.data) &&
109
+ (call.intent === undefined || typeof call.intent === "string") &&
110
+ (call.legacy === undefined ||
111
+ (Array.isArray(call.legacy) && call.legacy.every(legacySource)))) &&
112
+ Array.isArray(record.completed) &&
113
+ record.completed.length < record.calls.length &&
114
+ record.completed.every((hash) => isHex(hash)) &&
115
+ (record.sending === undefined ||
116
+ (step(record.sending.step) &&
117
+ typeof record.sending.reservation === "string")) &&
118
+ (record.proposed === undefined ||
119
+ (step(record.proposed.step) &&
120
+ record.sending?.step === record.proposed.step &&
121
+ isHex(record.proposed.safeTxHash)));
122
+ return valid ? record : null;
123
+ }
124
+ catch {
125
+ return null;
126
+ }
127
+ }
128
+ /** Whether anything of `record` was sent, or is in flight: only then is there a run to resume. */
129
+ const begun = (record) => record.completed.length > 0 || record.sending !== undefined;
130
+ /**
131
+ * What is saved for `scope` and `account`: the raw value, which a run
132
+ * passes back as `expected` to change it, and the unfinished sequence it
133
+ * holds (one with a step sent or in flight), if any.
134
+ */
135
+ export function readReviewedSequence(scope, account, storage) {
136
+ const key = sequenceKey(scope, account);
137
+ const raw = storage.getItem(key);
138
+ const record = parse(raw, key);
139
+ return { raw, record: record && begun(record) ? record : null };
140
+ }
141
+ /**
142
+ * The unfinished sequence saved for `scope` and `account`: one with a step
143
+ * sent or in flight. Null when none is (an unreadable one included).
144
+ */
145
+ export function findReviewedSequence(scope, account, options = {}) {
146
+ return readReviewedSequence(scope, account, options.storage ?? createHeldWriteStorage()).record;
147
+ }
148
+ /**
149
+ * Save `record` over exactly `expected`, the value this run last read or
150
+ * wrote at its key, so another window's change since (a step it sent, or
151
+ * the sequence it finished and removed) is never overwritten. Returns the
152
+ * value written, the next `expected`.
153
+ */
154
+ export function saveReviewedSequence(record, storage, expected) {
155
+ const key = sequenceKey(record.scope, record.account);
156
+ return locked(key, () => {
157
+ if (storage.getItem(key) !== expected)
158
+ throw new ReviewLineError(REVIEWED_SEQUENCE_MOVED_LINE);
159
+ const raw = serialize(record);
160
+ storage.setItem(key, raw);
161
+ return raw;
162
+ });
163
+ }
164
+ /** Remove `record` if its key still holds exactly `expected`. */
165
+ export function removeReviewedSequence(record, storage, expected) {
166
+ const key = sequenceKey(record.scope, record.account);
167
+ return locked(key, () => {
168
+ if (storage.getItem(key) !== expected)
169
+ throw new ReviewLineError(REVIEWED_SEQUENCE_MOVED_LINE);
170
+ storage.removeItem(key);
171
+ });
172
+ }
173
+ /**
174
+ * Whether a remaining step of `record` has a write still held under the
175
+ * write holds' storage: the step in flight's reservation, its intent (or a
176
+ * legacy one), or its exact call.
177
+ */
178
+ function heldStep(record, storage) {
179
+ return record.calls.some((call, step) => {
180
+ if (step < record.completed.length)
181
+ return false;
182
+ const legacy = call.legacy ?? [];
183
+ const namespaces = [
184
+ call.intent,
185
+ ...legacy.filter((source) => typeof source === "string"),
186
+ ];
187
+ const exact = [
188
+ call,
189
+ ...legacy.flatMap((source) => typeof source === "object" && "call" in source ? [source.call] : []),
190
+ ];
191
+ const matches = legacy.flatMap((source) => typeof source === "object" && "match" in source ? [source.match] : []);
192
+ const same = (a, b) => a.toLowerCase() === b.toLowerCase();
193
+ return listReviewedWrites({ chainId: call.chainId, account: record.account }, { storage }).some(({ record: held }) =>
194
+ // The step in flight's own reservation, whatever call it holds (an
195
+ // adopted Safe proposal's, say).
196
+ held.id === record.sending?.reservation ||
197
+ (held.namespace !== undefined && namespaces.includes(held.namespace)) ||
198
+ exact.some((one) => same(held.call.to, one.to) &&
199
+ same(held.call.data, one.data) &&
200
+ uint256(held.call.value) === uint256(one.value ?? 0n)) ||
201
+ (held.namespace === undefined &&
202
+ matches.some(({ to, selector }) => same(held.call.to, to) &&
203
+ same(held.call.data.slice(0, 10), selector))));
204
+ });
205
+ }
206
+ /**
207
+ * Drop an unfinished sequence, so the action can be reviewed fresh. Refused
208
+ * while any remaining step is held (sent, or proposed, and not yet settled):
209
+ * its hold decides it first. Refused too when the saved sequence is no
210
+ * longer `record` (another window moved it on).
211
+ */
212
+ export function discardReviewedSequence(record, options = {}) {
213
+ const storage = options.storage ?? createHeldWriteStorage();
214
+ return locked(sequenceKey(record.scope, record.account), () => {
215
+ const saved = readReviewedSequence(record.scope, record.account, storage).record;
216
+ if (!saved || serialize(saved) !== serialize(record))
217
+ throw new ReviewLineError(REVIEWED_SEQUENCE_MOVED_LINE);
218
+ if (heldStep(saved, storage))
219
+ throw new ReviewLineError(REVIEWED_SEQUENCE_HELD_LINE);
220
+ storage.removeItem(sequenceKey(record.scope, record.account));
221
+ });
222
+ }
223
+ //# sourceMappingURL=sequence.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sequence.js","sourceRoot":"","sources":["../../../src/review/sequence.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,109 @@
1
+ import { type Address, type Hex, type TypedDataDefinition } from "viem";
2
+ import { type SafeQueuedTransaction } from "../safeService.js";
3
+ import { type Permit2SignatureAuthorization } from "../v6/permit2.js";
4
+ import { type ReviewContextRow } from "./model.js";
5
+ import { type ReviewedPlan, type ReviewedPlanCall } from "./plan.js";
6
+ import { type RelayrForwardRequest } from "./relayr.js";
7
+ import type { TransactionReviewSignature } from "./transactionReview.js";
8
+ import { type WalletAdapter } from "./wallet.js";
9
+ /** An ERC-2771 request to sign: what `execute` carries, with the signer's forwarder nonce in place of the signature. */
10
+ export type ReviewedForwardRequest = Omit<RelayrForwardRequest, "signature"> & {
11
+ nonce: bigint;
12
+ };
13
+ /**
14
+ * A signature core can review and sign. Core builds each typed-data
15
+ * definition from its own constants, so no caller passes `types` or `domain`.
16
+ */
17
+ export type ReviewedSignature = {
18
+ kind: "safe-tx";
19
+ chainId: number;
20
+ safe: Address;
21
+ tx: SafeQueuedTransaction;
22
+ } | {
23
+ kind: "forward-request";
24
+ chainId: number;
25
+ request: ReviewedForwardRequest;
26
+ } | {
27
+ kind: "permit2";
28
+ authorization: Permit2SignatureAuthorization;
29
+ } | {
30
+ kind: "message";
31
+ chainId: number;
32
+ message: string;
33
+ /**
34
+ * The calls the message lets someone run (a sponsored deploy, say),
35
+ * shown decoded and bound into the review. The app vouches for them:
36
+ * core cannot read them out of the text.
37
+ */
38
+ calls?: readonly {
39
+ chainId: number;
40
+ to: Address;
41
+ data: Hex;
42
+ value?: bigint;
43
+ }[];
44
+ };
45
+ /** One signature as reviewed: the exact payload signed, and how the review shows it. */
46
+ export type PreparedSignature = Readonly<{
47
+ chainId: number;
48
+ typedData: TypedDataDefinition | null;
49
+ message: string | null;
50
+ review: TransactionReviewSignature;
51
+ }>;
52
+ /**
53
+ * `signature` as core signs and shows it, each field read once. Refuses any
54
+ * kind core does not know, a Safe transaction that DELEGATECALLs anything
55
+ * but a recognized MultiSendCallOnly, a forward request not from `account`,
56
+ * on a chain with no forwarder, or executable past
57
+ * {@link relayrForwarderDeadline}, and a message that is not text.
58
+ */
59
+ export declare function prepareSignature(signature: ReviewedSignature, account: Address): PreparedSignature;
60
+ /**
61
+ * Signs each prepared signature in order through the adapter, after the same
62
+ * account and chain checks as {@link submitReviewedContractWrite}: the
63
+ * connected account must stay `account`, and typed data is signed on its
64
+ * domain's chain. A message is chain-free, so the wallet is not asked to
65
+ * switch for one. A definite wallet rejection (EIP-1193 4001) returns no
66
+ * signature and throws {@link TransactionReviewCancelledError}.
67
+ */
68
+ export declare function signPrepared(prepared: readonly PreparedSignature[], account: Address, adapter: WalletAdapter,
69
+ /** The caller's final gate before each signature; it throws to stop. */
70
+ beforeSign?: () => void,
71
+ /** The caller's async recheck before each signature, ahead of `beforeSign`. */
72
+ reverify?: () => Promise<void>): Promise<Hex[]>;
73
+ /**
74
+ * The calls a prepared signature lets someone run, as a plan matches them,
75
+ * read from the exact payload signed: a Safe transaction's CALL or
76
+ * MultiSendCallOnly calls, from the Safe, when it pays no refund and its
77
+ * safeTxGas is 0 (so a failed call reverts, not spends the nonce), or a
78
+ * forward request's call, from its signer. Any other signature is refused
79
+ * under a plan.
80
+ */
81
+ export declare function plannedCallsOf({ chainId, typedData, }: PreparedSignature): ReviewedPlanCall[];
82
+ /**
83
+ * Signs only what the person reviewed: one prompt for every signature, with
84
+ * the exact typed data or text and the calls each lets someone run, decoded.
85
+ * Nothing is signed unless the review handler returns core's confirmation
86
+ * ({@link registerReviewHandler}). The signatures come back in order.
87
+ *
88
+ * A self-reviewing adapter (Signa) is refused with EIP-1193 4200: it has no
89
+ * reviewed-signature path yet.
90
+ */
91
+ export declare function signReviewed(signatures: readonly ReviewedSignature[], action: {
92
+ account: Address;
93
+ title?: string;
94
+ description?: string;
95
+ context?: readonly ReviewContextRow[];
96
+ /** Rechecks, after confirm and before each signature, that what was reviewed still holds; it throws to stop. */
97
+ reverify?: () => Promise<void>;
98
+ /** Withdraws the review while it is open, as `sendReviewed`'s does. */
99
+ signal?: AbortSignal;
100
+ /**
101
+ * A plan the person already reviewed (`reviewPlan`): nothing is asked,
102
+ * and every call the signatures let someone run is spent from it, or
103
+ * nothing is signed.
104
+ */
105
+ plan?: ReviewedPlan;
106
+ }, deps: {
107
+ adapter: WalletAdapter;
108
+ }): Promise<Hex[]>;
109
+ //# sourceMappingURL=sign.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sign.d.ts","sourceRoot":"","sources":["../../../src/review/sign.ts"],"names":[],"mappings":"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"}