@yuants/vendor-binance 0.12.1 → 0.12.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.
@@ -4,14 +4,6 @@ import { decodePath, formatTime } from '@yuants/utils';
4
4
  import { getMarginInterestRateHistory } from '../api/private-api';
5
5
  import { getFutureFundingRate } from '../api/public-api';
6
6
  const terminal = Terminal.fromNodeEnv();
7
- const INGEST_SERVICE_OPTIONS = {
8
- concurrent: 1,
9
- max_pending_requests: 20,
10
- ingress_token_capacity: 2,
11
- ingress_token_refill_interval: 1000,
12
- egress_token_capacity: 1,
13
- egress_token_refill_interval: 1000,
14
- };
15
7
  const WINDOW_MS = 365 * 24 * 3600000;
16
8
  const fetchUsdtFutureFundingRateForward = async (req) => {
17
9
  const [, instType, symbol] = decodePath(req.product_id);
@@ -68,9 +60,9 @@ const fetchMarginBorrowRateForward = async (req) => {
68
60
  provideInterestRateService(terminal, {
69
61
  product_id_prefix: 'BINANCE/USDT-FUTURE/',
70
62
  direction: 'forward',
71
- }, fetchUsdtFutureFundingRateForward, INGEST_SERVICE_OPTIONS);
63
+ }, fetchUsdtFutureFundingRateForward);
72
64
  provideInterestRateService(terminal, {
73
65
  product_id_prefix: 'BINANCE/MARGIN/',
74
66
  direction: 'forward',
75
- }, fetchMarginBorrowRateForward, INGEST_SERVICE_OPTIONS);
67
+ }, fetchMarginBorrowRateForward);
76
68
  //# sourceMappingURL=interest-rate-service.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"interest-rate-service.js","sourceRoot":"","sources":["../../src/services/interest-rate-service.ts"],"names":[],"mappings":"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","sourcesContent":["import { IInterestRate } from '@yuants/data-interest-rate';\nimport { provideInterestRateService } from '@yuants/exchange';\nimport { IServiceOptions, Terminal } from '@yuants/protocol';\nimport { decodePath, formatTime } from '@yuants/utils';\nimport { getMarginInterestRateHistory } from '../api/private-api';\nimport { getFutureFundingRate } from '../api/public-api';\n\nconst terminal = Terminal.fromNodeEnv();\n\nconst INGEST_SERVICE_OPTIONS: IServiceOptions = {\n concurrent: 1,\n max_pending_requests: 20,\n ingress_token_capacity: 2,\n ingress_token_refill_interval: 1000,\n egress_token_capacity: 1,\n egress_token_refill_interval: 1000,\n};\n\nconst WINDOW_MS = 365 * 24 * 3600_000;\n\nconst fetchUsdtFutureFundingRateForward = async (req: {\n product_id: string;\n time: number;\n series_id: string;\n}): Promise<IInterestRate[]> => {\n const [, instType, symbol] = decodePath(req.product_id);\n if (instType !== 'USDT-FUTURE' || !symbol) throw new Error(`Unsupported product_id: ${req.product_id}`);\n\n const startTime = req.time;\n const res = await getFutureFundingRate({\n symbol,\n startTime,\n endTime: startTime + WINDOW_MS,\n limit: 1000,\n });\n\n return (res ?? [])\n .map((v): IInterestRate => {\n const ms = Number(v.fundingTime);\n const rate = Number(v.fundingRate);\n return {\n series_id: req.series_id,\n product_id: req.product_id,\n datasource_id: 'BINANCE',\n created_at: formatTime(ms),\n long_rate: `${-rate}`,\n short_rate: `${rate}`,\n settlement_price: '',\n };\n })\n .filter((x) => Date.parse(x.created_at) >= startTime);\n};\n\nconst fetchMarginBorrowRateForward = async (req: {\n product_id: string;\n time: number;\n series_id: string;\n}): Promise<IInterestRate[]> => {\n const [, instType, asset] = decodePath(req.product_id);\n if (instType !== 'MARGIN' || !asset) throw new Error(`Unsupported product_id: ${req.product_id}`);\n\n const startTime = req.time;\n const res = await getMarginInterestRateHistory({\n asset,\n startTime,\n endTime: startTime + WINDOW_MS,\n limit: 100,\n });\n\n return (res ?? [])\n .map((v): IInterestRate => {\n return {\n series_id: req.series_id,\n product_id: req.product_id,\n datasource_id: 'BINANCE',\n created_at: formatTime(v.timestamp),\n long_rate: v.dailyInterestRate,\n short_rate: '0',\n settlement_price: '',\n };\n })\n .filter((x) => Date.parse(x.created_at) >= startTime);\n};\n\nprovideInterestRateService(\n terminal,\n {\n product_id_prefix: 'BINANCE/USDT-FUTURE/',\n direction: 'forward',\n },\n fetchUsdtFutureFundingRateForward,\n INGEST_SERVICE_OPTIONS,\n);\n\nprovideInterestRateService(\n terminal,\n {\n product_id_prefix: 'BINANCE/MARGIN/',\n direction: 'forward',\n },\n fetchMarginBorrowRateForward,\n INGEST_SERVICE_OPTIONS,\n);\n"]}
