@usherlabs/cex-broker 0.2.45 → 0.2.47

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 (67) hide show
  1. package/README.md +1 -1
  2. package/dist/commands/cex-canonical-orderbook-export.d.ts +23 -0
  3. package/dist/commands/cex-canonical-orderbook-export.js +27731 -0
  4. package/dist/commands/cex-canonical-orderbook-export.js.map +247 -0
  5. package/dist/commands/cli.js +16231 -15573
  6. package/dist/commands/market-data-vendor-backfill.d.ts +24 -0
  7. package/dist/commands/market-data-vendor-backfill.js +33316 -0
  8. package/dist/commands/market-data-vendor-backfill.js.map +279 -0
  9. package/dist/handlers/subscribe/handler.d.ts +2 -0
  10. package/dist/helpers/canonical-orderbook-export/exact-selection.d.ts +21 -0
  11. package/dist/helpers/canonical-orderbook-export/exporter.d.ts +26 -0
  12. package/dist/helpers/market-data-archive/capture-contract.d.ts +3 -2
  13. package/dist/helpers/market-data-archive/types.d.ts +8 -4
  14. package/dist/helpers/market-data-preparation/conformance-fixtures.d.ts +16 -0
  15. package/dist/helpers/market-data-preparation/contracts.d.ts +1690 -0
  16. package/dist/helpers/market-data-preparation/file-job.d.ts +38 -0
  17. package/dist/helpers/market-data-vendor-backfill/archive-reader.d.ts +26 -0
  18. package/dist/helpers/market-data-vendor-backfill/batching.d.ts +10 -0
  19. package/dist/helpers/market-data-vendor-backfill/conformance-fixtures.d.ts +80 -0
  20. package/dist/helpers/market-data-vendor-backfill/contracts.d.ts +393 -0
  21. package/dist/helpers/market-data-vendor-backfill/core.d.ts +100 -0
  22. package/dist/helpers/market-data-vendor-backfill/cryptohftdata.d.ts +77 -0
  23. package/dist/helpers/market-data-vendor-backfill/forwarder-client.d.ts +25 -0
  24. package/dist/helpers/market-data-vendor-backfill/identity.d.ts +10 -0
  25. package/dist/helpers/market-data-vendor-backfill/manifests.d.ts +1086 -0
  26. package/dist/helpers/market-data-vendor-backfill/promotion.d.ts +9 -0
  27. package/dist/helpers/market-data-vendor-backfill/qualification.d.ts +20 -0
  28. package/dist/helpers/market-data-vendor-backfill/selection.d.ts +30 -0
  29. package/dist/helpers/market-data-vendor-backfill/semantic-verification.d.ts +24 -0
  30. package/dist/helpers/public-market-data-feed/identity.d.ts +12 -0
  31. package/dist/helpers/public-market-data-feed/index.d.ts +5 -0
  32. package/dist/helpers/public-market-data-feed/orderbook-coalescing-evidence.d.ts +79 -0
  33. package/dist/helpers/public-market-data-feed/orderbook-profile.d.ts +54 -0
  34. package/dist/helpers/public-market-data-feed/subscriber-buffer.d.ts +31 -0
  35. package/dist/helpers/public-market-data-feed/supervisor.d.ts +82 -0
  36. package/dist/index.d.ts +1 -0
  37. package/dist/index.js +16221 -15563
  38. package/dist/index.js.map +21 -18
  39. package/dist/market-data-preparation/fixtures/conformance-v2.json +424 -0
  40. package/dist/market-data-preparation/policies/capability-policy.json +28 -0
  41. package/dist/market-data-preparation/policies/resource-policy.json +16 -0
  42. package/dist/market-data-preparation/schema-manifest.json +46 -0
  43. package/dist/market-data-preparation/schemas/archive-selection-v1.schema.json +224 -0
  44. package/dist/market-data-preparation/schemas/backfill-request-v1.schema.json +166 -0
  45. package/dist/market-data-preparation/schemas/backfill-result-v2.schema.json +212 -0
  46. package/dist/market-data-preparation/schemas/canonical-orderbook-export-request-v1.schema.json +57 -0
  47. package/dist/market-data-preparation/schemas/canonical-orderbook-export-result-v1.schema.json +238 -0
  48. package/dist/market-data-preparation/schemas/preparation-product-pin-v1.schema.json +126 -0
  49. package/dist/market-data-preparation/schemas/promotion-receipt-v1.schema.json +171 -0
  50. package/dist/market-data-preparation/schemas/required-clock-v1.schema.json +47 -0
  51. package/dist/market-data-preparation.d.ts +4 -0
  52. package/dist/market-data-preparation.js +27569 -0
  53. package/dist/market-data-preparation.js.map +249 -0
  54. package/dist/market-data-vendor-backfill/fixtures/conformance-v1.json +448 -0
  55. package/dist/market-data-vendor-backfill/policies/capability-policy.json +28 -0
  56. package/dist/market-data-vendor-backfill/policies/resource-policy.json +16 -0
  57. package/dist/market-data-vendor-backfill/schema-manifest.json +31 -0
  58. package/dist/market-data-vendor-backfill/schemas/archive-selection.schema.json +224 -0
  59. package/dist/market-data-vendor-backfill/schemas/promotion-receipt.schema.json +171 -0
  60. package/dist/market-data-vendor-backfill/schemas/request.schema.json +166 -0
  61. package/dist/market-data-vendor-backfill/schemas/required-clock.schema.json +47 -0
  62. package/dist/market-data-vendor-backfill/schemas/result.schema.json +198 -0
  63. package/dist/market-data-vendor-backfill.d.ts +18 -0
  64. package/dist/market-data-vendor-backfill.js +18850 -0
  65. package/dist/market-data-vendor-backfill.js.map +206 -0
  66. package/dist/server.d.ts +2 -1
  67. package/package.json +37 -3
