@1inch/fusion-sdk 2.3.9-rc.0 → 2.3.9-rc.10

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 (52) hide show
  1. package/dist/cjs/abi/NativeOrderFactory.abi.json +217 -0
  2. package/dist/cjs/abi/{ETHOrders.abi.json → NativeOrderImpl.abi.json} +110 -255
  3. package/dist/cjs/api/quoter/quote/quote.js +6 -4
  4. package/dist/cjs/api/quoter/quoter.request.js +0 -3
  5. package/dist/cjs/api/quoter/quoter.request.spec.js +0 -15
  6. package/dist/cjs/api/quoter/types.js +0 -2
  7. package/dist/cjs/contracts/index.js +21 -0
  8. package/dist/cjs/contracts/native-order-factory.js +115 -0
  9. package/dist/cjs/contracts/native-order-impl.js +130 -0
  10. package/dist/cjs/contracts/proxy-factory.js +87 -0
  11. package/dist/cjs/fusion-order/fusion-order.js +81 -5
  12. package/dist/cjs/fusion-order/fusion-order.spec.js +106 -0
  13. package/dist/cjs/fusion-order/index.js +0 -1
  14. package/dist/cjs/index.js +1 -0
  15. package/dist/cjs/sdk/sdk.js +79 -40
  16. package/dist/esm/abi/NativeOrderFactory.abi.json +217 -0
  17. package/dist/esm/abi/{ETHOrders.abi.json → NativeOrderImpl.abi.json} +110 -255
  18. package/dist/esm/api/quoter/quote/quote.js +7 -5
  19. package/dist/esm/api/quoter/quoter.request.js +0 -3
  20. package/dist/esm/api/quoter/quoter.request.spec.js +0 -15
  21. package/dist/esm/api/quoter/types.js +0 -2
  22. package/dist/esm/contracts/index.js +4 -0
  23. package/dist/esm/contracts/native-order-factory.js +100 -0
  24. package/dist/esm/contracts/native-order-impl.js +115 -0
  25. package/dist/esm/contracts/proxy-factory.js +72 -0
  26. package/dist/esm/fusion-order/fusion-order.js +79 -3
  27. package/dist/esm/fusion-order/fusion-order.spec.js +106 -0
  28. package/dist/esm/fusion-order/index.js +0 -1
  29. package/dist/esm/fusion-order/types.js +4 -0
  30. package/dist/esm/index.js +1 -0
  31. package/dist/esm/package.json +1 -1
  32. package/dist/esm/sdk/sdk.js +79 -40
  33. package/dist/types/src/api/quoter/quote/quote.d.ts +4 -3
  34. package/dist/types/src/api/quoter/types.d.ts +2 -1
  35. package/dist/types/src/contracts/index.d.ts +4 -0
  36. package/dist/types/src/contracts/native-order-factory.d.ts +9 -0
  37. package/dist/types/src/contracts/native-order-impl.d.ts +9 -0
  38. package/dist/types/src/contracts/proxy-factory.d.ts +8 -0
  39. package/dist/types/src/fusion-order/fusion-order.d.ts +6 -0
  40. package/dist/types/src/fusion-order/index.d.ts +0 -1
  41. package/dist/types/src/fusion-order/types.d.ts +1 -0
  42. package/dist/types/src/index.d.ts +1 -0
  43. package/dist/types/src/sdk/sdk.d.ts +4 -0
  44. package/dist/types/src/sdk/types.d.ts +2 -1
  45. package/dist/types/tsconfig.types.tsbuildinfo +1 -1
  46. package/package.json +2 -2
  47. package/dist/cjs/contracts/eth-orders.extension.js +0 -105
  48. package/dist/cjs/fusion-order/fusion-order-from-native.js +0 -183
  49. package/dist/esm/contracts/eth-orders.extension.js +0 -90
  50. package/dist/esm/fusion-order/fusion-order-from-native.js +0 -173
  51. package/dist/types/src/contracts/eth-orders.extension.d.ts +0 -11
  52. package/dist/types/src/fusion-order/fusion-order-from-native.d.ts +0 -13
