import { Part, IPartContext } from '../../part.js';
import { Transform } from '../../components/transform.js';
export declare abstract class DOMPart<T extends HTMLElement = HTMLElement> extends Part {
    protected _el: T;
    transform: Transform;
    private _rect;
    private _visuals;
    private _canvasScale;
    protected size: {
        width: number;
        height: number;
    };
    constructor();
    onInstall(context: IPartContext): void;
    resize(context: IPartContext): void;
    render(): void;
    renderComponents(ctx: CanvasRenderingContext2D): Promise<void>;
    applyTransform(ctx: CanvasRenderingContext2D): void;
    updateSize(): void;
    /**
     * Actual width, including the scale
     **/
    getCollidableWidth(): number;
    /**
     * Actual height, including the scale
     **/
    getCollidableHeight(): number;
    getCollidableRect(): {
        x: number;
        y: number;
        width: number;
        height: number;
    };
    abstract getElement(): T;
    turnCW(a: number): void;
    turnCCW(a: number): void;
    moveAlong(distance: number): void;
    move(x: number, y: number): void;
    moveTo(x: number, y: number): void;
    setScale(scale: number): void;
    opacity: number;
    readonly x: number;
    readonly y: number;
    readonly scale: number;
    rotation: number;
    onClick(callback: () => void): void;
    dispose(): void;
}