@@ -2,6 +2,7 @@ import * as grpc from "@grpc/grpc-js";
2
2
  import { type BrokerPoolEntry } from "../../helpers/broker";
3
3
  import type { BrokerExecutionArchiver } from "../../helpers/broker-execution-archive";
4
4
  import type { OtelMetrics } from "../../helpers/otel";
5
+ import { PublicMarketDataFeedSupervisor } from "../../helpers/public-market-data-feed";
5
6
  import type { UserDataStreamSupervisor } from "../../helpers/user-data-stream-supervisor";
6
7
  import type { SubscribeRequest, SubscribeResponse } from "../types";
7
8
  import { SubscribeBrokerLifecycle } from "./broker-lifecycle";
@@ -12,6 +13,7 @@ export type SubscribeDeps = {
12
13
  brokerArchiver?: BrokerExecutionArchiver;
13
14
  brokerLifecycle?: SubscribeBrokerLifecycle;
14
15
  userDataStreamSupervisor?: UserDataStreamSupervisor;
16
+ publicMarketDataFeedSupervisor?: PublicMarketDataFeedSupervisor;
15
17
  };
16
18
  type SubscribeCall = grpc.ServerWritableStream<SubscribeRequest, SubscribeResponse>;
17
19
  export declare function createSubscribeHandler(deps: SubscribeDeps): (call: SubscribeCall) => Promise<void>;
