import type { JsonValue } from '../control-plane';
import type { ReleaseArtifact, ReleaseRecord, ReleaseStrategyCapability } from './types';
export interface ReleaseTrafficTransition {
    step: string;
    trafficPercent: number;
    waitSeconds: number;
    requiresHealth: boolean;
}
export interface ReleaseActivationContext {
    release: ReleaseRecord;
    artifact: ReleaseArtifact;
    previous?: ReleaseRecord;
    transitions: ReleaseTrafficTransition[];
}
export interface ReleaseActivationResult {
    activated: boolean;
    healthy: boolean;
    providerVersion?: string;
    resourceVersions: Record<string, string>;
    transitions: Array<{
        trafficPercent: number;
        healthy: boolean;
        observed: JsonValue;
    }>;
    error?: string;
}
export interface ReleaseActivationDriver {
    name: string;
    capability: (context: Pick<ReleaseActivationContext, 'release' | 'artifact' | 'previous'>) => ReleaseStrategyCapability;
    activate: (context: ReleaseActivationContext) => Promise<ReleaseActivationResult>;
    rollback: (context: ReleaseActivationContext) => Promise<ReleaseActivationResult>;
}
export declare function releaseTrafficPlan(release: ReleaseRecord): ReleaseTrafficTransition[];
export declare function activateImmutableRelease(driver: ReleaseActivationDriver, input: Omit<ReleaseActivationContext, 'transitions'>): Promise<ReleaseActivationResult>;
export declare function rollbackImmutableRelease(driver: ReleaseActivationDriver, input: Omit<ReleaseActivationContext, 'transitions'>): Promise<ReleaseActivationResult>;
