@1inch/fusion-sdk 2.3.5 → 2.3.6-rc.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 (419) hide show
  1. package/dist/cjs/amount-calculator/amount-calculator.js +274 -79
  2. package/dist/cjs/amount-calculator/amount-calculator.spec.js +66 -0
  3. package/dist/cjs/amount-calculator/auction-calculator/README.md +59 -0
  4. package/dist/cjs/amount-calculator/auction-calculator/auction-calculator.js +183 -77
  5. package/dist/cjs/amount-calculator/auction-calculator/auction-calculator.spec.js +57 -0
  6. package/dist/cjs/amount-calculator/auction-calculator/index.js +17 -4
  7. package/dist/cjs/amount-calculator/index.js +34 -9
  8. package/dist/cjs/api/fusion-api.js +119 -48
  9. package/dist/cjs/api/index.js +24 -11
  10. package/dist/cjs/api/orders/index.js +19 -6
  11. package/dist/cjs/api/orders/order-api.spec.js +746 -0
  12. package/dist/cjs/api/orders/orders.api.js +245 -36
  13. package/dist/cjs/api/orders/orders.request.js +159 -63
  14. package/dist/cjs/api/orders/types.js +14 -6
  15. package/dist/cjs/api/ordersVersion.js +12 -6
  16. package/dist/cjs/api/pagination.js +62 -15
  17. package/dist/cjs/api/pagination.spec.js +29 -0
  18. package/dist/cjs/api/params.js +27 -21
  19. package/dist/cjs/api/quoter/index.js +22 -9
  20. package/dist/cjs/api/quoter/preset.js +87 -28
  21. package/dist/cjs/api/quoter/quote/index.js +19 -6
  22. package/dist/cjs/api/quoter/quote/order-params.js +63 -14
  23. package/dist/cjs/api/quoter/quote/quote.js +158 -94
  24. package/dist/cjs/api/quoter/quote/types.js +3 -2
  25. package/dist/cjs/api/quoter/quoter-custom-preset.request.js +118 -56
  26. package/dist/cjs/api/quoter/quoter-custom-preset.request.spec.js +131 -0
  27. package/dist/cjs/api/quoter/quoter.api.js +241 -28
  28. package/dist/cjs/api/quoter/quoter.api.spec.js +365 -0
  29. package/dist/cjs/api/quoter/quoter.request.js +94 -34
  30. package/dist/cjs/api/quoter/quoter.request.spec.js +111 -0
  31. package/dist/cjs/api/quoter/types.js +16 -6
  32. package/dist/cjs/api/relayer/index.js +19 -6
  33. package/dist/cjs/api/relayer/relayer.api.js +73 -18
  34. package/dist/cjs/api/relayer/relayer.api.spec.js +234 -0
  35. package/dist/cjs/api/relayer/relayer.request.js +71 -18
  36. package/dist/cjs/api/relayer/types.js +3 -2
  37. package/dist/cjs/api/types.js +3 -2
  38. package/dist/cjs/api-ext.js +17 -4
  39. package/dist/cjs/connector/blockchain/blockchain-provider.connector.js +3 -2
  40. package/dist/cjs/connector/blockchain/index.js +19 -6
  41. package/dist/cjs/connector/blockchain/private-key-provider.connector.js +85 -19
  42. package/dist/cjs/connector/blockchain/private-key-provider.connector.spec.js +183 -0
  43. package/dist/cjs/connector/blockchain/web3-provider-connector.js +71 -22
  44. package/dist/cjs/connector/blockchain/web3-provider.connector.spec.js +186 -0
  45. package/dist/cjs/connector/http/axios-provider.connector.js +298 -39
  46. package/dist/cjs/connector/http/axios-provider.connector.spec.js +208 -0
  47. package/dist/cjs/connector/http/http-provider.connector.js +3 -2
  48. package/dist/cjs/connector/http/index.js +18 -5
  49. package/dist/cjs/connector/index.js +19 -6
  50. package/dist/cjs/connector/ws/index.js +19 -6
  51. package/dist/cjs/connector/ws/types.js +3 -2
  52. package/dist/cjs/connector/ws/websocket-client.connector.js +155 -71
  53. package/dist/cjs/connector/ws/websocket-provider.connector.js +3 -2
  54. package/dist/cjs/constants.js +53 -15
  55. package/dist/cjs/errors.js +123 -7
  56. package/dist/cjs/fusion-order/README.md +58 -0
  57. package/dist/cjs/fusion-order/auction-details/README.md +85 -0
  58. package/dist/cjs/fusion-order/auction-details/auction-details.js +182 -67
  59. package/dist/cjs/fusion-order/auction-details/auction-details.spec.js +25 -0
  60. package/dist/cjs/fusion-order/auction-details/index.js +18 -5
  61. package/dist/cjs/fusion-order/auction-details/types.js +3 -2
  62. package/dist/cjs/fusion-order/constants.js +26 -20
  63. package/dist/cjs/fusion-order/fees/fees.js +93 -27
  64. package/dist/cjs/fusion-order/fees/index.js +23 -9
  65. package/dist/cjs/fusion-order/fees/integrator-fee.js +54 -25
  66. package/dist/cjs/fusion-order/fees/resolver-fee.js +55 -20
  67. package/dist/cjs/fusion-order/fusion-extension.js +259 -155
  68. package/dist/cjs/fusion-order/fusion-extension.spec.js +78 -0
  69. package/dist/cjs/fusion-order/fusion-order.js +502 -199
  70. package/dist/cjs/fusion-order/fusion-order.spec.js +298 -0
  71. package/dist/cjs/fusion-order/index.js +29 -12
  72. package/dist/cjs/fusion-order/source-track.js +18 -12
  73. package/dist/cjs/fusion-order/surplus-params.js +80 -20
  74. package/dist/cjs/fusion-order/whitelist/README.md +54 -0
  75. package/dist/cjs/fusion-order/whitelist/index.js +18 -5
  76. package/dist/cjs/fusion-order/whitelist/types.js +3 -2
  77. package/dist/cjs/fusion-order/whitelist/whitelist.js +253 -109
  78. package/dist/cjs/fusion-order/whitelist/whitelist.spec.js +68 -0
  79. package/dist/cjs/index.js +91 -35
  80. package/dist/cjs/sdk/README.md +264 -0
  81. package/dist/cjs/sdk/encoders/cancel-order.encoder.js +20 -10
  82. package/dist/cjs/sdk/encoders/index.js +17 -4
  83. package/dist/cjs/sdk/index.js +20 -7
  84. package/dist/cjs/sdk/sdk.js +484 -129
  85. package/dist/cjs/sdk/sdk.spec.js +235 -0
  86. package/dist/cjs/sdk/types.js +3 -2
  87. package/dist/cjs/sdk/utils.js +21 -8
  88. package/dist/cjs/utils/amounts.js +35 -9
  89. package/dist/cjs/utils/time.js +9 -3
  90. package/dist/cjs/utils/types.js +3 -2
  91. package/dist/cjs/utils.js +17 -4
  92. package/dist/cjs/validations.js +32 -13
  93. package/dist/cjs/ws-api/README.md +627 -0
  94. package/dist/cjs/ws-api/active-websocket-orders-api.js +114 -50
  95. package/dist/cjs/ws-api/constants.js +10 -4
  96. package/dist/cjs/ws-api/index.js +21 -8
  97. package/dist/cjs/ws-api/rpc-websocket-api.js +110 -38
  98. package/dist/cjs/ws-api/types.js +3 -2
  99. package/dist/cjs/ws-api/url.js +9 -3
  100. package/dist/cjs/ws-api/ws-api.js +165 -48
  101. package/dist/cjs/ws-api/ws.spec.js +832 -0
  102. package/dist/esm/amount-calculator/amount-calculator.js +265 -76
  103. package/dist/esm/amount-calculator/amount-calculator.spec.js +62 -0
  104. package/dist/esm/amount-calculator/auction-calculator/README.md +59 -0
  105. package/dist/esm/amount-calculator/auction-calculator/auction-calculator.js +173 -73
  106. package/dist/esm/amount-calculator/auction-calculator/auction-calculator.spec.js +53 -0
  107. package/dist/esm/amount-calculator/auction-calculator/index.js +1 -2
  108. package/dist/esm/amount-calculator/index.js +4 -4
  109. package/dist/esm/api/fusion-api.js +107 -42
  110. package/dist/esm/api/index.js +8 -9
  111. package/dist/esm/api/orders/index.js +3 -4
  112. package/dist/esm/api/orders/order-api.spec.js +742 -0
  113. package/dist/esm/api/orders/orders.api.js +236 -33
  114. package/dist/esm/api/orders/orders.request.js +139 -58
  115. package/dist/esm/api/orders/types.js +5 -4
  116. package/dist/esm/api/ordersVersion.js +3 -4
  117. package/dist/esm/api/pagination.js +53 -12
  118. package/dist/esm/api/pagination.spec.js +25 -0
  119. package/dist/esm/api/params.js +18 -19
  120. package/dist/esm/api/quoter/index.js +6 -7
  121. package/dist/esm/api/quoter/preset.js +77 -24
  122. package/dist/esm/api/quoter/quote/index.js +3 -4
  123. package/dist/esm/api/quoter/quote/order-params.js +53 -10
  124. package/dist/esm/api/quoter/quote/quote.js +143 -85
  125. package/dist/esm/api/quoter/quote/types.js +12 -2
  126. package/dist/esm/api/quoter/quoter-custom-preset.request.js +110 -54
  127. package/dist/esm/api/quoter/quoter-custom-preset.request.spec.js +127 -0
  128. package/dist/esm/api/quoter/quoter.api.js +232 -25
  129. package/dist/esm/api/quoter/quoter.api.spec.js +361 -0
  130. package/dist/esm/api/quoter/quoter.request.js +80 -26
  131. package/dist/esm/api/quoter/quoter.request.spec.js +107 -0
  132. package/dist/esm/api/quoter/types.js +7 -4
  133. package/dist/esm/api/relayer/index.js +3 -4
  134. package/dist/esm/api/relayer/relayer.api.js +65 -16
  135. package/dist/esm/api/relayer/relayer.api.spec.js +230 -0
  136. package/dist/esm/api/relayer/relayer.request.js +62 -15
  137. package/dist/esm/api/relayer/types.js +1 -2
  138. package/dist/esm/api/types.js +1 -2
  139. package/dist/esm/api-ext.js +1 -2
  140. package/dist/esm/connector/blockchain/blockchain-provider.connector.js +1 -2
  141. package/dist/esm/connector/blockchain/index.js +3 -4
  142. package/dist/esm/connector/blockchain/private-key-provider.connector.js +76 -16
  143. package/dist/esm/connector/blockchain/private-key-provider.connector.spec.js +179 -0
  144. package/dist/esm/connector/blockchain/web3-provider-connector.js +62 -19
  145. package/dist/esm/connector/blockchain/web3-provider.connector.spec.js +182 -0
  146. package/dist/esm/connector/http/axios-provider.connector.js +249 -36
  147. package/dist/esm/connector/http/axios-provider.connector.spec.js +199 -0
  148. package/dist/esm/connector/http/http-provider.connector.js +1 -2
  149. package/dist/esm/connector/http/index.js +2 -3
  150. package/dist/esm/connector/index.js +3 -4
  151. package/dist/esm/connector/ws/index.js +3 -4
  152. package/dist/esm/connector/ws/types.js +1 -2
  153. package/dist/esm/connector/ws/websocket-client.connector.js +140 -66
  154. package/dist/esm/connector/ws/websocket-provider.connector.js +1 -2
  155. package/dist/esm/constants.js +12 -13
  156. package/dist/esm/errors.js +114 -4
  157. package/dist/esm/fusion-order/README.md +58 -0
  158. package/dist/esm/fusion-order/auction-details/README.md +85 -0
  159. package/dist/esm/fusion-order/auction-details/auction-details.js +160 -55
  160. package/dist/esm/fusion-order/auction-details/auction-details.spec.js +21 -0
  161. package/dist/esm/fusion-order/auction-details/index.js +2 -3
  162. package/dist/esm/fusion-order/auction-details/types.js +12 -2
  163. package/dist/esm/fusion-order/constants.js +16 -17
  164. package/dist/esm/fusion-order/fees/fees.js +75 -19
  165. package/dist/esm/fusion-order/fees/index.js +3 -4
  166. package/dist/esm/fusion-order/fees/integrator-fee.js +44 -21
  167. package/dist/esm/fusion-order/fees/resolver-fee.js +40 -15
  168. package/dist/esm/fusion-order/fusion-extension.js +239 -145
  169. package/dist/esm/fusion-order/fusion-extension.spec.js +74 -0
  170. package/dist/esm/fusion-order/fusion-order.js +485 -192
  171. package/dist/esm/fusion-order/fusion-order.spec.js +294 -0
  172. package/dist/esm/fusion-order/index.js +7 -8
  173. package/dist/esm/fusion-order/source-track.js +4 -5
  174. package/dist/esm/fusion-order/surplus-params.js +63 -13
  175. package/dist/esm/fusion-order/whitelist/README.md +54 -0
  176. package/dist/esm/fusion-order/whitelist/index.js +2 -3
  177. package/dist/esm/fusion-order/whitelist/types.js +6 -2
  178. package/dist/esm/fusion-order/whitelist/whitelist.js +236 -102
  179. package/dist/esm/fusion-order/whitelist/whitelist.spec.js +64 -0
  180. package/dist/esm/index.js +12 -13
  181. package/dist/esm/package.json +1 -0
  182. package/dist/esm/sdk/README.md +264 -0
  183. package/dist/esm/sdk/encoders/cancel-order.encoder.js +5 -4
  184. package/dist/esm/sdk/encoders/index.js +1 -2
  185. package/dist/esm/sdk/index.js +4 -5
  186. package/dist/esm/sdk/sdk.js +476 -127
  187. package/dist/esm/sdk/sdk.spec.js +231 -0
  188. package/dist/esm/sdk/types.js +12 -2
  189. package/dist/esm/sdk/utils.js +4 -5
  190. package/dist/esm/utils/amounts.js +18 -6
  191. package/dist/esm/utils/time.js +0 -1
  192. package/dist/esm/utils/types.js +1 -2
  193. package/dist/esm/utils.js +0 -1
  194. package/dist/esm/validations.js +7 -6
  195. package/dist/esm/ws-api/README.md +627 -0
  196. package/dist/esm/ws-api/active-websocket-orders-api.js +105 -47
  197. package/dist/esm/ws-api/constants.js +1 -2
  198. package/dist/esm/ws-api/index.js +5 -6
  199. package/dist/esm/ws-api/rpc-websocket-api.js +102 -36
  200. package/dist/esm/ws-api/types.js +1 -2
  201. package/dist/esm/ws-api/url.js +0 -1
  202. package/dist/esm/ws-api/ws-api.js +154 -43
  203. package/dist/esm/ws-api/ws.spec.js +828 -0
  204. package/dist/types/src/amount-calculator/amount-calculator.d.ts +4 -5
  205. package/dist/types/src/amount-calculator/auction-calculator/auction-calculator.d.ts +1 -1
  206. package/dist/types/src/amount-calculator/auction-calculator/index.d.ts +1 -1
  207. package/dist/types/src/amount-calculator/index.d.ts +4 -3
  208. package/dist/types/src/api/fusion-api.d.ts +5 -5
  209. package/dist/types/src/api/index.d.ts +8 -8
  210. package/dist/types/src/api/orders/index.d.ts +3 -3
  211. package/dist/types/src/api/orders/orders.api.d.ts +4 -4
  212. package/dist/types/src/api/orders/orders.request.d.ts +2 -2
  213. package/dist/types/src/api/orders/types.d.ts +4 -4
  214. package/dist/types/src/api/params.d.ts +1 -1
  215. package/dist/types/src/api/quoter/index.d.ts +6 -6
  216. package/dist/types/src/api/quoter/preset.d.ts +2 -2
  217. package/dist/types/src/api/quoter/quote/index.d.ts +3 -3
  218. package/dist/types/src/api/quoter/quote/order-params.d.ts +2 -2
  219. package/dist/types/src/api/quoter/quote/quote.d.ts +5 -5
  220. package/dist/types/src/api/quoter/quote/types.d.ts +2 -2
  221. package/dist/types/src/api/quoter/quoter-custom-preset.request.d.ts +1 -1
  222. package/dist/types/src/api/quoter/quoter.api.d.ts +5 -5
  223. package/dist/types/src/api/quoter/quoter.request.d.ts +2 -2
  224. package/dist/types/src/api/quoter/types.d.ts +2 -2
  225. package/dist/types/src/api/relayer/index.d.ts +3 -3
  226. package/dist/types/src/api/relayer/relayer.api.d.ts +3 -3
  227. package/dist/types/src/api/relayer/relayer.request.d.ts +1 -1
  228. package/dist/types/src/api/relayer/types.d.ts +1 -1
  229. package/dist/types/src/api/types.d.ts +2 -2
  230. package/dist/types/src/api-ext.d.ts +1 -1
  231. package/dist/types/src/connector/blockchain/index.d.ts +3 -3
  232. package/dist/types/src/connector/blockchain/private-key-provider.connector.d.ts +2 -2
  233. package/dist/types/src/connector/blockchain/web3-provider-connector.d.ts +1 -1
  234. package/dist/types/src/connector/http/axios-provider.connector.d.ts +1 -1
  235. package/dist/types/src/connector/http/index.d.ts +2 -2
  236. package/dist/types/src/connector/index.d.ts +3 -3
  237. package/dist/types/src/connector/ws/index.d.ts +3 -3
  238. package/dist/types/src/connector/ws/websocket-client.connector.d.ts +2 -2
  239. package/dist/types/src/connector/ws/websocket-provider.connector.d.ts +1 -1
  240. package/dist/types/src/fusion-order/auction-details/auction-details.d.ts +1 -1
  241. package/dist/types/src/fusion-order/auction-details/index.d.ts +2 -2
  242. package/dist/types/src/fusion-order/fees/fees.d.ts +2 -2
  243. package/dist/types/src/fusion-order/fees/index.d.ts +3 -3
  244. package/dist/types/src/fusion-order/fusion-extension.d.ts +4 -4
  245. package/dist/types/src/fusion-order/fusion-order.d.ts +7 -7
  246. package/dist/types/src/fusion-order/index.d.ts +7 -7
  247. package/dist/types/src/fusion-order/whitelist/index.d.ts +2 -2
  248. package/dist/types/src/fusion-order/whitelist/whitelist.d.ts +1 -1
  249. package/dist/types/src/index.d.ts +13 -13
  250. package/dist/types/src/sdk/encoders/index.d.ts +1 -1
  251. package/dist/types/src/sdk/index.d.ts +4 -4
  252. package/dist/types/src/sdk/sdk.d.ts +4 -4
  253. package/dist/types/src/sdk/types.d.ts +4 -4
  254. package/dist/types/src/ws-api/active-websocket-orders-api.d.ts +2 -2
  255. package/dist/types/src/ws-api/constants.d.ts +1 -1
  256. package/dist/types/src/ws-api/index.d.ts +5 -5
  257. package/dist/types/src/ws-api/rpc-websocket-api.d.ts +3 -3
  258. package/dist/types/src/ws-api/types.d.ts +4 -4
  259. package/dist/types/src/ws-api/ws-api.d.ts +4 -4
  260. package/dist/types/tsconfig.types.tsbuildinfo +1 -1
  261. package/package.json +6 -4
  262. package/dist/cjs/amount-calculator/amount-calculator.js.map +0 -1
  263. package/dist/cjs/amount-calculator/auction-calculator/auction-calculator.js.map +0 -1
  264. package/dist/cjs/amount-calculator/auction-calculator/index.js.map +0 -1
  265. package/dist/cjs/amount-calculator/index.js.map +0 -1
  266. package/dist/cjs/api/fusion-api.js.map +0 -1
  267. package/dist/cjs/api/index.js.map +0 -1
  268. package/dist/cjs/api/orders/index.js.map +0 -1
  269. package/dist/cjs/api/orders/orders.api.js.map +0 -1
  270. package/dist/cjs/api/orders/orders.request.js.map +0 -1
  271. package/dist/cjs/api/orders/types.js.map +0 -1
  272. package/dist/cjs/api/ordersVersion.js.map +0 -1
  273. package/dist/cjs/api/pagination.js.map +0 -1
  274. package/dist/cjs/api/params.js.map +0 -1
  275. package/dist/cjs/api/quoter/index.js.map +0 -1
  276. package/dist/cjs/api/quoter/preset.js.map +0 -1
  277. package/dist/cjs/api/quoter/quote/index.js.map +0 -1
  278. package/dist/cjs/api/quoter/quote/order-params.js.map +0 -1
  279. package/dist/cjs/api/quoter/quote/quote.js.map +0 -1
  280. package/dist/cjs/api/quoter/quote/types.js.map +0 -1
  281. package/dist/cjs/api/quoter/quoter-custom-preset.request.js.map +0 -1
  282. package/dist/cjs/api/quoter/quoter.api.js.map +0 -1
  283. package/dist/cjs/api/quoter/quoter.request.js.map +0 -1
  284. package/dist/cjs/api/quoter/types.js.map +0 -1
  285. package/dist/cjs/api/relayer/index.js.map +0 -1
  286. package/dist/cjs/api/relayer/relayer.api.js.map +0 -1
  287. package/dist/cjs/api/relayer/relayer.request.js.map +0 -1
  288. package/dist/cjs/api/relayer/types.js.map +0 -1
  289. package/dist/cjs/api/types.js.map +0 -1
  290. package/dist/cjs/api-ext.js.map +0 -1
  291. package/dist/cjs/connector/blockchain/blockchain-provider.connector.js.map +0 -1
  292. package/dist/cjs/connector/blockchain/index.js.map +0 -1
  293. package/dist/cjs/connector/blockchain/private-key-provider.connector.js.map +0 -1
  294. package/dist/cjs/connector/blockchain/web3-provider-connector.js.map +0 -1
  295. package/dist/cjs/connector/http/axios-provider.connector.js.map +0 -1
  296. package/dist/cjs/connector/http/http-provider.connector.js.map +0 -1
  297. package/dist/cjs/connector/http/index.js.map +0 -1
  298. package/dist/cjs/connector/index.js.map +0 -1
  299. package/dist/cjs/connector/ws/index.js.map +0 -1
  300. package/dist/cjs/connector/ws/types.js.map +0 -1
  301. package/dist/cjs/connector/ws/websocket-client.connector.js.map +0 -1
  302. package/dist/cjs/connector/ws/websocket-provider.connector.js.map +0 -1
  303. package/dist/cjs/constants.js.map +0 -1
  304. package/dist/cjs/errors.js.map +0 -1
  305. package/dist/cjs/fusion-order/auction-details/auction-details.js.map +0 -1
  306. package/dist/cjs/fusion-order/auction-details/index.js.map +0 -1
  307. package/dist/cjs/fusion-order/auction-details/types.js.map +0 -1
  308. package/dist/cjs/fusion-order/constants.js.map +0 -1
  309. package/dist/cjs/fusion-order/fees/fees.js.map +0 -1
  310. package/dist/cjs/fusion-order/fees/index.js.map +0 -1
  311. package/dist/cjs/fusion-order/fees/integrator-fee.js.map +0 -1
  312. package/dist/cjs/fusion-order/fees/resolver-fee.js.map +0 -1
  313. package/dist/cjs/fusion-order/fusion-extension.js.map +0 -1
  314. package/dist/cjs/fusion-order/fusion-order.js.map +0 -1
  315. package/dist/cjs/fusion-order/index.js.map +0 -1
  316. package/dist/cjs/fusion-order/source-track.js.map +0 -1
  317. package/dist/cjs/fusion-order/surplus-params.js.map +0 -1
  318. package/dist/cjs/fusion-order/whitelist/index.js.map +0 -1
  319. package/dist/cjs/fusion-order/whitelist/types.js.map +0 -1
  320. package/dist/cjs/fusion-order/whitelist/whitelist.js.map +0 -1
  321. package/dist/cjs/index.js.map +0 -1
  322. package/dist/cjs/sdk/encoders/cancel-order.encoder.js.map +0 -1
  323. package/dist/cjs/sdk/encoders/index.js.map +0 -1
  324. package/dist/cjs/sdk/index.js.map +0 -1
  325. package/dist/cjs/sdk/sdk.js.map +0 -1
  326. package/dist/cjs/sdk/types.js.map +0 -1
  327. package/dist/cjs/sdk/utils.js.map +0 -1
  328. package/dist/cjs/tsconfig.cjs.tsbuildinfo +0 -1
  329. package/dist/cjs/utils/amounts.js.map +0 -1
  330. package/dist/cjs/utils/time.js.map +0 -1
  331. package/dist/cjs/utils/types.js.map +0 -1
  332. package/dist/cjs/utils.js.map +0 -1
  333. package/dist/cjs/validations.js.map +0 -1
  334. package/dist/cjs/ws-api/active-websocket-orders-api.js.map +0 -1
  335. package/dist/cjs/ws-api/constants.js.map +0 -1
  336. package/dist/cjs/ws-api/index.js.map +0 -1
  337. package/dist/cjs/ws-api/rpc-websocket-api.js.map +0 -1
  338. package/dist/cjs/ws-api/types.js.map +0 -1
  339. package/dist/cjs/ws-api/url.js.map +0 -1
  340. package/dist/cjs/ws-api/ws-api.js.map +0 -1
  341. package/dist/esm/amount-calculator/amount-calculator.js.map +0 -1
  342. package/dist/esm/amount-calculator/auction-calculator/auction-calculator.js.map +0 -1
  343. package/dist/esm/amount-calculator/auction-calculator/index.js.map +0 -1
  344. package/dist/esm/amount-calculator/index.js.map +0 -1
  345. package/dist/esm/api/fusion-api.js.map +0 -1
  346. package/dist/esm/api/index.js.map +0 -1
  347. package/dist/esm/api/orders/index.js.map +0 -1
  348. package/dist/esm/api/orders/orders.api.js.map +0 -1
  349. package/dist/esm/api/orders/orders.request.js.map +0 -1
  350. package/dist/esm/api/orders/types.js.map +0 -1
  351. package/dist/esm/api/ordersVersion.js.map +0 -1
  352. package/dist/esm/api/pagination.js.map +0 -1
  353. package/dist/esm/api/params.js.map +0 -1
  354. package/dist/esm/api/quoter/index.js.map +0 -1
  355. package/dist/esm/api/quoter/preset.js.map +0 -1
  356. package/dist/esm/api/quoter/quote/index.js.map +0 -1
  357. package/dist/esm/api/quoter/quote/order-params.js.map +0 -1
  358. package/dist/esm/api/quoter/quote/quote.js.map +0 -1
  359. package/dist/esm/api/quoter/quote/types.js.map +0 -1
  360. package/dist/esm/api/quoter/quoter-custom-preset.request.js.map +0 -1
  361. package/dist/esm/api/quoter/quoter.api.js.map +0 -1
  362. package/dist/esm/api/quoter/quoter.request.js.map +0 -1
  363. package/dist/esm/api/quoter/types.js.map +0 -1
  364. package/dist/esm/api/relayer/index.js.map +0 -1
  365. package/dist/esm/api/relayer/relayer.api.js.map +0 -1
  366. package/dist/esm/api/relayer/relayer.request.js.map +0 -1
  367. package/dist/esm/api/relayer/types.js.map +0 -1
  368. package/dist/esm/api/types.js.map +0 -1
  369. package/dist/esm/api-ext.js.map +0 -1
  370. package/dist/esm/connector/blockchain/blockchain-provider.connector.js.map +0 -1
  371. package/dist/esm/connector/blockchain/index.js.map +0 -1
  372. package/dist/esm/connector/blockchain/private-key-provider.connector.js.map +0 -1
  373. package/dist/esm/connector/blockchain/web3-provider-connector.js.map +0 -1
  374. package/dist/esm/connector/http/axios-provider.connector.js.map +0 -1
  375. package/dist/esm/connector/http/http-provider.connector.js.map +0 -1
  376. package/dist/esm/connector/http/index.js.map +0 -1
  377. package/dist/esm/connector/index.js.map +0 -1
  378. package/dist/esm/connector/ws/index.js.map +0 -1
  379. package/dist/esm/connector/ws/types.js.map +0 -1
  380. package/dist/esm/connector/ws/websocket-client.connector.js.map +0 -1
  381. package/dist/esm/connector/ws/websocket-provider.connector.js.map +0 -1
  382. package/dist/esm/constants.js.map +0 -1
  383. package/dist/esm/errors.js.map +0 -1
  384. package/dist/esm/fusion-order/auction-details/auction-details.js.map +0 -1
  385. package/dist/esm/fusion-order/auction-details/index.js.map +0 -1
  386. package/dist/esm/fusion-order/auction-details/types.js.map +0 -1
  387. package/dist/esm/fusion-order/constants.js.map +0 -1
  388. package/dist/esm/fusion-order/fees/fees.js.map +0 -1
  389. package/dist/esm/fusion-order/fees/index.js.map +0 -1
  390. package/dist/esm/fusion-order/fees/integrator-fee.js.map +0 -1
  391. package/dist/esm/fusion-order/fees/resolver-fee.js.map +0 -1
  392. package/dist/esm/fusion-order/fusion-extension.js.map +0 -1
  393. package/dist/esm/fusion-order/fusion-order.js.map +0 -1
  394. package/dist/esm/fusion-order/index.js.map +0 -1
  395. package/dist/esm/fusion-order/source-track.js.map +0 -1
  396. package/dist/esm/fusion-order/surplus-params.js.map +0 -1
  397. package/dist/esm/fusion-order/whitelist/index.js.map +0 -1
  398. package/dist/esm/fusion-order/whitelist/types.js.map +0 -1
  399. package/dist/esm/fusion-order/whitelist/whitelist.js.map +0 -1
  400. package/dist/esm/index.js.map +0 -1
  401. package/dist/esm/sdk/encoders/cancel-order.encoder.js.map +0 -1
  402. package/dist/esm/sdk/encoders/index.js.map +0 -1
  403. package/dist/esm/sdk/index.js.map +0 -1
  404. package/dist/esm/sdk/sdk.js.map +0 -1
  405. package/dist/esm/sdk/types.js.map +0 -1
  406. package/dist/esm/sdk/utils.js.map +0 -1
  407. package/dist/esm/tsconfig.esm.tsbuildinfo +0 -1
  408. package/dist/esm/utils/amounts.js.map +0 -1
  409. package/dist/esm/utils/time.js.map +0 -1
  410. package/dist/esm/utils/types.js.map +0 -1
  411. package/dist/esm/utils.js.map +0 -1
  412. package/dist/esm/validations.js.map +0 -1
  413. package/dist/esm/ws-api/active-websocket-orders-api.js.map +0 -1
  414. package/dist/esm/ws-api/constants.js.map +0 -1
  415. package/dist/esm/ws-api/index.js.map +0 -1
  416. package/dist/esm/ws-api/rpc-websocket-api.js.map +0 -1
  417. package/dist/esm/ws-api/types.js.map +0 -1
  418. package/dist/esm/ws-api/url.js.map +0 -1
  419. package/dist/esm/ws-api/ws-api.js.map +0 -1
