@1inch/fusion-sdk 0.0.1 → 0.0.3

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 (55) hide show
  1. package/README.md +14 -0
  2. package/abi/AggregationRouterV5.abi.json +1641 -0
  3. package/api/fusion-api.d.ts +5 -0
  4. package/api/fusion-api.js +11 -0
  5. package/api/fusion-api.js.map +1 -1
  6. package/api/orders/index.d.ts +3 -0
  7. package/api/orders/index.js +7 -0
  8. package/api/orders/index.js.map +1 -0
  9. package/api/orders/order-api.spec.d.ts +1 -0
  10. package/api/orders/order-api.spec.js +413 -0
  11. package/api/orders/order-api.spec.js.map +1 -0
  12. package/api/orders/orders.api.d.ts +12 -0
  13. package/api/orders/orders.api.js +49 -0
  14. package/api/orders/orders.api.js.map +1 -0
  15. package/api/orders/orders.request.d.ts +24 -0
  16. package/api/orders/orders.request.js +79 -0
  17. package/api/orders/orders.request.js.map +1 -0
  18. package/api/orders/types.d.ts +66 -0
  19. package/api/orders/types.js +16 -0
  20. package/api/orders/types.js.map +1 -0
  21. package/api/pagination.d.ts +10 -0
  22. package/api/pagination.js +20 -0
  23. package/api/pagination.js.map +1 -0
  24. package/api/pagination.spec.d.ts +1 -0
  25. package/api/pagination.spec.js +28 -0
  26. package/api/pagination.spec.js.map +1 -0
  27. package/api/types.d.ts +10 -0
  28. package/constants.d.ts +1 -0
  29. package/constants.js +6 -1
  30. package/constants.js.map +1 -1
  31. package/package.json +5 -1
  32. package/sdk/sdk.d.ts +4 -0
  33. package/sdk/sdk.js +19 -0
  34. package/sdk/sdk.js.map +1 -1
  35. package/settlement/encoders/constants.d.ts +1 -0
  36. package/settlement/encoders/constants.js +5 -0
  37. package/settlement/encoders/constants.js.map +1 -0
  38. package/settlement/encoders/fill-order.encoder.d.ts +2 -0
  39. package/settlement/encoders/fill-order.encoder.js +17 -0
  40. package/settlement/encoders/fill-order.encoder.js.map +1 -0
  41. package/settlement/encoders/settlement.encoder.d.ts +4 -0
  42. package/settlement/encoders/settlement.encoder.js +26 -0
  43. package/settlement/encoders/settlement.encoder.js.map +1 -0
  44. package/settlement/settlement.d.ts +7 -0
  45. package/settlement/settlement.js +26 -0
  46. package/settlement/settlement.js.map +1 -0
  47. package/settlement/settlement.spec.d.ts +1 -0
  48. package/settlement/settlement.spec.js +61 -0
  49. package/settlement/settlement.spec.js.map +1 -0
  50. package/settlement/signature-patcher.d.ts +1 -0
  51. package/settlement/signature-patcher.js +29 -0
  52. package/settlement/signature-patcher.js.map +1 -0
  53. package/settlement/types.d.ts +16 -0
  54. package/settlement/types.js +3 -0
  55. package/settlement/types.js.map +1 -0
