import type { ModelDef, StructRef, Argument, PrepareResultOptions, Query, SourceDef, SearchIndexResult, CompiledQuery, TurtleDef } from './malloy_types'; import { StageWriter } from './stage_writer'; import { type Dialect } from '../dialect'; import type { EventStream } from '../runtime_types'; import type { Connection } from '../connection/types'; import type { ModelRootInterface } from './query_node'; import { QueryStruct } from './query_node'; import type { QueryModel, QueryResults } from './query_model_contract'; export declare function makeQueryModel(modelDef: ModelDef | undefined, eventStream?: EventStream): QueryModel; export declare class QueryModelImpl implements QueryModel, ModelRootInterface { readonly eventStream?: EventStream | undefined; dialect: Dialect; modelDef: ModelDef | undefined; structs: Map; constructor(modelDef: ModelDef | undefined, eventStream?: EventStream | undefined); getFinalOutputStruct(query: Query, options: PrepareResultOptions | undefined): SourceDef | undefined; loadModelFromDef(modelDef: ModelDef): void; getStructByName(name: string): QueryStruct; getStructFromRef(structRef: StructRef, sourceArguments: Record | undefined, prepareResultOptions?: PrepareResultOptions): QueryStruct; loadQuery(query: Query, stageWriter: StageWriter | undefined, prepareResultOptions?: PrepareResultOptions, emitFinalStage?: boolean, isJoinedSubquery?: boolean): QueryResults; addDefaultRowLimit(query: Query, defaultRowLimit?: number): { query: Query; addedDefaultRowLimit?: number; }; compileQuery(query: Query, prepareResultOptions?: PrepareResultOptions, finalize?: boolean): CompiledQuery; exploreSearchSQLMap: Map; searchIndex(connection: Connection, explore: string, searchValue: string, limit?: number, searchField?: string | undefined): Promise; } export declare function getResultStructDefForQuery(model: ModelDef, query: Query): SourceDef; export declare function getResultStructDefForView(source: SourceDef, view: TurtleDef): SourceDef;