@bananapus/nana-sdk-core 3.5.2 → 5.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 (304) hide show
  1. package/bin/wallet-check.mjs +495 -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 +56 -0
  11. package/dist/cjs/review/confirm.d.ts.map +1 -0
  12. package/dist/cjs/review/confirm.js +99 -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 +10 -8
  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 +4 -0
  27. package/dist/cjs/review/heldWrite.d.ts.map +1 -1
  28. package/dist/cjs/review/heldWrite.js +35 -31
  29. package/dist/cjs/review/heldWrite.js.map +1 -1
  30. package/dist/cjs/review/index.d.ts +12 -1
  31. package/dist/cjs/review/index.d.ts.map +1 -1
  32. package/dist/cjs/review/index.js +29 -1
  33. package/dist/cjs/review/index.js.map +1 -1
  34. package/dist/cjs/review/intents.d.ts +10 -0
  35. package/dist/cjs/review/intents.d.ts.map +1 -1
  36. package/dist/cjs/review/intents.js +13 -0
  37. package/dist/cjs/review/intents.js.map +1 -1
  38. package/dist/cjs/review/lineError.d.ts +72 -0
  39. package/dist/cjs/review/lineError.d.ts.map +1 -0
  40. package/dist/cjs/review/lineError.js +76 -0
  41. package/dist/cjs/review/lineError.js.map +1 -0
  42. package/dist/cjs/review/messages.d.ts +15 -3
  43. package/dist/cjs/review/messages.d.ts.map +1 -1
  44. package/dist/cjs/review/messages.js +16 -4
  45. package/dist/cjs/review/messages.js.map +1 -1
  46. package/dist/cjs/review/model.d.ts +149 -0
  47. package/dist/cjs/review/model.d.ts.map +1 -0
  48. package/dist/cjs/review/model.js +750 -0
  49. package/dist/cjs/review/model.js.map +1 -0
  50. package/dist/cjs/review/plan.d.ts +61 -0
  51. package/dist/cjs/review/plan.d.ts.map +1 -0
  52. package/dist/cjs/review/plan.js +143 -0
  53. package/dist/cjs/review/plan.js.map +1 -0
  54. package/dist/cjs/review/react/index.d.ts +1 -0
  55. package/dist/cjs/review/react/index.d.ts.map +1 -1
  56. package/dist/cjs/review/react/index.js +1 -0
  57. package/dist/cjs/review/react/index.js.map +1 -1
  58. package/dist/cjs/review/react/useHeldSend.js +3 -4
  59. package/dist/cjs/review/react/useHeldSend.js.map +1 -1
  60. package/dist/cjs/review/react/useHeldWrite.d.ts.map +1 -1
  61. package/dist/cjs/review/react/useHeldWrite.js +2 -1
  62. package/dist/cjs/review/react/useHeldWrite.js.map +1 -1
  63. package/dist/cjs/review/react/useReviewedRun.d.ts +122 -0
  64. package/dist/cjs/review/react/useReviewedRun.d.ts.map +1 -0
  65. package/dist/cjs/review/react/useReviewedRun.js +443 -0
  66. package/dist/cjs/review/react/useReviewedRun.js.map +1 -0
  67. package/dist/cjs/review/receipt.d.ts +37 -1
  68. package/dist/cjs/review/receipt.d.ts.map +1 -1
  69. package/dist/cjs/review/receipt.js +76 -3
  70. package/dist/cjs/review/receipt.js.map +1 -1
  71. package/dist/cjs/review/relayr.d.ts +13 -4
  72. package/dist/cjs/review/relayr.d.ts.map +1 -1
  73. package/dist/cjs/review/relayr.js +52 -8
  74. package/dist/cjs/review/relayr.js.map +1 -1
  75. package/dist/cjs/review/relayrSend.d.ts +106 -0
  76. package/dist/cjs/review/relayrSend.d.ts.map +1 -0
  77. package/dist/cjs/review/relayrSend.js +795 -0
  78. package/dist/cjs/review/relayrSend.js.map +1 -0
  79. package/dist/cjs/review/reviewQueue.d.ts +10 -9
  80. package/dist/cjs/review/reviewQueue.d.ts.map +1 -1
  81. package/dist/cjs/review/reviewQueue.js +19 -29
  82. package/dist/cjs/review/reviewQueue.js.map +1 -1
  83. package/dist/cjs/review/reviewRequests.d.ts +86 -0
  84. package/dist/cjs/review/reviewRequests.d.ts.map +1 -0
  85. package/dist/cjs/review/reviewRequests.js +266 -0
  86. package/dist/cjs/review/reviewRequests.js.map +1 -0
  87. package/dist/cjs/review/safeRelayr.d.ts +3 -1
  88. package/dist/cjs/review/safeRelayr.d.ts.map +1 -1
  89. package/dist/cjs/review/safeRelayr.js +9 -9
  90. package/dist/cjs/review/safeRelayr.js.map +1 -1
  91. package/dist/cjs/review/safeSend.d.ts +69 -0
  92. package/dist/cjs/review/safeSend.d.ts.map +1 -0
  93. package/dist/cjs/review/safeSend.js +306 -0
  94. package/dist/cjs/review/safeSend.js.map +1 -0
  95. package/dist/cjs/review/send.d.ts +272 -0
  96. package/dist/cjs/review/send.d.ts.map +1 -0
  97. package/dist/cjs/review/send.js +1163 -0
  98. package/dist/cjs/review/send.js.map +1 -0
  99. package/dist/cjs/review/sequence.d.ts +77 -0
  100. package/dist/cjs/review/sequence.d.ts.map +1 -0
  101. package/dist/cjs/review/sequence.js +232 -0
  102. package/dist/cjs/review/sequence.js.map +1 -0
  103. package/dist/cjs/review/sign.d.ts +111 -0
  104. package/dist/cjs/review/sign.d.ts.map +1 -0
  105. package/dist/cjs/review/sign.js +378 -0
  106. package/dist/cjs/review/sign.js.map +1 -0
  107. package/dist/cjs/review/simulation.d.ts +41 -2
  108. package/dist/cjs/review/simulation.d.ts.map +1 -1
  109. package/dist/cjs/review/simulation.js +99 -29
  110. package/dist/cjs/review/simulation.js.map +1 -1
  111. package/dist/cjs/review/transaction-message.d.ts +13 -0
  112. package/dist/cjs/review/transaction-message.d.ts.map +1 -1
  113. package/dist/cjs/review/transaction-message.js +25 -0
  114. package/dist/cjs/review/transaction-message.js.map +1 -1
  115. package/dist/cjs/review/transactionReview.d.ts +27 -19
  116. package/dist/cjs/review/transactionReview.d.ts.map +1 -1
  117. package/dist/cjs/review/transactionReview.js +22 -63
  118. package/dist/cjs/review/transactionReview.js.map +1 -1
  119. package/dist/cjs/review/wallet.d.ts +98 -0
  120. package/dist/cjs/review/wallet.d.ts.map +1 -0
  121. package/dist/cjs/review/wallet.js +234 -0
  122. package/dist/cjs/review/wallet.js.map +1 -0
  123. package/dist/cjs/review/writeHold.d.ts +138 -13
  124. package/dist/cjs/review/writeHold.d.ts.map +1 -1
  125. package/dist/cjs/review/writeHold.js +98 -18
  126. package/dist/cjs/review/writeHold.js.map +1 -1
  127. package/dist/cjs/review/writeRecovery.d.ts +17 -1
  128. package/dist/cjs/review/writeRecovery.d.ts.map +1 -1
  129. package/dist/cjs/review/writeRecovery.js +146 -45
  130. package/dist/cjs/review/writeRecovery.js.map +1 -1
  131. package/dist/cjs/safeService.d.ts +27 -4
  132. package/dist/cjs/safeService.d.ts.map +1 -1
  133. package/dist/cjs/safeService.js +120 -3
  134. package/dist/cjs/safeService.js.map +1 -1
  135. package/dist/cjs/testing.d.ts +24 -0
  136. package/dist/cjs/testing.d.ts.map +1 -1
  137. package/dist/cjs/testing.js +26 -1
  138. package/dist/cjs/testing.js.map +1 -1
  139. package/dist/cjs/v6/defifa.d.ts.map +1 -1
  140. package/dist/cjs/v6/defifa.js +24 -23
  141. package/dist/cjs/v6/defifa.js.map +1 -1
  142. package/dist/cjs/v6/executionErrors.d.ts.map +1 -1
  143. package/dist/cjs/v6/executionErrors.js +3 -2
  144. package/dist/cjs/v6/executionErrors.js.map +1 -1
  145. package/dist/cjs/v6/pay.d.ts +25 -8
  146. package/dist/cjs/v6/pay.d.ts.map +1 -1
  147. package/dist/cjs/v6/pay.js +117 -23
  148. package/dist/cjs/v6/pay.js.map +1 -1
  149. package/dist/cjs/v6/suckers.d.ts +30 -0
  150. package/dist/cjs/v6/suckers.d.ts.map +1 -1
  151. package/dist/cjs/v6/suckers.js +69 -5
  152. package/dist/cjs/v6/suckers.js.map +1 -1
  153. package/dist/esm/actions/suckerPairs.d.ts +5 -3
  154. package/dist/esm/actions/suckerPairs.d.ts.map +1 -1
  155. package/dist/esm/actions/suckerPairs.js +7 -27
  156. package/dist/esm/actions/suckerPairs.js.map +1 -1
  157. package/dist/esm/pause.d.ts +2 -0
  158. package/dist/esm/pause.d.ts.map +1 -1
  159. package/dist/esm/pause.js +16 -0
  160. package/dist/esm/pause.js.map +1 -1
  161. package/dist/esm/review/confirm.d.ts +56 -0
  162. package/dist/esm/review/confirm.d.ts.map +1 -0
  163. package/dist/esm/review/confirm.js +93 -0
  164. package/dist/esm/review/confirm.js.map +1 -0
  165. package/dist/esm/review/contractWrite.d.ts +5 -3
  166. package/dist/esm/review/contractWrite.d.ts.map +1 -1
  167. package/dist/esm/review/contractWrite.js +10 -8
  168. package/dist/esm/review/contractWrite.js.map +1 -1
  169. package/dist/esm/review/decode.d.ts +19 -1
  170. package/dist/esm/review/decode.d.ts.map +1 -1
  171. package/dist/esm/review/decode.js +29 -14
  172. package/dist/esm/review/decode.js.map +1 -1
  173. package/dist/esm/review/decodeCall.d.ts +21 -0
  174. package/dist/esm/review/decodeCall.d.ts.map +1 -0
  175. package/dist/esm/review/decodeCall.js +180 -0
  176. package/dist/esm/review/decodeCall.js.map +1 -0
  177. package/dist/esm/review/heldWrite.d.ts +4 -0
  178. package/dist/esm/review/heldWrite.d.ts.map +1 -1
  179. package/dist/esm/review/heldWrite.js +34 -30
  180. package/dist/esm/review/heldWrite.js.map +1 -1
  181. package/dist/esm/review/index.d.ts +12 -1
  182. package/dist/esm/review/index.d.ts.map +1 -1
  183. package/dist/esm/review/index.js +12 -1
  184. package/dist/esm/review/index.js.map +1 -1
  185. package/dist/esm/review/intents.d.ts +10 -0
  186. package/dist/esm/review/intents.d.ts.map +1 -1
  187. package/dist/esm/review/intents.js +12 -0
  188. package/dist/esm/review/intents.js.map +1 -1
  189. package/dist/esm/review/lineError.d.ts +72 -0
  190. package/dist/esm/review/lineError.d.ts.map +1 -0
  191. package/dist/esm/review/lineError.js +68 -0
  192. package/dist/esm/review/lineError.js.map +1 -0
  193. package/dist/esm/review/messages.d.ts +15 -3
  194. package/dist/esm/review/messages.d.ts.map +1 -1
  195. package/dist/esm/review/messages.js +15 -3
  196. package/dist/esm/review/messages.js.map +1 -1
  197. package/dist/esm/review/model.d.ts +149 -0
  198. package/dist/esm/review/model.d.ts.map +1 -0
  199. package/dist/esm/review/model.js +746 -0
  200. package/dist/esm/review/model.js.map +1 -0
  201. package/dist/esm/review/plan.d.ts +61 -0
  202. package/dist/esm/review/plan.d.ts.map +1 -0
  203. package/dist/esm/review/plan.js +136 -0
  204. package/dist/esm/review/plan.js.map +1 -0
  205. package/dist/esm/review/react/index.d.ts +1 -0
  206. package/dist/esm/review/react/index.d.ts.map +1 -1
  207. package/dist/esm/review/react/index.js +1 -0
  208. package/dist/esm/review/react/index.js.map +1 -1
  209. package/dist/esm/review/react/useHeldSend.js +3 -4
  210. package/dist/esm/review/react/useHeldSend.js.map +1 -1
  211. package/dist/esm/review/react/useHeldWrite.d.ts.map +1 -1
  212. package/dist/esm/review/react/useHeldWrite.js +2 -1
  213. package/dist/esm/review/react/useHeldWrite.js.map +1 -1
  214. package/dist/esm/review/react/useReviewedRun.d.ts +122 -0
  215. package/dist/esm/review/react/useReviewedRun.d.ts.map +1 -0
  216. package/dist/esm/review/react/useReviewedRun.js +439 -0
  217. package/dist/esm/review/react/useReviewedRun.js.map +1 -0
  218. package/dist/esm/review/receipt.d.ts +37 -1
  219. package/dist/esm/review/receipt.d.ts.map +1 -1
  220. package/dist/esm/review/receipt.js +72 -2
  221. package/dist/esm/review/receipt.js.map +1 -1
  222. package/dist/esm/review/relayr.d.ts +13 -4
  223. package/dist/esm/review/relayr.d.ts.map +1 -1
  224. package/dist/esm/review/relayr.js +51 -8
  225. package/dist/esm/review/relayr.js.map +1 -1
  226. package/dist/esm/review/relayrSend.d.ts +106 -0
  227. package/dist/esm/review/relayrSend.d.ts.map +1 -0
  228. package/dist/esm/review/relayrSend.js +787 -0
  229. package/dist/esm/review/relayrSend.js.map +1 -0
  230. package/dist/esm/review/reviewQueue.d.ts +10 -9
  231. package/dist/esm/review/reviewQueue.d.ts.map +1 -1
  232. package/dist/esm/review/reviewQueue.js +17 -26
  233. package/dist/esm/review/reviewQueue.js.map +1 -1
  234. package/dist/esm/review/reviewRequests.d.ts +86 -0
  235. package/dist/esm/review/reviewRequests.d.ts.map +1 -0
  236. package/dist/esm/review/reviewRequests.js +263 -0
  237. package/dist/esm/review/reviewRequests.js.map +1 -0
  238. package/dist/esm/review/safeRelayr.d.ts +3 -1
  239. package/dist/esm/review/safeRelayr.d.ts.map +1 -1
  240. package/dist/esm/review/safeRelayr.js +9 -9
  241. package/dist/esm/review/safeRelayr.js.map +1 -1
  242. package/dist/esm/review/safeSend.d.ts +69 -0
  243. package/dist/esm/review/safeSend.d.ts.map +1 -0
  244. package/dist/esm/review/safeSend.js +301 -0
  245. package/dist/esm/review/safeSend.js.map +1 -0
  246. package/dist/esm/review/send.d.ts +272 -0
  247. package/dist/esm/review/send.d.ts.map +1 -0
  248. package/dist/esm/review/send.js +1156 -0
  249. package/dist/esm/review/send.js.map +1 -0
  250. package/dist/esm/review/sequence.d.ts +77 -0
  251. package/dist/esm/review/sequence.d.ts.map +1 -0
  252. package/dist/esm/review/sequence.js +223 -0
  253. package/dist/esm/review/sequence.js.map +1 -0
  254. package/dist/esm/review/sign.d.ts +111 -0
  255. package/dist/esm/review/sign.d.ts.map +1 -0
  256. package/dist/esm/review/sign.js +372 -0
  257. package/dist/esm/review/sign.js.map +1 -0
  258. package/dist/esm/review/simulation.d.ts +41 -2
  259. package/dist/esm/review/simulation.d.ts.map +1 -1
  260. package/dist/esm/review/simulation.js +95 -29
  261. package/dist/esm/review/simulation.js.map +1 -1
  262. package/dist/esm/review/transaction-message.d.ts +13 -0
  263. package/dist/esm/review/transaction-message.d.ts.map +1 -1
  264. package/dist/esm/review/transaction-message.js +23 -0
  265. package/dist/esm/review/transaction-message.js.map +1 -1
  266. package/dist/esm/review/transactionReview.d.ts +27 -19
  267. package/dist/esm/review/transactionReview.d.ts.map +1 -1
  268. package/dist/esm/review/transactionReview.js +19 -56
  269. package/dist/esm/review/transactionReview.js.map +1 -1
  270. package/dist/esm/review/wallet.d.ts +98 -0
  271. package/dist/esm/review/wallet.d.ts.map +1 -0
  272. package/dist/esm/review/wallet.js +227 -0
  273. package/dist/esm/review/wallet.js.map +1 -0
  274. package/dist/esm/review/writeHold.d.ts +138 -13
  275. package/dist/esm/review/writeHold.d.ts.map +1 -1
  276. package/dist/esm/review/writeHold.js +96 -19
  277. package/dist/esm/review/writeHold.js.map +1 -1
  278. package/dist/esm/review/writeRecovery.d.ts +17 -1
  279. package/dist/esm/review/writeRecovery.d.ts.map +1 -1
  280. package/dist/esm/review/writeRecovery.js +149 -48
  281. package/dist/esm/review/writeRecovery.js.map +1 -1
  282. package/dist/esm/safeService.d.ts +27 -4
  283. package/dist/esm/safeService.d.ts.map +1 -1
  284. package/dist/esm/safeService.js +119 -4
  285. package/dist/esm/safeService.js.map +1 -1
  286. package/dist/esm/testing.d.ts +24 -0
  287. package/dist/esm/testing.d.ts.map +1 -1
  288. package/dist/esm/testing.js +23 -1
  289. package/dist/esm/testing.js.map +1 -1
  290. package/dist/esm/v6/defifa.d.ts.map +1 -1
  291. package/dist/esm/v6/defifa.js +24 -23
  292. package/dist/esm/v6/defifa.js.map +1 -1
  293. package/dist/esm/v6/executionErrors.d.ts.map +1 -1
  294. package/dist/esm/v6/executionErrors.js +3 -2
  295. package/dist/esm/v6/executionErrors.js.map +1 -1
  296. package/dist/esm/v6/pay.d.ts +25 -8
  297. package/dist/esm/v6/pay.d.ts.map +1 -1
  298. package/dist/esm/v6/pay.js +115 -22
  299. package/dist/esm/v6/pay.js.map +1 -1
  300. package/dist/esm/v6/suckers.d.ts +30 -0
  301. package/dist/esm/v6/suckers.d.ts.map +1 -1
  302. package/dist/esm/v6/suckers.js +67 -5
  303. package/dist/esm/v6/suckers.js.map +1 -1
  304. package/package.json +11 -2
