@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
@@ -31,13 +31,21 @@ export interface ConfigKeyParameter {
31
31
  configKey?: string;
32
32
  }
33
33
  /**
34
- * Optional sender mixin for simulations. `from` is the address a dry-run
35
- * (`simulateContract`) executes as — it becomes `msg.sender` for the call. When
36
- * omitted, viem simulates from the zero address. Named `from` (not `account`) so
37
- * it never collides with an action's own `account` / `user` parameter.
34
+ * Optional sender mixin. Named `from` (not `account`) so it never collides with
35
+ * an action's own `account` / `user` parameter. It plays three roles:
36
+ *
37
+ * - **Simulations** — the address a dry-run (`simulateContract`) executes as, so
38
+ * it becomes `msg.sender`. Omitted, viem simulates from the zero address; the
39
+ * React `useSimulate*` hooks default it to the connected address.
40
+ * - **Writes** — a hint handed to `config.getWalletClient({ chainId, from })`.
41
+ * The write hooks forward it but never default it, so a consumer's own
42
+ * multi-signer resolver keeps whatever default it chose.
43
+ * - **Relayed writes** — the wallet that resolver returns signs the InstantLayer
44
+ * operation, so `from` selects the EIP-712 `signer`. That is separate from the
45
+ * billing sub-account, which comes from the action (or `gasless.account`).
38
46
  */
39
47
  export interface FromParameter {
40
- /** Address the simulation runs as (becomes `msg.sender`). Defaults to the connected wallet in the React layer. */
48
+ /** Address the call runs as: simulation `msg.sender`, wallet-client hint on a write, EIP-712 signer on a relay. */
41
49
  from?: Address;
42
50
  }
43
51
  /**
@@ -83,6 +91,46 @@ export type ReadSolverParameter = ChainIdParameter & SolverIdParameter;
83
91
  * ```
84
92
  */
85
93
  export type WriteContractParameter = ChainIdParameter & FromParameter & SimulateBeforeWriteParameter;
