import type { TableColumn, TableColumnAction, TableCustomColumn, ViewTableColumn, ViewTableColumnAction, ViewTableCustomColumn } from '../webapp/manifest/ManifestSettings';
import type { ToolBar, ViewChartToolBar } from './ToolBar';
export declare enum SelectionMode {
    Multi = "Multi",
    None = "None",
    Single = "Single",
    Auto = "Auto"
}
export declare enum TableTypeV4 {
    ResponsiveTable = "ResponsiveTable",
    GridTable = "GridTable",
    AnalyticalTable = "AnalyticalTable"
}
export declare enum InitialLoadType {
    Disabled = "Disabled",
    Enabled = "Enabled",
    Auto = "Auto"
}
export declare enum DefaultPathType {
    Primary = "primary",
    Secondary = "secondary",
    Both = "both"
}
export interface PersonalizationType {
    /**
     * Defines whether the user can add and remove columns to a given table.
     */
    column?: boolean;
    /**
     * Defines whether the user can sort a given table.
     */
    sort?: boolean;
    /**
     * Defines whether the user can filter data of a given table.
     */
    filter?: boolean;
}
export interface ViewPersonalizationType {
    /**
     * Defines whether the user can add and remove columns to a given table.
     */
    column?: boolean;
    /**
     * Defines whether the user can sort a given table.
     */
    sort?: boolean;
    /**
     * Defines whether the user can filter data of a given table.
     */
    filter?: boolean;
}
export interface AnnotationPathAsObject {
    annotationPath: string;
}
export interface QuickVariantSelectionV4 {
    /**
     * List of annotation paths referring to SelectionVariant annotations.
     */
    paths: AnnotationPathAsObject[];
    /**
     * Determines whether the table title is hidden and the tab titles are displayed.
     */
    hideTableTitle?: boolean;
    /**
     * Determines whether the entry view counts are shown.
     */
    showCounts?: boolean;
}
export interface GenericColumns {
    [key: string]: TableColumn | TableColumnAction | TableCustomColumn;
}
/**
 * View Columns
 *
 * @isViewNode true
 */
export interface ViewColumns {
    [key: string]: ViewTableColumn | ViewTableColumnAction | ViewTableCustomColumn;
}
export interface TableSettings {
    /**
     * Defines the table type. Note: Grid tables, analytical tables, and tree tables aren't rendered on small-screen devices. Responsive tables are shown instead.
     */
    type?: TableTypeV4;
    /**
     * Allows you to enable or disable row selection and choose between single or multiple row selection.
     * - Auto: This type is deprecated. Choose any of the following modes:
     * - Multi (default): This type allows multiple table selections if relevant actions are available in the toolbar.
     * - Single: This type allows single table selection if relevant actions are available in the toolbar.
     * - None: No table selection is possible in display mode.
     *
     * @descriptionSrcURL https://help.sap.com/docs/SAPUI5/4a476671e9bd4e898445a16858d9cf24/116b5d82e8c545e2a56e1b51b8b0a9bd.html?#additional-features-in-sap-fiori-elements-for-odata-v4
     */
    selectionMode?: SelectionMode;
    /**
     * The selectAll configuration overrides the selectionLimit and allows the user to select all the items. When set to true, the select all feature is enabled: a checkbox in the table header is displayed which selects all items when clicked.
     */
    selectAll?: boolean;
    /**
     * You can define how many items can be selected at a time using the selectionLimit.
     */
    selectionLimit?: number;
    /**
     * Defines whether the Export button is displayed in the table toolbar. The default value is true.
     *
     */
    enableExport?: boolean;
    /**
     * With quickVariantSelection you can switch to multiple views (single table mode). It links to a SelectionVariant (filters) or SelectionPresentationVariant (filters and sorters) that you have added to your annotations.
     */
    quickVariantSelection?: QuickVariantSelectionV4;
    /**
     * Determines whether the content density for ui.table is condensed.
     */
    condensedTableLayout?: boolean;
}
export type ViewTypeV4 = LRTableView | LRChartView | TableViewExtension | boolean;
/**
 * Views
 *
 * @isViewNode true
 */
export interface MultiTableModeV4 {
    /**
     * List of annotation paths.
     */
    [key: string]: ViewTypeV4;
    /**
     * You can show the counts of entries of each view. To do so, add the showCounts option and set it to true.
     */
    showCounts?: boolean;
}
/**
 * Chart View
 *
 * @isViewNode true
 */
