import { DoneAware, Renderer } from '../../types';
/**
 * Predefined overlay positions for easy positioning
 */
export type OverlayPosition = "top-left" | "top-center" | "top-right" | "center-left" | "center" | "center-right" | "bottom-left" | "bottom-center" | "bottom-right";
/**
 * Custom positioning with explicit coordinates
 */
export interface OverlayCustomPosition {
    x: number;
    y: number;
}
/**
 * Configuration for a single overlay icon
 */
export interface OverlayIconConfig {
    /** Image source for the overlay icon */
    src: string;
    /** Size of the overlay icon (width and height) */
    size: number;
    /** Position of the overlay - either predefined name or custom coordinates */
    position: OverlayPosition | OverlayCustomPosition;
    /** Optional offset from the position in pixels */
    offset?: {
        x?: number;
        y?: number;
    };
    /** Optional opacity (0-1) */
    opacity?: number;
    /** Whether the overlay should always be visible (default: true) */
    persistent?: boolean;
}
/**
 * Configuration for overlay renderer
 */
export interface OverlayRenderDataSpecification {
    /** The base renderer configuration */
    baseRenderer: {
        type: string;
        data: any;
    };
    /** Array of overlay icons to display */
    overlays: OverlayIconConfig[];
    /** Whether overlays should remain visible after base renderer completes (default: true) */
    persistOverlaysOnComplete?: boolean;
}
/**
 * A renderer that wraps another renderer and adds static overlay icons
 * that are not affected by scrolling, scaling, or other transformations.
 */
export declare class OverlayRenderer implements Renderer, DoneAware {
    private baseRenderer;
    private overlayIcons;
    private overlayConfigs;
    private loadedIcons;
    private canvas;
    private ctx;
    private persistOverlaysOnComplete;
    private baseRendererCompleted;
    private completionCallback;
    private hasSignaledCompletion;
    constructor(data: OverlayRenderDataSpecification, rendererFactory: (type: string, data: any) => Renderer);
    private loadOverlayImages;
    private calculateOverlayPosition;
    reset(): void;
    renderFrame(width: number, height: number): void;
    private renderOverlays;
    readPixels(width: number, height: number): Uint8ClampedArray;
    play?(): void;
    pause?(): void;
    dispose?(): void;
    onDone(callback: () => void): void;
    isOneShot?(): boolean;
}
//# sourceMappingURL=overlay-renderer.d.ts.map