import type { AnnotationPathAsObject, TableSettings } from '.';
import type { Placement, ObjectPageTableColumn as ObjectPageTableColumnIF, ObjectPageTableColumnAction, TableCustomColumn } from '../webapp/manifest/ManifestSettings';
import type { ObjectPageToolBar } from './ObjectPageToolBar';
export interface PositionOP {
    /**
     * The key of another column to be used as placement anchor.
     *
     * @artifactType Manifest
     */
    anchor?: string;
    /**
     * Define the placement, either before or after the anchor column.
     *
     * @artifactType Manifest
     */
    placement: Placement;
}
export interface TableCustomColumnOP extends TableCustomColumn {
    /**
     * Defines the position of the column relative to the anchor column.
     *
     * @artifactType Manifest
     */
    position?: PositionOP;
}
/**
 * Table
 *
 * @isViewNode true
 */
export interface ObjectPageTable extends TableSettingsOP {
    /**
     * Enables full screen mode for this table. This adds a button to the table toolbar which opens the table in a full screen dialog.
     */
    enableFullScreen?: boolean;
    /**
     * In the Object Page tables, it is possible to add several items at a time by copying and pasting data from an excel file, if this property is set to true.
     */
    enablePaste?: boolean;
    /**
     * Tool Bar
     */
    toolBar?: ObjectPageToolBar;
}
/**
 * Table Section
 *
 * @isViewNode true
 */
export interface ObjectPageSectionTableV4 {
    table?: ObjectPageTable;
}
export declare enum TableCreationModeType {
    NewPage = "NewPage",
    Inline = "Inline"
}
export interface TableCreationModeOP {
    /**
     * The name property of TableCreationMode defines the creation mode; possible values are:
     * - NewPage: The create action leads to a new page.
     * - Inline: The create action leads to a new row at the table.
     * The default is "NewPage".
     */
    name?: TableCreationModeType;
    /**
     * In case of inline creation mode you can decide if the new row will be created at the end of the table, or direcly after the currently selected table. The default value is "true"
     */
    createAtEnd?: boolean;
}
export interface PersonalizationTypeOP {
    /**
     * 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 QuickVariantSelectionV4OP {
    /**
     * List of annotation paths referring to SelectionVariant annotations.
     */
    paths: AnnotationPathAsObject[];
    /**
     * You can hide the table and display only the titles of the tabs. To do so, add the hideTableTitle option and set it to true.
     */
    hideTableTitle?: boolean;
    /**
     * You can show the counts of entries of each view. To do so, add the showCounts option and set it to true.
     */
    showCounts?: boolean;
}
export interface GenericColumnsOP {
    [key: string]: ObjectPageTableColumnIF | ObjectPageTableColumnAction | TableCustomColumnOP;
}
export interface TableSettingsOP extends TableSettings {
    /**
     * Defines the page behavior when a new record is created.
     */
    creationMode?: TableCreationModeOP;
    /**
     * 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?: PersonalizationTypeOP;
    /**
     * 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?: QuickVariantSelectionV4OP;
    columns?: GenericColumnsOP;
}
//# sourceMappingURL=ObjectPageTable.d.ts.map