@yuants/vendor-okx 0.31.1 → 0.31.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.
@@ -3,14 +3,6 @@ import { Terminal } from '@yuants/protocol';
3
3
  import { decodePath, formatTime } from '@yuants/utils';
4
4
  import { getFundingRateHistory, getLendingRateHistory } from '../api/public-api';
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 fetchSwapFundingRateBackward = async (req) => {
15
7
  const [, instType, instId] = decodePath(req.product_id);
16
8
  if (instType !== 'SWAP' || !instId)
@@ -76,9 +68,15 @@ const fetchMarginInterestRateBackward = async (req) => {
76
68
  provideInterestRateService(terminal, {
77
69
  product_id_prefix: 'OKX/SWAP/',
78
70
  direction: 'backward',
79
- }, fetchSwapFundingRateBackward, INGEST_SERVICE_OPTIONS);
71
+ }, fetchSwapFundingRateBackward, {
72
+ egress_token_capacity: 10,
73
+ egress_token_refill_interval: 2000,
74
+ });
80
75
  provideInterestRateService(terminal, {
81
76
  product_id_prefix: 'OKX/MARGIN/',
82
77
  direction: 'backward',
83
- }, fetchMarginInterestRateBackward, INGEST_SERVICE_OPTIONS);
78
+ }, fetchMarginInterestRateBackward, {
79
+ egress_token_capacity: 6,
80
+ egress_token_refill_interval: 1000,
81
+ });
84
82
  //# 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 { getFundingRateHistory, getLendingRateHistory } 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 fetchSwapFundingRateBackward = async (req: {\n product_id: string;\n time: number;\n series_id: string;\n}): Promise<IInterestRate[]> => {\n const [, instType, instId] = decodePath(req.product_id);\n if (instType !== 'SWAP' || !instId) throw new Error(`Unsupported product_id: ${req.product_id}`);\n\n const endedAtMs = req.time;\n const res = await getFundingRateHistory({ instId, after: `${endedAtMs}` });\n if (res.code !== '0') {\n throw new Error(`OKX getFundingRateHistory failed: ${res.code} ${res.msg}`);\n }\n\n return res.data\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: 'OKX',\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) < endedAtMs);\n};\n\nconst fetchMarginInterestRateBackward = async (req: {\n product_id: string;\n time: number;\n series_id: string;\n}): Promise<IInterestRate[]> => {\n const [, instType, instId] = decodePath(req.product_id);\n if (instType !== 'MARGIN' || !instId) throw new Error(`Unsupported product_id: ${req.product_id}`);\n\n const [base, quote] = instId.split('-');\n if (!base || !quote) throw new Error(`Invalid MARGIN instId: ${instId}`);\n\n const endedAtMs = req.time;\n\n const [resBase, resQuote] = await Promise.all([\n getLendingRateHistory({ ccy: base, after: `${endedAtMs}` }),\n getLendingRateHistory({ ccy: quote, after: `${endedAtMs}` }),\n ]);\n\n if (resBase.code !== '0')\n throw new Error(`OKX getLendingRateHistory failed: ${resBase.code} ${resBase.msg}`);\n if (resQuote.code !== '0')\n throw new Error(`OKX getLendingRateHistory failed: ${resQuote.code} ${resQuote.msg}`);\n\n const mapTsToBaseRate = new Map<string, string>();\n resBase.data.forEach((v) => mapTsToBaseRate.set(v.ts, v.rate));\n\n const data: IInterestRate[] = [];\n resQuote.data.forEach((v) => {\n const baseRate = mapTsToBaseRate.get(v.ts);\n if (!baseRate) return;\n\n const longRate = Number(v.rate) / 365 / 24;\n const shortRate = Number(baseRate) / 365 / 24;\n\n data.push({\n series_id: req.series_id,\n product_id: req.product_id,\n datasource_id: 'OKX',\n created_at: formatTime(+v.ts),\n long_rate: `${-longRate}`,\n short_rate: `${-shortRate}`,\n settlement_price: '',\n });\n });\n\n return data.filter((x) => Date.parse(x.created_at) < endedAtMs);\n};\n\nprovideInterestRateService(\n terminal,\n {\n product_id_prefix: 'OKX/SWAP/',\n direction: 'backward',\n },\n fetchSwapFundingRateBackward,\n INGEST_SERVICE_OPTIONS,\n);\n\nprovideInterestRateService(\n terminal,\n {\n product_id_prefix: 'OKX/MARGIN/',\n direction: 'backward',\n },\n fetchMarginInterestRateBackward,\n INGEST_SERVICE_OPTIONS,\n);\n"]}
