import type { ElementContext } from '../types/change-types';
export type VariantCodeEvent = {
    type: 'variant_started';
    variantIndex: number;
} | {
    type: 'variant_completed';
    variantIndex: number;
    diff: string;
} | {
    type: 'variant_error';
    variantIndex: number;
    error: string;
} | {
    type: 'session_complete';
};
type VariantInput = {
    index: number;
    label: string;
    changeSpec: string;
};
type GenerateParams = {
    sessionId: string;
    projectPath: string;
    instruction: string;
    element: ElementContext;
    variants: VariantInput[];
    /**
     * Diff currently applied to the main project tree (e.g. a finalized variant
     * from another comment). Reversed before worktrees are created so each
     * variant's diff is captured against the user's clean state, then re-applied
     * after generation completes so the iframe doesn't visibly lose state.
     */
    currentAppliedDiff?: string;
    onEvent: (event: VariantCodeEvent) => void;
    abortController?: AbortController;
};
export declare const generateVariantCode: ({ sessionId, projectPath, instruction, element, variants, currentAppliedDiff, onEvent, abortController, }: GenerateParams) => Promise<void>;
export {};
//# sourceMappingURL=VariantCodeGeneratorService.d.ts.map