fix: [WIP] Adds RFQ price-aware comparison price to Quote Report (#18)
* Adds RFQ price-aware comparison price to Quote Report * added linting fix * added small lints * better syntax
This commit is contained in:
parent
866f958a10
commit
e2e14a977a
@ -88,6 +88,7 @@ export class MarketOperationUtils {
|
||||
quoteRequestor: QuoteRequestor | undefined,
|
||||
marketSideLiquidity: MarketSideLiquidity,
|
||||
optimizerResult: OptimizerResult,
|
||||
comparisonPrice?: BigNumber | undefined,
|
||||
): QuoteReport {
|
||||
const { side, dexQuotes, twoHopQuotes, orderFillableAmounts } = marketSideLiquidity;
|
||||
const { liquidityDelivered } = optimizerResult;
|
||||
@ -98,6 +99,7 @@ export class MarketOperationUtils {
|
||||
nativeOrders,
|
||||
orderFillableAmounts,
|
||||
liquidityDelivered,
|
||||
comparisonPrice,
|
||||
quoteRequestor,
|
||||
);
|
||||
}
|
||||
@ -676,6 +678,7 @@ export class MarketOperationUtils {
|
||||
}
|
||||
|
||||
// If RFQ liquidity is enabled, make a request to check RFQ liquidity
|
||||
let comparisonPrice: BigNumber | undefined;
|
||||
const { rfqt } = _opts;
|
||||
if (
|
||||
rfqt &&
|
||||
@ -684,7 +687,6 @@ export class MarketOperationUtils {
|
||||
marketSideLiquidity.quoteSourceFilters.isAllowed(ERC20BridgeSource.Native)
|
||||
) {
|
||||
// Calculate a suggested price. For now, this is simply the overall price of the aggregation.
|
||||
let comparisonPrice: BigNumber | undefined;
|
||||
if (optimizerResult) {
|
||||
const totalMakerAmount = BigNumber.sum(
|
||||
...optimizerResult.optimizedOrders.map(order => order.makerAssetAmount),
|
||||
@ -781,6 +783,7 @@ export class MarketOperationUtils {
|
||||
_opts.rfqt ? _opts.rfqt.quoteRequestor : undefined,
|
||||
marketSideLiquidity,
|
||||
optimizerResult,
|
||||
comparisonPrice,
|
||||
);
|
||||
}
|
||||
return { ...optimizerResult, quoteReport };
|
||||
|
@ -42,6 +42,7 @@ export interface NativeOrderbookReportSource extends NativeReportSourceBase {
|
||||
export interface NativeRFQTReportSource extends NativeReportSourceBase {
|
||||
isRfqt: true;
|
||||
makerUri: string;
|
||||
comparisonPrice?: number;
|
||||
}
|
||||
export type QuoteReportSource =
|
||||
| BridgeReportSource
|
||||
@ -65,11 +66,12 @@ export function generateQuoteReport(
|
||||
nativeOrders: SignedOrder[],
|
||||
orderFillableAmounts: BigNumber[],
|
||||
liquidityDelivered: ReadonlyArray<CollapsedFill> | DexSample<MultiHopFillData>,
|
||||
comparisonPrice?: BigNumber | undefined,
|
||||
quoteRequestor?: QuoteRequestor,
|
||||
): QuoteReport {
|
||||
const dexReportSourcesConsidered = dexQuotes.map(quote => _dexSampleToReportSource(quote, marketOperation));
|
||||
const nativeOrderSourcesConsidered = nativeOrders.map((order, idx) =>
|
||||
_nativeOrderToReportSource(order, orderFillableAmounts[idx], quoteRequestor),
|
||||
_nativeOrderToReportSource(order, orderFillableAmounts[idx], comparisonPrice, quoteRequestor),
|
||||
);
|
||||
const multiHopSourcesConsidered = multiHopQuotes.map(quote =>
|
||||
_multiHopSampleToReportSource(quote, marketOperation),
|
||||
@ -94,6 +96,7 @@ export function generateQuoteReport(
|
||||
return _nativeOrderToReportSource(
|
||||
foundNativeOrder,
|
||||
nativeOrderSignaturesToFillableAmounts[foundNativeOrder.signature],
|
||||
comparisonPrice,
|
||||
quoteRequestor,
|
||||
);
|
||||
} else {
|
||||
@ -197,6 +200,7 @@ function _nativeOrderFromCollapsedFill(cf: CollapsedFill): SignedOrder | undefin
|
||||
function _nativeOrderToReportSource(
|
||||
nativeOrder: SignedOrder,
|
||||
fillableAmount: BigNumber,
|
||||
comparisonPrice?: BigNumber | undefined,
|
||||
quoteRequestor?: QuoteRequestor,
|
||||
): NativeRFQTReportSource | NativeOrderbookReportSource {
|
||||
const nativeOrderBase: NativeReportSourceBase = {
|
||||
@ -215,6 +219,9 @@ function _nativeOrderToReportSource(
|
||||
isRfqt: true,
|
||||
makerUri: foundRfqtMakerUri,
|
||||
};
|
||||
if (comparisonPrice) {
|
||||
rfqtSource.comparisonPrice = comparisonPrice.toNumber();
|
||||
}
|
||||
return rfqtSource;
|
||||
} else {
|
||||
// if it's not an rfqt order, treat as normal
|
||||
|
@ -141,6 +141,7 @@ describe('generateQuoteReport', async () => {
|
||||
nativeOrders,
|
||||
orderFillableAmounts,
|
||||
pathGenerated,
|
||||
undefined,
|
||||
quoteRequestor.object,
|
||||
);
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user