1
+ {"version":3,"file":"interest-rate-service.js","sourceRoot":"","sources":["../../src/services/interest-rate-service.ts"],"names":[],"mappings":"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","sourcesContent":["import { IInterestRate } from '@yuants/data-interest-rate';\nimport { provideInterestRateService } from '@yuants/exchange';\nimport { Terminal } from '@yuants/protocol';\nimport { decodePath, formatTime } from '@yuants/utils';\nimport { getMarginInterestRateHistory } from '../api/private-api';\nimport { getFutureFundingRate } from '../api/public-api';\n\nconst terminal = Terminal.fromNodeEnv();\n\nconst WINDOW_MS = 365 * 24 * 3600_000;\n\nconst fetchUsdtFutureFundingRateForward = async (req: {\n product_id: string;\n time: number;\n series_id: string;\n}): Promise<IInterestRate[]> => {\n const [, instType, symbol] = decodePath(req.product_id);\n if (instType !== 'USDT-FUTURE' || !symbol) throw new Error(`Unsupported product_id: ${req.product_id}`);\n\n const startTime = req.time;\n const res = await getFutureFundingRate({\n symbol,\n startTime,\n endTime: startTime + WINDOW_MS,\n limit: 1000,\n });\n\n return (res ?? [])\n .map((v): IInterestRate => {\n const ms = Number(v.fundingTime);\n const rate = Number(v.fundingRate);\n return {\n series_id: req.series_id,\n product_id: req.product_id,\n datasource_id: 'BINANCE',\n created_at: formatTime(ms),\n long_rate: `${-rate}`,\n short_rate: `${rate}`,\n settlement_price: '',\n };\n })\n .filter((x) => Date.parse(x.created_at) >= startTime);\n};\n\nconst fetchMarginBorrowRateForward = async (req: {\n product_id: string;\n time: number;\n series_id: string;\n}): Promise<IInterestRate[]> => {\n const [, instType, asset] = decodePath(req.product_id);\n if (instType !== 'MARGIN' || !asset) throw new Error(`Unsupported product_id: ${req.product_id}`);\n\n const startTime = req.time;\n const res = await getMarginInterestRateHistory({\n asset,\n startTime,\n endTime: startTime + WINDOW_MS,\n limit: 100,\n });\n\n return (res ?? [])\n .map((v): IInterestRate => {\n return {\n series_id: req.series_id,\n product_id: req.product_id,\n datasource_id: 'BINANCE',\n created_at: formatTime(v.timestamp),\n long_rate: v.dailyInterestRate,\n short_rate: '0',\n settlement_price: '',\n };\n })\n .filter((x) => Date.parse(x.created_at) >= startTime);\n};\n\nprovideInterestRateService(\n terminal,\n {\n product_id_prefix: 'BINANCE/USDT-FUTURE/',\n direction: 'forward',\n },\n fetchUsdtFutureFundingRateForward,\n);\n\nprovideInterestRateService(\n terminal,\n {\n product_id_prefix: 'BINANCE/MARGIN/',\n direction: 'forward',\n },\n fetchMarginBorrowRateForward,\n);\n"]}
@@ -3,14 +3,6 @@ import { Terminal } from '@yuants/protocol';
3
3
  import { convertDurationToOffset, decodePath, formatTime } from '@yuants/utils';
4
4
  import { requestPublic } from '../api/client';
5
5
  const terminal = Terminal.fromNodeEnv();
6
- const INGEST_SERVICE_OPTIONS = {
7
- concurrent: 1,
8
- max_pending_requests: 20,
9
- ingress_token_capacity: 2,
10
- ingress_token_refill_interval: 1000,
11
- egress_token_capacity: 1,
12
- egress_token_refill_interval: 1000,
13
- };
14
6
  const DURATION_TO_BINANCE_INTERVAL = {
15
7
  PT1M: '1m',
16
8
  PT3M: '3m',
@@ -67,15 +59,15 @@ provideOHLCService(terminal, {
67
59
  product_id_prefix: 'BINANCE/USDT-FUTURE/',
68
60
  duration_list: Object.keys(DURATION_TO_BINANCE_INTERVAL),
69
61
  direction: 'backward',
70
- }, fetchOHLCPageBackward, INGEST_SERVICE_OPTIONS);
62
+ }, fetchOHLCPageBackward);
71
63
  provideOHLCService(terminal, {
72
64
  product_id_prefix: 'BINANCE/SPOT/',
73
65
  duration_list: Object.keys(DURATION_TO_BINANCE_INTERVAL),
74
66
  direction: 'backward',
75
- }, fetchOHLCPageBackward, INGEST_SERVICE_OPTIONS);
67
+ }, fetchOHLCPageBackward);
76
68
  provideOHLCService(terminal, {
77
69
  product_id_prefix: 'BINANCE/MARGIN/',
78
70
  duration_list: Object.keys(DURATION_TO_BINANCE_INTERVAL),
79
71
  direction: 'backward',
80
- }, fetchOHLCPageBackward, INGEST_SERVICE_OPTIONS);
72
+ }, fetchOHLCPageBackward);
81
73
  //# sourceMappingURL=ohlc-service.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"ohlc-service.js","sourceRoot":"","sources":["../../src/services/ohlc-service.ts"],"names":[],"mappings":"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","sourcesContent":["import { IOHLC } from '@yuants/data-ohlc';\nimport { provideOHLCService } from '@yuants/exchange';\nimport { IServiceOptions, Terminal } from '@yuants/protocol';\nimport { convertDurationToOffset, decodePath, formatTime } from '@yuants/utils';\nimport { requestPublic } from '../api/client';\n\nconst terminal = Terminal.fromNodeEnv();\n\nconst INGEST_SERVICE_OPTIONS: IServiceOptions = {\n concurrent: 1,\n max_pending_requests: 20,\n ingress_token_capacity: 2,\n ingress_token_refill_interval: 1000,\n egress_token_capacity: 1,\n egress_token_refill_interval: 1000,\n};\n\nconst DURATION_TO_BINANCE_INTERVAL: Record<string, string> = {\n PT1M: '1m',\n PT3M: '3m',\n PT5M: '5m',\n PT15M: '15m',\n PT30M: '30m',\n PT1H: '1h',\n PT2H: '2h',\n PT4H: '4h',\n PT6H: '6h',\n PT8H: '8h',\n PT12H: '12h',\n P1D: '1d',\n P3D: '3d',\n P1W: '1w',\n P1M: '1M',\n};\n\ntype IBinanceKline = [\n number, // Open time\n string, // Open\n string, // High\n string, // Low\n string, // Close\n string, // Volume\n number, // Close time\n string, // Quote asset volume\n number, // Number of trades\n string, // Taker buy base asset volume\n string, // Taker buy quote asset volume\n string, // Ignore\n];\n\nconst fetchOHLCPageBackward = async (req: {\n product_id: string;\n duration: string;\n time: number;\n series_id: string;\n}): Promise<IOHLC[]> => {\n const [, instType, symbol] = decodePath(req.product_id);\n if (!instType || !symbol) throw new Error(`Invalid product_id: ${req.product_id}`);\n\n const interval = DURATION_TO_BINANCE_INTERVAL[req.duration];\n if (!interval) throw new Error(`Unsupported duration: ${req.duration}`);\n\n const offset = convertDurationToOffset(req.duration);\n const endedAtMs = req.time;\n\n const baseUrl =\n instType === 'USDT-FUTURE'\n ? 'https://fapi.binance.com/fapi/v1/klines'\n : 'https://api.binance.com/api/v3/klines';\n\n const res = await requestPublic<IBinanceKline[]>('GET', baseUrl, {\n symbol,\n interval,\n endTime: endedAtMs,\n limit: 1000,\n });\n\n return (res ?? [])\n .map(\n (k): IOHLC => ({\n series_id: req.series_id,\n datasource_id: 'BINANCE',\n product_id: req.product_id,\n duration: req.duration,\n created_at: formatTime(k[0]),\n closed_at: formatTime(k[0] + offset),\n open: `${k[1]}`,\n high: `${k[2]}`,\n low: `${k[3]}`,\n close: `${k[4]}`,\n volume: `${k[5]}`,\n open_interest: '0',\n }),\n )\n .filter((x) => Date.parse(x.created_at) < endedAtMs);\n};\n\nprovideOHLCService(\n terminal,\n {\n product_id_prefix: 'BINANCE/USDT-FUTURE/',\n duration_list: Object.keys(DURATION_TO_BINANCE_INTERVAL),\n direction: 'backward',\n },\n fetchOHLCPageBackward,\n INGEST_SERVICE_OPTIONS,\n);\n\nprovideOHLCService(\n terminal,\n {\n product_id_prefix: 'BINANCE/SPOT/',\n duration_list: Object.keys(DURATION_TO_BINANCE_INTERVAL),\n direction: 'backward',\n },\n fetchOHLCPageBackward,\n INGEST_SERVICE_OPTIONS,\n);\n\nprovideOHLCService(\n terminal,\n {\n product_id_prefix: 'BINANCE/MARGIN/',\n duration_list: Object.keys(DURATION_TO_BINANCE_INTERVAL),\n direction: 'backward',\n },\n fetchOHLCPageBackward,\n INGEST_SERVICE_OPTIONS,\n);\n"]}
