/// <reference types="node" />
import { Parser } from "json2csv";
import { json2csv } from "json2csv/JSON2CSVBase";
interface File {
    getFilename(): string;
}
export interface SaveableFile<T> extends File {
    save(data: T): Buffer;
}
export interface ReadableFile<T> extends File {
    read(data: Buffer): Promise<T>;
}
export declare abstract class CsvFile<T> implements SaveableFile<T[]>, ReadableFile<T[]> {
    private readonly parser;
    private static readonly CRLF;
    private static readonly DELIMITER;
    constructor(parser: Parser<T>);
    abstract getFilename(): string;
    protected static createOptions<T>(headers: string[]): json2csv.Options<T>;
    private static spaceHeaders;
    private static addTrailingNewline;
    save(data: T[]): Buffer;
    read(data: Buffer): Promise<T[]>;
}
export {};
