import { Slot } from '@blockeditor/global/utils'; import { Viewport } from '../../page-block/edgeless/utils/viewport.js'; import { type IBound } from '../consts.js'; import type { ElementModel } from '../element-model/base.js'; import type { LayerManager } from '../managers/layer-manager.js'; import { RoughCanvas } from '../rough/canvas.js'; /** * An overlay is a layer covered on top of elements, * can be used for rendering non-CRDT state indicators. */ export declare abstract class Overlay { protected _renderer: Renderer; constructor(); abstract render(ctx: CanvasRenderingContext2D, rc: RoughCanvas): void; setRenderer(renderer: Renderer | null): void; } type EnvProvider = { getVariableColor: (val: string) => string; selectedElements?: () => string[]; }; type RendererOptions = { layerManager: LayerManager; provider: EnvProvider; enableStackingCanvas?: boolean; onStackingCanvasCreated?: (canvas: HTMLCanvasElement) => void; }; export declare class Renderer extends Viewport { canvas: HTMLCanvasElement; ctx: CanvasRenderingContext2D; rc: RoughCanvas; layerManager: LayerManager; provider: Partial; stackingCanvasUpdated: Slot; private _stackingCanvas; private _overlays; private _shouldUpdate; private _disposables; get stackingCanvas(): HTMLCanvasElement[]; constructor(options: RendererOptions); private _initViewport; private _initStackingCanvas; getVariableColor(val: string): string; refresh(): void; /** * Used to attach main canvas, main canvas will always exist * @param container */ attach(container: HTMLElement): void; private _resetSize; private _loop; private _render; private _renderByBound; getCanvasByBound(bound?: IBound, surfaceElements?: ElementModel[], canvas?: HTMLCanvasElement, clearBeforeDrawing?: boolean, withZoom?: boolean): HTMLCanvasElement; addOverlay(overlay: Overlay): void; removeOverlay(overlay: Overlay): void; dispose(): void; } export {}; //# sourceMappingURL=renderer.d.ts.map