syntax = "proto3"; package kairos.v1; option go_package = "github.com/kairos/proto/kairos/v1"; // Provider represents the exchange/platform source of data enum Provider { PROVIDER_UNSPECIFIED = 0; PROVIDER_KALSHI = 1; PROVIDER_POLYMARKET = 2; PROVIDER_OPINION = 3; PROVIDER_LIMITLESS = 4; PROVIDER_ROBINHOOD = 5; PROVIDER_ORACLE = 6; PROVIDER_EQUITY = 7; PROVIDER_PREDICT_FUN = 8; PROVIDER_HYPERLIQUID = 9; // Hyperliquid perpetuals. Distinct from PROVIDER_HYPERLIQUID, which is the // HIP-4 outcome markets: they share a venue but are different products with // different instrument ids and price scales, and the publisher derives the // NATS subject token from this enum — so folding them together would put // perpetual books in the outcome markets' subject namespace. // 10 and 11 are reserved by services/providers/provider_map.py for // polymarket_perps and kalshi_margin. That registry is the single source of // truth for numeric provider ids, and this enum shares its numbering space, // so this takes the next free slot rather than colliding. PROVIDER_HYPERLIQUID_PERPS = 12; // Matches services/providers/provider_map.py, which reserves 10 for this // venue. That registry is the single source of truth for numeric ids. PROVIDER_POLYMARKET_PERPS = 10; // Kalshi perpetuals, which the venue and the registry both call "margin". // Distinct from PROVIDER_KALSHI in the same way the two Hyperliquid entries // are: a different host, a different book model, and its own NATS subject // namespace. Registry id 11. PROVIDER_KALSHI_MARGIN = 11; } // PriceLevel represents a single price level in an orderbook message PriceLevel { // Price scaled by 10000 (e.g., 6500 = 0.65) int32 price = 1; // Size scaled for precision (depends on provider) int64 size_scaled = 2; } // TradeSide indicates the direction of a trade enum TradeSide { TRADE_SIDE_UNSPECIFIED = 0; TRADE_SIDE_BUY = 1; TRADE_SIDE_SELL = 2; }