1
+ {"version":3,"file":"interest-rate-service.js","sourceRoot":"","sources":["../../src/services/interest-rate-service.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,0BAA0B,EAAE,MAAM,kBAAkB,CAAC;AAC9D,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAC5C,OAAO,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AACvD,OAAO,EAAE,qBAAqB,EAAE,qBAAqB,EAAE,MAAM,mBAAmB,CAAC;AAEjF,MAAM,QAAQ,GAAG,QAAQ,CAAC,WAAW,EAAE,CAAC;AAExC,MAAM,4BAA4B,GAAG,KAAK,EAAE,GAI3C,EAA4B,EAAE;IAC7B,MAAM,CAAC,EAAE,QAAQ,EAAE,MAAM,CAAC,GAAG,UAAU,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;IACxD,IAAI,QAAQ,KAAK,MAAM,IAAI,CAAC,MAAM;QAAE,MAAM,IAAI,KAAK,CAAC,2BAA2B,GAAG,CAAC,UAAU,EAAE,CAAC,CAAC;IAEjG,MAAM,SAAS,GAAG,GAAG,CAAC,IAAI,CAAC;IAC3B,MAAM,GAAG,GAAG,MAAM,qBAAqB,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,GAAG,SAAS,EAAE,EAAE,CAAC,CAAC;IAC3E,IAAI,GAAG,CAAC,IAAI,KAAK,GAAG,EAAE;QACpB,MAAM,IAAI,KAAK,CAAC,qCAAqC,GAAG,CAAC,IAAI,IAAI,GAAG,CAAC,GAAG,EAAE,CAAC,CAAC;KAC7E;IAED,OAAO,GAAG,CAAC,IAAI;SACZ,GAAG,CAAC,CAAC,CAAC,EAAiB,EAAE;QACxB,MAAM,EAAE,GAAG,MAAM,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC;QACjC,MAAM,IAAI,GAAG,MAAM,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC;QACnC,OAAO;YACL,SAAS,EAAE,GAAG,CAAC,SAAS;YACxB,UAAU,EAAE,GAAG,CAAC,UAAU;YAC1B,aAAa,EAAE,KAAK;YACpB,UAAU,EAAE,UAAU,CAAC,EAAE,CAAC;YAC1B,SAAS,EAAE,GAAG,CAAC,IAAI,EAAE;YACrB,UAAU,EAAE,GAAG,IAAI,EAAE;YACrB,gBAAgB,EAAE,EAAE;SACrB,CAAC;IACJ,CAAC,CAAC;SACD,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,UAAU,CAAC,GAAG,SAAS,CAAC,CAAC;AACzD,CAAC,CAAC;AAEF,MAAM,+BAA+B,GAAG,KAAK,EAAE,GAI9C,EAA4B,EAAE;IAC7B,MAAM,CAAC,EAAE,QAAQ,EAAE,MAAM,CAAC,GAAG,UAAU,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;IACxD,IAAI,QAAQ,KAAK,QAAQ,IAAI,CAAC,MAAM;QAAE,MAAM,IAAI,KAAK,CAAC,2BAA2B,GAAG,CAAC,UAAU,EAAE,CAAC,CAAC;IAEnG,MAAM,CAAC,IAAI,EAAE,KAAK,CAAC,GAAG,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IACxC,IAAI,CAAC,IAAI,IAAI,CAAC,KAAK;QAAE,MAAM,IAAI,KAAK,CAAC,0BAA0B,MAAM,EAAE,CAAC,CAAC;IAEzE,MAAM,SAAS,GAAG,GAAG,CAAC,IAAI,CAAC;IAE3B,MAAM,CAAC,OAAO,EAAE,QAAQ,CAAC,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC;QAC5C,qBAAqB,CAAC,EAAE,GAAG,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,SAAS,EAAE,EAAE,CAAC;QAC3D,qBAAqB,CAAC,EAAE,GAAG,EAAE,KAAK,EAAE,KAAK,EAAE,GAAG,SAAS,EAAE,EAAE,CAAC;KAC7D,CAAC,CAAC;IAEH,IAAI,OAAO,CAAC,IAAI,KAAK,GAAG;QACtB,MAAM,IAAI,KAAK,CAAC,qCAAqC,OAAO,CAAC,IAAI,IAAI,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC;IACtF,IAAI,QAAQ,CAAC,IAAI,KAAK,GAAG;QACvB,MAAM,IAAI,KAAK,CAAC,qCAAqC,QAAQ,CAAC,IAAI,IAAI,QAAQ,CAAC,GAAG,EAAE,CAAC,CAAC;IAExF,MAAM,eAAe,GAAG,IAAI,GAAG,EAAkB,CAAC;IAClD,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,eAAe,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;IAE/D,MAAM,IAAI,GAAoB,EAAE,CAAC;IACjC,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE;QAC1B,MAAM,QAAQ,GAAG,eAAe,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;QAC3C,IAAI,CAAC,QAAQ;YAAE,OAAO;QAEtB,MAAM,QAAQ,GAAG,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,GAAG,GAAG,EAAE,CAAC;QAC3C,MAAM,SAAS,GAAG,MAAM,CAAC,QAAQ,CAAC,GAAG,GAAG,GAAG,EAAE,CAAC;QAE9C,IAAI,CAAC,IAAI,CAAC;YACR,SAAS,EAAE,GAAG,CAAC,SAAS;YACxB,UAAU,EAAE,GAAG,CAAC,UAAU;YAC1B,aAAa,EAAE,KAAK;YACpB,UAAU,EAAE,UAAU,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;YAC7B,SAAS,EAAE,GAAG,CAAC,QAAQ,EAAE;YACzB,UAAU,EAAE,GAAG,CAAC,SAAS,EAAE;YAC3B,gBAAgB,EAAE,EAAE;SACrB,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,OAAO,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,UAAU,CAAC,GAAG,SAAS,CAAC,CAAC;AAClE,CAAC,CAAC;AAEF,0BAA0B,CACxB,QAAQ,EACR;IACE,iBAAiB,EAAE,WAAW;IAC9B,SAAS,EAAE,UAAU;CACtB,EACD,4BAA4B,EAC5B;IACE,qBAAqB,EAAE,EAAE;IACzB,4BAA4B,EAAE,IAAI;CACnC,CACF,CAAC;AAEF,0BAA0B,CACxB,QAAQ,EACR;IACE,iBAAiB,EAAE,aAAa;IAChC,SAAS,EAAE,UAAU;CACtB,EACD,+BAA+B,EAC/B;IACE,qBAAqB,EAAE,CAAC;IACxB,4BAA4B,EAAE,IAAI;CACnC,CACF,CAAC","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 { getFundingRateHistory, getLendingRateHistory } from '../api/public-api';\n\nconst terminal = Terminal.fromNodeEnv();\n\nconst fetchSwapFundingRateBackward = async (req: {\n product_id: string;\n time: number;\n series_id: string;\n}): Promise<IInterestRate[]> => {\n const [, instType, instId] = decodePath(req.product_id);\n if (instType !== 'SWAP' || !instId) throw new Error(`Unsupported product_id: ${req.product_id}`);\n\n const endedAtMs = req.time;\n const res = await getFundingRateHistory({ instId, after: `${endedAtMs}` });\n if (res.code !== '0') {\n throw new Error(`OKX getFundingRateHistory failed: ${res.code} ${res.msg}`);\n }\n\n return res.data\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: 'OKX',\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) < endedAtMs);\n};\n\nconst fetchMarginInterestRateBackward = async (req: {\n product_id: string;\n time: number;\n series_id: string;\n}): Promise<IInterestRate[]> => {\n const [, instType, instId] = decodePath(req.product_id);\n if (instType !== 'MARGIN' || !instId) throw new Error(`Unsupported product_id: ${req.product_id}`);\n\n const [base, quote] = instId.split('-');\n if (!base || !quote) throw new Error(`Invalid MARGIN instId: ${instId}`);\n\n const endedAtMs = req.time;\n\n const [resBase, resQuote] = await Promise.all([\n getLendingRateHistory({ ccy: base, after: `${endedAtMs}` }),\n getLendingRateHistory({ ccy: quote, after: `${endedAtMs}` }),\n ]);\n\n if (resBase.code !== '0')\n throw new Error(`OKX getLendingRateHistory failed: ${resBase.code} ${resBase.msg}`);\n if (resQuote.code !== '0')\n throw new Error(`OKX getLendingRateHistory failed: ${resQuote.code} ${resQuote.msg}`);\n\n const mapTsToBaseRate = new Map<string, string>();\n resBase.data.forEach((v) => mapTsToBaseRate.set(v.ts, v.rate));\n\n const data: IInterestRate[] = [];\n resQuote.data.forEach((v) => {\n const baseRate = mapTsToBaseRate.get(v.ts);\n if (!baseRate) return;\n\n const longRate = Number(v.rate) / 365 / 24;\n const shortRate = Number(baseRate) / 365 / 24;\n\n data.push({\n series_id: req.series_id,\n product_id: req.product_id,\n datasource_id: 'OKX',\n created_at: formatTime(+v.ts),\n long_rate: `${-longRate}`,\n short_rate: `${-shortRate}`,\n settlement_price: '',\n });\n });\n\n return data.filter((x) => Date.parse(x.created_at) < endedAtMs);\n};\n\nprovideInterestRateService(\n terminal,\n {\n product_id_prefix: 'OKX/SWAP/',\n direction: 'backward',\n },\n fetchSwapFundingRateBackward,\n {\n egress_token_capacity: 10,\n egress_token_refill_interval: 2000,\n },\n);\n\nprovideInterestRateService(\n terminal,\n {\n product_id_prefix: 'OKX/MARGIN/',\n direction: 'backward',\n },\n fetchMarginInterestRateBackward,\n {\n egress_token_capacity: 6,\n egress_token_refill_interval: 1000,\n },\n);\n"]}
@@ -4,12 +4,8 @@ import { convertDurationToOffset, decodePath, formatTime } from '@yuants/utils';
4
4
  import { getHistoryCandles } from '../api/public-api';
