import type { ControlPlaneOperation, ControlPlaneStore, JsonValue } from '../control-plane';
import type { PreviewInstance } from './types';
import { DurableOperationQueue } from '../queue';
import { PreviewEnvironmentStore } from './store';
export interface PreviewCleanupCandidate {
    preview: PreviewInstance;
    reasons: string[];
}
export interface PreviewCleanupResult {
    candidates: PreviewCleanupCandidate[];
    operations: ControlPlaneOperation[];
    dryRun: boolean;
}
export interface DiscoveredPreviewResource {
    provider: string;
    providerResourceId: string;
    kind: string;
    tags: Record<string, string>;
    observedState?: JsonValue;
    estimatedMonthlyCost?: number;
}
export declare class PreviewEnvironmentService {
    readonly controlPlane: ControlPlaneStore;
    readonly previews: PreviewEnvironmentStore;
    readonly queue: DurableOperationQueue;
    constructor(controlPlane: ControlPlaneStore);
    enqueueDeploy(preview: PreviewInstance, input?: {
        created?: boolean;
        actorId?: string;
        reason?: string;
    }): ControlPlaneOperation;
    enqueueDestroy(preview: PreviewInstance, reason: string, actorId?: string): ControlPlaneOperation;
    cleanup(input?: {
        now?: Date;
        maxAgeHours?: number;
        keepCount?: number;
        dryRun?: boolean;
        actorId?: string;
    }): PreviewCleanupResult;
    reconcile(discovered: DiscoveredPreviewResource[]): {
        matched: string[];
        unknownPreviewResources: string[];
        ignoredUntagged: string[];
    };
}
