import { VideoRenderOptions } from '../../assets/src/index.ts';
interface Bridge {
    onInitialize: (callback: (renderOptions: VideoRenderOptions) => void) => void;
    initialized(): void;
    onBeginFrame(callback: (frameNumber: number, isLast: boolean) => void): void;
    onTriggerCanvas(callback: () => void): void;
    frameReady(frameNumber: number, audioSamples: ArrayBuffer): void;
    error(error: Error): void;
    syncLog(sequence: number, message: string, callback: () => void): void;
}
declare global {
    interface Window {
        EF_FRAMEGEN?: EFFramegen;
        FRAMEGEN_BRIDGE?: Bridge;
        FRAMEGEN_BINDING?: any;
        FRAMEGEN_BINDING_error?: (error: Error) => void;
        EF_RENDERING?: () => boolean;
    }
}
declare class TriggerCanvas {
    private canvas;
    private ctx;
    private canvasInitialized;
    constructor();
    initialize(): void;
    trigger(): void;
}
export declare class EFFramegen {
    time: number;
    frameDurationMs: number;
    audioBufferPromise?: Promise<AudioBuffer>;
    renderOptions?: VideoRenderOptions;
    frameBox: HTMLDivElement;
    BRIDGE: typeof window.FRAMEGEN_BRIDGE;
    triggerCanvas: TriggerCanvas;
    verificationCanvas?: HTMLCanvasElement;
    verificationCtx?: CanvasRenderingContext2D;
    private logSequence;
    frameTasksInProgress: boolean;
    currentFrameNumber: number;
    trace(...args: any[]): void;
    syncLog(...args: any[]): Promise<void>;
    private initializeVerificationCanvas;
    private drawVerificationStrip;
    constructor();
    connectToBridge(): void;
    get showFrameBox(): boolean;
    initialize(renderOptions: VideoRenderOptions): Promise<void>;
    beginFrame(frameNumber: number, isLast: boolean): Promise<string | ArrayBuffer | null | undefined>;
}
export {};
