@imbingox/acex 0.1.0 → 0.2.0

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 (85) hide show
  1. package/README.md +92 -285
  2. package/index.ts +1 -0
  3. package/package.json +40 -23
  4. package/src/adapters/binance/adapter.ts +80 -0
  5. package/src/adapters/binance/book-ticker.ts +123 -0
  6. package/src/adapters/binance/mark-price.ts +126 -0
  7. package/src/adapters/binance/market-catalog.ts +258 -0
  8. package/src/adapters/binance/private-adapter.ts +833 -0
  9. package/src/adapters/types.ts +219 -0
  10. package/src/client/context.ts +123 -0
  11. package/src/client/create-client.ts +6 -0
  12. package/src/client/private-subscription-coordinator.ts +512 -0
  13. package/src/client/runtime.ts +410 -0
  14. package/src/errors.ts +27 -0
  15. package/src/index.ts +5 -0
  16. package/src/internal/async-event-bus.ts +100 -0
  17. package/src/internal/filters.ts +117 -0
  18. package/src/internal/managed-websocket.ts +280 -0
  19. package/src/managers/account-manager.ts +609 -0
  20. package/src/managers/market-manager.ts +889 -0
  21. package/src/managers/order-manager.ts +685 -0
  22. package/src/types/account.ts +157 -0
  23. package/src/types/client.ts +79 -0
  24. package/src/types/index.ts +5 -0
  25. package/src/types/market.ts +150 -0
  26. package/src/types/order.ts +177 -0
  27. package/src/types/shared.ts +93 -0
  28. package/dist/adapters/binance/composite-adapter.d.ts +0 -116
  29. package/dist/adapters/binance/composite-adapter.js +0 -121
  30. package/dist/adapters/binance/market-types.d.ts +0 -63
  31. package/dist/adapters/binance/market-types.js +0 -1
  32. package/dist/adapters/binance/native-market-adapter.d.ts +0 -102
  33. package/dist/adapters/binance/native-market-adapter.js +0 -455
  34. package/dist/adapters/binance/normalizers.d.ts +0 -8
  35. package/dist/adapters/binance/normalizers.js +0 -123
  36. package/dist/adapters/binance/rest-client.d.ts +0 -17
  37. package/dist/adapters/binance/rest-client.js +0 -66
  38. package/dist/adapters/binance/symbol-router.d.ts +0 -9
  39. package/dist/adapters/binance/symbol-router.js +0 -174
  40. package/dist/adapters/binance/ws-client.d.ts +0 -24
  41. package/dist/adapters/binance/ws-client.js +0 -261
  42. package/dist/adapters/ccxt/aster-ccxt-adapter.d.ts +0 -157
  43. package/dist/adapters/ccxt/aster-ccxt-adapter.js +0 -272
  44. package/dist/adapters/ccxt/binance-usdm-ccxt-adapter.d.ts +0 -180
  45. package/dist/adapters/ccxt/binance-usdm-ccxt-adapter.js +0 -539
  46. package/dist/adapters/ccxt/binance-usdm-exchange.d.ts +0 -22
  47. package/dist/adapters/ccxt/binance-usdm-exchange.js +0 -23
  48. package/dist/adapters/fake/fake-aster-adapter.d.ts +0 -130
  49. package/dist/adapters/fake/fake-aster-adapter.js +0 -283
  50. package/dist/adapters/types.d.ts +0 -210
  51. package/dist/adapters/types.js +0 -1
  52. package/dist/core/client.d.ts +0 -50
  53. package/dist/core/client.js +0 -403
  54. package/dist/core/recovery.d.ts +0 -22
  55. package/dist/core/recovery.js +0 -18
  56. package/dist/core/runtime.d.ts +0 -26
  57. package/dist/core/runtime.js +0 -150
  58. package/dist/errors/acex-error.d.ts +0 -25
  59. package/dist/errors/acex-error.js +0 -54
  60. package/dist/index.d.ts +0 -6
  61. package/dist/index.js +0 -3
  62. package/dist/managers/account-manager.d.ts +0 -41
  63. package/dist/managers/account-manager.js +0 -80
  64. package/dist/managers/market-manager.d.ts +0 -16
  65. package/dist/managers/market-manager.js +0 -28
  66. package/dist/managers/order-manager.d.ts +0 -87
  67. package/dist/managers/order-manager.js +0 -122
  68. package/dist/runtime/async-queue.d.ts +0 -8
  69. package/dist/runtime/async-queue.js +0 -88
  70. package/dist/runtime/request-id.d.ts +0 -1
  71. package/dist/runtime/request-id.js +0 -5
  72. package/dist/runtime/ws-connection-supervisor.d.ts +0 -76
  73. package/dist/runtime/ws-connection-supervisor.js +0 -522
  74. package/dist/store/account-store.d.ts +0 -52
  75. package/dist/store/account-store.js +0 -18
  76. package/dist/store/health-store.d.ts +0 -16
  77. package/dist/store/health-store.js +0 -29
  78. package/dist/store/market-store.d.ts +0 -42
  79. package/dist/store/market-store.js +0 -51
  80. package/dist/store/order-store.d.ts +0 -38
  81. package/dist/store/order-store.js +0 -49
  82. package/dist/testing/create-fake-runtime.d.ts +0 -5
  83. package/dist/testing/create-fake-runtime.js +0 -7
  84. package/dist/types/public.d.ts +0 -5
  85. package/dist/types/public.js +0 -1
