@bananapus/nana-sdk-core 3.5.1 → 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 -7
  140. package/dist/cjs/v6/pay.d.ts.map +1 -1
  141. package/dist/cjs/v6/pay.js +168 -40
  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 -7
  285. package/dist/esm/v6/pay.d.ts.map +1 -1
  286. package/dist/esm/v6/pay.js +166 -39
  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
@@ -1,9 +1,15 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.TRANSACTION_SIMULATION_MAX_RETURN_BYTES = exports.TRANSACTION_SIMULATION_GAS = void 0;
3
+ exports.SIMULATION_NO_ANSWER_LINE = exports.REVERT_UNKNOWN_LINE = exports.TRANSACTION_SIMULATION_MAX_RETURN_BYTES = exports.TRANSACTION_SIMULATION_GAS = void 0;
4
4
  exports.simulateStateChangingTransaction = simulateStateChangingTransaction;
5
+ exports.revertReason = revertReason;
6
+ exports.revertDetail = revertDetail;
7
+ exports.isRevert = isRevert;
8
+ exports.simulationFailure = simulationFailure;
5
9
  exports.simulateCallSequence = simulateCallSequence;
6
10
  const viem_1 = require("viem");
11
+ const executionErrors_js_1 = require("../v6/executionErrors.js");
12
+ const lineError_js_1 = require("./lineError.js");
7
13
  /** A generous explicit gas ceiling for a reviewed state-changing preflight. */
8
14
  exports.TRANSACTION_SIMULATION_GAS = 10000000n;
9
15
  /** The most return data a preflight hands back to a caller that decodes it. */
@@ -18,45 +24,99 @@ exports.TRANSACTION_SIMULATION_MAX_RETURN_BYTES = 4_096;
18
24
  * `blockNumber` to simulate on the block a prerequisite (an approval, say) was
19
25
  * mined in, instead of `latest` on a node that may lag behind it.
20
26
  */