@@ -0,0 +1,79 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.OrdersByMakerRequest = exports.OrderStatusRequest = exports.ActiveOrdersRequest = void 0;
4
+ const tslib_1 = require("tslib");
5
+ const validations_1 = require("../../validations");
6
+ const web3_1 = tslib_1.__importDefault(require("web3"));
7
+ const pagination_1 = require("../pagination");
8
+ class ActiveOrdersRequest {
9
+ constructor(params = {}) {
10
+ this.pagination = new pagination_1.PaginationRequest(params.page, params.limit);
11
+ }
12
+ static new(params) {
13
+ return new ActiveOrdersRequest(params);
14
+ }
15
+ validate() {
16
+ const res = this.pagination.validate();
17
+ if (res) {
18
+ return res;
19
+ }
20
+ return null;
21
+ }
22
+ build() {
23
+ return {
24
+ page: this.pagination.page,
25
+ limit: this.pagination.limit
26
+ };
27
+ }
28
+ }
29
+ exports.ActiveOrdersRequest = ActiveOrdersRequest;
30
+ class OrderStatusRequest {
31
+ constructor(params) {
32
+ this.orderHash = params.orderHash;
33
+ }
34
+ static new(params) {
35
+ return new OrderStatusRequest(params);
36
+ }
37
+ validate() {
38
+ if (this.orderHash.length !== 66) {
39
+ return `orderHash length should be equals 66`;
40
+ }
41
+ if (!web3_1.default.utils.isHex(this.orderHash)) {
42
+ return `orderHash have to be hex`;
43
+ }
44
+ return null;
45
+ }
46
+ build() {
47
+ return {
48
+ orderHash: this.orderHash
49
+ };
50
+ }
51
+ }
52
+ exports.OrderStatusRequest = OrderStatusRequest;
53
+ class OrdersByMakerRequest {
54
+ constructor(params) {
55
+ this.address = params.address;
56
+ this.pagination = new pagination_1.PaginationRequest(params.page, params.limit);
57
+ }
58
+ static new(params) {
59
+ return new OrdersByMakerRequest(params);
60
+ }
61
+ validate() {
62
+ const res = this.pagination.validate();
63
+ if (res) {
64
+ return res;
65
+ }
66
+ if (!(0, validations_1.isValidAddress)(this.address)) {
67
+ return `${this.address} is invalid address`;
68
+ }
69
+ return null;
70
+ }
71
+ buildQueryParams() {
72
+ return {
73
+ limit: this.pagination.limit,
74
+ page: this.pagination.page
75
+ };
76
+ }
77
+ }
78
+ exports.OrdersByMakerRequest = OrdersByMakerRequest;
79
+ //# sourceMappingURL=orders.request.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"orders.request.js","sourceRoot":"","sources":["../../../src/api/orders/orders.request.ts"],"names":[],"mappings":";;;;AAAA,mDAAgD;AAMhD,wDAAuB;AACvB,8CAAiE;AAEjE,MAAa,mBAAmB;IAG5B,YAAY,SAAoC,EAAE;QAC9C,IAAI,CAAC,UAAU,GAAG,IAAI,8BAAiB,CAAC,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC,KAAK,CAAC,CAAA;IACtE,CAAC;IAED,MAAM,CAAC,GAAG,CAAC,MAAkC;QACzC,OAAO,IAAI,mBAAmB,CAAC,MAAM,CAAC,CAAA;IAC1C,CAAC;IAED,QAAQ;QACJ,MAAM,GAAG,GAAG,IAAI,CAAC,UAAU,CAAC,QAAQ,EAAE,CAAA;QAEtC,IAAI,GAAG,EAAE;YACL,OAAO,GAAG,CAAA;SACb;QAED,OAAO,IAAI,CAAA;IACf,CAAC;IAED,KAAK;QACD,OAAO;YACH,IAAI,EAAE,IAAI,CAAC,UAAU,CAAC,IAAI;YAC1B,KAAK,EAAE,IAAI,CAAC,UAAU,CAAC,KAAK;SAC/B,CAAA;IACL,CAAC;CACJ;AA3BD,kDA2BC;AAED,MAAa,kBAAkB;IAG3B,YAAY,MAAyB;QACjC,IAAI,CAAC,SAAS,GAAG,MAAM,CAAC,SAAS,CAAA;IACrC,CAAC;IAED,MAAM,CAAC,GAAG,CAAC,MAAyB;QAChC,OAAO,IAAI,kBAAkB,CAAC,MAAM,CAAC,CAAA;IACzC,CAAC;IAED,QAAQ;QACJ,IAAI,IAAI,CAAC,SAAS,CAAC,MAAM,KAAK,EAAE,EAAE;YAC9B,OAAO,sCAAsC,CAAA;SAChD;QAED,IAAI,CAAC,cAAI,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE;YACnC,OAAO,0BAA0B,CAAA;SACpC;QAED,OAAO,IAAI,CAAA;IACf,CAAC;IAED,KAAK;QACD,OAAO;YACH,SAAS,EAAE,IAAI,CAAC,SAAS;SAC5B,CAAA;IACL,CAAC;CACJ;AA5BD,gDA4BC;AAED,MAAa,oBAAoB;IAK7B,YAAY,MAA2B;QACnC,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC,OAAO,CAAA;QAC7B,IAAI,CAAC,UAAU,GAAG,IAAI,8BAAiB,CAAC,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC,KAAK,CAAC,CAAA;IACtE,CAAC;IAED,MAAM,CAAC,GAAG,CAAC,MAA2B;QAClC,OAAO,IAAI,oBAAoB,CAAC,MAAM,CAAC,CAAA;IAC3C,CAAC;IAED,QAAQ;QACJ,MAAM,GAAG,GAAG,IAAI,CAAC,UAAU,CAAC,QAAQ,EAAE,CAAA;QAEtC,IAAI,GAAG,EAAE;YACL,OAAO,GAAG,CAAA;SACb;QAED,IAAI,CAAC,IAAA,4BAAc,EAAC,IAAI,CAAC,OAAO,CAAC,EAAE;YAC/B,OAAO,GAAG,IAAI,CAAC,OAAO,qBAAqB,CAAA;SAC9C;QAED,OAAO,IAAI,CAAA;IACf,CAAC;IAED,gBAAgB;QACZ,OAAO;YACH,KAAK,EAAE,IAAI,CAAC,UAAU,CAAC,KAAK;YAC5B,IAAI,EAAE,IAAI,CAAC,UAAU,CAAC,IAAI;SAC7B,CAAA;IACL,CAAC;CACJ;AAlCD,oDAkCC"}
@@ -0,0 +1,66 @@
1
+ import { LimitOrderV3Struct } from '../../limit-order';
2
+ import { NetworkEnum } from '../../constants';
3
+ import { PaginationOutput } from '../types';
4
+ import { AuctionPoint } from '../quoter';
5
+ import { PaginationParams } from '../pagination';
6
+ export declare type OrdersApiConfig = {
7
+ network: NetworkEnum;
8
+ url: string;
9
+ };
10
+ export declare type ActiveOrdersRequestParams = PaginationParams;
11
+ export declare type ActiveOrder = {
12
+ orderHash: string;
13
+ signature: string;
14
+ deadline: string;
15
+ auctionStartDate: string;
16
+ auctionEndDate: string;
17
+ order: LimitOrderV3Struct;
18
+ };
19
+ export declare type ActiveOrdersResponse = PaginationOutput<ActiveOrder>;
20
+ export declare type OrderStatusParams = {
21
+ orderHash: string;
22
+ };
23
+ export declare enum OrderStatus {
24
+ Pending = "pending",
25
+ Filled = "filled",
26
+ FalsePredicate = "false-predicate",
27
+ NotEnoughBalanceOrAllowance = "not-enough-balance-or-allowance",
28
+ Expired = "expired",
29
+ PartiallyFilled = "partially-filled",
30
+ WrongPermit = "wrong-permit",
31
+ Cancelled = "cancelled",
32
+ InvalidSignature = "invalid-signature"
33
+ }
34
+ export declare type Fill = {
35
+ txHash: string;
36
+ filledMakerAmount: string;
37
+ filledAuctionTakerAmount: string;
38
+ };
39
+ export declare type OrderStatusResponse = {
40
+ status: OrderStatus;
41
+ order: LimitOrderV3Struct;
42
+ points: AuctionPoint[] | null;
43
+ fills: Fill[];
44
+ auctionStartDate: number;
45
+ auctionDuration: number;
46
+ initialRateBump: number;
47
+ isNativeCurrency: boolean;
48
+ };
49
+ export declare type OrdersByMakerParams = {
50
+ address: string;
51
+ } & PaginationParams;
52
+ export declare type OrderFillsByMakerOutput = {
53
+ orderHash: string;
54
+ status: OrderStatus;
55
+ makerAsset: string;
56
+ makerAmount: string;
57
+ takerAsset: string;
58
+ cancelTx: string | null;
59
+ fills: Fill[];
60
+ points: AuctionPoint[] | null;
61
+ auctionStartDate: number;
62
+ auctionDuration: number;
63
+ initialRateBump: number;
64
+ isNativeCurrency: boolean;
65
+ };
66
+ export declare type OrdersByMakerResponse = PaginationOutput<OrderFillsByMakerOutput>;
@@ -0,0 +1,16 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.OrderStatus = void 0;
4
+ var OrderStatus;
5
+ (function (OrderStatus) {
6
+ OrderStatus["Pending"] = "pending";
7
+ OrderStatus["Filled"] = "filled";
8
+ OrderStatus["FalsePredicate"] = "false-predicate";
9
+ OrderStatus["NotEnoughBalanceOrAllowance"] = "not-enough-balance-or-allowance";
10
+ OrderStatus["Expired"] = "expired";
11
+ OrderStatus["PartiallyFilled"] = "partially-filled";
12
+ OrderStatus["WrongPermit"] = "wrong-permit";
13
+ OrderStatus["Cancelled"] = "cancelled";
14
+ OrderStatus["InvalidSignature"] = "invalid-signature";
15
+ })(OrderStatus = exports.OrderStatus || (exports.OrderStatus = {}));
16
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/api/orders/types.ts"],"names":[],"mappings":";;;AA4BA,IAAY,WAUX;AAVD,WAAY,WAAW;IACnB,kCAAmB,CAAA;IACnB,gCAAiB,CAAA;IACjB,iDAAkC,CAAA;IAClC,8EAA+D,CAAA;IAC/D,kCAAmB,CAAA;IACnB,mDAAoC,CAAA;IACpC,2CAA4B,CAAA;IAC5B,sCAAuB,CAAA;IACvB,qDAAsC,CAAA;AAC1C,CAAC,EAVW,WAAW,GAAX,mBAAW,KAAX,mBAAW,QAUtB"}
@@ -0,0 +1,10 @@
1
+ export declare type PaginationParams = {
2
+ page?: number;
3
+ limit?: number;
4
+ };
5
+ export declare class PaginationRequest {
6
+ page: number | undefined;
7
+ limit: number | undefined;
8
+ constructor(page: number | undefined, limit: number | undefined);
9
+ validate(): string | null;
10
+ }
@@ -0,0 +1,20 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.PaginationRequest = void 0;
4
+ class PaginationRequest {
5
+ constructor(page, limit) {
6
+ this.page = page;
7
+ this.limit = limit;
8
+ }
9
+ validate() {
10
+ if (this.limit != null && (this.limit < 1 || this.limit > 500)) {
11
+ return 'limit should be in range between 1 and 500';
12
+ }
13
+ if (this.page != null && this.page < 1) {
14
+ return `page should be >= 1`;
15
+ }
16
+ return null;
17
+ }
18
+ }
19
+ exports.PaginationRequest = PaginationRequest;
20
+ //# sourceMappingURL=pagination.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pagination.js","sourceRoot":"","sources":["../../src/api/pagination.ts"],"names":[],"mappings":";;;AAKA,MAAa,iBAAiB;IAK1B,YAAY,IAAwB,EAAE,KAAyB;QAC3D,IAAI,CAAC,IAAI,GAAG,IAAI,CAAA;QAChB,IAAI,CAAC,KAAK,GAAG,KAAK,CAAA;IACtB,CAAC;IAED,QAAQ;QACJ,IAAI,IAAI,CAAC,KAAK,IAAI,IAAI,IAAI,CAAC,IAAI,CAAC,KAAK,GAAG,CAAC,IAAI,IAAI,CAAC,KAAK,GAAG,GAAG,CAAC,EAAE;YAC5D,OAAO,4CAA4C,CAAA;SACtD;QAED,IAAI,IAAI,CAAC,IAAI,IAAI,IAAI,IAAI,IAAI,CAAC,IAAI,GAAG,CAAC,EAAE;YACpC,OAAO,qBAAqB,CAAA;SAC/B;QAED,OAAO,IAAI,CAAA;IACf,CAAC;CACJ;AArBD,8CAqBC"}
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,28 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const pagination_1 = require("./pagination");
4
+ describe(__filename, () => {
5
+ describe('validate', () => {
6
+ it('should return null for nulls', () => {
7
+ const request = new pagination_1.PaginationRequest(undefined, undefined);
8
+ expect(request.validate()).toBe(null);
9
+ });
10
+ it('should return error for limit < 1', () => {
11
+ const request = new pagination_1.PaginationRequest(undefined, 0);
12
+ expect(request.validate()).toBe('limit should be in range between 1 and 500');
13
+ });
14
+ it('should return error for limit > 500', () => {
15
+ const request = new pagination_1.PaginationRequest(undefined, 501);
16
+ expect(request.validate()).toBe('limit should be in range between 1 and 500');
17
+ });
18
+ it('should return error for page < 1', () => {
19
+ const request = new pagination_1.PaginationRequest(0, undefined);
20
+ expect(request.validate()).toBe('page should be >= 1');
21
+ });
22
+ it('should return null for valid inputs', () => {
23
+ const request = new pagination_1.PaginationRequest(1, 10);
24
+ expect(request.validate()).toBe(null);
25
+ });
26
+ });
27
+ });
28
+ //# sourceMappingURL=pagination.spec.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pagination.spec.js","sourceRoot":"","sources":["../../src/api/pagination.spec.ts"],"names":[],"mappings":";;AAAA,6CAA8C;AAE9C,QAAQ,CAAC,UAAU,EAAE,GAAG,EAAE;IACtB,QAAQ,CAAC,UAAU,EAAE,GAAG,EAAE;QACtB,EAAE,CAAC,8BAA8B,EAAE,GAAG,EAAE;YACpC,MAAM,OAAO,GAAG,IAAI,8BAAiB,CAAC,SAAS,EAAE,SAAS,CAAC,CAAA;YAC3D,MAAM,CAAC,OAAO,CAAC,QAAQ,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;QACzC,CAAC,CAAC,CAAA;QAEF,EAAE,CAAC,mCAAmC,EAAE,GAAG,EAAE;YACzC,MAAM,OAAO,GAAG,IAAI,8BAAiB,CAAC,SAAS,EAAE,CAAC,CAAC,CAAA;YACnD,MAAM,CAAC,OAAO,CAAC,QAAQ,EAAE,CAAC,CAAC,IAAI,CAC3B,4CAA4C,CAC/C,CAAA;QACL,CAAC,CAAC,CAAA;QAEF,EAAE,CAAC,qCAAqC,EAAE,GAAG,EAAE;YAC3C,MAAM,OAAO,GAAG,IAAI,8BAAiB,CAAC,SAAS,EAAE,GAAG,CAAC,CAAA;YACrD,MAAM,CAAC,OAAO,CAAC,QAAQ,EAAE,CAAC,CAAC,IAAI,CAC3B,4CAA4C,CAC/C,CAAA;QACL,CAAC,CAAC,CAAA;QAEF,EAAE,CAAC,kCAAkC,EAAE,GAAG,EAAE;YACxC,MAAM,OAAO,GAAG,IAAI,8BAAiB,CAAC,CAAC,EAAE,SAAS,CAAC,CAAA;YACnD,MAAM,CAAC,OAAO,CAAC,QAAQ,EAAE,CAAC,CAAC,IAAI,CAAC,qBAAqB,CAAC,CAAA;QAC1D,CAAC,CAAC,CAAA;QAEF,EAAE,CAAC,qCAAqC,EAAE,GAAG,EAAE;YAC3C,MAAM,OAAO,GAAG,IAAI,8BAAiB,CAAC,CAAC,EAAE,EAAE,CAAC,CAAA;YAC5C,MAAM,CAAC,OAAO,CAAC,QAAQ,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;QACzC,CAAC,CAAC,CAAA;IACN,CAAC,CAAC,CAAA;AACN,CAAC,CAAC,CAAA"}
package/api/types.d.ts CHANGED
@@ -5,3 +5,13 @@ export declare type FusionApiConfig = {
5
5
  network: NetworkEnum;
6
6
  httpProvider?: HttpProviderConnector;
7
7
  };
