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

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 (47) hide show
  1. package/dist/cjs/abi/NativeOrderFactory.abi.json +217 -0
  2. package/dist/cjs/abi/NativeOrderImpl.abi.json +281 -0
  3. package/dist/cjs/api/quoter/quote/quote.js +5 -4
  4. package/dist/cjs/api/quoter/types.js +0 -2
  5. package/dist/cjs/contracts/index.js +20 -0
  6. package/dist/cjs/contracts/native-order-factory.js +115 -0
  7. package/dist/cjs/contracts/native-order-impl.js +129 -0
  8. package/dist/cjs/contracts/proxy-factory.js +87 -0
  9. package/dist/cjs/fusion-order/fusion-order.js +66 -2
  10. package/dist/cjs/fusion-order/fusion-order.spec.js +73 -0
  11. package/dist/cjs/fusion-order/index.js +0 -1
  12. package/dist/cjs/index.js +1 -0
  13. package/dist/cjs/sdk/sdk.js +76 -38
  14. package/dist/esm/abi/NativeOrderFactory.abi.json +217 -0
  15. package/dist/esm/abi/NativeOrderImpl.abi.json +281 -0
  16. package/dist/esm/api/quoter/quote/quote.js +6 -5
  17. package/dist/esm/api/quoter/types.js +0 -2
  18. package/dist/esm/contracts/index.js +3 -0
  19. package/dist/esm/contracts/native-order-factory.js +100 -0
  20. package/dist/esm/contracts/native-order-impl.js +114 -0
  21. package/dist/esm/contracts/proxy-factory.js +72 -0
  22. package/dist/esm/fusion-order/fusion-order.js +64 -0
  23. package/dist/esm/fusion-order/fusion-order.spec.js +73 -0
  24. package/dist/esm/fusion-order/index.js +0 -1
  25. package/dist/esm/index.js +1 -0
  26. package/dist/esm/package.json +1 -1
  27. package/dist/esm/sdk/sdk.js +76 -38
  28. package/dist/types/src/api/quoter/quote/quote.d.ts +4 -3
  29. package/dist/types/src/api/quoter/types.d.ts +2 -1
  30. package/dist/types/src/contracts/index.d.ts +3 -0
  31. package/dist/types/src/contracts/native-order-factory.d.ts +9 -0
  32. package/dist/types/src/contracts/native-order-impl.d.ts +9 -0
  33. package/dist/types/src/contracts/proxy-factory.d.ts +8 -0
  34. package/dist/types/src/fusion-order/fusion-order.d.ts +6 -0
  35. package/dist/types/src/fusion-order/index.d.ts +0 -1
  36. package/dist/types/src/index.d.ts +1 -0
  37. package/dist/types/src/sdk/sdk.d.ts +4 -0
  38. package/dist/types/tsconfig.types.tsbuildinfo +1 -1
  39. package/package.json +1 -1
  40. package/dist/cjs/abi/ETHOrders.abi.json +0 -431
  41. package/dist/cjs/contracts/eth-orders.extension.js +0 -105
  42. package/dist/cjs/fusion-order/fusion-order-from-native.js +0 -183
  43. package/dist/esm/abi/ETHOrders.abi.json +0 -431
  44. package/dist/esm/contracts/eth-orders.extension.js +0 -90
  45. package/dist/esm/fusion-order/fusion-order-from-native.js +0 -173
  46. package/dist/types/src/contracts/eth-orders.extension.d.ts +0 -11
  47. package/dist/types/src/fusion-order/fusion-order-from-native.d.ts +0 -13
