import { SupportedDbtAdapter, type DbtModelNode } from '../types/dbt';
import { type Explore, type ExploreError, type Table } from '../types/explore';
import { DimensionType } from '../types/field';
import { type CustomGranularity, type LightdashProjectConfig } from '../types/lightdashProjectConfig';
import { type TimeFrames } from '../types/timeFrames';
import { type WarehouseCatalog, type WarehouseSqlBuilder } from '../types/warehouse';
import { type ResolvedAdditionalTimeIntervals, type WeekDay } from '../utils/timeFrames';
export declare const convertTable: (adapterType: SupportedDbtAdapter, model: DbtModelNode, spotlightConfig: LightdashProjectConfig["spotlight"], startOfWeek?: WeekDay | null, disableTimestampConversion?: boolean, customGranularities?: Record<string, CustomGranularity>, allowPartialCompilation?: boolean, additionalTimeIntervals?: ResolvedAdditionalTimeIntervals, granularityLabels?: Partial<Record<TimeFrames, string>>) => Omit<Table, "lineageGraph">;
export type ExplorePostProcessor = (compiledExplores: Explore[], context: {
    model: DbtModelNode;
    meta: Record<string, unknown>;
}) => (Explore | ExploreError)[];
export type ConvertExploresOptions = {
    disableTimestampConversion?: boolean;
    allowPartialCompilation?: boolean;
    postProcessors?: ExplorePostProcessor[];
};
export declare const convertExplores: (models: DbtModelNode[], loadSources: boolean, adapterType: SupportedDbtAdapter, warehouseSqlBuilder: WarehouseSqlBuilder, lightdashProjectConfig: LightdashProjectConfig, options?: ConvertExploresOptions) => Promise<(Explore | ExploreError)[]>;
export declare const attachTypesToModels: (models: DbtModelNode[], warehouseCatalog: {
    [database: string]: {
        [schema: string]: {
            [table: string]: {
                [column: string]: DimensionType;
            };
        };
    };
}, throwOnMissingCatalogEntry?: boolean, caseSensitiveMatching?: boolean) => DbtModelNode[];
export declare const getSchemaStructureFromDbtModels: (dbtModels: DbtModelNode[]) => {
    database: string;
    schema: string;
    table: string;
}[];
/**
 * Extracts the physical column names referenced via `${TABLE}.column` in a
 * field's (metric or dimension) templated sql. These are the columns passed
 * through verbatim by the compiler (${TABLE} resolves to the table alias),
 * so they are never validated against the warehouse catalog anywhere else.
 * Nested/struct access (`${TABLE}.struct.field`) yields the top-level column.
 */
export declare const getReferencedTableColumns: (sql: string) => string[];
/**
 * Walks compiled explores and flags metrics/dimensions whose sql references a
 * `${TABLE}.column` that does not exist in the warehouse catalog. Such fields
 * compile cleanly but fail 100% of the time at query time. Findings are added
 * as non-fatal `MISSING_WAREHOUSE_COLUMN` warnings to the affected table and
 * explore so compile/deploy/validation can surface them.
 *
 * Tables missing from the catalog (ephemeral models, virtual views, or when the
 * catalog was skipped) are left untouched to avoid false positives.
 */
export declare const attachWarehouseColumnWarningsToExplores: (explores: (Explore | ExploreError)[], warehouseCatalog: WarehouseCatalog, caseSensitiveMatching?: boolean) => (Explore | ExploreError)[];
//# sourceMappingURL=translator.d.ts.map