export interface ISelector {
    tag?: string;
    id?: string;
    class?: string;
    child?: ISelector;
}
export interface IRootSelector extends ISelector {
    position?: {
        x: number;
        y: number;
    };
}
export interface IQueryResult {
    [K: string]: any;
    getHTMLElement(): HTMLElement | SVGElement;
    getPosition?(): {
        x: number;
        y: number;
    };
    getId(): any;
}
export interface ITagHandler {
    (selector: ISelector, parent: IQueryResult | null): IQueryResult | null;
}
export declare class QueryEngine {
    private handlers;
    static parseValue(selector: ISelector, root: IRootSelector, value: string, modifier: string): ISelector;
    registerTagHandler(tag: string, handler: ITagHandler): {
        dispose: () => void;
    };
    parse(input: string): IRootSelector;
    resolve(selector: ISelector, parent?: IQueryResult | null): IQueryResult | null;
    query(input: string): IQueryResult | null;
    /**
     * Prints a warning mesasge explaining why a query would fail. Used by tagHandlers to provide debugging information about selectors
     * @param message The reason for a query's failure
     */
    warn(message: string): void;
}
