@symmio/trading-core 3.0.0 → 3.1.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 (650) hide show
  1. package/dist/core/chains/types.d.ts +197 -0
  2. package/dist/core/chains/types.d.ts.map +1 -1
  3. package/dist/core/chains/types.js.map +1 -1
  4. package/dist/core/config/merge-chain-config.d.ts.map +1 -1
  5. package/dist/core/config/merge-chain-config.js +49 -19
  6. package/dist/core/config/merge-chain-config.js.map +1 -1
  7. package/dist/gasless/abortable-sleep.d.ts +17 -0
  8. package/dist/gasless/abortable-sleep.d.ts.map +1 -0
  9. package/dist/gasless/abortable-sleep.js +21 -0
  10. package/dist/gasless/abortable-sleep.js.map +1 -0
  11. package/dist/gasless/assert-gateway-coherence.d.ts +20 -0
  12. package/dist/gasless/assert-gateway-coherence.d.ts.map +1 -0
  13. package/dist/gasless/assert-gateway-coherence.js +26 -0
  14. package/dist/gasless/assert-gateway-coherence.js.map +1 -0
  15. package/dist/gasless/batch/calls.d.ts +121 -0
  16. package/dist/gasless/batch/calls.d.ts.map +1 -0
  17. package/dist/gasless/batch/calls.js +36 -0
  18. package/dist/gasless/batch/calls.js.map +1 -0
  19. package/dist/gasless/batch/index.d.ts +2 -0
  20. package/dist/gasless/batch/index.d.ts.map +1 -0
  21. package/dist/gasless/batch/resolve-gasless-batch.d.ts +118 -0
  22. package/dist/gasless/batch/resolve-gasless-batch.d.ts.map +1 -0
  23. package/dist/gasless/batch/resolve-gasless-batch.js +89 -0
  24. package/dist/gasless/batch/resolve-gasless-batch.js.map +1 -0
  25. package/dist/gasless/classify-gasless-failure.d.ts +99 -0
  26. package/dist/gasless/classify-gasless-failure.d.ts.map +1 -0
  27. package/dist/gasless/classify-gasless-failure.js +60 -0
  28. package/dist/gasless/classify-gasless-failure.js.map +1 -0
  29. package/dist/gasless/confirm-gasless-request/confirm-gasless-request.d.ts +121 -0
  30. package/dist/gasless/confirm-gasless-request/confirm-gasless-request.d.ts.map +1 -0
  31. package/dist/gasless/confirm-gasless-request/confirm-gasless-request.js +73 -0
  32. package/dist/gasless/confirm-gasless-request/confirm-gasless-request.js.map +1 -0
  33. package/dist/gasless/confirm-gasless-request/index.d.ts +2 -0
  34. package/dist/gasless/confirm-gasless-request/index.d.ts.map +1 -0
  35. package/dist/gasless/constants.d.ts +24 -0
  36. package/dist/gasless/constants.d.ts.map +1 -0
  37. package/dist/gasless/constants.js +6 -0
  38. package/dist/gasless/constants.js.map +1 -0
  39. package/dist/gasless/delegation-preflight.d.ts +39 -0
  40. package/dist/gasless/delegation-preflight.d.ts.map +1 -0
  41. package/dist/gasless/delegation-preflight.js +33 -0
  42. package/dist/gasless/delegation-preflight.js.map +1 -0
  43. package/dist/gasless/dispatch/maybe-relay-as-gasless.d.ts +73 -0
  44. package/dist/gasless/dispatch/maybe-relay-as-gasless.d.ts.map +1 -0
  45. package/dist/gasless/dispatch/maybe-relay-as-gasless.js +189 -0
  46. package/dist/gasless/dispatch/maybe-relay-as-gasless.js.map +1 -0
  47. package/dist/gasless/eip712.d.ts +79 -0
  48. package/dist/gasless/eip712.d.ts.map +1 -0
  49. package/dist/gasless/eip712.js +60 -0
  50. package/dist/gasless/eip712.js.map +1 -0
  51. package/dist/gasless/errors.d.ts +132 -0
  52. package/dist/gasless/errors.d.ts.map +1 -0
  53. package/dist/gasless/errors.js +110 -0
  54. package/dist/gasless/errors.js.map +1 -0
  55. package/dist/gasless/events.d.ts +37 -0
  56. package/dist/gasless/events.d.ts.map +1 -0
  57. package/dist/gasless/events.js +34 -0
  58. package/dist/gasless/events.js.map +1 -0
  59. package/dist/gasless/fallback.d.ts +58 -0
  60. package/dist/gasless/fallback.d.ts.map +1 -0
  61. package/dist/gasless/fallback.js +34 -0
  62. package/dist/gasless/fallback.js.map +1 -0
  63. package/dist/gasless/format-gasless-operation.d.ts +37 -0
  64. package/dist/gasless/format-gasless-operation.d.ts.map +1 -0
  65. package/dist/gasless/format-gasless-operation.js +33 -0
  66. package/dist/gasless/format-gasless-operation.js.map +1 -0
  67. package/dist/gasless/gasless-url.d.ts +82 -0
  68. package/dist/gasless/gasless-url.d.ts.map +1 -0
  69. package/dist/gasless/gasless-url.js +70 -0
  70. package/dist/gasless/gasless-url.js.map +1 -0
  71. package/dist/gasless/gasless-wallet-execute/calls.d.ts +73 -0
  72. package/dist/gasless/gasless-wallet-execute/calls.d.ts.map +1 -0
  73. package/dist/gasless/gasless-wallet-execute/calls.js +24 -0
  74. package/dist/gasless/gasless-wallet-execute/calls.js.map +1 -0
  75. package/dist/gasless/gasless-wallet-execute/gasless-wallet-execute.d.ts +148 -0
  76. package/dist/gasless/gasless-wallet-execute/gasless-wallet-execute.d.ts.map +1 -0
  77. package/dist/gasless/gasless-wallet-execute/gasless-wallet-execute.js +120 -0
  78. package/dist/gasless/gasless-wallet-execute/gasless-wallet-execute.js.map +1 -0
  79. package/dist/gasless/gasless-wallet-execute/index.d.ts +5 -0
  80. package/dist/gasless/gasless-wallet-execute/index.d.ts.map +1 -0
  81. package/dist/gasless/gasless-wallet-execute/query.d.ts +18 -0
  82. package/dist/gasless/gasless-wallet-execute/query.d.ts.map +1 -0
  83. package/dist/gasless/gasless-wallet-execute/query.js +12 -0
  84. package/dist/gasless/gasless-wallet-execute/query.js.map +1 -0
  85. package/dist/gasless/gasless-wallet-execute/selectors.d.ts +38 -0
  86. package/dist/gasless/gasless-wallet-execute/selectors.d.ts.map +1 -0
  87. package/dist/gasless/gasless-wallet-execute/selectors.js +15 -0
  88. package/dist/gasless/gasless-wallet-execute/selectors.js.map +1 -0
  89. package/dist/gasless/get-gasless-batch-fee-quote/get-gasless-batch-fee-quote.d.ts +72 -0
  90. package/dist/gasless/get-gasless-batch-fee-quote/get-gasless-batch-fee-quote.d.ts.map +1 -0
  91. package/dist/gasless/get-gasless-batch-fee-quote/get-gasless-batch-fee-quote.js +42 -0
  92. package/dist/gasless/get-gasless-batch-fee-quote/get-gasless-batch-fee-quote.js.map +1 -0
  93. package/dist/gasless/get-gasless-batch-fee-quote/index.d.ts +3 -0
  94. package/dist/gasless/get-gasless-batch-fee-quote/index.d.ts.map +1 -0
  95. package/dist/gasless/get-gasless-batch-fee-quote/query.d.ts +47 -0
  96. package/dist/gasless/get-gasless-batch-fee-quote/query.d.ts.map +1 -0
  97. package/dist/gasless/get-gasless-batch-fee-quote/query.js +50 -0
  98. package/dist/gasless/get-gasless-batch-fee-quote/query.js.map +1 -0
  99. package/dist/gasless/get-gasless-deposit-policy/get-gasless-deposit-policy.d.ts +80 -0
  100. package/dist/gasless/get-gasless-deposit-policy/get-gasless-deposit-policy.d.ts.map +1 -0
  101. package/dist/gasless/get-gasless-deposit-policy/get-gasless-deposit-policy.js +61 -0
  102. package/dist/gasless/get-gasless-deposit-policy/get-gasless-deposit-policy.js.map +1 -0
  103. package/dist/gasless/get-gasless-deposit-policy/index.d.ts +3 -0
  104. package/dist/gasless/get-gasless-deposit-policy/index.d.ts.map +1 -0
  105. package/dist/gasless/get-gasless-deposit-policy/query.d.ts +51 -0
  106. package/dist/gasless/get-gasless-deposit-policy/query.d.ts.map +1 -0
  107. package/dist/gasless/get-gasless-deposit-policy/query.js +25 -0
  108. package/dist/gasless/get-gasless-deposit-policy/query.js.map +1 -0
  109. package/dist/gasless/get-gasless-fee-quote/encode-relay-batch-call-data.d.ts +27 -0
  110. package/dist/gasless/get-gasless-fee-quote/encode-relay-batch-call-data.d.ts.map +1 -0
  111. package/dist/gasless/get-gasless-fee-quote/encode-relay-batch-call-data.js +22 -0
  112. package/dist/gasless/get-gasless-fee-quote/encode-relay-batch-call-data.js.map +1 -0
  113. package/dist/gasless/get-gasless-fee-quote/fee-quote-errors.d.ts +61 -0
  114. package/dist/gasless/get-gasless-fee-quote/fee-quote-errors.d.ts.map +1 -0
  115. package/dist/gasless/get-gasless-fee-quote/fee-quote-errors.js +59 -0
  116. package/dist/gasless/get-gasless-fee-quote/fee-quote-errors.js.map +1 -0
  117. package/dist/gasless/get-gasless-fee-quote/get-gasless-fee-quote.d.ts +79 -0
  118. package/dist/gasless/get-gasless-fee-quote/get-gasless-fee-quote.d.ts.map +1 -0
  119. package/dist/gasless/get-gasless-fee-quote/get-gasless-fee-quote.js +53 -0
  120. package/dist/gasless/get-gasless-fee-quote/get-gasless-fee-quote.js.map +1 -0
  121. package/dist/gasless/get-gasless-fee-quote/index.d.ts +4 -0
  122. package/dist/gasless/get-gasless-fee-quote/index.d.ts.map +1 -0
  123. package/dist/gasless/get-gasless-fee-quote/query.d.ts +41 -0
  124. package/dist/gasless/get-gasless-fee-quote/query.d.ts.map +1 -0
  125. package/dist/gasless/get-gasless-fee-quote/query.js +31 -0
  126. package/dist/gasless/get-gasless-fee-quote/query.js.map +1 -0
  127. package/dist/gasless/get-gasless-request/get-gasless-request.d.ts +51 -0
  128. package/dist/gasless/get-gasless-request/get-gasless-request.d.ts.map +1 -0
  129. package/dist/gasless/get-gasless-request/get-gasless-request.js +15 -0
  130. package/dist/gasless/get-gasless-request/get-gasless-request.js.map +1 -0
  131. package/dist/gasless/get-gasless-request/index.d.ts +4 -0
  132. package/dist/gasless/get-gasless-request/index.d.ts.map +1 -0
  133. package/dist/gasless/get-gasless-request/query.d.ts +64 -0
  134. package/dist/gasless/get-gasless-request/query.d.ts.map +1 -0
  135. package/dist/gasless/get-gasless-request/query.js +42 -0
  136. package/dist/gasless/get-gasless-request/query.js.map +1 -0
  137. package/dist/gasless/get-gasless-request/to-gasless-request.d.ts +26 -0
  138. package/dist/gasless/get-gasless-request/to-gasless-request.d.ts.map +1 -0
  139. package/dist/gasless/get-gasless-request/to-gasless-request.js +62 -0
  140. package/dist/gasless/get-gasless-request/to-gasless-request.js.map +1 -0
  141. package/dist/gasless/get-gasless-request-transactions/get-gasless-request-transactions.d.ts +40 -0
  142. package/dist/gasless/get-gasless-request-transactions/get-gasless-request-transactions.d.ts.map +1 -0
  143. package/dist/gasless/get-gasless-request-transactions/get-gasless-request-transactions.js +15 -0
  144. package/dist/gasless/get-gasless-request-transactions/get-gasless-request-transactions.js.map +1 -0
  145. package/dist/gasless/get-gasless-request-transactions/index.d.ts +4 -0
  146. package/dist/gasless/get-gasless-request-transactions/index.d.ts.map +1 -0
  147. package/dist/gasless/get-gasless-request-transactions/query.d.ts +75 -0
  148. package/dist/gasless/get-gasless-request-transactions/query.d.ts.map +1 -0
  149. package/dist/gasless/get-gasless-request-transactions/query.js +37 -0
  150. package/dist/gasless/get-gasless-request-transactions/query.js.map +1 -0
  151. package/dist/gasless/get-gasless-request-transactions/to-gasless-request-transaction.d.ts +21 -0
  152. package/dist/gasless/get-gasless-request-transactions/to-gasless-request-transaction.d.ts.map +1 -0
  153. package/dist/gasless/get-gasless-request-transactions/to-gasless-request-transaction.js +27 -0
  154. package/dist/gasless/get-gasless-request-transactions/to-gasless-request-transaction.js.map +1 -0
  155. package/dist/gasless/get-gasless-wallet-address/get-gasless-wallet-address.d.ts +48 -0
  156. package/dist/gasless/get-gasless-wallet-address/get-gasless-wallet-address.d.ts.map +1 -0
  157. package/dist/gasless/get-gasless-wallet-address/get-gasless-wallet-address.js +20 -0
  158. package/dist/gasless/get-gasless-wallet-address/get-gasless-wallet-address.js.map +1 -0
  159. package/dist/gasless/get-gasless-wallet-address/index.d.ts +3 -0
  160. package/dist/gasless/get-gasless-wallet-address/index.d.ts.map +1 -0
  161. package/dist/gasless/get-gasless-wallet-address/query.d.ts +46 -0
  162. package/dist/gasless/get-gasless-wallet-address/query.d.ts.map +1 -0
  163. package/dist/gasless/get-gasless-wallet-address/query.js +25 -0
  164. package/dist/gasless/get-gasless-wallet-address/query.js.map +1 -0
  165. package/dist/gasless/get-gasless-wallet-creation-fee/get-gasless-wallet-creation-fee.d.ts +57 -0
  166. package/dist/gasless/get-gasless-wallet-creation-fee/get-gasless-wallet-creation-fee.d.ts.map +1 -0
  167. package/dist/gasless/get-gasless-wallet-creation-fee/get-gasless-wallet-creation-fee.js +17 -0
  168. package/dist/gasless/get-gasless-wallet-creation-fee/get-gasless-wallet-creation-fee.js.map +1 -0
  169. package/dist/gasless/get-gasless-wallet-creation-fee/index.d.ts +3 -0
  170. package/dist/gasless/get-gasless-wallet-creation-fee/index.d.ts.map +1 -0
  171. package/dist/gasless/get-gasless-wallet-creation-fee/query.d.ts +51 -0
  172. package/dist/gasless/get-gasless-wallet-creation-fee/query.d.ts.map +1 -0
  173. package/dist/gasless/get-gasless-wallet-creation-fee/query.js +25 -0
  174. package/dist/gasless/get-gasless-wallet-creation-fee/query.js.map +1 -0
  175. package/dist/gasless/get-gasless-wallet-nonce/get-gasless-wallet-nonce.d.ts +51 -0
  176. package/dist/gasless/get-gasless-wallet-nonce/get-gasless-wallet-nonce.d.ts.map +1 -0
  177. package/dist/gasless/get-gasless-wallet-nonce/get-gasless-wallet-nonce.js +21 -0
  178. package/dist/gasless/get-gasless-wallet-nonce/get-gasless-wallet-nonce.js.map +1 -0
  179. package/dist/gasless/get-gasless-wallet-nonce/index.d.ts +3 -0
  180. package/dist/gasless/get-gasless-wallet-nonce/index.d.ts.map +1 -0
  181. package/dist/gasless/get-gasless-wallet-nonce/query.d.ts +47 -0
  182. package/dist/gasless/get-gasless-wallet-nonce/query.d.ts.map +1 -0
  183. package/dist/gasless/get-gasless-wallet-nonce/query.js +25 -0
  184. package/dist/gasless/get-gasless-wallet-nonce/query.js.map +1 -0
  185. package/dist/gasless/get-session-key-selectors.d.ts +83 -0
  186. package/dist/gasless/get-session-key-selectors.d.ts.map +1 -0
  187. package/dist/gasless/get-session-key-selectors.js +25 -0
  188. package/dist/gasless/get-session-key-selectors.js.map +1 -0
  189. package/dist/gasless/http.d.ts +229 -0
  190. package/dist/gasless/http.d.ts.map +1 -0
  191. package/dist/gasless/http.js +165 -0
  192. package/dist/gasless/http.js.map +1 -0
  193. package/dist/gasless/index.d.ts +34 -0
  194. package/dist/gasless/index.d.ts.map +1 -0
  195. package/dist/gasless/is-newer-gasless-request.d.ts +32 -0
  196. package/dist/gasless/is-newer-gasless-request.d.ts.map +1 -0
  197. package/dist/gasless/is-newer-gasless-request.js +21 -0
  198. package/dist/gasless/is-newer-gasless-request.js.map +1 -0
  199. package/dist/gasless/nonce-lock.d.ts +180 -0
  200. package/dist/gasless/nonce-lock.d.ts.map +1 -0
  201. package/dist/gasless/nonce-lock.js +102 -0
  202. package/dist/gasless/nonce-lock.js.map +1 -0
  203. package/dist/gasless/observe-gasless-request.d.ts +65 -0
  204. package/dist/gasless/observe-gasless-request.d.ts.map +1 -0
  205. package/dist/gasless/observe-gasless-request.js +56 -0
  206. package/dist/gasless/observe-gasless-request.js.map +1 -0
  207. package/dist/gasless/query-poll-delay.d.ts +39 -0
  208. package/dist/gasless/query-poll-delay.d.ts.map +1 -0
  209. package/dist/gasless/query-poll-delay.js +14 -0
  210. package/dist/gasless/query-poll-delay.js.map +1 -0
  211. package/dist/gasless/relay-gasless-batch/index.d.ts +3 -0
  212. package/dist/gasless/relay-gasless-batch/index.d.ts.map +1 -0
  213. package/dist/gasless/relay-gasless-batch/query.d.ts +18 -0
  214. package/dist/gasless/relay-gasless-batch/query.d.ts.map +1 -0
  215. package/dist/gasless/relay-gasless-batch/query.js +12 -0
  216. package/dist/gasless/relay-gasless-batch/query.js.map +1 -0
  217. package/dist/gasless/relay-gasless-batch/relay-gasless-batch.d.ts +106 -0
  218. package/dist/gasless/relay-gasless-batch/relay-gasless-batch.d.ts.map +1 -0
  219. package/dist/gasless/relay-gasless-batch/relay-gasless-batch.js +145 -0
  220. package/dist/gasless/relay-gasless-batch/relay-gasless-batch.js.map +1 -0
  221. package/dist/gasless/relay-gasless-batch/sign-gasless-batch.d.ts +36 -0
  222. package/dist/gasless/relay-gasless-batch/sign-gasless-batch.d.ts.map +1 -0
  223. package/dist/gasless/relay-gasless-batch/sign-gasless-batch.js +24 -0
  224. package/dist/gasless/relay-gasless-batch/sign-gasless-batch.js.map +1 -0
  225. package/dist/gasless/relay-grant-delegation/index.d.ts +3 -0
  226. package/dist/gasless/relay-grant-delegation/index.d.ts.map +1 -0
  227. package/dist/gasless/relay-grant-delegation/query.d.ts +18 -0
  228. package/dist/gasless/relay-grant-delegation/query.d.ts.map +1 -0
  229. package/dist/gasless/relay-grant-delegation/query.js +12 -0
  230. package/dist/gasless/relay-grant-delegation/query.js.map +1 -0
  231. package/dist/gasless/relay-grant-delegation/relay-grant-delegation.d.ts +69 -0
  232. package/dist/gasless/relay-grant-delegation/relay-grant-delegation.d.ts.map +1 -0
  233. package/dist/gasless/relay-grant-delegation/relay-grant-delegation.js +57 -0
  234. package/dist/gasless/relay-grant-delegation/relay-grant-delegation.js.map +1 -0
  235. package/dist/gasless/relay-instant-operations/index.d.ts +3 -0
  236. package/dist/gasless/relay-instant-operations/index.d.ts.map +1 -0
  237. package/dist/gasless/relay-instant-operations/query.d.ts +18 -0
  238. package/dist/gasless/relay-instant-operations/query.d.ts.map +1 -0
  239. package/dist/gasless/relay-instant-operations/query.js +12 -0
  240. package/dist/gasless/relay-instant-operations/query.js.map +1 -0
  241. package/dist/gasless/relay-instant-operations/relay-instant-operations.d.ts +127 -0
  242. package/dist/gasless/relay-instant-operations/relay-instant-operations.d.ts.map +1 -0
  243. package/dist/gasless/relay-instant-operations/relay-instant-operations.js +42 -0
  244. package/dist/gasless/relay-instant-operations/relay-instant-operations.js.map +1 -0
  245. package/dist/gasless/relayable-writes.d.ts +163 -0
  246. package/dist/gasless/relayable-writes.d.ts.map +1 -0
  247. package/dist/gasless/relayable-writes.js +113 -0
  248. package/dist/gasless/relayable-writes.js.map +1 -0
  249. package/dist/gasless/resolve-gasless.d.ts +52 -0
  250. package/dist/gasless/resolve-gasless.d.ts.map +1 -0
  251. package/dist/gasless/resolve-gasless.js +19 -0
  252. package/dist/gasless/resolve-gasless.js.map +1 -0
  253. package/dist/gasless/resolve-wallet-identities.d.ts +30 -0
  254. package/dist/gasless/resolve-wallet-identities.d.ts.map +1 -0
  255. package/dist/gasless/resolve-wallet-identities.js +21 -0
  256. package/dist/gasless/resolve-wallet-identities.js.map +1 -0
  257. package/dist/gasless/resubmit-gasless-request/index.d.ts +3 -0
  258. package/dist/gasless/resubmit-gasless-request/index.d.ts.map +1 -0
  259. package/dist/gasless/resubmit-gasless-request/query.d.ts +19 -0
  260. package/dist/gasless/resubmit-gasless-request/query.d.ts.map +1 -0
  261. package/dist/gasless/resubmit-gasless-request/query.js +12 -0
  262. package/dist/gasless/resubmit-gasless-request/query.js.map +1 -0
  263. package/dist/gasless/resubmit-gasless-request/resubmit-gasless-request.d.ts +50 -0
  264. package/dist/gasless/resubmit-gasless-request/resubmit-gasless-request.d.ts.map +1 -0
  265. package/dist/gasless/resubmit-gasless-request/resubmit-gasless-request.js +52 -0
  266. package/dist/gasless/resubmit-gasless-request/resubmit-gasless-request.js.map +1 -0
  267. package/dist/gasless/settle-gasless-deposit-existing-account/index.d.ts +3 -0
  268. package/dist/gasless/settle-gasless-deposit-existing-account/index.d.ts.map +1 -0
  269. package/dist/gasless/settle-gasless-deposit-existing-account/query.d.ts +18 -0
  270. package/dist/gasless/settle-gasless-deposit-existing-account/query.d.ts.map +1 -0
  271. package/dist/gasless/settle-gasless-deposit-existing-account/query.js +12 -0
  272. package/dist/gasless/settle-gasless-deposit-existing-account/query.js.map +1 -0
  273. package/dist/gasless/settle-gasless-deposit-existing-account/settle-gasless-deposit-existing-account.d.ts +66 -0
  274. package/dist/gasless/settle-gasless-deposit-existing-account/settle-gasless-deposit-existing-account.d.ts.map +1 -0
  275. package/dist/gasless/settle-gasless-deposit-existing-account/settle-gasless-deposit-existing-account.js +36 -0
  276. package/dist/gasless/settle-gasless-deposit-existing-account/settle-gasless-deposit-existing-account.js.map +1 -0
  277. package/dist/gasless/settle-gasless-deposit-new-account/index.d.ts +3 -0
  278. package/dist/gasless/settle-gasless-deposit-new-account/index.d.ts.map +1 -0
  279. package/dist/gasless/settle-gasless-deposit-new-account/query.d.ts +18 -0
  280. package/dist/gasless/settle-gasless-deposit-new-account/query.d.ts.map +1 -0
  281. package/dist/gasless/settle-gasless-deposit-new-account/query.js +12 -0
  282. package/dist/gasless/settle-gasless-deposit-new-account/query.js.map +1 -0
  283. package/dist/gasless/settle-gasless-deposit-new-account/settle-gasless-deposit-new-account.d.ts +106 -0
  284. package/dist/gasless/settle-gasless-deposit-new-account/settle-gasless-deposit-new-account.d.ts.map +1 -0
  285. package/dist/gasless/settle-gasless-deposit-new-account/settle-gasless-deposit-new-account.js +43 -0
  286. package/dist/gasless/settle-gasless-deposit-new-account/settle-gasless-deposit-new-account.js.map +1 -0
  287. package/dist/gasless/status-read-limiter.d.ts +44 -0
  288. package/dist/gasless/status-read-limiter.d.ts.map +1 -0
  289. package/dist/gasless/status-read-limiter.js +28 -0
  290. package/dist/gasless/status-read-limiter.js.map +1 -0
  291. package/dist/gasless/to-gasless-deposit-receipt.d.ts +61 -0
  292. package/dist/gasless/to-gasless-deposit-receipt.d.ts.map +1 -0
  293. package/dist/gasless/to-gasless-deposit-receipt.js +36 -0
  294. package/dist/gasless/to-gasless-deposit-receipt.js.map +1 -0
  295. package/dist/gasless/to-gasless-submit-receipt.d.ts +60 -0
  296. package/dist/gasless/to-gasless-submit-receipt.d.ts.map +1 -0
  297. package/dist/gasless/to-gasless-submit-receipt.js +26 -0
  298. package/dist/gasless/to-gasless-submit-receipt.js.map +1 -0
  299. package/dist/gasless/transient-read.d.ts +32 -0
  300. package/dist/gasless/transient-read.d.ts.map +1 -0
  301. package/dist/gasless/transient-read.js +28 -0
  302. package/dist/gasless/transient-read.js.map +1 -0
  303. package/dist/gasless/types/generated/gasless-deposits.d.ts +170 -0
  304. package/dist/gasless/types/generated/gasless-deposits.d.ts.map +1 -0
  305. package/dist/gasless/types/generated/gasless-operations.d.ts +260 -0
  306. package/dist/gasless/types/generated/gasless-operations.d.ts.map +1 -0
  307. package/dist/gasless/types.d.ts +493 -0
  308. package/dist/gasless/types.d.ts.map +1 -0
  309. package/dist/gasless/types.js +33 -0
  310. package/dist/gasless/types.js.map +1 -0
  311. package/dist/gasless/unconfirmed-submit.d.ts +132 -0
  312. package/dist/gasless/unconfirmed-submit.d.ts.map +1 -0
  313. package/dist/gasless/unconfirmed-submit.js +49 -0
  314. package/dist/gasless/unconfirmed-submit.js.map +1 -0
  315. package/dist/gasless/wait-for-gasless-request/index.d.ts +2 -0
  316. package/dist/gasless/wait-for-gasless-request/index.d.ts.map +1 -0
  317. package/dist/gasless/wait-for-gasless-request/wait-for-gasless-request.d.ts +114 -0
  318. package/dist/gasless/wait-for-gasless-request/wait-for-gasless-request.d.ts.map +1 -0
  319. package/dist/gasless/wait-for-gasless-request/wait-for-gasless-request.js +77 -0
  320. package/dist/gasless/wait-for-gasless-request/wait-for-gasless-request.js.map +1 -0
  321. package/dist/gasless/wallet-id.d.ts +42 -0
  322. package/dist/gasless/wallet-id.d.ts.map +1 -0
  323. package/dist/gasless/wallet-id.js +25 -0
  324. package/dist/gasless/wallet-id.js.map +1 -0
  325. package/dist/gasless/wire-parse.d.ts +33 -0
  326. package/dist/gasless/wire-parse.d.ts.map +1 -0
  327. package/dist/gasless/wire-parse.js +14 -0
  328. package/dist/gasless/wire-parse.js.map +1 -0
  329. package/dist/gasless/wire-types.d.ts +73 -0
  330. package/dist/gasless/wire-types.d.ts.map +1 -0
  331. package/dist/gasless/write-request-registry.d.ts +56 -0
  332. package/dist/gasless/write-request-registry.d.ts.map +1 -0
  333. package/dist/gasless/write-request-registry.js +22 -0
  334. package/dist/gasless/write-request-registry.js.map +1 -0
  335. package/dist/index.d.ts +82 -17
  336. package/dist/index.d.ts.map +1 -1
  337. package/dist/index.js +568 -497
  338. package/dist/pools/listing-config/to-listing-config.js +2 -2
  339. package/dist/pools/listing-config/to-listing-config.js.map +1 -1
  340. package/dist/pools/market-detail/to-listing-market-detail.d.ts.map +1 -1
  341. package/dist/pools/market-detail/to-listing-market-detail.js +46 -40
  342. package/dist/pools/market-detail/to-listing-market-detail.js.map +1 -1
  343. package/dist/pools/markets/to-listing-market.d.ts.map +1 -1
  344. package/dist/pools/markets/to-listing-market.js +2 -1
  345. package/dist/pools/markets/to-listing-market.js.map +1 -1
  346. package/dist/pools/types/generated/listing-backend.d.ts +163 -16
  347. package/dist/pools/types/generated/listing-backend.d.ts.map +1 -1
  348. package/dist/pools/types/generated/listing-backend.js.map +1 -1
  349. package/dist/pools/types.d.ts +52 -2
  350. package/dist/pools/types.d.ts.map +1 -1
  351. package/dist/pools/types.js +6 -4
  352. package/dist/pools/types.js.map +1 -1
  353. package/dist/quotes/get-quote-funding/get-quote-funding.d.ts +3 -2
  354. package/dist/quotes/get-quote-funding/get-quote-funding.d.ts.map +1 -1
  355. package/dist/quotes/get-quote-funding/get-quote-funding.js.map +1 -1
  356. package/dist/quotes/get-quote-funding/types.d.ts +4 -2
  357. package/dist/quotes/get-quote-funding/types.d.ts.map +1 -1
  358. package/dist/quotes/get-quote-pending-funding/get-quote-pending-funding.d.ts +68 -0
  359. package/dist/quotes/get-quote-pending-funding/get-quote-pending-funding.d.ts.map +1 -0
  360. package/dist/quotes/get-quote-pending-funding/get-quote-pending-funding.js +34 -0
  361. package/dist/quotes/get-quote-pending-funding/get-quote-pending-funding.js.map +1 -0
  362. package/dist/quotes/get-quote-pending-funding/index.d.ts +4 -0
  363. package/dist/quotes/get-quote-pending-funding/index.d.ts.map +1 -0
  364. package/dist/quotes/get-quote-pending-funding/query.d.ts +58 -0
  365. package/dist/quotes/get-quote-pending-funding/query.d.ts.map +1 -0
  366. package/dist/quotes/get-quote-pending-funding/query.js +27 -0
  367. package/dist/quotes/get-quote-pending-funding/query.js.map +1 -0
  368. package/dist/quotes/get-quote-pending-funding/types.d.ts +19 -0
  369. package/dist/quotes/get-quote-pending-funding/types.d.ts.map +1 -0
  370. package/dist/quotes/get-quotes-events-by-type/get-quotes-events-by-type.d.ts +2 -1
  371. package/dist/quotes/get-quotes-events-by-type/get-quotes-events-by-type.d.ts.map +1 -1
  372. package/dist/quotes/get-quotes-events-by-type/get-quotes-events-by-type.js.map +1 -1
  373. package/dist/quotes/grouping/aggregate-group-funding.d.ts +9 -8
  374. package/dist/quotes/grouping/aggregate-group-funding.d.ts.map +1 -1
  375. package/dist/quotes/grouping/aggregate-group-funding.js.map +1 -1
  376. package/dist/quotes/grouping/partition-quotes.d.ts +30 -0
  377. package/dist/quotes/grouping/partition-quotes.d.ts.map +1 -1
  378. package/dist/quotes/grouping/partition-quotes.js +9 -6
  379. package/dist/quotes/grouping/partition-quotes.js.map +1 -1
  380. package/dist/quotes/index.d.ts +1 -0
  381. package/dist/quotes/index.d.ts.map +1 -1
  382. package/dist/quotes/unified-quote.d.ts +6 -6
  383. package/dist/quotes/unified-quote.js.map +1 -1
  384. package/dist/shared/errors/redact-url.d.ts +15 -0
  385. package/dist/shared/errors/redact-url.d.ts.map +1 -0
  386. package/dist/shared/errors/redact-url.js +9 -0
  387. package/dist/shared/errors/redact-url.js.map +1 -0
  388. package/dist/shared/errors/retry-after.d.ts +17 -0
  389. package/dist/shared/errors/retry-after.d.ts.map +1 -0
  390. package/dist/shared/errors/retry-after.js +16 -0
  391. package/dist/shared/errors/retry-after.js.map +1 -0
  392. package/dist/shared/errors/sanitized-api-error.d.ts +32 -0
  393. package/dist/shared/errors/sanitized-api-error.d.ts.map +1 -0
  394. package/dist/shared/errors/sanitized-api-error.js +41 -0
  395. package/dist/shared/errors/sanitized-api-error.js.map +1 -0
  396. package/dist/shared/errors/symm-error.d.ts +39 -4
  397. package/dist/shared/errors/symm-error.d.ts.map +1 -1
  398. package/dist/shared/errors/symm-error.js +29 -15
  399. package/dist/shared/errors/symm-error.js.map +1 -1
  400. package/dist/shared/types/properties.d.ts +53 -5
  401. package/dist/shared/types/properties.d.ts.map +1 -1
  402. package/dist/shared/utils/core-units.d.ts +82 -0
  403. package/dist/shared/utils/core-units.d.ts.map +1 -0
  404. package/dist/shared/utils/core-units.js +21 -0
  405. package/dist/shared/utils/core-units.js.map +1 -0
  406. package/dist/shared/utils/http-header.d.ts +16 -0
  407. package/dist/shared/utils/http-header.d.ts.map +1 -0
  408. package/dist/shared/utils/http-header.js +14 -0
  409. package/dist/shared/utils/http-header.js.map +1 -0
  410. package/dist/shared/utils/query.js +2 -1
  411. package/dist/shared/utils/query.js.map +1 -1
  412. package/dist/solvers/force-close/force-close-auto.d.ts +6 -2
  413. package/dist/solvers/force-close/force-close-auto.d.ts.map +1 -1
  414. package/dist/solvers/force-close/force-close-auto.js +2 -1
  415. package/dist/solvers/force-close/force-close-auto.js.map +1 -1
  416. package/dist/solvers/force-close/force-close-position.d.ts +9 -3
  417. package/dist/solvers/force-close/force-close-position.d.ts.map +1 -1
  418. package/dist/solvers/force-close/force-close-position.js +2 -1
  419. package/dist/solvers/force-close/force-close-position.js.map +1 -1
  420. package/dist/solvers/instant-open/instant-open/adapters/enigma-instant-open.js +12 -12
  421. package/dist/solvers/instant-open/instant-open/adapters/rasa-instant-open.js +7 -7
  422. package/dist/symmio-contracts/abi/index.d.ts +2 -0
  423. package/dist/symmio-contracts/abi/index.d.ts.map +1 -1
  424. package/dist/symmio-contracts/abi/v0.8.6/gasless-layer.d.ts +2323 -0
  425. package/dist/symmio-contracts/abi/v0.8.6/gasless-layer.d.ts.map +1 -0
  426. package/dist/symmio-contracts/abi/v0.8.6/gasless-layer.js +2706 -0
  427. package/dist/symmio-contracts/abi/v0.8.6/gasless-layer.js.map +1 -0
  428. package/dist/symmio-contracts/abi/v0.8.6/gasless-wallet.d.ts +137 -0
  429. package/dist/symmio-contracts/abi/v0.8.6/gasless-wallet.d.ts.map +1 -0
  430. package/dist/symmio-contracts/abi/v0.8.6/gasless-wallet.js +145 -0
  431. package/dist/symmio-contracts/abi/v0.8.6/gasless-wallet.js.map +1 -0
  432. package/dist/symmio-contracts/abi/v0.8.6/index.d.ts +2 -0
  433. package/dist/symmio-contracts/abi/v0.8.6/index.d.ts.map +1 -1
  434. package/dist/symmio-contracts/abi/v0.8.6/instant-layer.d.ts +1879 -37
  435. package/dist/symmio-contracts/abi/v0.8.6/instant-layer.d.ts.map +1 -1
  436. package/dist/symmio-contracts/abi/v0.8.6/instant-layer.js +2180 -50
  437. package/dist/symmio-contracts/abi/v0.8.6/instant-layer.js.map +1 -1
  438. package/dist/symmio-contracts/account-layer/actions/add-margin.d.ts +2 -2
  439. package/dist/symmio-contracts/account-layer/actions/add-margin.d.ts.map +1 -1
  440. package/dist/symmio-contracts/account-layer/actions/add-margin.js +34 -17
  441. package/dist/symmio-contracts/account-layer/actions/add-margin.js.map +1 -1
  442. package/dist/symmio-contracts/account-layer/actions/create-sub-accounts.d.ts +11 -2
  443. package/dist/symmio-contracts/account-layer/actions/create-sub-accounts.d.ts.map +1 -1
  444. package/dist/symmio-contracts/account-layer/actions/create-sub-accounts.js +33 -17
  445. package/dist/symmio-contracts/account-layer/actions/create-sub-accounts.js.map +1 -1
  446. package/dist/symmio-contracts/account-layer/actions/delete-sub-account.d.ts +9 -2
  447. package/dist/symmio-contracts/account-layer/actions/delete-sub-account.d.ts.map +1 -1
  448. package/dist/symmio-contracts/account-layer/actions/delete-sub-account.js +33 -16
  449. package/dist/symmio-contracts/account-layer/actions/delete-sub-account.js.map +1 -1
  450. package/dist/symmio-contracts/account-layer/actions/deposit-and-allocate-for-account.d.ts +8 -2
  451. package/dist/symmio-contracts/account-layer/actions/deposit-and-allocate-for-account.d.ts.map +1 -1
  452. package/dist/symmio-contracts/account-layer/actions/deposit-and-allocate-for-account.js +34 -17
  453. package/dist/symmio-contracts/account-layer/actions/deposit-and-allocate-for-account.js.map +1 -1
  454. package/dist/symmio-contracts/account-layer/actions/deposit-for-account.d.ts +8 -2
  455. package/dist/symmio-contracts/account-layer/actions/deposit-for-account.d.ts.map +1 -1
  456. package/dist/symmio-contracts/account-layer/actions/deposit-for-account.js +34 -17
  457. package/dist/symmio-contracts/account-layer/actions/deposit-for-account.js.map +1 -1
  458. package/dist/symmio-contracts/account-layer/actions/edit-account-name.d.ts +7 -2
  459. package/dist/symmio-contracts/account-layer/actions/edit-account-name.d.ts.map +1 -1
  460. package/dist/symmio-contracts/account-layer/actions/edit-account-name.js +34 -17
  461. package/dist/symmio-contracts/account-layer/actions/edit-account-name.js.map +1 -1
  462. package/dist/symmio-contracts/account-layer/actions/get-account-balance-info.d.ts +1 -1
  463. package/dist/symmio-contracts/account-layer/actions/get-account-balance-info.js.map +1 -1
  464. package/dist/symmio-contracts/account-layer/actions/get-account-balance-of.d.ts +9 -3
  465. package/dist/symmio-contracts/account-layer/actions/get-account-balance-of.d.ts.map +1 -1
  466. package/dist/symmio-contracts/account-layer/actions/get-account-balance-of.js.map +1 -1
  467. package/dist/symmio-contracts/account-layer/actions/remove-margin.d.ts +2 -2
  468. package/dist/symmio-contracts/account-layer/actions/remove-margin.d.ts.map +1 -1
  469. package/dist/symmio-contracts/account-layer/actions/remove-margin.js +41 -20
  470. package/dist/symmio-contracts/account-layer/actions/remove-margin.js.map +1 -1
  471. package/dist/symmio-contracts/account-layer/types.d.ts +3 -1
  472. package/dist/symmio-contracts/account-layer/types.d.ts.map +1 -1
  473. package/dist/symmio-contracts/account-layer/types.js.map +1 -1
  474. package/dist/symmio-contracts/instant-layer/actions/finalize-revoke-delegation.d.ts +60 -0
  475. package/dist/symmio-contracts/instant-layer/actions/finalize-revoke-delegation.d.ts.map +1 -0
  476. package/dist/symmio-contracts/instant-layer/actions/finalize-revoke-delegation.js +35 -0
  477. package/dist/symmio-contracts/instant-layer/actions/finalize-revoke-delegation.js.map +1 -0
  478. package/dist/symmio-contracts/instant-layer/actions/get-active-delegations.d.ts +91 -0
  479. package/dist/symmio-contracts/instant-layer/actions/get-active-delegations.d.ts.map +1 -0
  480. package/dist/symmio-contracts/instant-layer/actions/get-active-delegations.js +19 -0
  481. package/dist/symmio-contracts/instant-layer/actions/get-active-delegations.js.map +1 -0
  482. package/dist/symmio-contracts/instant-layer/actions/get-instant-layer-nonce.d.ts +36 -0
  483. package/dist/symmio-contracts/instant-layer/actions/get-instant-layer-nonce.d.ts.map +1 -0
  484. package/dist/symmio-contracts/instant-layer/actions/get-instant-layer-nonce.js +15 -0
  485. package/dist/symmio-contracts/instant-layer/actions/get-instant-layer-nonce.js.map +1 -0
  486. package/dist/symmio-contracts/instant-layer/actions/get-pending-revocation-etas.d.ts +79 -0
  487. package/dist/symmio-contracts/instant-layer/actions/get-pending-revocation-etas.d.ts.map +1 -0
  488. package/dist/symmio-contracts/instant-layer/actions/get-pending-revocation-etas.js +32 -0
  489. package/dist/symmio-contracts/instant-layer/actions/get-pending-revocation-etas.js.map +1 -0
  490. package/dist/symmio-contracts/instant-layer/actions/get-revocation-cooldown.d.ts +43 -0
  491. package/dist/symmio-contracts/instant-layer/actions/get-revocation-cooldown.d.ts.map +1 -0
  492. package/dist/symmio-contracts/instant-layer/actions/get-revocation-cooldown.js +14 -0
  493. package/dist/symmio-contracts/instant-layer/actions/get-revocation-cooldown.js.map +1 -0
  494. package/dist/symmio-contracts/instant-layer/actions/grant-delegation.d.ts +24 -3
  495. package/dist/symmio-contracts/instant-layer/actions/grant-delegation.d.ts.map +1 -1
  496. package/dist/symmio-contracts/instant-layer/actions/grant-delegation.js +48 -22
  497. package/dist/symmio-contracts/instant-layer/actions/grant-delegation.js.map +1 -1
  498. package/dist/symmio-contracts/instant-layer/actions/initiate-revoke-delegation.d.ts +62 -0
  499. package/dist/symmio-contracts/instant-layer/actions/initiate-revoke-delegation.d.ts.map +1 -0
  500. package/dist/symmio-contracts/instant-layer/actions/initiate-revoke-delegation.js +35 -0
  501. package/dist/symmio-contracts/instant-layer/actions/initiate-revoke-delegation.js.map +1 -0
  502. package/dist/symmio-contracts/instant-layer/index.d.ts +12 -0
  503. package/dist/symmio-contracts/instant-layer/index.d.ts.map +1 -1
  504. package/dist/symmio-contracts/instant-layer/query/finalize-revoke-delegation.d.ts +22 -0
  505. package/dist/symmio-contracts/instant-layer/query/finalize-revoke-delegation.d.ts.map +1 -0
  506. package/dist/symmio-contracts/instant-layer/query/finalize-revoke-delegation.js +12 -0
  507. package/dist/symmio-contracts/instant-layer/query/finalize-revoke-delegation.js.map +1 -0
  508. package/dist/symmio-contracts/instant-layer/query/get-active-delegations.d.ts +36 -0
  509. package/dist/symmio-contracts/instant-layer/query/get-active-delegations.d.ts.map +1 -0
  510. package/dist/symmio-contracts/instant-layer/query/get-active-delegations.js +29 -0
  511. package/dist/symmio-contracts/instant-layer/query/get-active-delegations.js.map +1 -0
  512. package/dist/symmio-contracts/instant-layer/query/get-instant-layer-nonce.d.ts +39 -0
  513. package/dist/symmio-contracts/instant-layer/query/get-instant-layer-nonce.d.ts.map +1 -0
  514. package/dist/symmio-contracts/instant-layer/query/get-instant-layer-nonce.js +27 -0
  515. package/dist/symmio-contracts/instant-layer/query/get-instant-layer-nonce.js.map +1 -0
  516. package/dist/symmio-contracts/instant-layer/query/get-is-delegation-active.js +7 -7
  517. package/dist/symmio-contracts/instant-layer/query/get-pending-revocation-etas.d.ts +42 -0
  518. package/dist/symmio-contracts/instant-layer/query/get-pending-revocation-etas.d.ts.map +1 -0
  519. package/dist/symmio-contracts/instant-layer/query/get-pending-revocation-etas.js +30 -0
  520. package/dist/symmio-contracts/instant-layer/query/get-pending-revocation-etas.js.map +1 -0
  521. package/dist/symmio-contracts/instant-layer/query/get-revocation-cooldown.d.ts +36 -0
  522. package/dist/symmio-contracts/instant-layer/query/get-revocation-cooldown.d.ts.map +1 -0
  523. package/dist/symmio-contracts/instant-layer/query/get-revocation-cooldown.js +21 -0
  524. package/dist/symmio-contracts/instant-layer/query/get-revocation-cooldown.js.map +1 -0
  525. package/dist/symmio-contracts/instant-layer/query/initiate-revoke-delegation.d.ts +22 -0
  526. package/dist/symmio-contracts/instant-layer/query/initiate-revoke-delegation.d.ts.map +1 -0
  527. package/dist/symmio-contracts/instant-layer/query/initiate-revoke-delegation.js +12 -0
  528. package/dist/symmio-contracts/instant-layer/query/initiate-revoke-delegation.js.map +1 -0
  529. package/dist/symmio-contracts/symmio/actions/allocate.d.ts +2 -2
  530. package/dist/symmio-contracts/symmio/actions/allocate.d.ts.map +1 -1
  531. package/dist/symmio-contracts/symmio/actions/allocate.js +2 -1
  532. package/dist/symmio-contracts/symmio/actions/allocate.js.map +1 -1
  533. package/dist/symmio-contracts/symmio/actions/approve-operational-fee.d.ts +87 -0
  534. package/dist/symmio-contracts/symmio/actions/approve-operational-fee.d.ts.map +1 -0
  535. package/dist/symmio-contracts/symmio/actions/approve-operational-fee.js +38 -0
  536. package/dist/symmio-contracts/symmio/actions/approve-operational-fee.js.map +1 -0
  537. package/dist/symmio-contracts/symmio/actions/deallocate-and-initiate-withdraw.d.ts +2 -2
  538. package/dist/symmio-contracts/symmio/actions/deallocate-and-initiate-withdraw.d.ts.map +1 -1
  539. package/dist/symmio-contracts/symmio/actions/deallocate-and-initiate-withdraw.js +2 -1
  540. package/dist/symmio-contracts/symmio/actions/deallocate-and-initiate-withdraw.js.map +1 -1
  541. package/dist/symmio-contracts/symmio/actions/deallocate.d.ts +2 -2
  542. package/dist/symmio-contracts/symmio/actions/deallocate.d.ts.map +1 -1
  543. package/dist/symmio-contracts/symmio/actions/deallocate.js +2 -1
  544. package/dist/symmio-contracts/symmio/actions/deallocate.js.map +1 -1
  545. package/dist/symmio-contracts/symmio/actions/finalize-withdraw-request.d.ts +15 -3
  546. package/dist/symmio-contracts/symmio/actions/finalize-withdraw-request.d.ts.map +1 -1
  547. package/dist/symmio-contracts/symmio/actions/finalize-withdraw-request.js +34 -17
  548. package/dist/symmio-contracts/symmio/actions/finalize-withdraw-request.js.map +1 -1
  549. package/dist/symmio-contracts/symmio/actions/force-cancel-close-request.d.ts +2 -2
  550. package/dist/symmio-contracts/symmio/actions/force-cancel-close-request.d.ts.map +1 -1
  551. package/dist/symmio-contracts/symmio/actions/force-cancel-close-request.js +2 -1
  552. package/dist/symmio-contracts/symmio/actions/force-cancel-close-request.js.map +1 -1
  553. package/dist/symmio-contracts/symmio/actions/force-cancel-quote.d.ts +2 -2
  554. package/dist/symmio-contracts/symmio/actions/force-cancel-quote.d.ts.map +1 -1
  555. package/dist/symmio-contracts/symmio/actions/force-cancel-quote.js +2 -1
  556. package/dist/symmio-contracts/symmio/actions/force-cancel-quote.js.map +1 -1
  557. package/dist/symmio-contracts/symmio/actions/get-operational-fee-allowance.d.ts +85 -0
  558. package/dist/symmio-contracts/symmio/actions/get-operational-fee-allowance.d.ts.map +1 -0
  559. package/dist/symmio-contracts/symmio/actions/get-operational-fee-allowance.js +29 -0
  560. package/dist/symmio-contracts/symmio/actions/get-operational-fee-allowance.js.map +1 -0
  561. package/dist/symmio-contracts/symmio/actions/initiate-withdraw.d.ts +2 -2
  562. package/dist/symmio-contracts/symmio/actions/initiate-withdraw.d.ts.map +1 -1
  563. package/dist/symmio-contracts/symmio/actions/initiate-withdraw.js +2 -1
  564. package/dist/symmio-contracts/symmio/actions/initiate-withdraw.js.map +1 -1
  565. package/dist/symmio-contracts/symmio/actions/request-cancel-withdraw.d.ts +2 -2
  566. package/dist/symmio-contracts/symmio/actions/request-cancel-withdraw.d.ts.map +1 -1
  567. package/dist/symmio-contracts/symmio/actions/request-cancel-withdraw.js +2 -1
  568. package/dist/symmio-contracts/symmio/actions/request-cancel-withdraw.js.map +1 -1
  569. package/dist/symmio-contracts/symmio/actions/request-to-cancel-close-request.d.ts +2 -2
  570. package/dist/symmio-contracts/symmio/actions/request-to-cancel-close-request.d.ts.map +1 -1
  571. package/dist/symmio-contracts/symmio/actions/request-to-cancel-close-request.js +2 -1
  572. package/dist/symmio-contracts/symmio/actions/request-to-cancel-close-request.js.map +1 -1
  573. package/dist/symmio-contracts/symmio/actions/request-to-cancel-quote.d.ts +2 -2
  574. package/dist/symmio-contracts/symmio/actions/request-to-cancel-quote.d.ts.map +1 -1
  575. package/dist/symmio-contracts/symmio/actions/request-to-cancel-quote.js +2 -1
  576. package/dist/symmio-contracts/symmio/actions/request-to-cancel-quote.js.map +1 -1
  577. package/dist/symmio-contracts/symmio/actions/withdraw-auto.d.ts +9 -7
  578. package/dist/symmio-contracts/symmio/actions/withdraw-auto.d.ts.map +1 -1
  579. package/dist/symmio-contracts/symmio/actions/withdraw-auto.js +24 -22
  580. package/dist/symmio-contracts/symmio/actions/withdraw-auto.js.map +1 -1
  581. package/dist/symmio-contracts/symmio/actions/withdraw.d.ts +2 -2
  582. package/dist/symmio-contracts/symmio/actions/withdraw.d.ts.map +1 -1
  583. package/dist/symmio-contracts/symmio/actions/withdraw.js +4 -2
  584. package/dist/symmio-contracts/symmio/actions/withdraw.js.map +1 -1
  585. package/dist/symmio-contracts/symmio/get-funding-fees-of-party-b/get-funding-fees-of-party-b.d.ts +43 -0
  586. package/dist/symmio-contracts/symmio/get-funding-fees-of-party-b/get-funding-fees-of-party-b.d.ts.map +1 -0
  587. package/dist/symmio-contracts/symmio/get-funding-fees-of-party-b/get-funding-fees-of-party-b.js +15 -0
  588. package/dist/symmio-contracts/symmio/get-funding-fees-of-party-b/get-funding-fees-of-party-b.js.map +1 -0
  589. package/dist/symmio-contracts/symmio/get-funding-fees-of-party-b/index.d.ts +4 -0
  590. package/dist/symmio-contracts/symmio/get-funding-fees-of-party-b/index.d.ts.map +1 -0
  591. package/dist/symmio-contracts/symmio/get-funding-fees-of-party-b/query.d.ts +43 -0
  592. package/dist/symmio-contracts/symmio/get-funding-fees-of-party-b/query.d.ts.map +1 -0
  593. package/dist/symmio-contracts/symmio/get-funding-fees-of-party-b/query.js +25 -0
  594. package/dist/symmio-contracts/symmio/get-funding-fees-of-party-b/query.js.map +1 -0
  595. package/dist/symmio-contracts/symmio/get-funding-fees-of-party-b/types.d.ts +85 -0
  596. package/dist/symmio-contracts/symmio/get-funding-fees-of-party-b/types.d.ts.map +1 -0
  597. package/dist/symmio-contracts/symmio/index.d.ts +5 -0
  598. package/dist/symmio-contracts/symmio/index.d.ts.map +1 -1
  599. package/dist/symmio-contracts/symmio/internal/call-as-sub-account.d.ts +2 -1
  600. package/dist/symmio-contracts/symmio/internal/call-as-sub-account.d.ts.map +1 -1
  601. package/dist/symmio-contracts/symmio/internal/call-as-sub-account.js +46 -17
  602. package/dist/symmio-contracts/symmio/internal/call-as-sub-account.js.map +1 -1
  603. package/dist/symmio-contracts/symmio/query/approve-operational-fee.d.ts +18 -0
  604. package/dist/symmio-contracts/symmio/query/approve-operational-fee.d.ts.map +1 -0
  605. package/dist/symmio-contracts/symmio/query/approve-operational-fee.js +12 -0
  606. package/dist/symmio-contracts/symmio/query/approve-operational-fee.js.map +1 -0
  607. package/dist/symmio-contracts/symmio/query/get-operational-fee-allowance.d.ts +35 -0
  608. package/dist/symmio-contracts/symmio/query/get-operational-fee-allowance.d.ts.map +1 -0
  609. package/dist/symmio-contracts/symmio/query/get-operational-fee-allowance.js +28 -0
  610. package/dist/symmio-contracts/symmio/query/get-operational-fee-allowance.js.map +1 -0
  611. package/dist/symmio-contracts/symmio/types.d.ts +6 -6
  612. package/dist/symmio-contracts/symmio/types.js.map +1 -1
  613. package/dist/symmio-subgraph/executeSubgraphRequest.d.ts +2 -1
  614. package/dist/symmio-subgraph/executeSubgraphRequest.d.ts.map +1 -1
  615. package/dist/symmio-subgraph/executeSubgraphRequest.js +24 -21
  616. package/dist/symmio-subgraph/executeSubgraphRequest.js.map +1 -1
  617. package/dist/websocket/gasless/close-code-policy.d.ts +51 -0
  618. package/dist/websocket/gasless/close-code-policy.d.ts.map +1 -0
  619. package/dist/websocket/gasless/close-code-policy.js +75 -0
  620. package/dist/websocket/gasless/close-code-policy.js.map +1 -0
  621. package/dist/websocket/gasless/gasless-stream-hub.d.ts +61 -0
  622. package/dist/websocket/gasless/gasless-stream-hub.d.ts.map +1 -0
  623. package/dist/websocket/gasless/gasless-stream-hub.js +311 -0
  624. package/dist/websocket/gasless/gasless-stream-hub.js.map +1 -0
  625. package/dist/websocket/gasless/index.d.ts +7 -0
  626. package/dist/websocket/gasless/index.d.ts.map +1 -0
  627. package/dist/websocket/gasless/parse-gasless-stream-message.d.ts +82 -0
  628. package/dist/websocket/gasless/parse-gasless-stream-message.d.ts.map +1 -0
  629. package/dist/websocket/gasless/parse-gasless-stream-message.js +136 -0
  630. package/dist/websocket/gasless/parse-gasless-stream-message.js.map +1 -0
  631. package/dist/websocket/gasless/resolve-gasless-stream-url.d.ts +58 -0
  632. package/dist/websocket/gasless/resolve-gasless-stream-url.d.ts.map +1 -0
  633. package/dist/websocket/gasless/resolve-gasless-stream-url.js +59 -0
  634. package/dist/websocket/gasless/resolve-gasless-stream-url.js.map +1 -0
  635. package/dist/websocket/gasless/types.d.ts +48 -0
  636. package/dist/websocket/gasless/types.d.ts.map +1 -0
  637. package/dist/websocket/gasless/watch-gasless-request.d.ts +72 -0
  638. package/dist/websocket/gasless/watch-gasless-request.d.ts.map +1 -0
  639. package/dist/websocket/gasless/watch-gasless-request.js +35 -0
  640. package/dist/websocket/gasless/watch-gasless-request.js.map +1 -0
  641. package/dist/websocket/index.d.ts +1 -0
  642. package/dist/websocket/index.d.ts.map +1 -1
  643. package/dist/websocket/socket/create-reconnecting-socket.d.ts +39 -6
  644. package/dist/websocket/socket/create-reconnecting-socket.d.ts.map +1 -1
  645. package/dist/websocket/socket/create-reconnecting-socket.js +92 -53
  646. package/dist/websocket/socket/create-reconnecting-socket.js.map +1 -1
  647. package/dist/websocket/socket/socket-status.d.ts +7 -2
  648. package/dist/websocket/socket/socket-status.d.ts.map +1 -1
  649. package/dist/websocket/socket/socket-status.js.map +1 -1
  650. package/package.json +1 -1