@@ -0,0 +1,21 @@
1
+ import { type CanonicalOrderBookExportQuerySegment, type CanonicalOrderBookExportRequestWire } from "../market-data-preparation/contracts";
2
+ import { type Sha256Hex } from "../market-data-vendor-backfill/contracts";
3
+ export type ExactOrderBookQueryValue = string | number | readonly string[];
4
+ export type CompiledExactOrderBookExport = {
5
+ request: CanonicalOrderBookExportRequestWire;
6
+ segments: CanonicalOrderBookExportQuerySegment[];
7
+ querySha256: Sha256Hex;
8
+ parameters: Readonly<Record<string, ExactOrderBookQueryValue>>;
9
+ predicateSql: string;
10
+ physicalPredicateSql: string;
11
+ levelsSql: string;
12
+ summarySql: string;
13
+ conflictsSql: string;
14
+ rowCountsSql: string;
15
+ promotionReceiptsSql: string;
16
+ };
17
+ export declare class ExactOrderBookExportError extends Error {
18
+ readonly reason: string;
19
+ constructor(reason: string);
20
+ }
21
+ export declare function compileExactOrderBookExport(requestInput: CanonicalOrderBookExportRequestWire): CompiledExactOrderBookExport;
@@ -0,0 +1,26 @@
1
+ import type { CanonicalOrderBookExportArtifact, CanonicalOrderBookExportRequestWire } from "../market-data-preparation/contracts";
2
+ import { type CompiledExactOrderBookExport, type ExactOrderBookQueryValue } from "./exact-selection";
3
+ export type ExactOrderBookExportFormat = "JSONEachRow" | "Parquet";
4
+ export type ExactOrderBookExportQueryClient = {
5
+ execute(sql: string, parameters: Readonly<Record<string, ExactOrderBookQueryValue>>, format: ExactOrderBookExportFormat): Promise<Uint8Array>;
6
+ };
7
+ export type ExactCanonicalOrderBookExport = {
8
+ compiled: CompiledExactOrderBookExport;
9
+ promotionReceiptIds: string[];
10
+ levelsPath: string;
11
+ summaryPath: string;
12
+ levels: CanonicalOrderBookExportArtifact;
13
+ summary: CanonicalOrderBookExportArtifact;
14
+ };
15
+ export type ClickHouseExactExportClientOptions = {
16
+ url: string;
17
+ username?: string;
18
+ password?: string;
19
+ fetch?: typeof globalThis.fetch;
20
+ };
21
+ export declare function createClickHouseExactOrderBookExportClient(options: ClickHouseExactExportClientOptions): ExactOrderBookExportQueryClient;
22
+ export declare function exportExactCanonicalOrderBook(input: {
23
+ request: CanonicalOrderBookExportRequestWire;
24
+ client: ExactOrderBookExportQueryClient;
25
+ outputDirectory: string;
26
+ }): Promise<ExactCanonicalOrderBookExport>;
@@ -2,11 +2,12 @@ import type { MarketCaptureContext, RawCapture, RawCaptureScope } from "./types"
2
2
  export declare const MARKET_CAPTURE_SCHEMA_VERSION: "1.0.0";
3
3
  export declare const CHECKSUM_ALGORITHM: "sha256-canonical-json-v1";
4
4
  export declare const ARCHIVE_SOURCES: readonly ["broker_read", "broker_write"];
5
+ export declare const MARKET_ARCHIVE_SOURCES: readonly ["broker_read", "broker_write", "external_backfill"];
5
6
  export declare const CAPTURE_FEEDS: readonly ["ORDERBOOK", "TICKER", "TRADES", "OHLCV"];
6
- export declare const SOURCE_MODES: readonly ["broker_live_stream_v1", "broker_live_sampling_v1", "broker_current_snapshot_v1", "broker_bootstrap_fetch_v1", "external_ccxt_fallback_v1", "external_hummingbot_fallback_v1", "legacy_migration_v1"];
7
+ export declare const SOURCE_MODES: readonly ["broker_live_stream_v1", "broker_live_sampling_v1", "broker_current_snapshot_v1", "broker_bootstrap_fetch_v1", "external_ccxt_fallback_v1", "external_hummingbot_fallback_v1", "legacy_migration_v1", "historical_vendor_orderbook_v1", "vendor_historical_backfill_v1"];
7
8
  export declare const CONSTRUCTION_MODES: readonly ["sampled_top_n_snapshot", "exact_l2_reconstruction"];
8
9
  export declare const GAP_POLICIES: readonly ["record_gap", "ohlcv_catch_up", "fail_fast"];
9
- export declare const RAW_CAPTURE_SCOPES: readonly ["ccxt_normalized_object", "broker_visible_payload", "exchange_wire_frame"];
10
+ export declare const RAW_CAPTURE_SCOPES: readonly ["ccxt_normalized_object", "broker_visible_payload", "exchange_wire_frame", "vendor_normalized_dataset_file"];
10
11
  export type CaptureFeed = (typeof CAPTURE_FEEDS)[number];
