@usherlabs/cex-broker 0.2.52 → 0.3.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 (144) hide show
  1. package/dist/commands/cli.js +364 -71
  2. package/dist/index.js +365 -72
  3. package/dist/index.js.map +14 -13
  4. package/package.json +5 -28
  5. package/dist/commands/cex-canonical-orderbook-export.d.ts +0 -23
  6. package/dist/commands/cex-canonical-orderbook-export.js +0 -34275
  7. package/dist/commands/cex-canonical-orderbook-export.js.map +0 -266
  8. package/dist/commands/market-data-vendor-backfill.d.ts +0 -24
  9. package/dist/commands/market-data-vendor-backfill.js +0 -34930
  10. package/dist/commands/market-data-vendor-backfill.js.map +0 -268
  11. package/dist/handlers/execute-action/context.d.ts +0 -50
  12. package/dist/handlers/execute-action/deposit.d.ts +0 -2
  13. package/dist/handlers/execute-action/handler.d.ts +0 -19
  14. package/dist/handlers/execute-action/index.d.ts +0 -10
  15. package/dist/handlers/execute-action/internal-transfer.d.ts +0 -2
  16. package/dist/handlers/execute-action/order-book-call.d.ts +0 -3
  17. package/dist/handlers/execute-action/orders.d.ts +0 -2
  18. package/dist/handlers/execute-action/pass-through.d.ts +0 -2
  19. package/dist/handlers/execute-action/perp-config.d.ts +0 -2
  20. package/dist/handlers/execute-action/registry.d.ts +0 -5
  21. package/dist/handlers/execute-action/treasury-call.d.ts +0 -2
  22. package/dist/handlers/execute-action/withdraw.d.ts +0 -2
  23. package/dist/handlers/subscribe/broker-lifecycle.d.ts +0 -13
  24. package/dist/handlers/subscribe/handler.d.ts +0 -20
  25. package/dist/handlers/subscribe/index.d.ts +0 -2
  26. package/dist/handlers/types.d.ts +0 -23
  27. package/dist/helpers/account-balance-archive-poller.d.ts +0 -19
  28. package/dist/helpers/auth.d.ts +0 -5
  29. package/dist/helpers/balance-update-archive-consumer.d.ts +0 -16
  30. package/dist/helpers/binance-user-data-normalization.d.ts +0 -3
  31. package/dist/helpers/binance-user-data-stream.d.ts +0 -58
  32. package/dist/helpers/broker-execution-archive/capture.d.ts +0 -41
  33. package/dist/helpers/broker-execution-archive/index.d.ts +0 -7
  34. package/dist/helpers/broker-execution-archive/journal-export.d.ts +0 -20
  35. package/dist/helpers/broker-execution-archive/loss-journal.d.ts +0 -36
  36. package/dist/helpers/broker-execution-archive/redact.d.ts +0 -7
  37. package/dist/helpers/broker-execution-archive/rows.d.ts +0 -134
  38. package/dist/helpers/broker-execution-archive/types.d.ts +0 -26
  39. package/dist/helpers/broker-execution-archive/withdrawal-observation-tracker.d.ts +0 -23
  40. package/dist/helpers/broker-execution-archive/writer.d.ts +0 -105
  41. package/dist/helpers/broker.d.ts +0 -38
  42. package/dist/helpers/canonical-orderbook-export/exact-selection.d.ts +0 -21
  43. package/dist/helpers/canonical-orderbook-export/exporter.d.ts +0 -26
  44. package/dist/helpers/canonical-orderbook-export/parquet-projection.d.ts +0 -19
  45. package/dist/helpers/constants.d.ts +0 -36
  46. package/dist/helpers/deposit-archive-poller.d.ts +0 -66
  47. package/dist/helpers/deposit.d.ts +0 -5
  48. package/dist/helpers/exchange-credentials.d.ts +0 -10
  49. package/dist/helpers/fill-archive-poller.d.ts +0 -42
  50. package/dist/helpers/grpc/broker.d.ts +0 -5
  51. package/dist/helpers/grpc/callbacks.d.ts +0 -9
  52. package/dist/helpers/grpc/payload.d.ts +0 -9
  53. package/dist/helpers/grpc/status.d.ts +0 -8
  54. package/dist/helpers/index.d.ts +0 -44
  55. package/dist/helpers/logger.d.ts +0 -13
  56. package/dist/helpers/market-data-archive/canonical-orderbook.d.ts +0 -20
  57. package/dist/helpers/market-data-archive/capture-context.d.ts +0 -53
  58. package/dist/helpers/market-data-archive/capture-contract.d.ts +0 -30
  59. package/dist/helpers/market-data-archive/capture.d.ts +0 -22
  60. package/dist/helpers/market-data-archive/index.d.ts +0 -13
  61. package/dist/helpers/market-data-archive/legacy-migration.d.ts +0 -37
  62. package/dist/helpers/market-data-archive/ohlcv-bar-tracker.d.ts +0 -11
  63. package/dist/helpers/market-data-archive/ohlcv-bootstrap.d.ts +0 -1
  64. package/dist/helpers/market-data-archive/ohlcv-history.d.ts +0 -8
  65. package/dist/helpers/market-data-archive/orderbook-depth.d.ts +0 -5
  66. package/dist/helpers/market-data-archive/orderbook-sampler.d.ts +0 -12
  67. package/dist/helpers/market-data-archive/parse-stream.d.ts +0 -26
  68. package/dist/helpers/market-data-archive/rows.d.ts +0 -14
  69. package/dist/helpers/market-data-archive/types.d.ts +0 -83
  70. package/dist/helpers/market-data-preparation/conformance-fixtures.d.ts +0 -128
  71. package/dist/helpers/market-data-preparation/contracts.d.ts +0 -2970
  72. package/dist/helpers/market-data-preparation/file-job.d.ts +0 -38
  73. package/dist/helpers/market-data-preparation/required-clock-qualification.d.ts +0 -43
  74. package/dist/helpers/market-data-preparation/source-tape-dependencies.d.ts +0 -19
  75. package/dist/helpers/market-data-preparation/source-tape-operation.d.ts +0 -109
  76. package/dist/helpers/market-data-source-forensics.d.ts +0 -400
  77. package/dist/helpers/market-data-vendor-backfill/archive-reader.d.ts +0 -26
  78. package/dist/helpers/market-data-vendor-backfill/batching.d.ts +0 -10
  79. package/dist/helpers/market-data-vendor-backfill/conformance-fixtures.d.ts +0 -78
  80. package/dist/helpers/market-data-vendor-backfill/contracts.d.ts +0 -358
  81. package/dist/helpers/market-data-vendor-backfill/core.d.ts +0 -101
  82. package/dist/helpers/market-data-vendor-backfill/cryptohftdata.d.ts +0 -118
  83. package/dist/helpers/market-data-vendor-backfill/forwarder-client.d.ts +0 -25
  84. package/dist/helpers/market-data-vendor-backfill/identity.d.ts +0 -10
  85. package/dist/helpers/market-data-vendor-backfill/manifests.d.ts +0 -61
  86. package/dist/helpers/market-data-vendor-backfill/promotion.d.ts +0 -10
  87. package/dist/helpers/market-data-vendor-backfill/qualification.d.ts +0 -20
  88. package/dist/helpers/market-data-vendor-backfill/selection.d.ts +0 -30
  89. package/dist/helpers/market-data-vendor-backfill/semantic-verification.d.ts +0 -25
  90. package/dist/helpers/market-type.d.ts +0 -16
  91. package/dist/helpers/order-activity-tracker.d.ts +0 -22
  92. package/dist/helpers/order-book.d.ts +0 -79
  93. package/dist/helpers/order-telemetry.d.ts +0 -50
  94. package/dist/helpers/otel.d.ts +0 -83
  95. package/dist/helpers/passive-order.d.ts +0 -8
  96. package/dist/helpers/public-market-data-feed/identity.d.ts +0 -12
  97. package/dist/helpers/public-market-data-feed/index.d.ts +0 -5
  98. package/dist/helpers/public-market-data-feed/orderbook-coalescing-evidence.d.ts +0 -79
  99. package/dist/helpers/public-market-data-feed/orderbook-profile.d.ts +0 -54
  100. package/dist/helpers/public-market-data-feed/subscriber-buffer.d.ts +0 -31
  101. package/dist/helpers/public-market-data-feed/supervisor.d.ts +0 -82
  102. package/dist/helpers/shared/errors.d.ts +0 -14
  103. package/dist/helpers/shared/guards.d.ts +0 -2
  104. package/dist/helpers/source-tape-sandbox.d.ts +0 -82
  105. package/dist/helpers/source-tape.d.ts +0 -165
  106. package/dist/helpers/stream-health-publisher.d.ts +0 -41
  107. package/dist/helpers/trace-context.d.ts +0 -8
  108. package/dist/helpers/transfer-network.d.ts +0 -12
  109. package/dist/helpers/travel-rule-deposit-reconciler.d.ts +0 -159
  110. package/dist/helpers/travel-rule.d.ts +0 -75
  111. package/dist/helpers/treasury-discovery.d.ts +0 -17
  112. package/dist/helpers/user-asset-archive-poller.d.ts +0 -19
  113. package/dist/helpers/user-data-stream-supervisor.d.ts +0 -27
  114. package/dist/helpers/verity.d.ts +0 -5
  115. package/dist/index.d.ts +0 -56
  116. package/dist/market-data-preparation/fixtures/conformance-v3.json +0 -621
  117. package/dist/market-data-preparation/policies/capability-policy.json +0 -39
  118. package/dist/market-data-preparation/policies/resource-policy.json +0 -16
  119. package/dist/market-data-preparation/policies/source-tape-capability-v1.json +0 -35
  120. package/dist/market-data-preparation/schema-manifest.json +0 -66
  121. package/dist/market-data-preparation/schemas/archive-selection-v1.schema.json +0 -224
  122. package/dist/market-data-preparation/schemas/backfill-request-v1.schema.json +0 -166
  123. package/dist/market-data-preparation/schemas/backfill-result-v2.schema.json +0 -212
  124. package/dist/market-data-preparation/schemas/canonical-orderbook-export-request-v1.schema.json +0 -61
  125. package/dist/market-data-preparation/schemas/canonical-orderbook-export-result-v2.schema.json +0 -252
  126. package/dist/market-data-preparation/schemas/order-book-depth-summary-parquet-projection-v1.schema.json +0 -256
  127. package/dist/market-data-preparation/schemas/order-book-levels-parquet-projection-v1.schema.json +0 -220
  128. package/dist/market-data-preparation/schemas/preparation-product-pin-v2.schema.json +0 -176
  129. package/dist/market-data-preparation/schemas/promotion-receipt-v1.schema.json +0 -175
  130. package/dist/market-data-preparation/schemas/required-clock-v1.schema.json +0 -47
  131. package/dist/market-data-preparation/schemas/source-forensics-ledger-v1.schema.json +0 -463
  132. package/dist/market-data-preparation/schemas/source-qualification-record-v1.schema.json +0 -394
  133. package/dist/market-data-preparation.d.ts +0 -11
  134. package/dist/market-data-preparation.js +0 -37488
  135. package/dist/market-data-preparation.js.map +0 -277
  136. package/dist/market-data-vendor-backfill.d.ts +0 -21
  137. package/dist/market-data-vendor-backfill.js +0 -22463
  138. package/dist/market-data-vendor-backfill.js.map +0 -199
  139. package/dist/proto/node.descriptor.d.ts +0 -127
  140. package/dist/proto-loader-options.d.ts +0 -7
  141. package/dist/proto-package-definition.d.ts +0 -2
  142. package/dist/schemas/action-payloads.d.ts +0 -88
  143. package/dist/server.d.ts +0 -10
  144. package/dist/types.d.ts +0 -100