1
+ {"version":3,"file":"ohlc-service.js","sourceRoot":"","sources":["../../src/services/ohlc-service.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AACtD,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAC5C,OAAO,EAAE,uBAAuB,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAChF,OAAO,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AAE9C,MAAM,QAAQ,GAAG,QAAQ,CAAC,WAAW,EAAE,CAAC;AAExC,MAAM,4BAA4B,GAA2B;IAC3D,IAAI,EAAE,IAAI;IACV,IAAI,EAAE,IAAI;IACV,IAAI,EAAE,IAAI;IACV,KAAK,EAAE,KAAK;IACZ,KAAK,EAAE,KAAK;IACZ,IAAI,EAAE,IAAI;IACV,IAAI,EAAE,IAAI;IACV,IAAI,EAAE,IAAI;IACV,IAAI,EAAE,IAAI;IACV,IAAI,EAAE,IAAI;IACV,KAAK,EAAE,KAAK;IACZ,GAAG,EAAE,IAAI;IACT,GAAG,EAAE,IAAI;IACT,GAAG,EAAE,IAAI;IACT,GAAG,EAAE,IAAI;CACV,CAAC;AAiBF,MAAM,qBAAqB,GAAG,KAAK,EAAE,GAKpC,EAAoB,EAAE;IACrB,MAAM,CAAC,EAAE,QAAQ,EAAE,MAAM,CAAC,GAAG,UAAU,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;IACxD,IAAI,CAAC,QAAQ,IAAI,CAAC,MAAM;QAAE,MAAM,IAAI,KAAK,CAAC,uBAAuB,GAAG,CAAC,UAAU,EAAE,CAAC,CAAC;IAEnF,MAAM,QAAQ,GAAG,4BAA4B,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;IAC5D,IAAI,CAAC,QAAQ;QAAE,MAAM,IAAI,KAAK,CAAC,yBAAyB,GAAG,CAAC,QAAQ,EAAE,CAAC,CAAC;IAExE,MAAM,MAAM,GAAG,uBAAuB,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;IACrD,MAAM,SAAS,GAAG,GAAG,CAAC,IAAI,CAAC;IAE3B,MAAM,OAAO,GACX,QAAQ,KAAK,aAAa;QACxB,CAAC,CAAC,yCAAyC;QAC3C,CAAC,CAAC,uCAAuC,CAAC;IAE9C,MAAM,GAAG,GAAG,MAAM,aAAa,CAAkB,KAAK,EAAE,OAAO,EAAE;QAC/D,MAAM;QACN,QAAQ;QACR,OAAO,EAAE,SAAS;QAClB,KAAK,EAAE,IAAI;KACZ,CAAC,CAAC;IAEH,OAAO,CAAC,GAAG,aAAH,GAAG,cAAH,GAAG,GAAI,EAAE,CAAC;SACf,GAAG,CACF,CAAC,CAAC,EAAS,EAAE,CAAC,CAAC;QACb,SAAS,EAAE,GAAG,CAAC,SAAS;QACxB,aAAa,EAAE,SAAS;QACxB,UAAU,EAAE,GAAG,CAAC,UAAU;QAC1B,QAAQ,EAAE,GAAG,CAAC,QAAQ;QACtB,UAAU,EAAE,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QAC5B,SAAS,EAAE,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC;QACpC,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE;QACf,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE;QACf,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE;QACd,KAAK,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE;QAChB,MAAM,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE;QACjB,aAAa,EAAE,GAAG;KACnB,CAAC,CACH;SACA,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,UAAU,CAAC,GAAG,SAAS,CAAC,CAAC;AACzD,CAAC,CAAC;AAEF,kBAAkB,CAChB,QAAQ,EACR;IACE,iBAAiB,EAAE,sBAAsB;IACzC,aAAa,EAAE,MAAM,CAAC,IAAI,CAAC,4BAA4B,CAAC;IACxD,SAAS,EAAE,UAAU;CACtB,EACD,qBAAqB,CACtB,CAAC;AAEF,kBAAkB,CAChB,QAAQ,EACR;IACE,iBAAiB,EAAE,eAAe;IAClC,aAAa,EAAE,MAAM,CAAC,IAAI,CAAC,4BAA4B,CAAC;IACxD,SAAS,EAAE,UAAU;CACtB,EACD,qBAAqB,CACtB,CAAC;AAEF,kBAAkB,CAChB,QAAQ,EACR;IACE,iBAAiB,EAAE,iBAAiB;IACpC,aAAa,EAAE,MAAM,CAAC,IAAI,CAAC,4BAA4B,CAAC;IACxD,SAAS,EAAE,UAAU;CACtB,EACD,qBAAqB,CACtB,CAAC","sourcesContent":["import { IOHLC } from '@yuants/data-ohlc';\nimport { provideOHLCService } from '@yuants/exchange';\nimport { Terminal } from '@yuants/protocol';\nimport { convertDurationToOffset, decodePath, formatTime } from '@yuants/utils';\nimport { requestPublic } from '../api/client';\n\nconst terminal = Terminal.fromNodeEnv();\n\nconst DURATION_TO_BINANCE_INTERVAL: Record<string, string> = {\n PT1M: '1m',\n PT3M: '3m',\n PT5M: '5m',\n PT15M: '15m',\n PT30M: '30m',\n PT1H: '1h',\n PT2H: '2h',\n PT4H: '4h',\n PT6H: '6h',\n PT8H: '8h',\n PT12H: '12h',\n P1D: '1d',\n P3D: '3d',\n P1W: '1w',\n P1M: '1M',\n};\n\ntype IBinanceKline = [\n number, // Open time\n string, // Open\n string, // High\n string, // Low\n string, // Close\n string, // Volume\n number, // Close time\n string, // Quote asset volume\n number, // Number of trades\n string, // Taker buy base asset volume\n string, // Taker buy quote asset volume\n string, // Ignore\n];\n\nconst fetchOHLCPageBackward = async (req: {\n product_id: string;\n duration: string;\n time: number;\n series_id: string;\n}): Promise<IOHLC[]> => {\n const [, instType, symbol] = decodePath(req.product_id);\n if (!instType || !symbol) throw new Error(`Invalid product_id: ${req.product_id}`);\n\n const interval = DURATION_TO_BINANCE_INTERVAL[req.duration];\n if (!interval) throw new Error(`Unsupported duration: ${req.duration}`);\n\n const offset = convertDurationToOffset(req.duration);\n const endedAtMs = req.time;\n\n const baseUrl =\n instType === 'USDT-FUTURE'\n ? 'https://fapi.binance.com/fapi/v1/klines'\n : 'https://api.binance.com/api/v3/klines';\n\n const res = await requestPublic<IBinanceKline[]>('GET', baseUrl, {\n symbol,\n interval,\n endTime: endedAtMs,\n limit: 1000,\n });\n\n return (res ?? [])\n .map(\n (k): IOHLC => ({\n series_id: req.series_id,\n datasource_id: 'BINANCE',\n product_id: req.product_id,\n duration: req.duration,\n created_at: formatTime(k[0]),\n closed_at: formatTime(k[0] + offset),\n open: `${k[1]}`,\n high: `${k[2]}`,\n low: `${k[3]}`,\n close: `${k[4]}`,\n volume: `${k[5]}`,\n open_interest: '0',\n }),\n )\n .filter((x) => Date.parse(x.created_at) < endedAtMs);\n};\n\nprovideOHLCService(\n terminal,\n {\n product_id_prefix: 'BINANCE/USDT-FUTURE/',\n duration_list: Object.keys(DURATION_TO_BINANCE_INTERVAL),\n direction: 'backward',\n },\n fetchOHLCPageBackward,\n);\n\nprovideOHLCService(\n terminal,\n {\n product_id_prefix: 'BINANCE/SPOT/',\n duration_list: Object.keys(DURATION_TO_BINANCE_INTERVAL),\n direction: 'backward',\n },\n fetchOHLCPageBackward,\n);\n\nprovideOHLCService(\n terminal,\n {\n product_id_prefix: 'BINANCE/MARGIN/',\n duration_list: Object.keys(DURATION_TO_BINANCE_INTERVAL),\n direction: 'backward',\n },\n fetchOHLCPageBackward,\n);\n"]}
@@ -6,14 +6,6 @@ const utils_1 = require("@yuants/utils");
6
6
  const private_api_1 = require("../api/private-api");
7
7
  const public_api_1 = require("../api/public-api");
8
8
  const terminal = protocol_1.Terminal.fromNodeEnv();
9
- const INGEST_SERVICE_OPTIONS = {
10
- concurrent: 1,
11
- max_pending_requests: 20,
12
- ingress_token_capacity: 2,
13
- ingress_token_refill_interval: 1000,
14
- egress_token_capacity: 1,
15
- egress_token_refill_interval: 1000,
16
- };
17
9
  const WINDOW_MS = 365 * 24 * 3600000;
18
10
  const fetchUsdtFutureFundingRateForward = async (req) => {
19
11
  const [, instType, symbol] = (0, utils_1.decodePath)(req.product_id);
@@ -70,9 +62,9 @@ const fetchMarginBorrowRateForward = async (req) => {
70
62
  (0, exchange_1.provideInterestRateService)(terminal, {
71
63
  product_id_prefix: 'BINANCE/USDT-FUTURE/',
72
64
  direction: 'forward',
73
- }, fetchUsdtFutureFundingRateForward, INGEST_SERVICE_OPTIONS);
65
+ }, fetchUsdtFutureFundingRateForward);
74
66
  (0, exchange_1.provideInterestRateService)(terminal, {
75
67
  product_id_prefix: 'BINANCE/MARGIN/',
76
68
  direction: 'forward',
77
- }, fetchMarginBorrowRateForward, INGEST_SERVICE_OPTIONS);
69
+ }, fetchMarginBorrowRateForward);
78
70
  //# sourceMappingURL=interest-rate-service.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"interest-rate-service.js","sourceRoot":"","sources":["../../src/services/interest-rate-service.ts"],"names":[],"mappings":"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","sourcesContent":["import { IInterestRate } from '@yuants/data-interest-rate';\nimport { provideInterestRateService } from '@yuants/exchange';\nimport { IServiceOptions, Terminal } from '@yuants/protocol';\nimport { decodePath, formatTime } from '@yuants/utils';\nimport { getMarginInterestRateHistory } from '../api/private-api';\nimport { getFutureFundingRate } from '../api/public-api';\n\nconst terminal = Terminal.fromNodeEnv();\n\nconst INGEST_SERVICE_OPTIONS: IServiceOptions = {\n concurrent: 1,\n max_pending_requests: 20,\n ingress_token_capacity: 2,\n ingress_token_refill_interval: 1000,\n egress_token_capacity: 1,\n egress_token_refill_interval: 1000,\n};\n\nconst WINDOW_MS = 365 * 24 * 3600_000;\n\nconst fetchUsdtFutureFundingRateForward = async (req: {\n product_id: string;\n time: number;\n series_id: string;\n}): Promise<IInterestRate[]> => {\n const [, instType, symbol] = decodePath(req.product_id);\n if (instType !== 'USDT-FUTURE' || !symbol) throw new Error(`Unsupported product_id: ${req.product_id}`);\n\n const startTime = req.time;\n const res = await getFutureFundingRate({\n symbol,\n startTime,\n endTime: startTime + WINDOW_MS,\n limit: 1000,\n });\n\n return (res ?? [])\n .map((v): IInterestRate => {\n const ms = Number(v.fundingTime);\n const rate = Number(v.fundingRate);\n return {\n series_id: req.series_id,\n product_id: req.product_id,\n datasource_id: 'BINANCE',\n created_at: formatTime(ms),\n long_rate: `${-rate}`,\n short_rate: `${rate}`,\n settlement_price: '',\n };\n })\n .filter((x) => Date.parse(x.created_at) >= startTime);\n};\n\nconst fetchMarginBorrowRateForward = async (req: {\n product_id: string;\n time: number;\n series_id: string;\n}): Promise<IInterestRate[]> => {\n const [, instType, asset] = decodePath(req.product_id);\n if (instType !== 'MARGIN' || !asset) throw new Error(`Unsupported product_id: ${req.product_id}`);\n\n const startTime = req.time;\n const res = await getMarginInterestRateHistory({\n asset,\n startTime,\n endTime: startTime + WINDOW_MS,\n limit: 100,\n });\n\n return (res ?? [])\n .map((v): IInterestRate => {\n return {\n series_id: req.series_id,\n product_id: req.product_id,\n datasource_id: 'BINANCE',\n created_at: formatTime(v.timestamp),\n long_rate: v.dailyInterestRate,\n short_rate: '0',\n settlement_price: '',\n };\n })\n .filter((x) => Date.parse(x.created_at) >= startTime);\n};\n\nprovideInterestRateService(\n terminal,\n {\n product_id_prefix: 'BINANCE/USDT-FUTURE/',\n direction: 'forward',\n },\n fetchUsdtFutureFundingRateForward,\n INGEST_SERVICE_OPTIONS,\n);\n\nprovideInterestRateService(\n terminal,\n {\n product_id_prefix: 'BINANCE/MARGIN/',\n direction: 'forward',\n },\n fetchMarginBorrowRateForward,\n INGEST_SERVICE_OPTIONS,\n);\n"]}
