@1inch/fusion-sdk 2.4.6 → 2.4.7-rc.0
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/README.md +174 -25
- package/dist/cjs/api/quoter/quoter.api.spec.js +1 -2
- package/dist/cjs/constants.js +17 -3
- package/dist/cjs/fusion-order/fusion-order.js +94 -0
- package/dist/cjs/fusion-order/fusion-order.spec.js +87 -0
- package/dist/cjs/fusion-order/index.js +1 -0
- package/dist/cjs/fusion-order/permit/constants.js +98 -0
- package/dist/cjs/fusion-order/permit/index.js +34 -0
- package/dist/cjs/fusion-order/permit/permit-transfer-from.js +115 -0
- package/dist/cjs/fusion-order/permit/permit-transfer-from.spec.js +232 -0
- package/dist/cjs/fusion-order/permit/transfer-from-suffix.js +76 -0
- package/dist/cjs/fusion-order/permit/utils.js +35 -0
- package/dist/esm/api/quoter/quoter.api.spec.js +1 -2
- package/dist/esm/constants.js +15 -1
- package/dist/esm/fusion-order/fusion-order.js +95 -1
- package/dist/esm/fusion-order/fusion-order.spec.js +87 -0
- package/dist/esm/fusion-order/index.js +1 -0
- package/dist/esm/fusion-order/permit/constants.js +71 -0
- package/dist/esm/fusion-order/permit/index.js +3 -0
- package/dist/esm/fusion-order/permit/permit-transfer-from.js +105 -0
- package/dist/esm/fusion-order/permit/permit-transfer-from.spec.js +228 -0
- package/dist/esm/fusion-order/permit/transfer-from-suffix.js +53 -0
- package/dist/esm/fusion-order/permit/utils.js +12 -0
- package/dist/esm/package.json +1 -1
- package/dist/types/src/constants.d.ts +1 -1
- package/dist/types/src/fusion-order/fusion-order.d.ts +5 -0
- package/dist/types/src/fusion-order/index.d.ts +1 -0
- package/dist/types/src/fusion-order/permit/constants.d.ts +7 -0
- package/dist/types/src/fusion-order/permit/index.d.ts +3 -0
- package/dist/types/src/fusion-order/permit/permit-transfer-from.d.ts +11 -0
- package/dist/types/src/fusion-order/permit/transfer-from-suffix.d.ts +10 -0
- package/dist/types/src/fusion-order/permit/utils.d.ts +3 -0
- package/dist/types/tsconfig.types.tsbuildinfo +1 -1
- package/package.json +1 -1
|
@@ -0,0 +1,98 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", {
|
|
3
|
+
value: true
|
|
4
|
+
});
|
|
5
|
+
function _export(target, all) {
|
|
6
|
+
for(var name in all)Object.defineProperty(target, name, {
|
|
7
|
+
enumerable: true,
|
|
8
|
+
get: all[name]
|
|
9
|
+
});
|
|
10
|
+
}
|
|
11
|
+
_export(exports, {
|
|
12
|
+
PERMIT2_ADDRESSES: function() {
|
|
13
|
+
return PERMIT2_ADDRESSES;
|
|
14
|
+
},
|
|
15
|
+
PERMIT2_DOMAIN_NAME: function() {
|
|
16
|
+
return PERMIT2_DOMAIN_NAME;
|
|
17
|
+
},
|
|
18
|
+
PERMIT2_PROXY_ADDRESSES: function() {
|
|
19
|
+
return PERMIT2_PROXY_ADDRESSES;
|
|
20
|
+
},
|
|
21
|
+
PERMIT_TRANSFER_FROM_TYPES: function() {
|
|
22
|
+
return PERMIT_TRANSFER_FROM_TYPES;
|
|
23
|
+
},
|
|
24
|
+
TOKEN_PERMISSIONS: function() {
|
|
25
|
+
return TOKEN_PERMISSIONS;
|
|
26
|
+
}
|
|
27
|
+
});
|
|
28
|
+
var _constants = require("../../constants.js");
|
|
29
|
+
function _define_property(obj, key, value) {
|
|
30
|
+
if (key in obj) {
|
|
31
|
+
Object.defineProperty(obj, key, {
|
|
32
|
+
value: value,
|
|
33
|
+
enumerable: true,
|
|
34
|
+
configurable: true,
|
|
35
|
+
writable: true
|
|
36
|
+
});
|
|
37
|
+
} else {
|
|
38
|
+
obj[key] = value;
|
|
39
|
+
}
|
|
40
|
+
return obj;
|
|
41
|
+
}
|
|
42
|
+
function _object_spread(target) {
|
|
43
|
+
for(var i = 1; i < arguments.length; i++){
|
|
44
|
+
var source = arguments[i] != null ? arguments[i] : {};
|
|
45
|
+
var ownKeys = Object.keys(source);
|
|
46
|
+
if (typeof Object.getOwnPropertySymbols === "function") {
|
|
47
|
+
ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function(sym) {
|
|
48
|
+
return Object.getOwnPropertyDescriptor(source, sym).enumerable;
|
|
49
|
+
}));
|
|
50
|
+
}
|
|
51
|
+
ownKeys.forEach(function(key) {
|
|
52
|
+
_define_property(target, key, source[key]);
|
|
53
|
+
});
|
|
54
|
+
}
|
|
55
|
+
return target;
|
|
56
|
+
}
|
|
57
|
+
var PERMIT2_ADDRESS = '0x000000000022D473030F116dDEE9F6B43aC78BA3';
|
|
58
|
+
var PERMIT2_ADDRESS_ZK = '0x0000000000225e31d15943971f47ad3022f714fa';
|
|
59
|
+
var _obj;
|
|
60
|
+
var PERMIT2_ADDRESSES = (_obj = {}, _define_property(_obj, _constants.NetworkEnum.ZKSYNC, PERMIT2_ADDRESS_ZK), _define_property(_obj, _constants.NetworkEnum.ARBITRUM, PERMIT2_ADDRESS), _define_property(_obj, _constants.NetworkEnum.ETHEREUM, PERMIT2_ADDRESS), _define_property(_obj, _constants.NetworkEnum.POLYGON, PERMIT2_ADDRESS), _define_property(_obj, _constants.NetworkEnum.BINANCE, PERMIT2_ADDRESS), _define_property(_obj, _constants.NetworkEnum.AVALANCHE, PERMIT2_ADDRESS), _define_property(_obj, _constants.NetworkEnum.OPTIMISM, PERMIT2_ADDRESS), _define_property(_obj, _constants.NetworkEnum.FANTOM, PERMIT2_ADDRESS), _define_property(_obj, _constants.NetworkEnum.GNOSIS, PERMIT2_ADDRESS), _define_property(_obj, _constants.NetworkEnum.COINBASE, PERMIT2_ADDRESS), _define_property(_obj, _constants.NetworkEnum.LINEA, PERMIT2_ADDRESS), _define_property(_obj, _constants.NetworkEnum.SONIC, PERMIT2_ADDRESS), _define_property(_obj, _constants.NetworkEnum.UNICHAIN, PERMIT2_ADDRESS), _obj);
|
|
61
|
+
// todo: update
|
|
62
|
+
var PERMIT2_PROXY_ADDRESS = '0xcf56da25062c954b252515244dfefb739c254c23';
|
|
63
|
+
var PERMIT2_PROXY_ADDRESS_ZK = '0x0000000000000000000000000000000000000000';
|
|
64
|
+
var _obj1;
|
|
65
|
+
var PERMIT2_PROXY_ADDRESSES = (_obj1 = {}, _define_property(_obj1, _constants.NetworkEnum.ZKSYNC, PERMIT2_PROXY_ADDRESS_ZK), _define_property(_obj1, _constants.NetworkEnum.ARBITRUM, PERMIT2_PROXY_ADDRESS), _define_property(_obj1, _constants.NetworkEnum.ETHEREUM, PERMIT2_PROXY_ADDRESS), _define_property(_obj1, _constants.NetworkEnum.POLYGON, PERMIT2_PROXY_ADDRESS), _define_property(_obj1, _constants.NetworkEnum.BINANCE, PERMIT2_PROXY_ADDRESS), _define_property(_obj1, _constants.NetworkEnum.AVALANCHE, PERMIT2_PROXY_ADDRESS), _define_property(_obj1, _constants.NetworkEnum.OPTIMISM, PERMIT2_PROXY_ADDRESS), _define_property(_obj1, _constants.NetworkEnum.FANTOM, PERMIT2_PROXY_ADDRESS), _define_property(_obj1, _constants.NetworkEnum.GNOSIS, PERMIT2_PROXY_ADDRESS), _define_property(_obj1, _constants.NetworkEnum.COINBASE, PERMIT2_PROXY_ADDRESS), _define_property(_obj1, _constants.NetworkEnum.LINEA, PERMIT2_PROXY_ADDRESS), _define_property(_obj1, _constants.NetworkEnum.SONIC, PERMIT2_PROXY_ADDRESS), _define_property(_obj1, _constants.NetworkEnum.UNICHAIN, PERMIT2_PROXY_ADDRESS), _obj1);
|
|
66
|
+
var PERMIT2_DOMAIN_NAME = 'Permit2';
|
|
67
|
+
var TOKEN_PERMISSIONS = {
|
|
68
|
+
TokenPermissions: [
|
|
69
|
+
{
|
|
70
|
+
name: 'token',
|
|
71
|
+
type: 'address'
|
|
72
|
+
},
|
|
73
|
+
{
|
|
74
|
+
name: 'amount',
|
|
75
|
+
type: 'uint256'
|
|
76
|
+
}
|
|
77
|
+
]
|
|
78
|
+
};
|
|
79
|
+
var PERMIT_TRANSFER_FROM_TYPES = _object_spread({
|
|
80
|
+
PermitTransferFrom: [
|
|
81
|
+
{
|
|
82
|
+
name: 'permitted',
|
|
83
|
+
type: 'TokenPermissions'
|
|
84
|
+
},
|
|
85
|
+
{
|
|
86
|
+
name: 'spender',
|
|
87
|
+
type: 'address'
|
|
88
|
+
},
|
|
89
|
+
{
|
|
90
|
+
name: 'nonce',
|
|
91
|
+
type: 'uint256'
|
|
92
|
+
},
|
|
93
|
+
{
|
|
94
|
+
name: 'deadline',
|
|
95
|
+
type: 'uint256'
|
|
96
|
+
}
|
|
97
|
+
]
|
|
98
|
+
}, TOKEN_PERMISSIONS);
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", {
|
|
3
|
+
value: true
|
|
4
|
+
});
|
|
5
|
+
function _export(target, all) {
|
|
6
|
+
for(var name in all)Object.defineProperty(target, name, {
|
|
7
|
+
enumerable: true,
|
|
8
|
+
get: all[name]
|
|
9
|
+
});
|
|
10
|
+
}
|
|
11
|
+
_export(exports, {
|
|
12
|
+
getPermit2Address: function() {
|
|
13
|
+
return _utils.getPermit2Address;
|
|
14
|
+
},
|
|
15
|
+
getPermit2ProxyAddress: function() {
|
|
16
|
+
return _utils.getPermit2ProxyAddress;
|
|
17
|
+
}
|
|
18
|
+
});
|
|
19
|
+
_export_star(require("./permit-transfer-from.js"), exports);
|
|
20
|
+
_export_star(require("./transfer-from-suffix.js"), exports);
|
|
21
|
+
var _utils = require("./utils.js");
|
|
22
|
+
function _export_star(from, to) {
|
|
23
|
+
Object.keys(from).forEach(function(k) {
|
|
24
|
+
if (k !== "default" && !Object.prototype.hasOwnProperty.call(to, k)) {
|
|
25
|
+
Object.defineProperty(to, k, {
|
|
26
|
+
enumerable: true,
|
|
27
|
+
get: function() {
|
|
28
|
+
return from[k];
|
|
29
|
+
}
|
|
30
|
+
});
|
|
31
|
+
}
|
|
32
|
+
});
|
|
33
|
+
return from;
|
|
34
|
+
}
|
|
@@ -0,0 +1,115 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", {
|
|
3
|
+
value: true
|
|
4
|
+
});
|
|
5
|
+
Object.defineProperty(exports, "PermitTransferFrom", {
|
|
6
|
+
enumerable: true,
|
|
7
|
+
get: function() {
|
|
8
|
+
return PermitTransferFrom;
|
|
9
|
+
}
|
|
10
|
+
});
|
|
11
|
+
var _constants = require("./constants.js");
|
|
12
|
+
var _utils = require("./utils.js");
|
|
13
|
+
var _transferfromsuffix = require("./transfer-from-suffix.js");
|
|
14
|
+
function _class_call_check(instance, Constructor) {
|
|
15
|
+
if (!(instance instanceof Constructor)) {
|
|
16
|
+
throw new TypeError("Cannot call a class as a function");
|
|
17
|
+
}
|
|
18
|
+
}
|
|
19
|
+
function _defineProperties(target, props) {
|
|
20
|
+
for(var i = 0; i < props.length; i++){
|
|
21
|
+
var descriptor = props[i];
|
|
22
|
+
descriptor.enumerable = descriptor.enumerable || false;
|
|
23
|
+
descriptor.configurable = true;
|
|
24
|
+
if ("value" in descriptor) descriptor.writable = true;
|
|
25
|
+
Object.defineProperty(target, descriptor.key, descriptor);
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
function _create_class(Constructor, protoProps, staticProps) {
|
|
29
|
+
if (protoProps) _defineProperties(Constructor.prototype, protoProps);
|
|
30
|
+
if (staticProps) _defineProperties(Constructor, staticProps);
|
|
31
|
+
return Constructor;
|
|
32
|
+
}
|
|
33
|
+
function _define_property(obj, key, value) {
|
|
34
|
+
if (key in obj) {
|
|
35
|
+
Object.defineProperty(obj, key, {
|
|
36
|
+
value: value,
|
|
37
|
+
enumerable: true,
|
|
38
|
+
configurable: true,
|
|
39
|
+
writable: true
|
|
40
|
+
});
|
|
41
|
+
} else {
|
|
42
|
+
obj[key] = value;
|
|
43
|
+
}
|
|
44
|
+
return obj;
|
|
45
|
+
}
|
|
46
|
+
function _object_spread(target) {
|
|
47
|
+
for(var i = 1; i < arguments.length; i++){
|
|
48
|
+
var source = arguments[i] != null ? arguments[i] : {};
|
|
49
|
+
var ownKeys = Object.keys(source);
|
|
50
|
+
if (typeof Object.getOwnPropertySymbols === "function") {
|
|
51
|
+
ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function(sym) {
|
|
52
|
+
return Object.getOwnPropertyDescriptor(source, sym).enumerable;
|
|
53
|
+
}));
|
|
54
|
+
}
|
|
55
|
+
ownKeys.forEach(function(key) {
|
|
56
|
+
_define_property(target, key, source[key]);
|
|
57
|
+
});
|
|
58
|
+
}
|
|
59
|
+
return target;
|
|
60
|
+
}
|
|
61
|
+
var PermitTransferFrom = /*#__PURE__*/ function() {
|
|
62
|
+
"use strict";
|
|
63
|
+
function PermitTransferFrom(token, maxSpendAmount, spender, nonce, deadline) {
|
|
64
|
+
_class_call_check(this, PermitTransferFrom);
|
|
65
|
+
_define_property(this, "token", void 0);
|
|
66
|
+
_define_property(this, "maxSpendAmount", void 0);
|
|
67
|
+
_define_property(this, "spender", void 0);
|
|
68
|
+
_define_property(this, "nonce", void 0);
|
|
69
|
+
_define_property(this, "deadline", void 0);
|
|
70
|
+
this.token = token;
|
|
71
|
+
this.maxSpendAmount = maxSpendAmount;
|
|
72
|
+
this.spender = spender;
|
|
73
|
+
this.nonce = nonce;
|
|
74
|
+
this.deadline = deadline;
|
|
75
|
+
}
|
|
76
|
+
_create_class(PermitTransferFrom, [
|
|
77
|
+
{
|
|
78
|
+
key: "getTypedData",
|
|
79
|
+
value: function getTypedData(chainId) {
|
|
80
|
+
var permit2Address = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : (0, _utils.getPermit2Address)(chainId);
|
|
81
|
+
return {
|
|
82
|
+
primaryType: 'PermitTransferFrom',
|
|
83
|
+
types: _object_spread({}, _constants.PERMIT_TRANSFER_FROM_TYPES),
|
|
84
|
+
domain: {
|
|
85
|
+
name: _constants.PERMIT2_DOMAIN_NAME,
|
|
86
|
+
chainId: chainId,
|
|
87
|
+
verifyingContract: permit2Address
|
|
88
|
+
},
|
|
89
|
+
message: {
|
|
90
|
+
permitted: {
|
|
91
|
+
token: this.token.toString(),
|
|
92
|
+
amount: this.maxSpendAmount
|
|
93
|
+
},
|
|
94
|
+
spender: this.spender.toString(),
|
|
95
|
+
nonce: this.nonce,
|
|
96
|
+
deadline: this.deadline
|
|
97
|
+
}
|
|
98
|
+
};
|
|
99
|
+
}
|
|
100
|
+
},
|
|
101
|
+
{
|
|
102
|
+
key: "getTransferFromSuffix",
|
|
103
|
+
value: /**
|
|
104
|
+
* ABI-encodes the Permit2 suffix appended to `transferFrom(from,to,amount)` calldata.
|
|
105
|
+
*
|
|
106
|
+
* The limit order protocol calls `_callTransferFromWithSuffix` on the Permit2Proxy,
|
|
107
|
+
* which has `func_nZHTch(address,address,uint256,((address,uint256),uint256,uint256),bytes)`
|
|
108
|
+
* with selector 0x23b872dd (same as transferFrom). The suffix is everything after (from,to,amount).
|
|
109
|
+
*/ function getTransferFromSuffix(signature) {
|
|
110
|
+
return (0, _transferfromsuffix.encodeTransferFromSuffix)(this.token, this.maxSpendAmount, this.nonce, this.deadline, signature);
|
|
111
|
+
}
|
|
112
|
+
}
|
|
113
|
+
]);
|
|
114
|
+
return PermitTransferFrom;
|
|
115
|
+
}();
|
|
@@ -0,0 +1,232 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", {
|
|
3
|
+
value: true
|
|
4
|
+
});
|
|
5
|
+
var _limitordersdk = require("@1inch/limit-order-sdk");
|
|
6
|
+
var _ethers = require("ethers");
|
|
7
|
+
var _permittransferfrom = require("./permit-transfer-from.js");
|
|
8
|
+
var _constants = require("./constants.js");
|
|
9
|
+
var _utils = require("./utils.js");
|
|
10
|
+
var _constants1 = require("../../constants.js");
|
|
11
|
+
function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) {
|
|
12
|
+
try {
|
|
13
|
+
var info = gen[key](arg);
|
|
14
|
+
var value = info.value;
|
|
15
|
+
} catch (error) {
|
|
16
|
+
reject(error);
|
|
17
|
+
return;
|
|
18
|
+
}
|
|
19
|
+
if (info.done) {
|
|
20
|
+
resolve(value);
|
|
21
|
+
} else {
|
|
22
|
+
Promise.resolve(value).then(_next, _throw);
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
function _async_to_generator(fn) {
|
|
26
|
+
return function() {
|
|
27
|
+
var self = this, args = arguments;
|
|
28
|
+
return new Promise(function(resolve, reject) {
|
|
29
|
+
var gen = fn.apply(self, args);
|
|
30
|
+
function _next(value) {
|
|
31
|
+
asyncGeneratorStep(gen, resolve, reject, _next, _throw, "next", value);
|
|
32
|
+
}
|
|
33
|
+
function _throw(err) {
|
|
34
|
+
asyncGeneratorStep(gen, resolve, reject, _next, _throw, "throw", err);
|
|
35
|
+
}
|
|
36
|
+
_next(undefined);
|
|
37
|
+
});
|
|
38
|
+
};
|
|
39
|
+
}
|
|
40
|
+
function _define_property(obj, key, value) {
|
|
41
|
+
if (key in obj) {
|
|
42
|
+
Object.defineProperty(obj, key, {
|
|
43
|
+
value: value,
|
|
44
|
+
enumerable: true,
|
|
45
|
+
configurable: true,
|
|
46
|
+
writable: true
|
|
47
|
+
});
|
|
48
|
+
} else {
|
|
49
|
+
obj[key] = value;
|
|
50
|
+
}
|
|
51
|
+
return obj;
|
|
52
|
+
}
|
|
53
|
+
function _object_spread(target) {
|
|
54
|
+
for(var i = 1; i < arguments.length; i++){
|
|
55
|
+
var source = arguments[i] != null ? arguments[i] : {};
|
|
56
|
+
var ownKeys = Object.keys(source);
|
|
57
|
+
if (typeof Object.getOwnPropertySymbols === "function") {
|
|
58
|
+
ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function(sym) {
|
|
59
|
+
return Object.getOwnPropertyDescriptor(source, sym).enumerable;
|
|
60
|
+
}));
|
|
61
|
+
}
|
|
62
|
+
ownKeys.forEach(function(key) {
|
|
63
|
+
_define_property(target, key, source[key]);
|
|
64
|
+
});
|
|
65
|
+
}
|
|
66
|
+
return target;
|
|
67
|
+
}
|
|
68
|
+
function _ts_generator(thisArg, body) {
|
|
69
|
+
var f, y, t, g, _ = {
|
|
70
|
+
label: 0,
|
|
71
|
+
sent: function() {
|
|
72
|
+
if (t[0] & 1) throw t[1];
|
|
73
|
+
return t[1];
|
|
74
|
+
},
|
|
75
|
+
trys: [],
|
|
76
|
+
ops: []
|
|
77
|
+
};
|
|
78
|
+
return g = {
|
|
79
|
+
next: verb(0),
|
|
80
|
+
"throw": verb(1),
|
|
81
|
+
"return": verb(2)
|
|
82
|
+
}, typeof Symbol === "function" && (g[Symbol.iterator] = function() {
|
|
83
|
+
return this;
|
|
84
|
+
}), g;
|
|
85
|
+
function verb(n) {
|
|
86
|
+
return function(v) {
|
|
87
|
+
return step([
|
|
88
|
+
n,
|
|
89
|
+
v
|
|
90
|
+
]);
|
|
91
|
+
};
|
|
92
|
+
}
|
|
93
|
+
function step(op) {
|
|
94
|
+
if (f) throw new TypeError("Generator is already executing.");
|
|
95
|
+
while(_)try {
|
|
96
|
+
if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
|
|
97
|
+
if (y = 0, t) op = [
|
|
98
|
+
op[0] & 2,
|
|
99
|
+
t.value
|
|
100
|
+
];
|
|
101
|
+
switch(op[0]){
|
|
102
|
+
case 0:
|
|
103
|
+
case 1:
|
|
104
|
+
t = op;
|
|
105
|
+
break;
|
|
106
|
+
case 4:
|
|
107
|
+
_.label++;
|
|
108
|
+
return {
|
|
109
|
+
value: op[1],
|
|
110
|
+
done: false
|
|
111
|
+
};
|
|
112
|
+
case 5:
|
|
113
|
+
_.label++;
|
|
114
|
+
y = op[1];
|
|
115
|
+
op = [
|
|
116
|
+
0
|
|
117
|
+
];
|
|
118
|
+
continue;
|
|
119
|
+
case 7:
|
|
120
|
+
op = _.ops.pop();
|
|
121
|
+
_.trys.pop();
|
|
122
|
+
continue;
|
|
123
|
+
default:
|
|
124
|
+
if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) {
|
|
125
|
+
_ = 0;
|
|
126
|
+
continue;
|
|
127
|
+
}
|
|
128
|
+
if (op[0] === 3 && (!t || op[1] > t[0] && op[1] < t[3])) {
|
|
129
|
+
_.label = op[1];
|
|
130
|
+
break;
|
|
131
|
+
}
|
|
132
|
+
if (op[0] === 6 && _.label < t[1]) {
|
|
133
|
+
_.label = t[1];
|
|
134
|
+
t = op;
|
|
135
|
+
break;
|
|
136
|
+
}
|
|
137
|
+
if (t && _.label < t[2]) {
|
|
138
|
+
_.label = t[2];
|
|
139
|
+
_.ops.push(op);
|
|
140
|
+
break;
|
|
141
|
+
}
|
|
142
|
+
if (t[2]) _.ops.pop();
|
|
143
|
+
_.trys.pop();
|
|
144
|
+
continue;
|
|
145
|
+
}
|
|
146
|
+
op = body.call(thisArg, _);
|
|
147
|
+
} catch (e) {
|
|
148
|
+
op = [
|
|
149
|
+
6,
|
|
150
|
+
e
|
|
151
|
+
];
|
|
152
|
+
y = 0;
|
|
153
|
+
} finally{
|
|
154
|
+
f = t = 0;
|
|
155
|
+
}
|
|
156
|
+
if (op[0] & 5) throw op[1];
|
|
157
|
+
return {
|
|
158
|
+
value: op[0] ? op[1] : void 0,
|
|
159
|
+
done: true
|
|
160
|
+
};
|
|
161
|
+
}
|
|
162
|
+
}
|
|
163
|
+
describe('PermitTransferFrom', function() {
|
|
164
|
+
var token = new _limitordersdk.Address('0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2');
|
|
165
|
+
var spender = new _limitordersdk.Address('0x1111111254eeb25477b68fb85ed929f73a960582');
|
|
166
|
+
var maxSpendAmount = 1000000000000000000n;
|
|
167
|
+
var nonce = 42n;
|
|
168
|
+
var deadline = 1700000000n;
|
|
169
|
+
it('should return correct typed data for ethereum', function() {
|
|
170
|
+
var permit = new _permittransferfrom.PermitTransferFrom(token, maxSpendAmount, spender, nonce, deadline);
|
|
171
|
+
var typedData = permit.getTypedData(_constants1.NetworkEnum.ETHEREUM);
|
|
172
|
+
expect(typedData).toStrictEqual({
|
|
173
|
+
primaryType: 'PermitTransferFrom',
|
|
174
|
+
types: _constants.PERMIT_TRANSFER_FROM_TYPES,
|
|
175
|
+
domain: {
|
|
176
|
+
name: _constants.PERMIT2_DOMAIN_NAME,
|
|
177
|
+
chainId: _constants1.NetworkEnum.ETHEREUM,
|
|
178
|
+
verifyingContract: (0, _utils.getPermit2Address)(_constants1.NetworkEnum.ETHEREUM)
|
|
179
|
+
},
|
|
180
|
+
message: {
|
|
181
|
+
permitted: {
|
|
182
|
+
token: token.toString(),
|
|
183
|
+
amount: maxSpendAmount
|
|
184
|
+
},
|
|
185
|
+
spender: spender.toString(),
|
|
186
|
+
nonce: nonce,
|
|
187
|
+
deadline: deadline
|
|
188
|
+
}
|
|
189
|
+
});
|
|
190
|
+
});
|
|
191
|
+
it('should use zksync permit2 address for zksync chain', function() {
|
|
192
|
+
var permit = new _permittransferfrom.PermitTransferFrom(token, maxSpendAmount, spender, nonce, deadline);
|
|
193
|
+
var typedData = permit.getTypedData(_constants1.NetworkEnum.ZKSYNC);
|
|
194
|
+
expect(typedData.domain.verifyingContract).toBe((0, _utils.getPermit2Address)(_constants1.NetworkEnum.ZKSYNC));
|
|
195
|
+
});
|
|
196
|
+
it('should use custom permit2 address when provided', function() {
|
|
197
|
+
var customPermit2 = '0xaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa';
|
|
198
|
+
var permit = new _permittransferfrom.PermitTransferFrom(token, maxSpendAmount, spender, nonce, deadline);
|
|
199
|
+
var typedData = permit.getTypedData(_constants1.NetworkEnum.ETHEREUM, customPermit2);
|
|
200
|
+
expect(typedData.domain.verifyingContract).toBe(customPermit2);
|
|
201
|
+
});
|
|
202
|
+
it('should throw for unsupported chain id without custom address', function() {
|
|
203
|
+
var permit = new _permittransferfrom.PermitTransferFrom(token, maxSpendAmount, spender, nonce, deadline);
|
|
204
|
+
expect(function() {
|
|
205
|
+
return permit.getTypedData(999);
|
|
206
|
+
}).toThrow('unsupported chainId');
|
|
207
|
+
});
|
|
208
|
+
it('should produce signable typed data that recovers to the signer', /*#__PURE__*/ _async_to_generator(function() {
|
|
209
|
+
var wallet, permit, typedData, types, signature, recovered;
|
|
210
|
+
return _ts_generator(this, function(_state) {
|
|
211
|
+
switch(_state.label){
|
|
212
|
+
case 0:
|
|
213
|
+
wallet = _ethers.Wallet.createRandom();
|
|
214
|
+
permit = new _permittransferfrom.PermitTransferFrom(token, maxSpendAmount, spender, nonce, deadline);
|
|
215
|
+
typedData = permit.getTypedData(_constants1.NetworkEnum.ETHEREUM);
|
|
216
|
+
types = _object_spread({}, typedData.types);
|
|
217
|
+
delete types['EIP712Domain'];
|
|
218
|
+
return [
|
|
219
|
+
4,
|
|
220
|
+
wallet.signTypedData(typedData.domain, types, typedData.message)
|
|
221
|
+
];
|
|
222
|
+
case 1:
|
|
223
|
+
signature = _state.sent();
|
|
224
|
+
recovered = (0, _ethers.verifyTypedData)(typedData.domain, types, typedData.message, signature);
|
|
225
|
+
expect(recovered).toBe(wallet.address);
|
|
226
|
+
return [
|
|
227
|
+
2
|
|
228
|
+
];
|
|
229
|
+
}
|
|
230
|
+
});
|
|
231
|
+
}));
|
|
232
|
+
});
|
|
@@ -0,0 +1,76 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", {
|
|
3
|
+
value: true
|
|
4
|
+
});
|
|
5
|
+
function _export(target, all) {
|
|
6
|
+
for(var name in all)Object.defineProperty(target, name, {
|
|
7
|
+
enumerable: true,
|
|
8
|
+
get: all[name]
|
|
9
|
+
});
|
|
10
|
+
}
|
|
11
|
+
_export(exports, {
|
|
12
|
+
decodeTransferFromSuffix: function() {
|
|
13
|
+
return decodeTransferFromSuffix;
|
|
14
|
+
},
|
|
15
|
+
encodeTransferFromSuffix: function() {
|
|
16
|
+
return encodeTransferFromSuffix;
|
|
17
|
+
}
|
|
18
|
+
});
|
|
19
|
+
var _limitordersdk = require("@1inch/limit-order-sdk");
|
|
20
|
+
var _ethers = require("ethers");
|
|
21
|
+
var _byteutils = require("@1inch/byte-utils");
|
|
22
|
+
var _assert = /*#__PURE__*/ _interop_require_default(require("assert"));
|
|
23
|
+
function _interop_require_default(obj) {
|
|
24
|
+
return obj && obj.__esModule ? obj : {
|
|
25
|
+
default: obj
|
|
26
|
+
};
|
|
27
|
+
}
|
|
28
|
+
var FUNC_N_ZH_TCH_ABI = [
|
|
29
|
+
'address',
|
|
30
|
+
'address',
|
|
31
|
+
'uint256',
|
|
32
|
+
'tuple(tuple(address token, uint256 amount) permitted, uint256 nonce, uint256 deadline)',
|
|
33
|
+
'bytes'
|
|
34
|
+
];
|
|
35
|
+
var ZERO_SLOT = '0'.repeat(64);
|
|
36
|
+
var STRIPPED_SLOTS = 3;
|
|
37
|
+
/**
|
|
38
|
+
* ABI-encodes the Permit2 suffix appended to `transferFrom(from,to,amount)` calldata.
|
|
39
|
+
*
|
|
40
|
+
* The limit order protocol calls `_callTransferFromWithSuffix` on the Permit2Proxy,
|
|
41
|
+
* which has `func_nZHTch(address,address,uint256,((address,uint256),uint256,uint256),bytes)`
|
|
42
|
+
* with selector 0x23b872dd (same as transferFrom). The suffix is everything after (from,to,amount).
|
|
43
|
+
*/ function encodeTransferFromSuffix(token, amount, nonce, deadline, signature) {
|
|
44
|
+
var abiCoder = _ethers.AbiCoder.defaultAbiCoder();
|
|
45
|
+
var encoded = abiCoder.encode(FUNC_N_ZH_TCH_ABI, [
|
|
46
|
+
_limitordersdk.Address.ZERO_ADDRESS.toString(),
|
|
47
|
+
_limitordersdk.Address.ZERO_ADDRESS.toString(),
|
|
48
|
+
0n,
|
|
49
|
+
{
|
|
50
|
+
permitted: {
|
|
51
|
+
token: token.toString(),
|
|
52
|
+
amount: amount
|
|
53
|
+
},
|
|
54
|
+
nonce: nonce,
|
|
55
|
+
deadline: deadline
|
|
56
|
+
},
|
|
57
|
+
signature
|
|
58
|
+
]);
|
|
59
|
+
var strippedHexChars = STRIPPED_SLOTS * 32 * 2;
|
|
60
|
+
return '0x' + (0, _byteutils.trim0x)(encoded).slice(strippedHexChars);
|
|
61
|
+
}
|
|
62
|
+
function decodeTransferFromSuffix(suffix) {
|
|
63
|
+
var restored = '0x' + ZERO_SLOT.repeat(STRIPPED_SLOTS) + suffix.slice(2);
|
|
64
|
+
var abiCoder = _ethers.AbiCoder.defaultAbiCoder();
|
|
65
|
+
var decoded = abiCoder.decode(FUNC_N_ZH_TCH_ABI, restored);
|
|
66
|
+
var permit = decoded[3];
|
|
67
|
+
var sig = decoded[4];
|
|
68
|
+
(0, _assert.default)(sig.length > 0, 'empty permit signature');
|
|
69
|
+
return {
|
|
70
|
+
token: new _limitordersdk.Address(permit.permitted.token),
|
|
71
|
+
amount: BigInt(permit.permitted.amount),
|
|
72
|
+
nonce: BigInt(permit.nonce),
|
|
73
|
+
deadline: BigInt(permit.deadline),
|
|
74
|
+
signature: sig
|
|
75
|
+
};
|
|
76
|
+
}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", {
|
|
3
|
+
value: true
|
|
4
|
+
});
|
|
5
|
+
function _export(target, all) {
|
|
6
|
+
for(var name in all)Object.defineProperty(target, name, {
|
|
7
|
+
enumerable: true,
|
|
8
|
+
get: all[name]
|
|
9
|
+
});
|
|
10
|
+
}
|
|
11
|
+
_export(exports, {
|
|
12
|
+
getPermit2Address: function() {
|
|
13
|
+
return getPermit2Address;
|
|
14
|
+
},
|
|
15
|
+
getPermit2ProxyAddress: function() {
|
|
16
|
+
return getPermit2ProxyAddress;
|
|
17
|
+
}
|
|
18
|
+
});
|
|
19
|
+
var _limitordersdk = require("@1inch/limit-order-sdk");
|
|
20
|
+
var _assert = /*#__PURE__*/ _interop_require_default(require("assert"));
|
|
21
|
+
var _constants = require("./constants.js");
|
|
22
|
+
var _constants1 = require("../../constants.js");
|
|
23
|
+
function _interop_require_default(obj) {
|
|
24
|
+
return obj && obj.__esModule ? obj : {
|
|
25
|
+
default: obj
|
|
26
|
+
};
|
|
27
|
+
}
|
|
28
|
+
function getPermit2Address(chainId) {
|
|
29
|
+
(0, _assert.default)(_constants1.NetworkEnum[chainId], 'unsupported chainId');
|
|
30
|
+
return _constants.PERMIT2_ADDRESSES[chainId];
|
|
31
|
+
}
|
|
32
|
+
function getPermit2ProxyAddress(chainId) {
|
|
33
|
+
(0, _assert.default)(_constants1.NetworkEnum[chainId], 'unsupported chainId');
|
|
34
|
+
return new _limitordersdk.Address(_constants.PERMIT2_PROXY_ADDRESSES[chainId]);
|
|
35
|
+
}
|
|
@@ -128,7 +128,6 @@ import { QuoterRequest } from './quoter.request.js';
|
|
|
128
128
|
import { Quote } from './quote/index.js';
|
|
129
129
|
import { PresetEnum } from './types.js';
|
|
130
130
|
import { QuoterCustomPresetRequest } from './quoter-custom-preset.request.js';
|
|
131
|
-
import { ONE_INCH_LIMIT_ORDER_V4 } from '../../constants.js';
|
|
132
131
|
describe('Quoter API', function() {
|
|
133
132
|
var httpProvider;
|
|
134
133
|
beforeEach(function() {
|
|
@@ -240,7 +239,7 @@ describe('Quoter API', function() {
|
|
|
240
239
|
],
|
|
241
240
|
fee: {
|
|
242
241
|
whitelistDiscountPercent: 1,
|
|
243
|
-
receiver:
|
|
242
|
+
receiver: '0x02f92800F57BCD74066F5709F1Daa1A4302Df875',
|
|
244
243
|
bps: 10
|
|
245
244
|
},
|
|
246
245
|
marketAmount: '626772029219852913'
|
package/dist/esm/constants.js
CHANGED
|
@@ -1,3 +1,16 @@
|
|
|
1
|
+
function _define_property(obj, key, value) {
|
|
2
|
+
if (key in obj) {
|
|
3
|
+
Object.defineProperty(obj, key, {
|
|
4
|
+
value: value,
|
|
5
|
+
enumerable: true,
|
|
6
|
+
configurable: true,
|
|
7
|
+
writable: true
|
|
8
|
+
});
|
|
9
|
+
} else {
|
|
10
|
+
obj[key] = value;
|
|
11
|
+
}
|
|
12
|
+
return obj;
|
|
13
|
+
}
|
|
1
14
|
export var ZX = '0x';
|
|
2
15
|
export var NetworkEnum = /*#__PURE__*/ function(NetworkEnum) {
|
|
3
16
|
NetworkEnum[NetworkEnum["ETHEREUM"] = 1] = "ETHEREUM";
|
|
@@ -15,7 +28,8 @@ export var NetworkEnum = /*#__PURE__*/ function(NetworkEnum) {
|
|
|
15
28
|
NetworkEnum[NetworkEnum["UNICHAIN"] = 130] = "UNICHAIN";
|
|
16
29
|
return NetworkEnum;
|
|
17
30
|
}({});
|
|
18
|
-
|
|
31
|
+
var _obj;
|
|
32
|
+
export var ONE_INCH_LIMIT_ORDER_V4_ADDRESSES = (_obj = {}, _define_property(_obj, 324, '0x6fd4383cb451173d5f9304f041c7bcbf27d561ff'), _define_property(_obj, 1, '0x111111125421ca6dc452d289314280a0f8842a65'), _define_property(_obj, 137, '0x111111125421ca6dc452d289314280a0f8842a65'), _define_property(_obj, 56, '0x111111125421ca6dc452d289314280a0f8842a65'), _define_property(_obj, 42161, '0x111111125421ca6dc452d289314280a0f8842a65'), _define_property(_obj, 43114, '0x111111125421ca6dc452d289314280a0f8842a65'), _define_property(_obj, 10, '0x111111125421ca6dc452d289314280a0f8842a65'), _define_property(_obj, 250, '0x111111125421ca6dc452d289314280a0f8842a65'), _define_property(_obj, 100, '0x111111125421ca6dc452d289314280a0f8842a65'), _define_property(_obj, 8453, '0x111111125421ca6dc452d289314280a0f8842a65'), _define_property(_obj, 59144, '0x111111125421ca6dc452d289314280a0f8842a65'), _define_property(_obj, 146, '0x111111125421ca6dc452d289314280a0f8842a65'), _define_property(_obj, 130, '0x111111125421ca6dc452d289314280a0f8842a65'), _obj);
|
|
19
33
|
export var UINT_160_MAX = (1n << 160n) - 1n;
|
|
20
34
|
export var UINT_16_MAX = (1n << 16n) - 1n;
|
|
21
35
|
export var UINT_80_MAX = (1n << 80n) - 1n;
|