import { ElementPaint, StackingContext } from '../stacking-context';
import { Color } from '../../css/types/color';
import { ElementContainer } from '../../dom/element-container';
import { Path } from '../path';
import { BoundCurves } from '../bound-curves';
import { ReplacedElementContainer } from '../../dom/replaced-elements';
import { Renderer } from '../renderer';
import { Context } from '../../core/context';
export type RenderConfigurations = RenderOptions & {
    backgroundColor: Color | null;
    /**
     * Enable/disable image smoothing (anti-aliasing).
     * When disabled, images are rendered with pixel-perfect sharpness (no interpolation).
     * CSS `image-rendering` property on individual elements takes precedence.
     * @default browser default (usually true)
     */
    imageSmoothing?: boolean;
    /**
     * Image smoothing quality level when imageSmoothing is enabled.
     * Higher quality may be slower for large images.
     * Only supported in modern browsers (Chrome 54+, Firefox 94+, Safari 17+).
     * Falls back gracefully in older browsers.
     * @default browser default
     */
    imageSmoothingQuality?: 'low' | 'medium' | 'high';
};
export interface RenderOptions {
    scale: number;
    canvas?: HTMLCanvasElement;
    x: number;
    y: number;
    width: number;
    height: number;
}
export declare class CanvasRenderer extends Renderer {
    canvas: HTMLCanvasElement;
    ctx: CanvasRenderingContext2D;
    private readonly fontMetrics;
    private readonly backgroundRenderer;
    private readonly borderRenderer;
    private readonly effectsRenderer;
    private readonly textRenderer;
    constructor(context: Context, options: RenderConfigurations);
    renderStack(stack: StackingContext): Promise<void>;
    renderNode(paint: ElementPaint): Promise<void>;
    /**
     * Helper method to render text with paint order support
     * Reduces code duplication in line-clamp and normal rendering
     */
    renderReplacedElement(container: ReplacedElementContainer, curves: BoundCurves, image: HTMLImageElement | HTMLCanvasElement): void;
    renderNodeContent(paint: ElementPaint): Promise<void>;
    renderStackContent(stack: StackingContext): Promise<void>;
    mask(paths: Path[]): void;
    path(paths: Path[]): void;
    formatPath(paths: Path[]): void;
    renderNodeBackgroundAndBorders(paint: ElementPaint): Promise<void>;
    render(element: ElementContainer): Promise<HTMLCanvasElement>;
}
