/**
 * TurboCommons is a general purpose and cross-language library that implements frequently used and generic software development tasks.
 *
 * Website : -> https://turboframework.org/en/libs/turbocommons
 * License : -> Licensed under the Apache License, Version 2.0. You may not use this file except in compliance with the License.
 * License Url : -> http://www.apache.org/licenses/LICENSE-2.0
 * CopyRight : -> Copyright 2015 Edertone Advanded Solutions (08211 Castellar del Vallès, Barcelona). http://www.edertone.com
 */
import { TableObject } from './TableObject';
/**
 * CSV data abstraction
 */
export declare class CSVObject extends TableObject {
    /**
     * True if the CSV data was loaded with headers enabled or false if not
     */
    private _hasHeaders;
    /**
     * CSVObject stores all the information for a CSV document and provides easy access to all the
     * columns and values and allows us to operate with it's data easily.
     *
     * @param string A string containing valid csv data
     * @param headers Specifies if the first row of the provided csv data contains the column names or not. It is important to correctly set this value to avoid invalid data
     * @param delimiter The character that is used as the csv delimiter. ',' is set by default
     * @param enclosure The character that is used to escape fields when special characters are found
     *
     * @return The constructed CSVObject
     */
    constructor(string?: string, headers?: boolean, delimiter?: string, enclosure?: string);
    /**
     * Get the value contained at the specified csv cell
     *
     * @param row An integer containing the index for the row that we want to retrieve
     * @param column An integer or a string containing the index or label for the column that we want to retrieve
     *
     * @return The value for the cell that is located at the specified row and column
     */
    getCell(row: number, column: number | string): string;
    /**
     * Set the value for a csv cell
     *
     * @param row An integer containing the index for the row that we want to set
     * @param column An integer or a string containing the index or label for the column that we want to set
     * @param value The value we want to set to the specified cell. Only string values are allowed
     *
     * @see TableObject.setCell
     *
     * @return The assigned value after beign stored into the csv cell
     */
    setCell(row: number, column: number | string, value: any): any;
    /**
     * Check if the provided value contains valid CSV information.
     *
     * @param value Object to test for valid CSV data. Accepted values are: Strings containing CSV data or CSVObject elements
     *
     * @return True if the received object represent valid CSV data. False otherwise.
     */
    static isCSV(value: any): boolean;
    /**
     * Check if two provided CSV structures represent the same data
     *
     * @param csv A valid string or CSVObject to compare with the current one
     *
     * @return true if the two CSV elements are considered equal, false if not
     */
    isEqualTo(csv: any): boolean;
    /**
     * Generate the textual representation for the csv data stored on this object.
     * The output of this method is ready to be stored on a physical .csv file.
     *
     * @param delimiter The character that is used as the csv delimiter. ',' is set by default
     * @param enclosure The character that is used to escape fields when special characters are found
     *
     * @return A valid csv string ready to be stored on a .csv file
     */
    toString(delimiter?: string, enclosure?: string): string;
    /**
     * Auxiliary method that is used to add a new field to the table at the specified position
     *
     * @param currentRow The row where we want to add the field
     * @param currentColumn The column where we want to add the field
     * @param fieldValue The value we want to add to the field
     *
     * @return void
     */
    private _insertField;
    /**
     * Auxiliary method to correctly format a csv field so it can be stored as a string
     *
     * @param field The field that has to be formatted
     * @param delimiter The character that is used as the csv delimiter. ',' is set by default
     * @param enclosure The character that is used to escape fields when special characters are found
     *
     * @return The field correctly scaped and ready to be stored on a string
     */
    private _escapeField;
    /**
     * Auxiliary method that looks for the next delimiter or newline characters on the csv string starting at the specified position.
     *
     * @param string The full csv string to search in.
     * @param currentIndex The csv string starting point for the search
     * @param delimiter The character that is used as the csv delimiter
     *
     * @return The index where the next delimiter or newline character is found
     */
    private _findNextDelimiterIndex;
    /**
     * Auxiliary method to load the first csv row as the column names and avoid duplicate column names
     *
     * @return void
     */
    private _defineHeaders;
}
