@opensea/sdk 9.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (363) hide show
  1. package/LICENSE +7 -0
  2. package/README.md +70 -0
  3. package/lib/api/accounts.d.ts +27 -0
  4. package/lib/api/accounts.js +46 -0
  5. package/lib/api/accounts.js.map +1 -0
  6. package/lib/api/api.d.ts +489 -0
  7. package/lib/api/api.js +754 -0
  8. package/lib/api/api.js.map +1 -0
  9. package/lib/api/apiPaths.d.ts +46 -0
  10. package/lib/api/apiPaths.js +176 -0
  11. package/lib/api/apiPaths.js.map +1 -0
  12. package/lib/api/chains.d.ts +13 -0
  13. package/lib/api/chains.js +22 -0
  14. package/lib/api/chains.js.map +1 -0
  15. package/lib/api/collections.d.ts +34 -0
  16. package/lib/api/collections.js +80 -0
  17. package/lib/api/collections.js.map +1 -0
  18. package/lib/api/drops.d.ts +21 -0
  19. package/lib/api/drops.js +39 -0
  20. package/lib/api/drops.js.map +1 -0
  21. package/lib/api/events.d.ts +26 -0
  22. package/lib/api/events.js +43 -0
  23. package/lib/api/events.js.map +1 -0
  24. package/lib/api/fetcher.d.ts +24 -0
  25. package/lib/api/fetcher.js +3 -0
  26. package/lib/api/fetcher.js.map +1 -0
  27. package/lib/api/index.d.ts +2 -0
  28. package/lib/api/index.js +19 -0
  29. package/lib/api/index.js.map +1 -0
  30. package/lib/api/listings.d.ts +44 -0
  31. package/lib/api/listings.js +88 -0
  32. package/lib/api/listings.js.map +1 -0
  33. package/lib/api/nfts.d.ts +39 -0
  34. package/lib/api/nfts.js +79 -0
  35. package/lib/api/nfts.js.map +1 -0
  36. package/lib/api/offers.d.ts +54 -0
  37. package/lib/api/offers.js +124 -0
  38. package/lib/api/offers.js.map +1 -0
  39. package/lib/api/orders.d.ts +50 -0
  40. package/lib/api/orders.js +153 -0
  41. package/lib/api/orders.js.map +1 -0
  42. package/lib/api/search.d.ts +13 -0
  43. package/lib/api/search.js +22 -0
  44. package/lib/api/search.js.map +1 -0
  45. package/lib/api/tokens.d.ts +25 -0
  46. package/lib/api/tokens.js +43 -0
  47. package/lib/api/tokens.js.map +1 -0
  48. package/lib/api/types.d.ts +1113 -0
  49. package/lib/api/types.js +65 -0
  50. package/lib/api/types.js.map +1 -0
  51. package/lib/constants.d.ts +22 -0
  52. package/lib/constants.js +52 -0
  53. package/lib/constants.js.map +1 -0
  54. package/lib/index.d.ts +18 -0
  55. package/lib/index.js +24 -0
  56. package/lib/index.js.map +1 -0
  57. package/lib/orders/privateListings.d.ts +12 -0
  58. package/lib/orders/privateListings.js +130 -0
  59. package/lib/orders/privateListings.js.map +1 -0
  60. package/lib/orders/types.d.ts +160 -0
  61. package/lib/orders/types.js +10 -0
  62. package/lib/orders/types.js.map +1 -0
  63. package/lib/orders/utils.d.ts +89 -0
  64. package/lib/orders/utils.js +177 -0
  65. package/lib/orders/utils.js.map +1 -0
  66. package/lib/sdk/assets.d.ts +104 -0
  67. package/lib/sdk/assets.js +398 -0
  68. package/lib/sdk/assets.js.map +1 -0
  69. package/lib/sdk/cancellation.d.ts +97 -0
  70. package/lib/sdk/cancellation.js +235 -0
  71. package/lib/sdk/cancellation.js.map +1 -0
  72. package/lib/sdk/context.d.ts +28 -0
  73. package/lib/sdk/context.js +3 -0
  74. package/lib/sdk/context.js.map +1 -0
  75. package/lib/sdk/fulfillment.d.ts +153 -0
  76. package/lib/sdk/fulfillment.js +298 -0
  77. package/lib/sdk/fulfillment.js.map +1 -0
  78. package/lib/sdk/orders.d.ts +253 -0
  79. package/lib/sdk/orders.js +679 -0
  80. package/lib/sdk/orders.js.map +1 -0
  81. package/lib/sdk/tokens.d.ts +31 -0
  82. package/lib/sdk/tokens.js +65 -0
  83. package/lib/sdk/tokens.js.map +1 -0
  84. package/lib/sdk.d.ts +560 -0
  85. package/lib/sdk.js +693 -0
  86. package/lib/sdk.js.map +1 -0
  87. package/lib/src/api/accounts.d.ts +18 -0
  88. package/lib/src/api/accounts.js +30 -0
  89. package/lib/src/api/accounts.js.map +1 -0
  90. package/lib/src/api/api.d.ts +429 -0
  91. package/lib/src/api/api.js +652 -0
  92. package/lib/src/api/api.js.map +1 -0
  93. package/lib/src/api/apiPaths.d.ts +37 -0
  94. package/lib/src/api/apiPaths.js +140 -0
  95. package/lib/src/api/apiPaths.js.map +1 -0
  96. package/lib/src/api/collections.d.ts +26 -0
  97. package/lib/src/api/collections.js +57 -0
  98. package/lib/src/api/collections.js.map +1 -0
  99. package/lib/src/api/events.d.ts +26 -0
  100. package/lib/src/api/events.js +42 -0
  101. package/lib/src/api/events.js.map +1 -0
  102. package/lib/src/api/fetcher.d.ts +24 -0
  103. package/lib/src/api/fetcher.js +3 -0
  104. package/lib/src/api/fetcher.js.map +1 -0
  105. package/lib/src/api/index.d.ts +2 -0
  106. package/lib/src/api/index.js +19 -0
  107. package/lib/src/api/index.js.map +1 -0
  108. package/lib/src/api/listings.d.ts +44 -0
  109. package/lib/src/api/listings.js +86 -0
  110. package/lib/src/api/listings.js.map +1 -0
  111. package/lib/src/api/nfts.d.ts +35 -0
  112. package/lib/src/api/nfts.js +66 -0
  113. package/lib/src/api/nfts.js.map +1 -0
  114. package/lib/src/api/offers.d.ts +54 -0
  115. package/lib/src/api/offers.js +122 -0
  116. package/lib/src/api/offers.js.map +1 -0
  117. package/lib/src/api/orders.d.ts +50 -0
  118. package/lib/src/api/orders.js +151 -0
  119. package/lib/src/api/orders.js.map +1 -0
  120. package/lib/src/api/search.d.ts +13 -0
  121. package/lib/src/api/search.js +21 -0
  122. package/lib/src/api/search.js.map +1 -0
  123. package/lib/src/api/tokens.d.ts +25 -0
  124. package/lib/src/api/tokens.js +42 -0
  125. package/lib/src/api/tokens.js.map +1 -0
  126. package/lib/src/api/types.d.ts +840 -0
  127. package/lib/src/api/types.js +65 -0
  128. package/lib/src/api/types.js.map +1 -0
  129. package/lib/src/constants.d.ts +22 -0
  130. package/lib/src/constants.js +52 -0
  131. package/lib/src/constants.js.map +1 -0
  132. package/lib/src/index.d.ts +18 -0
  133. package/lib/src/index.js +24 -0
  134. package/lib/src/index.js.map +1 -0
  135. package/lib/src/orders/privateListings.d.ts +12 -0
  136. package/lib/src/orders/privateListings.js +130 -0
  137. package/lib/src/orders/privateListings.js.map +1 -0
  138. package/lib/src/orders/types.d.ts +160 -0
  139. package/lib/src/orders/types.js +10 -0
  140. package/lib/src/orders/types.js.map +1 -0
  141. package/lib/src/orders/utils.d.ts +89 -0
  142. package/lib/src/orders/utils.js +177 -0
  143. package/lib/src/orders/utils.js.map +1 -0
  144. package/lib/src/sdk/assets.d.ts +104 -0
  145. package/lib/src/sdk/assets.js +397 -0
  146. package/lib/src/sdk/assets.js.map +1 -0
  147. package/lib/src/sdk/cancellation.d.ts +97 -0
  148. package/lib/src/sdk/cancellation.js +234 -0
  149. package/lib/src/sdk/cancellation.js.map +1 -0
  150. package/lib/src/sdk/context.d.ts +28 -0
  151. package/lib/src/sdk/context.js +3 -0
  152. package/lib/src/sdk/context.js.map +1 -0
  153. package/lib/src/sdk/fulfillment.d.ts +153 -0
  154. package/lib/src/sdk/fulfillment.js +296 -0
  155. package/lib/src/sdk/fulfillment.js.map +1 -0
  156. package/lib/src/sdk/orders.d.ts +253 -0
  157. package/lib/src/sdk/orders.js +677 -0
  158. package/lib/src/sdk/orders.js.map +1 -0
  159. package/lib/src/sdk/tokens.d.ts +31 -0
  160. package/lib/src/sdk/tokens.js +64 -0
  161. package/lib/src/sdk/tokens.js.map +1 -0
  162. package/lib/src/sdk.d.ts +560 -0
  163. package/lib/src/sdk.js +675 -0
  164. package/lib/src/sdk.js.map +1 -0
  165. package/lib/src/typechain/contracts/ERC1155.d.ts +236 -0
  166. package/lib/src/typechain/contracts/ERC1155.js +3 -0
  167. package/lib/src/typechain/contracts/ERC1155.js.map +1 -0
  168. package/lib/src/typechain/contracts/ERC20.d.ts +141 -0
  169. package/lib/src/typechain/contracts/ERC20.js +3 -0
  170. package/lib/src/typechain/contracts/ERC20.js.map +1 -0
  171. package/lib/src/typechain/contracts/ERC721.d.ts +213 -0
  172. package/lib/src/typechain/contracts/ERC721.js +3 -0
  173. package/lib/src/typechain/contracts/ERC721.js.map +1 -0
  174. package/lib/src/typechain/contracts/Multicall3.d.ts +57 -0
  175. package/lib/src/typechain/contracts/Multicall3.js +3 -0
  176. package/lib/src/typechain/contracts/Multicall3.js.map +1 -0
  177. package/lib/src/typechain/contracts/TransferHelper.d.ts +55 -0
  178. package/lib/src/typechain/contracts/TransferHelper.js +3 -0
  179. package/lib/src/typechain/contracts/TransferHelper.js.map +1 -0
  180. package/lib/src/typechain/contracts/common.d.ts +50 -0
  181. package/lib/src/typechain/contracts/common.js +3 -0
  182. package/lib/src/typechain/contracts/common.js.map +1 -0
  183. package/lib/src/typechain/contracts/factories/ERC1155__factory.d.ts +250 -0
  184. package/lib/src/typechain/contracts/factories/ERC1155__factory.js +332 -0
  185. package/lib/src/typechain/contracts/factories/ERC1155__factory.js.map +1 -0
  186. package/lib/src/typechain/contracts/factories/ERC20__factory.d.ts +174 -0
  187. package/lib/src/typechain/contracts/factories/ERC20__factory.js +240 -0
  188. package/lib/src/typechain/contracts/factories/ERC20__factory.js.map +1 -0
  189. package/lib/src/typechain/contracts/factories/ERC721__factory.d.ts +268 -0
  190. package/lib/src/typechain/contracts/factories/ERC721__factory.js +351 -0
  191. package/lib/src/typechain/contracts/factories/ERC721__factory.js.map +1 -0
  192. package/lib/src/typechain/contracts/factories/Multicall3__factory.d.ts +43 -0
  193. package/lib/src/typechain/contracts/factories/Multicall3__factory.js +68 -0
  194. package/lib/src/typechain/contracts/factories/Multicall3__factory.js.map +1 -0
  195. package/lib/src/typechain/contracts/factories/TransferHelper__factory.d.ts +46 -0
  196. package/lib/src/typechain/contracts/factories/TransferHelper__factory.js +71 -0
  197. package/lib/src/typechain/contracts/factories/TransferHelper__factory.js.map +1 -0
  198. package/lib/src/typechain/contracts/factories/index.d.ts +5 -0
  199. package/lib/src/typechain/contracts/factories/index.js +17 -0
  200. package/lib/src/typechain/contracts/factories/index.js.map +1 -0
  201. package/lib/src/typechain/contracts/index.d.ts +11 -0
  202. package/lib/src/typechain/contracts/index.js +48 -0
  203. package/lib/src/typechain/contracts/index.js.map +1 -0
  204. package/lib/src/types.d.ts +387 -0
  205. package/lib/src/types.js +127 -0
  206. package/lib/src/types.js.map +1 -0
  207. package/lib/src/utils/chain.d.ts +60 -0
  208. package/lib/src/utils/chain.js +248 -0
  209. package/lib/src/utils/chain.js.map +1 -0
  210. package/lib/src/utils/converters.d.ts +37 -0
  211. package/lib/src/utils/converters.js +137 -0
  212. package/lib/src/utils/converters.js.map +1 -0
  213. package/lib/src/utils/dateHelper.d.ts +38 -0
  214. package/lib/src/utils/dateHelper.js +52 -0
  215. package/lib/src/utils/dateHelper.js.map +1 -0
  216. package/lib/src/utils/fees.d.ts +13 -0
  217. package/lib/src/utils/fees.js +29 -0
  218. package/lib/src/utils/fees.js.map +1 -0
  219. package/lib/src/utils/index.d.ts +2 -0
  220. package/lib/src/utils/index.js +19 -0
  221. package/lib/src/utils/index.js.map +1 -0
  222. package/lib/src/utils/protocol.d.ts +75 -0
  223. package/lib/src/utils/protocol.js +161 -0
  224. package/lib/src/utils/protocol.js.map +1 -0
  225. package/lib/src/utils/rateLimit.d.ts +34 -0
  226. package/lib/src/utils/rateLimit.js +97 -0
  227. package/lib/src/utils/rateLimit.js.map +1 -0
  228. package/lib/src/utils/stringHelper.d.ts +18 -0
  229. package/lib/src/utils/stringHelper.js +24 -0
  230. package/lib/src/utils/stringHelper.js.map +1 -0
  231. package/lib/src/utils/utils.d.ts +18 -0
  232. package/lib/src/utils/utils.js +45 -0
  233. package/lib/src/utils/utils.js.map +1 -0
  234. package/lib/typechain/contracts/ERC1155.d.ts +236 -0
  235. package/lib/typechain/contracts/ERC1155.js +3 -0
  236. package/lib/typechain/contracts/ERC1155.js.map +1 -0
  237. package/lib/typechain/contracts/ERC20.d.ts +141 -0
  238. package/lib/typechain/contracts/ERC20.js +3 -0
  239. package/lib/typechain/contracts/ERC20.js.map +1 -0
  240. package/lib/typechain/contracts/ERC721.d.ts +213 -0
  241. package/lib/typechain/contracts/ERC721.js +3 -0
  242. package/lib/typechain/contracts/ERC721.js.map +1 -0
  243. package/lib/typechain/contracts/Multicall3.d.ts +57 -0
  244. package/lib/typechain/contracts/Multicall3.js +3 -0
  245. package/lib/typechain/contracts/Multicall3.js.map +1 -0
  246. package/lib/typechain/contracts/TransferHelper.d.ts +55 -0
  247. package/lib/typechain/contracts/TransferHelper.js +3 -0
  248. package/lib/typechain/contracts/TransferHelper.js.map +1 -0
  249. package/lib/typechain/contracts/common.d.ts +50 -0
  250. package/lib/typechain/contracts/common.js +3 -0
  251. package/lib/typechain/contracts/common.js.map +1 -0
  252. package/lib/typechain/contracts/factories/ERC1155__factory.d.ts +250 -0
  253. package/lib/typechain/contracts/factories/ERC1155__factory.js +332 -0
  254. package/lib/typechain/contracts/factories/ERC1155__factory.js.map +1 -0
  255. package/lib/typechain/contracts/factories/ERC20__factory.d.ts +174 -0
  256. package/lib/typechain/contracts/factories/ERC20__factory.js +240 -0
  257. package/lib/typechain/contracts/factories/ERC20__factory.js.map +1 -0
  258. package/lib/typechain/contracts/factories/ERC721__factory.d.ts +268 -0
  259. package/lib/typechain/contracts/factories/ERC721__factory.js +351 -0
  260. package/lib/typechain/contracts/factories/ERC721__factory.js.map +1 -0
  261. package/lib/typechain/contracts/factories/Multicall3__factory.d.ts +43 -0
  262. package/lib/typechain/contracts/factories/Multicall3__factory.js +68 -0
  263. package/lib/typechain/contracts/factories/Multicall3__factory.js.map +1 -0
  264. package/lib/typechain/contracts/factories/TransferHelper__factory.d.ts +46 -0
  265. package/lib/typechain/contracts/factories/TransferHelper__factory.js +71 -0
  266. package/lib/typechain/contracts/factories/TransferHelper__factory.js.map +1 -0
  267. package/lib/typechain/contracts/factories/index.d.ts +5 -0
  268. package/lib/typechain/contracts/factories/index.js +17 -0
  269. package/lib/typechain/contracts/factories/index.js.map +1 -0
  270. package/lib/typechain/contracts/index.d.ts +11 -0
  271. package/lib/typechain/contracts/index.js +48 -0
  272. package/lib/typechain/contracts/index.js.map +1 -0
  273. package/lib/types.d.ts +389 -0
  274. package/lib/types.js +129 -0
  275. package/lib/types.js.map +1 -0
  276. package/lib/utils/chain.d.ts +64 -0
  277. package/lib/utils/chain.js +211 -0
  278. package/lib/utils/chain.js.map +1 -0
  279. package/lib/utils/chainIds.generated.d.ts +7 -0
  280. package/lib/utils/chainIds.generated.js +37 -0
  281. package/lib/utils/chainIds.generated.js.map +1 -0
  282. package/lib/utils/converters.d.ts +37 -0
  283. package/lib/utils/converters.js +137 -0
  284. package/lib/utils/converters.js.map +1 -0
  285. package/lib/utils/dateHelper.d.ts +38 -0
  286. package/lib/utils/dateHelper.js +52 -0
  287. package/lib/utils/dateHelper.js.map +1 -0
  288. package/lib/utils/fees.d.ts +13 -0
  289. package/lib/utils/fees.js +29 -0
  290. package/lib/utils/fees.js.map +1 -0
  291. package/lib/utils/index.d.ts +2 -0
  292. package/lib/utils/index.js +19 -0
  293. package/lib/utils/index.js.map +1 -0
  294. package/lib/utils/protocol.d.ts +75 -0
  295. package/lib/utils/protocol.js +161 -0
  296. package/lib/utils/protocol.js.map +1 -0
  297. package/lib/utils/rateLimit.d.ts +34 -0
  298. package/lib/utils/rateLimit.js +97 -0
  299. package/lib/utils/rateLimit.js.map +1 -0
  300. package/lib/utils/stringHelper.d.ts +18 -0
  301. package/lib/utils/stringHelper.js +24 -0
  302. package/lib/utils/stringHelper.js.map +1 -0
  303. package/lib/utils/utils.d.ts +18 -0
  304. package/lib/utils/utils.js +45 -0
  305. package/lib/utils/utils.js.map +1 -0
  306. package/package.json +72 -0
  307. package/src/abi/ERC1155.json +314 -0
  308. package/src/abi/ERC20.json +222 -0
  309. package/src/abi/ERC721.json +333 -0
  310. package/src/abi/Multicall3.json +50 -0
  311. package/src/abi/TransferHelper.json +53 -0
  312. package/src/api/accounts.ts +69 -0
  313. package/src/api/api.ts +1152 -0
  314. package/src/api/apiPaths.ts +208 -0
  315. package/src/api/chains.ts +18 -0
  316. package/src/api/collections.ts +120 -0
  317. package/src/api/drops.ts +49 -0
  318. package/src/api/events.ts +71 -0
  319. package/src/api/fetcher.ts +31 -0
  320. package/src/api/index.ts +2 -0
  321. package/src/api/listings.ts +126 -0
  322. package/src/api/nfts.ts +144 -0
  323. package/src/api/offers.ts +242 -0
  324. package/src/api/orders.ts +283 -0
  325. package/src/api/search.ts +21 -0
  326. package/src/api/tokens.ts +67 -0
  327. package/src/api/types.ts +1210 -0
  328. package/src/constants.ts +90 -0
  329. package/src/index.ts +22 -0
  330. package/src/orders/privateListings.ts +173 -0
  331. package/src/orders/types.ts +191 -0
  332. package/src/orders/utils.ts +253 -0
  333. package/src/sdk/assets.ts +591 -0
  334. package/src/sdk/cancellation.ts +346 -0
  335. package/src/sdk/context.ts +33 -0
  336. package/src/sdk/fulfillment.ts +478 -0
  337. package/src/sdk/orders.ts +1149 -0
  338. package/src/sdk/tokens.ts +95 -0
  339. package/src/sdk.ts +1051 -0
  340. package/src/typechain/contracts/ERC1155.ts +440 -0
  341. package/src/typechain/contracts/ERC20.ts +286 -0
  342. package/src/typechain/contracts/ERC721.ts +412 -0
  343. package/src/typechain/contracts/Multicall3.ts +117 -0
  344. package/src/typechain/contracts/TransferHelper.ts +122 -0
  345. package/src/typechain/contracts/common.ts +131 -0
  346. package/src/typechain/contracts/factories/ERC1155__factory.ts +331 -0
  347. package/src/typechain/contracts/factories/ERC20__factory.ts +239 -0
  348. package/src/typechain/contracts/factories/ERC721__factory.ts +350 -0
  349. package/src/typechain/contracts/factories/Multicall3__factory.ts +67 -0
  350. package/src/typechain/contracts/factories/TransferHelper__factory.ts +76 -0
  351. package/src/typechain/contracts/factories/index.ts +8 -0
  352. package/src/typechain/contracts/index.ts +14 -0
  353. package/src/types.ts +413 -0
  354. package/src/utils/chain.ts +224 -0
  355. package/src/utils/chainIds.generated.ts +34 -0
  356. package/src/utils/converters.ts +145 -0
  357. package/src/utils/dateHelper.ts +48 -0
  358. package/src/utils/fees.ts +31 -0
  359. package/src/utils/index.ts +2 -0
  360. package/src/utils/protocol.ts +185 -0
  361. package/src/utils/rateLimit.ts +147 -0
  362. package/src/utils/stringHelper.ts +25 -0
  363. package/src/utils/utils.ts +36 -0
