@bananapus/nana-sdk-core 4.0.0 → 6.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 (244) hide show
  1. package/bin/wallet-check.mjs +7 -1
  2. package/dist/cjs/generated/abi/jbBuybackHookAbi.d.ts +8 -0
  3. package/dist/cjs/generated/abi/jbBuybackHookAbi.d.ts.map +1 -1
  4. package/dist/cjs/generated/abi/jbBuybackHookAbi.js +5 -0
  5. package/dist/cjs/generated/abi/jbBuybackHookAbi.js.map +1 -1
  6. package/dist/cjs/generated/abi/jbBuybackHookPreviousAbi.d.ts +12 -0
  7. package/dist/cjs/generated/abi/jbBuybackHookPreviousAbi.d.ts.map +1 -1
  8. package/dist/cjs/generated/abi/jbBuybackHookPreviousAbi.js +8 -0
  9. package/dist/cjs/generated/abi/jbBuybackHookPreviousAbi.js.map +1 -1
  10. package/dist/cjs/generated/abi/jbBuybackHookV2Abi.d.ts +1175 -0
  11. package/dist/cjs/generated/abi/jbBuybackHookV2Abi.d.ts.map +1 -0
  12. package/dist/cjs/generated/abi/jbBuybackHookV2Abi.js +832 -0
  13. package/dist/cjs/generated/abi/jbBuybackHookV2Abi.js.map +1 -0
  14. package/dist/cjs/generated/abi/jbUniswapV4LpSplitHookAbi.d.ts +214 -113
  15. package/dist/cjs/generated/abi/jbUniswapV4LpSplitHookAbi.d.ts.map +1 -1
  16. package/dist/cjs/generated/abi/jbUniswapV4LpSplitHookAbi.js +176 -82
  17. package/dist/cjs/generated/abi/jbUniswapV4LpSplitHookAbi.js.map +1 -1
  18. package/dist/cjs/generated/abi/jbUniswapV4LpSplitHookDeployerAbi.d.ts +1 -1
  19. package/dist/cjs/generated/abi/jbUniswapV4LpSplitHookDeployerAbi.js +1 -1
  20. package/dist/cjs/generated/abi/jbUniswapV4LpSplitHookDeployerAbi.js.map +1 -1
  21. package/dist/cjs/generated/abi/jbp6FeeLpSplitHookAbi.d.ts +214 -113
  22. package/dist/cjs/generated/abi/jbp6FeeLpSplitHookAbi.d.ts.map +1 -1
  23. package/dist/cjs/generated/abi/jbp6FeeLpSplitHookAbi.js +176 -82
  24. package/dist/cjs/generated/abi/jbp6FeeLpSplitHookAbi.js.map +1 -1
  25. package/dist/cjs/generated/addresses/jbContractAddress.d.ts +42 -42
  26. package/dist/cjs/generated/addresses/jbContractAddressHistory.d.ts +75 -0
  27. package/dist/cjs/generated/addresses/jbContractAddressHistory.d.ts.map +1 -0
  28. package/dist/cjs/generated/addresses/jbContractAddressHistory.js +80 -0
  29. package/dist/cjs/generated/addresses/jbContractAddressHistory.js.map +1 -0
  30. package/dist/cjs/generated/addresses/jbV6ContractAddress.d.ts +42 -42
  31. package/dist/cjs/generated/addresses/jbV6ContractAddress.js +42 -42
  32. package/dist/cjs/generated/juicebox.d.ts +13 -45
  33. package/dist/cjs/generated/juicebox.d.ts.map +1 -1
  34. package/dist/cjs/generated/juicebox.js +29 -48
  35. package/dist/cjs/generated/juicebox.js.map +1 -1
  36. package/dist/cjs/review/confirm.d.ts +4 -0
  37. package/dist/cjs/review/confirm.d.ts.map +1 -1
  38. package/dist/cjs/review/confirm.js +14 -3
  39. package/dist/cjs/review/confirm.js.map +1 -1
  40. package/dist/cjs/review/contractWrite.d.ts.map +1 -1
  41. package/dist/cjs/review/contractWrite.js +2 -1
  42. package/dist/cjs/review/contractWrite.js.map +1 -1
  43. package/dist/cjs/review/decodeCall.d.ts.map +1 -1
  44. package/dist/cjs/review/decodeCall.js +7 -0
  45. package/dist/cjs/review/decodeCall.js.map +1 -1
  46. package/dist/cjs/review/heldWrite.d.ts +4 -0
  47. package/dist/cjs/review/heldWrite.d.ts.map +1 -1
  48. package/dist/cjs/review/heldWrite.js +31 -28
  49. package/dist/cjs/review/heldWrite.js.map +1 -1
  50. package/dist/cjs/review/index.d.ts +1 -1
  51. package/dist/cjs/review/index.d.ts.map +1 -1
  52. package/dist/cjs/review/index.js +6 -2
  53. package/dist/cjs/review/index.js.map +1 -1
  54. package/dist/cjs/review/lineError.d.ts +38 -0
  55. package/dist/cjs/review/lineError.d.ts.map +1 -1
  56. package/dist/cjs/review/lineError.js +35 -1
  57. package/dist/cjs/review/lineError.js.map +1 -1
  58. package/dist/cjs/review/plan.d.ts +0 -2
  59. package/dist/cjs/review/plan.d.ts.map +1 -1
  60. package/dist/cjs/review/plan.js +0 -6
  61. package/dist/cjs/review/plan.js.map +1 -1
  62. package/dist/cjs/review/react/useHeldSend.js +3 -4
  63. package/dist/cjs/review/react/useHeldSend.js.map +1 -1
  64. package/dist/cjs/review/react/useHeldWrite.d.ts.map +1 -1
  65. package/dist/cjs/review/react/useHeldWrite.js +2 -1
  66. package/dist/cjs/review/react/useHeldWrite.js.map +1 -1
  67. package/dist/cjs/review/react/useReviewedRun.d.ts +29 -3
  68. package/dist/cjs/review/react/useReviewedRun.d.ts.map +1 -1
  69. package/dist/cjs/review/react/useReviewedRun.js +219 -37
  70. package/dist/cjs/review/react/useReviewedRun.js.map +1 -1
  71. package/dist/cjs/review/receipt.d.ts +33 -0
  72. package/dist/cjs/review/receipt.d.ts.map +1 -1
  73. package/dist/cjs/review/receipt.js +69 -0
  74. package/dist/cjs/review/receipt.js.map +1 -1
  75. package/dist/cjs/review/relayr.d.ts.map +1 -1
  76. package/dist/cjs/review/relayr.js +1 -0
  77. package/dist/cjs/review/relayr.js.map +1 -1
  78. package/dist/cjs/review/relayrSend.d.ts +3 -32
  79. package/dist/cjs/review/relayrSend.d.ts.map +1 -1
  80. package/dist/cjs/review/relayrSend.js +78 -226
  81. package/dist/cjs/review/relayrSend.js.map +1 -1
  82. package/dist/cjs/review/safeRelayr.d.ts.map +1 -1
  83. package/dist/cjs/review/safeRelayr.js +4 -8
  84. package/dist/cjs/review/safeRelayr.js.map +1 -1
  85. package/dist/cjs/review/safeSend.js +3 -5
  86. package/dist/cjs/review/safeSend.js.map +1 -1
  87. package/dist/cjs/review/send.d.ts +38 -7
  88. package/dist/cjs/review/send.d.ts.map +1 -1
  89. package/dist/cjs/review/send.js +267 -121
  90. package/dist/cjs/review/send.js.map +1 -1
  91. package/dist/cjs/review/sign.d.ts +6 -4
  92. package/dist/cjs/review/sign.d.ts.map +1 -1
  93. package/dist/cjs/review/sign.js +22 -18
  94. package/dist/cjs/review/sign.js.map +1 -1
  95. package/dist/cjs/review/wallet.d.ts +18 -2
  96. package/dist/cjs/review/wallet.d.ts.map +1 -1
  97. package/dist/cjs/review/wallet.js +127 -50
  98. package/dist/cjs/review/wallet.js.map +1 -1
  99. package/dist/cjs/review/writeHold.d.ts +38 -1
  100. package/dist/cjs/review/writeHold.d.ts.map +1 -1
  101. package/dist/cjs/review/writeHold.js +37 -5
  102. package/dist/cjs/review/writeHold.js.map +1 -1
  103. package/dist/cjs/review/writeRecovery.d.ts +11 -0
  104. package/dist/cjs/review/writeRecovery.d.ts.map +1 -1
  105. package/dist/cjs/review/writeRecovery.js +38 -5
  106. package/dist/cjs/review/writeRecovery.js.map +1 -1
  107. package/dist/cjs/v6/cashOut.d.ts.map +1 -1
  108. package/dist/cjs/v6/cashOut.js +8 -14
  109. package/dist/cjs/v6/cashOut.js.map +1 -1
  110. package/dist/cjs/v6/feeBuyback.d.ts.map +1 -1
  111. package/dist/cjs/v6/feeBuyback.js +2 -7
  112. package/dist/cjs/v6/feeBuyback.js.map +1 -1
  113. package/dist/cjs/v6/pay.d.ts.map +1 -1
  114. package/dist/cjs/v6/pay.js +36 -37
  115. package/dist/cjs/v6/pay.js.map +1 -1
  116. package/dist/cjs/v6/terminals.d.ts.map +1 -1
  117. package/dist/cjs/v6/terminals.js +2 -8
  118. package/dist/cjs/v6/terminals.js.map +1 -1
  119. package/dist/cjs/v6/types.d.ts +10 -0
  120. package/dist/cjs/v6/types.d.ts.map +1 -1
  121. package/dist/cjs/v6/types.js +20 -0
  122. package/dist/cjs/v6/types.js.map +1 -1
  123. package/dist/esm/generated/abi/jbBuybackHookAbi.d.ts +8 -0
  124. package/dist/esm/generated/abi/jbBuybackHookAbi.d.ts.map +1 -1
  125. package/dist/esm/generated/abi/jbBuybackHookAbi.js +5 -0
  126. package/dist/esm/generated/abi/jbBuybackHookAbi.js.map +1 -1
  127. package/dist/esm/generated/abi/jbBuybackHookPreviousAbi.d.ts +12 -0
  128. package/dist/esm/generated/abi/jbBuybackHookPreviousAbi.d.ts.map +1 -1
  129. package/dist/esm/generated/abi/jbBuybackHookPreviousAbi.js +8 -0
  130. package/dist/esm/generated/abi/jbBuybackHookPreviousAbi.js.map +1 -1
  131. package/dist/esm/generated/abi/jbBuybackHookV2Abi.d.ts +1175 -0
  132. package/dist/esm/generated/abi/jbBuybackHookV2Abi.d.ts.map +1 -0
  133. package/dist/esm/generated/abi/jbBuybackHookV2Abi.js +829 -0
  134. package/dist/esm/generated/abi/jbBuybackHookV2Abi.js.map +1 -0
  135. package/dist/esm/generated/abi/jbUniswapV4LpSplitHookAbi.d.ts +214 -113
  136. package/dist/esm/generated/abi/jbUniswapV4LpSplitHookAbi.d.ts.map +1 -1
  137. package/dist/esm/generated/abi/jbUniswapV4LpSplitHookAbi.js +176 -82
  138. package/dist/esm/generated/abi/jbUniswapV4LpSplitHookAbi.js.map +1 -1
  139. package/dist/esm/generated/abi/jbUniswapV4LpSplitHookDeployerAbi.d.ts +1 -1
  140. package/dist/esm/generated/abi/jbUniswapV4LpSplitHookDeployerAbi.js +1 -1
  141. package/dist/esm/generated/abi/jbUniswapV4LpSplitHookDeployerAbi.js.map +1 -1
  142. package/dist/esm/generated/abi/jbp6FeeLpSplitHookAbi.d.ts +214 -113
  143. package/dist/esm/generated/abi/jbp6FeeLpSplitHookAbi.d.ts.map +1 -1
  144. package/dist/esm/generated/abi/jbp6FeeLpSplitHookAbi.js +176 -82
  145. package/dist/esm/generated/abi/jbp6FeeLpSplitHookAbi.js.map +1 -1
  146. package/dist/esm/generated/addresses/jbContractAddress.d.ts +42 -42
  147. package/dist/esm/generated/addresses/jbContractAddressHistory.d.ts +75 -0
  148. package/dist/esm/generated/addresses/jbContractAddressHistory.d.ts.map +1 -0
  149. package/dist/esm/generated/addresses/jbContractAddressHistory.js +77 -0
  150. package/dist/esm/generated/addresses/jbContractAddressHistory.js.map +1 -0
  151. package/dist/esm/generated/addresses/jbV6ContractAddress.d.ts +42 -42
  152. package/dist/esm/generated/addresses/jbV6ContractAddress.js +42 -42
  153. package/dist/esm/generated/juicebox.d.ts +13 -45
  154. package/dist/esm/generated/juicebox.d.ts.map +1 -1
  155. package/dist/esm/generated/juicebox.js +22 -45
  156. package/dist/esm/generated/juicebox.js.map +1 -1
  157. package/dist/esm/review/confirm.d.ts +4 -0
  158. package/dist/esm/review/confirm.d.ts.map +1 -1
  159. package/dist/esm/review/confirm.js +13 -3
  160. package/dist/esm/review/confirm.js.map +1 -1
  161. package/dist/esm/review/contractWrite.d.ts.map +1 -1
  162. package/dist/esm/review/contractWrite.js +3 -2
  163. package/dist/esm/review/contractWrite.js.map +1 -1
  164. package/dist/esm/review/decodeCall.d.ts.map +1 -1
  165. package/dist/esm/review/decodeCall.js +7 -0
  166. package/dist/esm/review/decodeCall.js.map +1 -1
  167. package/dist/esm/review/heldWrite.d.ts +4 -0
  168. package/dist/esm/review/heldWrite.d.ts.map +1 -1
  169. package/dist/esm/review/heldWrite.js +30 -27
  170. package/dist/esm/review/heldWrite.js.map +1 -1
  171. package/dist/esm/review/index.d.ts +1 -1
  172. package/dist/esm/review/index.d.ts.map +1 -1
  173. package/dist/esm/review/index.js +1 -1
  174. package/dist/esm/review/index.js.map +1 -1
  175. package/dist/esm/review/lineError.d.ts +38 -0
  176. package/dist/esm/review/lineError.d.ts.map +1 -1
  177. package/dist/esm/review/lineError.js +33 -1
  178. package/dist/esm/review/lineError.js.map +1 -1
  179. package/dist/esm/review/plan.d.ts +0 -2
  180. package/dist/esm/review/plan.d.ts.map +1 -1
  181. package/dist/esm/review/plan.js +0 -5
  182. package/dist/esm/review/plan.js.map +1 -1
  183. package/dist/esm/review/react/useHeldSend.js +3 -4
  184. package/dist/esm/review/react/useHeldSend.js.map +1 -1
  185. package/dist/esm/review/react/useHeldWrite.d.ts.map +1 -1
  186. package/dist/esm/review/react/useHeldWrite.js +2 -1
  187. package/dist/esm/review/react/useHeldWrite.js.map +1 -1
  188. package/dist/esm/review/react/useReviewedRun.d.ts +29 -3
  189. package/dist/esm/review/react/useReviewedRun.d.ts.map +1 -1
  190. package/dist/esm/review/react/useReviewedRun.js +220 -38
  191. package/dist/esm/review/react/useReviewedRun.js.map +1 -1
  192. package/dist/esm/review/receipt.d.ts +33 -0
  193. package/dist/esm/review/receipt.d.ts.map +1 -1
  194. package/dist/esm/review/receipt.js +66 -0
  195. package/dist/esm/review/receipt.js.map +1 -1
  196. package/dist/esm/review/relayr.d.ts.map +1 -1
  197. package/dist/esm/review/relayr.js +2 -1
  198. package/dist/esm/review/relayr.js.map +1 -1
  199. package/dist/esm/review/relayrSend.d.ts +3 -32
  200. package/dist/esm/review/relayrSend.d.ts.map +1 -1
  201. package/dist/esm/review/relayrSend.js +85 -232
  202. package/dist/esm/review/relayrSend.js.map +1 -1
  203. package/dist/esm/review/safeRelayr.d.ts.map +1 -1
  204. package/dist/esm/review/safeRelayr.js +4 -8
  205. package/dist/esm/review/safeRelayr.js.map +1 -1
  206. package/dist/esm/review/safeSend.js +4 -6
  207. package/dist/esm/review/safeSend.js.map +1 -1
  208. package/dist/esm/review/send.d.ts +38 -7
  209. package/dist/esm/review/send.d.ts.map +1 -1
  210. package/dist/esm/review/send.js +270 -125
  211. package/dist/esm/review/send.js.map +1 -1
  212. package/dist/esm/review/sign.d.ts +6 -4
  213. package/dist/esm/review/sign.d.ts.map +1 -1
  214. package/dist/esm/review/sign.js +24 -20
  215. package/dist/esm/review/sign.js.map +1 -1
  216. package/dist/esm/review/wallet.d.ts +18 -2
  217. package/dist/esm/review/wallet.d.ts.map +1 -1
  218. package/dist/esm/review/wallet.js +128 -51
  219. package/dist/esm/review/wallet.js.map +1 -1
  220. package/dist/esm/review/writeHold.d.ts +38 -1
  221. package/dist/esm/review/writeHold.d.ts.map +1 -1
  222. package/dist/esm/review/writeHold.js +37 -6
  223. package/dist/esm/review/writeHold.js.map +1 -1
  224. package/dist/esm/review/writeRecovery.d.ts +11 -0
  225. package/dist/esm/review/writeRecovery.d.ts.map +1 -1
  226. package/dist/esm/review/writeRecovery.js +38 -5
  227. package/dist/esm/review/writeRecovery.js.map +1 -1
  228. package/dist/esm/v6/cashOut.d.ts.map +1 -1
  229. package/dist/esm/v6/cashOut.js +10 -16
  230. package/dist/esm/v6/cashOut.js.map +1 -1
  231. package/dist/esm/v6/feeBuyback.d.ts.map +1 -1
  232. package/dist/esm/v6/feeBuyback.js +2 -7
  233. package/dist/esm/v6/feeBuyback.js.map +1 -1
  234. package/dist/esm/v6/pay.d.ts.map +1 -1
  235. package/dist/esm/v6/pay.js +37 -38
  236. package/dist/esm/v6/pay.js.map +1 -1
  237. package/dist/esm/v6/terminals.d.ts.map +1 -1
  238. package/dist/esm/v6/terminals.js +4 -10
  239. package/dist/esm/v6/terminals.js.map +1 -1
  240. package/dist/esm/v6/types.d.ts +10 -0
  241. package/dist/esm/v6/types.d.ts.map +1 -1
  242. package/dist/esm/v6/types.js +18 -0
  243. package/dist/esm/v6/types.js.map +1 -1
  244. package/package.json +1 -1
