import type { AST, System } from '../../../zero-protocol/src/ast.ts';
import type { Schema } from '../../../zero-types/src/schema.ts';
import type { Format } from '../ivm/view.ts';
import { ExpressionBuilder } from './expression.ts';
import type { CustomQueryID } from './named.ts';
import type { QueryDelegate } from './query-delegate.ts';
import { AbstractQuery, newQuerySymbol } from './query-impl.ts';
import type { HumanReadable, PullRow, Query } from './query.ts';
import type { TypedView } from './typed-view.ts';
export declare function staticQuery<TSchema extends Schema, TTable extends keyof TSchema['tables'] & string>(schema: TSchema, tableName: TTable): Query<TSchema, TTable>;
/**
 * A query that cannot be run.
 * Only serves to generate ASTs.
 */
export declare class StaticQuery<TSchema extends Schema, TTable extends keyof TSchema['tables'] & string, TReturn = PullRow<TTable, TSchema>> extends AbstractQuery<TSchema, TTable, TReturn> {
    constructor(schema: TSchema, tableName: TTable, ast: AST, format: Format, system?: System, customQueryID?: CustomQueryID | undefined, currentJunction?: string | undefined);
    expressionBuilder(): ExpressionBuilder<Schema, string>;
    protected [newQuerySymbol]<TSchema extends Schema, TTable extends keyof TSchema['tables'] & string, TReturn>(_delegate: QueryDelegate | undefined, schema: TSchema, tableName: TTable, ast: AST, format: Format, customQueryID: CustomQueryID | undefined, currentJunction: string | undefined): StaticQuery<TSchema, TTable, TReturn>;
    get ast(): AST;
    materialize(): TypedView<HumanReadable<TReturn>>;
    run(): Promise<HumanReadable<TReturn>>;
    preload(): {
        cleanup: () => void;
        complete: Promise<void>;
    };
}
//# sourceMappingURL=static-query.d.ts.map