@@ -0,0 +1,98 @@
1
+ import { type Address, type Hex, type TypedDataDefinition, type 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
+ /**
40
+ * The run's end: once it aborts, the send is refused, unsent, at the
41
+ * adapter's last check before the wallet ({@link WalletNotInvokedError}).
42
+ */
43
+ signal?: AbortSignal;
44
+ }): Promise<Hex>;
45
+ signTypedData(typedData: TypedDataDefinition): Promise<Hex>;
46
+ signMessage(message: string): Promise<Hex>;
47
+ sendCalls?(chainId: number, calls: readonly {
48
+ to: Address;
49
+ data: Hex;
50
+ value: bigint;
51
+ }[]): Promise<string>;
52
+ /** Self-reviewing adapters only. */
53
+ submitToReviewer?(request: SelfReviewedRequest): Promise<Hex>;
54
+ };
55
+ export declare const WALLET_NOT_READY_LINE = "Your wallet's connection could not be confirmed. Nothing was sent; try again.";
56
+ /**
57
+ * Awaits `adapter.ready`, at most {@link WALLET_READY_MS}. A rejection or
58
+ * timeout throws {@link WALLET_NOT_READY_LINE}: the wallet is never taken
59
+ * for a plain one it may not be.
60
+ */
61
+ export declare function walletReady(adapter: WalletAdapter): Promise<void>;
62
+ /**
63
+ * A {@link WalletAdapter} over a viem wallet client (wagmi's, say). Every
64
+ * write and signature names the connected account read when it is asked,
65
+ * and every send names its chain, so a wallet that moved refuses it.
66
+ */
67
+ export declare function viemWalletAdapter(options: {
68
+ walletClient: () => Promise<WalletClient>;
69
+ account: () => Address | undefined;
70
+ chainId: () => number | undefined;
71
+ isSafe: () => boolean;
72
+ switchChain: (chainId: number) => Promise<unknown>;
73
+ /** Settles once `isSafe` is known (see {@link WalletAdapter.ready}). */
74
+ ready?: () => Promise<unknown>;
75
+ /** The connector's identity (wagmi's `connector?.uid`): a change fetches the client again. */
76
+ connector?: () => unknown;
77
+ /**
78
+ * The site's own synchronous check (view-as, say), run with the others as
79
+ * each request is forwarded to the wallet. Its throw refuses, unsent, with
80
+ * its message.
81
+ */
82
+ check?: () => void;
83
+ }): WalletAdapter;
84
+ /** EIP-1193 4200, as Signa's connector refuses a request it does not take. */
85
+ export declare function unsupportedWalletRequest(): Error;
86
+ /**
87
+ * A {@link WalletAdapter} for a wallet that reviews on its own page (Signa).
88
+ * It takes raw calls through `submit`, and raw typed data or text through
89
+ * `signTypedData` and `signMessage` when given; anything else is refused
90
+ * with EIP-1193 4200.
91
+ */
92
+ export declare function selfReviewingAdapter(options: {
93
+ account: () => Address | undefined;
94
+ submit: (request: SelfReviewedRequest) => Promise<Hex>;
95
+ signTypedData?: (typedData: TypedDataDefinition) => Promise<Hex>;
96
+ signMessage?: (message: string) => Promise<Hex>;
97
+ }): WalletAdapter;
98
+ //# sourceMappingURL=wallet.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"wallet.d.ts","sourceRoot":"","sources":["../../../src/review/wallet.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,234 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.WALLET_NOT_READY_LINE = void 0;
4
+ exports.walletReady = walletReady;
5
+ exports.viemWalletAdapter = viemWalletAdapter;
6
+ exports.unsupportedWalletRequest = unsupportedWalletRequest;
7
+ exports.selfReviewingAdapter = selfReviewingAdapter;
8
+ const lineError_js_1 = require("./lineError.js");
9
+ const viem_1 = require("viem");
10
+ const pause_js_1 = require("../pause.js");
11
+ /** How long a wallet's `ready` may take before nothing is sent. */
12
+ const WALLET_READY_MS = 10_000;
13
+ exports.WALLET_NOT_READY_LINE = "Your wallet's connection could not be confirmed. Nothing was sent; try again.";
14
+ /**
15
+ * Awaits `adapter.ready`, at most {@link WALLET_READY_MS}. A rejection or
16
+ * timeout throws {@link WALLET_NOT_READY_LINE}: the wallet is never taken
17
+ * for a plain one it may not be.
18
+ */
19
+ async function walletReady(adapter) {
20
+ if (!adapter.ready)
21
+ return;
22
+ try {
23
+ await (0, pause_js_1.timeout)(Promise.resolve().then(() => adapter.ready()), WALLET_READY_MS);
24
+ }
25
+ catch (error) {
26
+ throw Object.assign(new lineError_js_1.ReviewLineError(exports.WALLET_NOT_READY_LINE), {
27
+ cause: error,
28
+ });
29
+ }
30
+ }
31
+ const CONNECTION_CHANGED = "Wallet connection changed. Review the transaction again.";
32
+ const NETWORK_CHANGED = "Your wallet changed networks. Review again.";
33
+ const UNREACHABLE = "Your wallet could not be reached. Nothing was sent; try again.";
34
+ const RUN_ENDED = "This action was closed. Nothing more was sent.";
35
+ /** The provider requests that send or sign: each is checked again as it is forwarded. */
36
+ const DISPATCHED = new Set([
37
+ "eth_sendTransaction",
38
+ "wallet_sendTransaction",
39
+ "eth_sendRawTransaction",
40
+ "wallet_sendCalls",
41
+ "eth_signTypedData_v4",
42
+ "personal_sign",
43
+ ]);
44
+ /**
45
+ * Calls `invoke` with a client over the connected wallet whose every sending
46
+ * or signing request first checks, synchronously, that the account, chain,
47
+ * Safe mode, connector and the site's `check` read as they did when asked:
48
+ * viem awaits its own reads before it sends, so no earlier check is the last.
49
+ * A refusal before any such request went out is a {@link WalletNotInvokedError}.
50
+ * A connector that changes while the client loads is fetched again, three
51
+ * times at most.
52
+ */
53
+ async function withConnection(options, invoke, signal) {
54
+ const account = options.account();
55
+ if (!account)
56
+ throw new lineError_js_1.WalletNotInvokedError("Connect a wallet first.");
57
+ const chainId = options.chainId();
58
+ const safe = options.isSafe();
59
+ const current = () => {
60
+ if (signal?.aborted)
61
+ throw new lineError_js_1.WalletNotInvokedError(RUN_ENDED);
62
+ if (options.account()?.toLowerCase() !== account.toLowerCase()) {
63
+ throw new lineError_js_1.WalletNotInvokedError("The connected account changed. Review again.");
64
+ }
65
+ if (options.chainId() !== chainId || options.isSafe() !== safe) {
66
+ throw new lineError_js_1.WalletNotInvokedError(CONNECTION_CHANGED);
67
+ }
68
+ try {
69
+ options.check?.();
70
+ }
71
+ catch (error) {
72
+ throw Object.assign(new lineError_js_1.WalletNotInvokedError(error instanceof Error ? error.message : CONNECTION_CHANGED), { cause: error });
73
+ }
74
+ return options.connector?.();
75
+ };
76
+ let wallet;
77
+ let connector;
78
+ for (let attempt = 0; attempt < 3 && !wallet; attempt += 1) {
79
+ connector = current();
80
+ let fetched;
81
+ try {
82
+ fetched = await options.walletClient();
83
+ }
84
+ catch (error) {
85
+ throw Object.assign(new lineError_js_1.WalletNotInvokedError(UNREACHABLE), {
86
+ cause: error,
87
+ });
88
+ }
89
+ if (current() === connector)
90
+ wallet = fetched;
91
+ }
92
+ if (!wallet)
93
+ throw new lineError_js_1.WalletNotInvokedError(CONNECTION_CHANGED);
94
+ // A composite transport (viem's fallback) can pass one send to a second
95
+ // provider, so a later 4001 would not prove the first never sent it.
96
+ if (!ONE_PROVIDER.has(wallet.transport.type))
97
+ throw new lineError_js_1.WalletNotInvokedError(COMPOSITE);
98
+ const inner = wallet;
99
+ let forwarded = false;
100
+ let refusal;
101
+ const client = (0, viem_1.createWalletClient)({
102
+ account: inner.account,
103
+ chain: inner.chain,
104
+ transport: (0, viem_1.custom)({
105
+ request: (args) => {
106
+ const forwardedNow = DISPATCHED.has(args.method);
107
+ if (forwardedNow) {
108
+ try {
109
+ if (current() !== connector)
110
+ throw new lineError_js_1.WalletNotInvokedError(CONNECTION_CHANGED);
111
+ }
112
+ catch (error) {
113
+ // Unsent only while none of this call's requests went out.
114
+ if (forwarded)
115
+ return Promise.reject(new lineError_js_1.ReviewLineError(CONNECTION_CHANGED));
116
+ refusal = error;
117
+ return Promise.reject(error);
118
+ }
119
+ forwarded = true;
120
+ }
121
+ // A send or signature reaches the wallet once, never retried past this check.
122
+ return forwardedNow
123
+ ? inner.request(args, { retryCount: 0 })
124
+ : inner.request(args);
125
+ },
126
+ }, { retryCount: 0 }),
127
+ });
128
+ try {
129
+ return await invoke({ account, client });
130
+ }
131
+ catch (error) {
132
+ // viem wraps what its transport threw; the refusal is this one, by identity.
133
+ if (refusal)
134
+ throw refusal;
135
+ // viem failed before asking the wallet anything (a chain read, another chain).
136
+ if (!forwarded)
137
+ throw Object.assign(new lineError_js_1.WalletNotInvokedError(error instanceof viem_1.BaseError &&
138
+ error.walk((e) => e instanceof viem_1.ChainMismatchError)
139
+ ? NETWORK_CHANGED
140
+ : UNREACHABLE), { cause: error });
141
+ throw error;
142
+ }
143
+ }
144
+ /** viem transports that hand each request to exactly one provider. */
145
+ const ONE_PROVIDER = new Set(["custom", "http", "webSocket", "ipc"]);
146
+ const COMPOSITE = "This wallet connection uses more than one provider. Connect through one wallet provider; nothing was sent.";
147
+ /**
148
+ * The chain a write is sent on: the client's own when it is that chain, so
149
+ * its formatters apply. viem checks the wallet is on it before sending.
150
+ */
151
+ function chainOf(client, chainId) {
152
+ return client.chain?.id === chainId
153
+ ? client.chain
154
+ : { id: chainId };
155
+ }
156
+ /**
157
+ * A {@link WalletAdapter} over a viem wallet client (wagmi's, say). Every
158
+ * write and signature names the connected account read when it is asked,
159
+ * and every send names its chain, so a wallet that moved refuses it.
160
+ */
161
+ function viemWalletAdapter(options) {
162
+ const { ready } = options;
163
+ return {
164
+ ...(ready
165
+ ? {
166
+ ready: async () => {
167
+ await ready();
168
+ },
169
+ }
170
+ : {}),
171
+ kind: "wallet",
172
+ account: options.account,
173
+ chainId: options.chainId,
174
+ isSafe: options.isSafe,
175
+ switchChain: async (chainId) => {
176
+ await options.switchChain(chainId);
177
+ },
178
+ sendTransaction: ({ chainId, to, data, value, gas, signal }) => withConnection(options, ({ account, client }) => client.sendTransaction({
179
+ account,
180
+ chain: chainOf(client, chainId),
181
+ to,
182
+ data,
183
+ value,
184
+ ...(gas === undefined ? {} : { gas }),
185
+ }), signal),
186
+ signTypedData: async (typedData) => {
187
+ // viem does not check the wallet's chain against the domain's.
188
+ const chainId = typedData.domain?.chainId;
189
+ if (chainId !== undefined && options.chainId() !== Number(chainId)) {
190
+ throw new lineError_js_1.WalletNotInvokedError(NETWORK_CHANGED);
191
+ }
192
+ return withConnection(options, ({ account, client }) => client.signTypedData({ ...typedData, account }));
193
+ },
194
+ signMessage: (message) => withConnection(options, ({ account, client }) => client.signMessage({ account, message })),
195
+ sendCalls: (chainId, calls) => withConnection(options, async ({ account, client }) => {
196
+ const { id } = await client.sendCalls({
197
+ account,
198
+ chain: chainOf(client, chainId),
199
+ calls: calls.map(({ to, data, value }) => ({ to, data, value })),
200
+ });
201
+ return id;
202
+ }),
203
+ };
204
+ }
205
+ /** EIP-1193 4200, as Signa's connector refuses a request it does not take. */
206
+ function unsupportedWalletRequest() {
207
+ return Object.assign(new lineError_js_1.ReviewLineError("This wallet request is not supported."), {
208
+ code: 4200,
209
+ });
210
+ }
211
+ /**
212
+ * A {@link WalletAdapter} for a wallet that reviews on its own page (Signa).
213
+ * It takes raw calls through `submit`, and raw typed data or text through
214
+ * `signTypedData` and `signMessage` when given; anything else is refused
215
+ * with EIP-1193 4200.
216
+ */
217
+ function selfReviewingAdapter(options) {
218
+ const refuse = () => {
219
+ throw unsupportedWalletRequest();
220
+ };
221
+ const reject = () => Promise.reject(unsupportedWalletRequest());
222
+ return {
223
+ kind: "self-reviewing",
224
+ account: options.account,
225
+ chainId: refuse,
226
+ isSafe: refuse,
227
+ switchChain: reject,
228
+ sendTransaction: reject,
229
+ signTypedData: options.signTypedData ?? reject,
230
+ signMessage: options.signMessage ?? reject,
231
+ submitToReviewer: (request) => options.submit(request),
232
+ };
233
+ }
234
+ //# sourceMappingURL=wallet.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"wallet.js","sourceRoot":"","sources":["../../../src/review/wallet.ts"],"names":[],"mappings":"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"}
@@ -1,6 +1,8 @@
1
+ import { ReviewLineError } from "./lineError.js";
1
2
  import { type Address, type Hex, type PublicClient, type TransactionReceipt } from "viem";