8
+ export declare type PaginationMeta = {
9
+ totalItems: number;
10
+ itemsPerPage: number;
11
+ totalPages: number;
12
+ currentPage: number;
13
+ };
14
+ export declare type PaginationOutput<T extends Record<string, any> = Record<string, any>> = {
15
+ meta: PaginationMeta;
16
+ items: T[];
17
+ };
package/constants.d.ts CHANGED
@@ -8,3 +8,4 @@ export declare enum NetworkEnum {
8
8
  }
9
9
  export declare const WRAPPER_ADDRESS_MAP: Record<NetworkEnum, string>;
10
10
  export declare const UNWRAPPER_CONTRACT_ADDRESS_MAP: Record<NetworkEnum, string>;
11
+ export declare const SETTLEMENT_CONTRACT_ADDRESS_MAP: Record<NetworkEnum, string>;
package/constants.js CHANGED
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.UNWRAPPER_CONTRACT_ADDRESS_MAP = exports.WRAPPER_ADDRESS_MAP = exports.NetworkEnum = exports.ZX = exports.ZERO_ADDRESS = exports.NATIVE_CURRENCY = void 0;
3
+ exports.SETTLEMENT_CONTRACT_ADDRESS_MAP = exports.UNWRAPPER_CONTRACT_ADDRESS_MAP = exports.WRAPPER_ADDRESS_MAP = exports.NetworkEnum = exports.ZX = exports.ZERO_ADDRESS = exports.NATIVE_CURRENCY = void 0;
4
4
  exports.NATIVE_CURRENCY = '0xeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee';
5
5
  exports.ZERO_ADDRESS = '0x0000000000000000000000000000000000000000';
6
6
  exports.ZX = '0x';
