import { IMenu, IWidget, WidgetOptions } from '@csnext/cs-core';
import { GraphElement, GraphFilter, NodeRule } from '@csnext/cs-data';
import { DocDatasource, ISuggestionEngine } from '../..';
export declare enum GridView {
    list = "list",
    table = "table",
    cards = "cards",
    calendar = "calendar",
    tree = "tree",
    news = "news",
    grid = "grid",
    kanban = "kanban",
    timeline_vertical = "timeline_vertical",
    timeline = "timeline"
}
export declare enum SplitView {
    disabled = "disabled",
    horizontal = "horizontal",
    vertical = "vertical"
}
export declare class NewRelation {
    key?: string;
    toId?: string;
    fromId?: string;
}
export declare class DataGridRelationToggle {
    enabled?: boolean;
    classId?: string;
    relationClassId?: string;
    toId?: string;
    fromId?: string;
    editProperties?: boolean;
}
export declare class DataGridCalendarOptions {
    type?: string;
}
export declare class LinkOptions {
    key?: string;
    id?: string;
    baseTypeId?: string;
}
export declare class DataGridNewsOptions {
    sourceElement?: string;
    sourceProperty?: string;
    dateProperty?: string;
    itemHeight?: number;
}
export declare class DataGridGridOptions {
    display?: 'card' | 'media';
    cols?: number;
    imageProperty?: string;
    contentTypeProperty?: string;
    imagePreviewProperty?: string;
}
export declare class DataGridKanbanOptions {
    columnProperty?: string;
    columnRelation?: string;
    undefinedSupported?: boolean;
    columnPropertySelection?: string[];
    componentView?: boolean;
    columnWidth?: string | number;
    cardHeight?: string | number;
}
export declare class TimelineOptions {
}
export declare type NewRelationDefinition = {
    key: string;
    relationClassId?: string;
    toId?: string;
    fromId?: Function | string;
};
export declare class DataGridTableOptions {
    selectedHeaders?: DataGridHeader[];
    showHeader?: boolean | undefined;
    showRowIcon?: boolean | undefined;
}
export declare class GroupOptions {
    enabled?: boolean;
    property?: string;
}
export declare class DataGridTreeOptions {
    treeStructure?: string[];
    parentProperty?: string;
    baseTreeItem?: GraphElement;
}
export declare class DataGridCardsOptions {
    cardSize?: 'small' | 'medium' | 'large';
}
export declare class DataGridOptions extends WidgetOptions {
    baseType?: string;
    addNodesWithTimeseries?: boolean;
    askForName?: boolean;
    askForNewForm?: boolean;
    graphSelect?: boolean;
    splitView?: SplitView;
    splitWidget?: IWidget;
    splitWidgetLocations?: string[];
    hideFilter?: boolean | undefined;
    hideViewSwitch?: boolean | undefined;
    onSelect?: (element: GraphElement) => void;
    onAfterAdded?: (element: GraphElement) => Promise<any>;
    defaultView: GridView;
    graphPresetId?: string;
    customSort?: (a: GraphElement, b: GraphElement) => number;
    grouping?: GroupOptions;
    canDelete?: boolean | undefined;
    canAdd?: boolean;
    editNewItem?: boolean;
    editorDialog?: IWidget;
    canEdit?: boolean | undefined;
    canSearch?: boolean | undefined;
    canLink?: boolean | undefined;
    searchFilter?: string;
    canSort?: boolean | undefined;
    canGraph?: boolean | undefined;
    canFilter?: boolean | undefined;
    relationToggle?: DataGridRelationToggle;
    calendarOptions?: DataGridCalendarOptions;
    tableOptions?: DataGridTableOptions;
    checkboxProperty?: string;
    syncMode?: 'normal' | 'follow';
    linkOptions?: LinkOptions;
    newsOptions?: DataGridNewsOptions;
    kanbanOptions?: DataGridKanbanOptions;
    timelineOptions?: TimelineOptions;
    treeOptions?: DataGridTreeOptions;
    gridOptions?: DataGridGridOptions;
    cardOptions?: DataGridCardsOptions;
    hideHeader?: boolean;
    nodeRules?: NodeRule[];
    filterProperties?: string[];
    filterProperty?: string;
    filterValue?: any;
    radialProperty?: string;
    horizontalProperty?: string;
    preset?: string;
    filter?: GraphFilter;
    newItem?: any;
    newRelations?: NewRelationDefinition[];
    prominentActions?: string[];
    additionalActions?: IMenu[] | getActions;
    suggestionEngine?: ISuggestionEngine;
}
export declare type getActions = (e: GraphElement, src: DocDatasource) => IMenu[];
export declare class DataGridHeader {
    key?: string;
    width?: string | number;
}