94
+ /**
95
+ * Per-call overrides for the transparent gasless execution mode.
96
+ *
97
+ * @remarks
98
+ * There is deliberately no `idempotencyKey`: a relayed write signs a fresh
99
+ * operation on every call, so one key can only ever describe one signature.
100
+ * The dispatcher mints it, puts it on the acceptance event and the receipt, and
101
+ * `resubmitGaslessRequest` is what replays a submit whose response was lost.
102
+ */
103
+ export interface GaslessWriteOptions {
104
+ /** Force this call onto (`true`) or off (`false`) the gasless relay, overriding the config default. */
105
+ enabled?: boolean;
106
+ /**
107
+ * Pre-acceptance failure policy for this call: `"error"` throws a typed
108
+ * error, `"wallet"` falls back to the gas-paid wallet path. After the relay
109
+ * accepts (HTTP 202) no fallback ever happens.
110
+ */
111
+ fallback?: "error" | "wallet";
112
+ /**
113
+ * Billing/authority sub-account for the relayed operation, for actions whose
114
+ * parameters do not carry it (`addMargin` / `removeMargin` receive only the
115
+ * virtual account — the SDK otherwise resolves the parent on-chain).
116
+ */
117
+ account?: Address;
118
+ /** Max wait for the relayer to broadcast before timing out this call. */
119
+ broadcastTimeoutMs?: number;
120
+ /** Abort the relay wait (the accepted request keeps running server-side). */
121
+ signal?: AbortSignal;
122
+ }
123
+ /**
124
+ * Opt-in mixin for contract writes the gasless relay can carry. `gasless` is a
125
+ * boolean for the common case or a {@link GaslessWriteOptions} bag for per-call
126
+ * overrides; omitted, the chain config's `gasless.execution.mode` decides.
127
+ * Only relayable writes accept this parameter — its absence from an action's
128
+ * type means the action always uses the wallet path.
129
+ */
130
+ export interface GaslessWriteParameter {
131
+ /** Relay this write through the gasless service instead of the wallet. */
132
+ gasless?: boolean | GaslessWriteOptions;
133
+ }
86
134
  /**
87
135
  * Standard mixin set every off-chain solver/hedger write action accepts.
88
136
  *
@@ -1 +1 @@
1
- {"version":3,"file":"properties.d.ts","sourceRoot":"","sources":["../../../src/shared/types/properties.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,MAAM,CAAC;AACpC,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAEhE;;;;;GAKG;AACH,MAAM,MAAM,OAAO,CAAC,IAAI,IAAI;KAAG,GAAG,IAAI,MAAM,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC;CAAE,GAAG,OAAO,CAAC;AAEzE;;;GAGG;AACH,MAAM,WAAW,gBAAgB;IAC/B,+EAA+E;IAC/E,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED;;;;;;;;GAQG;AACH,MAAM,WAAW,kBAAkB;IACjC,uFAAuF;IACvF,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED;;;;;GAKG;AACH,MAAM,WAAW,aAAa;IAC5B,kHAAkH;IAClH,IAAI,CAAC,EAAE,OAAO,CAAC;CAChB;AAED;;;;;;GAMG;AACH,MAAM,WAAW,4BAA4B;IAC3C,mJAAmJ;IACnJ,mBAAmB,CAAC,EAAE,OAAO,CAAC;CAC/B;AAED;;;;;GAKG;AACH,MAAM,WAAW,iBAAiB;IAChC,qEAAqE;IACrE,QAAQ,CAAC,EAAE,gBAAgB,CAAC;CAC7B;AAED;;;GAGG;AACH,MAAM,MAAM,mBAAmB,GAAG,gBAAgB,GAAG,iBAAiB,CAAC;AAEvE;;;;;;;;;;;;;;;GAeG;AACH,MAAM,MAAM,sBAAsB,GAAG,gBAAgB,GAAG,aAAa,GAAG,4BAA4B,CAAC;AAErG;;;;;;;;;;;;;;;;;GAiBG;AACH,MAAM,MAAM,oBAAoB,GAAG,gBAAgB,GAAG,aAAa,GAAG,iBAAiB,CAAC;AAExF;;;GAGG;AACH,MAAM,MAAM,YAAY,CAAC,IAAI,IAAI;KAC9B,GAAG,IAAI,MAAM,IAAI,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,GAAG,SAAS;CAC5C,CAAC;AAEF;;;;;;;GAOG;AACH,MAAM,MAAM,WAAW,CAAC,IAAI,IAAI,IAAI,SAAS,SAAS,OAAO,EAAE,GAC3D,IAAI,GACJ,IAAI,SAAS,MAAM,GACjB;KAAG,GAAG,IAAI,MAAM,IAAI,CAAC,CAAC,EAAE,WAAW,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;CAAE,GAChD,IAAI,CAAC"}
1
+ {"version":3,"file":"properties.d.ts","sourceRoot":"","sources":["../../../src/shared/types/properties.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,MAAM,CAAC;AACpC,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAEhE;;;;;GAKG;AACH,MAAM,MAAM,OAAO,CAAC,IAAI,IAAI;KAAG,GAAG,IAAI,MAAM,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC;CAAE,GAAG,OAAO,CAAC;AAEzE;;;GAGG;AACH,MAAM,WAAW,gBAAgB;IAC/B,+EAA+E;IAC/E,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED;;;;;;;;GAQG;AACH,MAAM,WAAW,kBAAkB;IACjC,uFAAuF;IACvF,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED;;;;;;;;;;;;;GAaG;AACH,MAAM,WAAW,aAAa;IAC5B,mHAAmH;IACnH,IAAI,CAAC,EAAE,OAAO,CAAC;CAChB;AAED;;;;;;GAMG;AACH,MAAM,WAAW,4BAA4B;IAC3C,mJAAmJ;IACnJ,mBAAmB,CAAC,EAAE,OAAO,CAAC;CAC/B;AAED;;;;;GAKG;AACH,MAAM,WAAW,iBAAiB;IAChC,qEAAqE;IACrE,QAAQ,CAAC,EAAE,gBAAgB,CAAC;CAC7B;AAED;;;GAGG;AACH,MAAM,MAAM,mBAAmB,GAAG,gBAAgB,GAAG,iBAAiB,CAAC;AAEvE;;;;;;;;;;;;;;;GAeG;AACH,MAAM,MAAM,sBAAsB,GAAG,gBAAgB,GAAG,aAAa,GAAG,4BAA4B,CAAC;AAErG;;;;;;;;GAQG;AACH,MAAM,WAAW,mBAAmB;IAClC,uGAAuG;IACvG,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB;;;;OAIG;IACH,QAAQ,CAAC,EAAE,OAAO,GAAG,QAAQ,CAAC;IAC9B;;;;OAIG;IACH,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,yEAAyE;IACzE,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,6EAA6E;IAC7E,MAAM,CAAC,EAAE,WAAW,CAAC;CACtB;AAED;;;;;;GAMG;AACH,MAAM,WAAW,qBAAqB;IACpC,0EAA0E;IAC1E,OAAO,CAAC,EAAE,OAAO,GAAG,mBAAmB,CAAC;CACzC;AAED;;;;;;;;;;;;;;;;;GAiBG;AACH,MAAM,MAAM,oBAAoB,GAAG,gBAAgB,GAAG,aAAa,GAAG,iBAAiB,CAAC;AAExF;;;GAGG;AACH,MAAM,MAAM,YAAY,CAAC,IAAI,IAAI;KAC9B,GAAG,IAAI,MAAM,IAAI,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,GAAG,SAAS;CAC5C,CAAC;AAEF;;;;;;;GAOG;AACH,MAAM,MAAM,WAAW,CAAC,IAAI,IAAI,IAAI,SAAS,SAAS,OAAO,EAAE,GAC3D,IAAI,GACJ,IAAI,SAAS,MAAM,GACjB;KAAG,GAAG,IAAI,MAAM,IAAI,CAAC,CAAC,EAAE,WAAW,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;CAAE,GAChD,IAAI,CAAC"}
@@ -0,0 +1,82 @@
1
+ /**
2
+ * Options for {@link core18ToCollateral}.
3
+ */
4
+ export interface Core18ToCollateralOptions {
5
+ /**
6
+ * Which way to round an amount that does not fit the collateral token's
7
+ * decimals.
8
+ *
9
+ * - `"up"` rounds toward positive infinity. Use it for anything that has to
10
+ * be funded — a fee, a shortfall, a required balance — so the token amount
11
+ * is never short. It matches the `(fee18 + scale - 1n) / scale` funding rule.
12
+ * - `"down"` rounds toward negative infinity. Use it for an amount that must
13
+ * not be overstated, such as a balance you display or pay out.
14
+ *
15
+ * Both agree whenever the amount converts exactly.
16
+ *
17
+ * @default "up"
18
+ */
19
+ rounding?: "up" | "down";
20
+ }
21
+ /**
22
+ * Scale a collateral-token amount up to SYMMIO Core's 18-decimal units.
23
+ *
24
+ * Two scales meet at every funding boundary. Token transfers, deposit and
25
+ * withdrawal amounts, and a GaslessLayer's `depositFee`, `minimumDeposit` and
26
+ * wallet creation fee use the **collateral token's decimals**. Core balances,
27
+ * operational-fee allowances and every `GaslessFeeQuote` amount use **18
28
+ * decimals**. Convert before comparing or adding values across the two: mixing
29
+ * them is off by a factor of `10^(18 − collateralDecimals)`.
30
+ *
31
+ * The conversion is exact, because Core only accepts collateral tokens with at
32
+ * most 18 decimals.
33
+ *
34
+ * @param amount - Amount in the collateral token's base units, e.g. `1_000000n`
35
+ * for 1 USDC.
36
+ * @param collateralDecimals - The collateral token's decimals, an integer from 0
37
+ * to 18 — `config.getChainConfig(chainId).addresses.collateralDecimals`, or
38
+ * `GaslessFeeQuote.collateralDecimals`.
39
+ * @returns The same amount in 18-decimal Core units.
40
+ * @throws {SymmError} `COLLATERAL_DECIMALS_UNSUPPORTED` (`kind: "validation"`)
41
+ * when `collateralDecimals` is not an integer from 0 to 18.
42
+ *
43
+ * @example
44
+ * ```ts
45
+ * collateralToCore18(1_000000n, 6); // 1_000000000000000000n — 1 USDC in Core units
46
+ *
47
+ * // A relayed withdrawal needs the amount and its fee from the same Core balance.
48
+ * const required18 = collateralToCore18(amount, collateralDecimals) + fee18;
49
+ * ```
50
+ */
51
+ export declare function collateralToCore18(amount: bigint, collateralDecimals: number): bigint;
52
+ /**
53
+ * Scale an 18-decimal SYMMIO Core amount down to the collateral token's base
54
+ * units.
55
+ *
56
+ * Core balances, operational-fee allowances and `GaslessFeeQuote` amounts are
57
+ * 18-decimal. A token transfer or a raw token balance is not. When the amount
58
+ * has more precision than the token can hold, the remainder is rounded **up** by
59
+ * default, so a fee converted into the tokens that must be sent to cover it is
60
+ * never short. Pass `rounding: "down"` for an amount that must not be
61
+ * overstated.
62
+ *
63
+ * @param amount18 - Amount in 18-decimal Core units.
64
+ * @param collateralDecimals - The collateral token's decimals, an integer from 0
65
+ * to 18 — `config.getChainConfig(chainId).addresses.collateralDecimals`, or
66
+ * `GaslessFeeQuote.collateralDecimals`.
67
+ * @param options - Rounding direction; see {@link Core18ToCollateralOptions}.
68
+ * @returns The amount in the collateral token's base units.
69
+ * @throws {SymmError} `COLLATERAL_DECIMALS_UNSUPPORTED` (`kind: "validation"`)
70
+ * when `collateralDecimals` is not an integer from 0 to 18.
71
+ *
72
+ * @example
73
+ * ```ts
74
+ * core18ToCollateral(50_000_000_000_000_000n, 6); // 50_000n — 0.05 USDC, exact
75
+ * core18ToCollateral(1_000000000000000001n, 6); // 1_000001n — rounded up
76
+ * core18ToCollateral(1_000000000000000001n, 6, { rounding: "down" }); // 1_000000n
77
+ *
78
+ * const feeInTokenUnits = core18ToCollateral(quote.totalFee18, quote.collateralDecimals);
79
+ * ```
80
+ */
81
+ export declare function core18ToCollateral(amount18: bigint, collateralDecimals: number, options?: Core18ToCollateralOptions): bigint;
82
+ //# sourceMappingURL=core-units.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"core-units.d.ts","sourceRoot":"","sources":["../../../src/shared/utils/core-units.ts"],"names":[],"mappings":"AAKA;;GAEG;AACH,MAAM,WAAW,yBAAyB;IACxC;;;;;;;;;;;;;OAaG;IACH,QAAQ,CAAC,EAAE,IAAI,GAAG,MAAM,CAAC;CAC1B;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6BG;AACH,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,MAAM,EAAE,kBAAkB,EAAE,MAAM,GAAG,MAAM,CAErF;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AACH,wBAAgB,kBAAkB,CAChC,QAAQ,EAAE,MAAM,EAChB,kBAAkB,EAAE,MAAM,EAC1B,OAAO,CAAC,EAAE,yBAAyB,GAClC,MAAM,CAOR"}
@@ -0,0 +1,21 @@
1
+ import { SymmError as e } from "../errors/symm-error.js";
2
+ //#region src/shared/utils/core-units.ts
3
+ var t = 18;
4
+ function n(e, t) {
5
+ return e * i(t, "collateralToCore18");
6
+ }
7
+ function r(e, t, n) {
8
+ let r = i(t, "core18ToCollateral"), a = e / r;
9
+ return a * r === e ? a : n?.rounding === "down" ? e < 0n ? a - 1n : a : e > 0n ? a + 1n : a;
10
+ }
11
+ function i(n, r) {
12
+ if (!Number.isInteger(n) || n < 0 || n > t) throw new e("validation", "COLLATERAL_DECIMALS_UNSUPPORTED", `${r}: collateralDecimals must be an integer from 0 to ${t}; got ${a(n)}. SYMMIO Core accepts no collateral token with more than 18 decimals.`);
13
+ return 10n ** BigInt(t - n);
14
+ }
15
+ function a(e) {
16
+ return typeof e == "string" ? JSON.stringify(e) : typeof e == "bigint" ? `${e}n` : String(e);
17
+ }
18
+ //#endregion
19
+ export { n as collateralToCore18, r as core18ToCollateral };
20
+
21
+ //# sourceMappingURL=core-units.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"core-units.js","names":[],"sources":["../../../src/shared/utils/core-units.ts"],"sourcesContent":["import { SymmError } from \"../errors/symm-error\";\n\n/** Decimal places of every SYMMIO Core amount: balances, operational-fee allowances and fee quotes. */\nconst CORE_DECIMALS = 18;\n\n/**\n * Options for {@link core18ToCollateral}.\n */\nexport interface Core18ToCollateralOptions {\n /**\n * Which way to round an amount that does not fit the collateral token's\n * decimals.\n *\n * - `\"up\"` rounds toward positive infinity. Use it for anything that has to\n * be funded — a fee, a shortfall, a required balance — so the token amount\n * is never short. It matches the `(fee18 + scale - 1n) / scale` funding rule.\n * - `\"down\"` rounds toward negative infinity. Use it for an amount that must\n * not be overstated, such as a balance you display or pay out.\n *\n * Both agree whenever the amount converts exactly.\n *\n * @default \"up\"\n */\n rounding?: \"up\" | \"down\";\n}\n\n/**\n * Scale a collateral-token amount up to SYMMIO Core's 18-decimal units.\n *\n * Two scales meet at every funding boundary. Token transfers, deposit and\n * withdrawal amounts, and a GaslessLayer's `depositFee`, `minimumDeposit` and\n * wallet creation fee use the **collateral token's decimals**. Core balances,\n * operational-fee allowances and every `GaslessFeeQuote` amount use **18\n * decimals**. Convert before comparing or adding values across the two: mixing\n * them is off by a factor of `10^(18 − collateralDecimals)`.\n *\n * The conversion is exact, because Core only accepts collateral tokens with at\n * most 18 decimals.\n *\n * @param amount - Amount in the collateral token's base units, e.g. `1_000000n`\n * for 1 USDC.\n * @param collateralDecimals - The collateral token's decimals, an integer from 0\n * to 18 — `config.getChainConfig(chainId).addresses.collateralDecimals`, or\n * `GaslessFeeQuote.collateralDecimals`.\n * @returns The same amount in 18-decimal Core units.\n * @throws {SymmError} `COLLATERAL_DECIMALS_UNSUPPORTED` (`kind: \"validation\"`)\n * when `collateralDecimals` is not an integer from 0 to 18.\n *\n * @example\n * ```ts\n * collateralToCore18(1_000000n, 6); // 1_000000000000000000n — 1 USDC in Core units\n *\n * // A relayed withdrawal needs the amount and its fee from the same Core balance.\n * const required18 = collateralToCore18(amount, collateralDecimals) + fee18;\n * ```\n */\nexport function collateralToCore18(amount: bigint, collateralDecimals: number): bigint {\n return amount * coreUnitScale(collateralDecimals, \"collateralToCore18\");\n}\n\n/**\n * Scale an 18-decimal SYMMIO Core amount down to the collateral token's base\n * units.\n *\n * Core balances, operational-fee allowances and `GaslessFeeQuote` amounts are\n * 18-decimal. A token transfer or a raw token balance is not. When the amount\n * has more precision than the token can hold, the remainder is rounded **up** by\n * default, so a fee converted into the tokens that must be sent to cover it is\n * never short. Pass `rounding: \"down\"` for an amount that must not be\n * overstated.\n *\n * @param amount18 - Amount in 18-decimal Core units.\n * @param collateralDecimals - The collateral token's decimals, an integer from 0\n * to 18 — `config.getChainConfig(chainId).addresses.collateralDecimals`, or\n * `GaslessFeeQuote.collateralDecimals`.\n * @param options - Rounding direction; see {@link Core18ToCollateralOptions}.\n * @returns The amount in the collateral token's base units.\n * @throws {SymmError} `COLLATERAL_DECIMALS_UNSUPPORTED` (`kind: \"validation\"`)\n * when `collateralDecimals` is not an integer from 0 to 18.\n *\n * @example\n * ```ts\n * core18ToCollateral(50_000_000_000_000_000n, 6); // 50_000n — 0.05 USDC, exact\n * core18ToCollateral(1_000000000000000001n, 6); // 1_000001n — rounded up\n * core18ToCollateral(1_000000000000000001n, 6, { rounding: \"down\" }); // 1_000000n\n *\n * const feeInTokenUnits = core18ToCollateral(quote.totalFee18, quote.collateralDecimals);\n * ```\n */\nexport function core18ToCollateral(\n amount18: bigint,\n collateralDecimals: number,\n options?: Core18ToCollateralOptions,\n): bigint {\n const scale = coreUnitScale(collateralDecimals, \"core18ToCollateral\");\n /** bigint division truncates toward zero: the ceiling of a negative amount, the floor of a positive one. */\n const truncated = amount18 / scale;\n if (truncated * scale === amount18) return truncated;\n if (options?.rounding === \"down\") return amount18 < 0n ? truncated - 1n : truncated;\n return amount18 > 0n ? truncated + 1n : truncated;\n}\n\n/**\n * The factor between a collateral token's base units and Core's 18-decimal\n * units, `10^(18 − collateralDecimals)`.\n *\n * @param collateralDecimals - The collateral token's decimals.\n * @param caller - The public helper's name, for the error message.\n * @returns The scale factor.\n * @throws {SymmError} `COLLATERAL_DECIMALS_UNSUPPORTED` when the decimals are\n * not an integer from 0 to 18.\n */\nfunction coreUnitScale(collateralDecimals: number, caller: string): bigint {\n if (!Number.isInteger(collateralDecimals) || collateralDecimals < 0 || collateralDecimals > CORE_DECIMALS) {\n throw new SymmError(\n \"validation\",\n \"COLLATERAL_DECIMALS_UNSUPPORTED\",\n `${caller}: collateralDecimals must be an integer from 0 to ${CORE_DECIMALS}; got ${describeDecimals(collateralDecimals)}. SYMMIO Core accepts no collateral token with more than 18 decimals.`,\n );\n }\n return 10n ** BigInt(CORE_DECIMALS - collateralDecimals);\n}\n\n/**\n * Render a rejected `collateralDecimals` so a string or bigint passed from\n * untyped code is distinguishable from the number it resembles.\n *\n * @param value - The rejected value.\n * @returns A short description, e.g. `6.5`, `\"6\"` or `6n`.\n */\nfunction describeDecimals(value: unknown): string {\n if (typeof value === \"string\") return JSON.stringify(value);\n if (typeof value === \"bigint\") return `${value}n`;\n return String(value);\n}\n"],"mappings":";;AAGA,IAAM,IAAgB;AAqDtB,SAAgB,EAAmB,GAAgB,GAAoC;CACrF,OAAO,IAAS,EAAc,GAAoB,oBAAoB;AACxE;AA+BA,SAAgB,EACd,GACA,GACA,GACQ;CACR,IAAM,IAAQ,EAAc,GAAoB,oBAAoB,GAE9D,IAAY,IAAW;CAG7B,OAFI,IAAY,MAAU,IAAiB,IACvC,GAAS,aAAa,SAAe,IAAW,KAAK,IAAY,KAAK,IACnE,IAAW,KAAK,IAAY,KAAK;AAC1C;AAYA,SAAS,EAAc,GAA4B,GAAwB;CACzE,IAAI,CAAC,OAAO,UAAU,CAAkB,KAAK,IAAqB,KAAK,IAAqB,GAC1F,MAAM,IAAI,EACR,cACA,mCACA,GAAG,EAAO,oDAAoD,EAAc,QAAQ,EAAiB,CAAkB,EAAE,sEAC3H;CAEF,OAAO,OAAO,OAAO,IAAgB,CAAkB;AACzD;AASA,SAAS,EAAiB,GAAwB;CAGhD,OAFI,OAAO,KAAU,WAAiB,KAAK,UAAU,CAAK,IACtD,OAAO,KAAU,WAAiB,GAAG,EAAM,KACxC,OAAO,CAAK;AACrB"}
@@ -0,0 +1,16 @@
1
+ /**
2
+ * Read one HTTP header from a response-headers bag, ignoring case.
3
+ *
4
+ * Axios hands back an `AxiosHeaders` instance, while adapters and test doubles
5
+ * may pass a plain object in any casing. Both expose each header as an own
6
+ * enumerable property, so one scan covers them without importing axios at
7
+ * runtime. A repeated header yields its first value.
8
+ *
9
+ * @param headers - The response headers as the HTTP client exposes them (any shape).
10
+ * @param name - The header name, in any casing.
11
+ * @returns The header's value, or `undefined` when it is absent or not a string or finite number.
12
+ *
13
+ * @internal
14
+ */
15
+ export declare function readHttpHeader(headers: unknown, name: string): string | undefined;
16
+ //# sourceMappingURL=http-header.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"http-header.d.ts","sourceRoot":"","sources":["../../../src/shared/utils/http-header.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AACH,wBAAgB,cAAc,CAAC,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAWjF"}
@@ -0,0 +1,14 @@
1
+ //#region src/shared/utils/http-header.ts
2
+ function e(e, t) {
3
+ if (typeof e != "object" || !e) return;
4
+ let n = t.toLowerCase();
5
+ for (let [t, r] of Object.entries(e)) {
6
+ if (t.toLowerCase() !== n) continue;
7
+ let e = Array.isArray(r) ? r[0] : r;
8
+ return typeof e == "string" ? e : typeof e == "number" && Number.isFinite(e) ? String(e) : void 0;
9
+ }
10
+ }
11
+ //#endregion
12
+ export { e as readHttpHeader };
13
+
14
+ //# sourceMappingURL=http-header.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"http-header.js","names":[],"sources":["../../../src/shared/utils/http-header.ts"],"sourcesContent":["/**\n * Read one HTTP header from a response-headers bag, ignoring case.\n *\n * Axios hands back an `AxiosHeaders` instance, while adapters and test doubles\n * may pass a plain object in any casing. Both expose each header as an own\n * enumerable property, so one scan covers them without importing axios at\n * runtime. A repeated header yields its first value.\n *\n * @param headers - The response headers as the HTTP client exposes them (any shape).\n * @param name - The header name, in any casing.\n * @returns The header's value, or `undefined` when it is absent or not a string or finite number.\n *\n * @internal\n */\nexport function readHttpHeader(headers: unknown, name: string): string | undefined {\n if (headers === null || typeof headers !== \"object\") return undefined;\n const wanted = name.toLowerCase();\n for (const [key, value] of Object.entries(headers)) {\n if (key.toLowerCase() !== wanted) continue;\n const first: unknown = Array.isArray(value) ? value[0] : value;\n if (typeof first === \"string\") return first;\n if (typeof first === \"number\" && Number.isFinite(first)) return String(first);\n return undefined;\n }\n return undefined;\n}\n"],"mappings":";AAcA,SAAgB,EAAe,GAAkB,GAAkC;CACjF,IAAwB,OAAO,KAAY,aAAvC,GAAiD;CACrD,IAAM,IAAS,EAAK,YAAY;CAChC,KAAK,IAAM,CAAC,GAAK,MAAU,OAAO,QAAQ,CAAO,GAAG;EAClD,IAAI,EAAI,YAAY,MAAM,GAAQ;EAClC,IAAM,IAAiB,MAAM,QAAQ,CAAK,IAAI,EAAM,KAAK;EAGzD,OAFI,OAAO,KAAU,WAAiB,IAClC,OAAO,KAAU,YAAY,OAAO,SAAS,CAAK,IAAU,OAAO,CAAK,IAC5E;CACF;AAEF"}
@@ -3,7 +3,8 @@ var e = new Set([
3
3
  "query",
4
4
  "enabled",
5
5
  "config",
6
- "accessToken"
6
+ "accessToken",
7
+ "signal"
7
8
  ]);
