@reyaxyz/api-sdk 0.143.1 → 0.143.2
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/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/socket-client.js +16 -0
- package/dist/clients/socket-client.js.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/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/markets/index.ts +13 -0
- package/src/clients/modules/markets/types.ts +8 -0
- package/src/clients/socket-client.ts +24 -0
package/README.md
CHANGED
|
@@ -6,5 +6,5 @@
|
|
|
6
6
|
|
|
7
7
|
| Statements | Branches | Functions | Lines |
|
|
8
8
|
| --------------------------- | ----------------------- | ------------------------- | ----------------- |
|
|
9
|
-
|  |  |  |  |
|
|
10
10
|
|
|
@@ -143,6 +143,20 @@ var MarketsClient = /** @class */ (function (_super) {
|
|
|
143
143
|
});
|
|
144
144
|
});
|
|
145
145
|
};
|
|
146
|
+
MarketsClient.prototype.getSpotMarketCandles = function (params) {
|
|
147
|
+
return __awaiter(this, void 0, void 0, function () {
|
|
148
|
+
var uri;
|
|
149
|
+
return __generator(this, function (_a) {
|
|
150
|
+
uri = "/api/spot-markets/candles/".concat(params.marketId);
|
|
151
|
+
return [2 /*return*/, this.get(uri, {
|
|
152
|
+
resolution: params.resolution,
|
|
153
|
+
fromISO: params.fromISO,
|
|
154
|
+
toISO: params.toISO,
|
|
155
|
+
limit: params.limit,
|
|
156
|
+
})];
|
|
157
|
+
});
|
|
158
|
+
});
|
|
159
|
+
};
|
|
146
160
|
MarketsClient.prototype.getMarketTradingHistory = function (params) {
|
|
147
161
|
return __awaiter(this, void 0, void 0, function () {
|
|
148
162
|
var uri;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"/","sources":["clients/modules/markets/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"/","sources":["clients/modules/markets/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAaA,0CAIyB;AAEzB;IAA2C,iCAAU;IAArD;;IAiGA,CAAC;IAhGC;;;;;;;;;;;;;;;;OAgBG;IAEG,kCAAU,GAAhB;;;;gBACQ,GAAG,GAAG,cAAc,CAAC;gBAC3B,sBAAO,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,EAAC;;;KACtB;IAEK,sCAAc,GAApB;;;;gBACQ,GAAG,GAAG,mBAAmB,CAAC;gBAChC,sBAAO,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,EAAC;;;KACtB;IAEK,iCAAS,GAAf,UAAgB,MAAuB;;;;gBAC/B,GAAG,GAAG,uBAAgB,MAAM,CAAC,EAAE,CAAE,CAAC;gBACxC,sBAAO,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,EAAC;;;KACtB;IAEK,oCAAY,GAAlB,UAAmB,MAAuB;;;;;;wBAClC,GAAG,GAAG,uBAAgB,MAAM,CAAC,EAAE,iBAAc,CAAC;wBACH,qBAAM,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,EAAA;;wBAA9D,aAAa,GAA8B,SAAmB;wBACpE,sBAAO,EAAE,KAAK,EAAE,aAAa,CAAC,SAAS,EAAE,EAAC;;;;KAC3C;IAED;;;;;;;;;;;;OAYG;IAEG,wCAAgB,GAAtB,UACE,MAAwB;;;;gBAElB,GAAG,GAAG,+BAAwB,MAAM,CAAC,QAAQ,CAAE,CAAC;gBACtD,sBAAO,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE;wBACnB,UAAU,EAAE,MAAM,CAAC,UAAU;wBAC7B,OAAO,EAAE,MAAM,CAAC,OAAO;wBACvB,KAAK,EAAE,MAAM,CAAC,KAAK;wBACnB,KAAK,EAAE,MAAM,CAAC,KAAK;qBACpB,CAAC,EAAC;;;KACJ;IAEK,4CAAoB,GAA1B,UACE,MAA4B;;;;gBAEtB,GAAG,GAAG,oCAA6B,MAAM,CAAC,QAAQ,CAAE,CAAC;gBAC3D,sBAAO,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE;wBACnB,UAAU,EAAE,MAAM,CAAC,UAAU;wBAC7B,OAAO,EAAE,MAAM,CAAC,OAAO;wBACvB,KAAK,EAAE,MAAM,CAAC,KAAK;wBACnB,KAAK,EAAE,MAAM,CAAC,KAAK;qBACpB,CAAC,EAAC;;;KACJ;IAEK,+CAAuB,GAA7B,UACE,MAAqC;;;;gBAE/B,GAAG,GAAG,sBAAe,MAAM,CAAC,QAAQ,CAAE,CAAC;gBAC7C,sBAAO,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE;wBACnB,KAAK,EAAE,MAAM,CAAC,KAAK;wBACnB,4BAA4B,EAAE,MAAM,CAAC,4BAA4B;qBAClE,CAAC,EAAC;;;KACJ;IAEK,+CAAuB,GAA7B,UACE,MAAqC;;;;gBAE/B,GAAG,GAAG,uBAAgB,MAAM,CAAC,QAAQ,0BAAuB,CAAC;gBACnE,sBAAO,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE;wBACnB,WAAW,EAAE,MAAM,CAAC,OAAO,CAAC,WAAW;wBACvC,WAAW,EAAE,MAAM,CAAC,OAAO,CAAC,WAAW;qBACxC,CAAC,EAAC;;;KACJ;IACH,oBAAC;AAAD,CAAC,AAjGD,CAA2C,mBAAU,GAiGpD","sourcesContent":["import {\n GetCandlesParams,\n GetFundingRateChartDataParams,\n GetMarketParams,\n GetMarketResult,\n GetMarketsResult,\n GetMarketTradingHistoryParams,\n GetPoolPriceResult,\n GetSpotCandlesParams,\n GetSpotMarketsResult,\n GetTradingHistoryResult,\n MarketCandlesResponse,\n} from './types';\nimport {\n GetFundingRateChartDataResult,\n RestClient,\n GetInstantPoolPriceResult,\n} from '@reyaxyz/common';\n\nexport default class MarketsClient extends RestClient {\n /**\n * Asynchronously retrieves market data from the API.\n *\n * This method makes a request to the API to fetch data for markets. If a specific market is provided as a parameter,\n * it fetches data for that particular market; otherwise, it fetches data for all available markets.\n *\n * @returns {Promise<GetMarketsResult>} A promise that resolves to the response containing market data.\n * @memberof MarketsClient\n *\n * @example\n * // Fetch data for all markets\n * const allMarketsData = await market.getMarkets();\n *\n * @example\n * // Fetch data for a specific market\n * const specificMarketData = await market.getMarkets('ETH-USDC');\n */\n\n async getMarkets(): Promise<GetMarketsResult> {\n const uri = '/api/markets';\n return this.get(uri);\n }\n\n async getSpotMarkets(): Promise<GetSpotMarketsResult> {\n const uri = '/api/spot-markets';\n return this.get(uri);\n }\n\n async getMarket(params: GetMarketParams): Promise<GetMarketResult> {\n const uri = `/api/markets/${params.id}`;\n return this.get(uri);\n }\n\n async getPoolPrice(params: GetMarketParams): Promise<GetPoolPriceResult> {\n const uri = `/api/markets/${params.id}/pool-price/`;\n const poolPriceInfo: GetInstantPoolPriceResult = await this.get(uri);\n return { price: poolPriceInfo.poolPrice };\n }\n\n /**\n * Retrieves candlestick data for a specified market.\n *\n * This method fetches historical candlestick (or OHLC - Open, High, Low, Close) data for a given market.\n * The data can be filtered by time range (fromISO and toISO) and resolution.\n *\n * @param {GetCandlesParams} params\n * @returns {Promise<MarketCandlesResponse>} A promise that resolves to the market candlestick data.\n * @memberof MarketsClient\n *\n * @example\n * const marketCandles = await market.getMarketCandles('BTC-USD', '1HR', '2023-01-01T00:00:00Z', '2023-01-02T00:00:00Z');\n */\n\n async getMarketCandles(\n params: GetCandlesParams,\n ): Promise<MarketCandlesResponse> {\n const uri = `/api/markets/candles/${params.marketId}`;\n return this.get(uri, {\n resolution: params.resolution,\n fromISO: params.fromISO,\n toISO: params.toISO,\n limit: params.limit,\n });\n }\n\n async getSpotMarketCandles(\n params: GetSpotCandlesParams,\n ): Promise<MarketCandlesResponse> {\n const uri = `/api/spot-markets/candles/${params.marketId}`;\n return this.get(uri, {\n resolution: params.resolution,\n fromISO: params.fromISO,\n toISO: params.toISO,\n limit: params.limit,\n });\n }\n\n async getMarketTradingHistory(\n params: GetMarketTradingHistoryParams,\n ): Promise<GetTradingHistoryResult> {\n const uri = `/api/trades/${params.marketId}`;\n return this.get(uri, {\n limit: params.limit,\n fromTimestampMillisecondsUTC: params.fromTimestampMillisecondsUTC,\n });\n }\n\n async getFundingRateChartData(\n params: GetFundingRateChartDataParams,\n ): Promise<GetFundingRateChartDataResult> {\n const uri = `/api/markets/${params.marketId}/funding-rate-history`;\n return this.get(uri, {\n timeframeMs: params.filters.timeframeMs,\n granularity: params.filters.granularity,\n });\n }\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.js","sourceRoot":"/","sources":["clients/modules/markets/types.ts"],"names":[],"mappings":"","sourcesContent":["import {\n CandlesResolution,\n MarketEntity,\n TradingHistoryEntity,\n Candle,\n SpotMarketEntity,\n} from '@reyaxyz/common';\nimport { FundingRateHistoryGranularity } from '@reyaxyz/common';\n\nexport type GetMarketsResult = MarketEntity[];\nexport type GetSpotMarketsResult = SpotMarketEntity[];\n\nexport type GetMarketResult = MarketEntity;\n\nexport type GetMarketParams = {\n id: MarketEntity['id'];\n};\n\nexport type GetPoolPriceParams = {\n id: MarketEntity['id'];\n};\n\nexport type GetCandlesParams = {\n marketId: MarketEntity['id'];\n resolution: CandlesResolution;\n fromISO?: string | null;\n toISO?: string | null;\n limit?: number | null;\n};\n\nexport type GetMarketTradingHistoryParams = {\n marketId: number;\n limit?: number;\n fromTimestampMillisecondsUTC?: number;\n};\nexport type GetTradingHistoryResult = TradingHistoryEntity[];\n\nexport interface MarketCandlesResponse {\n candles: Candle[];\n}\n\nexport type GetFundingRateChartDataParams = {\n marketId: MarketEntity['id'];\n filters: {\n timeframeMs: number;\n granularity: FundingRateHistoryGranularity;\n };\n};\n\nexport type GetPoolPriceResult = {\n price: number;\n};\n"]}
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"/","sources":["clients/modules/markets/types.ts"],"names":[],"mappings":"","sourcesContent":["import {\n CandlesResolution,\n MarketEntity,\n TradingHistoryEntity,\n Candle,\n SpotMarketEntity,\n} from '@reyaxyz/common';\nimport { FundingRateHistoryGranularity } from '@reyaxyz/common';\n\nexport type GetMarketsResult = MarketEntity[];\nexport type GetSpotMarketsResult = SpotMarketEntity[];\n\nexport type GetMarketResult = MarketEntity;\n\nexport type GetMarketParams = {\n id: MarketEntity['id'];\n};\n\nexport type GetPoolPriceParams = {\n id: MarketEntity['id'];\n};\n\nexport type GetCandlesParams = {\n marketId: MarketEntity['id'];\n resolution: CandlesResolution;\n fromISO?: string | null;\n toISO?: string | null;\n limit?: number | null;\n};\n\nexport type GetSpotCandlesParams = {\n marketId: SpotMarketEntity['id'];\n resolution: CandlesResolution;\n fromISO?: string | null;\n toISO?: string | null;\n limit?: number | null;\n};\n\nexport type GetMarketTradingHistoryParams = {\n marketId: number;\n limit?: number;\n fromTimestampMillisecondsUTC?: number;\n};\nexport type GetTradingHistoryResult = TradingHistoryEntity[];\n\nexport interface MarketCandlesResponse {\n candles: Candle[];\n}\n\nexport type GetFundingRateChartDataParams = {\n marketId: MarketEntity['id'];\n filters: {\n timeframeMs: number;\n granularity: FundingRateHistoryGranularity;\n };\n};\n\nexport type GetPoolPriceResult = {\n price: number;\n};\n"]}
|
|
@@ -29,6 +29,7 @@ var SocketChannels;
|
|
|
29
29
|
SocketChannels["PRICES"] = "prices";
|
|
30
30
|
SocketChannels["FUNDING_RATES"] = "funding-rates";
|
|
31
31
|
SocketChannels["MARKETS_UPDATES"] = "markets-updates";
|
|
32
|
+
SocketChannels["SPOT_CANDLES"] = "spot-candles";
|
|
32
33
|
})(SocketChannels || (exports.SocketChannels = SocketChannels = {}));
|
|
33
34
|
var IncomingMessageTypes;
|
|
34
35
|
(function (IncomingMessageTypes) {
|
|
@@ -190,6 +191,14 @@ var SocketClient = /** @class */ (function () {
|
|
|
190
191
|
};
|
|
191
192
|
this.subscribe(channel, params);
|
|
192
193
|
};
|
|
194
|
+
SocketClient.prototype.subscribeToSpotCandles = function (marketTicker, resolution) {
|
|
195
|
+
var channel = SocketChannels.SPOT_CANDLES;
|
|
196
|
+
var params = {
|
|
197
|
+
id: "".concat(marketTicker, "/").concat(resolution),
|
|
198
|
+
batched: true,
|
|
199
|
+
};
|
|
200
|
+
this.subscribe(channel, params);
|
|
201
|
+
};
|
|
193
202
|
/**
|
|
194
203
|
* @description Unsubscribe from candles channel
|
|
195
204
|
* for a specific market and resolution.
|
|
@@ -201,6 +210,13 @@ var SocketClient = /** @class */ (function () {
|
|
|
201
210
|
};
|
|
202
211
|
this.unsubscribe(channel, params);
|
|
203
212
|
};
|
|
213
|
+
SocketClient.prototype.unsubscribeFromSpotCandles = function (market, resolution) {
|
|
214
|
+
var channel = SocketChannels.SPOT_CANDLES;
|
|
215
|
+
var params = {
|
|
216
|
+
id: "".concat(market, "/").concat(resolution),
|
|
217
|
+
};
|
|
218
|
+
this.unsubscribe(channel, params);
|
|
219
|
+
};
|
|
204
220
|
/**
|
|
205
221
|
* @description Subscribe to prices channel
|
|
206
222
|
* for a specific assets pair.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"socket-client.js","sourceRoot":"/","sources":["clients/socket-client.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;AAAA,gEAAwD;AAExD,0CAOyB;AAEzB,IAAK,oBAIJ;AAJD,WAAK,oBAAoB;IACvB,qCAAa,CAAA;IACb,+CAAuB,CAAA;IACvB,mDAA2B,CAAA;AAC7B,CAAC,EAJI,oBAAoB,KAApB,oBAAoB,QAIxB;AAED,IAAY,cAKX;AALD,WAAY,cAAc;IACxB,qCAAmB,CAAA;IACnB,mCAAiB,CAAA;IACjB,iDAA+B,CAAA;IAC/B,qDAAmC,CAAA;AACrC,CAAC,EALW,cAAc,8BAAd,cAAc,QAKzB;AAED,IAAY,oBAOX;AAPD,WAAY,oBAAoB;IAC9B,+CAAuB,CAAA;IACvB,iDAAyB,CAAA;IACzB,uCAAe,CAAA;IACf,qDAA6B,CAAA;IAC7B,iEAAyC,CAAA;IACzC,qCAAa,CAAA;AACf,CAAC,EAPW,oBAAoB,oCAApB,oBAAoB,QAO/B;AACD,IAAY,mBAQX;AARD,WAAY,mBAAmB;IAC7B,sCAAe,CAAA;IACf,8CAAuB,CAAA;IACvB,gDAAyB,CAAA;IACzB,oDAA6B,CAAA;IAC7B,oDAA6B,CAAA;IAC7B,gEAAyC,CAAA;IACzC,oCAAa,CAAA;AACf,CAAC,EARW,mBAAmB,mCAAnB,mBAAmB,QAQ9B;AAkED;IASE,sBAAY,MAA0B;QAH9B,iBAAY,GAAW,KAAM,CAAC;QAC9B,oBAAe,GAAW,IAAI,CAAC,GAAG,EAAE,CAAC;QAG3C,IAAI,CAAC,cAAc,GAAG,MAAM,CAAC,MAAM,CAAC;QACpC,IAAI,CAAC,eAAe,GAAG,MAAM,CAAC,OAAO,CAAC;QACtC,IAAI,CAAC,iBAAiB,GAAG,MAAM,CAAC,SAAS,CAAC;QAC1C,IAAI,CAAC,GAAG,GAAG,CACT,2BAAkB,CAAC,MAAM,CAAC,WAAW,CAAC,IAAI,2BAAkB,CAAC,MAAM,CAAC,CACrE,CAAC,iBAAiB,CAAC;IACtB,CAAC;IAED,8BAAO,GAAP;QACE,IAAI,CAAC,EAAE,GAAG,IAAI,uBAAS,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QAClC,IAAI,CAAC,EAAE,CAAC,gBAAgB,CAAC,MAAM,EAAE,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;QAC7D,IAAI,CAAC,EAAE,CAAC,gBAAgB,CAAC,OAAO,EAAE,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;QAC/D,IAAI,CAAC,EAAE,CAAC,gBAAgB,CAAC,SAAS,EAAE,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;IACrE,CAAC;IAED;;;OAGG;IACH,4BAAK,GAAL;;QACE,MAAA,IAAI,CAAC,EAAE,0CAAE,KAAK,EAAE,CAAC;QACjB,IAAI,CAAC,EAAE,GAAG,SAAS,CAAC;IACtB,CAAC;IAED;;;OAGG;IACH,2BAAI,GAAJ,UAAK,IAAY;;QACf,MAAA,IAAI,CAAC,EAAE,0CAAE,IAAI,CAAC,IAAI,CAAC,CAAC;IACtB,CAAC;IAEO,iCAAU,GAAlB;QACE,IAAI,IAAI,CAAC,cAAc,EAAE,CAAC;YACxB,IAAI,CAAC,cAAc,EAAE,CAAC;QACxB,CAAC;QACD,IAAI,CAAC,mBAAmB,EAAE,CAAC;IAC7B,CAAC;IAEO,kCAAW,GAAnB;QACE,IAAI,IAAI,CAAC,eAAe,EAAE,CAAC;YACzB,IAAI,CAAC,eAAe,EAAE,CAAC;QACzB,CAAC;QACD,aAAa,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;IACrC,CAAC;IAEO,oCAAa,GAArB,UAAsB,KAAmB;QACvC,IAAI,KAAK,CAAC,IAAI,KAAK,MAAM,EAAE,CAAC;YAC1B,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QACpB,CAAC;aAAM,CAAC;YACN,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;YAClC,IAAI,CAAC;gBACH,IAAM,aAAa,GAAkB,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,IAAc,CAAC,CAAC;gBACtE,IAAI,OAAO,IAAI,CAAC,iBAAiB,KAAK,UAAU,EAAE,CAAC;oBACjD,IAAI,CAAC,iBAAiB,CAAC,aAAa,CAAC,CAAC;gBACxC,CAAC;YACH,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,OAAO,CAAC,KAAK,CAAC,uBAAuB,EAAE,KAAK,CAAC,CAAC;YAChD,CAAC;QACH,CAAC;QACD,IAAI,CAAC,mBAAmB,EAAE,CAAC;IAC7B,CAAC;IAEO,0CAAmB,GAA3B;QAAA,iBAWC;QAVC,aAAa,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;QACnC,IAAI,CAAC,cAAc,GAAG,WAAW,CAAC;YAChC,IAAM,WAAW,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,KAAI,CAAC,eAAe,CAAC;YACtD,IAAI,WAAW,GAAG,KAAI,CAAC,YAAY,EAAE,CAAC;gBACpC,IAAM,OAAO,GAAG;oBACd,IAAI,EAAE,oBAAoB,CAAC,IAAI;iBAChC,CAAC;gBACF,KAAI,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC;YACrC,CAAC;QACH,CAAC,EAAE,IAAI,CAAC,YAAY,CAAC,CAAC;IACxB,CAAC;IAMD,sBAAI,gCAAM;QAJV;;;WAGG;aACH,UAAW,QAAoB;YAC7B,IAAI,CAAC,cAAc,GAAG,QAAQ,CAAC;QACjC,CAAC;;;OAAA;IAMD,sBAAI,iCAAO;QAJX;;;WAGG;aACH,UAAY,QAAoB;YAC9B,IAAI,CAAC,eAAe,GAAG,QAAQ,CAAC;QAClC,CAAC;;;OAAA;IAMD,sBAAI,mCAAS;QAJb;;;WAGG;aACH,UAAc,QAAwC;YACpD,IAAI,CAAC,iBAAiB,GAAG,QAAQ,CAAC;QACpC,CAAC;;;OAAA;IAED,oCAAa,GAAb;;QACE,OAAO,MAAA,IAAI,CAAC,EAAE,0CAAE,UAAU,CAAC;IAC7B,CAAC;IAED;;;OAGG;IACH,gCAAS,GAAT,UAAU,OAAe,EAAE,MAAe;QACxC,IAAM,OAAO,cACX,IAAI,EAAE,oBAAoB,CAAC,SAAS,EACpC,OAAO,SAAA,IACJ,MAAM,CACV,CAAC;QACF,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC;IACrC,CAAC;IAED;;;OAGG;IACH,kCAAW,GAAX,UAAY,OAAe,EAAE,MAAe;QAC1C,IAAM,OAAO,cACX,IAAI,EAAE,oBAAoB,CAAC,WAAW,EACtC,OAAO,SAAA,IACJ,MAAM,CACV,CAAC;QACF,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC;IACrC,CAAC;IACD;;;;OAIG;IACH,yCAAkB,GAAlB,UACE,YAAoB,EACpB,UAA6B;QAE7B,IAAM,OAAO,GAAG,cAAc,CAAC,OAAO,CAAC;QACvC,IAAM,MAAM,GAAG;YACb,EAAE,EAAE,UAAG,YAAY,cAAI,UAAU,CAAE;YACnC,OAAO,EAAE,IAAI;SACd,CAAC;QACF,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;IAClC,CAAC;IAED;;;OAGG;IACH,6CAAsB,GAAtB,UAAuB,MAAc,EAAE,UAA6B;QAClE,IAAM,OAAO,GAAG,cAAc,CAAC,OAAO,CAAC;QACvC,IAAM,MAAM,GAAG;YACb,EAAE,EAAE,UAAG,MAAM,cAAI,UAAU,CAAE;SAC9B,CAAC;QACF,IAAI,CAAC,WAAW,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;IACpC,CAAC;IAED;;;;OAIG;IACH,wCAAiB,GAAjB,UAAkB,UAAkB;QAClC,IAAM,OAAO,GAAG,cAAc,CAAC,MAAM,CAAC;QACtC,IAAM,MAAM,GAAG;YACb,EAAE,EAAE,UAAU;SACf,CAAC;QACF,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;IAClC,CAAC;IAED;;;OAGG;IACH,4CAAqB,GAArB,UAAsB,UAAkB;QACtC,IAAM,OAAO,GAAG,cAAc,CAAC,MAAM,CAAC;QACtC,IAAM,MAAM,GAAG;YACb,EAAE,EAAE,UAAU;SACf,CAAC;QACF,IAAI,CAAC,WAAW,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;IACpC,CAAC;IAED;;;;OAIG;IACH,6CAAsB,GAAtB,UAAuB,UAAkB;QACvC,IAAM,OAAO,GAAG,cAAc,CAAC,aAAa,CAAC;QAC7C,IAAM,MAAM,GAAG;YACb,EAAE,EAAE,UAAU;SACf,CAAC;QACF,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;IAClC,CAAC;IAED;;;OAGG;IACH,iDAA0B,GAA1B,UAA2B,UAAkB;QAC3C,IAAM,OAAO,GAAG,cAAc,CAAC,aAAa,CAAC;QAC7C,IAAM,MAAM,GAAG;YACb,EAAE,EAAE,UAAU;SACf,CAAC;QACF,IAAI,CAAC,WAAW,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;IACpC,CAAC;IAED;;;OAGG;IACH,gDAAyB,GAAzB;QACE,IAAM,OAAO,GAAG,cAAc,CAAC,eAAe,CAAC;QAC/C,IAAM,MAAM,GAAG;YACb,EAAE,EAAE,GAAG;SACR,CAAC;QACF,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;IAClC,CAAC;IAED;;OAEG;IACH,oDAA6B,GAA7B;QACE,IAAM,OAAO,GAAG,cAAc,CAAC,eAAe,CAAC;QAC/C,IAAM,MAAM,GAAG;YACb,EAAE,EAAE,GAAG;SACR,CAAC;QACF,IAAI,CAAC,WAAW,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;IACpC,CAAC;IACH,mBAAC;AAAD,CAAC,AAhPD,IAgPC;AAhPY,oCAAY","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,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"}
|
|
@@ -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.143.
|
|
3
|
+
"version": "0.143.2",
|
|
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.229.
|
|
36
|
+
"@reyaxyz/common": "0.229.1",
|
|
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": "638433b4e99693f2e9ad1ed50ca653526ca1a2f7",
|
|
46
46
|
"devDependencies": {
|
|
47
47
|
"@types/ws": "8.5.10"
|
|
48
48
|
}
|
|
@@ -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;
|
|
@@ -20,6 +20,7 @@ export enum SocketChannels {
|
|
|
20
20
|
PRICES = 'prices',
|
|
21
21
|
FUNDING_RATES = 'funding-rates',
|
|
22
22
|
MARKETS_UPDATES = 'markets-updates',
|
|
23
|
+
SPOT_CANDLES = 'spot-candles',
|
|
23
24
|
}
|
|
24
25
|
|
|
25
26
|
export enum IncomingMessageTypes {
|
|
@@ -260,6 +261,18 @@ export class SocketClient {
|
|
|
260
261
|
this.subscribe(channel, params);
|
|
261
262
|
}
|
|
262
263
|
|
|
264
|
+
subscribeToSpotCandles(
|
|
265
|
+
marketTicker: string,
|
|
266
|
+
resolution: CandlesResolution,
|
|
267
|
+
): void {
|
|
268
|
+
const channel = SocketChannels.SPOT_CANDLES;
|
|
269
|
+
const params = {
|
|
270
|
+
id: `${marketTicker}/${resolution}`,
|
|
271
|
+
batched: true,
|
|
272
|
+
};
|
|
273
|
+
this.subscribe(channel, params);
|
|
274
|
+
}
|
|
275
|
+
|
|
263
276
|
/**
|
|
264
277
|
* @description Unsubscribe from candles channel
|
|
265
278
|
* for a specific market and resolution.
|
|
@@ -272,6 +285,17 @@ export class SocketClient {
|
|
|
272
285
|
this.unsubscribe(channel, params);
|
|
273
286
|
}
|
|
274
287
|
|
|
288
|
+
unsubscribeFromSpotCandles(
|
|
289
|
+
market: string,
|
|
290
|
+
resolution: CandlesResolution,
|
|
291
|
+
): void {
|
|
292
|
+
const channel = SocketChannels.SPOT_CANDLES;
|
|
293
|
+
const params = {
|
|
294
|
+
id: `${market}/${resolution}`,
|
|
295
|
+
};
|
|
296
|
+
this.unsubscribe(channel, params);
|
|
297
|
+
}
|
|
298
|
+
|
|
275
299
|
/**
|
|
276
300
|
* @description Subscribe to prices channel
|
|
277
301
|
* for a specific assets pair.
|