satuchain-api 1.0.1 → 1.0.4
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/README.md +55 -90
- package/dist/cjs/client.cjs +68 -8
- package/dist/cjs/client.js.map +1 -1
- package/dist/cjs/index.cjs +2 -1
- package/dist/cjs/index.js.map +1 -1
- package/dist/esm/client.d.ts +48 -6
- package/dist/esm/client.d.ts.map +1 -1
- package/dist/esm/client.js +67 -7
- package/dist/esm/client.js.map +1 -1
- package/dist/esm/index.d.ts +2 -2
- package/dist/esm/index.d.ts.map +1 -1
- package/dist/esm/index.js +1 -1
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/types.d.ts +59 -2
- package/dist/esm/types.d.ts.map +1 -1
- package/dist/types/client.d.ts +48 -6
- package/dist/types/client.d.ts.map +1 -1
- package/dist/types/index.d.ts +2 -2
- package/dist/types/index.d.ts.map +1 -1
- package/dist/types/types.d.ts +59 -2
- package/dist/types/types.d.ts.map +1 -1
- package/package.json +13 -2
package/README.md
CHANGED
|
@@ -1,15 +1,18 @@
|
|
|
1
1
|
# satuchain-api
|
|
2
2
|
|
|
3
|
-
Official JavaScript/TypeScript SDK for the **SATUCHAIN Developer API** — live forex rates, crypto prices, and
|
|
3
|
+
Official JavaScript/TypeScript SDK for the **SATUCHAIN Developer API** — live forex rates, crypto prices, commodity data, and crude oil prices.
|
|
4
4
|
|
|
5
5
|
[](https://www.npmjs.com/package/satuchain-api)
|
|
6
6
|
[](LICENSE)
|
|
7
7
|
|
|
8
8
|
## Requirements
|
|
9
9
|
|
|
10
|
-
- **≥ 10,000 STU** tokens on BNB Chain to generate an API key
|
|
10
|
+
- **≥ 10,000 STU** tokens on BNB Chain to generate an API key (Basic tier — 60 req/min)
|
|
11
|
+
- **≥ 1,000,000 STU** tokens for Pro tier (300 req/min)
|
|
11
12
|
- Get your key at [dev.satuchain.com](https://dev.satuchain.com)
|
|
12
13
|
|
|
14
|
+
> **Note:** Your key tier is re-validated every 15 minutes. If your STU balance drops below the minimum, the key is automatically deactivated.
|
|
15
|
+
|
|
13
16
|
## Installation
|
|
14
17
|
|
|
15
18
|
```bash
|
|
@@ -29,6 +32,9 @@ const api = new SatuChainAPI("sk_live_YOUR_KEY");
|
|
|
29
32
|
|
|
30
33
|
const data = await api.getCommodities();
|
|
31
34
|
|
|
35
|
+
// Tier info
|
|
36
|
+
console.log(data.tier); // "basic" or "pro"
|
|
37
|
+
|
|
32
38
|
// Forex — units per 1 USD
|
|
33
39
|
console.log(data.forex.IDR.value); // e.g. 16250
|
|
34
40
|
console.log(data.forex.MYR.value); // e.g. 4.71
|
|
@@ -36,14 +42,21 @@ console.log(data.forex.EUR.value); // e.g. 0.9251
|
|
|
36
42
|
|
|
37
43
|
// Crypto — price in USD
|
|
38
44
|
console.log(data.crypto.BTC.value); // e.g. 67420.50
|
|
45
|
+
console.log(data.crypto.ETH.value); // e.g. 3520.10
|
|
39
46
|
console.log(data.crypto.BNB.value); // e.g. 580.10
|
|
47
|
+
console.log(data.crypto.SOL.value); // e.g. 148.40
|
|
48
|
+
console.log(data.crypto.ARB.value); // e.g. 0.91
|
|
40
49
|
console.log(data.crypto.STU.value); // e.g. 0.00182
|
|
41
50
|
|
|
42
|
-
//
|
|
43
|
-
console.log(data.commodities.XAU.value); // Gold
|
|
51
|
+
// Metals
|
|
52
|
+
console.log(data.commodities.XAU.value); // Gold e.g. 2680.50 (USD/troy oz)
|
|
44
53
|
console.log(data.commodities.XAU.changePercent); // e.g. -0.42 (% from prev close)
|
|
45
54
|
console.log(data.commodities.XAG.value); // Silver e.g. 31.40 (USD/troy oz)
|
|
46
55
|
console.log(data.commodities.COPPER.value); // Copper e.g. 4.20 (USD/lb)
|
|
56
|
+
|
|
57
|
+
// Crude Oil
|
|
58
|
+
console.log(data.commodities.WTI.value); // WTI Brent e.g. 70.25 (USD/barrel)
|
|
59
|
+
console.log(data.commodities.BRENT.value); // Brent e.g. 74.10 (USD/barrel)
|
|
47
60
|
```
|
|
48
61
|
|
|
49
62
|
## Constructor
|
|
@@ -68,9 +81,10 @@ Fetches all available data in a single request.
|
|
|
68
81
|
|
|
69
82
|
```typescript
|
|
70
83
|
const data = await api.getCommodities();
|
|
71
|
-
// data.
|
|
72
|
-
// data.
|
|
73
|
-
// data.
|
|
84
|
+
// data.tier — "basic" | "pro"
|
|
85
|
+
// data.crypto — BTC, ETH, BNB, SOL, ARB, STU
|
|
86
|
+
// data.forex — CNY, EUR, IDR, JPY, MYR, NGN, SGD, VND
|
|
87
|
+
// data.commodities — XAU, XAG, COPPER, WTI, BRENT
|
|
74
88
|
```
|
|
75
89
|
|
|
76
90
|
### `getForex(opts?)`
|
|
@@ -88,48 +102,40 @@ Returns only crypto prices.
|
|
|
88
102
|
|
|
89
103
|
```typescript
|
|
90
104
|
const crypto = await api.getCrypto();
|
|
91
|
-
console.log(crypto.
|
|
105
|
+
console.log(crypto.ETH.value); // ETH price in USD
|
|
92
106
|
```
|
|
93
107
|
|
|
94
|
-
### `
|
|
108
|
+
### `getCommodityPrices(opts?)`
|
|
95
109
|
|
|
96
|
-
Returns
|
|
110
|
+
Returns metals and crude oil prices.
|
|
97
111
|
|
|
98
112
|
```typescript
|
|
99
|
-
const
|
|
100
|
-
console.log(
|
|
101
|
-
console.log(
|
|
113
|
+
const prices = await api.getCommodityPrices();
|
|
114
|
+
console.log(prices.WTI.value); // WTI crude oil in USD/barrel
|
|
115
|
+
console.log(prices.BRENT.value); // Brent crude oil in USD/barrel
|
|
116
|
+
console.log(prices.XAU.value); // Gold in USD/troy oz
|
|
102
117
|
```
|
|
103
118
|
|
|
104
|
-
## Rate Limits
|
|
119
|
+
## Rate Limits & Tiers
|
|
120
|
+
|
|
121
|
+
| Tier | STU Required | Rate Limit |
|
|
122
|
+
|-------|--------------|-------------|
|
|
123
|
+
| Basic | ≥ 10,000 STU | 60 req/min |
|
|
124
|
+
| Pro | ≥ 1,000,000 STU | 300 req/min |
|
|
105
125
|
|
|
106
|
-
|
|
126
|
+
Rate limit headers are available after each request:
|
|
107
127
|
|
|
108
128
|
```typescript
|
|
109
129
|
const data = await api.getCommodities();
|
|
110
|
-
|
|
111
130
|
console.log(api.rateLimit);
|
|
112
|
-
// { limit: 60, remaining: 59, resetAt:
|
|
113
|
-
```
|
|
114
|
-
|
|
115
|
-
On rate limit exceeded, a `SatuChainRateLimitError` is thrown with a `retryAfter` field (seconds):
|
|
116
|
-
|
|
117
|
-
```typescript
|
|
118
|
-
import { SatuChainRateLimitError } from "satuchain-api";
|
|
119
|
-
|
|
120
|
-
try {
|
|
121
|
-
const data = await api.getCommodities();
|
|
122
|
-
} catch (err) {
|
|
123
|
-
if (err instanceof SatuChainRateLimitError) {
|
|
124
|
-
console.log(`Retry after ${err.retryAfter}s`);
|
|
125
|
-
}
|
|
126
|
-
}
|
|
131
|
+
// { limit: 60, remaining: 59, resetAt: 1234567890 }
|
|
127
132
|
```
|
|
128
133
|
|
|
129
134
|
## Error Handling
|
|
130
135
|
|
|
131
136
|
```typescript
|
|
132
137
|
import {
|
|
138
|
+
SatuChainAPI,
|
|
133
139
|
SatuChainAuthError,
|
|
134
140
|
SatuChainRateLimitError,
|
|
135
141
|
SatuChainUpstreamError,
|
|
@@ -140,76 +146,35 @@ try {
|
|
|
140
146
|
const data = await api.getCommodities();
|
|
141
147
|
} catch (err) {
|
|
142
148
|
if (err instanceof SatuChainAuthError) {
|
|
143
|
-
// 401 — invalid or
|
|
149
|
+
// 401 — invalid key, or 403 — key inactive (STU balance too low)
|
|
150
|
+
console.error("Auth error:", err.message);
|
|
144
151
|
} else if (err instanceof SatuChainRateLimitError) {
|
|
145
|
-
// 429 —
|
|
152
|
+
// 429 — rate limit exceeded
|
|
153
|
+
console.error(`Rate limited. Retry after ${err.retryAfter}s`);
|
|
146
154
|
} else if (err instanceof SatuChainUpstreamError) {
|
|
147
|
-
// 502 — upstream data
|
|
155
|
+
// 502 — upstream data provider unavailable
|
|
156
|
+
console.error("Upstream error:", err.status);
|
|
148
157
|
} else if (err instanceof SatuChainError) {
|
|
149
|
-
//
|
|
158
|
+
// timeout, network error, etc.
|
|
159
|
+
console.error("SDK error:", err.message);
|
|
150
160
|
}
|
|
151
161
|
}
|
|
152
162
|
```
|
|
153
163
|
|
|
154
|
-
##
|
|
164
|
+
## Response Types
|
|
155
165
|
|
|
156
|
-
|
|
157
|
-
const controller = new AbortController();
|
|
158
|
-
|
|
159
|
-
setTimeout(() => controller.abort(), 3000);
|
|
160
|
-
|
|
161
|
-
const data = await api.getCommodities({ signal: controller.signal });
|
|
162
|
-
```
|
|
163
|
-
|
|
164
|
-
## CommonJS
|
|
165
|
-
|
|
166
|
-
```javascript
|
|
167
|
-
const { SatuChainAPI } = require("satuchain-api");
|
|
168
|
-
|
|
169
|
-
const api = new SatuChainAPI("sk_live_YOUR_KEY");
|
|
170
|
-
api.getCommodities().then((data) => {
|
|
171
|
-
console.log(data.forex.IDR.value);
|
|
172
|
-
});
|
|
173
|
-
```
|
|
174
|
-
|
|
175
|
-
## Response Shape
|
|
166
|
+
Full TypeScript types are included. Import them directly:
|
|
176
167
|
|
|
177
168
|
```typescript
|
|
178
|
-
{
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
BNB: { name: "BNB", value: 580.10 },
|
|
186
|
-
STU: { name: "SATU Token", value: 0.00182 }
|
|
187
|
-
},
|
|
188
|
-
forex: {
|
|
189
|
-
CNY: { name: "Chinese Yuan", value: 7.2412 },
|
|
190
|
-
EUR: { name: "Euro", value: 0.9251 },
|
|
191
|
-
IDR: { name: "Indonesian Rupiah", value: 16250 },
|
|
192
|
-
JPY: { name: "Japanese Yen", value: 151.82 },
|
|
193
|
-
MYR: { name: "Malaysian Ringgit", value: 4.7120 },
|
|
194
|
-
NGN: { name: "Nigerian Naira", value: 1580 },
|
|
195
|
-
SGD: { name: "Singapore Dollar", value: 1.3510 },
|
|
196
|
-
VND: { name: "Vietnamese Dong", value: 25100 }
|
|
197
|
-
},
|
|
198
|
-
commodities: {
|
|
199
|
-
XAU: { name: "Gold", value: 2680.50, changePercent: -0.42, unit: "USD/troy oz" },
|
|
200
|
-
XAG: { name: "Silver", value: 31.40, changePercent: 0.81, unit: "USD/troy oz" },
|
|
201
|
-
COPPER: { name: "Copper", value: 4.20, changePercent: -0.15, unit: "USD/lb" }
|
|
202
|
-
}
|
|
203
|
-
}
|
|
169
|
+
import type {
|
|
170
|
+
CommoditiesResponse,
|
|
171
|
+
CryptoEntry,
|
|
172
|
+
ForexEntry,
|
|
173
|
+
CommodityEntry,
|
|
174
|
+
RateLimitInfo,
|
|
175
|
+
} from "satuchain-api";
|
|
204
176
|
```
|
|
205
177
|
|
|
206
|
-
## Links
|
|
207
|
-
|
|
208
|
-
- **API Portal**: [dev.satuchain.com](https://dev.satuchain.com)
|
|
209
|
-
- **SATUCHAIN**: [satuchain.com](https://satuchain.com)
|
|
210
|
-
- **X (Twitter)**: [@SatuChain](https://x.com/SatuChain)
|
|
211
|
-
- **Telegram**: [t.me/satuchain](https://t.me/satuchain)
|
|
212
|
-
|
|
213
178
|
## License
|
|
214
179
|
|
|
215
|
-
MIT
|
|
180
|
+
MIT © [SATU TEAM](https://satuchain.com)
|
package/dist/cjs/client.cjs
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.SatuChainAPI = void 0;
|
|
3
|
+
exports.SatuChain = exports.SatuChainAPI = void 0;
|
|
4
4
|
const errors_js_1 = require("./errors.js");
|
|
5
5
|
const DEFAULT_BASE_URL = "https://dev.satuchain.com";
|
|
6
6
|
const DEFAULT_TIMEOUT = 10000;
|
|
@@ -37,7 +37,7 @@ class SatuChainAPI {
|
|
|
37
37
|
headers: {
|
|
38
38
|
"X-API-Key": this.apiKey,
|
|
39
39
|
"Accept": "application/json",
|
|
40
|
-
"User-Agent": "satuchain-sdk/1.0.
|
|
40
|
+
"User-Agent": "satuchain-sdk/1.0.4",
|
|
41
41
|
},
|
|
42
42
|
signal,
|
|
43
43
|
});
|
|
@@ -61,6 +61,10 @@ class SatuChainAPI {
|
|
|
61
61
|
const body = await res.json().catch(() => ({}));
|
|
62
62
|
throw new errors_js_1.SatuChainAuthError(body?.error);
|
|
63
63
|
}
|
|
64
|
+
if (res.status === 403) {
|
|
65
|
+
const body = await res.json().catch(() => ({}));
|
|
66
|
+
throw new errors_js_1.SatuChainAuthError(body?.error ?? "API key inactive: insufficient STU balance");
|
|
67
|
+
}
|
|
64
68
|
if (res.status === 429) {
|
|
65
69
|
const retryAfter = parseInt(res.headers.get("retry-after") ?? "60");
|
|
66
70
|
const body = await res.json().catch(() => ({}));
|
|
@@ -76,17 +80,65 @@ class SatuChainAPI {
|
|
|
76
80
|
return json;
|
|
77
81
|
}
|
|
78
82
|
/**
|
|
79
|
-
* Fetch live commodity, forex, and crypto price data.
|
|
83
|
+
* Fetch live commodity, forex, and crypto price data in one call.
|
|
80
84
|
*
|
|
81
85
|
* @example
|
|
82
86
|
* const data = await api.getCommodities();
|
|
83
|
-
* console.log(data.forex.IDR.value);
|
|
84
|
-
* console.log(data.crypto.BTC.value);
|
|
85
|
-
* console.log(data.commodities.XAU.value);
|
|
87
|
+
* console.log(data.forex.IDR.value); // IDR per 1 USD
|
|
88
|
+
* console.log(data.crypto.BTC.value); // BTC price in USD
|
|
89
|
+
* console.log(data.commodities.XAU.value); // Gold USD/troy oz
|
|
90
|
+
* console.log(data.commodities.WTI.value); // WTI Oil USD/barrel
|
|
91
|
+
* console.log(data.tier); // "basic" or "pro"
|
|
86
92
|
*/
|
|
87
93
|
async getCommodities(opts) {
|
|
88
94
|
return this.request("/api/commodities", opts);
|
|
89
95
|
}
|
|
96
|
+
/**
|
|
97
|
+
* Get the price of a single symbol (forex, crypto, or commodity).
|
|
98
|
+
* Returns value in USD and IDR, plus change_percent for commodities.
|
|
99
|
+
*
|
|
100
|
+
* @example
|
|
101
|
+
* const btc = await api.getTicker("BTC");
|
|
102
|
+
* console.log(btc.value); // BTC price in USD
|
|
103
|
+
* console.log(btc.value_idr); // BTC price in IDR
|
|
104
|
+
*
|
|
105
|
+
* const gold = await api.getTicker("XAU");
|
|
106
|
+
* console.log(gold.change_percent); // % change from previous close
|
|
107
|
+
*/
|
|
108
|
+
async getTicker(symbol, opts) {
|
|
109
|
+
return this.request(`/api/ticker/${symbol.toUpperCase()}`, opts);
|
|
110
|
+
}
|
|
111
|
+
/**
|
|
112
|
+
* Convert between any two supported symbols (forex, crypto, commodity).
|
|
113
|
+
*
|
|
114
|
+
* @example
|
|
115
|
+
* const result = await api.convert({ from: "BTC", to: "IDR", amount: 0.5 });
|
|
116
|
+
* console.log(result.result); // IDR amount
|
|
117
|
+
* console.log(result.rate); // 1 BTC in IDR
|
|
118
|
+
*
|
|
119
|
+
* const myr = await api.convert({ from: "USD", to: "MYR", amount: 100 });
|
|
120
|
+
* console.log(myr.result); // MYR equivalent of 100 USD
|
|
121
|
+
*/
|
|
122
|
+
async convert(options) {
|
|
123
|
+
const { from, to, amount = 1, ...reqOpts } = options;
|
|
124
|
+
const params = new URLSearchParams({
|
|
125
|
+
from: from.toUpperCase(),
|
|
126
|
+
to: to.toUpperCase(),
|
|
127
|
+
amount: String(amount),
|
|
128
|
+
});
|
|
129
|
+
return this.request(`/api/convert?${params}`, reqOpts);
|
|
130
|
+
}
|
|
131
|
+
/**
|
|
132
|
+
* Get the Bank Indonesia 7-Day Reverse Repo Rate (BI7DRR).
|
|
133
|
+
*
|
|
134
|
+
* @example
|
|
135
|
+
* const bi = await api.getBiRate();
|
|
136
|
+
* console.log(bi.rate_percent); // e.g. "6.00%"
|
|
137
|
+
* console.log(bi.since); // effective since date
|
|
138
|
+
*/
|
|
139
|
+
async getBiRate(opts) {
|
|
140
|
+
return this.request("/api/bi-rate", opts);
|
|
141
|
+
}
|
|
90
142
|
/**
|
|
91
143
|
* Get just the forex rates (subset of getCommodities).
|
|
92
144
|
*/
|
|
@@ -102,12 +154,20 @@ class SatuChainAPI {
|
|
|
102
154
|
return data.crypto;
|
|
103
155
|
}
|
|
104
156
|
/**
|
|
105
|
-
* Get just the commodity prices
|
|
157
|
+
* Get just the commodity prices including metals and crude oil.
|
|
106
158
|
*/
|
|
107
|
-
async
|
|
159
|
+
async getCommodityPrices(opts) {
|
|
108
160
|
const data = await this.getCommodities(opts);
|
|
109
161
|
return data.commodities;
|
|
110
162
|
}
|
|
163
|
+
/**
|
|
164
|
+
* @deprecated Use getCommodityPrices() instead.
|
|
165
|
+
*/
|
|
166
|
+
async getMetals(opts) {
|
|
167
|
+
return this.getCommodityPrices(opts);
|
|
168
|
+
}
|
|
111
169
|
}
|
|
112
170
|
exports.SatuChainAPI = SatuChainAPI;
|
|
171
|
+
/** Alias for SatuChainAPI */
|
|
172
|
+
exports.SatuChain = SatuChainAPI;
|
|
113
173
|
//# sourceMappingURL=client.js.map
|
package/dist/cjs/client.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"client.js","sourceRoot":"","sources":["../../src/client.ts"],"names":[],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"client.js","sourceRoot":"","sources":["../../src/client.ts"],"names":[],"mappings":"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"}
|
package/dist/cjs/index.cjs
CHANGED
|
@@ -1,8 +1,9 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.SatuChainUpstreamError = exports.SatuChainRateLimitError = exports.SatuChainAuthError = exports.SatuChainError = exports.SatuChainAPI = void 0;
|
|
3
|
+
exports.SatuChainUpstreamError = exports.SatuChainRateLimitError = exports.SatuChainAuthError = exports.SatuChainError = exports.SatuChain = exports.SatuChainAPI = void 0;
|
|
4
4
|
var client_js_1 = require("./client.js");
|
|
5
5
|
Object.defineProperty(exports, "SatuChainAPI", { enumerable: true, get: function () { return client_js_1.SatuChainAPI; } });
|
|
6
|
+
Object.defineProperty(exports, "SatuChain", { enumerable: true, get: function () { return client_js_1.SatuChain; } });
|
|
6
7
|
var errors_js_1 = require("./errors.js");
|
|
7
8
|
Object.defineProperty(exports, "SatuChainError", { enumerable: true, get: function () { return errors_js_1.SatuChainError; } });
|
|
8
9
|
Object.defineProperty(exports, "SatuChainAuthError", { enumerable: true, get: function () { return errors_js_1.SatuChainAuthError; } });
|
package/dist/cjs/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":";;;AAAA,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":";;;AAAA,yCAAsD;AAA7C,yGAAA,YAAY,OAAA;AAAE,sGAAA,SAAS,OAAA;AAChC,yCAKqB;AAJnB,2GAAA,cAAc,OAAA;AACd,+GAAA,kBAAkB,OAAA;AAClB,oHAAA,uBAAuB,OAAA;AACvB,mHAAA,sBAAsB,OAAA"}
|
package/dist/esm/client.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type { SatuChainAPIOptions, RequestOptions, CommoditiesResponse, RateLimitInfo } from "./types.js";
|
|
1
|
+
import type { SatuChainAPIOptions, RequestOptions, CommoditiesResponse, TickerResponse, ConvertResponse, ConvertOptions, BiRateResponse, RateLimitInfo } from "./types.js";
|
|
2
2
|
export declare class SatuChainAPI {
|
|
3
3
|
private readonly apiKey;
|
|
4
4
|
private readonly baseUrl;
|
|
@@ -8,15 +8,51 @@ export declare class SatuChainAPI {
|
|
|
8
8
|
constructor(options: SatuChainAPIOptions | string);
|
|
9
9
|
private request;
|
|
10
10
|
/**
|
|
11
|
-
* Fetch live commodity, forex, and crypto price data.
|
|
11
|
+
* Fetch live commodity, forex, and crypto price data in one call.
|
|
12
12
|
*
|
|
13
13
|
* @example
|
|
14
14
|
* const data = await api.getCommodities();
|
|
15
|
-
* console.log(data.forex.IDR.value);
|
|
16
|
-
* console.log(data.crypto.BTC.value);
|
|
17
|
-
* console.log(data.commodities.XAU.value);
|
|
15
|
+
* console.log(data.forex.IDR.value); // IDR per 1 USD
|
|
16
|
+
* console.log(data.crypto.BTC.value); // BTC price in USD
|
|
17
|
+
* console.log(data.commodities.XAU.value); // Gold USD/troy oz
|
|
18
|
+
* console.log(data.commodities.WTI.value); // WTI Oil USD/barrel
|
|
19
|
+
* console.log(data.tier); // "basic" or "pro"
|
|
18
20
|
*/
|
|
19
21
|
getCommodities(opts?: RequestOptions): Promise<CommoditiesResponse>;
|
|
22
|
+
/**
|
|
23
|
+
* Get the price of a single symbol (forex, crypto, or commodity).
|
|
24
|
+
* Returns value in USD and IDR, plus change_percent for commodities.
|
|
25
|
+
*
|
|
26
|
+
* @example
|
|
27
|
+
* const btc = await api.getTicker("BTC");
|
|
28
|
+
* console.log(btc.value); // BTC price in USD
|
|
29
|
+
* console.log(btc.value_idr); // BTC price in IDR
|
|
30
|
+
*
|
|
31
|
+
* const gold = await api.getTicker("XAU");
|
|
32
|
+
* console.log(gold.change_percent); // % change from previous close
|
|
33
|
+
*/
|
|
34
|
+
getTicker(symbol: string, opts?: RequestOptions): Promise<TickerResponse>;
|
|
35
|
+
/**
|
|
36
|
+
* Convert between any two supported symbols (forex, crypto, commodity).
|
|
37
|
+
*
|
|
38
|
+
* @example
|
|
39
|
+
* const result = await api.convert({ from: "BTC", to: "IDR", amount: 0.5 });
|
|
40
|
+
* console.log(result.result); // IDR amount
|
|
41
|
+
* console.log(result.rate); // 1 BTC in IDR
|
|
42
|
+
*
|
|
43
|
+
* const myr = await api.convert({ from: "USD", to: "MYR", amount: 100 });
|
|
44
|
+
* console.log(myr.result); // MYR equivalent of 100 USD
|
|
45
|
+
*/
|
|
46
|
+
convert(options: ConvertOptions): Promise<ConvertResponse>;
|
|
47
|
+
/**
|
|
48
|
+
* Get the Bank Indonesia 7-Day Reverse Repo Rate (BI7DRR).
|
|
49
|
+
*
|
|
50
|
+
* @example
|
|
51
|
+
* const bi = await api.getBiRate();
|
|
52
|
+
* console.log(bi.rate_percent); // e.g. "6.00%"
|
|
53
|
+
* console.log(bi.since); // effective since date
|
|
54
|
+
*/
|
|
55
|
+
getBiRate(opts?: RequestOptions): Promise<BiRateResponse>;
|
|
20
56
|
/**
|
|
21
57
|
* Get just the forex rates (subset of getCommodities).
|
|
22
58
|
*/
|
|
@@ -26,8 +62,14 @@ export declare class SatuChainAPI {
|
|
|
26
62
|
*/
|
|
27
63
|
getCrypto(opts?: RequestOptions): Promise<CommoditiesResponse["crypto"]>;
|
|
28
64
|
/**
|
|
29
|
-
* Get just the commodity prices
|
|
65
|
+
* Get just the commodity prices including metals and crude oil.
|
|
66
|
+
*/
|
|
67
|
+
getCommodityPrices(opts?: RequestOptions): Promise<CommoditiesResponse["commodities"]>;
|
|
68
|
+
/**
|
|
69
|
+
* @deprecated Use getCommodityPrices() instead.
|
|
30
70
|
*/
|
|
31
71
|
getMetals(opts?: RequestOptions): Promise<CommoditiesResponse["commodities"]>;
|
|
32
72
|
}
|
|
73
|
+
/** Alias for SatuChainAPI */
|
|
74
|
+
export declare const SatuChain: typeof SatuChainAPI;
|
|
33
75
|
//# sourceMappingURL=client.d.ts.map
|
package/dist/esm/client.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../src/client.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,mBAAmB,EACnB,cAAc,EACd,mBAAmB,EACnB,aAAa,EACd,MAAM,YAAY,CAAC;AAWpB,qBAAa,YAAY;IACvB,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAS;IAChC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAS;IACjC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAS;IAEjC,yDAAyD;IAClD,SAAS,EAAE,aAAa,GAAG,IAAI,CAAQ;gBAElC,OAAO,EAAE,mBAAmB,GAAG,MAAM;YAgBnC,OAAO;
|
|
1
|
+
{"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../src/client.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,mBAAmB,EACnB,cAAc,EACd,mBAAmB,EACnB,cAAc,EACd,eAAe,EACf,cAAc,EACd,cAAc,EACd,aAAa,EACd,MAAM,YAAY,CAAC;AAWpB,qBAAa,YAAY;IACvB,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAS;IAChC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAS;IACjC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAS;IAEjC,yDAAyD;IAClD,SAAS,EAAE,aAAa,GAAG,IAAI,CAAQ;gBAElC,OAAO,EAAE,mBAAmB,GAAG,MAAM;YAgBnC,OAAO;IAsErB;;;;;;;;;;OAUG;IACG,cAAc,CAAC,IAAI,CAAC,EAAE,cAAc,GAAG,OAAO,CAAC,mBAAmB,CAAC;IAIzE;;;;;;;;;;;OAWG;IACG,SAAS,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,cAAc,GAAG,OAAO,CAAC,cAAc,CAAC;IAI/E;;;;;;;;;;OAUG;IACG,OAAO,CAAC,OAAO,EAAE,cAAc,GAAG,OAAO,CAAC,eAAe,CAAC;IAUhE;;;;;;;OAOG;IACG,SAAS,CAAC,IAAI,CAAC,EAAE,cAAc,GAAG,OAAO,CAAC,cAAc,CAAC;IAI/D;;OAEG;IACG,QAAQ,CAAC,IAAI,CAAC,EAAE,cAAc,GAAG,OAAO,CAAC,mBAAmB,CAAC,OAAO,CAAC,CAAC;IAK5E;;OAEG;IACG,SAAS,CAAC,IAAI,CAAC,EAAE,cAAc,GAAG,OAAO,CAAC,mBAAmB,CAAC,QAAQ,CAAC,CAAC;IAK9E;;OAEG;IACG,kBAAkB,CAAC,IAAI,CAAC,EAAE,cAAc,GAAG,OAAO,CAAC,mBAAmB,CAAC,aAAa,CAAC,CAAC;IAK5F;;OAEG;IACG,SAAS,CAAC,IAAI,CAAC,EAAE,cAAc,GAAG,OAAO,CAAC,mBAAmB,CAAC,aAAa,CAAC,CAAC;CAGpF;AAED,6BAA6B;AAC7B,eAAO,MAAM,SAAS,qBAAe,CAAC"}
|
package/dist/esm/client.js
CHANGED
|
@@ -34,7 +34,7 @@ export class SatuChainAPI {
|
|
|
34
34
|
headers: {
|
|
35
35
|
"X-API-Key": this.apiKey,
|
|
36
36
|
"Accept": "application/json",
|
|
37
|
-
"User-Agent": "satuchain-sdk/1.0.
|
|
37
|
+
"User-Agent": "satuchain-sdk/1.0.4",
|
|
38
38
|
},
|
|
39
39
|
signal,
|
|
40
40
|
});
|
|
@@ -58,6 +58,10 @@ export class SatuChainAPI {
|
|
|
58
58
|
const body = await res.json().catch(() => ({}));
|
|
59
59
|
throw new SatuChainAuthError(body?.error);
|
|
60
60
|
}
|
|
61
|
+
if (res.status === 403) {
|
|
62
|
+
const body = await res.json().catch(() => ({}));
|
|
63
|
+
throw new SatuChainAuthError(body?.error ?? "API key inactive: insufficient STU balance");
|
|
64
|
+
}
|
|
61
65
|
if (res.status === 429) {
|
|
62
66
|
const retryAfter = parseInt(res.headers.get("retry-after") ?? "60");
|
|
63
67
|
const body = await res.json().catch(() => ({}));
|
|
@@ -73,17 +77,65 @@ export class SatuChainAPI {
|
|
|
73
77
|
return json;
|
|
74
78
|
}
|
|
75
79
|
/**
|
|
76
|
-
* Fetch live commodity, forex, and crypto price data.
|
|
80
|
+
* Fetch live commodity, forex, and crypto price data in one call.
|
|
77
81
|
*
|
|
78
82
|
* @example
|
|
79
83
|
* const data = await api.getCommodities();
|
|
80
|
-
* console.log(data.forex.IDR.value);
|
|
81
|
-
* console.log(data.crypto.BTC.value);
|
|
82
|
-
* console.log(data.commodities.XAU.value);
|
|
84
|
+
* console.log(data.forex.IDR.value); // IDR per 1 USD
|
|
85
|
+
* console.log(data.crypto.BTC.value); // BTC price in USD
|
|
86
|
+
* console.log(data.commodities.XAU.value); // Gold USD/troy oz
|
|
87
|
+
* console.log(data.commodities.WTI.value); // WTI Oil USD/barrel
|
|
88
|
+
* console.log(data.tier); // "basic" or "pro"
|
|
83
89
|
*/
|
|
84
90
|
async getCommodities(opts) {
|
|
85
91
|
return this.request("/api/commodities", opts);
|
|
86
92
|
}
|
|
93
|
+
/**
|
|
94
|
+
* Get the price of a single symbol (forex, crypto, or commodity).
|
|
95
|
+
* Returns value in USD and IDR, plus change_percent for commodities.
|
|
96
|
+
*
|
|
97
|
+
* @example
|
|
98
|
+
* const btc = await api.getTicker("BTC");
|
|
99
|
+
* console.log(btc.value); // BTC price in USD
|
|
100
|
+
* console.log(btc.value_idr); // BTC price in IDR
|
|
101
|
+
*
|
|
102
|
+
* const gold = await api.getTicker("XAU");
|
|
103
|
+
* console.log(gold.change_percent); // % change from previous close
|
|
104
|
+
*/
|
|
105
|
+
async getTicker(symbol, opts) {
|
|
106
|
+
return this.request(`/api/ticker/${symbol.toUpperCase()}`, opts);
|
|
107
|
+
}
|
|
108
|
+
/**
|
|
109
|
+
* Convert between any two supported symbols (forex, crypto, commodity).
|
|
110
|
+
*
|
|
111
|
+
* @example
|
|
112
|
+
* const result = await api.convert({ from: "BTC", to: "IDR", amount: 0.5 });
|
|
113
|
+
* console.log(result.result); // IDR amount
|
|
114
|
+
* console.log(result.rate); // 1 BTC in IDR
|
|
115
|
+
*
|
|
116
|
+
* const myr = await api.convert({ from: "USD", to: "MYR", amount: 100 });
|
|
117
|
+
* console.log(myr.result); // MYR equivalent of 100 USD
|
|
118
|
+
*/
|
|
119
|
+
async convert(options) {
|
|
120
|
+
const { from, to, amount = 1, ...reqOpts } = options;
|
|
121
|
+
const params = new URLSearchParams({
|
|
122
|
+
from: from.toUpperCase(),
|
|
123
|
+
to: to.toUpperCase(),
|
|
124
|
+
amount: String(amount),
|
|
125
|
+
});
|
|
126
|
+
return this.request(`/api/convert?${params}`, reqOpts);
|
|
127
|
+
}
|
|
128
|
+
/**
|
|
129
|
+
* Get the Bank Indonesia 7-Day Reverse Repo Rate (BI7DRR).
|
|
130
|
+
*
|
|
131
|
+
* @example
|
|
132
|
+
* const bi = await api.getBiRate();
|
|
133
|
+
* console.log(bi.rate_percent); // e.g. "6.00%"
|
|
134
|
+
* console.log(bi.since); // effective since date
|
|
135
|
+
*/
|
|
136
|
+
async getBiRate(opts) {
|
|
137
|
+
return this.request("/api/bi-rate", opts);
|
|
138
|
+
}
|
|
87
139
|
/**
|
|
88
140
|
* Get just the forex rates (subset of getCommodities).
|
|
89
141
|
*/
|
|
@@ -99,11 +151,19 @@ export class SatuChainAPI {
|
|
|
99
151
|
return data.crypto;
|
|
100
152
|
}
|
|
101
153
|
/**
|
|
102
|
-
* Get just the commodity prices
|
|
154
|
+
* Get just the commodity prices including metals and crude oil.
|
|
103
155
|
*/
|
|
104
|
-
async
|
|
156
|
+
async getCommodityPrices(opts) {
|
|
105
157
|
const data = await this.getCommodities(opts);
|
|
106
158
|
return data.commodities;
|
|
107
159
|
}
|
|
160
|
+
/**
|
|
161
|
+
* @deprecated Use getCommodityPrices() instead.
|
|
162
|
+
*/
|
|
163
|
+
async getMetals(opts) {
|
|
164
|
+
return this.getCommodityPrices(opts);
|
|
165
|
+
}
|
|
108
166
|
}
|
|
167
|
+
/** Alias for SatuChainAPI */
|
|
168
|
+
export const SatuChain = SatuChainAPI;
|
|
109
169
|
//# sourceMappingURL=client.js.map
|
package/dist/esm/client.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"client.js","sourceRoot":"","sources":["../../src/client.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"client.js","sourceRoot":"","sources":["../../src/client.ts"],"names":[],"mappings":"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"}
|
package/dist/esm/index.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
export { SatuChainAPI } from "./client.js";
|
|
1
|
+
export { SatuChainAPI, SatuChain } from "./client.js";
|
|
2
2
|
export { SatuChainError, SatuChainAuthError, SatuChainRateLimitError, SatuChainUpstreamError, } from "./errors.js";
|
|
3
|
-
export type { SatuChainAPIOptions, RequestOptions, CommoditiesResponse, ForexEntry, CryptoEntry, CommodityEntry, RateLimitInfo, } from "./types.js";
|
|
3
|
+
export type { SatuChainAPIOptions, RequestOptions, CommoditiesResponse, TickerResponse, ConvertResponse, ConvertOptions, BiRateResponse, ForexEntry, CryptoEntry, CommodityEntry, RateLimitInfo, } from "./types.js";
|
|
4
4
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/esm/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AACtD,OAAO,EACL,cAAc,EACd,kBAAkB,EAClB,uBAAuB,EACvB,sBAAsB,GACvB,MAAM,aAAa,CAAC;AACrB,YAAY,EACV,mBAAmB,EACnB,cAAc,EACd,mBAAmB,EACnB,cAAc,EACd,eAAe,EACf,cAAc,EACd,cAAc,EACd,UAAU,EACV,WAAW,EACX,cAAc,EACd,aAAa,GACd,MAAM,YAAY,CAAC"}
|
package/dist/esm/index.js
CHANGED
package/dist/esm/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AACtD,OAAO,EACL,cAAc,EACd,kBAAkB,EAClB,uBAAuB,EACvB,sBAAsB,GACvB,MAAM,aAAa,CAAC"}
|
package/dist/esm/types.d.ts
CHANGED
|
@@ -10,11 +10,11 @@ export interface CryptoEntry {
|
|
|
10
10
|
}
|
|
11
11
|
export interface CommodityEntry {
|
|
12
12
|
name: string;
|
|
13
|
-
/** Price in USD per unit
|
|
13
|
+
/** Price in USD per unit */
|
|
14
14
|
value: number | null;
|
|
15
15
|
/** Percentage change from previous close (positive = up, negative = down) */
|
|
16
16
|
changePercent?: number | null;
|
|
17
|
-
/** Unit description e.g. "USD/troy oz" */
|
|
17
|
+
/** Unit description e.g. "USD/troy oz", "USD/barrel" */
|
|
18
18
|
unit?: string;
|
|
19
19
|
note?: string;
|
|
20
20
|
}
|
|
@@ -25,12 +25,17 @@ export interface RateLimitInfo {
|
|
|
25
25
|
}
|
|
26
26
|
export interface CommoditiesResponse {
|
|
27
27
|
ok: true;
|
|
28
|
+
/** Your API key tier: "basic" (60 req/min) or "pro" (300 req/min) */
|
|
29
|
+
tier: "basic" | "pro";
|
|
28
30
|
base: "USD";
|
|
29
31
|
updatedAtUnix: number | null;
|
|
30
32
|
nextUpdateUnix: number | null;
|
|
31
33
|
crypto: {
|
|
32
34
|
BTC: CryptoEntry;
|
|
35
|
+
ETH: CryptoEntry;
|
|
33
36
|
BNB: CryptoEntry;
|
|
37
|
+
SOL: CryptoEntry;
|
|
38
|
+
ARB: CryptoEntry;
|
|
34
39
|
STU: CryptoEntry;
|
|
35
40
|
};
|
|
36
41
|
forex: {
|
|
@@ -45,11 +50,63 @@ export interface CommoditiesResponse {
|
|
|
45
50
|
[key: string]: ForexEntry;
|
|
46
51
|
};
|
|
47
52
|
commodities: {
|
|
53
|
+
/** Gold — USD/troy oz */
|
|
48
54
|
XAU: CommodityEntry;
|
|
55
|
+
/** Silver — USD/troy oz */
|
|
49
56
|
XAG: CommodityEntry;
|
|
57
|
+
/** Copper — USD/lb */
|
|
50
58
|
COPPER: CommodityEntry;
|
|
59
|
+
/** WTI Crude Oil — USD/barrel */
|
|
60
|
+
WTI: CommodityEntry;
|
|
61
|
+
/** Brent Crude Oil — USD/barrel */
|
|
62
|
+
BRENT: CommodityEntry;
|
|
51
63
|
};
|
|
52
64
|
}
|
|
65
|
+
export interface TickerResponse {
|
|
66
|
+
ok: true;
|
|
67
|
+
symbol: string;
|
|
68
|
+
name: string;
|
|
69
|
+
type: "forex" | "crypto" | "commodity";
|
|
70
|
+
/** Price in USD */
|
|
71
|
+
value: number | null;
|
|
72
|
+
/** Price in IDR */
|
|
73
|
+
value_idr: number | null;
|
|
74
|
+
/** Percentage change from previous close (commodities only) */
|
|
75
|
+
change_percent: number | null;
|
|
76
|
+
/** Unit description e.g. "USD", "USD/troy oz", "USD/barrel" */
|
|
77
|
+
unit: string;
|
|
78
|
+
updatedAtUnix: number | null;
|
|
79
|
+
}
|
|
80
|
+
export interface ConvertResponse {
|
|
81
|
+
ok: true;
|
|
82
|
+
from: string;
|
|
83
|
+
to: string;
|
|
84
|
+
amount: number;
|
|
85
|
+
/** Converted amount */
|
|
86
|
+
result: number;
|
|
87
|
+
/** 1 unit of `from` expressed in `to` */
|
|
88
|
+
rate: number;
|
|
89
|
+
updatedAtUnix: number | null;
|
|
90
|
+
}
|
|
91
|
+
export interface BiRateResponse {
|
|
92
|
+
ok: true;
|
|
93
|
+
/** Numeric rate e.g. 6.00 */
|
|
94
|
+
rate: number;
|
|
95
|
+
/** Formatted rate e.g. "6.00%" */
|
|
96
|
+
rate_percent: string;
|
|
97
|
+
/** Effective since date e.g. "2024-10-17" */
|
|
98
|
+
since: string;
|
|
99
|
+
/** Next BI board meeting date (if available) */
|
|
100
|
+
next_meeting: string | null;
|
|
101
|
+
description: string;
|
|
102
|
+
source: string;
|
|
103
|
+
note: string;
|
|
104
|
+
}
|
|
105
|
+
export interface ConvertOptions extends RequestOptions {
|
|
106
|
+
from: string;
|
|
107
|
+
to: string;
|
|
108
|
+
amount?: number;
|
|
109
|
+
}
|
|
53
110
|
export interface SatuChainAPIOptions {
|
|
54
111
|
/** Your API key — starts with sk_live_ */
|
|
55
112
|
apiKey: string;
|
package/dist/esm/types.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/types.ts"],"names":[],"mappings":"AAEA,MAAM,WAAW,UAAU;IACzB,IAAI,EAAE,MAAM,CAAC;IACb,uCAAuC;IACvC,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;CACtB;AAED,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,MAAM,CAAC;IACb,mBAAmB;IACnB,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;CACtB;AAED,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,MAAM,CAAC;IACb,
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/types.ts"],"names":[],"mappings":"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"}
|
package/dist/types/client.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type { SatuChainAPIOptions, RequestOptions, CommoditiesResponse, RateLimitInfo } from "./types.js";
|
|
1
|
+
import type { SatuChainAPIOptions, RequestOptions, CommoditiesResponse, TickerResponse, ConvertResponse, ConvertOptions, BiRateResponse, RateLimitInfo } from "./types.js";
|
|
2
2
|
export declare class SatuChainAPI {
|
|
3
3
|
private readonly apiKey;
|
|
4
4
|
private readonly baseUrl;
|
|
@@ -8,15 +8,51 @@ export declare class SatuChainAPI {
|
|
|
8
8
|
constructor(options: SatuChainAPIOptions | string);
|
|
9
9
|
private request;
|
|
10
10
|
/**
|
|
11
|
-
* Fetch live commodity, forex, and crypto price data.
|
|
11
|
+
* Fetch live commodity, forex, and crypto price data in one call.
|
|
12
12
|
*
|
|
13
13
|
* @example
|
|
14
14
|
* const data = await api.getCommodities();
|
|
15
|
-
* console.log(data.forex.IDR.value);
|
|
16
|
-
* console.log(data.crypto.BTC.value);
|
|
17
|
-
* console.log(data.commodities.XAU.value);
|
|
15
|
+
* console.log(data.forex.IDR.value); // IDR per 1 USD
|
|
16
|
+
* console.log(data.crypto.BTC.value); // BTC price in USD
|
|
17
|
+
* console.log(data.commodities.XAU.value); // Gold USD/troy oz
|
|
18
|
+
* console.log(data.commodities.WTI.value); // WTI Oil USD/barrel
|
|
19
|
+
* console.log(data.tier); // "basic" or "pro"
|
|
18
20
|
*/
|
|
19
21
|
getCommodities(opts?: RequestOptions): Promise<CommoditiesResponse>;
|
|
22
|
+
/**
|
|
23
|
+
* Get the price of a single symbol (forex, crypto, or commodity).
|
|
24
|
+
* Returns value in USD and IDR, plus change_percent for commodities.
|
|
25
|
+
*
|
|
26
|
+
* @example
|
|
27
|
+
* const btc = await api.getTicker("BTC");
|
|
28
|
+
* console.log(btc.value); // BTC price in USD
|
|
29
|
+
* console.log(btc.value_idr); // BTC price in IDR
|
|
30
|
+
*
|
|
31
|
+
* const gold = await api.getTicker("XAU");
|
|
32
|
+
* console.log(gold.change_percent); // % change from previous close
|
|
33
|
+
*/
|
|
34
|
+
getTicker(symbol: string, opts?: RequestOptions): Promise<TickerResponse>;
|
|
35
|
+
/**
|
|
36
|
+
* Convert between any two supported symbols (forex, crypto, commodity).
|
|
37
|
+
*
|
|
38
|
+
* @example
|
|
39
|
+
* const result = await api.convert({ from: "BTC", to: "IDR", amount: 0.5 });
|
|
40
|
+
* console.log(result.result); // IDR amount
|
|
41
|
+
* console.log(result.rate); // 1 BTC in IDR
|
|
42
|
+
*
|
|
43
|
+
* const myr = await api.convert({ from: "USD", to: "MYR", amount: 100 });
|
|
44
|
+
* console.log(myr.result); // MYR equivalent of 100 USD
|
|
45
|
+
*/
|
|
46
|
+
convert(options: ConvertOptions): Promise<ConvertResponse>;
|
|
47
|
+
/**
|
|
48
|
+
* Get the Bank Indonesia 7-Day Reverse Repo Rate (BI7DRR).
|
|
49
|
+
*
|
|
50
|
+
* @example
|
|
51
|
+
* const bi = await api.getBiRate();
|
|
52
|
+
* console.log(bi.rate_percent); // e.g. "6.00%"
|
|
53
|
+
* console.log(bi.since); // effective since date
|
|
54
|
+
*/
|
|
55
|
+
getBiRate(opts?: RequestOptions): Promise<BiRateResponse>;
|
|
20
56
|
/**
|
|
21
57
|
* Get just the forex rates (subset of getCommodities).
|
|
22
58
|
*/
|
|
@@ -26,8 +62,14 @@ export declare class SatuChainAPI {
|
|
|
26
62
|
*/
|
|
27
63
|
getCrypto(opts?: RequestOptions): Promise<CommoditiesResponse["crypto"]>;
|
|
28
64
|
/**
|
|
29
|
-
* Get just the commodity prices
|
|
65
|
+
* Get just the commodity prices including metals and crude oil.
|
|
66
|
+
*/
|
|
67
|
+
getCommodityPrices(opts?: RequestOptions): Promise<CommoditiesResponse["commodities"]>;
|
|
68
|
+
/**
|
|
69
|
+
* @deprecated Use getCommodityPrices() instead.
|
|
30
70
|
*/
|
|
31
71
|
getMetals(opts?: RequestOptions): Promise<CommoditiesResponse["commodities"]>;
|
|
32
72
|
}
|
|
73
|
+
/** Alias for SatuChainAPI */
|
|
74
|
+
export declare const SatuChain: typeof SatuChainAPI;
|
|
33
75
|
//# sourceMappingURL=client.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../src/client.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,mBAAmB,EACnB,cAAc,EACd,mBAAmB,EACnB,aAAa,EACd,MAAM,YAAY,CAAC;AAWpB,qBAAa,YAAY;IACvB,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAS;IAChC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAS;IACjC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAS;IAEjC,yDAAyD;IAClD,SAAS,EAAE,aAAa,GAAG,IAAI,CAAQ;gBAElC,OAAO,EAAE,mBAAmB,GAAG,MAAM;YAgBnC,OAAO;
|
|
1
|
+
{"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../src/client.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,mBAAmB,EACnB,cAAc,EACd,mBAAmB,EACnB,cAAc,EACd,eAAe,EACf,cAAc,EACd,cAAc,EACd,aAAa,EACd,MAAM,YAAY,CAAC;AAWpB,qBAAa,YAAY;IACvB,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAS;IAChC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAS;IACjC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAS;IAEjC,yDAAyD;IAClD,SAAS,EAAE,aAAa,GAAG,IAAI,CAAQ;gBAElC,OAAO,EAAE,mBAAmB,GAAG,MAAM;YAgBnC,OAAO;IAsErB;;;;;;;;;;OAUG;IACG,cAAc,CAAC,IAAI,CAAC,EAAE,cAAc,GAAG,OAAO,CAAC,mBAAmB,CAAC;IAIzE;;;;;;;;;;;OAWG;IACG,SAAS,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,cAAc,GAAG,OAAO,CAAC,cAAc,CAAC;IAI/E;;;;;;;;;;OAUG;IACG,OAAO,CAAC,OAAO,EAAE,cAAc,GAAG,OAAO,CAAC,eAAe,CAAC;IAUhE;;;;;;;OAOG;IACG,SAAS,CAAC,IAAI,CAAC,EAAE,cAAc,GAAG,OAAO,CAAC,cAAc,CAAC;IAI/D;;OAEG;IACG,QAAQ,CAAC,IAAI,CAAC,EAAE,cAAc,GAAG,OAAO,CAAC,mBAAmB,CAAC,OAAO,CAAC,CAAC;IAK5E;;OAEG;IACG,SAAS,CAAC,IAAI,CAAC,EAAE,cAAc,GAAG,OAAO,CAAC,mBAAmB,CAAC,QAAQ,CAAC,CAAC;IAK9E;;OAEG;IACG,kBAAkB,CAAC,IAAI,CAAC,EAAE,cAAc,GAAG,OAAO,CAAC,mBAAmB,CAAC,aAAa,CAAC,CAAC;IAK5F;;OAEG;IACG,SAAS,CAAC,IAAI,CAAC,EAAE,cAAc,GAAG,OAAO,CAAC,mBAAmB,CAAC,aAAa,CAAC,CAAC;CAGpF;AAED,6BAA6B;AAC7B,eAAO,MAAM,SAAS,qBAAe,CAAC"}
|
package/dist/types/index.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
export { SatuChainAPI } from "./client.js";
|
|
1
|
+
export { SatuChainAPI, SatuChain } from "./client.js";
|
|
2
2
|
export { SatuChainError, SatuChainAuthError, SatuChainRateLimitError, SatuChainUpstreamError, } from "./errors.js";
|
|
3
|
-
export type { SatuChainAPIOptions, RequestOptions, CommoditiesResponse, ForexEntry, CryptoEntry, CommodityEntry, RateLimitInfo, } from "./types.js";
|
|
3
|
+
export type { SatuChainAPIOptions, RequestOptions, CommoditiesResponse, TickerResponse, ConvertResponse, ConvertOptions, BiRateResponse, ForexEntry, CryptoEntry, CommodityEntry, RateLimitInfo, } from "./types.js";
|
|
4
4
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AACtD,OAAO,EACL,cAAc,EACd,kBAAkB,EAClB,uBAAuB,EACvB,sBAAsB,GACvB,MAAM,aAAa,CAAC;AACrB,YAAY,EACV,mBAAmB,EACnB,cAAc,EACd,mBAAmB,EACnB,cAAc,EACd,eAAe,EACf,cAAc,EACd,cAAc,EACd,UAAU,EACV,WAAW,EACX,cAAc,EACd,aAAa,GACd,MAAM,YAAY,CAAC"}
|
package/dist/types/types.d.ts
CHANGED
|
@@ -10,11 +10,11 @@ export interface CryptoEntry {
|
|
|
10
10
|
}
|
|
11
11
|
export interface CommodityEntry {
|
|
12
12
|
name: string;
|
|
13
|
-
/** Price in USD per unit
|
|
13
|
+
/** Price in USD per unit */
|
|
14
14
|
value: number | null;
|
|
15
15
|
/** Percentage change from previous close (positive = up, negative = down) */
|
|
16
16
|
changePercent?: number | null;
|
|
17
|
-
/** Unit description e.g. "USD/troy oz" */
|
|
17
|
+
/** Unit description e.g. "USD/troy oz", "USD/barrel" */
|
|
18
18
|
unit?: string;
|
|
19
19
|
note?: string;
|
|
20
20
|
}
|
|
@@ -25,12 +25,17 @@ export interface RateLimitInfo {
|
|
|
25
25
|
}
|
|
26
26
|
export interface CommoditiesResponse {
|
|
27
27
|
ok: true;
|
|
28
|
+
/** Your API key tier: "basic" (60 req/min) or "pro" (300 req/min) */
|
|
29
|
+
tier: "basic" | "pro";
|
|
28
30
|
base: "USD";
|
|
29
31
|
updatedAtUnix: number | null;
|
|
30
32
|
nextUpdateUnix: number | null;
|
|
31
33
|
crypto: {
|
|
32
34
|
BTC: CryptoEntry;
|
|
35
|
+
ETH: CryptoEntry;
|
|
33
36
|
BNB: CryptoEntry;
|
|
37
|
+
SOL: CryptoEntry;
|
|
38
|
+
ARB: CryptoEntry;
|
|
34
39
|
STU: CryptoEntry;
|
|
35
40
|
};
|
|
36
41
|
forex: {
|
|
@@ -45,11 +50,63 @@ export interface CommoditiesResponse {
|
|
|
45
50
|
[key: string]: ForexEntry;
|
|
46
51
|
};
|
|
47
52
|
commodities: {
|
|
53
|
+
/** Gold — USD/troy oz */
|
|
48
54
|
XAU: CommodityEntry;
|
|
55
|
+
/** Silver — USD/troy oz */
|
|
49
56
|
XAG: CommodityEntry;
|
|
57
|
+
/** Copper — USD/lb */
|
|
50
58
|
COPPER: CommodityEntry;
|
|
59
|
+
/** WTI Crude Oil — USD/barrel */
|
|
60
|
+
WTI: CommodityEntry;
|
|
61
|
+
/** Brent Crude Oil — USD/barrel */
|
|
62
|
+
BRENT: CommodityEntry;
|
|
51
63
|
};
|
|
52
64
|
}
|
|
65
|
+
export interface TickerResponse {
|
|
66
|
+
ok: true;
|
|
67
|
+
symbol: string;
|
|
68
|
+
name: string;
|
|
69
|
+
type: "forex" | "crypto" | "commodity";
|
|
70
|
+
/** Price in USD */
|
|
71
|
+
value: number | null;
|
|
72
|
+
/** Price in IDR */
|
|
73
|
+
value_idr: number | null;
|
|
74
|
+
/** Percentage change from previous close (commodities only) */
|
|
75
|
+
change_percent: number | null;
|
|
76
|
+
/** Unit description e.g. "USD", "USD/troy oz", "USD/barrel" */
|
|
77
|
+
unit: string;
|
|
78
|
+
updatedAtUnix: number | null;
|
|
79
|
+
}
|
|
80
|
+
export interface ConvertResponse {
|
|
81
|
+
ok: true;
|
|
82
|
+
from: string;
|
|
83
|
+
to: string;
|
|
84
|
+
amount: number;
|
|
85
|
+
/** Converted amount */
|
|
86
|
+
result: number;
|
|
87
|
+
/** 1 unit of `from` expressed in `to` */
|
|
88
|
+
rate: number;
|
|
89
|
+
updatedAtUnix: number | null;
|
|
90
|
+
}
|
|
91
|
+
export interface BiRateResponse {
|
|
92
|
+
ok: true;
|
|
93
|
+
/** Numeric rate e.g. 6.00 */
|
|
94
|
+
rate: number;
|
|
95
|
+
/** Formatted rate e.g. "6.00%" */
|
|
96
|
+
rate_percent: string;
|
|
97
|
+
/** Effective since date e.g. "2024-10-17" */
|
|
98
|
+
since: string;
|
|
99
|
+
/** Next BI board meeting date (if available) */
|
|
100
|
+
next_meeting: string | null;
|
|
101
|
+
description: string;
|
|
102
|
+
source: string;
|
|
103
|
+
note: string;
|
|
104
|
+
}
|
|
105
|
+
export interface ConvertOptions extends RequestOptions {
|
|
106
|
+
from: string;
|
|
107
|
+
to: string;
|
|
108
|
+
amount?: number;
|
|
109
|
+
}
|
|
53
110
|
export interface SatuChainAPIOptions {
|
|
54
111
|
/** Your API key — starts with sk_live_ */
|
|
55
112
|
apiKey: string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/types.ts"],"names":[],"mappings":"AAEA,MAAM,WAAW,UAAU;IACzB,IAAI,EAAE,MAAM,CAAC;IACb,uCAAuC;IACvC,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;CACtB;AAED,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,MAAM,CAAC;IACb,mBAAmB;IACnB,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;CACtB;AAED,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,MAAM,CAAC;IACb,
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/types.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,8 +1,16 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "satuchain-api",
|
|
3
|
-
"version": "1.0.
|
|
3
|
+
"version": "1.0.4",
|
|
4
4
|
"description": "Official JavaScript/TypeScript SDK for the SATUCHAIN Developer API",
|
|
5
|
-
"keywords": [
|
|
5
|
+
"keywords": [
|
|
6
|
+
"satuchain",
|
|
7
|
+
"crypto",
|
|
8
|
+
"forex",
|
|
9
|
+
"commodities",
|
|
10
|
+
"gold",
|
|
11
|
+
"api",
|
|
12
|
+
"sdk"
|
|
13
|
+
],
|
|
6
14
|
"author": "SATU TEAM <dev@satuchain.com>",
|
|
7
15
|
"license": "MIT",
|
|
8
16
|
"homepage": "https://dev.satuchain.com",
|
|
@@ -41,5 +49,8 @@
|
|
|
41
49
|
},
|
|
42
50
|
"engines": {
|
|
43
51
|
"node": ">=18.0.0"
|
|
52
|
+
},
|
|
53
|
+
"publishConfig": {
|
|
54
|
+
"registry": "https://registry.npmjs.org"
|
|
44
55
|
}
|
|
45
56
|
}
|