pmxtjs 2.41.7 → 2.42.3

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.
Files changed (102) hide show
  1. package/dist/esm/generated/src/apis/DataFeedsApi.d.ts +220 -0
  2. package/dist/esm/generated/src/apis/DataFeedsApi.js +397 -0
  3. package/dist/esm/generated/src/apis/index.d.ts +1 -0
  4. package/dist/esm/generated/src/apis/index.js +1 -0
  5. package/dist/esm/generated/src/models/FeedFetchHistoricalPrices200Response.d.ts +39 -0
  6. package/dist/esm/generated/src/models/FeedFetchHistoricalPrices200Response.js +44 -0
  7. package/dist/esm/generated/src/models/FeedFetchOHLCV200Response.d.ts +38 -0
  8. package/dist/esm/generated/src/models/FeedFetchOHLCV200Response.js +43 -0
  9. package/dist/esm/generated/src/models/FeedFetchOracleHistory200Response.d.ts +39 -0
  10. package/dist/esm/generated/src/models/FeedFetchOracleHistory200Response.js +44 -0
  11. package/dist/esm/generated/src/models/FeedFetchOracleRound200Response.d.ts +39 -0
  12. package/dist/esm/generated/src/models/FeedFetchOracleRound200Response.js +44 -0
  13. package/dist/esm/generated/src/models/FeedFetchOrderBook200Response.d.ts +39 -0
  14. package/dist/esm/generated/src/models/FeedFetchOrderBook200Response.js +44 -0
  15. package/dist/esm/generated/src/models/FeedFetchOrderBook200ResponseData.d.ts +56 -0
  16. package/dist/esm/generated/src/models/FeedFetchOrderBook200ResponseData.js +49 -0
  17. package/dist/esm/generated/src/models/FeedFetchTicker200Response.d.ts +39 -0
  18. package/dist/esm/generated/src/models/FeedFetchTicker200Response.js +44 -0
  19. package/dist/esm/generated/src/models/FeedFetchTickers200Response.d.ts +41 -0
  20. package/dist/esm/generated/src/models/FeedFetchTickers200Response.js +45 -0
  21. package/dist/esm/generated/src/models/FeedList200Response.d.ts +38 -0
  22. package/dist/esm/generated/src/models/FeedList200Response.js +43 -0
  23. package/dist/esm/generated/src/models/FeedLoadMarkets200Response.d.ts +41 -0
  24. package/dist/esm/generated/src/models/FeedLoadMarkets200Response.js +45 -0
  25. package/dist/esm/generated/src/models/FeedMarket.d.ts +68 -0
  26. package/dist/esm/generated/src/models/FeedMarket.js +61 -0
  27. package/dist/esm/generated/src/models/FeedOracleRound.d.ts +74 -0
  28. package/dist/esm/generated/src/models/FeedOracleRound.js +69 -0
  29. package/dist/esm/generated/src/models/FeedTicker.d.ts +158 -0
  30. package/dist/esm/generated/src/models/FeedTicker.js +85 -0
  31. package/dist/esm/generated/src/models/index.d.ts +13 -0
  32. package/dist/esm/generated/src/models/index.js +13 -0
  33. package/dist/esm/pmxt/feed-client.d.ts +75 -0
  34. package/dist/esm/pmxt/feed-client.js +69 -0
  35. package/dist/generated/src/apis/DataFeedsApi.d.ts +220 -0
  36. package/dist/generated/src/apis/DataFeedsApi.js +434 -0
  37. package/dist/generated/src/apis/index.d.ts +1 -0
  38. package/dist/generated/src/apis/index.js +1 -0
  39. package/dist/generated/src/models/FeedFetchHistoricalPrices200Response.d.ts +39 -0
  40. package/dist/generated/src/models/FeedFetchHistoricalPrices200Response.js +51 -0
  41. package/dist/generated/src/models/FeedFetchOHLCV200Response.d.ts +38 -0
  42. package/dist/generated/src/models/FeedFetchOHLCV200Response.js +50 -0
  43. package/dist/generated/src/models/FeedFetchOracleHistory200Response.d.ts +39 -0
  44. package/dist/generated/src/models/FeedFetchOracleHistory200Response.js +51 -0
  45. package/dist/generated/src/models/FeedFetchOracleRound200Response.d.ts +39 -0
  46. package/dist/generated/src/models/FeedFetchOracleRound200Response.js +51 -0
  47. package/dist/generated/src/models/FeedFetchOrderBook200Response.d.ts +39 -0
  48. package/dist/generated/src/models/FeedFetchOrderBook200Response.js +51 -0
  49. package/dist/generated/src/models/FeedFetchOrderBook200ResponseData.d.ts +56 -0
  50. package/dist/generated/src/models/FeedFetchOrderBook200ResponseData.js +56 -0
  51. package/dist/generated/src/models/FeedFetchTicker200Response.d.ts +39 -0
  52. package/dist/generated/src/models/FeedFetchTicker200Response.js +51 -0
  53. package/dist/generated/src/models/FeedFetchTickers200Response.d.ts +41 -0
  54. package/dist/generated/src/models/FeedFetchTickers200Response.js +52 -0
  55. package/dist/generated/src/models/FeedList200Response.d.ts +38 -0
  56. package/dist/generated/src/models/FeedList200Response.js +50 -0
  57. package/dist/generated/src/models/FeedLoadMarkets200Response.d.ts +41 -0
  58. package/dist/generated/src/models/FeedLoadMarkets200Response.js +52 -0
  59. package/dist/generated/src/models/FeedMarket.d.ts +68 -0
  60. package/dist/generated/src/models/FeedMarket.js +68 -0
  61. package/dist/generated/src/models/FeedOracleRound.d.ts +74 -0
  62. package/dist/generated/src/models/FeedOracleRound.js +76 -0
  63. package/dist/generated/src/models/FeedTicker.d.ts +158 -0
  64. package/dist/generated/src/models/FeedTicker.js +92 -0
  65. package/dist/generated/src/models/index.d.ts +13 -0
  66. package/dist/generated/src/models/index.js +13 -0
  67. package/dist/pmxt/feed-client.d.ts +75 -0
  68. package/dist/pmxt/feed-client.js +73 -0
  69. package/generated/.openapi-generator/FILES +28 -0
  70. package/generated/docs/DataFeedsApi.md +660 -0
  71. package/generated/docs/FeedFetchHistoricalPrices200Response.md +36 -0
  72. package/generated/docs/FeedFetchOHLCV200Response.md +36 -0
  73. package/generated/docs/FeedFetchOracleHistory200Response.md +36 -0
  74. package/generated/docs/FeedFetchOracleRound200Response.md +36 -0
  75. package/generated/docs/FeedFetchOrderBook200Response.md +36 -0
  76. package/generated/docs/FeedFetchOrderBook200ResponseData.md +42 -0
  77. package/generated/docs/FeedFetchTicker200Response.md +36 -0
  78. package/generated/docs/FeedFetchTickers200Response.md +36 -0
  79. package/generated/docs/FeedList200Response.md +36 -0
  80. package/generated/docs/FeedLoadMarkets200Response.md +36 -0
  81. package/generated/docs/FeedMarket.md +47 -0
  82. package/generated/docs/FeedOracleRound.md +49 -0
  83. package/generated/docs/FeedTicker.md +77 -0
  84. package/generated/package.json +1 -1
  85. package/generated/src/apis/DataFeedsApi.ts +624 -0
  86. package/generated/src/apis/index.ts +1 -0
  87. package/generated/src/models/FeedFetchHistoricalPrices200Response.ts +81 -0
  88. package/generated/src/models/FeedFetchOHLCV200Response.ts +73 -0
  89. package/generated/src/models/FeedFetchOracleHistory200Response.ts +81 -0
  90. package/generated/src/models/FeedFetchOracleRound200Response.ts +81 -0
  91. package/generated/src/models/FeedFetchOrderBook200Response.ts +81 -0
  92. package/generated/src/models/FeedFetchOrderBook200ResponseData.ts +97 -0
  93. package/generated/src/models/FeedFetchTicker200Response.ts +81 -0
  94. package/generated/src/models/FeedFetchTickers200Response.ts +81 -0
  95. package/generated/src/models/FeedList200Response.ts +73 -0
  96. package/generated/src/models/FeedLoadMarkets200Response.ts +81 -0
  97. package/generated/src/models/FeedMarket.ts +117 -0
  98. package/generated/src/models/FeedOracleRound.ts +128 -0
  99. package/generated/src/models/FeedTicker.ts +234 -0
  100. package/generated/src/models/index.ts +13 -0
  101. package/package.json +2 -2
  102. package/pmxt/feed-client.ts +141 -0