11
12
  export type SourceMode = (typeof SOURCE_MODES)[number];
12
13
  export type ConstructionMode = (typeof CONSTRUCTION_MODES)[number];
@@ -1,6 +1,7 @@
1
1
  import type { BrokerArchiveRow, BrokerArchiveSource } from "../broker-execution-archive/types";
2
2
  import type { BrokerMarketType } from "../market-type";
3
3
  import type { NormalizedOrderBookSnapshot } from "../order-book";
4
+ export type MarketArchiveSource = BrokerArchiveSource | "external_backfill";
4
5
  export type MarketArchiveTable = "market_data.orderbook_snapshots" | "market_data.candles" | "market_data.cex_stream_events" | "market_data.cex_ticker_events" | "market_data.cex_trades" | "market_data.cex_ohlcv" | "market_data.cex_order_book_levels" | "market_data.cex_order_book_depth_summary";
5
6
  export type CexStreamType = "BALANCE" | "ORDERS" | "ORDERBOOK" | "TRADES" | "TICKER" | "OHLCV";
6
7
  export type ParsedOhlcvBar = {
@@ -27,10 +28,11 @@ export type MarketArchiveContext = {
27
28
  deploymentId: string;
28
29
  };
29
30
  export type CaptureFeed = "ORDERBOOK" | "TICKER" | "TRADES" | "OHLCV";
30
- export type CaptureSourceMode = "broker_live_stream_v1" | "broker_live_sampling_v1" | "broker_current_snapshot_v1" | "broker_bootstrap_fetch_v1" | "external_ccxt_fallback_v1" | "external_hummingbot_fallback_v1" | "legacy_migration_v1";
31
- export type RawCaptureScope = "ccxt_normalized_object" | "broker_visible_payload" | "exchange_wire_frame";
32
- export type MarketCaptureContext = MarketArchiveContext & {
33
- source: BrokerArchiveSource;
31
+ export type CaptureSourceMode = "broker_live_stream_v1" | "broker_live_sampling_v1" | "broker_current_snapshot_v1" | "broker_bootstrap_fetch_v1" | "external_ccxt_fallback_v1" | "external_hummingbot_fallback_v1" | "legacy_migration_v1" | "historical_vendor_orderbook_v1" | "vendor_historical_backfill_v1";
32
+ export type CaptureOrigin = "production_capture" | "vendor_historical_backfill";
33
+ export type RawCaptureScope = "ccxt_normalized_object" | "broker_visible_payload" | "exchange_wire_frame" | "vendor_normalized_dataset_file";
34
+ export type MarketCaptureContext = Omit<MarketArchiveContext, "source"> & {
35
+ source: MarketArchiveSource;
34
36
  captureBundleId: string;
35
37
  feed: CaptureFeed;
36
38
  provider: string;
@@ -38,6 +40,8 @@ export type MarketCaptureContext = MarketArchiveContext & {
38
40
  schemaVersion: string;
39
41
  checksumAlgorithm: string;
40
42
  provenanceComplete: boolean;
43
+ tradingPair?: string;
44
+ sourceSymbol?: string;
41
45
  };
42
46
  export type RawCapture = {
43
47
  rawCaptureId: string;
@@ -0,0 +1,16 @@
1
+ export declare const PREPARATION_CONFORMANCE_FIXTURES: Readonly<{
2
+ fixture_id: "cex-market-data-preparation-conformance/v2";
3
+ legacy_fixture_id: "market-data-vendor-backfill-conformance/v1";
4
+ documents: Readonly<{
5
+ backfill_result: import("./contracts").BackfillJobResultV2Wire;
6
+ canonical_orderbook_export_request: import("./contracts").CanonicalOrderBookExportRequestWire;
7
+ canonical_orderbook_export_result: import("./contracts").CanonicalOrderBookExportResultWire;
8
+ preparation_product_pin: import("./contracts").PreparationProductPinWire;
9
+ }>;
10
+ identities: Readonly<{
11
+ manifest_sha256: string;
12
+ backfill_result_sha256: string;
13
+ selection_sha256: string;
14
+ export_result_sha256: string;
15
+ }>;
16
+ }>;