quote report updates - single best pool (#236)
This commit is contained in:
@@ -82,6 +82,10 @@ export type ExtendedQuoteReportIndexedEntry = ExtendedQuoteReportEntry & {
|
||||
isDelivered: boolean;
|
||||
};
|
||||
|
||||
export interface ExtendedQuoteReportSourcesDelivered {
|
||||
sourcesDelivered: ExtendedQuoteReportIndexedEntry[] | undefined;
|
||||
}
|
||||
|
||||
export interface ExtendedQuoteReportSources {
|
||||
sourcesConsidered: ExtendedQuoteReportIndexedEntry[];
|
||||
sourcesDelivered: ExtendedQuoteReportIndexedEntry[] | undefined;
|
||||
|
@@ -52,8 +52,8 @@ export interface ExtendedQuoteReport {
|
||||
estimatedPriceImpact?: string;
|
||||
priceImpactProtectionPercentage: number;
|
||||
onChainOptimalRoute: {
|
||||
sourcesConsidered: ExtendedQuoteReportIndexedEntryOutbound[];
|
||||
sourcesDelivered: ExtendedQuoteReportIndexedEntryOutbound[] | undefined;
|
||||
bestSinglePool?: ExtendedQuoteReportIndexedEntry;
|
||||
estimatedGasForRouter?: string;
|
||||
quotedBuyAmount?: string;
|
||||
};
|
||||
|
@@ -7,7 +7,7 @@ import { Kafka, Producer } from 'kafkajs';
|
||||
import _ = require('lodash');
|
||||
import { Counter, Histogram } from 'prom-client';
|
||||
|
||||
import { ERC20BridgeSource, RfqRequestOpts, SwapQuoterError } from '../asset-swapper';
|
||||
import { ERC20BridgeSource, ExtendedQuoteReportSources, RfqRequestOpts, SwapQuoterError } from '../asset-swapper';
|
||||
import {
|
||||
NATIVE_FEE_TOKEN_BY_CHAIN_ID,
|
||||
SELL_SOURCE_FILTER_BY_CHAIN_ID,
|
||||
@@ -156,11 +156,27 @@ export class SwapHandlers {
|
||||
|
||||
if (quote.extendedQuoteReportSources && kafkaProducer) {
|
||||
const quoteId = getQuoteIdFromSwapQuote(quote);
|
||||
const bestSinglePool = _.first(
|
||||
_.sortBy(
|
||||
_.filter(quote.onChainOptimalRoute?.extendedQuoteReportSources?.sourcesConsidered, (source) => {
|
||||
return source.liquiditySource !== ERC20BridgeSource.MultiHop;
|
||||
}),
|
||||
(source) => {
|
||||
return -source.makerAmount.dividedBy(source.takerAmount);
|
||||
},
|
||||
),
|
||||
);
|
||||
const quoteReportSources: ExtendedQuoteReportSources = {
|
||||
sourcesConsidered: _.filter(quote.extendedQuoteReportSources?.sourcesConsidered, (source) => {
|
||||
return source.liquiditySource === ERC20BridgeSource.Native;
|
||||
}),
|
||||
sourcesDelivered: quote.extendedQuoteReportSources?.sourcesDelivered,
|
||||
};
|
||||
publishQuoteReport(
|
||||
{
|
||||
quoteId,
|
||||
taker: params.takerAddress,
|
||||
quoteReportSources: quote.extendedQuoteReportSources,
|
||||
quoteReportSources,
|
||||
submissionBy: 'taker',
|
||||
decodedUniqueId: quote.decodedUniqueId,
|
||||
buyTokenAddress: quote.buyTokenAddress,
|
||||
@@ -179,7 +195,11 @@ export class SwapHandlers {
|
||||
estimatedPriceImpact: quote.estimatedPriceImpact,
|
||||
priceImpactProtectionPercentage: params.priceImpactProtectionPercentage,
|
||||
onChainOptimalRoute: {
|
||||
quoteReportSources: quote.onChainOptimalRoute?.extendedQuoteReportSources,
|
||||
quoteReportSources: _.omit(
|
||||
quote.onChainOptimalRoute?.extendedQuoteReportSources,
|
||||
'sourcesConsidered',
|
||||
),
|
||||
bestSinglePool,
|
||||
estimatedGasForRouter:
|
||||
quote.onChainOptimalRoute?.estimatedGasForRouter || constants.ZERO_AMOUNT,
|
||||
quotedBuyAmount: quote.onChainOptimalRoute?.quotedBuyAmount,
|
||||
|
@@ -1,6 +1,7 @@
|
||||
import { Producer } from 'kafkajs';
|
||||
|
||||
import { BigNumber, ExtendedQuoteReport, ExtendedQuoteReportSources, jsonifyFillData } from '../asset-swapper';
|
||||
import { ExtendedQuoteReportSourcesDelivered, ExtendedQuoteReportIndexedEntry } from '../asset-swapper/types';
|
||||
import { KAFKA_TOPIC_QUOTE_REPORT } from '../config';
|
||||
import { logger } from '../logger';
|
||||
|
||||
@@ -23,7 +24,8 @@ interface QuoteReportLogOptionsBase {
|
||||
estimatedPriceImpact: BigNumber | null;
|
||||
priceImpactProtectionPercentage: number;
|
||||
onChainOptimalRoute?: {
|
||||
quoteReportSources?: ExtendedQuoteReportSources;
|
||||
quoteReportSources?: ExtendedQuoteReportSourcesDelivered;
|
||||
bestSinglePool?: ExtendedQuoteReportIndexedEntry;
|
||||
estimatedGasForRouter: BigNumber;
|
||||
quotedBuyAmount?: BigNumber;
|
||||
};
|
||||
@@ -98,10 +100,9 @@ export function publishQuoteReport(
|
||||
estimatedPriceImpact: logOpts.estimatedPriceImpact?.toString(),
|
||||
priceImpactProtectionPercentage: logOpts.priceImpactProtectionPercentage * 100,
|
||||
onChainOptimalRoute: {
|
||||
sourcesConsidered:
|
||||
logOpts.onChainOptimalRoute?.quoteReportSources?.sourcesConsidered.map(jsonifyFillData) || [],
|
||||
sourcesDelivered:
|
||||
logOpts.onChainOptimalRoute?.quoteReportSources?.sourcesDelivered?.map(jsonifyFillData),
|
||||
bestSinglePool: logOpts.onChainOptimalRoute?.bestSinglePool,
|
||||
estimatedGasForRouter: bigNumberToStringOrUndefined(logOpts.onChainOptimalRoute?.estimatedGasForRouter),
|
||||
quotedBuyAmount: bigNumberToStringOrUndefined(logOpts.onChainOptimalRoute?.quotedBuyAmount),
|
||||
},
|
||||
|
Reference in New Issue
Block a user