5
5
  const terminal = Terminal.fromNodeEnv();
6
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,
7
+ egress_token_capacity: 20,
8
+ egress_token_refill_interval: 2000,
13
9
  };
14
10
  const DURATION_TO_OKX_BAR_TYPE = {
15
11
  PT1M: '1m',
@@ -1 +1 @@
1
- {"version":3,"file":"ohlc-service.js","sourceRoot":"","sources":["../../src/services/ohlc-service.ts"],"names":[],"mappings":"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","sourcesContent":["import { provideOHLCService } from '@yuants/exchange';\nimport { IOHLC } from '@yuants/data-ohlc';\nimport { IServiceOptions, Terminal } from '@yuants/protocol';\nimport { convertDurationToOffset, decodePath, formatTime } from '@yuants/utils';\nimport { getHistoryCandles } 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 DURATION_TO_OKX_BAR_TYPE: Record<string, string> = {\n PT1M: '1m',\n PT3M: '3m',\n PT5M: '5m',\n PT15M: '15m',\n PT30M: '30m',\n\n PT1H: '1H',\n PT2H: '2H',\n PT4H: '4H',\n PT6H: '6H',\n PT12H: '12H',\n\n P1D: '1D',\n P1W: '1W',\n P1M: '1M',\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, instId] = decodePath(req.product_id);\n if (!instType || !instId) throw new Error(`Invalid product_id: ${req.product_id}`);\n\n const bar = DURATION_TO_OKX_BAR_TYPE[req.duration];\n if (!bar) throw new Error(`Unsupported duration: ${req.duration}`);\n\n const offset = convertDurationToOffset(req.duration);\n const endedAtMs = req.time;\n\n const res = await getHistoryCandles({\n instId,\n bar,\n after: `${endedAtMs}`,\n limit: '300',\n });\n if (res.code !== '0') {\n throw new Error(`OKX getHistoryCandles failed: ${res.code} ${res.msg}`);\n }\n\n return res.data\n .map(\n (x): IOHLC => ({\n series_id: req.series_id,\n datasource_id: 'OKX',\n product_id: req.product_id,\n duration: req.duration,\n created_at: formatTime(+x[0]),\n closed_at: formatTime(+x[0] + offset),\n open: x[1],\n high: x[2],\n low: x[3],\n close: x[4],\n volume: x[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: 'OKX/SWAP/',\n duration_list: Object.keys(DURATION_TO_OKX_BAR_TYPE),\n direction: 'backward',\n },\n fetchOHLCPageBackward,\n INGEST_SERVICE_OPTIONS,\n);\n\nprovideOHLCService(\n terminal,\n {\n product_id_prefix: 'OKX/SPOT/',\n duration_list: Object.keys(DURATION_TO_OKX_BAR_TYPE),\n direction: 'backward',\n },\n fetchOHLCPageBackward,\n INGEST_SERVICE_OPTIONS,\n);\n\nprovideOHLCService(\n terminal,\n {\n product_id_prefix: 'OKX/MARGIN/',\n duration_list: Object.keys(DURATION_TO_OKX_BAR_TYPE),\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 { IServiceOptions, Terminal } from '@yuants/protocol';\nimport { convertDurationToOffset, decodePath, formatTime } from '@yuants/utils';\nimport { getHistoryCandles } from '../api/public-api';\n\nconst terminal = Terminal.fromNodeEnv();\n\nconst INGEST_SERVICE_OPTIONS: IServiceOptions = {\n egress_token_capacity: 20,\n egress_token_refill_interval: 2000,\n};\n\nconst DURATION_TO_OKX_BAR_TYPE: Record<string, string> = {\n PT1M: '1m',\n PT3M: '3m',\n PT5M: '5m',\n PT15M: '15m',\n PT30M: '30m',\n\n PT1H: '1H',\n PT2H: '2H',\n PT4H: '4H',\n PT6H: '6H',\n PT12H: '12H',\n\n P1D: '1D',\n P1W: '1W',\n P1M: '1M',\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, instId] = decodePath(req.product_id);\n if (!instType || !instId) throw new Error(`Invalid product_id: ${req.product_id}`);\n\n const bar = DURATION_TO_OKX_BAR_TYPE[req.duration];\n if (!bar) throw new Error(`Unsupported duration: ${req.duration}`);\n\n const offset = convertDurationToOffset(req.duration);\n const endedAtMs = req.time;\n\n const res = await getHistoryCandles({\n instId,\n bar,\n after: `${endedAtMs}`,\n limit: '300',\n });\n if (res.code !== '0') {\n throw new Error(`OKX getHistoryCandles failed: ${res.code} ${res.msg}`);\n }\n\n return res.data\n .map(\n (x): IOHLC => ({\n series_id: req.series_id,\n datasource_id: 'OKX',\n product_id: req.product_id,\n duration: req.duration,\n created_at: formatTime(+x[0]),\n closed_at: formatTime(+x[0] + offset),\n open: x[1],\n high: x[2],\n low: x[3],\n close: x[4],\n volume: x[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: 'OKX/SWAP/',\n duration_list: Object.keys(DURATION_TO_OKX_BAR_TYPE),\n direction: 'backward',\n },\n fetchOHLCPageBackward,\n INGEST_SERVICE_OPTIONS,\n);\n\nprovideOHLCService(\n terminal,\n {\n product_id_prefix: 'OKX/SPOT/',\n duration_list: Object.keys(DURATION_TO_OKX_BAR_TYPE),\n direction: 'backward',\n },\n fetchOHLCPageBackward,\n INGEST_SERVICE_OPTIONS,\n);\n\nprovideOHLCService(\n terminal,\n {\n product_id_prefix: 'OKX/MARGIN/',\n duration_list: Object.keys(DURATION_TO_OKX_BAR_TYPE),\n direction: 'backward',\n },\n fetchOHLCPageBackward,\n INGEST_SERVICE_OPTIONS,\n);\n"]}
@@ -5,14 +5,6 @@ const protocol_1 = require("@yuants/protocol");
5
5
  const utils_1 = require("@yuants/utils");
6
6
  const public_api_1 = require("../api/public-api");
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 fetchSwapFundingRateBackward = async (req) => {
17
9
  const [, instType, instId] = (0, utils_1.decodePath)(req.product_id);
18
10
  if (instType !== 'SWAP' || !instId)
@@ -78,9 +70,15 @@ const fetchMarginInterestRateBackward = async (req) => {
78
70
  (0, exchange_1.provideInterestRateService)(terminal, {
79
71
  product_id_prefix: 'OKX/SWAP/',
80
72
  direction: 'backward',
81
- }, fetchSwapFundingRateBackward, INGEST_SERVICE_OPTIONS);
73
+ }, fetchSwapFundingRateBackward, {
74
+ egress_token_capacity: 10,
75
+ egress_token_refill_interval: 2000,
76
+ });
82
77
  (0, exchange_1.provideInterestRateService)(terminal, {
83
78
  product_id_prefix: 'OKX/MARGIN/',
84
79
  direction: 'backward',
85
- }, fetchMarginInterestRateBackward, INGEST_SERVICE_OPTIONS);
80
+ }, fetchMarginInterestRateBackward, {
81
+ egress_token_capacity: 6,
82
+ egress_token_refill_interval: 1000,
83
+ });
86
84
  //# 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 { getFundingRateHistory, getLendingRateHistory } 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 fetchSwapFundingRateBackward = async (req: {\n product_id: string;\n time: number;\n series_id: string;\n}): Promise<IInterestRate[]> => {\n const [, instType, instId] = decodePath(req.product_id);\n if (instType !== 'SWAP' || !instId) throw new Error(`Unsupported product_id: ${req.product_id}`);\n\n const endedAtMs = req.time;\n const res = await getFundingRateHistory({ instId, after: `${endedAtMs}` });\n if (res.code !== '0') {\n throw new Error(`OKX getFundingRateHistory failed: ${res.code} ${res.msg}`);\n }\n\n return res.data\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: 'OKX',\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) < endedAtMs);\n};\n\nconst fetchMarginInterestRateBackward = async (req: {\n product_id: string;\n time: number;\n series_id: string;\n}): Promise<IInterestRate[]> => {\n const [, instType, instId] = decodePath(req.product_id);\n if (instType !== 'MARGIN' || !instId) throw new Error(`Unsupported product_id: ${req.product_id}`);\n\n const [base, quote] = instId.split('-');\n if (!base || !quote) throw new Error(`Invalid MARGIN instId: ${instId}`);\n\n const endedAtMs = req.time;\n\n const [resBase, resQuote] = await Promise.all([\n getLendingRateHistory({ ccy: base, after: `${endedAtMs}` }),\n getLendingRateHistory({ ccy: quote, after: `${endedAtMs}` }),\n ]);\n\n if (resBase.code !== '0')\n throw new Error(`OKX getLendingRateHistory failed: ${resBase.code} ${resBase.msg}`);\n if (resQuote.code !== '0')\n throw new Error(`OKX getLendingRateHistory failed: ${resQuote.code} ${resQuote.msg}`);\n\n const mapTsToBaseRate = new Map<string, string>();\n resBase.data.forEach((v) => mapTsToBaseRate.set(v.ts, v.rate));\n\n const data: IInterestRate[] = [];\n resQuote.data.forEach((v) => {\n const baseRate = mapTsToBaseRate.get(v.ts);\n if (!baseRate) return;\n\n const longRate = Number(v.rate) / 365 / 24;\n const shortRate = Number(baseRate) / 365 / 24;\n\n data.push({\n series_id: req.series_id,\n product_id: req.product_id,\n datasource_id: 'OKX',\n created_at: formatTime(+v.ts),\n long_rate: `${-longRate}`,\n short_rate: `${-shortRate}`,\n settlement_price: '',\n });\n });\n\n return data.filter((x) => Date.parse(x.created_at) < endedAtMs);\n};\n\nprovideInterestRateService(\n terminal,\n {\n product_id_prefix: 'OKX/SWAP/',\n direction: 'backward',\n },\n fetchSwapFundingRateBackward,\n INGEST_SERVICE_OPTIONS,\n);\n\nprovideInterestRateService(\n terminal,\n {\n product_id_prefix: 'OKX/MARGIN/',\n direction: 'backward',\n },\n fetchMarginInterestRateBackward,\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 { getFundingRateHistory, getLendingRateHistory } from '../api/public-api';\n\nconst terminal = Terminal.fromNodeEnv();\n\nconst fetchSwapFundingRateBackward = async (req: {\n product_id: string;\n time: number;\n series_id: string;\n}): Promise<IInterestRate[]> => {\n const [, instType, instId] = decodePath(req.product_id);\n if (instType !== 'SWAP' || !instId) throw new Error(`Unsupported product_id: ${req.product_id}`);\n\n const endedAtMs = req.time;\n const res = await getFundingRateHistory({ instId, after: `${endedAtMs}` });\n if (res.code !== '0') {\n throw new Error(`OKX getFundingRateHistory failed: ${res.code} ${res.msg}`);\n }\n\n return res.data\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: 'OKX',\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) < endedAtMs);\n};\n\nconst fetchMarginInterestRateBackward = async (req: {\n product_id: string;\n time: number;\n series_id: string;\n}): Promise<IInterestRate[]> => {\n const [, instType, instId] = decodePath(req.product_id);\n if (instType !== 'MARGIN' || !instId) throw new Error(`Unsupported product_id: ${req.product_id}`);\n\n const [base, quote] = instId.split('-');\n if (!base || !quote) throw new Error(`Invalid MARGIN instId: ${instId}`);\n\n const endedAtMs = req.time;\n\n const [resBase, resQuote] = await Promise.all([\n getLendingRateHistory({ ccy: base, after: `${endedAtMs}` }),\n getLendingRateHistory({ ccy: quote, after: `${endedAtMs}` }),\n ]);\n\n if (resBase.code !== '0')\n throw new Error(`OKX getLendingRateHistory failed: ${resBase.code} ${resBase.msg}`);\n if (resQuote.code !== '0')\n throw new Error(`OKX getLendingRateHistory failed: ${resQuote.code} ${resQuote.msg}`);\n\n const mapTsToBaseRate = new Map<string, string>();\n resBase.data.forEach((v) => mapTsToBaseRate.set(v.ts, v.rate));\n\n const data: IInterestRate[] = [];\n resQuote.data.forEach((v) => {\n const baseRate = mapTsToBaseRate.get(v.ts);\n if (!baseRate) return;\n\n const longRate = Number(v.rate) / 365 / 24;\n const shortRate = Number(baseRate) / 365 / 24;\n\n data.push({\n series_id: req.series_id,\n product_id: req.product_id,\n datasource_id: 'OKX',\n created_at: formatTime(+v.ts),\n long_rate: `${-longRate}`,\n short_rate: `${-shortRate}`,\n settlement_price: '',\n });\n });\n\n return data.filter((x) => Date.parse(x.created_at) < endedAtMs);\n};\n\nprovideInterestRateService(\n terminal,\n {\n product_id_prefix: 'OKX/SWAP/',\n direction: 'backward',\n },\n fetchSwapFundingRateBackward,\n {\n egress_token_capacity: 10,\n egress_token_refill_interval: 2000,\n },\n);\n\nprovideInterestRateService(\n terminal,\n {\n product_id_prefix: 'OKX/MARGIN/',\n direction: 'backward',\n },\n fetchMarginInterestRateBackward,\n {\n egress_token_capacity: 6,\n egress_token_refill_interval: 1000,\n },\n);\n"]}
