import { DisposableGroup, Slot } from '@blockeditor/global/utils';
import type { CssVariableName } from '../../../_common/theme/css-variables.js';
import { type Options, Overlay, type RoughCanvas, ShapeStyle, type XYWH } from '../../../surface-block/index.js';
import type { EdgelessPageBlockComponent } from '../edgeless-page-block.js';
export declare abstract class Shape {
    xywh: XYWH;
    type: string;
    options: Options;
    shapeStyle: ShapeStyle;
    constructor(xywh: XYWH, type: string, options: Options, shapeStyle: ShapeStyle);
    abstract draw(ctx: CanvasRenderingContext2D, rc: RoughCanvas): void;
}
export declare class RectShape extends Shape {
    draw(ctx: CanvasRenderingContext2D, rc: RoughCanvas): void;
}
export declare class TriangleShape extends Shape {
    draw(ctx: CanvasRenderingContext2D, rc: RoughCanvas): void;
}
export declare class DiamondShape extends Shape {
    draw(ctx: CanvasRenderingContext2D, rc: RoughCanvas): void;
}
export declare class EllipseShape extends Shape {
    draw(ctx: CanvasRenderingContext2D, rc: RoughCanvas): void;
}
export declare class RoundedRectShape extends Shape {
    draw(ctx: CanvasRenderingContext2D, rc: RoughCanvas): void;
}
export declare class ShapeFactory {
    static createShape(xywh: XYWH, type: string, options: Options, shapeStyle: ShapeStyle): Shape;
}
declare class ToolOverlay extends Overlay {
    x: number;
    y: number;
    globalAlpha: number;
    protected edgeless: EdgelessPageBlockComponent;
    protected disposables: DisposableGroup;
    get computedStyle(): CSSStyleDeclaration;
    isTransparent(color: string): boolean;
    constructor(edgeless: EdgelessPageBlockComponent);
    dispose(): void;
    render(_ctx: CanvasRenderingContext2D, _rc: RoughCanvas): void;
}
export declare class ShapeOverlay extends ToolOverlay {
    shape: Shape;
    private _getRealStrokeColor;
    private _getRealFillColor;
    constructor(edgeless: EdgelessPageBlockComponent, type: string, options: Options, style: {
        shapeStyle: ShapeStyle;
        fillColor: string;
        strokeColor: string;
    });
    render(ctx: CanvasRenderingContext2D, rc: RoughCanvas): void;
}
export declare class NoteOverlay extends ToolOverlay {
    text: string;
    backgroundColor: string;
    private _getOverlayText;
    private _getRealBackgroundColor;
    constructor(edgeless: EdgelessPageBlockComponent, background: CssVariableName);
    render(ctx: CanvasRenderingContext2D): void;
}
export declare class DraggingNoteOverlay extends NoteOverlay {
    slots: {
        draggingNoteUpdated: Slot<{
            xywh: XYWH;
        }>;
    };
    width: number;
    height: number;
    constructor(edgeless: EdgelessPageBlockComponent, background: CssVariableName);
    render(ctx: CanvasRenderingContext2D): void;
}
export {};
//# sourceMappingURL=tool-overlay.d.ts.map