import type { Node } from '../document';
import type { Designer } from './designer';
export declare enum SELECTION_EVENT {
    CHANGE = "selection:change"
}
export declare class Selection {
    readonly designer: Designer;
    private emitter;
    private accessor _selected;
    get currentDocument(): import("..").Document;
    constructor(designer: Designer);
    get selected(): string[];
    select(id: string): void;
    selectAll(ids: string[]): void;
    clear(): void;
    /**
     * tidy selected ids(remove invalid ids)
     */
    tidy(): void;
    add(id: string): void;
    has(id: string): boolean;
    remove(id: string): void;
    containsNode(node: Node, excludeRoot?: boolean): boolean;
    getNodes(): Node[];
    getTopNodes(includeRoot?: boolean): Node<import("..").NodeSchema>[];
    onSelectionChange(listener: (ids: string[]) => void): () => void;
}
