import type { TableStyleType } from '../common-types';
/**
 * Implements a data structure for providing a set of table style
 * definitions. The data structure allows table style retrieval
 * from the set in the manner of an ordered dict. This allows
 * the client to specify the order of table styles (how they appear
 * in the dropdown, which is not usually trivially sorted, alphabetically
 * or otherwise), while retaining direct retrieval of styles by their key.
 */
export default class TableStyleSet {
    private data;
    static builtin: TableStyleSet;
    /**
     * Create a TableStyles object
     *
     * @param {Array} styles An array of styles.
     * When displayed to the user, the order of this
     * array will be preserved.
     *
     * @returns {TableStyles}
     */
    constructor(styles: Array<TableStyleType>);
    /**
     * Return all table style definitions from this set
     * @returns {Array} The table style definitions, in the same order they were defined.
     */
    getValues(): Array<TableStyleType>;
    /**
     * Return all table style keys
     * @returns {Array} The keys
     */
    getKeys(): Array<string>;
    /**
     * Get a table style definition by its key
     * @param {String} key The key for the desired table style
     * @returns {Object} The table style definition requested
     */
    get(key: string): TableStyleType;
    /**
     * Create a new table style set that is a concatenation of the table styles
     * from this set, plus those from the styles param, in that order.
     *
     * Intended to simplify the simple use case that a client would like to append some
     * custom table styles to the `TableStyleSet.builtin` set. For clients that would
     * like to include only some builtin styles, or would like to re-order them, it may
     * be helpful to grab the desired styles with `TableStyleSet.builtin.get(key)`,
     * and then create the TableStyleSet with the desired order manually.
     *
     * @param {(Array|TableStyleSet)} styles The styles to concatenate with this set.
     * @returns {TableStyleSet} The new TableStyleSet
     */
    concat(styles: Array<TableStyleType> | TableStyleSet): TableStyleSet;
}