@@ -0,0 +1,129 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", {
3
+ value: true
4
+ });
5
+ Object.defineProperty(exports, "NativeOrdersImpl", {
6
+ enumerable: true,
7
+ get: function() {
8
+ return NativeOrdersImpl;
9
+ }
10
+ });
11
+ var _ethers = require("ethers");
12
+ var _NativeOrderImplabijson = /*#__PURE__*/ _interop_require_default(require("../abi/NativeOrderImpl.abi.json"));
13
+ function _class_call_check(instance, Constructor) {
14
+ if (!(instance instanceof Constructor)) {
15
+ throw new TypeError("Cannot call a class as a function");
16
+ }
17
+ }
18
+ function _defineProperties(target, props) {
19
+ for(var i = 0; i < props.length; i++){
20
+ var descriptor = props[i];
21
+ descriptor.enumerable = descriptor.enumerable || false;
22
+ descriptor.configurable = true;
23
+ if ("value" in descriptor) descriptor.writable = true;
24
+ Object.defineProperty(target, descriptor.key, descriptor);
25
+ }
26
+ }
27
+ function _create_class(Constructor, protoProps, staticProps) {
28
+ if (protoProps) _defineProperties(Constructor.prototype, protoProps);
29
+ if (staticProps) _defineProperties(Constructor, staticProps);
30
+ return Constructor;
31
+ }
32
+ function _define_property(obj, key, value) {
33
+ if (key in obj) {
34
+ Object.defineProperty(obj, key, {
35
+ value: value,
36
+ enumerable: true,
37
+ configurable: true,
38
+ writable: true
39
+ });
40
+ } else {
41
+ obj[key] = value;
42
+ }
43
+ return obj;
44
+ }
45
+ function _interop_require_default(obj) {
46
+ return obj && obj.__esModule ? obj : {
47
+ default: obj
48
+ };
49
+ }
50
+ function _object_spread(target) {
51
+ for(var i = 1; i < arguments.length; i++){
52
+ var source = arguments[i] != null ? arguments[i] : {};
53
+ var ownKeys = Object.keys(source);
54
+ if (typeof Object.getOwnPropertySymbols === "function") {
55
+ ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function(sym) {
56
+ return Object.getOwnPropertyDescriptor(source, sym).enumerable;
57
+ }));
58
+ }
59
+ ownKeys.forEach(function(key) {
60
+ _define_property(target, key, source[key]);
61
+ });
62
+ }
63
+ return target;
64
+ }
65
+ function ownKeys(object, enumerableOnly) {
66
+ var keys = Object.keys(object);
67
+ if (Object.getOwnPropertySymbols) {
68
+ var symbols = Object.getOwnPropertySymbols(object);
69
+ if (enumerableOnly) {
70
+ symbols = symbols.filter(function(sym) {
71
+ return Object.getOwnPropertyDescriptor(object, sym).enumerable;
72
+ });
73
+ }
74
+ keys.push.apply(keys, symbols);
75
+ }
76
+ return keys;
77
+ }
78
+ function _object_spread_props(target, source) {
79
+ source = source != null ? source : {};
80
+ if (Object.getOwnPropertyDescriptors) {
81
+ Object.defineProperties(target, Object.getOwnPropertyDescriptors(source));
82
+ } else {
83
+ ownKeys(Object(source)).forEach(function(key) {
84
+ Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));
85
+ });
86
+ }
87
+ return target;
88
+ }
89
+ var NativeOrdersImpl = /*#__PURE__*/ function() {
90
+ "use strict";
91
+ function NativeOrdersImpl(address) {
92
+ _class_call_check(this, NativeOrdersImpl);
93
+ _define_property(this, "address", void 0);
94
+ _define_property(this, "iface", void 0);
95
+ this.address = address;
96
+ this.iface = new _ethers.Interface(_NativeOrderImplabijson.default);
97
+ }
98
+ _create_class(NativeOrdersImpl, [
99
+ {
100
+ key: "cancel",
101
+ value: function cancel(maker, order) {
102
+ return {
103
+ to: this.address,
104
+ value: 0n,
105
+ data: this.iface.encodeFunctionData('cancelOrder', [
106
+ _object_spread_props(_object_spread({}, order), {
107
+ maker: maker.toString()
108
+ })
109
+ ])
110
+ };
111
+ }
112
+ },
113
+ {
114
+ key: "cancelExpiredOrderByResolver",
115
+ value: function cancelExpiredOrderByResolver(maker, order) {
116
+ return {
117
+ to: this.address,
118
+ value: 0n,
119
+ data: this.iface.encodeFunctionData('cancelExpiredOrderByResolver', [
120
+ _object_spread_props(_object_spread({}, order), {
121
+ maker: maker.toString()
122
+ })
123
+ ])
124
+ };
125
+ }
126
+ }
127
+ ]);
128
+ return NativeOrdersImpl;
129
+ }();
@@ -0,0 +1,87 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", {
3
+ value: true
4
+ });
5
+ Object.defineProperty(exports, "ProxyFactory", {
6
+ enumerable: true,
7
+ get: function() {
8
+ return ProxyFactory;
9
+ }
10
+ });
11
+ var _byteutils = require("@1inch/byte-utils");
12
+ var _limitordersdk = require("@1inch/limit-order-sdk");
13
+ var _ethers = require("ethers");
14
+ var _assert = /*#__PURE__*/ _interop_require_default(require("assert"));
15
+ function _class_call_check(instance, Constructor) {
16
+ if (!(instance instanceof Constructor)) {
17
+ throw new TypeError("Cannot call a class as a function");
18
+ }
19
+ }
20
+ function _defineProperties(target, props) {
21
+ for(var i = 0; i < props.length; i++){
22
+ var descriptor = props[i];
23
+ descriptor.enumerable = descriptor.enumerable || false;
24
+ descriptor.configurable = true;
25
+ if ("value" in descriptor) descriptor.writable = true;
26
+ Object.defineProperty(target, descriptor.key, descriptor);
27
+ }
28
+ }
29
+ function _create_class(Constructor, protoProps, staticProps) {
30
+ if (protoProps) _defineProperties(Constructor.prototype, protoProps);
31
+ if (staticProps) _defineProperties(Constructor, staticProps);
32
+ return Constructor;
33
+ }
34
+ function _define_property(obj, key, value) {
35
+ if (key in obj) {
36
+ Object.defineProperty(obj, key, {
37
+ value: value,
38
+ enumerable: true,
39
+ configurable: true,
40
+ writable: true
41
+ });
42
+ } else {
43
+ obj[key] = value;
44
+ }
45
+ return obj;
46
+ }
47
+ function _interop_require_default(obj) {
48
+ return obj && obj.__esModule ? obj : {
49
+ default: obj
50
+ };
51
+ }
52
+ var ProxyFactory = /*#__PURE__*/ function() {
53
+ "use strict";
54
+ function ProxyFactory(factory, implementation) {
55
+ _class_call_check(this, ProxyFactory);
56
+ _define_property(this, "factory", void 0);
57
+ _define_property(this, "implementation", void 0);
58
+ this.factory = factory;
59
+ this.implementation = implementation;
60
+ }
61
+ _create_class(ProxyFactory, [
62
+ {
63
+ key: "getProxyAddress",
64
+ value: /**
65
+ * Calculates deterministic address of proxy contract
66
+ *
67
+ * @see https://github.com/OpenZeppelin/openzeppelin-contracts/blob/69c8def5f222ff96f2b5beff05dfba996368aa79/contracts/proxy/Clones.sol#L60
68
+ *
69
+ * @param salt must be valid hex string
70
+ * @returns address of proxy contract
71
+ */ function getProxyAddress(salt) {
72
+ (0, _assert.default)((0, _byteutils.isHexBytes)(salt), 'invalid salt');
73
+ return new _limitordersdk.Address((0, _ethers.getCreate2Address)(this.factory.toString(), salt, ProxyFactory.calcProxyBytecodeHash(this.implementation)));
74
+ }
75
+ }
76
+ ], [
77
+ {
78
+ key: "calcProxyBytecodeHash",
79
+ value: /**
80
+ * See https://github.com/1inch/cross-chain-swap/blob/03d99b9604d8f7a5a396720fbe1059f7d94db762/contracts/libraries/ProxyHashLib.sol#L14
81
+ */ function calcProxyBytecodeHash(impl) {
82
+ return (0, _ethers.keccak256)("0x3d602d80600a3d3981f3363d3d373d3d3d363d73".concat((0, _byteutils.trim0x)(impl.toString()), "5af43d82803e903d91602b57fd5bf3"));
83
+ }
84
+ }
85
+ ]);
86
+ return ProxyFactory;
87
+ }();
@@ -13,8 +13,9 @@ var _assert = /*#__PURE__*/ _interop_require_default(require("assert"));
13
13
  var _fusionextension = require("./fusion-extension.js");
