export declare const SUPPORTED_PROVIDER_HOOK_VERSIONS: Readonly<{ readonly claude: "2.1.215"; readonly codex: "0.145.0-alpha.2"; }>; export declare const ACCEPTED_PROVIDER_HOOK_VERSIONS: Readonly<{ readonly claude: readonly ["2.1.207", "2.1.210", "2.1.211", "2.1.214", "2.1.215"]; readonly codex: readonly ["0.145.0-alpha.2"]; }>; export declare const PROVIDER_HOOK_EVENTS: readonly ["SessionStart", "UserPromptSubmit", "Stop", "StopFailure", "Notification", "SessionEnd"]; export type ProviderName = keyof typeof SUPPORTED_PROVIDER_HOOK_VERSIONS; export type ProviderVersion = (typeof ACCEPTED_PROVIDER_HOOK_VERSIONS)[ProviderName][number]; export type ClaudeProviderVersion = (typeof ACCEPTED_PROVIDER_HOOK_VERSIONS)["claude"][number]; export type ProviderHookEvent = (typeof PROVIDER_HOOK_EVENTS)[number]; export interface ProviderRuntimeBinding { readonly provider: ProviderName; readonly dispatch_id: string; readonly dispatch_version: number; readonly session_id: string; readonly session_version: number; readonly worker_record_id: string; readonly worker_version: number; readonly ticket_id: string; readonly ticket_version: number; readonly ticket_attempt: number; readonly native_session_sha256: string | null; } export interface ProviderBindingResolver { resolve(input: Readonly<{ provider: ProviderName; dispatch_id: string; session_id: string; }>): ProviderRuntimeBinding; } interface ProviderObservationBase extends Record { readonly schema_version: 1; readonly observation_id: string; readonly delivery_id: string; readonly occurrence_id: string; readonly provider: ProviderName; readonly provider_version: ProviderVersion; readonly hook_event: ProviderHookEvent; readonly dispatch_id: string; readonly dispatch_version: number; readonly session_id: string; readonly session_version: number; readonly worker_record_id: string; readonly worker_version: number; readonly ticket_id: string; readonly ticket_version: number; readonly ticket_attempt: number; readonly observed_at: string; readonly native_session_sha256: string; readonly source_sha256: string; readonly terminal_authority: false; } export type ProviderSessionObservation = ProviderObservationBase & { readonly observation_kind: "session"; readonly observation_state: "started" | "stopped"; }; export type ProviderActivityObservation = ProviderObservationBase & { readonly observation_kind: "activity"; readonly observation_state: "idle" | "working"; }; export type ProviderHealthObservation = ProviderObservationBase & { readonly observation_kind: "health"; readonly observation_state: "healthy" | "parked" | "stalled" | "stopped"; }; export type ProviderCompletionObservation = ProviderObservationBase & { readonly observation_kind: "completion-observed"; readonly observation_state: "observed"; }; export type ProviderQuotaObservation = ProviderObservationBase & { readonly observation_kind: "quota"; readonly observation_state: "limited" | "available"; }; export type ProviderObservation = ProviderSessionObservation | ProviderActivityObservation | ProviderHealthObservation | ProviderCompletionObservation | ProviderQuotaObservation; export interface ProviderObservationPublishRequest { readonly eventKind: "provider-observed"; readonly sourceId: string; readonly sourceVersion: number; readonly dedupeKey: string; readonly occurredAt: string; readonly payload: ProviderObservation; } export interface ProviderObservationProjectionSink { observeSession(observation: ProviderSessionObservation): T; observeActivity(observation: ProviderActivityObservation): T; observeHealth(observation: ProviderHealthObservation): T; observeCompletion(observation: ProviderCompletionObservation): T; observeQuota(observation: ProviderQuotaObservation): T; } export declare function normalizeProviderHook(options: { readonly packageRoot: string; readonly provider: ProviderName; readonly providerVersion: string; readonly dispatchId: string; readonly sessionId: string; readonly observedAt: string; readonly input: unknown; readonly bindings: ProviderBindingResolver; }): readonly ProviderObservation[]; export declare function parseProviderObservation(value: unknown, schemaPathOrPackageRoot: string): ProviderObservation; export declare function reissueProviderObservationOccurrence(observation: ProviderObservation, occurrenceId: string, packageRoot: string): ProviderObservation; export declare function publishProviderObservations(observations: readonly ProviderObservation[], publish: (request: ProviderObservationPublishRequest) => T): readonly T[]; export declare function projectProviderObservation(observation: ProviderObservation, sink: ProviderObservationProjectionSink): T; export declare function providerNativeSessionSha256(nativeSessionId: string): string; export {};