@yuants/vendor-hyperliquid 0.7.1 → 0.7.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.
@@ -40,7 +40,7 @@ createSQLWriter(terminal, {
40
40
  });
41
41
  createSeriesProvider(terminal, {
42
42
  tableName: 'interest_rate',
43
- series_id_prefix_parts: ['HYPERLIQUID'],
43
+ series_id_prefix_parts: ['HYPERLIQUID', 'PERPETUAL'],
44
44
  reversed: true,
45
45
  serviceOptions: { concurrent: 1 },
46
46
  queryFn: function ({ series_id, started_at, ended_at }) {
@@ -48,10 +48,7 @@ createSeriesProvider(terminal, {
48
48
  return __asyncGenerator(this, arguments, function* () {
49
49
  const start = started_at || 0;
50
50
  const end = ended_at || Date.now();
51
- const [datasource_id, , instId] = decodePath(series_id);
52
- if (datasource_id !== 'HYPERLIQUID') {
53
- throw new Error(`Invalid datasource: ${datasource_id}`);
54
- }
51
+ const [, , instId] = decodePath(series_id);
55
52
  const coin = (_a = instId === null || instId === void 0 ? void 0 : instId.split('-')) === null || _a === void 0 ? void 0 : _a[0];
56
53
  if (!coin) {
57
54
  throw new Error(`Invalid product in series_id: ${series_id}`);
@@ -1 +1 @@
1
- {"version":3,"file":"interest-rate.js","sourceRoot":"","sources":["../../../src/services/markets/interest-rate.ts"],"names":[],"mappings":";;;;;;;;;;;;AACA,OAAO,EAAE,oBAAoB,EAAyB,MAAM,qBAAqB,CAAC;AAClF,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAC5C,OAAO,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAC9C,OAAO,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AACnE,OAAO,EAAE,KAAK,EAAE,GAAG,EAAE,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,WAAW,EAAE,GAAG,EAAE,MAAM,MAAM,CAAC;AAC7E,OAAO,EAAE,yBAAyB,EAAE,qBAAqB,EAAE,MAAM,sBAAsB,CAAC;AAExF,MAAM,QAAQ,GAAG,QAAQ,CAAC,WAAW,EAAE,CAAC;AAExC,MAAM,kBAAkB,GAAG,KAAK,CAAC,KAAK,IAAI,EAAE;IAC1C,MAAM,IAAI,GAAG,MAAM,qBAAqB,EAAE,CAAC;IAC3C,OAAO,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC;QACrC,UAAU,EAAE,UAAU,CAAC,aAAa,EAAE,WAAW,EAAE,GAAG,OAAO,CAAC,IAAI,MAAM,CAAC;QACzE,aAAa,EAAE,aAAa;QAC5B,gBAAgB,EAAE,KAAK;KACxB,CAAC,CAAC,CAAC;AACN,CAAC,CAAC,CAAC,IAAI,CACL,GAAG,CAAC,EAAE,KAAK,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,UAAU,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,EAAE,6BAA6B,EAAE,GAAG,CAAC,EAAE,CAAC,EAClG,KAAK,CAAC,EAAE,KAAK,EAAE,KAAM,EAAE,CAAC,EACxB,MAAM,CAAC,EAAE,KAAK,EAAE,OAAQ,EAAE,CAAC,EAC3B,WAAW,CAAC,EAAE,UAAU,EAAE,CAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,CAC/C,CAAC;AAEF,eAAe,CAAwB,QAAQ,EAAE;IAC/C,KAAK,EAAE,kBAAkB,CAAC,IAAI,CAC5B,GAAG,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,gBAAgB,KAAK,KAAK,CAAC,CAAC,EACnF,QAAQ,EAAE,EACV,GAAG,CACD,CAAC,OAAO,EAAyB,EAAE,CAAC,CAAC;QACnC,SAAS,EAAE,OAAO,CAAC,UAAU;QAC7B,UAAU,EAAE,eAAe;QAC3B,YAAY,EAAE,WAAW;QACzB,aAAa,EAAE,KAAK;QACpB,QAAQ,EAAE,KAAK;QACf,YAAY,EAAE,CAAC;KAChB,CAAC,CACH,CACF;IACD,SAAS,EAAE,wBAAwB;IACnC,aAAa,EAAE,IAAI;IACnB,YAAY,EAAE,CAAC,WAAW,EAAE,YAAY,CAAC;CAC1C,CAAC,CAAC;AAEH,oBAAoB,CAAgB,QAAQ,EAAE;IAC5C,SAAS,EAAE,eAAe;IAC1B,sBAAsB,EAAE,CAAC,aAAa,CAAC;IACvC,QAAQ,EAAE,IAAI;IACd,cAAc,EAAE,EAAE,UAAU,EAAE,CAAC,EAAE;IACjC,OAAO,EAAE,UAAiB,EAAE,SAAS,EAAE,UAAU,EAAE,QAAQ,EAAE;;;YAC3D,MAAM,KAAK,GAAG,UAAU,IAAI,CAAC,CAAC;YAC9B,MAAM,GAAG,GAAG,QAAQ,IAAI,IAAI,CAAC,GAAG,EAAE,CAAC;YACnC,MAAM,CAAC,aAAa,EAAE,AAAD,EAAG,MAAM,CAAC,GAAG,UAAU,CAAC,SAAS,CAAC,CAAC;YACxD,IAAI,aAAa,KAAK,aAAa,EAAE;gBACnC,MAAM,IAAI,KAAK,CAAC,uBAAuB,aAAa,EAAE,CAAC,CAAC;aACzD;YACD,MAAM,IAAI,GAAG,MAAA,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,KAAK,CAAC,GAAG,CAAC,0CAAG,CAAC,CAAC,CAAC;YACrC,IAAI,CAAC,IAAI,EAAE;gBACT,MAAM,IAAI,KAAK,CAAC,iCAAiC,SAAS,EAAE,CAAC,CAAC;aAC/D;YACD,IAAI,OAAO,GAAG,KAAK,CAAC;YACpB,OAAO,OAAO,IAAI,GAAG,EAAE;gBACrB,MAAM,GAAG,GAAG,cAAM,yBAAyB,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,OAAO,EAAE,OAAO,EAAE,GAAG,EAAE,CAAC,CAAA,CAAC;gBACxF,IAAI,CAAC,GAAG,IAAI,GAAG,CAAC,MAAM,KAAK,CAAC,EAAE;oBAC5B,MAAM;iBACP;gBACD,MAAM,QAAQ,GAAG,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,IAAI,OAAO,IAAI,CAAC,CAAC,IAAI,IAAI,GAAG,CAAC,CAAC;gBACvE,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE;oBACpB,MAAM;iBACP;gBACD,oBAAM,QAAQ,CAAC,GAAG,CAChB,CAAC,CAAC,EAAiB,EAAE,CAAC,CAAC;oBACrB,SAAS;oBACT,UAAU,EAAE,SAAS;oBACrB,aAAa,EAAE,aAAa;oBAC5B,UAAU,EAAE,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC;oBAC9B,SAAS,EAAE,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,WAAW,CAAC,EAAE;oBAC1C,UAAU,EAAE,GAAG,CAAC,CAAC,WAAW,EAAE;oBAC9B,gBAAgB,EAAE,EAAE;iBACrB,CAAC,CACH,CAAA,CAAC;gBACF,IAAI,GAAG,CAAC,MAAM,GAAG,GAAG,EAAE;oBACpB,MAAM;iBACP;gBACD,OAAO,GAAG,QAAQ,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC;aAClD;;KACF;CACF,CAAC,CAAC","sourcesContent":["import { IInterestRate } from '@yuants/data-interest-rate';\nimport { createSeriesProvider, ISeriesCollectingTask } from '@yuants/data-series';\nimport { Terminal } from '@yuants/protocol';\nimport { createSQLWriter } from '@yuants/sql';\nimport { decodePath, encodePath, formatTime } from '@yuants/utils';\nimport { defer, map, mergeAll, repeat, retry, shareReplay, tap } from 'rxjs';\nimport { getHistoricalFundingRates, getPerpetualsMetaData } from '../../api/public-api';\n\nconst terminal = Terminal.fromNodeEnv();\n\nconst perpetualProducts$ = defer(async () => {\n const meta = await getPerpetualsMetaData();\n return meta.universe.map((product) => ({\n product_id: encodePath('HYPERLIQUID', 'PERPETUAL', `${product.name}-USD`),\n datasource_id: 'HYPERLIQUID',\n no_interest_rate: false,\n }));\n}).pipe(\n tap({ error: (err) => console.error(formatTime(Date.now()), 'PerpetualProductFetchFailed', err) }),\n retry({ delay: 10_000 }),\n repeat({ delay: 3600_000 }),\n shareReplay({ bufferSize: 1, refCount: true }),\n);\n\ncreateSQLWriter<ISeriesCollectingTask>(terminal, {\n data$: perpetualProducts$.pipe(\n map((products) => products.filter((product) => product.no_interest_rate === false)),\n mergeAll(),\n map(\n (product): ISeriesCollectingTask => ({\n series_id: product.product_id,\n table_name: 'interest_rate',\n cron_pattern: '0 * * * *',\n cron_timezone: 'UTC',\n disabled: false,\n replay_count: 0,\n }),\n ),\n ),\n tableName: 'series_collecting_task',\n writeInterval: 1000,\n conflictKeys: ['series_id', 'table_name'],\n});\n\ncreateSeriesProvider<IInterestRate>(terminal, {\n tableName: 'interest_rate',\n series_id_prefix_parts: ['HYPERLIQUID'],\n reversed: true,\n serviceOptions: { concurrent: 1 },\n queryFn: async function* ({ series_id, started_at, ended_at }) {\n const start = started_at || 0;\n const end = ended_at || Date.now();\n const [datasource_id, , instId] = decodePath(series_id);\n if (datasource_id !== 'HYPERLIQUID') {\n throw new Error(`Invalid datasource: ${datasource_id}`);\n }\n const coin = instId?.split('-')?.[0];\n if (!coin) {\n throw new Error(`Invalid product in series_id: ${series_id}`);\n }\n let current = start;\n while (current <= end) {\n const res = await getHistoricalFundingRates({ coin, startTime: current, endTime: end });\n if (!res || res.length === 0) {\n break;\n }\n const filtered = res.filter((v) => v.time >= current && v.time <= end);\n if (!filtered.length) {\n break;\n }\n yield filtered.map(\n (v): IInterestRate => ({\n series_id,\n product_id: series_id,\n datasource_id: 'HYPERLIQUID',\n created_at: formatTime(v.time),\n long_rate: `${-parseFloat(v.fundingRate)}`,\n short_rate: `${v.fundingRate}`,\n settlement_price: '',\n }),\n );\n if (res.length < 500) {\n break;\n }\n current = filtered[filtered.length - 1].time + 1;\n }\n },\n});\n"]}
1
+ {"version":3,"file":"interest-rate.js","sourceRoot":"","sources":["../../../src/services/markets/interest-rate.ts"],"names":[],"mappings":"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","sourcesContent":["import { IInterestRate } from '@yuants/data-interest-rate';\nimport { createSeriesProvider, ISeriesCollectingTask } from '@yuants/data-series';\nimport { Terminal } from '@yuants/protocol';\nimport { createSQLWriter } from '@yuants/sql';\nimport { decodePath, encodePath, formatTime } from '@yuants/utils';\nimport { defer, map, mergeAll, repeat, retry, shareReplay, tap } from 'rxjs';\nimport { getHistoricalFundingRates, getPerpetualsMetaData } from '../../api/public-api';\n\nconst terminal = Terminal.fromNodeEnv();\n\nconst perpetualProducts$ = defer(async () => {\n const meta = await getPerpetualsMetaData();\n return meta.universe.map((product) => ({\n product_id: encodePath('HYPERLIQUID', 'PERPETUAL', `${product.name}-USD`),\n datasource_id: 'HYPERLIQUID',\n no_interest_rate: false,\n }));\n}).pipe(\n tap({ error: (err) => console.error(formatTime(Date.now()), 'PerpetualProductFetchFailed', err) }),\n retry({ delay: 10_000 }),\n repeat({ delay: 3600_000 }),\n shareReplay({ bufferSize: 1, refCount: true }),\n);\n\ncreateSQLWriter<ISeriesCollectingTask>(terminal, {\n data$: perpetualProducts$.pipe(\n map((products) => products.filter((product) => product.no_interest_rate === false)),\n mergeAll(),\n map(\n (product): ISeriesCollectingTask => ({\n series_id: product.product_id,\n table_name: 'interest_rate',\n cron_pattern: '0 * * * *',\n cron_timezone: 'UTC',\n disabled: false,\n replay_count: 0,\n }),\n ),\n ),\n tableName: 'series_collecting_task',\n writeInterval: 1000,\n conflictKeys: ['series_id', 'table_name'],\n});\n\ncreateSeriesProvider<IInterestRate>(terminal, {\n tableName: 'interest_rate',\n series_id_prefix_parts: ['HYPERLIQUID', 'PERPETUAL'],\n reversed: true,\n serviceOptions: { concurrent: 1 },\n queryFn: async function* ({ series_id, started_at, ended_at }) {\n const start = started_at || 0;\n const end = ended_at || Date.now();\n const [, , instId] = decodePath(series_id);\n const coin = instId?.split('-')?.[0];\n if (!coin) {\n throw new Error(`Invalid product in series_id: ${series_id}`);\n }\n let current = start;\n while (current <= end) {\n const res = await getHistoricalFundingRates({ coin, startTime: current, endTime: end });\n if (!res || res.length === 0) {\n break;\n }\n const filtered = res.filter((v) => v.time >= current && v.time <= end);\n if (!filtered.length) {\n break;\n }\n yield filtered.map(\n (v): IInterestRate => ({\n series_id,\n product_id: series_id,\n datasource_id: 'HYPERLIQUID',\n created_at: formatTime(v.time),\n long_rate: `${-parseFloat(v.fundingRate)}`,\n short_rate: `${v.fundingRate}`,\n settlement_price: '',\n }),\n );\n if (res.length < 500) {\n break;\n }\n current = filtered[filtered.length - 1].time + 1;\n }\n },\n});\n"]}
@@ -42,7 +42,7 @@ const perpetualProducts$ = (0, rxjs_1.defer)(async () => {
42
42
  });
43
43
  (0, data_series_1.createSeriesProvider)(terminal, {
44
44
  tableName: 'interest_rate',
45
- series_id_prefix_parts: ['HYPERLIQUID'],
45
+ series_id_prefix_parts: ['HYPERLIQUID', 'PERPETUAL'],
46
46
  reversed: true,
47
47
  serviceOptions: { concurrent: 1 },
48
48
  queryFn: function ({ series_id, started_at, ended_at }) {
@@ -50,10 +50,7 @@ const perpetualProducts$ = (0, rxjs_1.defer)(async () => {
50
50
  return __asyncGenerator(this, arguments, function* () {
51
51
  const start = started_at || 0;
52
52
  const end = ended_at || Date.now();
53
- const [datasource_id, , instId] = (0, utils_1.decodePath)(series_id);
54
- if (datasource_id !== 'HYPERLIQUID') {
55
- throw new Error(`Invalid datasource: ${datasource_id}`);
56
- }
53
+ const [, , instId] = (0, utils_1.decodePath)(series_id);
57
54
  const coin = (_a = instId === null || instId === void 0 ? void 0 : instId.split('-')) === null || _a === void 0 ? void 0 : _a[0];
58
55
  if (!coin) {
59
56
  throw new Error(`Invalid product in series_id: ${series_id}`);
@@ -1 +1 @@
1
- {"version":3,"file":"interest-rate.js","sourceRoot":"","sources":["../../../src/services/markets/interest-rate.ts"],"names":[],"mappings":"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","sourcesContent":["import { IInterestRate } from '@yuants/data-interest-rate';\nimport { createSeriesProvider, ISeriesCollectingTask } from '@yuants/data-series';\nimport { Terminal } from '@yuants/protocol';\nimport { createSQLWriter } from '@yuants/sql';\nimport { decodePath, encodePath, formatTime } from '@yuants/utils';\nimport { defer, map, mergeAll, repeat, retry, shareReplay, tap } from 'rxjs';\nimport { getHistoricalFundingRates, getPerpetualsMetaData } from '../../api/public-api';\n\nconst terminal = Terminal.fromNodeEnv();\n\nconst perpetualProducts$ = defer(async () => {\n const meta = await getPerpetualsMetaData();\n return meta.universe.map((product) => ({\n product_id: encodePath('HYPERLIQUID', 'PERPETUAL', `${product.name}-USD`),\n datasource_id: 'HYPERLIQUID',\n no_interest_rate: false,\n }));\n}).pipe(\n tap({ error: (err) => console.error(formatTime(Date.now()), 'PerpetualProductFetchFailed', err) }),\n retry({ delay: 10_000 }),\n repeat({ delay: 3600_000 }),\n shareReplay({ bufferSize: 1, refCount: true }),\n);\n\ncreateSQLWriter<ISeriesCollectingTask>(terminal, {\n data$: perpetualProducts$.pipe(\n map((products) => products.filter((product) => product.no_interest_rate === false)),\n mergeAll(),\n map(\n (product): ISeriesCollectingTask => ({\n series_id: product.product_id,\n table_name: 'interest_rate',\n cron_pattern: '0 * * * *',\n cron_timezone: 'UTC',\n disabled: false,\n replay_count: 0,\n }),\n ),\n ),\n tableName: 'series_collecting_task',\n writeInterval: 1000,\n conflictKeys: ['series_id', 'table_name'],\n});\n\ncreateSeriesProvider<IInterestRate>(terminal, {\n tableName: 'interest_rate',\n series_id_prefix_parts: ['HYPERLIQUID'],\n reversed: true,\n serviceOptions: { concurrent: 1 },\n queryFn: async function* ({ series_id, started_at, ended_at }) {\n const start = started_at || 0;\n const end = ended_at || Date.now();\n const [datasource_id, , instId] = decodePath(series_id);\n if (datasource_id !== 'HYPERLIQUID') {\n throw new Error(`Invalid datasource: ${datasource_id}`);\n }\n const coin = instId?.split('-')?.[0];\n if (!coin) {\n throw new Error(`Invalid product in series_id: ${series_id}`);\n }\n let current = start;\n while (current <= end) {\n const res = await getHistoricalFundingRates({ coin, startTime: current, endTime: end });\n if (!res || res.length === 0) {\n break;\n }\n const filtered = res.filter((v) => v.time >= current && v.time <= end);\n if (!filtered.length) {\n break;\n }\n yield filtered.map(\n (v): IInterestRate => ({\n series_id,\n product_id: series_id,\n datasource_id: 'HYPERLIQUID',\n created_at: formatTime(v.time),\n long_rate: `${-parseFloat(v.fundingRate)}`,\n short_rate: `${v.fundingRate}`,\n settlement_price: '',\n }),\n );\n if (res.length < 500) {\n break;\n }\n current = filtered[filtered.length - 1].time + 1;\n }\n },\n});\n"]}
1
+ {"version":3,"file":"interest-rate.js","sourceRoot":"","sources":["../../../src/services/markets/interest-rate.ts"],"names":[],"mappings":"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","sourcesContent":["import { IInterestRate } from '@yuants/data-interest-rate';\nimport { createSeriesProvider, ISeriesCollectingTask } from '@yuants/data-series';\nimport { Terminal } from '@yuants/protocol';\nimport { createSQLWriter } from '@yuants/sql';\nimport { decodePath, encodePath, formatTime } from '@yuants/utils';\nimport { defer, map, mergeAll, repeat, retry, shareReplay, tap } from 'rxjs';\nimport { getHistoricalFundingRates, getPerpetualsMetaData } from '../../api/public-api';\n\nconst terminal = Terminal.fromNodeEnv();\n\nconst perpetualProducts$ = defer(async () => {\n const meta = await getPerpetualsMetaData();\n return meta.universe.map((product) => ({\n product_id: encodePath('HYPERLIQUID', 'PERPETUAL', `${product.name}-USD`),\n datasource_id: 'HYPERLIQUID',\n no_interest_rate: false,\n }));\n}).pipe(\n tap({ error: (err) => console.error(formatTime(Date.now()), 'PerpetualProductFetchFailed', err) }),\n retry({ delay: 10_000 }),\n repeat({ delay: 3600_000 }),\n shareReplay({ bufferSize: 1, refCount: true }),\n);\n\ncreateSQLWriter<ISeriesCollectingTask>(terminal, {\n data$: perpetualProducts$.pipe(\n map((products) => products.filter((product) => product.no_interest_rate === false)),\n mergeAll(),\n map(\n (product): ISeriesCollectingTask => ({\n series_id: product.product_id,\n table_name: 'interest_rate',\n cron_pattern: '0 * * * *',\n cron_timezone: 'UTC',\n disabled: false,\n replay_count: 0,\n }),\n ),\n ),\n tableName: 'series_collecting_task',\n writeInterval: 1000,\n conflictKeys: ['series_id', 'table_name'],\n});\n\ncreateSeriesProvider<IInterestRate>(terminal, {\n tableName: 'interest_rate',\n series_id_prefix_parts: ['HYPERLIQUID', 'PERPETUAL'],\n reversed: true,\n serviceOptions: { concurrent: 1 },\n queryFn: async function* ({ series_id, started_at, ended_at }) {\n const start = started_at || 0;\n const end = ended_at || Date.now();\n const [, , instId] = decodePath(series_id);\n const coin = instId?.split('-')?.[0];\n if (!coin) {\n throw new Error(`Invalid product in series_id: ${series_id}`);\n }\n let current = start;\n while (current <= end) {\n const res = await getHistoricalFundingRates({ coin, startTime: current, endTime: end });\n if (!res || res.length === 0) {\n break;\n }\n const filtered = res.filter((v) => v.time >= current && v.time <= end);\n if (!filtered.length) {\n break;\n }\n yield filtered.map(\n (v): IInterestRate => ({\n series_id,\n product_id: series_id,\n datasource_id: 'HYPERLIQUID',\n created_at: formatTime(v.time),\n long_rate: `${-parseFloat(v.fundingRate)}`,\n short_rate: `${v.fundingRate}`,\n settlement_price: '',\n }),\n );\n if (res.length < 500) {\n break;\n }\n current = filtered[filtered.length - 1].time + 1;\n }\n },\n});\n"]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@yuants/vendor-hyperliquid",
3
- "version": "0.7.1",
3
+ "version": "0.7.2",
4
4
  "main": "lib/index.js",
5
5
  "files": [
6
6
  "dist",
@@ -1,14 +1,14 @@
1
1
  {
2
2
  "apps/vendor-hyperliquid/AGENTS.md": "f0f3df594ce55fbaf78fb040f2850d1abee3449a",
3
- "apps/vendor-hyperliquid/CHANGELOG.json": "0dc58a6b26e5e836018b1d00eeb28105602c8d58",
4
- "apps/vendor-hyperliquid/CHANGELOG.md": "fdd5cb77bc3c1a905b35b5f5a5cc4c687f65b596",
3
+ "apps/vendor-hyperliquid/CHANGELOG.json": "baefa5a83bdaf5d24bf427092e175760cf56a5d2",
4
+ "apps/vendor-hyperliquid/CHANGELOG.md": "9fedad81e910078bc60df5b9f6826f8f932c7b08",
5
5
  "apps/vendor-hyperliquid/SESSION_NOTES.md": "a85524da3692937550f2bc64415c041bec9b94c4",
6
6
  "apps/vendor-hyperliquid/api-extractor.json": "62f4fd324425b9a235f0c117975967aab09ced0c",
7
7
  "apps/vendor-hyperliquid/config/jest.config.json": "4bb17bde3ee911163a3edb36a6eb71491d80b1bd",
8
8
  "apps/vendor-hyperliquid/config/rig.json": "f6c7b5537dc77a3170ba9f008bae3b6c3ee11956",
9
9
  "apps/vendor-hyperliquid/config/typescript.json": "854907e8a821f2050f6533368db160c649c25348",
10
10
  "apps/vendor-hyperliquid/etc/vendor-hyperliquid.api.md": "66675bd88afa1fe945f0d4023984c1c9c3e60a34",
11
- "apps/vendor-hyperliquid/package.json": "7b8d7136562d9f5ad2ccaec13e884c3fa511afd4",
11
+ "apps/vendor-hyperliquid/package.json": "0a4dca289f1b8f39ef67d8ff9c045a75b922590c",
12
12
  "apps/vendor-hyperliquid/src/api/client.ts": "90eb3b63394c9729cc442e0ee5482bfd494aafdd",
13
13
  "apps/vendor-hyperliquid/src/api/private-api.ts": "8fd176063af8f345aeab94444850e82979cef680",
14
14
  "apps/vendor-hyperliquid/src/api/public-api.ts": "fbbb982308eea89a51b93cc21442de6ba45cfd60",
@@ -19,7 +19,7 @@
19
19
  "apps/vendor-hyperliquid/src/services/accounts/perp.ts": "6cce534903e59addcd8e7d6696f9870d115a5c26",
20
20
  "apps/vendor-hyperliquid/src/services/accounts/spot.ts": "426b61925d77bd26aac89f52ab5eaa063d91a867",
21
21
  "apps/vendor-hyperliquid/src/services/exchange.ts": "bc70307f472c37e4f8ce30ac18c247f4973142e3",
22
- "apps/vendor-hyperliquid/src/services/markets/interest-rate.ts": "fbcaabb4f1167a1f2f10ed717a3a7b4ea360af14",
22
+ "apps/vendor-hyperliquid/src/services/markets/interest-rate.ts": "af194dc1f2acf1cc80690fced44b1b7da4250d0e",
23
23
  "apps/vendor-hyperliquid/src/services/markets/ohlc.ts": "6cea84e64ff68ef3a760b35d2e637b66a1ca1615",
24
24
  "apps/vendor-hyperliquid/src/services/markets/product.ts": "05e6136a62c09d3756e0288c1a7c8b05b0fe0774",
25
25
  "apps/vendor-hyperliquid/src/services/markets/quote.ts": "25f8886667e36aa5e5676618a016f464c667c51b",