@@ -0,0 +1,165 @@
1
+ import { readHttpHeader as e } from "../shared/utils/http-header.js";
2
+ import { SymmApiError as t, SymmError as n } from "../shared/errors/symm-error.js";
3
+ import { parseGaslessErrorDetail as r } from "./errors.js";
4
+ import { toSanitizedApiError as i } from "../shared/errors/sanitized-api-error.js";
5
+ import { assertGaslessUrlServes as a, parseGaslessUrl as o } from "./gasless-url.js";
6
+ import { resolveGaslessService as s } from "./resolve-gasless.js";
7
+ import { GASLESS_SUBMIT_ROUTES as c, GASLESS_SUBMIT_UNCONFIRMED_CODE as l, readGaslessErrorStatus as u } from "./unconfirmed-submit.js";
8
+ import d, { isAxiosError as f } from "axios";
9
+ var p = "x-gaslessq-protocol-instance";
10
+ function m(e, t) {
11
+ let n = e.getChainConfig(t.chainId), r = s(e, { chainId: t.chainId });
12
+ return h(n.chainId, r, t.service);
13
+ }
14
+ function h(e, t, n) {
15
+ let r = o(e, t);
16
+ a(e, r, n);
17
+ let i = { Accept: "application/json" }, s = t.apiKey?.trim();
18
+ return s && (i.Authorization = `Bearer ${s}`), {
19
+ baseURL: r.form === "origin" ? `${r.url}/v1/instances/${encodeURIComponent(r.protocolInstance)}/${n}` : r.form === "service-base" ? r.url : `${r.url}/${n}`,
20
+ headers: i,
21
+ protocolInstance: r.protocolInstance,
22
+ requireInstanceHeader: r.form !== "proxy-root",
23
+ submitTimeoutMs: t.execution?.submitTimeoutMs ?? 3e4,
24
+ chainId: e
25
+ };
26
+ }
27
+ function g(e, t) {
28
+ let r = _(e, t);
29
+ if (r !== null) throw new n("api", "GASLESS_INSTANCE_MISMATCH", v(e, r));
30
+ }
31
+ function _(t, n) {
32
+ let r = t.protocolInstance;
33
+ if (!r) return null;
34
+ let i = e(n.headers, p);
35
+ return i === void 0 && !t.requireInstanceHeader || i === r ? null : i ?? "<missing>";
36
+ }
37
+ function v(e, t) {
38
+ return `Gasless: the response came from protocol instance "${t}", but chain ${e.chainId} expects "${e.protocolInstance}". Check the gasless url / protocolInstance pairing.`;
39
+ }
40
+ function y(e) {
41
+ return !(e instanceof t) || e.code !== "GASLESS_INSTANCE_MISMATCH" ? !1 : e.status >= 200 && e.status < 300;
42
+ }
43
+ async function b(e, t, n, r = {}) {
44
+ try {
45
+ let n = await d.get(t, {
46
+ baseURL: e.baseURL,
47
+ headers: e.headers,
48
+ signal: r.signal
49
+ });
50
+ return g(e, n), n.data;
51
+ } catch (t) {
52
+ throw E(t, e, n);
53
+ }
54
+ }
55
+ function x(e) {
56
+ return new Promise((t) => setTimeout(t, e));
57
+ }
58
+ function S(e, t = Math.random) {
59
+ return Math.max(e ?? 0, 1e3 + Math.floor(t() * 1e3));
60
+ }
61
+ async function C(e, t, n, r) {
62
+ try {
63
+ return await d.post(t, n, {
64
+ baseURL: e.baseURL,
65
+ headers: {
66
+ ...e.headers,
67
+ "Content-Type": "application/json"
68
+ },
69
+ timeout: e.submitTimeoutMs
70
+ });
71
+ } catch (t) {
72
+ throw E(t, e, r);
73
+ }
74
+ }
75
+ async function w(e, n, r, i) {
76
+ let { service: a, code: o } = c[n], s = Date.now() + e.submitTimeoutMs, l = 0, u = !1;
77
+ for (;;) {
78
+ let c;
79
+ try {
80
+ c = await C(e, n, r, o);
81
+ } catch (o) {
82
+ let c = D(o);
83
+ if (c === "rate-limited" || c === "gateway-not-ready") {
84
+ let e = S(o instanceof t ? o.retryAfterMs : null);
85
+ if (l < 2 && Date.now() + e <= s) {
86
+ l += 1, await x(e);
87
+ continue;
88
+ }
89
+ }
90
+ if (u) throw T(e, {
91
+ service: a,
92
+ path: n,
93
+ body: r,
94
+ idempotencyKey: i
95
+ }, o);
96
+ if (c !== "ambiguous") throw o;
97
+ u = !0, await x(S(null));
98
+ continue;
99
+ }
100
+ let d = _(e, c);
101
+ if (d !== null) throw new t({
102
+ code: "GASLESS_INSTANCE_MISMATCH",
103
+ message: `${v(e, d)} The submit was accepted there, so reconcile the request id in responseData before submitting anything else.`,
104
+ status: c.status,
105
+ statusText: c.statusText,
106
+ responseData: c.data,
107
+ url: `${e.baseURL}${n}`,
108
+ method: "POST"
109
+ });
110
+ let f = c.data?.request_id;
111
+ if (typeof f != "string" || f.length === 0) throw T(e, {
112
+ service: a,
113
+ path: n,
114
+ body: r,
115
+ idempotencyKey: i
116
+ });
117
+ return c.data;
118
+ }
119
+ }
120
+ function T(e, n, r) {
121
+ let i = u(r) ?? 0;
122
+ return new t({
123
+ code: l,
124
+ message: `Gasless: the submit to ${n.path} on chain ${e.chainId} could not be confirmed${i === 0 ? " (no response)" : ` (last status ${i})`}, so the service may already be executing it. Resend the recorded body under idempotency key ${n.idempotencyKey} with resubmitGaslessRequest — never re-run this intent through the wallet.`,
125
+ status: i,
126
+ statusText: r instanceof t ? r.statusText : "",
127
+ responseData: {
128
+ chainId: e.chainId,
129
+ ...n
130
+ },
131
+ url: `${e.baseURL}${n.path}`,
132
+ method: "POST",
133
+ cause: r instanceof Error ? r : void 0
134
+ });
135
+ }
136
+ function E(e, t, r) {
137
+ return e instanceof n ? e : f(e) ? i(e, {
138
+ code: r,
139
+ baseURL: t.baseURL
140
+ }) : new n("api", r, `Gasless request failed: ${e instanceof Error ? e.message : String(e)}`, { cause: e instanceof Error ? e : void 0 });
141
+ }
142
+ function D(e) {
143
+ let t = u(e);
144
+ if (t === void 0) return null;
145
+ let n = typeof r(e)?.gatewayError == "string";
146
+ switch (t) {
147
+ case 0:
148
+ case 408: return "ambiguous";
149
+ case 401: return "unauthorized";
150
+ case 403: return "forbidden";
151
+ case 422: return "client-schema";
152
+ case 429: return "rate-limited";
153
+ case 400: return n ? "selector-conflict" : "service";
154
+ case 404: return n ? "unknown-instance" : "service";
155
+ case 503: return n ? "gateway-not-ready" : "ambiguous";
156
+ default: return t >= 500 ? "ambiguous" : "service";
157
+ }
158
+ }
159
+ function O() {
160
+ return globalThis.crypto.randomUUID();
161
+ }
162
+ //#endregion
163
+ export { D as classifyGaslessHttpStatus, b as gaslessGet, O as generateGaslessIdempotencyKey, y as isGaslessAcceptedInstanceMismatchError, w as postGaslessSubmit, m as resolveGaslessHttp };
164
+
165
+ //# sourceMappingURL=http.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"http.js","names":[],"sources":["../../src/gasless/http.ts"],"sourcesContent":["import axios, { isAxiosError, type AxiosResponse } from \"axios\";\nimport type { SymmioGaslessConfig } from \"../core/chains/types\";\nimport type { Config } from \"../core/config\";\nimport { toSanitizedApiError } from \"../shared/errors/sanitized-api-error\";\nimport { SymmApiError, SymmError } from \"../shared/errors/symm-error\";\nimport { readHttpHeader } from \"../shared/utils/http-header\";\nimport { parseGaslessErrorDetail } from \"./errors\";\nimport { assertGaslessUrlServes, parseGaslessUrl } from \"./gasless-url\";\nimport { resolveGaslessService } from \"./resolve-gasless\";\nimport type { GaslessService } from \"./types\";\nimport {\n GASLESS_SUBMIT_ROUTES,\n GASLESS_SUBMIT_UNCONFIRMED_CODE,\n readGaslessErrorStatus,\n type GaslessSubmitPath,\n type GaslessUnconfirmedSubmit,\n} from \"./unconfirmed-submit\";\n\n/** Default HTTP timeout for a gasless submit (`execution.submitTimeoutMs`). @internal */\nexport const GASLESS_SUBMIT_TIMEOUT_MS = 30_000;\n\n/**\n * How many times a submit the gateway itself refused (`429`, or a `503`\n * carrying its `{ error }` envelope) is retried under the same idempotency key.\n * Both mean the request never reached the service, so a retry cannot duplicate\n * anything — the bound exists to keep a submit from outliving its caller.\n *\n * @internal\n */\nexport const GASLESS_SUBMIT_THROTTLE_RETRIES = 2;\n\n/** The response header the gateway stamps with the protocol instance that answered. @internal */\nexport const GASLESS_PROTOCOL_INSTANCE_HEADER = \"x-gaslessq-protocol-instance\";\n\n/**\n * A resolved gasless HTTP context for one `(chain, service)` pair: the final\n * per-service base URL, the request headers, and the protocol instance the\n * responses must come from.\n *\n * @internal\n */\nexport interface GaslessHttpContext {\n /** Final service base, e.g. `…/v1/instances/<protocol-instance>/operations`. */\n baseURL: string;\n /** Request headers: `Accept`, plus `Authorization: Bearer …` only when an `apiKey` is configured. */\n headers: Record<string, string>;\n /**\n * The protocol instance responses are asserted against, or `null` when the\n * config names none (a proxy root without `protocolInstance`).\n */\n protocolInstance: string | null;\n /**\n * Whether a response must carry the instance header. `true` for the gateway\n * URL forms, where the gateway itself stamps every routed response; `false`\n * for a proxy root, which may not forward the header, so only a header that\n * is present is checked.\n */\n requireInstanceHeader: boolean;\n /** HTTP timeout applied to submits (POSTs), in ms. */\n submitTimeoutMs: number;\n /** The chain the context was resolved for (for error messages and events). */\n chainId: number;\n}\n\n/**\n * Derive the per-service base URL from a chain's gasless config.\n *\n * The `url` forms are parsed by `parseGaslessUrl`:\n * - a gateway **origin** — the SDK appends\n * `/v1/instances/{protocolInstance}/{service}`;\n * - an **instance root** — the SDK appends `/{service}`;\n * - an instance-pinned **service base** — used as-is, and it must match the\n * requested service;\n * - a **proxy root** — the SDK appends `/{service}`.\n *\n * @internal\n */\nexport function resolveGaslessHttp(\n config: Config,\n parameters: { chainId?: number; service: GaslessService },\n): GaslessHttpContext {\n const chain = config.getChainConfig(parameters.chainId);\n const gasless = resolveGaslessService(config, { chainId: parameters.chainId });\n return buildGaslessHttpContext(chain.chainId, gasless, parameters.service);\n}\n\n/**\n * Build a {@link GaslessHttpContext} from an already-resolved gasless block.\n *\n * Anonymous access is the default: the `Authorization` header is omitted\n * entirely unless a non-blank `apiKey` is configured.\n *\n * @internal\n */\nexport function buildGaslessHttpContext(\n chainId: number,\n gasless: SymmioGaslessConfig,\n service: GaslessService,\n): GaslessHttpContext {\n const url = parseGaslessUrl(chainId, gasless);\n assertGaslessUrlServes(chainId, url, service);\n\n const headers: Record<string, string> = { Accept: \"application/json\" };\n const apiKey = gasless.apiKey?.trim();\n if (apiKey) headers.Authorization = `Bearer ${apiKey}`;\n\n const baseURL =\n url.form === \"origin\"\n ? `${url.url}/v1/instances/${encodeURIComponent(url.protocolInstance)}/${service}`\n : url.form === \"service-base\"\n ? url.url\n : `${url.url}/${service}`;\n\n return {\n baseURL,\n headers,\n protocolInstance: url.protocolInstance,\n requireInstanceHeader: url.form !== \"proxy-root\",\n submitTimeoutMs: gasless.execution?.submitTimeoutMs ?? GASLESS_SUBMIT_TIMEOUT_MS,\n chainId,\n };\n}\n\n/**\n * Assert that a successful response came from the expected protocol instance.\n * The gateway stamps `X-GasLessQ-Protocol-Instance` on every response it\n * routes. A mismatch means a different deployment answered (a\n * staging/production cross-wire), and the response must not be trusted.\n *\n * Gateway URL forms fail closed on a missing header too. A proxy root only\n * fails on a header that is present and wrong, since a proxy may not forward\n * it.\n *\n * @internal\n * @throws {SymmError} `GASLESS_INSTANCE_MISMATCH`\n */\nexport function assertGaslessInstance(context: GaslessHttpContext, response: AxiosResponse): void {\n const actual = readGaslessInstanceMismatch(context, response);\n if (actual === null) return;\n throw new SymmError(\"api\", \"GASLESS_INSTANCE_MISMATCH\", gaslessInstanceMismatchMessage(context, actual));\n}\n\n/**\n * The instance a response was stamped with when it is **not** the expected one,\n * or `null` when the response is trustworthy. `\"<missing>\"` stands for a\n * gateway response that carried no header at all.\n */\nfunction readGaslessInstanceMismatch(context: GaslessHttpContext, response: AxiosResponse): string | null {\n const expected = context.protocolInstance;\n if (!expected) return null;\n const actual = readHttpHeader(response.headers, GASLESS_PROTOCOL_INSTANCE_HEADER);\n if (actual === undefined && !context.requireInstanceHeader) return null;\n return actual === expected ? null : (actual ?? \"<missing>\");\n}\n\nfunction gaslessInstanceMismatchMessage(context: GaslessHttpContext, actual: string): string {\n return `Gasless: the response came from protocol instance \"${actual}\", but chain ${context.chainId} expects \"${context.protocolInstance}\". Check the gasless url / protocolInstance pairing.`;\n}\n\n/**\n * Whether an error is a `GASLESS_INSTANCE_MISMATCH` on a response the gateway\n * **accepted** (a `2xx`) — the submit created a workflow somewhere, on a\n * deployment this config does not address.\n *\n * Nothing about it can be trusted except that it happened, so it is never\n * grounds for a wallet-paid retry, and any signature it consumed must be\n * treated as spent.\n *\n * @internal\n */\nexport function isGaslessAcceptedInstanceMismatchError(err: unknown): boolean {\n if (!(err instanceof SymmApiError) || err.code !== \"GASLESS_INSTANCE_MISMATCH\") return false;\n return err.status >= 200 && err.status < 300;\n}\n\n/**\n * Perform a gasless GET and normalize failures into the house error shape.\n *\n * @param context - The resolved HTTP context for the call's service.\n * @param path - The path under the service base.\n * @param code - The SDK error code a failure is reported under.\n * @param options - `signal` cancels the request in flight — pass TanStack's\n * query signal, or the caller's own, so a poll nobody is waiting for stops\n * spending the deployment's shared request budget.\n *\n * @internal\n */\nexport async function gaslessGet<data>(\n context: GaslessHttpContext,\n path: string,\n code: string,\n options: { signal?: AbortSignal } = {},\n): Promise<data> {\n try {\n const response = await axios.get<data>(path, {\n baseURL: context.baseURL,\n headers: context.headers,\n signal: options.signal,\n });\n assertGaslessInstance(context, response);\n return response.data;\n } catch (err) {\n throw toGaslessError(err, context, code);\n }\n}\n\nfunction sleep(ms: number): Promise<void> {\n return new Promise((resolve) => setTimeout(resolve, ms));\n}\n\n/**\n * How long to wait before resending a submit, whether the gateway refused it or\n * its outcome is unknown.\n *\n * `Retry-After` is honored when the gateway sent one and the browser was\n * allowed to read it, but never trusted as a floor of zero: a cross-origin page\n * usually sees `null`, and hammering a throttled gateway is what earned the\n * `429`. So the wait is at least a jittered second, and the jitter keeps a\n * page's concurrent workflows from retrying in lockstep.\n *\n * @param retryAfterMs - The server's requested delay, or `null` when unknown.\n * @param random - Injectable `Math.random`, for deterministic tests.\n * @returns The delay in ms.\n *\n * @internal\n */\nexport function gaslessSubmitRetryDelay(retryAfterMs: number | null, random: () => number = Math.random): number {\n return Math.max(retryAfterMs ?? 0, 1_000 + Math.floor(random() * 1_000));\n}\n\n/** One POST attempt: the axios call plus the house error normalization. */\nasync function postGaslessOnce<data>(\n context: GaslessHttpContext,\n path: string,\n body: unknown,\n code: string,\n): Promise<AxiosResponse<data>> {\n try {\n return await axios.post<data>(path, body, {\n baseURL: context.baseURL,\n headers: { ...context.headers, \"Content-Type\": \"application/json\" },\n timeout: context.submitTimeoutMs,\n });\n } catch (err) {\n throw toGaslessError(err, context, code);\n }\n}\n\n/**\n * POST one gasless **submit** — the only gasless call that can leave a side\n * effect behind when its response is lost — and decide, for every outcome,\n * whether the service can have accepted it.\n *\n * Three dispositions, all under the caller's single idempotency key (the vendor\n * returns the existing record for a byte-identical resend, so reusing the key\n * can never double-execute; a *changed* payload needs a fresh one):\n *\n * - **Refused by the gateway** (`429`, or a `503` carrying its `{ error }`\n * envelope): the request never reached the service. Resent up to\n * {@link GASLESS_SUBMIT_THROTTLE_RETRIES} times after\n * {@link gaslessSubmitRetryDelay}, while the wait still fits inside\n * `execution.submitTimeoutMs`. Exhausted, the gateway's own error is thrown —\n * the one submit failure that is provably *not* accepted, and so the only one\n * a wallet-paid retry may follow.\n * - **Ambiguous** (no response, a timeout, or a `5xx` without the gateway\n * envelope): the service may or may not have accepted it. Resent **once**,\n * after a {@link gaslessSubmitRetryDelay} backoff, then thrown as\n * `GASLESS_SUBMIT_UNCONFIRMED` carrying the exact bytes that were sent, so the\n * caller can persist them and replay them later with `resubmitGaslessRequest`.\n * Never a rejection, and never grounds for a wallet retry. The backoff is the\n * vendor's: a resend that races the first attempt's insert can be answered with\n * a `5xx` instead of the record that insert created.\n * - **Answered** (any other status, or a `2xx`): thrown as-is, or returned. A\n * `2xx` without a `request_id` is unconfirmed too — the workflow exists and\n * nothing identifies it. A `2xx` from the wrong protocol instance throws\n * `GASLESS_INSTANCE_MISMATCH` with the parsed body kept in `responseData`,\n * because the `request_id` in it is the only handle on a request that was\n * accepted somewhere.\n *\n * An ambiguous attempt decides every failure after it. A gateway refusal of the\n * resend, or a service verdict on it, describes only the resend — the first\n * attempt may already be executing — so it is thrown as\n * `GASLESS_SUBMIT_UNCONFIRMED` with that failure as its `cause`. Thrown as-is,\n * a `429` would read as provably not accepted, and a wallet-paid retry would\n * execute the intent twice.\n *\n * @param context - The resolved HTTP context for the submit's service.\n * @param path - The submit route (see {@link GASLESS_SUBMIT_ROUTES}).\n * @param body - The exact JSON body to send.\n * @param idempotencyKey - The key inside `body`, recorded on an unconfirmed submit.\n * @returns The acceptance body.\n *\n * @internal\n */\nexport async function postGaslessSubmit<data extends { request_id?: string | null }>(\n context: GaslessHttpContext,\n path: GaslessSubmitPath,\n body: unknown,\n idempotencyKey: string,\n): Promise<data> {\n const { service, code } = GASLESS_SUBMIT_ROUTES[path];\n const retriesEndAt = Date.now() + context.submitTimeoutMs;\n let throttleRetries = 0;\n /** Set once an attempt failed ambiguously: the service may hold that attempt. */\n let mayBeAccepted = false;\n\n for (;;) {\n let response: AxiosResponse<data>;\n try {\n response = await postGaslessOnce<data>(context, path, body, code);\n } catch (err) {\n const failure = classifyGaslessHttpStatus(err);\n\n if (failure === \"rate-limited\" || failure === \"gateway-not-ready\") {\n const delay = gaslessSubmitRetryDelay(err instanceof SymmApiError ? err.retryAfterMs : null);\n if (throttleRetries < GASLESS_SUBMIT_THROTTLE_RETRIES && Date.now() + delay <= retriesEndAt) {\n throttleRetries += 1;\n await sleep(delay);\n continue;\n }\n }\n\n /**\n * An answer speaks only for the attempt it came back for. Once an\n * earlier attempt was ambiguous, that attempt may be executing whatever\n * this one was told, so the failure is unconfirmed, never a rejection.\n */\n if (mayBeAccepted) throw unconfirmedGaslessSubmitError(context, { service, path, body, idempotencyKey }, err);\n if (failure !== \"ambiguous\") throw err;\n\n /**\n * The vendor's prescribed recovery for a lost response: resend the\n * identical request under the same key, after a backoff, which either\n * lands it or returns the record it already created.\n */\n mayBeAccepted = true;\n await sleep(gaslessSubmitRetryDelay(null));\n continue;\n }\n\n const mismatch = readGaslessInstanceMismatch(context, response);\n if (mismatch !== null) {\n throw new SymmApiError({\n code: \"GASLESS_INSTANCE_MISMATCH\",\n message: `${gaslessInstanceMismatchMessage(context, mismatch)} The submit was accepted there, so reconcile the request id in responseData before submitting anything else.`,\n status: response.status,\n statusText: response.statusText,\n responseData: response.data,\n url: `${context.baseURL}${path}`,\n method: \"POST\",\n });\n }\n\n const requestId = response.data?.request_id;\n if (typeof requestId !== \"string\" || requestId.length === 0) {\n throw unconfirmedGaslessSubmitError(context, { service, path, body, idempotencyKey });\n }\n return response.data;\n }\n}\n\n/**\n * Build the `GASLESS_SUBMIT_UNCONFIRMED` error, whose `responseData` is the\n * replayable {@link GaslessUnconfirmedSubmit} rather than a response body —\n * there is no trustworthy response body, and the bytes that were sent are the\n * only thing that can recover the workflow.\n */\nfunction unconfirmedGaslessSubmitError(\n context: GaslessHttpContext,\n submit: Omit<GaslessUnconfirmedSubmit, \"chainId\">,\n cause?: unknown,\n): SymmApiError {\n const status = readGaslessErrorStatus(cause) ?? 0;\n return new SymmApiError({\n code: GASLESS_SUBMIT_UNCONFIRMED_CODE,\n message: `Gasless: the submit to ${submit.path} on chain ${context.chainId} could not be confirmed${status === 0 ? \" (no response)\" : ` (last status ${status})`}, so the service may already be executing it. Resend the recorded body under idempotency key ${submit.idempotencyKey} with resubmitGaslessRequest — never re-run this intent through the wallet.`,\n status,\n statusText: cause instanceof SymmApiError ? cause.statusText : \"\",\n responseData: { chainId: context.chainId, ...submit } satisfies GaslessUnconfirmedSubmit,\n url: `${context.baseURL}${submit.path}`,\n method: \"POST\",\n cause: cause instanceof Error ? cause : undefined,\n });\n}\n\n/**\n * The canonical 3-branch error normalization every gasless HTTP call shares.\n *\n * An axios failure becomes a `SymmApiError` whose `cause` is a sanitized\n * snapshot (see `toSanitizedApiError`), never the axios error itself. That\n * error's request config holds the `Authorization` header and the signed body,\n * so the `apiKey` cannot leak through a logged or serialized error.\n * `responseData` stays the raw response body.\n *\n * @internal\n */\nexport function toGaslessError(err: unknown, context: GaslessHttpContext, code: string): Error {\n if (err instanceof SymmError) return err;\n if (isAxiosError(err)) return toSanitizedApiError(err, { code, baseURL: context.baseURL });\n return new SymmError(\"api\", code, `Gasless request failed: ${err instanceof Error ? err.message : String(err)}`, {\n cause: err instanceof Error ? err : undefined,\n });\n}\n\n/**\n * How a failed gasless HTTP call was disposed of, from the status and, where\n * the gateway overloads a status, from the body: the gateway's own\n * `{ \"error\": \"…\" }` envelope versus a service `{ \"detail\": … }` body.\n *\n * - `\"rate-limited\"` — `429`: dropped at the gateway, never forwarded.\n * - `\"gateway-not-ready\"` — `503` with the gateway envelope: its configuration is not ready.\n * - `\"unauthorized\"` / `\"forbidden\"` — `401` / `403`: credentials rejected, or not allowed for this instance or service.\n * - `\"unknown-instance\"` — `404` with the gateway envelope: no such instance or service route.\n * - `\"selector-conflict\"` — `400` with the gateway envelope: the URL and the instance selector disagree.\n * - `\"client-schema\"` — `422`: the service rejected the payload shape (a client bug).\n * - `\"ambiguous\"` — no response (network failure or timeout), `408`, or any other `5xx`: the request may or may not have reached the service.\n * - `\"service\"` — any other status: the service answered with its own verdict (`detail.code`).\n *\n * @internal\n */\nexport type GaslessHttpFailureClass =\n | \"rate-limited\"\n | \"gateway-not-ready\"\n | \"unauthorized\"\n | \"forbidden\"\n | \"unknown-instance\"\n | \"selector-conflict\"\n | \"client-schema\"\n | \"ambiguous\"\n | \"service\";\n\n/**\n * Classify a failed gasless HTTP call — see {@link GaslessHttpFailureClass}.\n *\n * The status is read structurally, so an error a framework layer re-wrapped\n * (`@symmio/trading-react`'s `SymmioRequestError`, which copies `status` and\n * `responseData`) classifies exactly like the `SymmApiError` underneath it.\n *\n * @param err - Anything caught from a gasless HTTP call.\n * @returns The class, or `null` when `err` carries no HTTP status.\n *\n * @internal\n */\nexport function classifyGaslessHttpStatus(err: unknown): GaslessHttpFailureClass | null {\n const status = readGaslessErrorStatus(err);\n if (status === undefined) return null;\n const fromGateway = typeof parseGaslessErrorDetail(err)?.gatewayError === \"string\";\n switch (status) {\n case 0:\n case 408:\n return \"ambiguous\";\n case 401:\n return \"unauthorized\";\n case 403:\n return \"forbidden\";\n case 422:\n return \"client-schema\";\n case 429:\n return \"rate-limited\";\n case 400:\n return fromGateway ? \"selector-conflict\" : \"service\";\n case 404:\n return fromGateway ? \"unknown-instance\" : \"service\";\n case 503:\n return fromGateway ? \"gateway-not-ready\" : \"ambiguous\";\n default:\n return status >= 500 ? \"ambiguous\" : \"service\";\n }\n}\n\n/**\n * Generate a random idempotency key for one gasless submit. Reuse the same key\n * only when retrying the byte-identical request; any change to the payload\n * needs a fresh key.\n */\nexport function generateGaslessIdempotencyKey(): string {\n return globalThis.crypto.randomUUID();\n}\n"],"mappings":";;;;;;;;AAgCA,IAAa,IAAmC;AA6ChD,SAAgB,EACd,GACA,GACoB;CACpB,IAAM,IAAQ,EAAO,eAAe,EAAW,OAAO,GAChD,IAAU,EAAsB,GAAQ,EAAE,SAAS,EAAW,QAAQ,CAAC;CAC7E,OAAO,EAAwB,EAAM,SAAS,GAAS,EAAW,OAAO;AAC3E;AAUA,SAAgB,EACd,GACA,GACA,GACoB;CACpB,IAAM,IAAM,EAAgB,GAAS,CAAO;CAC5C,EAAuB,GAAS,GAAK,CAAO;CAE5C,IAAM,IAAkC,EAAE,QAAQ,mBAAmB,GAC/D,IAAS,EAAQ,QAAQ,KAAK;CAUpC,OATI,MAAQ,EAAQ,gBAAgB,UAAU,MASvC;EACL,SAPA,EAAI,SAAS,WACT,GAAG,EAAI,IAAI,gBAAgB,mBAAmB,EAAI,gBAAgB,EAAE,GAAG,MACvE,EAAI,SAAS,iBACX,EAAI,MACJ,GAAG,EAAI,IAAI,GAAG;EAIpB;EACA,kBAAkB,EAAI;EACtB,uBAAuB,EAAI,SAAS;EACpC,iBAAiB,EAAQ,WAAW,mBAAA;EACpC;CACF;AACF;AAeA,SAAgB,EAAsB,GAA6B,GAA+B;CAChG,IAAM,IAAS,EAA4B,GAAS,CAAQ;CACxD,UAAW,MACf,MAAM,IAAI,EAAU,OAAO,6BAA6B,EAA+B,GAAS,CAAM,CAAC;AACzG;AAOA,SAAS,EAA4B,GAA6B,GAAwC;CACxG,IAAM,IAAW,EAAQ;CACzB,IAAI,CAAC,GAAU,OAAO;CACtB,IAAM,IAAS,EAAe,EAAS,SAAS,CAAgC;CAEhF,OADI,MAAW,KAAA,KAAa,CAAC,EAAQ,yBAC9B,MAAW,IADiD,OAC9B,KAAU;AACjD;AAEA,SAAS,EAA+B,GAA6B,GAAwB;CAC3F,OAAO,sDAAsD,EAAO,eAAe,EAAQ,QAAQ,YAAY,EAAQ,iBAAiB;AAC1I;AAaA,SAAgB,EAAuC,GAAuB;CAE5E,OADI,EAAE,aAAe,MAAiB,EAAI,SAAS,8BAAoC,KAChF,EAAI,UAAU,OAAO,EAAI,SAAS;AAC3C;AAcA,eAAsB,EACpB,GACA,GACA,GACA,IAAoC,CAAC,GACtB;CACf,IAAI;EACF,IAAM,IAAW,MAAM,EAAM,IAAU,GAAM;GAC3C,SAAS,EAAQ;GACjB,SAAS,EAAQ;GACjB,QAAQ,EAAQ;EAClB,CAAC;EAED,OADA,EAAsB,GAAS,CAAQ,GAChC,EAAS;CAClB,SAAS,GAAK;EACZ,MAAM,EAAe,GAAK,GAAS,CAAI;CACzC;AACF;AAEA,SAAS,EAAM,GAA2B;CACxC,OAAO,IAAI,SAAS,MAAY,WAAW,GAAS,CAAE,CAAC;AACzD;AAkBA,SAAgB,EAAwB,GAA6B,IAAuB,KAAK,QAAgB;CAC/G,OAAO,KAAK,IAAI,KAAgB,GAAG,MAAQ,KAAK,MAAM,EAAO,IAAI,GAAK,CAAC;AACzE;AAGA,eAAe,EACb,GACA,GACA,GACA,GAC8B;CAC9B,IAAI;EACF,OAAO,MAAM,EAAM,KAAW,GAAM,GAAM;GACxC,SAAS,EAAQ;GACjB,SAAS;IAAE,GAAG,EAAQ;IAAS,gBAAgB;GAAmB;GAClE,SAAS,EAAQ;EACnB,CAAC;CACH,SAAS,GAAK;EACZ,MAAM,EAAe,GAAK,GAAS,CAAI;CACzC;AACF;AAgDA,eAAsB,EACpB,GACA,GACA,GACA,GACe;CACf,IAAM,EAAE,YAAS,YAAS,EAAsB,IAC1C,IAAe,KAAK,IAAI,IAAI,EAAQ,iBACtC,IAAkB,GAElB,IAAgB;CAEpB,SAAS;EACP,IAAI;EACJ,IAAI;GACF,IAAW,MAAM,EAAsB,GAAS,GAAM,GAAM,CAAI;EAClE,SAAS,GAAK;GACZ,IAAM,IAAU,EAA0B,CAAG;GAE7C,IAAI,MAAY,kBAAkB,MAAY,qBAAqB;IACjE,IAAM,IAAQ,EAAwB,aAAe,IAAe,EAAI,eAAe,IAAI;IAC3F,IAAI,IAAA,KAAqD,KAAK,IAAI,IAAI,KAAS,GAAc;KAE3F,AADA,KAAmB,GACnB,MAAM,EAAM,CAAK;KACjB;IACF;GACF;GAOA,IAAI,GAAe,MAAM,EAA8B,GAAS;IAAE;IAAS;IAAM;IAAM;GAAe,GAAG,CAAG;GAC5G,IAAI,MAAY,aAAa,MAAM;GAQnC,AADA,IAAgB,IAChB,MAAM,EAAM,EAAwB,IAAI,CAAC;GACzC;EACF;EAEA,IAAM,IAAW,EAA4B,GAAS,CAAQ;EAC9D,IAAI,MAAa,MACf,MAAM,IAAI,EAAa;GACrB,MAAM;GACN,SAAS,GAAG,EAA+B,GAAS,CAAQ,EAAE;GAC9D,QAAQ,EAAS;GACjB,YAAY,EAAS;GACrB,cAAc,EAAS;GACvB,KAAK,GAAG,EAAQ,UAAU;GAC1B,QAAQ;EACV,CAAC;EAGH,IAAM,IAAY,EAAS,MAAM;EACjC,IAAI,OAAO,KAAc,YAAY,EAAU,WAAW,GACxD,MAAM,EAA8B,GAAS;GAAE;GAAS;GAAM;GAAM;EAAe,CAAC;EAEtF,OAAO,EAAS;CAClB;AACF;AAQA,SAAS,EACP,GACA,GACA,GACc;CACd,IAAM,IAAS,EAAuB,CAAK,KAAK;CAChD,OAAO,IAAI,EAAa;EACtB,MAAM;EACN,SAAS,0BAA0B,EAAO,KAAK,YAAY,EAAQ,QAAQ,yBAAyB,MAAW,IAAI,mBAAmB,iBAAiB,EAAO,GAAG,+FAA+F,EAAO,eAAe;EACtR;EACA,YAAY,aAAiB,IAAe,EAAM,aAAa;EAC/D,cAAc;GAAE,SAAS,EAAQ;GAAS,GAAG;EAAO;EACpD,KAAK,GAAG,EAAQ,UAAU,EAAO;EACjC,QAAQ;EACR,OAAO,aAAiB,QAAQ,IAAQ,KAAA;CAC1C,CAAC;AACH;AAaA,SAAgB,EAAe,GAAc,GAA6B,GAAqB;CAG7F,OAFI,aAAe,IAAkB,IACjC,EAAa,CAAG,IAAU,EAAoB,GAAK;EAAE;EAAM,SAAS,EAAQ;CAAQ,CAAC,IAClF,IAAI,EAAU,OAAO,GAAM,2BAA2B,aAAe,QAAQ,EAAI,UAAU,OAAO,CAAG,KAAK,EAC/G,OAAO,aAAe,QAAQ,IAAM,KAAA,EACtC,CAAC;AACH;AAyCA,SAAgB,EAA0B,GAA8C;CACtF,IAAM,IAAS,EAAuB,CAAG;CACzC,IAAI,MAAW,KAAA,GAAW,OAAO;CACjC,IAAM,IAAc,OAAO,EAAwB,CAAG,GAAG,gBAAiB;CAC1E,QAAQ,GAAR;EACE,KAAK;EACL,KAAK,KACH,OAAO;EACT,KAAK,KACH,OAAO;EACT,KAAK,KACH,OAAO;EACT,KAAK,KACH,OAAO;EACT,KAAK,KACH,OAAO;EACT,KAAK,KACH,OAAO,IAAc,sBAAsB;EAC7C,KAAK,KACH,OAAO,IAAc,qBAAqB;EAC5C,KAAK,KACH,OAAO,IAAc,sBAAsB;EAC7C,SACE,OAAO,KAAU,MAAM,cAAc;CACzC;AACF;AAOA,SAAgB,IAAwC;CACtD,OAAO,WAAW,OAAO,WAAW;AACtC"}
@@ -0,0 +1,34 @@
1
+ export * from './batch/index.js';
2
+ export * from './classify-gasless-failure.js';
3
+ export * from './confirm-gasless-request/index.js';
4
+ export * from './constants.js';
5
+ export * from './eip712.js';
6
+ export * from './errors.js';
7
+ export * from './fallback.js';
8
+ export * from './format-gasless-operation.js';
9
+ export * from './gasless-wallet-execute/index.js';
10
+ export * from './get-gasless-batch-fee-quote/index.js';
11
+ export * from './get-gasless-deposit-policy/index.js';
12
+ export * from './get-gasless-fee-quote/index.js';
13
+ export * from './get-gasless-request/index.js';
14
+ export * from './get-gasless-request-transactions/index.js';
15
+ export * from './get-gasless-wallet-address/index.js';
16
+ export * from './get-gasless-wallet-creation-fee/index.js';
17
+ export * from './get-gasless-wallet-nonce/index.js';
18
+ export * from './get-session-key-selectors.js';
19
+ export * from './is-newer-gasless-request.js';
20
+ export * from './observe-gasless-request.js';
21
+ export * from './relay-gasless-batch/index.js';
22
+ export * from './relay-grant-delegation/index.js';
23
+ export * from './relay-instant-operations/index.js';
24
+ export * from './relayable-writes.js';
25
+ export * from './resolve-gasless.js';
26
+ export * from './resubmit-gasless-request/index.js';
27
+ export * from './settle-gasless-deposit-existing-account/index.js';
28
+ export * from './settle-gasless-deposit-new-account/index.js';
29
+ export * from './types.js';
30
+ export * from './unconfirmed-submit.js';
31
+ export * from './wait-for-gasless-request/index.js';
32
+ export * from './wire-types.js';
33
+ export * from './write-request-registry.js';
34
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/gasless/index.ts"],"names":[],"mappings":"AAAA,cAAc,SAAS,CAAC;AACxB,cAAc,4BAA4B,CAAC;AAC3C,cAAc,2BAA2B,CAAC;AAC1C,cAAc,aAAa,CAAC;AAC5B,cAAc,UAAU,CAAC;AACzB,cAAc,UAAU,CAAC;AACzB,cAAc,YAAY,CAAC;AAC3B,cAAc,4BAA4B,CAAC;AAC3C,cAAc,0BAA0B,CAAC;AACzC,cAAc,+BAA+B,CAAC;AAC9C,cAAc,8BAA8B,CAAC;AAC7C,cAAc,yBAAyB,CAAC;AACxC,cAAc,uBAAuB,CAAC;AACtC,cAAc,oCAAoC,CAAC;AACnD,cAAc,8BAA8B,CAAC;AAC7C,cAAc,mCAAmC,CAAC;AAClD,cAAc,4BAA4B,CAAC;AAC3C,cAAc,6BAA6B,CAAC;AAC5C,cAAc,4BAA4B,CAAC;AAC3C,cAAc,2BAA2B,CAAC;AAC1C,cAAc,uBAAuB,CAAC;AACtC,cAAc,0BAA0B,CAAC;AACzC,cAAc,4BAA4B,CAAC;AAC3C,cAAc,oBAAoB,CAAC;AACnC,cAAc,mBAAmB,CAAC;AAClC,cAAc,4BAA4B,CAAC;AAC3C,cAAc,2CAA2C,CAAC;AAC1D,cAAc,sCAAsC,CAAC;AACrD,cAAc,SAAS,CAAC;AACxB,cAAc,sBAAsB,CAAC;AACrC,cAAc,4BAA4B,CAAC;AAC3C,cAAc,cAAc,CAAC;AAC7B,cAAc,0BAA0B,CAAC"}
@@ -0,0 +1,32 @@
1
+ import { GaslessRequest } from './types.js';
2
+ /**
3
+ * Whether `next` is a later view of a request than `prev` — the stale-response
4
+ * guard for anything that writes a polled record somewhere shared (a query
5
+ * cache, a progress state, a stored row).
6
+ *
7
+ * Status reads are concurrent by construction: a poll, a retry after a
8
+ * transient failure and a stream snapshot can all be in flight at once, and
9
+ * they do not answer in the order they were sent. Without this guard a slow
10
+ * `queued` response that lands after the `succeeded` one repaints a finished
11
+ * workflow as pending, which is exactly the "it looks stuck, submit it again"
12
+ * bug the lifecycle contract forbids.
13
+ *
14
+ * The order is the lifecycle first — `queued` < `submitted` < terminal, with
15
+ * **terminal sticky**: a terminal record is immutable, so nothing non-terminal
16
+ * ever replaces one. Within the same rank, `updatedAt` decides; when either
17
+ * record does not carry one, `next` wins, because a record with no timestamp
18
+ * cannot be proven stale and the newer fetch is the better guess.
19
+ *
20
+ * @param prev - The record currently held, or `undefined` when there is none.
21
+ * @param next - The record that just arrived.
22
+ * @returns `true` when `next` should replace `prev`.
23
+ *
24
+ * @example
25
+ * ```ts
26
+ * queryClient.setQueryData(key, (prev?: GaslessRequest) =>
27
+ * isNewerGaslessRequest(prev, incoming) ? incoming : prev,
28
+ * );
29
+ * ```
30
+ */
31
+ export declare function isNewerGaslessRequest(prev: GaslessRequest | undefined, next: GaslessRequest): boolean;
32
+ //# sourceMappingURL=is-newer-gasless-request.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"is-newer-gasless-request.d.ts","sourceRoot":"","sources":["../../src/gasless/is-newer-gasless-request.ts"],"names":[],"mappings":"AAAA,OAAO,EAAkD,KAAK,cAAc,EAAE,MAAM,SAAS,CAAC;AAkB9F;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AACH,wBAAgB,qBAAqB,CAAC,IAAI,EAAE,cAAc,GAAG,SAAS,EAAE,IAAI,EAAE,cAAc,GAAG,OAAO,CAYrG"}
@@ -0,0 +1,21 @@
1
+ import { GaslessRequestStatus as e, isGaslessRequestTerminal as t } from "./types.js";
2
+ //#region src/gasless/is-newer-gasless-request.ts
3
+ function n(n) {
4
+ return t(n) ? 2 : +(n === e.SUBMITTED);
5
+ }
6
+ function r(e) {
7
+ if (!e.updatedAt) return null;
8
+ let t = Date.parse(e.updatedAt);
9
+ return Number.isNaN(t) ? null : t;
10
+ }
11
+ function i(e, t) {
12
+ if (!e || e.requestId !== t.requestId) return !0;
13
+ let i = n(e.status), a = n(t.status);
14
+ if (a !== i) return a > i;
15
+ let o = r(e), s = r(t);
16
+ return o === null || s === null ? !0 : s >= o;
17
+ }
18
+ //#endregion
19
+ export { i as isNewerGaslessRequest };
20
+
21
+ //# sourceMappingURL=is-newer-gasless-request.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"is-newer-gasless-request.js","names":[],"sources":["../../src/gasless/is-newer-gasless-request.ts"],"sourcesContent":["import { GaslessRequestStatus, isGaslessRequestTerminal, type GaslessRequest } from \"./types\";\n\n/**\n * How far along the lifecycle a status is. Terminal statuses share the top rank\n * — none of them can be superseded by another.\n */\nfunction statusRank(status: GaslessRequestStatus): number {\n if (isGaslessRequestTerminal(status)) return 2;\n return status === GaslessRequestStatus.SUBMITTED ? 1 : 0;\n}\n\n/** The record's `updatedAt` as epoch ms, or `null` when it is missing or unparseable. */\nfunction updatedAtMs(request: GaslessRequest): number | null {\n if (!request.updatedAt) return null;\n const parsed = Date.parse(request.updatedAt);\n return Number.isNaN(parsed) ? null : parsed;\n}\n\n/**\n * Whether `next` is a later view of a request than `prev` — the stale-response\n * guard for anything that writes a polled record somewhere shared (a query\n * cache, a progress state, a stored row).\n *\n * Status reads are concurrent by construction: a poll, a retry after a\n * transient failure and a stream snapshot can all be in flight at once, and\n * they do not answer in the order they were sent. Without this guard a slow\n * `queued` response that lands after the `succeeded` one repaints a finished\n * workflow as pending, which is exactly the \"it looks stuck, submit it again\"\n * bug the lifecycle contract forbids.\n *\n * The order is the lifecycle first — `queued` < `submitted` < terminal, with\n * **terminal sticky**: a terminal record is immutable, so nothing non-terminal\n * ever replaces one. Within the same rank, `updatedAt` decides; when either\n * record does not carry one, `next` wins, because a record with no timestamp\n * cannot be proven stale and the newer fetch is the better guess.\n *\n * @param prev - The record currently held, or `undefined` when there is none.\n * @param next - The record that just arrived.\n * @returns `true` when `next` should replace `prev`.\n *\n * @example\n * ```ts\n * queryClient.setQueryData(key, (prev?: GaslessRequest) =>\n * isNewerGaslessRequest(prev, incoming) ? incoming : prev,\n * );\n * ```\n */\nexport function isNewerGaslessRequest(prev: GaslessRequest | undefined, next: GaslessRequest): boolean {\n if (!prev) return true;\n if (prev.requestId !== next.requestId) return true;\n\n const prevRank = statusRank(prev.status);\n const nextRank = statusRank(next.status);\n if (nextRank !== prevRank) return nextRank > prevRank;\n\n const prevAt = updatedAtMs(prev);\n const nextAt = updatedAtMs(next);\n if (prevAt === null || nextAt === null) return true;\n return nextAt >= prevAt;\n}\n"],"mappings":";;AAMA,SAAS,EAAW,GAAsC;CAExD,OADI,EAAyB,CAAM,IAAU,IACtC,QAAW,EAAqB;AACzC;AAGA,SAAS,EAAY,GAAwC;CAC3D,IAAI,CAAC,EAAQ,WAAW,OAAO;CAC/B,IAAM,IAAS,KAAK,MAAM,EAAQ,SAAS;CAC3C,OAAO,OAAO,MAAM,CAAM,IAAI,OAAO;AACvC;AA+BA,SAAgB,EAAsB,GAAkC,GAA+B;CAErG,IADI,CAAC,KACD,EAAK,cAAc,EAAK,WAAW,OAAO;CAE9C,IAAM,IAAW,EAAW,EAAK,MAAM,GACjC,IAAW,EAAW,EAAK,MAAM;CACvC,IAAI,MAAa,GAAU,OAAO,IAAW;CAE7C,IAAM,IAAS,EAAY,CAAI,GACzB,IAAS,EAAY,CAAI;CAE/B,OADI,MAAW,QAAQ,MAAW,OAAa,KACxC,KAAU;AACnB"}
@@ -0,0 +1,180 @@
1
+ import { Config } from '../core/config/index.js';
2
+ import { GaslessService } from './types.js';
3
+ /**
4
+ * The lock/stream key of an account's **InstantLayer** operation nonces, which
5
+ * the contract counts per `signerAccount`.
6
+ *
7
+ * @param chainId - The chain the operation relays on.
8
+ * @param signerAccount - The operation's `signerAccount.addr`.
9
+ * @returns The stream key.
10
+ *
11
+ * @internal
12
+ */
13
+ export declare function gaslessInstantNonceStreamKey(chainId: number, signerAccount: string): string;
14
+ /**
15
+ * The lock/stream key of a **gasless-wallet operation** nonce stream.
16
+ *
17
+ * The two shapes mirror the contract's own storage. Wallet `0` counts in
18
+ * `_legacyWalletOperationNonces[signerAccount]`, one stream per signer account
19
+ * across every owner, so its key deliberately omits the owner — keying it by
20
+ * owner would let two owners' relays sign the same legacy nonce. Every positive
21
+ * id counts in `walletNonces[wallet][signerAccount]`, so its key carries both
22
+ * the id and the owner that derives the wallet.
23
+ *
24
+ * @param chainId - The chain the operation relays on.
25
+ * @param walletId - The selected wallet id.
26
+ * @param owner - The wallet's owner.
27
+ * @param signerAccount - The operation's `signerAccount.addr`.
28
+ * @returns The stream key.
29
+ *
30
+ * @internal
31
+ */
32
+ export declare function gaslessWalletNonceStreamKey(chainId: number, walletId: bigint, owner: string, signerAccount: string): string;
33
+ /**
34
+ * Run `task` exclusively for one nonce stream. Queued tasks run in FIFO order;
35
+ * a failed task never blocks the next one, and the map entry is cleared once
36
+ * the last queued task settles.
37
+ *
38
+ * @param config - The SDK config the locks belong to.
39
+ * @param key - A stream key from {@link gaslessInstantNonceStreamKey} or {@link gaslessWalletNonceStreamKey}.
40
+ * @param task - The read-sign-submit critical section.
41
+ *
42
+ * @internal
43
+ */
44
+ export declare function withGaslessNonceLock<result>(config: Config, key: string, task: () => Promise<result>): Promise<result>;
45
+ /**
46
+ * Run `task` exclusively for **several** nonce streams at once — a batch that
47
+ * signs on more than one stream (an account's InstantLayer stream plus one
48
+ * stream per GaslessWallet id). The single-stream {@link withGaslessNonceLock}
49
+ * is the one-key case.
50
+ *
51
+ * The task joins every stream's queue in the same synchronous step and starts
52
+ * once all of their earlier tasks have settled. A task therefore only ever
53
+ * waits on tasks queued before it, so two batches that share streams — in any
54
+ * order — can never each hold one stream while waiting for the other's.
55
+ *
56
+ * @param config - The SDK config the locks belong to.
57
+ * @param keys - The stream keys the task signs on; duplicates are ignored.
58
+ * @param task - The read-sign-submit critical section.
59
+ *
60
+ * @internal
61
+ */
62
+ export declare function withGaslessNonceLocks<result>(config: Config, keys: readonly string[], task: () => Promise<result>): Promise<result>;
63
+ /** Forget a stream's pending signature. @internal */
64
+ export declare function clearGaslessPendingNonce(config: Config, key: string): void;
65
+ /**
66
+ * Whether a thrown submit error leaves the stream's signed nonce **possibly or
67
+ * certainly consumed**, so the next caller must wait for it instead of signing
68
+ * it again.
69
+ *
70
+ * Three shapes qualify, and the submit path narrows every ambiguity down to
71
+ * them before they get here:
72
+ *
73
+ * - `GASLESS_SUBMIT_UNCONFIRMED` — the transport failed ambiguously, or a
74
+ * `202` carried no `request_id`. Either way the batch may be executing.
75
+ * - `GASLESS_ACCEPTANCE_INVALID` — the parser's own guard for that second case;
76
+ * acceptance is certain and only the handle was lost, which makes the nonce
77
+ * more likely to be consumed, not less.
78
+ * - A `2xx` from the wrong protocol instance — accepted somewhere, so the
79
+ * signature must be treated as spent.
80
+ *
81
+ * Every other failure is a rejection that consumed nothing: the gateway refused
82
+ * the request before the service saw it, or the service answered with a verdict.
83
+ *
84
+ * @param err - Anything caught from a gasless submit.
85
+ * @returns `true` when the stream must stay blocked until the nonce moves or the signature expires.
86
+ *
87
+ * @internal
88
+ */
89
+ export declare function blocksGaslessNonceStream(err: unknown): boolean;
90
+ /**
91
+ * Submit a relay while keeping the stream's pending-signature record honest.
92
+ *
93
+ * The lock only spans the submit, so the nonce a released lock leaves behind is
94
+ * still unconsumed on-chain for as long as the relayer takes to broadcast. This
95
+ * records what was signed so the **next** caller on the stream can wait for it
96
+ * instead of signing the same nonce again.
97
+ *
98
+ * A blocking failure records `requestId: null`: the batch may have been
99
+ * accepted (an ambiguous transport failure) or is known to have been accepted
100
+ * without a trackable id, so the stream stays blocked until the nonce is seen
101
+ * consumed or the signature expires. A definitive rejection records nothing —
102
+ * nothing was accepted, so the nonce is free immediately.
103
+ *
104
+ * @param config - The SDK config.
105
+ * @param key - The stream key the submit was signed on.
106
+ * @param pending - What was signed: the highest nonce, the service, the chain and the signature deadline (seconds).
107
+ * @param submit - Performs the POST and returns the acceptance receipt.
108
+ * @param blocksStream - Whether a thrown error leaves the signed nonce possibly or certainly consumed; pass {@link blocksGaslessNonceStream}.
109
+ * @returns Whatever `submit` resolved with.
110
+ *
111
+ * @internal
112
+ */
113
+ export declare function submitOnGaslessNonceStream<result extends {
114
+ requestId: string;
115
+ }>(config: Config, key: string, pending: {
116
+ signedNonce: bigint;
117
+ service: GaslessService;
118
+ chainId: number;
119
+ deadline: bigint;
120
+ }, submit: () => Promise<result>, blocksStream: (err: unknown) => boolean): Promise<result>;
121
+ /**
122
+ * {@link submitOnGaslessNonceStream} for a submit that signed on **several**
123
+ * streams — one relay request carrying an InstantLayer operation and a
124
+ * GaslessWallet operation, say. Every stream records the same request, because
125
+ * one request consumes all of them or none; each keeps its own highest signed
126
+ * nonce.
127
+ *
128
+ * @param config - The SDK config.
129
+ * @param streams - Each stream the submit signed on, with the highest nonce it signed there.
130
+ * @param pending - The service, the chain and the signature deadline (seconds), shared by every stream.
131
+ * @param submit - Performs the POST and returns the acceptance receipt.
132
+ * @param blocksStream - Whether a thrown error leaves the signed nonces possibly or certainly consumed; pass {@link blocksGaslessNonceStream}.
133
+ * @returns Whatever `submit` resolved with.
134
+ *
135
+ * @internal
136
+ */
137
+ export declare function submitOnGaslessNonceStreams<result extends {
138
+ requestId: string;
139
+ }>(config: Config, streams: readonly {
140
+ key: string;
141
+ signedNonce: bigint;
142
+ }[], pending: {
143
+ service: GaslessService;
144
+ chainId: number;
145
+ deadline: bigint;
146
+ }, submit: () => Promise<result>, blocksStream: (err: unknown) => boolean): Promise<result>;
147
+ /**
148
+ * Read a stream's consumed nonce, waiting first for anything this SDK already
149
+ * signed on it and has not seen land.
150
+ *
151
+ * The relayer forwards signed nonces; it never reserves, replaces or repairs
152
+ * them. So signing `consumed + 1` while an earlier signature for that same
153
+ * nonce is still in flight guarantees that one of the two reverts. Rather than
154
+ * hold the lock for the whole broadcast (which would stall every later write
155
+ * behind a slow relay), the lock is released at the `202` and the wait happens
156
+ * lazily here, only when a new caller actually needs the stream.
157
+ *
158
+ * Waiting ends as soon as the pending request reaches **any** terminal status —
159
+ * a failed one frees the nonce, a successful one advances it — or as soon as
160
+ * the nonce is observed to have moved past what was signed. The budget is
161
+ * `min(signature deadline, 120 s)`: past the deadline the signature can never
162
+ * land, so the nonce is free.
163
+ *
164
+ * A successful terminal advances the stream without waiting for this RPC to
165
+ * see the block. `succeeded` is the relayer's node's view and a public RPC can
166
+ * trail it, so the signed nonce becomes a floor under every later read on the
167
+ * stream; the relayer simulates the next submit against its own node, which
168
+ * already has the block.
169
+ *
170
+ * @param config - The SDK config.
171
+ * @param key - The stream key.
172
+ * @param readConsumedNonce - Reads the stream's consumed nonce on-chain.
173
+ * @returns The consumed nonce to sign from (sign `+ 1n`).
174
+ * @throws {SymmError} `GASLESS_NONCE_STREAM_BUSY` when the budget runs out with a signature
175
+ * still unaccounted for — signing now would collide with it.
176
+ *
177
+ * @internal
178
+ */
179
+ export declare function readGaslessStreamNonce(config: Config, key: string, readConsumedNonce: () => Promise<bigint>): Promise<bigint>;
180
+ //# sourceMappingURL=nonce-lock.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"nonce-lock.d.ts","sourceRoot":"","sources":["../../src/gasless/nonce-lock.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,gBAAgB,CAAC;AAI7C,OAAO,EAA6C,KAAK,cAAc,EAAE,MAAM,SAAS,CAAC;AAiBzF;;;;;;;;;GASG;AACH,wBAAgB,4BAA4B,CAAC,OAAO,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,GAAG,MAAM,CAE3F;AAED;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAgB,2BAA2B,CACzC,OAAO,EAAE,MAAM,EACf,QAAQ,EAAE,MAAM,EAChB,KAAK,EAAE,MAAM,EACb,aAAa,EAAE,MAAM,GACpB,MAAM,CAKR;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,oBAAoB,CAAC,MAAM,EACzC,MAAM,EAAE,MAAM,EACd,GAAG,EAAE,MAAM,EACX,IAAI,EAAE,MAAM,OAAO,CAAC,MAAM,CAAC,GAC1B,OAAO,CAAC,MAAM,CAAC,CAEjB;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,qBAAqB,CAAC,MAAM,EAC1C,MAAM,EAAE,MAAM,EACd,IAAI,EAAE,SAAS,MAAM,EAAE,EACvB,IAAI,EAAE,MAAM,OAAO,CAAC,MAAM,CAAC,GAC1B,OAAO,CAAC,MAAM,CAAC,CAwBjB;AAkDD,qDAAqD;AACrD,wBAAgB,wBAAwB,CAAC,MAAM,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,IAAI,CAE1E;AAiBD;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,wBAAgB,wBAAwB,CAAC,GAAG,EAAE,OAAO,GAAG,OAAO,CAM9D;AAED;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,wBAAgB,0BAA0B,CAAC,MAAM,SAAS;IAAE,SAAS,EAAE,MAAM,CAAA;CAAE,EAC7E,MAAM,EAAE,MAAM,EACd,GAAG,EAAE,MAAM,EACX,OAAO,EAAE;IAAE,WAAW,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,cAAc,CAAC;IAAC,OAAO,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAA;CAAE,EAC5F,MAAM,EAAE,MAAM,OAAO,CAAC,MAAM,CAAC,EAC7B,YAAY,EAAE,CAAC,GAAG,EAAE,OAAO,KAAK,OAAO,GACtC,OAAO,CAAC,MAAM,CAAC,CAQjB;AAED;;;;;;;;;;;;;;;GAeG;AACH,wBAAsB,2BAA2B,CAAC,MAAM,SAAS;IAAE,SAAS,EAAE,MAAM,CAAA;CAAE,EACpF,MAAM,EAAE,MAAM,EACd,OAAO,EAAE,SAAS;IAAE,GAAG,EAAE,MAAM,CAAC;IAAC,WAAW,EAAE,MAAM,CAAA;CAAE,EAAE,EACxD,OAAO,EAAE;IAAE,OAAO,EAAE,cAAc,CAAC;IAAC,OAAO,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAA;CAAE,EACvE,MAAM,EAAE,MAAM,OAAO,CAAC,MAAM,CAAC,EAC7B,YAAY,EAAE,CAAC,GAAG,EAAE,OAAO,KAAK,OAAO,GACtC,OAAO,CAAC,MAAM,CAAC,CAwBjB;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+BG;AACH,wBAAsB,sBAAsB,CAC1C,MAAM,EAAE,MAAM,EACd,GAAG,EAAE,MAAM,EACX,iBAAiB,EAAE,MAAM,OAAO,CAAC,MAAM,CAAC,GACvC,OAAO,CAAC,MAAM,CAAC,CAkEjB"}
@@ -0,0 +1,102 @@
1
+ import { SymmError as e } from "../shared/errors/symm-error.js";
2
+ import { getGaslessUnconfirmedSubmit as t } from "./unconfirmed-submit.js";
3
+ import { isGaslessAcceptedInstanceMismatchError as n } from "./http.js";
4
+ import { GaslessRequestStatus as r } from "./types.js";
5
+ import { isGaslessAcceptanceInvalidError as i } from "./to-gasless-submit-receipt.js";
6
+ import { waitForGaslessRequest as a } from "./wait-for-gasless-request/wait-for-gasless-request.js";
7
+ //#region src/gasless/nonce-lock.ts
8
+ var o = /* @__PURE__ */ new WeakMap();
9
+ function s(e, t) {
10
+ return `${e}:instant:${t.toLowerCase()}`;
11
+ }
12
+ function c(e, t, n, r) {
13
+ let i = r.toLowerCase();
14
+ return t === 0n ? `${e}:wallet:0:${i}` : `${e}:wallet:${t}:${n.toLowerCase()}:${i}`;
15
+ }
16
+ function l(e, t, n) {
17
+ return u(e, [t], n);
18
+ }
19
+ function u(e, t, n) {
20
+ let r = o.get(e);
21
+ r || (r = /* @__PURE__ */ new Map(), o.set(e, r));
22
+ let i = r, a = [...new Set(t)], s = Promise.all(a.map((e) => i.get(e) ?? Promise.resolve())).then(n, n), c = s.then(() => void 0, () => void 0);
23
+ for (let e of a) i.set(e, c);
24
+ return c.then(() => {
25
+ for (let e of a) i.get(e) === c && i.delete(e);
26
+ }), s;
27
+ }
28
+ var d = /* @__PURE__ */ new WeakMap(), f = /* @__PURE__ */ new WeakMap(), p = 12e4, m = 1500;
29
+ function h(e) {
30
+ let t = d.get(e);
31
+ return t || (t = /* @__PURE__ */ new Map(), d.set(e, t)), t;
32
+ }
33
+ function g(e, t) {
34
+ d.get(e)?.delete(t);
35
+ }
36
+ function _(e, t, n) {
37
+ let r = f.get(e);
38
+ r || (r = /* @__PURE__ */ new Map(), f.set(e, r));
39
+ let i = r.get(t);
40
+ (i === void 0 || n > i) && r.set(t, n);
41
+ }
42
+ function v(e) {
43
+ return new Promise((t) => setTimeout(t, e));
44
+ }
45
+ function y(e) {
46
+ return t(e) !== null || i(e) || n(e);
47
+ }
48
+ function b(e, t, n, r, i) {
49
+ return x(e, [{
50
+ key: t,
51
+ signedNonce: n.signedNonce
52
+ }], n, r, i);
53
+ }
54
+ async function x(e, t, n, r, i) {
55
+ let a = Number(n.deadline) * 1e3, o = (r) => {
56
+ for (let i of t) h(e).set(i.key, {
57
+ signedNonce: i.signedNonce,
58
+ requestId: r,
59
+ service: n.service,
60
+ chainId: n.chainId,
61
+ expiresAtMs: a
62
+ });
63
+ }, s;
64
+ try {
65
+ s = await r();
66
+ } catch (e) {
67
+ throw i(e) && o(null), e;
68
+ }
69
+ return o(s.requestId), s;
70
+ }
71
+ async function S(t, n, i) {
72
+ let o = async () => {
73
+ let e = await i(), r = f.get(t)?.get(n);
74
+ return r !== void 0 && r > e ? r : e;
75
+ }, s = await o(), c = h(t).get(n);
76
+ if (!c) return s;
77
+ let l = Math.min(c.expiresAtMs, Date.now() + p);
78
+ if (c.signedNonce <= s || l <= Date.now()) return g(t, n), s;
79
+ if (c.requestId !== null) {
80
+ let e = null;
81
+ try {
82
+ e = await a(t, {
83
+ chainId: c.chainId,
84
+ requestId: c.requestId,
85
+ service: c.service,
86
+ until: "terminal",
87
+ timeoutMs: l - Date.now()
88
+ });
89
+ } catch {}
90
+ if (e !== null) return e.status === r.SUCCEEDED && _(t, n, c.signedNonce), g(t, n), await o();
91
+ }
92
+ for (; Date.now() < l;) {
93
+ await v(m);
94
+ let e = await o();
95
+ if (e >= c.signedNonce) return g(t, n), e;
96
+ }
97
+ throw new e("api", "GASLESS_NONCE_STREAM_BUSY", `Gasless: nonce ${c.signedNonce} was signed on this stream${c.requestId ? ` for request ${c.requestId}` : " for a submit that returned no trackable request id"} and has not landed yet. Signing now would collide with it — wait for that request to finish, or for its deadline to pass, before retrying.`);
98
+ }
99
+ //#endregion
100
+ export { y as blocksGaslessNonceStream, s as gaslessInstantNonceStreamKey, c as gaslessWalletNonceStreamKey, S as readGaslessStreamNonce, b as submitOnGaslessNonceStream, x as submitOnGaslessNonceStreams, l as withGaslessNonceLock, u as withGaslessNonceLocks };
101
+
102
+ //# sourceMappingURL=nonce-lock.js.map