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 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 commodity data.
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
  [![npm version](https://img.shields.io/npm/v/satuchain-api.svg)](https://www.npmjs.com/package/satuchain-api)
6
6
  [![License: MIT](https://img.shields.io/badge/License-MIT-blue.svg)](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
- // Commodities
43
- console.log(data.commodities.XAU.value); // Gold e.g. 2680.50 (USD/troy oz)
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.crypto BTC, BNB, STU
72
- // data.forex CNY, EUR, IDR, JPY, MYR, NGN, SGD, VND
73
- // data.commodities XAU, XAG, COPPER
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.BTC.value); // USD
105
+ console.log(crypto.ETH.value); // ETH price in USD
92
106
  ```
93
107
 
94
- ### `getMetals(opts?)`
108
+ ### `getCommodityPrices(opts?)`
95
109
 
96
- Returns only commodity prices.
110
+ Returns metals and crude oil prices.
97
111
 
98
112
  ```typescript
99
- const metals = await api.getMetals();
100
- console.log(metals.XAU.value); // USD/troy oz
101
- console.log(metals.XAU.changePercent); // % change from prev close
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
- Each API key is limited to **60 requests per minute**. Rate limit info is available after any request:
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: 1712345678 }
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 revoked API key
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 — slow down, check err.retryAfter
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 source unavailable
155
+ // 502 — upstream data provider unavailable
156
+ console.error("Upstream error:", err.status);
148
157
  } else if (err instanceof SatuChainError) {
149
- // network timeout or other SDK error
158
+ // timeout, network error, etc.
159
+ console.error("SDK error:", err.message);
150
160
  }
151
161
  }
152
162
  ```
153
163
 
154
- ## Request Cancellation
164
+ ## Response Types
155
165
 
156
- ```typescript
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
- ok: true,
180
- base: "USD",
181
- updatedAtUnix: 1712345600, // forex update time
182
- nextUpdateUnix: 1712349200,
183
- crypto: {
184
- BTC: { name: "Bitcoin", value: 67420.50 },
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 see [LICENSE](LICENSE)
180
+ MIT © [SATU TEAM](https://satuchain.com)
@@ -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.1",
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); // IDR per 1 USD
84
- * console.log(data.crypto.BTC.value); // BTC price in USD
85
- * console.log(data.commodities.XAU.value); // Gold price in USD/troy oz
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 (subset of getCommodities).
157
+ * Get just the commodity prices including metals and crude oil.
106
158
  */
107
- async getMetals(opts) {
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
@@ -1 +1 @@
1
- {"version":3,"file":"client.js","sourceRoot":"","sources":["../../src/client.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"client.js","sourceRoot":"","sources":["../../src/client.ts"],"names":[],"mappings":"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"}
@@ -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; } });
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":";;;AAAA,yCAA2C;AAAlC,yGAAA,YAAY,OAAA;AACrB,yCAKqB;AAJnB,2GAAA,cAAc,OAAA;AACd,+GAAA,kBAAkB,OAAA;AAClB,oHAAA,uBAAuB,OAAA;AACvB,mHAAA,sBAAsB,OAAA"}
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"}
@@ -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); // IDR per 1 USD
16
- * console.log(data.crypto.BTC.value); // BTC price in USD
17
- * console.log(data.commodities.XAU.value); // Gold price in USD/troy oz
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 (subset of getCommodities).
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;IAiErB;;;;;;;;OAQG;IACG,cAAc,CAAC,IAAI,CAAC,EAAE,cAAc,GAAG,OAAO,CAAC,mBAAmB,CAAC;IAIzE;;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,SAAS,CAAC,IAAI,CAAC,EAAE,cAAc,GAAG,OAAO,CAAC,mBAAmB,CAAC,aAAa,CAAC,CAAC;CAIpF"}
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"}
@@ -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.1",
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); // IDR per 1 USD
81
- * console.log(data.crypto.BTC.value); // BTC price in USD
82
- * console.log(data.commodities.XAU.value); // Gold price in USD/troy oz
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 (subset of getCommodities).
154
+ * Get just the commodity prices including metals and crude oil.
103
155
  */
