@1inch/fusion-sdk 1.0.1-rc.3 → 1.0.1-rc.30
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/api/orders/order-api.spec.js +1 -0
- package/dist/api/orders/order-api.spec.js.map +1 -1
- package/dist/api/quoter/quote/quote.d.ts +5 -1
- package/dist/api/quoter/quote/quote.js +3 -3
- package/dist/api/quoter/quote/quote.js.map +1 -1
- package/dist/api/quoter/quote/types.d.ts +4 -0
- package/dist/api/quoter/quoter.api.spec.js +18 -3
- package/dist/api/quoter/quoter.api.spec.js.map +1 -1
- package/dist/api/quoter/types.d.ts +3 -3
- package/dist/auction-calculator/auction-calculator.d.ts +23 -4
- package/dist/auction-calculator/auction-calculator.js +40 -6
- package/dist/auction-calculator/auction-calculator.js.map +1 -1
- package/dist/auction-calculator/auction-calculator.spec.js +7 -5
- package/dist/auction-calculator/auction-calculator.spec.js.map +1 -1
- package/dist/auction-calculator/calc.d.ts +8 -0
- package/dist/auction-calculator/calc.js +8 -0
- package/dist/auction-calculator/calc.js.map +1 -1
- package/dist/auction-calculator/constants.js +1 -1
- package/dist/auction-calculator/constants.js.map +1 -1
- package/dist/connector/blockchain/private-key-provider.connector.js +2 -0
- package/dist/connector/blockchain/private-key-provider.connector.js.map +1 -1
- package/dist/connector/ws/websocket-client.connector.js +2 -0
- package/dist/connector/ws/websocket-client.connector.js.map +1 -1
- package/dist/constants.d.ts +1 -0
- package/dist/constants.js +2 -1
- package/dist/constants.js.map +1 -1
- package/dist/fusion-order/auction-details/auction-details.d.ts +29 -0
- package/dist/fusion-order/auction-details/auction-details.js +21 -0
- package/dist/fusion-order/auction-details/auction-details.js.map +1 -1
- package/dist/fusion-order/auction-details/types.d.ts +12 -0
- package/dist/fusion-order/fusion-extension.d.ts +2 -2
- package/dist/fusion-order/fusion-extension.js +3 -3
- package/dist/fusion-order/fusion-extension.js.map +1 -1
- package/dist/fusion-order/fusion-order.d.ts +89 -3
- package/dist/fusion-order/fusion-order.js +144 -17
- package/dist/fusion-order/fusion-order.js.map +1 -1
- package/dist/fusion-order/fusion-order.spec.js +35 -5
- package/dist/fusion-order/fusion-order.spec.js.map +1 -1
- package/dist/fusion-order/settlement-post-interaction-data/settlement-post-interaction-data.d.ts +38 -1
- package/dist/fusion-order/settlement-post-interaction-data/settlement-post-interaction-data.js +125 -46
- package/dist/fusion-order/settlement-post-interaction-data/settlement-post-interaction-data.js.map +1 -1
- package/dist/fusion-order/settlement-post-interaction-data/settlement-post-interaction-data.spec.js +95 -8
- package/dist/fusion-order/settlement-post-interaction-data/settlement-post-interaction-data.spec.js.map +1 -1
- package/dist/fusion-order/settlement-post-interaction-data/types.d.ts +12 -3
- package/dist/index.d.ts +2 -2
- package/dist/index.js +11 -2
- package/dist/index.js.map +1 -1
- package/dist/sdk/sdk.js +3 -6
- package/dist/sdk/sdk.js.map +1 -1
- package/dist/sdk/types.d.ts +11 -0
- package/dist/sdk/utils.js +5 -2
- package/dist/sdk/utils.js.map +1 -1
- package/dist/utils/amounts.d.ts +17 -1
- package/dist/utils/amounts.js +19 -3
- package/dist/utils/amounts.js.map +1 -1
- package/dist/utils/time.d.ts +1 -0
- package/dist/utils/time.js +8 -0
- package/dist/utils/time.js.map +1 -0
- package/dist/validations.d.ts +4 -0
- package/dist/validations.js +4 -0
- package/dist/validations.js.map +1 -1
- package/dist/ws-api/ws.spec.js +1 -0
- package/dist/ws-api/ws.spec.js.map +1 -1
- package/package.json +31 -24
- package/dist/limit-order-contract/index.d.ts +0 -1
- package/dist/limit-order-contract/index.js +0 -6
- package/dist/limit-order-contract/index.js.map +0 -1
|
@@ -1,8 +1,20 @@
|
|
|
1
1
|
export type AuctionPoint = {
|
|
2
|
+
/**
|
|
3
|
+
* point in time of this point relatively to previous point
|
|
4
|
+
*/
|
|
2
5
|
delay: number;
|
|
6
|
+
/**
|
|
7
|
+
* coefficient rate bump from the end of an auction
|
|
8
|
+
*/
|
|
3
9
|
coefficient: number;
|
|
4
10
|
};
|
|
5
11
|
export type AuctionGasCostInfo = {
|
|
12
|
+
/**
|
|
13
|
+
* Rate bump to cover gas price. 10_000_000 means 100%
|
|
14
|
+
*/
|
|
6
15
|
gasBumpEstimate: bigint;
|
|
16
|
+
/**
|
|
17
|
+
* Gas price at estimation time. 1000 means 1 Gwei
|
|
18
|
+
*/
|
|
7
19
|
gasPriceEstimate: bigint;
|
|
8
20
|
};
|
|
@@ -3,8 +3,8 @@ import { AuctionDetails } from './auction-details';
|
|
|
3
3
|
import { SettlementPostInteractionData } from './settlement-post-interaction-data';
|
|
4
4
|
export declare class FusionExtension extends ExtensionBuilder {
|
|
5
5
|
readonly address: Address;
|
|
6
|
-
readonly
|
|
6
|
+
readonly auctionDetails: AuctionDetails;
|
|
7
7
|
readonly postInteractionData: SettlementPostInteractionData;
|
|
8
|
-
constructor(address: Address,
|
|
8
|
+
constructor(address: Address, auctionDetails: AuctionDetails, postInteractionData: SettlementPostInteractionData);
|
|
9
9
|
build(): Extension;
|
|
10
10
|
}
|
|
@@ -3,14 +3,14 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
3
3
|
exports.FusionExtension = void 0;
|
|
4
4
|
const limit_order_sdk_1 = require("@1inch/limit-order-sdk");
|
|
5
5
|
class FusionExtension extends limit_order_sdk_1.ExtensionBuilder {
|
|
6
|
-
constructor(address,
|
|
6
|
+
constructor(address, auctionDetails, postInteractionData) {
|
|
7
7
|
super();
|
|
8
8
|
this.address = address;
|
|
9
|
-
this.
|
|
9
|
+
this.auctionDetails = auctionDetails;
|
|
10
10
|
this.postInteractionData = postInteractionData;
|
|
11
11
|
}
|
|
12
12
|
build() {
|
|
13
|
-
const detailsBytes = this.
|
|
13
|
+
const detailsBytes = this.auctionDetails.encode();
|
|
14
14
|
this.withMakingAmountData(this.address, detailsBytes)
|
|
15
15
|
.withTakingAmountData(this.address, detailsBytes)
|
|
16
16
|
.withPostInteraction(new limit_order_sdk_1.Interaction(this.address, this.postInteractionData.encode()));
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"fusion-extension.js","sourceRoot":"","sources":["../../src/fusion-order/fusion-extension.ts"],"names":[],"mappings":";;;AAAA,4DAK+B;AAI/B,MAAa,eAAgB,SAAQ,kCAAgB;IACjD,YACoB,OAAgB,EAChB,
|
|
1
|
+
{"version":3,"file":"fusion-extension.js","sourceRoot":"","sources":["../../src/fusion-order/fusion-extension.ts"],"names":[],"mappings":";;;AAAA,4DAK+B;AAI/B,MAAa,eAAgB,SAAQ,kCAAgB;IACjD,YACoB,OAAgB,EAChB,cAA8B,EAC9B,mBAAkD;QAElE,KAAK,EAAE,CAAA;QAJS,YAAO,GAAP,OAAO,CAAS;QAChB,mBAAc,GAAd,cAAc,CAAgB;QAC9B,wBAAmB,GAAnB,mBAAmB,CAA+B;IAGtE,CAAC;IAEM,KAAK;QACR,MAAM,YAAY,GAAG,IAAI,CAAC,cAAc,CAAC,MAAM,EAAE,CAAA;QAEjD,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,OAAO,EAAE,YAAY,CAAC;aAChD,oBAAoB,CAAC,IAAI,CAAC,OAAO,EAAE,YAAY,CAAC;aAChD,mBAAmB,CAChB,IAAI,6BAAW,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,mBAAmB,CAAC,MAAM,EAAE,CAAC,CACnE,CAAA;QAEL,OAAO,KAAK,CAAC,KAAK,EAAE,CAAA;IACxB,CAAC;CACJ;AApBD,0CAoBC"}
|
|
@@ -4,30 +4,116 @@ import { AuctionDetails } from './auction-details';
|
|
|
4
4
|
import { AuctionWhitelistItem, IntegratorFee } from './settlement-post-interaction-data';
|
|
5
5
|
import { AuctionCalculator } from '../auction-calculator';
|
|
6
6
|
export declare class FusionOrder {
|
|
7
|
+
/**
|
|
8
|
+
* Fusion extension address
|
|
9
|
+
* @see https://github.com/1inch/limit-order-settlement
|
|
10
|
+
*/
|
|
11
|
+
readonly settlementExtensionContract: Address;
|
|
12
|
+
private static _ORDER_FEE_BASE_POINTS;
|
|
7
13
|
private static defaultExtra;
|
|
8
14
|
readonly fusionExtension: FusionExtension;
|
|
9
15
|
private inner;
|
|
10
16
|
private constructor();
|
|
11
17
|
get extension(): Extension;
|
|
12
|
-
|
|
18
|
+
get maker(): Address;
|
|
19
|
+
get takerAsset(): Address;
|
|
20
|
+
get makerAsset(): Address;
|
|
21
|
+
get takingAmount(): bigint;
|
|
22
|
+
get makingAmount(): bigint;
|
|
23
|
+
get receiver(): Address;
|
|
24
|
+
/**
|
|
25
|
+
* Timestamp in sec
|
|
26
|
+
*/
|
|
27
|
+
get deadline(): bigint;
|
|
28
|
+
/**
|
|
29
|
+
* Timestamp in sec
|
|
30
|
+
*/
|
|
31
|
+
get auctionStartTime(): bigint;
|
|
32
|
+
/**
|
|
33
|
+
* Timestamp in sec
|
|
34
|
+
*/
|
|
35
|
+
get auctionEndTime(): bigint;
|
|
36
|
+
get partialFillAllowed(): boolean;
|
|
37
|
+
get multipleFillsAllowed(): boolean;
|
|
38
|
+
static new(
|
|
39
|
+
/**
|
|
40
|
+
* Fusion extension address
|
|
41
|
+
* @see https://github.com/1inch/limit-order-settlement
|
|
42
|
+
*/
|
|
43
|
+
settlementExtension: Address, orderInfo: OrderInfoData, details: {
|
|
13
44
|
auction: AuctionDetails;
|
|
14
45
|
fees?: {
|
|
15
46
|
integratorFee?: IntegratorFee;
|
|
16
47
|
bankFee?: bigint;
|
|
17
48
|
};
|
|
18
49
|
whitelist: AuctionWhitelistItem[];
|
|
50
|
+
/**
|
|
51
|
+
* Time from which order can be executed
|
|
52
|
+
*/
|
|
53
|
+
resolvingStartTime?: bigint;
|
|
19
54
|
}, extra?: {
|
|
20
55
|
unwrapWETH?: boolean;
|
|
56
|
+
/**
|
|
57
|
+
* Required if `allowPartialFills` is false
|
|
58
|
+
*/
|
|
21
59
|
nonce?: bigint;
|
|
22
60
|
permit?: string;
|
|
61
|
+
/**
|
|
62
|
+
* Default is true
|
|
63
|
+
*/
|
|
23
64
|
allowPartialFills?: boolean;
|
|
65
|
+
/**
|
|
66
|
+
* Default is true
|
|
67
|
+
*/
|
|
24
68
|
allowMultipleFills?: boolean;
|
|
69
|
+
/**
|
|
70
|
+
* Order will expire in `orderExpirationDelay` after auction ends
|
|
71
|
+
* Default 12s
|
|
72
|
+
*/
|
|
25
73
|
orderExpirationDelay?: bigint;
|
|
26
74
|
enablePermit2?: boolean;
|
|
27
75
|
}): FusionOrder;
|
|
76
|
+
/**
|
|
77
|
+
* Create FusionOrder from order data and extension
|
|
78
|
+
*
|
|
79
|
+
*/
|
|
28
80
|
static fromDataAndExtension(order: LimitOrderV4Struct, extension: Extension): FusionOrder;
|
|
29
81
|
build(): LimitOrderV4Struct;
|
|
30
|
-
getOrderHash(
|
|
31
|
-
getTypedData(
|
|
82
|
+
getOrderHash(chainId: number): string;
|
|
83
|
+
getTypedData(chainId: number): EIP712TypedData;
|
|
32
84
|
getCalculator(): AuctionCalculator;
|
|
85
|
+
/**
|
|
86
|
+
* Calculates required taking amount for passed `makingAmount` at block time `time`
|
|
87
|
+
*
|
|
88
|
+
* @param makingAmount maker swap amount
|
|
89
|
+
* @param time execution time in sec
|
|
90
|
+
* @param blockBaseFee block fee in wei.
|
|
91
|
+
* */
|
|
92
|
+
calcTakingAmount(makingAmount: bigint, time: bigint, blockBaseFee?: bigint): bigint;
|
|
93
|
+
/**
|
|
94
|
+
* Check whether address allowed to execute order at the given time
|
|
95
|
+
*
|
|
96
|
+
* @param executor address of executor
|
|
97
|
+
* @param executionTime timestamp in sec at which order planning to execute
|
|
98
|
+
*/
|
|
99
|
+
canExecuteAt(executor: Address, executionTime: bigint): boolean;
|
|
100
|
+
/**
|
|
101
|
+
* Check is order expired at a given time
|
|
102
|
+
*
|
|
103
|
+
* @param time timestamp in seconds
|
|
104
|
+
*/
|
|
105
|
+
isExpiredAt(time: bigint): boolean;
|
|
106
|
+
/**
|
|
107
|
+
* Returns how much fee will be credited from a resolver deposit account
|
|
108
|
+
* Token of fee set in Settlement extension constructor
|
|
109
|
+
* Actual deployments can be found at https://github.com/1inch/limit-order-settlement/tree/master/deployments
|
|
110
|
+
*
|
|
111
|
+
* @param filledMakingAmount which resolver fills
|
|
112
|
+
* @see https://github.com/1inch/limit-order-settlement/blob/0e3cae3653092ebb4ea5d2a338c87a54351ad883/contracts/extensions/ResolverFeeExtension.sol#L29
|
|
113
|
+
*/
|
|
114
|
+
getResolverFee(filledMakingAmount: bigint): bigint;
|
|
115
|
+
/**
|
|
116
|
+
* Check if `wallet` can fill order before other
|
|
117
|
+
*/
|
|
118
|
+
isExclusiveResolver(wallet: Address): boolean;
|
|
33
119
|
}
|
|
@@ -10,21 +10,34 @@ const fusion_extension_1 = require("./fusion-extension");
|
|
|
10
10
|
const auction_details_1 = require("./auction-details");
|
|
11
11
|
const settlement_post_interaction_data_1 = require("./settlement-post-interaction-data");
|
|
12
12
|
const auction_calculator_1 = require("../auction-calculator");
|
|
13
|
-
const utils_1 = require("../utils");
|
|
14
13
|
const constants_1 = require("../constants");
|
|
14
|
+
const amounts_1 = require("../utils/amounts");
|
|
15
|
+
const time_1 = require("../utils/time");
|
|
15
16
|
class FusionOrder {
|
|
16
|
-
constructor(
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
17
|
+
constructor(
|
|
18
|
+
/**
|
|
19
|
+
* Fusion extension address
|
|
20
|
+
* @see https://github.com/1inch/limit-order-settlement
|
|
21
|
+
*/
|
|
22
|
+
settlementExtensionContract, orderInfo, auctionDetails, postInteractionData, extra = FusionOrder.defaultExtra) {
|
|
23
|
+
this.settlementExtensionContract = settlementExtensionContract;
|
|
24
|
+
const allowPartialFills = extra.allowPartialFills ??
|
|
25
|
+
FusionOrder.defaultExtra.allowPartialFills;
|
|
26
|
+
const allowMultipleFills = extra.allowMultipleFills ??
|
|
27
|
+
FusionOrder.defaultExtra.allowMultipleFills;
|
|
28
|
+
const unwrapWETH = extra.unwrapWETH ?? FusionOrder.defaultExtra.unwrapWETH;
|
|
29
|
+
const enablePermit2 = extra.enablePermit2 ?? FusionOrder.defaultExtra.enablePermit2;
|
|
30
|
+
const orderExpirationDelay = extra.orderExpirationDelay ??
|
|
31
|
+
FusionOrder.defaultExtra.orderExpirationDelay;
|
|
32
|
+
const { nonce, permit } = extra;
|
|
21
33
|
const deadline = auctionDetails.startTime +
|
|
22
34
|
auctionDetails.duration +
|
|
23
35
|
orderExpirationDelay;
|
|
24
36
|
const makerTraits = limit_order_sdk_1.MakerTraits.default()
|
|
25
37
|
.withExpiration(deadline)
|
|
26
38
|
.setPartialFills(allowPartialFills)
|
|
27
|
-
.setMultipleFills(allowMultipleFills)
|
|
39
|
+
.setMultipleFills(allowMultipleFills)
|
|
40
|
+
.enablePostInteraction();
|
|
28
41
|
if (makerTraits.isBitInvalidatorMode()) {
|
|
29
42
|
(0, assert_1.default)(nonce !== undefined, 'Nonce required, when partial fill or multiple fill disallowed');
|
|
30
43
|
}
|
|
@@ -37,13 +50,20 @@ class FusionOrder {
|
|
|
37
50
|
if (nonce !== undefined) {
|
|
38
51
|
makerTraits.withNonce(nonce);
|
|
39
52
|
}
|
|
40
|
-
|
|
53
|
+
/**
|
|
54
|
+
* @see https://github.com/1inch/limit-order-settlement/blob/0afb4785cb825fe959c534ff4f1a771d4d33cdf4/contracts/extensions/IntegratorFeeExtension.sol#L65
|
|
55
|
+
*/
|
|
56
|
+
const receiver = postInteractionData.integratorFee?.ratio
|
|
57
|
+
? settlementExtensionContract
|
|
58
|
+
: orderInfo.receiver;
|
|
59
|
+
const extension = new fusion_extension_1.FusionExtension(settlementExtensionContract, auctionDetails, postInteractionData);
|
|
41
60
|
if (permit) {
|
|
42
61
|
extension.withMakerPermit(orderInfo.makerAsset, permit);
|
|
43
62
|
}
|
|
44
63
|
const builtExtension = extension.build();
|
|
45
64
|
this.inner = new limit_order_sdk_1.LimitOrder({
|
|
46
65
|
...orderInfo,
|
|
66
|
+
receiver,
|
|
47
67
|
salt: limit_order_sdk_1.LimitOrder.buildSalt(builtExtension, orderInfo.salt)
|
|
48
68
|
}, makerTraits, builtExtension);
|
|
49
69
|
this.fusionExtension = extension;
|
|
@@ -51,26 +71,82 @@ class FusionOrder {
|
|
|
51
71
|
get extension() {
|
|
52
72
|
return this.inner.extension;
|
|
53
73
|
}
|
|
54
|
-
|
|
74
|
+
get maker() {
|
|
75
|
+
return this.inner.maker;
|
|
76
|
+
}
|
|
77
|
+
get takerAsset() {
|
|
78
|
+
return this.inner.takerAsset;
|
|
79
|
+
}
|
|
80
|
+
get makerAsset() {
|
|
81
|
+
return this.inner.makerAsset;
|
|
82
|
+
}
|
|
83
|
+
get takingAmount() {
|
|
84
|
+
return this.inner.takingAmount;
|
|
85
|
+
}
|
|
86
|
+
get makingAmount() {
|
|
87
|
+
return this.inner.makingAmount;
|
|
88
|
+
}
|
|
89
|
+
get receiver() {
|
|
90
|
+
return this.inner.receiver;
|
|
91
|
+
}
|
|
92
|
+
/**
|
|
93
|
+
* Timestamp in sec
|
|
94
|
+
*/
|
|
95
|
+
get deadline() {
|
|
96
|
+
return this.inner.makerTraits.expiration() || 0n;
|
|
97
|
+
}
|
|
98
|
+
/**
|
|
99
|
+
* Timestamp in sec
|
|
100
|
+
*/
|
|
101
|
+
get auctionStartTime() {
|
|
102
|
+
return this.fusionExtension.auctionDetails.startTime;
|
|
103
|
+
}
|
|
104
|
+
/**
|
|
105
|
+
* Timestamp in sec
|
|
106
|
+
*/
|
|
107
|
+
get auctionEndTime() {
|
|
108
|
+
const { startTime, duration } = this.fusionExtension.auctionDetails;
|
|
109
|
+
return startTime + duration;
|
|
110
|
+
}
|
|
111
|
+
get partialFillAllowed() {
|
|
112
|
+
return this.inner.makerTraits.isPartialFillAllowed();
|
|
113
|
+
}
|
|
114
|
+
get multipleFillsAllowed() {
|
|
115
|
+
return this.inner.makerTraits.isMultipleFillsAllowed();
|
|
116
|
+
}
|
|
117
|
+
static new(
|
|
118
|
+
/**
|
|
119
|
+
* Fusion extension address
|
|
120
|
+
* @see https://github.com/1inch/limit-order-settlement
|
|
121
|
+
*/
|
|
122
|
+
settlementExtension, orderInfo, details, extra) {
|
|
55
123
|
return new FusionOrder(settlementExtension, orderInfo, details.auction, settlement_post_interaction_data_1.SettlementPostInteractionData.new({
|
|
56
124
|
bankFee: details.fees?.bankFee || 0n,
|
|
57
125
|
integratorFee: details.fees?.integratorFee,
|
|
58
126
|
whitelist: details.whitelist,
|
|
59
|
-
|
|
127
|
+
resolvingStartTime: details.resolvingStartTime ?? (0, time_1.now)(),
|
|
128
|
+
customReceiver: orderInfo.receiver
|
|
60
129
|
}), extra);
|
|
61
130
|
}
|
|
131
|
+
/**
|
|
132
|
+
* Create FusionOrder from order data and extension
|
|
133
|
+
*
|
|
134
|
+
*/
|
|
62
135
|
static fromDataAndExtension(order, extension) {
|
|
63
136
|
const settlementContract = limit_order_sdk_1.Address.fromFirstBytes(extension.makingAmountData);
|
|
64
137
|
(0, assert_1.default)(limit_order_sdk_1.Address.fromFirstBytes(extension.takingAmountData).equal(settlementContract) &&
|
|
65
138
|
limit_order_sdk_1.Address.fromFirstBytes(extension.postInteraction).equal(settlementContract), 'Invalid extension, all calls should be to the same address');
|
|
66
139
|
const makerTraits = new limit_order_sdk_1.MakerTraits(BigInt(order.makerTraits));
|
|
67
|
-
|
|
68
|
-
|
|
140
|
+
(0, assert_1.default)(!makerTraits.isPrivate(), 'fusion order can not be private');
|
|
141
|
+
(0, assert_1.default)(makerTraits.hasPostInteraction(), 'post-interaction must be enabled');
|
|
142
|
+
const auctionDetails = auction_details_1.AuctionDetails.fromExtension(extension);
|
|
143
|
+
const postInteractionData = settlement_post_interaction_data_1.SettlementPostInteractionData.fromExtension(extension);
|
|
69
144
|
const deadline = makerTraits.expiration();
|
|
70
145
|
const orderExpirationDelay = deadline === null
|
|
71
146
|
? undefined
|
|
72
147
|
: deadline - auctionDetails.startTime - auctionDetails.duration;
|
|
73
148
|
return new FusionOrder(settlementContract, {
|
|
149
|
+
// shift because of how LimitOrder.buildSalt works
|
|
74
150
|
salt: BigInt(order.salt) >> 160n,
|
|
75
151
|
maker: new limit_order_sdk_1.Address(order.maker),
|
|
76
152
|
receiver: new limit_order_sdk_1.Address(order.receiver),
|
|
@@ -93,17 +169,68 @@ class FusionOrder {
|
|
|
93
169
|
build() {
|
|
94
170
|
return this.inner.build();
|
|
95
171
|
}
|
|
96
|
-
getOrderHash(
|
|
97
|
-
return this.inner.getOrderHash(
|
|
172
|
+
getOrderHash(chainId) {
|
|
173
|
+
return this.inner.getOrderHash(chainId);
|
|
98
174
|
}
|
|
99
|
-
getTypedData(
|
|
100
|
-
return this.inner.getTypedData(
|
|
175
|
+
getTypedData(chainId) {
|
|
176
|
+
return this.inner.getTypedData(chainId);
|
|
101
177
|
}
|
|
102
178
|
getCalculator() {
|
|
103
|
-
return auction_calculator_1.AuctionCalculator.fromAuctionData(this.fusionExtension.postInteractionData, this.fusionExtension.
|
|
179
|
+
return auction_calculator_1.AuctionCalculator.fromAuctionData(this.fusionExtension.postInteractionData, this.fusionExtension.auctionDetails);
|
|
180
|
+
}
|
|
181
|
+
/**
|
|
182
|
+
* Calculates required taking amount for passed `makingAmount` at block time `time`
|
|
183
|
+
*
|
|
184
|
+
* @param makingAmount maker swap amount
|
|
185
|
+
* @param time execution time in sec
|
|
186
|
+
* @param blockBaseFee block fee in wei.
|
|
187
|
+
* */
|
|
188
|
+
calcTakingAmount(makingAmount, time, blockBaseFee = 0n) {
|
|
189
|
+
const takingAmount = (0, amounts_1.calcTakingAmount)(makingAmount, this.makingAmount, this.takingAmount);
|
|
190
|
+
const calculator = this.getCalculator();
|
|
191
|
+
const bump = calculator.calcRateBump(time, blockBaseFee);
|
|
192
|
+
return calculator.calcAuctionTakingAmount(takingAmount, bump);
|
|
193
|
+
}
|
|
194
|
+
/**
|
|
195
|
+
* Check whether address allowed to execute order at the given time
|
|
196
|
+
*
|
|
197
|
+
* @param executor address of executor
|
|
198
|
+
* @param executionTime timestamp in sec at which order planning to execute
|
|
199
|
+
*/
|
|
200
|
+
canExecuteAt(executor, executionTime) {
|
|
201
|
+
return this.fusionExtension.postInteractionData.canExecuteAt(executor, executionTime);
|
|
202
|
+
}
|
|
203
|
+
/**
|
|
204
|
+
* Check is order expired at a given time
|
|
205
|
+
*
|
|
206
|
+
* @param time timestamp in seconds
|
|
207
|
+
*/
|
|
208
|
+
isExpiredAt(time) {
|
|
209
|
+
return time > this.deadline;
|
|
210
|
+
}
|
|
211
|
+
/**
|
|
212
|
+
* Returns how much fee will be credited from a resolver deposit account
|
|
213
|
+
* Token of fee set in Settlement extension constructor
|
|
214
|
+
* Actual deployments can be found at https://github.com/1inch/limit-order-settlement/tree/master/deployments
|
|
215
|
+
*
|
|
216
|
+
* @param filledMakingAmount which resolver fills
|
|
217
|
+
* @see https://github.com/1inch/limit-order-settlement/blob/0e3cae3653092ebb4ea5d2a338c87a54351ad883/contracts/extensions/ResolverFeeExtension.sol#L29
|
|
218
|
+
*/
|
|
219
|
+
getResolverFee(filledMakingAmount) {
|
|
220
|
+
return ((this.fusionExtension.postInteractionData.bankFee *
|
|
221
|
+
FusionOrder._ORDER_FEE_BASE_POINTS *
|
|
222
|
+
filledMakingAmount) /
|
|
223
|
+
this.makingAmount);
|
|
224
|
+
}
|
|
225
|
+
/**
|
|
226
|
+
* Check if `wallet` can fill order before other
|
|
227
|
+
*/
|
|
228
|
+
isExclusiveResolver(wallet) {
|
|
229
|
+
return this.fusionExtension.postInteractionData.isExclusiveResolver(wallet);
|
|
104
230
|
}
|
|
105
231
|
}
|
|
106
232
|
exports.FusionOrder = FusionOrder;
|
|
233
|
+
FusionOrder._ORDER_FEE_BASE_POINTS = 10n ** 15n;
|
|
107
234
|
FusionOrder.defaultExtra = {
|
|
108
235
|
allowPartialFills: true,
|
|
109
236
|
allowMultipleFills: true,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"fusion-order.js","sourceRoot":"","sources":["../../src/fusion-order/fusion-order.ts"],"names":[],"mappings":";;;;;;AAAA,
|
|
1
|
+
{"version":3,"file":"fusion-order.js","sourceRoot":"","sources":["../../src/fusion-order/fusion-order.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
const limit_order_sdk_1 = require("@1inch/limit-order-sdk");
|
|
4
|
+
const ethers_1 = require("ethers");
|
|
4
5
|
const fusion_order_1 = require("./fusion-order");
|
|
5
6
|
const auction_details_1 = require("./auction-details");
|
|
6
7
|
describe('Fusion Order', () => {
|
|
@@ -28,9 +29,10 @@ describe('Fusion Order', () => {
|
|
|
28
29
|
whitelist: [
|
|
29
30
|
{
|
|
30
31
|
address: new limit_order_sdk_1.Address('0x00000000219ab540356cbb839cbe05303d7705fa'),
|
|
31
|
-
|
|
32
|
+
allowFrom: 0n
|
|
32
33
|
}
|
|
33
|
-
]
|
|
34
|
+
],
|
|
35
|
+
resolvingStartTime: 1673548139n
|
|
34
36
|
});
|
|
35
37
|
const builtOrder = order.build();
|
|
36
38
|
expect(builtOrder).toStrictEqual({
|
|
@@ -40,8 +42,8 @@ describe('Fusion Order', () => {
|
|
|
40
42
|
receiver: '0x0000000000000000000000000000000000000000',
|
|
41
43
|
takerAsset: '0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48',
|
|
42
44
|
takingAmount: '1420000000',
|
|
43
|
-
makerTraits: '
|
|
44
|
-
salt: '
|
|
45
|
+
makerTraits: '33471150795161712739625987854073848363835856965607525350783622537007396290560',
|
|
46
|
+
salt: '14969955465678758833706505435513058355190519874774'
|
|
45
47
|
});
|
|
46
48
|
const makerTraits = new limit_order_sdk_1.MakerTraits(BigInt(builtOrder.makerTraits));
|
|
47
49
|
expect(makerTraits.isNativeUnwrapEnabled()).toEqual(false);
|
|
@@ -72,11 +74,39 @@ describe('Fusion Order', () => {
|
|
|
72
74
|
whitelist: [
|
|
73
75
|
{
|
|
74
76
|
address: new limit_order_sdk_1.Address('0x00000000219ab540356cbb839cbe05303d7705fa'),
|
|
75
|
-
|
|
77
|
+
allowFrom: 0n
|
|
76
78
|
}
|
|
77
79
|
]
|
|
78
80
|
});
|
|
79
81
|
expect(fusion_order_1.FusionOrder.fromDataAndExtension(order.build(), order.extension)).toStrictEqual(order);
|
|
80
82
|
});
|
|
83
|
+
it('Should calculate taking amount', () => {
|
|
84
|
+
const now = 10000n;
|
|
85
|
+
const order = fusion_order_1.FusionOrder.new(new limit_order_sdk_1.Address('0x8273f37417da37c4a6c3995e82cf442f87a25d9c'), {
|
|
86
|
+
makerAsset: new limit_order_sdk_1.Address('0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48' // USDC
|
|
87
|
+
),
|
|
88
|
+
takerAsset: new limit_order_sdk_1.Address('0x111111111117dc0aa78b770fa6a738034120c302' // 1INCH
|
|
89
|
+
),
|
|
90
|
+
maker: limit_order_sdk_1.Address.fromBigInt(1n),
|
|
91
|
+
makingAmount: (0, ethers_1.parseUnits)('150', 6),
|
|
92
|
+
takingAmount: (0, ethers_1.parseUnits)('200')
|
|
93
|
+
}, {
|
|
94
|
+
auction: new auction_details_1.AuctionDetails({
|
|
95
|
+
startTime: now,
|
|
96
|
+
duration: 120n,
|
|
97
|
+
initialRateBump: 10000000,
|
|
98
|
+
points: []
|
|
99
|
+
}),
|
|
100
|
+
whitelist: [
|
|
101
|
+
{
|
|
102
|
+
address: new limit_order_sdk_1.Address('0x00000000219ab540356cbb839cbe05303d7705fa'),
|
|
103
|
+
allowFrom: 0n
|
|
104
|
+
}
|
|
105
|
+
],
|
|
106
|
+
resolvingStartTime: 0n
|
|
107
|
+
});
|
|
108
|
+
expect(order.calcTakingAmount(order.makingAmount, now)).toEqual(2n * order.takingAmount // because init rate bump is 100%
|
|
109
|
+
);
|
|
110
|
+
});
|
|
81
111
|
});
|
|
82
112
|
//# sourceMappingURL=fusion-order.spec.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"fusion-order.spec.js","sourceRoot":"","sources":["../../src/fusion-order/fusion-order.spec.ts"],"names":[],"mappings":";;AAAA,4DAA2D;AAC3D,iDAA0C;AAC1C,uDAAgD;AAEhD,QAAQ,CAAC,cAAc,EAAE,GAAG,EAAE;IAC1B,EAAE,CAAC,4BAA4B,EAAE,GAAG,EAAE;QAClC,MAAM,iBAAiB,GAAG,IAAI,yBAAO,CACjC,4CAA4C,CAC/C,CAAA;QAED,MAAM,KAAK,GAAG,0BAAW,CAAC,GAAG,CACzB,iBAAiB,EACjB;YACI,UAAU,EAAE,IAAI,yBAAO,CACnB,4CAA4C,CAC/C;YACD,UAAU,EAAE,IAAI,yBAAO,CACnB,4CAA4C,CAC/C;YACD,YAAY,EAAE,oBAAoB;YAClC,YAAY,EAAE,WAAW;YACzB,KAAK,EAAE,IAAI,yBAAO,CACd,4CAA4C,CAC/C;YACD,IAAI,EAAE,GAAG;SACZ,EACD;YACI,OAAO,EAAE,IAAI,gCAAc,CAAC;gBACxB,QAAQ,EAAE,IAAI;gBACd,SAAS,EAAE,WAAW;gBACtB,eAAe,EAAE,KAAK;gBACtB,MAAM,EAAE;oBACJ;wBACI,WAAW,EAAE,KAAK;wBAClB,KAAK,EAAE,EAAE;qBACZ;iBACJ;aACJ,CAAC;YACF,SAAS,EAAE;gBACP;oBACI,OAAO,EAAE,IAAI,yBAAO,CAChB,4CAA4C,CAC/C;oBACD,
|
|
1
|
+
{"version":3,"file":"fusion-order.spec.js","sourceRoot":"","sources":["../../src/fusion-order/fusion-order.spec.ts"],"names":[],"mappings":"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"}
|
package/dist/fusion-order/settlement-post-interaction-data/settlement-post-interaction-data.d.ts
CHANGED
|
@@ -1,16 +1,53 @@
|
|
|
1
|
+
import { Address, Extension } from '@1inch/limit-order-sdk';
|
|
1
2
|
import { IntegratorFee, SettlementSuffixData } from './types';
|
|
2
3
|
export declare class SettlementPostInteractionData {
|
|
3
4
|
readonly whitelist: WhitelistItem[];
|
|
4
5
|
readonly integratorFee?: IntegratorFee;
|
|
5
6
|
readonly bankFee: bigint;
|
|
6
|
-
readonly
|
|
7
|
+
readonly resolvingStartTime: bigint;
|
|
8
|
+
readonly customReceiver?: Address;
|
|
7
9
|
private constructor();
|
|
8
10
|
static new(data: SettlementSuffixData): SettlementPostInteractionData;
|
|
11
|
+
/**
|
|
12
|
+
* Construct `SettlementPostInteractionData` from bytes
|
|
13
|
+
* @param data bytes with 0x prefix in next format:
|
|
14
|
+
* - [uint32 feeBank] only when first bit of `bitMask` enabled
|
|
15
|
+
* - [uint16 integratorFeeRation, uint160 integratorFeeReceiver, [uint160 customReceiver]] only when second bit of `bitMask` enabled
|
|
16
|
+
* - uint32 auctionStartTime
|
|
17
|
+
* - (bytes10 last10bytesOfAddress, uint16 auctionDelay) * N whitelist info
|
|
18
|
+
* - uint8 bitMask:
|
|
19
|
+
* 0b0000_0001 - fee bank mask
|
|
20
|
+
* 0b0000_0010 - integrator fee mask
|
|
21
|
+
* 0b0000_0100 - is custom receiver present (only used when integrator fee enabled)
|
|
22
|
+
* 0b1111_1000 - resolvers count mask
|
|
23
|
+
*
|
|
24
|
+
* All data is tight packed
|
|
25
|
+
* @see SettlementPostInteractionData.encode
|
|
26
|
+
*/
|
|
9
27
|
static decode(data: string): SettlementPostInteractionData;
|
|
28
|
+
static fromExtension(extension: Extension): SettlementPostInteractionData;
|
|
29
|
+
/**
|
|
30
|
+
* Serialize post-interaction data to bytes
|
|
31
|
+
*/
|
|
10
32
|
encode(): string;
|
|
33
|
+
/**
|
|
34
|
+
* Check whether address allowed to execute order at the given time
|
|
35
|
+
*
|
|
36
|
+
* @param executor address of executor
|
|
37
|
+
* @param executionTime timestamp in sec at which order planning to execute
|
|
38
|
+
*/
|
|
39
|
+
canExecuteAt(executor: Address, executionTime: bigint): boolean;
|
|
40
|
+
isExclusiveResolver(wallet: Address): boolean;
|
|
11
41
|
}
|
|
12
42
|
type WhitelistItem = {
|
|
43
|
+
/**
|
|
44
|
+
* last 10 bytes of address, no 0x prefix
|
|
45
|
+
*/
|
|
13
46
|
addressHalf: string;
|
|
47
|
+
/**
|
|
48
|
+
* Delay from previous resolver in seconds
|
|
49
|
+
* For first resolver delay from `resolvingStartTime`
|
|
50
|
+
*/
|
|
14
51
|
delay: bigint;
|
|
15
52
|
};
|
|
16
53
|
export {};
|