1
+ {"version":3,"file":"interest-rate-service.js","sourceRoot":"","sources":["../../src/services/interest-rate-service.ts"],"names":[],"mappings":"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","sourcesContent":["import { IInterestRate } from '@yuants/data-interest-rate';\nimport { provideInterestRateService } from '@yuants/exchange';\nimport { Terminal } from '@yuants/protocol';\nimport { decodePath, formatTime } from '@yuants/utils';\nimport { getMarginInterestRateHistory } from '../api/private-api';\nimport { getFutureFundingRate } from '../api/public-api';\n\nconst terminal = Terminal.fromNodeEnv();\n\nconst WINDOW_MS = 365 * 24 * 3600_000;\n\nconst fetchUsdtFutureFundingRateForward = async (req: {\n product_id: string;\n time: number;\n series_id: string;\n}): Promise<IInterestRate[]> => {\n const [, instType, symbol] = decodePath(req.product_id);\n if (instType !== 'USDT-FUTURE' || !symbol) throw new Error(`Unsupported product_id: ${req.product_id}`);\n\n const startTime = req.time;\n const res = await getFutureFundingRate({\n symbol,\n startTime,\n endTime: startTime + WINDOW_MS,\n limit: 1000,\n });\n\n return (res ?? [])\n .map((v): IInterestRate => {\n const ms = Number(v.fundingTime);\n const rate = Number(v.fundingRate);\n return {\n series_id: req.series_id,\n product_id: req.product_id,\n datasource_id: 'BINANCE',\n created_at: formatTime(ms),\n long_rate: `${-rate}`,\n short_rate: `${rate}`,\n settlement_price: '',\n };\n })\n .filter((x) => Date.parse(x.created_at) >= startTime);\n};\n\nconst fetchMarginBorrowRateForward = async (req: {\n product_id: string;\n time: number;\n series_id: string;\n}): Promise<IInterestRate[]> => {\n const [, instType, asset] = decodePath(req.product_id);\n if (instType !== 'MARGIN' || !asset) throw new Error(`Unsupported product_id: ${req.product_id}`);\n\n const startTime = req.time;\n const res = await getMarginInterestRateHistory({\n asset,\n startTime,\n endTime: startTime + WINDOW_MS,\n limit: 100,\n });\n\n return (res ?? [])\n .map((v): IInterestRate => {\n return {\n series_id: req.series_id,\n product_id: req.product_id,\n datasource_id: 'BINANCE',\n created_at: formatTime(v.timestamp),\n long_rate: v.dailyInterestRate,\n short_rate: '0',\n settlement_price: '',\n };\n })\n .filter((x) => Date.parse(x.created_at) >= startTime);\n};\n\nprovideInterestRateService(\n terminal,\n {\n product_id_prefix: 'BINANCE/USDT-FUTURE/',\n direction: 'forward',\n },\n fetchUsdtFutureFundingRateForward,\n);\n\nprovideInterestRateService(\n terminal,\n {\n product_id_prefix: 'BINANCE/MARGIN/',\n direction: 'forward',\n },\n fetchMarginBorrowRateForward,\n);\n"]}
@@ -5,14 +5,6 @@ const protocol_1 = require("@yuants/protocol");
5
5
  const utils_1 = require("@yuants/utils");
