@reyaxyz/api-sdk 0.143.1 → 0.144.0
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/README.md +1 -1
- package/dist/clients/modules/isolated-order.simulation/index.js +14 -9
- package/dist/clients/modules/isolated-order.simulation/index.js.map +1 -1
- package/dist/clients/modules/isolated-order.simulation/types.js.map +1 -1
- package/dist/clients/modules/markets/index.js +14 -0
- package/dist/clients/modules/markets/index.js.map +1 -1
- package/dist/clients/modules/markets/types.js.map +1 -1
- package/dist/clients/modules/trade.simulation/index.js +21 -10
- package/dist/clients/modules/trade.simulation/index.js.map +1 -1
- package/dist/clients/modules/trade.simulation/types.js.map +1 -1
- package/dist/clients/modules/trade.simulation/utils.js +35 -0
- package/dist/clients/modules/trade.simulation/utils.js.map +1 -0
- package/dist/clients/socket-client.js +16 -0
- package/dist/clients/socket-client.js.map +1 -1
- package/dist/types/clients/modules/isolated-order.simulation/index.d.ts.map +1 -1
- package/dist/types/clients/modules/isolated-order.simulation/types.d.ts +2 -0
- package/dist/types/clients/modules/isolated-order.simulation/types.d.ts.map +1 -1
- package/dist/types/clients/modules/markets/index.d.ts +2 -1
- package/dist/types/clients/modules/markets/index.d.ts.map +1 -1
- package/dist/types/clients/modules/markets/types.d.ts +7 -0
- package/dist/types/clients/modules/markets/types.d.ts.map +1 -1
- package/dist/types/clients/modules/trade.simulation/index.d.ts.map +1 -1
- package/dist/types/clients/modules/trade.simulation/types.d.ts +9 -0
- package/dist/types/clients/modules/trade.simulation/types.d.ts.map +1 -1
- package/dist/types/clients/modules/trade.simulation/utils.d.ts +8 -0
- package/dist/types/clients/modules/trade.simulation/utils.d.ts.map +1 -0
- package/dist/types/clients/socket-client.d.ts +4 -1
- package/dist/types/clients/socket-client.d.ts.map +1 -1
- package/package.json +3 -3
- package/src/clients/modules/isolated-order.simulation/index.ts +19 -25
- package/src/clients/modules/isolated-order.simulation/types.ts +2 -0
- package/src/clients/modules/markets/index.ts +13 -0
- package/src/clients/modules/markets/types.ts +8 -0
- package/src/clients/modules/trade.simulation/index.ts +26 -30
- package/src/clients/modules/trade.simulation/types.ts +12 -2
- package/src/clients/modules/trade.simulation/utils.ts +52 -0
- package/src/clients/socket-client.ts +24 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"socket-client.js","sourceRoot":"/","sources":["clients/socket-client.ts"],"names":[],"mappings":"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","sourcesContent":["import WebSocket, { MessageEvent } from 'isomorphic-ws';\n\nimport {\n API_CLIENT_CONFIGS,\n Candle,\n CandlesResolution,\n MarketEntity,\n ServiceConfig,\n StorkSignedPayload,\n} from '@reyaxyz/common';\n\nenum OutgoingMessageTypes {\n PING = 'ping',\n SUBSCRIBE = 'subscribe',\n UNSUBSCRIBE = 'unsubscribe',\n}\n\nexport enum SocketChannels {\n CANDLES = 'candles',\n PRICES = 'prices',\n FUNDING_RATES = 'funding-rates',\n MARKETS_UPDATES = 'markets-updates',\n}\n\nexport enum IncomingMessageTypes {\n CONNECTED = 'connected',\n SUBSCRIBED = 'subscribed',\n ERROR = 'error',\n CHANNEL_DATA = 'channel_data',\n CHANNEL_BATCH_DATA = 'channel_batch_data',\n PONG = 'pong',\n}\nexport enum OutgoingMessageType {\n ERROR = 'error',\n CONNECTED = 'connected',\n SUBSCRIBED = 'subscribed',\n UNSUBSCRIBED = 'unsubscribed',\n CHANNEL_DATA = 'channel_data',\n CHANNEL_BATCH_DATA = 'channel_batch_data',\n PONG = 'pong',\n}\nexport interface OutgoingMessage {\n type: OutgoingMessageType;\n connection_id: string;\n message_id: number;\n}\nexport interface SocketMessage {\n message_id: number;\n connection_id: string;\n type: OutgoingMessageType;\n channel?: SocketChannels;\n contents?: unknown;\n id?: string;\n}\n\nexport interface CandleMessage extends SocketMessage {\n type: OutgoingMessageType;\n connection_id: string;\n message_id: number;\n channel: SocketChannels.CANDLES;\n id: string;\n contents: {\n candles: Candle[];\n };\n}\n\nexport interface PricesMessage extends SocketMessage {\n type: OutgoingMessageType;\n connection_id: string;\n message_id: number;\n channel: SocketChannels.PRICES;\n id: string;\n contents: {\n signedPrice: StorkSignedPayload;\n poolPrice: string;\n spotPrice: string;\n marketId: number | null;\n assetPairId: string;\n };\n}\n\nexport interface MarketsUpdateMessage extends SocketMessage {\n type: OutgoingMessageType;\n connection_id: string;\n message_id: number;\n channel: SocketChannels.MARKETS_UPDATES;\n id: string;\n contents: MarketEntity[];\n}\n\nexport interface FundingRateMessage extends SocketMessage {\n type: OutgoingMessageType;\n connection_id: string;\n message_id: number;\n channel: SocketChannels.FUNDING_RATES;\n id: string;\n contents: { timestamp: number; value: string; assetsPair: string };\n}\n\nexport interface SocketClientConfig {\n environment: ServiceConfig['environment'];\n onOpen: () => void;\n onClose: () => void;\n onMessage: (event: SocketMessage) => void;\n}\n\nexport class SocketClient {\n private url: string;\n private ws?: WebSocket;\n private onOpenCallback?: () => void;\n private onCloseCallback?: () => void;\n private onMessageCallback?: (event: SocketMessage) => void;\n private pingInterval: number = 30_000;\n private lastMessageTime: number = Date.now();\n private pingIntervalId?: NodeJS.Timeout;\n constructor(config: SocketClientConfig) {\n this.onOpenCallback = config.onOpen;\n this.onCloseCallback = config.onClose;\n this.onMessageCallback = config.onMessage;\n this.url = (\n API_CLIENT_CONFIGS[config.environment] || API_CLIENT_CONFIGS['test']\n ).webSocketEndpoint;\n }\n\n connect(): void {\n this.ws = new WebSocket(this.url);\n this.ws.addEventListener('open', this.handleOpen.bind(this));\n this.ws.addEventListener('close', this.handleClose.bind(this));\n this.ws.addEventListener('message', this.handleMessage.bind(this));\n }\n\n /**\n * @description Close the websocket connection.\n *\n */\n close(): void {\n this.ws?.close();\n this.ws = undefined;\n }\n\n /**\n * @description Send data to the websocket connection.\n *\n */\n send(data: string): void {\n this.ws?.send(data);\n }\n\n private handleOpen(): void {\n if (this.onOpenCallback) {\n this.onOpenCallback();\n }\n this.restartPingInterval();\n }\n\n private handleClose(): void {\n if (this.onCloseCallback) {\n this.onCloseCallback();\n }\n clearInterval(this.pingIntervalId);\n }\n\n private handleMessage(event: MessageEvent): void {\n if (event.data === 'PING') {\n this.send('PONG');\n } else {\n this.lastMessageTime = Date.now();\n try {\n const parsedMessage: SocketMessage = JSON.parse(event.data as string);\n if (typeof this.onMessageCallback === 'function') {\n this.onMessageCallback(parsedMessage);\n }\n } catch (error) {\n console.error('Error parsing message', error);\n }\n }\n this.restartPingInterval();\n }\n\n private restartPingInterval(): void {\n clearInterval(this.pingIntervalId);\n this.pingIntervalId = setInterval(() => {\n const elapsedTime = Date.now() - this.lastMessageTime;\n if (elapsedTime > this.pingInterval) {\n const message = {\n type: OutgoingMessageTypes.PING,\n };\n this.send(JSON.stringify(message));\n }\n }, this.pingInterval);\n }\n\n /**\n * @description Set callback when the socket is opened.\n *\n */\n set onOpen(callback: () => void) {\n this.onOpenCallback = callback;\n }\n\n /**\n * @description Set callback when the socket is closed.\n *\n */\n set onClose(callback: () => void) {\n this.onCloseCallback = callback;\n }\n\n /**\n * @description Set callback when the socket receives a message.\n *\n */\n set onMessage(callback: (event: SocketMessage) => void) {\n this.onMessageCallback = callback;\n }\n\n getReadyState() {\n return this.ws?.readyState;\n }\n\n /**\n * @description Send a subscribe message to the websocket connection.\n *\n */\n subscribe(channel: string, params?: object): void {\n const message = {\n type: OutgoingMessageTypes.SUBSCRIBE,\n channel,\n ...params,\n };\n this.send(JSON.stringify(message));\n }\n\n /**\n * @description Send an unsubscribe message to the websocket connection.\n *\n */\n unsubscribe(channel: string, params?: object): void {\n const message = {\n type: OutgoingMessageTypes.UNSUBSCRIBE,\n channel,\n ...params,\n };\n this.send(JSON.stringify(message));\n }\n /**\n * @description Subscribe to candles channel\n * for a specific market and resolution.\n *\n */\n subscribeToCandles(\n marketTicker: string,\n resolution: CandlesResolution,\n ): void {\n const channel = SocketChannels.CANDLES;\n const params = {\n id: `${marketTicker}/${resolution}`,\n batched: true,\n };\n this.subscribe(channel, params);\n }\n\n /**\n * @description Unsubscribe from candles channel\n * for a specific market and resolution.\n */\n unsubscribeFromCandles(market: string, resolution: CandlesResolution): void {\n const channel = SocketChannels.CANDLES;\n const params = {\n id: `${market}/${resolution}`,\n };\n this.unsubscribe(channel, params);\n }\n\n /**\n * @description Subscribe to prices channel\n * for a specific assets pair.\n *\n */\n subscribeToPrices(assetsPair: string): void {\n const channel = SocketChannels.PRICES;\n const params = {\n id: assetsPair,\n };\n this.subscribe(channel, params);\n }\n\n /**\n * @description Unsubscribe from prices channel\n * for a specific market and resolution.\n */\n unsubscribeFromPrices(assetsPair: string): void {\n const channel = SocketChannels.PRICES;\n const params = {\n id: assetsPair,\n };\n this.unsubscribe(channel, params);\n }\n\n /**\n * @description Subscribe to funding rate channel\n * for a specific assets pair.\n *\n */\n subscribeToFundingRate(assetsPair: string): void {\n const channel = SocketChannels.FUNDING_RATES;\n const params = {\n id: assetsPair,\n };\n this.subscribe(channel, params);\n }\n\n /**\n * @description Unsubscribe from funding rate channel\n * for a specific market and resolution.\n */\n unsubscribeFromFundingRate(assetsPair: string): void {\n const channel = SocketChannels.FUNDING_RATES;\n const params = {\n id: assetsPair,\n };\n this.unsubscribe(channel, params);\n }\n\n /**\n * @description Subscribe to markets updates channel\n *\n */\n subscribeToMarketsUpdates(): void {\n const channel = SocketChannels.MARKETS_UPDATES;\n const params = {\n id: '1',\n };\n this.subscribe(channel, params);\n }\n\n /**\n * @description Unsubscribe from markets updates channel\n */\n unsubscribeFromMarketsUpdates(): void {\n const channel = SocketChannels.MARKETS_UPDATES;\n const params = {\n id: '1',\n };\n this.unsubscribe(channel, params);\n }\n}\n"]}
|
|
1
|
+
{"version":3,"file":"socket-client.js","sourceRoot":"/","sources":["clients/socket-client.ts"],"names":[],"mappings":"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","sourcesContent":["import WebSocket, { MessageEvent } from 'isomorphic-ws';\n\nimport {\n API_CLIENT_CONFIGS,\n Candle,\n CandlesResolution,\n MarketEntity,\n ServiceConfig,\n StorkSignedPayload,\n} from '@reyaxyz/common';\n\nenum OutgoingMessageTypes {\n PING = 'ping',\n SUBSCRIBE = 'subscribe',\n UNSUBSCRIBE = 'unsubscribe',\n}\n\nexport enum SocketChannels {\n CANDLES = 'candles',\n PRICES = 'prices',\n FUNDING_RATES = 'funding-rates',\n MARKETS_UPDATES = 'markets-updates',\n SPOT_CANDLES = 'spot-candles',\n}\n\nexport enum IncomingMessageTypes {\n CONNECTED = 'connected',\n SUBSCRIBED = 'subscribed',\n ERROR = 'error',\n CHANNEL_DATA = 'channel_data',\n CHANNEL_BATCH_DATA = 'channel_batch_data',\n PONG = 'pong',\n}\nexport enum OutgoingMessageType {\n ERROR = 'error',\n CONNECTED = 'connected',\n SUBSCRIBED = 'subscribed',\n UNSUBSCRIBED = 'unsubscribed',\n CHANNEL_DATA = 'channel_data',\n CHANNEL_BATCH_DATA = 'channel_batch_data',\n PONG = 'pong',\n}\nexport interface OutgoingMessage {\n type: OutgoingMessageType;\n connection_id: string;\n message_id: number;\n}\nexport interface SocketMessage {\n message_id: number;\n connection_id: string;\n type: OutgoingMessageType;\n channel?: SocketChannels;\n contents?: unknown;\n id?: string;\n}\n\nexport interface CandleMessage extends SocketMessage {\n type: OutgoingMessageType;\n connection_id: string;\n message_id: number;\n channel: SocketChannels.CANDLES;\n id: string;\n contents: {\n candles: Candle[];\n };\n}\n\nexport interface PricesMessage extends SocketMessage {\n type: OutgoingMessageType;\n connection_id: string;\n message_id: number;\n channel: SocketChannels.PRICES;\n id: string;\n contents: {\n signedPrice: StorkSignedPayload;\n poolPrice: string;\n spotPrice: string;\n marketId: number | null;\n assetPairId: string;\n };\n}\n\nexport interface MarketsUpdateMessage extends SocketMessage {\n type: OutgoingMessageType;\n connection_id: string;\n message_id: number;\n channel: SocketChannels.MARKETS_UPDATES;\n id: string;\n contents: MarketEntity[];\n}\n\nexport interface FundingRateMessage extends SocketMessage {\n type: OutgoingMessageType;\n connection_id: string;\n message_id: number;\n channel: SocketChannels.FUNDING_RATES;\n id: string;\n contents: { timestamp: number; value: string; assetsPair: string };\n}\n\nexport interface SocketClientConfig {\n environment: ServiceConfig['environment'];\n onOpen: () => void;\n onClose: () => void;\n onMessage: (event: SocketMessage) => void;\n}\n\nexport class SocketClient {\n private url: string;\n private ws?: WebSocket;\n private onOpenCallback?: () => void;\n private onCloseCallback?: () => void;\n private onMessageCallback?: (event: SocketMessage) => void;\n private pingInterval: number = 30_000;\n private lastMessageTime: number = Date.now();\n private pingIntervalId?: NodeJS.Timeout;\n constructor(config: SocketClientConfig) {\n this.onOpenCallback = config.onOpen;\n this.onCloseCallback = config.onClose;\n this.onMessageCallback = config.onMessage;\n this.url = (\n API_CLIENT_CONFIGS[config.environment] || API_CLIENT_CONFIGS['test']\n ).webSocketEndpoint;\n }\n\n connect(): void {\n this.ws = new WebSocket(this.url);\n this.ws.addEventListener('open', this.handleOpen.bind(this));\n this.ws.addEventListener('close', this.handleClose.bind(this));\n this.ws.addEventListener('message', this.handleMessage.bind(this));\n }\n\n /**\n * @description Close the websocket connection.\n *\n */\n close(): void {\n this.ws?.close();\n this.ws = undefined;\n }\n\n /**\n * @description Send data to the websocket connection.\n *\n */\n send(data: string): void {\n this.ws?.send(data);\n }\n\n private handleOpen(): void {\n if (this.onOpenCallback) {\n this.onOpenCallback();\n }\n this.restartPingInterval();\n }\n\n private handleClose(): void {\n if (this.onCloseCallback) {\n this.onCloseCallback();\n }\n clearInterval(this.pingIntervalId);\n }\n\n private handleMessage(event: MessageEvent): void {\n if (event.data === 'PING') {\n this.send('PONG');\n } else {\n this.lastMessageTime = Date.now();\n try {\n const parsedMessage: SocketMessage = JSON.parse(event.data as string);\n if (typeof this.onMessageCallback === 'function') {\n this.onMessageCallback(parsedMessage);\n }\n } catch (error) {\n console.error('Error parsing message', error);\n }\n }\n this.restartPingInterval();\n }\n\n private restartPingInterval(): void {\n clearInterval(this.pingIntervalId);\n this.pingIntervalId = setInterval(() => {\n const elapsedTime = Date.now() - this.lastMessageTime;\n if (elapsedTime > this.pingInterval) {\n const message = {\n type: OutgoingMessageTypes.PING,\n };\n this.send(JSON.stringify(message));\n }\n }, this.pingInterval);\n }\n\n /**\n * @description Set callback when the socket is opened.\n *\n */\n set onOpen(callback: () => void) {\n this.onOpenCallback = callback;\n }\n\n /**\n * @description Set callback when the socket is closed.\n *\n */\n set onClose(callback: () => void) {\n this.onCloseCallback = callback;\n }\n\n /**\n * @description Set callback when the socket receives a message.\n *\n */\n set onMessage(callback: (event: SocketMessage) => void) {\n this.onMessageCallback = callback;\n }\n\n getReadyState() {\n return this.ws?.readyState;\n }\n\n /**\n * @description Send a subscribe message to the websocket connection.\n *\n */\n subscribe(channel: string, params?: object): void {\n const message = {\n type: OutgoingMessageTypes.SUBSCRIBE,\n channel,\n ...params,\n };\n this.send(JSON.stringify(message));\n }\n\n /**\n * @description Send an unsubscribe message to the websocket connection.\n *\n */\n unsubscribe(channel: string, params?: object): void {\n const message = {\n type: OutgoingMessageTypes.UNSUBSCRIBE,\n channel,\n ...params,\n };\n this.send(JSON.stringify(message));\n }\n /**\n * @description Subscribe to candles channel\n * for a specific market and resolution.\n *\n */\n subscribeToCandles(\n marketTicker: string,\n resolution: CandlesResolution,\n ): void {\n const channel = SocketChannels.CANDLES;\n const params = {\n id: `${marketTicker}/${resolution}`,\n batched: true,\n };\n this.subscribe(channel, params);\n }\n\n subscribeToSpotCandles(\n marketTicker: string,\n resolution: CandlesResolution,\n ): void {\n const channel = SocketChannels.SPOT_CANDLES;\n const params = {\n id: `${marketTicker}/${resolution}`,\n batched: true,\n };\n this.subscribe(channel, params);\n }\n\n /**\n * @description Unsubscribe from candles channel\n * for a specific market and resolution.\n */\n unsubscribeFromCandles(market: string, resolution: CandlesResolution): void {\n const channel = SocketChannels.CANDLES;\n const params = {\n id: `${market}/${resolution}`,\n };\n this.unsubscribe(channel, params);\n }\n\n unsubscribeFromSpotCandles(\n market: string,\n resolution: CandlesResolution,\n ): void {\n const channel = SocketChannels.SPOT_CANDLES;\n const params = {\n id: `${market}/${resolution}`,\n };\n this.unsubscribe(channel, params);\n }\n\n /**\n * @description Subscribe to prices channel\n * for a specific assets pair.\n *\n */\n subscribeToPrices(assetsPair: string): void {\n const channel = SocketChannels.PRICES;\n const params = {\n id: assetsPair,\n };\n this.subscribe(channel, params);\n }\n\n /**\n * @description Unsubscribe from prices channel\n * for a specific market and resolution.\n */\n unsubscribeFromPrices(assetsPair: string): void {\n const channel = SocketChannels.PRICES;\n const params = {\n id: assetsPair,\n };\n this.unsubscribe(channel, params);\n }\n\n /**\n * @description Subscribe to funding rate channel\n * for a specific assets pair.\n *\n */\n subscribeToFundingRate(assetsPair: string): void {\n const channel = SocketChannels.FUNDING_RATES;\n const params = {\n id: assetsPair,\n };\n this.subscribe(channel, params);\n }\n\n /**\n * @description Unsubscribe from funding rate channel\n * for a specific market and resolution.\n */\n unsubscribeFromFundingRate(assetsPair: string): void {\n const channel = SocketChannels.FUNDING_RATES;\n const params = {\n id: assetsPair,\n };\n this.unsubscribe(channel, params);\n }\n\n /**\n * @description Subscribe to markets updates channel\n *\n */\n subscribeToMarketsUpdates(): void {\n const channel = SocketChannels.MARKETS_UPDATES;\n const params = {\n id: '1',\n };\n this.subscribe(channel, params);\n }\n\n /**\n * @description Unsubscribe from markets updates channel\n */\n unsubscribeFromMarketsUpdates(): void {\n const channel = SocketChannels.MARKETS_UPDATES;\n const params = {\n id: '1',\n };\n this.unsubscribe(channel, params);\n }\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"/","sources":["clients/modules/isolated-order.simulation/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,2BAA2B,EAC3B,yCAAyC,EACzC,yCAAyC,EACzC,qCAAqC,EACrC,qCAAqC,EACrC,sCAAsC,EACtC,sCAAsC,EACvC,MAAM,SAAS,CAAC;AACjB,OAAO,aAAa,MAAM,YAAY,CAAC;AACvC,OAAO,EAEL,eAAe,EACf,oBAAoB,EAGrB,MAAM,iBAAiB,CAAC;AAGzB,OAAO,EACL,oBAAoB,EACpB,oBAAoB,EACpB,+CAA+C,EAC/C,iCAAiC,EAClC,MAAM,2BAA2B,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"/","sources":["clients/modules/isolated-order.simulation/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,2BAA2B,EAC3B,yCAAyC,EACzC,yCAAyC,EACzC,qCAAqC,EACrC,qCAAqC,EACrC,sCAAsC,EACtC,sCAAsC,EACvC,MAAM,SAAS,CAAC;AACjB,OAAO,aAAa,MAAM,YAAY,CAAC;AACvC,OAAO,EAEL,eAAe,EACf,oBAAoB,EAGrB,MAAM,iBAAiB,CAAC;AAGzB,OAAO,EACL,oBAAoB,EACpB,oBAAoB,EACpB,+CAA+C,EAC/C,iCAAiC,EAClC,MAAM,2BAA2B,CAAC;AAInC,MAAM,CAAC,OAAO,OAAO,6BAA6B;IAChD,OAAO,CAAC,UAAU,CAAqC;IACvD,OAAO,CAAC,aAAa,CAAgB;IACrC,OAAO,CAAC,QAAQ,CAAuB;gBAE3B,aAAa,EAAE,aAAa;IAMlC,GAAG,CAAC,MAAM,EAAE,qCAAqC,GAAG,OAAO,CAAC,IAAI,CAAC;IAQvE,MAAM,CAAC,wBAAwB,CAC7B,oBAAoB,EAAE,oBAAoB,GACzC,eAAe;YAqBJ,eAAe;IAW7B,QAAQ,CACN,MAAM,EAAE,qCAAqC,GAC5C,2BAA2B;IA4H9B,YAAY,CACV,MAAM,EAAE,yCAAyC,GAChD,yCAAyC;IAuB5C,0BAA0B,CACxB,MAAM,EAAE,+CAA+C,GACtD,iCAAiC;IAmDpC,cAAc,IAAI,MAAM,GAAG,IAAI;IAS/B,cAAc,CAAC,MAAM,EAAE,oBAAoB,GAAG,oBAAoB;IA+ClE,kBAAkB,CAAC,MAAM,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,GAAG,MAAM;IAc/D,qBAAqB,CACnB,YAAY,EAAE,MAAM,EACpB,SAAS,EAAE,MAAM,EACjB,WAAW,EAAE,MAAM,GAClB,MAAM;IAQT,oBAAoB,CAAC,gBAAgB,EAAE,MAAM,GAAG,MAAM;IAwCtD,gCAAgC,CAAC,EAC/B,kBAAkB,GACnB,EAAE,sCAAsC,GAAG,sCAAsC;IAsElF,WAAW,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI;CAUjC"}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { MarginAccountEntity, MarketEntity, EditCollateralAction } from '@reyaxyz/common';
|
|
2
|
+
import { SimulateTradeFeeEntity } from '../trade.simulation/types';
|
|
2
3
|
export type IsolatedOrderSimulationLoadDataParams = {
|
|
3
4
|
marketId: MarketEntity['id'];
|
|
4
5
|
marginAccountId: MarginAccountEntity['id'];
|
|
@@ -16,6 +17,7 @@ export type SimulateIsolatedOrderEntity = {
|
|
|
16
17
|
liquidationPrice: number;
|
|
17
18
|
fees: number;
|
|
18
19
|
takerFeesPercentage: number;
|
|
20
|
+
feesV2: SimulateTradeFeeEntity;
|
|
19
21
|
estimatedPrice: number;
|
|
20
22
|
estimatedSlippage: number;
|
|
21
23
|
marginRatio: MarginAccountEntity['marginRatioPercentage'];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"/","sources":["clients/modules/isolated-order.simulation/types.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,mBAAmB,EACnB,YAAY,EACZ,oBAAoB,EACrB,MAAM,iBAAiB,CAAC;
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"/","sources":["clients/modules/isolated-order.simulation/types.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,mBAAmB,EACnB,YAAY,EACZ,oBAAoB,EACrB,MAAM,iBAAiB,CAAC;AACzB,OAAO,EAAE,sBAAsB,EAAE,MAAM,2BAA2B,CAAC;AAEnE,MAAM,MAAM,qCAAqC,GAAG;IAClD,QAAQ,EAAE,YAAY,CAAC,IAAI,CAAC,CAAC;IAC7B,eAAe,EAAE,mBAAmB,CAAC,IAAI,CAAC,CAAC;CAC5C,CAAC;AAEF,MAAM,MAAM,qCAAqC,GAAG;IAClD,MAAM,EAAE,MAAM,CAAC;IACf,wBAAwB,EAAE,MAAM,CAAC;IACjC,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB,CAAC;AAEF,MAAM,MAAM,yCAAyC,GAAG;IACtD,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,OAAO,CAAC;CACnB,CAAC;AAEF,MAAM,MAAM,2BAA2B,GAAG;IACxC,gBAAgB,EAAE,MAAM,CAAC;IACzB,IAAI,EAAE,MAAM,CAAC;IACb,mBAAmB,EAAE,MAAM,CAAC;IAC5B,MAAM,EAAE,sBAAsB,CAAC;IAC/B,cAAc,EAAE,MAAM,CAAC;IACvB,iBAAiB,EAAE,MAAM,CAAC;IAC1B,WAAW,EAAE,mBAAmB,CAAC,uBAAuB,CAAC,CAAC;IAC1D,iBAAiB,EAAE,mBAAmB,CAAC,mBAAmB,CAAC,CAAC;IAC5D,aAAa,EAAE,MAAM,CAAC;IACtB,mBAAmB,EAAE,MAAM,CAAC;IAC5B,cAAc,EAAE,MAAM,CAAC;IACvB,qBAAqB,EAAE,oBAAoB,EAAE,CAAC;IAC9C,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,CAAC,EAAE;QACZ,GAAG,EAAE,MAAM,CAAC;QACZ,GAAG,EAAE,MAAM,CAAC;KACb,CAAC;CACH,CAAC;AAEF,MAAM,MAAM,yCAAyC,GAAG,MAAM,CAAC;AAE/D,MAAM,MAAM,sCAAsC,GAAG;IACnD,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;IACjB,eAAe,EAAE,MAAM,CAAC;CACzB,CAAC;AAEF,MAAM,MAAM,sCAAsC,GAAG;IAEnD,kBAAkB,EAAE,MAAM,CAAC;CAC5B,CAAC"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { GetCandlesParams, GetFundingRateChartDataParams, GetMarketParams, GetMarketResult, GetMarketsResult, GetMarketTradingHistoryParams, GetPoolPriceResult, GetSpotMarketsResult, GetTradingHistoryResult, MarketCandlesResponse } from './types';
|
|
1
|
+
import { GetCandlesParams, GetFundingRateChartDataParams, GetMarketParams, GetMarketResult, GetMarketsResult, GetMarketTradingHistoryParams, GetPoolPriceResult, GetSpotCandlesParams, GetSpotMarketsResult, GetTradingHistoryResult, MarketCandlesResponse } from './types';
|
|
2
2
|
import { GetFundingRateChartDataResult, RestClient } from '@reyaxyz/common';
|
|
3
3
|
export default class MarketsClient extends RestClient {
|
|
4
4
|
/**
|
|
@@ -36,6 +36,7 @@ export default class MarketsClient extends RestClient {
|
|
|
36
36
|
* const marketCandles = await market.getMarketCandles('BTC-USD', '1HR', '2023-01-01T00:00:00Z', '2023-01-02T00:00:00Z');
|
|
37
37
|
*/
|
|
38
38
|
getMarketCandles(params: GetCandlesParams): Promise<MarketCandlesResponse>;
|
|
39
|
+
getSpotMarketCandles(params: GetSpotCandlesParams): Promise<MarketCandlesResponse>;
|
|
39
40
|
getMarketTradingHistory(params: GetMarketTradingHistoryParams): Promise<GetTradingHistoryResult>;
|
|
40
41
|
getFundingRateChartData(params: GetFundingRateChartDataParams): Promise<GetFundingRateChartDataResult>;
|
|
41
42
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"/","sources":["clients/modules/markets/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,gBAAgB,EAChB,6BAA6B,EAC7B,eAAe,EACf,eAAe,EACf,gBAAgB,EAChB,6BAA6B,EAC7B,kBAAkB,EAClB,oBAAoB,EACpB,uBAAuB,EACvB,qBAAqB,EACtB,MAAM,SAAS,CAAC;AACjB,OAAO,EACL,6BAA6B,EAC7B,UAAU,EAEX,MAAM,iBAAiB,CAAC;AAEzB,MAAM,CAAC,OAAO,OAAO,aAAc,SAAQ,UAAU;IACnD;;;;;;;;;;;;;;;;OAgBG;IAEG,UAAU,IAAI,OAAO,CAAC,gBAAgB,CAAC;IAKvC,cAAc,IAAI,OAAO,CAAC,oBAAoB,CAAC;IAK/C,SAAS,CAAC,MAAM,EAAE,eAAe,GAAG,OAAO,CAAC,eAAe,CAAC;IAK5D,YAAY,CAAC,MAAM,EAAE,eAAe,GAAG,OAAO,CAAC,kBAAkB,CAAC;IAMxE;;;;;;;;;;;;OAYG;IAEG,gBAAgB,CACpB,MAAM,EAAE,gBAAgB,GACvB,OAAO,CAAC,qBAAqB,CAAC;IAU3B,uBAAuB,CAC3B,MAAM,EAAE,6BAA6B,GACpC,OAAO,CAAC,uBAAuB,CAAC;IAQ7B,uBAAuB,CAC3B,MAAM,EAAE,6BAA6B,GACpC,OAAO,CAAC,6BAA6B,CAAC;CAO1C"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"/","sources":["clients/modules/markets/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,gBAAgB,EAChB,6BAA6B,EAC7B,eAAe,EACf,eAAe,EACf,gBAAgB,EAChB,6BAA6B,EAC7B,kBAAkB,EAClB,oBAAoB,EACpB,oBAAoB,EACpB,uBAAuB,EACvB,qBAAqB,EACtB,MAAM,SAAS,CAAC;AACjB,OAAO,EACL,6BAA6B,EAC7B,UAAU,EAEX,MAAM,iBAAiB,CAAC;AAEzB,MAAM,CAAC,OAAO,OAAO,aAAc,SAAQ,UAAU;IACnD;;;;;;;;;;;;;;;;OAgBG;IAEG,UAAU,IAAI,OAAO,CAAC,gBAAgB,CAAC;IAKvC,cAAc,IAAI,OAAO,CAAC,oBAAoB,CAAC;IAK/C,SAAS,CAAC,MAAM,EAAE,eAAe,GAAG,OAAO,CAAC,eAAe,CAAC;IAK5D,YAAY,CAAC,MAAM,EAAE,eAAe,GAAG,OAAO,CAAC,kBAAkB,CAAC;IAMxE;;;;;;;;;;;;OAYG;IAEG,gBAAgB,CACpB,MAAM,EAAE,gBAAgB,GACvB,OAAO,CAAC,qBAAqB,CAAC;IAU3B,oBAAoB,CACxB,MAAM,EAAE,oBAAoB,GAC3B,OAAO,CAAC,qBAAqB,CAAC;IAU3B,uBAAuB,CAC3B,MAAM,EAAE,6BAA6B,GACpC,OAAO,CAAC,uBAAuB,CAAC;IAQ7B,uBAAuB,CAC3B,MAAM,EAAE,6BAA6B,GACpC,OAAO,CAAC,6BAA6B,CAAC;CAO1C"}
|
|
@@ -16,6 +16,13 @@ export type GetCandlesParams = {
|
|
|
16
16
|
toISO?: string | null;
|
|
17
17
|
limit?: number | null;
|
|
18
18
|
};
|
|
19
|
+
export type GetSpotCandlesParams = {
|
|
20
|
+
marketId: SpotMarketEntity['id'];
|
|
21
|
+
resolution: CandlesResolution;
|
|
22
|
+
fromISO?: string | null;
|
|
23
|
+
toISO?: string | null;
|
|
24
|
+
limit?: number | null;
|
|
25
|
+
};
|
|
19
26
|
export type GetMarketTradingHistoryParams = {
|
|
20
27
|
marketId: number;
|
|
21
28
|
limit?: number;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"/","sources":["clients/modules/markets/types.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,iBAAiB,EACjB,YAAY,EACZ,oBAAoB,EACpB,MAAM,EACN,gBAAgB,EACjB,MAAM,iBAAiB,CAAC;AACzB,OAAO,EAAE,6BAA6B,EAAE,MAAM,iBAAiB,CAAC;AAEhE,MAAM,MAAM,gBAAgB,GAAG,YAAY,EAAE,CAAC;AAC9C,MAAM,MAAM,oBAAoB,GAAG,gBAAgB,EAAE,CAAC;AAEtD,MAAM,MAAM,eAAe,GAAG,YAAY,CAAC;AAE3C,MAAM,MAAM,eAAe,GAAG;IAC5B,EAAE,EAAE,YAAY,CAAC,IAAI,CAAC,CAAC;CACxB,CAAC;AAEF,MAAM,MAAM,kBAAkB,GAAG;IAC/B,EAAE,EAAE,YAAY,CAAC,IAAI,CAAC,CAAC;CACxB,CAAC;AAEF,MAAM,MAAM,gBAAgB,GAAG;IAC7B,QAAQ,EAAE,YAAY,CAAC,IAAI,CAAC,CAAC;IAC7B,UAAU,EAAE,iBAAiB,CAAC;IAC9B,OAAO,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,KAAK,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,KAAK,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CACvB,CAAC;AAEF,MAAM,MAAM,6BAA6B,GAAG;IAC1C,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,4BAA4B,CAAC,EAAE,MAAM,CAAC;CACvC,CAAC;AACF,MAAM,MAAM,uBAAuB,GAAG,oBAAoB,EAAE,CAAC;AAE7D,MAAM,WAAW,qBAAqB;IACpC,OAAO,EAAE,MAAM,EAAE,CAAC;CACnB;AAED,MAAM,MAAM,6BAA6B,GAAG;IAC1C,QAAQ,EAAE,YAAY,CAAC,IAAI,CAAC,CAAC;IAC7B,OAAO,EAAE;QACP,WAAW,EAAE,MAAM,CAAC;QACpB,WAAW,EAAE,6BAA6B,CAAC;KAC5C,CAAC;CACH,CAAC;AAEF,MAAM,MAAM,kBAAkB,GAAG;IAC/B,KAAK,EAAE,MAAM,CAAC;CACf,CAAC"}
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"/","sources":["clients/modules/markets/types.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,iBAAiB,EACjB,YAAY,EACZ,oBAAoB,EACpB,MAAM,EACN,gBAAgB,EACjB,MAAM,iBAAiB,CAAC;AACzB,OAAO,EAAE,6BAA6B,EAAE,MAAM,iBAAiB,CAAC;AAEhE,MAAM,MAAM,gBAAgB,GAAG,YAAY,EAAE,CAAC;AAC9C,MAAM,MAAM,oBAAoB,GAAG,gBAAgB,EAAE,CAAC;AAEtD,MAAM,MAAM,eAAe,GAAG,YAAY,CAAC;AAE3C,MAAM,MAAM,eAAe,GAAG;IAC5B,EAAE,EAAE,YAAY,CAAC,IAAI,CAAC,CAAC;CACxB,CAAC;AAEF,MAAM,MAAM,kBAAkB,GAAG;IAC/B,EAAE,EAAE,YAAY,CAAC,IAAI,CAAC,CAAC;CACxB,CAAC;AAEF,MAAM,MAAM,gBAAgB,GAAG;IAC7B,QAAQ,EAAE,YAAY,CAAC,IAAI,CAAC,CAAC;IAC7B,UAAU,EAAE,iBAAiB,CAAC;IAC9B,OAAO,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,KAAK,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,KAAK,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CACvB,CAAC;AAEF,MAAM,MAAM,oBAAoB,GAAG;IACjC,QAAQ,EAAE,gBAAgB,CAAC,IAAI,CAAC,CAAC;IACjC,UAAU,EAAE,iBAAiB,CAAC;IAC9B,OAAO,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,KAAK,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,KAAK,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CACvB,CAAC;AAEF,MAAM,MAAM,6BAA6B,GAAG;IAC1C,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,4BAA4B,CAAC,EAAE,MAAM,CAAC;CACvC,CAAC;AACF,MAAM,MAAM,uBAAuB,GAAG,oBAAoB,EAAE,CAAC;AAE7D,MAAM,WAAW,qBAAqB;IACpC,OAAO,EAAE,MAAM,EAAE,CAAC;CACnB;AAED,MAAM,MAAM,6BAA6B,GAAG;IAC1C,QAAQ,EAAE,YAAY,CAAC,IAAI,CAAC,CAAC;IAC7B,OAAO,EAAE;QACP,WAAW,EAAE,MAAM,CAAC;QACpB,WAAW,EAAE,6BAA6B,CAAC;KAC5C,CAAC;CACH,CAAC;AAEF,MAAM,MAAM,kBAAkB,GAAG;IAC/B,KAAK,EAAE,MAAM,CAAC;CACf,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"/","sources":["clients/modules/trade.simulation/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,oBAAoB,EACpB,oBAAoB,EACpB,4BAA4B,EAC5B,4BAA4B,EAC5B,wBAAwB,EACxB,mBAAmB,EACnB,+CAA+C,EAC/C,iCAAiC,EACjC,iCAAiC,EACjC,6BAA6B,EAC7B,kCAAkC,EAClC,6BAA6B,EAC9B,MAAM,SAAS,CAAC;AACjB,OAAO,aAAa,MAAM,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"/","sources":["clients/modules/trade.simulation/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,oBAAoB,EACpB,oBAAoB,EACpB,4BAA4B,EAC5B,4BAA4B,EAC5B,wBAAwB,EACxB,mBAAmB,EACnB,+CAA+C,EAC/C,iCAAiC,EACjC,iCAAiC,EACjC,6BAA6B,EAC7B,kCAAkC,EAClC,6BAA6B,EAC9B,MAAM,SAAS,CAAC;AACjB,OAAO,aAAa,MAAM,YAAY,CAAC;AAYvC,MAAM,CAAC,OAAO,OAAO,qBAAqB;IACxC,OAAO,CAAC,QAAQ,CAAuB;IACvC,OAAO,CAAC,SAAS,CAAuB;IACxC,OAAO,CAAC,UAAU,CAIF;IAChB,OAAO,CAAC,aAAa,CAAgB;gBAEzB,aAAa,EAAE,aAAa;IAMlC,GAAG,CAAC,MAAM,EAAE,6BAA6B,GAAG,OAAO,CAAC,IAAI,CAAC;YAsDjD,eAAe;IAW7B,QAAQ,CAAC,MAAM,EAAE,6BAA6B,GAAG,mBAAmB;IA0IpE,oBAAoB,IAAI,MAAM;IAyB9B,aAAa,CACX,MAAM,EAAE,kCAAkC,GACzC,wBAAwB;IA0F3B,yBAAyB,CACvB,MAAM,EAAE,4BAA4B,GACnC,4BAA4B;IAoC/B,YAAY,CACV,MAAM,EAAE,iCAAiC,GACxC,iCAAiC;IAyBpC,0BAA0B,CACxB,MAAM,EAAE,+CAA+C,GACtD,iCAAiC;IAkCpC,cAAc,IAAI,MAAM,GAAG,IAAI;IAU/B,cAAc,CAAC,MAAM,EAAE,oBAAoB,GAAG,oBAAoB;IA+BlE,kBAAkB,CAAC,MAAM,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,GAAG,MAAM;IAc/D,WAAW,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI;CAejC"}
|
|
@@ -23,10 +23,19 @@ export type TradeSimulationConvertValueEstimatedPriceParams = {
|
|
|
23
23
|
fromBase: boolean;
|
|
24
24
|
};
|
|
25
25
|
export type TradeSimulationConvertValueEstimatedPriceResult = number;
|
|
26
|
+
export type SimulateTradeFeeEntity = {
|
|
27
|
+
feeTier: number;
|
|
28
|
+
feePercentage: number;
|
|
29
|
+
rebalancingFeePercentage: number;
|
|
30
|
+
fee: number;
|
|
31
|
+
imbalancingFee: number;
|
|
32
|
+
rebalancingFee: number;
|
|
33
|
+
};
|
|
26
34
|
export type SimulateTradeEntity = {
|
|
27
35
|
liquidationPrice: number;
|
|
28
36
|
fees: number;
|
|
29
37
|
takerFeesPercentage: number;
|
|
38
|
+
feesV2: SimulateTradeFeeEntity;
|
|
30
39
|
estimatedPrice: number;
|
|
31
40
|
estimatedSlippage: number;
|
|
32
41
|
marginRatio: MarginAccountEntity['marginRatioPercentage'];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"/","sources":["clients/modules/trade.simulation/types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAEpE,MAAM,MAAM,6BAA6B,GAAG;IAC1C,QAAQ,EAAE,YAAY,CAAC,IAAI,CAAC,CAAC;IAC7B,eAAe,EAAE,mBAAmB,CAAC,IAAI,CAAC,CAAC;CAC5C,CAAC;AAEF,MAAM,MAAM,6BAA6B,GAAG;IAC1C,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB,CAAC;AAEF,MAAM,MAAM,iCAAiC,GAAG;IAC9C,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,OAAO,CAAC;CACnB,CAAC;AAEF,MAAM,MAAM,oBAAoB,GAAG;IACjC,MAAM,EAAE,MAAM,CAAC;CAChB,CAAC;AAEF,MAAM,MAAM,oBAAoB,GAAG;IACjC,cAAc,EAAE,MAAM,CAAC;IACvB,SAAS,EAAE,MAAM,CAAC;CACnB,CAAC;AAEF,MAAM,MAAM,+CAA+C,GAAG;IAC5D,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,OAAO,CAAC;CACnB,CAAC;AAEF,MAAM,MAAM,+CAA+C,GAAG,MAAM,CAAC;AAErE,MAAM,MAAM,mBAAmB,GAAG;IAChC,gBAAgB,EAAE,MAAM,CAAC;IACzB,IAAI,EAAE,MAAM,CAAC;IACb,mBAAmB,EAAE,MAAM,CAAC;IAC5B,cAAc,EAAE,MAAM,CAAC;IACvB,iBAAiB,EAAE,MAAM,CAAC;IAC1B,WAAW,EAAE,mBAAmB,CAAC,uBAAuB,CAAC,CAAC;IAC1D,iBAAiB,EAAE,mBAAmB,CAAC,mBAAmB,CAAC,CAAC;IAC5D,eAAe,EAAE,MAAM,CAAC;IACxB,aAAa,EAAE,MAAM,CAAC;IACtB,cAAc,EAAE,MAAM,CAAC;IACvB,aAAa,EAAE,MAAM,CAAC;IACtB,mBAAmB,EAAE,MAAM,CAAC;IAC5B,WAAW,CAAC,EAAE;QACZ,GAAG,EAAE,MAAM,CAAC;QACZ,GAAG,EAAE,MAAM,CAAC;KACb,CAAC;IACF,WAAW,EAAE,MAAM,CAAC;CACrB,CAAC;AAEF,MAAM,MAAM,kCAAkC,GAAG;IAC/C,YAAY,EAAE,MAAM,CAAC;IACrB,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB,CAAC;AAEF,MAAM,MAAM,wBAAwB,GAAG;IACrC,IAAI,EAAE,MAAM,CAAC;IACb,mBAAmB,EAAE,MAAM,CAAC;IAC5B,aAAa,EAAE,MAAM,CAAC;IACtB,mBAAmB,EAAE,MAAM,CAAC;IAC5B,cAAc,EAAE,MAAM,CAAC;IACvB,WAAW,EAAE,mBAAmB,CAAC,uBAAuB,CAAC,CAAC;IAC1D,iBAAiB,EAAE,mBAAmB,CAAC,mBAAmB,CAAC,CAAC;IAC5D,eAAe,EAAE,MAAM,CAAC;IACxB,aAAa,EAAE,MAAM,CAAC;IACtB,cAAc,EAAE,MAAM,CAAC;IACvB,WAAW,EAAE;QACX,GAAG,EAAE,MAAM,CAAC;QACZ,GAAG,EAAE,MAAM,CAAC;KACb,CAAC;CACH,CAAC;AAEF,MAAM,MAAM,4BAA4B,GAAG;IACzC,YAAY,EAAE,MAAM,CAAC;CACtB,CAAC;AAEF,MAAM,MAAM,4BAA4B,GAAG;IACzC,aAAa,EAAE,MAAM,CAAC;IACtB,aAAa,EAAE,MAAM,CAAC;IACtB,aAAa,EAAE,MAAM,CAAC;IACtB,aAAa,EAAE,MAAM,CAAC;CACvB,CAAC;AAEF,MAAM,MAAM,iCAAiC,GAAG,MAAM,CAAC"}
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"/","sources":["clients/modules/trade.simulation/types.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { TradeSimulationState } from '@reyaxyz/common';
|
|
2
|
+
import { SimulateTradeFeeEntity } from './types';
|
|
3
|
+
export declare const computeFee: ({ tradeSimulationState, marketId, orderBase, }: {
|
|
4
|
+
marketId: number;
|
|
5
|
+
tradeSimulationState: TradeSimulationState;
|
|
6
|
+
orderBase: number;
|
|
7
|
+
}) => SimulateTradeFeeEntity;
|
|
8
|
+
//# sourceMappingURL=utils.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"utils.d.ts","sourceRoot":"/","sources":["clients/modules/trade.simulation/utils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAmB,oBAAoB,EAAE,MAAM,iBAAiB,CAAC;AACxE,OAAO,EAAE,sBAAsB,EAAE,MAAM,SAAS,CAAC;AAEjD,eAAO,MAAM,UAAU;cAKX,MAAM;0BACM,oBAAoB;eAC/B,MAAM;MACf,sBAwCH,CAAC"}
|
|
@@ -3,7 +3,8 @@ export declare enum SocketChannels {
|
|
|
3
3
|
CANDLES = "candles",
|
|
4
4
|
PRICES = "prices",
|
|
5
5
|
FUNDING_RATES = "funding-rates",
|
|
6
|
-
MARKETS_UPDATES = "markets-updates"
|
|
6
|
+
MARKETS_UPDATES = "markets-updates",
|
|
7
|
+
SPOT_CANDLES = "spot-candles"
|
|
7
8
|
}
|
|
8
9
|
export declare enum IncomingMessageTypes {
|
|
9
10
|
CONNECTED = "connected",
|
|
@@ -142,11 +143,13 @@ export declare class SocketClient {
|
|
|
142
143
|
*
|
|
143
144
|
*/
|
|
144
145
|
subscribeToCandles(marketTicker: string, resolution: CandlesResolution): void;
|
|
146
|
+
subscribeToSpotCandles(marketTicker: string, resolution: CandlesResolution): void;
|
|
145
147
|
/**
|
|
146
148
|
* @description Unsubscribe from candles channel
|
|
147
149
|
* for a specific market and resolution.
|
|
148
150
|
*/
|
|
149
151
|
unsubscribeFromCandles(market: string, resolution: CandlesResolution): void;
|
|
152
|
+
unsubscribeFromSpotCandles(market: string, resolution: CandlesResolution): void;
|
|
150
153
|
/**
|
|
151
154
|
* @description Subscribe to prices channel
|
|
152
155
|
* for a specific assets pair.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"socket-client.d.ts","sourceRoot":"/","sources":["clients/socket-client.ts"],"names":[],"mappings":"AAEA,OAAO,EAEL,MAAM,EACN,iBAAiB,EACjB,YAAY,EACZ,aAAa,EACb,kBAAkB,EACnB,MAAM,iBAAiB,CAAC;AAQzB,oBAAY,cAAc;IACxB,OAAO,YAAY;IACnB,MAAM,WAAW;IACjB,aAAa,kBAAkB;IAC/B,eAAe,oBAAoB;
|
|
1
|
+
{"version":3,"file":"socket-client.d.ts","sourceRoot":"/","sources":["clients/socket-client.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@reyaxyz/api-sdk",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.144.0",
|
|
4
4
|
"publishConfig": {
|
|
5
5
|
"access": "public",
|
|
6
6
|
"registry": "https://registry.npmjs.org"
|
|
@@ -33,7 +33,7 @@
|
|
|
33
33
|
"generate:coverage-badges": "npx istanbul-badges-readme --silent"
|
|
34
34
|
},
|
|
35
35
|
"dependencies": {
|
|
36
|
-
"@reyaxyz/common": "0.
|
|
36
|
+
"@reyaxyz/common": "0.230.0",
|
|
37
37
|
"@simplewebauthn/types": "^10.0.0",
|
|
38
38
|
"axios": "^1.6.2",
|
|
39
39
|
"bignumber.js": "^9.1.2",
|
|
@@ -42,7 +42,7 @@
|
|
|
42
42
|
"ws": "^8.16.0"
|
|
43
43
|
},
|
|
44
44
|
"packageManager": "pnpm@8.3.1",
|
|
45
|
-
"gitHead": "
|
|
45
|
+
"gitHead": "535fb6356a154bbe5dd57eecc42d7c0ba920c8b0",
|
|
46
46
|
"devDependencies": {
|
|
47
47
|
"@types/ws": "8.5.10"
|
|
48
48
|
}
|
|
@@ -24,6 +24,7 @@ import {
|
|
|
24
24
|
TradeSimulationConvertValueResult,
|
|
25
25
|
} from '../trade.simulation/types';
|
|
26
26
|
import { INSTANT_TRADING_RATE_XP } from '@reyaxyz/common';
|
|
27
|
+
import { computeFee } from '../trade.simulation/utils';
|
|
27
28
|
|
|
28
29
|
export default class IsolatedOrderSimulationClient {
|
|
29
30
|
private loadedData: TradeSimulationState | null = null;
|
|
@@ -81,21 +82,20 @@ export default class IsolatedOrderSimulationClient {
|
|
|
81
82
|
simulate(
|
|
82
83
|
params: IsolatedOrderSimulationSimulateParams,
|
|
83
84
|
): SimulateIsolatedOrderEntity {
|
|
84
|
-
if (!this.loadedData) {
|
|
85
|
+
if (!this.loadedData || !this.marketId) {
|
|
85
86
|
throw new Error('Data not loaded. Call arm() first.');
|
|
86
87
|
}
|
|
87
88
|
|
|
89
|
+
const oraclePrice =
|
|
90
|
+
this.loadedData.exposureDataPassivePool.oraclePricePerMarket[
|
|
91
|
+
this.loadedData.marketConfiguration.market_id
|
|
92
|
+
];
|
|
93
|
+
|
|
88
94
|
let amount;
|
|
89
95
|
if (params.fromBase) {
|
|
90
96
|
amount = params.amount;
|
|
91
97
|
} else {
|
|
92
|
-
amount = BigNumber(params.amount)
|
|
93
|
-
.div(
|
|
94
|
-
this.loadedData.exposureDataPassivePool.oraclePricePerMarket[
|
|
95
|
-
this.loadedData.marketConfiguration.market_id
|
|
96
|
-
],
|
|
97
|
-
)
|
|
98
|
-
.toNumber();
|
|
98
|
+
amount = BigNumber(params.amount).div(oraclePrice).toNumber();
|
|
99
99
|
}
|
|
100
100
|
|
|
101
101
|
const userAccountExposure =
|
|
@@ -114,21 +114,17 @@ export default class IsolatedOrderSimulationClient {
|
|
|
114
114
|
this.loadedData.marketStorage,
|
|
115
115
|
);
|
|
116
116
|
const estimatedPrice = ExposureCommand.calculateEstimatedPrice(
|
|
117
|
-
|
|
118
|
-
this.loadedData.marketConfiguration.market_id
|
|
119
|
-
],
|
|
117
|
+
oraclePrice,
|
|
120
118
|
slippage,
|
|
121
119
|
);
|
|
122
120
|
|
|
123
121
|
const amountSize = estimatedPrice * amount;
|
|
124
122
|
|
|
125
|
-
const
|
|
126
|
-
this.loadedData
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
this.loadedData.feeParameter,
|
|
131
|
-
);
|
|
123
|
+
const feesV2 = computeFee({
|
|
124
|
+
tradeSimulationState: this.loadedData,
|
|
125
|
+
marketId: this.marketId,
|
|
126
|
+
orderBase: amount,
|
|
127
|
+
});
|
|
132
128
|
|
|
133
129
|
/*
|
|
134
130
|
amount of margin in rUSD terms that needs to be transferred from the source account to the destination account,
|
|
@@ -164,9 +160,7 @@ export default class IsolatedOrderSimulationClient {
|
|
|
164
160
|
const liquidationPrice = ExposureCommand.calculateLiquidation(
|
|
165
161
|
requiredMargin,
|
|
166
162
|
isolatedLMR,
|
|
167
|
-
|
|
168
|
-
this.loadedData.marketConfiguration.market_id
|
|
169
|
-
],
|
|
163
|
+
oraclePrice,
|
|
170
164
|
amount,
|
|
171
165
|
);
|
|
172
166
|
|
|
@@ -193,9 +187,9 @@ export default class IsolatedOrderSimulationClient {
|
|
|
193
187
|
return {
|
|
194
188
|
estimatedPrice: estimatedPrice,
|
|
195
189
|
estimatedSlippage: slippage * 100,
|
|
196
|
-
fees:
|
|
197
|
-
takerFeesPercentage:
|
|
198
|
-
|
|
190
|
+
fees: feesV2.fee,
|
|
191
|
+
takerFeesPercentage: feesV2.feePercentage,
|
|
192
|
+
feesV2,
|
|
199
193
|
liquidationPrice: liquidationPrice.toNumber(),
|
|
200
194
|
marginRatio: marginRatio * 100,
|
|
201
195
|
marginRatioHealth: marginRatioHealth,
|
|
@@ -208,7 +202,7 @@ export default class IsolatedOrderSimulationClient {
|
|
|
208
202
|
max: xpEarnRangeMax,
|
|
209
203
|
},
|
|
210
204
|
maxSlippage: 1,
|
|
211
|
-
}
|
|
205
|
+
};
|
|
212
206
|
}
|
|
213
207
|
|
|
214
208
|
convertValue(
|
|
@@ -3,6 +3,7 @@ import {
|
|
|
3
3
|
MarketEntity,
|
|
4
4
|
EditCollateralAction,
|
|
5
5
|
} from '@reyaxyz/common';
|
|
6
|
+
import { SimulateTradeFeeEntity } from '../trade.simulation/types';
|
|
6
7
|
|
|
7
8
|
export type IsolatedOrderSimulationLoadDataParams = {
|
|
8
9
|
marketId: MarketEntity['id'];
|
|
@@ -24,6 +25,7 @@ export type SimulateIsolatedOrderEntity = {
|
|
|
24
25
|
liquidationPrice: number;
|
|
25
26
|
fees: number;
|
|
26
27
|
takerFeesPercentage: number;
|
|
28
|
+
feesV2: SimulateTradeFeeEntity;
|
|
27
29
|
estimatedPrice: number;
|
|
28
30
|
estimatedSlippage: number;
|
|
29
31
|
marginRatio: MarginAccountEntity['marginRatioPercentage'];
|
|
@@ -6,6 +6,7 @@ import {
|
|
|
6
6
|
GetMarketsResult,
|
|
7
7
|
GetMarketTradingHistoryParams,
|
|
8
8
|
GetPoolPriceResult,
|
|
9
|
+
GetSpotCandlesParams,
|
|
9
10
|
GetSpotMarketsResult,
|
|
10
11
|
GetTradingHistoryResult,
|
|
11
12
|
MarketCandlesResponse,
|
|
@@ -82,6 +83,18 @@ export default class MarketsClient extends RestClient {
|
|
|
82
83
|
});
|
|
83
84
|
}
|
|
84
85
|
|
|
86
|
+
async getSpotMarketCandles(
|
|
87
|
+
params: GetSpotCandlesParams,
|
|
88
|
+
): Promise<MarketCandlesResponse> {
|
|
89
|
+
const uri = `/api/spot-markets/candles/${params.marketId}`;
|
|
90
|
+
return this.get(uri, {
|
|
91
|
+
resolution: params.resolution,
|
|
92
|
+
fromISO: params.fromISO,
|
|
93
|
+
toISO: params.toISO,
|
|
94
|
+
limit: params.limit,
|
|
95
|
+
});
|
|
96
|
+
}
|
|
97
|
+
|
|
85
98
|
async getMarketTradingHistory(
|
|
86
99
|
params: GetMarketTradingHistoryParams,
|
|
87
100
|
): Promise<GetTradingHistoryResult> {
|
|
@@ -28,6 +28,14 @@ export type GetCandlesParams = {
|
|
|
28
28
|
limit?: number | null;
|
|
29
29
|
};
|
|
30
30
|
|
|
31
|
+
export type GetSpotCandlesParams = {
|
|
32
|
+
marketId: SpotMarketEntity['id'];
|
|
33
|
+
resolution: CandlesResolution;
|
|
34
|
+
fromISO?: string | null;
|
|
35
|
+
toISO?: string | null;
|
|
36
|
+
limit?: number | null;
|
|
37
|
+
};
|
|
38
|
+
|
|
31
39
|
export type GetMarketTradingHistoryParams = {
|
|
32
40
|
marketId: number;
|
|
33
41
|
limit?: number;
|
|
@@ -22,6 +22,7 @@ import {
|
|
|
22
22
|
} from '@reyaxyz/common';
|
|
23
23
|
import BigNumber from 'bignumber.js';
|
|
24
24
|
import { INSTANT_TRADING_RATE_XP } from '@reyaxyz/common';
|
|
25
|
+
import { computeFee } from './utils';
|
|
25
26
|
|
|
26
27
|
export default class TradeSimulationClient {
|
|
27
28
|
private marketId: number | null = null;
|
|
@@ -105,24 +106,23 @@ export default class TradeSimulationClient {
|
|
|
105
106
|
|
|
106
107
|
// Synchronous method to simulate operations based on an amount
|
|
107
108
|
simulate(params: TradeSimulationSimulateParams): SimulateTradeEntity {
|
|
108
|
-
if (!this.loadedData) {
|
|
109
|
+
if (!this.loadedData || !this.marketId) {
|
|
109
110
|
throw new Error('Data not loaded. Call arm() first.');
|
|
110
111
|
}
|
|
111
112
|
|
|
112
113
|
const { tradeSimulationState, userAccountExposure, passivePoolExposure } =
|
|
113
114
|
this.loadedData;
|
|
114
115
|
|
|
116
|
+
const oraclePrice =
|
|
117
|
+
tradeSimulationState.exposureDataPassivePool.oraclePricePerMarket[
|
|
118
|
+
tradeSimulationState.marketConfiguration.market_id
|
|
119
|
+
];
|
|
120
|
+
|
|
115
121
|
let amount;
|
|
116
122
|
if (params.fromBase) {
|
|
117
123
|
amount = params.amount;
|
|
118
124
|
} else {
|
|
119
|
-
amount = BigNumber(params.amount)
|
|
120
|
-
.div(
|
|
121
|
-
tradeSimulationState.exposureDataPassivePool.oraclePricePerMarket[
|
|
122
|
-
tradeSimulationState.marketConfiguration.market_id
|
|
123
|
-
],
|
|
124
|
-
)
|
|
125
|
-
.toNumber();
|
|
125
|
+
amount = BigNumber(params.amount).div(oraclePrice).toNumber();
|
|
126
126
|
}
|
|
127
127
|
|
|
128
128
|
/*
|
|
@@ -143,19 +143,15 @@ export default class TradeSimulationClient {
|
|
|
143
143
|
);
|
|
144
144
|
|
|
145
145
|
const estimatedPrice = ExposureCommand.calculateEstimatedPrice(
|
|
146
|
-
|
|
147
|
-
tradeSimulationState.marketConfiguration.market_id
|
|
148
|
-
],
|
|
146
|
+
oraclePrice,
|
|
149
147
|
slippage,
|
|
150
148
|
);
|
|
151
149
|
|
|
152
|
-
const
|
|
153
|
-
tradeSimulationState
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
tradeSimulationState.feeParameter,
|
|
158
|
-
);
|
|
150
|
+
const feesV2 = computeFee({
|
|
151
|
+
tradeSimulationState,
|
|
152
|
+
marketId: this.marketId,
|
|
153
|
+
orderBase: amount,
|
|
154
|
+
});
|
|
159
155
|
|
|
160
156
|
const {
|
|
161
157
|
usdNodeMarginInfo: newMarginInfo,
|
|
@@ -202,9 +198,7 @@ export default class TradeSimulationClient {
|
|
|
202
198
|
const liquidationPrice = ExposureCommand.calculateLiquidation(
|
|
203
199
|
newMarginInfo.marginBalance,
|
|
204
200
|
newQuoteTokenMarginInfo.liquidationMarginRequirement,
|
|
205
|
-
|
|
206
|
-
tradeSimulationState.marketConfiguration.market_id
|
|
207
|
-
],
|
|
201
|
+
oraclePrice,
|
|
208
202
|
BigNumber(positionInfo?.base || 0).toNumber(),
|
|
209
203
|
);
|
|
210
204
|
|
|
@@ -230,9 +224,9 @@ export default class TradeSimulationClient {
|
|
|
230
224
|
return {
|
|
231
225
|
estimatedPrice,
|
|
232
226
|
estimatedSlippage: slippage * 100,
|
|
233
|
-
fees,
|
|
234
|
-
takerFeesPercentage:
|
|
235
|
-
|
|
227
|
+
fees: feesV2.fee,
|
|
228
|
+
takerFeesPercentage: feesV2.feePercentage,
|
|
229
|
+
feesV2,
|
|
236
230
|
liquidationPrice: liquidationPrice.toNumber(),
|
|
237
231
|
marginRatio: marginRatio * 100,
|
|
238
232
|
marginRatioHealth,
|
|
@@ -246,7 +240,7 @@ export default class TradeSimulationClient {
|
|
|
246
240
|
max: xpEarnRangeMax,
|
|
247
241
|
},
|
|
248
242
|
maxSlippage: 1,
|
|
249
|
-
}
|
|
243
|
+
};
|
|
250
244
|
}
|
|
251
245
|
|
|
252
246
|
getRiskMatrixElement(): number {
|
|
@@ -297,11 +291,13 @@ export default class TradeSimulationClient {
|
|
|
297
291
|
const snappedAmountInBase = this.roundToBaseSpacing(amount, baseSpacing);
|
|
298
292
|
const snappedAmount = snappedAmountInBase * params.triggerPrice;
|
|
299
293
|
|
|
300
|
-
const fees = ExposureCommand.calculateFee(
|
|
301
|
-
params.triggerPrice,
|
|
302
|
-
amount,
|
|
303
|
-
|
|
304
|
-
|
|
294
|
+
const { fee: fees } = ExposureCommand.calculateFee({
|
|
295
|
+
oraclePrice: params.triggerPrice,
|
|
296
|
+
orderBase: amount,
|
|
297
|
+
poolBasePreTrade: 0,
|
|
298
|
+
feeParameter: tradeSimulationState.feeParameter,
|
|
299
|
+
rebalancingFeeParameter: BigNumber(0),
|
|
300
|
+
});
|
|
305
301
|
|
|
306
302
|
const marginBalance =
|
|
307
303
|
userAccountExposure.getUsdNodeMarginInfo.marginBalance;
|
|
@@ -31,10 +31,20 @@ export type TradeSimulationConvertValueEstimatedPriceParams = {
|
|
|
31
31
|
|
|
32
32
|
export type TradeSimulationConvertValueEstimatedPriceResult = number;
|
|
33
33
|
|
|
34
|
+
export type SimulateTradeFeeEntity = {
|
|
35
|
+
feeTier: number;
|
|
36
|
+
feePercentage: number;
|
|
37
|
+
rebalancingFeePercentage: number;
|
|
38
|
+
fee: number;
|
|
39
|
+
imbalancingFee: number;
|
|
40
|
+
rebalancingFee: number;
|
|
41
|
+
};
|
|
42
|
+
|
|
34
43
|
export type SimulateTradeEntity = {
|
|
35
44
|
liquidationPrice: number;
|
|
36
|
-
fees: number;
|
|
37
|
-
takerFeesPercentage: number;
|
|
45
|
+
fees: number; // TODO: deprecate when feeV2 is linked up
|
|
46
|
+
takerFeesPercentage: number; // TODO: deprecate when feeV2 is linked up
|
|
47
|
+
feesV2: SimulateTradeFeeEntity;
|
|
38
48
|
estimatedPrice: number;
|
|
39
49
|
estimatedSlippage: number;
|
|
40
50
|
marginRatio: MarginAccountEntity['marginRatioPercentage'];
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
import { ExposureCommand, TradeSimulationState } from '@reyaxyz/common';
|
|
2
|
+
import { SimulateTradeFeeEntity } from './types';
|
|
3
|
+
|
|
4
|
+
export const computeFee = ({
|
|
5
|
+
tradeSimulationState,
|
|
6
|
+
marketId,
|
|
7
|
+
orderBase,
|
|
8
|
+
}: {
|
|
9
|
+
marketId: number;
|
|
10
|
+
tradeSimulationState: TradeSimulationState;
|
|
11
|
+
orderBase: number;
|
|
12
|
+
}): SimulateTradeFeeEntity => {
|
|
13
|
+
const oraclePrice =
|
|
14
|
+
tradeSimulationState.exposureDataPassivePool.oraclePricePerMarket[
|
|
15
|
+
tradeSimulationState.marketConfiguration.market_id
|
|
16
|
+
];
|
|
17
|
+
|
|
18
|
+
const poolPosition =
|
|
19
|
+
tradeSimulationState.exposureDataPassivePool.positionInfoMarketConfiguration.find(
|
|
20
|
+
(p) => p.market_id === marketId,
|
|
21
|
+
);
|
|
22
|
+
|
|
23
|
+
const poolBasePreTrade = Number(poolPosition?.base || 0);
|
|
24
|
+
|
|
25
|
+
// TODO: once api is updated, change to the following:
|
|
26
|
+
// const { feeParameter, rebalancingFeeParameter, feeTier } =
|
|
27
|
+
// tradeSimulationState.feeParameters;
|
|
28
|
+
|
|
29
|
+
const feeParameter = tradeSimulationState.feeParameter;
|
|
30
|
+
const rebalancingFeeParameter = tradeSimulationState.feeParameter;
|
|
31
|
+
const feeTier = 0;
|
|
32
|
+
|
|
33
|
+
const { fee, rebalancingFee, imbalancingFee } = ExposureCommand.calculateFee({
|
|
34
|
+
oraclePrice,
|
|
35
|
+
orderBase,
|
|
36
|
+
poolBasePreTrade,
|
|
37
|
+
feeParameter,
|
|
38
|
+
rebalancingFeeParameter,
|
|
39
|
+
});
|
|
40
|
+
|
|
41
|
+
const feePercentage = Number(feeParameter) * 100;
|
|
42
|
+
const rebalancingFeePercentage = Number(rebalancingFeeParameter) * 100;
|
|
43
|
+
|
|
44
|
+
return {
|
|
45
|
+
feeTier,
|
|
46
|
+
feePercentage,
|
|
47
|
+
rebalancingFeePercentage,
|
|
48
|
+
fee,
|
|
49
|
+
rebalancingFee,
|
|
50
|
+
imbalancingFee,
|
|
51
|
+
};
|
|
52
|
+
};
|