project-cpu-mcp 0.12.0 → 0.12.2

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 (418) hide show
  1. package/dist/api/client.d.ts.map +1 -1
  2. package/dist/api/client.js +7 -3
  3. package/dist/api/client.js.map +1 -1
  4. package/dist/api/types.d.ts +12 -1
  5. package/dist/api/types.d.ts.map +1 -1
  6. package/dist/api/types.js +2 -0
  7. package/dist/api/types.js.map +1 -1
  8. package/dist/contracts/approval.constants.d.ts +4 -0
  9. package/dist/contracts/approval.constants.d.ts.map +1 -0
  10. package/dist/contracts/approval.constants.js +4 -0
  11. package/dist/contracts/approval.constants.js.map +1 -0
  12. package/dist/contracts/approval.types.d.ts +9 -0
  13. package/dist/contracts/approval.types.d.ts.map +1 -0
  14. package/dist/contracts/approval.types.js +2 -0
  15. package/dist/contracts/approval.types.js.map +1 -0
  16. package/dist/contracts/approval.utils.d.ts +4 -0
  17. package/dist/contracts/approval.utils.d.ts.map +1 -0
  18. package/dist/contracts/approval.utils.js +41 -0
  19. package/dist/contracts/approval.utils.js.map +1 -0
  20. package/dist/contracts/erc721.abi.d.ts +27 -0
  21. package/dist/contracts/erc721.abi.d.ts.map +1 -0
  22. package/dist/contracts/erc721.abi.js +6 -0
  23. package/dist/contracts/erc721.abi.js.map +1 -0
  24. package/dist/contracts/seaport-events.abi.d.ts +95 -0
  25. package/dist/contracts/seaport-events.abi.d.ts.map +1 -0
  26. package/dist/contracts/seaport-events.abi.js +52 -0
  27. package/dist/contracts/seaport-events.abi.js.map +1 -0
  28. package/dist/contracts/seaport-spender.reader.d.ts +9 -0
  29. package/dist/contracts/seaport-spender.reader.d.ts.map +1 -0
  30. package/dist/contracts/seaport-spender.reader.js +101 -0
  31. package/dist/contracts/seaport-spender.reader.js.map +1 -0
  32. package/dist/contracts/seaport.constants.d.ts +136 -0
  33. package/dist/contracts/seaport.constants.d.ts.map +1 -0
  34. package/dist/contracts/seaport.constants.js +57 -0
  35. package/dist/contracts/seaport.constants.js.map +1 -0
  36. package/dist/contracts/seaport.types.d.ts +34 -0
  37. package/dist/contracts/seaport.types.d.ts.map +1 -0
  38. package/dist/contracts/seaport.types.js +24 -0
  39. package/dist/contracts/seaport.types.js.map +1 -0
  40. package/dist/index.js +11 -1
  41. package/dist/index.js.map +1 -1
  42. package/dist/logger/constants.d.ts.map +1 -1
  43. package/dist/logger/constants.js +2 -0
  44. package/dist/logger/constants.js.map +1 -1
  45. package/dist/paybox/auth/types.d.ts +2 -2
  46. package/dist/paybox/auth/types.d.ts.map +1 -1
  47. package/dist/paybox/sdk/adapter.d.ts +2 -1
  48. package/dist/paybox/sdk/adapter.d.ts.map +1 -1
  49. package/dist/paybox/sdk/adapter.js +24 -0
  50. package/dist/paybox/sdk/adapter.js.map +1 -1
  51. package/dist/paybox/types.d.ts +20 -16
  52. package/dist/paybox/types.d.ts.map +1 -1
  53. package/dist/paybox/types.js +1 -0
  54. package/dist/paybox/types.js.map +1 -1
  55. package/dist/paybox/wallet/manager.d.ts +3 -1
  56. package/dist/paybox/wallet/manager.d.ts.map +1 -1
  57. package/dist/paybox/wallet/manager.js +16 -5
  58. package/dist/paybox/wallet/manager.js.map +1 -1
  59. package/dist/paybox/wallet/rpc.client.d.ts +1 -0
  60. package/dist/paybox/wallet/rpc.client.d.ts.map +1 -1
  61. package/dist/paybox/wallet/rpc.client.js +4 -0
  62. package/dist/paybox/wallet/rpc.client.js.map +1 -1
  63. package/dist/paybox/wallet/utils.d.ts +0 -2
  64. package/dist/paybox/wallet/utils.d.ts.map +1 -1
  65. package/dist/paybox/wallet/utils.js +2 -65
  66. package/dist/paybox/wallet/utils.js.map +1 -1
  67. package/dist/server.constants.d.ts.map +1 -1
  68. package/dist/server.constants.js +13 -19
  69. package/dist/server.constants.js.map +1 -1
  70. package/dist/server.d.ts.map +1 -1
  71. package/dist/server.js +11 -5
  72. package/dist/server.js.map +1 -1
  73. package/dist/services/app-config.utils.d.ts.map +1 -1
  74. package/dist/services/app-config.utils.js +1 -0
  75. package/dist/services/app-config.utils.js.map +1 -1
  76. package/dist/services/auth.service.d.ts.map +1 -1
  77. package/dist/services/auth.service.js +16 -4
  78. package/dist/services/auth.service.js.map +1 -1
  79. package/dist/services/market/acceptance.constants.d.ts +5 -0
  80. package/dist/services/market/acceptance.constants.d.ts.map +1 -0
  81. package/dist/services/market/acceptance.constants.js +6 -0
  82. package/dist/services/market/acceptance.constants.js.map +1 -0
  83. package/dist/services/market/acceptance.service.d.ts +51 -0
  84. package/dist/services/market/acceptance.service.d.ts.map +1 -0
  85. package/dist/services/market/acceptance.service.js +595 -0
  86. package/dist/services/market/acceptance.service.js.map +1 -0
  87. package/dist/services/market/acceptance.types.d.ts +214 -0
  88. package/dist/services/market/acceptance.types.d.ts.map +1 -0
  89. package/dist/services/market/acceptance.types.js +13 -0
  90. package/dist/services/market/acceptance.types.js.map +1 -0
  91. package/dist/services/market/acceptance.utils.d.ts +7 -0
  92. package/dist/services/market/acceptance.utils.d.ts.map +1 -0
  93. package/dist/services/market/acceptance.utils.js +15 -0
  94. package/dist/services/market/acceptance.utils.js.map +1 -0
  95. package/dist/services/market/action.types.d.ts +29 -0
  96. package/dist/services/market/action.types.d.ts.map +1 -0
  97. package/dist/services/market/action.types.js +9 -0
  98. package/dist/services/market/action.types.js.map +1 -0
  99. package/dist/services/market/budget.d.ts +17 -0
  100. package/dist/services/market/budget.d.ts.map +1 -0
  101. package/dist/services/market/budget.js +52 -0
  102. package/dist/services/market/budget.js.map +1 -0
  103. package/dist/services/market/budget.scope.d.ts +4 -0
  104. package/dist/services/market/budget.scope.d.ts.map +1 -0
  105. package/dist/services/market/budget.scope.js +10 -0
  106. package/dist/services/market/budget.scope.js.map +1 -0
  107. package/dist/services/market/budget.utils.d.ts +4 -0
  108. package/dist/services/market/budget.utils.d.ts.map +1 -0
  109. package/dist/services/market/budget.utils.js +29 -0
  110. package/dist/services/market/budget.utils.js.map +1 -0
  111. package/dist/services/market/cancel.abi.d.ts +108 -0
  112. package/dist/services/market/cancel.abi.d.ts.map +1 -0
  113. package/dist/services/market/cancel.abi.js +50 -0
  114. package/dist/services/market/cancel.abi.js.map +1 -0
  115. package/dist/services/market/cancel.constants.d.ts +4 -0
  116. package/dist/services/market/cancel.constants.d.ts.map +1 -0
  117. package/dist/services/market/cancel.constants.js +5 -0
  118. package/dist/services/market/cancel.constants.js.map +1 -0
  119. package/dist/services/market/cancel.service.d.ts +34 -0
  120. package/dist/services/market/cancel.service.d.ts.map +1 -0
  121. package/dist/services/market/cancel.service.js +342 -0
  122. package/dist/services/market/cancel.service.js.map +1 -0
  123. package/dist/services/market/cancel.types.d.ts +87 -0
  124. package/dist/services/market/cancel.types.d.ts.map +1 -0
  125. package/dist/services/market/cancel.types.js +8 -0
  126. package/dist/services/market/cancel.types.js.map +1 -0
  127. package/dist/services/market/cancel.utils.d.ts +7 -0
  128. package/dist/services/market/cancel.utils.d.ts.map +1 -0
  129. package/dist/services/market/cancel.utils.js +71 -0
  130. package/dist/services/market/cancel.utils.js.map +1 -0
  131. package/dist/services/market/client.d.ts +19 -0
  132. package/dist/services/market/client.d.ts.map +1 -0
  133. package/dist/services/market/client.js +198 -0
  134. package/dist/services/market/client.js.map +1 -0
  135. package/dist/services/market/client.types.d.ts +6 -0
  136. package/dist/services/market/client.types.d.ts.map +1 -0
  137. package/dist/services/market/client.types.js +2 -0
  138. package/dist/services/market/client.types.js.map +1 -0
  139. package/dist/services/market/constants.d.ts +21 -0
  140. package/dist/services/market/constants.d.ts.map +1 -0
  141. package/dist/services/market/constants.js +36 -0
  142. package/dist/services/market/constants.js.map +1 -0
  143. package/dist/services/market/error.d.ts +10 -0
  144. package/dist/services/market/error.d.ts.map +1 -0
  145. package/dist/services/market/error.js +18 -0
  146. package/dist/services/market/error.js.map +1 -0
  147. package/dist/services/market/error.utils.d.ts +10 -0
  148. package/dist/services/market/error.utils.d.ts.map +1 -0
  149. package/dist/services/market/error.utils.js +56 -0
  150. package/dist/services/market/error.utils.js.map +1 -0
  151. package/dist/services/market/factory.d.ts +4 -0
  152. package/dist/services/market/factory.d.ts.map +1 -0
  153. package/dist/services/market/factory.js +86 -0
  154. package/dist/services/market/factory.js.map +1 -0
  155. package/dist/services/market/factory.types.d.ts +34 -0
  156. package/dist/services/market/factory.types.d.ts.map +1 -0
  157. package/dist/services/market/factory.types.js +2 -0
  158. package/dist/services/market/factory.types.js.map +1 -0
  159. package/dist/services/market/fulfilment-proof.d.ts +13 -0
  160. package/dist/services/market/fulfilment-proof.d.ts.map +1 -0
  161. package/dist/services/market/fulfilment-proof.js +116 -0
  162. package/dist/services/market/fulfilment-proof.js.map +1 -0
  163. package/dist/services/market/fulfilment-proof.reader.d.ts +8 -0
  164. package/dist/services/market/fulfilment-proof.reader.d.ts.map +1 -0
  165. package/dist/services/market/fulfilment-proof.reader.js +22 -0
  166. package/dist/services/market/fulfilment-proof.reader.js.map +1 -0
  167. package/dist/services/market/fulfilment-proof.types.d.ts +46 -0
  168. package/dist/services/market/fulfilment-proof.types.d.ts.map +1 -0
  169. package/dist/services/market/fulfilment-proof.types.js +6 -0
  170. package/dist/services/market/fulfilment-proof.types.js.map +1 -0
  171. package/dist/services/market/fulfilment-proof.utils.d.ts +19 -0
  172. package/dist/services/market/fulfilment-proof.utils.d.ts.map +1 -0
  173. package/dist/services/market/fulfilment-proof.utils.js +69 -0
  174. package/dist/services/market/fulfilment-proof.utils.js.map +1 -0
  175. package/dist/services/market/idempotency.utils.d.ts +4 -0
  176. package/dist/services/market/idempotency.utils.d.ts.map +1 -0
  177. package/dist/services/market/idempotency.utils.js +15 -0
  178. package/dist/services/market/idempotency.utils.js.map +1 -0
  179. package/dist/services/market/listing.constants.d.ts +7 -0
  180. package/dist/services/market/listing.constants.d.ts.map +1 -0
  181. package/dist/services/market/listing.constants.js +8 -0
  182. package/dist/services/market/listing.constants.js.map +1 -0
  183. package/dist/services/market/listing.service.d.ts +53 -0
  184. package/dist/services/market/listing.service.d.ts.map +1 -0
  185. package/dist/services/market/listing.service.js +671 -0
  186. package/dist/services/market/listing.service.js.map +1 -0
  187. package/dist/services/market/listing.types.d.ts +718 -0
  188. package/dist/services/market/listing.types.d.ts.map +1 -0
  189. package/dist/services/market/listing.types.js +84 -0
  190. package/dist/services/market/listing.types.js.map +1 -0
  191. package/dist/services/market/listing.utils.d.ts +12 -0
  192. package/dist/services/market/listing.utils.d.ts.map +1 -0
  193. package/dist/services/market/listing.utils.js +51 -0
  194. package/dist/services/market/listing.utils.js.map +1 -0
  195. package/dist/services/market/offer.constants.d.ts +8 -0
  196. package/dist/services/market/offer.constants.d.ts.map +1 -0
  197. package/dist/services/market/offer.constants.js +9 -0
  198. package/dist/services/market/offer.constants.js.map +1 -0
  199. package/dist/services/market/offer.service.d.ts +54 -0
  200. package/dist/services/market/offer.service.d.ts.map +1 -0
  201. package/dist/services/market/offer.service.js +757 -0
  202. package/dist/services/market/offer.service.js.map +1 -0
  203. package/dist/services/market/offer.types.d.ts +554 -0
  204. package/dist/services/market/offer.types.d.ts.map +1 -0
  205. package/dist/services/market/offer.types.js +73 -0
  206. package/dist/services/market/offer.types.js.map +1 -0
  207. package/dist/services/market/offer.utils.d.ts +7 -0
  208. package/dist/services/market/offer.utils.d.ts.map +1 -0
  209. package/dist/services/market/offer.utils.js +25 -0
  210. package/dist/services/market/offer.utils.js.map +1 -0
  211. package/dist/services/market/profile.client.d.ts +14 -0
  212. package/dist/services/market/profile.client.d.ts.map +1 -0
  213. package/dist/services/market/profile.client.js +65 -0
  214. package/dist/services/market/profile.client.js.map +1 -0
  215. package/dist/services/market/profile.schemas.d.ts +630 -0
  216. package/dist/services/market/profile.schemas.d.ts.map +1 -0
  217. package/dist/services/market/profile.schemas.js +84 -0
  218. package/dist/services/market/profile.schemas.js.map +1 -0
  219. package/dist/services/market/profile.utils.d.ts +2 -0
  220. package/dist/services/market/profile.utils.d.ts.map +1 -0
  221. package/dist/services/market/profile.utils.js +8 -0
  222. package/dist/services/market/profile.utils.js.map +1 -0
  223. package/dist/services/market/purchase.constants.d.ts +5 -0
  224. package/dist/services/market/purchase.constants.d.ts.map +1 -0
  225. package/dist/services/market/purchase.constants.js +6 -0
  226. package/dist/services/market/purchase.constants.js.map +1 -0
  227. package/dist/services/market/purchase.service.d.ts +48 -0
  228. package/dist/services/market/purchase.service.d.ts.map +1 -0
  229. package/dist/services/market/purchase.service.js +564 -0
  230. package/dist/services/market/purchase.service.js.map +1 -0
  231. package/dist/services/market/purchase.types.d.ts +207 -0
  232. package/dist/services/market/purchase.types.d.ts.map +1 -0
  233. package/dist/services/market/purchase.types.js +13 -0
  234. package/dist/services/market/purchase.types.js.map +1 -0
  235. package/dist/services/market/purchase.utils.d.ts +11 -0
  236. package/dist/services/market/purchase.utils.d.ts.map +1 -0
  237. package/dist/services/market/purchase.utils.js +29 -0
  238. package/dist/services/market/purchase.utils.js.map +1 -0
  239. package/dist/services/market/recovery.constants.d.ts +6 -0
  240. package/dist/services/market/recovery.constants.d.ts.map +1 -0
  241. package/dist/services/market/recovery.constants.js +6 -0
  242. package/dist/services/market/recovery.constants.js.map +1 -0
  243. package/dist/services/market/recovery.store.d.ts +10 -0
  244. package/dist/services/market/recovery.store.d.ts.map +1 -0
  245. package/dist/services/market/recovery.store.js +44 -0
  246. package/dist/services/market/recovery.store.js.map +1 -0
  247. package/dist/services/market/service.d.ts +11 -0
  248. package/dist/services/market/service.d.ts.map +1 -0
  249. package/dist/services/market/service.js +71 -0
  250. package/dist/services/market/service.js.map +1 -0
  251. package/dist/services/market/single-flight.d.ts +6 -0
  252. package/dist/services/market/single-flight.d.ts.map +1 -0
  253. package/dist/services/market/single-flight.js +19 -0
  254. package/dist/services/market/single-flight.js.map +1 -0
  255. package/dist/services/market/snapshot.schemas.d.ts +385 -0
  256. package/dist/services/market/snapshot.schemas.d.ts.map +1 -0
  257. package/dist/services/market/snapshot.schemas.js +67 -0
  258. package/dist/services/market/snapshot.schemas.js.map +1 -0
  259. package/dist/services/market/types.d.ts +787 -0
  260. package/dist/services/market/types.d.ts.map +1 -0
  261. package/dist/services/market/types.js +216 -0
  262. package/dist/services/market/types.js.map +1 -0
  263. package/dist/services/types.d.ts +2 -0
  264. package/dist/services/types.d.ts.map +1 -1
  265. package/dist/services/types.js.map +1 -1
  266. package/dist/session/jwt.utils.d.ts +1 -0
  267. package/dist/session/jwt.utils.d.ts.map +1 -1
  268. package/dist/session/jwt.utils.js +4 -0
  269. package/dist/session/jwt.utils.js.map +1 -1
  270. package/dist/session/manager.d.ts +1 -1
  271. package/dist/session/manager.d.ts.map +1 -1
  272. package/dist/session/manager.js.map +1 -1
  273. package/dist/tools/authenticate.d.ts +1 -1
  274. package/dist/tools/authenticate.d.ts.map +1 -1
  275. package/dist/tools/authenticate.js.map +1 -1
  276. package/dist/tools/config/get-game-config/get-game-config.utils.js +1 -1
  277. package/dist/tools/config/get-game-config/get-game-config.utils.js.map +1 -1
  278. package/dist/tools/market/accept-offer/accept-offer.d.ts +4 -0
  279. package/dist/tools/market/accept-offer/accept-offer.d.ts.map +1 -0
  280. package/dist/tools/market/accept-offer/accept-offer.js +29 -0
  281. package/dist/tools/market/accept-offer/accept-offer.js.map +1 -0
  282. package/dist/tools/market/accept-offer/constants.d.ts +2 -0
  283. package/dist/tools/market/accept-offer/constants.d.ts.map +1 -0
  284. package/dist/tools/market/accept-offer/constants.js +27 -0
  285. package/dist/tools/market/accept-offer/constants.js.map +1 -0
  286. package/dist/tools/market/accept-offer/format.utils.d.ts +3 -0
  287. package/dist/tools/market/accept-offer/format.utils.d.ts.map +1 -0
  288. package/dist/tools/market/accept-offer/format.utils.js +22 -0
  289. package/dist/tools/market/accept-offer/format.utils.js.map +1 -0
  290. package/dist/tools/market/accept-offer/types.d.ts +9 -0
  291. package/dist/tools/market/accept-offer/types.d.ts.map +1 -0
  292. package/dist/tools/market/accept-offer/types.js +14 -0
  293. package/dist/tools/market/accept-offer/types.js.map +1 -0
  294. package/dist/tools/market/buy-cell/buy-cell.d.ts +4 -0
  295. package/dist/tools/market/buy-cell/buy-cell.d.ts.map +1 -0
  296. package/dist/tools/market/buy-cell/buy-cell.js +30 -0
  297. package/dist/tools/market/buy-cell/buy-cell.js.map +1 -0
  298. package/dist/tools/market/buy-cell/constants.d.ts +2 -0
  299. package/dist/tools/market/buy-cell/constants.d.ts.map +1 -0
  300. package/dist/tools/market/buy-cell/constants.js +23 -0
  301. package/dist/tools/market/buy-cell/constants.js.map +1 -0
  302. package/dist/tools/market/buy-cell/format.utils.d.ts +3 -0
  303. package/dist/tools/market/buy-cell/format.utils.d.ts.map +1 -0
  304. package/dist/tools/market/buy-cell/format.utils.js +17 -0
  305. package/dist/tools/market/buy-cell/format.utils.js.map +1 -0
  306. package/dist/tools/market/buy-cell/types.d.ts +6 -0
  307. package/dist/tools/market/buy-cell/types.d.ts.map +1 -0
  308. package/dist/tools/market/buy-cell/types.js +10 -0
  309. package/dist/tools/market/buy-cell/types.js.map +1 -0
  310. package/dist/tools/market/cancel-order/cancel-order.d.ts +4 -0
  311. package/dist/tools/market/cancel-order/cancel-order.d.ts.map +1 -0
  312. package/dist/tools/market/cancel-order/cancel-order.js +29 -0
  313. package/dist/tools/market/cancel-order/cancel-order.js.map +1 -0
  314. package/dist/tools/market/cancel-order/constants.d.ts +2 -0
  315. package/dist/tools/market/cancel-order/constants.d.ts.map +1 -0
  316. package/dist/tools/market/cancel-order/constants.js +22 -0
  317. package/dist/tools/market/cancel-order/constants.js.map +1 -0
  318. package/dist/tools/market/cancel-order/format.utils.d.ts +3 -0
  319. package/dist/tools/market/cancel-order/format.utils.d.ts.map +1 -0
  320. package/dist/tools/market/cancel-order/format.utils.js +13 -0
  321. package/dist/tools/market/cancel-order/format.utils.js.map +1 -0
  322. package/dist/tools/market/cancel-order/types.d.ts +8 -0
  323. package/dist/tools/market/cancel-order/types.d.ts.map +1 -0
  324. package/dist/tools/market/cancel-order/types.js +7 -0
  325. package/dist/tools/market/cancel-order/types.js.map +1 -0
  326. package/dist/tools/market/cell-market/cell-market.d.ts +4 -0
  327. package/dist/tools/market/cell-market/cell-market.d.ts.map +1 -0
  328. package/dist/tools/market/cell-market/cell-market.js +24 -0
  329. package/dist/tools/market/cell-market/cell-market.js.map +1 -0
  330. package/dist/tools/market/cell-market/constants.d.ts +2 -0
  331. package/dist/tools/market/cell-market/constants.d.ts.map +1 -0
  332. package/dist/tools/market/cell-market/constants.js +16 -0
  333. package/dist/tools/market/cell-market/constants.js.map +1 -0
  334. package/dist/tools/market/format.utils.d.ts +8 -0
  335. package/dist/tools/market/format.utils.d.ts.map +1 -0
  336. package/dist/tools/market/format.utils.js +75 -0
  337. package/dist/tools/market/format.utils.js.map +1 -0
  338. package/dist/tools/market/list-cell/constants.d.ts +2 -0
  339. package/dist/tools/market/list-cell/constants.d.ts.map +1 -0
  340. package/dist/tools/market/list-cell/constants.js +23 -0
  341. package/dist/tools/market/list-cell/constants.js.map +1 -0
  342. package/dist/tools/market/list-cell/list-cell.d.ts +4 -0
  343. package/dist/tools/market/list-cell/list-cell.d.ts.map +1 -0
  344. package/dist/tools/market/list-cell/list-cell.js +31 -0
  345. package/dist/tools/market/list-cell/list-cell.js.map +1 -0
  346. package/dist/tools/market/list-cell/types.d.ts +7 -0
  347. package/dist/tools/market/list-cell/types.d.ts.map +1 -0
  348. package/dist/tools/market/list-cell/types.js +15 -0
  349. package/dist/tools/market/list-cell/types.js.map +1 -0
  350. package/dist/tools/market/make-offer/constants.d.ts +2 -0
  351. package/dist/tools/market/make-offer/constants.d.ts.map +1 -0
  352. package/dist/tools/market/make-offer/constants.js +22 -0
  353. package/dist/tools/market/make-offer/constants.js.map +1 -0
  354. package/dist/tools/market/make-offer/format.utils.d.ts +3 -0
  355. package/dist/tools/market/make-offer/format.utils.d.ts.map +1 -0
  356. package/dist/tools/market/make-offer/format.utils.js +16 -0
  357. package/dist/tools/market/make-offer/format.utils.js.map +1 -0
  358. package/dist/tools/market/make-offer/make-offer.d.ts +4 -0
  359. package/dist/tools/market/make-offer/make-offer.d.ts.map +1 -0
  360. package/dist/tools/market/make-offer/make-offer.js +30 -0
  361. package/dist/tools/market/make-offer/make-offer.js.map +1 -0
  362. package/dist/tools/market/make-offer/types.d.ts +10 -0
  363. package/dist/tools/market/make-offer/types.d.ts.map +1 -0
  364. package/dist/tools/market/make-offer/types.js +10 -0
  365. package/dist/tools/market/make-offer/types.js.map +1 -0
  366. package/dist/tools/market/my-listings/constants.d.ts +2 -0
  367. package/dist/tools/market/my-listings/constants.d.ts.map +1 -0
  368. package/dist/tools/market/my-listings/constants.js +14 -0
  369. package/dist/tools/market/my-listings/constants.js.map +1 -0
  370. package/dist/tools/market/my-listings/my-listings.d.ts +4 -0
  371. package/dist/tools/market/my-listings/my-listings.d.ts.map +1 -0
  372. package/dist/tools/market/my-listings/my-listings.js +24 -0
  373. package/dist/tools/market/my-listings/my-listings.js.map +1 -0
  374. package/dist/tools/market/my-offers/constants.d.ts +2 -0
  375. package/dist/tools/market/my-offers/constants.d.ts.map +1 -0
  376. package/dist/tools/market/my-offers/constants.js +15 -0
  377. package/dist/tools/market/my-offers/constants.js.map +1 -0
  378. package/dist/tools/market/my-offers/my-offers.d.ts +4 -0
  379. package/dist/tools/market/my-offers/my-offers.d.ts.map +1 -0
  380. package/dist/tools/market/my-offers/my-offers.js +24 -0
  381. package/dist/tools/market/my-offers/my-offers.js.map +1 -0
  382. package/dist/tools/market/my-offers-received/constants.d.ts +2 -0
  383. package/dist/tools/market/my-offers-received/constants.d.ts.map +1 -0
  384. package/dist/tools/market/my-offers-received/constants.js +16 -0
  385. package/dist/tools/market/my-offers-received/constants.js.map +1 -0
  386. package/dist/tools/market/my-offers-received/my-offers-received.d.ts +4 -0
  387. package/dist/tools/market/my-offers-received/my-offers-received.d.ts.map +1 -0
  388. package/dist/tools/market/my-offers-received/my-offers-received.js +24 -0
  389. package/dist/tools/market/my-offers-received/my-offers-received.js.map +1 -0
  390. package/dist/tools/market/output.types.d.ts +822 -0
  391. package/dist/tools/market/output.types.d.ts.map +1 -0
  392. package/dist/tools/market/output.types.js +75 -0
  393. package/dist/tools/market/output.types.js.map +1 -0
  394. package/dist/tools/market/register.d.ts +12 -0
  395. package/dist/tools/market/register.d.ts.map +1 -0
  396. package/dist/tools/market/register.js +50 -0
  397. package/dist/tools/market/register.js.map +1 -0
  398. package/dist/tools/market/types.d.ts +16 -0
  399. package/dist/tools/market/types.d.ts.map +1 -0
  400. package/dist/tools/market/types.js +14 -0
  401. package/dist/tools/market/types.js.map +1 -0
  402. package/dist/tools/types.d.ts +6 -1
  403. package/dist/tools/types.d.ts.map +1 -1
  404. package/dist/tools/types.js +5 -0
  405. package/dist/tools/types.js.map +1 -1
  406. package/dist/types.d.ts +14 -0
  407. package/dist/types.d.ts.map +1 -1
  408. package/dist/types.js.map +1 -1
  409. package/dist/wallet/evm.manager.d.ts +3 -1
  410. package/dist/wallet/evm.manager.d.ts.map +1 -1
  411. package/dist/wallet/evm.manager.js +12 -0
  412. package/dist/wallet/evm.manager.js.map +1 -1
  413. package/dist/wallet/evm.provider.d.ts.map +1 -1
  414. package/dist/wallet/evm.provider.js +0 -3
  415. package/dist/wallet/evm.provider.js.map +1 -1
  416. package/dist/wallet/types.d.ts +19 -0
  417. package/dist/wallet/types.d.ts.map +1 -1
  418. package/package.json +1 -1