14
14
  var _sourcetrack = require("./source-track.js");
15
15
  var _surplusparams = require("./surplus-params.js");
16
+ var _constants = require("./constants.js");
16
17
  var _index = require("../amount-calculator/auction-calculator/index.js");
17
- var _constants = require("../constants.js");
18
+ var _constants1 = require("../constants.js");
18
19
  var _amounts = require("../utils/amounts.js");
19
20
  var _time = require("../utils/time.js");
20
21
  var _amountcalculator = require("../amount-calculator/amount-calculator.js");
@@ -444,6 +445,32 @@ var FusionOrder = /*#__PURE__*/ function() {
444
445
  value: function getAmountCalculator() {
445
446
  return _amountcalculator.AmountCalculator.fromExtension(this.fusionExtension);
446
447
  }
448
+ },
449
+ {
450
+ key: "isNative",
451
+ value: function isNative(chainId, ethOrderFactory, signature) {
452
+ return FusionOrder.isNativeOrder(chainId, ethOrderFactory, this.build(), signature);
453
+ }
454
+ },
455
+ {
456
+ key: "nativeSignature",
457
+ value: /**
458
+ * Returns signature for submitting native order on-chain
459
+ * Only valid if order is native
460
+ *
461
+ * @see FusionOrder.isNative
462
+ * @see FusionOrder.fromNative
463
+ */ function nativeSignature(maker) {
464
+ return new _limitordersdk.LimitOrder({
465
+ maker: maker,
466
+ makerAsset: this.makerAsset,
467
+ makingAmount: this.makingAmount,
468
+ takingAmount: this.takingAmount,
469
+ takerAsset: this.takerAsset,
470
+ receiver: this.receiver,
471
+ salt: this.salt
472
+ }, this.inner.makerTraits).toCalldata();
473
+ }
447
474
  }
