import { ColumnType, GridPart } from './enums';
import { FilterOperator, Filter } from './filter.class';
import { Summary, SummaryType } from './summary.class';
/**
* Grid column. Contains:
*   - data field,
*   - caption,
*   - data type,
*   - column width,
*   - width calc params for the columnAutoWidth option,
*   - calculated column width  (when columnAutoWidth option is turned on),
*   - css-classes for column cells
*   - column summaries,
*   - column settings
*/
export declare class Column {
    fieldName: string;
    caption: string;
    width: number;
    type: ColumnType;
    band: string;
    format: string;
    /**
     * Сonstructor
     * @param fieldName Data field to display
     * @param caption   Text for the column header. Если не задано, будет отображено
     * наименование поля.
     * @param width     Ширина (в заданных единицах измерения)
     * @param {ColumnType} dataType  Тип данных (see [[ColumnType]]).
     * Если не задано, принимается равным ColumnType.STRING.
     * @param band=''   Заголовок группы колонок
     * @param format='' Формат вывода значения
     */
    constructor(fieldName: string, caption?: string, width?: number, type?: ColumnType, band?: string, format?: string);
    /**
     * Минимальная ширина в заданных единицах измерения. Ни при каких условиях
     * ширина колонки не будет меньше заданного здесь значения
     */
    autoWidthMin: number;
    /**
     * Приоритет отображения. Если ширины клиентской части грида не хватает,
     * чтобы уместить колонку с её минимальным размером, то первыми перестанут
     * отображаться колонки, приоритет которых минимален.
     * Если приоритет не задан, то они никогда не перестают отображаться.
     */
    autoWidthPriority: number;
    /**
     * Фиксированная ширина колонки. Не будет пересчитываться.
     */
    autoWidthFixed: boolean;
    /**
     * Разрешено ли пользователю изменять ширину колонки
     */
    columnResize: boolean;
    /**
     * Разрешено ли пользователю перемещать эту колонку
     */
    columnReorder: boolean;
    /**
     * Разрешена ли сортировка по колонке
     */
    allowSorting: boolean;
    /**
     * Разрешен ли фильтр по колонке
     */
    allowFilter: boolean;
    /**
     * Показывать колонку в таблице, если по ней произведена группировка
     * (данная опция пока отклчючена)
     */
    showIfGrouped: boolean;
    /**
     * Разрешено ли редактирование данных в этой колонке
     */
    allowEdit: boolean;
    /**
     * Видимость колонки
     */
    visible: boolean;
    /**
     * Список итогов колонки
     */
    readonly summaries: Summary[];
    /**
     * Признак того, что колонка является временной при перемещении
     */
    temp: boolean;
    /**
     * В какой части грида находится колонка. По умолчанию - в основной центральной
     * части.
     */
    fixed: GridPart;
    /**
     * Расчетная ширина при отображении
     */
    displayedWidth: number;
    /**
     * Расчетная ширина заголовка колонки
     */
    headerWidth: number;
    /**
     * Ширина при отображении с единицей измерения
     */
    displayedWidthU: string;
    /**
     * Ширина заголовка с единицей измерения
     */
    displayedHeaderWidth: string;
    /**
     * Отображаемое поле.
     * Если задано, то вместо заданного в свойстве [fieldName] поля отображается это.
     * Например, чтобы сортировка и фильтры производились по значению,
     * а отображалось отформатированное значение.
     * Также используется, когда к какому-то идентификатору привязано текстовое значение.
     * При редактировании отображается исходное значение.
     */
    displayField: string;
    /**
     * Поле, содержащее ссылку для полей с dataType = ColumnType.REFERENCE
     */
    referenceField: string;
    /**
     * Target of the
     */
    referenceTarget: string;
    /**
     * Общий класс для всех ячеек колонки
     */
    class: string;
    /**
     * Поле, из которого можно получить класс ячейки конкретной строки
     */
    classField: string;
    /**
     * Тип компонента, который будет вставлен во все ячейки колонки вместо
     * значения (см. Cell components)
     */
    cellComponentType: any;
    /**
     * Тип компонента, который будет использован как редактор для ячеек этой колонки
     */
    editorComponentType: any;
    /**
     * Тип компонента, который будет использован как фильтр
     */
    filterComponentType: any;
    /**
     * Чекбокс, находящийся в заголовке отмечен
     */
    private _checked?;
    /**
     * Источник данных для выпадающего списка при редактировании.
     * Ожидается массив или Observable
     */
    optionsData: any;
    /**
     * Список колонок выпадающего списка при редактировании
     * Если не задан, то будет создана одна колонка с полем name.
     */
    optionsColumns: Column[];
    /**
     * Узначем, отмечен ли чекбокс в заголовке колонки
     */
    readonly isChecked: boolean;
    /**
     * Устанавливаем, отмечен ли чекбокс в заголовке колонки
     */
    setChecked(v: boolean): void;
    /**
     * Является ли колонка
     */
    readonly isCheckbox: boolean;
    /**
     * Содержит ли колонка числовые значения
     */
    readonly isNumeric: boolean;
    /**
     * Содержит ли колонка boolean значения
     */
    readonly isBoolean: boolean;
    /**
     * Может ли в значении колонки находиться текстовое содержимое
     * @return True, если может
     */
    readonly isText: boolean;
    /**
     * Можно ли пользователю менять порядок этой колонки (перетаскивание мышью за
     * заголовок колонки)
     * @return True, если можно
     */
    readonly canReorder: boolean;
    /**
     * Можно ли пользователю менять ширину колонки
     * @return True, если можно
     */
    readonly canResize: boolean;
    /**
     * Создание фильтра для колонки перед его редактированием.
     * @param  v Значение по умолчанию (берется из выделенной строки, если есть)
     * @return Фильтр для колонки
     */
    createFilter(v: any, operator?: FilterOperator): Filter;
    /**
     * Добавление итога по колонке
     * @param  t {SummaryType} Тип суммирования
     * @return {Summary} Вся необходимая информация для подсчета итогов
     */
    addSummary(t: SummaryType): void;
    /**
     * Изменение итога по колонке. Добавляет или удаляет или изменяет
     * итог по колонке.
     * @param  t  {SummaryType} Тип суммирования
     * @param  a  {Summary} Текущее суммирование. Если не задан, то удаляются все имеющиеся
     * итоги. Если задано, то это суммирование заменяется на новое, или удаляется в случае,
     * если тип суммирования не задан
     */
    setSummary(t: SummaryType, a?: Summary): void;
    clearSummaries(): void;
    /**
     * Клонирование колонки
     * @return Возвращает новый instance класса Column с такими же свойствами, что и текущая колонка
     */
    clone(): Column;
}
