chore: Optional quote report generation (#2687)

This commit is contained in:
Jacob Evans 2020-08-29 09:41:01 +10:00 committed by GitHub
parent a2f0d5eedf
commit 514db24ceb
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
4 changed files with 36 additions and 19 deletions

View File

@ -77,6 +77,10 @@
{
"note": "Re-worked `Kyber` quotes supporting multiple reserves",
"pr": 2683
},
{
"note": "Enable Quote Report to be generated with an option `shouldGenerateQuoteReport`. Default is `false`",
"pr": 2687
}
]
},

View File

@ -46,6 +46,7 @@ export const DEFAULT_GET_MARKET_ORDERS_OPTS: GetMarketOrdersOpts = {
gasSchedule: {},
allowFallback: true,
shouldBatchBridgeOrders: true,
shouldGenerateQuoteReport: false,
};
/**

View File

@ -342,6 +342,7 @@ export class MarketOperationUtils {
allowFallback: _opts.allowFallback,
shouldBatchBridgeOrders: _opts.shouldBatchBridgeOrders,
quoteRequestor: _opts.rfqt ? _opts.rfqt.quoteRequestor : undefined,
shouldGenerateQuoteReport: _opts.shouldGenerateQuoteReport,
});
}
@ -368,6 +369,7 @@ export class MarketOperationUtils {
allowFallback: _opts.allowFallback,
shouldBatchBridgeOrders: _opts.shouldBatchBridgeOrders,
quoteRequestor: _opts.rfqt ? _opts.rfqt.quoteRequestor : undefined,
shouldGenerateQuoteReport: _opts.shouldGenerateQuoteReport,
});
}
@ -455,6 +457,7 @@ export class MarketOperationUtils {
feeSchedule: _opts.feeSchedule,
allowFallback: _opts.allowFallback,
shouldBatchBridgeOrders: _opts.shouldBatchBridgeOrders,
shouldGenerateQuoteReport: false,
},
);
return optimizedOrders;
@ -478,6 +481,7 @@ export class MarketOperationUtils {
allowFallback?: boolean;
shouldBatchBridgeOrders?: boolean;
quoteRequestor?: QuoteRequestor;
shouldGenerateQuoteReport?: boolean;
},
): Promise<OptimizerResult> {
const {
@ -534,7 +538,8 @@ export class MarketOperationUtils {
);
if (bestTwoHopQuote && bestTwoHopRate.isGreaterThan(optimalPathRate)) {
const twoHopOrders = createOrdersFromTwoHopSample(bestTwoHopQuote, orderOpts);
const twoHopQuoteReport = generateQuoteReport(
const twoHopQuoteReport = opts.shouldGenerateQuoteReport
? generateQuoteReport(
side,
_.flatten(dexQuotes),
twoHopQuotes,
@ -542,7 +547,8 @@ export class MarketOperationUtils {
orderFillableAmounts,
bestTwoHopQuote,
opts.quoteRequestor,
);
)
: undefined;
return { optimizedOrders: twoHopOrders, quoteReport: twoHopQuoteReport, isTwoHop: true };
}
@ -574,7 +580,8 @@ export class MarketOperationUtils {
}
}
const optimizedOrders = createOrdersFromPath(optimalPath, orderOpts);
const quoteReport = generateQuoteReport(
const quoteReport = opts.shouldGenerateQuoteReport
? generateQuoteReport(
side,
_.flatten(dexQuotes),
twoHopQuotes,
@ -582,7 +589,8 @@ export class MarketOperationUtils {
orderFillableAmounts,
_.flatten(optimizedOrders.map(order => order.fills)),
opts.quoteRequestor,
);
)
: undefined;
return { optimizedOrders, quoteReport, isTwoHop: false };
}

View File

@ -275,6 +275,10 @@ export interface GetMarketOrdersOpts {
* order. Defaults to `true`.
*/
shouldBatchBridgeOrders: boolean;
/**
* Whether to generate a quote report
*/
shouldGenerateQuoteReport: boolean;
}
/**
@ -294,7 +298,7 @@ export interface SourceQuoteOperation<TFillData extends FillData = FillData>
export interface OptimizerResult {
optimizedOrders: OptimizedMarketOrder[];
isTwoHop: boolean;
quoteReport: QuoteReport;
quoteReport?: QuoteReport;
}
export type MarketDepthSide = Array<Array<DexSample<FillData>>>;