@1inch/fusion-sdk 1.0.1-rc.2 → 1.0.1-rc.21
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 +4 -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 +30 -5
- package/dist/auction-calculator/auction-calculator.js +63 -13
- package/dist/auction-calculator/auction-calculator.js.map +1 -1
- package/dist/auction-calculator/auction-calculator.spec.js +33 -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 +73 -3
- package/dist/fusion-order/fusion-order.js +99 -13
- package/dist/fusion-order/fusion-order.js.map +1 -1
- package/dist/fusion-order/fusion-order.spec.js +6 -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 +35 -1
- package/dist/fusion-order/settlement-post-interaction-data/settlement-post-interaction-data.js +95 -44
- 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 +76 -7
- 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 +11 -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/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 +12 -5
- 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,3 +1,4 @@
|
|
|
1
|
+
import { Extension } from '@1inch/limit-order-sdk';
|
|
1
2
|
import { AuctionGasCostInfo, AuctionPoint } from './types';
|
|
2
3
|
export declare class AuctionDetails {
|
|
3
4
|
readonly startTime: bigint;
|
|
@@ -5,7 +6,13 @@ export declare class AuctionDetails {
|
|
|
5
6
|
readonly initialRateBump: bigint;
|
|
6
7
|
readonly points: AuctionPoint[];
|
|
7
8
|
readonly gasCost: {
|
|
9
|
+
/**
|
|
10
|
+
* Rate bump to cover gas price. 10_000_000 means 100%
|
|
11
|
+
*/
|
|
8
12
|
gasBumpEstimate: bigint;
|
|
13
|
+
/**
|
|
14
|
+
* Gas price at estimation time. 1000 means 1 Gwei
|
|
15
|
+
*/
|
|
9
16
|
gasPriceEstimate: bigint;
|
|
10
17
|
};
|
|
11
18
|
constructor(auction: {
|
|
@@ -13,8 +20,30 @@ export declare class AuctionDetails {
|
|
|
13
20
|
initialRateBump: number;
|
|
14
21
|
duration: bigint;
|
|
15
22
|
points: AuctionPoint[];
|
|
23
|
+
/**
|
|
24
|
+
* Allows to scale estimate gas costs to actual gas costs
|
|
25
|
+
*/
|
|
16
26
|
gasCost?: AuctionGasCostInfo;
|
|
17
27
|
});
|
|
28
|
+
/**
|
|
29
|
+
* Construct `AuctionDetails` from bytes
|
|
30
|
+
*
|
|
31
|
+
* @param data bytes with 0x prefix in next format:
|
|
32
|
+
* - uint24 gasBumpEstimate
|
|
33
|
+
* - uint32 gasPriceEstimate
|
|
34
|
+
* - uint32 startTime
|
|
35
|
+
* - uint24 duration
|
|
36
|
+
* - uint24 initialRateBump
|
|
37
|
+
* - [uint24 rate, uint16 delay] * N points
|
|
38
|
+
*
|
|
39
|
+
* All data is tight packed
|
|
40
|
+
*
|
|
41
|
+
* @see AuctionDetails.encode
|
|
42
|
+
*/
|
|
18
43
|
static decode(data: string): AuctionDetails;
|
|
44
|
+
static fromExtension(extension: Extension): AuctionDetails;
|
|
45
|
+
/**
|
|
46
|
+
* Serialize auction data to bytes
|
|
47
|
+
*/
|
|
19
48
|
encode(): string;
|
|
20
49
|
}
|
|
@@ -26,6 +26,21 @@ class AuctionDetails {
|
|
|
26
26
|
(0, assert_1.default)(this.duration <= constants_1.UINT_24_MAX);
|
|
27
27
|
(0, assert_1.default)(this.initialRateBump <= constants_1.UINT_24_MAX);
|
|
28
28
|
}
|
|
29
|
+
/**
|
|
30
|
+
* Construct `AuctionDetails` from bytes
|
|
31
|
+
*
|
|
32
|
+
* @param data bytes with 0x prefix in next format:
|
|
33
|
+
* - uint24 gasBumpEstimate
|
|
34
|
+
* - uint32 gasPriceEstimate
|
|
35
|
+
* - uint32 startTime
|
|
36
|
+
* - uint24 duration
|
|
37
|
+
* - uint24 initialRateBump
|
|
38
|
+
* - [uint24 rate, uint16 delay] * N points
|
|
39
|
+
*
|
|
40
|
+
* All data is tight packed
|
|
41
|
+
*
|
|
42
|
+
* @see AuctionDetails.encode
|
|
43
|
+
*/
|
|
29
44
|
static decode(data) {
|
|
30
45
|
(0, assert_1.default)((0, validations_1.isHexBytes)(data), 'Invalid auction details data');
|
|
31
46
|
const iter = byte_utils_1.BytesIter.BigInt(data);
|
|
@@ -52,6 +67,12 @@ class AuctionDetails {
|
|
|
52
67
|
}
|
|
53
68
|
});
|
|
54
69
|
}
|
|
70
|
+
static fromExtension(extension) {
|
|
71
|
+
return AuctionDetails.decode((0, utils_1.add0x)(extension.makingAmountData.slice(42)));
|
|
72
|
+
}
|
|
73
|
+
/**
|
|
74
|
+
* Serialize auction data to bytes
|
|
75
|
+
*/
|
|
55
76
|
encode() {
|
|
56
77
|
let details = ethers_1.ethers.solidityPacked(['uint24', 'uint32', 'uint32', 'uint24', 'uint24'], [
|
|
57
78
|
this.gasCost.gasBumpEstimate,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"auction-details.js","sourceRoot":"","sources":["../../../src/fusion-order/auction-details/auction-details.ts"],"names":[],"mappings":";;;;;;AAAA,mCAA6B;AAC7B,kDAA2C;
|
|
1
|
+
{"version":3,"file":"auction-details.js","sourceRoot":"","sources":["../../../src/fusion-order/auction-details/auction-details.ts"],"names":[],"mappings":"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"}
|
|
@@ -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,100 @@ 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;
|
|
7
12
|
private static defaultExtra;
|
|
8
13
|
readonly fusionExtension: FusionExtension;
|
|
9
14
|
private inner;
|
|
10
15
|
private constructor();
|
|
11
16
|
get extension(): Extension;
|
|
12
|
-
|
|
17
|
+
get maker(): Address;
|
|
18
|
+
get takerAsset(): Address;
|
|
19
|
+
get makerAsset(): Address;
|
|
20
|
+
get takingAmount(): bigint;
|
|
21
|
+
get makingAmount(): bigint;
|
|
22
|
+
get receiver(): Address;
|
|
23
|
+
/**
|
|
24
|
+
* Timestamp in sec
|
|
25
|
+
*/
|
|
26
|
+
get deadline(): bigint;
|
|
27
|
+
/**
|
|
28
|
+
* Timestamp in sec
|
|
29
|
+
*/
|
|
30
|
+
get auctionStartTime(): bigint;
|
|
31
|
+
/**
|
|
32
|
+
* Timestamp in sec
|
|
33
|
+
*/
|
|
34
|
+
get auctionEndTime(): bigint;
|
|
35
|
+
static new(
|
|
36
|
+
/**
|
|
37
|
+
* Fusion extension address
|
|
38
|
+
* @see https://github.com/1inch/limit-order-settlement
|
|
39
|
+
*/
|
|
40
|
+
settlementExtension: Address, orderInfo: OrderInfoData, details: {
|
|
13
41
|
auction: AuctionDetails;
|
|
14
42
|
fees?: {
|
|
15
43
|
integratorFee?: IntegratorFee;
|
|
16
44
|
bankFee?: bigint;
|
|
17
45
|
};
|
|
18
46
|
whitelist: AuctionWhitelistItem[];
|
|
47
|
+
/**
|
|
48
|
+
* Time from which order can be executed
|
|
49
|
+
*/
|
|
50
|
+
resolvingStartTime?: bigint;
|
|
19
51
|
}, extra?: {
|
|
20
52
|
unwrapWETH?: boolean;
|
|
53
|
+
/**
|
|
54
|
+
* Required if `allowPartialFills` is false
|
|
55
|
+
*/
|
|
21
56
|
nonce?: bigint;
|
|
22
57
|
permit?: string;
|
|
58
|
+
/**
|
|
59
|
+
* Default is true
|
|
60
|
+
*/
|
|
23
61
|
allowPartialFills?: boolean;
|
|
62
|
+
/**
|
|
63
|
+
* Default is true
|
|
64
|
+
*/
|
|
24
65
|
allowMultipleFills?: boolean;
|
|
66
|
+
/**
|
|
67
|
+
* Order will expire in `orderExpirationDelay` after auction ends
|
|
68
|
+
* Default 12s
|
|
69
|
+
*/
|
|
25
70
|
orderExpirationDelay?: bigint;
|
|
26
71
|
enablePermit2?: boolean;
|
|
27
72
|
}): FusionOrder;
|
|
73
|
+
/**
|
|
74
|
+
* Create FusionOrder from order data and extension
|
|
75
|
+
*
|
|
76
|
+
*/
|
|
28
77
|
static fromDataAndExtension(order: LimitOrderV4Struct, extension: Extension): FusionOrder;
|
|
29
78
|
build(): LimitOrderV4Struct;
|
|
30
|
-
getOrderHash(
|
|
31
|
-
getTypedData(
|
|
79
|
+
getOrderHash(chainId: number): string;
|
|
80
|
+
getTypedData(chainId: number): EIP712TypedData;
|
|
32
81
|
getCalculator(): AuctionCalculator;
|
|
82
|
+
/**
|
|
83
|
+
* Calculates required taking amount for passed `makingAmount` at block time `time`
|
|
84
|
+
*
|
|
85
|
+
* @param makingAmount maker swap amount
|
|
86
|
+
* @param time execution time in sec
|
|
87
|
+
* @param blockBaseFee block fee in wei.
|
|
88
|
+
* */
|
|
89
|
+
calcTakingAmount(makingAmount: bigint, time: bigint, blockBaseFee?: bigint): bigint;
|
|
90
|
+
/**
|
|
91
|
+
* Check whether address allowed to execute order at the given time
|
|
92
|
+
*
|
|
93
|
+
* @param executor address of executor
|
|
94
|
+
* @param executionTime timestamp in sec at which order planning to execute
|
|
95
|
+
*/
|
|
96
|
+
canExecuteAt(executor: Address, executionTime: bigint): boolean;
|
|
97
|
+
/**
|
|
98
|
+
* Check is order expired at a given time
|
|
99
|
+
*
|
|
100
|
+
* @param time timestamp in seconds
|
|
101
|
+
*/
|
|
102
|
+
isExpiredAt(time: bigint): boolean;
|
|
33
103
|
}
|
|
@@ -10,10 +10,17 @@ 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
|
+
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;
|
|
17
24
|
const { allowPartialFills, allowMultipleFills, unwrapWETH, enablePermit2, orderExpirationDelay, nonce, permit } = {
|
|
18
25
|
...FusionOrder.defaultExtra,
|
|
19
26
|
...extra
|
|
@@ -24,7 +31,8 @@ class FusionOrder {
|
|
|
24
31
|
const makerTraits = limit_order_sdk_1.MakerTraits.default()
|
|
25
32
|
.withExpiration(deadline)
|
|
26
33
|
.setPartialFills(allowPartialFills)
|
|
27
|
-
.setMultipleFills(allowMultipleFills)
|
|
34
|
+
.setMultipleFills(allowMultipleFills)
|
|
35
|
+
.enablePostInteraction();
|
|
28
36
|
if (makerTraits.isBitInvalidatorMode()) {
|
|
29
37
|
(0, assert_1.default)(nonce !== undefined, 'Nonce required, when partial fill or multiple fill disallowed');
|
|
30
38
|
}
|
|
@@ -37,7 +45,7 @@ class FusionOrder {
|
|
|
37
45
|
if (nonce !== undefined) {
|
|
38
46
|
makerTraits.withNonce(nonce);
|
|
39
47
|
}
|
|
40
|
-
const extension = new fusion_extension_1.FusionExtension(
|
|
48
|
+
const extension = new fusion_extension_1.FusionExtension(settlementExtensionContract, auctionDetails, postInteractionData);
|
|
41
49
|
if (permit) {
|
|
42
50
|
extension.withMakerPermit(orderInfo.makerAsset, permit);
|
|
43
51
|
}
|
|
@@ -51,26 +59,74 @@ class FusionOrder {
|
|
|
51
59
|
get extension() {
|
|
52
60
|
return this.inner.extension;
|
|
53
61
|
}
|
|
54
|
-
|
|
62
|
+
get maker() {
|
|
63
|
+
return this.inner.maker;
|
|
64
|
+
}
|
|
65
|
+
get takerAsset() {
|
|
66
|
+
return this.inner.takerAsset;
|
|
67
|
+
}
|
|
68
|
+
get makerAsset() {
|
|
69
|
+
return this.inner.makerAsset;
|
|
70
|
+
}
|
|
71
|
+
get takingAmount() {
|
|
72
|
+
return this.inner.takingAmount;
|
|
73
|
+
}
|
|
74
|
+
get makingAmount() {
|
|
75
|
+
return this.inner.makingAmount;
|
|
76
|
+
}
|
|
77
|
+
get receiver() {
|
|
78
|
+
return this.inner.receiver;
|
|
79
|
+
}
|
|
80
|
+
/**
|
|
81
|
+
* Timestamp in sec
|
|
82
|
+
*/
|
|
83
|
+
get deadline() {
|
|
84
|
+
return this.inner.makerTraits.expiration() || 0n;
|
|
85
|
+
}
|
|
86
|
+
/**
|
|
87
|
+
* Timestamp in sec
|
|
88
|
+
*/
|
|
89
|
+
get auctionStartTime() {
|
|
90
|
+
return this.fusionExtension.auctionDetails.startTime;
|
|
91
|
+
}
|
|
92
|
+
/**
|
|
93
|
+
* Timestamp in sec
|
|
94
|
+
*/
|
|
95
|
+
get auctionEndTime() {
|
|
96
|
+
const { startTime, duration } = this.fusionExtension.auctionDetails;
|
|
97
|
+
return startTime + duration;
|
|
98
|
+
}
|
|
99
|
+
static new(
|
|
100
|
+
/**
|
|
101
|
+
* Fusion extension address
|
|
102
|
+
* @see https://github.com/1inch/limit-order-settlement
|
|
103
|
+
*/
|
|
104
|
+
settlementExtension, orderInfo, details, extra) {
|
|
55
105
|
return new FusionOrder(settlementExtension, orderInfo, details.auction, settlement_post_interaction_data_1.SettlementPostInteractionData.new({
|
|
56
106
|
bankFee: details.fees?.bankFee || 0n,
|
|
57
107
|
integratorFee: details.fees?.integratorFee,
|
|
58
108
|
whitelist: details.whitelist,
|
|
59
|
-
|
|
109
|
+
resolvingStartTime: details.resolvingStartTime ?? (0, time_1.now)()
|
|
60
110
|
}), extra);
|
|
61
111
|
}
|
|
112
|
+
/**
|
|
113
|
+
* Create FusionOrder from order data and extension
|
|
114
|
+
*
|
|
115
|
+
*/
|
|
62
116
|
static fromDataAndExtension(order, extension) {
|
|
63
117
|
const settlementContract = limit_order_sdk_1.Address.fromFirstBytes(extension.makingAmountData);
|
|
64
118
|
(0, assert_1.default)(limit_order_sdk_1.Address.fromFirstBytes(extension.takingAmountData).equal(settlementContract) &&
|
|
65
119
|
limit_order_sdk_1.Address.fromFirstBytes(extension.postInteraction).equal(settlementContract), 'Invalid extension, all calls should be to the same address');
|
|
66
120
|
const makerTraits = new limit_order_sdk_1.MakerTraits(BigInt(order.makerTraits));
|
|
67
|
-
|
|
68
|
-
const
|
|
121
|
+
(0, assert_1.default)(!makerTraits.isPrivate(), 'fusion order can not be private');
|
|
122
|
+
const auctionDetails = auction_details_1.AuctionDetails.fromExtension(extension);
|
|
123
|
+
const postInteractionData = settlement_post_interaction_data_1.SettlementPostInteractionData.fromExtension(extension);
|
|
69
124
|
const deadline = makerTraits.expiration();
|
|
70
125
|
const orderExpirationDelay = deadline === null
|
|
71
126
|
? undefined
|
|
72
127
|
: deadline - auctionDetails.startTime - auctionDetails.duration;
|
|
73
128
|
return new FusionOrder(settlementContract, {
|
|
129
|
+
// shift because of how LimitOrder.buildSalt works
|
|
74
130
|
salt: BigInt(order.salt) >> 160n,
|
|
75
131
|
maker: new limit_order_sdk_1.Address(order.maker),
|
|
76
132
|
receiver: new limit_order_sdk_1.Address(order.receiver),
|
|
@@ -93,14 +149,44 @@ class FusionOrder {
|
|
|
93
149
|
build() {
|
|
94
150
|
return this.inner.build();
|
|
95
151
|
}
|
|
96
|
-
getOrderHash(
|
|
97
|
-
return this.inner.getOrderHash(
|
|
152
|
+
getOrderHash(chainId) {
|
|
153
|
+
return this.inner.getOrderHash(chainId);
|
|
98
154
|
}
|
|
99
|
-
getTypedData(
|
|
100
|
-
return this.inner.getTypedData(
|
|
155
|
+
getTypedData(chainId) {
|
|
156
|
+
return this.inner.getTypedData((0, limit_order_sdk_1.getLimitOrderV4Domain)(chainId));
|
|
101
157
|
}
|
|
102
158
|
getCalculator() {
|
|
103
|
-
return auction_calculator_1.AuctionCalculator.fromAuctionData(this.fusionExtension.postInteractionData, this.fusionExtension.
|
|
159
|
+
return auction_calculator_1.AuctionCalculator.fromAuctionData(this.fusionExtension.postInteractionData, this.fusionExtension.auctionDetails);
|
|
160
|
+
}
|
|
161
|
+
/**
|
|
162
|
+
* Calculates required taking amount for passed `makingAmount` at block time `time`
|
|
163
|
+
*
|
|
164
|
+
* @param makingAmount maker swap amount
|
|
165
|
+
* @param time execution time in sec
|
|
166
|
+
* @param blockBaseFee block fee in wei.
|
|
167
|
+
* */
|
|
168
|
+
calcTakingAmount(makingAmount, time, blockBaseFee = 0n) {
|
|
169
|
+
const takingAmount = (0, amounts_1.calcTakingAmount)(makingAmount, this.makingAmount, this.takingAmount);
|
|
170
|
+
const calculator = this.getCalculator();
|
|
171
|
+
const bump = calculator.calcRateBump(time, blockBaseFee);
|
|
172
|
+
return calculator.calcAuctionTakingAmount(takingAmount, bump);
|
|
173
|
+
}
|
|
174
|
+
/**
|
|
175
|
+
* Check whether address allowed to execute order at the given time
|
|
176
|
+
*
|
|
177
|
+
* @param executor address of executor
|
|
178
|
+
* @param executionTime timestamp in sec at which order planning to execute
|
|
179
|
+
*/
|
|
180
|
+
canExecuteAt(executor, executionTime) {
|
|
181
|
+
return this.fusionExtension.postInteractionData.canExecuteAt(executor, executionTime);
|
|
182
|
+
}
|
|
183
|
+
/**
|
|
184
|
+
* Check is order expired at a given time
|
|
185
|
+
*
|
|
186
|
+
* @param time timestamp in seconds
|
|
187
|
+
*/
|
|
188
|
+
isExpiredAt(time) {
|
|
189
|
+
return time > this.deadline;
|
|
104
190
|
}
|
|
105
191
|
}
|
|
106
192
|
exports.FusionOrder = FusionOrder;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"fusion-order.js","sourceRoot":"","sources":["../../src/fusion-order/fusion-order.ts"],"names":[],"mappings":";;;;;;AAAA,4DAS+B;AAC/B,oDAA2B;AAC3B,yDAAkD;AAClD,uDAAgD;AAChD,yFAI2C;AAC3C,8DAAuD;AACvD,
|
|
1
|
+
{"version":3,"file":"fusion-order.js","sourceRoot":"","sources":["../../src/fusion-order/fusion-order.ts"],"names":[],"mappings":"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"}
|
|
@@ -28,9 +28,10 @@ describe('Fusion Order', () => {
|
|
|
28
28
|
whitelist: [
|
|
29
29
|
{
|
|
30
30
|
address: new limit_order_sdk_1.Address('0x00000000219ab540356cbb839cbe05303d7705fa'),
|
|
31
|
-
|
|
31
|
+
allowFrom: 0n
|
|
32
32
|
}
|
|
33
|
-
]
|
|
33
|
+
],
|
|
34
|
+
resolvingStartTime: 1673548139n
|
|
34
35
|
});
|
|
35
36
|
const builtOrder = order.build();
|
|
36
37
|
expect(builtOrder).toStrictEqual({
|
|
@@ -40,8 +41,8 @@ describe('Fusion Order', () => {
|
|
|
40
41
|
receiver: '0x0000000000000000000000000000000000000000',
|
|
41
42
|
takerAsset: '0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48',
|
|
42
43
|
takingAmount: '1420000000',
|
|
43
|
-
makerTraits: '
|
|
44
|
-
salt: '
|
|
44
|
+
makerTraits: '33471150795161712739625987854073848363835856965607525350783622537007396290560',
|
|
45
|
+
salt: '14969955465678758833706505435513058355190519874774'
|
|
45
46
|
});
|
|
46
47
|
const makerTraits = new limit_order_sdk_1.MakerTraits(BigInt(builtOrder.makerTraits));
|
|
47
48
|
expect(makerTraits.isNativeUnwrapEnabled()).toEqual(false);
|
|
@@ -72,7 +73,7 @@ describe('Fusion Order', () => {
|
|
|
72
73
|
whitelist: [
|
|
73
74
|
{
|
|
74
75
|
address: new limit_order_sdk_1.Address('0x00000000219ab540356cbb839cbe05303d7705fa'),
|
|
75
|
-
|
|
76
|
+
allowFrom: 0n
|
|
76
77
|
}
|
|
77
78
|
]
|
|
78
79
|
});
|
|
@@ -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,50 @@
|
|
|
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;
|
|
7
8
|
private constructor();
|
|
8
9
|
static new(data: SettlementSuffixData): SettlementPostInteractionData;
|
|
10
|
+
/**
|
|
11
|
+
* Construct `SettlementPostInteractionData` from bytes
|
|
12
|
+
* @param data bytes with 0x prefix in next format:
|
|
13
|
+
* - [uint32 feeBank] only when first bit of `bitMask` enabled
|
|
14
|
+
* - [uint160 integratorFeeReceiver, uint32 integratorFeeRation] only when second bit of `bitMask` enabled
|
|
15
|
+
* - uint32 auctionStartTime
|
|
16
|
+
* - (bytes10 last10bytesOfAddress, uint16 auctionDelay) * N whitelist info
|
|
17
|
+
* - uint8 bitMask:
|
|
18
|
+
* 0b0000_0001 - fee bank mask
|
|
19
|
+
* 0b0000_0010 - integrator fee mask
|
|
20
|
+
* 0b1111_1000 - resolvers count mask
|
|
21
|
+
*
|
|
22
|
+
* All data is tight packed
|
|
23
|
+
* @see SettlementPostInteractionData.encode
|
|
24
|
+
*/
|
|
9
25
|
static decode(data: string): SettlementPostInteractionData;
|
|
26
|
+
static fromExtension(extension: Extension): SettlementPostInteractionData;
|
|
27
|
+
/**
|
|
28
|
+
* Serialize post-interaction data to bytes
|
|
29
|
+
*/
|
|
10
30
|
encode(): string;
|
|
31
|
+
/**
|
|
32
|
+
* Check whether address allowed to execute order at the given time
|
|
33
|
+
*
|
|
34
|
+
* @param executor address of executor
|
|
35
|
+
* @param executionTime timestamp in sec at which order planning to execute
|
|
36
|
+
*/
|
|
37
|
+
canExecuteAt(executor: Address, executionTime: bigint): boolean;
|
|
11
38
|
}
|
|
12
39
|
type WhitelistItem = {
|
|
40
|
+
/**
|
|
41
|
+
* last 10 bytes of address, no 0x prefix
|
|
42
|
+
*/
|
|
13
43
|
addressHalf: string;
|
|
44
|
+
/**
|
|
45
|
+
* Delay from previous resolver in seconds
|
|
46
|
+
* For first resolver delay from `resolvingStartTime`
|
|
47
|
+
*/
|
|
14
48
|
delay: bigint;
|
|
15
49
|
};
|
|
16
50
|
export {};
|