2
3
  import { type SafeQueuedTransaction, type SafeServiceOptions } from "../safeService.js";
3
4
  import { type HeldWriteStorage, type ReviewedWriteRecoveryInput, type ReviewedWriteRecoveryRecord } from "./writeRecovery.js";
5
+ import type { ReviewedCall } from "./send.js";
4
6
  /** A saved success the user hasn't acknowledged: it blocks sending the action again. */
5
7
  export type UnacknowledgedSuccess = {
6
8
  result: "success";
@@ -12,10 +14,17 @@ export type UnacknowledgedSuccess = {
12
14
  export type WriteHoldClient = Pick<PublicClient, "getBlock" | "getBlockNumber" | "getChainId" | "getTransaction" | "getTransactionCount" | "getTransactionReceipt" | "request">;
13
15
  /** How a held write ended, when the hold saw it end. */
14
16
  export type WriteHoldSettled =
15
- /** 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
+ */
16
23
  {
17
24
  result: "success" | "failed";
18
25
  hash: Hex;
26
+ blockHash?: Hex;
27
+ safe?: true;
19
28
  acknowledged?: true;
20
29
  }
21
30
  /** A Safe proposal's expiry before it ran is proven. */
@@ -129,13 +138,19 @@ export type WriteHeldState = Exclude<WriteHoldStateOf, {
129
138
  reservation?: string;
130
139
  };
131
140
  /** A send was refused because the exact call is held; `state` says how. */
132
- export declare class WriteHeldError extends Error {
141
+ export declare class WriteHeldError extends ReviewLineError {
133
142
  readonly state: WriteHeldState;
134
143
  readonly name = "WriteHeldError";
135
144
  constructor(state: WriteHeldState);
136
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
+ }
137
152
  /** The account's nonce couldn't be read, so the wallet never opened. */
138
- export declare class WriteHoldNonceError extends Error {
153
+ export declare class WriteHoldNonceError extends ReviewLineError {
139
154
  readonly cause: unknown;
140
155
  readonly name = "WriteHoldNonceError";
141
156
  constructor(cause: unknown);
@@ -145,13 +160,13 @@ export declare class WriteHoldNonceError extends Error {
145
160
  * reserved, and maybe settled (`settled`), while it was open. Review again;
146
161
  * the next review sends normally.
147
162
  */
148
- export declare class WriteHoldStaleReviewError extends Error {
163
+ export declare class WriteHoldStaleReviewError extends ReviewLineError {
149
164
  readonly settled?: WriteHoldSettled | undefined;
150
165
  readonly name = "WriteHoldStaleReviewError";
151
166
  constructor(settled?: WriteHoldSettled | undefined);
152
167
  }
153
168
  /** The exact call is already being sent from another flow or tab. */
154
- export declare class WriteHoldBusyError extends Error {
169
+ export declare class WriteHoldBusyError extends ReviewLineError {
155
170
  readonly name = "WriteHoldBusyError";
156
171
  constructor();
157
172
  }
@@ -201,14 +216,7 @@ export declare function createWriteHold(options?: {
201
216
  };
202
217
  }): {
203
218
  open: (call: ReviewedWriteRecoveryInput, { legacy, }?: {
204
- legacy?: (string | {
205
- call: ReviewedWriteRecoveryInput["call"];
206
- } | {
207
- match: {
208
- to: Address;
209
- selector: Hex;
210
- };
211
- })[];
219
+ legacy?: WriteHoldLegacySource[];
212
220
  }) => {
213
221
  peek: () => WriteHoldState;
214
222
  state(client: WriteHoldClient, checks?: {
@@ -254,6 +262,8 @@ export declare function createWriteHold(options?: {
254
262
  * record is held and the user hasn't acknowledged it. Pure, from storage.
255
263
  */
256
264
  unacknowledgedSuccess(skip?: (hash: Hex) => boolean): UnacknowledgedSuccess | undefined;
265
+ /** Whether `reservation` was released (the user's exit, or nothing sent), never settled. */
266
+ released(reservation: string): boolean;
257
267
  /** How `reservation` settled, if it is this key's latest and settled. */
258
268
  settlementOf(reservation: string): WriteHoldSettled | undefined;
259
269
  /**
@@ -266,6 +276,14 @@ export declare function createWriteHold(options?: {
266
276
  result: "success" | "failed";
267
277
  hash: Hex;
268
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>;
269
287
  };
270
288
  list: ({ account, chainId }: {
271
289
  account: Address;
@@ -318,6 +336,8 @@ export declare function createWriteHold(options?: {
318
336
  * record is held and the user hasn't acknowledged it. Pure, from storage.
319
337
  */
320
338
  unacknowledgedSuccess(skip?: (hash: Hex) => boolean): UnacknowledgedSuccess | undefined;
339
+ /** Whether `reservation` was released (the user's exit, or nothing sent), never settled. */
340
+ released(reservation: string): boolean;
321
341
  /** How `reservation` settled, if it is this key's latest and settled. */
322
342
  settlementOf(reservation: string): WriteHoldSettled | undefined;
323
343
  /**
@@ -330,6 +350,14 @@ export declare function createWriteHold(options?: {
330
350
  result: "success" | "failed";
331
351
  hash: Hex;
332
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>;
333
361
  };
334
362
  }[];
335
363
  /** Whether holds outlive this tab right now. */
@@ -338,8 +366,105 @@ export declare function createWriteHold(options?: {
338
366
  reviewLine: () => "This browser can't remember pending transactions. Check your wallet before repeating one." | null;
339
367
  /** Stop every settle poll and the tab listener (tests, teardown). */
340
368
  dispose: () => void;
369
+ /** Safe's service as the hold reads it, every read bounded. */
370
+ safeService: SafeServiceOptions;
371
+ };
372
+ /**
373
+ * A key an earlier version held an intent's write under: an old namespace,
374
+ * `{ call }` for an exact call, or `{ match }` for every exact-call write to
375
+ * `to` with that selector (see the hold's `open`).
376
+ */
377
+ export type WriteHoldLegacySource = string | {
378
+ call: ReviewedWriteRecoveryInput["call"];
379
+ } | {
380
+ match: {
381
+ to: Address;
382
+ selector: Hex;
383
+ };
341
384
  };
342
385
  export type WriteHold = ReturnType<typeof createWriteHold>;
343
386
  export type WriteHoldHandle = ReturnType<WriteHold["open"]>;
387
+ /** The write hold one step is sent under: its intent's, or its exact call's. */
388
+ export declare function openStepHold(hold: WriteHold, account: Address, safe: boolean, call: Pick<ReviewedCall, "chainId" | "to" | "data" | "value" | "intent" | "legacy">): {
389
+ peek: () => WriteHoldState;
390
+ state(client: WriteHoldClient, checks?: {
391
+ effect?: (chainId: number) => Promise<boolean>;
392
+ }): Promise<WriteHoldState>;
393
+ send<T>(client: WriteHoldClient, run: (gate: WriteHoldGate) => Promise<T>): Promise<T>;
394
+ exit(snapshot: WriteHoldState, acknowledgement: {
395
+ checkedWallet: true;
396
+ }, client: WriteHoldClient): Promise<{
397
+ released: boolean;
398
+ state: WriteHoldState;
399
+ }>;
400
+ onReceipt: (receipt: TransactionReceipt, client: WriteHoldClient, proof?: {
401
+ calls: readonly ReviewedWriteRecoveryInput["call"][];
402
+ batch?: boolean;
403
+ } | undefined) => Promise<WriteHoldState>;
404
+ onUnproven: (client: WriteHoldClient, proposalHash?: `0x${string}` | undefined) => Promise<WriteHoldState>;
405
+ onExecuted: (client: WriteHoldClient, executionHash?: `0x${string}` | undefined) => Promise<WriteHoldState>;
406
+ attachHash: (client: WriteHoldClient, hash: `0x${string}`) => Promise<WriteHoldState>;
407
+ attachSafeNonce: (client: WriteHoldClient, args_1: {
408
+ safeTxHash: Hex;
409
+ nonce: number;
410
+ }) => Promise<WriteHoldState>;
411
+ adopt: (snapshot: WriteHoldState, evidence?: {
412
+ nonce?: number | bigint;
413
+ sentNonce?: number | bigint;
414
+ fromBlock?: bigint;
415
+ submittedAt?: number;
416
+ hash?: Hex;
417
+ safe?: {
418
+ safeTxHash: Hex;
419
+ };
420
+ } | undefined, client?: WriteHoldClient | undefined) => Promise<WriteHoldState | (WriteHoldState & {
421
+ declined?: "refused" | "unreadable";
422
+ })>;
423
+ /**
424
+ * Every state this controller reads or makes for the call, and other
425
+ * tabs' changes. The latest one, if any, is replayed at once.
426
+ */
427
+ subscribe(listener: (state: WriteHoldState) => void): () => void;
428
+ /**
429
+ * The send gate's evidence for this key: its saved success, while no
430
+ * record is held and the user hasn't acknowledged it. Pure, from storage.
431
+ */
432
+ unacknowledgedSuccess(skip?: (hash: Hex) => boolean): UnacknowledgedSuccess | undefined;
433
+ /** Whether `reservation` was released (the user's exit, or nothing sent), never settled. */
434
+ released(reservation: string): boolean;
435
+ /** How `reservation` settled, if it is this key's latest and settled. */
436
+ settlementOf(reservation: string): WriteHoldSettled | undefined;
437
+ /**
438
+ * The user acknowledged a success the hold settled while they were
439
+ * away (or a view saw it settle): its saved settlement is marked
440
+ * acknowledged, keeping its result for every reader, so it blocks no
441
+ * send. Under the call's lock; nothing is sent.
442
+ */
443
+ acknowledge(settled: {
444
+ result: "success" | "failed";
445
+ hash: Hex;
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>;
455
+ };
456
+ /**
457
+ * The one call a Safe app proposes a batch of `calls` as (`ReviewedAction`'s
458
+ * `batch`), as its hold holds it: their MultiSend, under the first call's
459
+ * intent, or else `safeBatchIntent` of the calls.
460
+ */
461
+ export declare function safeBatchCall(account: Address, calls: readonly Pick<ReviewedCall, "chainId" | "to" | "data" | "value" | "intent" | "legacy">[]): {
462
+ chainId: number;
463
+ to: `0x${string}`;
464
+ data: `0x${string}`;
465
+ value: bigint;
466
+ intent: string;
467
+ legacy: readonly WriteHoldLegacySource[] | undefined;
468
+ };
344
469
  export {};
345
470
  //# sourceMappingURL=writeHold.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"writeHold.d.ts","sourceRoot":"","sources":["../../../src/review/writeHold.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"writeHold.d.ts","sourceRoot":"","sources":["../../../src/review/writeHold.ts"],"names":[],"mappings":"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,EAQL,KAAK,qBAAqB,EAC1B,KAAK,kBAAkB,EACxB,MAAM,mBAAmB,CAAC;AAiB3B,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;;;;;GAKG;AACD;IACE,MAAM,EAAE,SAAS,GAAG,QAAQ,CAAC;IAC7B,IAAI,EAAE,GAAG,CAAC;IACV,SAAS,CAAC,EAAE,GAAG,CAAC;IAChB,IAAI,CAAC,EAAE,IAAI,CAAC;IACZ,YAAY,CAAC,EAAE,IAAI,CAAC;CACrB;AACH,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,+GAA+G;AAC/G,qBAAa,mCAAoC,SAAQ,eAAe;IAE1D,QAAQ,CAAC,OAAO,EAAE,qBAAqB;IADnD,QAAQ,CAAC,IAAI,yCAAyC;gBACjC,OAAO,EAAE,qBAAqB;CAGpD;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;iBA20CE,0BAA0B,gBAG7B;QACD,MAAM,CAAC,EAAE,qBAAqB,EAAE,CAAC;KAClC;;sBAyiBW,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;;;;;;;;;wBAlvBjB,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;QAO3B;;;;WAIG;gCAC2B;YAAE,IAAI,EAAE,GAAG,CAAA;SAAE,GAAG,OAAO,CAAC,OAAO,CAAC;;iCAssB9B;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;;;;;;;;;4BAlvBjB,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;YAO3B;;;;eAIG;oCAC2B;gBAAE,IAAI,EAAE,GAAG,CAAA;aAAE,GAAG,OAAO,CAAC,OAAO,CAAC;;;IA2tBhE,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;;;;;;;;;oBAlvBjB,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;IAO3B;;;;OAIG;4BAC2B;QAAE,IAAI,EAAE,GAAG,CAAA;KAAE,GAAG,OAAO,CAAC,OAAO,CAAC;EAuwBnE;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"}