@123456btc/123456btc-cli 1.0.4 → 1.0.6

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (147) hide show
  1. package/dist/api/auth.js +2 -2
  2. package/dist/api/auth.js.map +1 -1
  3. package/dist/api/client.d.ts +10 -6
  4. package/dist/api/client.d.ts.map +1 -1
  5. package/dist/api/client.js +62 -19
  6. package/dist/api/client.js.map +1 -1
  7. package/dist/api/client.test.js +24 -16
  8. package/dist/api/client.test.js.map +1 -1
  9. package/dist/api/signals.d.ts +3 -3
  10. package/dist/api/signals.d.ts.map +1 -1
  11. package/dist/api/signals.js +3 -3
  12. package/dist/api/signals.js.map +1 -1
  13. package/dist/api/strategy-stream.d.ts +4 -9
  14. package/dist/api/strategy-stream.d.ts.map +1 -1
  15. package/dist/api/strategy-stream.js +14 -13
  16. package/dist/api/strategy-stream.js.map +1 -1
  17. package/dist/api/strategy.d.ts +3 -1
  18. package/dist/api/strategy.d.ts.map +1 -1
  19. package/dist/api/strategy.js +3 -1
  20. package/dist/api/strategy.js.map +1 -1
  21. package/dist/api/token-manager.d.ts.map +1 -1
  22. package/dist/api/token-manager.js +4 -0
  23. package/dist/api/token-manager.js.map +1 -1
  24. package/dist/cli.js +5 -47
  25. package/dist/cli.js.map +1 -1
  26. package/dist/commands/auth.d.ts.map +1 -1
  27. package/dist/commands/auth.js +27 -93
  28. package/dist/commands/auth.js.map +1 -1
  29. package/dist/commands/exchange.d.ts +3 -0
  30. package/dist/commands/exchange.d.ts.map +1 -0
  31. package/dist/commands/exchange.js +141 -0
  32. package/dist/commands/exchange.js.map +1 -0
  33. package/dist/commands/gas.d.ts.map +1 -1
  34. package/dist/commands/gas.js +3 -2
  35. package/dist/commands/gas.js.map +1 -1
  36. package/dist/commands/health.d.ts.map +1 -1
  37. package/dist/commands/health.js +5 -3
  38. package/dist/commands/health.js.map +1 -1
  39. package/dist/commands/provider.d.ts.map +1 -1
  40. package/dist/commands/provider.js +17 -20
  41. package/dist/commands/provider.js.map +1 -1
  42. package/dist/commands/signals.d.ts.map +1 -1
  43. package/dist/commands/signals.js +10 -9
  44. package/dist/commands/signals.js.map +1 -1
  45. package/dist/commands/strategy.d.ts.map +1 -1
  46. package/dist/commands/strategy.js +184 -10
  47. package/dist/commands/strategy.js.map +1 -1
  48. package/dist/commands/tier.d.ts.map +1 -1
  49. package/dist/commands/tier.js +3 -2
  50. package/dist/commands/tier.js.map +1 -1
  51. package/dist/commands/vault.d.ts.map +1 -1
  52. package/dist/commands/vault.js +5 -3
  53. package/dist/commands/vault.js.map +1 -1
  54. package/dist/commands/wallet.d.ts.map +1 -1
  55. package/dist/commands/wallet.js +3 -2
  56. package/dist/commands/wallet.js.map +1 -1
  57. package/dist/config/strategy-exchange.d.ts +30 -0
  58. package/dist/config/strategy-exchange.d.ts.map +1 -0
  59. package/dist/config/strategy-exchange.js +130 -0
  60. package/dist/config/strategy-exchange.js.map +1 -0
  61. package/dist/config.d.ts +11 -4
  62. package/dist/config.d.ts.map +1 -1
  63. package/dist/config.js +28 -56
  64. package/dist/config.js.map +1 -1
  65. package/dist/exchange/index.d.ts +106 -0
  66. package/dist/exchange/index.d.ts.map +1 -0
  67. package/dist/exchange/index.js +43 -0
  68. package/dist/exchange/index.js.map +1 -0
  69. package/dist/exchange/v2/adapters/base.d.ts +130 -0
  70. package/dist/exchange/v2/adapters/base.d.ts.map +1 -0
  71. package/dist/exchange/v2/adapters/base.js +296 -0
  72. package/dist/exchange/v2/adapters/base.js.map +1 -0
  73. package/dist/exchange/v2/adapters/binance.d.ts +51 -0
  74. package/dist/exchange/v2/adapters/binance.d.ts.map +1 -0
  75. package/dist/exchange/v2/adapters/binance.js +549 -0
  76. package/dist/exchange/v2/adapters/binance.js.map +1 -0
  77. package/dist/exchange/v2/adapters/bitget.d.ts +43 -0
  78. package/dist/exchange/v2/adapters/bitget.d.ts.map +1 -0
  79. package/dist/exchange/v2/adapters/bitget.js +524 -0
  80. package/dist/exchange/v2/adapters/bitget.js.map +1 -0
  81. package/dist/exchange/v2/adapters/hyperliquid.d.ts +102 -0
  82. package/dist/exchange/v2/adapters/hyperliquid.d.ts.map +1 -0
  83. package/dist/exchange/v2/adapters/hyperliquid.js +536 -0
  84. package/dist/exchange/v2/adapters/hyperliquid.js.map +1 -0
  85. package/dist/exchange/v2/adapters/okx.d.ts +38 -0
  86. package/dist/exchange/v2/adapters/okx.d.ts.map +1 -0
  87. package/dist/exchange/v2/adapters/okx.js +437 -0
  88. package/dist/exchange/v2/adapters/okx.js.map +1 -0
  89. package/dist/exchange/v2/algorithms/index.d.ts +78 -0
  90. package/dist/exchange/v2/algorithms/index.d.ts.map +1 -0
  91. package/dist/exchange/v2/algorithms/index.js +441 -0
  92. package/dist/exchange/v2/algorithms/index.js.map +1 -0
  93. package/dist/exchange/v2/executor/circuit-breaker.d.ts +44 -0
  94. package/dist/exchange/v2/executor/circuit-breaker.d.ts.map +1 -0
  95. package/dist/exchange/v2/executor/circuit-breaker.js +90 -0
  96. package/dist/exchange/v2/executor/circuit-breaker.js.map +1 -0
  97. package/dist/exchange/v2/executor/core.d.ts +64 -0
  98. package/dist/exchange/v2/executor/core.d.ts.map +1 -0
  99. package/dist/exchange/v2/executor/core.js +458 -0
  100. package/dist/exchange/v2/executor/core.js.map +1 -0
  101. package/dist/exchange/v2/executor/risk.d.ts +29 -0
  102. package/dist/exchange/v2/executor/risk.d.ts.map +1 -0
  103. package/dist/exchange/v2/executor/risk.js +144 -0
  104. package/dist/exchange/v2/executor/risk.js.map +1 -0
  105. package/dist/exchange/v2/executor/state.d.ts +29 -0
  106. package/dist/exchange/v2/executor/state.d.ts.map +1 -0
  107. package/dist/exchange/v2/executor/state.js +171 -0
  108. package/dist/exchange/v2/executor/state.js.map +1 -0
  109. package/dist/exchange/v2/index.d.ts +50 -0
  110. package/dist/exchange/v2/index.d.ts.map +1 -0
  111. package/dist/exchange/v2/index.js +82 -0
  112. package/dist/exchange/v2/index.js.map +1 -0
  113. package/dist/exchange/v2/registry.d.ts +50 -0
  114. package/dist/exchange/v2/registry.d.ts.map +1 -0
  115. package/dist/exchange/v2/registry.js +101 -0
  116. package/dist/exchange/v2/registry.js.map +1 -0
  117. package/dist/exchange/v2/types.d.ts +413 -0
  118. package/dist/exchange/v2/types.d.ts.map +1 -0
  119. package/dist/exchange/v2/types.js +3 -0
  120. package/dist/exchange/v2/types.js.map +1 -0
  121. package/dist/index.d.ts +105 -23
  122. package/dist/index.d.ts.map +1 -1
  123. package/dist/index.js +40 -39
  124. package/dist/index.js.map +1 -1
  125. package/dist/session/store.d.ts +25 -0
  126. package/dist/session/store.d.ts.map +1 -0
  127. package/dist/session/store.js +108 -0
  128. package/dist/session/store.js.map +1 -0
  129. package/dist/session/store.test.d.ts +2 -0
  130. package/dist/session/store.test.d.ts.map +1 -0
  131. package/dist/session/store.test.js +118 -0
  132. package/dist/session/store.test.js.map +1 -0
  133. package/dist/types/financial.d.ts +14 -0
  134. package/dist/types/financial.d.ts.map +1 -0
  135. package/dist/types/financial.js +6 -0
  136. package/dist/types/financial.js.map +1 -0
  137. package/dist/utils/auth.d.ts +1 -1
  138. package/dist/utils/auth.d.ts.map +1 -1
  139. package/dist/utils/auth.js +5 -5
  140. package/dist/utils/auth.js.map +1 -1
  141. package/dist/vault/crypto.js +3 -3
  142. package/dist/vault/crypto.js.map +1 -1
  143. package/dist/vault/index.d.ts +28 -0
  144. package/dist/vault/index.d.ts.map +1 -1
  145. package/dist/vault/index.js +70 -0
  146. package/dist/vault/index.js.map +1 -1
  147. package/package.json +1 -1