@@ -0,0 +1,595 @@
1
+ import { ACCEPTANCE_EMPTY_CALLDATA, ACCEPTANCE_NO_VALUE, ACCEPTANCE_START_TIME_SKEW_SECONDS, MARKET_ACCEPTANCE_PREPARE_PATH, } from './acceptance.constants.js';
2
+ import { prepareAcceptanceResponseSchema, } from './acceptance.types.js';
3
+ import { acceptanceActionInputs, acceptanceApprovals, acceptanceFulfilment, effectiveAcceptanceDeadline, } from './acceptance.utils.js';
4
+ import { MarketActionTool, } from './action.types.js';
5
+ import { narrowInvocationDeadline } from './budget.utils.js';
6
+ import { MS_PER_SECOND } from './constants.js';
7
+ import { MarketError } from './error.js';
8
+ import { marketActionKey } from './idempotency.utils.js';
9
+ import { sameAddress } from './listing.utils.js';
10
+ import { sameOrderHash } from './purchase.utils.js';
11
+ import { cellTokenIdSchema, evmAddressSchema, MarketActionStage, MarketActionStatus, MarketErrorCode, MarketOfferKind, MarketTransactionKind, orderHashSchema, } from './types.js';
12
+ import { collectionApprovalCall } from '../../contracts/approval.utils.js';
13
+ import { ERC721_OWNERSHIP_ABI } from '../../contracts/erc721.abi.js';
14
+ import { SeaportSpenderReader } from '../../contracts/seaport-spender.reader.js';
15
+ import { SEAPORT_ADDRESS } from '../../contracts/seaport.constants.js';
16
+ import { SeaportSpenderOutcome } from '../../contracts/seaport.types.js';
17
+ import { errorMessage } from '../../utils/error.utils.js';
18
+ import { TxStatus } from '../../wallet/types.js';
19
+ export class MarketAcceptanceService {
20
+ client;
21
+ proof;
22
+ appConfig;
23
+ wallet;
24
+ network;
25
+ singleFlight;
26
+ recovery;
27
+ logger;
28
+ spenders;
29
+ constructor(options) {
30
+ this.spenders = new SeaportSpenderReader({ wallet: options.wallet });
31
+ this.client = options.client;
32
+ this.proof = options.proof;
33
+ this.appConfig = options.appConfig;
34
+ this.wallet = options.wallet;
35
+ this.network = options.network;
36
+ this.singleFlight = options.singleFlight;
37
+ this.recovery = options.recovery;
38
+ this.logger = options.logger;
39
+ }
40
+ async acceptCellOffer(request) {
41
+ const validated = this.requireUsableRequest(request);
42
+ const key = marketActionKey({
43
+ wallet: this.walletAddress(),
44
+ network: this.network,
45
+ tool: MarketActionTool.AcceptCellOffer,
46
+ inputs: acceptanceActionInputs(validated),
47
+ });
48
+ return this.singleFlight.run(key, async () => this.accept(key, validated));
49
+ }
50
+ async accept(key, request) {
51
+ const unresolved = this.recovery.read(key);
52
+ if (unresolved !== null && unresolved.payload.fulfilmentTxHash !== null) {
53
+ return this.settleKnownFulfilment(key, request, unresolved);
54
+ }
55
+ this.reserve(key, MarketActionStage.Prepare, this.emptyPayload());
56
+ let prepared;
57
+ try {
58
+ prepared = await this.prepare(request);
59
+ }
60
+ catch (error) {
61
+ this.recovery.forget(key);
62
+ throw error;
63
+ }
64
+ let payload = { prepared, approvalTxHashes: [], fulfilmentTxHash: null };
65
+ this.reserve(key, MarketActionStage.Prepare, payload);
66
+ for (const approval of acceptanceApprovals(prepared)) {
67
+ let hash;
68
+ try {
69
+ hash = await this.broadcastApproval(approval, request);
70
+ }
71
+ catch (error) {
72
+ this.recovery.forget(key);
73
+ throw error;
74
+ }
75
+ payload = { ...payload, approvalTxHashes: [...payload.approvalTxHashes, hash] };
76
+ this.reserve(key, MarketActionStage.Approve, payload);
77
+ }
78
+ return this.fulfil(key, request, payload);
79
+ }
80
+ async fulfil(key, request, payload) {
81
+ let transaction;
82
+ try {
83
+ const prepared = this.requirePrepared(payload);
84
+ this.requireWithinDeadline(prepared, MarketActionStage.Fulfil);
85
+ transaction = this.requireFulfilmentTransaction(prepared, request);
86
+ }
87
+ catch (error) {
88
+ this.recovery.forget(key);
89
+ throw error;
90
+ }
91
+ let hash;
92
+ try {
93
+ hash = await this.send(transaction);
94
+ }
95
+ catch (error) {
96
+ this.reserve(key, MarketActionStage.Fulfil, payload);
97
+ throw this.lostBroadcast(request, payload, errorMessage(error));
98
+ }
99
+ const sent = { ...payload, fulfilmentTxHash: hash };
100
+ this.reserve(key, MarketActionStage.Fulfil, sent);
101
+ return this.settle(key, request, sent, MarketActionStatus.Completed);
102
+ }
103
+ async settleKnownFulfilment(key, request, record) {
104
+ this.logger.info('an acceptance of this exact offer is already on-chain — proving it instead of selling again', {
105
+ orderHash: request.orderHash,
106
+ txHash: record.payload.fulfilmentTxHash,
107
+ });
108
+ return this.settle(key, request, record.payload, MarketActionStatus.AlreadyCompleted);
109
+ }
110
+ async settle(key, request, payload, status) {
111
+ const hash = this.requireFulfilmentHash(payload);
112
+ const receipt = await this.confirm(key, request, payload, hash);
113
+ try {
114
+ const collection = await this.requireCellCollection(MarketActionStage.Verify);
115
+ await this.proof.requireFulfilment({
116
+ receipt,
117
+ orderHash: request.orderHash,
118
+ wallet: this.walletAddress(),
119
+ stage: MarketActionStage.Verify,
120
+ boundCell: { collection, tokenId: this.requirePrepared(payload).offer.tokenId },
121
+ });
122
+ await this.requireSoldCell(this.requirePrepared(payload), hash);
123
+ }
124
+ catch (error) {
125
+ this.forgetIfSettled(key, error);
126
+ throw error;
127
+ }
128
+ this.recovery.forget(key);
129
+ return this.result(status, request, payload, hash);
130
+ }
131
+ // A terminal proof failure is the end of this intent: the transaction is mined and will never
132
+ // prove anything else, so holding its record would strand one of the bounded slots for the life
133
+ // of the process. A retryable one keeps its record, because repeating re-checks that same
134
+ // transaction instead of sending another.
135
+ forgetIfSettled(key, error) {
136
+ if (error instanceof MarketError && !error.retryable) {
137
+ this.recovery.forget(key);
138
+ }
139
+ }
140
+ async confirm(key, request, payload, hash) {
141
+ let receipt;
142
+ try {
143
+ receipt = await this.wallet.get().waitForReceipt(hash);
144
+ }
145
+ catch (error) {
146
+ throw new MarketError({
147
+ code: MarketErrorCode.OutcomeUnknown,
148
+ message: `The acceptance of offer ${request.orderHash} was broadcast as ${hash}, but its receipt could ` +
149
+ `not be read: ${errorMessage(error)}. The transaction is kept, so repeating this call ` +
150
+ 're-checks that exact transaction instead of selling anything else.',
151
+ retryable: true,
152
+ retryAfterSeconds: null,
153
+ stage: MarketActionStage.Fulfil,
154
+ txHash: hash,
155
+ });
156
+ }
157
+ if (receipt.status === TxStatus.Success) {
158
+ return receipt;
159
+ }
160
+ this.recovery.forget(key);
161
+ throw new MarketError({
162
+ code: MarketErrorCode.TransactionReverted,
163
+ message: `The acceptance of offer ${request.orderHash} reverted on-chain, so no Cell changed hands and ` +
164
+ `nothing was earned beyond the gas it cost. ${this.knownHashes(payload, hash)} The offer may have ` +
165
+ 'been filled or cancelled meanwhile; read the market again and pick an exact offer.',
166
+ retryable: false,
167
+ retryAfterSeconds: null,
168
+ stage: MarketActionStage.Fulfil,
169
+ txHash: hash,
170
+ });
171
+ }
172
+ async requireSoldCell(prepared, hash) {
173
+ const tokenId = prepared.offer.tokenId;
174
+ let owner;
175
+ try {
176
+ owner = await this.readCellOwner(tokenId, MarketActionStage.Verify);
177
+ }
178
+ catch (error) {
179
+ throw new MarketError({
180
+ code: MarketErrorCode.OutcomeUnknown,
181
+ message: `Offer ${prepared.offer.orderHash} was fulfilled by transaction ${hash}, but who owns Cell ` +
182
+ `${tokenId} now could not be read: ${errorMessage(error)}. The transaction is kept, so ` +
183
+ 'repeating this call re-checks it instead of selling anything else.',
184
+ retryable: true,
185
+ retryAfterSeconds: null,
186
+ stage: MarketActionStage.Verify,
187
+ txHash: hash,
188
+ });
189
+ }
190
+ if (!sameAddress(owner, this.walletAddress())) {
191
+ return;
192
+ }
193
+ throw new MarketError({
194
+ code: MarketErrorCode.WrongOwner,
195
+ message: `Transaction ${hash} carries the fulfilment of offer ${prepared.offer.orderHash}, but Cell ` +
196
+ `${tokenId} is still owned by this wallet ${this.walletAddress()}, so that transaction does not ` +
197
+ 'prove the Cell was sold. Nothing else was sent.',
198
+ retryable: false,
199
+ retryAfterSeconds: null,
200
+ stage: MarketActionStage.Verify,
201
+ txHash: hash,
202
+ });
203
+ }
204
+ async prepare(request) {
205
+ const collection = await this.requireCellCollection(MarketActionStage.Prepare);
206
+ const body = { orderHash: request.orderHash };
207
+ if (request.tokenId !== null) {
208
+ body.tokenId = request.tokenId;
209
+ }
210
+ const prepared = await this.client.sendOnce({
211
+ path: MARKET_ACCEPTANCE_PREPARE_PATH,
212
+ method: 'POST',
213
+ body,
214
+ schema: prepareAcceptanceResponseSchema(this.wallet.get().getChainId()),
215
+ stage: MarketActionStage.Prepare,
216
+ label: `Preparing the acceptance of offer ${request.orderHash}`,
217
+ });
218
+ await this.requireTrustworthyPreparation(request, prepared, collection);
219
+ return prepared;
220
+ }
221
+ async requireTrustworthyPreparation(request, prepared, collection) {
222
+ const wallet = this.walletAddress();
223
+ if (!sameAddress(prepared.offer.protocolAddress, SEAPORT_ADDRESS)) {
224
+ throw this.untrustworthy(MarketErrorCode.ProtocolAddressMismatch, `it names protocol contract ${prepared.offer.protocolAddress} instead of the pinned ${SEAPORT_ADDRESS}`, request);
225
+ }
226
+ this.requirePinnedOffer(request, prepared);
227
+ this.requireWithinDeadline(prepared, MarketActionStage.Prepare);
228
+ this.requireBoundCell(request, prepared);
229
+ if (sameAddress(prepared.offer.maker, wallet)) {
230
+ throw this.untrustworthy(MarketErrorCode.WrongOwner, `it is your own offer — this wallet ${wallet} is both the buyer and the seller`, request);
231
+ }
232
+ await this.requireOwnedCell(request, prepared);
233
+ this.requireFulfilmentShape(request, prepared);
234
+ await this.requireCollectionApprovals(request, prepared, collection);
235
+ }
236
+ requirePinnedOffer(request, prepared) {
237
+ const offer = prepared.offer;
238
+ if (!sameOrderHash(offer.orderHash, request.orderHash)) {
239
+ throw this.unavailable(request, `the marketplace answered with offer ${offer.orderHash} instead of the offer you pinned`);
240
+ }
241
+ const now = this.nowSeconds();
242
+ if (offer.expirationTime <= now) {
243
+ throw this.unavailable(request, `it expired at ${offer.expirationTime} and can no longer be accepted`);
244
+ }
245
+ if (offer.startTime > now + ACCEPTANCE_START_TIME_SKEW_SECONDS) {
246
+ throw this.unavailable(request, `it cannot be accepted until ${offer.startTime}`);
247
+ }
248
+ }
249
+ requireBoundCell(request, prepared) {
250
+ const offer = prepared.offer;
251
+ const selected = offer.kind === MarketOfferKind.Item ? this.itemCell(request, prepared) : request.tokenId;
252
+ if (selected === null) {
253
+ throw this.rejectedInput(`Offer ${request.orderHash} is a ${offer.kind} offer: it names a set of Cells rather than one, so ` +
254
+ 'it cannot pick which of your Cells to sell. Pass the exact `tokenId` you want to sell and ' +
255
+ 'call the tool again. Nothing was sent.');
256
+ }
257
+ if (prepared.offer.tokenId !== selected) {
258
+ throw this.untrustworthy(MarketErrorCode.InvalidMarketResponse, `it would sell Cell ${prepared.offer.tokenId} rather than the Cell ${selected} this call is bound to`, request);
259
+ }
260
+ }
261
+ itemCell(request, prepared) {
262
+ const named = prepared.offer.tokenId;
263
+ if (named === null) {
264
+ throw this.untrustworthy(MarketErrorCode.InvalidMarketResponse, 'it calls the order an offer for one exact Cell while naming no Cell at all', request);
265
+ }
266
+ if (request.tokenId !== null && request.tokenId !== named) {
267
+ throw this.rejectedInput(`Offer ${request.orderHash} bids for Cell ${named}, not for the Cell ${request.tokenId} you named. ` +
268
+ 'Accept it for that Cell, or pick another offer. Nothing was sent.');
269
+ }
270
+ return named;
271
+ }
272
+ async requireOwnedCell(request, prepared) {
273
+ const tokenId = prepared.offer.tokenId;
274
+ let owner;
275
+ try {
276
+ owner = await this.readCellOwner(tokenId, MarketActionStage.Prepare);
277
+ }
278
+ catch (error) {
279
+ throw new MarketError({
280
+ code: MarketErrorCode.NetworkFailure,
281
+ message: `Offer ${request.orderHash} was not accepted because who owns Cell ${tokenId} could not be ` +
282
+ `read: ${errorMessage(error)}. Nothing was approved and no Cell was sold.`,
283
+ retryable: true,
284
+ retryAfterSeconds: null,
285
+ stage: MarketActionStage.Prepare,
286
+ txHash: null,
287
+ });
288
+ }
289
+ if (sameAddress(owner, this.walletAddress())) {
290
+ return;
291
+ }
292
+ throw new MarketError({
293
+ code: MarketErrorCode.WrongOwner,
294
+ message: `Cell ${tokenId} is owned by ${owner} rather than this wallet ${this.walletAddress()}, so this ` +
295
+ `wallet cannot sell it against offer ${request.orderHash}. Nothing was approved and nothing was ` +
296
+ 'sent. If you already sold it, that sale stands and this call would only have spent gas.',
297
+ retryable: false,
298
+ retryAfterSeconds: null,
299
+ stage: MarketActionStage.Prepare,
300
+ txHash: null,
301
+ });
302
+ }
303
+ requireFulfilmentShape(request, prepared) {
304
+ const chainId = this.wallet.get().getChainId();
305
+ const transactions = prepared.transactions;
306
+ const last = transactions.at(-1) ?? null;
307
+ if (last === null || last.kind !== MarketTransactionKind.Fulfillment) {
308
+ throw this.untrustworthy(MarketErrorCode.InvalidMarketResponse, 'it does not end with the one fulfilment transaction that sells the Cell', request);
309
+ }
310
+ if (acceptanceFulfilment(prepared) === null) {
311
+ throw this.untrustworthy(MarketErrorCode.InvalidMarketResponse, 'it asks to send more than one fulfilment transaction for a single offer', request);
312
+ }
313
+ if (last.data === ACCEPTANCE_EMPTY_CALLDATA) {
314
+ throw this.untrustworthy(MarketErrorCode.InvalidMarketResponse, 'its fulfilment transaction carries no calldata, so it would sell nothing', request);
315
+ }
316
+ if (!sameAddress(last.to, SEAPORT_ADDRESS)) {
317
+ throw this.untrustworthy(MarketErrorCode.InvalidMarketResponse, `its fulfilment transaction would hand the Cell to ${last.to} rather than to the pinned protocol ` +
318
+ `contract ${SEAPORT_ADDRESS}`, request);
319
+ }
320
+ const foreignChain = transactions.find((transaction) => transaction.chainId !== chainId);
321
+ if (foreignChain !== undefined) {
322
+ throw this.untrustworthy(MarketErrorCode.ChainMismatch, `it asks to send a "${foreignChain.kind}" transaction on chain ${foreignChain.chainId} while this ` +
323
+ `wallet sells on chain ${chainId}`, request);
324
+ }
325
+ const foreignKind = transactions
326
+ .slice(0, -1)
327
+ .find((transaction) => transaction.kind !== MarketTransactionKind.CollectionApproval);
328
+ if (foreignKind !== undefined) {
329
+ throw this.untrustworthy(MarketErrorCode.InvalidMarketResponse, 'accepting an offer may only need collection approvals before the fulfilment, but it asks to send ' +
330
+ `a "${foreignKind.kind}" transaction first`, request);
331
+ }
332
+ const valued = transactions.find((transaction) => transaction.value !== ACCEPTANCE_NO_VALUE);
333
+ if (valued !== undefined) {
334
+ throw this.untrustworthy(MarketErrorCode.InvalidMarketResponse, `it asks to send ${valued.value} native base units out of this wallet for a sale that pays it ` +
335
+ `${prepared.offer.amount} ${prepared.offer.currency.symbol}`, request);
336
+ }
337
+ }
338
+ async requireCollectionApprovals(request, prepared, collection) {
339
+ const approvals = acceptanceApprovals(prepared).map((transaction) => this.requireCollectionOperator(request, transaction, collection));
340
+ const firstApproval = approvals[0];
341
+ if (firstApproval === undefined) {
342
+ return;
343
+ }
344
+ const operator = await this.requireRegisteredOperator(request, firstApproval.operator);
345
+ const stranger = approvals.find((approval) => !sameAddress(approval.operator, operator));
346
+ if (stranger !== undefined) {
347
+ throw this.untrustworthy(MarketErrorCode.InvalidMarketResponse, `it asks the wallet to let ${stranger.operator} move every Cell it owns, while this acceptance ` +
348
+ `settles through ${operator}`, request);
349
+ }
350
+ }
351
+ requireCollectionOperator(request, transaction, collection) {
352
+ if (!sameAddress(transaction.to, collection)) {
353
+ throw this.untrustworthy(MarketErrorCode.InvalidMarketResponse, `it asks the wallet to approve contract ${transaction.to} instead of the Cell collection ` +
354
+ `${collection}`, request);
355
+ }
356
+ const approval = collectionApprovalCall(transaction.data);
357
+ if (approval === null) {
358
+ throw this.untrustworthy(MarketErrorCode.InvalidMarketResponse, 'it asks the wallet to send calldata the Cell collection would not read as approving one operator', request);
359
+ }
360
+ if (!approval.approved) {
361
+ throw this.untrustworthy(MarketErrorCode.InvalidMarketResponse, `it asks the wallet to withdraw ${approval.operator}'s approval rather than grant the one this ` +
362
+ 'sale needs', request);
363
+ }
364
+ return approval;
365
+ }
366
+ async requireRegisteredOperator(request, operator) {
367
+ const answer = await this.spenders.registeredSpender(operator);
368
+ const detail = answer.detail ?? `${operator} is not a registered protocol spender`;
369
+ if (answer.outcome === SeaportSpenderOutcome.Unreachable) {
370
+ throw new MarketError({
371
+ code: MarketErrorCode.NetworkFailure,
372
+ message: `Offer ${request.orderHash} was not accepted because ${detail}. Nothing was approved and no ` +
373
+ 'Cell was sold.',
374
+ retryable: true,
375
+ retryAfterSeconds: null,
376
+ stage: MarketActionStage.Prepare,
377
+ txHash: null,
378
+ });
379
+ }
380
+ if (answer.outcome !== SeaportSpenderOutcome.Resolved || answer.address === null) {
381
+ throw this.untrustworthy(MarketErrorCode.InvalidMarketResponse, `it would settle this sale through an operator this client cannot justify: ${detail}`, request);
382
+ }
383
+ return answer.address;
384
+ }
385
+ async broadcastApproval(transaction, request) {
386
+ const hash = await this.send(transaction);
387
+ const receipt = await this.wallet.get().waitForReceipt(hash);
388
+ if (receipt.status !== TxStatus.Success) {
389
+ throw new MarketError({
390
+ code: MarketErrorCode.TransactionReverted,
391
+ message: 'The collection approval this sale needs reverted on-chain, so offer ' +
392
+ `${request.orderHash} was never fulfilled and no Cell changed hands.`,
393
+ retryable: false,
394
+ retryAfterSeconds: null,
395
+ stage: MarketActionStage.Approve,
396
+ txHash: hash,
397
+ });
398
+ }
399
+ return hash;
400
+ }
401
+ async send(transaction) {
402
+ return this.wallet.get().sendTransaction({
403
+ to: transaction.to,
404
+ data: transaction.data,
405
+ value: BigInt(transaction.value),
406
+ gas: null,
407
+ });
408
+ }
409
+ async readCellOwner(tokenId, stage) {
410
+ const collection = await this.requireCellCollection(stage);
411
+ return (await this.wallet.get().readContract({
412
+ address: collection,
413
+ abi: ERC721_OWNERSHIP_ABI,
414
+ functionName: 'ownerOf',
415
+ args: [BigInt(tokenId)],
416
+ }));
417
+ }
418
+ async requireCellCollection(stage) {
419
+ const config = await this.appConfig.load();
420
+ const collection = config.contracts.land;
421
+ if (!evmAddressSchema.safeParse(collection).success) {
422
+ throw new MarketError({
423
+ code: MarketErrorCode.InvalidMarketResponse,
424
+ message: 'The Cell collection contract is not configured for this network, so neither the approval this ' +
425
+ 'sale asks for nor who owns the Cell afterwards can be checked.',
426
+ retryable: false,
427
+ retryAfterSeconds: null,
428
+ stage,
429
+ txHash: null,
430
+ });
431
+ }
432
+ return collection;
433
+ }
434
+ requireFulfilmentTransaction(prepared, request) {
435
+ const fulfilment = acceptanceFulfilment(prepared);
436
+ if (fulfilment !== null) {
437
+ return fulfilment;
438
+ }
439
+ throw this.untrustworthy(MarketErrorCode.InvalidMarketResponse, 'it carries no single fulfilment transaction to send', request);
440
+ }
441
+ requireWithinDeadline(prepared, stage) {
442
+ const deadline = effectiveAcceptanceDeadline(prepared);
443
+ narrowInvocationDeadline(deadline);
444
+ if (this.nowSeconds() < deadline) {
445
+ return;
446
+ }
447
+ throw new MarketError({
448
+ code: MarketErrorCode.PreparedIntentExpired,
449
+ message: 'This prepared acceptance is past the offer expiry, so it can ' +
450
+ 'no longer be sent. No Cell was sold. Call the tool again for the same exact offer.',
451
+ retryable: false,
452
+ retryAfterSeconds: null,
453
+ stage,
454
+ txHash: null,
455
+ });
456
+ }
457
+ requirePrepared(payload) {
458
+ if (payload.prepared === null) {
459
+ throw new MarketError({
460
+ code: MarketErrorCode.InvalidMarketResponse,
461
+ message: 'The acceptance has no prepared offer to fulfil.',
462
+ retryable: false,
463
+ retryAfterSeconds: null,
464
+ stage: MarketActionStage.Fulfil,
465
+ txHash: null,
466
+ });
467
+ }
468
+ return payload.prepared;
469
+ }
470
+ requireFulfilmentHash(payload) {
471
+ if (payload.fulfilmentTxHash === null) {
472
+ throw new MarketError({
473
+ code: MarketErrorCode.InvalidMarketResponse,
474
+ message: 'The acceptance has no broadcast fulfilment transaction to verify.',
475
+ retryable: false,
476
+ retryAfterSeconds: null,
477
+ stage: MarketActionStage.Verify,
478
+ txHash: null,
479
+ });
480
+ }
481
+ return payload.fulfilmentTxHash;
482
+ }
483
+ requireUsableRequest(request) {
484
+ const orderHash = orderHashSchema.safeParse(request.orderHash);
485
+ if (!orderHash.success) {
486
+ throw this.rejectedInput(`"${request.orderHash}" is not a Market order hash. Pass the exact 32-byte 0x-prefixed ` +
487
+ '`orderHash` of the offer you decided to accept — this tool never picks an offer for you.');
488
+ }
489
+ if (request.tokenId === null) {
490
+ return { orderHash: orderHash.data, tokenId: null };
491
+ }
492
+ const tokenId = cellTokenIdSchema.safeParse(request.tokenId);
493
+ if (!tokenId.success) {
494
+ throw this.rejectedInput(`"${request.tokenId}" is not a canonical Cell token id. Pass a decimal integer with no leading ` +
495
+ 'zeroes so that one Cell keeps one identity.');
496
+ }
497
+ return { orderHash: orderHash.data, tokenId: tokenId.data };
498
+ }
499
+ reserve(key, stage, payload) {
500
+ this.recovery.write(key, { tool: MarketActionTool.AcceptCellOffer, stage, payload });
501
+ }
502
+ emptyPayload() {
503
+ return { prepared: null, approvalTxHashes: [], fulfilmentTxHash: null };
504
+ }
505
+ result(status, request, payload, hash) {
506
+ const prepared = this.requirePrepared(payload);
507
+ this.logger.info('the Cell sale is confirmed', {
508
+ tokenId: prepared.offer.tokenId,
509
+ status,
510
+ orderHash: request.orderHash,
511
+ txHash: hash,
512
+ });
513
+ return {
514
+ status,
515
+ stage: MarketActionStage.Verify,
516
+ wallet: this.walletAddress(),
517
+ tokenId: prepared.offer.tokenId,
518
+ orderHash: request.orderHash,
519
+ offer: prepared.offer,
520
+ buyer: prepared.offer.maker,
521
+ amount: prepared.offer.amount,
522
+ currency: prepared.offer.currency,
523
+ approvalTxHashes: [...payload.approvalTxHashes],
524
+ fulfilmentTxHash: hash,
525
+ txHashes: [...payload.approvalTxHashes, hash],
526
+ };
527
+ }
528
+ lostBroadcast(request, payload, reason) {
529
+ this.logger.error('the fulfilment broadcast left an uncertain outcome', {
530
+ orderHash: request.orderHash,
531
+ reason,
532
+ });
533
+ return new MarketError({
534
+ code: MarketErrorCode.NetworkFailure,
535
+ message: `The acceptance of offer ${request.orderHash} could not be confirmed as broadcast: ${reason}. No ` +
536
+ `second fulfilment was sent in this call. ${this.knownHashes(payload, null)} Repeating this call ` +
537
+ 'targets that same exact offer and the same Cell, and can never sell another one; at worst it ' +
538
+ 'spends gas on a transaction the protocol rejects.',
539
+ retryable: true,
540
+ retryAfterSeconds: null,
541
+ stage: MarketActionStage.Fulfil,
542
+ txHash: null,
543
+ });
544
+ }
545
+ knownHashes(payload, hash) {
546
+ const hashes = [...payload.approvalTxHashes, ...(hash === null ? [] : [hash])];
547
+ return hashes.length === 0
548
+ ? 'No transaction was broadcast.'
549
+ : `Transactions broadcast in order: ${hashes.join(', ')}.`;
550
+ }
551
+ unavailable(request, detail) {
552
+ this.logger.error('the pinned Market offer cannot be accepted', { orderHash: request.orderHash, detail });
553
+ return new MarketError({
554
+ code: MarketErrorCode.OrderUnavailable,
555
+ message: `Offer ${request.orderHash} cannot be accepted: ${detail}. No replacement offer was selected and ` +
556
+ 'nothing was sold. Read the market again and pass another exact `orderHash` if you still want to ' +
557
+ 'sell that Cell.',
558
+ retryable: false,
559
+ retryAfterSeconds: null,
560
+ stage: MarketActionStage.Prepare,
561
+ txHash: null,
562
+ });
563
+ }
564
+ untrustworthy(code, detail, request) {
565
+ this.logger.error('the prepared acceptance does not match the request', {
566
+ orderHash: request.orderHash,
567
+ detail,
568
+ });
569
+ return new MarketError({
570
+ code,
571
+ message: `The prepared acceptance of offer ${request.orderHash} cannot be sent: ${detail}.`,
572
+ retryable: false,
573
+ retryAfterSeconds: null,
574
+ stage: MarketActionStage.Prepare,
575
+ txHash: null,
576
+ });
577
+ }
578
+ rejectedInput(message) {
579
+ return new MarketError({
580
+ code: MarketErrorCode.InvalidInput,
581
+ message,
582
+ retryable: false,
583
+ retryAfterSeconds: null,
584
+ stage: MarketActionStage.Prepare,
585
+ txHash: null,
586
+ });
587
+ }
588
+ walletAddress() {
589
+ return this.wallet.get().getAddress();
590
+ }
591
+ nowSeconds() {
592
+ return Math.floor(Date.now() / MS_PER_SECOND);
593
+ }
594
+ }
595
+ //# sourceMappingURL=acceptance.service.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"acceptance.service.js","sourceRoot":"","sources":["../../../src/services/market/acceptance.service.ts"],"names":[],"mappings":"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"}