@1inch/fusion-sdk 1.0.1-rc.1 → 1.0.1-rc.11

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 (75) hide show
  1. package/dist/api/orders/order-api.spec.js +1 -0
  2. package/dist/api/orders/order-api.spec.js.map +1 -1
  3. package/dist/api/quoter/quote/quote.d.ts +4 -0
  4. package/dist/api/quoter/quote/quote.js +3 -2
  5. package/dist/api/quoter/quote/quote.js.map +1 -1
  6. package/dist/api/quoter/quote/types.d.ts +4 -0
  7. package/dist/auction-calculator/auction-calculator.d.ts +19 -5
  8. package/dist/auction-calculator/auction-calculator.js +48 -13
  9. package/dist/auction-calculator/auction-calculator.js.map +1 -1
  10. package/dist/auction-calculator/auction-calculator.spec.js +33 -5
  11. package/dist/auction-calculator/auction-calculator.spec.js.map +1 -1
  12. package/dist/auction-calculator/calc.d.ts +8 -0
  13. package/dist/auction-calculator/calc.js +8 -0
  14. package/dist/auction-calculator/calc.js.map +1 -1
  15. package/dist/auction-calculator/constants.js +1 -1
  16. package/dist/auction-calculator/constants.js.map +1 -1
  17. package/dist/connector/blockchain/private-key-provider.connector.js +2 -0
  18. package/dist/connector/blockchain/private-key-provider.connector.js.map +1 -1
  19. package/dist/connector/ws/websocket-client.connector.js +2 -0
  20. package/dist/connector/ws/websocket-client.connector.js.map +1 -1
  21. package/dist/constants.d.ts +1 -0
  22. package/dist/constants.js +2 -1
  23. package/dist/constants.js.map +1 -1
  24. package/dist/fusion-order/auction-details/auction-details.d.ts +27 -0
  25. package/dist/fusion-order/auction-details/auction-details.js +20 -2
  26. package/dist/fusion-order/auction-details/auction-details.js.map +1 -1
  27. package/dist/fusion-order/auction-details/types.d.ts +12 -0
  28. package/dist/fusion-order/fusion-order.d.ts +52 -1
  29. package/dist/fusion-order/fusion-order.js +68 -4
  30. package/dist/fusion-order/fusion-order.js.map +1 -1
  31. package/dist/fusion-order/fusion-order.spec.js +6 -5
  32. package/dist/fusion-order/fusion-order.spec.js.map +1 -1
  33. package/dist/fusion-order/settlement-post-interaction-data/settlement-post-interaction-data.d.ts +34 -1
  34. package/dist/fusion-order/settlement-post-interaction-data/settlement-post-interaction-data.js +94 -46
  35. package/dist/fusion-order/settlement-post-interaction-data/settlement-post-interaction-data.js.map +1 -1
  36. package/dist/fusion-order/settlement-post-interaction-data/settlement-post-interaction-data.spec.js +76 -7
  37. package/dist/fusion-order/settlement-post-interaction-data/settlement-post-interaction-data.spec.js.map +1 -1
  38. package/dist/fusion-order/settlement-post-interaction-data/types.d.ts +11 -3
  39. package/dist/index.d.ts +2 -2
  40. package/dist/index.js +17 -2
  41. package/dist/index.js.map +1 -1
  42. package/dist/sdk/types.d.ts +11 -0
  43. package/dist/utils/amounts.d.ts +16 -0
  44. package/dist/utils/amounts.js +16 -0
  45. package/dist/utils/amounts.js.map +1 -1
  46. package/dist/utils/time.d.ts +1 -0
  47. package/dist/utils/time.js +8 -0
  48. package/dist/utils/time.js.map +1 -0
  49. package/dist/utils.d.ts +0 -5
  50. package/dist/utils.js +1 -30
  51. package/dist/utils.js.map +1 -1
  52. package/dist/validations.d.ts +4 -0
  53. package/dist/validations.js +4 -0
  54. package/dist/validations.js.map +1 -1
  55. package/dist/ws-api/ws.spec.js +1 -0
  56. package/dist/ws-api/ws.spec.js.map +1 -1
  57. package/package.json +17 -9
  58. package/dist/limit-order-contract/index.d.ts +0 -1
  59. package/dist/limit-order-contract/index.js +0 -6
  60. package/dist/limit-order-contract/index.js.map +0 -1
  61. package/dist/utils/bytes/bit-mask.d.ts +0 -7
  62. package/dist/utils/bytes/bit-mask.js +0 -22
  63. package/dist/utils/bytes/bit-mask.js.map +0 -1
  64. package/dist/utils/bytes/bit-mask.spec.d.ts +0 -1
  65. package/dist/utils/bytes/bit-mask.spec.js +0 -16
  66. package/dist/utils/bytes/bit-mask.spec.js.map +0 -1
  67. package/dist/utils/bytes/bn.d.ts +0 -20
  68. package/dist/utils/bytes/bn.js +0 -68
  69. package/dist/utils/bytes/bn.js.map +0 -1
  70. package/dist/utils/bytes/bn.spec.d.ts +0 -1
  71. package/dist/utils/bytes/bn.spec.js +0 -19
  72. package/dist/utils/bytes/bn.spec.js.map +0 -1
  73. package/dist/utils/bytes/bytes-iter.d.ts +0 -12
  74. package/dist/utils/bytes/bytes-iter.js +0 -47
  75. package/dist/utils/bytes/bytes-iter.js.map +0 -1