21
- async function simulateStateChangingTransaction(client, { from, to, data, value = 0n, gas = exports.TRANSACTION_SIMULATION_GAS, blockNumber, maxReturnBytes = exports.TRANSACTION_SIMULATION_MAX_RETURN_BYTES, }) {
27
+ async function simulateStateChangingTransaction(client, { from, to, data, value = 0n, gas = exports.TRANSACTION_SIMULATION_GAS, blockNumber, maxReturnBytes = exports.TRANSACTION_SIMULATION_MAX_RETURN_BYTES, balance, }) {
22
28
  if (gas <= 0n) {
23
- throw new Error("Transaction simulation gas must be positive.");
29
+ throw new lineError_js_1.ReviewLineError("Transaction simulation gas must be positive.");
24
30
  }
25
31
  if (!Number.isSafeInteger(maxReturnBytes) || maxReturnBytes < 0) {
26
- throw new Error("Transaction simulation needs a return data limit.");
32
+ throw new lineError_js_1.ReviewLineError("Transaction simulation needs a return data limit.");
27
33
  }
28
34
  // A raw request bypasses call()/simulateContract(), whose behavior can
29
35
  // inherit a client-level CCIP-read policy.
36
+ const call = {
37
+ from,
38
+ to,
39
+ data,
40
+ value: (0, viem_1.numberToHex)(value),
41
+ gas: (0, viem_1.numberToHex)(gas),
42
+ };
43
+ const block = blockNumber === undefined ? "latest" : (0, viem_1.numberToHex)(blockNumber);
30
44
  const result = await client.request({
31
45
  method: "eth_call",
32
- params: [
33
- {
34
- from,
35
- to,
36
- data,
37
- value: (0, viem_1.numberToHex)(value),
38
- gas: (0, viem_1.numberToHex)(gas),
39
- },
40
- blockNumber === undefined ? "latest" : (0, viem_1.numberToHex)(blockNumber),
41
- ],
46
+ params: balance === undefined
47
+ ? [call, block]
48
+ : [call, block, { [from]: { balance: (0, viem_1.numberToHex)(balance) } }],
42
49
  });
43
50
  if (typeof result !== "string" || !/^0x(?:[0-9a-f]{2})*$/iu.test(result)) {
44
- throw new Error("Transaction simulation returned malformed data.");
51
+ throw new lineError_js_1.ReviewLineError("Transaction simulation returned malformed data.");
45
52
  }
46
53
  if ((result.length - 2) / 2 > maxReturnBytes) {
47
- throw new Error("Transaction simulation returned too much data.");
54
+ throw new lineError_js_1.ReviewLineError("Transaction simulation returned too much data.");
48
55
  }
49
56
  return result;
50
57
  }
58
+ /** The line for a revert whose reason the SDK does not know. */
59
+ exports.REVERT_UNKNOWN_LINE = "This transaction would fail. Check the amounts and try again.";
60
+ /** The line for a simulation the node did not answer. */
61
+ exports.SIMULATION_NO_ANSWER_LINE = "The node did not answer the simulation.";
62
+ /**
63
+ * Why a call reverted, when the SDK knows the revert: a payment revert's
64
+ * plain line ({@link decodePayFailure}). Null otherwise. Error text (viem's
65
+ * `shortMessage`, a node's message) is never read: it can quote a request or
66
+ * its URL.
67
+ */
68
+ function revertReason(error) {
69
+ return (0, executionErrors_js_1.decodePayFailure)(error)?.message ?? null;
70
+ }
71
+ /**
72
+ * A failed simulation's one-line reason: {@link revertReason}, or a fixed
73
+ * line, {@link REVERT_UNKNOWN_LINE} for a revert and
74
+ * {@link SIMULATION_NO_ANSWER_LINE} otherwise. Never the error's own text.
75
+ */
51
76
  function revertDetail(error) {
52
- if (error instanceof Error &&
53
- "shortMessage" in error &&
54
- typeof error.shortMessage === "string") {
55
- return error.shortMessage;
77
+ return (revertReason(error) ??
78
+ (isRevert(error) ? exports.REVERT_UNKNOWN_LINE : exports.SIMULATION_NO_ANSWER_LINE));
79
+ }
80
+ /**
81
+ * Whether a failed simulation is the call reverting, not the node failing:
82
+ * EIP-1474 code 3, viem's contract-revert errors, or the node's own text
83
+ * saying it reverted, in the error's first eight causes. A viem error is read
84
+ * by its `details`, since its `message` quotes the request.
85
+ */
86
+ function isRevert(error) {
87
+ let current = error;
88
+ for (let depth = 0; depth < 8 && current && typeof current === "object"; depth += 1) {
89
+ const item = current;
90
+ if (item.code === 3 ||
91
+ item.name === "ContractFunctionRevertedError" ||
92
+ item.name === "RawContractError" ||
93
+ item.name === "ExecutionRevertedError" ||
94
+ // A failed call that returned no revert data.
95
+ item.name === "ContractFunctionZeroDataError" ||
96
+ item.name === "AbiDecodingZeroDataError") {
97
+ return true;
98
+ }
99
+ // A wrapper that carries its cause (simulateCallSequence's, which names
100
+ // the call) is read through that cause, never by its own text.
101
+ const text = typeof item.details === "string"
102
+ ? item.details
103
+ : typeof item.shortMessage === "string" || "cause" in item
104
+ ? undefined
105
+ : item.message;
106
+ if (typeof text === "string" && /revert/i.test(text))
107
+ return true;
108
+ current = item.cause;
56
109
  }
57
- return error instanceof Error
58
- ? error.message.split("\n")[0]
59
- : "The call would revert.";
110
+ return false;
111
+ }
112
+ /**
113
+ * The error a failed simulation throws, with the answer as its cause: the
114
+ * SDK's own line (a {@link ReviewLineError}) for a revert, decoded or not; a
115
+ * plain error, which `errorLine` shows as the network line, for a node that
116
+ * did not answer.
117
+ */
118
+ function simulationFailure(text, cause) {
119
+ return Object.defineProperty(isRevert(cause) ? new lineError_js_1.ReviewLineError(text) : new Error(text), "cause", { value: cause, configurable: true, writable: true });
60
120
  }
61
121
  /** Node text saying the method itself is missing: "method not found", "Unsupported method: eth_simulateV1". */
62
122
  function namesMissingMethod(text) {
@@ -98,12 +158,20 @@ function simulationUnsupported(error) {
98
158
  * {@link simulateStateChangingTransaction}; the dependent ones are left to the
99
159
  * executing wallet's own simulation. `chainName` names the chain in errors.
100
160
  */
101
- async function simulateCallSequence(client, { from, calls, chainName, }) {
161
+ async function simulateCallSequence(client, { from, calls, chainName, balance, }) {
102
162
  let sequence;
103
163
  try {
104
164
  const simulated = await client.simulateCalls({
105
165
  account: from,
106
- calls: calls.map(({ to, data, value }) => ({ to, data, value })),
166
+ calls: calls.map(({ to, data, value, gas }) => ({
167
+ to,
168
+ data,
169
+ value,
170
+ ...(gas === undefined ? {} : { gas }),
171
+ })),
172
+ ...(balance === undefined
173
+ ? {}
174
+ : { stateOverrides: [{ address: from, balance }] }),
107
175
  });
108
176
  sequence = simulated.results.map((result) => result.status === "failure"
109
177
  ? { status: "failure", error: result.error }
@@ -111,7 +179,7 @@ async function simulateCallSequence(client, { from, calls, chainName, }) {
111
179
  }
112
180
  catch (error) {
113
181
  if (!simulationUnsupported(error)) {
114
- throw new Error(`The batch could not be simulated on ${chainName}: ${revertDetail(error)}`);
182
+ throw simulationFailure(`The batch could not be simulated on ${chainName}: ${revertDetail(error)}`, error);
115
183
  }
116
184
  sequence = null;
117
185
  }
@@ -120,9 +188,9 @@ async function simulateCallSequence(client, { from, calls, chainName, }) {
120
188
  const result = sequence[index];
121
189
  if (result?.status === "success")
122
190
  continue;
123
- throw new Error(`${call.label} cannot run on ${chainName}: ${result?.status === "failure"
191
+ throw simulationFailure(`${call.label} cannot run on ${chainName}: ${result?.status === "failure"
124
192
  ? revertDetail(result.error)
125
- : "The call would revert."}`);
193
+ : exports.SIMULATION_NO_ANSWER_LINE}`, result?.error);
126
194
  }
127
195
  if (call.dependsOnPrior)
128
196
  continue;
@@ -132,10 +200,12 @@ async function simulateCallSequence(client, { from, calls, chainName, }) {
132
200
  to: call.to,
133
201
  data: call.data,
134
202
  value: call.value,
203
+ gas: call.gas,
204
+ ...(balance === undefined || !call.funded ? {} : { balance }),
135
205
  });
136
206
  }
137
207
  catch (error) {
138
- throw new Error(`${call.label} cannot run on ${chainName}: ${revertDetail(error)}`);
208
+ throw simulationFailure(`${call.label} cannot run on ${chainName}: ${revertDetail(error)}`, error);
139
209
  }
140
210
  }
141
211
  }
@@ -1 +1 @@
1
- {"version":3,"file":"simulation.js","sourceRoot":"","sources":["../../../src/review/simulation.ts"],"names":[],"mappings":";;;AAkBA,4EAgDC;AAiFD,oDAyDC;AA5MD,+BAA8E;AAE9E,+EAA+E;AAClE,QAAA,0BAA0B,GAAG,SAAW,CAAC;AAEtD,+EAA+E;AAClE,QAAA,uCAAuC,GAAG,KAAK,CAAC;AAE7D;;;;;;;;;GASG;AACI,KAAK,UAAU,gCAAgC,CACpD,MAAqC,EACrC,EACE,IAAI,EACJ,EAAE,EACF,IAAI,EACJ,KAAK,GAAG,EAAE,EACV,GAAG,GAAG,kCAA0B,EAChC,WAAW,EACX,cAAc,GAAG,+CAAuC,GASzD;IAED,IAAI,GAAG,IAAI,EAAE,EAAE,CAAC;QACd,MAAM,IAAI,KAAK,CAAC,8CAA8C,CAAC,CAAC;IAClE,CAAC;IACD,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,cAAc,CAAC,IAAI,cAAc,GAAG,CAAC,EAAE,CAAC;QAChE,MAAM,IAAI,KAAK,CAAC,mDAAmD,CAAC,CAAC;IACvE,CAAC;IACD,uEAAuE;IACvE,2CAA2C;IAC3C,MAAM,MAAM,GAAY,MAAM,MAAM,CAAC,OAAO,CAAC;QAC3C,MAAM,EAAE,UAAU;QAClB,MAAM,EAAE;YACN;gBACE,IAAI;gBACJ,EAAE;gBACF,IAAI;gBACJ,KAAK,EAAE,IAAA,kBAAW,EAAC,KAAK,CAAC;gBACzB,GAAG,EAAE,IAAA,kBAAW,EAAC,GAAG,CAAC;aACtB;YACD,WAAW,KAAK,SAAS,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAA,kBAAW,EAAC,WAAW,CAAC;SAChE;KACF,CAAC,CAAC;IACH,IAAI,OAAO,MAAM,KAAK,QAAQ,IAAI,CAAC,wBAAwB,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC;QACzE,MAAM,IAAI,KAAK,CAAC,iDAAiD,CAAC,CAAC;IACrE,CAAC;IACD,IAAI,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,GAAG,CAAC,GAAG,cAAc,EAAE,CAAC;QAC7C,MAAM,IAAI,KAAK,CAAC,gDAAgD,CAAC,CAAC;IACpE,CAAC;IACD,OAAO,MAAa,CAAC;AACvB,CAAC;AAaD,SAAS,YAAY,CAAC,KAAc;IAClC,IACE,KAAK,YAAY,KAAK;QACtB,cAAc,IAAI,KAAK;QACvB,OAAO,KAAK,CAAC,YAAY,KAAK,QAAQ,EACtC,CAAC;QACD,OAAO,KAAK,CAAC,YAAY,CAAC;IAC5B,CAAC;IACD,OAAO,KAAK,YAAY,KAAK;QAC3B,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAC9B,CAAC,CAAC,wBAAwB,CAAC;AAC/B,CAAC;AAED,+GAA+G;AAC/G,SAAS,kBAAkB,CAAC,IAAY;IACtC,OAAO,CACL,4BAA4B,CAAC,IAAI,CAAC,IAAI,CAAC;QACvC,mFAAmF,CAAC,IAAI,CACtF,IAAI,CACL;QACD,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CACtB,CAAC;AACJ,CAAC;AAED;;;;;;;;;GASG;AACH,SAAS,qBAAqB,CAAC,KAAc;IAC3C,IAAI,OAAO,GAAG,KAAK,CAAC;IACpB,KACE,IAAI,KAAK,GAAG,CAAC,EACb,KAAK,GAAG,CAAC,IAAI,OAAO,IAAI,OAAO,OAAO,KAAK,QAAQ,EACnD,KAAK,IAAI,CAAC,EACV,CAAC;QACD,MAAM,IAAI,GAAG,OAMZ,CAAC;QACF,IAAI,IAAI,CAAC,IAAI,KAAK,CAAC,KAAK,IAAI,IAAI,CAAC,IAAI,KAAK,CAAC,KAAK;YAAE,OAAO,IAAI,CAAC;QAC9D,MAAM,IAAI,GACR,OAAO,IAAI,CAAC,OAAO,KAAK,QAAQ;YAC9B,CAAC,CAAC,IAAI,CAAC,OAAO;YACd,CAAC,CAAC,OAAO,IAAI,CAAC,YAAY,KAAK,QAAQ;gBACrC,CAAC,CAAC,SAAS;gBACX,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC;QACrB,IAAI,OAAO,IAAI,KAAK,QAAQ,IAAI,kBAAkB,CAAC,IAAI,CAAC;YAAE,OAAO,IAAI,CAAC;QACtE,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC;IACvB,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAED;;;;;;GAMG;AACI,KAAK,UAAU,oBAAoB,CACxC,MAAuD,EACvD,EACE,IAAI,EACJ,KAAK,EACL,SAAS,GAKV;IAED,IAAI,QAAsD,CAAC;IAC3D,IAAI,CAAC;QACH,MAAM,SAAS,GAAG,MAAM,MAAM,CAAC,aAAa,CAAC;YAC3C,OAAO,EAAE,IAAI;YACb,KAAK,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC;SACjE,CAAC,CAAC;QACH,QAAQ,GAAG,SAAS,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAC1C,MAAM,CAAC,MAAM,KAAK,SAAS;YACzB,CAAC,CAAC,EAAE,MAAM,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM,CAAC,KAAK,EAAE;YAC5C,CAAC,CAAC,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,CAC9B,CAAC;IACJ,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,IAAI,CAAC,qBAAqB,CAAC,KAAK,CAAC,EAAE,CAAC;YAClC,MAAM,IAAI,KAAK,CACb,uCAAuC,SAAS,KAAK,YAAY,CAAC,KAAK,CAAC,EAAE,CAC3E,CAAC;QACJ,CAAC;QACD,QAAQ,GAAG,IAAI,CAAC;IAClB,CAAC;IACD,KAAK,MAAM,CAAC,KAAK,EAAE,IAAI,CAAC,IAAI,KAAK,CAAC,OAAO,EAAE,EAAE,CAAC;QAC5C,IAAI,QAAQ,EAAE,CAAC;YACb,MAAM,MAAM,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC;YAC/B,IAAI,MAAM,EAAE,MAAM,KAAK,SAAS;gBAAE,SAAS;YAC3C,MAAM,IAAI,KAAK,CACb,GAAG,IAAI,CAAC,KAAK,kBAAkB,SAAS,KACtC,MAAM,EAAE,MAAM,KAAK,SAAS;gBAC1B,CAAC,CAAC,YAAY,CAAC,MAAM,CAAC,KAAK,CAAC;gBAC5B,CAAC,CAAC,wBACN,EAAE,CACH,CAAC;QACJ,CAAC;QACD,IAAI,IAAI,CAAC,cAAc;YAAE,SAAS;QAClC,IAAI,CAAC;YACH,MAAM,gCAAgC,CAAC,MAAM,EAAE;gBAC7C,IAAI;gBACJ,EAAE,EAAE,IAAI,CAAC,EAAE;gBACX,IAAI,EAAE,IAAI,CAAC,IAAI;gBACf,KAAK,EAAE,IAAI,CAAC,KAAK;aAClB,CAAC,CAAC;QACL,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,IAAI,KAAK,CACb,GAAG,IAAI,CAAC,KAAK,kBAAkB,SAAS,KAAK,YAAY,CAAC,KAAK,CAAC,EAAE,CACnE,CAAC;QACJ,CAAC;IACH,CAAC;AACH,CAAC"}
1
+ {"version":3,"file":"simulation.js","sourceRoot":"","sources":["../../../src/review/simulation.ts"],"names":[],"mappings":";;;AAoBA,4EAyDC;AA+BD,oCAEC;AAOD,oCAKC;AAQD,4BAsCC;AAQD,8CAMC;AAyDD,oDAyEC;AAxTD,+BAA8E;AAC9E,iEAA4D;AAC5D,iDAAiD;AAEjD,+EAA+E;AAClE,QAAA,0BAA0B,GAAG,SAAW,CAAC;AAEtD,+EAA+E;AAClE,QAAA,uCAAuC,GAAG,KAAK,CAAC;AAE7D;;;;;;;;;GASG;AACI,KAAK,UAAU,gCAAgC,CACpD,MAAqC,EACrC,EACE,IAAI,EACJ,EAAE,EACF,IAAI,EACJ,KAAK,GAAG,EAAE,EACV,GAAG,GAAG,kCAA0B,EAChC,WAAW,EACX,cAAc,GAAG,+CAAuC,EACxD,OAAO,GAWR;IAED,IAAI,GAAG,IAAI,EAAE,EAAE,CAAC;QACd,MAAM,IAAI,8BAAe,CAAC,8CAA8C,CAAC,CAAC;IAC5E,CAAC;IACD,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,cAAc,CAAC,IAAI,cAAc,GAAG,CAAC,EAAE,CAAC;QAChE,MAAM,IAAI,8BAAe,CACvB,mDAAmD,CACpD,CAAC;IACJ,CAAC;IACD,uEAAuE;IACvE,2CAA2C;IAC3C,MAAM,IAAI,GAAG;QACX,IAAI;QACJ,EAAE;QACF,IAAI;QACJ,KAAK,EAAE,IAAA,kBAAW,EAAC,KAAK,CAAC;QACzB,GAAG,EAAE,IAAA,kBAAW,EAAC,GAAG,CAAC;KACtB,CAAC;IACF,MAAM,KAAK,GAAG,WAAW,KAAK,SAAS,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAA,kBAAW,EAAC,WAAW,CAAC,CAAC;IAC9E,MAAM,MAAM,GAAY,MAAM,MAAM,CAAC,OAAO,CAAC;QAC3C,MAAM,EAAE,UAAU;QAClB,MAAM,EACJ,OAAO,KAAK,SAAS;YACnB,CAAC,CAAC,CAAC,IAAI,EAAE,KAAK,CAAC;YACf,CAAC,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC,IAAI,CAAC,EAAE,EAAE,OAAO,EAAE,IAAA,kBAAW,EAAC,OAAO,CAAC,EAAE,EAAE,CAAC;KACnE,CAAC,CAAC;IACH,IAAI,OAAO,MAAM,KAAK,QAAQ,IAAI,CAAC,wBAAwB,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC;QACzE,MAAM,IAAI,8BAAe,CACvB,iDAAiD,CAClD,CAAC;IACJ,CAAC;IACD,IAAI,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,GAAG,CAAC,GAAG,cAAc,EAAE,CAAC;QAC7C,MAAM,IAAI,8BAAe,CAAC,gDAAgD,CAAC,CAAC;IAC9E,CAAC;IACD,OAAO,MAAa,CAAC;AACvB,CAAC;AAiBD,gEAAgE;AACnD,QAAA,mBAAmB,GAC9B,+DAA+D,CAAC;AAElE,yDAAyD;AAC5C,QAAA,yBAAyB,GACpC,yCAAyC,CAAC;AAE5C;;;;;GAKG;AACH,SAAgB,YAAY,CAAC,KAAc;IACzC,OAAO,IAAA,qCAAgB,EAAC,KAAK,CAAC,EAAE,OAAO,IAAI,IAAI,CAAC;AAClD,CAAC;AAED;;;;GAIG;AACH,SAAgB,YAAY,CAAC,KAAc;IACzC,OAAO,CACL,YAAY,CAAC,KAAK,CAAC;QACnB,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,2BAAmB,CAAC,CAAC,CAAC,iCAAyB,CAAC,CACpE,CAAC;AACJ,CAAC;AAED;;;;;GAKG;AACH,SAAgB,QAAQ,CAAC,KAAc;IACrC,IAAI,OAAO,GAAG,KAAK,CAAC;IACpB,KACE,IAAI,KAAK,GAAG,CAAC,EACb,KAAK,GAAG,CAAC,IAAI,OAAO,IAAI,OAAO,OAAO,KAAK,QAAQ,EACnD,KAAK,IAAI,CAAC,EACV,CAAC;QACD,MAAM,IAAI,GAAG,OAOZ,CAAC;QACF,IACE,IAAI,CAAC,IAAI,KAAK,CAAC;YACf,IAAI,CAAC,IAAI,KAAK,+BAA+B;YAC7C,IAAI,CAAC,IAAI,KAAK,kBAAkB;YAChC,IAAI,CAAC,IAAI,KAAK,wBAAwB;YACtC,8CAA8C;YAC9C,IAAI,CAAC,IAAI,KAAK,+BAA+B;YAC7C,IAAI,CAAC,IAAI,KAAK,0BAA0B,EACxC,CAAC;YACD,OAAO,IAAI,CAAC;QACd,CAAC;QACD,wEAAwE;QACxE,+DAA+D;QAC/D,MAAM,IAAI,GACR,OAAO,IAAI,CAAC,OAAO,KAAK,QAAQ;YAC9B,CAAC,CAAC,IAAI,CAAC,OAAO;YACd,CAAC,CAAC,OAAO,IAAI,CAAC,YAAY,KAAK,QAAQ,IAAI,OAAO,IAAI,IAAI;gBACxD,CAAC,CAAC,SAAS;gBACX,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC;QACrB,IAAI,OAAO,IAAI,KAAK,QAAQ,IAAI,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC;YAAE,OAAO,IAAI,CAAC;QAClE,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC;IACvB,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAED;;;;;GAKG;AACH,SAAgB,iBAAiB,CAAC,IAAY,EAAE,KAAc;IAC5D,OAAO,MAAM,CAAC,cAAc,CAC1B,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,8BAAe,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,IAAI,CAAC,EAC7D,OAAO,EACP,EAAE,KAAK,EAAE,KAAK,EAAE,YAAY,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,CACrD,CAAC;AACJ,CAAC;AAED,+GAA+G;AAC/G,SAAS,kBAAkB,CAAC,IAAY;IACtC,OAAO,CACL,4BAA4B,CAAC,IAAI,CAAC,IAAI,CAAC;QACvC,mFAAmF,CAAC,IAAI,CACtF,IAAI,CACL;QACD,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CACtB,CAAC;AACJ,CAAC;AAED;;;;;;;;;GASG;AACH,SAAS,qBAAqB,CAAC,KAAc;IAC3C,IAAI,OAAO,GAAG,KAAK,CAAC;IACpB,KACE,IAAI,KAAK,GAAG,CAAC,EACb,KAAK,GAAG,CAAC,IAAI,OAAO,IAAI,OAAO,OAAO,KAAK,QAAQ,EACnD,KAAK,IAAI,CAAC,EACV,CAAC;QACD,MAAM,IAAI,GAAG,OAMZ,CAAC;QACF,IAAI,IAAI,CAAC,IAAI,KAAK,CAAC,KAAK,IAAI,IAAI,CAAC,IAAI,KAAK,CAAC,KAAK;YAAE,OAAO,IAAI,CAAC;QAC9D,MAAM,IAAI,GACR,OAAO,IAAI,CAAC,OAAO,KAAK,QAAQ;YAC9B,CAAC,CAAC,IAAI,CAAC,OAAO;YACd,CAAC,CAAC,OAAO,IAAI,CAAC,YAAY,KAAK,QAAQ;gBACrC,CAAC,CAAC,SAAS;gBACX,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC;QACrB,IAAI,OAAO,IAAI,KAAK,QAAQ,IAAI,kBAAkB,CAAC,IAAI,CAAC;YAAE,OAAO,IAAI,CAAC;QACtE,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC;IACvB,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAED;;;;;;GAMG;AACI,KAAK,UAAU,oBAAoB,CACxC,MAAuD,EACvD,EACE,IAAI,EACJ,KAAK,EACL,SAAS,EACT,OAAO,GAOR;IAED,IAAI,QAAsD,CAAC;IAC3D,IAAI,CAAC;QACH,MAAM,SAAS,GAAG,MAAM,MAAM,CAAC,aAAa,CAAC;YAC3C,OAAO,EAAE,IAAI;YACb,KAAK,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,EAAE,EAAE,EAAE,CAAC,CAAC;gBAC9C,EAAE;gBACF,IAAI;gBACJ,KAAK;gBACL,GAAG,CAAC,GAAG,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,GAAG,EAAE,CAAC;aACtC,CAAC,CAAC;YACH,GAAG,CAAC,OAAO,KAAK,SAAS;gBACvB,CAAC,CAAC,EAAE;gBACJ,CAAC,CAAC,EAAE,cAAc,EAAE,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC;SACtD,CAAC,CAAC;QACH,QAAQ,GAAG,SAAS,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAC1C,MAAM,CAAC,MAAM,KAAK,SAAS;YACzB,CAAC,CAAC,EAAE,MAAM,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM,CAAC,KAAK,EAAE;YAC5C,CAAC,CAAC,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,CAC9B,CAAC;IACJ,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,IAAI,CAAC,qBAAqB,CAAC,KAAK,CAAC,EAAE,CAAC;YAClC,MAAM,iBAAiB,CACrB,uCAAuC,SAAS,KAAK,YAAY,CAAC,KAAK,CAAC,EAAE,EAC1E,KAAK,CACN,CAAC;QACJ,CAAC;QACD,QAAQ,GAAG,IAAI,CAAC;IAClB,CAAC;IACD,KAAK,MAAM,CAAC,KAAK,EAAE,IAAI,CAAC,IAAI,KAAK,CAAC,OAAO,EAAE,EAAE,CAAC;QAC5C,IAAI,QAAQ,EAAE,CAAC;YACb,MAAM,MAAM,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC;YAC/B,IAAI,MAAM,EAAE,MAAM,KAAK,SAAS;gBAAE,SAAS;YAC3C,MAAM,iBAAiB,CACrB,GAAG,IAAI,CAAC,KAAK,kBAAkB,SAAS,KACtC,MAAM,EAAE,MAAM,KAAK,SAAS;gBAC1B,CAAC,CAAC,YAAY,CAAC,MAAM,CAAC,KAAK,CAAC;gBAC5B,CAAC,CAAC,iCACN,EAAE,EACF,MAAM,EAAE,KAAK,CACd,CAAC;QACJ,CAAC;QACD,IAAI,IAAI,CAAC,cAAc;YAAE,SAAS;QAClC,IAAI,CAAC;YACH,MAAM,gCAAgC,CAAC,MAAM,EAAE;gBAC7C,IAAI;gBACJ,EAAE,EAAE,IAAI,CAAC,EAAE;gBACX,IAAI,EAAE,IAAI,CAAC,IAAI;gBACf,KAAK,EAAE,IAAI,CAAC,KAAK;gBACjB,GAAG,EAAE,IAAI,CAAC,GAAG;gBACb,GAAG,CAAC,OAAO,KAAK,SAAS,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC;aAC9D,CAAC,CAAC;QACL,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,iBAAiB,CACrB,GAAG,IAAI,CAAC,KAAK,kBAAkB,SAAS,KAAK,YAAY,CAAC,KAAK,CAAC,EAAE,EAClE,KAAK,CACN,CAAC;QACJ,CAAC;IACH,CAAC;AACH,CAAC"}
@@ -1,3 +1,16 @@
1
+ import { ReviewLineError } from "./lineError.js";
2
+ export { ReviewLineError };
1
3
  /** Presentation only: saved recovery evidence and original SDK errors stay unchanged. */
2
4
  export declare function transactionMessage(message: string): string;
5
+ /** The line for a raw node, RPC or wallet error: its own text can quote a request or its URL. */
6
+ export declare const NETWORK_ERROR_LINE = "The network returned an error. Check your wallet's activity, then try again.";
7
+ /**
8
+ * The line to show for a thrown value: the message of a
9
+ * {@link ReviewLineError} (the SDK's, or a site's own refusal), presented by
10
+ * {@link transactionMessage}; the fixed line an SDK error class carries (its
11
+ * Relayr and Safe refusals, whose text can quote a service); or
12
+ * {@link NETWORK_ERROR_LINE} for anything else (a node, RPC, wallet, service
13
+ * or runtime error, or an app's plain Error). The raw error stays the cause.
14
+ */
15
+ export declare function errorLine(error: unknown): string;
3
16
  //# sourceMappingURL=transaction-message.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"transaction-message.d.ts","sourceRoot":"","sources":["../../../src/review/transaction-message.ts"],"names":[],"mappings":"AAAA,yFAAyF;AACzF,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAsB1D"}
1
+ {"version":3,"file":"transaction-message.d.ts","sourceRoot":"","sources":["../../../src/review/transaction-message.ts"],"names":[],"mappings":"AAAA,OAAO,EAAwB,eAAe,EAAE,MAAM,gBAAgB,CAAC;AAEvE,OAAO,EAAE,eAAe,EAAE,CAAC;AAE3B,yFAAyF;AACzF,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAsB1D;AAED,iGAAiG;AACjG,eAAO,MAAM,kBAAkB,iFACiD,CAAC;AAEjF;;;;;;;GAOG;AACH,wBAAgB,SAAS,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,CAWhD"}
@@ -1,6 +1,10 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.NETWORK_ERROR_LINE = exports.ReviewLineError = void 0;
3
4
  exports.transactionMessage = transactionMessage;
5
+ exports.errorLine = errorLine;
6
+ const lineError_js_1 = require("./lineError.js");
7
+ Object.defineProperty(exports, "ReviewLineError", { enumerable: true, get: function () { return lineError_js_1.ReviewLineError; } });
4
8
  /** Presentation only: saved recovery evidence and original SDK errors stay unchanged. */
5
9
  function transactionMessage(message) {
6
10
  const formatted = message
@@ -16,4 +20,25 @@ function transactionMessage(message) {
16
20
  ? message
17
21
  : formatted.replace(/^([a-z])/, (letter) => letter.toUpperCase());
18
22
  }
23
+ /** The line for a raw node, RPC or wallet error: its own text can quote a request or its URL. */
24
+ exports.NETWORK_ERROR_LINE = "The network returned an error. Check your wallet's activity, then try again.";
25
+ /**
26
+ * The line to show for a thrown value: the message of a
27
+ * {@link ReviewLineError} (the SDK's, or a site's own refusal), presented by
28
+ * {@link transactionMessage}; the fixed line an SDK error class carries (its
29
+ * Relayr and Safe refusals, whose text can quote a service); or
30
+ * {@link NETWORK_ERROR_LINE} for anything else (a node, RPC, wallet, service
31
+ * or runtime error, or an app's plain Error). The raw error stays the cause.
32
+ */
33
+ function errorLine(error) {
34
+ if (error instanceof lineError_js_1.ReviewLineError)
35
+ return transactionMessage(error.message);
36
+ // Marked by its class, never by its own fields, so a plain error cannot pose as one.
37
+ const fixed = error instanceof lineError_js_1.ReviewFixedLineError ||
38
+ (error instanceof Error &&
39
+ !Object.prototype.hasOwnProperty.call(error, "reviewFixedLine") &&
40
+ error.reviewFixedLine === true);
41
+ const line = fixed ? error.line : undefined;
42
+ return typeof line === "string" ? line : exports.NETWORK_ERROR_LINE;
43
+ }
19
44
  //# sourceMappingURL=transaction-message.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"transaction-message.js","sourceRoot":"","sources":["../../../src/review/transaction-message.ts"],"names":[],"mappings":";;AACA,gDAsBC;AAvBD,yFAAyF;AACzF,SAAgB,kBAAkB,CAAC,OAAe;IAChD,MAAM,SAAS,GAAG,OAAO;SACtB,OAAO,CACN,6EAA6E,EAC7E,+BAA+B,CAChC;SACA,OAAO,CACN,2BAA2B,EAC3B,wCAAwC,CACzC;SACA,OAAO,CAAC,yBAAyB,EAAE,sCAAsC,CAAC;SAC1E,OAAO,CAAC,uBAAuB,EAAE,UAAU,CAAC;SAC5C,OAAO,CAAC,4BAA4B,EAAE,KAAK,CAAC;SAC5C,OAAO,CACN,0NAA0N,EAC1N,EAAE,CACH;SACA,OAAO,CAAC,oBAAoB,EAAE,MAAM,CAAC;SACrC,OAAO,CAAC,mCAAmC,EAAE,aAAa,CAAC,CAAC;IAC/D,OAAO,SAAS,KAAK,OAAO;QAC1B,CAAC,CAAC,OAAO;QACT,CAAC,CAAC,SAAS,CAAC,OAAO,CAAC,UAAU,EAAE,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,WAAW,EAAE,CAAC,CAAC;AACtE,CAAC"}
1
+ {"version":3,"file":"transaction-message.js","sourceRoot":"","sources":["../../../src/review/transaction-message.ts"],"names":[],"mappings":";;;AAKA,gDAsBC;AAcD,8BAWC;AApDD,iDAAuE;AAE9D,gGAFsB,8BAAe,OAEtB;AAExB,yFAAyF;AACzF,SAAgB,kBAAkB,CAAC,OAAe;IAChD,MAAM,SAAS,GAAG,OAAO;SACtB,OAAO,CACN,6EAA6E,EAC7E,+BAA+B,CAChC;SACA,OAAO,CACN,2BAA2B,EAC3B,wCAAwC,CACzC;SACA,OAAO,CAAC,yBAAyB,EAAE,sCAAsC,CAAC;SAC1E,OAAO,CAAC,uBAAuB,EAAE,UAAU,CAAC;SAC5C,OAAO,CAAC,4BAA4B,EAAE,KAAK,CAAC;SAC5C,OAAO,CACN,0NAA0N,EAC1N,EAAE,CACH;SACA,OAAO,CAAC,oBAAoB,EAAE,MAAM,CAAC;SACrC,OAAO,CAAC,mCAAmC,EAAE,aAAa,CAAC,CAAC;IAC/D,OAAO,SAAS,KAAK,OAAO;QAC1B,CAAC,CAAC,OAAO;QACT,CAAC,CAAC,SAAS,CAAC,OAAO,CAAC,UAAU,EAAE,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,WAAW,EAAE,CAAC,CAAC;AACtE,CAAC;AAED,iGAAiG;AACpF,QAAA,kBAAkB,GAC7B,8EAA8E,CAAC;AAEjF;;;;;;;GAOG;AACH,SAAgB,SAAS,CAAC,KAAc;IACtC,IAAI,KAAK,YAAY,8BAAe;QAClC,OAAO,kBAAkB,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;IAC3C,qFAAqF;IACrF,MAAM,KAAK,GACT,KAAK,YAAY,mCAAoB;QACrC,CAAC,KAAK,YAAY,KAAK;YACrB,CAAC,MAAM,CAAC,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,KAAK,EAAE,iBAAiB,CAAC;YAC9D,KAAuC,CAAC,eAAe,KAAK,IAAI,CAAC,CAAC;IACvE,MAAM,IAAI,GAAG,KAAK,CAAC,CAAC,CAAE,KAA4B,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC;IACpE,OAAO,OAAO,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,0BAAkB,CAAC;AAC9D,CAAC"}
@@ -1,6 +1,8 @@
1
1
  import { type Abi, type Address, type Hex } from "viem";
2
+ import type { PrettyStep } from "./decode.js";
3
+ import type { ReviewContextRow, ReviewModel } from "./model.js";
2
4
  export type { FundingChainOption } from "./reviewQueue.js";
3
- export { registerFundingChainSelectionHandler, registerTransactionReviewHandler, requireFundingChainSelection, requireTransactionReview, TransactionReviewCancelledError, } from "./reviewQueue.js";
5
+ export { registerFundingChainSelectionHandler, requireFundingChainSelection, TransactionReviewCancelledError, } from "./reviewQueue.js";
4
6
  /**
5
7
  * How review prompts name a chain and link its explorer. Apps pass their own
6
8
  * chain display, which also keeps a chain table out of the review bundle.
@@ -28,9 +30,29 @@ export type TransactionReviewCall = {
28
30
  contractName?: string;
29
31
  /** The calls a batching destination (MultiSend) makes in order, decoded by the caller. */
30
32
  calls?: readonly TransactionReviewCall[];
33
+ /** For a Safe proposal: the arg indexes a queued proposal it adopts may differ in. */
34
+ adoptIgnoringArgs?: readonly number[];
35
+ };
36
+ /**
37
+ * A signature the action asks for: the exact typed data or text the wallet
38
+ * signs, and what it lets run.
39
+ */
40
+ export type TransactionReviewSignature = {
41
+ kind: "safe-tx" | "forward-request" | "permit2" | "message";
42
+ chainId: number;
43
+ /** The exact EIP-712 typed data, for every kind but a message. */
44
+ typedData?: unknown;
45
+ /** The exact text, for a message. */
46
+ message?: string;
47
+ /** The calls the signature lets someone run, decoded. */
48
+ calls?: readonly TransactionReviewCall[];
49
+ /** What it authorizes, in rows (Permit2's token, amount, spender and expiry). */
50
+ steps?: readonly PrettyStep[];
31
51
  };
32
52
  export type TransactionReviewRequest = {
33
53
  calls: readonly TransactionReviewCall[];
54
+ /** Signed after confirm, before the first call is sent. */
55
+ signatures?: readonly TransactionReviewSignature[];
34
56
  title?: string;
35
57
  description?: string;
36
58
  confirmLabel?: string;
@@ -38,26 +60,11 @@ export type TransactionReviewRequest = {
38
60
  kind?: "transaction" | "authorization";
39
61
  /** Exact typed data committed by a Safe/relayer signature, when applicable. */
40
62
  authorization?: unknown;
41
- };
42
- export type ContractTransactionReviewCall = {
43
- chainId: number;
44
- address: Address;
45
- abi: Abi;
46
- functionName: string;
47
- args?: readonly unknown[];
48
- value?: bigint;
49
- gas?: bigint;
50
- safeTxGas?: bigint;
51
- account?: Address;
52
- };
53
- export type TransactionReviewOptions = Omit<TransactionReviewRequest, "calls"> & {
54
- label?: string;
55
- contractName?: string;
63
+ /** The site's summary rows, shown first. Display only: never part of a call. */
64
+ context?: readonly ReviewContextRow[];
56
65
  };
57
66
  /** "Base (~0.000123 ETH)": a chain and the relay fee quoted on it. */
58
67
  export declare function fundingChainLabel(chainName: string, amountWei: bigint): string;
59
- export declare function requestContractTransactionReview(call: ContractTransactionReviewCall, options?: TransactionReviewOptions): Promise<boolean>;
60
- export declare function requireContractTransactionReview(call: ContractTransactionReviewCall, options?: TransactionReviewOptions): Promise<void>;
61
68
  export declare function transactionReviewJson(request: TransactionReviewRequest): string;
62
69
  /**
63
70
  * The post-transaction counterpart of the review prompt: a mined tx the user
@@ -69,5 +76,6 @@ export declare function buildTransactionDebugPrompt(calls: {
69
76
  chainId: number;
70
77
  txHash: string;
71
78
  }[], { chainName: displayChainName, explorerOrigin }: TransactionReviewDisplay): string;
72
- export declare function buildTransactionReviewPrompt(request: TransactionReviewRequest, { explorerOrigin }: Pick<TransactionReviewDisplay, "explorerOrigin">): string;
79
+ /** The audit prompt for a request, or for the model core built from one (its `rawJson` is the same payload). */
80
+ export declare function buildTransactionReviewPrompt(request: TransactionReviewRequest | ReviewModel, { explorerOrigin }: Pick<TransactionReviewDisplay, "explorerOrigin">): string;
73
81
  //# sourceMappingURL=transactionReview.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"transactionReview.d.ts","sourceRoot":"","sources":["../../../src/review/transactionReview.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"transactionReview.d.ts","sourceRoot":"","sources":["../../../src/review/transactionReview.ts"],"names":[],"mappings":"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"}
@@ -1,21 +1,16 @@
1
1
  "use strict";
2
2
  "use client";
3
3
  Object.defineProperty(exports, "__esModule", { value: true });
4
- exports.TransactionReviewCancelledError = exports.requireTransactionReview = exports.requireFundingChainSelection = exports.registerTransactionReviewHandler = exports.registerFundingChainSelectionHandler = void 0;
4
+ exports.TransactionReviewCancelledError = exports.requireFundingChainSelection = exports.registerFundingChainSelectionHandler = void 0;
5
5
  exports.fundingChainLabel = fundingChainLabel;
6
- exports.requestContractTransactionReview = requestContractTransactionReview;
7
- exports.requireContractTransactionReview = requireContractTransactionReview;
8
6
  exports.transactionReviewJson = transactionReviewJson;
9
7
  exports.buildTransactionDebugPrompt = buildTransactionDebugPrompt;
10
8
  exports.buildTransactionReviewPrompt = buildTransactionReviewPrompt;
11
9
  const viem_1 = require("viem");
12
- const reviewQueue_js_1 = require("./reviewQueue.js");
13
- var reviewQueue_js_2 = require("./reviewQueue.js");
14
- Object.defineProperty(exports, "registerFundingChainSelectionHandler", { enumerable: true, get: function () { return reviewQueue_js_2.registerFundingChainSelectionHandler; } });
15
- Object.defineProperty(exports, "registerTransactionReviewHandler", { enumerable: true, get: function () { return reviewQueue_js_2.registerTransactionReviewHandler; } });
16
- Object.defineProperty(exports, "requireFundingChainSelection", { enumerable: true, get: function () { return reviewQueue_js_2.requireFundingChainSelection; } });
17
- Object.defineProperty(exports, "requireTransactionReview", { enumerable: true, get: function () { return reviewQueue_js_2.requireTransactionReview; } });
18
- Object.defineProperty(exports, "TransactionReviewCancelledError", { enumerable: true, get: function () { return reviewQueue_js_2.TransactionReviewCancelledError; } });
10
+ var reviewQueue_js_1 = require("./reviewQueue.js");
11
+ Object.defineProperty(exports, "registerFundingChainSelectionHandler", { enumerable: true, get: function () { return reviewQueue_js_1.registerFundingChainSelectionHandler; } });
12
+ Object.defineProperty(exports, "requireFundingChainSelection", { enumerable: true, get: function () { return reviewQueue_js_1.requireFundingChainSelection; } });
13
+ Object.defineProperty(exports, "TransactionReviewCancelledError", { enumerable: true, get: function () { return reviewQueue_js_1.TransactionReviewCancelledError; } });
19
14
  /** "Base (~0.000123 ETH)": a chain and the relay fee quoted on it. */
20
15
  function fundingChainLabel(chainName, amountWei) {
21
16
  const exact = (0, viem_1.formatEther)(amountWei);
@@ -24,54 +19,6 @@ function fundingChainLabel(chainName, amountWei) {
24
19
  }).format(Number(exact));
25
20
  return `${chainName} (${shown === exact ? "" : "~"}${shown} ETH)`;
26
21
  }
27
- /** Encode once for review using the same ABI/function/args passed to wagmi. */
28
- function contractCallForReview(call, options = {}) {
29
- const data = (0, viem_1.encodeFunctionData)({
30
- abi: call.abi,
31
- functionName: call.functionName,
32
- args: call.args,
33
- });
34
- return {
35
- chainId: call.chainId,
36
- to: call.address,
37
- data,
38
- value: call.value,
39
- gas: call.gas,
40
- safeTxGas: call.safeTxGas,
41
- from: call.account,
42
- abi: call.abi,
43
- functionName: call.functionName,
44
- args: call.args,
45
- label: options.label,
46
- contractName: options.contractName,
47
- };
48
- }
49
- function requestContractTransactionReview(call, options = {}) {
50
- const { label, contractName, ...requestOptions } = options;
51
- const reviewed = contractCallForReview(call, { label, contractName });
52
- return (0, reviewQueue_js_1.requestTransactionReview)({
53
- ...requestOptions,
54
- calls: [reviewed],
55
- }).then((approved) => {
56
- if (!approved)
57
- return false;
58
- const current = contractCallForReview(call, { label, contractName });
59
- if (current.chainId !== reviewed.chainId ||
60
- current.to.toLowerCase() !== reviewed.to.toLowerCase() ||
61
- (current.value ?? 0n) !== (reviewed.value ?? 0n) ||
62
- current.gas !== reviewed.gas ||
63
- current.safeTxGas !== reviewed.safeTxGas ||
64
- current.data !== reviewed.data) {
65
- throw new Error("Transaction data changed after review. Nothing was sent; review it again.");
66
- }
67
- return true;
68
- });
69
- }
70
- async function requireContractTransactionReview(call, options = {}) {
71
- if (!(await requestContractTransactionReview(call, options))) {
72
- throw new reviewQueue_js_1.TransactionReviewCancelledError();
73
- }
74
- }
75
22
  function transactionReviewJson(request) {
76
23
  const transactions = request.calls.map((call) => ({
77
24
  chainId: call.chainId,
@@ -85,10 +32,20 @@ function transactionReviewJson(request) {
85
32
  data: call.data,
86
33
  }));
87
34
  const calls = transactions.length === 1 ? transactions[0] : { transactions };
88
- const payload = request.authorization
89
- ? transactions.length > 0
90
- ? { authorization: request.authorization, resultingCall: calls }
91
- : { authorization: request.authorization }
35
+ const signatures = request.signatures?.map((signature) => signature.typedData === undefined
36
+ ? { message: signature.message }
37
+ : { typedData: signature.typedData });
38
+ const { authorization } = request;
39
+ const payload = signatures?.length || authorization
40
+ ? {
41
+ ...(signatures?.length ? { signatures } : {}),
42
+ ...(authorization ? { authorization } : {}),
43
+ ...(transactions.length === 0
44
+ ? {}
45
+ : signatures?.length
46
+ ? { calls }
47
+ : { resultingCall: calls }),
48
+ }
92
49
  : calls;
93
50
  return JSON.stringify(payload, (_, value) => (typeof value === "bigint" ? value.toString() : value), 2);
94
51
  }
@@ -112,13 +69,15 @@ function buildTransactionDebugPrompt(calls, { chainName: displayChainName, explo
112
69
  lines.push("", "If your agent has Etherscan's skills installed (`npx skills add etherscan/skills`), use `etherscan-transaction-debugger` in security mode on each hash. Otherwise work from the explorer page: receipt status, decoded input, event logs, and internal transactions.", "", "Verify contract source only against the Juicebox V6 repositories: https://github.com/Bananapus/version-6 (repositories ending in `-v6`; same-named repositories without that suffix are older versions).", "", "Report the decoded method and arguments, every native and token movement with its recipient, every permission, ownership, or ruleset change, and, if it reverted, the narrowest root cause the evidence supports. Mark each claim observed, derived, or inferred. Never invent a function name, amount, or revert reason. End with one line: what the transaction did in plain English, and anything that looks wrong.");
113
70
  return lines.join("\n");
114
71
  }
72
+ /** The audit prompt for a request, or for the model core built from one (its `rawJson` is the same payload). */
115
73
  function buildTransactionReviewPrompt(request, { explorerOrigin }) {
74
+ const payload = "rawJson" in request ? request.rawJson : transactionReviewJson(request);
116
75
  const lines = [
117
76
  "I'm about to authorize a blockchain action in a Juicebox V6 app (the nana V6 / revnet V6 protocol release, not an older Juicebox version). Act as a careful security reviewer. Independently verify the payload against the deployed contracts and V6 source, confirm it matches my intent, and give a go/no-go. Assume the UI could be spoofed; trust the onchain call and verified V6 source over the page.",
118
77
  "",
119
78
  "Exact app-controlled transaction payload:",
120
79
  "```json",
121
- transactionReviewJson(request),
80
+ payload,
122
81
  "```",
123
82
  "",
124
83
  ];
@@ -1 +1 @@
1
- {"version":3,"file":"transactionReview.js","sourceRoot":"","sources":["../../../src/review/transactionReview.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"transactionReview.js","sourceRoot":"","sources":["../../../src/review/transactionReview.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,82 @@
1
+ import type { Address, Hex, TypedDataDefinition, WalletClient } from "viem";
2
+ /** The raw calls a self-reviewing wallet (Signa) decodes and confirms on its own page. */
3
+ export type SelfReviewedRequest = {
4
+ account: Address;
5
+ calls: readonly {
6
+ chainId: number;
7
+ to: Address;
8
+ data: Hex;
9
+ value: bigint;
10
+ /** The exact gas limit the app fixed for the call, when it did. */
11
+ gas?: bigint;
12
+ }[];
13
+ };
14
+ /**
15
+ * The wallet as core sees it. This file is the only core code that calls a
16
+ * wallet; `sendReviewed` reaches it only through an adapter, after the review
17
+ * is confirmed. A `self-reviewing` adapter shows its own review and takes raw
18
+ * calls through `submitToReviewer` only.
19
+ */
20
+ export type WalletAdapter = {
21
+ /**
22
+ * Settles once `kind` and `isSafe` can be trusted (Safe{Wallet} over
23
+ * WalletConnect is known only once its peer metadata settles). Core awaits
24
+ * it, bounded, before reading them; a rejection or timeout sends nothing.
25
+ * It may be called more than once.
26
+ */
27
+ ready?(): Promise<void>;
28
+ kind: "wallet" | "self-reviewing";
29
+ account(): Address | undefined;
30
+ chainId(): number | undefined;
31
+ isSafe(): boolean;
32
+ switchChain(chainId: number): Promise<void>;
33
+ sendTransaction(tx: {
34
+ chainId: number;
35
+ to: Address;
36
+ data: Hex;
37
+ value: bigint;
38
+ gas?: bigint;
39
+ }): Promise<Hex>;
40
+ signTypedData(typedData: TypedDataDefinition): Promise<Hex>;
41
+ signMessage(message: string): Promise<Hex>;
42
+ sendCalls?(chainId: number, calls: readonly {
43
+ to: Address;
44
+ data: Hex;
45
+ value: bigint;
46
+ }[]): Promise<string>;
47
+ /** Self-reviewing adapters only. */
48
+ submitToReviewer?(request: SelfReviewedRequest): Promise<Hex>;
49
+ };
50
+ export declare const WALLET_NOT_READY_LINE = "Your wallet's connection could not be confirmed. Nothing was sent; try again.";
51
+ /**
52
+ * Awaits `adapter.ready`, at most {@link WALLET_READY_MS}. A rejection or
53
+ * timeout throws {@link WALLET_NOT_READY_LINE}: the wallet is never taken
54
+ * for a plain one it may not be.
55
+ */
56
+ export declare function walletReady(adapter: WalletAdapter): Promise<void>;
57
+ /**
58
+ * A {@link WalletAdapter} over a viem wallet client (wagmi's, say). Every
59
+ * write and signature names the connected account read when it is asked,
60
+ * and every send names its chain, so a wallet that moved refuses it.
61
+ */
62
+ export declare function viemWalletAdapter(options: {
63
+ walletClient: () => Promise<WalletClient>;
64
+ account: () => Address | undefined;
65
+ chainId: () => number | undefined;
66
+ isSafe: () => boolean;
67
+ switchChain: (chainId: number) => Promise<unknown>;
68
+ /** Settles once `isSafe` is known (see {@link WalletAdapter.ready}). */
69
+ ready?: () => Promise<unknown>;
70
+ }): WalletAdapter;
71
+ /** EIP-1193 4200, as Signa's connector refuses a request it does not take. */
72
+ export declare function unsupportedWalletRequest(): Error;
73
+ /**
74
+ * A {@link WalletAdapter} for a wallet that reviews on its own page (Signa).
75
+ * It takes raw calls through `submit` only; every other method is refused
76
+ * with EIP-1193 4200.
77
+ */
78
+ export declare function selfReviewingAdapter(options: {
79
+ account: () => Address | undefined;
80
+ submit: (request: SelfReviewedRequest) => Promise<Hex>;
81
+ }): WalletAdapter;
82
+ //# sourceMappingURL=wallet.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"wallet.d.ts","sourceRoot":"","sources":["../../../src/review/wallet.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EACV,OAAO,EAEP,GAAG,EACH,mBAAmB,EACnB,YAAY,EACb,MAAM,MAAM,CAAC;AAGd,0FAA0F;AAC1F,MAAM,MAAM,mBAAmB,GAAG;IAChC,OAAO,EAAE,OAAO,CAAC;IACjB,KAAK,EAAE,SAAS;QACd,OAAO,EAAE,MAAM,CAAC;QAChB,EAAE,EAAE,OAAO,CAAC;QACZ,IAAI,EAAE,GAAG,CAAC;QACV,KAAK,EAAE,MAAM,CAAC;QACd,mEAAmE;QACnE,GAAG,CAAC,EAAE,MAAM,CAAC;KACd,EAAE,CAAC;CACL,CAAC;AAEF;;;;;GAKG;AACH,MAAM,MAAM,aAAa,GAAG;IAC1B;;;;;OAKG;IACH,KAAK,CAAC,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IACxB,IAAI,EAAE,QAAQ,GAAG,gBAAgB,CAAC;IAClC,OAAO,IAAI,OAAO,GAAG,SAAS,CAAC;IAC/B,OAAO,IAAI,MAAM,GAAG,SAAS,CAAC;IAC9B,MAAM,IAAI,OAAO,CAAC;IAClB,WAAW,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAC5C,eAAe,CAAC,EAAE,EAAE;QAClB,OAAO,EAAE,MAAM,CAAC;QAChB,EAAE,EAAE,OAAO,CAAC;QACZ,IAAI,EAAE,GAAG,CAAC;QACV,KAAK,EAAE,MAAM,CAAC;QACd,GAAG,CAAC,EAAE,MAAM,CAAC;KACd,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC;IACjB,aAAa,CAAC,SAAS,EAAE,mBAAmB,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC;IAC5D,WAAW,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC;IAC3C,SAAS,CAAC,CACR,OAAO,EAAE,MAAM,EACf,KAAK,EAAE,SAAS;QAAE,EAAE,EAAE,OAAO,CAAC;QAAC,IAAI,EAAE,GAAG,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,EAAE,GAC1D,OAAO,CAAC,MAAM,CAAC,CAAC;IACnB,oCAAoC;IACpC,gBAAgB,CAAC,CAAC,OAAO,EAAE,mBAAmB,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC;CAC/D,CAAC;AAKF,eAAO,MAAM,qBAAqB,kFAC+C,CAAC;AAElF;;;;GAIG;AACH,wBAAsB,WAAW,CAAC,OAAO,EAAE,aAAa,GAAG,OAAO,CAAC,IAAI,CAAC,CAYvE;AAsDD;;;;GAIG;AACH,wBAAgB,iBAAiB,CAAC,OAAO,EAAE;IACzC,YAAY,EAAE,MAAM,OAAO,CAAC,YAAY,CAAC,CAAC;IAC1C,OAAO,EAAE,MAAM,OAAO,GAAG,SAAS,CAAC;IACnC,OAAO,EAAE,MAAM,MAAM,GAAG,SAAS,CAAC;IAClC,MAAM,EAAE,MAAM,OAAO,CAAC;IACtB,WAAW,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,OAAO,CAAC,OAAO,CAAC,CAAC;IACnD,wEAAwE;IACxE,KAAK,CAAC,EAAE,MAAM,OAAO,CAAC,OAAO,CAAC,CAAC;CAChC,GAAG,aAAa,CAyDhB;AAED,8EAA8E;AAC9E,wBAAgB,wBAAwB,IAAI,KAAK,CAOhD;AAED;;;;GAIG;AACH,wBAAgB,oBAAoB,CAAC,OAAO,EAAE;IAC5C,OAAO,EAAE,MAAM,OAAO,GAAG,SAAS,CAAC;IACnC,MAAM,EAAE,CAAC,OAAO,EAAE,mBAAmB,KAAK,OAAO,CAAC,GAAG,CAAC,CAAC;CACxD,GAAG,aAAa,CAgBhB"}