import { v4 } from '@sap/ux-specification-types';
import type { ToolBar } from './ToolBar';
import type { PopinLayout } from 'sap/m/library';
/**
 * Deletes a property from the creation mode section of the manifest object,
 * and removes the creation mode section if it becomes empty.
 *
 * @param {unknown} manifestSection - The section of the manifest object containing the creation mode property.
 * @param {object} _configObject - Configuration object (not currently used in the method logic).
 * @param {string} _key - The specific key (not currently used in the method logic).
 * @param {string} manifestKey - The key identifying the property in the creation mode to be deleted.
 */
export declare function deleteCreationModeProperty(manifestSection: unknown, _configObject: object, _key: string, manifestKey: string): void;
/**
 * Exports the creation mode property from a given configuration object to a manifest section.
 *
 * @param {unknown} manifestSection - The section of the manifest where the creation mode property will be updated.
 * @param {unknown} configObject - The configuration object containing the creation mode property.
 * @param {string} key - The key used to identify the specific property within the creation mode section.
 */
export declare function exportCreationModeProperty(manifestSection: unknown, configObject: unknown, key: string): void;
/**
 * Updates the 'creationMode.creationFields' property in the manifestSection object
 * by joining the 'creationFields' array from the configObject into a string separated by commas.
 *
 * @param {object} manifestSection - The object where the 'creationMode.creationFields' property will be updated.
 * @param {object} configObject - The object containing the 'creationFields' array to be used for the update.
 */
export declare function exportCreationModeCreationFieldsProperty(manifestSection: unknown, configObject: unknown): void;
/**
 * Extracts and processes the `creationFields` property from the provided manifest section.
 *
 * @param {object[]} manifestSection - An array of objects representing the manifest section,
 * where the `creationFields` property might exist.
 * @returns {string[] | undefined} An array of strings representing the split values of the `creationFields`
 * property if it exists and is a valid string, otherwise `undefined`.
 */
export declare function importCreationModeCreationFieldsProperty(manifestSection: object[]): string[] | undefined;
/**
 * Sync rule for importing personalization. This function performs an implicit conversion of a former boolean value to the new object representation.
 *
 * @param tableSettings - table settings in manifest, to be analyzed
 * @returns - object representing the value(s) for the config file
 */
export declare function importCreationMode(tableSettings: object): object | undefined;
/**
 * If a view index was changed we need to adapt the order of views in manifest.
 *
 * @param manifestSection - section in manifest comprising the table settings
 * @param configObject - section in config.json describing the table settings
 */
export declare function checkViewOrder(manifestSection: unknown, configObject: unknown): void;
/**
 * Common sync rule function for export of creation for personalization object.
 *
 * @param manifestSection - section in manifest comprising the table settings
 * @param configObject - section in config.json describing the table settings
 * @param key - key or property in config.json
 * @param manifestKey - key or property in manifest
 */
export declare function exportPersonalization(manifestSection: unknown, configObject: unknown, key: string, manifestKey?: string): void;
/**
 * Common sync rule function for export of personalization properties.
 *
 * @param manifestSection - section in manifest comprising the table settings
 * @param configObject - section in config.json describing the table settings
 * @param key - key or property in config.json
 * @param manifestKey - key or property in manifest
 */
export declare function exportPersonalizationProperty(manifestSection: unknown, configObject: unknown, key: string, manifestKey: string): void;
/**
 * Common sync rule function for the deletion of any property of personalization.
 *
 * @param manifestSection - section in manifest comprising the table settings
 * @param _configObject - page config object
 * @param _key - key or property in page config object
 * @param manifestKey - key or property in manifest
 */
export declare function deletePersonalizationProperty(manifestSection: unknown, _configObject: object, _key: string, manifestKey: string): void;
/**
 * Imports enableMassEdit settings from the manifest section.
 *
 * @param manifestSection - The section of the manifest containing multi-edit settings.
 * @returns The enableMassEdit manifest boolean/object or undefined if not present.
 */
export declare function importEnableMassEdit(manifestSection: any): v4.EnableMassEdit;
/**
 * Exports enableMassEdit settings from the config.
 *
 * @param manifestSection - The section of the manifest containing multi-edit settings.
 * @param configObject - section in config.json describing the table settings.
 * @param key - key or property in config.json.
 */
export declare function exportEnableMassEdit(manifestSection: unknown, configObject: unknown, key: string): void;
/**
 * Sync class for PersonalizationType.
 */