@@ -0,0 +1,115 @@
1
+ function _class_call_check(instance, Constructor) {
2
+ if (!(instance instanceof Constructor)) {
3
+ throw new TypeError("Cannot call a class as a function");
4
+ }
5
+ }
6
+ function _defineProperties(target, props) {
7
+ for(var i = 0; i < props.length; i++){
8
+ var descriptor = props[i];
9
+ descriptor.enumerable = descriptor.enumerable || false;
10
+ descriptor.configurable = true;
11
+ if ("value" in descriptor) descriptor.writable = true;
12
+ Object.defineProperty(target, descriptor.key, descriptor);
13
+ }
14
+ }
15
+ function _create_class(Constructor, protoProps, staticProps) {
16
+ if (protoProps) _defineProperties(Constructor.prototype, protoProps);
17
+ if (staticProps) _defineProperties(Constructor, staticProps);
18
+ return Constructor;
19
+ }
20
+ function _define_property(obj, key, value) {
21
+ if (key in obj) {
22
+ Object.defineProperty(obj, key, {
23
+ value: value,
24
+ enumerable: true,
25
+ configurable: true,
26
+ writable: true
27
+ });
28
+ } else {
29
+ obj[key] = value;
30
+ }
31
+ return obj;
32
+ }
33
+ function _object_spread(target) {
34
+ for(var i = 1; i < arguments.length; i++){
35
+ var source = arguments[i] != null ? arguments[i] : {};
36
+ var ownKeys = Object.keys(source);
37
+ if (typeof Object.getOwnPropertySymbols === "function") {
38
+ ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function(sym) {
39
+ return Object.getOwnPropertyDescriptor(source, sym).enumerable;
40
+ }));
41
+ }
42
+ ownKeys.forEach(function(key) {
43
+ _define_property(target, key, source[key]);
44
+ });
45
+ }
46
+ return target;
47
+ }
48
+ function ownKeys(object, enumerableOnly) {
49
+ var keys = Object.keys(object);
50
+ if (Object.getOwnPropertySymbols) {
51
+ var symbols = Object.getOwnPropertySymbols(object);
52
+ if (enumerableOnly) {
53
+ symbols = symbols.filter(function(sym) {
54
+ return Object.getOwnPropertyDescriptor(object, sym).enumerable;
55
+ });
56
+ }
57
+ keys.push.apply(keys, symbols);
58
+ }
59
+ return keys;
60
+ }
61
+ function _object_spread_props(target, source) {
62
+ source = source != null ? source : {};
63
+ if (Object.getOwnPropertyDescriptors) {
64
+ Object.defineProperties(target, Object.getOwnPropertyDescriptors(source));
65
+ } else {
66
+ ownKeys(Object(source)).forEach(function(key) {
67
+ Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));
68
+ });
69
+ }
70
+ return target;
71
+ }
72
+ import { Interface } from 'ethers';
73
+ import ABI from '../abi/NativeOrderImpl.abi.json';
74
+ export var NativeOrdersImpl = /*#__PURE__*/ function() {
75
+ "use strict";
76
+ function NativeOrdersImpl(address) {
77
+ _class_call_check(this, NativeOrdersImpl);
78
+ _define_property(this, "address", void 0);
79
+ _define_property(this, "iface", void 0);
80
+ this.address = address;
81
+ this.iface = new Interface(ABI);
82
+ }
83
+ _create_class(NativeOrdersImpl, [
84
+ {
85
+ key: "cancel",
86
+ value: function cancel(maker, order) {
87
+ return {
88
+ to: this.address,
89
+ value: 0n,
90
+ data: this.iface.encodeFunctionData('cancelOrder', [
91
+ _object_spread_props(_object_spread({}, order), {
92
+ maker: maker.toString()
93
+ })
94
+ ])
95
+ };
96
+ }
97
+ },
98
+ {
99
+ key: "cancelExpiredOrderByResolver",
100
+ value: function cancelExpiredOrderByResolver(maker, order, rewardLimit) {
101
+ return {
102
+ to: this.address,
103
+ value: 0n,
104
+ data: this.iface.encodeFunctionData('cancelExpiredOrderByResolver', [
105
+ _object_spread_props(_object_spread({}, order), {
106
+ maker: maker.toString()
107
+ }),
108
+ rewardLimit
109
+ ])
110
+ };
111
+ }
112
+ }
113
+ ]);
114
+ return NativeOrdersImpl;
115
+ }();
@@ -0,0 +1,72 @@
1
+ function _class_call_check(instance, Constructor) {
2
+ if (!(instance instanceof Constructor)) {
3
+ throw new TypeError("Cannot call a class as a function");
4
+ }
5
+ }
6
+ function _defineProperties(target, props) {
7
+ for(var i = 0; i < props.length; i++){
8
+ var descriptor = props[i];
9
+ descriptor.enumerable = descriptor.enumerable || false;
10
+ descriptor.configurable = true;
11
+ if ("value" in descriptor) descriptor.writable = true;
12
+ Object.defineProperty(target, descriptor.key, descriptor);
13
+ }
14
+ }
15
+ function _create_class(Constructor, protoProps, staticProps) {
16
+ if (protoProps) _defineProperties(Constructor.prototype, protoProps);
17
+ if (staticProps) _defineProperties(Constructor, staticProps);
18
+ return Constructor;
19
+ }
20
+ function _define_property(obj, key, value) {
21
+ if (key in obj) {
22
+ Object.defineProperty(obj, key, {
23
+ value: value,
24
+ enumerable: true,
25
+ configurable: true,
26
+ writable: true
27
+ });
28
+ } else {
29
+ obj[key] = value;
30
+ }
31
+ return obj;
32
+ }
33
+ import { isHexBytes, trim0x } from '@1inch/byte-utils';
34
+ import { Address } from '@1inch/limit-order-sdk';
35
+ import { getCreate2Address, keccak256 } from 'ethers';
36
+ import assert from 'assert';
37
+ export var ProxyFactory = /*#__PURE__*/ function() {
38
+ "use strict";
39
+ function ProxyFactory(factory, implementation) {
40
+ _class_call_check(this, ProxyFactory);
41
+ _define_property(this, "factory", void 0);
42
+ _define_property(this, "implementation", void 0);
43
+ this.factory = factory;
44
+ this.implementation = implementation;
45
+ }
46
+ _create_class(ProxyFactory, [
47
+ {
48
+ key: "getProxyAddress",
49
+ value: /**
50
+ * Calculates deterministic address of proxy contract
51
+ *
52
+ * @see https://github.com/OpenZeppelin/openzeppelin-contracts/blob/69c8def5f222ff96f2b5beff05dfba996368aa79/contracts/proxy/Clones.sol#L60
53
+ *
54
+ * @param salt must be valid hex string
55
+ * @returns address of proxy contract
56
+ */ function getProxyAddress(salt) {
57
+ assert(isHexBytes(salt), 'invalid salt');
58
+ return new Address(getCreate2Address(this.factory.toString(), salt, ProxyFactory.calcProxyBytecodeHash(this.implementation)));
59
+ }
60
+ }
61
+ ], [
62
+ {
63
+ key: "calcProxyBytecodeHash",
64
+ value: /**
65
+ * See https://github.com/1inch/cross-chain-swap/blob/03d99b9604d8f7a5a396720fbe1059f7d94db762/contracts/libraries/ProxyHashLib.sol#L14
66
+ */ function calcProxyBytecodeHash(impl) {
67
+ return keccak256("0x3d602d80600a3d3981f3363d3d373d3d3d363d73".concat(trim0x(impl.toString()), "5af43d82803e903d91602b57fd5bf3"));
68
+ }
69
+ }
70
+ ]);
71
+ return ProxyFactory;
72
+ }();
@@ -74,6 +74,7 @@ import assert from 'assert';
74
74
  import { FusionExtension } from './fusion-extension.js';
