import { AssertionResult, PageInput } from "./types";
/**
 * Wraps a Playwright `page.screencast` recording for a single video assertion run.
 * Records to a unique file in the configured video directory; the file is
 * intended to be deleted by the caller once assertions complete.
 */
export declare class VideoRecorder {
    private readonly page;
    private started;
    private stopped;
    readonly filePath: string;
    constructor(page: PageInput, filePath?: string);
    start(): Promise<void>;
    stop(): Promise<void>;
    cleanup(): Promise<void>;
}
/**
 * Uploads a video file to Gemini's Files API and polls until ACTIVE.
 * Returns the file resource that can be referenced from `generateContent`.
 */
export declare function uploadVideoToGemini(filePath: string): Promise<{
    name: string;
    uri: string;
    mimeType: string;
}>;
/**
 * Deletes a previously-uploaded Gemini file. Failures are logged but not thrown
 * so they never mask a real test failure.
 */
export declare function deleteGeminiFile(name: string): Promise<void>;
/**
 * Runs an assertion against a video already uploaded to Gemini.
 * Uses Gemini 3 Flash with a structured response schema. Unlike the
 * snapshot/screenshot path, this is a single-model call — Claude does not
 * accept video input, so consensus isn't available here.
 */
export declare function assertVideoFile({ assertion, fileUri, fileMimeType, }: {
    assertion: string;
    fileUri: string;
    fileMimeType: string;
}): Promise<AssertionResult>;