@@ -9,25 +9,76 @@ export declare class FusionOrder {
9
9
  private inner;
10
10
  private constructor();
11
11
  get extension(): Extension;
12
- static new(settlementExtension: Address, orderInfo: OrderInfoData, details: {
12
+ get maker(): Address;
13
+ get takerAsset(): Address;
14
+ get makerAsset(): Address;
15
+ get takingAmount(): bigint;
16
+ get makingAmount(): bigint;
17
+ get receiver(): Address;
18
+ /**
19
+ * Timestamp in sec
20
+ */
21
+ get deadline(): bigint;
22
+ static new(
23
+ /**
24
+ * Fusion extension address
25
+ * @see https://github.com/1inch/limit-order-settlement
26
+ */
27
+ settlementExtension: Address, orderInfo: OrderInfoData, details: {
13
28
  auction: AuctionDetails;
14
29
  fees?: {
15
30
  integratorFee?: IntegratorFee;
16
31
  bankFee?: bigint;
17
32
  };
18
33
  whitelist: AuctionWhitelistItem[];
34
+ /**
35
+ * Time from which order can be executed
36
+ */
37
+ resolvingStartTime?: bigint;
19
38
  }, extra?: {
20
39
  unwrapWETH?: boolean;
40
+ /**
41
+ * Required if `allowPartialFills` is false
42
+ */
21
43
  nonce?: bigint;
22
44
  permit?: string;
45
+ /**
46
+ * Default is true
47
+ */
23
48
  allowPartialFills?: boolean;
49
+ /**
50
+ * Default is true
51
+ */
24
52
  allowMultipleFills?: boolean;
53
+ /**
54
+ * Order will expire in `orderExpirationDelay` after auction ends
55
+ * Default 12s
56
+ */
25
57
  orderExpirationDelay?: bigint;
26
58
  enablePermit2?: boolean;
27
59
  }): FusionOrder;
60
+ /**
61
+ * Create FusionOrder from order data and extension
62
+ *
63
+ */
28
64
  static fromDataAndExtension(order: LimitOrderV4Struct, extension: Extension): FusionOrder;
29
65
  build(): LimitOrderV4Struct;
30
66
  getOrderHash(domain?: import("@1inch/limit-order-sdk").EIP712DomainType): string;
31
67
  getTypedData(domain?: import("@1inch/limit-order-sdk").EIP712DomainType): EIP712TypedData;
32
68
  getCalculator(): AuctionCalculator;
69
+ /**
70
+ * Calculates required taking amount for passed `makingAmount` at block time `time`
71
+ *
72
+ * @param makingAmount maker swap amount
73
+ * @param time execution time in sec
74
+ * @param blockBaseFee block fee in wei.
75
+ * */
76
+ calcTakingAmount(makingAmount: bigint, time: bigint, blockBaseFee?: bigint): bigint;
77
+ /**
78
+ * Check whether address allowed to execute order at the given time
79
+ *
80
+ * @param executor address of executor
81
+ * @param executionTime timestamp in sec at which order planning to execute
82
+ */
83
+ canExecuteAt(executor: Address, executionTime: bigint): boolean;
33
84
  }
@@ -12,8 +12,15 @@ const settlement_post_interaction_data_1 = require("./settlement-post-interactio
12
12
  const auction_calculator_1 = require("../auction-calculator");
13
13
  const utils_1 = require("../utils");
14
14
  const constants_1 = require("../constants");
15
+ const amounts_1 = require("../utils/amounts");
16
+ const time_1 = require("../utils/time");
15
17
  class FusionOrder {
16
- constructor(extensionContract, orderInfo, auctionDetails, postInteractionData, extra = FusionOrder.defaultExtra) {
18
+ constructor(
19
+ /**
20
+ * Fusion extension address
21
+ * @see https://github.com/1inch/limit-order-settlement
22
+ */
23
+ extensionContract, orderInfo, auctionDetails, postInteractionData, extra = FusionOrder.defaultExtra) {
17
24
  const { allowPartialFills, allowMultipleFills, unwrapWETH, enablePermit2, orderExpirationDelay, nonce, permit } = {
18
25
  ...FusionOrder.defaultExtra,
19
26
  ...extra
@@ -24,7 +31,8 @@ class FusionOrder {
24
31
  const makerTraits = limit_order_sdk_1.MakerTraits.default()
25
32
  .withExpiration(deadline)
26
33
  .setPartialFills(allowPartialFills)
27
- .setMultipleFills(allowMultipleFills);
34
+ .setMultipleFills(allowMultipleFills)
35
+ .enablePostInteraction();
28
36
  if (makerTraits.isBitInvalidatorMode()) {
29
37
  (0, assert_1.default)(nonce !== undefined, 'Nonce required, when partial fill or multiple fill disallowed');
30
38
  }
@@ -51,14 +59,47 @@ class FusionOrder {
51
59
  get extension() {
52
60
  return this.inner.extension;
53
61
  }
54
- static new(settlementExtension, orderInfo, details, extra = FusionOrder.defaultExtra) {
62
+ get maker() {
63
+ return this.inner.maker;
64
+ }
65
+ get takerAsset() {
66
+ return this.inner.takerAsset;
67
+ }
68
+ get makerAsset() {
69
+ return this.inner.makerAsset;
70
+ }
71
+ get takingAmount() {
72
+ return this.inner.takingAmount;
73
+ }
74
+ get makingAmount() {
75
+ return this.inner.makingAmount;
76
+ }
77
+ get receiver() {
78
+ return this.inner.receiver;
79
+ }
80
+ /**
81
+ * Timestamp in sec
82
+ */
83
+ get deadline() {
84
+ return this.inner.makerTraits.expiration() || 0n;
85
+ }
86
+ static new(
87
+ /**
88
+ * Fusion extension address
89
+ * @see https://github.com/1inch/limit-order-settlement
90
+ */
91
+ settlementExtension, orderInfo, details, extra) {
55
92
  return new FusionOrder(settlementExtension, orderInfo, details.auction, settlement_post_interaction_data_1.SettlementPostInteractionData.new({
56
93
  bankFee: details.fees?.bankFee || 0n,
57
94
  integratorFee: details.fees?.integratorFee,
58
95
  whitelist: details.whitelist,
59
- auctionStartTime: details.auction.startTime
96
+ resolvingStartTime: details.resolvingStartTime ?? (0, time_1.now)()
60
97
  }), extra);
61
98
  }
99
+ /**
100
+ * Create FusionOrder from order data and extension
101
+ *
102
+ */
62
103
  static fromDataAndExtension(order, extension) {
63
104
  const settlementContract = limit_order_sdk_1.Address.fromFirstBytes(extension.makingAmountData);
64
105
  (0, assert_1.default)(limit_order_sdk_1.Address.fromFirstBytes(extension.takingAmountData).equal(settlementContract) &&
@@ -71,6 +112,7 @@ class FusionOrder {
71
112
  ? undefined
72
113
  : deadline - auctionDetails.startTime - auctionDetails.duration;
73
114
  return new FusionOrder(settlementContract, {
115
+ // shift because of how LimitOrder.buildSalt works
74
116
  salt: BigInt(order.salt) >> 160n,
75
117
  maker: new limit_order_sdk_1.Address(order.maker),
76
118
  receiver: new limit_order_sdk_1.Address(order.receiver),
@@ -102,6 +144,28 @@ class FusionOrder {
102
144
  getCalculator() {
103
145
  return auction_calculator_1.AuctionCalculator.fromAuctionData(this.fusionExtension.postInteractionData, this.fusionExtension.details);
104
146
  }
147
+ /**
148
+ * Calculates required taking amount for passed `makingAmount` at block time `time`
149
+ *
150
+ * @param makingAmount maker swap amount
151
+ * @param time execution time in sec
152
+ * @param blockBaseFee block fee in wei.
153
+ * */
154
+ calcTakingAmount(makingAmount, time, blockBaseFee = 0n) {
155
+ const takingAmount = (0, amounts_1.calcTakingAmount)(makingAmount, this.makingAmount, this.takingAmount);
156
+ const calculator = this.getCalculator();
157
+ const bump = calculator.calcRateBump(time, blockBaseFee);
158
+ return calculator.calcAuctionTakingAmount(takingAmount, bump);
159
+ }
160
+ /**
161
+ * Check whether address allowed to execute order at the given time
162
+ *
163
+ * @param executor address of executor
164
+ * @param executionTime timestamp in sec at which order planning to execute
165
+ */
166
+ canExecuteAt(executor, executionTime) {
167
+ return this.fusionExtension.postInteractionData.canExecuteAt(executor, executionTime);
168
+ }
105
169
  }
106
170
  exports.FusionOrder = FusionOrder;
107
171
  FusionOrder.defaultExtra = {
@@ -1 +1 @@
1
- {"version":3,"file":"fusion-order.js","sourceRoot":"","sources":["../../src/fusion-order/fusion-order.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"fusion-order.js","sourceRoot":"","sources":["../../src/fusion-order/fusion-order.ts"],"names":[],"mappings":"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"}
@@ -28,9 +28,10 @@ describe('Fusion Order', () => {
28
28
  whitelist: [
29
29
  {
30
30
  address: new limit_order_sdk_1.Address('0x00000000219ab540356cbb839cbe05303d7705fa'),
31
- delay: 0n
31
+ allowFrom: 0n
32
32
  }
33
- ]
33
+ ],
34
+ resolvingStartTime: 1673548139n
34
35
  });
35
36
  const builtOrder = order.build();
36
37
  expect(builtOrder).toStrictEqual({
@@ -40,8 +41,8 @@ describe('Fusion Order', () => {
40
41
  receiver: '0x0000000000000000000000000000000000000000',
41
42
  takerAsset: '0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48',
42
43
  takingAmount: '1420000000',
43
- makerTraits: '29852648006495581632639394572552351243421169944806257724550573036760110989312',
44
- salt: '14832508939800728556409473652845244531014097925085'
44
+ makerTraits: '33471150795161712739625987854073848363835856965607525350783622537007396290560',
45
+ salt: '14969955465678758833706505435513058355190519874774'
45
46
  });
46
47
  const makerTraits = new limit_order_sdk_1.MakerTraits(BigInt(builtOrder.makerTraits));
47
48
  expect(makerTraits.isNativeUnwrapEnabled()).toEqual(false);
@@ -72,7 +73,7 @@ describe('Fusion Order', () => {
72
73
  whitelist: [
73
74
  {
74
75
  address: new limit_order_sdk_1.Address('0x00000000219ab540356cbb839cbe05303d7705fa'),
75
- delay: 0n
76
+ allowFrom: 0n
76
77
  }
77
78
  ]
78
79
  });
@@ -1 +1 @@
1
- {"version":3,"file":"fusion-order.spec.js","sourceRoot":"","sources":["../../src/fusion-order/fusion-order.spec.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"fusion-order.spec.js","sourceRoot":"","sources":["../../src/fusion-order/fusion-order.spec.ts"],"names":[],"mappings":"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"}
@@ -1,16 +1,49 @@
1
+ import { Address } from '@1inch/limit-order-sdk';
1
2
  import { IntegratorFee, SettlementSuffixData } from './types';
2
3
  export declare class SettlementPostInteractionData {
3
4
  readonly whitelist: WhitelistItem[];
4
5
  readonly integratorFee?: IntegratorFee;
5
6
  readonly bankFee: bigint;
6
- readonly auctionStartTime: bigint;
7
+ readonly resolvingStartTime: bigint;
7
8
  private constructor();
8
9
  static new(data: SettlementSuffixData): SettlementPostInteractionData;
10
+ /**
11
+ * Construct `SettlementPostInteractionData` from bytes
12
+ * @param data bytes with 0x prefix in next format:
13
+ * - [uint32 feeBank] only when first bit of `bitMask` enabled
14
+ * - [uint160 integratorFeeReceiver, uint32 integratorFeeRation] only when second bit of `bitMask` enabled
15
+ * - uint32 auctionStartTime
16
+ * - (bytes10 last10bytesOfAddress, uint16 auctionDelay) * N whitelist info
17
+ * - uint8 bitMask:
18
+ * 0b0000_0001 - fee bank mask
19
+ * 0b0000_0010 - integrator fee mask
20
+ * 0b1111_1000 - resolvers count mask
21
+ *
22
+ * All data is tight packed
23
+ * @see SettlementPostInteractionData.encode
24
+ */
9
25
  static decode(data: string): SettlementPostInteractionData;
26
+ /**
27
+ * Serialize post-interaction data to bytes
28
+ */
10
29
  encode(): string;
30
+ /**
31
+ * Check whether address allowed to execute order at the given time
32
+ *
33
+ * @param executor address of executor
34
+ * @param executionTime timestamp in sec at which order planning to execute
35
+ */
36
+ canExecuteAt(executor: Address, executionTime: bigint): boolean;
11
37
  }
12
38
  type WhitelistItem = {
39
+ /**
40
+ * last 10 bytes of address, no 0x prefix
41
+ */
13
42
  addressHalf: string;
43
+ /**
44
+ * Delay from previous resolver in seconds
45
+ * For first resolver delay from `resolvingStartTime`
46
+ */
14
47
  delay: bigint;
15
48
  };
16
49
  export {};
@@ -4,38 +4,72 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
4
4
  };
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
6
  exports.SettlementPostInteractionData = void 0;
7
- const ethers_1 = require("ethers");
8
7
  const limit_order_sdk_1 = require("@1inch/limit-order-sdk");
8
+ const byte_utils_1 = require("@1inch/byte-utils");
9
9
  const assert_1 = __importDefault(require("assert"));
10
10
  const validations_1 = require("../../validations");
11
- const bytes_iter_1 = require("../../utils/bytes/bytes-iter");
12
11
  const utils_1 = require("../../utils");
12
+ const constants_1 = require("../../constants");
13
13
  class SettlementPostInteractionData {
14
14
  constructor(data) {
15
15
  this.whitelist = data.whitelist;
16
16
  this.integratorFee = data?.integratorFee;
17
- this.bankFee = data.bankFee;
18
- this.auctionStartTime = data.auctionStartTime;
17
+ this.bankFee = data.bankFee || 0n;
18
+ this.resolvingStartTime = data.resolvingStartTime;
19
19
  }
20
20
  static new(data) {
21
+ (0, assert_1.default)(data.whitelist.length, 'Whitelist can not be empty');
22
+ // transform timestamps to cumulative delays
23
+ let sumDelay = 0n;
24
+ const whitelist = data.whitelist
25
+ .map((d) => ({
26
+ addressHalf: d.address.toString().slice(-20),
27
+ allowFrom: d.allowFrom < data.resolvingStartTime
28
+ ? data.resolvingStartTime
29
+ : d.allowFrom
30
+ }))
31
+ .sort((a, b) => Number(a.allowFrom - b.allowFrom)) // ASC
32
+ .map((val) => {
33
+ const delay = val.allowFrom - data.resolvingStartTime - sumDelay;
34
+ sumDelay += delay;
35
+ (0, assert_1.default)(delay < constants_1.UINT_16_MAX, 'Too big diff between timestamps');
36
+ return {
37
+ delay,
38
+ addressHalf: val.addressHalf
39
+ };
40
+ });
21
41
  return new SettlementPostInteractionData({
22
42
  ...data,
23
- whitelist: data.whitelist.map((d) => ({
24
- addressHalf: d.address.toString().slice(-20),
25
- delay: d.delay
26
- }))
43
+ whitelist
27
44
  });
28
45
  }
46
+ /**
47
+ * Construct `SettlementPostInteractionData` from bytes
48
+ * @param data bytes with 0x prefix in next format:
49
+ * - [uint32 feeBank] only when first bit of `bitMask` enabled
50
+ * - [uint160 integratorFeeReceiver, uint32 integratorFeeRation] only when second bit of `bitMask` enabled
51
+ * - uint32 auctionStartTime
52
+ * - (bytes10 last10bytesOfAddress, uint16 auctionDelay) * N whitelist info
53
+ * - uint8 bitMask:
54
+ * 0b0000_0001 - fee bank mask
55
+ * 0b0000_0010 - integrator fee mask
56
+ * 0b1111_1000 - resolvers count mask
57
+ *
58
+ * All data is tight packed
59
+ * @see SettlementPostInteractionData.encode
60
+ */
29
61
  static decode(data) {
30
62
  (0, assert_1.default)((0, validations_1.isHexBytes)(data), 'Post interaction data must be valid bytes string');
31
- const iter = new bytes_iter_1.BytesIter(data);
32
- const feeType = iter.nextByte();
63
+ const iter = byte_utils_1.BytesIter.BigInt(data);
64
+ const extra = iter.nextByte(byte_utils_1.BytesIter.SIDE.Back);
33
65
  let bankFee = 0n;
34
66
  let integratorFee;
35
- if ((feeType & 1n) === 1n) {
67
+ // fee bank presented
68
+ if ((extra & 1n) === 1n) {
36
69
  bankFee = iter.nextUint32();
37
70
  }
38
- if ((feeType & 2n) === 2n) {
71
+ // integrator fee presented
72
+ if ((extra & 2n) === 2n) {
39
73
  const integratorAddress = iter.nextUint160();
40
74
  const integratorFeeRatio = iter.nextUint32();
41
75
  integratorFee = {
@@ -43,63 +77,77 @@ class SettlementPostInteractionData {
43
77
  receiver: limit_order_sdk_1.Address.fromBigInt(integratorAddress)
44
78
  };
45
79
  }
46
- const auctionStartTime = iter.nextUint32();
80
+ const resolvingStartTime = iter.nextUint32();
47
81
  const whitelist = [];
48
82
  while (!iter.isEmpty()) {
49
83
  const addressHalf = iter
50
84
  .nextBytes(10)
51
85
  .toString(16)
52
86
  .padStart(20, '0');
53
- const allowance = iter.nextUint16();
87
+ const delay = iter.nextUint16();
54
88
  whitelist.push({
55
89
  addressHalf,
56
- delay: allowance
90
+ delay
57
91
  });
58
92
  }
59
93
  return new SettlementPostInteractionData({
60
94
  integratorFee,
61
95
  bankFee,
62
- auctionStartTime,
96
+ resolvingStartTime,
63
97
  whitelist
64
98
  });
65
99
  }
100
+ /**
101
+ * Serialize post-interaction data to bytes
102
+ */
66
103
  encode() {
67
- const fee = {
68
- type: 'uint8',
69
- value: 0n
70
- };
71
- const data = [fee];
104
+ /**
105
+ * 0b0000_0001 - fee bank mask
106
+ * 0b0000_0010 - integrator fee mask
107
+ * 0b1111_1000 - resolvers count mask
108
+ */
109
+ let bitMask = new byte_utils_1.BN(0n);
110
+ const bytes = new byte_utils_1.BytesBuilder();
111
+ // Add bank fee if exists
72
112
  if (this.bankFee) {
73
- fee.value |= 1n;
74
- data.push({
75
- type: 'uint32',
76
- value: ethers_1.ethers.solidityPacked(['uint32'], [this.bankFee])
77
- });
113
+ bitMask = bitMask.setBit(0n, 1);
114
+ bytes.addUint32(this.bankFee);
78
115
  }
116
+ // add integrator fee if exists
79
117
  if (this.integratorFee?.ratio) {
80
- fee.value |= 2n;
81
- data.push({
82
- type: 'uint160',
83
- value: ethers_1.ethers.solidityPacked(['uint160'], [this.integratorFee.receiver.toString()])
84
- }, {
85
- type: 'uint32',
86
- value: ethers_1.ethers.solidityPacked(['uint32'], [this.integratorFee.ratio])
87
- });
118
+ bitMask = bitMask.setBit(1n, 1);
119
+ bytes
120
+ .addAddress(this.integratorFee.receiver.toString())
121
+ .addUint32(this.integratorFee.ratio);
88
122
  }
89
- data.push({
90
- type: 'uint32',
91
- value: this.auctionStartTime
92
- });
123
+ bytes.addUint32(this.resolvingStartTime);
124
+ // whitelist data
93
125
  for (const wl of this.whitelist) {
94
- data.push({
95
- type: 'bytes10',
96
- value: (0, utils_1.add0x)(wl.addressHalf)
97
- }, {
98
- type: 'uint16',
99
- value: BigInt(wl.delay)
100
- });
126
+ bytes.addBytes((0, utils_1.add0x)(wl.addressHalf)).addUint16(wl.delay);
127
+ }
128
+ bitMask = bitMask.setMask(new byte_utils_1.BitMask(3n, 8n), BigInt(this.whitelist.length));
129
+ bytes.addUint8(bitMask.value);
130
+ return bytes.asHex();
131
+ }
132
+ /**
133
+ * Check whether address allowed to execute order at the given time
134
+ *
135
+ * @param executor address of executor
136
+ * @param executionTime timestamp in sec at which order planning to execute
137
+ */
138
+ canExecuteAt(executor, executionTime) {
139
+ const addressHalf = executor.toString().slice(-20);
140
+ let allowedFrom = this.resolvingStartTime;
141
+ for (const whitelist of this.whitelist) {
142
+ allowedFrom += whitelist.delay;
143
+ if (addressHalf === whitelist.addressHalf) {
144
+ return executionTime >= allowedFrom;
145
+ }
146
+ else if (executionTime < allowedFrom) {
147
+ return false;
148
+ }
101
149
  }
102
- return ethers_1.ethers.solidityPacked(data.map((d) => d.type), data.map((d) => d.value));
150
+ return false;
103
151
  }
104
152
  }
105
153
  exports.SettlementPostInteractionData = SettlementPostInteractionData;
@@ -1 +1 @@
1
- {"version":3,"file":"settlement-post-interaction-data.js","sourceRoot":"","sources":["../../../src/fusion-order/settlement-post-interaction-data/settlement-post-interaction-data.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"settlement-post-interaction-data.js","sourceRoot":"","sources":["../../../src/fusion-order/settlement-post-interaction-data/settlement-post-interaction-data.ts"],"names":[],"mappings":"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"}
@@ -1,25 +1,47 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  const limit_order_sdk_1 = require("@1inch/limit-order-sdk");
4
+ const byte_utils_1 = require("@1inch/byte-utils");
4
5
  const settlement_post_interaction_data_1 = require("./settlement-post-interaction-data");
5
6
  const utils_1 = require("../../sdk/utils");
6
- describe('PostInteractionData', () => {
7
+ describe('SettlementPostInteractionData', () => {
8
+ it('Should encode/decode with bank fee and whitelist', () => {
9
+ const data = settlement_post_interaction_data_1.SettlementPostInteractionData.new({
10
+ bankFee: 1n,
11
+ resolvingStartTime: 1708117482n,
12
+ whitelist: [
13
+ {
14
+ address: limit_order_sdk_1.Address.ZERO_ADDRESS,
15
+ allowFrom: 0n
16
+ }
17
+ ]
18
+ });
19
+ const encoded = data.encode();
20
+ expect((0, byte_utils_1.getBytesCount)(encoded)).toEqual(21n);
21
+ expect(settlement_post_interaction_data_1.SettlementPostInteractionData.decode(encoded)).toStrictEqual(data);
22
+ });
7
23
  it('Should encode/decode with no fees and whitelist', () => {
8
24
  const data = settlement_post_interaction_data_1.SettlementPostInteractionData.new({
9
- bankFee: 0n,
10
- auctionStartTime: 1708117482n,
11
- whitelist: []
25
+ resolvingStartTime: 1708117482n,
26
+ whitelist: [
27
+ {
28
+ address: limit_order_sdk_1.Address.ZERO_ADDRESS,
29
+ allowFrom: 0n
30
+ }
31
+ ]
12
32
  });
13
- expect(settlement_post_interaction_data_1.SettlementPostInteractionData.decode(data.encode())).toStrictEqual(data);
33
+ const encoded = data.encode();
34
+ expect((0, byte_utils_1.getBytesCount)(encoded)).toEqual(17n);
35
+ expect(settlement_post_interaction_data_1.SettlementPostInteractionData.decode(encoded)).toStrictEqual(data);
14
36
  });
15
37
  it('Should encode/decode with fees and whitelist', () => {
16
38
  const data = settlement_post_interaction_data_1.SettlementPostInteractionData.new({
17
39
  bankFee: 0n,
18
- auctionStartTime: 1708117482n,
40
+ resolvingStartTime: 1708117482n,
19
41
  whitelist: [
20
42
  {
21
43
  address: limit_order_sdk_1.Address.ZERO_ADDRESS,
22
- delay: 0n
44
+ allowFrom: 0n
23
45
  }
24
46
  ],
25
47
  integratorFee: {
@@ -29,5 +51,52 @@ describe('PostInteractionData', () => {
29
51
  });
30
52
  expect(settlement_post_interaction_data_1.SettlementPostInteractionData.decode(data.encode())).toStrictEqual(data);
31
53
  });
54
+ it('Should generate correct whitelist', () => {
55
+ const start = 1708117482n;
56
+ const data = settlement_post_interaction_data_1.SettlementPostInteractionData.new({
57
+ resolvingStartTime: start,
58
+ whitelist: [
59
+ {
60
+ address: limit_order_sdk_1.Address.fromBigInt(2n),
61
+ allowFrom: start + 1000n
62
+ },
63
+ {
64
+ address: limit_order_sdk_1.Address.ZERO_ADDRESS,
65
+ allowFrom: start - 10n // should be set to start
66
+ },
67
+ {
68
+ address: limit_order_sdk_1.Address.fromBigInt(1n),
69
+ allowFrom: start + 10n
70
+ },
71
+ {
72
+ address: limit_order_sdk_1.Address.fromBigInt(3n),
73
+ allowFrom: start + 10n
74
+ }
75
+ ]
76
+ });
77
+ expect(data.whitelist).toStrictEqual([
78
+ {
79
+ addressHalf: limit_order_sdk_1.Address.ZERO_ADDRESS.toString().slice(-20),
80
+ delay: 0n
81
+ },
82
+ {
83
+ addressHalf: limit_order_sdk_1.Address.fromBigInt(1n).toString().slice(-20),
84
+ delay: 10n
85
+ },
86
+ {
87
+ addressHalf: limit_order_sdk_1.Address.fromBigInt(3n).toString().slice(-20),
88
+ delay: 0n
89
+ },
90
+ {
91
+ addressHalf: limit_order_sdk_1.Address.fromBigInt(2n).toString().slice(-20),
92
+ delay: 990n
93
+ }
94
+ ]);
95
+ expect(data.canExecuteAt(limit_order_sdk_1.Address.fromBigInt(1n), start + 10n)).toEqual(true);
96
+ expect(data.canExecuteAt(limit_order_sdk_1.Address.fromBigInt(1n), start + 9n)).toEqual(false);
97
+ expect(data.canExecuteAt(limit_order_sdk_1.Address.fromBigInt(3n), start + 10n)).toEqual(true);
98
+ expect(data.canExecuteAt(limit_order_sdk_1.Address.fromBigInt(3n), start + 9n)).toEqual(false);
99
+ expect(data.canExecuteAt(limit_order_sdk_1.Address.fromBigInt(2n), start + 50n)).toEqual(false);
100
+ });
32
101
  });
33
102
  //# sourceMappingURL=settlement-post-interaction-data.spec.js.map