@@ -20,4 +20,9 @@ exports.UNWRAPPER_CONTRACT_ADDRESS_MAP = {
20
20
  [NetworkEnum.BINANCE]: '0x0eee00137d807a461702e9e0640c599de663e7e4',
21
21
  [NetworkEnum.POLYGON]: '0x18d410f651289bb978fc32f90d2d7e608f4f4560'
22
22
  };
23
+ exports.SETTLEMENT_CONTRACT_ADDRESS_MAP = {
24
+ [NetworkEnum.ETHEREUM]: '0xa88800cd213da5ae406ce248380802bd53b47647',
25
+ [NetworkEnum.BINANCE]: '0x1d0ae300eec4093cee4367c00b228d10a5c7ac63',
26
+ [NetworkEnum.POLYGON]: '0x1e8ae092651e7b14e4d0f93611267c5be19b8b9f'
27
+ };
23
28
  //# sourceMappingURL=constants.js.map
package/constants.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"constants.js","sourceRoot":"","sources":["../src/constants.ts"],"names":[],"mappings":";;;AAAa,QAAA,eAAe,GAAG,4CAA4C,CAAA;AAC9D,QAAA,YAAY,GAAG,4CAA4C,CAAA;AAC3D,QAAA,EAAE,GAAG,IAAI,CAAA;AAEtB,IAAY,WAIX;AAJD,WAAY,WAAW;IACnB,qDAAY,CAAA;IACZ,qDAAa,CAAA;IACb,oDAAY,CAAA;AAChB,CAAC,EAJW,WAAW,GAAX,mBAAW,KAAX,mBAAW,QAItB;AAEY,QAAA,mBAAmB,GAAgC;IAC5D,CAAC,WAAW,CAAC,QAAQ,CAAC,EAAE,4CAA4C;IACpE,CAAC,WAAW,CAAC,OAAO,CAAC,EAAE,4CAA4C;IACnE,CAAC,WAAW,CAAC,OAAO,CAAC,EAAE,4CAA4C;CACtE,CAAA;AAEY,QAAA,8BAA8B,GAAgC;IACvE,CAAC,WAAW,CAAC,QAAQ,CAAC,EAAE,4CAA4C;IACpE,CAAC,WAAW,CAAC,OAAO,CAAC,EAAE,4CAA4C;IACnE,CAAC,WAAW,CAAC,OAAO,CAAC,EAAE,4CAA4C;CACtE,CAAA"}
1
+ {"version":3,"file":"constants.js","sourceRoot":"","sources":["../src/constants.ts"],"names":[],"mappings":";;;AAAa,QAAA,eAAe,GAAG,4CAA4C,CAAA;AAC9D,QAAA,YAAY,GAAG,4CAA4C,CAAA;AAC3D,QAAA,EAAE,GAAG,IAAI,CAAA;AAEtB,IAAY,WAIX;AAJD,WAAY,WAAW;IACnB,qDAAY,CAAA;IACZ,qDAAa,CAAA;IACb,oDAAY,CAAA;AAChB,CAAC,EAJW,WAAW,GAAX,mBAAW,KAAX,mBAAW,QAItB;AAEY,QAAA,mBAAmB,GAAgC;IAC5D,CAAC,WAAW,CAAC,QAAQ,CAAC,EAAE,4CAA4C;IACpE,CAAC,WAAW,CAAC,OAAO,CAAC,EAAE,4CAA4C;IACnE,CAAC,WAAW,CAAC,OAAO,CAAC,EAAE,4CAA4C;CACtE,CAAA;AAEY,QAAA,8BAA8B,GAAgC;IACvE,CAAC,WAAW,CAAC,QAAQ,CAAC,EAAE,4CAA4C;IACpE,CAAC,WAAW,CAAC,OAAO,CAAC,EAAE,4CAA4C;IACnE,CAAC,WAAW,CAAC,OAAO,CAAC,EAAE,4CAA4C;CACtE,CAAA;AAEY,QAAA,+BAA+B,GAAgC;IACxE,CAAC,WAAW,CAAC,QAAQ,CAAC,EAAE,4CAA4C;IACpE,CAAC,WAAW,CAAC,OAAO,CAAC,EAAE,4CAA4C;IACnE,CAAC,WAAW,CAAC,OAAO,CAAC,EAAE,4CAA4C;CACtE,CAAA"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@1inch/fusion-sdk",
3
- "version": "0.0.1",
3
+ "version": "0.0.3",
4
4
  "description": "1inch Fusion Mode SDK",
5
5
  "private": false,
6
6
  "main": "index.js",
@@ -76,5 +76,9 @@
76
76
  "*.{js,ts}": [
77
77
  "yarn run lint"
78
78
  ]
79
+ },
80
+ "volta": {
81
+ "node": "16.19.0",
82
+ "yarn": "1.22.17"
79
83
  }
80
84
  }
package/sdk/sdk.d.ts CHANGED
@@ -1,9 +1,13 @@
1
1
  import { FusionApi, Quote } from '../api';
2
2
  import { FusionSDKConfigParams, OrderInfo, OrderParams, QuoteParams } from './types';
3
+ import { ActiveOrdersRequestParams, ActiveOrdersResponse, OrdersByMakerParams, OrdersByMakerResponse, OrderStatusResponse } from '../api/orders';
3
4
  export declare class FusionSDK {
4
5
  private readonly config;
5
6
  readonly api: FusionApi;
6
7
  constructor(config: FusionSDKConfigParams);
8
+ getActiveOrders({ page, limit }?: ActiveOrdersRequestParams): Promise<ActiveOrdersResponse>;
9
+ getOrderStatus(orderHash: string): Promise<OrderStatusResponse>;
10
+ getOrdersByMaker({ limit, page, address }: OrdersByMakerParams): Promise<OrdersByMakerResponse>;
7
11
  getQuote(params: QuoteParams): Promise<Quote>;
8
12
  placeOrder(params: OrderParams): Promise<OrderInfo>;
9
13
  }
package/sdk/sdk.js CHANGED
@@ -5,6 +5,7 @@ const tslib_1 = require("tslib");
5
5
  const api_1 = require("../api");
6
6
  const constants_1 = require("../constants");
7
7
  const limit_order_1 = require("../limit-order");
8
+ const orders_1 = require("../api/orders");
8
9
  class FusionSDK {
9
10
  constructor(config) {
10
11
  this.config = config;
@@ -14,6 +15,24 @@ class FusionSDK {
14
15
  httpProvider: config.httpProvider
15
16
  });
16
17
  }