@@ -0,0 +1,397 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.AssetsManager = void 0;
4
+ const ethers_1 = require("ethers");
5
+ const constants_1 = require("../constants");
6
+ const contracts_1 = require("../typechain/contracts");
7
+ const types_1 = require("../types");
8
+ const utils_1 = require("../utils/utils");
9
+ /**
10
+ * Asset transfer and approval operations
11
+ */
12
+ class AssetsManager {
13
+ constructor(context) {
14
+ this.context = context;
15
+ }
16
+ /**
17
+ * Get an account's balance of any Asset. This asset can be an ERC20, ERC1155, or ERC721.
18
+ * @param options
19
+ * @param options.accountAddress Account address to check
20
+ * @param options.asset The Asset to check balance for. tokenStandard must be set.
21
+ * @returns The balance of the asset for the account.
22
+ *
23
+ * @throws Error if the token standard does not support balanceOf.
24
+ */
25
+ async getBalance({ accountAddress, asset, }) {
26
+ switch (asset.tokenStandard) {
27
+ case types_1.TokenStandard.ERC20: {
28
+ const contract = contracts_1.ERC20__factory.connect(asset.tokenAddress, this.context.provider);
29
+ return await contract.balanceOf.staticCall(accountAddress);
30
+ }
31
+ case types_1.TokenStandard.ERC1155: {
32
+ if (asset.tokenId === undefined || asset.tokenId === null) {
33
+ throw new Error("Missing ERC1155 tokenId for getBalance");
34
+ }
35
+ const contract = contracts_1.ERC1155__factory.connect(asset.tokenAddress, this.context.provider);
36
+ return await contract.balanceOf.staticCall(accountAddress, asset.tokenId);
37
+ }
38
+ case types_1.TokenStandard.ERC721: {
39
+ if (asset.tokenId === undefined || asset.tokenId === null) {
40
+ throw new Error("Missing ERC721 tokenId for getBalance");
41
+ }
42
+ const contract = contracts_1.ERC721__factory.connect(asset.tokenAddress, this.context.provider);
43
+ try {
44
+ const owner = await contract.ownerOf.staticCall(asset.tokenId);
45
+ return BigInt(owner.toLowerCase() === accountAddress.toLowerCase());
46
+ }
47
+ catch (error) {
48
+ this.context.logger(`Failed to get ownerOf ERC721: ${error.message ?? error}`);
49
+ return 0n;
50
+ }
51
+ }
52
+ default:
53
+ throw new Error("Unsupported token standard for getBalance");
54
+ }
55
+ }
56
+ /**
57
+ * Transfer an asset. This asset can be an ERC20, ERC1155, or ERC721.
58
+ * @param options
59
+ * @param options.asset The Asset to transfer. tokenStandard must be set.
60
+ * @param options.amount Amount of asset to transfer. Not used for ERC721.
61
+ * @param options.fromAddress The address to transfer from
62
+ * @param options.toAddress The address to transfer to
63
+ * @param options.overrides Transaction overrides, ignored if not set.
64
+ */
65
+ async transfer({ asset, amount, fromAddress, toAddress, overrides, }) {
66
+ overrides = { ...overrides, from: fromAddress };
67
+ let transaction;
68
+ switch (asset.tokenStandard) {
69
+ case types_1.TokenStandard.ERC20: {
70
+ if (!amount) {
71
+ throw new Error("Missing ERC20 amount for transfer");
72
+ }
73
+ const contract = contracts_1.ERC20__factory.connect(asset.tokenAddress, this.context.signerOrProvider);
74
+ transaction = contract.transfer(toAddress, amount, overrides);
75
+ break;
76
+ }
77
+ case types_1.TokenStandard.ERC1155: {
78
+ if (asset.tokenId === undefined || asset.tokenId === null) {
79
+ throw new Error("Missing ERC1155 tokenId for transfer");
80
+ }
81
+ if (!amount) {
82
+ throw new Error("Missing ERC1155 amount for transfer");
83
+ }
84
+ const contract = contracts_1.ERC1155__factory.connect(asset.tokenAddress, this.context.signerOrProvider);
85
+ transaction = contract.safeTransferFrom(fromAddress, toAddress, asset.tokenId, amount, "0x", overrides);
86
+ break;
87
+ }
88
+ case types_1.TokenStandard.ERC721: {
89
+ if (asset.tokenId === undefined || asset.tokenId === null) {
90
+ throw new Error("Missing ERC721 tokenId for transfer");
91
+ }
92
+ const contract = contracts_1.ERC721__factory.connect(asset.tokenAddress, this.context.signerOrProvider);
93
+ transaction = contract.transferFrom(fromAddress, toAddress, asset.tokenId, overrides);
94
+ break;
95
+ }
96
+ default:
97
+ throw new Error("Unsupported token standard for transfer");
98
+ }
99
+ try {
100
+ const transactionResponse = await transaction;
101
+ await this.context.confirmTransaction(transactionResponse.hash, types_1.EventType.Transfer, "Transferring asset");
102
+ }
103
+ catch (error) {
104
+ console.error(error);
105
+ this.context.dispatch(types_1.EventType.TransactionDenied, {
106
+ error,
107
+ accountAddress: fromAddress,
108
+ });
109
+ }
110
+ }
111
+ /**
112
+ * Bulk transfer multiple assets using OpenSea's TransferHelper contract.
113
+ * This method is more gas-efficient than calling transfer() multiple times.
114
+ * Note: All assets must be approved for transfer to the OpenSea conduit before calling this method.
115
+ * @param options
116
+ * @param options.assets Array of assets to transfer. Each asset must have tokenStandard set.
117
+ * @param options.fromAddress The address to transfer from
118
+ * @param options.overrides Transaction overrides, ignored if not set.
119
+ * @returns Transaction hash of the bulk transfer
120
+ *
121
+ * @throws Error if any asset is missing required fields (tokenId for NFTs, amount for ERC20/ERC1155).
122
+ * @throws Error if any asset is not approved for transfer to the OpenSea conduit.
123
+ * @throws Error if the fromAddress is not available through wallet or provider.
124
+ */
125
+ async bulkTransfer({ assets, fromAddress, overrides, }) {
126
+ // Validate basic parameters before making any blockchain calls
127
+ if (assets.length === 0) {
128
+ throw new Error("At least one asset must be provided");
129
+ }
130
+ // Validate asset data and build transfer items array for TransferHelper
131
+ // This validation happens before any blockchain calls to ensure proper error messages
132
+ const transferItems = [];
133
+ for (const { asset, toAddress, amount } of assets) {
134
+ let itemType;
135
+ let identifier;
136
+ let transferAmount;
137
+ switch (asset.tokenStandard) {
138
+ case types_1.TokenStandard.ERC20:
139
+ itemType = 1; // ERC20
140
+ identifier = "0";
141
+ if (!amount) {
142
+ throw new Error("Missing ERC20 amount for bulk transfer");
143
+ }
144
+ transferAmount = amount.toString();
145
+ break;
146
+ case types_1.TokenStandard.ERC721:
147
+ itemType = 2; // ERC721
148
+ if (asset.tokenId === undefined || asset.tokenId === null) {
149
+ throw new Error("Missing ERC721 tokenId for bulk transfer");
150
+ }
151
+ identifier = asset.tokenId.toString();
152
+ transferAmount = "1";
153
+ break;
154
+ case types_1.TokenStandard.ERC1155:
155
+ itemType = 3; // ERC1155
156
+ if (asset.tokenId === undefined || asset.tokenId === null) {
157
+ throw new Error("Missing ERC1155 tokenId for bulk transfer");
158
+ }
159
+ if (!amount) {
160
+ throw new Error("Missing ERC1155 amount for bulk transfer");
161
+ }
162
+ identifier = asset.tokenId.toString();
163
+ transferAmount = amount.toString();
164
+ break;
165
+ default:
166
+ throw new Error(`Unsupported token standard for bulk transfer: ${asset.tokenStandard}`);
167
+ }
168
+ transferItems.push({
169
+ itemType,
170
+ token: asset.tokenAddress,
171
+ identifier,
172
+ amount: transferAmount,
173
+ recipient: toAddress,
174
+ });
175
+ }
176
+ // Check account availability after parameter validation
177
+ await this.context.requireAccountIsAvailable(fromAddress);
178
+ // Get the chain-specific default conduit
179
+ const defaultConduit = (0, utils_1.getDefaultConduit)(this.context.chain);
180
+ // Check approvals for all assets before attempting transfer
181
+ const unapprovedAssets = [];
182
+ for (const { asset, amount } of assets) {
183
+ const isApproved = await this.checkAssetApproval(asset, fromAddress, defaultConduit.address, amount);
184
+ if (!isApproved) {
185
+ const assetIdentifier = asset.tokenId !== undefined
186
+ ? `${asset.tokenAddress}:${asset.tokenId}`
187
+ : asset.tokenAddress;
188
+ unapprovedAssets.push(assetIdentifier);
189
+ }
190
+ }
191
+ if (unapprovedAssets.length > 0) {
192
+ throw new Error(`The following asset(s) are not approved for transfer to the OpenSea conduit:\n${unapprovedAssets.join("\n")}\n\n` +
193
+ `Please approve these assets before transferring. You can use the batchApproveAssets() method to approve multiple assets efficiently in a single transaction.`);
194
+ }
195
+ // Create TransferHelper contract instance
196
+ const transferHelper = this.getTransferHelperContract();
197
+ this.context.dispatch(types_1.EventType.Transfer, {
198
+ accountAddress: fromAddress,
199
+ assets,
200
+ });
201
+ try {
202
+ // Use chain-specific conduit key for bulk transfers
203
+ const transaction = await transferHelper.bulkTransfer(transferItems, defaultConduit.key, { ...overrides, from: fromAddress });
204
+ await this.context.confirmTransaction(transaction.hash, types_1.EventType.Transfer, `Bulk transferring ${assets.length} asset(s)`);
205
+ return transaction.hash;
206
+ }
207
+ catch (error) {
208
+ console.error(error);
209
+ this.context.dispatch(types_1.EventType.TransactionDenied, {
210
+ error,
211
+ accountAddress: fromAddress,
212
+ });
213
+ throw error;
214
+ }
215
+ }
216
+ /**
217
+ * Batch approve multiple assets for transfer to the OpenSea conduit.
218
+ * This method checks which assets need approval and batches them efficiently:
219
+ * - 0 approvals needed: Returns early
220
+ * - 1 approval needed: Sends single transaction
221
+ * - 2+ approvals needed: Uses Multicall3 to batch all approvals in one transaction
222
+ *
223
+ * @param options
224
+ * @param options.assets Array of assets to approve for transfer
225
+ * @param options.fromAddress The address that owns the assets
226
+ * @param options.overrides Transaction overrides, ignored if not set.
227
+ * @returns Transaction hash of the approval transaction, or undefined if no approvals needed
228
+ *
229
+ * @throws Error if the fromAddress is not available through wallet or provider.
230
+ */
231
+ async batchApproveAssets({ assets, fromAddress, overrides, }) {
232
+ // Validate basic parameters before making any blockchain calls
233
+ if (assets.length === 0) {
234
+ return undefined;
235
+ }
236
+ // Validate ERC20 assets have amounts before making any blockchain calls
237
+ for (const { asset, amount } of assets) {
238
+ if (asset.tokenStandard === types_1.TokenStandard.ERC20 && !amount) {
239
+ throw new Error(`Amount required for ERC20 approval: ${asset.tokenAddress}`);
240
+ }
241
+ }
242
+ // Check account availability after parameter validation
243
+ await this.context.requireAccountIsAvailable(fromAddress);
244
+ // Get the chain-specific default conduit
245
+ const defaultConduit = (0, utils_1.getDefaultConduit)(this.context.chain);
246
+ // Check which assets need approval and build approval calldata
247
+ const approvalsNeeded = [];
248
+ const processedContracts = new Set();
249
+ for (const { asset, amount } of assets) {
250
+ const isApproved = await this.checkAssetApproval(asset, fromAddress, defaultConduit.address, amount);
251
+ if (!isApproved) {
252
+ // For ERC721/ERC1155, only approve once per contract
253
+ if (asset.tokenStandard === types_1.TokenStandard.ERC721 ||
254
+ asset.tokenStandard === types_1.TokenStandard.ERC1155) {
255
+ if (processedContracts.has(asset.tokenAddress.toLowerCase())) {
256
+ continue;
257
+ }
258
+ processedContracts.add(asset.tokenAddress.toLowerCase());
259
+ // setApprovalForAll(operator, true)
260
+ const iface = new ethers_1.ethers.Interface([
261
+ "function setApprovalForAll(address operator, bool approved)",
262
+ ]);
263
+ const callData = iface.encodeFunctionData("setApprovalForAll", [
264
+ defaultConduit.address,
265
+ true,
266
+ ]);
267
+ approvalsNeeded.push({
268
+ target: asset.tokenAddress,
269
+ callData,
270
+ });
271
+ }
272
+ else if (asset.tokenStandard === types_1.TokenStandard.ERC20) {
273
+ // approve(spender, amount) - use max uint256 for unlimited
274
+ const iface = new ethers_1.ethers.Interface([
275
+ "function approve(address spender, uint256 amount) returns (bool)",
276
+ ]);
277
+ const callData = iface.encodeFunctionData("approve", [
278
+ defaultConduit.address,
279
+ ethers_1.ethers.MaxUint256, // Approve max for convenience
280
+ ]);
281
+ approvalsNeeded.push({
282
+ target: asset.tokenAddress,
283
+ callData,
284
+ });
285
+ }
286
+ }
287
+ }
288
+ // No approvals needed
289
+ if (approvalsNeeded.length === 0) {
290
+ return undefined;
291
+ }
292
+ // Single approval: send directly
293
+ if (approvalsNeeded.length === 1) {
294
+ const { target, callData } = approvalsNeeded[0];
295
+ const signer = this.context.signerOrProvider;
296
+ const tx = await signer.sendTransaction({
297
+ to: target,
298
+ data: callData,
299
+ ...overrides,
300
+ from: fromAddress,
301
+ });
302
+ await this.context.confirmTransaction(tx.hash, types_1.EventType.ApproveAllAssets, "Approving asset for transfer");
303
+ return tx.hash;
304
+ }
305
+ // Multiple approvals: use Multicall3
306
+ const multicall3 = this.getMulticall3Contract();
307
+ const calls = approvalsNeeded.map(({ target, callData }) => ({
308
+ target,
309
+ allowFailure: false,
310
+ callData,
311
+ }));
312
+ try {
313
+ const transaction = await multicall3.aggregate3(calls, {
314
+ ...overrides,
315
+ from: fromAddress,
316
+ });
317
+ await this.context.confirmTransaction(transaction.hash, types_1.EventType.ApproveAllAssets, `Batch approving ${approvalsNeeded.length} asset(s) for transfer`);
318
+ return transaction.hash;
319
+ }
320
+ catch (error) {
321
+ console.error(error);
322
+ this.context.dispatch(types_1.EventType.TransactionDenied, {
323
+ error,
324
+ accountAddress: fromAddress,
325
+ });
326
+ throw error;
327
+ }
328
+ }
329
+ /**
330
+ * Check if an asset is approved for transfer to a specific operator (conduit).
331
+ * @param asset The asset to check approval for
332
+ * @param owner The owner address
333
+ * @param operator The operator address (conduit)
334
+ * @param amount Optional amount for ERC20 tokens
335
+ * @returns True if approved, false otherwise
336
+ */
337
+ async checkAssetApproval(asset, owner, operator, amount) {
338
+ try {
339
+ switch (asset.tokenStandard) {
340
+ case types_1.TokenStandard.ERC20: {
341
+ const contract = contracts_1.ERC20__factory.connect(asset.tokenAddress, this.context.provider);
342
+ const allowance = await contract.allowance.staticCall(owner, operator);
343
+ // Check if allowance is sufficient
344
+ if (!amount) {
345
+ return false;
346
+ }
347
+ return allowance >= BigInt(amount.toString());
348
+ }
349
+ case types_1.TokenStandard.ERC721: {
350
+ const contract = contracts_1.ERC721__factory.connect(asset.tokenAddress, this.context.provider);
351
+ // Check isApprovedForAll first
352
+ const isApprovedForAll = await contract.isApprovedForAll.staticCall(owner, operator);
353
+ if (isApprovedForAll) {
354
+ return true;
355
+ }
356
+ // Check individual token approval
357
+ if (asset.tokenId !== undefined && asset.tokenId !== null) {
358
+ const approved = await contract.getApproved.staticCall(asset.tokenId);
359
+ return approved.toLowerCase() === operator.toLowerCase();
360
+ }
361
+ return false;
362
+ }
363
+ case types_1.TokenStandard.ERC1155: {
364
+ const contract = contracts_1.ERC1155__factory.connect(asset.tokenAddress, this.context.provider);
365
+ return await contract.isApprovedForAll.staticCall(owner, operator);
366
+ }
367
+ default:
368
+ return false;
369
+ }
370
+ }
371
+ catch (error) {
372
+ // If there's an error checking approval (e.g., contract doesn't exist), return false
373
+ this.context.logger(`Error checking approval for ${asset.tokenAddress}: ${error}`);
374
+ return false;
375
+ }
376
+ }
377
+ /**
378
+ * Get a TransferHelper contract instance.
379
+ * @returns Contract instance for TransferHelper
380
+ */
381
+ getTransferHelperContract() {
382
+ return new ethers_1.Contract(constants_1.TRANSFER_HELPER_ADDRESS, [
383
+ "function bulkTransfer(tuple(uint8 itemType, address token, uint256 identifier, uint256 amount, address recipient)[] items, bytes32 conduitKey) external returns (bytes4)",
384
+ ], this.context.signerOrProvider);
385
+ }
386
+ /**
387
+ * Get a Multicall3 contract instance.
388
+ * @returns Contract instance for Multicall3
389
+ */
390
+ getMulticall3Contract() {
391
+ return new ethers_1.Contract(constants_1.MULTICALL3_ADDRESS, [
392
+ "function aggregate3(tuple(address target, bool allowFailure, bytes callData)[] calls) payable returns (tuple(bool success, bytes returnData)[] returnData)",
393
+ ], this.context.signerOrProvider);
394
+ }
395
+ }
396
+ exports.AssetsManager = AssetsManager;
397
+ //# sourceMappingURL=assets.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"assets.js","sourceRoot":"","sources":["../../../src/sdk/assets.ts"],"names":[],"mappings":";;;AAAA,mCAOe;AACf,4CAA0E;AAC1E,sDAI+B;AAC/B,oCAAgF;AAChF,0CAAkD;AAGlD;;GAEG;AACH,MAAa,aAAa;IACxB,YAAoB,OAAmB;QAAnB,YAAO,GAAP,OAAO,CAAY;IAAG,CAAC;IAE3C;;;;;;;;OAQG;IACH,KAAK,CAAC,UAAU,CAAC,EACf,cAAc,EACd,KAAK,GAIN;QACC,QAAQ,KAAK,CAAC,aAAa,EAAE,CAAC;YAC5B,KAAK,qBAAa,CAAC,KAAK,CAAC,CAAC,CAAC;gBACzB,MAAM,QAAQ,GAAG,0BAAc,CAAC,OAAO,CACrC,KAAK,CAAC,YAAY,EAClB,IAAI,CAAC,OAAO,CAAC,QAAQ,CACtB,CAAA;gBACD,OAAO,MAAM,QAAQ,CAAC,SAAS,CAAC,UAAU,CAAC,cAAc,CAAC,CAAA;YAC5D,CAAC;YACD,KAAK,qBAAa,CAAC,OAAO,CAAC,CAAC,CAAC;gBAC3B,IAAI,KAAK,CAAC,OAAO,KAAK,SAAS,IAAI,KAAK,CAAC,OAAO,KAAK,IAAI,EAAE,CAAC;oBAC1D,MAAM,IAAI,KAAK,CAAC,wCAAwC,CAAC,CAAA;gBAC3D,CAAC;gBACD,MAAM,QAAQ,GAAG,4BAAgB,CAAC,OAAO,CACvC,KAAK,CAAC,YAAY,EAClB,IAAI,CAAC,OAAO,CAAC,QAAQ,CACtB,CAAA;gBACD,OAAO,MAAM,QAAQ,CAAC,SAAS,CAAC,UAAU,CACxC,cAAc,EACd,KAAK,CAAC,OAAO,CACd,CAAA;YACH,CAAC;YACD,KAAK,qBAAa,CAAC,MAAM,CAAC,CAAC,CAAC;gBAC1B,IAAI,KAAK,CAAC,OAAO,KAAK,SAAS,IAAI,KAAK,CAAC,OAAO,KAAK,IAAI,EAAE,CAAC;oBAC1D,MAAM,IAAI,KAAK,CAAC,uCAAuC,CAAC,CAAA;gBAC1D,CAAC;gBACD,MAAM,QAAQ,GAAG,2BAAe,CAAC,OAAO,CACtC,KAAK,CAAC,YAAY,EAClB,IAAI,CAAC,OAAO,CAAC,QAAQ,CACtB,CAAA;gBACD,IAAI,CAAC;oBACH,MAAM,KAAK,GAAG,MAAM,QAAQ,CAAC,OAAO,CAAC,UAAU,CAAC,KAAK,CAAC,OAAO,CAAC,CAAA;oBAC9D,OAAO,MAAM,CAAC,KAAK,CAAC,WAAW,EAAE,KAAK,cAAc,CAAC,WAAW,EAAE,CAAC,CAAA;gBACrE,CAAC;gBAAC,OAAO,KAAU,EAAE,CAAC;oBACpB,IAAI,CAAC,OAAO,CAAC,MAAM,CACjB,iCAAiC,KAAK,CAAC,OAAO,IAAI,KAAK,EAAE,CAC1D,CAAA;oBACD,OAAO,EAAE,CAAA;gBACX,CAAC;YACH,CAAC;YACD;gBACE,MAAM,IAAI,KAAK,CAAC,2CAA2C,CAAC,CAAA;QAChE,CAAC;IACH,CAAC;IAED;;;;;;;;OAQG;IACH,KAAK,CAAC,QAAQ,CAAC,EACb,KAAK,EACL,MAAM,EACN,WAAW,EACX,SAAS,EACT,SAAS,GAOV;QACC,SAAS,GAAG,EAAE,GAAG,SAAS,EAAE,IAAI,EAAE,WAAW,EAAE,CAAA;QAC/C,IAAI,WAAiD,CAAA;QAErD,QAAQ,KAAK,CAAC,aAAa,EAAE,CAAC;YAC5B,KAAK,qBAAa,CAAC,KAAK,CAAC,CAAC,CAAC;gBACzB,IAAI,CAAC,MAAM,EAAE,CAAC;oBACZ,MAAM,IAAI,KAAK,CAAC,mCAAmC,CAAC,CAAA;gBACtD,CAAC;gBACD,MAAM,QAAQ,GAAG,0BAAc,CAAC,OAAO,CACrC,KAAK,CAAC,YAAY,EAClB,IAAI,CAAC,OAAO,CAAC,gBAAgB,CAC9B,CAAA;gBACD,WAAW,GAAG,QAAQ,CAAC,QAAQ,CAAC,SAAS,EAAE,MAAM,EAAE,SAAS,CAAC,CAAA;gBAC7D,MAAK;YACP,CAAC;YACD,KAAK,qBAAa,CAAC,OAAO,CAAC,CAAC,CAAC;gBAC3B,IAAI,KAAK,CAAC,OAAO,KAAK,SAAS,IAAI,KAAK,CAAC,OAAO,KAAK,IAAI,EAAE,CAAC;oBAC1D,MAAM,IAAI,KAAK,CAAC,sCAAsC,CAAC,CAAA;gBACzD,CAAC;gBACD,IAAI,CAAC,MAAM,EAAE,CAAC;oBACZ,MAAM,IAAI,KAAK,CAAC,qCAAqC,CAAC,CAAA;gBACxD,CAAC;gBACD,MAAM,QAAQ,GAAG,4BAAgB,CAAC,OAAO,CACvC,KAAK,CAAC,YAAY,EAClB,IAAI,CAAC,OAAO,CAAC,gBAAgB,CAC9B,CAAA;gBACD,WAAW,GAAG,QAAQ,CAAC,gBAAgB,CACrC,WAAW,EACX,SAAS,EACT,KAAK,CAAC,OAAO,EACb,MAAM,EACN,IAAI,EACJ,SAAS,CACV,CAAA;gBACD,MAAK;YACP,CAAC;YACD,KAAK,qBAAa,CAAC,MAAM,CAAC,CAAC,CAAC;gBAC1B,IAAI,KAAK,CAAC,OAAO,KAAK,SAAS,IAAI,KAAK,CAAC,OAAO,KAAK,IAAI,EAAE,CAAC;oBAC1D,MAAM,IAAI,KAAK,CAAC,qCAAqC,CAAC,CAAA;gBACxD,CAAC;gBACD,MAAM,QAAQ,GAAG,2BAAe,CAAC,OAAO,CACtC,KAAK,CAAC,YAAY,EAClB,IAAI,CAAC,OAAO,CAAC,gBAAgB,CAC9B,CAAA;gBACD,WAAW,GAAG,QAAQ,CAAC,YAAY,CACjC,WAAW,EACX,SAAS,EACT,KAAK,CAAC,OAAO,EACb,SAAS,CACV,CAAA;gBACD,MAAK;YACP,CAAC;YACD;gBACE,MAAM,IAAI,KAAK,CAAC,yCAAyC,CAAC,CAAA;QAC9D,CAAC;QAED,IAAI,CAAC;YACH,MAAM,mBAAmB,GAAG,MAAM,WAAW,CAAA;YAC7C,MAAM,IAAI,CAAC,OAAO,CAAC,kBAAkB,CACnC,mBAAmB,CAAC,IAAI,EACxB,iBAAS,CAAC,QAAQ,EAClB,oBAAoB,CACrB,CAAA;QACH,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,CAAA;YACpB,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,iBAAS,CAAC,iBAAiB,EAAE;gBACjD,KAAK;gBACL,cAAc,EAAE,WAAW;aAC5B,CAAC,CAAA;QACJ,CAAC;IACH,CAAC;IAED;;;;;;;;;;;;;OAaG;IACH,KAAK,CAAC,YAAY,CAAC,EACjB,MAAM,EACN,WAAW,EACX,SAAS,GASV;QACC,+DAA+D;QAC/D,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACxB,MAAM,IAAI,KAAK,CAAC,qCAAqC,CAAC,CAAA;QACxD,CAAC;QAED,wEAAwE;QACxE,sFAAsF;QACtF,MAAM,aAAa,GAMd,EAAE,CAAA;QAEP,KAAK,MAAM,EAAE,KAAK,EAAE,SAAS,EAAE,MAAM,EAAE,IAAI,MAAM,EAAE,CAAC;YAClD,IAAI,QAAgB,CAAA;YACpB,IAAI,UAAkB,CAAA;YACtB,IAAI,cAAsB,CAAA;YAE1B,QAAQ,KAAK,CAAC,aAAa,EAAE,CAAC;gBAC5B,KAAK,qBAAa,CAAC,KAAK;oBACtB,QAAQ,GAAG,CAAC,CAAA,CAAC,QAAQ;oBACrB,UAAU,GAAG,GAAG,CAAA;oBAChB,IAAI,CAAC,MAAM,EAAE,CAAC;wBACZ,MAAM,IAAI,KAAK,CAAC,wCAAwC,CAAC,CAAA;oBAC3D,CAAC;oBACD,cAAc,GAAG,MAAM,CAAC,QAAQ,EAAE,CAAA;oBAClC,MAAK;gBAEP,KAAK,qBAAa,CAAC,MAAM;oBACvB,QAAQ,GAAG,CAAC,CAAA,CAAC,SAAS;oBACtB,IAAI,KAAK,CAAC,OAAO,KAAK,SAAS,IAAI,KAAK,CAAC,OAAO,KAAK,IAAI,EAAE,CAAC;wBAC1D,MAAM,IAAI,KAAK,CAAC,0CAA0C,CAAC,CAAA;oBAC7D,CAAC;oBACD,UAAU,GAAG,KAAK,CAAC,OAAO,CAAC,QAAQ,EAAE,CAAA;oBACrC,cAAc,GAAG,GAAG,CAAA;oBACpB,MAAK;gBAEP,KAAK,qBAAa,CAAC,OAAO;oBACxB,QAAQ,GAAG,CAAC,CAAA,CAAC,UAAU;oBACvB,IAAI,KAAK,CAAC,OAAO,KAAK,SAAS,IAAI,KAAK,CAAC,OAAO,KAAK,IAAI,EAAE,CAAC;wBAC1D,MAAM,IAAI,KAAK,CAAC,2CAA2C,CAAC,CAAA;oBAC9D,CAAC;oBACD,IAAI,CAAC,MAAM,EAAE,CAAC;wBACZ,MAAM,IAAI,KAAK,CAAC,0CAA0C,CAAC,CAAA;oBAC7D,CAAC;oBACD,UAAU,GAAG,KAAK,CAAC,OAAO,CAAC,QAAQ,EAAE,CAAA;oBACrC,cAAc,GAAG,MAAM,CAAC,QAAQ,EAAE,CAAA;oBAClC,MAAK;gBAEP;oBACE,MAAM,IAAI,KAAK,CACb,iDAAiD,KAAK,CAAC,aAAa,EAAE,CACvE,CAAA;YACL,CAAC;YAED,aAAa,CAAC,IAAI,CAAC;gBACjB,QAAQ;gBACR,KAAK,EAAE,KAAK,CAAC,YAAY;gBACzB,UAAU;gBACV,MAAM,EAAE,cAAc;gBACtB,SAAS,EAAE,SAAS;aACrB,CAAC,CAAA;QACJ,CAAC;QAED,wDAAwD;QACxD,MAAM,IAAI,CAAC,OAAO,CAAC,yBAAyB,CAAC,WAAW,CAAC,CAAA;QAEzD,yCAAyC;QACzC,MAAM,cAAc,GAAG,IAAA,yBAAiB,EAAC,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAA;QAE5D,4DAA4D;QAC5D,MAAM,gBAAgB,GAAa,EAAE,CAAA;QACrC,KAAK,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,MAAM,EAAE,CAAC;YACvC,MAAM,UAAU,GAAG,MAAM,IAAI,CAAC,kBAAkB,CAC9C,KAAK,EACL,WAAW,EACX,cAAc,CAAC,OAAO,EACtB,MAAM,CACP,CAAA;YACD,IAAI,CAAC,UAAU,EAAE,CAAC;gBAChB,MAAM,eAAe,GACnB,KAAK,CAAC,OAAO,KAAK,SAAS;oBACzB,CAAC,CAAC,GAAG,KAAK,CAAC,YAAY,IAAI,KAAK,CAAC,OAAO,EAAE;oBAC1C,CAAC,CAAC,KAAK,CAAC,YAAY,CAAA;gBACxB,gBAAgB,CAAC,IAAI,CAAC,eAAe,CAAC,CAAA;YACxC,CAAC;QACH,CAAC;QAED,IAAI,gBAAgB,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAChC,MAAM,IAAI,KAAK,CACb,iFAAiF,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM;gBAChH,8JAA8J,CACjK,CAAA;QACH,CAAC;QAED,0CAA0C;QAC1C,MAAM,cAAc,GAAG,IAAI,CAAC,yBAAyB,EAAE,CAAA;QAEvD,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,iBAAS,CAAC,QAAQ,EAAE;YACxC,cAAc,EAAE,WAAW;YAC3B,MAAM;SACP,CAAC,CAAA;QAEF,IAAI,CAAC;YACH,oDAAoD;YACpD,MAAM,WAAW,GAAG,MAAM,cAAc,CAAC,YAAY,CACnD,aAAa,EACb,cAAc,CAAC,GAAG,EAClB,EAAE,GAAG,SAAS,EAAE,IAAI,EAAE,WAAW,EAAE,CACpC,CAAA;YAED,MAAM,IAAI,CAAC,OAAO,CAAC,kBAAkB,CACnC,WAAW,CAAC,IAAI,EAChB,iBAAS,CAAC,QAAQ,EAClB,qBAAqB,MAAM,CAAC,MAAM,WAAW,CAC9C,CAAA;YAED,OAAO,WAAW,CAAC,IAAI,CAAA;QACzB,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,CAAA;YACpB,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,iBAAS,CAAC,iBAAiB,EAAE;gBACjD,KAAK;gBACL,cAAc,EAAE,WAAW;aAC5B,CAAC,CAAA;YACF,MAAM,KAAK,CAAA;QACb,CAAC;IACH,CAAC;IAED;;;;;;;;;;;;;;OAcG;IACH,KAAK,CAAC,kBAAkB,CAAC,EACvB,MAAM,EACN,WAAW,EACX,SAAS,GAQV;QACC,+DAA+D;QAC/D,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACxB,OAAO,SAAS,CAAA;QAClB,CAAC;QAED,wEAAwE;QACxE,KAAK,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,MAAM,EAAE,CAAC;YACvC,IAAI,KAAK,CAAC,aAAa,KAAK,qBAAa,CAAC,KAAK,IAAI,CAAC,MAAM,EAAE,CAAC;gBAC3D,MAAM,IAAI,KAAK,CACb,uCAAuC,KAAK,CAAC,YAAY,EAAE,CAC5D,CAAA;YACH,CAAC;QACH,CAAC;QAED,wDAAwD;QACxD,MAAM,IAAI,CAAC,OAAO,CAAC,yBAAyB,CAAC,WAAW,CAAC,CAAA;QAEzD,yCAAyC;QACzC,MAAM,cAAc,GAAG,IAAA,yBAAiB,EAAC,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAA;QAE5D,+DAA+D;QAC/D,MAAM,eAAe,GAAgD,EAAE,CAAA;QACvE,MAAM,kBAAkB,GAAG,IAAI,GAAG,EAAU,CAAA;QAE5C,KAAK,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,MAAM,EAAE,CAAC;YACvC,MAAM,UAAU,GAAG,MAAM,IAAI,CAAC,kBAAkB,CAC9C,KAAK,EACL,WAAW,EACX,cAAc,CAAC,OAAO,EACtB,MAAM,CACP,CAAA;YAED,IAAI,CAAC,UAAU,EAAE,CAAC;gBAChB,qDAAqD;gBACrD,IACE,KAAK,CAAC,aAAa,KAAK,qBAAa,CAAC,MAAM;oBAC5C,KAAK,CAAC,aAAa,KAAK,qBAAa,CAAC,OAAO,EAC7C,CAAC;oBACD,IAAI,kBAAkB,CAAC,GAAG,CAAC,KAAK,CAAC,YAAY,CAAC,WAAW,EAAE,CAAC,EAAE,CAAC;wBAC7D,SAAQ;oBACV,CAAC;oBACD,kBAAkB,CAAC,GAAG,CAAC,KAAK,CAAC,YAAY,CAAC,WAAW,EAAE,CAAC,CAAA;oBAExD,oCAAoC;oBACpC,MAAM,KAAK,GAAG,IAAI,eAAM,CAAC,SAAS,CAAC;wBACjC,6DAA6D;qBAC9D,CAAC,CAAA;oBACF,MAAM,QAAQ,GAAG,KAAK,CAAC,kBAAkB,CAAC,mBAAmB,EAAE;wBAC7D,cAAc,CAAC,OAAO;wBACtB,IAAI;qBACL,CAAC,CAAA;oBACF,eAAe,CAAC,IAAI,CAAC;wBACnB,MAAM,EAAE,KAAK,CAAC,YAAY;wBAC1B,QAAQ;qBACT,CAAC,CAAA;gBACJ,CAAC;qBAAM,IAAI,KAAK,CAAC,aAAa,KAAK,qBAAa,CAAC,KAAK,EAAE,CAAC;oBACvD,2DAA2D;oBAC3D,MAAM,KAAK,GAAG,IAAI,eAAM,CAAC,SAAS,CAAC;wBACjC,kEAAkE;qBACnE,CAAC,CAAA;oBACF,MAAM,QAAQ,GAAG,KAAK,CAAC,kBAAkB,CAAC,SAAS,EAAE;wBACnD,cAAc,CAAC,OAAO;wBACtB,eAAM,CAAC,UAAU,EAAE,8BAA8B;qBAClD,CAAC,CAAA;oBACF,eAAe,CAAC,IAAI,CAAC;wBACnB,MAAM,EAAE,KAAK,CAAC,YAAY;wBAC1B,QAAQ;qBACT,CAAC,CAAA;gBACJ,CAAC;YACH,CAAC;QACH,CAAC;QAED,sBAAsB;QACtB,IAAI,eAAe,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACjC,OAAO,SAAS,CAAA;QAClB,CAAC;QAED,iCAAiC;QACjC,IAAI,eAAe,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACjC,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,GAAG,eAAe,CAAC,CAAC,CAAC,CAAA;YAC/C,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,gBAA0B,CAAA;YACtD,MAAM,EAAE,GAAG,MAAM,MAAM,CAAC,eAAe,CAAC;gBACtC,EAAE,EAAE,MAAM;gBACV,IAAI,EAAE,QAAQ;gBACd,GAAG,SAAS;gBACZ,IAAI,EAAE,WAAW;aAClB,CAAC,CAAA;YAEF,MAAM,IAAI,CAAC,OAAO,CAAC,kBAAkB,CACnC,EAAE,CAAC,IAAI,EACP,iBAAS,CAAC,gBAAgB,EAC1B,8BAA8B,CAC/B,CAAA;YAED,OAAO,EAAE,CAAC,IAAI,CAAA;QAChB,CAAC;QAED,qCAAqC;QACrC,MAAM,UAAU,GAAG,IAAI,CAAC,qBAAqB,EAAE,CAAA;QAE/C,MAAM,KAAK,GAAG,eAAe,CAAC,GAAG,CAAC,CAAC,EAAE,MAAM,EAAE,QAAQ,EAAE,EAAE,EAAE,CAAC,CAAC;YAC3D,MAAM;YACN,YAAY,EAAE,KAAK;YACnB,QAAQ;SACT,CAAC,CAAC,CAAA;QAEH,IAAI,CAAC;YACH,MAAM,WAAW,GAAG,MAAM,UAAU,CAAC,UAAU,CAAC,KAAK,EAAE;gBACrD,GAAG,SAAS;gBACZ,IAAI,EAAE,WAAW;aAClB,CAAC,CAAA;YAEF,MAAM,IAAI,CAAC,OAAO,CAAC,kBAAkB,CACnC,WAAW,CAAC,IAAI,EAChB,iBAAS,CAAC,gBAAgB,EAC1B,mBAAmB,eAAe,CAAC,MAAM,wBAAwB,CAClE,CAAA;YAED,OAAO,WAAW,CAAC,IAAI,CAAA;QACzB,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,CAAA;YACpB,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,iBAAS,CAAC,iBAAiB,EAAE;gBACjD,KAAK;gBACL,cAAc,EAAE,WAAW;aAC5B,CAAC,CAAA;YACF,MAAM,KAAK,CAAA;QACb,CAAC;IACH,CAAC;IAED;;;;;;;OAOG;IACK,KAAK,CAAC,kBAAkB,CAC9B,KAA6B,EAC7B,KAAa,EACb,QAAgB,EAChB,MAAqB;QAErB,IAAI,CAAC;YACH,QAAQ,KAAK,CAAC,aAAa,EAAE,CAAC;gBAC5B,KAAK,qBAAa,CAAC,KAAK,CAAC,CAAC,CAAC;oBACzB,MAAM,QAAQ,GAAG,0BAAc,CAAC,OAAO,CACrC,KAAK,CAAC,YAAY,EAClB,IAAI,CAAC,OAAO,CAAC,QAAQ,CACtB,CAAA;oBACD,MAAM,SAAS,GAAG,MAAM,QAAQ,CAAC,SAAS,CAAC,UAAU,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAA;oBACtE,mCAAmC;oBACnC,IAAI,CAAC,MAAM,EAAE,CAAC;wBACZ,OAAO,KAAK,CAAA;oBACd,CAAC;oBACD,OAAO,SAAS,IAAI,MAAM,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC,CAAA;gBAC/C,CAAC;gBAED,KAAK,qBAAa,CAAC,MAAM,CAAC,CAAC,CAAC;oBAC1B,MAAM,QAAQ,GAAG,2BAAe,CAAC,OAAO,CACtC,KAAK,CAAC,YAAY,EAClB,IAAI,CAAC,OAAO,CAAC,QAAQ,CACtB,CAAA;oBACD,+BAA+B;oBAC/B,MAAM,gBAAgB,GAAG,MAAM,QAAQ,CAAC,gBAAgB,CAAC,UAAU,CACjE,KAAK,EACL,QAAQ,CACT,CAAA;oBACD,IAAI,gBAAgB,EAAE,CAAC;wBACrB,OAAO,IAAI,CAAA;oBACb,CAAC;oBACD,kCAAkC;oBAClC,IAAI,KAAK,CAAC,OAAO,KAAK,SAAS,IAAI,KAAK,CAAC,OAAO,KAAK,IAAI,EAAE,CAAC;wBAC1D,MAAM,QAAQ,GAAG,MAAM,QAAQ,CAAC,WAAW,CAAC,UAAU,CACpD,KAAK,CAAC,OAAO,CACd,CAAA;wBACD,OAAO,QAAQ,CAAC,WAAW,EAAE,KAAK,QAAQ,CAAC,WAAW,EAAE,CAAA;oBAC1D,CAAC;oBACD,OAAO,KAAK,CAAA;gBACd,CAAC;gBAED,KAAK,qBAAa,CAAC,OAAO,CAAC,CAAC,CAAC;oBAC3B,MAAM,QAAQ,GAAG,4BAAgB,CAAC,OAAO,CACvC,KAAK,CAAC,YAAY,EAClB,IAAI,CAAC,OAAO,CAAC,QAAQ,CACtB,CAAA;oBACD,OAAO,MAAM,QAAQ,CAAC,gBAAgB,CAAC,UAAU,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAA;gBACpE,CAAC;gBAED;oBACE,OAAO,KAAK,CAAA;YAChB,CAAC;QACH,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,qFAAqF;YACrF,IAAI,CAAC,OAAO,CAAC,MAAM,CACjB,+BAA+B,KAAK,CAAC,YAAY,KAAK,KAAK,EAAE,CAC9D,CAAA;YACD,OAAO,KAAK,CAAA;QACd,CAAC;IACH,CAAC;IAED;;;OAGG;IACK,yBAAyB;QAC/B,OAAO,IAAI,iBAAQ,CACjB,mCAAuB,EACvB;YACE,0KAA0K;SAC3K,EACD,IAAI,CAAC,OAAO,CAAC,gBAAgB,CAC9B,CAAA;IACH,CAAC;IAED;;;OAGG;IACK,qBAAqB;QAC3B,OAAO,IAAI,iBAAQ,CACjB,8BAAkB,EAClB;YACE,4JAA4J;SAC7J,EACD,IAAI,CAAC,OAAO,CAAC,gBAAgB,CAC9B,CAAA;IACH,CAAC;CACF;AAzjBD,sCAyjBC"}
@@ -0,0 +1,97 @@
1
+ import type { OrderComponents } from "@opensea/seaport-js/lib/types";
2
+ import type { Overrides } from "ethers";
3
+ import type { OrderV2 } from "../orders/types";
4
+ import { type Chain } from "../types";
5
+ import type { SDKContext } from "./context";
6
+ /**
7
+ * Order cancellation operations
8
+ */
9
+ export declare class CancellationManager {
10
+ private context;
11
+ constructor(context: SDKContext);
12
+ /**
13
+ * Cancel an order onchain, preventing it from ever being fulfilled.
14
+ * This method accepts either a full OrderV2 object or an order hash with protocol address.
15
+ *
16
+ * @param options
17
+ * @param options.order The order to cancel (OrderV2 object)
18
+ * @param options.orderHash Optional order hash to cancel. Must provide protocolAddress if using this.
19
+ * @param options.accountAddress The account address that will be cancelling the order.
20
+ * @param options.protocolAddress Required when using orderHash. The Seaport protocol address for the order.
21
+ * @param options.domain An optional domain to be hashed and included at the end of fulfillment calldata. This can be used for on-chain order attribution to assist with analytics.
22
+ *
23
+ * @throws Error if neither order nor orderHash is provided.
24
+ * @throws Error if the accountAddress is not available through wallet or provider.
25
+ * @throws Error if the order's protocol address is not supported by OpenSea. See {@link isValidProtocol}.
26
+ */
27
+ cancelOrder({ order, orderHash, accountAddress, protocolAddress, domain, }: {
28
+ order?: OrderV2;
29
+ orderHash?: string;
30
+ accountAddress: string;
31
+ protocolAddress?: string;
32
+ domain?: string;
33
+ }): Promise<void>;
34
+ /**
35
+ * Cancel multiple orders onchain, preventing them from being fulfilled.
36
+ * This method accepts either full OrderV2 objects, OrderComponents, or order hashes with protocol address.
37
+ *
38
+ * **Event Behavior**: For backwards compatibility with the singular `cancelOrder` method,
39
+ * this method dispatches a `CancelOrder` event for the first order only, and only when
40
+ * an OrderV2 object is available (either provided directly or fetched via orderHashes).
41
+ * No event is dispatched when using OrderComponents directly, as they lack the full order data.
42
+ *
43
+ * @param options
44
+ * @param options.orders Array of orders to cancel. Can be OrderV2 objects or OrderComponents.
45
+ * @param options.orderHashes Optional array of order hashes to cancel. Must provide protocolAddress if using this.
46
+ * @param options.accountAddress The account address cancelling the orders.
47
+ * @param options.protocolAddress Required when using orderHashes. The Seaport protocol address for the orders.
48
+ * @param options.domain An optional domain to be hashed and included at the end of fulfillment calldata.
49
+ * @param options.overrides Transaction overrides, ignored if not set.
50
+ * @returns Transaction hash of the cancellation.
51
+ *
52
+ * @throws Error if orderHashes is provided without protocolAddress.
53
+ * @throws Error if neither orders nor orderHashes is provided.
54
+ * @throws Error if the accountAddress is not available through wallet or provider.
55
+ * @throws Error if the order's protocol address is not supported by OpenSea. See {@link isValidProtocol}.
56
+ */
57
+ cancelOrders({ orders, orderHashes, accountAddress, protocolAddress, domain, overrides, }: {
58
+ orders?: Array<OrderV2 | OrderComponents>;
59
+ orderHashes?: string[];
60
+ accountAddress: string;
61
+ protocolAddress?: string;
62
+ domain?: string;
63
+ overrides?: Overrides;
64
+ }): Promise<string>;
65
+ /**
66
+ * Cancel orders onchain, preventing them from being fulfilled.
67
+ * @param options
68
+ * @param options.orders The orders to cancel
69
+ * @param options.accountAddress The account address cancelling the orders.
70
+ * @param options.domain An optional domain to be hashed and included at the end of fulfillment calldata.
71
+ * This can be used for on-chain order attribution to assist with analytics.
72
+ * @param options.overrides Transaction overrides, ignored if not set.
73
+ * @returns Transaction hash of the order.
74
+ */
75
+ private cancelSeaportOrders;
76
+ /**
77
+ * Get the offerer signature for canceling an order offchain.
78
+ * The signature will only be valid if the signer address is the address of the order's offerer.
79
+ */
80
+ getOffererSignature(protocolAddress: string, orderHash: string, chain: Chain): Promise<string>;
81
+ /**
82
+ * Offchain cancel an order, offer or listing, by its order hash when protected by the SignedZone.
83
+ * Protocol and Chain are required to prevent hash collisions.
84
+ * Please note cancellation is only assured if a fulfillment signature was not vended prior to cancellation.
85
+ * @param protocolAddress The Seaport address for the order.
86
+ * @param orderHash The order hash, or external identifier, of the order.
87
+ * @param chain The chain where the order is located.
88
+ * @param offererSignature An EIP-712 signature from the offerer of the order.
89
+ * If this is not provided, the API key used to initialize the SDK must belong to the order's offerer.
90
+ * The signature must be a EIP-712 signature consisting of the order's Seaport contract's
91
+ * name, version, address, and chain. The struct to sign is `OrderHash` containing a
92
+ * single bytes32 field.
93
+ * @param useSignerToDeriveOffererSignature Derive the offererSignature from the Ethers signer passed into this sdk.
94
+ * @returns The response from the API.
95
+ */
96
+ offchainCancelOrder(protocolAddress: string, orderHash: string, chain?: Chain, offererSignature?: string, useSignerToDeriveOffererSignature?: boolean): Promise<import("../api/types").CancelOrderResponse>;
97
+ }