import { InsertQuery } from '../models/InsertQuery';
import { SimpleSelectQuery } from '../models/SelectQuery';
import { TableDefinitionModel, TableDefinitionRegistry } from '../models/TableDefinitionModel';
import { FixtureTableDefinition } from './FixtureCteBuilder';
/** Options that drive how the insert-to-select transformation resolves table metadata. */
export interface InsertResultSelectOptions {
    /** Optional registry keyed by table name (matching the target table name case). */
    tableDefinitions?: TableDefinitionRegistry;
    /** Optional callback to resolve metadata by full table name (useful for schemified names). */
    tableDefinitionResolver?: (tableName: string) => TableDefinitionModel | undefined;
    /** Optional fixtures that should shadow real tables inside the generated SELECT. */
    fixtureTables?: FixtureTableDefinition[];
    /** Strategy to control behavior when fixtures are missing for real tables. */
    missingFixtureStrategy?: MissingFixtureStrategy;
}
/** Strategy choices for how missing fixtures are handled during transformation. */
export type MissingFixtureStrategy = 'error' | 'warn' | 'passthrough';
export declare class InsertResultSelectConverter {
    private static readonly BASE_CTE_NAME;
    private static readonly DEFAULT_MISSING_FIXTURE_STRATEGY;
    /**
     * Converts an INSERT ... SELECT/VALUES query into a SELECT that mirrors its RETURNING output
     * (or a count(*) when RETURNING is absent).
     */
    static toSelectQuery(insertQuery: InsertQuery, options?: InsertResultSelectOptions): SimpleSelectQuery;
    private static prepareInsertQuery;
    private static extractTargetTableName;
    private static resolveTableDefinition;
    private static convertFixtureToTableDefinition;
    private static buildTableDefinitionMap;
    private static resolveInsertColumns;
    private static getSelectColumnCount;
    private static getFirstSimpleSelectQuery;
    private static buildColumnMetadata;
    private static assertRequiredColumns;
    private static buildReturningSelectItems;
    private static isWildcardReturningItem;
    private static expandReturningWildcard;
    private static buildReturningSelectItem;
    private static buildInsertColumnExpression;
    private static extractColumnName;
    private static getReturningAlias;
    private static getColumnMetadata;
    private static buildColumnExpression;
    private static buildTypeValue;
    private static collectPhysicalTableReferences;
    private static buildFixtureCtes;
    private static filterFixtureTablesForReferences;
    private static collectReferencedTablesFromWithClause;
    private static buildWithClause;
    private static buildCountSelect;
    private static buildFixtureTableMap;
    private static ensureFixtureCoverage;
    private static collectReferencedTables;
    private static collectCteNamesFromWithClause;
    private static addCteNames;
    private static getMissingFixtureTables;
    private static generateUniqueCteName;
    private static normalizeIdentifier;
    private static parseDefaultValue;
    private static resolveDefaultValueExpression;
    private static shouldUseSerialDefault;
    private static referencesSequence;
    private static referencesSelect;
    private static isSequenceFunction;
    private static applyColumnCasts;
    private static applyColumnCastsToSimple;
}