export interface ALPChartView {
    /**
     * The primary annotation path can be either UI.Chart, UI.PresentationVariant, or UI.SelectionPresentationVariant.
     */
    annotationPath: string;
    /**
     * Chart Toolbar
     *
     * @isViewNode true
     */
    toolBar?: ViewChartToolBar;
}
export interface CommonViewSettings {
    /**
     * Unique tab identifier.
     *
     * @hidden true
     */
    key: string;
    /**
     * @hidden true
     */
    index: number;
    /**
     * The annotationPath refers to a SelectionPresentationVariant or PresentationVariant annotation.
     * To use charts in multiple table mode, define a UI.Chart annotation, including a qualifier, and reference the UI.Chart annotation in your SelectionPresentationVariant or PresentationVariant annotation.
     */
    annotationPath: string;
    /**
     * Each chart can be based on a different entitySet.
     */
    entitySet?: string;
}
/**
 * Chart View
 *
 * @isViewNode true
 */
export interface LRChartView extends CommonViewSettings {
    /**
     * Chart Toolbar
     *
     * @isViewNode true
     */
    toolBar?: ViewChartToolBar;
    /**
     * Defines whether the view is visible or not.
     */
    visible?: boolean;
}
/**
 * Table View
 *
 * @isViewNode true
 */
export interface ALPTableView extends TableSettings {
    /**
     * The secondary annotation path can be either UI.LineItem, UI.PresentationVariant, or UI.SelectionPresentationVariant.
     */
    annotationPath: string;
    /**
     * Determines whether the data in the table is automatically loaded.
     * - Auto (default): Data is loaded automatically if a default filter value has been set in the filter bar.
     * - Enabled: Data is loaded automatically,  as defined by the standard variant.
     * - Disabled: Data is not loaded automatically. Users have to click the Go button.
     */
    initialLoad?: InitialLoadType;
    /**
     * Defines the personalization mode, currently only effective if variant management on page is either set to Page or Control.
     * By default all table settings are enabled. You can change this for the different parts of the table by setting the properties "Column", "Sort" and "Filter" accordingly.
     * Omitting a property is treated as false, this allows apps to avoid getting new features like grouping in upcoming releases.
     */
    personalization?: ViewPersonalizationType | boolean;
    /**
     * Table Toolbar
     */
    toolBar?: ToolBar;
    columns?: ViewColumns;
}
/**
 * Table View Extension
 *
 * @isViewNode true
 */
export interface TableViewExtension {
    /**
     * Unique tab identifier.
     *
     * @hidden true
     */
    key: string;
    /**
     * @hidden true
     */
    index: number;
    /**
     * View title (localization supported).
     *
     * @i18nClassification TIT: Custom view title
     */
    label?: string;
    /**
     * The name contains sap.app.id as a prefix, followed by the path in the app/webapp folder and the name of the XML view.
     */
    template: string;
    /**
     * Defines whether the view is visible.
     */
    visible?: boolean;
}
/**
 * Table View
 *
 * @isViewNode true
 */
export interface LRTableView extends TableSettings {
    /**
     * Unique tab identifier.
     *
     * @hidden true
     */
    key: string;
    /**
     * @hidden true
     */
    index: number;
    /**
     * The annotation path can be either UI.LineItem, UI.PresentationVariant, or UI.SelectionPresentationVariant.
     */
    annotationPath: string;
    /**
     * Each table can be based on a different entitySet.
     */
    entitySet?: string;
    /**
     *  The tab keeps the default LineItem ID (without the key), so the variant is applied to it.
     */
    keepPreviousPersonalization?: boolean;
    /**
     * Defines the personalization mode, currently only effective if variant management on page is either set to Page or Control.
     * By default all table settings are enabled. You can change this for the different parts of the table by setting the properties "Column", "Sort" and "Filter" accordingly.
     * Omitting a property is treated as false, this allows apps to avoid getting new features like grouping in upcoming releases.
     */
    personalization?: ViewPersonalizationType | boolean;
    /**
     * Table Toolbar
     */
    toolBar?: ToolBar;
    /**
     * Columns
     */
    columns?: ViewColumns;
    /**
     * Defines whether the view is visible.
     */
    visible?: boolean;
}
/**
 * Table
 *
 * @isViewNode true
 */
export interface Table extends TableSettings {
    /**
     * The secondary annotation path can be either UI.LineItem, UI.PresentationVariant, or UI.SelectionPresentationVariant.
     */
    annotationPath?: string;
    /**
     * Determines whether the data in the table is automatically loaded.
     * - Auto (default): Data is loaded automatically if a default filter value has been set in the filter bar.
     * - Enabled: Data is loaded automatically, as defined by the standard variant
     * - Disabled: Data is not loaded automatically. Users have to click the Go button.
     */
    initialLoad?: InitialLoadType;
    /**
     * Defines the personalization mode, currently only effective if variant management on page is either set to Page or Control.
     * By default all table settings are enabled. You can change this for the different parts of the table by setting the properties "Column", "Sort" and "Filter" accordingly.
     * Omitting a property is treated as false, this allows apps to avoid getting new features like grouping in upcoming releases.
     */
    personalization?: PersonalizationType | boolean;
    views?: MultiTableModeV4;
    /**
     * Tool Bar
     */
    toolBar?: ToolBar;
    columns?: GenericColumns;
}
//# sourceMappingURL=Table.d.ts.map