import { PercentageRollout, ScheduledRollout, RingRollout, CanaryRollout, ExperimentRollout, RolloutStage, VariantId, SegmentId } from './types'; /** * Builder for creating rollout configurations. */ export declare class RolloutBuilder { /** * Create a simple percentage rollout. */ static percentage(percentage: number, options?: Partial>): PercentageRollout; /** * Create a scheduled rollout. */ static scheduled(stages: RolloutStage[], options?: { autoAdvance?: boolean; }): ScheduledRollout; /** * Create rollout stages for scheduled rollout. */ static stages(): RolloutStageBuilder; /** * Create a ring-based rollout. */ static ring(rings: Array<{ id: string; name: string; segments: SegmentId[]; priority: number; }>, currentRing: string): RingRollout; /** * Create a canary rollout. */ static canary(canaryPercentage: number, options?: { canarySegment?: SegmentId; autoRollback?: boolean; }): CanaryRollout; /** * Create an experiment rollout. */ static experiment(experimentId: string, allocation: Array<{ variantId: VariantId; percentage: number; }>, options?: { primaryMetric: string; endDate?: Date; }): ExperimentRollout; } /** * Builder for rollout stages. */ export declare class RolloutStageBuilder { private stages; /** * Add a stage. */ stage(name: string, percentage: number, startTime: Date, options?: { minDuration?: number; }): this; /** * Add an internal stage (e.g., employees only). */ internal(startTime: Date): this; /** * Add a beta stage. */ beta(percentage: number, startTime: Date): this; /** * Add a GA (general availability) stage. */ ga(startTime: Date): this; /** * Build the stages. */ build(): RolloutStage[]; }