8
9
  function t(t) {
9
10
  let r = {};
@@ -1 +1 @@
1
- {"version":3,"file":"query.js","names":[],"sources":["../../../src/shared/utils/query.ts"],"sourcesContent":["/**\n * Keys that configure TanStack Query behavior rather than identify the data.\n * They are stripped before an options object is turned into a query key so two\n * calls that differ only in, say, `staleTime` still share a cache entry.\n *\n * `accessToken` is stripped too: a bearer credential is never a cache dimension\n * (two calls that differ only by a refreshed token still hit the same entry) and\n * must never leak into a devtools-visible key.\n */\nconst NON_KEY_FIELDS = new Set([\"query\", \"enabled\", \"config\", \"accessToken\"]);\n\n/**\n * Turn an options object into the plain, hashable payload that trails a query\n * key. Strips TanStack control fields and functions, drops `undefined`, and\n * recursively serializes `bigint` to its decimal string (TanStack's default key\n * hash throws on `bigint`).\n *\n * @param options - The query-options object passed to a factory.\n * @returns A plain object safe to embed in a query key.\n *\n * @example\n * ```ts\n * filterQueryOptions({ chainId: 42161, user: \"0x…\", offset: 0n, query: { staleTime: 1 } });\n * // → { chainId: 42161, user: \"0x…\", offset: \"0\" }\n * ```\n */\nexport function filterQueryOptions<type extends Record<string, unknown>>(options: type): Record<string, unknown> {\n const result: Record<string, unknown> = {};\n for (const [key, value] of Object.entries(options)) {\n if (NON_KEY_FIELDS.has(key)) continue;\n if (value === undefined) continue;\n if (typeof value === \"function\") continue;\n result[key] = serializeBigInts(value);\n }\n return result;\n}\n\n/**\n * Recursively replace every `bigint` in a value with its decimal string form so\n * the result survives `JSON.stringify`-based query-key hashing.\n */\nfunction serializeBigInts(value: unknown): unknown {\n if (typeof value === \"bigint\") return value.toString();\n if (Array.isArray(value)) return value.map(serializeBigInts);\n if (value !== null && typeof value === \"object\") {\n const result: Record<string, unknown> = {};\n for (const [key, nested] of Object.entries(value)) {\n result[key] = serializeBigInts(nested);\n }\n return result;\n }\n return value;\n}\n"],"mappings":";AASA,IAAM,IAAiB,IAAI,IAAI;CAAC;CAAS;CAAW;CAAU;AAAa,CAAC;AAiB5E,SAAgB,EAAyD,GAAwC;CAC/G,IAAM,IAAkC,CAAC;CACzC,KAAK,IAAM,CAAC,GAAK,MAAU,OAAO,QAAQ,CAAO,GAC3C,EAAe,IAAI,CAAG,KACtB,MAAU,KAAA,KACV,OAAO,KAAU,eACrB,EAAO,KAAO,EAAiB,CAAK;CAEtC,OAAO;AACT;AAMA,SAAS,EAAiB,GAAyB;CACjD,IAAI,OAAO,KAAU,UAAU,OAAO,EAAM,SAAS;CACrD,IAAI,MAAM,QAAQ,CAAK,GAAG,OAAO,EAAM,IAAI,CAAgB;CAC3D,IAAsB,OAAO,KAAU,YAAnC,GAA6C;EAC/C,IAAM,IAAkC,CAAC;EACzC,KAAK,IAAM,CAAC,GAAK,MAAW,OAAO,QAAQ,CAAK,GAC9C,EAAO,KAAO,EAAiB,CAAM;EAEvC,OAAO;CACT;CACA,OAAO;AACT"}
1
+ {"version":3,"file":"query.js","names":[],"sources":["../../../src/shared/utils/query.ts"],"sourcesContent":["/**\n * Keys that configure TanStack Query behavior rather than identify the data.\n * They are stripped before an options object is turned into a query key so two\n * calls that differ only in, say, `staleTime` still share a cache entry.\n *\n * `accessToken` is stripped too: a bearer credential is never a cache dimension\n * (two calls that differ only by a refreshed token still hit the same entry) and\n * must never leak into a devtools-visible key.\n */\nconst NON_KEY_FIELDS = new Set([\"query\", \"enabled\", \"config\", \"accessToken\", \"signal\"]);\n\n/**\n * Turn an options object into the plain, hashable payload that trails a query\n * key. Strips TanStack control fields and functions, drops `undefined`, and\n * recursively serializes `bigint` to its decimal string (TanStack's default key\n * hash throws on `bigint`).\n *\n * @param options - The query-options object passed to a factory.\n * @returns A plain object safe to embed in a query key.\n *\n * @example\n * ```ts\n * filterQueryOptions({ chainId: 42161, user: \"0x…\", offset: 0n, query: { staleTime: 1 } });\n * // → { chainId: 42161, user: \"0x…\", offset: \"0\" }\n * ```\n */\nexport function filterQueryOptions<type extends Record<string, unknown>>(options: type): Record<string, unknown> {\n const result: Record<string, unknown> = {};\n for (const [key, value] of Object.entries(options)) {\n if (NON_KEY_FIELDS.has(key)) continue;\n if (value === undefined) continue;\n if (typeof value === \"function\") continue;\n result[key] = serializeBigInts(value);\n }\n return result;\n}\n\n/**\n * Recursively replace every `bigint` in a value with its decimal string form so\n * the result survives `JSON.stringify`-based query-key hashing.\n */\nfunction serializeBigInts(value: unknown): unknown {\n if (typeof value === \"bigint\") return value.toString();\n if (Array.isArray(value)) return value.map(serializeBigInts);\n if (value !== null && typeof value === \"object\") {\n const result: Record<string, unknown> = {};\n for (const [key, nested] of Object.entries(value)) {\n result[key] = serializeBigInts(nested);\n }\n return result;\n }\n return value;\n}\n"],"mappings":";AASA,IAAM,IAAiB,IAAI,IAAI;CAAC;CAAS;CAAW;CAAU;CAAe;AAAQ,CAAC;AAiBtF,SAAgB,EAAyD,GAAwC;CAC/G,IAAM,IAAkC,CAAC;CACzC,KAAK,IAAM,CAAC,GAAK,MAAU,OAAO,QAAQ,CAAO,GAC3C,EAAe,IAAI,CAAG,KACtB,MAAU,KAAA,KACV,OAAO,KAAU,eACrB,EAAO,KAAO,EAAiB,CAAK;CAEtC,OAAO;AACT;AAMA,SAAS,EAAiB,GAAyB;CACjD,IAAI,OAAO,KAAU,UAAU,OAAO,EAAM,SAAS;CACrD,IAAI,MAAM,QAAQ,CAAK,GAAG,OAAO,EAAM,IAAI,CAAgB;CAC3D,IAAsB,OAAO,KAAU,YAAnC,GAA6C;EAC/C,IAAM,IAAkC,CAAC;EACzC,KAAK,IAAM,CAAC,GAAK,MAAW,OAAO,QAAQ,CAAK,GAC9C,EAAO,KAAO,EAAiB,CAAM;EAEvC,OAAO;CACT;CACA,OAAO;AACT"}
@@ -1,11 +1,11 @@
1
1
  import { Address } from 'viem';
2
2
  import { Config } from '../../core/config/index.js';
3
- import { Compute, WriteContractParameter } from '../../shared/types/properties.js';
3
+ import { Compute, GaslessWriteParameter, WriteContractParameter } from '../../shared/types/properties.js';
4
4
  import { ForceClosePositionReturnType } from './force-close-position.js';
5
5
  /**
6
6
  * Parameters for {@link forceCloseAuto}.
7
7
  */
8
- export type ForceCloseAutoParameters = Compute<WriteContractParameter & {
8
+ export type ForceCloseAutoParameters = Compute<WriteContractParameter & GaslessWriteParameter & {
9
9
  /**
10
10
  * The subaccount (partyA) that owns the position. Routed through the
11
11
  * AccountLayer `_call` proxy; the connected wallet must be its `owner`.
@@ -38,6 +38,10 @@ export type ForceCloseAutoReturnType = ForceClosePositionReturnType;
38
38
  * 5. preflight the on-chain gap check against the sig;
39
39
  * 6. send `forceClosePosition(quoteId, sig)` through the AccountLayer proxy.
40
40
  *
41
+ * Relayable: pass `gasless` (or run the chain in `gasless.execution.mode`) to
42
+ * relay that final write instead of sending a transaction. Only step 6 touches
43
+ * the chain — the reads, the candles and the Muon attestation never cost gas.
44
+ *
41
45
  * @param config - The SDK config (must have a `getWalletClient` resolver).
42
46
  * @param parameters - The owning subaccount, the quote id, optional `now` / `from` / pre-flight / chain id.
43
47
  * @returns The submitted transaction hash.
@@ -1 +1 @@
1
- {"version":3,"file":"force-close-auto.d.ts","sourceRoot":"","sources":["../../../src/solvers/force-close/force-close-auto.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,MAAM,CAAC;AAGpC,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAGhD,OAAO,KAAK,EAAE,OAAO,EAAE,sBAAsB,EAAE,MAAM,+BAA+B,CAAC;AAIrF,OAAO,EAAsB,KAAK,4BAA4B,EAAE,MAAM,wBAAwB,CAAC;AAQ/F;;GAEG;AACH,MAAM,MAAM,wBAAwB,GAAG,OAAO,CAC5C,sBAAsB,GAAG;IACvB;;;OAGG;IACH,OAAO,EAAE,OAAO,CAAC;IACjB,yDAAyD;IACzD,OAAO,EAAE,MAAM,CAAC;IAChB,kFAAkF;IAClF,GAAG,CAAC,EAAE,MAAM,CAAC;IACb;;;;;;OAMG;IACH,cAAc,CAAC,EAAE,OAAO,CAAC;CAC1B,CACF,CAAC;AAEF,6EAA6E;AAC7E,MAAM,MAAM,wBAAwB,GAAG,4BAA4B,CAAC;AAEpE;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,wBAAsB,cAAc,CAClC,MAAM,EAAE,MAAM,EACd,UAAU,EAAE,wBAAwB,GACnC,OAAO,CAAC,wBAAwB,CAAC,CA6GnC"}
1
+ {"version":3,"file":"force-close-auto.d.ts","sourceRoot":"","sources":["../../../src/solvers/force-close/force-close-auto.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,MAAM,CAAC;AAGpC,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAGhD,OAAO,KAAK,EAAE,OAAO,EAAE,qBAAqB,EAAE,sBAAsB,EAAE,MAAM,+BAA+B,CAAC;AAI5G,OAAO,EAAsB,KAAK,4BAA4B,EAAE,MAAM,wBAAwB,CAAC;AAQ/F;;GAEG;AACH,MAAM,MAAM,wBAAwB,GAAG,OAAO,CAC5C,sBAAsB,GACpB,qBAAqB,GAAG;IACtB;;;OAGG;IACH,OAAO,EAAE,OAAO,CAAC;IACjB,yDAAyD;IACzD,OAAO,EAAE,MAAM,CAAC;IAChB,kFAAkF;IAClF,GAAG,CAAC,EAAE,MAAM,CAAC;IACb;;;;;;OAMG;IACH,cAAc,CAAC,EAAE,OAAO,CAAC;CAC1B,CACJ,CAAC;AAEF,6EAA6E;AAC7E,MAAM,MAAM,wBAAwB,GAAG,4BAA4B,CAAC;AAEpE;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AACH,wBAAsB,cAAc,CAClC,MAAM,EAAE,MAAM,EACd,UAAU,EAAE,wBAAwB,GACnC,OAAO,CAAC,wBAAwB,CAAC,CA8GnC"}
@@ -71,7 +71,8 @@ async function h(h, g) {
71
71
  sig: k,
72
72
  chainId: _,
73
73
  from: g.from,
74
- simulateBeforeWrite: g.simulateBeforeWrite
74
+ simulateBeforeWrite: g.simulateBeforeWrite,
75
+ gasless: g.gasless
75
76
  });
76
77
  }
77
78
  //#endregion
@@ -1 +1 @@
1
- {"version":3,"file":"force-close-auto.js","names":[],"sources":["../../../src/solvers/force-close/force-close-auto.ts"],"sourcesContent":["import type { Address } from \"viem\";\nimport { BINANCE_MAX_LIMIT, BINANCE_REST_URL } from \"../../candles/sources/binance/constants\";\nimport { fetchBinanceKlines } from \"../../candles/sources/binance/fetch-binance-klines\";\nimport type { Config } from \"../../core/config\";\nimport { getForceClosePriceSig } from \"../../muon/force-close-price-sig/get-force-close-price-sig\";\nimport { SymmError } from \"../../shared/errors/symm-error\";\nimport type { Compute, WriteContractParameter } from \"../../shared/types/properties\";\nimport { getQuote } from \"../../symmio-contracts/symmio/actions/get-quote\";\nimport { getMarkets } from \"../markets/get-markets\";\nimport { checkForceCloseEligibility, checkForceClosePriceReached, findForceCloseWindow } from \"./force-close-math\";\nimport { forceClosePosition, type ForceClosePositionReturnType } from \"./force-close-position\";\nimport { getForceCloseParams } from \"./get-force-close-params\";\n\n/** Candle interval used to scan for a valid force-close price window. */\nconst KLINE_INTERVAL = \"1m\";\nconst KLINE_INTERVAL_MS = 60_000;\nconst BINANCE_MARKET = \"usd-m-futures\" as const;\n\n/**\n * Parameters for {@link forceCloseAuto}.\n */\nexport type ForceCloseAutoParameters = Compute<\n WriteContractParameter & {\n /**\n * The subaccount (partyA) that owns the position. Routed through the\n * AccountLayer `_call` proxy; the connected wallet must be its `owner`.\n */\n account: Address;\n /** The `CLOSE_PENDING` limit quote id to force-close. */\n quoteId: bigint;\n /** Override the current unix-second clock (testing). Defaults to `Date.now()`. */\n now?: bigint;\n /**\n * **Debug/temporary**: skip the client-side price checks — build and send the\n * tx even when the market has not reached the price. When no candle in the\n * window qualifies, the full valid window is used for the Muon sig instead of\n * bailing. Pair with `simulateBeforeWrite: false` to actually broadcast a tx\n * that will revert on-chain (so you can inspect it in an explorer).\n */\n skipPriceCheck?: boolean;\n }\n>;\n\n/** Return type of {@link forceCloseAuto}: the submitted transaction hash. */\nexport type ForceCloseAutoReturnType = ForceClosePositionReturnType;\n\n/**\n * Force-close a stalled `CLOSE_PENDING` **limit** position end-to-end, from just\n * the `quoteId`:\n *\n * 1. read the quote + the protocol force-close params (one multicall);\n * 2. gate on eligibility (status / order type / cooldown / not expired);\n * 3. fetch reference-exchange (Binance) candles over the valid window and find a\n * bar where the price reached the force-close level → the Muon time window;\n * 4. fetch the Muon `HighLowPriceSig` for that window;\n * 5. preflight the on-chain gap check against the sig;\n * 6. send `forceClosePosition(quoteId, sig)` through the AccountLayer proxy.\n *\n * @param config - The SDK config (must have a `getWalletClient` resolver).\n * @param parameters - The owning subaccount, the quote id, optional `now` / `from` / pre-flight / chain id.\n * @returns The submitted transaction hash.\n * @throws {SymmError} `FORCE_CLOSE_NOT_ELIGIBLE` (with the blocking reason),\n * `FORCE_CLOSE_MARKET_NOT_FOUND`, or `FORCE_CLOSE_PRICE_NOT_REACHED`.\n *\n * @example\n * ```ts\n * const hash = await forceCloseAuto(config, { account: \"0xsub…\", quoteId: 42n });\n * ```\n */\nexport async function forceCloseAuto(\n config: Config,\n parameters: ForceCloseAutoParameters,\n): Promise<ForceCloseAutoReturnType> {\n const { chainId, account, quoteId } = parameters;\n const now = parameters.now ?? BigInt(Math.floor(Date.now() / 1000));\n\n const quote = await getQuote(config, { quoteId, chainId });\n if (!quote) {\n throw new SymmError(\"validation\", \"FORCE_CLOSE_QUOTE_NOT_FOUND\", `No quote found for id ${quoteId}.`);\n }\n const params = await getForceCloseParams(config, { symbolId: quote.symbolId, chainId });\n\n const eligibility = checkForceCloseEligibility({\n quote,\n firstCooldown: params.firstCooldown,\n secondCooldown: params.secondCooldown,\n minSigPeriod: params.minSigPeriod,\n now,\n });\n if (!eligibility.eligible) {\n throw new SymmError(\n \"validation\",\n \"FORCE_CLOSE_NOT_ELIGIBLE\",\n `Quote ${quoteId} is not force-closeable: ${eligibility.reason}.`,\n );\n }\n\n // Resolve the Binance symbol for this market (reference-exchange klines).\n const markets = await getMarkets(config, { chainId });\n const market = markets.find((entry) => BigInt(entry.symbolId) === quote.symbolId);\n if (!market) {\n throw new SymmError(\n \"validation\",\n \"FORCE_CLOSE_MARKET_NOT_FOUND\",\n `No market found for symbolId ${quote.symbolId}.`,\n );\n }\n\n const windowStart = quote.statusModifyTimestamp + params.firstCooldown;\n const windowEnd = now - params.secondCooldown;\n // Defensive: eligibility already guarantees a non-empty window, but never fetch\n // klines with `start > end` (Binance rejects it with \"Start time is greater than\n // end time\"). If we reach here with an empty window, the cooldown has not passed.\n if (windowEnd <= windowStart) {\n throw new SymmError(\"validation\", \"FORCE_CLOSE_NOT_ELIGIBLE\", `Quote ${quoteId} is not force-closeable: cooldown.`);\n }\n const candles = await fetchBinanceKlines({\n restUrl: BINANCE_REST_URL[BINANCE_MARKET],\n market: BINANCE_MARKET,\n symbol: market.name.toUpperCase(),\n interval: KLINE_INTERVAL,\n startTime: Number(windowStart) * 1000,\n endTime: Number(windowEnd) * 1000,\n limit: BINANCE_MAX_LIMIT[BINANCE_MARKET],\n });\n\n const matchedWindow = findForceCloseWindow({\n quote,\n candles,\n gapRatio: params.gapRatio,\n firstCooldown: params.firstCooldown,\n secondCooldown: params.secondCooldown,\n now,\n intervalMs: KLINE_INTERVAL_MS,\n });\n if (!matchedWindow && !parameters.skipPriceCheck) {\n throw new SymmError(\n \"validation\",\n \"FORCE_CLOSE_PRICE_NOT_REACHED\",\n `The market has not reached the requested close price for quote ${quoteId}.`,\n );\n }\n // No qualifying candle but `skipPriceCheck` — sign over the full valid window so\n // the tx can still be built (it will revert on-chain if the price isn't met).\n const window = matchedWindow ?? { t0: windowStart, t1: windowEnd };\n\n const sig = await getForceClosePriceSig(config, {\n t0: window.t0,\n t1: window.t1,\n partyA: account,\n partyB: quote.partyB,\n symbolId: quote.symbolId,\n chainId,\n });\n\n // Exact on-chain preflight against the fetched sig — avoids a wasted revert\n // (skipped when `skipPriceCheck`, so the tx is sent regardless).\n if (!parameters.skipPriceCheck) {\n const reached = checkForceClosePriceReached({\n sig,\n positionType: quote.positionType,\n requestedClosePrice: quote.requestedClosePrice,\n gapRatio: params.gapRatio,\n });\n if (!reached) {\n throw new SymmError(\n \"validation\",\n \"FORCE_CLOSE_PRICE_NOT_REACHED\",\n `The attested price range does not clear the gap for quote ${quoteId}.`,\n );\n }\n }\n\n return forceClosePosition(config, {\n account,\n quoteId,\n sig,\n chainId,\n from: parameters.from,\n simulateBeforeWrite: parameters.simulateBeforeWrite,\n });\n}\n"],"mappings":";;;;;;;;;;AAcA,IAAM,IAAiB,MACjB,IAAoB,KACpB,IAAiB;AAqDvB,eAAsB,EACpB,GACA,GACmC;CACnC,IAAM,EAAE,YAAS,YAAS,eAAY,GAChC,IAAM,EAAW,OAAO,OAAO,KAAK,MAAM,KAAK,IAAI,IAAI,GAAI,CAAC,GAE5D,IAAQ,MAAM,EAAS,GAAQ;EAAE;EAAS;CAAQ,CAAC;CACzD,IAAI,CAAC,GACH,MAAM,IAAI,EAAU,cAAc,+BAA+B,yBAAyB,EAAQ,EAAE;CAEtG,IAAM,IAAS,MAAM,EAAoB,GAAQ;EAAE,UAAU,EAAM;EAAU;CAAQ,CAAC,GAEhF,IAAc,EAA2B;EAC7C;EACA,eAAe,EAAO;EACtB,gBAAgB,EAAO;EACvB,cAAc,EAAO;EACrB;CACF,CAAC;CACD,IAAI,CAAC,EAAY,UACf,MAAM,IAAI,EACR,cACA,4BACA,SAAS,EAAQ,2BAA2B,EAAY,OAAO,EACjE;CAKF,IAAM,KAAS,MADO,EAAW,GAAQ,EAAE,WAAQ,CAAC,GAC7B,MAAM,MAAU,OAAO,EAAM,QAAQ,MAAM,EAAM,QAAQ;CAChF,IAAI,CAAC,GACH,MAAM,IAAI,EACR,cACA,gCACA,gCAAgC,EAAM,SAAS,EACjD;CAGF,IAAM,IAAc,EAAM,wBAAwB,EAAO,eACnD,IAAY,IAAM,EAAO;CAI/B,IAAI,KAAa,GACf,MAAM,IAAI,EAAU,cAAc,4BAA4B,SAAS,EAAQ,mCAAmC;CAYpH,IAAM,IAAgB,EAAqB;EACzC;EACA,SAAA,MAZoB,EAAmB;GACvC,SAAS,EAAiB;GAC1B,QAAQ;GACR,QAAQ,EAAO,KAAK,YAAY;GAChC,UAAU;GACV,WAAW,OAAO,CAAW,IAAI;GACjC,SAAS,OAAO,CAAS,IAAI;GAC7B,OAAO,EAAkB;EAC3B,CAAC;EAKC,UAAU,EAAO;EACjB,eAAe,EAAO;EACtB,gBAAgB,EAAO;EACvB;EACA,YAAY;CACd,CAAC;CACD,IAAI,CAAC,KAAiB,CAAC,EAAW,gBAChC,MAAM,IAAI,EACR,cACA,iCACA,kEAAkE,EAAQ,EAC5E;CAIF,IAAM,IAAS,KAAiB;EAAE,IAAI;EAAa,IAAI;CAAU,GAE3D,IAAM,MAAM,EAAsB,GAAQ;EAC9C,IAAI,EAAO;EACX,IAAI,EAAO;EACX,QAAQ;EACR,QAAQ,EAAM;EACd,UAAU,EAAM;EAChB;CACF,CAAC;CAID,IAAI,CAAC,EAAW,kBAOV,CANY,EAA4B;EAC1C;EACA,cAAc,EAAM;EACpB,qBAAqB,EAAM;EAC3B,UAAU,EAAO;CACnB,CACK,GACH,MAAM,IAAI,EACR,cACA,iCACA,6DAA6D,EAAQ,EACvE;CAIJ,OAAO,EAAmB,GAAQ;EAChC;EACA;EACA;EACA;EACA,MAAM,EAAW;EACjB,qBAAqB,EAAW;CAClC,CAAC;AACH"}
1
+ {"version":3,"file":"force-close-auto.js","names":[],"sources":["../../../src/solvers/force-close/force-close-auto.ts"],"sourcesContent":["import type { Address } from \"viem\";\nimport { BINANCE_MAX_LIMIT, BINANCE_REST_URL } from \"../../candles/sources/binance/constants\";\nimport { fetchBinanceKlines } from \"../../candles/sources/binance/fetch-binance-klines\";\nimport type { Config } from \"../../core/config\";\nimport { getForceClosePriceSig } from \"../../muon/force-close-price-sig/get-force-close-price-sig\";\nimport { SymmError } from \"../../shared/errors/symm-error\";\nimport type { Compute, GaslessWriteParameter, WriteContractParameter } from \"../../shared/types/properties\";\nimport { getQuote } from \"../../symmio-contracts/symmio/actions/get-quote\";\nimport { getMarkets } from \"../markets/get-markets\";\nimport { checkForceCloseEligibility, checkForceClosePriceReached, findForceCloseWindow } from \"./force-close-math\";\nimport { forceClosePosition, type ForceClosePositionReturnType } from \"./force-close-position\";\nimport { getForceCloseParams } from \"./get-force-close-params\";\n\n/** Candle interval used to scan for a valid force-close price window. */\nconst KLINE_INTERVAL = \"1m\";\nconst KLINE_INTERVAL_MS = 60_000;\nconst BINANCE_MARKET = \"usd-m-futures\" as const;\n\n/**\n * Parameters for {@link forceCloseAuto}.\n */\nexport type ForceCloseAutoParameters = Compute<\n WriteContractParameter &\n GaslessWriteParameter & {\n /**\n * The subaccount (partyA) that owns the position. Routed through the\n * AccountLayer `_call` proxy; the connected wallet must be its `owner`.\n */\n account: Address;\n /** The `CLOSE_PENDING` limit quote id to force-close. */\n quoteId: bigint;\n /** Override the current unix-second clock (testing). Defaults to `Date.now()`. */\n now?: bigint;\n /**\n * **Debug/temporary**: skip the client-side price checks — build and send the\n * tx even when the market has not reached the price. When no candle in the\n * window qualifies, the full valid window is used for the Muon sig instead of\n * bailing. Pair with `simulateBeforeWrite: false` to actually broadcast a tx\n * that will revert on-chain (so you can inspect it in an explorer).\n */\n skipPriceCheck?: boolean;\n }\n>;\n\n/** Return type of {@link forceCloseAuto}: the submitted transaction hash. */\nexport type ForceCloseAutoReturnType = ForceClosePositionReturnType;\n\n/**\n * Force-close a stalled `CLOSE_PENDING` **limit** position end-to-end, from just\n * the `quoteId`:\n *\n * 1. read the quote + the protocol force-close params (one multicall);\n * 2. gate on eligibility (status / order type / cooldown / not expired);\n * 3. fetch reference-exchange (Binance) candles over the valid window and find a\n * bar where the price reached the force-close level → the Muon time window;\n * 4. fetch the Muon `HighLowPriceSig` for that window;\n * 5. preflight the on-chain gap check against the sig;\n * 6. send `forceClosePosition(quoteId, sig)` through the AccountLayer proxy.\n *\n * Relayable: pass `gasless` (or run the chain in `gasless.execution.mode`) to\n * relay that final write instead of sending a transaction. Only step 6 touches\n * the chain — the reads, the candles and the Muon attestation never cost gas.\n *\n * @param config - The SDK config (must have a `getWalletClient` resolver).\n * @param parameters - The owning subaccount, the quote id, optional `now` / `from` / pre-flight / chain id.\n * @returns The submitted transaction hash.\n * @throws {SymmError} `FORCE_CLOSE_NOT_ELIGIBLE` (with the blocking reason),\n * `FORCE_CLOSE_MARKET_NOT_FOUND`, or `FORCE_CLOSE_PRICE_NOT_REACHED`.\n *\n * @example\n * ```ts\n * const hash = await forceCloseAuto(config, { account: \"0xsub…\", quoteId: 42n });\n * ```\n */\nexport async function forceCloseAuto(\n config: Config,\n parameters: ForceCloseAutoParameters,\n): Promise<ForceCloseAutoReturnType> {\n const { chainId, account, quoteId } = parameters;\n const now = parameters.now ?? BigInt(Math.floor(Date.now() / 1000));\n\n const quote = await getQuote(config, { quoteId, chainId });\n if (!quote) {\n throw new SymmError(\"validation\", \"FORCE_CLOSE_QUOTE_NOT_FOUND\", `No quote found for id ${quoteId}.`);\n }\n const params = await getForceCloseParams(config, { symbolId: quote.symbolId, chainId });\n\n const eligibility = checkForceCloseEligibility({\n quote,\n firstCooldown: params.firstCooldown,\n secondCooldown: params.secondCooldown,\n minSigPeriod: params.minSigPeriod,\n now,\n });\n if (!eligibility.eligible) {\n throw new SymmError(\n \"validation\",\n \"FORCE_CLOSE_NOT_ELIGIBLE\",\n `Quote ${quoteId} is not force-closeable: ${eligibility.reason}.`,\n );\n }\n\n // Resolve the Binance symbol for this market (reference-exchange klines).\n const markets = await getMarkets(config, { chainId });\n const market = markets.find((entry) => BigInt(entry.symbolId) === quote.symbolId);\n if (!market) {\n throw new SymmError(\n \"validation\",\n \"FORCE_CLOSE_MARKET_NOT_FOUND\",\n `No market found for symbolId ${quote.symbolId}.`,\n );\n }\n\n const windowStart = quote.statusModifyTimestamp + params.firstCooldown;\n const windowEnd = now - params.secondCooldown;\n // Defensive: eligibility already guarantees a non-empty window, but never fetch\n // klines with `start > end` (Binance rejects it with \"Start time is greater than\n // end time\"). If we reach here with an empty window, the cooldown has not passed.\n if (windowEnd <= windowStart) {\n throw new SymmError(\"validation\", \"FORCE_CLOSE_NOT_ELIGIBLE\", `Quote ${quoteId} is not force-closeable: cooldown.`);\n }\n const candles = await fetchBinanceKlines({\n restUrl: BINANCE_REST_URL[BINANCE_MARKET],\n market: BINANCE_MARKET,\n symbol: market.name.toUpperCase(),\n interval: KLINE_INTERVAL,\n startTime: Number(windowStart) * 1000,\n endTime: Number(windowEnd) * 1000,\n limit: BINANCE_MAX_LIMIT[BINANCE_MARKET],\n });\n\n const matchedWindow = findForceCloseWindow({\n quote,\n candles,\n gapRatio: params.gapRatio,\n firstCooldown: params.firstCooldown,\n secondCooldown: params.secondCooldown,\n now,\n intervalMs: KLINE_INTERVAL_MS,\n });\n if (!matchedWindow && !parameters.skipPriceCheck) {\n throw new SymmError(\n \"validation\",\n \"FORCE_CLOSE_PRICE_NOT_REACHED\",\n `The market has not reached the requested close price for quote ${quoteId}.`,\n );\n }\n // No qualifying candle but `skipPriceCheck` — sign over the full valid window so\n // the tx can still be built (it will revert on-chain if the price isn't met).\n const window = matchedWindow ?? { t0: windowStart, t1: windowEnd };\n\n const sig = await getForceClosePriceSig(config, {\n t0: window.t0,\n t1: window.t1,\n partyA: account,\n partyB: quote.partyB,\n symbolId: quote.symbolId,\n chainId,\n });\n\n // Exact on-chain preflight against the fetched sig — avoids a wasted revert\n // (skipped when `skipPriceCheck`, so the tx is sent regardless).\n if (!parameters.skipPriceCheck) {\n const reached = checkForceClosePriceReached({\n sig,\n positionType: quote.positionType,\n requestedClosePrice: quote.requestedClosePrice,\n gapRatio: params.gapRatio,\n });\n if (!reached) {\n throw new SymmError(\n \"validation\",\n \"FORCE_CLOSE_PRICE_NOT_REACHED\",\n `The attested price range does not clear the gap for quote ${quoteId}.`,\n );\n }\n }\n\n return forceClosePosition(config, {\n account,\n quoteId,\n sig,\n chainId,\n from: parameters.from,\n simulateBeforeWrite: parameters.simulateBeforeWrite,\n gasless: parameters.gasless,\n });\n}\n"],"mappings":";;;;;;;;;;AAcA,IAAM,IAAiB,MACjB,IAAoB,KACpB,IAAiB;AA0DvB,eAAsB,EACpB,GACA,GACmC;CACnC,IAAM,EAAE,YAAS,YAAS,eAAY,GAChC,IAAM,EAAW,OAAO,OAAO,KAAK,MAAM,KAAK,IAAI,IAAI,GAAI,CAAC,GAE5D,IAAQ,MAAM,EAAS,GAAQ;EAAE;EAAS;CAAQ,CAAC;CACzD,IAAI,CAAC,GACH,MAAM,IAAI,EAAU,cAAc,+BAA+B,yBAAyB,EAAQ,EAAE;CAEtG,IAAM,IAAS,MAAM,EAAoB,GAAQ;EAAE,UAAU,EAAM;EAAU;CAAQ,CAAC,GAEhF,IAAc,EAA2B;EAC7C;EACA,eAAe,EAAO;EACtB,gBAAgB,EAAO;EACvB,cAAc,EAAO;EACrB;CACF,CAAC;CACD,IAAI,CAAC,EAAY,UACf,MAAM,IAAI,EACR,cACA,4BACA,SAAS,EAAQ,2BAA2B,EAAY,OAAO,EACjE;CAKF,IAAM,KAAS,MADO,EAAW,GAAQ,EAAE,WAAQ,CAAC,GAC7B,MAAM,MAAU,OAAO,EAAM,QAAQ,MAAM,EAAM,QAAQ;CAChF,IAAI,CAAC,GACH,MAAM,IAAI,EACR,cACA,gCACA,gCAAgC,EAAM,SAAS,EACjD;CAGF,IAAM,IAAc,EAAM,wBAAwB,EAAO,eACnD,IAAY,IAAM,EAAO;CAI/B,IAAI,KAAa,GACf,MAAM,IAAI,EAAU,cAAc,4BAA4B,SAAS,EAAQ,mCAAmC;CAYpH,IAAM,IAAgB,EAAqB;EACzC;EACA,SAAA,MAZoB,EAAmB;GACvC,SAAS,EAAiB;GAC1B,QAAQ;GACR,QAAQ,EAAO,KAAK,YAAY;GAChC,UAAU;GACV,WAAW,OAAO,CAAW,IAAI;GACjC,SAAS,OAAO,CAAS,IAAI;GAC7B,OAAO,EAAkB;EAC3B,CAAC;EAKC,UAAU,EAAO;EACjB,eAAe,EAAO;EACtB,gBAAgB,EAAO;EACvB;EACA,YAAY;CACd,CAAC;CACD,IAAI,CAAC,KAAiB,CAAC,EAAW,gBAChC,MAAM,IAAI,EACR,cACA,iCACA,kEAAkE,EAAQ,EAC5E;CAIF,IAAM,IAAS,KAAiB;EAAE,IAAI;EAAa,IAAI;CAAU,GAE3D,IAAM,MAAM,EAAsB,GAAQ;EAC9C,IAAI,EAAO;EACX,IAAI,EAAO;EACX,QAAQ;EACR,QAAQ,EAAM;EACd,UAAU,EAAM;EAChB;CACF,CAAC;CAID,IAAI,CAAC,EAAW,kBAOV,CANY,EAA4B;EAC1C;EACA,cAAc,EAAM;EACpB,qBAAqB,EAAM;EAC3B,UAAU,EAAO;CACnB,CACK,GACH,MAAM,IAAI,EACR,cACA,iCACA,6DAA6D,EAAQ,EACvE;CAIJ,OAAO,EAAmB,GAAQ;EAChC;EACA;EACA;EACA;EACA,MAAM,EAAW;EACjB,qBAAqB,EAAW;EAChC,SAAS,EAAW;CACtB,CAAC;AACH"}
@@ -1,11 +1,11 @@
1
1
  import { Address, Hash } from 'viem';
2
2
  import { Config } from '../../core/config/index.js';
3
- import { Compute, WriteContractParameter } from '../../shared/types/properties.js';
3
+ import { Compute, GaslessWriteParameter, WriteContractParameter } from '../../shared/types/properties.js';
4
4
  import { HighLowPriceSig } from '../../symmio-contracts/symmio/types.js';
5
5
  /**
6
6
  * Parameters for {@link forceClosePosition}.
7
7
  */
8
- export type ForceClosePositionParameters = Compute<WriteContractParameter & {
8
+ export type ForceClosePositionParameters = Compute<WriteContractParameter & GaslessWriteParameter & {
9
9
  /**
10
10
  * The subaccount (partyA) that owns the position. The call is routed through
11
11
  * the AccountLayer `_call` proxy so the core sees this subaccount as the
@@ -26,6 +26,12 @@ export type ForceClosePositionReturnType = Hash;
26
26
  * `AccountLayer._call(account, …)`, so the connected wallet must be the
27
27
  * subaccount's `owner`.
28
28
  *
29
+ * Relayable: pass `gasless` (or run the chain in `gasless.execution.mode`) to
30
+ * sign the same calldata as an InstantLayer operation instead of sending a
31
+ * transaction. The operation is signed under `account` — the position's own
32
+ * subaccount, which is therefore the account charged the operational fee —
33
+ * unless `gasless.account` names another.
34
+ *
29
35
  * @remarks
30
36
  * Reverts `ForceActionsFacet: Cross partyB mode enabled` when the position's
31
37
  * partyB runs cross-margin settlement — that solver needs the (not-yet-supported)
@@ -33,7 +39,7 @@ export type ForceClosePositionReturnType = Hash;
33
39
  *
34
40
  * @param config - The SDK config (must have a `getWalletClient` resolver).
35
41
  * @param parameters - The owning subaccount, the quote id, the Muon sig, optional `from` / pre-flight / chain id.
36
- * @returns The submitted transaction hash.
42
+ * @returns The submitted transaction hash — the relayer's broadcast hash when relayed.
37
43
  * @throws {SymmError} when the chain is unsupported or no wallet client is available.
38
44
  *
39
45
  * @example
@@ -1 +1 @@
1
- {"version":3,"file":"force-close-position.d.ts","sourceRoot":"","sources":["../../../src/solvers/force-close/force-close-position.ts"],"names":[],"mappings":"AAAA,OAAO,EAAsB,KAAK,OAAO,EAAE,KAAK,IAAI,EAAE,MAAM,MAAM,CAAC;AACnE,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAChD,OAAO,KAAK,EAAE,OAAO,EAAE,sBAAsB,EAAE,MAAM,+BAA+B,CAAC;AAGrF,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,qCAAqC,CAAC;AAE3E;;GAEG;AACH,MAAM,MAAM,4BAA4B,GAAG,OAAO,CAChD,sBAAsB,GAAG;IACvB;;;;OAIG;IACH,OAAO,EAAE,OAAO,CAAC;IACjB,yDAAyD;IACzD,OAAO,EAAE,MAAM,CAAC;IAChB,uEAAuE;IACvE,GAAG,EAAE,eAAe,CAAC;CACtB,CACF,CAAC;AAEF,iFAAiF;AACjF,MAAM,MAAM,4BAA4B,GAAG,IAAI,CAAC;AAEhD;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,wBAAsB,kBAAkB,CACtC,MAAM,EAAE,MAAM,EACd,UAAU,EAAE,4BAA4B,GACvC,OAAO,CAAC,4BAA4B,CAAC,CAgBvC"}
1
+ {"version":3,"file":"force-close-position.d.ts","sourceRoot":"","sources":["../../../src/solvers/force-close/force-close-position.ts"],"names":[],"mappings":"AAAA,OAAO,EAAsB,KAAK,OAAO,EAAE,KAAK,IAAI,EAAE,MAAM,MAAM,CAAC;AACnE,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAChD,OAAO,KAAK,EAAE,OAAO,EAAE,qBAAqB,EAAE,sBAAsB,EAAE,MAAM,+BAA+B,CAAC;AAG5G,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,qCAAqC,CAAC;AAE3E;;GAEG;AACH,MAAM,MAAM,4BAA4B,GAAG,OAAO,CAChD,sBAAsB,GACpB,qBAAqB,GAAG;IACtB;;;;OAIG;IACH,OAAO,EAAE,OAAO,CAAC;IACjB,yDAAyD;IACzD,OAAO,EAAE,MAAM,CAAC;IAChB,uEAAuE;IACvE,GAAG,EAAE,eAAe,CAAC;CACtB,CACJ,CAAC;AAEF,iFAAiF;AACjF,MAAM,MAAM,4BAA4B,GAAG,IAAI,CAAC;AAEhD;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AACH,wBAAsB,kBAAkB,CACtC,MAAM,EAAE,MAAM,EACd,UAAU,EAAE,4BAA4B,GACvC,OAAO,CAAC,4BAA4B,CAAC,CAiBvC"}
@@ -13,7 +13,8 @@ async function r(r, i) {
13
13
  }),
14
14
  chainId: a,
15
15
  from: i.from,
16
- simulateBeforeWrite: i.simulateBeforeWrite
16
+ simulateBeforeWrite: i.simulateBeforeWrite,
17
+ gasless: i.gasless
17
18
  });
18
19
  }
19
20
  //#endregion
@@ -1 +1 @@
1
- {"version":3,"file":"force-close-position.js","names":[],"sources":["../../../src/solvers/force-close/force-close-position.ts"],"sourcesContent":["import { encodeFunctionData, type Address, type Hash } from \"viem\";\nimport type { Config } from \"../../core/config\";\nimport type { Compute, WriteContractParameter } from \"../../shared/types/properties\";\nimport { symmioAbi } from \"../../symmio-contracts/abi/v0.8.6/symmio\";\nimport { callAsSubAccount } from \"../../symmio-contracts/symmio/internal/call-as-sub-account\";\nimport type { HighLowPriceSig } from \"../../symmio-contracts/symmio/types\";\n\n/**\n * Parameters for {@link forceClosePosition}.\n */\nexport type ForceClosePositionParameters = Compute<\n WriteContractParameter & {\n /**\n * The subaccount (partyA) that owns the position. The call is routed through\n * the AccountLayer `_call` proxy so the core sees this subaccount as the\n * caller; the connected wallet must be its on-chain `owner`.\n */\n account: Address;\n /** The `CLOSE_PENDING` limit quote id to force-close. */\n quoteId: bigint;\n /** The Muon `priceRange` attestation — see `getForceClosePriceSig`. */\n sig: HighLowPriceSig;\n }\n>;\n\n/** Return type of {@link forceClosePosition}: the submitted transaction hash. */\nexport type ForceClosePositionReturnType = Hash;\n\n/**\n * Send the single-call force close (`forceClosePosition(quoteId, sig)`) — the\n * low-level write. The eligibility gate and Muon signature must already be\n * resolved (use {@link forceCloseAuto} for the end-to-end flow). Routed through\n * `AccountLayer._call(account, …)`, so the connected wallet must be the\n * subaccount's `owner`.\n *\n * @remarks\n * Reverts `ForceActionsFacet: Cross partyB mode enabled` when the position's\n * partyB runs cross-margin settlement — that solver needs the (not-yet-supported)\n * 3-step `initializeForceClose` / `finalizeForceClose` flow.\n *\n * @param config - The SDK config (must have a `getWalletClient` resolver).\n * @param parameters - The owning subaccount, the quote id, the Muon sig, optional `from` / pre-flight / chain id.\n * @returns The submitted transaction hash.\n * @throws {SymmError} when the chain is unsupported or no wallet client is available.\n *\n * @example\n * ```ts\n * const hash = await forceClosePosition(config, { account: \"0xsub…\", quoteId: 42n, sig });\n * ```\n */\nexport async function forceClosePosition(\n config: Config,\n parameters: ForceClosePositionParameters,\n): Promise<ForceClosePositionReturnType> {\n const { chainId, account, quoteId, sig } = parameters;\n\n const data = encodeFunctionData({\n abi: symmioAbi,\n functionName: \"forceClosePosition\",\n args: [quoteId, sig],\n });\n\n return callAsSubAccount(config, {\n account,\n data,\n chainId,\n from: parameters.from,\n simulateBeforeWrite: parameters.simulateBeforeWrite,\n });\n}\n"],"mappings":";;;;AAkDA,eAAsB,EACpB,GACA,GACuC;CACvC,IAAM,EAAE,YAAS,YAAS,YAAS,WAAQ;CAQ3C,OAAO,EAAiB,GAAQ;EAC9B;EACA,MARW,EAAmB;GAC9B,KAAK;GACL,cAAc;GACd,MAAM,CAAC,GAAS,CAAG;EACrB,CAIE;EACA;EACA,MAAM,EAAW;EACjB,qBAAqB,EAAW;CAClC,CAAC;AACH"}
1
+ {"version":3,"file":"force-close-position.js","names":[],"sources":["../../../src/solvers/force-close/force-close-position.ts"],"sourcesContent":["import { encodeFunctionData, type Address, type Hash } from \"viem\";\nimport type { Config } from \"../../core/config\";\nimport type { Compute, GaslessWriteParameter, WriteContractParameter } from \"../../shared/types/properties\";\nimport { symmioAbi } from \"../../symmio-contracts/abi/v0.8.6/symmio\";\nimport { callAsSubAccount } from \"../../symmio-contracts/symmio/internal/call-as-sub-account\";\nimport type { HighLowPriceSig } from \"../../symmio-contracts/symmio/types\";\n\n/**\n * Parameters for {@link forceClosePosition}.\n */\nexport type ForceClosePositionParameters = Compute<\n WriteContractParameter &\n GaslessWriteParameter & {\n /**\n * The subaccount (partyA) that owns the position. The call is routed through\n * the AccountLayer `_call` proxy so the core sees this subaccount as the\n * caller; the connected wallet must be its on-chain `owner`.\n */\n account: Address;\n /** The `CLOSE_PENDING` limit quote id to force-close. */\n quoteId: bigint;\n /** The Muon `priceRange` attestation — see `getForceClosePriceSig`. */\n sig: HighLowPriceSig;\n }\n>;\n\n/** Return type of {@link forceClosePosition}: the submitted transaction hash. */\nexport type ForceClosePositionReturnType = Hash;\n\n/**\n * Send the single-call force close (`forceClosePosition(quoteId, sig)`) — the\n * low-level write. The eligibility gate and Muon signature must already be\n * resolved (use {@link forceCloseAuto} for the end-to-end flow). Routed through\n * `AccountLayer._call(account, …)`, so the connected wallet must be the\n * subaccount's `owner`.\n *\n * Relayable: pass `gasless` (or run the chain in `gasless.execution.mode`) to\n * sign the same calldata as an InstantLayer operation instead of sending a\n * transaction. The operation is signed under `account` — the position's own\n * subaccount, which is therefore the account charged the operational fee —\n * unless `gasless.account` names another.\n *\n * @remarks\n * Reverts `ForceActionsFacet: Cross partyB mode enabled` when the position's\n * partyB runs cross-margin settlement — that solver needs the (not-yet-supported)\n * 3-step `initializeForceClose` / `finalizeForceClose` flow.\n *\n * @param config - The SDK config (must have a `getWalletClient` resolver).\n * @param parameters - The owning subaccount, the quote id, the Muon sig, optional `from` / pre-flight / chain id.\n * @returns The submitted transaction hash — the relayer's broadcast hash when relayed.\n * @throws {SymmError} when the chain is unsupported or no wallet client is available.\n *\n * @example\n * ```ts\n * const hash = await forceClosePosition(config, { account: \"0xsub…\", quoteId: 42n, sig });\n * ```\n */\nexport async function forceClosePosition(\n config: Config,\n parameters: ForceClosePositionParameters,\n): Promise<ForceClosePositionReturnType> {\n const { chainId, account, quoteId, sig } = parameters;\n\n const data = encodeFunctionData({\n abi: symmioAbi,\n functionName: \"forceClosePosition\",\n args: [quoteId, sig],\n });\n\n return callAsSubAccount(config, {\n account,\n data,\n chainId,\n from: parameters.from,\n simulateBeforeWrite: parameters.simulateBeforeWrite,\n gasless: parameters.gasless,\n });\n}\n"],"mappings":";;;;AAyDA,eAAsB,EACpB,GACA,GACuC;CACvC,IAAM,EAAE,YAAS,YAAS,YAAS,WAAQ;CAQ3C,OAAO,EAAiB,GAAQ;EAC9B;EACA,MARW,EAAmB;GAC9B,KAAK;GACL,cAAc;GACd,MAAM,CAAC,GAAS,CAAG;EACrB,CAIE;EACA;EACA,MAAM,EAAW;EACjB,qBAAqB,EAAW;EAChC,SAAS,EAAW;CACtB,CAAC;AACH"}
@@ -1,12 +1,12 @@
1
1
  import { SymmError as e } from "../../../../shared/errors/symm-error.js";
2
- import { encodeAddMarginToNextVA as t, encodeSendQuote as n, encodeSendQuoteWithAffiliateAndData as r, getFakeSendQuoteMuonSignature as i, sendQuoteUpnlSigFlexRange as a } from "../../shared/calldata.js";
3
- import { sendInstantOpen as o } from "../../shared/hedger-api.js";
4
- import { buildSignedOperation as s, signAndFormatInstantOperation as c } from "../../shared/operations.js";
2
+ import { buildSignedOperation as t, signAndFormatInstantOperation as n } from "../../shared/operations.js";
3
+ import { encodeAddMarginToNextVA as r, encodeSendQuote as i, encodeSendQuoteWithAffiliateAndData as a, getFakeSendQuoteMuonSignature as o, sendQuoteUpnlSigFlexRange as s } from "../../shared/calldata.js";
4
+ import { sendInstantOpen as c } from "../../shared/hedger-api.js";
5
5
  import { isolationTypeForSide as l } from "../../shared/types.js";
6
6
  //#region src/solvers/instant-open/instant-open/adapters/enigma-instant-open.ts
7
7
  async function u(u, d) {
8
8
  if (!d.margin) throw new e("validation", "INSTANT_OPEN_MARGIN_REQUIRED", "instantOpen: the Enigma (lowcap) flow funds a new virtual account, so `margin.amount` is required.");
9
- let { config: f, solver: p, chainConfig: m, walletClient: h, signerAddress: g, deadline: _, symbolId: v, metadata: y } = u, { accountLayerAddress: b, symmioAddress: x, affiliatesAddress: S } = m.addresses, C = t({
9
+ let { config: f, solver: p, chainConfig: m, walletClient: h, signerAddress: g, deadline: _, symbolId: v, metadata: y } = u, { accountLayerAddress: b, symmioAddress: x, affiliatesAddress: S } = m.addresses, C = r({
10
10
  subAccount: d.subAccountAddress,
11
11
  isolationType: l(d.positionType),
12
12
  symbolId: v,
@@ -25,18 +25,18 @@ async function u(u, d) {
25
25
  deadline: _,
26
26
  affiliate: S,
27
27
  data: y,
28
- upnlSig: i(d.order.price)
29
- }, T = m.contractsVersion === "0.8.5" ? r(w) : n({
28
+ upnlSig: o(d.order.price)
29
+ }, T = m.contractsVersion === "0.8.5" ? a(w) : i({
30
30
  ...w,
31
31
  solverFeeCaps: d.solverFeeCaps
32
- }), E = s({
32
+ }), E = t({
33
33
  signer: g,
34
34
  target: b,
35
35
  callData: C,
36
36
  signerAccount: d.subAccountAddress,
37
37
  deadline: _,
38
38
  salt: d.addMarginSalt
39
- }), D = s({
39
+ }), D = t({
40
40
  signer: g,
41
41
  target: x,
42
42
  callData: T,
@@ -44,18 +44,18 @@ async function u(u, d) {
44
44
  deadline: _,
45
45
  salt: d.sendQuoteSalt,
46
46
  flexFields: [{
47
- ...a(T),
47
+ ...s(T),
48
48
  authorizedFlexFiller: p.address
49
49
  }]
50
- }), [O, k] = await Promise.all([c(f, {
50
+ }), [O, k] = await Promise.all([n(f, {
51
51
  operation: E,
52
52
  chainId: u.chainId,
53
53
  walletClient: h
54
- }), c(f, {
54
+ }), n(f, {
55
55
  operation: D,
56
56
  chainId: u.chainId,
57
57
  walletClient: h
58
- })]), A = await o(f, {
58
+ })]), A = await c(f, {
59
59
  chainId: u.chainId,
60
60
  solverId: p.id,
61
61
  request: {
@@ -1,6 +1,6 @@
1
- import { encodeSendQuoteWithAffiliateAndData as e } from "../../shared/calldata.js";
2
- import { sendRasaInstantOpen as t } from "../../shared/hedger-api.js";
3
- import { buildSignedOperation as n, signAndFormatInstantOperation as r } from "../../shared/operations.js";
1
+ import { buildSignedOperation as e, signAndFormatInstantOperation as t } from "../../shared/operations.js";
2
+ import { encodeSendQuoteWithAffiliateAndData as n } from "../../shared/calldata.js";
3
+ import { sendRasaInstantOpen as r } from "../../shared/hedger-api.js";
4
4
  import "../../shared/types.js";
5
5
  import { getSendQuoteUpnlSig as i } from "../../../../muon/send-quote-upnl-sig/get-send-quote-upnl-sig.js";
6
6
  import { toRasaInstantOpen as a } from "../../get-instant-opens/adapters/rasa-instant-opens.js";
@@ -10,11 +10,11 @@ async function o(o, s) {
10
10
  chainId: o.chainId,
11
11
  partyA: s.subAccountAddress,
12
12
  symbolId: m
13
- }), y = await r(c, {
14
- operation: n({
13
+ }), y = await t(c, {
14
+ operation: e({
15
15
  signer: f,
16
16
  target: g,
17
- callData: e({
17
+ callData: n({
18
18
  partyBsWhiteList: [l.address],
19
19
  symbolId: m,
20
20
  positionType: s.positionType,
@@ -36,7 +36,7 @@ async function o(o, s) {
36
36
  }),
37
37
  chainId: o.chainId,
38
38
  walletClient: d
39
- }), b = await t(c, {
39
+ }), b = await r(c, {
40
40
  chainId: o.chainId,
41
41
  solverId: l.id,
42
42
  sendQuote: y
@@ -11,6 +11,8 @@
11
11
  * `ARCHITECTURE.md` at the package root.
12
12
  */
13
13
  export { accountLayerAbi } from './v0.8.6/account-layer.js';
14
+ export { gaslessLayerAbi } from './v0.8.6/gasless-layer.js';
15
+ export { gaslessWalletAbi } from './v0.8.6/gasless-wallet.js';
14
16
  export { instantLayerAbi } from './v0.8.6/instant-layer.js';
15
17
  export { symmioAbi } from './v0.8.6/symmio.js';
16
18
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/symmio-contracts/abi/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AACH,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AACzD,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AACzD,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/symmio-contracts/abi/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AACH,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AACzD,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AACzD,OAAO,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAC3D,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AACzD,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC"}