75
75
  import { injectTrackCode } from './source-track.js';
76
76
  import { SurplusParams } from './surplus-params.js';
77
+ import { CHAIN_TO_WRAPPER } from './constants.js';
77
78
  import { AuctionCalculator } from '../amount-calculator/auction-calculator/index.js';
78
79
  import { ZX } from '../constants.js';
79
80
  import { calcTakingAmount } from '../utils/amounts.js';
@@ -128,10 +129,13 @@ export var FusionOrder = /*#__PURE__*/ function() {
128
129
  if (orderInfo.makerAsset.isNative()) {
129
130
  throw new Error('use FusionOrder.fromNative to create order from native asset');
130
131
  }
132
+ var optimizeReceiverAddress = extra.optimizeReceiverAddress !== undefined ? extra.optimizeReceiverAddress : FusionOrder.defaultExtra.optimizeReceiverAddress;
131
133
  this.inner = new LimitOrder(_object_spread_props(_object_spread({}, orderInfo), {
132
134
  receiver: receiver,
133
135
  salt: saltWithInjectedTrackCode
134
- }), makerTraits, builtExtension);
136
+ }), makerTraits, builtExtension, {
137
+ optimizeReceiverAddress: optimizeReceiverAddress
138
+ });
135
139
  this.fusionExtension = extension;
