@imbingox/acex 0.1.0 → 0.3.0-beta.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 +96 -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 +912 -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 +152 -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,51 +0,0 @@
1
- export function createMarketStore() {
2
- const books = new Map();
3
- const fundingRates = new Map();
4
- const statuses = new Map();
5
- const keyFor = ({ exchange, symbol }) => `${exchange}:${symbol}`;
6
- return {
7
- upsertL1Book(input) {
8
- const key = keyFor(input);
9
- const previous = books.get(key);
10
- const next = {
11
- ...input,
12
- updatedAt: input.receivedAt,
13
- version: (previous?.version ?? 0) + 1,
14
- };
15
- books.set(key, next);
16
- return next;
17
- },
18
- getL1Book(key) {
19
- return books.get(keyFor(key));
20
- },
21
- upsertFundingRate(input) {
22
- const key = keyFor(input);
23
- const previous = fundingRates.get(key);
24
- const next = {
25
- ...input,
26
- updatedAt: input.receivedAt,
27
- version: (previous?.version ?? 0) + 1,
28
- };
29
- fundingRates.set(key, next);
30
- return next;
31
- },
32
- getFundingRate(key) {
33
- return fundingRates.get(keyFor(key));
34
- },
35
- getSnapshot(key) {
36
- const marketKey = keyFor(key);
37
- const l1Book = books.get(marketKey);
38
- const fundingRate = fundingRates.get(marketKey);
39
- return {
40
- ...(l1Book === undefined ? {} : { l1Book }),
41
- ...(fundingRate === undefined ? {} : { fundingRate }),
42
- };
43
- },
44
- setStatus(status) {
45
- statuses.set(keyFor(status), status);
46
- },
47
- getStatus(key) {
48
- return statuses.get(keyFor(key));
49
- },
50
- };
51
- }
@@ -1,38 +0,0 @@
1
- export interface OrderSnapshot {
2
- accountId: string;
3
- exchange: string;
4
- symbol: string;
5
- side: "buy" | "sell";
6
- type: string;
7
- status: string;
8
- amount: string;
9
- filled: string;
10
- price?: string;
11
- seq: number;
12
- receivedAt: number;
13
- updatedAt: number;
14
- orderId?: string;
15
- clientOrderId?: string;
16
- }
17
- export interface OrderStatus {
18
- accountId: string;
19
- exchange?: string;
20
- status: "healthy" | "degraded" | "reconciling";
21
- bootstrapCompleted: boolean;
22
- unresolvedOrdersCount?: number;
23
- }
24
- export interface OrderLocator {
25
- orderId?: string;
26
- clientOrderId?: string;
27
- }
28
- export interface OrderStore {
29
- upsertOrder(snapshot: OrderSnapshot): void;
30
- getOrder(accountId: string, locator: OrderLocator): OrderSnapshot | undefined;
31
- getOpenOrders(accountId: string): OrderSnapshot[];
32
- recordFill(fillId: string): void;
33
- hasSeenFill(fillId: string): boolean;
34
- setUnresolvedCount(accountId: string, unresolvedOrdersCount: number): void;
35
- setStatus(status: OrderStatus): void;
36
- getStatus(accountId: string): OrderStatus | undefined;
37
- }
38
- export declare function createOrderStore(): OrderStore;
@@ -1,49 +0,0 @@
1
- export function createOrderStore() {
2
- const orders = new Map();
3
- const seenFills = new Set();
4
- const statuses = new Map();
5
- return {
6
- upsertOrder(snapshot) {
7
- const key = snapshot.orderId ?? snapshot.clientOrderId;
8
- if (key === undefined) {
9
- return;
10
- }
11
- orders.set(`${snapshot.accountId}:${key}`, snapshot);
12
- },
13
- getOrder(accountId, locator) {
14
- const key = locator.orderId ?? locator.clientOrderId;
15
- if (key === undefined) {
16
- return undefined;
17
- }
18
- return orders.get(`${accountId}:${key}`);
19
- },
20
- getOpenOrders(accountId) {
21
- return [...orders.values()].filter((order) => {
22
- return order.accountId === accountId && order.status === "open";
23
- });
24
- },
25
- recordFill(fillId) {
26
- seenFills.add(fillId);
27
- },
28
- hasSeenFill(fillId) {
29
- return seenFills.has(fillId);
30
- },
31
- setUnresolvedCount(accountId, unresolvedOrdersCount) {
32
- const current = statuses.get(accountId) ?? {
33
- accountId,
34
- status: "healthy",
35
- bootstrapCompleted: true,
36
- };
37
- statuses.set(accountId, {
38
- ...current,
39
- unresolvedOrdersCount,
40
- });
41
- },
42
- setStatus(status) {
43
- statuses.set(status.accountId, status);
44
- },
45
- getStatus(accountId) {
46
- return statuses.get(accountId);
47
- },
48
- };
49
- }
@@ -1,5 +0,0 @@
1
- import { FakeAsterAdapter } from "../adapters/fake/fake-aster-adapter.js";
2
- export declare function createFakeRuntime(): {
3
- adapter: FakeAsterAdapter;
4
- client: import("../index.js").AcexClient;
5
- };
@@ -1,7 +0,0 @@
1
- import { FakeAsterAdapter } from "../adapters/fake/fake-aster-adapter.js";
2
- import { createInternalClient } from "../core/client.js";
3
- export function createFakeRuntime() {
4
- const adapter = new FakeAsterAdapter();
5
- const client = createInternalClient({ adapter });
6
- return { adapter, client };
7
- }
@@ -1,5 +0,0 @@
1
- export declare const IMPLEMENTED_EXCHANGES: readonly ["binance"];
2
- export type ImplementedExchange = (typeof IMPLEMENTED_EXCHANGES)[number];
3
- export type Exchange = string;
4
- export type ClientStatus = "idle" | "starting" | "running" | "stopping" | "stopped";
5
- export type AcexErrorCode = "VALIDATION_ERROR" | "EXCHANGE_NOT_SUPPORTED" | "ACCOUNT_NOT_FOUND" | "AUTH_FAILED" | "RATE_LIMITED" | "TRANSPORT_UNAVAILABLE" | "ORDER_REJECTED" | "INSUFFICIENT_BALANCE" | "REQUEST_OUTCOME_UNKNOWN" | "ORDER_STATE_UNKNOWN" | "EVENT_CONSUMER_OVERFLOW" | "CAPABILITY_NOT_SUPPORTED" | "INTERNAL_ERROR";
@@ -1 +0,0 @@
1
- export const IMPLEMENTED_EXCHANGES = ["binance"];