@@ -1,164 +1,258 @@
1
+ function _class_call_check(instance, Constructor) {
2
+ if (!(instance instanceof Constructor)) {
3
+ throw new TypeError("Cannot call a class as a function");
4
+ }
5
+ }
6
+ function _defineProperties(target, props) {
7
+ for(var i = 0; i < props.length; i++){
8
+ var descriptor = props[i];
9
+ descriptor.enumerable = descriptor.enumerable || false;
10
+ descriptor.configurable = true;
11
+ if ("value" in descriptor) descriptor.writable = true;
12
+ Object.defineProperty(target, descriptor.key, descriptor);
13
+ }
14
+ }
15
+ function _create_class(Constructor, protoProps, staticProps) {
16
+ if (protoProps) _defineProperties(Constructor.prototype, protoProps);
17
+ if (staticProps) _defineProperties(Constructor, staticProps);
18
+ return Constructor;
19
+ }
20
+ function _define_property(obj, key, value) {
21
+ if (key in obj) {
22
+ Object.defineProperty(obj, key, {
23
+ value: value,
24
+ enumerable: true,
25
+ configurable: true,
26
+ writable: true
27
+ });
28
+ } else {
29
+ obj[key] = value;
30
+ }
31
+ return obj;
32
+ }
1
33
  import { Address, Extension, ExtensionBuilder, Interaction, Bps, mulDiv, Rounding } from '@1inch/limit-order-sdk';