136
140
  }
137
141
  _create_class(FusionOrder, [
@@ -429,6 +433,34 @@ export var FusionOrder = /*#__PURE__*/ function() {
429
433
  value: function getAmountCalculator() {
430
434
  return AmountCalculator.fromExtension(this.fusionExtension);
431
435
  }
436
+ },
437
+ {
438
+ key: "isNative",
439
+ value: function isNative(chainId, ethOrderFactory, signature) {
440
+ return FusionOrder.isNativeOrder(chainId, ethOrderFactory, this.build(), signature);
441
+ }
442
+ },
443
+ {
444
+ key: "nativeSignature",
445
+ value: /**
446
+ * Returns signature for submitting native order on-chain
447
+ * Only valid if order is native
448
+ *
449
+ * @see FusionOrder.isNative
450
+ * @see FusionOrder.fromNative
451
+ */ function nativeSignature(maker) {
452
+ return new LimitOrder({
453
+ maker: maker,
454
+ makerAsset: this.makerAsset,
455
+ makingAmount: this.makingAmount,
456
+ takingAmount: this.takingAmount,
457
+ takerAsset: this.takerAsset,
458
+ receiver: this.receiver,
459
+ salt: this.salt
460
+ }, this.inner.makerTraits, undefined, {
461
+ optimizeReceiverAddress: false
462
+ }).toCalldata();
463
+ }
432
464
  }
433
465
  ], [
434
466
  {
@@ -440,6 +472,48 @@ export var FusionOrder = /*#__PURE__*/ function() {
440
472
  return new FusionOrder(settlementExtension, orderInfo, details.auction, details.whitelist, details.surplus, extra);
441
473
  }
442
474
  },
475
+ {
476
+ key: "isNativeOrder",
477
+ value: function isNativeOrder(chainId, ethOrderFactory, order, signature) {
478
+ try {
479
+ var orderWithRealMaker = LimitOrder.fromCalldata(signature);
480
+ var expectedAddress = ethOrderFactory.getProxyAddress(orderWithRealMaker.getOrderHash(chainId));
481
+ return expectedAddress.equal(new Address(order.maker));
482
+ } catch (e) {
483
+ return false;
484
+ }
485
+ }
486
+ },
487
+ {
488
+ key: "fromNative",
489
+ value: /**
490
+ * Create new order from native asset
491
+ *
492
+ *
493
+ * Note, that such order should be submitted on-chain through `ETHOrders.depositForOrder` AND off-chain through submit to relayer
494
+ * // todo: update link
495
+ * @see ETHOrders.depositForOrder https://github.com/1inch/limit-order-protocol/blob/c100474444cd71cf7989cd8a63f375e72656b8b4/contracts/extensions/ETHOrders.sol#L89
496
+ */ function fromNative(chainId, ethOrdersFactory, /**
497
+ * Fusion extension address
498
+ * @see https://github.com/1inch/limit-order-settlement
499
+ */ settlementExtension, orderInfo, details, extra) {
500
+ var _orderInfo = _object_spread_props(_object_spread({}, orderInfo), {
501
+ makerAsset: CHAIN_TO_WRAPPER[chainId],
502
+ receiver: orderInfo.receiver && !orderInfo.receiver.isZero() ? orderInfo.receiver : orderInfo.maker
503
+ });
504
+ // create temp order to calc order hash
505
+ var _order = FusionOrder.new(settlementExtension, _orderInfo, details, _object_spread_props(_object_spread({}, extra), {
506
+ optimizeReceiverAddress: false
507
+ }));
508
+ var finalOrderInfo = _object_spread_props(_object_spread({}, _orderInfo), {
509
+ maker: ethOrdersFactory.getProxyAddress(_order.getOrderHash(chainId))
510
+ });
511
+ return new FusionOrder(settlementExtension, // use same salt to have same order hash. Remove extension hash from it
512
+ _object_spread_props(_object_spread({}, finalOrderInfo), {
513
+ salt: _order.salt >> 160n
514
+ }), details.auction, details.whitelist, details.surplus, extra);
515
+ }
516
+ },
443
517
  {
444
518
  key: "fromDataAndExtension",
445
519
  value: /**
@@ -472,7 +546,8 @@ export var FusionOrder = /*#__PURE__*/ function() {
472
546
  permit: extension.makerPermit === ZX ? undefined : Interaction.decode(extension.makerPermit).data,
473
547
  unwrapWETH: makerTraits.isNativeUnwrapEnabled(),
474
548
  orderExpirationDelay: orderExpirationDelay,
475
- fees: extra === null || extra === void 0 ? void 0 : extra.fees
549
+ fees: extra === null || extra === void 0 ? void 0 : extra.fees,
550
+ optimizeReceiverAddress: true
476
551
  });
477
552
  assert(providedSalt === fusionOrder.salt, 'invalid salt for passed extension');
478
553
  return fusionOrder;
@@ -486,5 +561,6 @@ _define_property(FusionOrder, "defaultExtra", {
486
561
  allowMultipleFills: true,
487
562
  unwrapWETH: false,
488
563
  enablePermit2: false,
489
- orderExpirationDelay: 12n
564
+ orderExpirationDelay: 12n,
565
+ optimizeReceiverAddress: true
490
566
  });
@@ -5,6 +5,8 @@ import { AuctionDetails } from './auction-details/index.js';
5
5
  import { Whitelist } from './whitelist/index.js';
6
6
  import { SurplusParams } from './surplus-params.js';
7
7
  import { Fees, IntegratorFee, ResolverFee } from './fees/index.js';
8
+ import { ProxyFactory } from '../contracts/proxy-factory.js';
9
+ import { NetworkEnum } from '../constants.js';
8
10
  import { AuctionCalculator } from '../amount-calculator/index.js';
9
11
  import { now } from '../utils/time.js';
10
12
  describe('Fusion Order', function() {
@@ -292,3 +294,107 @@ describe('Fusion Order', function() {
292
294
  expect(surplus).toEqual(25000000n);
293
295
  });
294
296
  });
297
+ describe('FusionOrder Native', function() {
298
+ it('should correct detect that order is from native asset', function() {
299
+ var ethOrderFactory = new ProxyFactory(Address.fromBigInt(1n), Address.fromBigInt(2n));
300
+ var chainId = NetworkEnum.ETHEREUM;
301
+ var settlementExt = Address.fromBigInt(3n);
302
+ var maker = new Address('0x00000000219ab540356cbb839cbe05303d7705fa');
303
+ var nativeOrder = FusionOrder.fromNative(chainId, ethOrderFactory, settlementExt, {
304
+ takerAsset: new Address('0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48'),
305
+ makingAmount: 1000000000000000000n,
306
+ takingAmount: 1420000000n,
307
+ maker: maker,
308
+ salt: 10n
309
+ }, {
310
+ auction: new AuctionDetails({
311
+ duration: 180n,
312
+ startTime: 1673548149n,
313
+ initialRateBump: 50000,
314
+ points: [
315
+ {
316
+ coefficient: 20000,
317
+ delay: 12
318
+ }
319
+ ]
320
+ }),
321
+ whitelist: Whitelist.new(1673548139n, [
322
+ {
323
+ address: new Address('0x00000000219ab540356cbb839cbe05303d7705fa'),
324
+ allowFrom: 0n
325
+ }
326
+ ]),
327
+ surplus: SurplusParams.NO_FEE
328
+ });
329
+ expect(nativeOrder.isNative(chainId, ethOrderFactory, nativeOrder.nativeSignature(maker))).toEqual(true);
330
+ expect(FusionOrder.fromDataAndExtension(nativeOrder.build(), nativeOrder.extension).isNative(chainId, ethOrderFactory, nativeOrder.nativeSignature(maker))).toEqual(true);
331
+ });
332
+ it('should correct detect that order is from native asset (no salt)', function() {
333
+ var ethOrderFactory = new ProxyFactory(new Address('0x62c650084e97a0fba2ecf365cc6d8a7722425363'), new Address('0xe8773a43fce4eedb18d0edbaf319059e1ae786af'));
334
+ var chainId = NetworkEnum.ETHEREUM;
335
+ var settlementExt = new Address('0x2ad5004c60e16e54d5007c80ce329adde5b51ef5');
336
+ var maker = new Address('0x962a836519109e162754161000d65d9dc027fa0f');
337
+ var nativeOrder = FusionOrder.fromNative(chainId, ethOrderFactory, settlementExt, {
338
+ takerAsset: new Address('0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48'),
339
+ makingAmount: 1000000000000000000n,
340
+ takingAmount: 1420000000n,
341
+ maker: maker
342
+ }, {
343
+ auction: new AuctionDetails({
344
+ duration: 180n,
345
+ startTime: 1673548149n,
346
+ initialRateBump: 50000,
347
+ points: [
348
+ {
349
+ coefficient: 20000,
350
+ delay: 12
351
+ }
352
+ ]
353
+ }),
354
+ whitelist: Whitelist.new(1673548139n, [
355
+ {
356
+ address: new Address('0x00000000219ab540356cbb839cbe05303d7705fa'),
357
+ allowFrom: 0n
358
+ }
359
+ ]),
360
+ surplus: SurplusParams.NO_FEE
361
+ });
362
+ expect(nativeOrder.isNative(chainId, ethOrderFactory, nativeOrder.nativeSignature(maker))).toEqual(true);
363
+ expect(FusionOrder.fromDataAndExtension(nativeOrder.build(), Extension.decode(nativeOrder.extension.encode())).isNative(chainId, ethOrderFactory, nativeOrder.nativeSignature(maker))).toEqual(true);
364
+ });
365
+ it('should correct detect that order is NOT from native asset', function() {
366
+ var ethOrderFactory = new ProxyFactory(Address.fromBigInt(1n), Address.fromBigInt(2n));
367
+ var chainId = NetworkEnum.ETHEREUM;
368
+ var settlementExt = Address.fromBigInt(3n);
369
+ var maker = new Address('0x00000000219ab540356cbb839cbe05303d7705fa');
370
+ var nativeOrder = FusionOrder.new(settlementExt, {
371
+ makerAsset: new Address('0x1000000000000000000000000000000000000000'),
372
+ takerAsset: new Address('0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48'),
373
+ makingAmount: 1000000000000000000n,
374
+ takingAmount: 1420000000n,
375
+ maker: maker,
376
+ salt: 10n
377
+ }, {
378
+ auction: new AuctionDetails({
379
+ duration: 180n,
380
+ startTime: 1673548149n,
381
+ initialRateBump: 50000,
382
+ points: [
383
+ {
384
+ coefficient: 20000,
385
+ delay: 12
386
+ }
387
+ ]
388
+ }),
389
+ whitelist: Whitelist.new(1673548139n, [
390
+ {
391
+ address: new Address('0x00000000219ab540356cbb839cbe05303d7705fa'),
392
+ allowFrom: 0n
393
+ }
394
+ ]),
395
+ surplus: SurplusParams.NO_FEE
396
+ });
397
+ expect(nativeOrder.isNative(chainId, ethOrderFactory, nativeOrder.nativeSignature(maker))).toEqual(false);
398
+ expect(FusionOrder.fromDataAndExtension(nativeOrder.build(), nativeOrder.extension).isNative(chainId, ethOrderFactory, nativeOrder.nativeSignature(maker))).toEqual(false);
399
+ });
400
+ });
@@ -1,5 +1,4 @@
1
1
  export * from './fusion-order.js';
2
- export * from './fusion-order-from-native.js';
3
2
  export * from './auction-details/index.js';
4
3
  export * from './whitelist/index.js';
5
4
  export * from './fusion-extension.js';
@@ -8,4 +8,8 @@
8
8
  */ /**
9
9
  * Order will expire in `orderExpirationDelay` after auction ends
10
10
  * Default 12s
11
+ */ /**
12
+ * When enabled, orders where maker == receiver will have ZERO_ADDRESS set
13
+ * Used to save calldata costs
14
+ * By default: enabled
11
15
  */ export { };
package/dist/esm/index.js CHANGED
@@ -10,4 +10,5 @@ export * from './utils/time.js';
10
10
  export * from './validations.js';
11
11
  export * from './ws-api/index.js';
12
12
  export * from './errors.js';
13
+ export * from './contracts/index.js';
13
14
  export { QuoterRequest, RelayerRequest, QuoterCustomPresetRequest, PresetEnum, Preset, Quote, OrderStatus } from './api/index.js';
@@ -1 +1 @@
1
- {"name":"@1inch/fusion-sdk","version":"2.3.9-rc.0","type":"module"}
1
+ {"name":"@1inch/fusion-sdk","version":"2.3.9-rc.10","type":"module"}
@@ -59,13 +59,6 @@ function _define_property(obj, key, value) {
59
59
  }
60
60
  return obj;
61
61
  }
62
- function _instanceof(left, right) {
63
- if (right != null && typeof Symbol !== "undefined" && right[Symbol.hasInstance]) {
64
- return !!right[Symbol.hasInstance](left);
65
- } else {
66
- return left instanceof right;
67
- }
68
- }
69
62
  function _ts_generator(thisArg, body) {
70
63
  var f, y, t, g, _ = {
71
64
  label: 0,
@@ -165,7 +158,6 @@ import { Address, MakerTraits } from '@1inch/limit-order-sdk';
165
158
  import { encodeCancelOrder } from './encoders/index.js';
166
159
  import { FusionApi, QuoterRequest, RelayerRequest, QuoterCustomPresetRequest } from '../api/index.js';
167
160
  import { ActiveOrdersRequest, OrdersByMakerRequest, OrderStatusRequest } from '../api/orders/index.js';
168
- import { FusionOrderFromNative } from '../fusion-order/index.js';
169
161
  export var FusionSDK = /*#__PURE__*/ function() {
170
162
  "use strict";
171
163
  function FusionSDK(config) {
@@ -301,7 +293,7 @@ export var FusionSDK = /*#__PURE__*/ function() {
301
293
  value: function createOrder(params) {
302
294
  var _this = this;
303
295
  return _async_to_generator(function() {
304
- var quote, order, hash;
296
+ var _quote_nativeOrderFactory, quote, order, hash;
305
297
  return _ts_generator(this, function(_state) {
306
298
  switch(_state.label){
307
299
  case 0:
@@ -329,7 +321,8 @@ export var FusionSDK = /*#__PURE__*/ function() {
329
321
  {
330
322
  order: order,
331
323
  hash: hash,
332
- quoteId: quote.quoteId
324
+ quoteId: quote.quoteId,
325
+ nativeOrderFactory: (_quote_nativeOrderFactory = quote.nativeOrderFactory) === null || _quote_nativeOrderFactory === void 0 ? void 0 : _quote_nativeOrderFactory.factory
333
326
  }
334
327
  ];
335
328
  }
@@ -342,12 +335,13 @@ export var FusionSDK = /*#__PURE__*/ function() {
342
335
  value: /**
343
336
  * Submit order to relayer
344
337
  *
345
- * Note, that orders from native assets must be submitted onchain as well
346
- * @see EthOrdersExtension.depositForOrder
338
+ * Note, that orders from native assets must be submitted with `submitNativeOrder`
339
+ *
340
+ * @see FusionSDK.submitNativeOrder
347
341
  */ function submitOrder(order, quoteId) {
348
342
  var _this = this;
349
343
  return _async_to_generator(function() {
350
- var signature, orderStruct, relayerRequest;
344
+ var signature;
351
345
  return _ts_generator(this, function(_state) {
352
346
  switch(_state.label){
353
347
  case 0:
@@ -357,34 +351,36 @@ export var FusionSDK = /*#__PURE__*/ function() {
357
351
  ];
358
352
  case 1:
359
353
  signature = _state.sent();
360
- orderStruct = order.build();
361
- relayerRequest = RelayerRequest.new({
362
- order: orderStruct,
363
- signature: signature,
364
- quoteId: quoteId,
365
- extension: order.extension.encode()
366
- });
367
- return [
368
- 4,
369
- _this.api.submitOrder(relayerRequest)
370
- ];
371
- case 2:
372
- _state.sent();
373
354
  return [
374
355
  2,
375
- {
376
- order: orderStruct,
377
- signature: signature,
378
- quoteId: quoteId,
379
- orderHash: order.getOrderHash(_this.config.network),
380
- extension: relayerRequest.extension
381
- }
356
+ _this._submitOrder(order, quoteId, signature)
382
357
  ];
383
358
  }
384
359
  });
385
360
  })();
386
361
  }
387
362
  },
363
+ {
364
+ key: "submitNativeOrder",
365
+ value: /**
366
+ * Submit order to relayer
367
+ *
368
+ * Note, that orders from native assets must be submitted on-chain as well
369
+ * @see NativeOrdersFactory.create
370
+ */ function submitNativeOrder(order, maker, quoteId) {
371
+ var _this = this;
372
+ return _async_to_generator(function() {
373
+ var signature;
374
+ return _ts_generator(this, function(_state) {
375
+ signature = _this.signNativeOrder(order, maker);
376
+ return [
377
+ 2,
378
+ _this._submitOrder(order, quoteId, signature)
379
+ ];
380
+ });
381
+ })();
382
+ }
383
+ },
388
384
  {
389
385
  key: "placeOrder",
390
386
  value: function placeOrder(params) {
@@ -442,17 +438,17 @@ export var FusionSDK = /*#__PURE__*/ function() {
442
438
  },
443
439
  {
444
440
  key: "signOrder",
445
- value: function signOrder(order) {
441
+ value: /**
442
+ * Sign order using `blockchainProvider` from config
443
+ *
444
+ * Use FusionSDK.signNativeOrder for signing orders from native asset
445
+ *
446
+ * @see FusionSDK.signNativeOrder
447
+ */ function signOrder(order) {
446
448
  var _this = this;
447
449
  return _async_to_generator(function() {
448
450
  var orderStruct, data;
449
451
  return _ts_generator(this, function(_state) {
450
- if (_instanceof(order, FusionOrderFromNative)) {
451
- return [
452
- 2,
453
- order.realMaker.toString()
454
- ];
455
- }
456
452
  if (!_this.config.blockchainProvider) {
457
453
  throw new Error('blockchainProvider has not set to config');
458
454
  }
@@ -466,6 +462,49 @@ export var FusionSDK = /*#__PURE__*/ function() {
466
462
  })();
467
463
  }
468
464
  },
465
+ {
466
+ key: "signNativeOrder",
467
+ value: function signNativeOrder(order, maker) {
468
+ return order.nativeSignature(maker);
469
+ }
470
+ },
471
+ {
472
+ key: "_submitOrder",
473
+ value: function _submitOrder(order, quoteId, signature) {
474
+ var _this = this;
475
+ return _async_to_generator(function() {
476
+ var orderStruct, relayerRequest;
477
+ return _ts_generator(this, function(_state) {
478
+ switch(_state.label){
479
+ case 0:
480
+ orderStruct = order.build();
481
+ relayerRequest = RelayerRequest.new({
482
+ order: orderStruct,
483
+ signature: signature,
484
+ quoteId: quoteId,
485
+ extension: order.extension.encode()
486
+ });
487
+ return [
488
+ 4,
489
+ _this.api.submitOrder(relayerRequest)
490
+ ];
491
+ case 1:
492
+ _state.sent();
493
+ return [
494
+ 2,
495
+ {
496
+ order: orderStruct,
497
+ signature: signature,
498
+ quoteId: quoteId,
499
+ orderHash: order.getOrderHash(_this.config.network),
500
+ extension: relayerRequest.extension
501
+ }
502
+ ];
503
+ }
504
+ });
505
+ })();
506
+ }
507
+ },
469
508
  {
470
509
  key: "getQuoteResult",
471
510
  value: function getQuoteResult(params) {
@@ -2,12 +2,13 @@ import { Address } from '@1inch/limit-order-sdk';
2
2
  import { FusionOrderParamsData, IntegratorFeeParams, ResolverFeePreset } from './types.js';
3
3
  import { Cost, PresetEnum, QuoterResponse } from '../types.js';
4
4
  import { Preset } from '../preset.js';
5
- import { FusionOrder, FusionOrderFromNative } from '../../../fusion-order/index.js';
5
+ import { FusionOrder } from '../../../fusion-order/index.js';
6
6
  import { QuoterRequest } from '../quoter.request.js';
7
+ import { ProxyFactory } from '../../../index.js';
7
8
  export declare class Quote {
8
9
  private readonly params;
9
10
  readonly settlementAddress: Address;
10
- readonly ethOrdersAddress?: Address;
11
+ readonly nativeOrderFactory?: ProxyFactory;
11
12
  readonly fromTokenAmount: bigint;
12
13
  readonly presets: {
13
14
  [PresetEnum.fast]: Preset;
@@ -27,7 +28,7 @@ export declare class Quote {
27
28
  readonly surplusFee?: number;
28
29
  readonly integratorFeeParams?: IntegratorFeeParams;
29
30
  constructor(params: QuoterRequest, response: QuoterResponse);
30
- createFusionOrder(paramsData: Omit<FusionOrderParamsData, 'permit' | 'isPermit2'>): FusionOrder | FusionOrderFromNative;
31
+ createFusionOrder(paramsData: Omit<FusionOrderParamsData, 'permit' | 'isPermit2'>): FusionOrder;
31
32
  getPreset(type?: PresetEnum): Preset;
32
33
  private getWhitelist;
33
34
  private _createOrder;