import type { PostgresAccessor } from '../../accessor/postgres.ts';
import type { ColumnInfo, ColumnStats, EnumInfo, ForeignKey } from './client.ts';
type ColumnRole = 'dimensions' | 'time_dimensions' | 'facts';
interface ColumnEntry {
    name: string;
    expr: string;
    data_type: string;
    description?: string;
    is_enum?: boolean;
    sample_values?: string[];
}
interface Relationship {
    left_table: string;
    right_table: string;
    relationship_columns: {
        left_column: string;
        right_column: string;
    }[];
}
export interface EntitySemanticJson {
    name: string;
    schema: string;
    kind: string;
    description?: string;
    primary_key?: string[];
    dimensions?: ColumnEntry[];
    time_dimensions?: ColumnEntry[];
    facts?: ColumnEntry[];
    relationships?: Relationship[];
}
export declare function classifyColumn(name: string, dataType: string, keyColumns: ReadonlySet<string>): ColumnRole;
export declare function buildColumnEntry(column: ColumnInfo, comment: string | undefined, enumInfo: EnumInfo | undefined, stats: ColumnStats | undefined): ColumnEntry;
export declare function buildRelationships(foreignKeys: readonly ForeignKey[], schema: string, name: string): Relationship[];
export declare function buildEntitySemanticJson(accessor: PostgresAccessor, schema: string, name: string, kind: string): Promise<EntitySemanticJson>;
export {};
//# sourceMappingURL=semantic.d.ts.map