18
+ getActiveOrders({ page, limit } = {}) {
19
+ return tslib_1.__awaiter(this, void 0, void 0, function* () {
20
+ const request = orders_1.ActiveOrdersRequest.new({ page, limit });
21
+ return this.api.getActiveOrders(request);
22
+ });
23
+ }
24
+ getOrderStatus(orderHash) {
25
+ return tslib_1.__awaiter(this, void 0, void 0, function* () {
26
+ const request = orders_1.OrderStatusRequest.new({ orderHash });
27
+ return this.api.getOrderStatus(request);
28
+ });
29
+ }
30
+ getOrdersByMaker({ limit, page, address }) {
31
+ return tslib_1.__awaiter(this, void 0, void 0, function* () {
32
+ const request = orders_1.OrdersByMakerRequest.new({ limit, page, address });
33
+ return this.api.getOrdersByMaker(request);
34
+ });
35
+ }
17
36
  getQuote(params) {
18
37
  return tslib_1.__awaiter(this, void 0, void 0, function* () {
19
38
  const request = api_1.QuoterRequest.new({
package/sdk/sdk.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"sdk.js","sourceRoot":"","sources":["../../src/sdk/sdk.ts"],"names":[],"mappings":";;;;AAAA,gCAAsE;AAOtE,4CAAyC;AACzC,gDAAoD;AAEpD,MAAa,SAAS;IAGlB,YAA6B,MAA6B;QAA7B,WAAM,GAAN,MAAM,CAAuB;QACtD,IAAI,CAAC,GAAG,GAAG,eAAS,CAAC,GAAG,CAAC;YACrB,GAAG,EAAE,MAAM,CAAC,GAAG;YACf,OAAO,EAAE,MAAM,CAAC,OAAO;YACvB,YAAY,EAAE,MAAM,CAAC,YAAY;SACpC,CAAC,CAAA;IACN,CAAC;IAEK,QAAQ,CAAC,MAAmB;;YAC9B,MAAM,OAAO,GAAG,mBAAa,CAAC,GAAG,CAAC;gBAC9B,gBAAgB,EAAE,MAAM,CAAC,gBAAgB;gBACzC,cAAc,EAAE,MAAM,CAAC,cAAc;gBACrC,MAAM,EAAE,MAAM,CAAC,MAAM;gBACrB,aAAa,EAAE,wBAAY;gBAC3B,MAAM,EAAE,MAAM,CAAC,MAAM;gBACrB,cAAc,EAAE,KAAK;aACxB,CAAC,CAAA;YAEF,OAAO,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAA;QACrC,CAAC;KAAA;IAEK,UAAU,CAAC,MAAmB;;YAChC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,kBAAkB,EAAE;gBACjC,MAAM,IAAI,KAAK,CAAC,0CAA0C,CAAC,CAAA;aAC9D;YAED,MAAM,aAAa,GAAG,mBAAa,CAAC,GAAG,CAAC;gBACpC,gBAAgB,EAAE,MAAM,CAAC,gBAAgB;gBACzC,cAAc,EAAE,MAAM,CAAC,cAAc;gBACrC,MAAM,EAAE,MAAM,CAAC,MAAM;gBACrB,aAAa,EAAE,MAAM,CAAC,aAAa;gBACnC,MAAM,EAAE,MAAM,CAAC,MAAM;gBACrB,cAAc,EAAE,IAAI;aACvB,CAAC,CAAA;YAEF,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAA;YAEpD,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE;gBAChB,MAAM,IAAI,KAAK,CAAC,iCAAiC,CAAC,CAAA;aACrD;YAED,MAAM,KAAK,GAAG,KAAK,CAAC,iBAAiB,CAAC;gBAClC,QAAQ,EAAE,MAAM,CAAC,QAAQ;gBACzB,MAAM,EAAE,MAAM,CAAC,MAAM;aACxB,CAAC,CAAA;YAEF,MAAM,MAAM,GAAG,IAAA,mCAAqB,EAAC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,CAAA;YAEzD,MAAM,SAAS,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,kBAAkB,CAAC,aAAa,CAChE,MAAM,CAAC,aAAa,EACpB,KAAK,CAAC,YAAY,CAAC,MAAM,CAAC,CAC7B,CAAA;YAED,MAAM,WAAW,GAAG,KAAK,CAAC,KAAK,EAAE,CAAA;YAEjC,MAAM,cAAc,GAAG,oBAAc,CAAC,GAAG,CAAC;gBACtC,KAAK,EAAE,WAAW;gBAClB,SAAS;gBACT,OAAO,EAAE,KAAK,CAAC,OAAO;aACzB,CAAC,CAAA;YAEF,MAAM,IAAI,CAAC,GAAG,CAAC,WAAW,CAAC,cAAc,CAAC,CAAA;YAE1C,OAAO;gBACH,KAAK,EAAE,KAAK,CAAC,KAAK,EAAE;gBACpB,SAAS;gBACT,OAAO,EAAE,KAAK,CAAC,OAAO;gBACtB,SAAS,EAAE,KAAK,CAAC,YAAY,CAAC,MAAM,CAAC;aACxC,CAAA;QACL,CAAC;KAAA;CACJ;AAzED,8BAyEC"}
1
+ {"version":3,"file":"sdk.js","sourceRoot":"","sources":["../../src/sdk/sdk.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1 @@
1
+ export declare const SETTLE_ORDERS_SELECTOR = "0x0965d04b";
@@ -0,0 +1,5 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.SETTLE_ORDERS_SELECTOR = void 0;
4
+ exports.SETTLE_ORDERS_SELECTOR = '0x0965d04b';
5
+ //# sourceMappingURL=constants.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"constants.js","sourceRoot":"","sources":["../../../src/settlement/encoders/constants.ts"],"names":[],"mappings":";;;AAAa,QAAA,sBAAsB,GAAG,YAAY,CAAA"}
@@ -0,0 +1,2 @@
1
+ import { FillOrderParamsExtended } from '../types';
2
+ export declare function encodeFillOrder(params: FillOrderParamsExtended): string;
@@ -0,0 +1,17 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.encodeFillOrder = void 0;
4
+ const tslib_1 = require("tslib");
5
+ const web3_eth_contract_1 = tslib_1.__importDefault(require("web3-eth-contract"));
6
+ const AggregationRouterV5_abi_json_1 = tslib_1.__importDefault(require("../../abi/AggregationRouterV5.abi.json"));
7
+ const signature_patcher_1 = require("../signature-patcher");
8
+ // eslint-disable-next-line @typescript-eslint/ban-ts-comment
9
+ // @ts-ignore
10
+ const limitOrderV3 = new web3_eth_contract_1.default(AggregationRouterV5_abi_json_1.default);
11
+ function encodeFillOrder(params) {
12
+ return limitOrderV3.methods
13
+ .fillOrderTo(params.order, (0, signature_patcher_1.patchSignature)(params.signature), params.interaction, params.makingAmount, params.takingAmount, params.thresholdAmount, params.target)
14
+ .encodeABI();
15
+ }
16
+ exports.encodeFillOrder = encodeFillOrder;
17
+ //# sourceMappingURL=fill-order.encoder.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"fill-order.encoder.js","sourceRoot":"","sources":["../../../src/settlement/encoders/fill-order.encoder.ts"],"names":[],"mappings":";;;;AAAA,kFAAwC;AACxC,kHAAoE;AAGpE,4DAAmD;AAEnD,6DAA6D;AAC7D,aAAa;AACb,MAAM,YAAY,GAAG,IAAI,2BAAQ,CAAC,sCAA4B,CAAC,CAAA;AAE/D,SAAgB,eAAe,CAAC,MAA+B;IAC3D,OAAO,YAAY,CAAC,OAAO;SACtB,WAAW,CACR,MAAM,CAAC,KAAK,EACZ,IAAA,kCAAc,EAAC,MAAM,CAAC,SAAS,CAAC,EAChC,MAAM,CAAC,WAAW,EAClB,MAAM,CAAC,YAAY,EACnB,MAAM,CAAC,YAAY,EACnB,MAAM,CAAC,eAAe,EACtB,MAAM,CAAC,MAAM,CAChB;SACA,SAAS,EAAE,CAAA;AACpB,CAAC;AAZD,0CAYC"}
@@ -0,0 +1,4 @@
1
+ import { FillOrderParamsExtended } from '../types';
2
+ export declare function encodeSettleOrders(params: FillOrderParamsExtended): string;
3
+ export declare function buildResolveOrdersBytes(settlementContract: string, resolverContract: string, executionBytes: string): string;
4
+ export declare function buildRecursiveFillInteraction(settlementContract: string, params: FillOrderParamsExtended): string;
@@ -0,0 +1,26 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.buildRecursiveFillInteraction = exports.buildResolveOrdersBytes = exports.encodeSettleOrders = void 0;
4
+ const tslib_1 = require("tslib");
5
+ const web3_eth_abi_1 = tslib_1.__importDefault(require("web3-eth-abi"));
6
+ const constants_1 = require("./constants");
7
+ const utils_1 = require("../../utils");
8
+ const fill_order_encoder_1 = require("./fill-order.encoder");
9
+ function encodeSettleOrders(params) {
10
+ const encodedOrder = (0, fill_order_encoder_1.encodeFillOrder)(params).substring(10);
11
+ return (constants_1.SETTLE_ORDERS_SELECTOR +
12
+ (0, utils_1.trim0x)(web3_eth_abi_1.default.encodeParameters(['bytes'], [(0, utils_1.add0x)(encodedOrder)])));
13
+ }
14
+ exports.encodeSettleOrders = encodeSettleOrders;
15
+ function buildResolveOrdersBytes(settlementContract, resolverContract, executionBytes) {
16
+ return (settlementContract +
17
+ '01' +
18
+ (0, utils_1.trim0x)(resolverContract) +
19
+ (0, utils_1.trim0x)(executionBytes));
20
+ }
21
+ exports.buildResolveOrdersBytes = buildResolveOrdersBytes;
22
+ function buildRecursiveFillInteraction(settlementContract, params) {
23
+ return settlementContract + '00' + (0, fill_order_encoder_1.encodeFillOrder)(params).substring(10);
24
+ }
25
+ exports.buildRecursiveFillInteraction = buildRecursiveFillInteraction;
26
+ //# sourceMappingURL=settlement.encoder.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"settlement.encoder.js","sourceRoot":"","sources":["../../../src/settlement/encoders/settlement.encoder.ts"],"names":[],"mappings":";;;;AAAA,wEAAmC;AAEnC,2CAAkD;AAClD,uCAAyC;AACzC,6DAAoD;AAEpD,SAAgB,kBAAkB,CAAC,MAA+B;IAC9D,MAAM,YAAY,GAAG,IAAA,oCAAe,EAAC,MAAM,CAAC,CAAC,SAAS,CAAC,EAAE,CAAC,CAAA;IAE1D,OAAO,CACH,kCAAsB;QACtB,IAAA,cAAM,EAAC,sBAAQ,CAAC,gBAAgB,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,IAAA,aAAK,EAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CACtE,CAAA;AACL,CAAC;AAPD,gDAOC;AAED,SAAgB,uBAAuB,CACnC,kBAA0B,EAC1B,gBAAwB,EACxB,cAAsB;IAEtB,OAAO,CACH,kBAAkB;QAClB,IAAI;QACJ,IAAA,cAAM,EAAC,gBAAgB,CAAC;QACxB,IAAA,cAAM,EAAC,cAAc,CAAC,CACzB,CAAA;AACL,CAAC;AAXD,0DAWC;AAED,SAAgB,6BAA6B,CACzC,kBAA0B,EAC1B,MAA+B;IAE/B,OAAO,kBAAkB,GAAG,IAAI,GAAG,IAAA,oCAAe,EAAC,MAAM,CAAC,CAAC,SAAS,CAAC,EAAE,CAAC,CAAA;AAC5E,CAAC;AALD,sEAKC"}
@@ -0,0 +1,7 @@
1
+ import { FillOrderParams, SettlementConfig } from './types';
2
+ export declare class Settlement {
3
+ private readonly config;
4
+ constructor(config: SettlementConfig);
5
+ static new(config: SettlementConfig): Settlement;
6
+ encodeSettleOrders(orders: FillOrderParams[], resolverExecutionBytes: string): string;
7
+ }
@@ -0,0 +1,26 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.Settlement = void 0;
4
+ const settlement_encoder_1 = require("./encoders/settlement.encoder");
5
+ class Settlement {
6
+ constructor(config) {
7
+ this.config = config;
8
+ }
9
+ static new(config) {
10
+ return new Settlement(config);
11
+ }
12
+ encodeSettleOrders(
13
+ // sorted by: orders[0] executes first, orders[orders.length - 1] executes last
14
+ orders, resolverExecutionBytes) {
15
+ const finalActionBytes = (0, settlement_encoder_1.buildResolveOrdersBytes)(this.config.settlementContract, this.config.resolverContract, resolverExecutionBytes);
16
+ const interaction = orders
17
+ .slice(1)
18
+ .reverse()
19
+ .reduce((acc, fillParams) => {
20
+ return (0, settlement_encoder_1.buildRecursiveFillInteraction)(this.config.settlementContract, Object.assign(Object.assign({}, fillParams), { interaction: acc }));
21
+ }, finalActionBytes);
22
+ return (0, settlement_encoder_1.encodeSettleOrders)(Object.assign(Object.assign({}, orders[0]), { interaction }));
23
+ }
24
+ }
25
+ exports.Settlement = Settlement;
26
+ //# sourceMappingURL=settlement.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"settlement.js","sourceRoot":"","sources":["../../src/settlement/settlement.ts"],"names":[],"mappings":";;;AACA,sEAIsC;AAEtC,MAAa,UAAU;IACnB,YAA6B,MAAwB;QAAxB,WAAM,GAAN,MAAM,CAAkB;IAAG,CAAC;IAEzD,MAAM,CAAC,GAAG,CAAC,MAAwB;QAC/B,OAAO,IAAI,UAAU,CAAC,MAAM,CAAC,CAAA;IACjC,CAAC;IAED,kBAAkB;IACd,+EAA+E;IAC/E,MAAyB,EACzB,sBAA8B;QAE9B,MAAM,gBAAgB,GAAG,IAAA,4CAAuB,EAC5C,IAAI,CAAC,MAAM,CAAC,kBAAkB,EAC9B,IAAI,CAAC,MAAM,CAAC,gBAAgB,EAC5B,sBAAsB,CACzB,CAAA;QAED,MAAM,WAAW,GAAG,MAAM;aACrB,KAAK,CAAC,CAAC,CAAC;aACR,OAAO,EAAE;aACT,MAAM,CAAC,CAAC,GAAG,EAAE,UAAU,EAAE,EAAE;YACxB,OAAO,IAAA,kDAA6B,EAChC,IAAI,CAAC,MAAM,CAAC,kBAAkB,kCAEvB,UAAU,KACb,WAAW,EAAE,GAAG,IAEvB,CAAA;QACL,CAAC,EAAE,gBAAgB,CAAC,CAAA;QAExB,OAAO,IAAA,uCAAkB,kCAClB,MAAM,CAAC,CAAC,CAAC,KACZ,WAAW,IACb,CAAA;IACN,CAAC;CACJ;AApCD,gCAoCC"}
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,61 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const settlement_1 = require("./settlement");
4
+ describe('Settlement', () => {
5
+ const resolverContract = '0x84d99aa569d93a9ca187d83734c8c4a519c4e9b1';
6
+ const settlementContract = '0xa88800cd213da5ae406ce248380802bd53b47647';
7
+ it('should encode settlement', () => {
8
+ const settlement = settlement_1.Settlement.new({
9
+ resolverContract,
10
+ settlementContract
11
+ });
12
+ const limitOrder0 = {
13
+ salt: '618054093254',
14
+ makerAsset: '0xe9e7cea3dedca5984780bafc599bd69add087d56',
15
+ takerAsset: '0x111111111117dc0aa78b770fa6a738034120c302',
16
+ maker: '0xfb3c7eb936cAA12B5A884d612393969A557d4307',
17
+ receiver: '0x0000000000000000000000000000000000000000',
18
+ allowedSender: '0x0000000000000000000000000000000000000000',
19
+ makingAmount: '1000000000000000000',
20
+ takingAmount: '1000000000000000000',
21
+ offsets: '9813420589127697917471531885823684359047649055178615469676279994777600',
22
+ // eslint-disable-next-line max-len
23
+ interactions: '0x20b83f2d0000000000000000000000000000000000000000000000000de0b6b3a76400000000000000000000000000000000000000000000000000000de0b6b3a76400007e2d21830000000000000000000000000000000000000000000000000de0b6b3a76400000000000000000000000000000000000000000000000000000de0b6b3a7640000bfa7514300000000000000000000000000000000000000000000000000000068000000240000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000006863592c2b0000000000000000000000000000000000000000000000000000000063593ad9cf6fc6e3000000000000000000000000fb3c7eb936caa12b5a884d612393969a557d43070000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000'
24
+ };
25
+ const limitOrder1 = {
26
+ salt: '618054093254',
27
+ makerAsset: '0xe9e7cea3dedca5984780bafc599bd69add087d56',
28
+ takerAsset: '0x111111111117dc0aa78b770fa6a738034120c302',
29
+ maker: '0xfb3c7eb936cAA12B5A884d612393969A557d4307',
30
+ receiver: '0x0000000000000000000000000000000000000000',
31
+ allowedSender: '0x0000000000000000000000000000000000000000',
32
+ makingAmount: '1000000000000000000',
33
+ takingAmount: '1000000000000000000',
34
+ offsets: '9813420589127697917471531885823684359047649055178615469676279994777600',
35
+ // eslint-disable-next-line max-len
36
+ interactions: '0x20b83f2d0000000000000000000000000000000000000000000000000de0b6b3a76400000000000000000000000000000000000000000000000000000de0b6b3a76400007e2d21830000000000000000000000000000000000000000000000000de0b6b3a76400000000000000000000000000000000000000000000000000000de0b6b3a7640000bfa7514300000000000000000000000000000000000000000000000000000068000000240000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000006863592c2b0000000000000000000000000000000000000000000000000000000063593ad9cf6fc6e3000000000000000000000000fb3c7eb936caa12b5a884d612393969a557d43070000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000'
37
+ };
38
+ const calldata = settlement.encodeSettleOrders([
39
+ {
40
+ order: limitOrder0,
41
+ makingAmount: '12345',
42
+ takingAmount: '0',
43
+ thresholdAmount: '12342343242342342342424324234242',
44
+ signature: '0xaefe4201b2a66009b0f2976a638f54d6f6a63b0fdcfdc289523c7ea6220c7ab13d1af9de1b85701cfff745b96742e9e4c3b29057adcac8f3b62de7b1a4eb110d1b',
45
+ target: resolverContract
46
+ },
47
+ {
48
+ order: limitOrder1,
49
+ makingAmount: '678910',
50
+ takingAmount: '0',
51
+ thresholdAmount: '12342343242342342342424324234242',
52
+ signature: '0x123e4201b2a66009b0f2976a638f54d6f6a63b0fdcfdc289523c7ea6220c7ab13d1af9de1b85701cfff745b96742e9e4c3b29057adcac8f3b62de7b1a4eb110d1b',
53
+ target: resolverContract
54
+ }
55
+ ], '0x123456');
56
+ expect(calldata).toBe(
57
+ // eslint-disable-next-line max-len
58
+ '0x0965d04b000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000008e000000000000000000000000000000000000000000000000000000000000000e000000000000000000000000000000000000000000000000000000000000003c0000000000000000000000000000000000000000000000000000000000000042000000000000000000000000000000000000000000000000000000000000030390000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000009bc8430b2577b5a268bb3c5c0200000000000000000000000084d99aa569d93a9ca187d83734c8c4a519c4e9b10000000000000000000000000000000000000000000000000000008fe6e509c6000000000000000000000000e9e7cea3dedca5984780bafc599bd69add087d56000000000000000000000000111111111117dc0aa78b770fa6a738034120c302000000000000000000000000fb3c7eb936caa12b5a884d612393969a557d4307000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000de0b6b3a76400000000000000000000000000000000000000000000000000000de0b6b3a76400000000016c0000016c0000016c0000016c000000880000004400000000000000000000000000000000000000000000000000000000000000000000000000000140000000000000000000000000000000000000000000000000000000000000016c20b83f2d0000000000000000000000000000000000000000000000000de0b6b3a76400000000000000000000000000000000000000000000000000000de0b6b3a76400007e2d21830000000000000000000000000000000000000000000000000de0b6b3a76400000000000000000000000000000000000000000000000000000de0b6b3a7640000bfa7514300000000000000000000000000000000000000000000000000000068000000240000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000006863592c2b0000000000000000000000000000000000000000000000000000000063593ad9cf6fc6e3000000000000000000000000fb3c7eb936caa12b5a884d612393969a557d4307000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040aefe4201b2a66009b0f2976a638f54d6f6a63b0fdcfdc289523c7ea6220c7ab13d1af9de1b85701cfff745b96742e9e4c3b29057adcac8f3b62de7b1a4eb110d0000000000000000000000000000000000000000000000000000000000000495a88800cd213da5ae406ce248380802bd53b476470000000000000000000000000000000000000000000000000000000000000000e000000000000000000000000000000000000000000000000000000000000003c0000000000000000000000000000000000000000000000000000000000000042000000000000000000000000000000000000000000000000000000000000a5bfe0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000009bc8430b2577b5a268bb3c5c0200000000000000000000000084d99aa569d93a9ca187d83734c8c4a519c4e9b10000000000000000000000000000000000000000000000000000008fe6e509c6000000000000000000000000e9e7cea3dedca5984780bafc599bd69add087d56000000000000000000000000111111111117dc0aa78b770fa6a738034120c302000000000000000000000000fb3c7eb936caa12b5a884d612393969a557d4307000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000de0b6b3a76400000000000000000000000000000000000000000000000000000de0b6b3a76400000000016c0000016c0000016c0000016c000000880000004400000000000000000000000000000000000000000000000000000000000000000000000000000140000000000000000000000000000000000000000000000000000000000000016c20b83f2d0000000000000000000000000000000000000000000000000de0b6b3a76400000000000000000000000000000000000000000000000000000de0b6b3a76400007e2d21830000000000000000000000000000000000000000000000000de0b6b3a76400000000000000000000000000000000000000000000000000000de0b6b3a7640000bfa7514300000000000000000000000000000000000000000000000000000068000000240000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000006863592c2b0000000000000000000000000000000000000000000000000000000063593ad9cf6fc6e3000000000000000000000000fb3c7eb936caa12b5a884d612393969a557d4307000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040123e4201b2a66009b0f2976a638f54d6f6a63b0fdcfdc289523c7ea6220c7ab13d1af9de1b85701cfff745b96742e9e4c3b29057adcac8f3b62de7b1a4eb110d000000000000000000000000000000000000000000000000000000000000002ca88800cd213da5ae406ce248380802bd53b476470184d99aa569d93a9ca187d83734c8c4a519c4e9b112345600000000000000000000000000000000000000000000000000000000000000');
59
+ });
60
+ });
61
+ //# sourceMappingURL=settlement.spec.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"settlement.spec.js","sourceRoot":"","sources":["../../src/settlement/settlement.spec.ts"],"names":[],"mappings":";;AAAA,6CAAuC;AAGvC,QAAQ,CAAC,YAAY,EAAE,GAAG,EAAE;IACxB,MAAM,gBAAgB,GAAG,4CAA4C,CAAA;IACrE,MAAM,kBAAkB,GAAG,4CAA4C,CAAA;IAEvE,EAAE,CAAC,0BAA0B,EAAE,GAAG,EAAE;QAChC,MAAM,UAAU,GAAG,uBAAU,CAAC,GAAG,CAAC;YAC9B,gBAAgB;YAChB,kBAAkB;SACrB,CAAC,CAAA;QAEF,MAAM,WAAW,GAAuB;YACpC,IAAI,EAAE,cAAc;YACpB,UAAU,EAAE,4CAA4C;YACxD,UAAU,EAAE,4CAA4C;YACxD,KAAK,EAAE,4CAA4C;YACnD,QAAQ,EAAE,4CAA4C;YACtD,aAAa,EAAE,4CAA4C;YAC3D,YAAY,EAAE,qBAAqB;YACnC,YAAY,EAAE,qBAAqB;YACnC,OAAO,EACH,wEAAwE;YAC5E,mCAAmC;YACnC,YAAY,EACR,4tBAA4tB;SACnuB,CAAA;QAED,MAAM,WAAW,GAAuB;YACpC,IAAI,EAAE,cAAc;YACpB,UAAU,EAAE,4CAA4C;YACxD,UAAU,EAAE,4CAA4C;YACxD,KAAK,EAAE,4CAA4C;YACnD,QAAQ,EAAE,4CAA4C;YACtD,aAAa,EAAE,4CAA4C;YAC3D,YAAY,EAAE,qBAAqB;YACnC,YAAY,EAAE,qBAAqB;YACnC,OAAO,EACH,wEAAwE;YAC5E,mCAAmC;YACnC,YAAY,EACR,4tBAA4tB;SACnuB,CAAA;QAED,MAAM,QAAQ,GAAG,UAAU,CAAC,kBAAkB,CAC1C;YACI;gBACI,KAAK,EAAE,WAAW;gBAClB,YAAY,EAAE,OAAO;gBACrB,YAAY,EAAE,GAAG;gBACjB,eAAe,EAAE,kCAAkC;gBACnD,SAAS,EACL,sIAAsI;gBAC1I,MAAM,EAAE,gBAAgB;aAC3B;YACD;gBACI,KAAK,EAAE,WAAW;gBAClB,YAAY,EAAE,QAAQ;gBACtB,YAAY,EAAE,GAAG;gBACjB,eAAe,EAAE,kCAAkC;gBACnD,SAAS,EACL,sIAAsI;gBAC1I,MAAM,EAAE,gBAAgB;aAC3B;SACJ,EACD,UAAU,CACb,CAAA;QAED,MAAM,CAAC,QAAQ,CAAC,CAAC,IAAI;QACjB,mCAAmC;QACnC,4kJAA4kJ,CAC/kJ,CAAA;IACL,CAAC,CAAC,CAAA;AACN,CAAC,CAAC,CAAA"}
@@ -0,0 +1 @@
1
+ export declare function patchSignature(signature: string): string;
@@ -0,0 +1,29 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.patchSignature = void 0;
4
+ const tslib_1 = require("tslib");
5
+ const bn_js_1 = tslib_1.__importDefault(require("bn.js"));
6
+ function patchSignature(signature) {
7
+ const isGnosisSafe = signature === '0x';
8
+ if (isGnosisSafe) {
9
+ return signature;
10
+ }
11
+ // with 0x (64 len)
12
+ if (signature.length === 130) {
13
+ return signature;
14
+ }
15
+ if (signature.length > 132) {
16
+ return signature;
17
+ }
18
+ const sig = signature.substr(0, 130);
19
+ const lastByte = signature.substr(130, 2);
20
+ if (lastByte.toLowerCase() === '1b' || lastByte === '00') {
21
+ return sig;
22
+ }
23
+ // eslint-disable-next-line @typescript-eslint/ban-ts-comment
24
+ // @ts-ignore
25
+ const bnSig = new bn_js_1.default(sig.substring(2 + 64), 'hex').setn(255, true);
26
+ return sig.substring(0, 2 + 64) + bnSig.toString('hex');
27
+ }
28
+ exports.patchSignature = patchSignature;
29
+ //# sourceMappingURL=signature-patcher.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"signature-patcher.js","sourceRoot":"","sources":["../../src/settlement/signature-patcher.ts"],"names":[],"mappings":";;;;AAAA,0DAAsB;AAEtB,SAAgB,cAAc,CAAC,SAAiB;IAC5C,MAAM,YAAY,GAAG,SAAS,KAAK,IAAI,CAAA;IAEvC,IAAI,YAAY,EAAE;QACd,OAAO,SAAS,CAAA;KACnB;IAED,mBAAmB;IACnB,IAAI,SAAS,CAAC,MAAM,KAAK,GAAG,EAAE;QAC1B,OAAO,SAAS,CAAA;KACnB;IAED,IAAI,SAAS,CAAC,MAAM,GAAG,GAAG,EAAE;QACxB,OAAO,SAAS,CAAA;KACnB;IAED,MAAM,GAAG,GAAG,SAAS,CAAC,MAAM,CAAC,CAAC,EAAE,GAAG,CAAC,CAAA;IACpC,MAAM,QAAQ,GAAG,SAAS,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC,CAAC,CAAA;IAEzC,IAAI,QAAQ,CAAC,WAAW,EAAE,KAAK,IAAI,IAAI,QAAQ,KAAK,IAAI,EAAE;QACtD,OAAO,GAAG,CAAA;KACb;IAED,6DAA6D;IAC7D,aAAa;IACb,MAAM,KAAK,GAAG,IAAI,eAAE,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,KAAK,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,CAAA;IAElE,OAAO,GAAG,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,GAAG,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAA;AAC3D,CAAC;AA5BD,wCA4BC"}
@@ -0,0 +1,16 @@
1
+ import { LimitOrderV3Struct } from '../limit-order';
2
+ export declare type SettlementConfig = {
3
+ resolverContract: string;
4
+ settlementContract: string;
5
+ };
6
+ export declare type FillOrderParams = {
7
+ order: LimitOrderV3Struct;
8
+ signature: string;
9
+ makingAmount: string;
10
+ takingAmount: string;
11
+ thresholdAmount: string;
12
+ target: string;
13
+ };
14
+ export declare type FillOrderParamsExtended = FillOrderParams & {
15
+ interaction: string;
16
+ };