import { ColumnHeader } from '../../../types/column-header';
import { DataRow } from '../../../../shared/types/data-row';
import { TempDataManager } from '../../../modules/temp-data-manager';
import { TacoFileParser } from './base-taco-file-parser';
export declare class CsvTacoParser extends TacoFileParser {
    private tempDataManager;
    private extractorId;
    private filename;
    private filepath;
    private columnHeaderMap;
    private headersFromFile;
    private delimiter;
    constructor(tempDataManager: TempDataManager, extractorId: string, filename: string);
    /**
     * Get ColumnHeaders for a CSV file.
     *
     * By default, it returns all column header fields and all columns are typed as string.
     * If columns metadata is set by setColumnHeaders, it will filter the columns with the given columnHeaders,
     * while the column order from the file is still preserved.
     */
    getColumnHeaders(): Promise<ColumnHeader[]>;
    /**
     * Set columns metadata info to the parser. When columnHeaders are set, getColumnHeaders will
     * respect the given info. Otherwise, all fields are assumed as string type.
     *
     * To prevent the method from being misused, this method can be called once, otherwise,
     * it throws an error.
     */
    setColumnHeaders(columnHeaders: ColumnHeader[]): void;
    getDelimiter(): Promise<string>;
    /**
     * Get the set of data rows from the CSV file with the specified limit and offset.
     */
    getDataRows(limit: number, offset: number): Promise<{
        data: DataRow[];
        hasMoreRows: boolean;
    }>;
    private getColumnNamesFromFile;
    getRowCount(): Promise<number>;
}
