import { Json2CsvTransform } from './transforms'; export declare namespace json2csv { export interface FieldValueCallbackInfo { label: string; default?: string; } export type FieldValueCallback = FieldValueCallbackWithoutField | FieldValueCallbackWithField; export interface FieldValueCallbackWithoutField { (row: T): any; } export interface FieldValueCallbackWithField { (row: T, field: FieldValueCallbackInfo): any; } export interface FieldInfo { label?: string; default?: string; value: string | FieldValueCallback; } export interface NormalizedFieldInfo { label: string; value: FieldValueCallback; } export interface Options { fields?: Array>; ndjson?: boolean; defaultValue?: string; quote?: string; escapedQuote?: string; delimiter?: string; eol?: string; excelStrings?: boolean; header?: boolean; includeEmptyRows?: boolean; withBOM?: boolean; transforms?: Array>; } } declare abstract class JSON2CSVBase { constructor(opts?: json2csv.Options); /** * Check passing opts and set defaults. * * @param {json2csv.Options} opts Options object containing fields, * delimiter, default value, quote mark, header, etc. * @returns {json2csv.Options} preprocessed Options object */ protected preprocessOpts(opts?: json2csv.Options) : json2csv.Options; /** * Check and normalize the fields configuration. * * @param {(string|json2csv.FieldInfo)[]} fields Fields configuration provided by the user * or inferred from the data * @returns {json2csv.NormalizedFieldInfo} preprocessed FieldsInfo array */ preprocessFieldsInfo(fields: Array>): Array>; /** * Create the title row with all the provided fields as column headings * * @returns {string} titles as a string */ protected getHeader(): string; /** * Preprocess each object according to the give opts (unwind, flatten, etc.). * * @param {object} row JSON object to be converted in a CSV row */ protected preprocessRow(row: T): object; /** * Create the content of a specific CSV row * * @param {object} row JSON object to be converted in a CSV row * @returns {string} CSV string (row) */ protected processRow(row: T): string; /** * Create the content of a specfic CSV row cell * * @param {object} row JSON object representing the CSV row that the cell belongs to * @param {object} fieldInfo Details of the field to process to be a CSV cell * @returns {string} CSV string (cell) */ protected processCell(row: T, fieldInfo: json2csv.NormalizedFieldInfo) : string; /** * Create the content of a specfic CSV row cell * * @param {any} value Value to be included in a CSV cell * @returns {string} Value stringified and processed */ protected processValue(value: any): string; } export default JSON2CSVBase;