@1inch/fusion-sdk 0.0.1

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 (239) hide show
  1. package/README.md +28 -0
  2. package/api/fusion-api.d.ts +13 -0
  3. package/api/fusion-api.js +36 -0
  4. package/api/fusion-api.js.map +1 -0
  5. package/api/index.d.ts +4 -0
  6. package/api/index.js +8 -0
  7. package/api/index.js.map +1 -0
  8. package/api/params.d.ts +1 -0
  9. package/api/params.js +27 -0
  10. package/api/params.js.map +1 -0
  11. package/api/quoter/index.d.ts +5 -0
  12. package/api/quoter/index.js +9 -0
  13. package/api/quoter/index.js.map +1 -0
  14. package/api/quoter/preset.d.ts +15 -0
  15. package/api/quoter/preset.js +31 -0
  16. package/api/quoter/preset.js.map +1 -0
  17. package/api/quoter/quote/index.d.ts +3 -0
  18. package/api/quoter/quote/index.js +7 -0
  19. package/api/quoter/quote/index.js.map +1 -0
  20. package/api/quoter/quote/order-params.d.ts +8 -0
  21. package/api/quoter/quote/order-params.js +22 -0
  22. package/api/quoter/quote/order-params.js.map +1 -0
  23. package/api/quoter/quote/quote.d.ts +23 -0
  24. package/api/quoter/quote/quote.js +78 -0
  25. package/api/quoter/quote/quote.js.map +1 -0
  26. package/api/quoter/quote/types.d.ts +5 -0
  27. package/api/quoter/quote/types.js +3 -0
  28. package/api/quoter/quote/types.js.map +1 -0
  29. package/api/quoter/quoter.api.d.ts +11 -0
  30. package/api/quoter/quoter.api.js +30 -0
  31. package/api/quoter/quoter.api.js.map +1 -0
  32. package/api/quoter/quoter.api.spec.d.ts +1 -0
  33. package/api/quoter/quoter.api.spec.js +102 -0
  34. package/api/quoter/quoter.api.spec.js.map +1 -0
  35. package/api/quoter/quoter.request.d.ts +13 -0
  36. package/api/quoter/quoter.request.js +56 -0
  37. package/api/quoter/quoter.request.js.map +1 -0
  38. package/api/quoter/types.d.ts +54 -0
  39. package/api/quoter/types.js +10 -0
  40. package/api/quoter/types.js.map +1 -0
  41. package/api/relayer/index.d.ts +3 -0
  42. package/api/relayer/index.js +7 -0
  43. package/api/relayer/index.js.map +1 -0
  44. package/api/relayer/relayer.api.d.ts +11 -0
  45. package/api/relayer/relayer.api.js +23 -0
  46. package/api/relayer/relayer.api.js.map +1 -0
  47. package/api/relayer/relayer.api.spec.d.ts +1 -0
  48. package/api/relayer/relayer.api.spec.js +85 -0
  49. package/api/relayer/relayer.api.spec.js.map +1 -0
  50. package/api/relayer/relayer.request.d.ts +10 -0
  51. package/api/relayer/relayer.request.js +22 -0
  52. package/api/relayer/relayer.request.js.map +1 -0
  53. package/api/relayer/types.d.ts +11 -0
  54. package/api/relayer/types.js +3 -0
  55. package/api/relayer/types.js.map +1 -0
  56. package/api/types.d.ts +7 -0
  57. package/api/types.js +3 -0
  58. package/api/types.js.map +1 -0
  59. package/auction-calculator/auction-calculator.d.ts +19 -0
  60. package/auction-calculator/auction-calculator.js +71 -0
  61. package/auction-calculator/auction-calculator.js.map +1 -0
  62. package/auction-calculator/auction-calculator.spec.d.ts +1 -0
  63. package/auction-calculator/auction-calculator.spec.js +24 -0
  64. package/auction-calculator/auction-calculator.spec.js.map +1 -0
  65. package/auction-calculator/calc.d.ts +10 -0
  66. package/auction-calculator/calc.js +22 -0
  67. package/auction-calculator/calc.js.map +1 -0
  68. package/auction-calculator/constants.d.ts +1 -0
  69. package/auction-calculator/constants.js +5 -0
  70. package/auction-calculator/constants.js.map +1 -0
  71. package/auction-calculator/index.d.ts +3 -0
  72. package/auction-calculator/index.js +7 -0
  73. package/auction-calculator/index.js.map +1 -0
  74. package/auction-salt/auction-salt.d.ts +11 -0
  75. package/auction-salt/auction-salt.js +40 -0
  76. package/auction-salt/auction-salt.js.map +1 -0
  77. package/auction-salt/auction.salt.spec.d.ts +1 -0
  78. package/auction-salt/auction.salt.spec.js +59 -0
  79. package/auction-salt/auction.salt.spec.js.map +1 -0
  80. package/auction-salt/index.d.ts +3 -0
  81. package/auction-salt/index.js +7 -0
  82. package/auction-salt/index.js.map +1 -0
  83. package/auction-salt/parser/constants.d.ts +10 -0
  84. package/auction-salt/parser/constants.js +14 -0
  85. package/auction-salt/parser/constants.js.map +1 -0
  86. package/auction-salt/parser/index.d.ts +2 -0
  87. package/auction-salt/parser/index.js +6 -0
  88. package/auction-salt/parser/index.js.map +1 -0
  89. package/auction-salt/parser/parser.d.ts +6 -0
  90. package/auction-salt/parser/parser.js +34 -0
  91. package/auction-salt/parser/parser.js.map +1 -0
  92. package/auction-salt/types.d.ts +7 -0
  93. package/auction-salt/types.js +3 -0
  94. package/auction-salt/types.js.map +1 -0
  95. package/auction-suffix/auction-suffix.d.ts +11 -0
  96. package/auction-suffix/auction-suffix.js +38 -0
  97. package/auction-suffix/auction-suffix.js.map +1 -0
  98. package/auction-suffix/auction-suffix.spec.d.ts +1 -0
  99. package/auction-suffix/auction-suffix.spec.js +46 -0
  100. package/auction-suffix/auction-suffix.spec.js.map +1 -0
  101. package/auction-suffix/constants.d.ts +1 -0
  102. package/auction-suffix/constants.js +5 -0
  103. package/auction-suffix/constants.js.map +1 -0
  104. package/auction-suffix/encoder.d.ts +6 -0
  105. package/auction-suffix/encoder.js +45 -0
  106. package/auction-suffix/encoder.js.map +1 -0
  107. package/auction-suffix/index.d.ts +5 -0
  108. package/auction-suffix/index.js +9 -0
  109. package/auction-suffix/index.js.map +1 -0
  110. package/auction-suffix/parser/constants.d.ts +13 -0
  111. package/auction-suffix/parser/constants.js +17 -0
  112. package/auction-suffix/parser/constants.js.map +1 -0
  113. package/auction-suffix/parser/errors.d.ts +2 -0
  114. package/auction-suffix/parser/errors.js +7 -0
  115. package/auction-suffix/parser/errors.js.map +1 -0
  116. package/auction-suffix/parser/index.d.ts +4 -0
  117. package/auction-suffix/parser/index.js +8 -0
  118. package/auction-suffix/parser/index.js.map +1 -0
  119. package/auction-suffix/parser/parser.d.ts +17 -0
  120. package/auction-suffix/parser/parser.js +170 -0
  121. package/auction-suffix/parser/parser.js.map +1 -0
  122. package/auction-suffix/parser/types.d.ts +29 -0
  123. package/auction-suffix/parser/types.js +3 -0
  124. package/auction-suffix/parser/types.js.map +1 -0
  125. package/auction-suffix/types.d.ts +15 -0
  126. package/auction-suffix/types.js +3 -0
  127. package/auction-suffix/types.js.map +1 -0
  128. package/connector/blockchain/blockchain-provider.connector.d.ts +5 -0
  129. package/connector/blockchain/blockchain-provider.connector.js +3 -0
  130. package/connector/blockchain/blockchain-provider.connector.js.map +1 -0
  131. package/connector/blockchain/index.d.ts +3 -0
  132. package/connector/blockchain/index.js +7 -0
  133. package/connector/blockchain/index.js.map +1 -0
  134. package/connector/blockchain/private-key-provider.connector.d.ts +11 -0
  135. package/connector/blockchain/private-key-provider.connector.js +29 -0
  136. package/connector/blockchain/private-key-provider.connector.js.map +1 -0
  137. package/connector/blockchain/private-key-provider.connector.spec.d.ts +1 -0
  138. package/connector/blockchain/private-key-provider.connector.spec.js +48 -0
  139. package/connector/blockchain/private-key-provider.connector.spec.js.map +1 -0
  140. package/connector/blockchain/web3-provider-connector.d.ts +9 -0
  141. package/connector/blockchain/web3-provider-connector.js +28 -0
  142. package/connector/blockchain/web3-provider-connector.js.map +1 -0
  143. package/connector/blockchain/web3-provider.connector.spec.d.ts +1 -0
  144. package/connector/blockchain/web3-provider.connector.spec.js +51 -0
  145. package/connector/blockchain/web3-provider.connector.spec.js.map +1 -0
  146. package/connector/http/axios-provider.connector.d.ts +5 -0
  147. package/connector/http/axios-provider.connector.js +21 -0
  148. package/connector/http/axios-provider.connector.js.map +1 -0
  149. package/connector/http/axios-provider.connector.spec.d.ts +1 -0
  150. package/connector/http/axios-provider.connector.spec.js +33 -0
  151. package/connector/http/axios-provider.connector.spec.js.map +1 -0
  152. package/connector/http/http-provider.connector.d.ts +4 -0
  153. package/connector/http/http-provider.connector.js +3 -0
  154. package/connector/http/http-provider.connector.js.map +1 -0
  155. package/connector/http/index.d.ts +2 -0
  156. package/connector/http/index.js +6 -0
  157. package/connector/http/index.js.map +1 -0
  158. package/connector/index.d.ts +2 -0
  159. package/connector/index.js +6 -0
  160. package/connector/index.js.map +1 -0
  161. package/constants.d.ts +10 -0
  162. package/constants.js +23 -0
  163. package/constants.js.map +1 -0
  164. package/fusion-order/fusion-order.d.ts +9 -0
  165. package/fusion-order/fusion-order.js +18 -0
  166. package/fusion-order/fusion-order.js.map +1 -0
  167. package/fusion-order/fusion-order.spec.d.ts +1 -0
  168. package/fusion-order/fusion-order.spec.js +52 -0
  169. package/fusion-order/fusion-order.spec.js.map +1 -0
  170. package/fusion-order/index.d.ts +1 -0
  171. package/fusion-order/index.js +5 -0
  172. package/fusion-order/index.js.map +1 -0
  173. package/index.d.ts +10 -0
  174. package/index.js +14 -0
  175. package/index.js.map +1 -0
  176. package/limit-order/eip712/domain.d.ts +11 -0
  177. package/limit-order/eip712/domain.js +25 -0
  178. package/limit-order/eip712/domain.js.map +1 -0
  179. package/limit-order/eip712/eip712.types.d.ts +24 -0
  180. package/limit-order/eip712/eip712.types.js +3 -0
  181. package/limit-order/eip712/eip712.types.js.map +1 -0
  182. package/limit-order/eip712/index.d.ts +3 -0
  183. package/limit-order/eip712/index.js +7 -0
  184. package/limit-order/eip712/index.js.map +1 -0
  185. package/limit-order/eip712/order-typed-data-builder.d.ts +6 -0
  186. package/limit-order/eip712/order-typed-data-builder.js +36 -0
  187. package/limit-order/eip712/order-typed-data-builder.js.map +1 -0
  188. package/limit-order/index.d.ts +4 -0
  189. package/limit-order/index.js +8 -0
  190. package/limit-order/index.js.map +1 -0
  191. package/limit-order/interactions-factory.d.ts +3 -0
  192. package/limit-order/interactions-factory.js +10 -0
  193. package/limit-order/interactions-factory.js.map +1 -0
  194. package/limit-order/limit-order.d.ts +27 -0
  195. package/limit-order/limit-order.js +89 -0
  196. package/limit-order/limit-order.js.map +1 -0
  197. package/limit-order/limit-order.spec.d.ts +1 -0
  198. package/limit-order/limit-order.spec.js +196 -0
  199. package/limit-order/limit-order.spec.js.map +1 -0
  200. package/limit-order/parser/constants.d.ts +10 -0
  201. package/limit-order/parser/constants.js +14 -0
  202. package/limit-order/parser/constants.js.map +1 -0
  203. package/limit-order/parser/index.d.ts +3 -0
  204. package/limit-order/parser/index.js +7 -0
  205. package/limit-order/parser/index.js.map +1 -0
  206. package/limit-order/parser/parser.d.ts +2 -0
  207. package/limit-order/parser/parser.js +29 -0
  208. package/limit-order/parser/parser.js.map +1 -0
  209. package/limit-order/parser/types.d.ts +3 -0
  210. package/limit-order/parser/types.js +3 -0
  211. package/limit-order/parser/types.js.map +1 -0
  212. package/limit-order/predicate-factory.d.ts +25 -0
  213. package/limit-order/predicate-factory.js +60 -0
  214. package/limit-order/predicate-factory.js.map +1 -0
  215. package/limit-order/predicate-factory.spec.d.ts +1 -0
  216. package/limit-order/predicate-factory.spec.js +35 -0
  217. package/limit-order/predicate-factory.spec.js.map +1 -0
  218. package/limit-order/types.d.ts +32 -0
  219. package/limit-order/types.js +3 -0
  220. package/limit-order/types.js.map +1 -0
  221. package/limit-order/utils.d.ts +1 -0
  222. package/limit-order/utils.js +8 -0
  223. package/limit-order/utils.js.map +1 -0
  224. package/package.json +80 -0
  225. package/sdk/index.d.ts +2 -0
  226. package/sdk/index.js +6 -0
  227. package/sdk/index.js.map +1 -0
  228. package/sdk/sdk.d.ts +9 -0
  229. package/sdk/sdk.js +70 -0
  230. package/sdk/sdk.js.map +1 -0
  231. package/sdk/types.d.ts +31 -0
  232. package/sdk/types.js +3 -0
  233. package/sdk/types.js.map +1 -0
  234. package/utils.d.ts +6 -0
  235. package/utils.js +41 -0
  236. package/utils.js.map +1 -0
  237. package/validations.d.ts +2 -0
  238. package/validations.js +21 -0
  239. package/validations.js.map +1 -0
