@1inch/fusion-sdk 2.3.8 → 2.3.9-rc.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cjs/abi/NativeOrderFactory.abi.json +217 -0
- package/dist/cjs/abi/NativeOrderImpl.abi.json +281 -0
- package/dist/cjs/api/quoter/quote/quote.js +29 -4
- package/dist/cjs/contracts/index.js +20 -0
- package/dist/cjs/contracts/native-order-factory.js +115 -0
- package/dist/cjs/contracts/native-order-impl.js +129 -0
- package/dist/cjs/contracts/proxy-factory.js +87 -0
- package/dist/cjs/contracts/types.js +4 -0
- package/dist/cjs/fusion-order/cancellation-auction.js +81 -0
- package/dist/cjs/fusion-order/fusion-order.js +71 -25
- package/dist/cjs/fusion-order/fusion-order.spec.js +73 -0
- package/dist/cjs/fusion-order/index.js +1 -0
- package/dist/cjs/fusion-order/types.js +4 -0
- package/dist/cjs/index.js +1 -0
- package/dist/cjs/sdk/sdk.js +83 -28
- package/dist/esm/abi/NativeOrderFactory.abi.json +217 -0
- package/dist/esm/abi/NativeOrderImpl.abi.json +281 -0
- package/dist/esm/api/quoter/quote/quote.js +24 -4
- package/dist/esm/contracts/index.js +3 -0
- package/dist/esm/contracts/native-order-factory.js +100 -0
- package/dist/esm/contracts/native-order-impl.js +114 -0
- package/dist/esm/contracts/proxy-factory.js +72 -0
- package/dist/esm/contracts/types.js +1 -0
- package/dist/esm/fusion-order/cancellation-auction.js +66 -0
- package/dist/esm/fusion-order/fusion-order.js +69 -23
- package/dist/esm/fusion-order/fusion-order.spec.js +73 -0
- package/dist/esm/fusion-order/index.js +1 -0
- package/dist/esm/fusion-order/types.js +11 -0
- package/dist/esm/index.js +1 -0
- package/dist/esm/package.json +1 -1
- package/dist/esm/sdk/sdk.js +83 -28
- package/dist/types/src/api/quoter/quote/quote.d.ts +3 -0
- package/dist/types/src/api/quoter/types.d.ts +2 -0
- package/dist/types/src/contracts/index.d.ts +3 -0
- package/dist/types/src/contracts/native-order-factory.d.ts +9 -0
- package/dist/types/src/contracts/native-order-impl.d.ts +10 -0
- package/dist/types/src/contracts/proxy-factory.d.ts +8 -0
- package/dist/types/src/contracts/types.d.ts +6 -0
- package/dist/types/src/fusion-order/cancellation-auction.d.ts +7 -0
- package/dist/types/src/fusion-order/fusion-order.d.ts +9 -27
- package/dist/types/src/fusion-order/index.d.ts +1 -0
- package/dist/types/src/fusion-order/types.d.ts +20 -0
- package/dist/types/src/index.d.ts +1 -0
- package/dist/types/src/sdk/sdk.d.ts +4 -0
- package/dist/types/tsconfig.types.tsbuildinfo +1 -1
- package/package.json +1 -1
|
@@ -0,0 +1,115 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", {
|
|
3
|
+
value: true
|
|
4
|
+
});
|
|
5
|
+
Object.defineProperty(exports, "NativeOrdersFactory", {
|
|
6
|
+
enumerable: true,
|
|
7
|
+
get: function() {
|
|
8
|
+
return NativeOrdersFactory;
|
|
9
|
+
}
|
|
10
|
+
});
|
|
11
|
+
var _ethers = require("ethers");
|
|
12
|
+
var _NativeOrderFactoryabijson = /*#__PURE__*/ _interop_require_default(require("../abi/NativeOrderFactory.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 NativeOrdersFactory = /*#__PURE__*/ function() {
|
|
90
|
+
"use strict";
|
|
91
|
+
function NativeOrdersFactory(address) {
|
|
92
|
+
_class_call_check(this, NativeOrdersFactory);
|
|
93
|
+
_define_property(this, "address", void 0);
|
|
94
|
+
_define_property(this, "iface", void 0);
|
|
95
|
+
this.address = address;
|
|
96
|
+
this.iface = new _ethers.Interface(_NativeOrderFactoryabijson.default);
|
|
97
|
+
}
|
|
98
|
+
_create_class(NativeOrdersFactory, [
|
|
99
|
+
{
|
|
100
|
+
key: "create",
|
|
101
|
+
value: function create(maker, order) {
|
|
102
|
+
return {
|
|
103
|
+
to: this.address,
|
|
104
|
+
value: order.makingAmount,
|
|
105
|
+
data: this.iface.encodeFunctionData('create', [
|
|
106
|
+
_object_spread_props(_object_spread({}, order.build()), {
|
|
107
|
+
maker: maker.toString()
|
|
108
|
+
})
|
|
109
|
+
])
|
|
110
|
+
};
|
|
111
|
+
}
|
|
112
|
+
}
|
|
113
|
+
]);
|
|
114
|
+
return NativeOrdersFactory;
|
|
115
|
+
}();
|
|
@@ -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.build()), {
|
|
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.build()), {
|
|
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
|
+
}();
|
|
@@ -0,0 +1,81 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", {
|
|
3
|
+
value: true
|
|
4
|
+
});
|
|
5
|
+
Object.defineProperty(exports, "CancellationAuction", {
|
|
6
|
+
enumerable: true,
|
|
7
|
+
get: function() {
|
|
8
|
+
return CancellationAuction;
|
|
9
|
+
}
|
|
10
|
+
});
|
|
11
|
+
var _byteutils = require("@1inch/byte-utils");
|
|
12
|
+
var _assert = /*#__PURE__*/ _interop_require_default(require("assert"));
|
|
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
|
+
var CancellationAuction = /*#__PURE__*/ function() {
|
|
51
|
+
"use strict";
|
|
52
|
+
function CancellationAuction(duration, /**
|
|
53
|
+
* Value in bps, i.e. 5000 for 50%
|
|
54
|
+
*
|
|
55
|
+
* Maximum reward (as percentage of gas cost) that resolver receives for cancelling an expired order.
|
|
56
|
+
* The reward is deducted from the order's making amount.
|
|
57
|
+
* To make order cancellation attractive to resolver max reward should be >= 100%
|
|
58
|
+
*
|
|
59
|
+
* @example Order: 1 ETH, Cancellation gas: 0.00001 ETH, Reward: 50%
|
|
60
|
+
* → Resolver gets: 0.000005 ETH (50% of gas cost)
|
|
61
|
+
* → User gets back: 0.999995 ETH
|
|
62
|
+
*/ maxRewardBps) {
|
|
63
|
+
_class_call_check(this, CancellationAuction);
|
|
64
|
+
_define_property(this, "duration", void 0);
|
|
65
|
+
_define_property(this, "maxRewardBps", void 0);
|
|
66
|
+
this.duration = duration;
|
|
67
|
+
this.maxRewardBps = maxRewardBps;
|
|
68
|
+
(0, _assert.default)(duration <= _byteutils.UINT_32_MAX, 'max cancellation auction duration must be <= UINT_32_MAX');
|
|
69
|
+
(0, _assert.default)(maxRewardBps <= _byteutils.UINT_16_MAX, 'max cancellation auction maxRewardBps must be <= UINT_16_MAX');
|
|
70
|
+
}
|
|
71
|
+
_create_class(CancellationAuction, [
|
|
72
|
+
{
|
|
73
|
+
key: "build",
|
|
74
|
+
value: function build() {
|
|
75
|
+
return this.duration << 16n | this.maxRewardBps;
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
]);
|
|
79
|
+
return CancellationAuction;
|
|
80
|
+
}();
|
|
81
|
+
_define_property(CancellationAuction, "ZERO", new CancellationAuction(0n, 0n));
|
|
@@ -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
|
|
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");
|
|
@@ -100,18 +101,7 @@ var FusionOrder = /*#__PURE__*/ function() {
|
|
|
100
101
|
* Fusion extension address
|
|
101
102
|
* @see https://github.com/1inch/limit-order-settlement
|
|
102
103
|
*/ settlementExtensionContract, orderInfo, auctionDetails, whitelist) {
|
|
103
|
-
var surplusParams = arguments.length > 4 && arguments[4] !== void 0 ? arguments[4] : _surplusparams.SurplusParams.NO_FEE, extra = arguments.length > 5 && arguments[5] !== void 0 ? arguments[5] :
|
|
104
|
-
* Required if `allowPartialFills` or `allowMultipleFills` is false
|
|
105
|
-
*/ /**
|
|
106
|
-
* 0x prefixed without the token address
|
|
107
|
-
*/ /**
|
|
108
|
-
* Default is true
|
|
109
|
-
*/ /**
|
|
110
|
-
* Default is true
|
|
111
|
-
*/ /**
|
|
112
|
-
* Order will expire in `orderExpirationDelay` after auction ends
|
|
113
|
-
* Default 12s
|
|
114
|
-
*/ FusionOrder.defaultExtra, extension = arguments.length > 6 && arguments[6] !== void 0 ? arguments[6] : new _fusionextension.FusionExtension(settlementExtensionContract, auctionDetails, whitelist, surplusParams, {
|
|
104
|
+
var surplusParams = arguments.length > 4 && arguments[4] !== void 0 ? arguments[4] : _surplusparams.SurplusParams.NO_FEE, extra = arguments.length > 5 && arguments[5] !== void 0 ? arguments[5] : FusionOrder.defaultExtra, extension = arguments.length > 6 && arguments[6] !== void 0 ? arguments[6] : new _fusionextension.FusionExtension(settlementExtensionContract, auctionDetails, whitelist, surplusParams, {
|
|
115
105
|
makerPermit: extra.permit ? new _limitordersdk.Interaction(orderInfo.makerAsset, extra.permit) : undefined,
|
|
116
106
|
customReceiver: orderInfo.receiver,
|
|
117
107
|
fees: extra === null || extra === void 0 ? void 0 : extra.fees
|
|
@@ -151,6 +141,9 @@ var FusionOrder = /*#__PURE__*/ function() {
|
|
|
151
141
|
var builtExtension = extension.build();
|
|
152
142
|
var salt = _limitordersdk.LimitOrder.buildSalt(builtExtension, orderInfo.salt);
|
|
153
143
|
var saltWithInjectedTrackCode = orderInfo.salt ? salt : (0, _sourcetrack.injectTrackCode)(salt, extra.source);
|
|
144
|
+
if (orderInfo.makerAsset.isNative()) {
|
|
145
|
+
throw new Error('use FusionOrder.fromNative to create order from native asset');
|
|
146
|
+
}
|
|
154
147
|
this.inner = new _limitordersdk.LimitOrder(_object_spread_props(_object_spread({}, orderInfo), {
|
|
155
148
|
receiver: receiver,
|
|
156
149
|
salt: saltWithInjectedTrackCode
|
|
@@ -452,6 +445,32 @@ var FusionOrder = /*#__PURE__*/ function() {
|
|
|
452
445
|
value: function getAmountCalculator() {
|
|
453
446
|
return _amountcalculator.AmountCalculator.fromExtension(this.fusionExtension);
|
|
454
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
|
+
}
|
|
455
474
|
}
|
|
456
475
|
], [
|
|
457
476
|
{
|
|
@@ -459,20 +478,47 @@ var FusionOrder = /*#__PURE__*/ function() {
|
|
|
459
478
|
value: function _new(/**
|
|
460
479
|
* Fusion extension address
|
|
461
480
|
* @see https://github.com/1inch/limit-order-settlement
|
|
462
|
-
*/ settlementExtension, orderInfo, details, extra)
|
|
463
|
-
* Required if `allowPartialFills` or `allowMultipleFills` is false
|
|
464
|
-
* Max size is 40bit
|
|
465
|
-
*/ /**
|
|
466
|
-
* Default is true
|
|
467
|
-
*/ /**
|
|
468
|
-
* Default is true
|
|
469
|
-
*/ /**
|
|
470
|
-
* Order will expire in `orderExpirationDelay` after auction ends
|
|
471
|
-
* Default 12s
|
|
472
|
-
*/ {
|
|
481
|
+
*/ settlementExtension, orderInfo, details, extra) {
|
|
473
482
|
return new FusionOrder(settlementExtension, orderInfo, details.auction, details.whitelist, details.surplus, extra);
|
|
474
483
|
}
|
|
475
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
|
+
},
|
|
476
522
|
{
|
|
477
523
|
key: "fromDataAndExtension",
|
|
478
524
|
value: /**
|
|
@@ -502,7 +548,7 @@ var FusionOrder = /*#__PURE__*/ function() {
|
|
|
502
548
|
allowPartialFills: makerTraits.isPartialFillAllowed(),
|
|
503
549
|
enablePermit2: makerTraits.isPermit2(),
|
|
504
550
|
nonce: makerTraits.nonceOrEpoch(),
|
|
505
|
-
permit: extension.makerPermit ===
|
|
551
|
+
permit: extension.makerPermit === _constants1.ZX ? undefined : _limitordersdk.Interaction.decode(extension.makerPermit).data,
|
|
506
552
|
unwrapWETH: makerTraits.isNativeUnwrapEnabled(),
|
|
507
553
|
orderExpirationDelay: orderExpirationDelay,
|
|
508
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
|
+
});
|
|
@@ -15,6 +15,7 @@ _export_star(require("./fusion-extension.js"), exports);
|
|
|
15
15
|
_export_star(require("./fees/index.js"), exports);
|
|
16
16
|
var _constants = require("./constants.js");
|
|
17
17
|
_export_star(require("./surplus-params.js"), exports);
|
|
18
|
+
_export_star(require("./cancellation-auction.js"), exports);
|
|
18
19
|
function _export_star(from, to) {
|
|
19
20
|
Object.keys(from).forEach(function(k) {
|
|
20
21
|
if (k !== "default" && !Object.prototype.hasOwnProperty.call(to, k)) {
|
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) {
|