import { CellFormatter } from "./cell_formatters";
import { CellEditor } from "./cell_editors";
import { Class } from "../../../core/class";
import * as p from "../../../core/properties";
import { Sort } from "../../../core/enums";
import { View } from "../../../core/view";
import { Model } from "../../../model";
export declare type Column = {
    id: string;
    field: string;
    name: string;
    width?: number;
    formatter?: (...args: any[]) => HTMLElement;
    model?: CellEditor;
    editor?: Class<View>;
    sortable?: boolean;
    resizable?: boolean;
    selectable?: boolean;
    defaultSortAsc?: boolean;
    behavior?: "select" | "selectAndMove";
    cannotTriggerInsert?: boolean;
    cssClass?: string;
    headerCssClass?: string;
};
export declare namespace TableColumn {
    type Attrs = p.AttrsOf<Props>;
    type Props = Model.Props & {
        field: p.Property<string>;
        title: p.Property<string>;
        width: p.Property<number>;
        formatter: p.Property<CellFormatter>;
        editor: p.Property<CellEditor>;
        sortable: p.Property<boolean>;
        default_sort: p.Property<Sort>;
    };
}
export interface TableColumn extends TableColumn.Attrs {
}
export declare class TableColumn extends Model {
    properties: TableColumn.Props;
    constructor(attrs?: Partial<TableColumn.Attrs>);
    static initClass(): void;
    toColumn(): Column;
}