export declare class PersonalizationType implements v4.PersonalizationType {
    column?: boolean;
    sort?: boolean;
    filter?: boolean;
}
export declare class ViewPersonalizationType implements v4.ViewPersonalizationType {
    column?: boolean;
    sort?: boolean;
    filter?: boolean;
}
/****************************************
 * Sync class for QuickVariantSelectionV4
 */
export declare class QuickVariantSelectionV4 implements v4.QuickVariantSelectionV4 {
    paths: v4.AnnotationPathAsObject[];
    hideTableTitle?: boolean;
    showCounts?: boolean;
}
/****************************************
 * Sync class for TableSettings
 */
export declare class TableSettings implements v4.TableSettings {
    type?: v4.TableTypeV4;
    personalization?: PersonalizationType | boolean;
    selectionMode?: v4.SelectionMode;
    selectAll?: boolean;
    selectionLimit?: number;
    enableExport?: boolean;
    quickVariantSelection?: QuickVariantSelectionV4;
    condensedTableLayout?: boolean;
    hierarchyQualifier?: string;
    widthIncludingColumnHeader?: boolean;
    disableCopyToClipboard?: boolean;
}
/****************************************
 * Sync class for ALPChartView (renamed due to indirection in app schema)
 */
export declare class ALPChart implements v4.ALPChartView {
    annotationPath: string;
    toolBar?: v4.ViewChartToolBar;
}
export declare class CommonViewSettings implements v4.CommonViewSettings {
    key: string;
    index: number;
    annotationPath: string;
    entitySet?: string;
}
/****************************************
 * Sync class for view table settings
 */
export declare class TableViewSettings extends CommonViewSettings implements v4.TableSettings {
    type?: v4.TableTypeV4;
    personalization?: ViewPersonalizationType | boolean;
    selectionMode?: v4.SelectionMode;
    selectAll?: boolean;
    selectionLimit?: number;
    enableExport?: boolean;
    quickVariantSelection?: QuickVariantSelectionV4;
    condensedTableLayout?: boolean;
    widthIncludingColumnHeader?: boolean;
    hierarchyQualifier?: string;
    disableCopyToClipboard?: boolean;
    enableMassEdit?: v4.EnableMassEdit;
    creationMode?: TableCreationModeLR;
    analyticalConfiguration?: ViewAnalyticalConfiguration;
}
/****************************************
 * Sync class for ALPTableView (renamed due to indirection in app schema)
 */
export declare class ALPTable extends TableViewSettings implements v4.ALPTableView {
    annotationPath: string;
    initialLoad?: v4.InitialLoadType;
    toolBar?: ToolBar;
    columns?: v4.ViewColumns;
}
/****************************************
 * Sync class for LRChartView
 */
export declare class LRChartView extends CommonViewSettings implements v4.LRChartView {
    toolBar?: v4.ViewChartToolBar;
    visible?: boolean;
}
/****************************************
 * Sync class for LRTableView
 */
export declare class LRTableView extends TableViewSettings {
    keepPreviousPersonalization?: boolean;
    visible?: boolean;
    toolBar?: ToolBar;
    analyticalConfiguration?: ViewAnalyticalConfiguration;
    popinLayout?: PopinLayout;
}
export declare class TableViewExtension implements v4.TableViewExtension {
    key: string;
    index: number;
    label?: string;
    template: string;
    visible?: boolean;
}
export declare class AnalyticalConfiguration implements v4.AnalyticalConfiguration {
    aggregationOnLeafLevel?: boolean;
}
export declare class ViewAnalyticalConfiguration implements v4.ViewAnalyticalConfiguration {
    aggregationOnLeafLevel?: boolean;
}
/**
 * LR multi-view: own class for properties on views' level
 */
export declare class MultiTableModeV4 implements v4.MultiTableModeV4 {
    [key: string]: v4.ViewTypeV4;
    showCounts?: boolean;
}
/****************************************
 * Sync class for Table
 */
export declare class Table extends TableSettings implements v4.Table {
    annotationPath?: string;
    views?: MultiTableModeV4;
    initialLoad?: v4.InitialLoadType;
    toolBar?: ToolBar;
    enableMassEdit?: v4.EnableMassEdit;
    creationMode?: TableCreationModeLR;
    analyticalConfiguration?: AnalyticalConfiguration;
    popinLayout?: PopinLayout;
}
export declare class TableCreationModeLR implements v4.TableCreationModeLR {
    name?: v4.TableCreationModeType.NewPage | v4.TableCreationModeType.CreationDialog;
    creationFields?: string[];
    createInPlace?: boolean;
    isCreateEnabled?: string;
}
//# sourceMappingURL=Table.d.ts.map