2
34
  import { BN, BytesBuilder, BytesIter } from '@1inch/byte-utils';
3
35
  import assert from 'assert';
4
- import { AuctionDetails } from './auction-details';
5
- import { Whitelist } from './whitelist/whitelist';
6
- import { SurplusParams } from './surplus-params';
7
- import { Fees, IntegratorFee, ResolverFee } from './fees';
8
- import { add0x } from '../utils';
9
- export class FusionExtension {
10
- constructor(address, auctionDetails, whitelist, surplus, extra) {
36
+ import { AuctionDetails } from './auction-details/index.js';
37
+ import { Whitelist } from './whitelist/whitelist.js';
38
+ import { SurplusParams } from './surplus-params.js';
39
+ import { Fees, IntegratorFee, ResolverFee } from './fees/index.js';
40
+ import { add0x } from '../utils.js';
41
+ export var FusionExtension = /*#__PURE__*/ function() {
42
+ "use strict";
43
+ function FusionExtension(address, auctionDetails, whitelist, surplus, extra) {
44
+ _class_call_check(this, FusionExtension);
45
+ _define_property(this, "address", void 0);
46
+ _define_property(this, "auctionDetails", void 0);
47
+ _define_property(this, "whitelist", void 0);
48
+ _define_property(this, "surplus", void 0);
49
+ _define_property(this, "extra", void 0);
11
50
  this.address = address;
12
51
  this.auctionDetails = auctionDetails;
13
52
  this.whitelist = whitelist;
14
53
  this.surplus = surplus;
15
54
  this.extra = extra;
16
55
  }
17
- static decode(bytes) {
18
- const extension = Extension.decode(bytes);
19
- return FusionExtension.fromExtension(extension);
20
- }
21
- static fromExtension(extension) {
22
- const settlementContract = Address.fromFirstBytes(extension.makingAmountData);
23
- assert(Address.fromFirstBytes(extension.takingAmountData).equal(settlementContract) &&
24
- Address.fromFirstBytes(extension.postInteraction).equal(settlementContract), 'Invalid extension, all calls should be to the same address');
25
- assert(extension.takingAmountData == extension.makingAmountData, 'Invalid extension, taking amount data must be equal to making amount data');
26
- const interactionBytes = BytesIter.HexString(extension.postInteraction);
27
- interactionBytes.nextUint160();
28
- const flags = BN.fromHex(interactionBytes.nextUint8());
29
- const integratorFeeRecipient = new Address(interactionBytes.nextUint160());
30
- const protocolFeeRecipient = new Address(interactionBytes.nextUint160());
31
- const customReceiver = flags.getBit(FusionExtension.CUSTOM_RECEIVER_FLAG_BIT)
32
- ? new Address(interactionBytes.nextUint160())
33
- : undefined;
34
- const interactionData = parseAmountData(interactionBytes);
35
- const whitelist = Whitelist.decodeFrom(interactionBytes);
36
- const surplusParams = SurplusParams.decodeFrom(interactionBytes);
37
- const amountBytes = BytesIter.HexString(extension.makingAmountData);
38
- amountBytes.nextUint160();
39
- const auctionDetails = AuctionDetails.decodeFrom(amountBytes);
40
- const amountData = parseAmountData(amountBytes);
41
- const whitelistAddressLength = Number(amountBytes.nextUint8());
42
- assert(whitelist.length === whitelistAddressLength, 'whitelist addresses must be same in interaction data and in amount data');
43
- const whitelistAddressesFromAmount = [];
44
- for (let i = 0; i < whitelistAddressLength; i++) {
45
- whitelistAddressesFromAmount.push(BigInt(amountBytes.nextBytes(10)).toString(16).padStart(20, '0'));
46
- }
47
- const makerPermit = extension.hasMakerPermit
48
- ? Interaction.decode(extension.makerPermit)
49
- : undefined;
50
- assert(amountData.fees.integratorFee.value ===
51
- interactionData.fees.integratorFee.value, `invalid extension: integrator fee must be same in interaction data and in amount data`);
52
- assert(amountData.fees.resolverFee.value ===
53
- interactionData.fees.resolverFee.value, `invalid extension: resolver fee must be same in interaction data and in amount data`);
54
- assert(amountData.fees.whitelistDiscount.equal(interactionData.fees.whitelistDiscount), `invalid extension: whitelistDiscount must be same in interaction data and in amount data`);
55
- assert(amountData.fees.integratorShare.value ===
56
- interactionData.fees.integratorShare.value, `invalid extension: integrator share must be same in interaction data and in amount data`);
57
- assert(whitelist.whitelist.every(({ addressHalf }, i) => whitelistAddressesFromAmount[i] === addressHalf), 'whitelist addresses must be same in interaction data and in amount data');
58
- const hasFees = !integratorFeeRecipient.isZero() || !protocolFeeRecipient.isZero();
59
- if (!hasFees) {
60
- return new FusionExtension(settlementContract, auctionDetails, whitelist, surplusParams, {
61
- makerPermit,
62
- customReceiver,
63
- fees: undefined
64
- });
65
- }
66
- const fees = new Fees(new ResolverFee(protocolFeeRecipient, interactionData.fees.resolverFee, interactionData.fees.whitelistDiscount), interactionData.fees.integratorFee.isZero()
67
- ? IntegratorFee.ZERO
68
- : new IntegratorFee(integratorFeeRecipient, protocolFeeRecipient, interactionData.fees.integratorFee, interactionData.fees.integratorShare));
69
- return new FusionExtension(settlementContract, auctionDetails, whitelist, surplusParams, {
70
- makerPermit,
71
- fees,
72
- customReceiver
73
- });
74
- }
75
- build() {
76
- const amountData = this.buildAmountGetterData(true);
77
- const builder = new ExtensionBuilder()
78
- .withMakingAmountData(this.address, amountData)
79
- .withTakingAmountData(this.address, amountData)
80
- .withPostInteraction(new Interaction(this.address, this.buildInteractionData()));
81
- if (this.extra?.makerPermit) {
82
- builder.withMakerPermit(this.extra?.makerPermit.target, this.extra?.makerPermit.data);
83
- }
84
- return builder.build();
85
- }
86
- buildInteractionData() {
87
- const customReceiver = this.extra?.customReceiver || Address.ZERO_ADDRESS;
88
- const flags = new BN(0n).setBit(FusionExtension.CUSTOM_RECEIVER_FLAG_BIT, Boolean(!customReceiver.isZero()));
89
- const integratorReceiver = this.extra?.fees?.integrator.integrator || Address.ZERO_ADDRESS;
90
- const protocolReceiver = this.extra?.fees?.protocol || Address.ZERO_ADDRESS;
91
- const builder = new BytesBuilder()
92
- .addUint8(flags)
93
- .addAddress(integratorReceiver.toString())
94
- .addAddress(protocolReceiver.toString());
95
- if (!customReceiver.isZero()) {
96
- builder.addAddress(customReceiver.toString());
97
- }
98
- builder.addBytes(this.buildAmountGetterData(false));
99
- builder.addUint256(this.surplus.estimatedTakerAmount);
100
- builder.addUint8(BigInt(this.surplus.protocolFee.toPercent()));
101
- return builder.asHex();
102
- }
103
- buildAmountGetterData(forAmountGetters) {
104
- const builder = new BytesBuilder();
105
- if (forAmountGetters) {
106
- this.auctionDetails.encodeInto(builder);
56
+ _create_class(FusionExtension, [
57
+ {
58
+ key: "build",
59
+ value: function build() {
60
+ var _this_extra;
61
+ var amountData = this.buildAmountGetterData(true);
62
+ var builder = new ExtensionBuilder().withMakingAmountData(this.address, amountData).withTakingAmountData(this.address, amountData).withPostInteraction(new Interaction(this.address, this.buildInteractionData()));
63
+ if ((_this_extra = this.extra) === null || _this_extra === void 0 ? void 0 : _this_extra.makerPermit) {
64
+ var _this_extra1, _this_extra2;
65
+ builder.withMakerPermit((_this_extra1 = this.extra) === null || _this_extra1 === void 0 ? void 0 : _this_extra1.makerPermit.target, (_this_extra2 = this.extra) === null || _this_extra2 === void 0 ? void 0 : _this_extra2.makerPermit.data);
66
+ }
67
+ return builder.build();
68
+ }
69
+ },
70
+ {
71
+ key: "buildInteractionData",
72
+ value: /**
73
+ * Build data for `FeeTaker.postInteraction`
74
+ *
75
+ * Data is built of:
76
+ * `1 byte` - flags:
77
+ * 01 bit `CUSTOM_RECEIVER_FLAG` - set to 1 if order has custom receiver
78
+ * `20 bytes` integrator fee recipient
79
+ * `20 bytes` - protocol fee recipient
80
+ * `[20 bytes]` receiver of taking tokens (optional, if not set, maker is used). See `CUSTOM_RECEIVER_FLAG` flag
81
+ * `bytes` - same as in `buildAmountGetterData`
82
+ * `32 bytes` - estimated taking amount
83
+ * `1 byte` - protocol surplus fee (in 1e2)
84
+ * @see buildAmountGetterData
85
+ * @see https://github.com/1inch/limit-order-protocol/blob/22a18f7f20acfec69d4f50ce1880e8e662477710/contracts/extensions/FeeTaker.sol#L114
86
+ */ function buildInteractionData() {
87
+ var _this_extra, _this_extra_fees, _this_extra1, _this_extra_fees1, _this_extra2;
88
+ var customReceiver = ((_this_extra = this.extra) === null || _this_extra === void 0 ? void 0 : _this_extra.customReceiver) || Address.ZERO_ADDRESS;
89
+ var flags = new BN(0n).setBit(FusionExtension.CUSTOM_RECEIVER_FLAG_BIT, Boolean(!customReceiver.isZero()));
90
+ var integratorReceiver = ((_this_extra1 = this.extra) === null || _this_extra1 === void 0 ? void 0 : (_this_extra_fees = _this_extra1.fees) === null || _this_extra_fees === void 0 ? void 0 : _this_extra_fees.integrator.integrator) || Address.ZERO_ADDRESS;
91
+ var protocolReceiver = ((_this_extra2 = this.extra) === null || _this_extra2 === void 0 ? void 0 : (_this_extra_fees1 = _this_extra2.fees) === null || _this_extra_fees1 === void 0 ? void 0 : _this_extra_fees1.protocol) || Address.ZERO_ADDRESS;
92
+ var builder = new BytesBuilder().addUint8(flags).addAddress(integratorReceiver.toString()).addAddress(protocolReceiver.toString());
93
+ if (!customReceiver.isZero()) {
94
+ builder.addAddress(customReceiver.toString());
95
+ }
96
+ builder.addBytes(this.buildAmountGetterData(false));
97
+ // surplus params
98
+ builder.addUint256(this.surplus.estimatedTakerAmount);
99
+ builder.addUint8(BigInt(this.surplus.protocolFee.toPercent()));
100
+ return builder.asHex();
101
+ }
102
+ },
103
+ {
104
+ key: "buildAmountGetterData",
105
+ value: /**
106
+ * Build data for getMakingAmount/getTakingAmount
107
+ *
108
+ * AuctionDetails
109
+ * 2 bytes — integrator fee percentage (in 1e5)
110
+ * 1 byte - integrator share percentage (in 1e2)
111
+ * 2 bytes — resolver fee percentage (in 1e5)
112
+ * 1 byte - whitelist discount numerator (in 1e2)
113
+ * Whitelist
114
+ *
115
+ * @see https://github.com/1inch/limit-order-settlement/blob/82f0a25c969170f710825ce6aa6920062adbde88/contracts/SimpleSettlement.sol#L34
116
+ */ function buildAmountGetterData(forAmountGetters) {
117
+ var _this_extra_fees, _this_extra, _this_extra_fees1, _this_extra1, _this_extra_fees2, _this_extra2, _this_extra_fees3, _this_extra3;
118
+ var builder = new BytesBuilder();
119
+ if (forAmountGetters) {
120
+ // auction data required only for `getMakingAmount/getTakingAmount` and not for `postInteraction`
121
+ this.auctionDetails.encodeInto(builder);
122
+ }
123
+ var integrator = {
124
+ fee: ((_this_extra = this.extra) === null || _this_extra === void 0 ? void 0 : (_this_extra_fees = _this_extra.fees) === null || _this_extra_fees === void 0 ? void 0 : _this_extra_fees.integrator.fee.toFraction(Fees.BASE_1E5)) || 0,
125
+ share: ((_this_extra1 = this.extra) === null || _this_extra1 === void 0 ? void 0 : (_this_extra_fees1 = _this_extra1.fees) === null || _this_extra_fees1 === void 0 ? void 0 : _this_extra_fees1.integrator.share.toFraction(Fees.BASE_1E2)) || 0
126
+ };
127
+ var resolverFee = ((_this_extra2 = this.extra) === null || _this_extra2 === void 0 ? void 0 : (_this_extra_fees2 = _this_extra2.fees) === null || _this_extra_fees2 === void 0 ? void 0 : _this_extra_fees2.resolver.fee.toFraction(Fees.BASE_1E5)) || 0;
128
+ var whitelistDiscount = ((_this_extra3 = this.extra) === null || _this_extra3 === void 0 ? void 0 : (_this_extra_fees3 = _this_extra3.fees) === null || _this_extra_fees3 === void 0 ? void 0 : _this_extra_fees3.resolver.whitelistDiscount) || Bps.ZERO;
129
+ builder.addUint16(BigInt(integrator.fee)).addUint8(BigInt(integrator.share)).addUint16(BigInt(resolverFee)).addUint8(BigInt(// contract expects discount numerator, but class contain discount
130
+ Number(Fees.BASE_1E2) - whitelistDiscount.toFraction(Fees.BASE_1E2)));
131
+ if (forAmountGetters) {
132
+ // amount getters need only addresses, without delays
133
+ builder.addUint8(BigInt(this.whitelist.whitelist.length));
134
+ this.whitelist.whitelist.forEach(function(i) {
135
+ builder.addBytes(add0x(i.addressHalf));
136
+ });
137
+ } else {
138
+ this.whitelist.encodeInto(builder);
139
+ }
140
+ return builder.asHex();
141
+ }
142
+ },
143
+ {
144
+ key: "getFeesForTaker",
145
+ value: function getFeesForTaker(taker) {
146
+ var _this_extra_fees, _this_extra, _this_extra_fees1, _this_extra1, _this_extra_fees2, _this_extra2;
147
+ var whitelistDiscount = ((_this_extra = this.extra) === null || _this_extra === void 0 ? void 0 : (_this_extra_fees = _this_extra.fees) === null || _this_extra_fees === void 0 ? void 0 : _this_extra_fees.resolver.whitelistDiscount.toFraction(Fees.BASE_1E2)) || 0;
148
+ var discountNumerator = this.whitelist.isWhitelisted(taker) ? (Number(Fees.BASE_1E2) - whitelistDiscount) / Number(Fees.BASE_1E2) : 1;
149
+ var resolverFee = discountNumerator * (((_this_extra1 = this.extra) === null || _this_extra1 === void 0 ? void 0 : (_this_extra_fees1 = _this_extra1.fees) === null || _this_extra_fees1 === void 0 ? void 0 : _this_extra_fees1.resolver.fee.toFraction(Fees.BASE_1E5)) || 0);
150
+ var resolverFeeBN = BigInt(resolverFee);
151
+ var integratorFeeBN = BigInt(((_this_extra2 = this.extra) === null || _this_extra2 === void 0 ? void 0 : (_this_extra_fees2 = _this_extra2.fees) === null || _this_extra_fees2 === void 0 ? void 0 : _this_extra_fees2.integrator.fee.toFraction(Fees.BASE_1E5)) || 0);
152
+ return {
153
+ resolverFee: resolverFeeBN,
154
+ integratorFee: integratorFeeBN
155
+ };
156
+ }
157
+ },
158
+ {
159
+ key: "getTakingAmountWithFee",
160
+ value: /**
161
+ * Returns takingAmount with fee, but without auction bump
162
+ * @param taker
163
+ * @param orderTakingAmount
164
+ * @private
165
+ */ function getTakingAmountWithFee(taker, orderTakingAmount) {
166
+ var fees = this.getFeesForTaker(taker);
167
+ return mulDiv(orderTakingAmount, Fees.BASE_1E5 + fees.resolverFee + fees.integratorFee, Fees.BASE_1E5, Rounding.Ceil);
168
+ }
107
169
  }
108
- const integrator = {
109
- fee: this.extra?.fees?.integrator.fee.toFraction(Fees.BASE_1E5) || 0,
110
- share: this.extra?.fees?.integrator.share.toFraction(Fees.BASE_1E2) ||
111
- 0
112
- };
113
- const resolverFee = this.extra?.fees?.resolver.fee.toFraction(Fees.BASE_1E5) || 0;
114
- const whitelistDiscount = this.extra?.fees?.resolver.whitelistDiscount || Bps.ZERO;
115
- builder
116
- .addUint16(BigInt(integrator.fee))
117
- .addUint8(BigInt(integrator.share))
118
- .addUint16(BigInt(resolverFee))
119
- .addUint8(BigInt(Number(Fees.BASE_1E2) -
120
- whitelistDiscount.toFraction(Fees.BASE_1E2)));
121
- if (forAmountGetters) {
122
- builder.addUint8(BigInt(this.whitelist.whitelist.length));
123
- this.whitelist.whitelist.forEach((i) => {
124
- builder.addBytes(add0x(i.addressHalf));
125
- });
170
+ ], [
171
+ {
172
+ key: "decode",
173
+ value: /**
174
+ * Create `FusionExtension` from bytes
175
+ *
176
+ * @param bytes 0x prefixed bytes
177
+ */ function decode(bytes) {
178
+ var extension = Extension.decode(bytes);
179
+ return FusionExtension.fromExtension(extension);
180
+ }
181
+ },
182
+ {
183
+ key: "fromExtension",
184
+ value: /**
185
+ * Create `FusionExtension` from `Extension`
186
+ */ function fromExtension(extension) {
187
+ var settlementContract = Address.fromFirstBytes(extension.makingAmountData);
188
+ assert(Address.fromFirstBytes(extension.takingAmountData).equal(settlementContract) && Address.fromFirstBytes(extension.postInteraction).equal(settlementContract), 'Invalid extension, all calls should be to the same address');
189
+ assert(extension.takingAmountData == extension.makingAmountData, 'Invalid extension, taking amount data must be equal to making amount data');
190
+ // region Parse postInteraction data
191
+ var interactionBytes = BytesIter.HexString(extension.postInteraction);
192
+ interactionBytes.nextUint160();
193
+ // skip address of extension
194
+ var flags = BN.fromHex(interactionBytes.nextUint8());
195
+ var integratorFeeRecipient = new Address(interactionBytes.nextUint160());
196
+ var protocolFeeRecipient = new Address(interactionBytes.nextUint160());
197
+ var customReceiver = flags.getBit(FusionExtension.CUSTOM_RECEIVER_FLAG_BIT) ? new Address(interactionBytes.nextUint160()) : undefined;
198
+ var interactionData = parseAmountData(interactionBytes);
199
+ var whitelist = Whitelist.decodeFrom(interactionBytes);
200
+ var surplusParams = SurplusParams.decodeFrom(interactionBytes);
201
+ //endregion Parse postInteraction data
202
+ //region Parse amount data
203
+ var amountBytes = BytesIter.HexString(extension.makingAmountData);
204
+ amountBytes.nextUint160();
205
+ // skip address of extension
206
+ var auctionDetails = AuctionDetails.decodeFrom(amountBytes);
207
+ var amountData = parseAmountData(amountBytes);
208
+ var whitelistAddressLength = Number(amountBytes.nextUint8());
209
+ assert(whitelist.length === whitelistAddressLength, 'whitelist addresses must be same in interaction data and in amount data');
210
+ var whitelistAddressesFromAmount = [];
211
+ for(var i = 0; i < whitelistAddressLength; i++){
212
+ whitelistAddressesFromAmount.push(BigInt(amountBytes.nextBytes(10)).toString(16).padStart(20, '0'));
213
+ }
214
+ //endregion Parse amount data
215
+ var makerPermit = extension.hasMakerPermit ? Interaction.decode(extension.makerPermit) : undefined;
216
+ assert(amountData.fees.integratorFee.value === interactionData.fees.integratorFee.value, "invalid extension: integrator fee must be same in interaction data and in amount data");
217
+ assert(amountData.fees.resolverFee.value === interactionData.fees.resolverFee.value, "invalid extension: resolver fee must be same in interaction data and in amount data");
218
+ assert(amountData.fees.whitelistDiscount.equal(interactionData.fees.whitelistDiscount), "invalid extension: whitelistDiscount must be same in interaction data and in amount data");
219
+ assert(amountData.fees.integratorShare.value === interactionData.fees.integratorShare.value, "invalid extension: integrator share must be same in interaction data and in amount data");
220
+ assert(whitelist.whitelist.every(function(param, i) {
221
+ var addressHalf = param.addressHalf;
222
+ return whitelistAddressesFromAmount[i] === addressHalf;
223
+ }), 'whitelist addresses must be same in interaction data and in amount data');
224
+ var hasFees = !integratorFeeRecipient.isZero() || !protocolFeeRecipient.isZero();
225
+ if (!hasFees) {
226
+ return new FusionExtension(settlementContract, auctionDetails, whitelist, surplusParams, {
227
+ makerPermit: makerPermit,
228
+ customReceiver: customReceiver,
229
+ fees: undefined
230
+ });
231
+ }
232
+ var fees = new Fees(new ResolverFee(protocolFeeRecipient, interactionData.fees.resolverFee, interactionData.fees.whitelistDiscount), interactionData.fees.integratorFee.isZero() ? IntegratorFee.ZERO : new IntegratorFee(integratorFeeRecipient, protocolFeeRecipient, interactionData.fees.integratorFee, interactionData.fees.integratorShare));
233
+ return new FusionExtension(settlementContract, auctionDetails, whitelist, surplusParams, {
234
+ makerPermit: makerPermit,
235
+ fees: fees,
236
+ customReceiver: customReceiver
237
+ });
238
+ }
126
239
  }
127
- else {
128
- this.whitelist.encodeInto(builder);
129
- }
130
- return builder.asHex();
131
- }
132
- getFeesForTaker(taker) {
133
- const whitelistDiscount = this.extra?.fees?.resolver.whitelistDiscount.toFraction(Fees.BASE_1E2) || 0;
134
- const discountNumerator = this.whitelist.isWhitelisted(taker)
135
- ? (Number(Fees.BASE_1E2) - whitelistDiscount) /
136
- Number(Fees.BASE_1E2)
137
- : 1;
138
- const resolverFee = discountNumerator *
139
- (this.extra?.fees?.resolver.fee.toFraction(Fees.BASE_1E5) || 0);
140
- const resolverFeeBN = BigInt(resolverFee);
141
- const integratorFeeBN = BigInt(this.extra?.fees?.integrator.fee.toFraction(Fees.BASE_1E5) || 0);
142
- return {
143
- resolverFee: resolverFeeBN,
144
- integratorFee: integratorFeeBN
145
- };
146
- }
147
- getTakingAmountWithFee(taker, orderTakingAmount) {
148
- const fees = this.getFeesForTaker(taker);
149
- return mulDiv(orderTakingAmount, Fees.BASE_1E5 + fees.resolverFee + fees.integratorFee, Fees.BASE_1E5, Rounding.Ceil);
150
- }
151
- }
152
- FusionExtension.CUSTOM_RECEIVER_FLAG_BIT = 0n;
240
+ ]);
241
+ return FusionExtension;
242
+ }();
243
+ /**
244
+ * Flags for post-interaction data
245
+ * @private
246
+ */ _define_property(FusionExtension, "CUSTOM_RECEIVER_FLAG_BIT", 0n);
153
247
  function parseAmountData(iter) {
154
- const fees = {
248
+ var fees = {
155
249
  integratorFee: Bps.fromFraction(Number(iter.nextUint16()), Fees.BASE_1E5),
156
250
  integratorShare: Bps.fromFraction(Number(iter.nextUint8()), Fees.BASE_1E2),
157
251
  resolverFee: Bps.fromFraction(Number(iter.nextUint16()), Fees.BASE_1E5),
158
- whitelistDiscount: Bps.fromFraction(Number(Fees.BASE_1E2) - Number(iter.nextUint8()), Fees.BASE_1E2)
252
+ whitelistDiscount: Bps.fromFraction(Number(Fees.BASE_1E2) - Number(iter.nextUint8()), // contract uses 1 - discount
253
+ Fees.BASE_1E2)
159
254
  };
160
255
  return {
161
- fees
256
+ fees: fees
162
257
  };
163
258
  }
164
- //# sourceMappingURL=fusion-extension.js.map
@@ -0,0 +1,74 @@
1
+ import { Address } from '@1inch/limit-order-sdk';
2
+ import { FusionOrder } from './fusion-order.js';
3
+ import { AuctionDetails } from './auction-details/index.js';
4
+ import { FusionExtension } from './fusion-extension.js';
5
+ import { Whitelist } from './whitelist/index.js';
6
+ import { SurplusParams } from './surplus-params.js';
7
+ describe('FusionExtension', function() {
8
+ it('should decode', function() {
9
+ var extensionContract = new Address('0x8273f37417da37c4a6c3995e82cf442f87a25d9c');
10
+ var order = FusionOrder.new(extensionContract, {
11
+ makerAsset: new Address('0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2'),
12
+ takerAsset: new Address('0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48'),
13
+ makingAmount: 1000000000000000000n,
14
+ takingAmount: 1420000000n,
15
+ maker: new Address('0x00000000219ab540356cbb839cbe05303d7705fa'),
16
+ salt: 10n
17
+ }, {
18
+ auction: new AuctionDetails({
19
+ duration: 180n,
20
+ startTime: 1673548149n,
21
+ initialRateBump: 50000,
22
+ points: [
23
+ {
24
+ coefficient: 20000,
25
+ delay: 12
26
+ }
27
+ ]
28
+ }),
29
+ whitelist: Whitelist.new(1673548139n, [
30
+ {
31
+ address: new Address('0x00000000219ab540356cbb839cbe05303d7705fa'),
32
+ allowFrom: 0n
33
+ }
34
+ ]),
35
+ surplus: SurplusParams.NO_FEE
36
+ });
37
+ var fusionExtension = FusionExtension.decode(order.extension.encode());
38
+ expect(fusionExtension).toStrictEqual(order.fusionExtension);
39
+ });
40
+ it('should decode with permit', function() {
41
+ var extensionContract = new Address('0x8273f37417da37c4a6c3995e82cf442f87a25d9c');
42
+ var order = FusionOrder.new(extensionContract, {
43
+ makerAsset: new Address('0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2'),
44
+ takerAsset: new Address('0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48'),
45
+ makingAmount: 1000000000000000000n,
46
+ takingAmount: 1420000000n,
47
+ maker: new Address('0x00000000219ab540356cbb839cbe05303d7705fa'),
48
+ salt: 10n
49
+ }, {
50
+ auction: new AuctionDetails({
51
+ duration: 180n,
52
+ startTime: 1673548149n,
53
+ initialRateBump: 50000,
54
+ points: [
55
+ {
56
+ coefficient: 20000,
57
+ delay: 12
58
+ }
59
+ ]
60
+ }),
61
+ whitelist: Whitelist.new(1673548139n, [
62
+ {
63
+ address: new Address('0x00000000219ab540356cbb839cbe05303d7705fa'),
64
+ allowFrom: 0n
65
+ }
66
+ ]),
67
+ surplus: SurplusParams.NO_FEE
68
+ }, {
69
+ permit: '0xdeadbeef'
70
+ });
71
+ var fusionExtension = FusionExtension.decode(order.extension.encode());
72
+ expect(fusionExtension).toStrictEqual(order.fusionExtension);
73
+ });
74
+ });