import type { Page } from "playwright";
export declare function slugify(text: string, maxLength?: number): string;
export declare function generateFilename(stepNumber: number, action: string): string;
/**
 * Build the screenshot directory for a run:
 * {baseDir}/{projectName}/{YYYY-MM-DD}/{HH-mm-ss}_{runId-8char}/{scenarioSlug}/
 */
export declare function getScreenshotDir(baseDir: string, runId: string, scenarioSlug: string, projectName?: string, timestamp?: Date): string;
export declare function ensureDir(dirPath: string): void;
interface ScreenshotterOptions {
    baseDir?: string;
    format?: "png" | "jpeg";
    quality?: number;
    fullPage?: boolean;
    projectName?: string;
}
interface CaptureOptions {
    runId: string;
    scenarioSlug: string;
    stepNumber: number;
    action: string;
    description?: string;
}
export interface CaptureResult {
    filePath: string;
    width: number;
    height: number;
    timestamp: string;
    description: string | null;
    pageUrl: string | null;
    thumbnailPath: string | null;
}
export declare function writeRunMeta(dir: string, meta: {
    runId: string;
    url: string;
    model: string;
    status: string;
    startedAt: string;
    scenarioCount: number;
}): void;
export declare function writeScenarioMeta(dir: string, meta: {
    scenarioId: string;
    shortId: string;
    name: string;
    status: string;
    reasoning: string | null;
    durationMs: number;
}): void;
export declare class Screenshotter {
    private readonly baseDir;
    private readonly format;
    private readonly quality;
    private readonly fullPage;
    private readonly projectName;
    private runTimestamp;
    constructor(options?: ScreenshotterOptions);
    capture(page: Page, options: CaptureOptions): Promise<CaptureResult>;
    captureFullPage(page: Page, options: CaptureOptions): Promise<CaptureResult>;
    captureElement(page: Page, selector: string, options: CaptureOptions): Promise<CaptureResult>;
}
export {};
//# sourceMappingURL=screenshotter.d.ts.map