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.
- package/dist/esm/generated/src/apis/DataFeedsApi.d.ts +220 -0
- package/dist/esm/generated/src/apis/DataFeedsApi.js +397 -0
- package/dist/esm/generated/src/apis/index.d.ts +1 -0
- package/dist/esm/generated/src/apis/index.js +1 -0
- package/dist/esm/generated/src/models/FeedFetchHistoricalPrices200Response.d.ts +39 -0
- package/dist/esm/generated/src/models/FeedFetchHistoricalPrices200Response.js +44 -0
- package/dist/esm/generated/src/models/FeedFetchOHLCV200Response.d.ts +38 -0
- package/dist/esm/generated/src/models/FeedFetchOHLCV200Response.js +43 -0
- package/dist/esm/generated/src/models/FeedFetchOracleHistory200Response.d.ts +39 -0
- package/dist/esm/generated/src/models/FeedFetchOracleHistory200Response.js +44 -0
- package/dist/esm/generated/src/models/FeedFetchOracleRound200Response.d.ts +39 -0
- package/dist/esm/generated/src/models/FeedFetchOracleRound200Response.js +44 -0
- package/dist/esm/generated/src/models/FeedFetchOrderBook200Response.d.ts +39 -0
- package/dist/esm/generated/src/models/FeedFetchOrderBook200Response.js +44 -0
- package/dist/esm/generated/src/models/FeedFetchOrderBook200ResponseData.d.ts +56 -0
- package/dist/esm/generated/src/models/FeedFetchOrderBook200ResponseData.js +49 -0
- package/dist/esm/generated/src/models/FeedFetchTicker200Response.d.ts +39 -0
- package/dist/esm/generated/src/models/FeedFetchTicker200Response.js +44 -0
- package/dist/esm/generated/src/models/FeedFetchTickers200Response.d.ts +41 -0
- package/dist/esm/generated/src/models/FeedFetchTickers200Response.js +45 -0
- package/dist/esm/generated/src/models/FeedList200Response.d.ts +38 -0
- package/dist/esm/generated/src/models/FeedList200Response.js +43 -0
- package/dist/esm/generated/src/models/FeedLoadMarkets200Response.d.ts +41 -0
- package/dist/esm/generated/src/models/FeedLoadMarkets200Response.js +45 -0
- package/dist/esm/generated/src/models/FeedMarket.d.ts +68 -0
- package/dist/esm/generated/src/models/FeedMarket.js +61 -0
- package/dist/esm/generated/src/models/FeedOracleRound.d.ts +74 -0
- package/dist/esm/generated/src/models/FeedOracleRound.js +69 -0
- package/dist/esm/generated/src/models/FeedTicker.d.ts +158 -0
- package/dist/esm/generated/src/models/FeedTicker.js +85 -0
- package/dist/esm/generated/src/models/index.d.ts +13 -0
- package/dist/esm/generated/src/models/index.js +13 -0
- package/dist/esm/pmxt/feed-client.d.ts +75 -0
- package/dist/esm/pmxt/feed-client.js +69 -0
- package/dist/generated/src/apis/DataFeedsApi.d.ts +220 -0
- package/dist/generated/src/apis/DataFeedsApi.js +434 -0
- package/dist/generated/src/apis/index.d.ts +1 -0
- package/dist/generated/src/apis/index.js +1 -0
- package/dist/generated/src/models/FeedFetchHistoricalPrices200Response.d.ts +39 -0
- package/dist/generated/src/models/FeedFetchHistoricalPrices200Response.js +51 -0
- package/dist/generated/src/models/FeedFetchOHLCV200Response.d.ts +38 -0
- package/dist/generated/src/models/FeedFetchOHLCV200Response.js +50 -0
- package/dist/generated/src/models/FeedFetchOracleHistory200Response.d.ts +39 -0
- package/dist/generated/src/models/FeedFetchOracleHistory200Response.js +51 -0
- package/dist/generated/src/models/FeedFetchOracleRound200Response.d.ts +39 -0
- package/dist/generated/src/models/FeedFetchOracleRound200Response.js +51 -0
- package/dist/generated/src/models/FeedFetchOrderBook200Response.d.ts +39 -0
- package/dist/generated/src/models/FeedFetchOrderBook200Response.js +51 -0
- package/dist/generated/src/models/FeedFetchOrderBook200ResponseData.d.ts +56 -0
- package/dist/generated/src/models/FeedFetchOrderBook200ResponseData.js +56 -0
- package/dist/generated/src/models/FeedFetchTicker200Response.d.ts +39 -0
- package/dist/generated/src/models/FeedFetchTicker200Response.js +51 -0
- package/dist/generated/src/models/FeedFetchTickers200Response.d.ts +41 -0
- package/dist/generated/src/models/FeedFetchTickers200Response.js +52 -0
- package/dist/generated/src/models/FeedList200Response.d.ts +38 -0
- package/dist/generated/src/models/FeedList200Response.js +50 -0
- package/dist/generated/src/models/FeedLoadMarkets200Response.d.ts +41 -0
- package/dist/generated/src/models/FeedLoadMarkets200Response.js +52 -0
- package/dist/generated/src/models/FeedMarket.d.ts +68 -0
- package/dist/generated/src/models/FeedMarket.js +68 -0
- package/dist/generated/src/models/FeedOracleRound.d.ts +74 -0
- package/dist/generated/src/models/FeedOracleRound.js +76 -0
- package/dist/generated/src/models/FeedTicker.d.ts +158 -0
- package/dist/generated/src/models/FeedTicker.js +92 -0
- package/dist/generated/src/models/index.d.ts +13 -0
- package/dist/generated/src/models/index.js +13 -0
- package/dist/pmxt/feed-client.d.ts +75 -0
- package/dist/pmxt/feed-client.js +73 -0
- package/generated/.openapi-generator/FILES +28 -0
- package/generated/docs/DataFeedsApi.md +660 -0
- package/generated/docs/FeedFetchHistoricalPrices200Response.md +36 -0
- package/generated/docs/FeedFetchOHLCV200Response.md +36 -0
- package/generated/docs/FeedFetchOracleHistory200Response.md +36 -0
- package/generated/docs/FeedFetchOracleRound200Response.md +36 -0
- package/generated/docs/FeedFetchOrderBook200Response.md +36 -0
- package/generated/docs/FeedFetchOrderBook200ResponseData.md +42 -0
- package/generated/docs/FeedFetchTicker200Response.md +36 -0
- package/generated/docs/FeedFetchTickers200Response.md +36 -0
- package/generated/docs/FeedList200Response.md +36 -0
- package/generated/docs/FeedLoadMarkets200Response.md +36 -0
- package/generated/docs/FeedMarket.md +47 -0
- package/generated/docs/FeedOracleRound.md +49 -0
- package/generated/docs/FeedTicker.md +77 -0
- package/generated/package.json +1 -1
- package/generated/src/apis/DataFeedsApi.ts +624 -0
- package/generated/src/apis/index.ts +1 -0
- package/generated/src/models/FeedFetchHistoricalPrices200Response.ts +81 -0
- package/generated/src/models/FeedFetchOHLCV200Response.ts +73 -0
- package/generated/src/models/FeedFetchOracleHistory200Response.ts +81 -0
- package/generated/src/models/FeedFetchOracleRound200Response.ts +81 -0
- package/generated/src/models/FeedFetchOrderBook200Response.ts +81 -0
- package/generated/src/models/FeedFetchOrderBook200ResponseData.ts +97 -0
- package/generated/src/models/FeedFetchTicker200Response.ts +81 -0
- package/generated/src/models/FeedFetchTickers200Response.ts +81 -0
- package/generated/src/models/FeedList200Response.ts +73 -0
- package/generated/src/models/FeedLoadMarkets200Response.ts +81 -0
- package/generated/src/models/FeedMarket.ts +117 -0
- package/generated/src/models/FeedOracleRound.ts +128 -0
- package/generated/src/models/FeedTicker.ts +234 -0
- package/generated/src/models/index.ts +13 -0
- package/package.json +2 -2
- 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
|
+
}
|