6
6
  const client_1 = require("../api/client");
7
7
  const terminal = protocol_1.Terminal.fromNodeEnv();
8
- const INGEST_SERVICE_OPTIONS = {
9
- concurrent: 1,
10
- max_pending_requests: 20,
11
- ingress_token_capacity: 2,
12
- ingress_token_refill_interval: 1000,
13
- egress_token_capacity: 1,
14
- egress_token_refill_interval: 1000,
15
- };
16
8
  const DURATION_TO_BINANCE_INTERVAL = {
17
9
  PT1M: '1m',
18
10
  PT3M: '3m',
@@ -69,15 +61,15 @@ const fetchOHLCPageBackward = async (req) => {
69
61
  product_id_prefix: 'BINANCE/USDT-FUTURE/',
70
62
  duration_list: Object.keys(DURATION_TO_BINANCE_INTERVAL),
71
63
  direction: 'backward',
72
- }, fetchOHLCPageBackward, INGEST_SERVICE_OPTIONS);
64
+ }, fetchOHLCPageBackward);
73
65
  (0, exchange_1.provideOHLCService)(terminal, {
74
66
  product_id_prefix: 'BINANCE/SPOT/',
75
67
  duration_list: Object.keys(DURATION_TO_BINANCE_INTERVAL),
76
68
  direction: 'backward',
77
- }, fetchOHLCPageBackward, INGEST_SERVICE_OPTIONS);
69
+ }, fetchOHLCPageBackward);
78
70
  (0, exchange_1.provideOHLCService)(terminal, {
79
71
  product_id_prefix: 'BINANCE/MARGIN/',
80
72
  duration_list: Object.keys(DURATION_TO_BINANCE_INTERVAL),
81
73
  direction: 'backward',
82
- }, fetchOHLCPageBackward, INGEST_SERVICE_OPTIONS);
74
+ }, fetchOHLCPageBackward);
83
75
  //# sourceMappingURL=ohlc-service.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"ohlc-service.js","sourceRoot":"","sources":["../../src/services/ohlc-service.ts"],"names":[],"mappings":"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","sourcesContent":["import { IOHLC } from '@yuants/data-ohlc';\nimport { provideOHLCService } from '@yuants/exchange';\nimport { IServiceOptions, Terminal } from '@yuants/protocol';\nimport { convertDurationToOffset, decodePath, formatTime } from '@yuants/utils';\nimport { requestPublic } from '../api/client';\n\nconst terminal = Terminal.fromNodeEnv();\n\nconst INGEST_SERVICE_OPTIONS: IServiceOptions = {\n concurrent: 1,\n max_pending_requests: 20,\n ingress_token_capacity: 2,\n ingress_token_refill_interval: 1000,\n egress_token_capacity: 1,\n egress_token_refill_interval: 1000,\n};\n\nconst DURATION_TO_BINANCE_INTERVAL: Record<string, string> = {\n PT1M: '1m',\n PT3M: '3m',\n PT5M: '5m',\n PT15M: '15m',\n PT30M: '30m',\n PT1H: '1h',\n PT2H: '2h',\n PT4H: '4h',\n PT6H: '6h',\n PT8H: '8h',\n PT12H: '12h',\n P1D: '1d',\n P3D: '3d',\n P1W: '1w',\n P1M: '1M',\n};\n\ntype IBinanceKline = [\n number, // Open time\n string, // Open\n string, // High\n string, // Low\n string, // Close\n string, // Volume\n number, // Close time\n string, // Quote asset volume\n number, // Number of trades\n string, // Taker buy base asset volume\n string, // Taker buy quote asset volume\n string, // Ignore\n];\n\nconst fetchOHLCPageBackward = async (req: {\n product_id: string;\n duration: string;\n time: number;\n series_id: string;\n}): Promise<IOHLC[]> => {\n const [, instType, symbol] = decodePath(req.product_id);\n if (!instType || !symbol) throw new Error(`Invalid product_id: ${req.product_id}`);\n\n const interval = DURATION_TO_BINANCE_INTERVAL[req.duration];\n if (!interval) throw new Error(`Unsupported duration: ${req.duration}`);\n\n const offset = convertDurationToOffset(req.duration);\n const endedAtMs = req.time;\n\n const baseUrl =\n instType === 'USDT-FUTURE'\n ? 'https://fapi.binance.com/fapi/v1/klines'\n : 'https://api.binance.com/api/v3/klines';\n\n const res = await requestPublic<IBinanceKline[]>('GET', baseUrl, {\n symbol,\n interval,\n endTime: endedAtMs,\n limit: 1000,\n });\n\n return (res ?? [])\n .map(\n (k): IOHLC => ({\n series_id: req.series_id,\n datasource_id: 'BINANCE',\n product_id: req.product_id,\n duration: req.duration,\n created_at: formatTime(k[0]),\n closed_at: formatTime(k[0] + offset),\n open: `${k[1]}`,\n high: `${k[2]}`,\n low: `${k[3]}`,\n close: `${k[4]}`,\n volume: `${k[5]}`,\n open_interest: '0',\n }),\n )\n .filter((x) => Date.parse(x.created_at) < endedAtMs);\n};\n\nprovideOHLCService(\n terminal,\n {\n product_id_prefix: 'BINANCE/USDT-FUTURE/',\n duration_list: Object.keys(DURATION_TO_BINANCE_INTERVAL),\n direction: 'backward',\n },\n fetchOHLCPageBackward,\n INGEST_SERVICE_OPTIONS,\n);\n\nprovideOHLCService(\n terminal,\n {\n product_id_prefix: 'BINANCE/SPOT/',\n duration_list: Object.keys(DURATION_TO_BINANCE_INTERVAL),\n direction: 'backward',\n },\n fetchOHLCPageBackward,\n INGEST_SERVICE_OPTIONS,\n);\n\nprovideOHLCService(\n terminal,\n {\n product_id_prefix: 'BINANCE/MARGIN/',\n duration_list: Object.keys(DURATION_TO_BINANCE_INTERVAL),\n direction: 'backward',\n },\n fetchOHLCPageBackward,\n INGEST_SERVICE_OPTIONS,\n);\n"]}
