@1inch/fusion-sdk 2.3.4 → 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 -78
  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 -13
  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 -75
  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 +243 -149
  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 +7 -6
  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,23 +1,58 @@
1
1
  "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.ResolverFee = void 0;
4
- const tslib_1 = require("tslib");
5
- const limit_order_sdk_1 = require("@1inch/limit-order-sdk");
6
- const assert_1 = tslib_1.__importDefault(require("assert"));
7
- class ResolverFee {
8
- constructor(receiver, fee, whitelistDiscount = limit_order_sdk_1.Bps.ZERO) {
9
- this.receiver = receiver;
10
- this.fee = fee;
11
- this.whitelistDiscount = whitelistDiscount;
12
- if (receiver.isZero() && !fee.isZero()) {
13
- throw new Error('fee must be zero if receiver is zero address');
14
- }
15
- if (fee.isZero() && !whitelistDiscount.isZero()) {
16
- throw new Error('whitelist discount must be zero if fee is zero');
17
- }
18
- (0, assert_1.default)(this.whitelistDiscount.value % 100n === 0n, `whitelist discount must have percent precision: 1%, 2% and so on`);
2
+ Object.defineProperty(exports, "__esModule", {
3
+ value: true
4
+ });
5
+ Object.defineProperty(exports, "ResolverFee", {
6
+ enumerable: true,
7
+ get: function() {
8
+ return ResolverFee;
19
9
  }
10
+ });
11
+ var _limitordersdk = require("@1inch/limit-order-sdk");
12
+ var _assert = /*#__PURE__*/ _interop_require_default(require("assert"));
13
+ function _class_call_check(instance, Constructor) {
14
+ if (!(instance instanceof Constructor)) {
15
+ throw new TypeError("Cannot call a class as a function");
16
+ }
17
+ }
18
+ function _define_property(obj, key, value) {
19
+ if (key in obj) {
20
+ Object.defineProperty(obj, key, {
21
+ value: value,
22
+ enumerable: true,
23
+ configurable: true,
24
+ writable: true
25
+ });
26
+ } else {
27
+ obj[key] = value;
28
+ }
29
+ return obj;
20
30
  }
21
- exports.ResolverFee = ResolverFee;
22
- ResolverFee.ZERO = new ResolverFee(limit_order_sdk_1.Address.ZERO_ADDRESS, limit_order_sdk_1.Bps.ZERO);
23
- //# sourceMappingURL=resolver-fee.js.map
31
+ function _interop_require_default(obj) {
32
+ return obj && obj.__esModule ? obj : {
33
+ default: obj
34
+ };
35
+ }
36
+ /**
37
+ * Fee paid by resolver to `receiver`
38
+ */ var ResolverFee = function ResolverFee(receiver, fee) {
39
+ "use strict";
40
+ var /**
41
+ * whitelisted resolvers have discount on fee
42
+ */ whitelistDiscount = arguments.length > 2 && arguments[2] !== void 0 ? arguments[2] : _limitordersdk.Bps.ZERO;
43
+ _class_call_check(this, ResolverFee);
44
+ _define_property(this, "receiver", void 0);
45
+ _define_property(this, "fee", void 0);
46
+ _define_property(this, "whitelistDiscount", void 0);
47
+ this.receiver = receiver;
48
+ this.fee = fee;
49
+ this.whitelistDiscount = whitelistDiscount;
50
+ if (receiver.isZero() && !fee.isZero()) {
51
+ throw new Error('fee must be zero if receiver is zero address');
52
+ }
53
+ if (fee.isZero() && !whitelistDiscount.isZero()) {
54
+ throw new Error('whitelist discount must be zero if fee is zero');
55
+ }
56
+ (0, _assert.default)(this.whitelistDiscount.value % 100n === 0n, "whitelist discount must have percent precision: 1%, 2% and so on");
57
+ };
58
+ _define_property(ResolverFee, "ZERO", new ResolverFee(_limitordersdk.Address.ZERO_ADDRESS, _limitordersdk.Bps.ZERO));
@@ -1,169 +1,273 @@
1
1
  "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.FusionExtension = void 0;
4
- const tslib_1 = require("tslib");
5
- const limit_order_sdk_1 = require("@1inch/limit-order-sdk");
6
- const byte_utils_1 = require("@1inch/byte-utils");
7
- const assert_1 = tslib_1.__importDefault(require("assert"));
8
- const auction_details_1 = require("./auction-details");
9
- const whitelist_1 = require("./whitelist/whitelist");
10
- const surplus_params_1 = require("./surplus-params");
11
- const utils_1 = require("../utils");
12
- class FusionExtension {
13
- constructor(address, auctionDetails, whitelist, surplus, extra) {
2
+ Object.defineProperty(exports, "__esModule", {
3
+ value: true
4
+ });
5
+ Object.defineProperty(exports, "FusionExtension", {
6
+ enumerable: true,
7
+ get: function() {
8
+ return FusionExtension;
9
+ }
10
+ });
11
+ var _limitordersdk = require("@1inch/limit-order-sdk");
12
+ var _byteutils = require("@1inch/byte-utils");
13
+ var _assert = /*#__PURE__*/ _interop_require_default(require("assert"));
14
+ var _index = require("./auction-details/index.js");
15
+ var _whitelist = require("./whitelist/whitelist.js");
16
+ var _surplusparams = require("./surplus-params.js");
17
+ var _index1 = require("./fees/index.js");
18
+ var _utils = require("../utils.js");
19
+ function _class_call_check(instance, Constructor) {
20
+ if (!(instance instanceof Constructor)) {
21
+ throw new TypeError("Cannot call a class as a function");
22
+ }
23
+ }
24
+ function _defineProperties(target, props) {
25
+ for(var i = 0; i < props.length; i++){
26
+ var descriptor = props[i];
27
+ descriptor.enumerable = descriptor.enumerable || false;
28
+ descriptor.configurable = true;
29
+ if ("value" in descriptor) descriptor.writable = true;
30
+ Object.defineProperty(target, descriptor.key, descriptor);
31
+ }
32
+ }
33
+ function _create_class(Constructor, protoProps, staticProps) {
34
+ if (protoProps) _defineProperties(Constructor.prototype, protoProps);
35
+ if (staticProps) _defineProperties(Constructor, staticProps);
36
+ return Constructor;
37
+ }
38
+ function _define_property(obj, key, value) {
39
+ if (key in obj) {
40
+ Object.defineProperty(obj, key, {
41
+ value: value,
42
+ enumerable: true,
43
+ configurable: true,
44
+ writable: true
45
+ });
46
+ } else {
47
+ obj[key] = value;
48
+ }
49
+ return obj;
50
+ }
51
+ function _interop_require_default(obj) {
52
+ return obj && obj.__esModule ? obj : {
53
+ default: obj
54
+ };
55
+ }
56
+ var FusionExtension = /*#__PURE__*/ function() {
57
+ "use strict";
58
+ function FusionExtension(address, auctionDetails, whitelist, surplus, extra) {
59
+ _class_call_check(this, FusionExtension);
60
+ _define_property(this, "address", void 0);
61
+ _define_property(this, "auctionDetails", void 0);
62
+ _define_property(this, "whitelist", void 0);
63
+ _define_property(this, "surplus", void 0);
64
+ _define_property(this, "extra", void 0);
14
65
  this.address = address;
15
66
  this.auctionDetails = auctionDetails;
16
67
  this.whitelist = whitelist;
17
68
  this.surplus = surplus;
18
69
  this.extra = extra;
19
70
  }
20
- static decode(bytes) {
21
- const extension = limit_order_sdk_1.Extension.decode(bytes);
22
- return FusionExtension.fromExtension(extension);
23
- }
24
- static fromExtension(extension) {
25
- const settlementContract = limit_order_sdk_1.Address.fromFirstBytes(extension.makingAmountData);
26
- (0, assert_1.default)(limit_order_sdk_1.Address.fromFirstBytes(extension.takingAmountData).equal(settlementContract) &&
27
- limit_order_sdk_1.Address.fromFirstBytes(extension.postInteraction).equal(settlementContract), 'Invalid extension, all calls should be to the same address');
28
- (0, assert_1.default)(extension.takingAmountData == extension.makingAmountData, 'Invalid extension, taking amount data must be equal to making amount data');
29
- const interactionBytes = byte_utils_1.BytesIter.HexString(extension.postInteraction);
30
- interactionBytes.nextUint160();
31
- const flags = byte_utils_1.BN.fromHex(interactionBytes.nextUint8());
32
- const integratorFeeRecipient = new limit_order_sdk_1.Address(interactionBytes.nextUint160());
33
- const protocolFeeRecipient = new limit_order_sdk_1.Address(interactionBytes.nextUint160());
34
- const customReceiver = flags.getBit(FusionExtension.CUSTOM_RECEIVER_FLAG_BIT)
35
- ? new limit_order_sdk_1.Address(interactionBytes.nextUint160())
36
- : undefined;
37
- const interactionData = parseAmountData(interactionBytes);
38
- const whitelist = whitelist_1.Whitelist.decodeFrom(interactionBytes);
39
- const surplusParams = surplus_params_1.SurplusParams.decodeFrom(interactionBytes);
40
- const amountBytes = byte_utils_1.BytesIter.HexString(extension.makingAmountData);
41
- amountBytes.nextUint160();
42
- const auctionDetails = auction_details_1.AuctionDetails.decodeFrom(amountBytes);
43
- const amountData = parseAmountData(amountBytes);
44
- const whitelistAddressLength = Number(amountBytes.nextUint8());
45
- (0, assert_1.default)(whitelist.length === whitelistAddressLength, 'whitelist addresses must be same in interaction data and in amount data');
46
- const whitelistAddressesFromAmount = [];
47
- for (let i = 0; i < whitelistAddressLength; i++) {
48
- whitelistAddressesFromAmount.push(BigInt(amountBytes.nextBytes(10)).toString(16).padStart(20, '0'));
71
+ _create_class(FusionExtension, [
72
+ {
73
+ key: "build",
74
+ value: function build() {
75
+ var _this_extra;
76
+ var amountData = this.buildAmountGetterData(true);
77
+ var builder = new _limitordersdk.ExtensionBuilder().withMakingAmountData(this.address, amountData).withTakingAmountData(this.address, amountData).withPostInteraction(new _limitordersdk.Interaction(this.address, this.buildInteractionData()));
78
+ if ((_this_extra = this.extra) === null || _this_extra === void 0 ? void 0 : _this_extra.makerPermit) {
79
+ var _this_extra1, _this_extra2;
80
+ 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);
81
+ }
82
+ return builder.build();
83
+ }
84
+ },
85
+ {
86
+ key: "buildInteractionData",
87
+ value: /**
88
+ * Build data for `FeeTaker.postInteraction`
89
+ *
90
+ * Data is built of:
91
+ * `1 byte` - flags:
92
+ * 01 bit `CUSTOM_RECEIVER_FLAG` - set to 1 if order has custom receiver
93
+ * `20 bytes` integrator fee recipient
94
+ * `20 bytes` - protocol fee recipient
95
+ * `[20 bytes]` receiver of taking tokens (optional, if not set, maker is used). See `CUSTOM_RECEIVER_FLAG` flag
96
+ * `bytes` - same as in `buildAmountGetterData`
97
+ * `32 bytes` - estimated taking amount
98
+ * `1 byte` - protocol surplus fee (in 1e2)
99
+ * @see buildAmountGetterData
100
+ * @see https://github.com/1inch/limit-order-protocol/blob/22a18f7f20acfec69d4f50ce1880e8e662477710/contracts/extensions/FeeTaker.sol#L114
101
+ */ function buildInteractionData() {
102
+ var _this_extra, _this_extra_fees, _this_extra1, _this_extra_fees1, _this_extra2;
103
+ var customReceiver = ((_this_extra = this.extra) === null || _this_extra === void 0 ? void 0 : _this_extra.customReceiver) || _limitordersdk.Address.ZERO_ADDRESS;
104
+ var flags = new _byteutils.BN(0n).setBit(FusionExtension.CUSTOM_RECEIVER_FLAG_BIT, Boolean(!customReceiver.isZero()));
105
+ 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) || _limitordersdk.Address.ZERO_ADDRESS;
106
+ 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) || _limitordersdk.Address.ZERO_ADDRESS;
107
+ var builder = new _byteutils.BytesBuilder().addUint8(flags).addAddress(integratorReceiver.toString()).addAddress(protocolReceiver.toString());
108
+ if (!customReceiver.isZero()) {
109
+ builder.addAddress(customReceiver.toString());
110
+ }
111
+ builder.addBytes(this.buildAmountGetterData(false));
112
+ // surplus params
113
+ builder.addUint256(this.surplus.estimatedTakerAmount);
114
+ builder.addUint8(BigInt(this.surplus.protocolFee.toPercent()));
115
+ return builder.asHex();
116
+ }
117
+ },
118
+ {
119
+ key: "buildAmountGetterData",
120
+ value: /**
121
+ * Build data for getMakingAmount/getTakingAmount
122
+ *
123
+ * AuctionDetails
124
+ * 2 bytes — integrator fee percentage (in 1e5)
125
+ * 1 byte - integrator share percentage (in 1e2)
126
+ * 2 bytes — resolver fee percentage (in 1e5)
127
+ * 1 byte - whitelist discount numerator (in 1e2)
128
+ * Whitelist
129
+ *
130
+ * @see https://github.com/1inch/limit-order-settlement/blob/82f0a25c969170f710825ce6aa6920062adbde88/contracts/SimpleSettlement.sol#L34
131
+ */ function buildAmountGetterData(forAmountGetters) {
132
+ var _this_extra_fees, _this_extra, _this_extra_fees1, _this_extra1, _this_extra_fees2, _this_extra2, _this_extra_fees3, _this_extra3;
133
+ var builder = new _byteutils.BytesBuilder();
134
+ if (forAmountGetters) {
135
+ // auction data required only for `getMakingAmount/getTakingAmount` and not for `postInteraction`
136
+ this.auctionDetails.encodeInto(builder);
137
+ }
138
+ var integrator = {
139
+ 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(_index1.Fees.BASE_1E5)) || 0,
140
+ 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(_index1.Fees.BASE_1E2)) || 0
141
+ };
142
+ 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(_index1.Fees.BASE_1E5)) || 0;
143
+ 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) || _limitordersdk.Bps.ZERO;
144
+ builder.addUint16(BigInt(integrator.fee)).addUint8(BigInt(integrator.share)).addUint16(BigInt(resolverFee)).addUint8(BigInt(// contract expects discount numerator, but class contain discount
145
+ Number(_index1.Fees.BASE_1E2) - whitelistDiscount.toFraction(_index1.Fees.BASE_1E2)));
146
+ if (forAmountGetters) {
147
+ // amount getters need only addresses, without delays
148
+ builder.addUint8(BigInt(this.whitelist.whitelist.length));
149
+ this.whitelist.whitelist.forEach(function(i) {
150
+ builder.addBytes((0, _utils.add0x)(i.addressHalf));
151
+ });
152
+ } else {
153
+ this.whitelist.encodeInto(builder);
154
+ }
155
+ return builder.asHex();
156
+ }
157
+ },
158
+ {
159
+ key: "getFeesForTaker",
160
+ value: function getFeesForTaker(taker) {
161
+ var _this_extra_fees, _this_extra, _this_extra_fees1, _this_extra1, _this_extra_fees2, _this_extra2;
162
+ 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(_index1.Fees.BASE_1E2)) || 0;
163
+ var discountNumerator = this.whitelist.isWhitelisted(taker) ? (Number(_index1.Fees.BASE_1E2) - whitelistDiscount) / Number(_index1.Fees.BASE_1E2) : 1;
164
+ 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(_index1.Fees.BASE_1E5)) || 0);
165
+ var resolverFeeBN = BigInt(resolverFee);
166
+ 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(_index1.Fees.BASE_1E5)) || 0);
167
+ return {
168
+ resolverFee: resolverFeeBN,
169
+ integratorFee: integratorFeeBN
170
+ };
171
+ }
172
+ },
173
+ {
174
+ key: "getTakingAmountWithFee",
175
+ value: /**
176
+ * Returns takingAmount with fee, but without auction bump
177
+ * @param taker
178
+ * @param orderTakingAmount
179
+ * @private
180
+ */ function getTakingAmountWithFee(taker, orderTakingAmount) {
181
+ var fees = this.getFeesForTaker(taker);
182
+ return (0, _limitordersdk.mulDiv)(orderTakingAmount, _index1.Fees.BASE_1E5 + fees.resolverFee + fees.integratorFee, _index1.Fees.BASE_1E5, _limitordersdk.Rounding.Ceil);
183
+ }
49
184
  }