@@ -1,130 +0,0 @@
1
- import type { AdapterAccountBaseline, ExchangeAdapter, NormalizedAccountEvent, NormalizedMarketEvent, NormalizedOrderEvent } from "../types.js";
2
- export declare class FakeAsterAdapter implements ExchangeAdapter {
3
- #private;
4
- readonly exchange = "aster";
5
- readonly capabilities: {
6
- publicWs: boolean;
7
- privateWs: boolean;
8
- l1BookStream: boolean;
9
- fundingRateStream: boolean;
10
- accountStream: boolean;
11
- orderStream: boolean;
12
- fetchMarketInfo: boolean;
13
- fetchBalances: boolean;
14
- fetchPositions: boolean;
15
- fetchRisk: boolean;
16
- fetchOpenOrders: boolean;
17
- fetchMyTrades: boolean;
18
- fetchOrderById: boolean;
19
- };
20
- start(): Promise<void>;
21
- stop(): Promise<void>;
22
- subscribeL1Book(): Promise<void>;
23
- subscribeFundingRate(): Promise<void>;
24
- watchMarketEvents(): import("../../runtime/async-queue.js").AsyncQueue<NormalizedMarketEvent>;
25
- setMarketEventSink(sink: ((event: NormalizedMarketEvent) => void) | undefined): void;
26
- emitL1Book(event: Extract<NormalizedMarketEvent, {
27
- type: "l1_book.updated";
28
- }>): void;
29
- emitFundingRate(event: Extract<NormalizedMarketEvent, {
30
- type: "funding_rate.updated";
31
- }>): void;
32
- emitMarketDisconnect(input: {
33
- exchange: string;
34
- symbol: string;
35
- }): void;
36
- emitMarketReconnect(input: {
37
- exchange: string;
38
- symbol: string;
39
- }): void;
40
- watchInternalErrors(): import("../../runtime/async-queue.js").AsyncQueue<Error>;
41
- emitInternalError(error: Error): void;
42
- subscribeOrders(): Promise<void>;
43
- setAccountBaseline(accountId: string, baseline: AdapterAccountBaseline): void;
44
- fetchAccountBaseline(accountId: string): Promise<AdapterAccountBaseline>;
45
- watchAccountEvents(): import("../../runtime/async-queue.js").AsyncQueue<NormalizedAccountEvent>;
46
- setAccountEventSink(sink: ((event: NormalizedAccountEvent) => void) | undefined): void;
47
- emitBalanceUpdate(event: Omit<NormalizedAccountEvent, "type">): void;
48
- fetchOpenOrdersBaseline(accountId: string): Promise<({
49
- accountId: string;
50
- exchange: string;
51
- symbol: string;
52
- side: "buy" | "sell";
53
- type: string;
54
- status: string;
55
- amount: string;
56
- filled: string;
57
- price?: string;
58
- seq: number;
59
- receivedAt: number;
60
- updatedAt: number;
61
- orderId?: string;
62
- clientOrderId?: string;
63
- } | {
64
- accountId: string;
65
- exchange: string;
66
- symbol: string;
67
- side: "buy" | "sell";
68
- type: string;
69
- status: string;
70
- amount: string;
71
- filled: string;
72
- price?: string;
73
- seq: number;
74
- receivedAt: number;
75
- updatedAt: number;
76
- orderId?: string;
77
- clientOrderId?: string;
78
- })[]>;
79
- watchOrderEvents(): import("../../runtime/async-queue.js").AsyncQueue<NormalizedOrderEvent>;
80
- setOrderEventSink(sink: ((event: NormalizedOrderEvent) => void) | undefined): void;
81
- placeOrder(input: {
82
- accountId: string;
83
- exchange: string;
84
- symbol: string;
85
- side: "buy" | "sell";
86
- amount: string;
87
- clientOrderId: string;
88
- type: string;
89
- price?: string;
90
- reduceOnly?: boolean;
91
- }): Promise<{
92
- receivedAt: number;
93
- orderId?: string;
94
- clientOrderId?: string;
95
- }>;
96
- amendOrder(input: {
97
- accountId: string;
98
- exchange: string;
99
- clientOrderId?: string;
100
- orderId?: string;
101
- newPrice?: string;
102
- }): Promise<{
103
- receivedAt: number;
104
- orderId?: string;
105
- clientOrderId?: string;
106
- }>;
107
- cancelOrder(input: {
108
- accountId: string;
109
- exchange: string;
110
- clientOrderId?: string;
111
- orderId?: string;
112
- }): Promise<{
113
- receivedAt: number;
114
- orderId?: string;
115
- clientOrderId?: string;
116
- }>;
117
- cancelAllOrders(input: {
118
- accountId: string;
119
- exchange: string;
120
- }): Promise<{
121
- accountId: string;
122
- exchange: string;
123
- canceledCount: number;
124
- }>;
125
- getHealth(): {
126
- exchange: string;
127
- status: string;
128
- wsConnected: boolean;
129
- };
130
- }
@@ -1,283 +0,0 @@
1
- import { createAsyncQueue } from "../../runtime/async-queue.js";
2
- export class FakeAsterAdapter {
3
- exchange = "aster";
4
- capabilities = {
5
- publicWs: true,
6
- privateWs: true,
7
- l1BookStream: true,
8
- fundingRateStream: true,
9
- accountStream: true,
10
- orderStream: true,
11
- fetchMarketInfo: true,
12
- fetchBalances: true,
13
- fetchPositions: true,
14
- fetchRisk: true,
15
- fetchOpenOrders: true,
16
- fetchMyTrades: true,
17
- fetchOrderById: true,
18
- };
19
- #started = false;
20
- #marketQueue = createAsyncQueue({ maxBufferSize: 100 });
21
- #marketEventSink;
22
- #internalErrorQueue = createAsyncQueue({ maxBufferSize: 10 });
23
- #orderQueue = createAsyncQueue({ maxBufferSize: 100 });
24
- #orderEventSink;
25
- #orders = new Map();
26
- #accountQueue = createAsyncQueue({ maxBufferSize: 100 });
27
- #accountEventSink;
28
- #accountBaselines = new Map();
29
- async start() {
30
- this.#started = true;
31
- }
32
- async stop() {
33
- this.#started = false;
34
- this.#marketQueue.close();
35
- this.#internalErrorQueue.close();
36
- this.#orderQueue.close();
37
- this.#accountQueue.close();
38
- }
39
- async subscribeL1Book() { }
40
- async subscribeFundingRate() { }
41
- watchMarketEvents() {
42
- return this.#marketQueue;
43
- }
44
- setMarketEventSink(sink) {
45
- this.#marketEventSink = sink;
46
- }
47
- emitL1Book(event) {
48
- this.#emitMarketEvent(event);
49
- }
50
- emitFundingRate(event) {
51
- this.#emitMarketEvent(event);
52
- }
53
- emitMarketDisconnect(input) {
54
- this.#emitMarketEvent({
55
- type: "market.disconnected",
56
- exchange: input.exchange,
57
- symbol: input.symbol,
58
- receivedAt: Date.now(),
59
- });
60
- }
61
- emitMarketReconnect(input) {
62
- this.#emitMarketEvent({
63
- type: "market.reconnecting",
64
- exchange: input.exchange,
65
- symbol: input.symbol,
66
- receivedAt: Date.now(),
67
- });
68
- }
69
- watchInternalErrors() {
70
- return this.#internalErrorQueue;
71
- }
72
- emitInternalError(error) {
73
- this.#internalErrorQueue.push(error);
74
- }
75
- async subscribeOrders() { }
76
- setAccountBaseline(accountId, baseline) {
77
- this.#accountBaselines.set(accountId, baseline);
78
- }
79
- async fetchAccountBaseline(accountId) {
80
- return (this.#accountBaselines.get(accountId) ?? {
81
- balances: {},
82
- positions: [],
83
- });
84
- }
85
- watchAccountEvents() {
86
- return this.#accountQueue;
87
- }
88
- setAccountEventSink(sink) {
89
- this.#accountEventSink = sink;
90
- }
91
- emitBalanceUpdate(event) {
92
- const nextEvent = {
93
- type: "balance.updated",
94
- ...event,
95
- };
96
- const baseline = this.#accountBaselines.get(event.accountId);
97
- this.#accountBaselines.set(event.accountId, {
98
- balances: {
99
- ...(baseline?.balances ?? {}),
100
- [event.asset]: event.snapshot,
101
- },
102
- positions: baseline?.positions ?? [],
103
- ...(baseline?.risk === undefined ? {} : { risk: baseline.risk }),
104
- });
105
- if (this.#accountEventSink !== undefined) {
106
- this.#accountEventSink(nextEvent);
107
- return;
108
- }
109
- this.#accountQueue.push(nextEvent);
110
- }
111
- async fetchOpenOrdersBaseline(accountId) {
112
- return [...this.#orders.values()].filter((order) => {
113
- return order.accountId === accountId && order.status === "open";
114
- });
115
- }
116
- watchOrderEvents() {
117
- return this.#orderQueue;
118
- }
119
- setOrderEventSink(sink) {
120
- this.#orderEventSink = sink;
121
- }
122
- async placeOrder(input) {
123
- const receivedAt = Date.now();
124
- const snapshot = {
125
- ...input,
126
- status: "open",
127
- filled: "0",
128
- seq: 1,
129
- receivedAt,
130
- updatedAt: receivedAt,
131
- };
132
- this.#orders.set(this.#orderKey(input.accountId, input.clientOrderId), snapshot);
133
- this.#emitOrderEvent({
134
- type: "order.updated",
135
- accountId: input.accountId,
136
- exchange: input.exchange,
137
- receivedAt,
138
- snapshot,
139
- });
140
- return {
141
- ...(snapshot.clientOrderId === undefined ? {} : { clientOrderId: snapshot.clientOrderId }),
142
- ...(snapshot.orderId === undefined ? {} : { orderId: snapshot.orderId }),
143
- receivedAt,
144
- };
145
- }
146
- async amendOrder(input) {
147
- const orderKey = this.#resolveOrderKey(input.accountId, input);
148
- if (orderKey === undefined) {
149
- return {
150
- ...(input.clientOrderId === undefined ? {} : { clientOrderId: input.clientOrderId }),
151
- ...(input.orderId === undefined ? {} : { orderId: input.orderId }),
152
- receivedAt: Date.now(),
153
- };
154
- }
155
- const current = this.#orders.get(orderKey);
156
- if (current === undefined) {
157
- return {
158
- ...(input.clientOrderId === undefined ? {} : { clientOrderId: input.clientOrderId }),
159
- ...(input.orderId === undefined ? {} : { orderId: input.orderId }),
160
- receivedAt: Date.now(),
161
- };
162
- }
163
- const amended = {
164
- ...current,
165
- updatedAt: Date.now(),
166
- ...(input.newPrice === undefined ? {} : { price: input.newPrice }),
167
- };
168
- this.#orders.set(orderKey, amended);
169
- this.#emitOrderEvent({
170
- type: "order.updated",
171
- accountId: input.accountId,
172
- exchange: input.exchange,
173
- receivedAt: amended.updatedAt,
174
- snapshot: amended,
175
- });
176
- return {
177
- ...(amended.clientOrderId === undefined ? {} : { clientOrderId: amended.clientOrderId }),
178
- ...(amended.orderId === undefined ? {} : { orderId: amended.orderId }),
179
- receivedAt: amended.updatedAt,
180
- };
181
- }
182
- async cancelOrder(input) {
183
- const orderKey = this.#resolveOrderKey(input.accountId, input);
184
- if (orderKey === undefined) {
185
- return {
186
- ...(input.clientOrderId === undefined ? {} : { clientOrderId: input.clientOrderId }),
187
- ...(input.orderId === undefined ? {} : { orderId: input.orderId }),
188
- receivedAt: Date.now(),
189
- };
190
- }
191
- const current = this.#orders.get(orderKey);
192
- if (current === undefined) {
193
- return {
194
- ...(input.clientOrderId === undefined ? {} : { clientOrderId: input.clientOrderId }),
195
- ...(input.orderId === undefined ? {} : { orderId: input.orderId }),
196
- receivedAt: Date.now(),
197
- };
198
- }
199
- const canceled = {
200
- ...current,
201
- status: "canceled",
202
- updatedAt: Date.now(),
203
- };
204
- this.#orders.set(orderKey, canceled);
205
- this.#emitOrderEvent({
206
- type: "order.canceled",
207
- accountId: input.accountId,
208
- exchange: input.exchange,
209
- receivedAt: canceled.updatedAt,
210
- snapshot: canceled,
211
- });
212
- return {
213
- ...(canceled.clientOrderId === undefined ? {} : { clientOrderId: canceled.clientOrderId }),
214
- ...(canceled.orderId === undefined ? {} : { orderId: canceled.orderId }),
215
- receivedAt: canceled.updatedAt,
216
- };
217
- }
218
- async cancelAllOrders(input) {
219
- let canceledCount = 0;
220
- for (const [key, snapshot] of this.#orders.entries()) {
221
- if (!key.startsWith(`${input.accountId}:`) || snapshot.status === "canceled") {
222
- continue;
223
- }
224
- canceledCount += 1;
225
- const canceled = {
226
- ...snapshot,
227
- status: "canceled",
228
- updatedAt: Date.now(),
229
- };
230
- this.#orders.set(key, canceled);
231
- this.#emitOrderEvent({
232
- type: "order.canceled",
233
- accountId: input.accountId,
234
- exchange: input.exchange,
235
- receivedAt: canceled.updatedAt,
236
- snapshot: canceled,
237
- });
238
- }
239
- return {
240
- accountId: input.accountId,
241
- exchange: input.exchange,
242
- canceledCount,
243
- };
244
- }
245
- getHealth() {
246
- return {
247
- exchange: this.exchange,
248
- status: this.#started ? "healthy" : "idle",
249
- wsConnected: this.#started,
250
- };
251
- }
252
- #emitMarketEvent(event) {
253
- if (this.#marketEventSink !== undefined) {
254
- this.#marketEventSink(event);
255
- return;
256
- }
257
- this.#marketQueue.push(event);
258
- }
259
- #emitOrderEvent(event) {
260
- if (this.#orderEventSink !== undefined) {
261
- this.#orderEventSink(event);
262
- return;
263
- }
264
- this.#orderQueue.push(event);
265
- }
266
- #orderKey(accountId, clientOrderId) {
267
- return `${accountId}:${clientOrderId}`;
268
- }
269
- #resolveOrderKey(accountId, locator) {
270
- if (locator.clientOrderId !== undefined) {
271
- return this.#orderKey(accountId, locator.clientOrderId);
272
- }
273
- if (locator.orderId === undefined) {
274
- return undefined;
275
- }
276
- for (const [key, order] of this.#orders.entries()) {
277
- if (key.startsWith(`${accountId}:`) && order.orderId === locator.orderId) {
278
- return key;
279
- }
280
- }
281
- return undefined;
282
- }
283
- }
@@ -1,210 +0,0 @@
1
- export interface ExchangeCapabilities {
2
- publicWs: boolean;
3
- privateWs: boolean;
4
- l1BookStream: boolean;
5
- fundingRateStream: boolean;
6
- accountStream: boolean;
7
- orderStream: boolean;
8
- fetchMarketInfo: boolean;
9
- fetchBalances: boolean;
10
- fetchPositions: boolean;
11
- fetchRisk: boolean;
12
- fetchOpenOrders: boolean;
13
- fetchMyTrades: boolean;
14
- fetchOrderById: boolean;
15
- }
16
- export type NormalizedMarketEvent = {
17
- type: "l1_book.updated";
18
- exchange: string;
19
- symbol: string;
20
- bidPrice: string;
21
- bidSize: string;
22
- askPrice: string;
23
- askSize: string;
24
- exchangeTs?: number;
25
- receivedAt: number;
26
- } | {
27
- type: "market.disconnected";
28
- exchange: string;
29
- symbol: string;
30
- receivedAt: number;
31
- } | {
32
- type: "market.reconnecting";
33
- exchange: string;
34
- symbol: string;
35
- receivedAt: number;
36
- } | {
37
- type: "funding_rate.updated";
38
- exchange: string;
39
- symbol: string;
40
- fundingRate: string;
41
- exchangeTs?: number;
42
- receivedAt: number;
43
- };
44
- export type NormalizedOrderEvent = {
45
- type: "order.updated";
46
- accountId: string;
47
- exchange: string;
48
- receivedAt: number;
49
- snapshot: {
50
- accountId: string;
51
- exchange: string;
52
- symbol: string;
53
- side: "buy" | "sell";
54
- type: string;
55
- status: string;
56
- amount: string;
57
- filled: string;
58
- price?: string;
59
- seq: number;
60
- receivedAt: number;
61
- updatedAt: number;
62
- orderId?: string;
63
- clientOrderId?: string;
64
- };
65
- } | {
66
- type: "order.canceled";
67
- accountId: string;
68
- exchange: string;
69
- receivedAt: number;
70
- snapshot: {
71
- accountId: string;
72
- exchange: string;
73
- symbol: string;
74
- side: "buy" | "sell";
75
- type: string;
76
- status: string;
77
- amount: string;
78
- filled: string;
79
- price?: string;
80
- seq: number;
81
- receivedAt: number;
82
- updatedAt: number;
83
- orderId?: string;
84
- clientOrderId?: string;
85
- };
86
- };
87
- export interface AdapterAccountBaseline {
88
- balances: Record<string, {
89
- accountId: string;
90
- exchange: string;
91
- asset: string;
92
- free: string;
93
- used: string;
94
- total: string;
95
- seq: number;
96
- receivedAt: number;
97
- updatedAt: number;
98
- }>;
99
- positions: Array<{
100
- accountId: string;
101
- exchange: string;
102
- symbol: string;
103
- side: string;
104
- size: string;
105
- seq: number;
106
- receivedAt: number;
107
- updatedAt: number;
108
- }>;
109
- risk?: {
110
- accountId: string;
111
- exchange: string;
112
- seq: number;
113
- receivedAt: number;
114
- updatedAt: number;
115
- equity: string;
116
- };
117
- }
118
- export type NormalizedAccountEvent = {
119
- type: "balance.updated";
120
- accountId: string;
121
- exchange: string;
122
- asset: string;
123
- snapshot: {
124
- accountId: string;
125
- exchange: string;
126
- asset: string;
127
- free: string;
128
- used: string;
129
- total: string;
130
- seq: number;
131
- receivedAt: number;
132
- updatedAt: number;
133
- };
134
- };
135
- export interface ExchangeAdapter {
136
- readonly exchange: string;
137
- readonly capabilities: ExchangeCapabilities;
138
- start(): Promise<void>;
139
- stop(): Promise<void>;
140
- subscribeL1Book(input: {
141
- exchange: string;
142
- symbol: string;
143
- }): Promise<void>;
144
- subscribeFundingRate(input: {
145
- exchange: string;
146
- symbol: string;
147
- }): Promise<void>;
148
- watchMarketEvents(): AsyncIterable<NormalizedMarketEvent>;
149
- setMarketEventSink?(sink: ((event: NormalizedMarketEvent) => void) | undefined): void;
150
- watchInternalErrors(): AsyncIterable<Error>;
151
- subscribeOrders(input: {
152
- accountId: string;
153
- }): Promise<void>;
154
- fetchOpenOrdersBaseline(accountId: string): Promise<NormalizedOrderEvent["snapshot"][]>;
155
- watchOrderEvents(): AsyncIterable<NormalizedOrderEvent>;
156
- setOrderEventSink?(sink: ((event: NormalizedOrderEvent) => void) | undefined): void;
157
- fetchAccountBaseline(accountId: string): Promise<AdapterAccountBaseline>;
158
- watchAccountEvents(): AsyncIterable<NormalizedAccountEvent>;
159
- setAccountEventSink?(sink: ((event: NormalizedAccountEvent) => void) | undefined): void;
160
- placeOrder(input: {
161
- accountId: string;
162
- exchange: string;
163
- symbol: string;
164
- side: "buy" | "sell";
165
- amount: string;
166
- clientOrderId: string;
167
- type: string;
168
- price?: string;
169
- reduceOnly?: boolean;
170
- }): Promise<{
171
- clientOrderId?: string;
172
- orderId?: string;
173
- receivedAt: number;
174
- }>;
175
- amendOrder(input: {
176
- accountId: string;
177
- exchange: string;
178
- clientOrderId?: string;
179
- orderId?: string;
180
- symbol?: string;
181
- newPrice?: string;
182
- }): Promise<{
183
- clientOrderId?: string;
184
- orderId?: string;
185
- receivedAt: number;
186
- }>;
187
- cancelOrder(input: {
188
- accountId: string;
189
- exchange: string;
190
- clientOrderId?: string;
191
- orderId?: string;
192
- }): Promise<{
193
- clientOrderId?: string;
194
- orderId?: string;
195
- receivedAt: number;
196
- }>;
197
- cancelAllOrders(input: {
198
- accountId: string;
199
- exchange: string;
200
- }): Promise<{
201
- accountId: string;
202
- exchange: string;
203
- canceledCount: number;
204
- }>;
205
- getHealth(): {
206
- exchange: string;
207
- status: string;
208
- wsConnected: boolean;
209
- };
210
- }
@@ -1 +0,0 @@
1
- export {};
@@ -1,50 +0,0 @@
1
- import { type BinanceUsdmExchangeLike, type CreateBinanceUsdmExchangeInput } from "../adapters/ccxt/binance-usdm-exchange.js";
2
- import type { ExchangeAdapter } from "../adapters/types.js";
3
- import { type AccountManager } from "../managers/account-manager.js";
4
- import { type MarketManager } from "../managers/market-manager.js";
5
- import { type OrderManager } from "../managers/order-manager.js";
6
- import { createHealthStore } from "../store/health-store.js";
7
- import type { ClientStatus, Exchange } from "../types/public.js";
8
- import { createRuntime } from "./runtime.js";
9
- export interface CreateClientOptions {
10
- sandbox?: boolean;
11
- }
12
- export interface RegisterAccountInput {
13
- accountId: string;
14
- exchange: Exchange;
15
- credentials: {
16
- apiKey: string;
17
- secret: string;
18
- password?: string;
19
- };
20
- }
21
- export interface RegisterAccountResult {
22
- accountId: string;
23
- exchange: Exchange;
24
- }
25
- interface InternalCreateClientOptions {
26
- adapter?: ExchangeAdapter;
27
- }
28
- interface CreatePublicClientDependencies {
29
- createExchange?: (input: CreateBinanceUsdmExchangeInput) => BinanceUsdmExchangeLike;
30
- createAdapter?: (input: {
31
- accountId: string;
32
- exchange: BinanceUsdmExchangeLike;
33
- }) => ExchangeAdapter;
34
- }
35
- export interface AcexClient {
36
- readonly market: MarketManager;
37
- readonly account: AccountManager;
38
- readonly order: OrderManager;
39
- getStatus(): ClientStatus;
40
- getHealth(): ReturnType<ReturnType<typeof createHealthStore>["snapshot"]>;
41
- registerAccount(input: RegisterAccountInput): Promise<RegisterAccountResult>;
42
- start(): Promise<void>;
43
- stop(): Promise<void>;
44
- watchErrors(): ReturnType<ReturnType<typeof createRuntime>["watchErrors"]>;
45
- watchHealth(): ReturnType<ReturnType<typeof createRuntime>["watchHealth"]>;
46
- }
47
- export declare function createInternalClient(options?: InternalCreateClientOptions): AcexClient;
48
- export declare function createPublicClient(options?: CreateClientOptions, dependencies?: CreatePublicClientDependencies): AcexClient;
49
- export declare function createClient(options?: CreateClientOptions): AcexClient;
50
- export {};