@@ -1,4 +1,5 @@
1
- import { ReviewLineError } from "./lineError.js";
1
+ import { ReviewLineError, WalletNotInvokedError } from "./lineError.js";
2
+ import { BaseError, ChainMismatchError, createWalletClient, custom, } from "viem";
2
3
  import { timeout } from "../pause.js";
3
4
  /** How long a wallet's `ready` may take before nothing is sent. */
4
5
  const WALLET_READY_MS = 10_000;
@@ -20,35 +21,122 @@ export async function walletReady(adapter) {
20
21
  });
21
22
  }
22
23
  }
24
+ const CONNECTION_CHANGED = "Wallet connection changed. Review the transaction again.";
25
+ const NETWORK_CHANGED = "Your wallet changed networks. Review again.";
26
+ const UNREACHABLE = "Your wallet could not be reached. Nothing was sent; try again.";
27
+ const RUN_ENDED = "This action was closed. Nothing more was sent.";
28
+ /** The provider requests that send or sign: each is checked again as it is forwarded. */
29
+ const DISPATCHED = new Set([
30
+ "eth_sendTransaction",
31
+ "wallet_sendTransaction",
32
+ "eth_sendRawTransaction",
33
+ "wallet_sendCalls",
34
+ "eth_signTypedData_v4",
35
+ "personal_sign",
36
+ ]);
23
37
  /**
24
- * The connected account and the wallet client. The account, chain and Safe
25
- * mode are read before the client is fetched and again after, so a wallet
26
- * that switched in between is refused instead of signing in the new one.
38
+ * Calls `invoke` with a client over the connected wallet whose every sending
39
+ * or signing request first checks, synchronously, that the account, chain,
40
+ * Safe mode, connector and the site's `check` read as they did when asked:
41
+ * viem awaits its own reads before it sends, so no earlier check is the last.
42
+ * A refusal before any such request went out is a {@link WalletNotInvokedError}.
43
+ * A connector that changes while the client loads is fetched again, three
44
+ * times at most.
27
45
  */
