import type { ControlPlaneRecentEvent, SharedApprovalRecord, SharedSessionRecord } from '../control-plane/index.js';
import type { RuntimeServices } from './services.js';
import type { AutomationJob } from '@pellux/goodvibes-sdk/platform/automation/jobs';
import type { AutomationRun } from '@pellux/goodvibes-sdk/platform/automation/runs';
import type { AutomationRouteBinding } from '@pellux/goodvibes-sdk/platform/automation/routes';
import type { WatcherRecord } from '@pellux/goodvibes-sdk/platform/runtime/store/domains/watchers';
import type { OrchestrationGraphRecord } from '@pellux/goodvibes-sdk/platform/runtime/store/domains/orchestration';
import type { RuntimeCommunicationRecord } from '@pellux/goodvibes-sdk/platform/runtime/store/domains/communication';
import type { ControlPlaneClientRecord } from '@pellux/goodvibes-sdk/platform/runtime/store/domains/control-plane';
import type { UiReadModel } from '@pellux/goodvibes-sdk/platform/runtime/ui-read-models-base';
export interface UiAutomationSnapshot {
    readonly jobs: readonly AutomationJob[];
    readonly runs: readonly AutomationRun[];
    readonly totalJobs: number;
    readonly totalRuns: number;
    readonly activeRunIds: readonly string[];
    readonly totalFailed: number;
    readonly sourceCount: number;
    readonly deliveryTotals: {
        readonly succeeded: number;
        readonly failed: number;
        readonly deadLettered: number;
    };
}
export interface UiRoutesSnapshot {
    readonly bindings: readonly AutomationRouteBinding[];
    readonly bindingIdsBySurface: Readonly<Record<string, readonly string[]>>;
    readonly totalBindings: number;
    readonly activeBindingIds: readonly string[];
    readonly totalResolved: number;
    readonly totalFailures: number;
}
export interface UiWatchersSnapshot {
    readonly watchers: readonly WatcherRecord[];
    readonly totalWatchers: number;
    readonly activeWatcherIds: readonly string[];
    readonly totalDegraded: number;
    readonly totalLagged: number;
}
export interface UiOrchestrationSnapshot {
    readonly graphs: readonly OrchestrationGraphRecord[];
    readonly totalGraphs: number;
    readonly activeGraphIds: readonly string[];
    readonly totalCompletedGraphs: number;
    readonly totalFailedGraphs: number;
    readonly recursionGuardTrips: number;
}
export interface UiCommunicationSnapshot {
    readonly records: readonly RuntimeCommunicationRecord[];
    readonly totalSent: number;
    readonly totalDelivered: number;
    readonly totalBlocked: number;
}
export interface UiControlPlaneSnapshot {
    readonly connectionState: string;
    readonly activeClientIds: readonly string[];
    readonly requestCount: number;
    readonly errorCount: number;
    readonly host: string;
    readonly port: number;
    readonly clients: readonly ControlPlaneClientRecord[];
    readonly approvals: readonly SharedApprovalRecord[];
    readonly sessions: readonly SharedSessionRecord[];
    readonly recentEvents: readonly ControlPlaneRecentEvent[];
}
export interface UiOperationsReadModels {
    readonly automation: UiReadModel<UiAutomationSnapshot>;
    readonly routes: UiReadModel<UiRoutesSnapshot>;
    readonly watchers: UiReadModel<UiWatchersSnapshot>;
    readonly orchestration: UiReadModel<UiOrchestrationSnapshot>;
    readonly communication: UiReadModel<UiCommunicationSnapshot>;
    readonly controlPlane: UiReadModel<UiControlPlaneSnapshot>;
}
export interface UiOperationsReadModelOptions {
    readonly getControlPlaneRecentEvents?: (limit: number) => readonly ControlPlaneRecentEvent[];
}
export declare function createOperationsReadModels(runtimeServices: RuntimeServices, options?: UiOperationsReadModelOptions): UiOperationsReadModels;
//# sourceMappingURL=ui-read-models-operations.d.ts.map