import { CellRenderer, CellEditor, CellTransformer } from "./grid/cell";
import Grid from "./grid";
export interface MenuItem {
    separator?: boolean;
    disabled?: boolean;
    name?: string;
    icon?: string;
    action?: () => void;
    subMenus?: MenuItem[];
}
export interface GetContextMenuItemsParams {
    row: string;
    column: string;
    grid: Grid;
}
export interface Styles {
    [key: string]: string;
}
export interface CellPosition {
    row: string;
    column: string;
}
export interface Coordinate {
    x: number;
    y: number;
}
export interface Boundary {
    left: boolean;
    right: boolean;
    top: boolean;
    bottom: boolean;
}
export interface RowData {
    id: string;
    [key: string]: any;
}
interface ICellRenderer {
    new (): CellRenderer<unknown>;
}
interface ICellEditor {
    new (): CellEditor<unknown>;
}
export declare type Pinned = 'left' | 'right' | undefined;
export interface BaseColumnOptions {
    width?: number;
    minWidth?: number;
    flex?: number;
    resizable?: boolean;
    pinned?: Pinned;
    transformer?: CellTransformer;
    cellRender?: ICellRenderer;
    cellParams?: any;
    cellEditor?: ICellEditor;
}
export interface ColumnOptions extends BaseColumnOptions {
    field: string;
    headerName?: string;
    readonly?: boolean;
}
export declare type Fillable = 'x' | 'y' | 'xy' | undefined;
export interface GridOptions {
    width?: string;
    height?: string;
    columns: ColumnOptions[];
    defaultColumnOption?: BaseColumnOptions;
    rows: RowData[];
    headerHeight?: number;
    rowHeight?: number;
    preloadRowCount?: number;
    fillable?: Fillable;
    getContextMenuItems?: (params: GetContextMenuItemsParams) => MenuItem[];
}
export {};
