OP-2818 [Swap] Show order route path and benefits in Swap UI

Data from WS was updated.
This commit is contained in:
Mikhail Gladchenko
2022-12-14 09:23:40 +00:00
parent b4634b98f0
commit b34021695f
4 changed files with 33 additions and 7 deletions

View File

@@ -1,6 +1,6 @@
{
"name": "@orionprotocol/sdk",
"version": "0.15.22-rc.1",
"version": "0.15.22-rc.2",
"description": "Orion Protocol SDK",
"main": "./lib/esm/index.js",
"module": "./lib/esm/index.js",

View File

@@ -28,11 +28,11 @@ const swapInfoBase = z.object({
action: z.string(),
}).array(),
}),
marketAmountOut: z.number().nullable(),
marketAmountIn: z.number().nullable(),
marketAmountOut: z.number().optional(),
marketAmountIn: z.number().optional(),
marketPrice: z.number(),
availableAmountIn: z.number().nullable(),
availableAmountOut: z.number().nullable(),
availableAmountIn: z.number().optional(),
availableAmountOut: z.number().optional(),
}).array(),
});

View File

@@ -11,7 +11,7 @@ import {
import UnsubscriptionType from './UnsubscriptionType';
import {
SwapInfoByAmountIn, SwapInfoByAmountOut, SwapInfoBase,
FullOrder, OrderUpdate, AssetPairUpdate, OrderbookItem, Balance, Exchange,
FullOrder, OrderUpdate, AssetPairUpdate, OrderbookItem, Balance, Exchange, SwapInfoAlternative,
} from '../../../types';
import unsubscriptionDoneSchema from './schemas/unsubscriptionDoneSchema';
import assetPairConfigSchema from './schemas/assetPairConfigSchema';
@@ -300,6 +300,20 @@ class OrionAggregatorWS {
// To implement
break;
case MessageType.SWAP_INFO: {
let alternatives: SwapInfoAlternative[] = [];
if (json.as) {
alternatives = json.as.map((item) => ({
exchanges: item.e,
path: item.ps,
marketAmountOut: item.mo,
marketAmountIn: item.mi,
marketPrice: item.mp,
availableAmountIn: item.aa,
availableAmountOut: item.aao,
}));
}
const baseSwapInfo: SwapInfoBase = {
swapRequestId: json.S,
assetIn: json.ai,
@@ -321,6 +335,7 @@ class OrionAggregatorWS {
safePrice: json.oi.sp,
},
},
alternatives,
};
switch (json.k) { // kind

View File

@@ -103,6 +103,16 @@ export interface Pair {
vol24h: string;
}
export type SwapInfoAlternative = {
exchanges: string[],
path: string[],
marketAmountOut?: number,
marketAmountIn?: number,
marketPrice: number,
availableAmountIn?: number,
availableAmountOut?: number,
}
export type SwapInfoBase = {
swapRequestId: string,
assetIn: string,
@@ -123,7 +133,8 @@ export type SwapInfoBase = {
side: 'BUY' | 'SELL',
amount: number,
safePrice: number,
}
},
alternatives: SwapInfoAlternative[],
}
export type SwapInfoByAmountIn = SwapInfoBase & {