@@ -0,0 +1,141 @@
1
+ /**
2
+ * Feed client — CCXT-compatible method names over /api/feeds/* endpoints.
3
+ *
4
+ * Usage:
5
+ * const feed = new FeedClient('chainlink', { pmxtApiKey: '...' });
6
+ * const ticker = await feed.fetchTicker('BTC/USD');
7
+ */
8
+
9
+ import { resolvePmxtBaseUrl } from "./constants.js";
10
+ import { PmxtError } from "./errors.js";
11
+
12
+ export interface Ticker {
13
+ symbol: string;
14
+ info: any;
15
+ timestamp: number | undefined;
16
+ datetime: string | undefined;
17
+ high: number | undefined;
18
+ low: number | undefined;
19
+ bid: number | undefined;
20
+ bidVolume: number | undefined;
21
+ ask: number | undefined;
22
+ askVolume: number | undefined;
23
+ vwap: number | undefined;
24
+ open: number | undefined;
25
+ close: number | undefined;
26
+ last: number | undefined;
27
+ previousClose: number | undefined;
28
+ change: number | undefined;
29
+ percentage: number | undefined;
30
+ average: number | undefined;
31
+ quoteVolume: number | undefined;
32
+ baseVolume: number | undefined;
33
+ indexPrice: number | undefined;
34
+ markPrice: number | undefined;
35
+ }
36
+
37
+ export type Tickers = Record<string, Ticker>;
38
+ export type OHLCV = [number, number, number, number, number, number];
39
+
40
+ export interface Market {
41
+ id: string;
42
+ symbol: string;
43
+ base: string;
44
+ quote: string;
45
+ active: boolean;
46
+ type: string;
47
+ info: any;
48
+ }
49
+
50
+ export interface OracleRound {
51
+ feed: string;
52
+ roundId: string;
53
+ answer: number;
54
+ startedAt: number;
55
+ updatedAt: number;
56
+ answeredInRound: string;
57
+ decimals: number;
58
+ description?: string;
59
+ }
60
+
61
+ export interface FeedClientOptions {
62
+ pmxtApiKey?: string;
63
+ baseUrl?: string;
64
+ }
65
+
66
+ export class FeedClient {
67
+ private readonly feedName: string;
68
+ private readonly baseUrl: string;
69
+ private readonly headers: Record<string, string>;
70
+
71
+ constructor(feedName: string, options: FeedClientOptions = {}) {
72
+ this.feedName = feedName;
73
+ const resolved = resolvePmxtBaseUrl({
74
+ baseUrl: options.baseUrl,
75
+ pmxtApiKey: options.pmxtApiKey,
76
+ });
77
+ this.baseUrl = resolved.baseUrl;
78
+ this.headers = {
79
+ ...(resolved.pmxtApiKey ? { 'Authorization': `Bearer ${resolved.pmxtApiKey}` } : {}),
80
+ };
81
+ }
82
+
83
+ async loadMarkets(): Promise<Record<string, Market>> {
84
+ return this.get<Record<string, Market>>('loadMarkets', {});
85
+ }
86
+
87
+ async fetchTicker(symbol: string): Promise<Ticker> {
88
+ return this.get<Ticker>('fetchTicker', { symbol });
89
+ }
90
+
91
+ async fetchTickers(symbols?: string[]): Promise<Tickers> {
92
+ const params: Record<string, unknown> = {};
93
+ if (symbols) params.symbols = symbols.join(',');
94
+ return this.get<Tickers>('fetchTickers', params);
95
+ }
96
+
97
+ async fetchOHLCV(symbol: string, timeframe?: string, since?: number, limit?: number): Promise<OHLCV[]> {
98
+ return this.get<OHLCV[]>('fetchOHLCV', { symbol, timeframe, since, limit });
99
+ }
100
+
101
+ async fetchOracleRound(feed: string): Promise<OracleRound> {
102
+ return this.get<OracleRound>('fetchOracleRound', { feed });
103
+ }
104
+
105
+ async fetchOracleHistory(feed: string, limit?: number): Promise<OracleRound[]> {
106
+ const params: Record<string, unknown> = { feed };
107
+ if (limit !== undefined) params.limit = limit;
108
+ return this.get<OracleRound[]>('fetchOracleHistory', params);
109
+ }
110
+
111
+ async fetchHistoricalPrices(symbol: string, opts?: {
112
+ fromTimestamp?: number;
113
+ untilTimestamp?: number;
114
+ maxSize?: number;
115
+ order?: 'asc' | 'desc';
116
+ }): Promise<Ticker[]> {
117
+ return this.get<Ticker[]>('fetchHistoricalPrices', { symbol, ...opts });
118
+ }
119
+
120
+ private async get<T>(method: string, params: Record<string, unknown>): Promise<T> {
121
+ const qs = Object.entries(params)
122
+ .filter(([, v]) => v !== undefined && v !== null)
123
+ .map(([k, v]) => `${encodeURIComponent(k)}=${encodeURIComponent(String(v))}`)
124
+ .join('&');
125
+
126
+ const url = `${this.baseUrl}/api/feeds/${this.feedName}/${method}${qs ? '?' + qs : ''}`;
127
+
128
+ const response = await fetch(url, { headers: this.headers });
129
+
130
+ if (!response.ok) {
131
+ const body = await response.json().catch(() => ({}));
132
+ throw new PmxtError(body.error || response.statusText);
133
+ }
134
+
135
+ const json = await response.json() as { success: boolean; data: T; error?: string };
136
+ if (!json.success) {
137
+ throw new PmxtError(json.error || 'Unknown feed error');
138
+ }
139
+ return json.data;
140
+ }
141
+ }