import type { VCSSSelectorNode } from "../../ast";
import type { AST, RuleContext } from "../../../types";
import type { ParsedQueryOptions } from "../../../options";
export declare class QueryContext {
    elements: AST.VElement[];
    protected readonly document: VueDocumentQueryContext;
    protected constructor(document?: VueDocumentQueryContext);
    queryStep(selectorNode: VCSSSelectorNode): ElementsQueryContext;
    reverseQueryStep(selectorNode: VCSSSelectorNode): ElementsQueryContext;
    filter<S extends AST.VElement>(predicate: (value: AST.VElement) => value is S): ElementsQueryContext;
    split(): ElementsQueryContext[];
}
declare class VueDocumentQueryContext extends QueryContext {
    context: RuleContext;
    options: ParsedQueryOptions;
    docsModifiers: string[];
    constructor(context: RuleContext, options: ParsedQueryOptions);
}
declare class ElementsQueryContext extends QueryContext {
    constructor(elements: AST.VElement[] | IterableIterator<AST.VElement>, document: VueDocumentQueryContext);
}
export declare function createQueryContext(context: RuleContext, options: ParsedQueryOptions): QueryContext;
export {};
