/** * MessageDescriptor: stable runtime contract. * * Every message (event or RPC) has this shape, regardless of validator. * Core reads only these fields; never introspects validator ASTs. * * Fields: * - type: literal string → handler lookup key * - response: MessageDescriptor → only for RPC; validated at registration * - version (optional): rolling upgrades * - __runtime (optional): brand flag (usually "ws-kit-schema") * * The `kind` ("event" | "rpc") is stored in DESCRIPTOR symbol, not on the * interface, to avoid polluting the schema namespace. Use getKind() to read it. * * Invariants enforced at RouteTable.register(): * - RPC must have a response descriptor * - Event must not have a response descriptor */ export interface MessageDescriptor { readonly messageType: string; readonly version?: number; readonly __runtime?: string; readonly response?: MessageDescriptor; } /** * Type guards + assertions (re-exported in guards.ts). * * Uses getKind() to read kind from DESCRIPTOR symbol. * No fallback to obj.kind - strictly reads from DESCRIPTOR. */ export declare function assertMessageDescriptor(obj: unknown): asserts obj is MessageDescriptor; //# sourceMappingURL=message-descriptor.d.ts.map