@@ -0,0 +1,524 @@
1
+ "use strict";
2
+ /**
3
+ * Bitget Exchange Adapter — Institutional v2 (full implementation, no stubs)
4
+ * Supports: spot, USDT-M perpetuals (mix), COIN-M (dmix)
5
+ * Auth: HMAC-SHA256 base64 + timestamp + method + path + body
6
+ * Features: market/limit/stop/TP/SL/trailing/bracket/plan orders
7
+ */
8
+ Object.defineProperty(exports, "__esModule", { value: true });
9
+ exports.BitgetAdapter = void 0;
10
+ const base_1 = require("./base");
11
+ const BITGET_BASE = 'https://api.bitget.com';
12
+ class BitgetAdapter extends base_1.BaseExchangeAdapter {
13
+ exchangeId = 'bitget';
14
+ constructor(creds) {
15
+ super({ credentials: creds, baseUrl: BITGET_BASE });
16
+ }
17
+ // ─── Auth ─────────────────────────────────────────────────────────────────
18
+ async buildHeaders(method, path, body) {
19
+ const timestamp = Date.now().toString();
20
+ const bodyStr = body ? JSON.stringify(body) : '';
21
+ const prehash = `${timestamp}${method}${path}${bodyStr}`;
22
+ const sign = await (0, base_1.hmacSha256Base64)(this.creds.apiSecret, prehash);
23
+ return {
24
+ 'ACCESS-KEY': this.creds.apiKey,
25
+ 'ACCESS-SIGN': sign,
26
+ 'ACCESS-TIMESTAMP': timestamp,
27
+ 'ACCESS-PASSPHRASE': this.creds.passphrase ?? '',
28
+ 'Content-Type': 'application/json',
29
+ 'locale': 'en-US',
30
+ };
31
+ }
32
+ unwrapResponse(json) {
33
+ const obj = json;
34
+ if (obj?.code && obj.code !== '00000') {
35
+ const msg = obj.msg ?? obj.message ?? `Bitget error: ${obj.code}`;
36
+ if (obj.code === '429')
37
+ throw new base_1.RateLimitError(msg, 'bitget', obj.code);
38
+ if (obj.code === '40001' || obj.code === '40006')
39
+ throw new base_1.InvalidSymbolError(msg, 'bitget', obj.code);
40
+ if (obj.code === '40300')
41
+ throw new base_1.InsufficientFundsError(msg, 'bitget', obj.code);
42
+ throw new base_1.ExchangeError(msg, 'bitget', obj.code, json);
43
+ }
44
+ return (obj?.data ?? json);
45
+ }
46
+ async bgGet(path, query = {}) {
47
+ const qs = Object.entries(query).filter(([, v]) => v !== undefined)
48
+ .map(([k, v]) => `${k}=${encodeURIComponent(String(v))}`).join('&');
49
+ const fullPath = qs ? `${path}?${qs}` : path;
50
+ const headers = await this.buildHeaders('GET', fullPath);
51
+ const res = await fetch(`${BITGET_BASE}${fullPath}`, { headers });
52
+ return this.handleRes(res);
53
+ }
54
+ async bgPost(path, body = {}) {
55
+ const headers = await this.buildHeaders('POST', path, body);
56
+ const res = await fetch(`${BITGET_BASE}${path}`, {
57
+ method: 'POST',
58
+ headers,
59
+ body: JSON.stringify(body),
60
+ });
61
+ return this.handleRes(res);
62
+ }
63
+ async bgDelete(path, body = {}) {
64
+ const headers = await this.buildHeaders('DELETE', path, body);
65
+ const res = await fetch(`${BITGET_BASE}${path}`, {
66
+ method: 'DELETE',
67
+ headers,
68
+ body: JSON.stringify(body),
69
+ });
70
+ return this.handleRes(res);
71
+ }
72
+ async handleRes(res) {
73
+ const text = await res.text();
74
+ let json;
75
+ try {
76
+ json = JSON.parse(text);
77
+ }
78
+ catch {
79
+ json = text;
80
+ }
81
+ if (!res.ok) {
82
+ const err = json;
83
+ throw new base_1.ExchangeError(err?.msg ?? text, 'bitget', err?.code, json);
84
+ }
85
+ return this.unwrapResponse(json);
86
+ }
87
+ // ─── Helpers ─────────────────────────────────────────────────────────────
88
+ detectProductType(symbol) {
89
+ if (symbol.includes('_SPBL'))
90
+ return 'SPOT';
91
+ if (symbol.includes('_DMCBL'))
92
+ return 'COIN-FUTURES';
93
+ if (symbol.includes('_CMCBL'))
94
+ return 'COIN-FUTURES';
95
+ return 'USDT-FUTURES'; // default for UMCBL
96
+ }
97
+ isFutures(productType) {
98
+ return productType !== 'SPOT';
99
+ }
100
+ mapBgStatus(raw) {
101
+ const m = {
102
+ init: 'open', new: 'open', live: 'open',
103
+ partially_fill: 'partially_filled', partial_fill: 'partially_filled',
104
+ full_fill: 'filled', filled: 'filled',
105
+ cancelled: 'cancelled', cancel: 'cancelled',
106
+ not_trigger: 'open',
107
+ };
108
+ return m[raw.toLowerCase()] ?? this.normaliseStatus(raw);
109
+ }
110
+ mapOrder(o, symbol) {
111
+ return {
112
+ orderId: o.orderId ?? o.clientOid ?? '',
113
+ clientOrderId: o.clientOid,
114
+ symbol,
115
+ side: o.side ?? 'buy',
116
+ type: 'limit',
117
+ quantity: parseFloat(o.size ?? o.baseVolume ?? o.qty ?? '0'),
118
+ price: o.price ? parseFloat(o.price) : undefined,
119
+ stopPrice: o.triggerPrice ? parseFloat(o.triggerPrice) : undefined,
120
+ status: this.mapBgStatus(o.status ?? o.state ?? ''),
121
+ filledQuantity: parseFloat(o.fillQty ?? o.baseVolume ?? o.accFillSz ?? '0'),
122
+ avgFillPrice: o.fillPrice ? parseFloat(o.fillPrice) : o.priceAvg ? parseFloat(o.priceAvg) : undefined,
123
+ fee: o.fee ? Math.abs(parseFloat(o.fee)) : undefined,
124
+ feeCurrency: o.feeCoin,
125
+ createdAt: parseInt(o.cTime ?? o.createTime ?? `${Date.now()}`),
126
+ updatedAt: o.uTime ? parseInt(o.uTime) : undefined,
127
+ raw: o,
128
+ };
129
+ }
130
+ // ─── Market Data ─────────────────────────────────────────────────────────
131
+ async getTicker(symbol) {
132
+ const productType = this.detectProductType(symbol);
133
+ if (!this.isFutures(productType)) {
134
+ const data = await this.bgGet('/api/v2/spot/market/tickers', { symbol });
135
+ const t = data[0] ?? {};
136
+ return {
137
+ symbol, bid: parseFloat(t.buyOne ?? t.bestBid ?? '0'),
138
+ ask: parseFloat(t.sellOne ?? t.bestAsk ?? '0'), last: parseFloat(t.lastPr ?? t.close ?? '0'),
139
+ volume24h: parseFloat(t.baseVol ?? t.volume24h ?? '0'),
140
+ };
141
+ }
142
+ const data = await this.bgGet('/api/v2/mix/market/ticker', {
143
+ symbol, productType,
144
+ });
145
+ const t = data[0] ?? {};
146
+ return {
147
+ symbol, bid: parseFloat(t.bidPr ?? '0'), ask: parseFloat(t.askPr ?? '0'),
148
+ last: parseFloat(t.lastPr ?? '0'), volume24h: parseFloat(t.baseVolume ?? '0'),
149
+ openInterest: t.openInterest ? parseFloat(t.openInterest) : undefined,
150
+ markPrice: t.markPrice ? parseFloat(t.markPrice) : undefined,
151
+ fundingRate: t.fundingRate ? parseFloat(t.fundingRate) : undefined,
152
+ };
153
+ }
154
+ async getSymbolInfo(symbol) {
155
+ const productType = this.detectProductType(symbol);
156
+ if (!this.isFutures(productType)) {
157
+ const data = await this.bgGet('/api/v2/spot/public/symbols', { symbol });
158
+ const s = data[0] ?? {};
159
+ return {
160
+ symbol, base: s.baseCoin ?? '', quote: s.quoteCoin ?? '',
161
+ marketType: 'spot', minQty: parseFloat(s.minTradeAmount ?? '0'),
162
+ maxQty: parseFloat(s.maxTradeAmount ?? '99999999'),
163
+ stepSize: parseFloat(s.quantityPrecision ?? '0.001'),
164
+ tickSize: parseFloat(s.pricePrecision ?? '0.01'),
165
+ minNotional: parseFloat(s.minTradeUSDT ?? '1'),
166
+ };
167
+ }
168
+ const data = await this.bgGet('/api/v2/mix/market/contracts', {
169
+ symbol, productType,
170
+ });
171
+ const s = data[0] ?? {};
172
+ return {
173
+ symbol, base: s.baseCoin ?? '', quote: s.quoteCoin ?? '',
174
+ marketType: 'swap', minQty: parseFloat(s.minTradeNum ?? '0.001'),
175
+ maxQty: parseFloat(s.maxTradeNum ?? '99999999'),
176
+ stepSize: parseFloat(s.sizeMultiplier ?? '0.001'),
177
+ tickSize: parseFloat(s.priceEndStep ?? '0.01'),
178
+ minNotional: 5, maxLeverage: parseFloat(s.maxLever ?? '125'),
179
+ settleCurrency: s.quoteCoin,
180
+ };
181
+ }
182
+ async getOHLCV(symbol, timeframe, limit = 100) {
183
+ const productType = this.detectProductType(symbol);
184
+ const granularityMap = {
185
+ '1m': '1min', '5m': '5min', '15m': '15min', '30m': '30min',
186
+ '1h': '1H', '4h': '4H', '1d': '1D', '1w': '1W',
187
+ };
188
+ const granularity = granularityMap[timeframe] ?? '1H';
189
+ const path = this.isFutures(productType) ? '/api/v2/mix/market/candles' : '/api/v2/spot/market/candles';
190
+ const data = await this.bgGet(path, { symbol, productType: this.isFutures(productType) ? productType : undefined, granularity, limit });
191
+ return data.map(c => ({
192
+ timestamp: parseInt(c[0]), open: parseFloat(c[1]), high: parseFloat(c[2]),
193
+ low: parseFloat(c[3]), close: parseFloat(c[4]), volume: parseFloat(c[5]),
194
+ }));
195
+ }
196
+ async getOrderBook(symbol, depth = 20) {
197
+ const productType = this.detectProductType(symbol);
198
+ const path = this.isFutures(productType) ? '/api/v2/mix/market/merge-depth' : '/api/v2/spot/market/orderbook';
199
+ const data = await this.bgGet(path, {
200
+ symbol, productType: this.isFutures(productType) ? productType : undefined, limit: depth,
201
+ });
202
+ return {
203
+ symbol,
204
+ bids: (data.bids ?? []).map(([p, q]) => ({ price: parseFloat(p), quantity: parseFloat(q) })),
205
+ asks: (data.asks ?? []).map(([p, q]) => ({ price: parseFloat(p), quantity: parseFloat(q) })),
206
+ timestamp: data.ts ? parseInt(data.ts) : Date.now(),
207
+ };
208
+ }
209
+ async getFundingInfo(symbol) {
210
+ const productType = this.detectProductType(symbol);
211
+ if (!this.isFutures(productType))
212
+ return null;
213
+ try {
214
+ const [cur, hist] = await Promise.all([
215
+ this.bgGet('/api/v2/mix/market/current-fund-rate', { symbol, productType }),
216
+ this.bgGet('/api/v2/mix/market/history-fund-rate', { symbol, productType, pageSize: '7' }),
217
+ ]);
218
+ return {
219
+ symbol, fundingRate: parseFloat(cur.fundingRate ?? '0'),
220
+ nextFundingTime: parseInt(cur.nextSettleTime ?? '0'), openInterest: 0,
221
+ historyRates: hist.map(h => ({ rate: parseFloat(h.fundingRate ?? '0'), timestamp: parseInt(h.settleTime ?? '0') })),
222
+ };
223
+ }
224
+ catch {
225
+ return null;
226
+ }
227
+ }
228
+ async listSymbols(marketType) {
229
+ if (marketType === 'swap' || marketType === 'futures') {
230
+ const data = await this.bgGet('/api/v2/mix/market/contracts', { productType: 'USDT-FUTURES' });
231
+ return data.map(s => s.symbol);
232
+ }
233
+ const data = await this.bgGet('/api/v2/spot/public/symbols');
234
+ return data.map(s => s.symbol);
235
+ }
236
+ // ─── Account ─────────────────────────────────────────────────────────────
237
+ async getAccount() {
238
+ // V3 Unified Trading Account API
239
+ const data = await this.bgGet('/api/v3/account/assets');
240
+ return {
241
+ balances: (data.assets ?? []).map(a => ({
242
+ asset: a.coin,
243
+ free: parseFloat(a.available ?? '0'),
244
+ locked: parseFloat(a.locked ?? '0'),
245
+ total: parseFloat(a.equity ?? '0'),
246
+ })),
247
+ totalEquity: parseFloat(data.usdtEquity ?? '0'),
248
+ availableMargin: parseFloat(data.accountEquity ?? '0'),
249
+ unrealizedPnl: parseFloat(data.unrealisedPnl ?? '0'),
250
+ };
251
+ }
252
+ async getPositions(symbol) {
253
+ const params = { category: 'USDT-FUTURES' };
254
+ if (symbol)
255
+ params.symbol = symbol;
256
+ try {
257
+ const data = await this.bgGet('/api/v3/position/current-position', params);
258
+ return (data.list ?? [])
259
+ .filter(p => parseFloat(p.total ?? '0') !== 0)
260
+ .map(p => ({
261
+ symbol: p.symbol,
262
+ side: (p.posSide === 'long' ? 'long' : 'short'),
263
+ size: Math.abs(parseFloat(p.total ?? '0')),
264
+ entryPrice: parseFloat(p.avgPrice ?? '0'),
265
+ markPrice: parseFloat(p.markPrice ?? '0'),
266
+ notional: 0,
267
+ leverage: parseFloat(p.leverage ?? '1'),
268
+ marginMode: (p.marginMode ?? 'cross'),
269
+ unrealizedPnl: parseFloat(p.unrealisedPnl ?? '0'),
270
+ liquidationPrice: p.liquidationPrice ? parseFloat(p.liquidationPrice) : undefined,
271
+ openedAt: parseInt(p.createdTime ?? `${Date.now()}`),
272
+ }));
273
+ }
274
+ catch {
275
+ return [];
276
+ }
277
+ }
278
+ // ─── Leverage ────────────────────────────────────────────────────────────
279
+ async setLeverage(symbol, leverage, marginMode = 'cross') {
280
+ const productType = this.detectProductType(symbol);
281
+ await this.bgPost('/api/v2/mix/account/set-leverage', { symbol, productType, marginCoin: 'USDT', leverage: leverage.toString() });
282
+ await this.bgPost('/api/v2/mix/account/set-margin-mode', { symbol, productType, marginCoin: 'USDT', marginMode });
283
+ }
284
+ // ─── Order Placement ──────────────────────────────────────────────────────
285
+ async placeOrder(params) {
286
+ const productType = this.detectProductType(params.symbol);
287
+ if (!this.isFutures(productType))
288
+ return this.placeSpotOrder(params);
289
+ return this.placeFuturesOrder(params, productType);
290
+ }
291
+ async placeSpotOrder(params) {
292
+ const body = {
293
+ symbol: params.symbol,
294
+ side: params.side,
295
+ orderType: params.type === 'market' ? 'market' : 'limit',
296
+ size: params.quantity?.toString(),
297
+ price: params.price?.toString(),
298
+ clientOid: params.clientOrderId ?? (0, base_1.genClientOrderId)('bg'),
299
+ force: params.timeInForce === 'IOC' ? 'ioc' : params.timeInForce === 'FOK' ? 'fok' : params.postOnly ? 'post_only' : 'normal',
300
+ };
301
+ for (const k of Object.keys(body)) {
302
+ if (body[k] === undefined)
303
+ delete body[k];
304
+ }
305
+ const data = await this.bgPost('/api/v2/spot/trade/place-order', body);
306
+ return this.getOrderStatus(data.orderId, params.symbol);
307
+ }
308
+ async placeFuturesOrder(params, productType) {
309
+ const isAlgo = ['stop_market', 'stop_limit', 'take_profit_market', 'take_profit_limit', 'trailing_stop', 'bracket', 'plan'].includes(params.type ?? '');
310
+ if (params.type === 'bracket')
311
+ return this.placeBracketOrder(params, productType);
312
+ if (isAlgo)
313
+ return this.placePlanOrder(params, productType);
314
+ const body = {
315
+ symbol: params.symbol,
316
+ productType,
317
+ marginCoin: 'USDT',
318
+ side: params.side,
319
+ tradeSide: params.reduceOnly ? 'close' : 'open',
320
+ orderType: params.type === 'market' ? 'market' : 'limit',
321
+ size: params.quantity?.toString(),
322
+ price: params.price?.toString(),
323
+ clientOid: params.clientOrderId ?? (0, base_1.genClientOrderId)('bgf'),
324
+ timeInForceValue: params.timeInForce === 'IOC' ? 'ioc' : params.timeInForce === 'FOK' ? 'fok' : params.postOnly ? 'post_only' : 'normal',
325
+ };
326
+ for (const k of Object.keys(body)) {
327
+ if (body[k] === undefined)
328
+ delete body[k];
329
+ }
330
+ const data = await this.bgPost('/api/v2/mix/order/place-order', body);
331
+ return this.getOrderStatus(data.orderId, params.symbol);
332
+ }
333
+ async placePlanOrder(params, productType) {
334
+ const typeMap = {
335
+ stop_market: 'stop', stop_limit: 'stop', take_profit_market: 'profit', take_profit_limit: 'profit',
336
+ trailing_stop: 'moving_plan',
337
+ };
338
+ const body = {
339
+ symbol: params.symbol, productType, marginCoin: 'USDT',
340
+ side: params.side, tradeSide: params.reduceOnly ? 'close' : 'open',
341
+ orderType: params.type?.includes('limit') ? 'limit' : 'market',
342
+ size: params.quantity?.toString(), triggerPrice: params.stopPrice?.toString(),
343
+ executePrice: params.price?.toString(),
344
+ planType: typeMap[params.type ?? ''] ?? 'normal_plan',
345
+ clientOid: params.clientOrderId ?? (0, base_1.genClientOrderId)('bgp'),
346
+ // Trailing stop specific
347
+ callbackRatio: params.extra?.callbackRate?.toString(),
348
+ };
349
+ for (const k of Object.keys(body)) {
350
+ if (body[k] === undefined)
351
+ delete body[k];
352
+ }
353
+ const data = await this.bgPost('/api/v2/mix/order/place-tpsl-order', body);
354
+ return {
355
+ orderId: data.orderId ?? '', symbol: params.symbol, side: params.side,
356
+ type: params.type, quantity: params.quantity ?? 0,
357
+ price: params.price, stopPrice: params.stopPrice, status: 'open',
358
+ filledQuantity: 0, createdAt: Date.now(), raw: data,
359
+ };
360
+ }
361
+ async placeBracketOrder(params, productType) {
362
+ // Place entry first, then TP and SL as plan orders
363
+ const entry = await this.placeFuturesOrder({ ...params, type: params.extra?.entryType ?? 'market' }, productType);
364
+ const closeSide = params.side === 'buy' ? 'sell' : 'buy';
365
+ if (params.extra?.takeProfitPrice) {
366
+ await this.placePlanOrder({
367
+ symbol: params.symbol, side: closeSide, type: 'take_profit_market',
368
+ quantity: params.quantity, stopPrice: params.extra.takeProfitPrice,
369
+ reduceOnly: true,
370
+ }, productType).catch(() => { });
371
+ }
372
+ if (params.extra?.stopLossPrice) {
373
+ await this.placePlanOrder({
374
+ symbol: params.symbol, side: closeSide, type: 'stop_market',
375
+ quantity: params.quantity, stopPrice: params.extra.stopLossPrice,
376
+ reduceOnly: true,
377
+ }, productType).catch(() => { });
378
+ }
379
+ return entry;
380
+ }
381
+ // ─── Cancel / Status ──────────────────────────────────────────────────────
382
+ async cancelOrder(orderId, symbol) {
383
+ const productType = this.detectProductType(symbol);
384
+ try {
385
+ if (this.isFutures(productType)) {
386
+ await this.bgPost('/api/v2/mix/order/cancel-order', { symbol, productType, marginCoin: 'USDT', orderId });
387
+ }
388
+ else {
389
+ await this.bgPost('/api/v2/spot/trade/cancel-order', { symbol, orderId });
390
+ }
391
+ return true;
392
+ }
393
+ catch {
394
+ // Try plan order cancel
395
+ try {
396
+ await this.bgPost('/api/v2/mix/order/cancel-plan-order', { symbol, productType, marginCoin: 'USDT', orderId });
397
+ return true;
398
+ }
399
+ catch {
400
+ return false;
401
+ }
402
+ }
403
+ }
404
+ async getOrderStatus(orderId, symbol) {
405
+ const productType = this.detectProductType(symbol);
406
+ try {
407
+ if (this.isFutures(productType)) {
408
+ const data = await this.bgGet('/api/v2/mix/order/detail', {
409
+ symbol, productType, orderId,
410
+ });
411
+ return this.mapOrder(data, symbol);
412
+ }
413
+ const data = await this.bgGet('/api/v2/spot/trade/orderInfo', { orderId, symbol });
414
+ return this.mapOrder(data, symbol);
415
+ }
416
+ catch {
417
+ return {
418
+ orderId, symbol, side: 'buy', type: 'limit', quantity: 0,
419
+ status: 'cancelled', filledQuantity: 0, createdAt: Date.now(),
420
+ };
421
+ }
422
+ }
423
+ async getOpenOrders(symbol) {
424
+ // V3 Unified Trading Account API
425
+ const results = [];
426
+ try {
427
+ const fData = await this.bgGet('/api/v3/trade/unfilled-orders', { category: 'USDT-FUTURES', ...(symbol ? { symbol } : {}) });
428
+ results.push(...(fData.list ?? []).map(o => this.mapV3Order(o)));
429
+ }
430
+ catch { /* ignore */ }
431
+ try {
432
+ const sData = await this.bgGet('/api/v3/trade/unfilled-orders', { category: 'SPOT', ...(symbol ? { symbol } : {}) });
433
+ results.push(...(sData.list ?? []).map(o => this.mapV3Order(o)));
434
+ }
435
+ catch { /* ignore */ }
436
+ return results;
437
+ }
438
+ async getOrderHistory(query) {
439
+ const q = { limit: String(query.limit ?? 50) };
440
+ if (query.symbol)
441
+ q.symbol = query.symbol;
442
+ if (query.startTime)
443
+ q.startTime = String(query.startTime);
444
+ if (query.endTime)
445
+ q.endTime = String(query.endTime);
446
+ if (query.nextCursor)
447
+ q.cursor = query.nextCursor;
448
+ const results = [];
449
+ try {
450
+ const fData = await this.bgGet('/api/v3/trade/history-orders', { category: 'USDT-FUTURES', ...q });
451
+ results.push(...(fData.list ?? []).map(o => this.mapV3Order(o)));
452
+ if (fData.nextCursor)
453
+ return { orders: results, nextCursor: fData.nextCursor, hasMore: true };
454
+ }
455
+ catch { /* ignore */ }
456
+ try {
457
+ const sData = await this.bgGet('/api/v3/trade/history-orders', { category: 'SPOT', ...q });
458
+ results.push(...(sData.list ?? []).map(o => this.mapV3Order(o)));
459
+ if (sData.nextCursor)
460
+ return { orders: results, nextCursor: sData.nextCursor, hasMore: true };
461
+ }
462
+ catch { /* ignore */ }
463
+ return { orders: results, hasMore: false };
464
+ }
465
+ async getFills(query) {
466
+ const q = { limit: String(query.limit ?? 50) };
467
+ if (query.symbol)
468
+ q.symbol = query.symbol;
469
+ if (query.orderId)
470
+ q.orderId = query.orderId;
471
+ if (query.startTime)
472
+ q.startTime = String(query.startTime);
473
+ if (query.endTime)
474
+ q.endTime = String(query.endTime);
475
+ if (query.nextCursor)
476
+ q.cursor = query.nextCursor;
477
+ const fills = [];
478
+ try {
479
+ const fData = await this.bgGet('/api/v3/trade/fills', q);
480
+ fills.push(...(fData.list ?? []).map(f => ({
481
+ fillId: f.execId ?? '',
482
+ orderId: f.orderId ?? '',
483
+ symbol: f.symbol ?? query.symbol ?? '',
484
+ side: f.side ?? 'buy',
485
+ quantity: parseFloat(f.execQty ?? '0'),
486
+ price: parseFloat(f.execPrice ?? '0'),
487
+ fee: parseFloat(f.feeDetail ?? '0'),
488
+ feeCurrency: '',
489
+ liquidity: 'taker',
490
+ timestamp: parseInt(f.createdTime ?? `${Date.now()}`),
491
+ raw: f,
492
+ })));
493
+ if (fData.nextCursor)
494
+ return { fills, nextCursor: fData.nextCursor, hasMore: true };
495
+ }
496
+ catch { /* ignore */ }
497
+ return { fills, hasMore: false };
498
+ }
499
+ mapV3Order(o) {
500
+ const typeMap = {
501
+ limit: 'limit', market: 'market',
502
+ stop_market: 'stop_market', stop_limit: 'stop_limit',
503
+ take_profit_market: 'take_profit_market', take_profit_limit: 'take_profit_limit',
504
+ trailing_stop: 'trailing_stop', plan: 'limit',
505
+ };
506
+ return {
507
+ orderId: o.orderId ?? o.clientOid ?? '',
508
+ clientOrderId: o.clientOid,
509
+ symbol: o.symbol ?? '',
510
+ side: o.side ?? 'buy',
511
+ type: typeMap[o.orderType?.toLowerCase() ?? ''] ?? 'limit',
512
+ quantity: parseFloat(o.qty ?? o.cumExecQty ?? '0'),
513
+ price: o.price ? parseFloat(o.price) : undefined,
514
+ status: this.mapBgStatus(o.orderStatus ?? ''),
515
+ filledQuantity: parseFloat(o.cumExecQty ?? '0'),
516
+ avgFillPrice: o.avgPrice ? parseFloat(o.avgPrice) : undefined,
517
+ createdAt: parseInt(o.createdTime ?? `${Date.now()}`),
518
+ updatedAt: o.updatedTime ? parseInt(o.updatedTime) : undefined,
519
+ raw: o,
520
+ };
521
+ }
522
+ }
523
+ exports.BitgetAdapter = BitgetAdapter;
524
+ //# sourceMappingURL=bitget.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"bitget.js","sourceRoot":"","sources":["../../../../src/exchange/v2/adapters/bitget.ts"],"names":[],"mappings":"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"}