import type { Dialect } from '../dialect'; import type { QueryToMaterialize, StructDef, Query } from './malloy_types'; export declare class StageWriter { parent: StageWriter | undefined; withs: string[]; stageNames: string[]; udfs: string[]; pdts: string[]; dependenciesToMaterialize: Record; stagePrefix: string; useCTE: boolean; stageNumber: number; constructor(useCTE: boolean | undefined, parent: StageWriter | undefined); private nextName; getName(id: number): string; root(): StageWriter; addStage(sql: string): string; addUDF(stageWriter: StageWriter, dialect: Dialect, structDef: StructDef): string; addMaterializedQuery(fieldName: string, query: Query, materializatedTablePrefix?: string): string; addPDT(baseName: string, dialect: Dialect): string; combineStages(includeLastStage: boolean): { sql: string; lastStageName: string | undefined; }; /** emit the SQL for all the stages. */ generateSQLStages(): string; generateCoorelatedSubQuery(dialect: Dialect, structDef: StructDef): string; }