@@ -1,10 +0,0 @@
1
- export type JsonPrimitive = string | number | boolean | null;
2
- export type JsonValue = JsonPrimitive | JsonValue[] | {
3
- [key: string]: JsonValue;
4
- };
5
- export declare function jcsCanonicalize(value: unknown): string;
6
- export declare function jcsSha256(value: unknown): string;
7
- export declare function withoutOwnDigest<T extends Record<string, unknown>>(document: T, digestField: keyof T | string): Omit<T, keyof T> & Record<string, unknown>;
8
- /** Hashes a wire document while excluding only its own top-level digest field. */
9
- export declare function documentSha256<T extends Record<string, unknown>>(document: T, digestField: keyof T | string): string;
10
- export declare function assertDocumentSha256<T extends Record<string, unknown>>(document: T, digestField: keyof T | string): void;
@@ -1,61 +0,0 @@
1
- export declare const CAPABILITY_POLICY_ID: "market-data-vendor-backfill-capabilities/v3";
2
- export declare const RESOURCE_POLICY_ID: "market-data-vendor-backfill-resources/v2";
3
- export declare const ADAPTER_POLICY_ID: "cryptohftdata-orderbook-adapter/v1";
4
- export declare const ACQUISITION_POLICY_ID: "cryptohftdata-hourly-acquisition/v2";
5
- export declare const CAPABILITY_POLICY: Readonly<{
6
- policy_id: "market-data-vendor-backfill-capabilities/v3";
7
- policy_sha256: string;
8
- provider: string;
9
- adapter_policy: {
10
- policy_id: string;
11
- adapter_version: string;
12
- };
13
- acquisition_policy: {
14
- policy_id: string;
15
- object_granularity: string;
16
- authentication: string;
17
- initialization_lookback_ms: number;
18
- };
19
- profiles: {
20
- exchange: string;
21
- market_type: string;
22
- feed: string;
23
- canonical_trading_pair: string;
24
- provider_exchange_id: string;
25
- resolved_symbol: string;
26
- construction_modes: string[];
27
- source_policies: string[];
28
- max_depth: number;
29
- }[];
30
- }>;
31
- export declare const RESOURCE_POLICY: Readonly<{
32
- policy_id: "market-data-vendor-backfill-resources/v2";
33
- policy_sha256: string;
34
- limits: {
35
- max_files: number;
36
- max_bytes: number;
37
- max_rows: number;
38
- max_duration_ms: number;
39
- max_boundary_lookback_ms: number;
40
- };
41
- request_bounds: {
42
- max_depth: number;
43
- max_window_ms: number;
44
- max_required_events: number;
45
- };
46
- }>;
47
- export declare const EFFECTIVE_ADAPTER_POLICY_PIN: Readonly<{
48
- policy_id: "cryptohftdata-orderbook-adapter/v1";
49
- policy_sha256: string;
50
- }>;
51
- export declare const EFFECTIVE_ACQUISITION_POLICY_PIN: Readonly<{
52
- policy_id: "cryptohftdata-hourly-acquisition/v2";
53
- policy_sha256: string;
54
- }>;
55
- export type PolicyPin = {
56
- policy_id: string;
57
- policy_sha256: string;
58
- };
59
- export declare function assertPolicyDocumentIdentity(policy: Record<string, unknown> & {
60
- policy_sha256: string;
61
- }): void;
@@ -1,10 +0,0 @@
1
- import { type BackfillArchiveRow, type PromotionReceipt, type PromotionReceiptWire } from "./contracts";
2
- export type StablePromotionReceipt = Omit<PromotionReceipt, "receiptId" | "verificationTimeMs">;
3
- export declare function promotionReceiptMatchesCurrentPolicies(receipt: PromotionReceiptWire): boolean;
4
- export declare function promotionReceiptId(receipt: StablePromotionReceipt): string;
5
- type UnfinalizedPromotionReceiptWire = Omit<PromotionReceiptWire, "receipt_id" | "promotion_identity_sha256"> & Partial<Pick<PromotionReceiptWire, "receipt_id" | "promotion_identity_sha256">>;
6
- export declare function finalizePromotionReceipt(receipt: UnfinalizedPromotionReceiptWire): PromotionReceiptWire;
7
- export declare function finalizePromotionReceipt(receipt: StablePromotionReceipt, verificationTimeMs: number): PromotionReceipt;
8
- export declare function promotionReceiptToArchiveRow(receiptInput: PromotionReceipt | PromotionReceiptWire): BackfillArchiveRow;
9
- export declare function promotionReceiptFromArchiveRow(row: Record<string, unknown>): PromotionReceipt | PromotionReceiptWire;
10
- export {};
@@ -1,20 +0,0 @@
1
- import type { BackfillArchiveRow, FixedUtcTimestamp, Sha256Hex } from "./contracts";
2
- export type QualificationEvent = {
3
- qualification_event_id: string;
4
- capture_bundle_id: Sha256Hex;
5
- state: "qualified" | "quarantined" | "revoked";
6
- receipt_id: Sha256Hex;
7
- promotion_identity_sha256: Sha256Hex;
8
- window: {
9
- start_at: FixedUtcTimestamp;
10
- end_at: FixedUtcTimestamp;
11
- };
12
- event_at: FixedUtcTimestamp;
13
- reason_code: string;
14
- };
15
- type UnfinalizedQualificationEvent = Omit<QualificationEvent, "qualification_event_id"> & Partial<Pick<QualificationEvent, "qualification_event_id">>;
16
- export declare function parseQualificationEvent(value: unknown): QualificationEvent;
17
- export declare function finalizeQualificationEvent(event: UnfinalizedQualificationEvent): QualificationEvent;
18
- export declare function qualificationEventToArchiveRow(eventInput: QualificationEvent): BackfillArchiveRow;
19
- export declare function qualificationEventFromArchiveRow(row: Record<string, unknown>): QualificationEvent;
20
- export {};
@@ -1,30 +0,0 @@
1
- import { type ArchiveSelectionWire, type BackfillArchiveRow, type BackfillRequestWire, type MarketDataVendorBackfillRequest } from "./contracts";
2
- export type ArchiveQualificationEvidence = {
3
- qualificationEventId: string;
4
- state: "qualified" | "quarantined" | "revoked";
5
- receiptId: string;
6
- promotionIdentitySha256: string;
7
- };
8
- export type ArchiveSupportAnchorEvidence = {
9
- captureBundleId: string;
10
- rawCaptureId: string;
11
- snapshotId: string;
12
- sourceTimeMs: number;
13
- normalizedSummaryChecksum: string;
14
- };
15
- export type ArchiveBundleEvidence = {
16
- captureBundleId: string;
17
- captureOrigin: "production_capture" | "vendor_historical_backfill";
18
- startTimeMs: number;
19
- endTimeMs: number;
20
- qualification: ArchiveQualificationEvidence | null;
21
- supportAnchors: ArchiveSupportAnchorEvidence[];
22
- };
23
- export declare function resolveArchiveSelection(input: {
24
- request: MarketDataVendorBackfillRequest;
25
- bundles: readonly ArchiveBundleEvidence[];
26
- resolvedAtMs: number;
27
- storedSelection?: unknown;
28
- }): ArchiveSelectionWire;
29
- export declare function archiveSelectionToArchiveRow(request: BackfillRequestWire, selectionInput: ArchiveSelectionWire): BackfillArchiveRow;
30
- export declare function archiveSelectionFromArchiveRow(row: Record<string, unknown>): ArchiveSelectionWire;
@@ -1,25 +0,0 @@
1
- import type { BackfillArchiveRow, MarketDataVendorBackfillRequest } from "./contracts";
2
- export declare function semanticDigest(rows: readonly BackfillArchiveRow[]): string;
3
- export type SemanticPromotionEvidence = {
4
- request: MarketDataVendorBackfillRequest;
5
- normalizedRows: readonly BackfillArchiveRow[];
6
- candidateRows: readonly BackfillArchiveRow[];
7
- conflictCount: number;
8
- prefixDigestBefore: string;
9
- prefixDigestAfter: string;
10
- suffixDigestBefore: string;
11
- suffixDigestAfter: string;
12
- seamVerified: boolean;
13
- exporterCompatible: boolean;
14
- coverageSourceTimesMs?: readonly number[];
15
- };
16
- export type SemanticPromotionResult = {
17
- passed: boolean;
18
- reasonCode: string;
19
- canonicalSemanticDigest: string;
20
- prefixDigest: string;
21
- suffixDigest: string;
22
- seamVerified: boolean;
23
- coverageVerified: boolean;
24
- };
25
- export declare function verifySemanticPromotion(evidence: SemanticPromotionEvidence): SemanticPromotionResult;
@@ -1,16 +0,0 @@
1
- import type { Exchange } from "@usherlabs/ccxt";
2
- export type BrokerMarketType = "spot" | "swap" | "future";
3
- export type TradableSymbolMatch = {
4
- symbol: string;
5
- side: "buy" | "sell";
6
- marketType: BrokerMarketType;
7
- };
8
- export declare function parseMarketType(value: unknown): BrokerMarketType;
9
- export declare function marketTypeToCcxtType(marketType: BrokerMarketType): "spot" | "swap" | "future";
10
- export declare function findTradableSymbol(broker: Exchange, fromToken: string, toToken: string, marketType?: BrokerMarketType): Promise<TradableSymbolMatch | null>;
11
- export declare function resolveSubscriptionSymbol(broker: Exchange, symbol: string, marketTypeInput: unknown): Promise<string>;
12
- export type ParsedMarketPattern = {
13
- symbolPattern: string;
14
- requiredMarketType?: BrokerMarketType;
15
- };
16
- export declare function parseMarketPattern(symbolPattern: string): ParsedMarketPattern;
@@ -1,22 +0,0 @@
1
- export type OrderActivityEntry = {
2
- exchangeId: string;
3
- accountLabel: string;
4
- symbol: string;
5
- lastActivityAt: number;
6
- };
7
- /**
8
- * Records the (exchange, account, symbol) tuples that saw order activity through
9
- * the execute-action path, so the fill poller scans only those markets instead of
10
- * the whole exchange. Process-lifetime, in-memory only (no persistence needed: on
11
- * restart the poller re-derives the set from fresh order activity and read-time
12
- * dedup absorbs the lookback re-scan).
13
- */
14
- export declare class OrderActivityTracker {
15
- #private;
16
- constructor(options?: {
17
- maxAgeMs?: number;
18
- });
19
- record(exchangeId: string, accountLabel: string, symbol: string, now?: number): void;
20
- /** Active entries (seen within maxAge). Prunes stale entries as a side effect. */
21
- list(now?: number): OrderActivityEntry[];
22
- }
@@ -1,79 +0,0 @@
1
- import type { Exchange } from "@usherlabs/ccxt";
2
- export declare const ORDER_BOOK_CALL_METHODS: {
3
- readonly FETCH_CAPABILITY: "fetch_order_book_capability";
4
- readonly FETCH_SNAPSHOT: "fetch_order_book_snapshot";
5
- readonly FETCH_HISTORICAL_SNAPSHOTS: "fetch_historical_order_book_snapshots";
6
- };
7
- export type OrderBookCallMethod = (typeof ORDER_BOOK_CALL_METHODS)[keyof typeof ORDER_BOOK_CALL_METHODS];
8
- export declare const ORDER_BOOK_CONSTRUCTION_MODES: {
9
- readonly SAMPLED_TOP_N_SNAPSHOT: "sampled_top_n_snapshot";
10
- readonly EXACT_L2_RECONSTRUCTION: "exact_l2_reconstruction";
11
- };
12
- export type OrderBookConstructionMode = (typeof ORDER_BOOK_CONSTRUCTION_MODES)[keyof typeof ORDER_BOOK_CONSTRUCTION_MODES];
13
- export declare const HISTORICAL_ORDER_BOOK_PROVIDER_UNSUPPORTED = "historical_order_book_provider_unsupported";
14
- export type OrderBookCallPayload = {
15
- method: OrderBookCallMethod;
16
- exchange: string;
17
- symbol: string;
18
- depthLimit: number;
19
- constructionMode: OrderBookConstructionMode;
20
- start?: string;
21
- end?: string;
22
- cadence?: string;
23
- };
24
- export type OrderBookCallParseResult = {
25
- kind: "not_order_book";
26
- } | {
27
- kind: "error";
28
- message: string;
29
- } | {
30
- kind: "order_book";
31
- payload: OrderBookCallPayload;
32
- };
33
- export type NormalizedOrderBookSnapshot = {
34
- bids: number[][];
35
- asks: number[][];
36
- timestamp: number | string | boolean | null;
37
- receivedTimestamp: number;
38
- exchange: string;
39
- symbol: string;
40
- depthLimit: number;
41
- sequence?: number | string | boolean;
42
- };
43
- export declare function isOrderBookCallMethod(value: unknown): value is OrderBookCallMethod;
44
- export declare function parseOrderBookCallPayload(payload: Record<string, string> | undefined, request: {
45
- exchange?: string;
46
- symbol?: string;
47
- }): OrderBookCallParseResult;
48
- export declare function parseOptionalDepthLimit(value: string | undefined): number | undefined;
49
- export declare function normalizeOrderBookSnapshot(orderBook: unknown, options: {
50
- exchange: string;
51
- symbol: string;
52
- depthLimit: number;
53
- receivedTimestamp?: number;
54
- }): NormalizedOrderBookSnapshot;
55
- export declare function buildOrderBookCapability(broker: Exchange, payload: Pick<OrderBookCallPayload, "exchange" | "symbol" | "depthLimit" | "constructionMode">): {
56
- exchange: string;
57
- symbol: string;
58
- provider: string;
59
- maxDepth: number;
60
- timestampPrecision: string;
61
- constructionMode: OrderBookConstructionMode;
62
- supportsCurrentSnapshot: boolean;
63
- supportsLiveStream: boolean;
64
- supportsHistoricalSnapshots: boolean;
65
- supportsSampledTopN: boolean;
66
- supportsExactL2Reconstruction: boolean;
67
- };
68
- export declare function buildHistoricalOrderBookUnsupported(payload: OrderBookCallPayload): {
69
- exchange: string;
70
- symbol: string;
71
- provider: string;
72
- constructionMode: OrderBookConstructionMode;
73
- depthLimit: number;
74
- start: string | undefined;
75
- end: string | undefined;
76
- cadence: string | undefined;
77
- unsupported: boolean;
78
- unsupportedReason: string;
79
- };
@@ -1,50 +0,0 @@
1
- import type { OtelMetrics } from "./otel";
2
- export type OrderTelemetryAction = "CreateOrder" | "CancelOrder" | "GetOrderDetails";
3
- export type OrderTelemetryContext = {
4
- action: OrderTelemetryAction;
5
- cex: string;
6
- accountLabel?: string;
7
- symbol?: string;
8
- side?: string;
9
- orderType?: string;
10
- requestedQuantity?: number;
11
- requestedNotional?: number;
12
- orderAuthor?: string;
13
- clientOrderId?: string;
14
- idempotencyId?: string;
15
- makerActionId?: string;
16
- brokerObservedTimestamp?: string;
17
- };
18
- export type OrderExecutionTelemetry = {
19
- event: "cex_market_action_execution";
20
- action: OrderTelemetryAction;
21
- cex: string;
22
- accountLabel: string;
23
- symbol: string;
24
- side: string;
25
- orderType: string;
26
- orderId?: string;
27
- orderAuthor?: string;
28
- clientOrderId?: string;
29
- idempotencyId?: string;
30
- makerActionId?: string;
31
- status: string;
32
- requestedQuantity?: number;
33
- requestedNotional?: number;
34
- executedBaseQuantity?: number;
35
- executedQuoteQuantity?: number;
36
- averageExecutionPrice?: number;
37
- filledAmount?: number;
38
- remainingAmount?: number;
39
- feeAmount?: number;
40
- feeCurrency?: string;
41
- feeRate?: number;
42
- exchangeTimestamp?: string;
43
- brokerObservedTimestamp: string;
44
- errorType?: string;
45
- errorMessage?: string;
46
- };
47
- export declare function emitOrderExecutionTelemetry(otelMetrics: OtelMetrics | undefined, context: OrderTelemetryContext, order: unknown, error?: unknown): Promise<OrderExecutionTelemetry | undefined>;
48
- export declare function buildOrderExecutionTelemetry(context: OrderTelemetryContext, order: unknown, error?: unknown): OrderExecutionTelemetry;
49
- export declare function emitOrderExecutionTelemetryInBackground(otelMetrics: OtelMetrics | undefined, context: OrderTelemetryContext, order: unknown, error?: unknown): void;
50
- export declare function extractOrderTelemetryIds(params: Record<string, unknown> | undefined): Pick<OrderTelemetryContext, "clientOrderId" | "idempotencyId" | "makerActionId">;
@@ -1,83 +0,0 @@
1
- import { type LogRecord } from "@opentelemetry/api-logs";
2
- import { LoggerProvider } from "@opentelemetry/sdk-logs";
3
- import { type MeterProvider as MeterProviderType } from "@opentelemetry/sdk-metrics";
4
- /** OTLP/OpenTelemetry metrics config. Metrics are sent to an OTel Collector. */
5
- export interface OtelConfig {
6
- /** OTLP HTTP endpoint (e.g. http://localhost:4318). Takes precedence over host/port. */
7
- otlpEndpoint?: string;
8
- /** Collector host (legacy). Used with port to build otlpEndpoint when otlpEndpoint is not set. */
9
- host?: string;
10
- /** Collector port (legacy). Default 4318 for OTLP HTTP. */
11
- port?: number;
12
- protocol?: "http" | "https";
13
- /** Service name for metrics. */
14
- serviceName?: string;
15
- /** @deprecated Unused when using OTLP; kept for config compatibility. */
16
- username?: string;
17
- /** @deprecated Unused when using OTLP; kept for config compatibility. */
18
- password?: string;
19
- /** @deprecated Unused when using OTLP; kept for config compatibility. */
20
- database?: string;
21
- }
22
- export interface MetricData {
23
- timestamp: Date;
24
- metric_name: string;
25
- metric_type: "counter" | "gauge" | "histogram";
26
- value: number;
27
- labels: string;
28
- service: string;
29
- }
30
- export interface OtelMetricsEnvOptions {
31
- /** Service name used when OTEL_SERVICE_NAME is not configured. */
32
- defaultServiceName?: string;
33
- /** Whether broker-specific legacy collector host variables are accepted. */
34
- allowLegacyBrokerConfig?: boolean;
35
- }
36
- declare abstract class BaseOtelSignal<TProvider> {
37
- private readonly signal;
38
- private provider;
39
- private isEnabled;
40
- private closePromise;
41
- private readonly serviceName;
42
- protected constructor(config: OtelConfig | undefined, signal: "metrics" | "logs");
43
- protected abstract createProvider(endpoint: string, serviceName: string, appendSignalPath: boolean): TProvider;
44
- protected onProviderCreated(_provider: TProvider): void;
45
- protected abstract shutdownProvider(provider: TProvider): Promise<void>;
46
- protected onProviderClosed(): void;
47
- protected getProvider(): TProvider | null;
48
- protected getServiceName(): string;
49
- isOtelEnabled(): boolean;
50
- close(): Promise<void>;
51
- }
52
- export declare class OtelMetrics extends BaseOtelSignal<MeterProviderType> {
53
- private readonly counters;
54
- private readonly histograms;
55
- private readonly observableGauges;
56
- constructor(config?: OtelConfig);
57
- protected createProvider(endpoint: string, serviceName: string, appendSignalPath: boolean): MeterProviderType;
58
- protected onProviderCreated(provider: MeterProviderType): void;
59
- protected shutdownProvider(provider: MeterProviderType): Promise<void>;
60
- initialize(): Promise<void>;
61
- insertMetric(metric: MetricData): Promise<void>;
62
- insertMetrics(metricsList: MetricData[]): Promise<void>;
63
- recordCounter(metricName: string, value: number, labels: Record<string, string | number>, service?: string): Promise<void>;
64
- recordGauge(metricName: string, value: number, labels: Record<string, string | number>, service?: string): Promise<void>;
65
- /**
66
- * Set a gauge value that is observed on every export. This is suitable for
67
- * staleness signals where a quiet live process must keep exporting its last value.
68
- */
69
- setObservableGauge(metricName: string, value: number, labels: Record<string, string | number>, service?: string): Promise<void>;
70
- recordHistogram(metricName: string, value: number, labels: Record<string, string | number>, service?: string): Promise<void>;
71
- }
72
- export declare class OtelLogs extends BaseOtelSignal<LoggerProvider> {
73
- private logger;
74
- constructor(config?: OtelConfig);
75
- protected createProvider(endpoint: string, serviceName: string, appendSignalPath: boolean): LoggerProvider;
76
- protected onProviderCreated(provider: LoggerProvider): void;
77
- protected shutdownProvider(provider: LoggerProvider): Promise<void>;
78
- protected onProviderClosed(): void;
79
- emit(record: LogRecord): void;
80
- }
81
- export declare function createOtelMetricsFromEnv(options?: OtelMetricsEnvOptions): OtelMetrics;
82
- export declare function createOtelLogsFromEnv(): OtelLogs;
83
- export {};
@@ -1,8 +0,0 @@
1
- export declare const PASSIVE_ORDER_ERROR_CODES: {
2
- readonly unsupported: "passive_order_unsupported";
3
- readonly rejected: "passive_order_rejected";
4
- readonly wouldCross: "passive_order_would_cross";
5
- };
6
- export type PassiveOrderErrorCode = (typeof PASSIVE_ORDER_ERROR_CODES)[keyof typeof PASSIVE_ORDER_ERROR_CODES];
7
- export type PassiveOrderSubmissionErrorCode = PassiveOrderErrorCode | "AuthenticationError" | "InsufficientFunds";
8
- export declare function classifyPassiveOrderError(error: unknown): PassiveOrderSubmissionErrorCode;
@@ -1,12 +0,0 @@
1
- export type PublicFeedName = "ORDERBOOK" | "TICKER" | "TRADES" | "OHLCV";
2
- export type PublicFeedKeyInput = {
3
- exchange: string;
4
- symbol: string;
5
- marketType: string;
6
- feed: PublicFeedName;
7
- acquisitionProfileId?: string;
8
- timeframe?: string;
9
- };
10
- export declare function normalizePublicExchange(exchange: string): string;
11
- export declare function resolvePublicOhlcvTimeframe(timeframe: string | undefined): string;
12
- export declare function buildPublicFeedKey(input: PublicFeedKeyInput): string;
@@ -1,5 +0,0 @@
1
- export * from "./identity";
2
- export * from "./orderbook-coalescing-evidence";
3
- export * from "./orderbook-profile";
4
- export * from "./subscriber-buffer";
5
- export * from "./supervisor";
@@ -1,79 +0,0 @@
1
- import type { OrderBookBandCoverage } from "./orderbook-profile";
2
- export declare const CEX_ORDERBOOK_COALESCING_EVIDENCE_SCHEMA: "cex-orderbook-coalescing-evidence/v1";
3
- export type CexOrderBookEvidenceVenue = "binance" | "mexc";
4
- export type CexPolicyVisibleOrderBookSnapshot = {
5
- bids: number[][];
6
- asks: number[][];
7
- timestamp: number;
8
- exchange: CexOrderBookEvidenceVenue;
9
- symbol: string;
10
- depthLimit: number;
11
- };
12
- export type CexOrderBookObservationEvidence = {
13
- index: number;
14
- conservative: {
15
- live: CexPolicyVisibleOrderBookSnapshot;
16
- rehydrated: CexPolicyVisibleOrderBookSnapshot;
17
- };
18
- coalesced: {
19
- live: CexPolicyVisibleOrderBookSnapshot;
20
- rehydrated: CexPolicyVisibleOrderBookSnapshot;
21
- };
22
- coverage: {
23
- conservativeLive: OrderBookBandCoverage[];
24
- conservativeRehydrated: OrderBookBandCoverage[];
25
- coalescedLive: OrderBookBandCoverage[];
26
- coalescedRehydrated: OrderBookBandCoverage[];
27
- };
28
- snapshotHashes: {
29
- conservativeLive: string;
30
- conservativeRehydrated: string;
31
- coalescedLive: string;
32
- coalescedRehydrated: string;
33
- };
34
- };
35
- export type CexOrderBookPhysicalWorkEvidence = {
36
- workers: number;
37
- watchIterations: number;
38
- frames: number;
39
- archiveDecisions: number;
40
- };
41
- export type CexOrderBookCoalescingCaseEvidence = {
42
- venue: CexOrderBookEvidenceVenue;
43
- profileId: string;
44
- observations: CexOrderBookObservationEvidence[];
45
- cexVerdicts: {
46
- logicalPayloadsEqual: true;
47
- canonicalArchiveEqual: true;
48
- liveReplayInputsEqual: true;
49
- bandCoverageComplete: true;
50
- reducedPhysicalWork: true;
51
- physicalWork: {
52
- conservative: CexOrderBookPhysicalWorkEvidence;
53
- coalesced: CexOrderBookPhysicalWorkEvidence;
54
- };
55
- };
56
- insufficientReplayCase: {
57
- archiveDepth: number;
58
- policyDepth: number;
59
- rejected: true;
60
- observations: Array<{
61
- index: number;
62
- coverage: OrderBookBandCoverage[];
63
- diagnostics: string[];
64
- }>;
65
- };
66
- };
67
- export type CexOrderBookCoalescingEvidence = {
68
- schemaVersion: typeof CEX_ORDERBOOK_COALESCING_EVIDENCE_SCHEMA;
69
- policyDepth: number;
70
- archiveDepth: number;
71
- bandsBps: number[];
72
- cases: [
73
- CexOrderBookCoalescingCaseEvidence,
74
- CexOrderBookCoalescingCaseEvidence
75
- ];
76
- };
77
- export declare function validateCexOrderBookCoalescingEvidence(value: unknown): CexOrderBookCoalescingEvidence;
78
- export declare function serializeCexOrderBookCoalescingEvidence(value: unknown): Uint8Array;
79
- export declare function sha256CexOrderBookCoalescingEvidence(value: unknown): string;
@@ -1,54 +0,0 @@
1
- import type { NormalizedOrderBookSnapshot } from "../order-book";
2
- export type OrderBookAcquisitionProfile = {
3
- id: string;
4
- upstreamLimit?: number;
5
- upstreamOptions?: Record<string, unknown>;
6
- guaranteedRetainedDepth?: number;
7
- coalescingSupported: boolean;
8
- };
9
- export type OrderBookAcquisitionProfileInput = {
10
- exchange: string;
11
- requestedDepth: number | undefined;
12
- archiveDepth: number;
13
- enabledProfileIds?: ReadonlySet<string>;
14
- };
15
- export declare function resolveConservativeOrderBookAcquisitionProfile(input: OrderBookAcquisitionProfileInput): OrderBookAcquisitionProfile;
16
- export declare function resolveOrderBookAcquisitionProfile(input: OrderBookAcquisitionProfileInput): OrderBookAcquisitionProfile;
17
- export declare function projectOrderBookSnapshot(snapshot: NormalizedOrderBookSnapshot, requestedDepth: number | undefined): NormalizedOrderBookSnapshot;
18
- type SideCoverage = {
19
- covered: boolean;
20
- boundaryPrice: number;
21
- farthestPrice?: number;
22
- retainedCount: number;
23
- exhausted: boolean;
24
- };
25
- export type OrderBookBandCoverage = {
26
- covered: boolean;
27
- mid: number;
28
- bandBps: number;
29
- bid: SideCoverage;
30
- ask: SideCoverage;
31
- diagnostics: string[];
32
- };
33
- export type ImmediateHedgeabilityEvidence = OrderBookBandCoverage & {
34
- /** Base quantity that can be sold immediately into displayed bids. */
35
- bidDepth: number;
36
- /** Base quantity that can be bought immediately from displayed asks. */
37
- askDepth: number;
38
- limitingSide: "bid" | "ask" | "balanced";
39
- liquidityCap: number;
40
- };
41
- export declare function evaluateOrderBookBandCoverage(snapshot: Pick<NormalizedOrderBookSnapshot, "bids" | "asks">, bandBps: number, options?: {
42
- bidExhausted?: boolean;
43
- askExhausted?: boolean;
44
- }): OrderBookBandCoverage;
45
- /**
46
- * Derives the L2 inputs used to cap immediately hedgeable counterpart liquidity.
47
- * A result is exact only when `covered` is true; otherwise the two depth values
48
- * are conservative lower bounds because the retained book ends inside the band.
49
- */
50
- export declare function evaluateImmediateHedgeability(snapshot: Pick<NormalizedOrderBookSnapshot, "bids" | "asks">, bandBps: number, options?: {
51
- bidExhausted?: boolean;
52
- askExhausted?: boolean;
53
- }): ImmediateHedgeabilityEvidence;
54
- export {};
@@ -1,31 +0,0 @@
1
- import type { SubscriptionType } from "../constants";
2
- export type PublicFeedFrame = {
3
- data: string;
4
- timestamp: number;
5
- symbol: string;
6
- type: SubscriptionType;
7
- };
8
- export declare const PUBLIC_FEED_SUBSCRIBER_FRAME_LIMIT = 16;
9
- export declare const PUBLIC_FEED_SUBSCRIBER_BYTE_LIMIT: number;
10
- export declare const PUBLIC_FEED_SUBSCRIBER_OVERFLOW_ERROR = "Public market-data subscriber fell behind";
11
- /** Returns the proto3 wire size of the complete SubscribeResponse message. */
12
- export declare function encodeSubscribeResponseWireSize(response: PublicFeedFrame): number;
13
- export type PublicFeedSubscriberBufferOptions = {
14
- /** Test-only override. Production callers omit this value. */
15
- frameLimit?: number;
16
- /** Test-only override. Production callers omit this value. */
17
- byteLimit?: number;
18
- };
19
- /** Fixed-capacity O(1) FIFO for disposable public gRPC subscriber frames. */
20
- export declare class PublicFeedSubscriberBuffer implements AsyncIterable<PublicFeedFrame> {
21
- #private;
22
- readonly frameLimit: number;
23
- readonly byteLimit: number;
24
- constructor(options?: PublicFeedSubscriberBufferOptions);
25
- get queuedFrames(): number;
26
- get queuedBytes(): number;
27
- enqueue(frame: PublicFeedFrame): boolean;
28
- close(): void;
29
- fail(error: Error): void;
30
- [Symbol.asyncIterator](): AsyncIterator<PublicFeedFrame>;
31
- }