1
+ {"version":3,"file":"ohlc-service.js","sourceRoot":"","sources":["../../src/services/ohlc-service.ts"],"names":[],"mappings":"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","sourcesContent":["import { IOHLC } from '@yuants/data-ohlc';\nimport { provideOHLCService } from '@yuants/exchange';\nimport { Terminal } from '@yuants/protocol';\nimport { convertDurationToOffset, decodePath, formatTime } from '@yuants/utils';\nimport { requestPublic } from '../api/client';\n\nconst terminal = Terminal.fromNodeEnv();\n\nconst DURATION_TO_BINANCE_INTERVAL: Record<string, string> = {\n PT1M: '1m',\n PT3M: '3m',\n PT5M: '5m',\n PT15M: '15m',\n PT30M: '30m',\n PT1H: '1h',\n PT2H: '2h',\n PT4H: '4h',\n PT6H: '6h',\n PT8H: '8h',\n PT12H: '12h',\n P1D: '1d',\n P3D: '3d',\n P1W: '1w',\n P1M: '1M',\n};\n\ntype IBinanceKline = [\n number, // Open time\n string, // Open\n string, // High\n string, // Low\n string, // Close\n string, // Volume\n number, // Close time\n string, // Quote asset volume\n number, // Number of trades\n string, // Taker buy base asset volume\n string, // Taker buy quote asset volume\n string, // Ignore\n];\n\nconst fetchOHLCPageBackward = async (req: {\n product_id: string;\n duration: string;\n time: number;\n series_id: string;\n}): Promise<IOHLC[]> => {\n const [, instType, symbol] = decodePath(req.product_id);\n if (!instType || !symbol) throw new Error(`Invalid product_id: ${req.product_id}`);\n\n const interval = DURATION_TO_BINANCE_INTERVAL[req.duration];\n if (!interval) throw new Error(`Unsupported duration: ${req.duration}`);\n\n const offset = convertDurationToOffset(req.duration);\n const endedAtMs = req.time;\n\n const baseUrl =\n instType === 'USDT-FUTURE'\n ? 'https://fapi.binance.com/fapi/v1/klines'\n : 'https://api.binance.com/api/v3/klines';\n\n const res = await requestPublic<IBinanceKline[]>('GET', baseUrl, {\n symbol,\n interval,\n endTime: endedAtMs,\n limit: 1000,\n });\n\n return (res ?? [])\n .map(\n (k): IOHLC => ({\n series_id: req.series_id,\n datasource_id: 'BINANCE',\n product_id: req.product_id,\n duration: req.duration,\n created_at: formatTime(k[0]),\n closed_at: formatTime(k[0] + offset),\n open: `${k[1]}`,\n high: `${k[2]}`,\n low: `${k[3]}`,\n close: `${k[4]}`,\n volume: `${k[5]}`,\n open_interest: '0',\n }),\n )\n .filter((x) => Date.parse(x.created_at) < endedAtMs);\n};\n\nprovideOHLCService(\n terminal,\n {\n product_id_prefix: 'BINANCE/USDT-FUTURE/',\n duration_list: Object.keys(DURATION_TO_BINANCE_INTERVAL),\n direction: 'backward',\n },\n fetchOHLCPageBackward,\n);\n\nprovideOHLCService(\n terminal,\n {\n product_id_prefix: 'BINANCE/SPOT/',\n duration_list: Object.keys(DURATION_TO_BINANCE_INTERVAL),\n direction: 'backward',\n },\n fetchOHLCPageBackward,\n);\n\nprovideOHLCService(\n terminal,\n {\n product_id_prefix: 'BINANCE/MARGIN/',\n duration_list: Object.keys(DURATION_TO_BINANCE_INTERVAL),\n direction: 'backward',\n },\n fetchOHLCPageBackward,\n);\n"]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@yuants/vendor-binance",
3
- "version": "0.12.1",
3
+ "version": "0.12.2",
4
4
  "main": "lib/index.js",
5
5
  "files": [
6
6
  "dist",
@@ -8,19 +8,19 @@
8
8
  "temp"
9
9
  ],
10
10
  "dependencies": {
11
- "@yuants/protocol": "0.53.4",
12
- "@yuants/data-account": "0.11.1",
13
- "@yuants/cache": "0.3.5",
14
- "@yuants/data-quote": "0.4.1",
15
- "@yuants/utils": "0.16.0",
16
- "@yuants/data-series": "0.3.54",
17
- "@yuants/sql": "0.9.32",
18
- "@yuants/data-product": "0.5.2",
19
- "@yuants/data-ohlc": "0.5.0",
20
- "@yuants/data-order": "0.7.2",
21
- "@yuants/data-interest-rate": "0.2.0",
22
- "@yuants/transfer": "0.2.41",
23
- "@yuants/exchange": "0.8.2",
11
+ "@yuants/protocol": "0.53.5",
12
+ "@yuants/data-account": "0.11.2",
13
+ "@yuants/cache": "0.3.6",
14
+ "@yuants/data-quote": "0.4.2",
15
+ "@yuants/utils": "0.17.0",
16
+ "@yuants/data-series": "0.3.55",
17
+ "@yuants/sql": "0.9.33",
18
+ "@yuants/data-product": "0.5.3",
19
+ "@yuants/data-ohlc": "0.5.1",
20
+ "@yuants/data-order": "0.7.3",
21
+ "@yuants/data-interest-rate": "0.2.1",
22
+ "@yuants/transfer": "0.2.42",
23
+ "@yuants/exchange": "0.8.3",
24
24
  "rxjs": "~7.5.6"
25
25
  },
26
26
  "devDependencies": {
@@ -30,7 +30,7 @@
30
30
  "@rushstack/heft-node-rig": "~1.10.7",
31
31
  "@types/heft-jest": "1.0.3",
32
32
  "@types/node": "22",
33
- "@yuants/extension": "0.2.33",
33
+ "@yuants/extension": "0.2.34",
34
34
  "@yuants/tool-kit": "0.2.1",
35
35
  "typescript": "~4.7.4",
36
36
  "ts-node": "~10.9.2"
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "apps/vendor-binance/AGENTS.md": "378369925bffa237cd5e8ef459fe2bc2a141337c",
3
- "apps/vendor-binance/CHANGELOG.json": "4edeebc3c7f17502729a21554f5e208a63bd987a",
4
- "apps/vendor-binance/CHANGELOG.md": "624967c564b9ba92f724f9af99d4287b67bf9463",
3
+ "apps/vendor-binance/CHANGELOG.json": "eebd946e7d760de8f64de405b436ab1954c32d82",
4
+ "apps/vendor-binance/CHANGELOG.md": "c6c069bd42864b6661473a3cc4ba38623b99c9cc",
5
5
  "apps/vendor-binance/README.md": "4ab94c08b3d07398aee74c3264a4f87d554d20fa",
6
6
  "apps/vendor-binance/SESSION_NOTES.md": "dd49b3364394c502fdcaf687ed5942811d89abe9",
7
7
  "apps/vendor-binance/api-extractor.json": "62f4fd324425b9a235f0c117975967aab09ced0c",
@@ -9,7 +9,7 @@
9
9
  "apps/vendor-binance/config/rig.json": "f6c7b5537dc77a3170ba9f008bae3b6c3ee11956",
10
10
  "apps/vendor-binance/config/typescript.json": "854907e8a821f2050f6533368db160c649c25348",
11
11
  "apps/vendor-binance/etc/vendor-binance.api.md": "2094b84e9b5e7503f5c42b31fffee8d7db47fe7b",
12
- "apps/vendor-binance/package.json": "1a47aa1461e10951709995db398e7194ea8e54f7",
12
+ "apps/vendor-binance/package.json": "e3abe797229dc71b198baba2590b22d2c8c22010",
13
13
  "apps/vendor-binance/src/api/client.ts": "fab85d85d10577f0b6430a551dab46d7c1d2258a",
14
14
  "apps/vendor-binance/src/api/private-api.ts": "982c1902b8417aba1f75df5fa63db76dfc416dac",
15
15
  "apps/vendor-binance/src/api/public-api.ts": "3cf90196c9632f2d25ae41a2b6cc9145808af5b3",
@@ -22,8 +22,8 @@
22
22
  "apps/vendor-binance/src/services/accounts/profile.ts": "1d23b04d19c078e8c21f41efd6ca3db37b0bd206",
23
23
  "apps/vendor-binance/src/services/accounts/unified.ts": "26cd40a714936c8ba0e5305ce362f353c2b91435",
24
24
  "apps/vendor-binance/src/services/exchange.ts": "0e81f5219d534e0ab560b11c346df28bd3b8ce54",
25
- "apps/vendor-binance/src/services/interest-rate-service.ts": "a02934aa648db94255e5ae59627fcb2465e52ab9",
26
- "apps/vendor-binance/src/services/ohlc-service.ts": "7ee3416063d578c7039f84fce62a758bcdd445ad",
25
+ "apps/vendor-binance/src/services/interest-rate-service.ts": "45d73bedcdc3a4e8de4ee6398b1ad09d09a61b0c",
26
+ "apps/vendor-binance/src/services/ohlc-service.ts": "e8394f9189505afcb3841a34a7219fd03b013b85",
27
27
  "apps/vendor-binance/src/services/orders/cancelOrder.ts": "7177ca56fd09b11651edbb38e1962363ac67d4ff",
28
28
  "apps/vendor-binance/src/services/orders/listOrders.ts": "baa21b8e858c1ec593415145cc63fb38a6841d3f",
29
29
  "apps/vendor-binance/src/services/orders/modifyOrder.ts": "0d1ec4d683e43876e9d53ee29cdc5324301b287e",
@@ -32,19 +32,19 @@
32
32
  "apps/vendor-binance/src/services/quotes.ts": "5af233c8c8fb136111754055e79febaa551b993f",
33
33
  "apps/vendor-binance/tsconfig.json": "81da8f78196974b5d15da0edb6b2d9f48641063c",
34
34
  "apps/vendor-binance/.rush/temp/shrinkwrap-deps.json": "0408a4d9b00c1701e07aa22f8350e585241c4581",
35
- "libraries/protocol/temp/package-deps.json": "a30b39ceb4cd530ed6bc4e97433f995b026b26d9",
36
- "libraries/data-account/temp/package-deps.json": "363f171a8ec4ae558e4b20626b06bc8ae145ce8a",
37
- "libraries/cache/temp/package-deps.json": "2e6c6db8f750a2e173a3c4b9a57d22fbd6f9181d",
38
- "libraries/data-quote/temp/package-deps.json": "07e342d9dba4d5f5d89b62c74f079425b560cb1f",
39
- "libraries/utils/temp/package-deps.json": "7a9e2336d7ad44e827d81e9722767d6cdf99fc1f",
40
- "libraries/data-series/temp/package-deps.json": "71b373ec83ce1188001e341aefaca704aa4a5c38",
41
- "libraries/sql/temp/package-deps.json": "252d819797cb0a4bbc579075867624b05b19dabb",
42
- "libraries/data-product/temp/package-deps.json": "4f525fda6d65677f9fbdcd1b4480970dd6ff9e5b",
43
- "libraries/data-ohlc/temp/package-deps.json": "2115e384567d1b0958c085f455da9bed5a638780",
44
- "libraries/data-order/temp/package-deps.json": "daedd350fe85f0564f7739c73689fb09664132de",
45
- "libraries/data-interest-rate/temp/package-deps.json": "0aa2057c1c5c432be87e97b8df22984bdcab307c",
46
- "libraries/transfer/temp/package-deps.json": "6d0942aa4c50b35a8e47a500fe494fb4a08a99e5",
47
- "libraries/exchange/temp/package-deps.json": "5267eb70cd2e7df4a645f94133ad3428b52c567e",
48
- "libraries/extension/temp/package-deps.json": "fcddc4a668ecf969ca593c67ff02543fe69a6829",
35
+ "libraries/protocol/temp/package-deps.json": "359ac43a7382bafa1f91541e084256baec86d40b",
36
+ "libraries/data-account/temp/package-deps.json": "a94782e226c47a0f5198a5cca619ae7815055f4a",
37
+ "libraries/cache/temp/package-deps.json": "6f7f290f9a9c2e42e937d8ce3b55a6b541d2e835",
38
+ "libraries/data-quote/temp/package-deps.json": "6ee7c2a4c28dd7947039fd9561ff045400848bde",
39
+ "libraries/utils/temp/package-deps.json": "acd039ba8f5f93e664764ad2c8474878bd105c3b",
40
+ "libraries/data-series/temp/package-deps.json": "ba6b4e5b9beec9dbe54fcdc12820d8af70356d50",
41
+ "libraries/sql/temp/package-deps.json": "43f7034c83d7ac4b6c4224b8e916ac39fd78057d",
42
+ "libraries/data-product/temp/package-deps.json": "00c23f21d7977f38a942ed06f4812e5ddc2b6248",
43
+ "libraries/data-ohlc/temp/package-deps.json": "919692801e80ce34e9af7470712ac4d1c0086af7",
44
+ "libraries/data-order/temp/package-deps.json": "e89dd8f11cdbe84eb8bdf474105abccdf51abfaa",
45
+ "libraries/data-interest-rate/temp/package-deps.json": "5f955d9b9c04936964ba20a37d5e00816fb33f67",
46
+ "libraries/transfer/temp/package-deps.json": "266da813de0fc7b8de0acb4f1a561bd5cab7f294",
47
+ "libraries/exchange/temp/package-deps.json": "a254260f066adc3e196d020f7eae7354db045404",
48
+ "libraries/extension/temp/package-deps.json": "89c372a6eab7dfe766edc0b102492364aa8684fe",
49
49
  "tools/toolkit/temp/package-deps.json": "23e053490eb8feade23e4d45de4e54883e322711"
50
50
  }