import '@jsii/check-node/run';
import { Documentable } from '../lib';
export interface JsiiQueryOptions {
    readonly fileName: string;
    readonly expressions: QExpr[];
    readonly closure?: boolean;
    readonly returnTypes?: boolean;
    readonly returnMembers?: boolean;
}
export declare function jsiiQuery(options: JsiiQueryOptions): Promise<ApiElement[]>;
export declare class Predicate {
    private readonly fn;
    constructor(expr?: string);
    apply(context: Record<string, unknown>): boolean;
}
type QExpr = QSelect | QFilter;
/**
 * Select adds elements
 */
interface QSelect {
    readonly op: 'select';
    readonly kind: ApiKind;
    readonly expression?: string;
}
/**
 * Filter retains elements
 */
interface QFilter {
    readonly op: 'filter';
    readonly remove: boolean;
    readonly kind: ApiKind;
    readonly expression?: string;
}
export declare function parseExpression(expr: string): QExpr;
export declare function renderElement(el: ApiElement): string;
export declare function renderDocs(el: ApiElement): string;
declare const VALID_KINDS: readonly ["type", "interface", "class", "enum", "struct", "member", "property", "method", "initializer"];
type ApiKind = (typeof VALID_KINDS)[number];
type ApiElement = Documentable;
export {};
//# sourceMappingURL=jsii-query.d.ts.map