@1inch/fusion-sdk 2.4.7-rc.1 → 2.4.7-rc.3
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/quote/quote.js +6 -20
- package/dist/cjs/api/quoter/quoter.api.spec.js +6 -103
- package/dist/cjs/api/quoter/quoter.request.js +4 -1
- package/dist/cjs/api/quoter/quoter.request.spec.js +8 -2
- package/dist/cjs/constants.js +19 -1
- package/dist/cjs/fusion-order/fusion-order.js +120 -0
- package/dist/cjs/fusion-order/fusion-order.spec.js +100 -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 +61 -0
- package/dist/cjs/fusion-order/permit/utils.js +35 -0
- package/dist/cjs/index.js +0 -3
- package/dist/cjs/sdk/README.md +14 -18
- package/dist/esm/api/quoter/quote/quote.js +6 -20
- package/dist/esm/api/quoter/quote/types.js +3 -15
- package/dist/esm/api/quoter/quoter.api.spec.js +6 -103
- package/dist/esm/api/quoter/quoter.request.js +4 -1
- package/dist/esm/api/quoter/quoter.request.spec.js +8 -2
- package/dist/esm/constants.js +16 -1
- package/dist/esm/fusion-order/fusion-order.js +121 -1
- package/dist/esm/fusion-order/fusion-order.spec.js +100 -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 +38 -0
- package/dist/esm/fusion-order/permit/utils.js +12 -0
- package/dist/esm/index.js +1 -1
- package/dist/esm/package.json +1 -1
- package/dist/esm/sdk/README.md +14 -18
- package/dist/types/src/api/quoter/quote/quote.d.ts +2 -3
- package/dist/types/src/api/quoter/quote/types.d.ts +1 -6
- package/dist/types/src/api/quoter/quoter.request.d.ts +3 -3
- package/dist/types/src/api/quoter/types.d.ts +2 -2
- package/dist/types/src/constants.d.ts +1 -0
- package/dist/types/src/fusion-order/fusion-order.d.ts +6 -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/src/index.d.ts +2 -2
- package/dist/types/src/sdk/types.d.ts +3 -3
- package/dist/types/tsconfig.types.tsbuildinfo +1 -1
- package/package.json +3 -3
|
@@ -0,0 +1,228 @@
|
|
|
1
|
+
function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) {
|
|
2
|
+
try {
|
|
3
|
+
var info = gen[key](arg);
|
|
4
|
+
var value = info.value;
|
|
5
|
+
} catch (error) {
|
|
6
|
+
reject(error);
|
|
7
|
+
return;
|
|
8
|
+
}
|
|
9
|
+
if (info.done) {
|
|
10
|
+
resolve(value);
|
|
11
|
+
} else {
|
|
12
|
+
Promise.resolve(value).then(_next, _throw);
|
|
13
|
+
}
|
|
14
|
+
}
|
|
15
|
+
function _async_to_generator(fn) {
|
|
16
|
+
return function() {
|
|
17
|
+
var self = this, args = arguments;
|
|
18
|
+
return new Promise(function(resolve, reject) {
|
|
19
|
+
var gen = fn.apply(self, args);
|
|
20
|
+
function _next(value) {
|
|
21
|
+
asyncGeneratorStep(gen, resolve, reject, _next, _throw, "next", value);
|
|
22
|
+
}
|
|
23
|
+
function _throw(err) {
|
|
24
|
+
asyncGeneratorStep(gen, resolve, reject, _next, _throw, "throw", err);
|
|
25
|
+
}
|
|
26
|
+
_next(undefined);
|
|
27
|
+
});
|
|
28
|
+
};
|
|
29
|
+
}
|
|
30
|
+
function _define_property(obj, key, value) {
|
|
31
|
+
if (key in obj) {
|
|
32
|
+
Object.defineProperty(obj, key, {
|
|
33
|
+
value: value,
|
|
34
|
+
enumerable: true,
|
|
35
|
+
configurable: true,
|
|
36
|
+
writable: true
|
|
37
|
+
});
|
|
38
|
+
} else {
|
|
39
|
+
obj[key] = value;
|
|
40
|
+
}
|
|
41
|
+
return obj;
|
|
42
|
+
}
|
|
43
|
+
function _object_spread(target) {
|
|
44
|
+
for(var i = 1; i < arguments.length; i++){
|
|
45
|
+
var source = arguments[i] != null ? arguments[i] : {};
|
|
46
|
+
var ownKeys = Object.keys(source);
|
|
47
|
+
if (typeof Object.getOwnPropertySymbols === "function") {
|
|
48
|
+
ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function(sym) {
|
|
49
|
+
return Object.getOwnPropertyDescriptor(source, sym).enumerable;
|
|
50
|
+
}));
|
|
51
|
+
}
|
|
52
|
+
ownKeys.forEach(function(key) {
|
|
53
|
+
_define_property(target, key, source[key]);
|
|
54
|
+
});
|
|
55
|
+
}
|
|
56
|
+
return target;
|
|
57
|
+
}
|
|
58
|
+
function _ts_generator(thisArg, body) {
|
|
59
|
+
var f, y, t, g, _ = {
|
|
60
|
+
label: 0,
|
|
61
|
+
sent: function() {
|
|
62
|
+
if (t[0] & 1) throw t[1];
|
|
63
|
+
return t[1];
|
|
64
|
+
},
|
|
65
|
+
trys: [],
|
|
66
|
+
ops: []
|
|
67
|
+
};
|
|
68
|
+
return g = {
|
|
69
|
+
next: verb(0),
|
|
70
|
+
"throw": verb(1),
|
|
71
|
+
"return": verb(2)
|
|
72
|
+
}, typeof Symbol === "function" && (g[Symbol.iterator] = function() {
|
|
73
|
+
return this;
|
|
74
|
+
}), g;
|
|
75
|
+
function verb(n) {
|
|
76
|
+
return function(v) {
|
|
77
|
+
return step([
|
|
78
|
+
n,
|
|
79
|
+
v
|
|
80
|
+
]);
|
|
81
|
+
};
|
|
82
|
+
}
|
|
83
|
+
function step(op) {
|
|
84
|
+
if (f) throw new TypeError("Generator is already executing.");
|
|
85
|
+
while(_)try {
|
|
86
|
+
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;
|
|
87
|
+
if (y = 0, t) op = [
|
|
88
|
+
op[0] & 2,
|
|
89
|
+
t.value
|
|
90
|
+
];
|
|
91
|
+
switch(op[0]){
|
|
92
|
+
case 0:
|
|
93
|
+
case 1:
|
|
94
|
+
t = op;
|
|
95
|
+
break;
|
|
96
|
+
case 4:
|
|
97
|
+
_.label++;
|
|
98
|
+
return {
|
|
99
|
+
value: op[1],
|
|
100
|
+
done: false
|
|
101
|
+
};
|
|
102
|
+
case 5:
|
|
103
|
+
_.label++;
|
|
104
|
+
y = op[1];
|
|
105
|
+
op = [
|
|
106
|
+
0
|
|
107
|
+
];
|
|
108
|
+
continue;
|
|
109
|
+
case 7:
|
|
110
|
+
op = _.ops.pop();
|
|
111
|
+
_.trys.pop();
|
|
112
|
+
continue;
|
|
113
|
+
default:
|
|
114
|
+
if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) {
|
|
115
|
+
_ = 0;
|
|
116
|
+
continue;
|
|
117
|
+
}
|
|
118
|
+
if (op[0] === 3 && (!t || op[1] > t[0] && op[1] < t[3])) {
|
|
119
|
+
_.label = op[1];
|
|
120
|
+
break;
|
|
121
|
+
}
|
|
122
|
+
if (op[0] === 6 && _.label < t[1]) {
|
|
123
|
+
_.label = t[1];
|
|
124
|
+
t = op;
|
|
125
|
+
break;
|
|
126
|
+
}
|
|
127
|
+
if (t && _.label < t[2]) {
|
|
128
|
+
_.label = t[2];
|
|
129
|
+
_.ops.push(op);
|
|
130
|
+
break;
|
|
131
|
+
}
|
|
132
|
+
if (t[2]) _.ops.pop();
|
|
133
|
+
_.trys.pop();
|
|
134
|
+
continue;
|
|
135
|
+
}
|
|
136
|
+
op = body.call(thisArg, _);
|
|
137
|
+
} catch (e) {
|
|
138
|
+
op = [
|
|
139
|
+
6,
|
|
140
|
+
e
|
|
141
|
+
];
|
|
142
|
+
y = 0;
|
|
143
|
+
} finally{
|
|
144
|
+
f = t = 0;
|
|
145
|
+
}
|
|
146
|
+
if (op[0] & 5) throw op[1];
|
|
147
|
+
return {
|
|
148
|
+
value: op[0] ? op[1] : void 0,
|
|
149
|
+
done: true
|
|
150
|
+
};
|
|
151
|
+
}
|
|
152
|
+
}
|
|
153
|
+
import { Address } from '@1inch/limit-order-sdk';
|
|
154
|
+
import { verifyTypedData, Wallet } from 'ethers';
|
|
155
|
+
import { PermitTransferFrom } from './permit-transfer-from.js';
|
|
156
|
+
import { PERMIT2_DOMAIN_NAME, PERMIT_TRANSFER_FROM_TYPES } from './constants.js';
|
|
157
|
+
import { getPermit2Address } from './utils.js';
|
|
158
|
+
import { NetworkEnum } from '../../constants.js';
|
|
159
|
+
describe('PermitTransferFrom', function() {
|
|
160
|
+
var token = new Address('0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2');
|
|
161
|
+
var spender = new Address('0x1111111254eeb25477b68fb85ed929f73a960582');
|
|
162
|
+
var maxSpendAmount = 1000000000000000000n;
|
|
163
|
+
var nonce = 42n;
|
|
164
|
+
var deadline = 1700000000n;
|
|
165
|
+
it('should return correct typed data for ethereum', function() {
|
|
166
|
+
var permit = new PermitTransferFrom(token, maxSpendAmount, spender, nonce, deadline);
|
|
167
|
+
var typedData = permit.getTypedData(NetworkEnum.ETHEREUM);
|
|
168
|
+
expect(typedData).toStrictEqual({
|
|
169
|
+
primaryType: 'PermitTransferFrom',
|
|
170
|
+
types: PERMIT_TRANSFER_FROM_TYPES,
|
|
171
|
+
domain: {
|
|
172
|
+
name: PERMIT2_DOMAIN_NAME,
|
|
173
|
+
chainId: NetworkEnum.ETHEREUM,
|
|
174
|
+
verifyingContract: getPermit2Address(NetworkEnum.ETHEREUM)
|
|
175
|
+
},
|
|
176
|
+
message: {
|
|
177
|
+
permitted: {
|
|
178
|
+
token: token.toString(),
|
|
179
|
+
amount: maxSpendAmount
|
|
180
|
+
},
|
|
181
|
+
spender: spender.toString(),
|
|
182
|
+
nonce: nonce,
|
|
183
|
+
deadline: deadline
|
|
184
|
+
}
|
|
185
|
+
});
|
|
186
|
+
});
|
|
187
|
+
it('should use zksync permit2 address for zksync chain', function() {
|
|
188
|
+
var permit = new PermitTransferFrom(token, maxSpendAmount, spender, nonce, deadline);
|
|
189
|
+
var typedData = permit.getTypedData(NetworkEnum.ZKSYNC);
|
|
190
|
+
expect(typedData.domain.verifyingContract).toBe(getPermit2Address(NetworkEnum.ZKSYNC));
|
|
191
|
+
});
|
|
192
|
+
it('should use custom permit2 address when provided', function() {
|
|
193
|
+
var customPermit2 = '0xaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa';
|
|
194
|
+
var permit = new PermitTransferFrom(token, maxSpendAmount, spender, nonce, deadline);
|
|
195
|
+
var typedData = permit.getTypedData(NetworkEnum.ETHEREUM, customPermit2);
|
|
196
|
+
expect(typedData.domain.verifyingContract).toBe(customPermit2);
|
|
197
|
+
});
|
|
198
|
+
it('should throw for unsupported chain id without custom address', function() {
|
|
199
|
+
var permit = new PermitTransferFrom(token, maxSpendAmount, spender, nonce, deadline);
|
|
200
|
+
expect(function() {
|
|
201
|
+
return permit.getTypedData(999);
|
|
202
|
+
}).toThrow('unsupported chainId');
|
|
203
|
+
});
|
|
204
|
+
it('should produce signable typed data that recovers to the signer', /*#__PURE__*/ _async_to_generator(function() {
|
|
205
|
+
var wallet, permit, typedData, types, signature, recovered;
|
|
206
|
+
return _ts_generator(this, function(_state) {
|
|
207
|
+
switch(_state.label){
|
|
208
|
+
case 0:
|
|
209
|
+
wallet = Wallet.createRandom();
|
|
210
|
+
permit = new PermitTransferFrom(token, maxSpendAmount, spender, nonce, deadline);
|
|
211
|
+
typedData = permit.getTypedData(NetworkEnum.ETHEREUM);
|
|
212
|
+
types = _object_spread({}, typedData.types);
|
|
213
|
+
delete types['EIP712Domain'];
|
|
214
|
+
return [
|
|
215
|
+
4,
|
|
216
|
+
wallet.signTypedData(typedData.domain, types, typedData.message)
|
|
217
|
+
];
|
|
218
|
+
case 1:
|
|
219
|
+
signature = _state.sent();
|
|
220
|
+
recovered = verifyTypedData(typedData.domain, types, typedData.message, signature);
|
|
221
|
+
expect(recovered).toBe(wallet.address);
|
|
222
|
+
return [
|
|
223
|
+
2
|
|
224
|
+
];
|
|
225
|
+
}
|
|
226
|
+
});
|
|
227
|
+
}));
|
|
228
|
+
});
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
import { Address } from '@1inch/limit-order-sdk';
|
|
2
|
+
import { AbiCoder } from 'ethers';
|
|
3
|
+
import assert from 'assert';
|
|
4
|
+
/**
|
|
5
|
+
* Permit2Proxy exposes `func_nZHTch(address,address,uint256,((address,uint256),uint256,uint256),bytes)`
|
|
6
|
+
* whose selector collides with `transferFrom(address,address,uint256)` (0x23b872dd).
|
|
7
|
+
* The LOP calls `_callTransferFromWithSuffix`, appending these extra params as raw suffix bytes.
|
|
8
|
+
*/ var PERMIT2_TRANSFER_FROM_EXTRA_PARAMS_ABI = [
|
|
9
|
+
'tuple(tuple(address token, uint256 amount) permitted, uint256 nonce, uint256 deadline)',
|
|
10
|
+
'bytes'
|
|
11
|
+
];
|
|
12
|
+
var abiCoder = AbiCoder.defaultAbiCoder();
|
|
13
|
+
export function encodeTransferFromSuffix(token, amount, nonce, deadline, signature) {
|
|
14
|
+
return abiCoder.encode(PERMIT2_TRANSFER_FROM_EXTRA_PARAMS_ABI, [
|
|
15
|
+
{
|
|
16
|
+
permitted: {
|
|
17
|
+
token: token.toString(),
|
|
18
|
+
amount: amount
|
|
19
|
+
},
|
|
20
|
+
nonce: nonce,
|
|
21
|
+
deadline: deadline
|
|
22
|
+
},
|
|
23
|
+
signature
|
|
24
|
+
]);
|
|
25
|
+
}
|
|
26
|
+
export function decodeTransferFromSuffix(suffix) {
|
|
27
|
+
var decoded = abiCoder.decode(PERMIT2_TRANSFER_FROM_EXTRA_PARAMS_ABI, suffix);
|
|
28
|
+
var permit = decoded[0];
|
|
29
|
+
var sig = decoded[1];
|
|
30
|
+
assert(sig.length > 0, 'empty permit signature');
|
|
31
|
+
return {
|
|
32
|
+
token: new Address(permit.permitted.token),
|
|
33
|
+
amount: BigInt(permit.permitted.amount),
|
|
34
|
+
nonce: BigInt(permit.nonce),
|
|
35
|
+
deadline: BigInt(permit.deadline),
|
|
36
|
+
signature: sig
|
|
37
|
+
};
|
|
38
|
+
}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { Address } from '@1inch/limit-order-sdk';
|
|
2
|
+
import assert from 'assert';
|
|
3
|
+
import { PERMIT2_ADDRESSES, PERMIT2_PROXY_ADDRESSES } from './constants.js';
|
|
4
|
+
import { NetworkEnum } from '../../constants.js';
|
|
5
|
+
export function getPermit2Address(chainId) {
|
|
6
|
+
assert(NetworkEnum[chainId], 'unsupported chainId');
|
|
7
|
+
return PERMIT2_ADDRESSES[chainId];
|
|
8
|
+
}
|
|
9
|
+
export function getPermit2ProxyAddress(chainId) {
|
|
10
|
+
assert(NetworkEnum[chainId], 'unsupported chainId');
|
|
11
|
+
return new Address(PERMIT2_PROXY_ADDRESSES[chainId]);
|
|
12
|
+
}
|
package/dist/esm/index.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
export { Address, Extension, randBigInt, getLimitOrderContract, Interaction, TakerTraits, ExtensionBuilder, AmountMode, getLimitOrderV4Domain, LimitOrderContract, MakerTraits, ProxyFactory, NativeOrdersFactory, NativeOrdersImpl
|
|
1
|
+
export { Address, Extension, randBigInt, getLimitOrderContract, Interaction, TakerTraits, ExtensionBuilder, AmountMode, getLimitOrderV4Domain, LimitOrderContract, MakerTraits, ProxyFactory, NativeOrdersFactory, NativeOrdersImpl } from '@1inch/limit-order-sdk';
|
|
2
2
|
export * from './fusion-order/index.js';
|
|
3
3
|
export * from './amount-calculator//index.js';
|
|
4
4
|
export * from './connector/index.js';
|
package/dist/esm/package.json
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"name":"@1inch/fusion-sdk","version":"2.4.7-rc.
|
|
1
|
+
{"name":"@1inch/fusion-sdk","version":"2.4.7-rc.3","type":"module"}
|
package/dist/esm/sdk/README.md
CHANGED
|
@@ -204,11 +204,12 @@ sdk.placeOrder({
|
|
|
204
204
|
toTokenAddress: '0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48', // USDC
|
|
205
205
|
amount: '50000000000000000', // 0.05 ETH
|
|
206
206
|
walletAddress: makerAddress,
|
|
207
|
-
//
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
}
|
|
207
|
+
// fee is an optional field
|
|
208
|
+
fee: {
|
|
209
|
+
takingFeeBps: 100, // 1% as we use bps format, 1% is equal to 100bps
|
|
210
|
+
takingFeeReceiver: '0x0000000000000000000000000000000000000000' // fee receiver address
|
|
211
|
+
},
|
|
212
|
+
source: 'platform-name'
|
|
212
213
|
}).then(console.log)
|
|
213
214
|
```
|
|
214
215
|
|
|
@@ -223,15 +224,6 @@ type PaginationParams = {
|
|
|
223
224
|
}
|
|
224
225
|
```
|
|
225
226
|
|
|
226
|
-
### IntegratorFeeRequest
|
|
227
|
-
|
|
228
|
-
```typescript
|
|
229
|
-
type IntegratorFeeRequest = {
|
|
230
|
-
receiver: Address // fee receiver address
|
|
231
|
-
value: Bps // 100 == 1%
|
|
232
|
-
}
|
|
233
|
-
```
|
|
234
|
-
|
|
235
227
|
### QuoteParams
|
|
236
228
|
|
|
237
229
|
```typescript
|
|
@@ -239,9 +231,8 @@ type QuoteParams = {
|
|
|
239
231
|
fromTokenAddress: string
|
|
240
232
|
toTokenAddress: string
|
|
241
233
|
amount: string
|
|
242
|
-
walletAddress?: string
|
|
243
234
|
permit?: string // a permit (EIP-2612) call data, user approval sign
|
|
244
|
-
|
|
235
|
+
takingFeeBps?: number // 100 == 1%
|
|
245
236
|
}
|
|
246
237
|
```
|
|
247
238
|
|
|
@@ -262,7 +253,12 @@ type OrderParams = {
|
|
|
262
253
|
permit?: string // a permit (EIP-2612) call data, user approval sign
|
|
263
254
|
receiver?: string // address
|
|
264
255
|
preset?: PresetEnum
|
|
265
|
-
nonce?:
|
|
266
|
-
|
|
256
|
+
nonce?: OrderNonce | string | number // allows to batch cancel orders. by default: not used
|
|
257
|
+
fee?: TakingFeeInfo
|
|
258
|
+
}
|
|
259
|
+
|
|
260
|
+
export type TakingFeeInfo = {
|
|
261
|
+
takingFeeBps: number // 100 == 1%
|
|
262
|
+
takingFeeReceiver: string
|
|
267
263
|
}
|
|
268
264
|
```
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { Address, ProxyFactory } from '@1inch/limit-order-sdk';
|
|
2
|
-
import { FusionOrderParamsData,
|
|
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
5
|
import { FusionOrder } from '../../../fusion-order/index.js';
|
|
@@ -25,11 +25,10 @@ export declare class Quote {
|
|
|
25
25
|
readonly slippage: number;
|
|
26
26
|
readonly resolverFeePreset: ResolverFeePreset;
|
|
27
27
|
readonly surplusFee?: number;
|
|
28
|
-
readonly integratorFeeParams?:
|
|
28
|
+
readonly integratorFeeParams?: IntegratorFeeParams;
|
|
29
29
|
constructor(params: QuoterRequest, response: QuoterResponse);
|
|
30
30
|
createFusionOrder(paramsData: Omit<FusionOrderParamsData, 'permit' | 'isPermit2'>): FusionOrder;
|
|
31
31
|
getPreset(type?: PresetEnum): Preset;
|
|
32
32
|
private getWhitelist;
|
|
33
33
|
private _createOrder;
|
|
34
|
-
private parseIntegratorFee;
|
|
35
34
|
}
|
|
@@ -13,16 +13,11 @@ export type FusionOrderParamsData = {
|
|
|
13
13
|
delayAuctionStartTimeBy?: bigint;
|
|
14
14
|
orderExpirationDelay?: bigint;
|
|
15
15
|
};
|
|
16
|
-
export type
|
|
17
|
-
receiver: Address;
|
|
18
|
-
value: Bps;
|
|
19
|
-
};
|
|
20
|
-
export type IntegratorFeeResponse = {
|
|
16
|
+
export type IntegratorFeeParams = {
|
|
21
17
|
receiver: Address;
|
|
22
18
|
value: Bps;
|
|
23
19
|
share: Bps;
|
|
24
20
|
};
|
|
25
|
-
export type IntegratorFeeParams = IntegratorFeeResponse;
|
|
26
21
|
export type ResolverFeePreset = {
|
|
27
22
|
receiver: Address;
|
|
28
23
|
bps: Bps;
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { Address } from '@1inch/limit-order-sdk';
|
|
2
2
|
import { QuoterRequestParams, QuoterRequestParamsRaw } from './types.js';
|
|
3
|
-
import {
|
|
3
|
+
import { IntegratorFeeParams } from './quote/index.js';
|
|
4
4
|
export declare class QuoterRequest {
|
|
5
5
|
readonly fromTokenAddress: Address;
|
|
6
6
|
readonly toTokenAddress: Address;
|
|
@@ -8,8 +8,8 @@ export declare class QuoterRequest {
|
|
|
8
8
|
readonly walletAddress: Address;
|
|
9
9
|
readonly enableEstimate: boolean;
|
|
10
10
|
readonly permit: string | undefined;
|
|
11
|
-
readonly integratorFee?:
|
|
12
|
-
readonly source
|
|
11
|
+
readonly integratorFee?: IntegratorFeeParams;
|
|
12
|
+
readonly source: string;
|
|
13
13
|
readonly isPermit2: boolean;
|
|
14
14
|
readonly slippage?: number;
|
|
15
15
|
constructor(params: QuoterRequestParams);
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { IntegratorFeeParams } from './quote/index.js';
|
|
2
2
|
import { NetworkEnum } from '../../constants.js';
|
|
3
3
|
export type QuoterRequestParams = {
|
|
4
4
|
fromTokenAddress: string;
|
|
@@ -7,7 +7,7 @@ export type QuoterRequestParams = {
|
|
|
7
7
|
walletAddress: string;
|
|
8
8
|
enableEstimate?: boolean;
|
|
9
9
|
permit?: string;
|
|
10
|
-
integratorFee?:
|
|
10
|
+
integratorFee?: IntegratorFeeParams;
|
|
11
11
|
source?: string;
|
|
12
12
|
isPermit2?: boolean;
|
|
13
13
|
slippage?: number;
|
|
@@ -15,6 +15,7 @@ export declare enum NetworkEnum {
|
|
|
15
15
|
UNICHAIN = 130
|
|
16
16
|
}
|
|
17
17
|
export declare const ONE_INCH_LIMIT_ORDER_V4 = "0x111111125421ca6dc452d289314280a0f8842a65";
|
|
18
|
+
export declare const ONE_INCH_LIMIT_ORDER_V4_ADDRESSES: Record<NetworkEnum, string>;
|
|
18
19
|
export declare const UINT_160_MAX: bigint;
|
|
19
20
|
export declare const UINT_16_MAX: bigint;
|
|
20
21
|
export declare const UINT_80_MAX: bigint;
|
|
@@ -4,6 +4,7 @@ import { AuctionDetails } from './auction-details/index.js';
|
|
|
4
4
|
import { Whitelist } from './whitelist/whitelist.js';
|
|
5
5
|
import { SurplusParams } from './surplus-params.js';
|
|
6
6
|
import type { Details, Extra } from './types.js';
|
|
7
|
+
import { PermitTransferFrom } from './permit/permit-transfer-from.js';
|
|
7
8
|
import { AuctionCalculator } from '../amount-calculator/auction-calculator/index.js';
|
|
8
9
|
import { NetworkEnum } from '../constants.js';
|
|
9
10
|
import { AmountCalculator } from '../amount-calculator/amount-calculator.js';
|
|
@@ -33,6 +34,8 @@ export declare class FusionOrder {
|
|
|
33
34
|
static isNativeOrder(chainId: number, ethOrderFactory: ProxyFactory, order: LimitOrderV4Struct, signature: string): boolean;
|
|
34
35
|
static fromNative(chainId: NetworkEnum, ethOrdersFactory: ProxyFactory, settlementExtension: Address, orderInfo: Omit<OrderInfoData, 'makerAsset'>, details: Details, extra?: Extra): FusionOrder;
|
|
35
36
|
static fromDataAndExtension(order: LimitOrderV4Struct, extension: Extension): FusionOrder;
|
|
37
|
+
isTransferPermit(): boolean;
|
|
38
|
+
withTransferPermit(permit: PermitTransferFrom, signature: string): this;
|
|
36
39
|
build(): LimitOrderV4Struct;
|
|
37
40
|
getOrderHash(chainId: number): string;
|
|
38
41
|
getTypedData(chainId: number): EIP712TypedData;
|
|
@@ -51,4 +54,7 @@ export declare class FusionOrder {
|
|
|
51
54
|
getAmountCalculator(): AmountCalculator;
|
|
52
55
|
isNative(chainId: number, ethOrderFactory: ProxyFactory, signature: string): boolean;
|
|
53
56
|
nativeSignature(maker: Address): string;
|
|
57
|
+
createTransferPermit(chainIdOrPermit2Proxy: number | Address, permit2Proxy?: Address): PermitTransferFrom;
|
|
58
|
+
private restoreMakerAssetSuffix;
|
|
59
|
+
private decodeTransferPermitSuffix;
|
|
54
60
|
}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import { EIP712Types } from '@1inch/limit-order-sdk';
|
|
2
|
+
import { NetworkEnum } from '../../constants.js';
|
|
3
|
+
export declare const PERMIT2_ADDRESSES: Record<NetworkEnum, string>;
|
|
4
|
+
export declare const PERMIT2_PROXY_ADDRESSES: Record<NetworkEnum, string>;
|
|
5
|
+
export declare const PERMIT2_DOMAIN_NAME = "Permit2";
|
|
6
|
+
export declare const TOKEN_PERMISSIONS: EIP712Types;
|
|
7
|
+
export declare const PERMIT_TRANSFER_FROM_TYPES: EIP712Types;
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { Address, EIP712TypedData } from '@1inch/limit-order-sdk';
|
|
2
|
+
export declare class PermitTransferFrom {
|
|
3
|
+
readonly token: Address;
|
|
4
|
+
readonly maxSpendAmount: bigint;
|
|
5
|
+
readonly spender: Address;
|
|
6
|
+
readonly nonce: bigint;
|
|
7
|
+
readonly deadline: bigint;
|
|
8
|
+
constructor(token: Address, maxSpendAmount: bigint, spender: Address, nonce: bigint, deadline: bigint);
|
|
9
|
+
getTypedData(chainId: number, permit2Address?: string): EIP712TypedData;
|
|
10
|
+
getTransferFromSuffix(signature: string): string;
|
|
11
|
+
}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { Address } from '@1inch/limit-order-sdk';
|
|
2
|
+
export type DecodedTransferPermitSuffix = {
|
|
3
|
+
token: Address;
|
|
4
|
+
amount: bigint;
|
|
5
|
+
nonce: bigint;
|
|
6
|
+
deadline: bigint;
|
|
7
|
+
signature: string;
|
|
8
|
+
};
|
|
9
|
+
export declare function encodeTransferFromSuffix(token: Address, amount: bigint, nonce: bigint, deadline: bigint, signature: string): string;
|
|
10
|
+
export declare function decodeTransferFromSuffix(suffix: string): DecodedTransferPermitSuffix;
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
export { Address, type LimitOrderV4Struct, Extension, randBigInt, getLimitOrderContract, Interaction, TakerTraits, ExtensionBuilder, AmountMode, getLimitOrderV4Domain, LimitOrderContract, type OrderInfoData, type EIP712TypedData, MakerTraits, ProxyFactory, NativeOrdersFactory, NativeOrdersImpl
|
|
1
|
+
export { Address, type LimitOrderV4Struct, Extension, randBigInt, getLimitOrderContract, Interaction, TakerTraits, ExtensionBuilder, AmountMode, getLimitOrderV4Domain, LimitOrderContract, type OrderInfoData, type EIP712TypedData, MakerTraits, ProxyFactory, NativeOrdersFactory, NativeOrdersImpl } from '@1inch/limit-order-sdk';
|
|
2
2
|
export * from './fusion-order/index.js';
|
|
3
3
|
export * from './amount-calculator//index.js';
|
|
4
4
|
export * from './connector/index.js';
|
|
@@ -10,4 +10,4 @@ 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 { QuoterRequest, type QuoterResponse, RelayerRequest, QuoterCustomPresetRequest, PresetEnum, Preset, Quote, type OrderStatusResponse, OrderStatus
|
|
13
|
+
export { QuoterRequest, type QuoterResponse, RelayerRequest, QuoterCustomPresetRequest, PresetEnum, Preset, Quote, type OrderStatusResponse, OrderStatus } from './api/index.js';
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { Address, LimitOrderV4Struct } from '@1inch/limit-order-sdk';
|
|
2
2
|
import { BlockchainProviderConnector, HttpProviderConnector } from '../connector/index.js';
|
|
3
3
|
import { NetworkEnum } from '../constants.js';
|
|
4
|
-
import { CustomPreset,
|
|
4
|
+
import { CustomPreset, IntegratorFeeParams, PresetEnum } from '../api/index.js';
|
|
5
5
|
import { FusionOrder } from '../fusion-order/index.js';
|
|
6
6
|
export type FusionSDKConfigParams = {
|
|
7
7
|
url: string;
|
|
@@ -17,7 +17,7 @@ export type QuoteParams = {
|
|
|
17
17
|
walletAddress?: string;
|
|
18
18
|
enableEstimate?: boolean;
|
|
19
19
|
permit?: string;
|
|
20
|
-
integratorFee?:
|
|
20
|
+
integratorFee?: IntegratorFeeParams;
|
|
21
21
|
source?: string;
|
|
22
22
|
isPermit2?: boolean;
|
|
23
23
|
slippage?: number;
|
|
@@ -40,7 +40,7 @@ export type OrderParams = {
|
|
|
40
40
|
orderExpirationDelay?: bigint;
|
|
41
41
|
allowPartialFills?: boolean;
|
|
42
42
|
allowMultipleFills?: boolean;
|
|
43
|
-
integratorFee?:
|
|
43
|
+
integratorFee?: IntegratorFeeParams;
|
|
44
44
|
slippage?: number;
|
|
45
45
|
};
|
|
46
46
|
export type OrderInfo = {
|