@@ -6,12 +6,8 @@ const utils_1 = require("@yuants/utils");
6
6
  const public_api_1 = require("../api/public-api");
7
7
  const terminal = protocol_1.Terminal.fromNodeEnv();
8
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,
9
+ egress_token_capacity: 20,
10
+ egress_token_refill_interval: 2000,
15
11
  };
16
12
  const DURATION_TO_OKX_BAR_TYPE = {
17
13
  PT1M: '1m',
@@ -1 +1 @@
1
- {"version":3,"file":"ohlc-service.js","sourceRoot":"","sources":["../../src/services/ohlc-service.ts"],"names":[],"mappings":"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","sourcesContent":["import { provideOHLCService } from '@yuants/exchange';\nimport { IOHLC } from '@yuants/data-ohlc';\nimport { IServiceOptions, Terminal } from '@yuants/protocol';\nimport { convertDurationToOffset, decodePath, formatTime } from '@yuants/utils';\nimport { getHistoryCandles } 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 DURATION_TO_OKX_BAR_TYPE: Record<string, string> = {\n PT1M: '1m',\n PT3M: '3m',\n PT5M: '5m',\n PT15M: '15m',\n PT30M: '30m',\n\n PT1H: '1H',\n PT2H: '2H',\n PT4H: '4H',\n PT6H: '6H',\n PT12H: '12H',\n\n P1D: '1D',\n P1W: '1W',\n P1M: '1M',\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, instId] = decodePath(req.product_id);\n if (!instType || !instId) throw new Error(`Invalid product_id: ${req.product_id}`);\n\n const bar = DURATION_TO_OKX_BAR_TYPE[req.duration];\n if (!bar) throw new Error(`Unsupported duration: ${req.duration}`);\n\n const offset = convertDurationToOffset(req.duration);\n const endedAtMs = req.time;\n\n const res = await getHistoryCandles({\n instId,\n bar,\n after: `${endedAtMs}`,\n limit: '300',\n });\n if (res.code !== '0') {\n throw new Error(`OKX getHistoryCandles failed: ${res.code} ${res.msg}`);\n }\n\n return res.data\n .map(\n (x): IOHLC => ({\n series_id: req.series_id,\n datasource_id: 'OKX',\n product_id: req.product_id,\n duration: req.duration,\n created_at: formatTime(+x[0]),\n closed_at: formatTime(+x[0] + offset),\n open: x[1],\n high: x[2],\n low: x[3],\n close: x[4],\n volume: x[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: 'OKX/SWAP/',\n duration_list: Object.keys(DURATION_TO_OKX_BAR_TYPE),\n direction: 'backward',\n },\n fetchOHLCPageBackward,\n INGEST_SERVICE_OPTIONS,\n);\n\nprovideOHLCService(\n terminal,\n {\n product_id_prefix: 'OKX/SPOT/',\n duration_list: Object.keys(DURATION_TO_OKX_BAR_TYPE),\n direction: 'backward',\n },\n fetchOHLCPageBackward,\n INGEST_SERVICE_OPTIONS,\n);\n\nprovideOHLCService(\n terminal,\n {\n product_id_prefix: 'OKX/MARGIN/',\n duration_list: Object.keys(DURATION_TO_OKX_BAR_TYPE),\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 { IServiceOptions, Terminal } from '@yuants/protocol';\nimport { convertDurationToOffset, decodePath, formatTime } from '@yuants/utils';\nimport { getHistoryCandles } from '../api/public-api';\n\nconst terminal = Terminal.fromNodeEnv();\n\nconst INGEST_SERVICE_OPTIONS: IServiceOptions = {\n egress_token_capacity: 20,\n egress_token_refill_interval: 2000,\n};\n\nconst DURATION_TO_OKX_BAR_TYPE: Record<string, string> = {\n PT1M: '1m',\n PT3M: '3m',\n PT5M: '5m',\n PT15M: '15m',\n PT30M: '30m',\n\n PT1H: '1H',\n PT2H: '2H',\n PT4H: '4H',\n PT6H: '6H',\n PT12H: '12H',\n\n P1D: '1D',\n P1W: '1W',\n P1M: '1M',\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, instId] = decodePath(req.product_id);\n if (!instType || !instId) throw new Error(`Invalid product_id: ${req.product_id}`);\n\n const bar = DURATION_TO_OKX_BAR_TYPE[req.duration];\n if (!bar) throw new Error(`Unsupported duration: ${req.duration}`);\n\n const offset = convertDurationToOffset(req.duration);\n const endedAtMs = req.time;\n\n const res = await getHistoryCandles({\n instId,\n bar,\n after: `${endedAtMs}`,\n limit: '300',\n });\n if (res.code !== '0') {\n throw new Error(`OKX getHistoryCandles failed: ${res.code} ${res.msg}`);\n }\n\n return res.data\n .map(\n (x): IOHLC => ({\n series_id: req.series_id,\n datasource_id: 'OKX',\n product_id: req.product_id,\n duration: req.duration,\n created_at: formatTime(+x[0]),\n closed_at: formatTime(+x[0] + offset),\n open: x[1],\n high: x[2],\n low: x[3],\n close: x[4],\n volume: x[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: 'OKX/SWAP/',\n duration_list: Object.keys(DURATION_TO_OKX_BAR_TYPE),\n direction: 'backward',\n },\n fetchOHLCPageBackward,\n INGEST_SERVICE_OPTIONS,\n);\n\nprovideOHLCService(\n terminal,\n {\n product_id_prefix: 'OKX/SPOT/',\n duration_list: Object.keys(DURATION_TO_OKX_BAR_TYPE),\n direction: 'backward',\n },\n fetchOHLCPageBackward,\n INGEST_SERVICE_OPTIONS,\n);\n\nprovideOHLCService(\n terminal,\n {\n product_id_prefix: 'OKX/MARGIN/',\n duration_list: Object.keys(DURATION_TO_OKX_BAR_TYPE),\n direction: 'backward',\n },\n fetchOHLCPageBackward,\n INGEST_SERVICE_OPTIONS,\n);\n"]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@yuants/vendor-okx",
3
- "version": "0.31.1",
3
+ "version": "0.31.2",
4
4
  "main": "lib/index.js",
5
5
  "files": [
6
6
  "dist",
@@ -8,20 +8,20 @@
8
8
  "temp"
9
9
  ],
10
10
  "dependencies": {
11
- "@yuants/protocol": "0.53.4",
12
- "@yuants/transfer": "0.2.41",
13
- "@yuants/data-account": "0.11.1",
14
- "@yuants/data-order": "0.7.2",
15
- "@yuants/utils": "0.16.0",
16
- "@yuants/cache": "0.3.5",
17
- "@yuants/sql": "0.9.32",
18
- "@yuants/data-series": "0.3.54",
19
- "@yuants/data-product": "0.5.2",
20
- "@yuants/data-ohlc": "0.5.0",
21
- "@yuants/data-interest-rate": "0.2.0",
22
- "@yuants/data-quote": "0.4.1",
23
- "@yuants/data-trade": "0.1.23",
24
- "@yuants/exchange": "0.8.2",
11
+ "@yuants/protocol": "0.53.5",
12
+ "@yuants/transfer": "0.2.42",
13
+ "@yuants/data-account": "0.11.2",
14
+ "@yuants/data-order": "0.7.3",
15
+ "@yuants/utils": "0.17.0",
16
+ "@yuants/cache": "0.3.6",
17
+ "@yuants/sql": "0.9.33",
18
+ "@yuants/data-series": "0.3.55",
19
+ "@yuants/data-product": "0.5.3",
20
+ "@yuants/data-ohlc": "0.5.1",
21
+ "@yuants/data-interest-rate": "0.2.1",
22
+ "@yuants/data-quote": "0.4.2",
23
+ "@yuants/data-trade": "0.1.24",
24
+ "@yuants/exchange": "0.8.3",
25
25
  "rxjs": "~7.5.6",
26
26
  "ws": "~8.8.1"
27
27
  },
@@ -32,7 +32,7 @@
32
32
  "@rushstack/heft-node-rig": "~1.10.7",
33
33
  "@types/heft-jest": "1.0.3",
34
34
  "@types/node": "22",
35
- "@yuants/extension": "0.2.33",
35
+ "@yuants/extension": "0.2.34",
36
36
  "@yuants/tool-kit": "0.2.1",
37
37
  "typescript": "~4.7.4",
38
38
  "ts-node": "~10.9.2",
@@ -1,13 +1,13 @@
1
1
  {
2
- "apps/vendor-okx/CHANGELOG.json": "4a0f07c9d9729f0ba0ee0872a1ab6cedaf3f4989",
3
- "apps/vendor-okx/CHANGELOG.md": "0bb67e3cd781b53f48c7e0b7eea675ac93be2e0f",
2
+ "apps/vendor-okx/CHANGELOG.json": "d4edc5a5a4d30464453f0ae75a8114432a97c8a7",
3
+ "apps/vendor-okx/CHANGELOG.md": "c6808e06c24c55043bad562427c68bea8b78f6c5",
4
4
  "apps/vendor-okx/README.md": "68caeb8e383d77ece973cd70f4b167b86abb54c3",
5
5
  "apps/vendor-okx/api-extractor.json": "62f4fd324425b9a235f0c117975967aab09ced0c",
6
6
  "apps/vendor-okx/config/jest.config.json": "4bb17bde3ee911163a3edb36a6eb71491d80b1bd",
7
7
  "apps/vendor-okx/config/rig.json": "f6c7b5537dc77a3170ba9f008bae3b6c3ee11956",
8
8
  "apps/vendor-okx/config/typescript.json": "854907e8a821f2050f6533368db160c649c25348",
9
9
  "apps/vendor-okx/etc/vendor-okx.api.md": "92c54ccd547d2ad81ca6088158ca193e85c208df",
10
- "apps/vendor-okx/package.json": "b6ac80845d22b6286ee3759b114e3bdf45487317",
10
+ "apps/vendor-okx/package.json": "6cb7987ea79196a5d71e711afa2d37ca2f0a55dc",
11
11
  "apps/vendor-okx/src/account-actions-with-credential.ts": "1a2de787b588e98ceef60b3ffb951f298504bf12",
12
12
  "apps/vendor-okx/src/account.ts": "672014c974457b438cf026f763d6eecfe585c82b",
13
13
  "apps/vendor-okx/src/accountInfos/earning.ts": "62aaeb3b62fa9197d07ee14155625530cdb9b1cd",
@@ -40,8 +40,8 @@
40
40
  "apps/vendor-okx/src/public-data/product.ts": "9caa1b0d9fa621800870ef47086767f6f5810ad9",
41
41
  "apps/vendor-okx/src/public-data/quote.ts": "da471098f6c59376f7221bf6fc3d2625eeacecee",
42
42
  "apps/vendor-okx/src/services.ts": "aeaf5f9d0a87347be6150b28961c5a7c0886b1d8",
43
- "apps/vendor-okx/src/services/interest-rate-service.ts": "b368f881e9bf7a44497153d39e4e1c8ec0ce42a8",
44
- "apps/vendor-okx/src/services/ohlc-service.ts": "6ee7b3ac7d6e91d97d3eba2bc72365155044d005",
43
+ "apps/vendor-okx/src/services/interest-rate-service.ts": "025ee9fef91529509f088872956ed3d439f49fb8",
44
+ "apps/vendor-okx/src/services/ohlc-service.ts": "bda7d07646fc54c0cbf4a5ec6e90e773c4a4c4bb",
45
45
  "apps/vendor-okx/src/services/quotes.ts": "2f2278acf1884c8c8b29f9bb79221955b2eb8016",
46
46
  "apps/vendor-okx/src/strategy-account.ts": "2d8f913e19c4402eab249291aaab0b77bc4d9ff8",
47
47
  "apps/vendor-okx/src/trade.ts": "17a2afcdbf2ec69944a73d3d097660675dbe09a4",
@@ -51,20 +51,20 @@
51
51
  "apps/vendor-okx/src/ws.ts": "5e8fe8c97c7da92c08ddf07ab47faf7976433ca3",
52
52
  "apps/vendor-okx/tsconfig.json": "81da8f78196974b5d15da0edb6b2d9f48641063c",
53
53
  "apps/vendor-okx/.rush/temp/shrinkwrap-deps.json": "c9b5d11ff2d36318a68aca38e2baeffbaf3bfc4c",
54
- "libraries/protocol/temp/package-deps.json": "a30b39ceb4cd530ed6bc4e97433f995b026b26d9",
55
- "libraries/transfer/temp/package-deps.json": "6d0942aa4c50b35a8e47a500fe494fb4a08a99e5",
56
- "libraries/data-account/temp/package-deps.json": "363f171a8ec4ae558e4b20626b06bc8ae145ce8a",
57
- "libraries/data-order/temp/package-deps.json": "daedd350fe85f0564f7739c73689fb09664132de",
58
- "libraries/utils/temp/package-deps.json": "7a9e2336d7ad44e827d81e9722767d6cdf99fc1f",
59
- "libraries/cache/temp/package-deps.json": "2e6c6db8f750a2e173a3c4b9a57d22fbd6f9181d",
60
- "libraries/sql/temp/package-deps.json": "252d819797cb0a4bbc579075867624b05b19dabb",
61
- "libraries/data-series/temp/package-deps.json": "71b373ec83ce1188001e341aefaca704aa4a5c38",
62
- "libraries/data-product/temp/package-deps.json": "4f525fda6d65677f9fbdcd1b4480970dd6ff9e5b",
63
- "libraries/data-ohlc/temp/package-deps.json": "2115e384567d1b0958c085f455da9bed5a638780",
64
- "libraries/data-interest-rate/temp/package-deps.json": "0aa2057c1c5c432be87e97b8df22984bdcab307c",
65
- "libraries/data-quote/temp/package-deps.json": "07e342d9dba4d5f5d89b62c74f079425b560cb1f",
66
- "libraries/data-trade/temp/package-deps.json": "d37700374a5c9414728040fafe27ee9f07d0d601",
67
- "libraries/exchange/temp/package-deps.json": "5267eb70cd2e7df4a645f94133ad3428b52c567e",
68
- "libraries/extension/temp/package-deps.json": "fcddc4a668ecf969ca593c67ff02543fe69a6829",
54
+ "libraries/protocol/temp/package-deps.json": "359ac43a7382bafa1f91541e084256baec86d40b",
55
+ "libraries/transfer/temp/package-deps.json": "266da813de0fc7b8de0acb4f1a561bd5cab7f294",
56
+ "libraries/data-account/temp/package-deps.json": "a94782e226c47a0f5198a5cca619ae7815055f4a",
57
+ "libraries/data-order/temp/package-deps.json": "e89dd8f11cdbe84eb8bdf474105abccdf51abfaa",
58
+ "libraries/utils/temp/package-deps.json": "acd039ba8f5f93e664764ad2c8474878bd105c3b",
59
+ "libraries/cache/temp/package-deps.json": "6f7f290f9a9c2e42e937d8ce3b55a6b541d2e835",
60
+ "libraries/sql/temp/package-deps.json": "43f7034c83d7ac4b6c4224b8e916ac39fd78057d",
61
+ "libraries/data-series/temp/package-deps.json": "ba6b4e5b9beec9dbe54fcdc12820d8af70356d50",
62
+ "libraries/data-product/temp/package-deps.json": "00c23f21d7977f38a942ed06f4812e5ddc2b6248",
63
+ "libraries/data-ohlc/temp/package-deps.json": "919692801e80ce34e9af7470712ac4d1c0086af7",
64
+ "libraries/data-interest-rate/temp/package-deps.json": "5f955d9b9c04936964ba20a37d5e00816fb33f67",
65
+ "libraries/data-quote/temp/package-deps.json": "6ee7c2a4c28dd7947039fd9561ff045400848bde",
66
+ "libraries/data-trade/temp/package-deps.json": "bcd0c74aa6f0704689aee2490656360febc6571d",
67
+ "libraries/exchange/temp/package-deps.json": "a254260f066adc3e196d020f7eae7354db045404",
68
+ "libraries/extension/temp/package-deps.json": "89c372a6eab7dfe766edc0b102492364aa8684fe",
69
69
  "tools/toolkit/temp/package-deps.json": "23e053490eb8feade23e4d45de4e54883e322711"
70
70
  }