104
- async getMetals(opts) {
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
@@ -1 +1 @@
1
- {"version":3,"file":"client.js","sourceRoot":"","sources":["../../src/client.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"client.js","sourceRoot":"","sources":["../../src/client.ts"],"names":[],"mappings":"AAUA,OAAO,EACL,kBAAkB,EAClB,uBAAuB,EACvB,sBAAsB,EACtB,cAAc,GACf,MAAM,aAAa,CAAC;AAErB,MAAM,gBAAgB,GAAG,2BAA2B,CAAC;AACrD,MAAM,eAAe,GAAG,KAAM,CAAC;AAE/B,MAAM,OAAO,YAAY;IAQvB,YAAY,OAAqC;QAHjD,yDAAyD;QAClD,cAAS,GAAyB,IAAI,CAAC;QAG5C,IAAI,OAAO,OAAO,KAAK,QAAQ,EAAE,CAAC;YAChC,IAAI,CAAC,MAAM,GAAG,OAAO,CAAC;YACtB,IAAI,CAAC,OAAO,GAAG,gBAAgB,CAAC;YAChC,IAAI,CAAC,OAAO,GAAG,eAAe,CAAC;QACjC,CAAC;aAAM,CAAC;YACN,IAAI,CAAC,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;YAC7B,IAAI,CAAC,OAAO,GAAG,CAAC,OAAO,CAAC,OAAO,IAAI,gBAAgB,CAAC,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;YACxE,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC,OAAO,IAAI,eAAe,CAAC;QACpD,CAAC;QAED,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,UAAU,CAAC,EAAE,CAAC;YACxC,MAAM,IAAI,cAAc,CAAC,kCAAkC,CAAC,CAAC;QAC/D,CAAC;IACH,CAAC;IAEO,KAAK,CAAC,OAAO,CACnB,IAAY,EACZ,IAAqB;QAErB,MAAM,UAAU,GAAG,IAAI,eAAe,EAAE,CAAC;QACzC,MAAM,KAAK,GAAG,UAAU,CAAC,GAAG,EAAE,CAAC,UAAU,CAAC,KAAK,EAAE,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;QAEjE,MAAM,MAAM,GAAG,IAAI,EAAE,MAAM;YACzB,CAAC,CAAC,WAAW,CAAC,GAAG;gBACf,CAAC,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,MAAM,EAAE,UAAU,CAAC,MAAM,CAAC,CAAC;gBACnD,CAAC,CAAC,UAAU,CAAC,MAAM;YACrB,CAAC,CAAC,UAAU,CAAC,MAAM,CAAC;QAEtB,IAAI,GAAa,CAAC;QAClB,IAAI,CAAC;YACH,GAAG,GAAG,MAAM,KAAK,CAAC,GAAG,IAAI,CAAC,OAAO,GAAG,IAAI,EAAE,EAAE;gBAC1C,MAAM,EAAE,KAAK;gBACb,OAAO,EAAE;oBACP,WAAW,EAAE,IAAI,CAAC,MAAM;oBACxB,QAAQ,EAAE,kBAAkB;oBAC5B,YAAY,EAAE,qBAAqB;iBACpC;gBACD,MAAM;aACP,CAAC,CAAC;QACL,CAAC;QAAC,OAAO,GAAQ,EAAE,CAAC;YAClB,YAAY,CAAC,KAAK,CAAC,CAAC;YACpB,IAAI,GAAG,EAAE,IAAI,KAAK,YAAY,EAAE,CAAC;gBAC/B,MAAM,IAAI,cAAc,CAAC,2BAA2B,IAAI,CAAC,OAAO,IAAI,CAAC,CAAC;YACxE,CAAC;YACD,MAAM,IAAI,cAAc,CAAC,kBAAkB,GAAG,EAAE,OAAO,IAAI,GAAG,EAAE,CAAC,CAAC;QACpE,CAAC;QAED,YAAY,CAAC,KAAK,CAAC,CAAC;QAEpB,2BAA2B;QAC3B,MAAM,OAAO,GAAG,QAAQ,CAAC,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,mBAAmB,CAAC,IAAI,EAAE,CAAC,CAAC;QACrE,MAAM,WAAW,GAAG,QAAQ,CAAC,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,uBAAuB,CAAC,IAAI,EAAE,CAAC,CAAC;QAC7E,MAAM,OAAO,GAAG,QAAQ,CAAC,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,mBAAmB,CAAC,IAAI,EAAE,CAAC,CAAC;QACrE,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,EAAE,CAAC;YACpB,IAAI,CAAC,SAAS,GAAG,EAAE,KAAK,EAAE,OAAO,EAAE,SAAS,EAAE,WAAW,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC;QAChF,CAAC;QAED,IAAI,GAAG,CAAC,MAAM,KAAK,GAAG,EAAE,CAAC;YACvB,MAAM,IAAI,GAAG,MAAM,GAAG,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,CAAQ,CAAC;YACvD,MAAM,IAAI,kBAAkB,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;QAC5C,CAAC;QAED,IAAI,GAAG,CAAC,MAAM,KAAK,GAAG,EAAE,CAAC;YACvB,MAAM,IAAI,GAAG,MAAM,GAAG,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,CAAQ,CAAC;YACvD,MAAM,IAAI,kBAAkB,CAAC,IAAI,EAAE,KAAK,IAAI,4CAA4C,CAAC,CAAC;QAC5F,CAAC;QAED,IAAI,GAAG,CAAC,MAAM,KAAK,GAAG,EAAE,CAAC;YACvB,MAAM,UAAU,GAAG,QAAQ,CAAC,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,aAAa,CAAC,IAAI,IAAI,CAAC,CAAC;YACpE,MAAM,IAAI,GAAG,MAAM,GAAG,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,CAAQ,CAAC;YACvD,MAAM,IAAI,uBAAuB,CAAC,UAAU,EAAE,IAAI,EAAE,KAAK,CAAC,CAAC;QAC7D,CAAC;QAED,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC;YACZ,MAAM,IAAI,sBAAsB,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;QAC/C,CAAC;QAED,MAAM,IAAI,GAAG,MAAM,GAAG,CAAC,IAAI,EAAS,CAAC;QACrC,IAAI,CAAC,IAAI,CAAC,EAAE,EAAE,CAAC;YACb,MAAM,IAAI,cAAc,CAAC,IAAI,CAAC,KAAK,IAAI,WAAW,CAAC,CAAC;QACtD,CAAC;QAED,OAAO,IAAS,CAAC;IACnB,CAAC;IAED;;;;;;;;;;OAUG;IACH,KAAK,CAAC,cAAc,CAAC,IAAqB;QACxC,OAAO,IAAI,CAAC,OAAO,CAAsB,kBAAkB,EAAE,IAAI,CAAC,CAAC;IACrE,CAAC;IAED;;;;;;;;;;;OAWG;IACH,KAAK,CAAC,SAAS,CAAC,MAAc,EAAE,IAAqB;QACnD,OAAO,IAAI,CAAC,OAAO,CAAiB,eAAe,MAAM,CAAC,WAAW,EAAE,EAAE,EAAE,IAAI,CAAC,CAAC;IACnF,CAAC;IAED;;;;;;;;;;OAUG;IACH,KAAK,CAAC,OAAO,CAAC,OAAuB;QACnC,MAAM,EAAE,IAAI,EAAE,EAAE,EAAE,MAAM,GAAG,CAAC,EAAE,GAAG,OAAO,EAAE,GAAG,OAAO,CAAC;QACrD,MAAM,MAAM,GAAG,IAAI,eAAe,CAAC;YACjC,IAAI,EAAE,IAAI,CAAC,WAAW,EAAE;YACxB,EAAE,EAAE,EAAE,CAAC,WAAW,EAAE;YACpB,MAAM,EAAE,MAAM,CAAC,MAAM,CAAC;SACvB,CAAC,CAAC;QACH,OAAO,IAAI,CAAC,OAAO,CAAkB,gBAAgB,MAAM,EAAE,EAAE,OAAO,CAAC,CAAC;IAC1E,CAAC;IAED;;;;;;;OAOG;IACH,KAAK,CAAC,SAAS,CAAC,IAAqB;QACnC,OAAO,IAAI,CAAC,OAAO,CAAiB,cAAc,EAAE,IAAI,CAAC,CAAC;IAC5D,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,QAAQ,CAAC,IAAqB;QAClC,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC;QAC7C,OAAO,IAAI,CAAC,KAAK,CAAC;IACpB,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,SAAS,CAAC,IAAqB;QACnC,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC;QAC7C,OAAO,IAAI,CAAC,MAAM,CAAC;IACrB,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,kBAAkB,CAAC,IAAqB;QAC5C,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC;QAC7C,OAAO,IAAI,CAAC,WAAW,CAAC;IAC1B,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,SAAS,CAAC,IAAqB;QACnC,OAAO,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,CAAC;IACvC,CAAC;CACF;AAED,6BAA6B;AAC7B,MAAM,CAAC,MAAM,SAAS,GAAG,YAAY,CAAC"}
@@ -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;AAC3C,OAAO,EACL,cAAc,EACd,kBAAkB,EAClB,uBAAuB,EACvB,sBAAsB,GACvB,MAAM,aAAa,CAAC;AACrB,YAAY,EACV,mBAAmB,EACnB,cAAc,EACd,mBAAmB,EACnB,UAAU,EACV,WAAW,EACX,cAAc,EACd,aAAa,GACd,MAAM,YAAY,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
@@ -1,3 +1,3 @@
1
- export { SatuChainAPI } from "./client.js";
1
+ export { SatuChainAPI, SatuChain } from "./client.js";
2
2
  export { SatuChainError, SatuChainAuthError, SatuChainRateLimitError, SatuChainUpstreamError, } from "./errors.js";
3
3
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAC3C,OAAO,EACL,cAAc,EACd,kBAAkB,EAClB,uBAAuB,EACvB,sBAAsB,GACvB,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"}
@@ -10,11 +10,11 @@ export interface CryptoEntry {
10
10
  }
11
11
  export interface CommodityEntry {
12
12
  name: string;
13
- /** Price in USD per unit (troy oz for XAU/XAG, lb for COPPER) */
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,iEAAiE;IACjE,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB,6EAA6E;IAC7E,aAAa,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC9B,0CAA0C;IAC1C,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,aAAa;IAC5B,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,mBAAmB;IAClC,EAAE,EAAE,IAAI,CAAC;IACT,IAAI,EAAE,KAAK,CAAC;IACZ,aAAa,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,cAAc,EAAE,MAAM,GAAG,IAAI,CAAC;IAC9B,MAAM,EAAE;QACN,GAAG,EAAE,WAAW,CAAC;QACjB,GAAG,EAAE,WAAW,CAAC;QACjB,GAAG,EAAE,WAAW,CAAC;KAClB,CAAC;IACF,KAAK,EAAE;QACL,GAAG,EAAE,UAAU,CAAC;QAChB,GAAG,EAAE,UAAU,CAAC;QAChB,GAAG,EAAE,UAAU,CAAC;QAChB,GAAG,EAAE,UAAU,CAAC;QAChB,GAAG,EAAE,UAAU,CAAC;QAChB,GAAG,EAAE,UAAU,CAAC;QAChB,GAAG,EAAE,UAAU,CAAC;QAChB,GAAG,EAAE,UAAU,CAAC;QAChB,CAAC,GAAG,EAAE,MAAM,GAAG,UAAU,CAAC;KAC3B,CAAC;IACF,WAAW,EAAE;QACX,GAAG,EAAE,cAAc,CAAC;QACpB,GAAG,EAAE,cAAc,CAAC;QACpB,MAAM,EAAE,cAAc,CAAC;KACxB,CAAC;CACH;AAID,MAAM,WAAW,mBAAmB;IAClC,0CAA0C;IAC1C,MAAM,EAAE,MAAM,CAAC;IACf,oDAAoD;IACpD,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,uDAAuD;IACvD,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,cAAc;IAC7B,mCAAmC;IACnC,MAAM,CAAC,EAAE,WAAW,CAAC;CACtB"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/types.ts"],"names":[],"mappings":"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"}
@@ -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); // IDR per 1 USD
16
- * console.log(data.crypto.BTC.value); // BTC price in USD
17
- * console.log(data.commodities.XAU.value); // Gold price in USD/troy oz
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 (subset of getCommodities).
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;IAiErB;;;;;;;;OAQG;IACG,cAAc,CAAC,IAAI,CAAC,EAAE,cAAc,GAAG,OAAO,CAAC,mBAAmB,CAAC;IAIzE;;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,SAAS,CAAC,IAAI,CAAC,EAAE,cAAc,GAAG,OAAO,CAAC,mBAAmB,CAAC,aAAa,CAAC,CAAC;CAIpF"}
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"}
@@ -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;AAC3C,OAAO,EACL,cAAc,EACd,kBAAkB,EAClB,uBAAuB,EACvB,sBAAsB,GACvB,MAAM,aAAa,CAAC;AACrB,YAAY,EACV,mBAAmB,EACnB,cAAc,EACd,mBAAmB,EACnB,UAAU,EACV,WAAW,EACX,cAAc,EACd,aAAa,GACd,MAAM,YAAY,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"}
@@ -10,11 +10,11 @@ export interface CryptoEntry {
10
10
  }
11
11
  export interface CommodityEntry {
12
12
  name: string;
13
- /** Price in USD per unit (troy oz for XAU/XAG, lb for COPPER) */
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,iEAAiE;IACjE,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB,6EAA6E;IAC7E,aAAa,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC9B,0CAA0C;IAC1C,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,aAAa;IAC5B,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,mBAAmB;IAClC,EAAE,EAAE,IAAI,CAAC;IACT,IAAI,EAAE,KAAK,CAAC;IACZ,aAAa,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,cAAc,EAAE,MAAM,GAAG,IAAI,CAAC;IAC9B,MAAM,EAAE;QACN,GAAG,EAAE,WAAW,CAAC;QACjB,GAAG,EAAE,WAAW,CAAC;QACjB,GAAG,EAAE,WAAW,CAAC;KAClB,CAAC;IACF,KAAK,EAAE;QACL,GAAG,EAAE,UAAU,CAAC;QAChB,GAAG,EAAE,UAAU,CAAC;QAChB,GAAG,EAAE,UAAU,CAAC;QAChB,GAAG,EAAE,UAAU,CAAC;QAChB,GAAG,EAAE,UAAU,CAAC;QAChB,GAAG,EAAE,UAAU,CAAC;QAChB,GAAG,EAAE,UAAU,CAAC;QAChB,GAAG,EAAE,UAAU,CAAC;QAChB,CAAC,GAAG,EAAE,MAAM,GAAG,UAAU,CAAC;KAC3B,CAAC;IACF,WAAW,EAAE;QACX,GAAG,EAAE,cAAc,CAAC;QACpB,GAAG,EAAE,cAAc,CAAC;QACpB,MAAM,EAAE,cAAc,CAAC;KACxB,CAAC;CACH;AAID,MAAM,WAAW,mBAAmB;IAClC,0CAA0C;IAC1C,MAAM,EAAE,MAAM,CAAC;IACf,oDAAoD;IACpD,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,uDAAuD;IACvD,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,cAAc;IAC7B,mCAAmC;IACnC,MAAM,CAAC,EAAE,WAAW,CAAC;CACtB"}
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.1",
3
+ "version": "1.0.4",
4
4
  "description": "Official JavaScript/TypeScript SDK for the SATUCHAIN Developer API",
5
- "keywords": ["satuchain", "crypto", "forex", "commodities", "gold", "api", "sdk"],
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
  }