@1inch/fusion-sdk 1.0.1-rc.8 → 1.0.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/api/orders/order-api.spec.js +5 -5
- package/dist/api/orders/orders.api.d.ts +1 -0
- package/dist/api/orders/orders.api.js +4 -3
- package/dist/api/orders/orders.api.js.map +1 -1
- package/dist/api/orders/types.d.ts +2 -0
- package/dist/api/orders/types.js.map +1 -1
- package/dist/api/quoter/quote/order-params.d.ts +1 -0
- package/dist/api/quoter/quote/order-params.js +1 -0
- package/dist/api/quoter/quote/order-params.js.map +1 -1
- package/dist/api/quoter/quote/quote.d.ts +1 -1
- package/dist/api/quoter/quote/quote.js +17 -10
- package/dist/api/quoter/quote/quote.js.map +1 -1
- package/dist/api/quoter/quote/types.d.ts +1 -0
- package/dist/api/quoter/quoter.api.d.ts +1 -0
- package/dist/api/quoter/quoter.api.js +3 -2
- package/dist/api/quoter/quoter.api.js.map +1 -1
- package/dist/api/quoter/quoter.api.spec.js +21 -6
- package/dist/api/quoter/quoter.api.spec.js.map +1 -1
- package/dist/api/quoter/quoter.request.d.ts +1 -0
- package/dist/api/quoter/quoter.request.js +3 -1
- package/dist/api/quoter/quoter.request.js.map +1 -1
- package/dist/api/quoter/types.d.ts +4 -3
- package/dist/api/quoter/types.js.map +1 -1
- package/dist/api/relayer/relayer.api.d.ts +1 -0
- package/dist/api/relayer/relayer.api.js +3 -2
- package/dist/api/relayer/relayer.api.js.map +1 -1
- package/dist/api/relayer/relayer.api.spec.js +8 -5
- package/dist/api/relayer/relayer.api.spec.js.map +1 -1
- package/dist/api/relayer/relayer.request.d.ts +1 -0
- package/dist/api/relayer/relayer.request.js +3 -1
- package/dist/api/relayer/relayer.request.js.map +1 -1
- package/dist/api/relayer/types.d.ts +1 -0
- package/dist/auction-calculator/auction-calculator.d.ts +15 -10
- package/dist/auction-calculator/auction-calculator.js +31 -5
- package/dist/auction-calculator/auction-calculator.js.map +1 -1
- package/dist/fusion-order/auction-details/auction-details.d.ts +2 -0
- package/dist/fusion-order/auction-details/auction-details.js +3 -0
- package/dist/fusion-order/auction-details/auction-details.js.map +1 -1
- package/dist/fusion-order/fusion-extension.d.ts +12 -4
- package/dist/fusion-order/fusion-extension.js +37 -9
- package/dist/fusion-order/fusion-extension.js.map +1 -1
- package/dist/fusion-order/fusion-extension.spec.d.ts +1 -0
- package/dist/fusion-order/fusion-extension.spec.js +75 -0
- package/dist/fusion-order/fusion-extension.spec.js.map +1 -0
- package/dist/fusion-order/fusion-order.d.ts +41 -3
- package/dist/fusion-order/fusion-order.js +90 -21
- package/dist/fusion-order/fusion-order.js.map +1 -1
- package/dist/fusion-order/fusion-order.spec.js +64 -1
- 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 +6 -2
- package/dist/fusion-order/settlement-post-interaction-data/settlement-post-interaction-data.js +46 -35
- 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 +39 -4
- 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 +1 -0
- package/dist/fusion-order/source-track.d.ts +1 -0
- package/dist/fusion-order/source-track.js +16 -0
- package/dist/fusion-order/source-track.js.map +1 -0
- package/dist/index.d.ts +1 -1
- package/dist/index.js.map +1 -1
- package/dist/sdk/sdk.js +12 -10
- package/dist/sdk/sdk.js.map +1 -1
- package/dist/sdk/types.d.ts +3 -0
- package/dist/sdk/utils.js +5 -2
- package/dist/sdk/utils.js.map +1 -1
- package/dist/utils/amounts.d.ts +1 -1
- package/dist/utils/amounts.js +3 -3
- package/dist/utils/amounts.js.map +1 -1
- package/dist/ws-api/ws-api.d.ts +1 -0
- package/dist/ws-api/ws-api.js +2 -1
- package/dist/ws-api/ws-api.js.map +1 -1
- package/dist/ws-api/ws.spec.js +8 -8
- package/package.json +22 -22
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { SettlementPostInteractionData, AuctionDetails, AuctionPoint } from '../fusion-order';
|
|
2
|
+
import { AuctionGasCostInfo } from '../fusion-order/auction-details/types';
|
|
2
3
|
export declare class AuctionCalculator {
|
|
3
4
|
private readonly startTime;
|
|
4
5
|
private readonly duration;
|
|
@@ -7,20 +8,24 @@ export declare class AuctionCalculator {
|
|
|
7
8
|
private readonly takerFeeRatio;
|
|
8
9
|
private readonly gasCost;
|
|
9
10
|
private static GAS_PRICE_BASE;
|
|
10
|
-
constructor(startTime: bigint, duration: bigint, initialRateBump: bigint, points: AuctionPoint[], takerFeeRatio: bigint, gasCost?:
|
|
11
|
-
/**
|
|
12
|
-
* Rate bump to cover gas price. 10_000_000 means 100%
|
|
13
|
-
*/
|
|
14
|
-
gasBumpEstimate: bigint;
|
|
15
|
-
/**
|
|
16
|
-
* Gas price at estimation time. 1000 means 1 Gwei
|
|
17
|
-
*/
|
|
18
|
-
gasPriceEstimate: bigint;
|
|
19
|
-
});
|
|
11
|
+
constructor(startTime: bigint, duration: bigint, initialRateBump: bigint, points: AuctionPoint[], takerFeeRatio: bigint, gasCost?: AuctionGasCostInfo);
|
|
20
12
|
static fromAuctionData(data: SettlementPostInteractionData, details: AuctionDetails): AuctionCalculator;
|
|
13
|
+
static calcInitialRateBump(startAmount: bigint, endAmount: bigint): number;
|
|
21
14
|
/**
|
|
22
15
|
* @see https://github.com/1inch/limit-order-settlement/blob/1b6757eecb2574953b543821db6f7bbff5afee48/contracts/extensions/BaseExtension.sol#L56
|
|
23
16
|
*/
|
|
17
|
+
static calcAuctionTakingAmount(takingAmount: bigint, rate: number, takerFeeRatio: bigint): bigint;
|
|
18
|
+
/**
|
|
19
|
+
* Encode estimation `baseFee` as `gasPriceEstimate` for `AuctionGasCostInfo`
|
|
20
|
+
*/
|
|
21
|
+
static baseFeeToGasPriceEstimate(baseFee: bigint): bigint;
|
|
22
|
+
/**
|
|
23
|
+
* Calculates `gasBumpEstimate` for `AuctionGasCostInfo`
|
|
24
|
+
*
|
|
25
|
+
* @param endTakingAmount min return in destToken
|
|
26
|
+
* @param gasCostInToToken gas cost in destToken
|
|
27
|
+
*/
|
|
28
|
+
static calcGasBumpEstimate(endTakingAmount: bigint, gasCostInToToken: bigint): bigint;
|
|
24
29
|
calcAuctionTakingAmount(takingAmount: bigint, rate: number): bigint;
|
|
25
30
|
/**
|
|
26
31
|
* @see https://github.com/1inch/limit-order-settlement/blob/273defdf7b0f1867299dcbc306f32f035579310f/contracts/extensions/BaseExtension.sol#L121
|
|
@@ -5,7 +5,10 @@ const calc_1 = require("./calc");
|
|
|
5
5
|
const constants_1 = require("./constants");
|
|
6
6
|
const sdk_1 = require("../sdk");
|
|
7
7
|
class AuctionCalculator {
|
|
8
|
-
constructor(startTime, duration, initialRateBump, points, takerFeeRatio, gasCost = {
|
|
8
|
+
constructor(startTime, duration, initialRateBump, points, takerFeeRatio, gasCost = {
|
|
9
|
+
gasBumpEstimate: 0n,
|
|
10
|
+
gasPriceEstimate: 0n
|
|
11
|
+
}) {
|
|
9
12
|
this.startTime = startTime;
|
|
10
13
|
this.duration = duration;
|
|
11
14
|
this.initialRateBump = initialRateBump;
|
|
@@ -14,18 +17,41 @@ class AuctionCalculator {
|
|
|
14
17
|
this.gasCost = gasCost;
|
|
15
18
|
}
|
|
16
19
|
static fromAuctionData(data, details) {
|
|
17
|
-
return new AuctionCalculator(
|
|
20
|
+
return new AuctionCalculator(details.startTime, details.duration, details.initialRateBump, details.points, data.integratorFee?.ratio || 0n, details.gasCost);
|
|
21
|
+
}
|
|
22
|
+
static calcInitialRateBump(startAmount, endAmount) {
|
|
23
|
+
const bump = (constants_1.RATE_BUMP_DENOMINATOR * startAmount) / endAmount -
|
|
24
|
+
constants_1.RATE_BUMP_DENOMINATOR;
|
|
25
|
+
return Number(bump);
|
|
18
26
|
}
|
|
19
27
|
/**
|
|
20
28
|
* @see https://github.com/1inch/limit-order-settlement/blob/1b6757eecb2574953b543821db6f7bbff5afee48/contracts/extensions/BaseExtension.sol#L56
|
|
21
29
|
*/
|
|
22
|
-
calcAuctionTakingAmount(takingAmount, rate) {
|
|
30
|
+
static calcAuctionTakingAmount(takingAmount, rate, takerFeeRatio) {
|
|
23
31
|
const auctionTakingAmount = (BigInt(takingAmount) * (BigInt(rate) + constants_1.RATE_BUMP_DENOMINATOR)) /
|
|
24
32
|
constants_1.RATE_BUMP_DENOMINATOR;
|
|
25
|
-
if (
|
|
33
|
+
if (takerFeeRatio === 0n) {
|
|
26
34
|
return auctionTakingAmount;
|
|
27
35
|
}
|
|
28
|
-
return (0, sdk_1.addRatioToAmount)(auctionTakingAmount,
|
|
36
|
+
return (0, sdk_1.addRatioToAmount)(auctionTakingAmount, takerFeeRatio);
|
|
37
|
+
}
|
|
38
|
+
/**
|
|
39
|
+
* Encode estimation `baseFee` as `gasPriceEstimate` for `AuctionGasCostInfo`
|
|
40
|
+
*/
|
|
41
|
+
static baseFeeToGasPriceEstimate(baseFee) {
|
|
42
|
+
return baseFee / AuctionCalculator.GAS_PRICE_BASE;
|
|
43
|
+
}
|
|
44
|
+
/**
|
|
45
|
+
* Calculates `gasBumpEstimate` for `AuctionGasCostInfo`
|
|
46
|
+
*
|
|
47
|
+
* @param endTakingAmount min return in destToken
|
|
48
|
+
* @param gasCostInToToken gas cost in destToken
|
|
49
|
+
*/
|
|
50
|
+
static calcGasBumpEstimate(endTakingAmount, gasCostInToToken) {
|
|
51
|
+
return (gasCostInToToken * constants_1.RATE_BUMP_DENOMINATOR) / endTakingAmount;
|
|
52
|
+
}
|
|
53
|
+
calcAuctionTakingAmount(takingAmount, rate) {
|
|
54
|
+
return AuctionCalculator.calcAuctionTakingAmount(takingAmount, rate, this.takerFeeRatio);
|
|
29
55
|
}
|
|
30
56
|
/**
|
|
31
57
|
* @see https://github.com/1inch/limit-order-settlement/blob/273defdf7b0f1867299dcbc306f32f035579310f/contracts/extensions/BaseExtension.sol#L121
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"auction-calculator.js","sourceRoot":"","sources":["../../src/auction-calculator/auction-calculator.ts"],"names":[],"mappings":";;;AAAA,iCAA0C;AAC1C,2CAAiD;AAMjD,gCAAuC;
|
|
1
|
+
{"version":3,"file":"auction-calculator.js","sourceRoot":"","sources":["../../src/auction-calculator/auction-calculator.ts"],"names":[],"mappings":"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"}
|
|
@@ -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;
|
|
@@ -40,6 +41,7 @@ export declare class AuctionDetails {
|
|
|
40
41
|
* @see AuctionDetails.encode
|
|
41
42
|
*/
|
|
42
43
|
static decode(data: string): AuctionDetails;
|
|
44
|
+
static fromExtension(extension: Extension): AuctionDetails;
|
|
43
45
|
/**
|
|
44
46
|
* Serialize auction data to bytes
|
|
45
47
|
*/
|
|
@@ -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,10 +1,18 @@
|
|
|
1
|
-
import { Address, Extension,
|
|
1
|
+
import { Address, Extension, Interaction } from '@1inch/limit-order-sdk';
|
|
2
2
|
import { AuctionDetails } from './auction-details';
|
|
3
3
|
import { SettlementPostInteractionData } from './settlement-post-interaction-data';
|
|
4
|
-
export declare class FusionExtension
|
|
4
|
+
export declare class FusionExtension {
|
|
5
5
|
readonly address: Address;
|
|
6
|
-
readonly
|
|
6
|
+
readonly auctionDetails: AuctionDetails;
|
|
7
7
|
readonly postInteractionData: SettlementPostInteractionData;
|
|
8
|
-
|
|
8
|
+
readonly makerPermit?: Interaction | undefined;
|
|
9
|
+
private readonly builder;
|
|
10
|
+
constructor(address: Address, auctionDetails: AuctionDetails, postInteractionData: SettlementPostInteractionData, makerPermit?: Interaction | undefined);
|
|
11
|
+
/**
|
|
12
|
+
* Create `FusionExtension` from bytes
|
|
13
|
+
*
|
|
14
|
+
* @param bytes 0x prefixed bytes
|
|
15
|
+
*/
|
|
16
|
+
static decode(bytes: string): FusionExtension;
|
|
9
17
|
build(): Extension;
|
|
10
18
|
}
|
|
@@ -1,20 +1,48 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
2
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
6
|
exports.FusionExtension = void 0;
|
|
4
7
|
const limit_order_sdk_1 = require("@1inch/limit-order-sdk");
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
+
const assert_1 = __importDefault(require("assert"));
|
|
9
|
+
const auction_details_1 = require("./auction-details");
|
|
10
|
+
const settlement_post_interaction_data_1 = require("./settlement-post-interaction-data");
|
|
11
|
+
class FusionExtension {
|
|
12
|
+
constructor(address, auctionDetails, postInteractionData, makerPermit) {
|
|
8
13
|
this.address = address;
|
|
9
|
-
this.
|
|
14
|
+
this.auctionDetails = auctionDetails;
|
|
10
15
|
this.postInteractionData = postInteractionData;
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
const detailsBytes = this.
|
|
14
|
-
this.
|
|
16
|
+
this.makerPermit = makerPermit;
|
|
17
|
+
this.builder = new limit_order_sdk_1.ExtensionBuilder();
|
|
18
|
+
const detailsBytes = this.auctionDetails.encode();
|
|
19
|
+
this.builder
|
|
20
|
+
.withMakingAmountData(this.address, detailsBytes)
|
|
15
21
|
.withTakingAmountData(this.address, detailsBytes)
|
|
16
22
|
.withPostInteraction(new limit_order_sdk_1.Interaction(this.address, this.postInteractionData.encode()));
|
|
17
|
-
|
|
23
|
+
if (makerPermit) {
|
|
24
|
+
this.builder.withMakerPermit(makerPermit.target, makerPermit.data);
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
/**
|
|
28
|
+
* Create `FusionExtension` from bytes
|
|
29
|
+
*
|
|
30
|
+
* @param bytes 0x prefixed bytes
|
|
31
|
+
*/
|
|
32
|
+
static decode(bytes) {
|
|
33
|
+
const extension = limit_order_sdk_1.Extension.decode(bytes);
|
|
34
|
+
const settlementContract = limit_order_sdk_1.Address.fromFirstBytes(extension.makingAmountData);
|
|
35
|
+
(0, assert_1.default)(limit_order_sdk_1.Address.fromFirstBytes(extension.takingAmountData).equal(settlementContract) &&
|
|
36
|
+
limit_order_sdk_1.Address.fromFirstBytes(extension.postInteraction).equal(settlementContract), 'Invalid extension, all calls should be to the same address');
|
|
37
|
+
const auctionDetails = auction_details_1.AuctionDetails.fromExtension(extension);
|
|
38
|
+
const postInteractionData = settlement_post_interaction_data_1.SettlementPostInteractionData.fromExtension(extension);
|
|
39
|
+
const permit = extension.hasMakerPermit
|
|
40
|
+
? limit_order_sdk_1.Interaction.decode(extension.makerPermit)
|
|
41
|
+
: undefined;
|
|
42
|
+
return new FusionExtension(settlementContract, auctionDetails, postInteractionData, permit);
|
|
43
|
+
}
|
|
44
|
+
build() {
|
|
45
|
+
return this.builder.build();
|
|
18
46
|
}
|
|
19
47
|
}
|
|
20
48
|
exports.FusionExtension = FusionExtension;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"fusion-extension.js","sourceRoot":"","sources":["../../src/fusion-order/fusion-extension.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"fusion-extension.js","sourceRoot":"","sources":["../../src/fusion-order/fusion-extension.ts"],"names":[],"mappings":";;;;;;AAAA,4DAK+B;AAC/B,oDAA2B;AAE3B,uDAAgD;AAChD,yFAAgF;AAEhF,MAAa,eAAe;IAGxB,YACoB,OAAgB,EAChB,cAA8B,EAC9B,mBAAkD,EAClD,WAAyB;QAHzB,YAAO,GAAP,OAAO,CAAS;QAChB,mBAAc,GAAd,cAAc,CAAgB;QAC9B,wBAAmB,GAAnB,mBAAmB,CAA+B;QAClD,gBAAW,GAAX,WAAW,CAAc;QAN5B,YAAO,GAAG,IAAI,kCAAgB,EAAE,CAAA;QAQ7C,MAAM,YAAY,GAAG,IAAI,CAAC,cAAc,CAAC,MAAM,EAAE,CAAA;QAEjD,IAAI,CAAC,OAAO;aACP,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,IAAI,WAAW,EAAE;YACb,IAAI,CAAC,OAAO,CAAC,eAAe,CAAC,WAAW,CAAC,MAAM,EAAE,WAAW,CAAC,IAAI,CAAC,CAAA;SACrE;IACL,CAAC;IAED;;;;OAIG;IACI,MAAM,CAAC,MAAM,CAAC,KAAa;QAC9B,MAAM,SAAS,GAAG,2BAAS,CAAC,MAAM,CAAC,KAAK,CAAC,CAAA;QAEzC,MAAM,kBAAkB,GAAG,yBAAO,CAAC,cAAc,CAC7C,SAAS,CAAC,gBAAgB,CAC7B,CAAA;QAED,IAAA,gBAAM,EACF,yBAAO,CAAC,cAAc,CAAC,SAAS,CAAC,gBAAgB,CAAC,CAAC,KAAK,CACpD,kBAAkB,CACrB;YACG,yBAAO,CAAC,cAAc,CAAC,SAAS,CAAC,eAAe,CAAC,CAAC,KAAK,CACnD,kBAAkB,CACrB,EACL,4DAA4D,CAC/D,CAAA;QAED,MAAM,cAAc,GAAG,gCAAc,CAAC,aAAa,CAAC,SAAS,CAAC,CAAA;QAE9D,MAAM,mBAAmB,GACrB,gEAA6B,CAAC,aAAa,CAAC,SAAS,CAAC,CAAA;QAE1D,MAAM,MAAM,GAAG,SAAS,CAAC,cAAc;YACnC,CAAC,CAAC,6BAAW,CAAC,MAAM,CAAC,SAAS,CAAC,WAAW,CAAC;YAC3C,CAAC,CAAC,SAAS,CAAA;QAEf,OAAO,IAAI,eAAe,CACtB,kBAAkB,EAClB,cAAc,EACd,mBAAmB,EACnB,MAAM,CACT,CAAA;IACL,CAAC;IAEM,KAAK;QACR,OAAO,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,CAAA;IAC/B,CAAC;CACJ;AAjED,0CAiEC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
const limit_order_sdk_1 = require("@1inch/limit-order-sdk");
|
|
4
|
+
const fusion_order_1 = require("./fusion-order");
|
|
5
|
+
const auction_details_1 = require("./auction-details");
|
|
6
|
+
const fusion_extension_1 = require("./fusion-extension");
|
|
7
|
+
describe('FusionExtension', () => {
|
|
8
|
+
it('should decode', () => {
|
|
9
|
+
const extensionContract = new limit_order_sdk_1.Address('0x8273f37417da37c4a6c3995e82cf442f87a25d9c');
|
|
10
|
+
const order = fusion_order_1.FusionOrder.new(extensionContract, {
|
|
11
|
+
makerAsset: new limit_order_sdk_1.Address('0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2'),
|
|
12
|
+
takerAsset: new limit_order_sdk_1.Address('0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48'),
|
|
13
|
+
makingAmount: 1000000000000000000n,
|
|
14
|
+
takingAmount: 1420000000n,
|
|
15
|
+
maker: new limit_order_sdk_1.Address('0x00000000219ab540356cbb839cbe05303d7705fa'),
|
|
16
|
+
salt: 10n
|
|
17
|
+
}, {
|
|
18
|
+
auction: new auction_details_1.AuctionDetails({
|
|
19
|
+
duration: 180n,
|
|
20
|
+
startTime: 1673548149n,
|
|
21
|
+
initialRateBump: 50000,
|
|
22
|
+
points: [
|
|
23
|
+
{
|
|
24
|
+
coefficient: 20000,
|
|
25
|
+
delay: 12
|
|
26
|
+
}
|
|
27
|
+
]
|
|
28
|
+
}),
|
|
29
|
+
whitelist: [
|
|
30
|
+
{
|
|
31
|
+
address: new limit_order_sdk_1.Address('0x00000000219ab540356cbb839cbe05303d7705fa'),
|
|
32
|
+
allowFrom: 0n
|
|
33
|
+
}
|
|
34
|
+
],
|
|
35
|
+
resolvingStartTime: 1673548139n
|
|
36
|
+
});
|
|
37
|
+
const fusionExtension = fusion_extension_1.FusionExtension.decode(order.extension.encode());
|
|
38
|
+
expect(fusionExtension).toStrictEqual(order.fusionExtension);
|
|
39
|
+
});
|
|
40
|
+
it('should decode with permit', () => {
|
|
41
|
+
const extensionContract = new limit_order_sdk_1.Address('0x8273f37417da37c4a6c3995e82cf442f87a25d9c');
|
|
42
|
+
const order = fusion_order_1.FusionOrder.new(extensionContract, {
|
|
43
|
+
makerAsset: new limit_order_sdk_1.Address('0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2'),
|
|
44
|
+
takerAsset: new limit_order_sdk_1.Address('0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48'),
|
|
45
|
+
makingAmount: 1000000000000000000n,
|
|
46
|
+
takingAmount: 1420000000n,
|
|
47
|
+
maker: new limit_order_sdk_1.Address('0x00000000219ab540356cbb839cbe05303d7705fa'),
|
|
48
|
+
salt: 10n
|
|
49
|
+
}, {
|
|
50
|
+
auction: new auction_details_1.AuctionDetails({
|
|
51
|
+
duration: 180n,
|
|
52
|
+
startTime: 1673548149n,
|
|
53
|
+
initialRateBump: 50000,
|
|
54
|
+
points: [
|
|
55
|
+
{
|
|
56
|
+
coefficient: 20000,
|
|
57
|
+
delay: 12
|
|
58
|
+
}
|
|
59
|
+
]
|
|
60
|
+
}),
|
|
61
|
+
whitelist: [
|
|
62
|
+
{
|
|
63
|
+
address: new limit_order_sdk_1.Address('0x00000000219ab540356cbb839cbe05303d7705fa'),
|
|
64
|
+
allowFrom: 0n
|
|
65
|
+
}
|
|
66
|
+
],
|
|
67
|
+
resolvingStartTime: 1673548139n
|
|
68
|
+
}, {
|
|
69
|
+
permit: '0xdeadbeef'
|
|
70
|
+
});
|
|
71
|
+
const fusionExtension = fusion_extension_1.FusionExtension.decode(order.extension.encode());
|
|
72
|
+
expect(fusionExtension).toStrictEqual(order.fusionExtension);
|
|
73
|
+
});
|
|
74
|
+
});
|
|
75
|
+
//# sourceMappingURL=fusion-extension.spec.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"fusion-extension.spec.js","sourceRoot":"","sources":["../../src/fusion-order/fusion-extension.spec.ts"],"names":[],"mappings":";;AAAA,4DAA8C;AAC9C,iDAA0C;AAC1C,uDAAgD;AAChD,yDAAkD;AAElD,QAAQ,CAAC,iBAAiB,EAAE,GAAG,EAAE;IAC7B,EAAE,CAAC,eAAe,EAAE,GAAG,EAAE;QACrB,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,SAAS,EAAE,EAAE;iBAChB;aACJ;YACD,kBAAkB,EAAE,WAAW;SAClC,CACJ,CAAA;QACD,MAAM,eAAe,GAAG,kCAAe,CAAC,MAAM,CAAC,KAAK,CAAC,SAAS,CAAC,MAAM,EAAE,CAAC,CAAA;QACxE,MAAM,CAAC,eAAe,CAAC,CAAC,aAAa,CAAC,KAAK,CAAC,eAAe,CAAC,CAAA;IAChE,CAAC,CAAC,CAAA;IAEF,EAAE,CAAC,2BAA2B,EAAE,GAAG,EAAE;QACjC,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,SAAS,EAAE,EAAE;iBAChB;aACJ;YACD,kBAAkB,EAAE,WAAW;SAClC,EACD;YACI,MAAM,EAAE,YAAY;SACvB,CACJ,CAAA;QACD,MAAM,eAAe,GAAG,kCAAe,CAAC,MAAM,CAAC,KAAK,CAAC,SAAS,CAAC,MAAM,EAAE,CAAC,CAAA;QACxE,MAAM,CAAC,eAAe,CAAC,CAAC,aAAa,CAAC,KAAK,CAAC,eAAe,CAAC,CAAA;IAChE,CAAC,CAAC,CAAA;AACN,CAAC,CAAC,CAAA"}
|
|
@@ -4,6 +4,12 @@ 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;
|
|
@@ -19,6 +25,17 @@ export declare class FusionOrder {
|
|
|
19
25
|
* Timestamp in sec
|
|
20
26
|
*/
|
|
21
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 isBitInvalidatorMode(): boolean;
|
|
37
|
+
get partialFillAllowed(): boolean;
|
|
38
|
+
get multipleFillsAllowed(): boolean;
|
|
22
39
|
static new(
|
|
23
40
|
/**
|
|
24
41
|
* Fusion extension address
|
|
@@ -38,7 +55,8 @@ export declare class FusionOrder {
|
|
|
38
55
|
}, extra?: {
|
|
39
56
|
unwrapWETH?: boolean;
|
|
40
57
|
/**
|
|
41
|
-
* Required if `allowPartialFills` is false
|
|
58
|
+
* Required if `allowPartialFills` or `allowMultipleFills` is false
|
|
59
|
+
* Max size is 40bit
|
|
42
60
|
*/
|
|
43
61
|
nonce?: bigint;
|
|
44
62
|
permit?: string;
|
|
@@ -56,6 +74,7 @@ export declare class FusionOrder {
|
|
|
56
74
|
*/
|
|
57
75
|
orderExpirationDelay?: bigint;
|
|
58
76
|
enablePermit2?: boolean;
|
|
77
|
+
source?: string;
|
|
59
78
|
}): FusionOrder;
|
|
60
79
|
/**
|
|
61
80
|
* Create FusionOrder from order data and extension
|
|
@@ -63,8 +82,8 @@ export declare class FusionOrder {
|
|
|
63
82
|
*/
|
|
64
83
|
static fromDataAndExtension(order: LimitOrderV4Struct, extension: Extension): FusionOrder;
|
|
65
84
|
build(): LimitOrderV4Struct;
|
|
66
|
-
getOrderHash(
|
|
67
|
-
getTypedData(
|
|
85
|
+
getOrderHash(chainId: number): string;
|
|
86
|
+
getTypedData(chainId: number): EIP712TypedData;
|
|
68
87
|
getCalculator(): AuctionCalculator;
|
|
69
88
|
/**
|
|
70
89
|
* Calculates required taking amount for passed `makingAmount` at block time `time`
|
|
@@ -81,4 +100,23 @@ export declare class FusionOrder {
|
|
|
81
100
|
* @param executionTime timestamp in sec at which order planning to execute
|
|
82
101
|
*/
|
|
83
102
|
canExecuteAt(executor: Address, executionTime: bigint): boolean;
|
|
103
|
+
/**
|
|
104
|
+
* Check is order expired at a given time
|
|
105
|
+
*
|
|
106
|
+
* @param time timestamp in seconds
|
|
107
|
+
*/
|
|
108
|
+
isExpiredAt(time: bigint): boolean;
|
|
109
|
+
/**
|
|
110
|
+
* Returns how much fee will be credited from a resolver deposit account
|
|
111
|
+
* Token of fee set in Settlement extension constructor
|
|
112
|
+
* Actual deployments can be found at https://github.com/1inch/limit-order-settlement/tree/master/deployments
|
|
113
|
+
*
|
|
114
|
+
* @param filledMakingAmount which resolver fills
|
|
115
|
+
* @see https://github.com/1inch/limit-order-settlement/blob/0e3cae3653092ebb4ea5d2a338c87a54351ad883/contracts/extensions/ResolverFeeExtension.sol#L29
|
|
116
|
+
*/
|
|
117
|
+
getResolverFee(filledMakingAmount: bigint): bigint;
|
|
118
|
+
/**
|
|
119
|
+
* Check if `wallet` can fill order before other
|
|
120
|
+
*/
|
|
121
|
+
isExclusiveResolver(wallet: Address): boolean;
|
|
84
122
|
}
|
|
@@ -9,8 +9,8 @@ const assert_1 = __importDefault(require("assert"));
|
|
|
9
9
|
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
|
+
const source_track_1 = require("./source-track");
|
|
12
13
|
const auction_calculator_1 = require("../auction-calculator");
|
|
13
|
-
const utils_1 = require("../utils");
|
|
14
14
|
const constants_1 = require("../constants");
|
|
15
15
|
const amounts_1 = require("../utils/amounts");
|
|
16
16
|
const time_1 = require("../utils/time");
|
|
@@ -20,18 +20,25 @@ class FusionOrder {
|
|
|
20
20
|
* Fusion extension address
|
|
21
21
|
* @see https://github.com/1inch/limit-order-settlement
|
|
22
22
|
*/
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
23
|
+
settlementExtensionContract, orderInfo, auctionDetails, postInteractionData, extra = FusionOrder.defaultExtra) {
|
|
24
|
+
this.settlementExtensionContract = settlementExtensionContract;
|
|
25
|
+
const allowPartialFills = extra.allowPartialFills ??
|
|
26
|
+
FusionOrder.defaultExtra.allowPartialFills;
|
|
27
|
+
const allowMultipleFills = extra.allowMultipleFills ??
|
|
28
|
+
FusionOrder.defaultExtra.allowMultipleFills;
|
|
29
|
+
const unwrapWETH = extra.unwrapWETH ?? FusionOrder.defaultExtra.unwrapWETH;
|
|
30
|
+
const enablePermit2 = extra.enablePermit2 ?? FusionOrder.defaultExtra.enablePermit2;
|
|
31
|
+
const orderExpirationDelay = extra.orderExpirationDelay ??
|
|
32
|
+
FusionOrder.defaultExtra.orderExpirationDelay;
|
|
33
|
+
const { nonce, permit } = extra;
|
|
28
34
|
const deadline = auctionDetails.startTime +
|
|
29
35
|
auctionDetails.duration +
|
|
30
36
|
orderExpirationDelay;
|
|
31
37
|
const makerTraits = limit_order_sdk_1.MakerTraits.default()
|
|
32
38
|
.withExpiration(deadline)
|
|
33
39
|
.setPartialFills(allowPartialFills)
|
|
34
|
-
.setMultipleFills(allowMultipleFills)
|
|
40
|
+
.setMultipleFills(allowMultipleFills)
|
|
41
|
+
.enablePostInteraction();
|
|
35
42
|
if (makerTraits.isBitInvalidatorMode()) {
|
|
36
43
|
(0, assert_1.default)(nonce !== undefined, 'Nonce required, when partial fill or multiple fill disallowed');
|
|
37
44
|
}
|
|
@@ -44,14 +51,22 @@ class FusionOrder {
|
|
|
44
51
|
if (nonce !== undefined) {
|
|
45
52
|
makerTraits.withNonce(nonce);
|
|
46
53
|
}
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
54
|
+
/**
|
|
55
|
+
* @see https://github.com/1inch/limit-order-settlement/blob/0afb4785cb825fe959c534ff4f1a771d4d33cdf4/contracts/extensions/IntegratorFeeExtension.sol#L65
|
|
56
|
+
*/
|
|
57
|
+
const receiver = postInteractionData.integratorFee?.ratio
|
|
58
|
+
? settlementExtensionContract
|
|
59
|
+
: orderInfo.receiver;
|
|
60
|
+
const extension = new fusion_extension_1.FusionExtension(settlementExtensionContract, auctionDetails, postInteractionData, permit ? new limit_order_sdk_1.Interaction(orderInfo.makerAsset, permit) : undefined);
|
|
51
61
|
const builtExtension = extension.build();
|
|
62
|
+
const salt = limit_order_sdk_1.LimitOrder.buildSalt(builtExtension, orderInfo.salt);
|
|
63
|
+
const saltWithInjectedTrackCode = orderInfo.salt
|
|
64
|
+
? salt
|
|
65
|
+
: (0, source_track_1.injectTrackCode)(salt, extra.source);
|
|
52
66
|
this.inner = new limit_order_sdk_1.LimitOrder({
|
|
53
67
|
...orderInfo,
|
|
54
|
-
|
|
68
|
+
receiver,
|
|
69
|
+
salt: saltWithInjectedTrackCode
|
|
55
70
|
}, makerTraits, builtExtension);
|
|
56
71
|
this.fusionExtension = extension;
|
|
57
72
|
}
|
|
@@ -82,6 +97,28 @@ class FusionOrder {
|
|
|
82
97
|
get deadline() {
|
|
83
98
|
return this.inner.makerTraits.expiration() || 0n;
|
|
84
99
|
}
|
|
100
|
+
/**
|
|
101
|
+
* Timestamp in sec
|
|
102
|
+
*/
|
|
103
|
+
get auctionStartTime() {
|
|
104
|
+
return this.fusionExtension.auctionDetails.startTime;
|
|
105
|
+
}
|
|
106
|
+
/**
|
|
107
|
+
* Timestamp in sec
|
|
108
|
+
*/
|
|
109
|
+
get auctionEndTime() {
|
|
110
|
+
const { startTime, duration } = this.fusionExtension.auctionDetails;
|
|
111
|
+
return startTime + duration;
|
|
112
|
+
}
|
|
113
|
+
get isBitInvalidatorMode() {
|
|
114
|
+
return this.inner.makerTraits.isBitInvalidatorMode();
|
|
115
|
+
}
|
|
116
|
+
get partialFillAllowed() {
|
|
117
|
+
return this.inner.makerTraits.isPartialFillAllowed();
|
|
118
|
+
}
|
|
119
|
+
get multipleFillsAllowed() {
|
|
120
|
+
return this.inner.makerTraits.isMultipleFillsAllowed();
|
|
121
|
+
}
|
|
85
122
|
static new(
|
|
86
123
|
/**
|
|
87
124
|
* Fusion extension address
|
|
@@ -92,7 +129,8 @@ class FusionOrder {
|
|
|
92
129
|
bankFee: details.fees?.bankFee || 0n,
|
|
93
130
|
integratorFee: details.fees?.integratorFee,
|
|
94
131
|
whitelist: details.whitelist,
|
|
95
|
-
resolvingStartTime: details.resolvingStartTime ?? (0, time_1.now)()
|
|
132
|
+
resolvingStartTime: details.resolvingStartTime ?? (0, time_1.now)(),
|
|
133
|
+
customReceiver: orderInfo.receiver
|
|
96
134
|
}), extra);
|
|
97
135
|
}
|
|
98
136
|
/**
|
|
@@ -104,8 +142,10 @@ class FusionOrder {
|
|
|
104
142
|
(0, assert_1.default)(limit_order_sdk_1.Address.fromFirstBytes(extension.takingAmountData).equal(settlementContract) &&
|
|
105
143
|
limit_order_sdk_1.Address.fromFirstBytes(extension.postInteraction).equal(settlementContract), 'Invalid extension, all calls should be to the same address');
|
|
106
144
|
const makerTraits = new limit_order_sdk_1.MakerTraits(BigInt(order.makerTraits));
|
|
107
|
-
|
|
108
|
-
|
|
145
|
+
(0, assert_1.default)(!makerTraits.isPrivate(), 'fusion order can not be private');
|
|
146
|
+
(0, assert_1.default)(makerTraits.hasPostInteraction(), 'post-interaction must be enabled');
|
|
147
|
+
const auctionDetails = auction_details_1.AuctionDetails.fromExtension(extension);
|
|
148
|
+
const postInteractionData = settlement_post_interaction_data_1.SettlementPostInteractionData.fromExtension(extension);
|
|
109
149
|
const deadline = makerTraits.expiration();
|
|
110
150
|
const orderExpirationDelay = deadline === null
|
|
111
151
|
? undefined
|
|
@@ -126,7 +166,7 @@ class FusionOrder {
|
|
|
126
166
|
nonce: makerTraits.nonceOrEpoch(),
|
|
127
167
|
permit: extension.makerPermit === constants_1.ZX
|
|
128
168
|
? undefined
|
|
129
|
-
: extension.makerPermit,
|
|
169
|
+
: limit_order_sdk_1.Interaction.decode(extension.makerPermit).data,
|
|
130
170
|
unwrapWETH: makerTraits.isNativeUnwrapEnabled(),
|
|
131
171
|
orderExpirationDelay
|
|
132
172
|
});
|
|
@@ -134,14 +174,14 @@ class FusionOrder {
|
|
|
134
174
|
build() {
|
|
135
175
|
return this.inner.build();
|
|
136
176
|
}
|
|
137
|
-
getOrderHash(
|
|
138
|
-
return this.inner.getOrderHash(
|
|
177
|
+
getOrderHash(chainId) {
|
|
178
|
+
return this.inner.getOrderHash(chainId);
|
|
139
179
|
}
|
|
140
|
-
getTypedData(
|
|
141
|
-
return this.inner.getTypedData(
|
|
180
|
+
getTypedData(chainId) {
|
|
181
|
+
return this.inner.getTypedData(chainId);
|
|
142
182
|
}
|
|
143
183
|
getCalculator() {
|
|
144
|
-
return auction_calculator_1.AuctionCalculator.fromAuctionData(this.fusionExtension.postInteractionData, this.fusionExtension.
|
|
184
|
+
return auction_calculator_1.AuctionCalculator.fromAuctionData(this.fusionExtension.postInteractionData, this.fusionExtension.auctionDetails);
|
|
145
185
|
}
|
|
146
186
|
/**
|
|
147
187
|
* Calculates required taking amount for passed `makingAmount` at block time `time`
|
|
@@ -165,8 +205,37 @@ class FusionOrder {
|
|
|
165
205
|
canExecuteAt(executor, executionTime) {
|
|
166
206
|
return this.fusionExtension.postInteractionData.canExecuteAt(executor, executionTime);
|
|
167
207
|
}
|
|
208
|
+
/**
|
|
209
|
+
* Check is order expired at a given time
|
|
210
|
+
*
|
|
211
|
+
* @param time timestamp in seconds
|
|
212
|
+
*/
|
|
213
|
+
isExpiredAt(time) {
|
|
214
|
+
return time > this.deadline;
|
|
215
|
+
}
|
|
216
|
+
/**
|
|
217
|
+
* Returns how much fee will be credited from a resolver deposit account
|
|
218
|
+
* Token of fee set in Settlement extension constructor
|
|
219
|
+
* Actual deployments can be found at https://github.com/1inch/limit-order-settlement/tree/master/deployments
|
|
220
|
+
*
|
|
221
|
+
* @param filledMakingAmount which resolver fills
|
|
222
|
+
* @see https://github.com/1inch/limit-order-settlement/blob/0e3cae3653092ebb4ea5d2a338c87a54351ad883/contracts/extensions/ResolverFeeExtension.sol#L29
|
|
223
|
+
*/
|
|
224
|
+
getResolverFee(filledMakingAmount) {
|
|
225
|
+
return ((this.fusionExtension.postInteractionData.bankFee *
|
|
226
|
+
FusionOrder._ORDER_FEE_BASE_POINTS *
|
|
227
|
+
filledMakingAmount) /
|
|
228
|
+
this.makingAmount);
|
|
229
|
+
}
|
|
230
|
+
/**
|
|
231
|
+
* Check if `wallet` can fill order before other
|
|
232
|
+
*/
|
|
233
|
+
isExclusiveResolver(wallet) {
|
|
234
|
+
return this.fusionExtension.postInteractionData.isExclusiveResolver(wallet);
|
|
235
|
+
}
|
|
168
236
|
}
|
|
169
237
|
exports.FusionOrder = FusionOrder;
|
|
238
|
+
FusionOrder._ORDER_FEE_BASE_POINTS = 10n ** 15n;
|
|
170
239
|
FusionOrder.defaultExtra = {
|
|
171
240
|
allowPartialFills: true,
|
|
172
241
|
allowMultipleFills: true,
|
|
@@ -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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"}
|