448
475
  ], [
449
476
  {
@@ -455,6 +482,43 @@ var FusionOrder = /*#__PURE__*/ function() {
455
482
  return new FusionOrder(settlementExtension, orderInfo, details.auction, details.whitelist, details.surplus, extra);
456
483
  }
457
484
  },
485
+ {
486
+ key: "isNativeOrder",
487
+ value: function isNativeOrder(chainId, ethOrderFactory, order, signature) {
488
+ try {
489
+ var orderWithRealMaker = _limitordersdk.LimitOrder.fromCalldata(signature);
490
+ var expectedAddress = ethOrderFactory.getProxyAddress(orderWithRealMaker.getOrderHash(chainId));
491
+ return expectedAddress.equal(new _limitordersdk.Address(order.maker));
492
+ } catch (e) {
493
+ return false;
494
+ }
495
+ }
496
+ },
497
+ {
498
+ key: "fromNative",
499
+ value: /**
500
+ * Create new order from native asset
501
+ *
502
+ *
503
+ * Note, that such order should be submitted on-chain through `ETHOrders.depositForOrder` AND off-chain through submit to relayer
504
+ * // todo: update link
505
+ * @see ETHOrders.depositForOrder https://github.com/1inch/limit-order-protocol/blob/c100474444cd71cf7989cd8a63f375e72656b8b4/contracts/extensions/ETHOrders.sol#L89
506
+ */ function fromNative(chainId, ethOrdersFactory, /**
507
+ * Fusion extension address
508
+ * @see https://github.com/1inch/limit-order-settlement
509
+ */ settlementExtension, orderInfo, details, extra) {
510
+ var _orderInfo = _object_spread_props(_object_spread({}, orderInfo), {
511
+ makerAsset: _constants.CHAIN_TO_WRAPPER[chainId],
512
+ receiver: orderInfo.receiver || orderInfo.maker
513
+ });
514
+ // create temp order to calc order hash
515
+ var _order = FusionOrder.new(settlementExtension, _orderInfo, details, extra);
516
+ var finalOrderInfo = _object_spread_props(_object_spread({}, _orderInfo), {
517
+ maker: ethOrdersFactory.getProxyAddress(_order.getOrderHash(chainId))
518
+ });
519
+ return new FusionOrder(settlementExtension, finalOrderInfo, details.auction, details.whitelist, details.surplus, extra);
520
+ }
521
+ },
458
522
  {
459
523
  key: "fromDataAndExtension",
460
524
  value: /**
@@ -484,7 +548,7 @@ var FusionOrder = /*#__PURE__*/ function() {
484
548
  allowPartialFills: makerTraits.isPartialFillAllowed(),
485
549
  enablePermit2: makerTraits.isPermit2(),
486
550
  nonce: makerTraits.nonceOrEpoch(),
487
- permit: extension.makerPermit === _constants.ZX ? undefined : _limitordersdk.Interaction.decode(extension.makerPermit).data,
551
+ permit: extension.makerPermit === _constants1.ZX ? undefined : _limitordersdk.Interaction.decode(extension.makerPermit).data,
488
552
  unwrapWETH: makerTraits.isNativeUnwrapEnabled(),
489
553
  orderExpirationDelay: orderExpirationDelay,
490
554
  fees: extra === null || extra === void 0 ? void 0 : extra.fees
@@ -9,6 +9,8 @@ var _index = require("./auction-details/index.js");
9
9
  var _index1 = require("./whitelist/index.js");
10
10
  var _surplusparams = require("./surplus-params.js");
11
11
  var _index2 = require("./fees/index.js");
12
+ var _proxyfactory = require("../contracts/proxy-factory.js");
13
+ var _constants = require("../constants.js");
12
14
  var _index3 = require("../amount-calculator/index.js");
13
15
  var _time = require("../utils/time.js");
14
16
  describe('Fusion Order', function() {
@@ -296,3 +298,74 @@ describe('Fusion Order', function() {
296
298
  expect(surplus).toEqual(25000000n);
297
299
  });
298
300
  });
301
+ describe('FusionOrder Native', function() {
302
+ it('should correct detect that order is from native asset', function() {
303
+ var ethOrderFactory = new _proxyfactory.ProxyFactory(_limitordersdk.Address.fromBigInt(1n), _limitordersdk.Address.fromBigInt(2n));
304
+ var chainId = _constants.NetworkEnum.ETHEREUM;
305
+ var settlementExt = _limitordersdk.Address.fromBigInt(3n);
306
+ var maker = new _limitordersdk.Address('0x00000000219ab540356cbb839cbe05303d7705fa');
307
+ var nativeOrder = _fusionorder.FusionOrder.fromNative(chainId, ethOrderFactory, settlementExt, {
308
+ takerAsset: new _limitordersdk.Address('0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48'),
309
+ makingAmount: 1000000000000000000n,
310
+ takingAmount: 1420000000n,
311
+ maker: maker,
312
+ salt: 10n
313
+ }, {
314
+ auction: new _index.AuctionDetails({
315
+ duration: 180n,
316
+ startTime: 1673548149n,
317
+ initialRateBump: 50000,
318
+ points: [
319
+ {
320
+ coefficient: 20000,
321
+ delay: 12
322
+ }
323
+ ]
324
+ }),
325
+ whitelist: _index1.Whitelist.new(1673548139n, [
326
+ {
327
+ address: new _limitordersdk.Address('0x00000000219ab540356cbb839cbe05303d7705fa'),
328
+ allowFrom: 0n
329
+ }
330
+ ]),
331
+ surplus: _surplusparams.SurplusParams.NO_FEE
332
+ });
333
+ expect(nativeOrder.isNative(chainId, ethOrderFactory, nativeOrder.nativeSignature(maker))).toEqual(true);
334
+ expect(_fusionorder.FusionOrder.fromDataAndExtension(nativeOrder.build(), nativeOrder.extension).isNative(chainId, ethOrderFactory, nativeOrder.nativeSignature(maker))).toEqual(true);
335
+ });
336
+ it('should correct detect that order is NOT from native asset', function() {
337
+ var ethOrderFactory = new _proxyfactory.ProxyFactory(_limitordersdk.Address.fromBigInt(1n), _limitordersdk.Address.fromBigInt(2n));
338
+ var chainId = _constants.NetworkEnum.ETHEREUM;
339
+ var settlementExt = _limitordersdk.Address.fromBigInt(3n);
340
+ var maker = new _limitordersdk.Address('0x00000000219ab540356cbb839cbe05303d7705fa');
341
+ var nativeOrder = _fusionorder.FusionOrder.new(settlementExt, {
342
+ makerAsset: new _limitordersdk.Address('0x1000000000000000000000000000000000000000'),
343
+ takerAsset: new _limitordersdk.Address('0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48'),
344
+ makingAmount: 1000000000000000000n,
345
+ takingAmount: 1420000000n,
346
+ maker: maker,
347
+ salt: 10n
348
+ }, {
349
+ auction: new _index.AuctionDetails({
350
+ duration: 180n,
351
+ startTime: 1673548149n,
352
+ initialRateBump: 50000,
353
+ points: [
354
+ {
355
+ coefficient: 20000,
356
+ delay: 12
357
+ }
358
+ ]
359
+ }),
360
+ whitelist: _index1.Whitelist.new(1673548139n, [
361
+ {
362
+ address: new _limitordersdk.Address('0x00000000219ab540356cbb839cbe05303d7705fa'),
363
+ allowFrom: 0n
364
+ }
365
+ ]),
366
+ surplus: _surplusparams.SurplusParams.NO_FEE
367
+ });
368
+ expect(nativeOrder.isNative(chainId, ethOrderFactory, nativeOrder.nativeSignature(maker))).toEqual(false);
369
+ expect(_fusionorder.FusionOrder.fromDataAndExtension(nativeOrder.build(), nativeOrder.extension).isNative(chainId, ethOrderFactory, nativeOrder.nativeSignature(maker))).toEqual(false);
370
+ });
371
+ });
@@ -9,7 +9,6 @@ Object.defineProperty(exports, "CHAIN_TO_WRAPPER", {
9
9
  }
10
10
  });
11
11
  _export_star(require("./fusion-order.js"), exports);
12
- _export_star(require("./fusion-order-from-native.js"), exports);
13
12
  _export_star(require("./auction-details/index.js"), exports);
14
13
  _export_star(require("./whitelist/index.js"), exports);
15
14
  _export_star(require("./fusion-extension.js"), exports);
package/dist/cjs/index.js CHANGED
@@ -76,6 +76,7 @@ _export_star(require("./utils/time.js"), exports);
76
76
  _export_star(require("./validations.js"), exports);
77
77
  _export_star(require("./ws-api/index.js"), exports);
78
78
  _export_star(require("./errors.js"), exports);
79
+ _export_star(require("./contracts/index.js"), exports);
79
80
  var _index = require("./api/index.js");
80
81
  function _export_star(from, to) {
81
82
  Object.keys(from).forEach(function(k) {
@@ -12,7 +12,6 @@ var _limitordersdk = require("@1inch/limit-order-sdk");
12
12
  var _index = require("./encoders/index.js");
13
13
  var _index1 = require("../api/index.js");
14
14
  var _index2 = require("../api/orders/index.js");
15
- var _index3 = require("../fusion-order/index.js");
16
15
  function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) {
17
16
  try {
18
17
  var info = gen[key](arg);
@@ -74,13 +73,6 @@ function _define_property(obj, key, value) {
74
73
  }
75
74
  return obj;
76
75
  }
77
- function _instanceof(left, right) {
78
- if (right != null && typeof Symbol !== "undefined" && right[Symbol.hasInstance]) {
79
- return !!right[Symbol.hasInstance](left);
80
- } else {
81
- return left instanceof right;
82
- }
83
- }
84
76
  function _ts_generator(thisArg, body) {
85
77
  var f, y, t, g, _ = {
86
78
  label: 0,
@@ -352,12 +344,13 @@ var FusionSDK = /*#__PURE__*/ function() {
352
344
  value: /**
353
345
  * Submit order to relayer
354
346
  *
355
- * Note, that orders from native assets must be submitted onchain as well
356
- * @see EthOrdersExtension.depositForOrder
347
+ * Note, that orders from native assets must be submitted with `submitNativeOrder`
348
+ *
349
+ * @see FusionSDK.submitNativeOrder
357
350
  */ function submitOrder(order, quoteId) {
358
351
  var _this = this;
359
352
  return _async_to_generator(function() {
360
- var signature, orderStruct, relayerRequest;
353
+ var signature;
361
354
  return _ts_generator(this, function(_state) {
362
355
  switch(_state.label){
363
356
  case 0:
@@ -367,34 +360,36 @@ var FusionSDK = /*#__PURE__*/ function() {
367
360
  ];
368
361
  case 1:
369
362
  signature = _state.sent();
370
- orderStruct = order.build();
371
- relayerRequest = _index1.RelayerRequest.new({
372
- order: orderStruct,
373
- signature: signature,
374
- quoteId: quoteId,
375
- extension: order.extension.encode()
376
- });
377
- return [
378
- 4,
379
- _this.api.submitOrder(relayerRequest)
380
- ];
381
- case 2:
382
- _state.sent();
383
363
  return [
384
364
  2,
385
- {
386
- order: orderStruct,
387
- signature: signature,
388
- quoteId: quoteId,
389
- orderHash: order.getOrderHash(_this.config.network),
390
- extension: relayerRequest.extension
391
- }
365
+ _this._submitOrder(order, quoteId, signature)
392
366
  ];
393
367
  }
394
368
  });
395
369
  })();
396
370
  }
397
371
  },
372
+ {
373
+ key: "submitNativeOrder",
374
+ value: /**
375
+ * Submit order to relayer
376
+ *
377
+ * Note, that orders from native assets must be submitted on-chain as well
378
+ * @see NativeOrdersFactory.create
379
+ */ function submitNativeOrder(order, maker, quoteId) {
380
+ var _this = this;
381
+ return _async_to_generator(function() {
382
+ var signature;
383
+ return _ts_generator(this, function(_state) {
384
+ signature = _this.signNativeOrder(order, maker);
385
+ return [
386
+ 2,
387
+ _this._submitOrder(order, quoteId, signature)
388
+ ];
389
+ });
390
+ })();
391
+ }
392
+ },
398
393
  {
399
394
  key: "placeOrder",
400
395
  value: function placeOrder(params) {
@@ -452,17 +447,17 @@ var FusionSDK = /*#__PURE__*/ function() {
452
447
  },
453
448
  {
454
449
  key: "signOrder",
455
- value: function signOrder(order) {
450
+ value: /**
451
+ * Sign order using `blockchainProvider` from config
452
+ *
453
+ * Use FusionSDK.signNativeOrder for signing orders from native asset
454
+ *
455
+ * @see FusionSDK.signNativeOrder
456
+ */ function signOrder(order) {
456
457
  var _this = this;
457
458
  return _async_to_generator(function() {
458
459
  var orderStruct, data;
459
460
  return _ts_generator(this, function(_state) {
460
- if (_instanceof(order, _index3.FusionOrderFromNative)) {
461
- return [
462
- 2,
463
- order.realMaker.toString()
464
- ];
465
- }
466
461
  if (!_this.config.blockchainProvider) {
467
462
  throw new Error('blockchainProvider has not set to config');
468
463
  }
@@ -476,6 +471,49 @@ var FusionSDK = /*#__PURE__*/ function() {
476
471
  })();
477
472
  }
478
473
  },
474
+ {
475
+ key: "signNativeOrder",
476
+ value: function signNativeOrder(order, maker) {
477
+ return order.nativeSignature(maker);
478
+ }
479
+ },
480
+ {
481
+ key: "_submitOrder",
482
+ value: function _submitOrder(order, quoteId, signature) {
483
+ var _this = this;
484
+ return _async_to_generator(function() {
485
+ var orderStruct, relayerRequest;
486
+ return _ts_generator(this, function(_state) {
487
+ switch(_state.label){
488
+ case 0:
489
+ orderStruct = order.build();
490
+ relayerRequest = _index1.RelayerRequest.new({
491
+ order: orderStruct,
492
+ signature: signature,
493
+ quoteId: quoteId,
494
+ extension: order.extension.encode()
495
+ });
496
+ return [
497
+ 4,
498
+ _this.api.submitOrder(relayerRequest)
499
+ ];
500
+ case 1:
501
+ _state.sent();
502
+ return [
503
+ 2,
504
+ {
505
+ order: orderStruct,
506
+ signature: signature,
507
+ quoteId: quoteId,
508
+ orderHash: order.getOrderHash(_this.config.network),
509
+ extension: relayerRequest.extension
510
+ }
511
+ ];
512
+ }
513
+ });
514
+ })();
515
+ }
516
+ },
479
517
  {
480
518
  key: "getQuoteResult",
481
519
  value: function getQuoteResult(params) {