@@ -0,0 +1,3 @@
1
+ export * from './auction-salt';
2
+ export * from './types';
3
+ export * from './parser/index';
@@ -0,0 +1,7 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const tslib_1 = require("tslib");
4
+ tslib_1.__exportStar(require("./auction-salt"), exports);
5
+ tslib_1.__exportStar(require("./types"), exports);
6
+ tslib_1.__exportStar(require("./parser/index"), exports);
7
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/auction-salt/index.ts"],"names":[],"mappings":";;;AAAA,yDAA8B;AAC9B,kDAAuB;AACvB,yDAA8B"}
@@ -0,0 +1,10 @@
1
+ /// <reference types="bn.js" />
2
+ export declare const TIME_START_MASK: import("bn.js");
3
+ export declare const DURATION_MASK: import("bn.js");
4
+ export declare const INITIAL_RATE_BUMP_MASK: import("bn.js");
5
+ export declare const FEE_MASK: import("bn.js");
6
+ export declare const SALT_MASK: import("bn.js");
7
+ export declare const TIME_START_SHIFT = 224;
8
+ export declare const DURATION_SHIFT = 200;
9
+ export declare const INITIAL_RATE_BUMP_SHIFT = 176;
10
+ export declare const FEE_SHIFT = 144;
@@ -0,0 +1,14 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.FEE_SHIFT = exports.INITIAL_RATE_BUMP_SHIFT = exports.DURATION_SHIFT = exports.TIME_START_SHIFT = exports.SALT_MASK = exports.FEE_MASK = exports.INITIAL_RATE_BUMP_MASK = exports.DURATION_MASK = exports.TIME_START_MASK = void 0;
4
+ const utils_1 = require("../../utils");
5
+ exports.TIME_START_MASK = (0, utils_1.toBN)('0xFFFFFFFF00000000000000000000000000000000000000000000000000000000');
6
+ exports.DURATION_MASK = (0, utils_1.toBN)('0x00000000FFFFFF00000000000000000000000000000000000000000000000000');
7
+ exports.INITIAL_RATE_BUMP_MASK = (0, utils_1.toBN)('0x00000000000000FFFFFF00000000000000000000000000000000000000000000');
8
+ exports.FEE_MASK = (0, utils_1.toBN)('0x00000000000000000000FFFFFFFF000000000000000000000000000000000000');
9
+ exports.SALT_MASK = (0, utils_1.toBN)('0x0000000000000000000000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF');
10
+ exports.TIME_START_SHIFT = 224; // orderTimeMask 224-255
11
+ exports.DURATION_SHIFT = 200; // durationMask 200-223
12
+ exports.INITIAL_RATE_BUMP_SHIFT = 176; // initialRateMask 176-200
13
+ exports.FEE_SHIFT = 144; // orderFee 144-175
14
+ //# sourceMappingURL=constants.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"constants.js","sourceRoot":"","sources":["../../../src/auction-salt/parser/constants.ts"],"names":[],"mappings":";;;AAAA,uCAAgC;AAEnB,QAAA,eAAe,GAAG,IAAA,YAAI,EAC/B,oEAAoE,CACvE,CAAA;AAEY,QAAA,aAAa,GAAG,IAAA,YAAI,EAC7B,oEAAoE,CACvE,CAAA;AAEY,QAAA,sBAAsB,GAAG,IAAA,YAAI,EACtC,oEAAoE,CACvE,CAAA;AAEY,QAAA,QAAQ,GAAG,IAAA,YAAI,EACxB,oEAAoE,CACvE,CAAA;AAEY,QAAA,SAAS,GAAG,IAAA,YAAI,EACzB,oEAAoE,CACvE,CAAA;AAEY,QAAA,gBAAgB,GAAG,GAAG,CAAA,CAAC,wBAAwB;AAC/C,QAAA,cAAc,GAAG,GAAG,CAAA,CAAC,uBAAuB;AAC5C,QAAA,uBAAuB,GAAG,GAAG,CAAA,CAAC,0BAA0B;AACxD,QAAA,SAAS,GAAG,GAAG,CAAA,CAAC,mBAAmB"}
@@ -0,0 +1,2 @@
1
+ export * from './parser';
2
+ export * from './constants';
@@ -0,0 +1,6 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const tslib_1 = require("tslib");
4
+ tslib_1.__exportStar(require("./parser"), exports);
5
+ tslib_1.__exportStar(require("./constants"), exports);
6
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/auction-salt/parser/index.ts"],"names":[],"mappings":";;;AAAA,mDAAwB;AACxB,sDAA2B"}
@@ -0,0 +1,6 @@
1
+ import { BigNumber } from '@ethersproject/bignumber';
2
+ export declare function getStartTime(salt: string): BigNumber;
3
+ export declare function getDuration(salt: string): BigNumber;
4
+ export declare function getInitialRateBump(salt: string): BigNumber;
5
+ export declare function getFee(salt: string): BigNumber;
6
+ export declare function getSalt(salt: string): BigNumber;
@@ -0,0 +1,34 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.getSalt = exports.getFee = exports.getInitialRateBump = exports.getDuration = exports.getStartTime = void 0;
4
+ const utils_1 = require("../../utils");
5
+ const bignumber_1 = require("@ethersproject/bignumber");
6
+ const constants_1 = require("./constants");
7
+ function getStartTime(salt) {
8
+ const val = (0, utils_1.toBN)(salt).and(constants_1.TIME_START_MASK).shrn(constants_1.TIME_START_SHIFT);
9
+ return bignumber_1.BigNumber.from(val.toString());
10
+ }
11
+ exports.getStartTime = getStartTime;
12
+ function getDuration(salt) {
13
+ const val = (0, utils_1.toBN)(salt).and(constants_1.DURATION_MASK).shrn(constants_1.DURATION_SHIFT);
14
+ return bignumber_1.BigNumber.from(val.toString());
15
+ }
16
+ exports.getDuration = getDuration;
17
+ function getInitialRateBump(salt) {
18
+ const val = (0, utils_1.toBN)(salt)
19
+ .and(constants_1.INITIAL_RATE_BUMP_MASK)
20
+ .shrn(constants_1.INITIAL_RATE_BUMP_SHIFT);
21
+ return bignumber_1.BigNumber.from(val.toString());
22
+ }
23
+ exports.getInitialRateBump = getInitialRateBump;
24
+ function getFee(salt) {
25
+ const val = (0, utils_1.toBN)(salt).and(constants_1.FEE_MASK).shrn(constants_1.FEE_SHIFT);
26
+ return bignumber_1.BigNumber.from(val.toString());
27
+ }
28
+ exports.getFee = getFee;
29
+ function getSalt(salt) {
30
+ const val = (0, utils_1.toBN)(salt).and(constants_1.SALT_MASK);
31
+ return bignumber_1.BigNumber.from(val.toString());
32
+ }
33
+ exports.getSalt = getSalt;
34
+ //# sourceMappingURL=parser.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"parser.js","sourceRoot":"","sources":["../../../src/auction-salt/parser/parser.ts"],"names":[],"mappings":";;;AAAA,uCAAgC;AAChC,wDAAkD;AAClD,2CAUoB;AAEpB,SAAgB,YAAY,CAAC,IAAY;IACrC,MAAM,GAAG,GAAG,IAAA,YAAI,EAAC,IAAI,CAAC,CAAC,GAAG,CAAC,2BAAe,CAAC,CAAC,IAAI,CAAC,4BAAgB,CAAC,CAAA;IAElE,OAAO,qBAAS,CAAC,IAAI,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAC,CAAA;AACzC,CAAC;AAJD,oCAIC;AAED,SAAgB,WAAW,CAAC,IAAY;IACpC,MAAM,GAAG,GAAG,IAAA,YAAI,EAAC,IAAI,CAAC,CAAC,GAAG,CAAC,yBAAa,CAAC,CAAC,IAAI,CAAC,0BAAc,CAAC,CAAA;IAE9D,OAAO,qBAAS,CAAC,IAAI,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAC,CAAA;AACzC,CAAC;AAJD,kCAIC;AAED,SAAgB,kBAAkB,CAAC,IAAY;IAC3C,MAAM,GAAG,GAAG,IAAA,YAAI,EAAC,IAAI,CAAC;SACjB,GAAG,CAAC,kCAAsB,CAAC;SAC3B,IAAI,CAAC,mCAAuB,CAAC,CAAA;IAElC,OAAO,qBAAS,CAAC,IAAI,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAC,CAAA;AACzC,CAAC;AAND,gDAMC;AAED,SAAgB,MAAM,CAAC,IAAY;IAC/B,MAAM,GAAG,GAAG,IAAA,YAAI,EAAC,IAAI,CAAC,CAAC,GAAG,CAAC,oBAAQ,CAAC,CAAC,IAAI,CAAC,qBAAS,CAAC,CAAA;IAEpD,OAAO,qBAAS,CAAC,IAAI,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAC,CAAA;AACzC,CAAC;AAJD,wBAIC;AAED,SAAgB,OAAO,CAAC,IAAY;IAChC,MAAM,GAAG,GAAG,IAAA,YAAI,EAAC,IAAI,CAAC,CAAC,GAAG,CAAC,qBAAS,CAAC,CAAA;IAErC,OAAO,qBAAS,CAAC,IAAI,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAC,CAAA;AACzC,CAAC;AAJD,0BAIC"}
@@ -0,0 +1,7 @@
1
+ export declare type AuctionSaltData = {
2
+ auctionStartTime: number;
3
+ initialRateBump: number;
4
+ duration: number;
5
+ bankFee: string;
6
+ salt?: string;
7
+ };
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/auction-salt/types.ts"],"names":[],"mappings":""}
@@ -0,0 +1,11 @@
1
+ import { AuctionPoint, AuctionWhitelistItem, SettlementSuffixData } from './types';
2
+ export declare class AuctionSuffix {
3
+ readonly points: AuctionPoint[];
4
+ readonly whitelist: AuctionWhitelistItem[];
5
+ readonly publicResolvingDeadline: number;
6
+ readonly takerFeeReceiver: string;
7
+ readonly takerFeeRatio: string;
8
+ constructor(suffix: SettlementSuffixData);
9
+ static decode(interactions: string): AuctionSuffix;
10
+ build(): string;
11
+ }
@@ -0,0 +1,38 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.AuctionSuffix = void 0;
4
+ const utils_1 = require("../utils");
5
+ const constants_1 = require("../constants");
6
+ const encoder_1 = require("./encoder");
7
+ const constants_2 = require("./constants");
8
+ const parser_1 = require("./parser");
9
+ class AuctionSuffix {
10
+ constructor(suffix) {
11
+ this.points = suffix.points;
12
+ this.whitelist = suffix.whitelist;
13
+ this.publicResolvingDeadline =
14
+ suffix.publicResolvingDeadline || (0, utils_1.toSec)(constants_2.NoPublicResolvingDeadline);
15
+ this.takerFeeReceiver = suffix.takerFeeReceiver || constants_1.ZERO_ADDRESS;
16
+ this.takerFeeRatio = suffix.takerFeeRatio || '0';
17
+ }
18
+ static decode(interactions) {
19
+ const suffix = (0, parser_1.parseInteractionsSuffix)(interactions);
20
+ return new AuctionSuffix({
21
+ publicResolvingDeadline: suffix.publicResolvingDeadline,
22
+ points: suffix.points,
23
+ takerFeeRatio: suffix.takerFeeRatio,
24
+ takerFeeReceiver: suffix.takerFeeReceiver,
25
+ whitelist: suffix.whitelist
26
+ });
27
+ }
28
+ build() {
29
+ const auctionParams = (0, encoder_1.encodeAuctionParams)(this.points);
30
+ const whitelist = (0, encoder_1.encodeWhitelist)(this.whitelist);
31
+ const publicResolving = (0, encoder_1.encodePublicResolvingDeadline)(this.publicResolvingDeadline);
32
+ const takingFeeData = (0, encoder_1.encodeTakingFeeData)(this.takerFeeReceiver, this.takerFeeRatio);
33
+ const flags = (0, encoder_1.encodeFlags)(this.whitelist, this.points, takingFeeData);
34
+ return (auctionParams + whitelist + publicResolving + takingFeeData + flags);
35
+ }
36
+ }
37
+ exports.AuctionSuffix = AuctionSuffix;
38
+ //# sourceMappingURL=auction-suffix.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"auction-suffix.js","sourceRoot":"","sources":["../../src/auction-suffix/auction-suffix.ts"],"names":[],"mappings":";;;AAAA,oCAA8B;AAE9B,4CAAyC;AACzC,uCAMkB;AAClB,2CAAqD;AACrD,qCAAgD;AAEhD,MAAa,aAAa;IAWtB,YAAY,MAA4B;QACpC,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC,MAAM,CAAA;QAE3B,IAAI,CAAC,SAAS,GAAG,MAAM,CAAC,SAAS,CAAA;QACjC,IAAI,CAAC,uBAAuB;YACxB,MAAM,CAAC,uBAAuB,IAAI,IAAA,aAAK,EAAC,qCAAyB,CAAC,CAAA;QAEtE,IAAI,CAAC,gBAAgB,GAAG,MAAM,CAAC,gBAAgB,IAAI,wBAAY,CAAA;QAC/D,IAAI,CAAC,aAAa,GAAG,MAAM,CAAC,aAAa,IAAI,GAAG,CAAA;IACpD,CAAC;IAED,MAAM,CAAC,MAAM,CAAC,YAAoB;QAC9B,MAAM,MAAM,GAAG,IAAA,gCAAuB,EAAC,YAAY,CAAC,CAAA;QAEpD,OAAO,IAAI,aAAa,CAAC;YACrB,uBAAuB,EAAE,MAAM,CAAC,uBAAuB;YACvD,MAAM,EAAE,MAAM,CAAC,MAAM;YACrB,aAAa,EAAE,MAAM,CAAC,aAAa;YACnC,gBAAgB,EAAE,MAAM,CAAC,gBAAgB;YACzC,SAAS,EAAE,MAAM,CAAC,SAAS;SAC9B,CAAC,CAAA;IACN,CAAC;IAED,KAAK;QACD,MAAM,aAAa,GAAG,IAAA,6BAAmB,EAAC,IAAI,CAAC,MAAM,CAAC,CAAA;QAEtD,MAAM,SAAS,GAAG,IAAA,yBAAe,EAAC,IAAI,CAAC,SAAS,CAAC,CAAA;QAEjD,MAAM,eAAe,GAAG,IAAA,uCAA6B,EACjD,IAAI,CAAC,uBAAuB,CAC/B,CAAA;QAED,MAAM,aAAa,GAAG,IAAA,6BAAmB,EACrC,IAAI,CAAC,gBAAgB,EACrB,IAAI,CAAC,aAAa,CACrB,CAAA;QAED,MAAM,KAAK,GAAG,IAAA,qBAAW,EAAC,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,MAAM,EAAE,aAAa,CAAC,CAAA;QAErE,OAAO,CACH,aAAa,GAAG,SAAS,GAAG,eAAe,GAAG,aAAa,GAAG,KAAK,CACtE,CAAA;IACL,CAAC;CACJ;AAtDD,sCAsDC"}
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,46 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const auction_suffix_1 = require("./auction-suffix");
4
+ describe('Auction Suffix', () => {
5
+ it('should create suffix with required params', () => {
6
+ const suffix = new auction_suffix_1.AuctionSuffix({
7
+ points: [
8
+ {
9
+ coefficient: 20000,
10
+ delay: 12
11
+ }
12
+ ],
13
+ whitelist: [
14
+ {
15
+ address: '0x00000000219ab540356cbb839cbe05303d7705fa',
16
+ allowance: 0
17
+ }
18
+ ]
19
+ });
20
+ expect(suffix.build()).toBe('000c004e200000000000000000219ab540356cbb839cbe05303d7705faf486570009');
21
+ });
22
+ it('should create suffix with specified public resolving deadline', () => {
23
+ const suffix = new auction_suffix_1.AuctionSuffix({
24
+ points: [
25
+ {
26
+ coefficient: 20000,
27
+ delay: 12
28
+ }
29
+ ],
30
+ whitelist: [
31
+ {
32
+ address: '0x00000000219ab540356cbb839cbe05303d7705fa',
33
+ allowance: 0
34
+ }
35
+ ],
36
+ publicResolvingDeadline: 1673549418
37
+ });
38
+ expect(suffix.build()).toBe('000c004e200000000000000000219ab540356cbb839cbe05303d7705fa63c0566a09');
39
+ });
40
+ it('should decode auction suffix', () => {
41
+ const encodedSuffix = '000c004e200000000000000000219ab540356cbb839cbe05303d7705fa63c0566a09';
42
+ const suffix = auction_suffix_1.AuctionSuffix.decode(encodedSuffix);
43
+ expect(suffix.build()).toBe(encodedSuffix);
44
+ });
45
+ });
46
+ //# sourceMappingURL=auction-suffix.spec.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"auction-suffix.spec.js","sourceRoot":"","sources":["../../src/auction-suffix/auction-suffix.spec.ts"],"names":[],"mappings":";;AAAA,qDAA8C;AAE9C,QAAQ,CAAC,gBAAgB,EAAE,GAAG,EAAE;IAC5B,EAAE,CAAC,2CAA2C,EAAE,GAAG,EAAE;QACjD,MAAM,MAAM,GAAG,IAAI,8BAAa,CAAC;YAC7B,MAAM,EAAE;gBACJ;oBACI,WAAW,EAAE,KAAK;oBAClB,KAAK,EAAE,EAAE;iBACZ;aACJ;YACD,SAAS,EAAE;gBACP;oBACI,OAAO,EAAE,4CAA4C;oBACrD,SAAS,EAAE,CAAC;iBACf;aACJ;SACJ,CAAC,CAAA;QAEF,MAAM,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,IAAI,CACvB,sEAAsE,CACzE,CAAA;IACL,CAAC,CAAC,CAAA;IAEF,EAAE,CAAC,+DAA+D,EAAE,GAAG,EAAE;QACrE,MAAM,MAAM,GAAG,IAAI,8BAAa,CAAC;YAC7B,MAAM,EAAE;gBACJ;oBACI,WAAW,EAAE,KAAK;oBAClB,KAAK,EAAE,EAAE;iBACZ;aACJ;YACD,SAAS,EAAE;gBACP;oBACI,OAAO,EAAE,4CAA4C;oBACrD,SAAS,EAAE,CAAC;iBACf;aACJ;YACD,uBAAuB,EAAE,UAAU;SACtC,CAAC,CAAA;QAEF,MAAM,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,IAAI,CACvB,sEAAsE,CACzE,CAAA;IACL,CAAC,CAAC,CAAA;IAEF,EAAE,CAAC,8BAA8B,EAAE,GAAG,EAAE;QACpC,MAAM,aAAa,GACf,sEAAsE,CAAA;QAE1E,MAAM,MAAM,GAAG,8BAAa,CAAC,MAAM,CAAC,aAAa,CAAC,CAAA;QAElD,MAAM,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,CAAA;IAC9C,CAAC,CAAC,CAAA;AACN,CAAC,CAAC,CAAA"}
@@ -0,0 +1 @@
1
+ export declare const NoPublicResolvingDeadline: Date;
@@ -0,0 +1,5 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.NoPublicResolvingDeadline = void 0;
4
+ exports.NoPublicResolvingDeadline = new Date(4102444800000);
5
+ //# sourceMappingURL=constants.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"constants.js","sourceRoot":"","sources":["../../src/auction-suffix/constants.ts"],"names":[],"mappings":";;;AAAa,QAAA,yBAAyB,GAAG,IAAI,IAAI,CAAC,aAAa,CAAC,CAAA"}
@@ -0,0 +1,6 @@
1
+ import { AuctionPoint, AuctionWhitelistItem } from './types';
2
+ export declare function encodeAuctionParams(points: AuctionPoint[]): string;
3
+ export declare function encodeWhitelist(whitelist: AuctionWhitelistItem[]): string;
4
+ export declare function encodePublicResolvingDeadline(deadline: number): string;
5
+ export declare function encodeTakingFeeData(takerFeeReceiver: string, takerFeeRatio: string): string;
6
+ export declare function encodeFlags(whitelist: AuctionWhitelistItem[], points: AuctionPoint[], takingFeeData: string): string;
@@ -0,0 +1,45 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.encodeFlags = exports.encodeTakingFeeData = exports.encodePublicResolvingDeadline = exports.encodeWhitelist = exports.encodeAuctionParams = void 0;
4
+ const bignumber_1 = require("@ethersproject/bignumber");
5
+ const utils_1 = require("../utils");
6
+ const constants_1 = require("../constants");
7
+ function encodeAuctionParams(points) {
8
+ return points
9
+ .map(({ delay, coefficient }) => delay.toString(16).padStart(4, '0') +
10
+ coefficient.toString(16).padStart(6, '0'))
11
+ .join('');
12
+ }
13
+ exports.encodeAuctionParams = encodeAuctionParams;
14
+ function encodeWhitelist(whitelist) {
15
+ return whitelist
16
+ .map(({ address, allowance }) => allowance.toString(16).padStart(8, '0') + (0, utils_1.trim0x)(address))
17
+ .join('');
18
+ }
19
+ exports.encodeWhitelist = encodeWhitelist;
20
+ function encodePublicResolvingDeadline(deadline) {
21
+ return deadline.toString(16).padStart(8, '0');
22
+ }
23
+ exports.encodePublicResolvingDeadline = encodePublicResolvingDeadline;
24
+ function encodeTakingFeeData(takerFeeReceiver, takerFeeRatio) {
25
+ if (takerFeeReceiver === constants_1.ZERO_ADDRESS || takerFeeRatio === '0') {
26
+ return '';
27
+ }
28
+ return (bignumber_1.BigNumber.from(takerFeeRatio)
29
+ .toHexString()
30
+ .substring(2)
31
+ .padStart(24, '0') + (0, utils_1.trim0x)(takerFeeReceiver));
32
+ }
33
+ exports.encodeTakingFeeData = encodeTakingFeeData;
34
+ function encodeFlags(whitelist, points, takingFeeData) {
35
+ if (points.length > 8) {
36
+ throw new Error('max points count = 8');
37
+ }
38
+ let flags = (whitelist.length << 3) | points.length;
39
+ if (takingFeeData !== '') {
40
+ flags |= 0x80;
41
+ }
42
+ return flags.toString(16).padStart(2, '0');
43
+ }
44
+ exports.encodeFlags = encodeFlags;
45
+ //# sourceMappingURL=encoder.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"encoder.js","sourceRoot":"","sources":["../../src/auction-suffix/encoder.ts"],"names":[],"mappings":";;;AAAA,wDAAkD;AAClD,oCAA+B;AAE/B,4CAAyC;AAEzC,SAAgB,mBAAmB,CAAC,MAAsB;IACtD,OAAO,MAAM;SACR,GAAG,CACA,CAAC,EAAC,KAAK,EAAE,WAAW,EAAC,EAAE,EAAE,CACrB,KAAK,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC;QACnC,WAAW,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAChD;SACA,IAAI,CAAC,EAAE,CAAC,CAAA;AACjB,CAAC;AARD,kDAQC;AAED,SAAgB,eAAe,CAAC,SAAiC;IAC7D,OAAO,SAAS;SACX,GAAG,CACA,CAAC,EAAC,OAAO,EAAE,SAAS,EAAC,EAAE,EAAE,CACrB,SAAS,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,GAAG,IAAA,cAAM,EAAC,OAAO,CAAC,CAChE;SACA,IAAI,CAAC,EAAE,CAAC,CAAA;AACjB,CAAC;AAPD,0CAOC;AAED,SAAgB,6BAA6B,CAAC,QAAgB;IAC1D,OAAO,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAA;AACjD,CAAC;AAFD,sEAEC;AAED,SAAgB,mBAAmB,CAC/B,gBAAwB,EACxB,aAAqB;IAErB,IAAI,gBAAgB,KAAK,wBAAY,IAAI,aAAa,KAAK,GAAG,EAAE;QAC5D,OAAO,EAAE,CAAA;KACZ;IAED,OAAO,CACH,qBAAS,CAAC,IAAI,CAAC,aAAa,CAAC;SACxB,WAAW,EAAE;SACb,SAAS,CAAC,CAAC,CAAC;SACZ,QAAQ,CAAC,EAAE,EAAE,GAAG,CAAC,GAAG,IAAA,cAAM,EAAC,gBAAgB,CAAC,CACpD,CAAA;AACL,CAAC;AAdD,kDAcC;AAED,SAAgB,WAAW,CACvB,SAAiC,EACjC,MAAsB,EACtB,aAAqB;IAErB,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE;QACnB,MAAM,IAAI,KAAK,CAAC,sBAAsB,CAAC,CAAA;KAC1C;IAED,IAAI,KAAK,GAAG,CAAC,SAAS,CAAC,MAAM,IAAI,CAAC,CAAC,GAAG,MAAM,CAAC,MAAM,CAAA;IAEnD,IAAI,aAAa,KAAK,EAAE,EAAE;QACtB,KAAK,IAAI,IAAI,CAAA;KAChB;IAED,OAAO,KAAK,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAA;AAC9C,CAAC;AAhBD,kCAgBC"}
@@ -0,0 +1,5 @@
1
+ export * from './auction-suffix';
2
+ export * from './constants';
3
+ export * from './encoder';
4
+ export * from './types';
5
+ export * from './parser/index';
@@ -0,0 +1,9 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const tslib_1 = require("tslib");
4
+ tslib_1.__exportStar(require("./auction-suffix"), exports);
5
+ tslib_1.__exportStar(require("./constants"), exports);
6
+ tslib_1.__exportStar(require("./encoder"), exports);
7
+ tslib_1.__exportStar(require("./types"), exports);
8
+ tslib_1.__exportStar(require("./parser/index"), exports);
9
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/auction-suffix/index.ts"],"names":[],"mappings":";;;AAAA,2DAAgC;AAChC,sDAA2B;AAC3B,oDAAyB;AACzB,kDAAuB;AACvB,yDAA8B"}
@@ -0,0 +1,13 @@
1
+ export declare const AUCTION_BUMP_LENGTH = 6;
2
+ export declare const AUCTION_DELAY_LENGTH = 4;
3
+ export declare const ADDRESS_LENGTH = 40;
4
+ export declare const ALLOWED_TIMESTAMP_LENGTH = 8;
5
+ export declare const PRIVATE_AUCTION_DEADLINE_LENGTH = 8;
6
+ export declare const TAKER_FEE_RECEIVER_LENGTH = 40;
7
+ export declare const TAKER_FEE_RATIO_LENGTH = 24;
8
+ export declare const FLAGS_LENGTH = 2;
9
+ export declare const HAS_TAKING_FEE_FLAG = 128;
10
+ export declare const RESOLVERS_LENGTH_MASK = 120;
11
+ export declare const RESOLVERS_LENGTH_OFFSET = 3;
12
+ export declare const POINTS_LENGTH_MASK = 7;
13
+ export declare const CONTRACT_TAKER_FEE_PRECISION = 1000000000;
@@ -0,0 +1,17 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.CONTRACT_TAKER_FEE_PRECISION = exports.POINTS_LENGTH_MASK = exports.RESOLVERS_LENGTH_OFFSET = exports.RESOLVERS_LENGTH_MASK = exports.HAS_TAKING_FEE_FLAG = exports.FLAGS_LENGTH = exports.TAKER_FEE_RATIO_LENGTH = exports.TAKER_FEE_RECEIVER_LENGTH = exports.PRIVATE_AUCTION_DEADLINE_LENGTH = exports.ALLOWED_TIMESTAMP_LENGTH = exports.ADDRESS_LENGTH = exports.AUCTION_DELAY_LENGTH = exports.AUCTION_BUMP_LENGTH = void 0;
4
+ exports.AUCTION_BUMP_LENGTH = 6;
5
+ exports.AUCTION_DELAY_LENGTH = 4;
6
+ exports.ADDRESS_LENGTH = 40;
7
+ exports.ALLOWED_TIMESTAMP_LENGTH = 8;
8
+ exports.PRIVATE_AUCTION_DEADLINE_LENGTH = 8;
9
+ exports.TAKER_FEE_RECEIVER_LENGTH = 40;
10
+ exports.TAKER_FEE_RATIO_LENGTH = 24;
11
+ exports.FLAGS_LENGTH = 2;
12
+ exports.HAS_TAKING_FEE_FLAG = 0x80;
13
+ exports.RESOLVERS_LENGTH_MASK = 0x78;
14
+ exports.RESOLVERS_LENGTH_OFFSET = 3;
15
+ exports.POINTS_LENGTH_MASK = 0x07;
16
+ exports.CONTRACT_TAKER_FEE_PRECISION = 1e9;
17
+ //# sourceMappingURL=constants.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"constants.js","sourceRoot":"","sources":["../../../src/auction-suffix/parser/constants.ts"],"names":[],"mappings":";;;AAAa,QAAA,mBAAmB,GAAG,CAAC,CAAA;AACvB,QAAA,oBAAoB,GAAG,CAAC,CAAA;AAExB,QAAA,cAAc,GAAG,EAAE,CAAA;AACnB,QAAA,wBAAwB,GAAG,CAAC,CAAA;AAE5B,QAAA,+BAA+B,GAAG,CAAC,CAAA;AAEnC,QAAA,yBAAyB,GAAG,EAAE,CAAA;AAC9B,QAAA,sBAAsB,GAAG,EAAE,CAAA;AAE3B,QAAA,YAAY,GAAG,CAAC,CAAA;AAEhB,QAAA,mBAAmB,GAAG,IAAI,CAAA;AAC1B,QAAA,qBAAqB,GAAG,IAAI,CAAA;AAC5B,QAAA,uBAAuB,GAAG,CAAC,CAAA;AAC3B,QAAA,kBAAkB,GAAG,IAAI,CAAA;AAEzB,QAAA,4BAA4B,GAAG,GAAG,CAAA"}
@@ -0,0 +1,2 @@
1
+ export declare class BadOrderSuffixError extends Error {
2
+ }
@@ -0,0 +1,7 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.BadOrderSuffixError = void 0;
4
+ class BadOrderSuffixError extends Error {
5
+ }
6
+ exports.BadOrderSuffixError = BadOrderSuffixError;
7
+ //# sourceMappingURL=errors.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"errors.js","sourceRoot":"","sources":["../../../src/auction-suffix/parser/errors.ts"],"names":[],"mappings":";;;AAAA,MAAa,mBAAoB,SAAQ,KAAK;CAAG;AAAjD,kDAAiD"}
@@ -0,0 +1,4 @@
1
+ export * from './constants';
2
+ export * from './parser';
3
+ export * from './types';
4
+ export * from './errors';
@@ -0,0 +1,8 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const tslib_1 = require("tslib");
4
+ tslib_1.__exportStar(require("./constants"), exports);
5
+ tslib_1.__exportStar(require("./parser"), exports);
6
+ tslib_1.__exportStar(require("./types"), exports);
7
+ tslib_1.__exportStar(require("./errors"), exports);
8
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/auction-suffix/parser/index.ts"],"names":[],"mappings":";;;AAAA,sDAA2B;AAC3B,mDAAwB;AACxB,kDAAuB;AACvB,mDAAwB"}
@@ -0,0 +1,17 @@
1
+ import { InteractionAdditionalInfo, InteractionFlags, ParsedAuctionParams, PrivateAuctionDeadline, ResolversWhitelist, TakerFeeData } from './types';
2
+ /**
3
+ * Order.interactions suffix structure:
4
+ * M*(1 + 3 bytes) - auction points coefficients with seconds delays
5
+ * N*(4 + 20 bytes) - resolver with corresponding time limit
6
+ * 4 bytes - public time limit
7
+ * 32 bytes - taking fee (optional if flags has _HAS_TAKING_FEE_FLAG)
8
+ * 1 byte - flags
9
+ * @param interactions
10
+ */
11
+ export declare function parseInteractionsSuffix(interactions: string): InteractionAdditionalInfo;
12
+ export declare function minInteractionsLength(flags: InteractionFlags): number;
13
+ export declare function parseTakingFeeAndReturnRemainingInteractions(flags: InteractionFlags, interactions: string): TakerFeeData;
14
+ export declare function parsePrivateAuctionDeadline(interactions: string): PrivateAuctionDeadline;
15
+ export declare function parseResolversWhitelist(flags: InteractionFlags, interactions: string): ResolversWhitelist;
16
+ export declare function parseAuctionParams(flags: InteractionFlags, interactions: string): ParsedAuctionParams;
17
+ export declare function parseFlags(interactions: string): InteractionFlags;
@@ -0,0 +1,170 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.parseFlags = exports.parseAuctionParams = exports.parseResolversWhitelist = exports.parsePrivateAuctionDeadline = exports.parseTakingFeeAndReturnRemainingInteractions = exports.minInteractionsLength = exports.parseInteractionsSuffix = void 0;
4
+ const constants_1 = require("./constants");
5
+ const bignumber_1 = require("@ethersproject/bignumber");
6
+ const constants_2 = require("../../constants");
7
+ const utils_1 = require("../../utils");
8
+ const errors_1 = require("./errors");
9
+ /**
10
+ * Order.interactions suffix structure:
11
+ * M*(1 + 3 bytes) - auction points coefficients with seconds delays
12
+ * N*(4 + 20 bytes) - resolver with corresponding time limit
13
+ * 4 bytes - public time limit
14
+ * 32 bytes - taking fee (optional if flags has _HAS_TAKING_FEE_FLAG)
15
+ * 1 byte - flags
16
+ * @param interactions
17
+ */
18
+ function parseInteractionsSuffix(interactions) {
19
+ const flags = parseFlags(interactions);
20
+ if (interactions.length < minInteractionsLength(flags)) {
21
+ throw new errors_1.BadOrderSuffixError('wrong interactions length');
22
+ }
23
+ const interactionsWithoutFlags = interactions.slice(0, -constants_1.FLAGS_LENGTH);
24
+ const { takerFeeReceiver, takerFeeRatio, interactions: interactionsNoTakingFee } = parseTakingFeeAndReturnRemainingInteractions(flags, interactionsWithoutFlags);
25
+ const { deadline, interactions: interactionsNoDeadline } = parsePrivateAuctionDeadline(interactionsNoTakingFee);
26
+ const { whitelist, interactions: interactionsWithoutWhitelist } = parseResolversWhitelist(flags, interactionsNoDeadline);
27
+ const { points } = parseAuctionParams(flags, interactionsWithoutWhitelist);
28
+ return {
29
+ whitelist,
30
+ publicResolvingDeadline: deadline,
31
+ takerFeeReceiver,
32
+ takerFeeRatio,
33
+ points
34
+ };
35
+ }
36
+ exports.parseInteractionsSuffix = parseInteractionsSuffix;
37
+ function minInteractionsLength(flags) {
38
+ const auctionPointsLen = flags.pointsCount * (constants_1.AUCTION_DELAY_LENGTH + constants_1.AUCTION_BUMP_LENGTH);
39
+ const whitelistLen = flags.resolversCount * (constants_1.ALLOWED_TIMESTAMP_LENGTH + constants_1.ADDRESS_LENGTH);
40
+ const requiredLength = auctionPointsLen +
41
+ whitelistLen +
42
+ constants_1.PRIVATE_AUCTION_DEADLINE_LENGTH +
43
+ constants_1.FLAGS_LENGTH;
44
+ if (flags.takingFeeEnabled) {
45
+ return (requiredLength + constants_1.TAKER_FEE_RECEIVER_LENGTH + constants_1.TAKER_FEE_RATIO_LENGTH);
46
+ }
47
+ return requiredLength;
48
+ }
49
+ exports.minInteractionsLength = minInteractionsLength;
50
+ function parseTakingFeeAndReturnRemainingInteractions(flags, interactions) {
51
+ if (!flags.takingFeeEnabled) {
52
+ return {
53
+ interactions,
54
+ takerFeeReceiver: constants_2.ZERO_ADDRESS,
55
+ takerFeeRatio: '0'
56
+ };
57
+ }
58
+ const takerFeeDataLen = constants_1.TAKER_FEE_RECEIVER_LENGTH + constants_1.TAKER_FEE_RATIO_LENGTH;
59
+ const takerFeeData = interactions.slice(-takerFeeDataLen);
60
+ const takerFeeReceiverHex = takerFeeData.slice(constants_1.TAKER_FEE_RATIO_LENGTH);
61
+ const takerFeeReceiver = (0, utils_1.add0x)(takerFeeReceiverHex);
62
+ if (takerFeeReceiver === constants_2.ZERO_ADDRESS) {
63
+ throw new errors_1.BadOrderSuffixError('takerFeeReceiver cannot be zero address');
64
+ }
65
+ const takerFeeRateHex = takerFeeData.slice(0, constants_1.TAKER_FEE_RATIO_LENGTH);
66
+ const takerFeeRatio = bignumber_1.BigNumber.from((0, utils_1.add0x)(takerFeeRateHex));
67
+ if (takerFeeRatio.gt(constants_1.CONTRACT_TAKER_FEE_PRECISION)) {
68
+ throw new errors_1.BadOrderSuffixError('takerFeeRatio cannot be > 1e9');
69
+ }
70
+ return {
71
+ interactions: interactions.slice(0, -takerFeeDataLen),
72
+ takerFeeReceiver,
73
+ takerFeeRatio: takerFeeRatio.toString()
74
+ };
75
+ }
76
+ exports.parseTakingFeeAndReturnRemainingInteractions = parseTakingFeeAndReturnRemainingInteractions;
77
+ function parsePrivateAuctionDeadline(interactions) {
78
+ const privateAuctionDeadlineHex = interactions.slice(-constants_1.PRIVATE_AUCTION_DEADLINE_LENGTH);
79
+ const privateAuctionDeadline = Number.parseInt(privateAuctionDeadlineHex, 16);
80
+ if (!privateAuctionDeadline) {
81
+ throw new errors_1.BadOrderSuffixError(`Invalid public resolving deadline in interactions`);
82
+ }
83
+ return {
84
+ deadline: privateAuctionDeadline,
85
+ interactions: interactions.slice(0, -constants_1.PRIVATE_AUCTION_DEADLINE_LENGTH)
86
+ };
87
+ }
88
+ exports.parsePrivateAuctionDeadline = parsePrivateAuctionDeadline;
89
+ function parseResolversWhitelist(flags, interactions) {
90
+ const whitelist = [];
91
+ const allowedTsAndResolverLen = constants_1.ADDRESS_LENGTH + constants_1.ALLOWED_TIMESTAMP_LENGTH;
92
+ const addressesPacked = interactions.slice(-1 * flags.resolversCount * allowedTsAndResolverLen);
93
+ if (addressesPacked.length % allowedTsAndResolverLen) {
94
+ throw new errors_1.BadOrderSuffixError(`Invalid whitelist addresses in interactions`);
95
+ }
96
+ for (let i = 0; i < addressesPacked.length; i += allowedTsAndResolverLen) {
97
+ const tsAndAddress = addressesPacked.slice(i, i + allowedTsAndResolverLen);
98
+ const timestampHex = tsAndAddress.slice(0, constants_1.ALLOWED_TIMESTAMP_LENGTH);
99
+ const address = tsAndAddress.slice(constants_1.ALLOWED_TIMESTAMP_LENGTH);
100
+ const timestamp = Number.parseInt(timestampHex, 16);
101
+ if (timestamp !== 0 && !timestamp) {
102
+ throw new errors_1.BadOrderSuffixError(`Invalid resolver allowance timestamp`);
103
+ }
104
+ whitelist.push({
105
+ address: (0, utils_1.add0x)(address).toLowerCase(),
106
+ allowance: timestamp
107
+ });
108
+ }
109
+ return {
110
+ whitelist,
111
+ interactions: interactions.slice(0, -(flags.resolversCount * allowedTsAndResolverLen))
112
+ };
113
+ }
114
+ exports.parseResolversWhitelist = parseResolversWhitelist;
115
+ function parseAuctionParams(flags, interactions) {
116
+ if (flags.pointsCount === 0) {
117
+ return {
118
+ interactions,
119
+ points: []
120
+ };
121
+ }
122
+ const points = [];
123
+ const auctionParamsLength = constants_1.AUCTION_DELAY_LENGTH + constants_1.AUCTION_BUMP_LENGTH;
124
+ const paramsPacked = interactions.slice(-1 * flags.pointsCount * auctionParamsLength);
125
+ if (paramsPacked.length % auctionParamsLength) {
126
+ throw new errors_1.BadOrderSuffixError(`Invalid auction params in interactions`);
127
+ }
128
+ for (let i = 0; i < paramsPacked.length; i += auctionParamsLength) {
129
+ const durationAndBump = paramsPacked.slice(i, i + auctionParamsLength);
130
+ const durationHex = durationAndBump.slice(0, constants_1.AUCTION_DELAY_LENGTH);
131
+ const bumpHex = durationAndBump.slice(constants_1.AUCTION_DELAY_LENGTH);
132
+ const duration = Number.parseInt(durationHex, 16);
133
+ if (!duration) {
134
+ throw new errors_1.BadOrderSuffixError(`Invalid auction point duration`);
135
+ }
136
+ const bump = Number.parseInt(bumpHex, 16);
137
+ if (!bump) {
138
+ throw new errors_1.BadOrderSuffixError(`Invalid auction point bump`);
139
+ }
140
+ points.push({ delay: duration, coefficient: bump });
141
+ }
142
+ return {
143
+ points,
144
+ interactions: interactions.slice(0, flags.pointsCount * auctionParamsLength)
145
+ };
146
+ }
147
+ exports.parseAuctionParams = parseAuctionParams;
148
+ function parseFlags(interactions) {
149
+ const flagsHex = interactions.slice(-constants_1.FLAGS_LENGTH);
150
+ if (flagsHex.length < constants_1.FLAGS_LENGTH) {
151
+ throw new errors_1.BadOrderSuffixError(`Invalid flags length`);
152
+ }
153
+ const flags = Number.parseInt(flagsHex, 16);
154
+ if (!flags) {
155
+ throw new errors_1.BadOrderSuffixError(`cannot parse flags`);
156
+ }
157
+ const resolversCount = (flags & constants_1.RESOLVERS_LENGTH_MASK) >> constants_1.RESOLVERS_LENGTH_OFFSET;
158
+ if (resolversCount === 0) {
159
+ throw new errors_1.BadOrderSuffixError(`cannot have 0 resolvers`);
160
+ }
161
+ const takingFeeEnabled = (flags & constants_1.HAS_TAKING_FEE_FLAG) !== 0;
162
+ const pointsCount = flags & constants_1.POINTS_LENGTH_MASK;
163
+ return {
164
+ pointsCount,
165
+ takingFeeEnabled,
166
+ resolversCount
167
+ };
168
+ }
169
+ exports.parseFlags = parseFlags;
170
+ //# sourceMappingURL=parser.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"parser.js","sourceRoot":"","sources":["../../../src/auction-suffix/parser/parser.ts"],"names":[],"mappings":"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"}