import type { CsvAggregateInput, CsvDistinctInput, CsvProfileInput, CsvQueryInput } from './schemas';
import type { WorkspaceFiles } from './file-references';
export declare function queryCsv(workspaceRoot: string, files: WorkspaceFiles, input: CsvQueryInput): Promise<{
    fileName: string;
    relativePath: string;
    columns: string[];
    rowNumbers: number[];
    rows: string[][];
    records: {
        rowNumber: number;
        fileLineNumber: number;
        values: Record<string, string>;
    }[];
    rowCount: number;
    truncated: boolean;
    rowNumberBase: string;
    ambiguity: {
        matchedRows: number;
        message: string;
        suggestedColumns: string[];
        sampleDistinctValues: {
            [k: string]: string[];
        } | undefined;
    } | undefined;
}>;
export declare function profileCsv(workspaceRoot: string, files: WorkspaceFiles, input: CsvProfileInput): Promise<{
    fileName: string;
    relativePath: string;
    columns: string[];
    rowCount: number;
    sampleRows: Record<string, string>[];
    columnProfiles: {
        name: string;
        inferredType: "string" | "number" | "boolean" | "empty" | "date" | "integer";
        emptyCount: number;
        distinctCount: number;
        distinctCountTruncated: boolean;
        sampleValues: string[];
    }[];
    likelyKeyColumns: string[];
    likelyDisambiguatingColumns: string[];
}>;
export declare function distinctCsv(workspaceRoot: string, files: WorkspaceFiles, input: CsvDistinctInput): Promise<{
    fileName: string;
    relativePath: string;
    column: string;
    values: string[];
    distinctCount: number;
    truncated: boolean;
}>;
export declare function aggregateCsv(workspaceRoot: string, files: WorkspaceFiles, input: CsvAggregateInput): Promise<{
    fileName: string;
    relativePath: string;
    rowCount: number;
    functions: ("max" | "min" | "count" | "sum" | "avg")[];
    metrics: string[];
    groupBy: string[] | undefined;
    results: Record<string, string | number | null>[];
    truncated: boolean;
    skippedNonNumeric: Record<string, number>;
}>;
