@123456btc/123456btc-cli 1.0.5 → 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.
- package/dist/api/signals.d.ts +3 -3
- package/dist/api/signals.d.ts.map +1 -1
- package/dist/api/signals.js +3 -3
- package/dist/api/signals.js.map +1 -1
- package/dist/api/strategy-stream.d.ts +4 -9
- package/dist/api/strategy-stream.d.ts.map +1 -1
- package/dist/api/strategy-stream.js +14 -13
- package/dist/api/strategy-stream.js.map +1 -1
- package/dist/api/strategy.d.ts +3 -1
- package/dist/api/strategy.d.ts.map +1 -1
- package/dist/api/strategy.js +3 -1
- package/dist/api/strategy.js.map +1 -1
- package/dist/commands/exchange.d.ts +3 -0
- package/dist/commands/exchange.d.ts.map +1 -0
- package/dist/commands/exchange.js +141 -0
- package/dist/commands/exchange.js.map +1 -0
- package/dist/commands/signals.js +7 -7
- package/dist/commands/signals.js.map +1 -1
- package/dist/commands/strategy.d.ts.map +1 -1
- package/dist/commands/strategy.js +181 -8
- package/dist/commands/strategy.js.map +1 -1
- package/dist/commands/vault.d.ts.map +1 -1
- package/dist/commands/vault.js +5 -3
- package/dist/commands/vault.js.map +1 -1
- package/dist/config/strategy-exchange.d.ts +30 -0
- package/dist/config/strategy-exchange.d.ts.map +1 -0
- package/dist/config/strategy-exchange.js +130 -0
- package/dist/config/strategy-exchange.js.map +1 -0
- package/dist/exchange/index.d.ts +106 -0
- package/dist/exchange/index.d.ts.map +1 -0
- package/dist/exchange/index.js +43 -0
- package/dist/exchange/index.js.map +1 -0
- package/dist/exchange/v2/adapters/base.d.ts +130 -0
- package/dist/exchange/v2/adapters/base.d.ts.map +1 -0
- package/dist/exchange/v2/adapters/base.js +296 -0
- package/dist/exchange/v2/adapters/base.js.map +1 -0
- package/dist/exchange/v2/adapters/binance.d.ts +51 -0
- package/dist/exchange/v2/adapters/binance.d.ts.map +1 -0
- package/dist/exchange/v2/adapters/binance.js +549 -0
- package/dist/exchange/v2/adapters/binance.js.map +1 -0
- package/dist/exchange/v2/adapters/bitget.d.ts +43 -0
- package/dist/exchange/v2/adapters/bitget.d.ts.map +1 -0
- package/dist/exchange/v2/adapters/bitget.js +524 -0
- package/dist/exchange/v2/adapters/bitget.js.map +1 -0
- package/dist/exchange/v2/adapters/hyperliquid.d.ts +102 -0
- package/dist/exchange/v2/adapters/hyperliquid.d.ts.map +1 -0
- package/dist/exchange/v2/adapters/hyperliquid.js +536 -0
- package/dist/exchange/v2/adapters/hyperliquid.js.map +1 -0
- package/dist/exchange/v2/adapters/okx.d.ts +38 -0
- package/dist/exchange/v2/adapters/okx.d.ts.map +1 -0
- package/dist/exchange/v2/adapters/okx.js +437 -0
- package/dist/exchange/v2/adapters/okx.js.map +1 -0
- package/dist/exchange/v2/algorithms/index.d.ts +78 -0
- package/dist/exchange/v2/algorithms/index.d.ts.map +1 -0
- package/dist/exchange/v2/algorithms/index.js +441 -0
- package/dist/exchange/v2/algorithms/index.js.map +1 -0
- package/dist/exchange/v2/executor/circuit-breaker.d.ts +44 -0
- package/dist/exchange/v2/executor/circuit-breaker.d.ts.map +1 -0
- package/dist/exchange/v2/executor/circuit-breaker.js +90 -0
- package/dist/exchange/v2/executor/circuit-breaker.js.map +1 -0
- package/dist/exchange/v2/executor/core.d.ts +64 -0
- package/dist/exchange/v2/executor/core.d.ts.map +1 -0
- package/dist/exchange/v2/executor/core.js +458 -0
- package/dist/exchange/v2/executor/core.js.map +1 -0
- package/dist/exchange/v2/executor/risk.d.ts +29 -0
- package/dist/exchange/v2/executor/risk.d.ts.map +1 -0
- package/dist/exchange/v2/executor/risk.js +144 -0
- package/dist/exchange/v2/executor/risk.js.map +1 -0
- package/dist/exchange/v2/executor/state.d.ts +29 -0
- package/dist/exchange/v2/executor/state.d.ts.map +1 -0
- package/dist/exchange/v2/executor/state.js +171 -0
- package/dist/exchange/v2/executor/state.js.map +1 -0
- package/dist/exchange/v2/index.d.ts +50 -0
- package/dist/exchange/v2/index.d.ts.map +1 -0
- package/dist/exchange/v2/index.js +82 -0
- package/dist/exchange/v2/index.js.map +1 -0
- package/dist/exchange/v2/registry.d.ts +50 -0
- package/dist/exchange/v2/registry.d.ts.map +1 -0
- package/dist/exchange/v2/registry.js +101 -0
- package/dist/exchange/v2/registry.js.map +1 -0
- package/dist/exchange/v2/types.d.ts +413 -0
- package/dist/exchange/v2/types.d.ts.map +1 -0
- package/dist/exchange/v2/types.js +3 -0
- package/dist/exchange/v2/types.js.map +1 -0
- package/dist/index.d.ts +105 -22
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +40 -37
- package/dist/index.js.map +1 -1
- package/dist/types/financial.d.ts +14 -0
- package/dist/types/financial.d.ts.map +1 -0
- package/dist/types/financial.js +6 -0
- package/dist/types/financial.js.map +1 -0
- package/dist/vault/crypto.js +3 -3
- package/dist/vault/crypto.js.map +1 -1
- package/dist/vault/index.d.ts +28 -0
- package/dist/vault/index.d.ts.map +1 -1
- package/dist/vault/index.js +70 -0
- package/dist/vault/index.js.map +1 -1
- package/package.json +1 -1
|
@@ -0,0 +1,101 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Adapter Registry / Factory
|
|
4
|
+
* Creates exchange adapters and fully-configured OrderEngines.
|
|
5
|
+
*/
|
|
6
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
7
|
+
exports.ExchangeRegistry = void 0;
|
|
8
|
+
exports.createAdapter = createAdapter;
|
|
9
|
+
exports.createEngine = createEngine;
|
|
10
|
+
const okx_1 = require("./adapters/okx");
|
|
11
|
+
const binance_1 = require("./adapters/binance");
|
|
12
|
+
const bitget_1 = require("./adapters/bitget");
|
|
13
|
+
const hyperliquid_1 = require("./adapters/hyperliquid");
|
|
14
|
+
const core_1 = require("./executor/core");
|
|
15
|
+
function createAdapter(options) {
|
|
16
|
+
const { exchange, credentials, hyperliquidSignerFn } = options;
|
|
17
|
+
switch (exchange) {
|
|
18
|
+
case 'okx':
|
|
19
|
+
return new okx_1.OKXAdapter(credentials);
|
|
20
|
+
case 'binance':
|
|
21
|
+
return new binance_1.BinanceAdapter(credentials);
|
|
22
|
+
case 'bitget':
|
|
23
|
+
return new bitget_1.BitgetAdapter(credentials);
|
|
24
|
+
case 'hyperliquid':
|
|
25
|
+
return new hyperliquid_1.HyperliquidAdapter(credentials, hyperliquidSignerFn);
|
|
26
|
+
default:
|
|
27
|
+
throw new Error(`Unsupported exchange: ${exchange}`);
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
// ─── Engine Factory ───────────────────────────────────────────────────────
|
|
31
|
+
function createEngine(adapterOptions, engineConfig) {
|
|
32
|
+
const adapter = createAdapter(adapterOptions);
|
|
33
|
+
const config = {
|
|
34
|
+
exchange: adapterOptions.exchange,
|
|
35
|
+
credentials: adapterOptions.credentials,
|
|
36
|
+
...engineConfig,
|
|
37
|
+
};
|
|
38
|
+
return new core_1.OrderEngine(adapter, config);
|
|
39
|
+
}
|
|
40
|
+
// ─── Multi-Exchange Registry ──────────────────────────────────────────────
|
|
41
|
+
/**
|
|
42
|
+
* Manages multiple exchange engines in one registry.
|
|
43
|
+
* Useful for cross-exchange strategies and arbitrage.
|
|
44
|
+
*/
|
|
45
|
+
class ExchangeRegistry {
|
|
46
|
+
engines = new Map();
|
|
47
|
+
/** Add or replace an engine by key (e.g. 'okx_main', 'binance_futures') */
|
|
48
|
+
add(key, options, engineConfig) {
|
|
49
|
+
const engine = createEngine(options, engineConfig);
|
|
50
|
+
this.engines.set(key, engine);
|
|
51
|
+
return engine;
|
|
52
|
+
}
|
|
53
|
+
get(key) {
|
|
54
|
+
const engine = this.engines.get(key);
|
|
55
|
+
if (!engine)
|
|
56
|
+
throw new Error(`No engine registered for key: ${key}`);
|
|
57
|
+
return engine;
|
|
58
|
+
}
|
|
59
|
+
has(key) {
|
|
60
|
+
return this.engines.has(key);
|
|
61
|
+
}
|
|
62
|
+
keys() {
|
|
63
|
+
return Array.from(this.engines.keys());
|
|
64
|
+
}
|
|
65
|
+
remove(key) {
|
|
66
|
+
this.engines.delete(key);
|
|
67
|
+
}
|
|
68
|
+
/**
|
|
69
|
+
* Fetch the same ticker from all registered engines in parallel.
|
|
70
|
+
* Useful for finding the best bid/ask across exchanges.
|
|
71
|
+
*/
|
|
72
|
+
async fetchTickers(symbol) {
|
|
73
|
+
const results = new Map();
|
|
74
|
+
await Promise.all(Array.from(this.engines.entries()).map(async ([key, engine]) => {
|
|
75
|
+
try {
|
|
76
|
+
const ticker = await engine.getTicker(symbol);
|
|
77
|
+
results.set(key, ticker);
|
|
78
|
+
}
|
|
79
|
+
catch { /* skip offline exchange */ }
|
|
80
|
+
}));
|
|
81
|
+
return results;
|
|
82
|
+
}
|
|
83
|
+
/**
|
|
84
|
+
* Find the best bid (sell into) and ask (buy from) across all registered exchanges.
|
|
85
|
+
* Returns: { bestBid: { key, price }, bestAsk: { key, price } }
|
|
86
|
+
*/
|
|
87
|
+
async bestBidAsk(symbol) {
|
|
88
|
+
const tickers = await this.fetchTickers(symbol);
|
|
89
|
+
let bestBid = null;
|
|
90
|
+
let bestAsk = null;
|
|
91
|
+
for (const [key, ticker] of tickers) {
|
|
92
|
+
if (!bestBid || ticker.bid > bestBid.price)
|
|
93
|
+
bestBid = { key, price: ticker.bid };
|
|
94
|
+
if (!bestAsk || ticker.ask < bestAsk.price)
|
|
95
|
+
bestAsk = { key, price: ticker.ask };
|
|
96
|
+
}
|
|
97
|
+
return { bestBid, bestAsk };
|
|
98
|
+
}
|
|
99
|
+
}
|
|
100
|
+
exports.ExchangeRegistry = ExchangeRegistry;
|
|
101
|
+
//# sourceMappingURL=registry.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"registry.js","sourceRoot":"","sources":["../../../src/exchange/v2/registry.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,413 @@
|
|
|
1
|
+
import type { Price, Quantity, Pnl, Fee, Notional } from '../../types/financial';
|
|
2
|
+
/**
|
|
3
|
+
* Institutional Order Execution Module — Unified Type System
|
|
4
|
+
* v2.0 — reusable across any project
|
|
5
|
+
*/
|
|
6
|
+
export type ExchangeId = 'okx' | 'binance' | 'bitget' | 'hyperliquid';
|
|
7
|
+
export type MarketType = 'spot' | 'futures' | 'swap' | 'option';
|
|
8
|
+
export type OrderSide = 'buy' | 'sell';
|
|
9
|
+
export type PositionSide = 'long' | 'short' | 'net';
|
|
10
|
+
export type OrderType = 'market' | 'limit' | 'stop_market' | 'stop_limit' | 'take_profit_market' | 'take_profit_limit' | 'trailing_stop' | 'twap' | 'vwap' | 'iceberg' | 'bracket' | 'oco';
|
|
11
|
+
export type TimeInForce = 'GTC' | 'IOC' | 'FOK' | 'PO' | 'GTD' | 'GTX';
|
|
12
|
+
export type OrderStatus = 'pending' | 'open' | 'partially_filled' | 'filled' | 'cancelled' | 'rejected' | 'expired' | 'failed';
|
|
13
|
+
export type MarginMode = 'cross' | 'isolated';
|
|
14
|
+
export interface ExchangeCredentials {
|
|
15
|
+
apiKey: string;
|
|
16
|
+
apiSecret: string;
|
|
17
|
+
passphrase?: string;
|
|
18
|
+
/** Raw hex private key for Hyperliquid (0x...) */
|
|
19
|
+
privateKey?: string;
|
|
20
|
+
testnet?: boolean;
|
|
21
|
+
}
|
|
22
|
+
export interface TickerInfo {
|
|
23
|
+
symbol: string;
|
|
24
|
+
bid: number;
|
|
25
|
+
ask: number;
|
|
26
|
+
last: number;
|
|
27
|
+
volume24h: number;
|
|
28
|
+
openInterest?: number;
|
|
29
|
+
markPrice?: Price;
|
|
30
|
+
indexPrice?: Price;
|
|
31
|
+
fundingRate?: number;
|
|
32
|
+
}
|
|
33
|
+
export interface SymbolInfo {
|
|
34
|
+
symbol: string;
|
|
35
|
+
base: string;
|
|
36
|
+
quote: string;
|
|
37
|
+
marketType: MarketType;
|
|
38
|
+
minQty: Quantity;
|
|
39
|
+
maxQty: Quantity;
|
|
40
|
+
stepSize: number;
|
|
41
|
+
tickSize: Price;
|
|
42
|
+
minNotional: Notional;
|
|
43
|
+
maxLeverage?: number;
|
|
44
|
+
settleCurrency?: string;
|
|
45
|
+
}
|
|
46
|
+
export interface OHLCVBar {
|
|
47
|
+
timestamp: number;
|
|
48
|
+
open: number;
|
|
49
|
+
high: number;
|
|
50
|
+
low: number;
|
|
51
|
+
close: number;
|
|
52
|
+
volume: number;
|
|
53
|
+
turnover?: number;
|
|
54
|
+
}
|
|
55
|
+
export interface OrderBookLevel {
|
|
56
|
+
price: Price;
|
|
57
|
+
quantity: Quantity;
|
|
58
|
+
}
|
|
59
|
+
export interface OrderBook {
|
|
60
|
+
symbol: string;
|
|
61
|
+
bids: OrderBookLevel[];
|
|
62
|
+
asks: OrderBookLevel[];
|
|
63
|
+
timestamp: number;
|
|
64
|
+
}
|
|
65
|
+
export interface FundingInfo {
|
|
66
|
+
symbol: string;
|
|
67
|
+
fundingRate: number;
|
|
68
|
+
nextFundingTime: number;
|
|
69
|
+
openInterest: number;
|
|
70
|
+
historyRates: Array<{
|
|
71
|
+
rate: number;
|
|
72
|
+
timestamp: number;
|
|
73
|
+
}>;
|
|
74
|
+
}
|
|
75
|
+
export interface AssetBalance {
|
|
76
|
+
asset: string;
|
|
77
|
+
free: number;
|
|
78
|
+
locked: number;
|
|
79
|
+
total: number;
|
|
80
|
+
}
|
|
81
|
+
export interface AccountSnapshot {
|
|
82
|
+
balances: AssetBalance[];
|
|
83
|
+
totalEquity: number;
|
|
84
|
+
availableMargin: number;
|
|
85
|
+
usedMargin?: number;
|
|
86
|
+
unrealizedPnl?: Pnl;
|
|
87
|
+
marginRatio?: number;
|
|
88
|
+
}
|
|
89
|
+
export interface PositionInfo {
|
|
90
|
+
symbol: string;
|
|
91
|
+
side: PositionSide;
|
|
92
|
+
size: Quantity;
|
|
93
|
+
entryPrice: Price;
|
|
94
|
+
markPrice: Price;
|
|
95
|
+
notional: Notional;
|
|
96
|
+
leverage?: number;
|
|
97
|
+
marginMode?: MarginMode;
|
|
98
|
+
unrealizedPnl: Pnl;
|
|
99
|
+
realizedPnl?: Pnl;
|
|
100
|
+
liquidationPrice?: Price;
|
|
101
|
+
margin?: number;
|
|
102
|
+
openedAt: number;
|
|
103
|
+
}
|
|
104
|
+
/** Base fields shared by all order requests */
|
|
105
|
+
export interface BaseOrderRequest {
|
|
106
|
+
clientOrderId?: string;
|
|
107
|
+
runId?: string;
|
|
108
|
+
symbol: string;
|
|
109
|
+
side: OrderSide;
|
|
110
|
+
reduceOnly?: boolean;
|
|
111
|
+
positionSide?: PositionSide;
|
|
112
|
+
marginMode?: MarginMode;
|
|
113
|
+
leverage?: number;
|
|
114
|
+
tag?: string;
|
|
115
|
+
}
|
|
116
|
+
export interface MarketOrderRequest extends BaseOrderRequest {
|
|
117
|
+
type: 'market';
|
|
118
|
+
quantity: Quantity;
|
|
119
|
+
quoteQuantity?: Quantity;
|
|
120
|
+
}
|
|
121
|
+
export interface LimitOrderRequest extends BaseOrderRequest {
|
|
122
|
+
type: 'limit';
|
|
123
|
+
quantity: Quantity;
|
|
124
|
+
price: Price;
|
|
125
|
+
timeInForce?: TimeInForce;
|
|
126
|
+
postOnly?: boolean;
|
|
127
|
+
}
|
|
128
|
+
export interface StopOrderRequest extends BaseOrderRequest {
|
|
129
|
+
type: 'stop_market' | 'stop_limit' | 'take_profit_market' | 'take_profit_limit';
|
|
130
|
+
quantity: Quantity;
|
|
131
|
+
stopPrice: Price;
|
|
132
|
+
price?: Price;
|
|
133
|
+
timeInForce?: TimeInForce;
|
|
134
|
+
}
|
|
135
|
+
export interface TrailingStopRequest extends BaseOrderRequest {
|
|
136
|
+
type: 'trailing_stop';
|
|
137
|
+
quantity: Quantity;
|
|
138
|
+
/** Callback rate in percent (e.g., 1.5 means 1.5% trailing) */
|
|
139
|
+
callbackRate?: number;
|
|
140
|
+
/** Or absolute price distance */
|
|
141
|
+
callbackValue?: number;
|
|
142
|
+
activationPrice?: Price;
|
|
143
|
+
}
|
|
144
|
+
export interface BracketOrderRequest extends BaseOrderRequest {
|
|
145
|
+
type: 'bracket';
|
|
146
|
+
quantity: Quantity;
|
|
147
|
+
entryType: 'market' | 'limit';
|
|
148
|
+
entryPrice?: Price;
|
|
149
|
+
takeProfitPrice: Price;
|
|
150
|
+
stopLossPrice: Price;
|
|
151
|
+
timeInForce?: TimeInForce;
|
|
152
|
+
}
|
|
153
|
+
export interface OCOOrderRequest extends BaseOrderRequest {
|
|
154
|
+
type: 'oco';
|
|
155
|
+
quantity: Quantity;
|
|
156
|
+
price: Price;
|
|
157
|
+
stopPrice: Price;
|
|
158
|
+
stopLimitPrice?: Price;
|
|
159
|
+
}
|
|
160
|
+
/** TWAP execution params */
|
|
161
|
+
export interface TwapParams {
|
|
162
|
+
totalQuantity: Quantity;
|
|
163
|
+
durationMs: number;
|
|
164
|
+
intervals: number;
|
|
165
|
+
priceLimit?: Price;
|
|
166
|
+
side: OrderSide;
|
|
167
|
+
symbol: string;
|
|
168
|
+
}
|
|
169
|
+
/** VWAP execution params */
|
|
170
|
+
export interface VwapParams {
|
|
171
|
+
totalQuantity: Quantity;
|
|
172
|
+
durationMs: number;
|
|
173
|
+
participationRate: number;
|
|
174
|
+
priceLimit?: Price;
|
|
175
|
+
side: OrderSide;
|
|
176
|
+
symbol: string;
|
|
177
|
+
}
|
|
178
|
+
/** Iceberg order params */
|
|
179
|
+
export interface IcebergParams {
|
|
180
|
+
totalQuantity: Quantity;
|
|
181
|
+
visibleQuantity: Quantity;
|
|
182
|
+
price?: Price;
|
|
183
|
+
intervalMs?: number;
|
|
184
|
+
priceDeviation?: Price;
|
|
185
|
+
side: OrderSide;
|
|
186
|
+
symbol: string;
|
|
187
|
+
}
|
|
188
|
+
export type OrderRequest = MarketOrderRequest | LimitOrderRequest | StopOrderRequest | TrailingStopRequest | BracketOrderRequest | OCOOrderRequest;
|
|
189
|
+
export interface OrderResponse {
|
|
190
|
+
orderId: string;
|
|
191
|
+
clientOrderId?: string;
|
|
192
|
+
symbol: string;
|
|
193
|
+
side: OrderSide;
|
|
194
|
+
type: OrderType;
|
|
195
|
+
quantity: Quantity;
|
|
196
|
+
price?: Price;
|
|
197
|
+
stopPrice?: Price;
|
|
198
|
+
status: OrderStatus;
|
|
199
|
+
filledQuantity: Quantity;
|
|
200
|
+
avgFillPrice?: Price;
|
|
201
|
+
fee?: Fee;
|
|
202
|
+
feeCurrency?: string;
|
|
203
|
+
createdAt: number;
|
|
204
|
+
updatedAt?: number;
|
|
205
|
+
/** For bracket/algo, child order IDs */
|
|
206
|
+
childOrderIds?: string[];
|
|
207
|
+
/** Raw response from exchange for debugging */
|
|
208
|
+
raw?: unknown;
|
|
209
|
+
}
|
|
210
|
+
export interface AlgoSlice {
|
|
211
|
+
sliceIndex: number;
|
|
212
|
+
orderId: string;
|
|
213
|
+
quantity: Quantity;
|
|
214
|
+
price?: Price;
|
|
215
|
+
status: OrderStatus;
|
|
216
|
+
filledQuantity: Quantity;
|
|
217
|
+
avgFillPrice?: Price;
|
|
218
|
+
executedAt: number;
|
|
219
|
+
}
|
|
220
|
+
export interface AlgoOrderResult {
|
|
221
|
+
algoId: string;
|
|
222
|
+
type: 'twap' | 'vwap' | 'iceberg';
|
|
223
|
+
symbol: string;
|
|
224
|
+
side: OrderSide;
|
|
225
|
+
totalQuantity: Quantity;
|
|
226
|
+
filledQuantity: Quantity;
|
|
227
|
+
avgFillPrice: Price;
|
|
228
|
+
slices: AlgoSlice[];
|
|
229
|
+
status: 'running' | 'completed' | 'cancelled' | 'failed';
|
|
230
|
+
startedAt: number;
|
|
231
|
+
completedAt?: number;
|
|
232
|
+
error?: string;
|
|
233
|
+
}
|
|
234
|
+
export type RiskAction = 'allow' | 'block' | 'reduce' | 'warn';
|
|
235
|
+
export interface RiskRuleResult {
|
|
236
|
+
rule: string;
|
|
237
|
+
action: RiskAction;
|
|
238
|
+
message: string;
|
|
239
|
+
adjustedQuantity?: Quantity;
|
|
240
|
+
}
|
|
241
|
+
export interface RiskCheckResult {
|
|
242
|
+
passed: boolean;
|
|
243
|
+
action: RiskAction;
|
|
244
|
+
results: RiskRuleResult[];
|
|
245
|
+
adjustedRequest?: OrderRequest;
|
|
246
|
+
}
|
|
247
|
+
export interface RiskLimits {
|
|
248
|
+
maxPositionSize?: Notional;
|
|
249
|
+
maxOrderSize?: Notional;
|
|
250
|
+
maxDailyLoss?: number;
|
|
251
|
+
maxLeverage?: number;
|
|
252
|
+
maxOpenOrders?: number;
|
|
253
|
+
allowedSymbols?: string[];
|
|
254
|
+
blockedSymbols?: string[];
|
|
255
|
+
maxSlippage?: number;
|
|
256
|
+
portfolio?: {
|
|
257
|
+
maxTotalExposurePct?: number;
|
|
258
|
+
maxSymbolConcentrationPct?: number;
|
|
259
|
+
maxNetDirectionPct?: number;
|
|
260
|
+
};
|
|
261
|
+
}
|
|
262
|
+
export type OrderEvent = 'submit' | 'ack' | 'partial_fill' | 'fill' | 'cancel_request' | 'cancelled' | 'reject' | 'expire' | 'error';
|
|
263
|
+
export interface OrderStateTransition {
|
|
264
|
+
from: OrderStatus;
|
|
265
|
+
event: OrderEvent;
|
|
266
|
+
to: OrderStatus;
|
|
267
|
+
timestamp: number;
|
|
268
|
+
detail?: string;
|
|
269
|
+
}
|
|
270
|
+
export interface TrackedOrder {
|
|
271
|
+
orderId: string;
|
|
272
|
+
clientOrderId: string;
|
|
273
|
+
runId?: string;
|
|
274
|
+
exchange: ExchangeId;
|
|
275
|
+
request: OrderRequest;
|
|
276
|
+
response?: OrderResponse;
|
|
277
|
+
status: OrderStatus;
|
|
278
|
+
transitions: OrderStateTransition[];
|
|
279
|
+
retryCount: number;
|
|
280
|
+
createdAt: number;
|
|
281
|
+
updatedAt: number;
|
|
282
|
+
error?: string;
|
|
283
|
+
/** Parent order ID for algo/OMS child orders */
|
|
284
|
+
parentOrderId?: string;
|
|
285
|
+
/** Child order IDs for parent orders */
|
|
286
|
+
childOrderIds?: string[];
|
|
287
|
+
}
|
|
288
|
+
/** Low-level order that adapters send to exchange REST APIs */
|
|
289
|
+
export interface RawOrderParams {
|
|
290
|
+
symbol: string;
|
|
291
|
+
side: OrderSide;
|
|
292
|
+
type: string;
|
|
293
|
+
quantity?: Quantity;
|
|
294
|
+
quoteQuantity?: Quantity;
|
|
295
|
+
price?: Price;
|
|
296
|
+
stopPrice?: Price;
|
|
297
|
+
timeInForce?: string;
|
|
298
|
+
reduceOnly?: boolean;
|
|
299
|
+
postOnly?: boolean;
|
|
300
|
+
clientOrderId?: string;
|
|
301
|
+
/** Extra fields specific to exchange (merged into body) */
|
|
302
|
+
extra?: Record<string, unknown>;
|
|
303
|
+
}
|
|
304
|
+
export interface BatchOrderRequest {
|
|
305
|
+
orders: OrderRequest[];
|
|
306
|
+
/** Exchange-specific grouping (e.g. OKX normalTpsl / positionTpsl) */
|
|
307
|
+
grouping?: string;
|
|
308
|
+
}
|
|
309
|
+
export interface BatchOrderResponse {
|
|
310
|
+
results: OrderResponse[];
|
|
311
|
+
/** Indices of orders that failed + reason */
|
|
312
|
+
failed: {
|
|
313
|
+
index: number;
|
|
314
|
+
error: string;
|
|
315
|
+
}[];
|
|
316
|
+
}
|
|
317
|
+
export interface AmendOrderRequest {
|
|
318
|
+
orderId: string;
|
|
319
|
+
symbol: string;
|
|
320
|
+
newPrice?: Price;
|
|
321
|
+
newQuantity?: Quantity;
|
|
322
|
+
newStopPrice?: Price;
|
|
323
|
+
}
|
|
324
|
+
export interface OrderHistoryQuery {
|
|
325
|
+
symbol?: string;
|
|
326
|
+
status?: OrderStatus | OrderStatus[];
|
|
327
|
+
startTime?: number;
|
|
328
|
+
endTime?: number;
|
|
329
|
+
limit?: number;
|
|
330
|
+
/** Pagination cursor */
|
|
331
|
+
nextCursor?: string;
|
|
332
|
+
}
|
|
333
|
+
export interface OrderHistoryResponse {
|
|
334
|
+
orders: OrderResponse[];
|
|
335
|
+
nextCursor?: string;
|
|
336
|
+
hasMore: boolean;
|
|
337
|
+
}
|
|
338
|
+
export interface Fill {
|
|
339
|
+
fillId: string;
|
|
340
|
+
orderId: string;
|
|
341
|
+
symbol: string;
|
|
342
|
+
side: OrderSide;
|
|
343
|
+
quantity: Quantity;
|
|
344
|
+
price: Price;
|
|
345
|
+
fee: Fee;
|
|
346
|
+
feeCurrency: string;
|
|
347
|
+
/** Whether this fill added liquidity (maker) or removed it (taker) */
|
|
348
|
+
liquidity: 'maker' | 'taker';
|
|
349
|
+
timestamp: number;
|
|
350
|
+
raw?: unknown;
|
|
351
|
+
}
|
|
352
|
+
export interface TradeHistoryQuery {
|
|
353
|
+
symbol?: string;
|
|
354
|
+
orderId?: string;
|
|
355
|
+
startTime?: number;
|
|
356
|
+
endTime?: number;
|
|
357
|
+
limit?: number;
|
|
358
|
+
nextCursor?: string;
|
|
359
|
+
}
|
|
360
|
+
export interface TradeHistoryResponse {
|
|
361
|
+
fills: Fill[];
|
|
362
|
+
nextCursor?: string;
|
|
363
|
+
hasMore: boolean;
|
|
364
|
+
}
|
|
365
|
+
export interface CancelAllOrdersRequest {
|
|
366
|
+
symbol?: string;
|
|
367
|
+
side?: OrderSide;
|
|
368
|
+
}
|
|
369
|
+
export interface MarginModeRequest {
|
|
370
|
+
symbol: string;
|
|
371
|
+
mode: MarginMode;
|
|
372
|
+
}
|
|
373
|
+
export interface OrderRateLimitConfig {
|
|
374
|
+
/** Global rate limit across all venues */
|
|
375
|
+
global: {
|
|
376
|
+
maxOrdersPerSecond: number;
|
|
377
|
+
burstSize: number;
|
|
378
|
+
};
|
|
379
|
+
/** Per-venue overrides */
|
|
380
|
+
perVenue?: Partial<Record<ExchangeId, {
|
|
381
|
+
maxOrdersPerSecond: number;
|
|
382
|
+
burstSize: number;
|
|
383
|
+
}>>;
|
|
384
|
+
/** Per-symbol overrides */
|
|
385
|
+
perSymbol?: Record<string, {
|
|
386
|
+
maxOrdersPerSecond: number;
|
|
387
|
+
burstSize: number;
|
|
388
|
+
}>;
|
|
389
|
+
}
|
|
390
|
+
export interface EngineConfig {
|
|
391
|
+
exchange: ExchangeId;
|
|
392
|
+
credentials: ExchangeCredentials;
|
|
393
|
+
defaultMarketType?: MarketType;
|
|
394
|
+
defaultMarginMode?: MarginMode;
|
|
395
|
+
defaultLeverage?: number;
|
|
396
|
+
retryPolicy?: RetryPolicy;
|
|
397
|
+
riskLimits?: RiskLimits;
|
|
398
|
+
riskStatePersistence?: import('./executor/risk').RiskStatePersistence;
|
|
399
|
+
circuitBreaker?: import('./executor/circuit-breaker').CircuitBreakerConfig;
|
|
400
|
+
/** Called on every order state change */
|
|
401
|
+
onOrderUpdate?: (order: TrackedOrder) => void | Promise<void>;
|
|
402
|
+
/** Called on execution errors */
|
|
403
|
+
onError?: (error: Error, context: unknown) => void;
|
|
404
|
+
}
|
|
405
|
+
export interface RetryPolicy {
|
|
406
|
+
maxAttempts: number;
|
|
407
|
+
baseDelayMs: number;
|
|
408
|
+
maxDelayMs: number;
|
|
409
|
+
backoffFactor: number;
|
|
410
|
+
retryOn?: string[];
|
|
411
|
+
noRetryOn?: string[];
|
|
412
|
+
}
|
|
413
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/exchange/v2/types.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/exchange/v2/types.ts"],"names":[],"mappings":""}
|
package/dist/index.d.ts
CHANGED
|
@@ -1,23 +1,106 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
export
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
export
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
1
|
+
import type { Price, Quantity } from './types/financial';
|
|
2
|
+
export interface ExchangeConfig {
|
|
3
|
+
apiKey: string;
|
|
4
|
+
apiSecret: string;
|
|
5
|
+
passphrase?: string;
|
|
6
|
+
privateKey?: string;
|
|
7
|
+
}
|
|
8
|
+
export interface OrderRequest {
|
|
9
|
+
symbol: string;
|
|
10
|
+
side: 'buy' | 'sell';
|
|
11
|
+
type: 'market' | 'limit';
|
|
12
|
+
quantity?: Quantity;
|
|
13
|
+
price?: Price;
|
|
14
|
+
}
|
|
15
|
+
export interface OrderResponse {
|
|
16
|
+
orderId: string;
|
|
17
|
+
symbol: string;
|
|
18
|
+
side: string;
|
|
19
|
+
status: string;
|
|
20
|
+
price: string;
|
|
21
|
+
quantity: string;
|
|
22
|
+
executedQty: string;
|
|
23
|
+
}
|
|
24
|
+
export interface PositionInfo {
|
|
25
|
+
symbol: string;
|
|
26
|
+
side: 'long' | 'short';
|
|
27
|
+
entryPrice: string;
|
|
28
|
+
quantity: string;
|
|
29
|
+
unrealizedPnl: string;
|
|
30
|
+
}
|
|
31
|
+
export interface BalanceInfo {
|
|
32
|
+
asset: string;
|
|
33
|
+
free: string;
|
|
34
|
+
locked: string;
|
|
35
|
+
}
|
|
36
|
+
export interface KLine {
|
|
37
|
+
time: number;
|
|
38
|
+
open: number;
|
|
39
|
+
high: number;
|
|
40
|
+
low: number;
|
|
41
|
+
close: number;
|
|
42
|
+
volume: number;
|
|
43
|
+
}
|
|
44
|
+
export declare const EXCHANGE_CONFIG: {
|
|
45
|
+
readonly okx: {
|
|
46
|
+
readonly name: "OKX";
|
|
47
|
+
readonly fields: readonly [{
|
|
48
|
+
readonly key: "apiKey";
|
|
49
|
+
readonly label: "API Key";
|
|
50
|
+
readonly required: true;
|
|
51
|
+
}, {
|
|
52
|
+
readonly key: "apiSecret";
|
|
53
|
+
readonly label: "API Secret";
|
|
54
|
+
readonly required: true;
|
|
55
|
+
}, {
|
|
56
|
+
readonly key: "passphrase";
|
|
57
|
+
readonly label: "Passphrase";
|
|
58
|
+
readonly required: true;
|
|
59
|
+
}];
|
|
60
|
+
readonly docs: "https://www.okx.com/cn/trade-blog/7439";
|
|
61
|
+
};
|
|
62
|
+
readonly bitget: {
|
|
63
|
+
readonly name: "Bitget";
|
|
64
|
+
readonly fields: readonly [{
|
|
65
|
+
readonly key: "apiKey";
|
|
66
|
+
readonly label: "API Key";
|
|
67
|
+
readonly required: true;
|
|
68
|
+
}, {
|
|
69
|
+
readonly key: "apiSecret";
|
|
70
|
+
readonly label: "API Secret";
|
|
71
|
+
readonly required: true;
|
|
72
|
+
}, {
|
|
73
|
+
readonly key: "passphrase";
|
|
74
|
+
readonly label: "Passphrase";
|
|
75
|
+
readonly required: false;
|
|
76
|
+
}];
|
|
77
|
+
readonly docs: "https://www.bitget.com/zh-CN/doc/7843";
|
|
78
|
+
};
|
|
79
|
+
readonly binance: {
|
|
80
|
+
readonly name: "Binance";
|
|
81
|
+
readonly fields: readonly [{
|
|
82
|
+
readonly key: "apiKey";
|
|
83
|
+
readonly label: "API Key";
|
|
84
|
+
readonly required: true;
|
|
85
|
+
}, {
|
|
86
|
+
readonly key: "apiSecret";
|
|
87
|
+
readonly label: "API Secret";
|
|
88
|
+
readonly required: true;
|
|
89
|
+
}];
|
|
90
|
+
readonly docs: "https://www.binance.com/zh-CN/doc/7843";
|
|
91
|
+
};
|
|
92
|
+
readonly hyperliquid: {
|
|
93
|
+
readonly name: "Hyperliquid";
|
|
94
|
+
readonly fields: readonly [{
|
|
95
|
+
readonly key: "apiKey";
|
|
96
|
+
readonly label: "钱包地址 (主账户地址,非API密钥地址)";
|
|
97
|
+
readonly required: true;
|
|
98
|
+
}, {
|
|
99
|
+
readonly key: "privateKey";
|
|
100
|
+
readonly label: "API Private Key (交易密钥私钥)";
|
|
101
|
+
readonly required: true;
|
|
102
|
+
}];
|
|
103
|
+
readonly docs: "https://hyperliquid.gitbook.io/hyperliquid-docs";
|
|
104
|
+
};
|
|
105
|
+
};
|
|
23
106
|
//# sourceMappingURL=index.d.ts.map
|