export interface GridTypeOptions {
    [prop : string] : any;
}

export interface GridType {
    kind : string;
    readOnly? : boolean;
    options? : GridTypeOptions;
    [prop : string] : any;
}

export interface Column {
    Title : string;
    Description : string;
    Visible : boolean;
    ReadOnly? : boolean;
    Type : string | GridType;
    Property : string;
    menu? : Menu[];
    GroupSelect? : boolean;
    Width? : string;
}

export enum SortDirecton {
    None,
    Ascending,
    Descending
}

export interface SelectOption {
    value : string;
    description? : string;
}

export interface Menu {
    icon? : string;
    label : string;
}

export type Option = string | SelectOption;

export interface RowData {
    [key : string] : RowValue;
}

export interface Row {
    visible : boolean;
    readOnly : boolean;
    data : RowData;
}

export interface CellType {
    value : RowValue;
    type : GridType;
}

export type RowValue = number | boolean | string | CellType;