50
- const makerPermit = extension.hasMakerPermit
51
- ? limit_order_sdk_1.Interaction.decode(extension.makerPermit)
52
- : undefined;
53
- (0, assert_1.default)(amountData.fees.integratorFee.value ===
54
- interactionData.fees.integratorFee.value, `invalid extension: integrator fee must be same in interaction data and in amount data`);
55
- (0, assert_1.default)(amountData.fees.resolverFee.value ===
56
- interactionData.fees.resolverFee.value, `invalid extension: resolver fee must be same in interaction data and in amount data`);
57
- (0, assert_1.default)(amountData.fees.whitelistDiscount.equal(interactionData.fees.whitelistDiscount), `invalid extension: whitelistDiscount must be same in interaction data and in amount data`);
58
- (0, assert_1.default)(amountData.fees.integratorShare.value ===
59
- interactionData.fees.integratorShare.value, `invalid extension: integrator share must be same in interaction data and in amount data`);
60
- (0, assert_1.default)(whitelist.whitelist.every(({ addressHalf }, i) => whitelistAddressesFromAmount[i] === addressHalf), 'whitelist addresses must be same in interaction data and in amount data');
61
- const hasFees = !integratorFeeRecipient.isZero() || !protocolFeeRecipient.isZero();
62
- if (!hasFees) {
63
- return new FusionExtension(settlementContract, auctionDetails, whitelist, surplusParams, {
64
- makerPermit,
65
- customReceiver,
66
- fees: undefined
67
- });
185
+ ], [
186
+ {
187
+ key: "decode",
188
+ value: /**
189
+ * Create `FusionExtension` from bytes
190
+ *
191
+ * @param bytes 0x prefixed bytes
192
+ */ function decode(bytes) {
193
+ var extension = _limitordersdk.Extension.decode(bytes);
194
+ return FusionExtension.fromExtension(extension);
195
+ }
196
+ },
197
+ {
198
+ key: "fromExtension",
199
+ value: /**
200
+ * Create `FusionExtension` from `Extension`
201
+ */ function fromExtension(extension) {
202
+ var settlementContract = _limitordersdk.Address.fromFirstBytes(extension.makingAmountData);
203
+ (0, _assert.default)(_limitordersdk.Address.fromFirstBytes(extension.takingAmountData).equal(settlementContract) && _limitordersdk.Address.fromFirstBytes(extension.postInteraction).equal(settlementContract), 'Invalid extension, all calls should be to the same address');
204
+ (0, _assert.default)(extension.takingAmountData == extension.makingAmountData, 'Invalid extension, taking amount data must be equal to making amount data');
205
+ // region Parse postInteraction data
206
+ var interactionBytes = _byteutils.BytesIter.HexString(extension.postInteraction);
207
+ interactionBytes.nextUint160();
208
+ // skip address of extension
209
+ var flags = _byteutils.BN.fromHex(interactionBytes.nextUint8());
210
+ var integratorFeeRecipient = new _limitordersdk.Address(interactionBytes.nextUint160());
211
+ var protocolFeeRecipient = new _limitordersdk.Address(interactionBytes.nextUint160());
212
+ var customReceiver = flags.getBit(FusionExtension.CUSTOM_RECEIVER_FLAG_BIT) ? new _limitordersdk.Address(interactionBytes.nextUint160()) : undefined;
213
+ var interactionData = parseAmountData(interactionBytes);
214
+ var whitelist = _whitelist.Whitelist.decodeFrom(interactionBytes);
215
+ var surplusParams = _surplusparams.SurplusParams.decodeFrom(interactionBytes);
216
+ //endregion Parse postInteraction data
217
+ //region Parse amount data
218
+ var amountBytes = _byteutils.BytesIter.HexString(extension.makingAmountData);
219
+ amountBytes.nextUint160();
220
+ // skip address of extension
221
+ var auctionDetails = _index.AuctionDetails.decodeFrom(amountBytes);
222
+ var amountData = parseAmountData(amountBytes);
223
+ var whitelistAddressLength = Number(amountBytes.nextUint8());
224
+ (0, _assert.default)(whitelist.length === whitelistAddressLength, 'whitelist addresses must be same in interaction data and in amount data');
225
+ var whitelistAddressesFromAmount = [];
226
+ for(var i = 0; i < whitelistAddressLength; i++){
227
+ whitelistAddressesFromAmount.push(BigInt(amountBytes.nextBytes(10)).toString(16).padStart(20, '0'));
228
+ }
229
+ //endregion Parse amount data
230
+ var makerPermit = extension.hasMakerPermit ? _limitordersdk.Interaction.decode(extension.makerPermit) : undefined;
231
+ (0, _assert.default)(amountData.fees.integratorFee.value === interactionData.fees.integratorFee.value, "invalid extension: integrator fee must be same in interaction data and in amount data");
232
+ (0, _assert.default)(amountData.fees.resolverFee.value === interactionData.fees.resolverFee.value, "invalid extension: resolver fee must be same in interaction data and in amount data");
233
+ (0, _assert.default)(amountData.fees.whitelistDiscount.equal(interactionData.fees.whitelistDiscount), "invalid extension: whitelistDiscount must be same in interaction data and in amount data");
234
+ (0, _assert.default)(amountData.fees.integratorShare.value === interactionData.fees.integratorShare.value, "invalid extension: integrator share must be same in interaction data and in amount data");
235
+ (0, _assert.default)(whitelist.whitelist.every(function(param, i) {
236
+ var addressHalf = param.addressHalf;
237
+ return whitelistAddressesFromAmount[i] === addressHalf;
238
+ }), 'whitelist addresses must be same in interaction data and in amount data');
239
+ var hasFees = !integratorFeeRecipient.isZero() || !protocolFeeRecipient.isZero();
240
+ if (!hasFees) {
241
+ return new FusionExtension(settlementContract, auctionDetails, whitelist, surplusParams, {
242
+ makerPermit: makerPermit,
243
+ customReceiver: customReceiver,
244
+ fees: undefined
245
+ });
246
+ }
247
+ var fees = new _index1.Fees(new _index1.ResolverFee(protocolFeeRecipient, interactionData.fees.resolverFee, interactionData.fees.whitelistDiscount), interactionData.fees.integratorFee.isZero() ? _index1.IntegratorFee.ZERO : new _index1.IntegratorFee(integratorFeeRecipient, protocolFeeRecipient, interactionData.fees.integratorFee, interactionData.fees.integratorShare));
248
+ return new FusionExtension(settlementContract, auctionDetails, whitelist, surplusParams, {
249
+ makerPermit: makerPermit,
250
+ fees: fees,
251
+ customReceiver: customReceiver
252
+ });
253
+ }
68
254
  }
69
- const fees = new limit_order_sdk_1.FeeTakerExt.Fees(interactionData.fees.resolverFee.isZero()
70
- ? limit_order_sdk_1.FeeTakerExt.ResolverFee.ZERO
71
- : new limit_order_sdk_1.FeeTakerExt.ResolverFee(protocolFeeRecipient, interactionData.fees.resolverFee, interactionData.fees.whitelistDiscount), interactionData.fees.integratorFee.isZero()
72
- ? limit_order_sdk_1.FeeTakerExt.IntegratorFee.ZERO
73
- : new limit_order_sdk_1.FeeTakerExt.IntegratorFee(integratorFeeRecipient, protocolFeeRecipient, interactionData.fees.integratorFee, interactionData.fees.integratorShare));
74
- return new FusionExtension(settlementContract, auctionDetails, whitelist, surplusParams, {
75
- makerPermit,
76
- fees,
77
- customReceiver
78
- });
79
- }
80
- build() {
81
- const amountData = this.buildAmountGetterData(true);
82
- const builder = new limit_order_sdk_1.ExtensionBuilder()
83
- .withMakingAmountData(this.address, amountData)
84
- .withTakingAmountData(this.address, amountData)
85
- .withPostInteraction(new limit_order_sdk_1.Interaction(this.address, this.buildInteractionData()));
86
- if (this.extra?.makerPermit) {
87
- builder.withMakerPermit(this.extra?.makerPermit.target, this.extra?.makerPermit.data);
88
- }
89
- return builder.build();
90
- }
91
- buildInteractionData() {
92
- const customReceiver = this.extra?.customReceiver || limit_order_sdk_1.Address.ZERO_ADDRESS;
93
- const flags = new byte_utils_1.BN(0n).setBit(FusionExtension.CUSTOM_RECEIVER_FLAG_BIT, Boolean(!customReceiver.isZero()));
94
- const integratorReceiver = this.extra?.fees?.integrator.integrator || limit_order_sdk_1.Address.ZERO_ADDRESS;
95
- const protocolReceiver = this.extra?.fees?.protocol || limit_order_sdk_1.Address.ZERO_ADDRESS;
96
- const builder = new byte_utils_1.BytesBuilder()
97
- .addUint8(flags)
98
- .addAddress(integratorReceiver.toString())
99
- .addAddress(protocolReceiver.toString());
100
- if (!customReceiver.isZero()) {
101
- builder.addAddress(customReceiver.toString());
102
- }
103
- builder.addBytes(this.buildAmountGetterData(false));
104
- builder.addUint256(this.surplus.estimatedTakerAmount);
105
- builder.addUint8(BigInt(this.surplus.protocolFee.toPercent()));
106
- return builder.asHex();
107
- }
108
- buildAmountGetterData(forAmountGetters) {
109
- const builder = new byte_utils_1.BytesBuilder();
110
- if (forAmountGetters) {
111
- this.auctionDetails.encodeInto(builder);
112
- }
113
- const integrator = {
114
- fee: this.extra?.fees?.integrator.fee.toFraction(limit_order_sdk_1.FeeTakerExt.Fees.BASE_1E5) || 0,
115
- share: this.extra?.fees?.integrator.share.toFraction(limit_order_sdk_1.FeeTakerExt.Fees.BASE_1E2) || 0
116
- };
117
- const resolverFee = this.extra?.fees?.resolver.fee.toFraction(limit_order_sdk_1.FeeTakerExt.Fees.BASE_1E5) || 0;
118
- const whitelistDiscount = this.extra?.fees?.resolver.whitelistDiscount || limit_order_sdk_1.Bps.ZERO;
119
- builder
120
- .addUint16(BigInt(integrator.fee))
121
- .addUint8(BigInt(integrator.share))
122
- .addUint16(BigInt(resolverFee))
123
- .addUint8(BigInt(Number(limit_order_sdk_1.FeeTakerExt.Fees.BASE_1E2) -
124
- whitelistDiscount.toFraction(limit_order_sdk_1.FeeTakerExt.Fees.BASE_1E2)));
125
- if (forAmountGetters) {
126
- builder.addUint8(BigInt(this.whitelist.whitelist.length));
127
- this.whitelist.whitelist.forEach((i) => {
128
- builder.addBytes((0, utils_1.add0x)(i.addressHalf));
129
- });
130
- }
131
- else {
132
- this.whitelist.encodeInto(builder);
133
- }
134
- return builder.asHex();
135
- }
136
- getFeesForTaker(taker) {
137
- const whitelistDiscount = this.extra?.fees?.resolver.whitelistDiscount.toFraction(limit_order_sdk_1.FeeTakerExt.Fees.BASE_1E2) || 0;
138
- const discountNumerator = this.whitelist.isWhitelisted(taker)
139
- ? (Number(limit_order_sdk_1.FeeTakerExt.Fees.BASE_1E2) - whitelistDiscount) /
140
- Number(limit_order_sdk_1.FeeTakerExt.Fees.BASE_1E2)
141
- : 1;
142
- const resolverFee = discountNumerator *
143
- (this.extra?.fees?.resolver.fee.toFraction(limit_order_sdk_1.FeeTakerExt.Fees.BASE_1E5) || 0);
144
- const resolverFeeBN = BigInt(resolverFee);
145
- const integratorFeeBN = BigInt(this.extra?.fees?.integrator.fee.toFraction(limit_order_sdk_1.FeeTakerExt.Fees.BASE_1E5) || 0);
146
- return {
147
- resolverFee: resolverFeeBN,
148
- integratorFee: integratorFeeBN
149
- };
150
- }
151
- getTakingAmountWithFee(taker, orderTakingAmount) {
152
- const fees = this.getFeesForTaker(taker);
153
- return (0, limit_order_sdk_1.mulDiv)(orderTakingAmount, limit_order_sdk_1.FeeTakerExt.Fees.BASE_1E5 + fees.resolverFee + fees.integratorFee, limit_order_sdk_1.FeeTakerExt.Fees.BASE_1E5, limit_order_sdk_1.Rounding.Ceil);
154
- }
155
- }
156
- exports.FusionExtension = FusionExtension;
157
- FusionExtension.CUSTOM_RECEIVER_FLAG_BIT = 0n;
255
+ ]);
256
+ return FusionExtension;
257
+ }();
258
+ /**
259
+ * Flags for post-interaction data
260
+ * @private
261
+ */ _define_property(FusionExtension, "CUSTOM_RECEIVER_FLAG_BIT", 0n);
158
262
  function parseAmountData(iter) {
159
- const fees = {
160
- integratorFee: limit_order_sdk_1.Bps.fromFraction(Number(iter.nextUint16()), limit_order_sdk_1.FeeTakerExt.Fees.BASE_1E5),
161
- integratorShare: limit_order_sdk_1.Bps.fromFraction(Number(iter.nextUint8()), limit_order_sdk_1.FeeTakerExt.Fees.BASE_1E2),
162
- resolverFee: limit_order_sdk_1.Bps.fromFraction(Number(iter.nextUint16()), limit_order_sdk_1.FeeTakerExt.Fees.BASE_1E5),
163
- whitelistDiscount: limit_order_sdk_1.Bps.fromFraction(Number(limit_order_sdk_1.FeeTakerExt.Fees.BASE_1E2) - Number(iter.nextUint8()), limit_order_sdk_1.FeeTakerExt.Fees.BASE_1E2)
263
+ var fees = {
264
+ integratorFee: _limitordersdk.Bps.fromFraction(Number(iter.nextUint16()), _index1.Fees.BASE_1E5),
265
+ integratorShare: _limitordersdk.Bps.fromFraction(Number(iter.nextUint8()), _index1.Fees.BASE_1E2),
266
+ resolverFee: _limitordersdk.Bps.fromFraction(Number(iter.nextUint16()), _index1.Fees.BASE_1E5),
267
+ whitelistDiscount: _limitordersdk.Bps.fromFraction(Number(_index1.Fees.BASE_1E2) - Number(iter.nextUint8()), // contract uses 1 - discount
268
+ _index1.Fees.BASE_1E2)
164
269
  };
165
270
  return {
166
- fees
271
+ fees: fees
167
272
  };
168
273
  }
169
- //# sourceMappingURL=fusion-extension.js.map
@@ -0,0 +1,78 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", {
3
+ value: true
4
+ });
5
+ var _limitordersdk = require("@1inch/limit-order-sdk");
6
+ var _fusionorder = require("./fusion-order.js");
7
+ var _index = require("./auction-details/index.js");
8
+ var _fusionextension = require("./fusion-extension.js");
9
+ var _index1 = require("./whitelist/index.js");
10
+ var _surplusparams = require("./surplus-params.js");
11
+ describe('FusionExtension', function() {
12
+ it('should decode', function() {
13
+ var extensionContract = new _limitordersdk.Address('0x8273f37417da37c4a6c3995e82cf442f87a25d9c');
14
+ var order = _fusionorder.FusionOrder.new(extensionContract, {
15
+ makerAsset: new _limitordersdk.Address('0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2'),
16
+ takerAsset: new _limitordersdk.Address('0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48'),
17
+ makingAmount: 1000000000000000000n,
18
+ takingAmount: 1420000000n,
19
+ maker: new _limitordersdk.Address('0x00000000219ab540356cbb839cbe05303d7705fa'),
20
+ salt: 10n
21
+ }, {
22
+ auction: new _index.AuctionDetails({
23
+ duration: 180n,
24
+ startTime: 1673548149n,
25
+ initialRateBump: 50000,
26
+ points: [
27
+ {
28
+ coefficient: 20000,
29
+ delay: 12
30
+ }
31
+ ]
32
+ }),
33
+ whitelist: _index1.Whitelist.new(1673548139n, [
34
+ {
35
+ address: new _limitordersdk.Address('0x00000000219ab540356cbb839cbe05303d7705fa'),
36
+ allowFrom: 0n
37
+ }
38
+ ]),
39
+ surplus: _surplusparams.SurplusParams.NO_FEE
40
+ });
41
+ var fusionExtension = _fusionextension.FusionExtension.decode(order.extension.encode());
42
+ expect(fusionExtension).toStrictEqual(order.fusionExtension);
43
+ });
44
+ it('should decode with permit', function() {
45
+ var extensionContract = new _limitordersdk.Address('0x8273f37417da37c4a6c3995e82cf442f87a25d9c');
46
+ var order = _fusionorder.FusionOrder.new(extensionContract, {
47
+ makerAsset: new _limitordersdk.Address('0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2'),
48
+ takerAsset: new _limitordersdk.Address('0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48'),
49
+ makingAmount: 1000000000000000000n,
50
+ takingAmount: 1420000000n,
51
+ maker: new _limitordersdk.Address('0x00000000219ab540356cbb839cbe05303d7705fa'),
52
+ salt: 10n
53
+ }, {
54
+ auction: new _index.AuctionDetails({
55
+ duration: 180n,
56
+ startTime: 1673548149n,
57
+ initialRateBump: 50000,
58
+ points: [
59
+ {
60
+ coefficient: 20000,
61
+ delay: 12
62
+ }
63
+ ]
64
+ }),
65
+ whitelist: _index1.Whitelist.new(1673548139n, [
66
+ {
67
+ address: new _limitordersdk.Address('0x00000000219ab540356cbb839cbe05303d7705fa'),
68
+ allowFrom: 0n
69
+ }
70
+ ]),
71
+ surplus: _surplusparams.SurplusParams.NO_FEE
72
+ }, {
73
+ permit: '0xdeadbeef'
74
+ });
75
+ var fusionExtension = _fusionextension.FusionExtension.decode(order.extension.encode());
76
+ expect(fusionExtension).toStrictEqual(order.fusionExtension);
77
+ });
78
+ });