28
- async function connection(options) {
29
- const asked = options.account();
30
- if (!asked)
31
- throw new ReviewLineError("Connect a wallet first.");
46
+ async function withConnection(options, invoke, signal) {
47
+ const account = options.account();
48
+ if (!account)
49
+ throw new WalletNotInvokedError("Connect a wallet first.");
32
50
  const chainId = options.chainId();
33
51
  const safe = options.isSafe();
34
- const client = await options.walletClient();
35
- if (options.account()?.toLowerCase() !== asked.toLowerCase()) {
36
- throw new ReviewLineError("The connected account changed. Review again.");
37
- }
38
- if (options.chainId() !== chainId || options.isSafe() !== safe) {
39
- throw new ReviewLineError("Wallet connection changed. Review the transaction again.");
52
+ const current = () => {
53
+ if (signal?.aborted)
54
+ throw new WalletNotInvokedError(RUN_ENDED);
55
+ if (options.account()?.toLowerCase() !== account.toLowerCase()) {
56
+ throw new WalletNotInvokedError("The connected account changed. Review again.");
57
+ }
58
+ if (options.chainId() !== chainId || options.isSafe() !== safe) {
59
+ throw new WalletNotInvokedError(CONNECTION_CHANGED);
60
+ }
61
+ try {
62
+ options.check?.();
63
+ }
64
+ catch (error) {
65
+ throw Object.assign(new WalletNotInvokedError(error instanceof Error ? error.message : CONNECTION_CHANGED), { cause: error });
66
+ }
67
+ return options.connector?.();
68
+ };
69
+ let wallet;
70
+ let connector;
71
+ for (let attempt = 0; attempt < 3 && !wallet; attempt += 1) {
72
+ connector = current();
73
+ let fetched;
74
+ try {
75
+ fetched = await options.walletClient();
76
+ }
77
+ catch (error) {
78
+ throw Object.assign(new WalletNotInvokedError(UNREACHABLE), {
79
+ cause: error,
80
+ });
81
+ }
82
+ if (current() === connector)
83
+ wallet = fetched;
40
84
  }
41
- return { account: asked, client, safe };
42
- }
43
- /** Refuses a signature once the account or Safe mode has changed since `connection` read them. */
44
- function unchanged(options, { account, safe }) {
45
- if (options.account()?.toLowerCase() !== account.toLowerCase()) {
46
- throw new ReviewLineError("The connected account changed. Review again.");
85
+ if (!wallet)
86
+ throw new WalletNotInvokedError(CONNECTION_CHANGED);
87
+ // A composite transport (viem's fallback) can pass one send to a second
88
+ // provider, so a later 4001 would not prove the first never sent it.
89
+ if (!ONE_PROVIDER.has(wallet.transport.type))
90
+ throw new WalletNotInvokedError(COMPOSITE);
91
+ const inner = wallet;
92
+ let forwarded = false;
93
+ let refusal;
94
+ const client = createWalletClient({
95
+ account: inner.account,
96
+ chain: inner.chain,
97
+ transport: custom({
98
+ request: (args) => {
99
+ const forwardedNow = DISPATCHED.has(args.method);
100
+ if (forwardedNow) {
101
+ try {
102
+ if (current() !== connector)
103
+ throw new WalletNotInvokedError(CONNECTION_CHANGED);
104
+ }
105
+ catch (error) {
106
+ // Unsent only while none of this call's requests went out.
107
+ if (forwarded)
108
+ return Promise.reject(new ReviewLineError(CONNECTION_CHANGED));
109
+ refusal = error;
110
+ return Promise.reject(error);
111
+ }
112
+ forwarded = true;
113
+ }
114
+ // A send or signature reaches the wallet once, never retried past this check.
115
+ return forwardedNow
116
+ ? inner.request(args, { retryCount: 0 })
117
+ : inner.request(args);
118
+ },
119
+ }, { retryCount: 0 }),
120
+ });
121
+ try {
122
+ return await invoke({ account, client });
47
123
  }
48
- if (options.isSafe() !== safe) {
49
- throw new ReviewLineError("Wallet connection changed. Review the transaction again.");
124
+ catch (error) {
125
+ // viem wraps what its transport threw; the refusal is this one, by identity.
126
+ if (refusal)
127
+ throw refusal;
128
+ // viem failed before asking the wallet anything (a chain read, another chain).
129
+ if (!forwarded)
130
+ throw Object.assign(new WalletNotInvokedError(error instanceof BaseError &&
131
+ error.walk((e) => e instanceof ChainMismatchError)
132
+ ? NETWORK_CHANGED
133
+ : UNREACHABLE), { cause: error });
134
+ throw error;
50
135
  }
51
136
  }
137
+ /** viem transports that hand each request to exactly one provider. */
138
+ const ONE_PROVIDER = new Set(["custom", "http", "webSocket", "ipc"]);
139
+ const COMPOSITE = "This wallet connection uses more than one provider. Connect through one wallet provider; nothing was sent.";
52
140
  /**
53
141
  * The chain a write is sent on: the client's own when it is that chain, so
54
142
  * its formatters apply. viem checks the wallet is on it before sending.
@@ -80,43 +168,31 @@ export function viemWalletAdapter(options) {
80
168
  switchChain: async (chainId) => {
81
169
  await options.switchChain(chainId);
82
170
  },
83
- async sendTransaction({ chainId, to, data, value, gas }) {
84
- const { account, client } = await connection(options);
85
- return client.sendTransaction({
86
- account,
87
- chain: chainOf(client, chainId),
88
- to,
89
- data,
90
- value,
91
- ...(gas === undefined ? {} : { gas }),
92
- });
93
- },
94
- async signTypedData(typedData) {
95
- const connected = await connection(options);
96
- unchanged(options, connected);
97
- const { account, client } = connected;
171
+ sendTransaction: ({ chainId, to, data, value, gas, signal }) => withConnection(options, ({ account, client }) => client.sendTransaction({
172
+ account,
173
+ chain: chainOf(client, chainId),
174
+ to,
175
+ data,
176
+ value,
177
+ ...(gas === undefined ? {} : { gas }),
178
+ }), signal),
179
+ signTypedData: async (typedData) => {
98
180
  // viem does not check the wallet's chain against the domain's.
99
181
  const chainId = typedData.domain?.chainId;
100
182
  if (chainId !== undefined && options.chainId() !== Number(chainId)) {
101
- throw new ReviewLineError("Your wallet changed networks. Review again.");
183
+ throw new WalletNotInvokedError(NETWORK_CHANGED);
102
184
  }
103
- return client.signTypedData({ ...typedData, account });
104
- },
105
- async signMessage(message) {
106
- const connected = await connection(options);
107
- unchanged(options, connected);
108
- const { account, client } = connected;
109
- return client.signMessage({ account, message });
185
+ return withConnection(options, ({ account, client }) => client.signTypedData({ ...typedData, account }));
110
186
  },
111
- async sendCalls(chainId, calls) {
112
- const { account, client } = await connection(options);
187
+ signMessage: (message) => withConnection(options, ({ account, client }) => client.signMessage({ account, message })),
188
+ sendCalls: (chainId, calls) => withConnection(options, async ({ account, client }) => {
113
189
  const { id } = await client.sendCalls({
114
190
  account,
115
191
  chain: chainOf(client, chainId),
116
192
  calls: calls.map(({ to, data, value }) => ({ to, data, value })),
117
193
  });
118
194
  return id;
119
- },
195
+ }),
120
196
  };
121
197
  }
122
198
  /** EIP-1193 4200, as Signa's connector refuses a request it does not take. */
@@ -127,7 +203,8 @@ export function unsupportedWalletRequest() {
127
203
  }
128
204
  /**
129
205
  * A {@link WalletAdapter} for a wallet that reviews on its own page (Signa).
130
- * It takes raw calls through `submit` only; every other method is refused
206
+ * It takes raw calls through `submit`, and raw typed data or text through
207
+ * `signTypedData` and `signMessage` when given; anything else is refused
131
208
  * with EIP-1193 4200.
132
209
  */
133
210
  export function selfReviewingAdapter(options) {
@@ -142,8 +219,8 @@ export function selfReviewingAdapter(options) {
142
219
  isSafe: refuse,
143
220
  switchChain: reject,
144
221
  sendTransaction: reject,
145
- signTypedData: reject,
146
- signMessage: reject,
222
+ signTypedData: options.signTypedData ?? reject,
223
+ signMessage: options.signMessage ?? reject,
147
224
  submitToReviewer: (request) => options.submit(request),
148
225
  };
149
226
  }
@@ -1 +1 @@
1
- {"version":3,"file":"wallet.js","sourceRoot":"","sources":["../../../src/review/wallet.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"wallet.js","sourceRoot":"","sources":["../../../src/review/wallet.ts"],"names":[],"mappings":"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"}
@@ -14,10 +14,17 @@ export type UnacknowledgedSuccess = {
14
14
  export type WriteHoldClient = Pick<PublicClient, "getBlock" | "getBlockNumber" | "getChainId" | "getTransaction" | "getTransactionCount" | "getTransactionReceipt" | "request">;
15
15
  /** How a held write ended, when the hold saw it end. */
16
16
  export type WriteHoldSettled =
17
- /** Its verified receipt in a canonical block (a Safe failure only once final); `acknowledged` once the user saw it. */
17
+ /**
18
+ * Its verified receipt in a canonical block (a Safe failure only once
19
+ * final), `blockHash` that block's (none when a finalized log proved it);
20
+ * `safe` when it is a Safe's execution, whose failure is the Safe's own
21
+ * (its outer transaction may succeed); `acknowledged` once the user saw it.
22
+ */
18
23
  {
19
24
  result: "success" | "failed";
20
25
  hash: Hex;
26
+ blockHash?: Hex;
27
+ safe?: true;
21
28
  acknowledged?: true;
22
29
  }
23
30
  /** A Safe proposal's expiry before it ran is proven. */
@@ -136,6 +143,12 @@ export declare class WriteHeldError extends ReviewLineError {
136
143
  readonly name = "WriteHeldError";
137
144
  constructor(state: WriteHeldState);
138
145
  }
146
+ /** A run refused while the action's last success is unacknowledged; "Send it again" acknowledges `success`. */
147
+ export declare class WriteHoldUnacknowledgedSuccessError extends ReviewLineError {
148
+ readonly success: UnacknowledgedSuccess;
149
+ readonly name = "WriteHoldUnacknowledgedSuccessError";
150
+ constructor(success: UnacknowledgedSuccess);
151
+ }
139
152
  /** The account's nonce couldn't be read, so the wallet never opened. */
140
153
  export declare class WriteHoldNonceError extends ReviewLineError {
141
154
  readonly cause: unknown;
@@ -263,6 +276,14 @@ export declare function createWriteHold(options?: {
263
276
  result: "success" | "failed";
264
277
  hash: Hex;
265
278
  }): Promise<WriteHoldState>;
279
+ /**
280
+ * Claim the one `onConfirmed` notice of the settlement `settled` names,
281
+ * under the call's lock: true for the first completion in any tab or
282
+ * run; a completion that loses it stays silent.
283
+ */
284
+ claimConfirmed(settled: {
285
+ hash: Hex;
286
+ }): Promise<boolean>;
266
287
  };
267
288
  list: ({ account, chainId }: {
268
289
  account: Address;
@@ -329,6 +350,14 @@ export declare function createWriteHold(options?: {
329
350
  result: "success" | "failed";
330
351
  hash: Hex;
331
352
  }): Promise<WriteHoldState>;
353
+ /**
354
+ * Claim the one `onConfirmed` notice of the settlement `settled` names,
355
+ * under the call's lock: true for the first completion in any tab or
356
+ * run; a completion that loses it stays silent.
357
+ */
358
+ claimConfirmed(settled: {
359
+ hash: Hex;
360
+ }): Promise<boolean>;
332
361
  };
333
362
  }[];
334
363
  /** Whether holds outlive this tab right now. */
@@ -415,6 +444,14 @@ export declare function openStepHold(hold: WriteHold, account: Address, safe: bo
415
444
  result: "success" | "failed";
416
445
  hash: Hex;
417
446
  }): Promise<WriteHoldState>;
447
+ /**
448
+ * Claim the one `onConfirmed` notice of the settlement `settled` names,
449
+ * under the call's lock: true for the first completion in any tab or
450
+ * run; a completion that loses it stays silent.
451
+ */
452
+ claimConfirmed(settled: {
453
+ hash: Hex;
454
+ }): Promise<boolean>;
418
455
  };
419
456
  /**
420
457
  * The one call a Safe app proposes a batch of `calls` as (`ReviewedAction`'s
@@ -1 +1 @@
1
- {"version":3,"file":"writeHold.d.ts","sourceRoot":"","sources":["../../../src/review/writeHold.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAC;AACjD,OAAO,EAGL,KAAK,OAAO,EACZ,KAAK,GAAG,EACR,KAAK,YAAY,EACjB,KAAK,kBAAkB,EACxB,MAAM,MAAM,CAAC;AACd,OAAO,EAOL,KAAK,qBAAqB,EAC1B,KAAK,kBAAkB,EACxB,MAAM,mBAAmB,CAAC;AAgB3B,OAAO,EAYL,KAAK,gBAAgB,EACrB,KAAK,0BAA0B,EAC/B,KAAK,2BAA2B,EACjC,MAAM,oBAAoB,CAAC;AAK5B,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,WAAW,CAAC;AA4C9C,wFAAwF;AACxF,MAAM,MAAM,qBAAqB,GAAG;IAClC,MAAM,EAAE,SAAS,CAAC;IAClB,IAAI,EAAE,GAAG,CAAC;IACV,kCAAkC;IAClC,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB,CAAC;AAEF,0FAA0F;AAC1F,MAAM,MAAM,eAAe,GAAG,IAAI,CAChC,YAAY,EACV,UAAU,GACV,gBAAgB,GAChB,YAAY,GACZ,gBAAgB,GAChB,qBAAqB,GACrB,uBAAuB,GACvB,SAAS,CACZ,CAAC;AAEF,wDAAwD;AACxD,MAAM,MAAM,gBAAgB;AAC1B,uHAAuH;AACrH;IAAE,MAAM,EAAE,SAAS,GAAG,QAAQ,CAAC;IAAC,IAAI,EAAE,GAAG,CAAC;IAAC,YAAY,CAAC,EAAE,IAAI,CAAA;CAAE;AAClE,wDAAwD;GACtD;IAAE,MAAM,EAAE,SAAS,CAAA;CAAE,CAAC;AAE1B,KAAK,IAAI,CAAC,CAAC,SAAS,MAAM,EAAE,KAAK,IAAI;IACnC,MAAM,EAAE,CAAC,CAAC;IACV,2EAA2E;IAC3E,MAAM,EAAE,2BAA2B,CAAC;IACpC,yCAAyC;IACzC,IAAI,EAAE,MAAM,CAAC;CACd,GAAG,KAAK,CAAC;AAEV;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA0CG;AACH,MAAM,MAAM,cAAc,GAAG,gBAAgB,GAAG;IAC9C,+EAA+E;IAC/E,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB;;;OAGG;IACH,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB;;;;;OAKG;IACH,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB,CAAC;AAEF,KAAK,gBAAgB,GACjB;IAAE,MAAM,EAAE,OAAO,CAAC;IAAC,OAAO,CAAC,EAAE,gBAAgB,CAAA;CAAE,GAC/C,IAAI,CAAC,oBAAoB,EAAE;IAAE,IAAI,EAAE,GAAG,CAAC;IAAC,IAAI,EAAE,KAAK,CAAA;CAAE,CAAC,GACtD,IAAI,CAAC,cAAc,EAAE;IAAE,IAAI,EAAE,OAAO,CAAA;CAAE,CAAC,GACvC,IAAI,CACF,gBAAgB,EAChB;IAAE,IAAI,EAAE,GAAG,CAAC;IAAC,MAAM,EAAE,GAAG,CAAC;IAAC,IAAI,EAAE,OAAO,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,CAC3D,GACD,IAAI,CAAC,gBAAgB,EAAE;IAAE,IAAI,EAAE,GAAG,CAAC;IAAC,IAAI,EAAE,OAAO,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,CAAC,GACrE,IAAI,CAAC,eAAe,EAAE;IAAE,IAAI,EAAE,GAAG,CAAC;IAAC,IAAI,EAAE,OAAO,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,CAAC,GACpE,IAAI,CAAC,eAAe,EAAE;IAAE,IAAI,EAAE,GAAG,CAAC;IAAC,IAAI,EAAE,OAAO,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,CAAC,GACpE,IAAI,CAAC,YAAY,EAAE;IAAE,IAAI,CAAC,EAAE,GAAG,CAAC;IAAC,IAAI,EAAE,OAAO,CAAC;IAAC,OAAO,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC,GACnE,IAAI,CACF,cAAc,EACd;IAAE,aAAa,CAAC,EAAE,GAAG,CAAC;IAAC,MAAM,CAAC,EAAE,QAAQ,CAAC;IAAC,IAAI,EAAE,KAAK,CAAA;CAAE,CACxD,CAAC;AAaN,6BAA6B;AAC7B,MAAM,MAAM,cAAc,GAAG,OAAO,CAAC,gBAAgB,EAAE;IAAE,MAAM,EAAE,OAAO,CAAA;CAAE,CAAC,GAAG;IAC5E,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB,CAAC;AAEF,2EAA2E;AAC3E,qBAAa,cAAe,SAAQ,eAAe;IAErC,QAAQ,CAAC,KAAK,EAAE,cAAc;IAD1C,QAAQ,CAAC,IAAI,oBAAoB;gBACZ,KAAK,EAAE,cAAc;CAG3C;AAED,wEAAwE;AACxE,qBAAa,mBAAoB,SAAQ,eAAe;IAE1C,QAAQ,CAAC,KAAK,EAAE,OAAO;IADnC,QAAQ,CAAC,IAAI,yBAAyB;gBACjB,KAAK,EAAE,OAAO;CAGpC;AAED;;;;GAIG;AACH,qBAAa,yBAA0B,SAAQ,eAAe;IAEhD,QAAQ,CAAC,OAAO,CAAC,EAAE,gBAAgB;IAD/C,QAAQ,CAAC,IAAI,+BAA+B;gBACvB,OAAO,CAAC,EAAE,gBAAgB,YAAA;CAGhD;AAED,qEAAqE;AACrE,qBAAa,kBAAmB,SAAQ,eAAe;IACrD,QAAQ,CAAC,IAAI,wBAAwB;;CAItC;AAED,sFAAsF;AACtF,MAAM,MAAM,aAAa,GAAG;IAC1B;;;;;OAKG;IACH,UAAU,CAAC,UAAU,CAAC,EAAE,0BAA0B,CAAC,MAAM,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAC3E,wFAAwF;IACxF,WAAW,CAAC,IAAI,EAAE,GAAG,EAAE,QAAQ,CAAC,EAAE,qBAAqB,GAAG,IAAI,CAAC;IAC/D,+FAA+F;IAC/F,UAAU,IAAI,IAAI,CAAC;CACpB,CAAC;AAEF,KAAK,KAAK,GAAG,IAAI,CAAC,WAAW,EAAE,SAAS,CAAC,CAAC;AA8I1C;;;;;;;;;;;;;;;;;;;GAmBG;AACH,wBAAgB,eAAe,CAC7B,OAAO,GAAE;IACP,OAAO,CAAC,EAAE,gBAAgB,CAAC;IAC3B,KAAK,CAAC,EAAE,KAAK,CAAC;IACd,WAAW,CAAC,EAAE,kBAAkB,CAAC;IACjC,sFAAsF;IACtF,MAAM,CAAC,EAAE;QAAE,UAAU,CAAC,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;CAChD;iBAyzCE,0BAA0B,gBAG7B;QACD,MAAM,CAAC,EAAE,qBAAqB,EAAE,CAAC;KAClC;;sBA+hBW,eAAe,WACd;YAAE,MAAM,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,OAAO,CAAC,OAAO,CAAC,CAAA;SAAE,GAC1D,OAAO,CAAC,cAAc,CAAC;aAGf,CAAC,UACF,eAAe,OAClB,CAAC,IAAI,EAAE,aAAa,KAAK,OAAO,CAAC,CAAC,CAAC,GACvC,OAAO,CAAC,CAAC,CAAC;uBAMD,cAAc,mBACP;YAAE,aAAa,EAAE,IAAI,CAAA;SAAE,UAChC,eAAe,GACtB,OAAO,CAAC;YAAE,QAAQ,EAAE,OAAO,CAAC;YAAC,KAAK,EAAE,cAAc,CAAA;SAAE,CAAC;;;;;;;;;wBA5tBjB,GAAG;mBAAS,MAAM;;;oBA5F7C,MAAM,GAAG,MAAM;wBACX,MAAM,GAAG,MAAM;wBACf,MAAM;0BACJ,MAAM;mBACb,GAAG;mBACH;gBAAE,UAAU,EAAE,GAAG,CAAA;aAAE;;uBAGW,SAAS,GAAG,YAAY;;QAnSjE;;;WAGG;4BACiB,CAAC,KAAK,EAAE,cAAc,KAAK,IAAI,GAAG,MAAM,IAAI;QA4YhE;;;WAGG;qCAGM,CAAC,IAAI,EAAE,GAAG,KAAK,OAAO,GAC5B,qBAAqB,GAAG,SAAS;QAapC,4FAA4F;8BACtE,MAAM,GAAG,OAAO;QAGtC,yEAAyE;kCAC/C,MAAM,GAAG,gBAAgB,GAAG,SAAS;QAM/D;;;;;WAKG;6BACwB;YACzB,MAAM,EAAE,SAAS,GAAG,QAAQ,CAAC;YAC7B,IAAI,EAAE,GAAG,CAAC;SACX,GAAG,OAAO,CAAC,cAAc,CAAC;;iCA4rBK;QAAE,OAAO,EAAE,OAAO,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE;;;;;0BAlD3D,eAAe,WACd;gBAAE,MAAM,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,OAAO,CAAC,OAAO,CAAC,CAAA;aAAE,GAC1D,OAAO,CAAC,cAAc,CAAC;iBAGf,CAAC,UACF,eAAe,OAClB,CAAC,IAAI,EAAE,aAAa,KAAK,OAAO,CAAC,CAAC,CAAC,GACvC,OAAO,CAAC,CAAC,CAAC;2BAMD,cAAc,mBACP;gBAAE,aAAa,EAAE,IAAI,CAAA;aAAE,UAChC,eAAe,GACtB,OAAO,CAAC;gBAAE,QAAQ,EAAE,OAAO,CAAC;gBAAC,KAAK,EAAE,cAAc,CAAA;aAAE,CAAC;;;;;;;;;4BA5tBjB,GAAG;uBAAS,MAAM;;;wBA5F7C,MAAM,GAAG,MAAM;4BACX,MAAM,GAAG,MAAM;4BACf,MAAM;8BACJ,MAAM;uBACb,GAAG;uBACH;oBAAE,UAAU,EAAE,GAAG,CAAA;iBAAE;;2BAGW,SAAS,GAAG,YAAY;;YAnSjE;;;eAGG;gCACiB,CAAC,KAAK,EAAE,cAAc,KAAK,IAAI,GAAG,MAAM,IAAI;YA4YhE;;;eAGG;yCAGM,CAAC,IAAI,EAAE,GAAG,KAAK,OAAO,GAC5B,qBAAqB,GAAG,SAAS;YAapC,4FAA4F;kCACtE,MAAM,GAAG,OAAO;YAGtC,yEAAyE;sCAC/C,MAAM,GAAG,gBAAgB,GAAG,SAAS;YAM/D;;;;;eAKG;iCACwB;gBACzB,MAAM,EAAE,SAAS,GAAG,QAAQ,CAAC;gBAC7B,IAAI,EAAE,GAAG,CAAC;aACX,GAAG,OAAO,CAAC,cAAc,CAAC;;;IAitB7B,gDAAgD;;IAEhD,oEAAoE;;IAEpE,qEAAqE;;IAErE,+DAA+D;;EAGlE;AAED;;;;GAIG;AACH,MAAM,MAAM,qBAAqB,GAC7B,MAAM,GACN;IAAE,IAAI,EAAE,0BAA0B,CAAC,MAAM,CAAC,CAAA;CAAE,GAC5C;IAAE,KAAK,EAAE;QAAE,EAAE,EAAE,OAAO,CAAC;QAAC,QAAQ,EAAE,GAAG,CAAA;KAAE,CAAA;CAAE,CAAC;AAE9C,MAAM,MAAM,SAAS,GAAG,UAAU,CAAC,OAAO,eAAe,CAAC,CAAC;AAC3D,MAAM,MAAM,eAAe,GAAG,UAAU,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC;AAE5D,gFAAgF;AAChF,wBAAgB,YAAY,CAC1B,IAAI,EAAE,SAAS,EACf,OAAO,EAAE,OAAO,EAChB,IAAI,EAAE,OAAO,EACb,IAAI,EAAE,IAAI,CACR,YAAY,EACZ,SAAS,GAAG,IAAI,GAAG,MAAM,GAAG,OAAO,GAAG,QAAQ,GAAG,QAAQ,CAC1D;;kBAvGa,eAAe,WACd;QAAE,MAAM,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,OAAO,CAAC,OAAO,CAAC,CAAA;KAAE,GAC1D,OAAO,CAAC,cAAc,CAAC;SAGf,CAAC,UACF,eAAe,OAClB,CAAC,IAAI,EAAE,aAAa,KAAK,OAAO,CAAC,CAAC,CAAC,GACvC,OAAO,CAAC,CAAC,CAAC;mBAMD,cAAc,mBACP;QAAE,aAAa,EAAE,IAAI,CAAA;KAAE,UAChC,eAAe,GACtB,OAAO,CAAC;QAAE,QAAQ,EAAE,OAAO,CAAC;QAAC,KAAK,EAAE,cAAc,CAAA;KAAE,CAAC;;;;;;;;;oBA5tBjB,GAAG;eAAS,MAAM;;;gBA5F7C,MAAM,GAAG,MAAM;oBACX,MAAM,GAAG,MAAM;oBACf,MAAM;sBACJ,MAAM;eACb,GAAG;eACH;YAAE,UAAU,EAAE,GAAG,CAAA;SAAE;;mBAGW,SAAS,GAAG,YAAY;;IAnSjE;;;OAGG;wBACiB,CAAC,KAAK,EAAE,cAAc,KAAK,IAAI,GAAG,MAAM,IAAI;IA4YhE;;;OAGG;iCAGM,CAAC,IAAI,EAAE,GAAG,KAAK,OAAO,GAC5B,qBAAqB,GAAG,SAAS;IAapC,4FAA4F;0BACtE,MAAM,GAAG,OAAO;IAGtC,yEAAyE;8BAC/C,MAAM,GAAG,gBAAgB,GAAG,SAAS;IAM/D;;;;;OAKG;yBACwB;QACzB,MAAM,EAAE,SAAS,GAAG,QAAQ,CAAC;QAC7B,IAAI,EAAE,GAAG,CAAC;KACX,GAAG,OAAO,CAAC,cAAc,CAAC;EA6vBhC;AAED;;;;GAIG;AACH,wBAAgB,aAAa,CAC3B,OAAO,EAAE,OAAO,EAChB,KAAK,EAAE,SAAS,IAAI,CAClB,YAAY,EACZ,SAAS,GAAG,IAAI,GAAG,MAAM,GAAG,OAAO,GAAG,QAAQ,GAAG,QAAQ,CAC1D,EAAE;;;;;;;EAgBJ"}
1
+ {"version":3,"file":"writeHold.d.ts","sourceRoot":"","sources":["../../../src/review/writeHold.ts"],"names":[],"mappings":"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"}
@@ -1,7 +1,7 @@
1
1
  import { ReviewLineError } from "./lineError.js";
2
2
  import { isAddress, toEventSelector, } from "viem";
3
- import { canonicalSafeTxHash, lookAtSafeProposalEnd, provenSafeProposalEnd, readSafeTransaction, SAFE_PROPOSAL_AWAITING, safeTransactionMessage, } from "../safeService.js";
4
- import { SAFE_PROPOSAL_EXECUTED_LINE, WRITE_HOLD_HASHED_EXIT_LINE, WRITE_HOLD_IN_TAB_LINE, WRITE_HOLD_LOOKS_DONE_LINE, WRITE_HOLD_MINED_LINE, WRITE_HOLD_NONCE_LINE, WRITE_HOLD_PENDING_LINE, WRITE_HOLD_UNCHECKED_LINE, WRITE_HOLD_REVERTED_LINE, WRITE_HOLD_SAFE_REPLACED_LINE, WRITE_HOLD_SAFE_UNPROVEN_LINE, WRITE_HOLD_STALE_REVIEW_LINE, writeHeldMessage, } from "./messages.js";
3
+ import { canonicalSafeTxHash, lookAtSafeProposalEnd, provenSafeProposalEnd, isSafeExecTransaction, readSafeTransaction, SAFE_PROPOSAL_AWAITING, safeTransactionMessage, } from "../safeService.js";
4
+ import { HELD_AWAY_SUCCESS_LINE, SAFE_PROPOSAL_EXECUTED_LINE, WRITE_HOLD_HASHED_EXIT_LINE, WRITE_HOLD_IN_TAB_LINE, WRITE_HOLD_LOOKS_DONE_LINE, WRITE_HOLD_MINED_LINE, WRITE_HOLD_NONCE_LINE, WRITE_HOLD_PENDING_LINE, WRITE_HOLD_UNCHECKED_LINE, WRITE_HOLD_REVERTED_LINE, WRITE_HOLD_SAFE_REPLACED_LINE, WRITE_HOLD_SAFE_UNPROVEN_LINE, WRITE_HOLD_STALE_REVIEW_LINE, writeHeldMessage, } from "./messages.js";
5
5
  import { createBrowserWriteRecovery, createHeldWriteStorage, findReviewedWrites, heldSafeProposal, findTransactionAtNonce, listReviewedWrites, readReviewedWriteNonce, safeProposalIsHeldCall, SubmittedWritePersistenceError, verifyReviewedWriteExpiry, verifyReviewedWriteReceipt, } from "./writeRecovery.js";
6
6
  import { isBytes32 } from "../untrusted.js";
7
7
  import { encodeMultiSend, MULTI_SEND_CALL_ONLY } from "../safe.js";
@@ -39,6 +39,14 @@ export class WriteHeldError extends ReviewLineError {
39
39
  this.name = "WriteHeldError";
40
40
  }
41
41
  }
42
+ /** A run refused while the action's last success is unacknowledged; "Send it again" acknowledges `success`. */
43
+ export class WriteHoldUnacknowledgedSuccessError extends ReviewLineError {
44
+ constructor(success) {
45
+ super(HELD_AWAY_SUCCESS_LINE);
46
+ this.success = success;
47
+ this.name = "WriteHoldUnacknowledgedSuccessError";
48
+ }
49
+ }
42
50
  /** The account's nonce couldn't be read, so the wallet never opened. */
43
51
  export class WriteHoldNonceError extends ReviewLineError {
44
52
  constructor(cause) {
@@ -367,6 +375,11 @@ export function createWriteHold(options = {}) {
367
375
  const settled = {
368
376
  result: verdict,
369
377
  hash: receipt.transactionHash.toLowerCase(),
378
+ blockHash: receipt.blockHash.toLowerCase(),
379
+ // A Safe's execution, proposed or sent by an owner: its failure is its own.
380
+ ...(record.safe || isSafeExecTransaction(record.call.data)
381
+ ? { safe: true }
382
+ : {}),
370
383
  };
371
384
  // Saved before the hold ends, so no reader sees it clear without its
372
385
  // result: another tab, a reload, a follow timer.
@@ -687,6 +700,7 @@ export function createWriteHold(options = {}) {
687
700
  const settled = {
688
701
  result: end.execution.status,
689
702
  hash: end.execution.executionHash,
703
+ safe: true,
690
704
  };
691
705
  recovery.markSettled(record, settled);
692
706
  if (release(record))
@@ -1199,6 +1213,15 @@ export function createWriteHold(options = {}) {
1199
1213
  }, true);
1200
1214
  return shown(result?.value ?? peek());
1201
1215
  },
1216
+ /**
1217
+ * Claim the one `onConfirmed` notice of the settlement `settled` names,
1218
+ * under the call's lock: true for the first completion in any tab or
1219
+ * run; a completion that loses it stays silent.
1220
+ */
1221
+ async claimConfirmed(settled) {
1222
+ const result = await locked(async () => recovery.claimConfirmedSettled(settled), true);
1223
+ return result?.value === true;
1224
+ },
1202
1225
  async attachHash(client, hash) {
1203
1226
  const result = await locked(async () => {
1204
1227
  const record = recovery.read();
@@ -1389,6 +1412,13 @@ export function createWriteHold(options = {}) {
1389
1412
  }
1390
1413
  return null;
1391
1414
  }
1415
+ /** The legacy hold that saved the settlement with this hash, if any. */
1416
+ function legacySaving(hash) {
1417
+ const lower = hash.toLowerCase();
1418
+ return eligibleLegacy().find(({ state }) => state.settled !== undefined &&
1419
+ "hash" in state.settled &&
1420
+ state.settled.hash === lower);
1421
+ }
1392
1422
  /**
1393
1423
  * How a legacy hold this intent stood for ended, while the intent itself
1394
1424
  * never reserved: its settlement (acknowledged or not) is the intent's,
@@ -1639,14 +1669,15 @@ export function createWriteHold(options = {}) {
1639
1669
  },
1640
1670
  /** A settlement is acknowledged where it was saved, found by its hash. */
1641
1671
  async acknowledge(settled) {
1642
- const hash = settled.hash.toLowerCase();
1643
- const legacy = eligibleLegacy().find(({ state }) => state.settled !== undefined &&
1644
- "hash" in state.settled &&
1645
- state.settled.hash === hash);
1672
+ const legacy = legacySaving(settled.hash);
1646
1673
  return legacy
1647
1674
  ? withLegacy(await legacy.handle.acknowledge(settled))
1648
1675
  : own.acknowledge(settled);
1649
1676
  },
1677
+ /** A settlement's notice is claimed where it was saved, found by its hash. */
1678
+ claimConfirmed(settled) {
1679
+ return (legacySaving(settled.hash)?.handle ?? own).claimConfirmed(settled);
1680
+ },
1650
1681
  async send(client, run) {
1651
1682
  const held = await delegated(client);
1652
1683
  if (held)