import { MergeQuery } from '../models/MergeQuery';
import { SimpleSelectQuery } from '../models/SelectQuery';
import { FixtureTableDefinition } from './FixtureCteBuilder';
import type { MissingFixtureStrategy } from './InsertResultSelectConverter';
export interface MergeResultSelectOptions {
    fixtureTables?: FixtureTableDefinition[];
    missingFixtureStrategy?: MissingFixtureStrategy;
}
export declare class MergeResultSelectConverter {
    private static readonly DEFAULT_MISSING_FIXTURE_STRATEGY;
    /**
     * Converts a MERGE query into a SELECT that counts or models the rows affected by each action.
     */
    static toSelectQuery(mergeQuery: MergeQuery, options?: MergeResultSelectOptions): SimpleSelectQuery;
    private static buildActionSelects;
    private static buildSelectForClause;
    private static buildMatchedSelect;
    private static buildNotMatchedSelect;
    private static buildNotMatchedBySourceSelect;
    private static buildNotExistsExpression;
    private static buildActionWhereClause;
    private static combineConditions;
    private static combineSelects;
    private static buildLiteralSelectClause;
    private static buildCountSelectClause;
    private static buildFixtureCtes;
    private static collectPhysicalTableReferences;
    private static filterFixtureTablesForReferences;
    private static collectReferencedTablesFromWithClause;
    private static extractTargetTableName;
    private static buildFixtureTableMap;
    private static ensureFixtureCoverage;
    private static collectReferencedTables;
    private static collectCteNamesFromWithClause;
    private static getMissingFixtureTables;
    private static mergeWithClause;
    private static normalizeIdentifier;
}
