import { ISeparators } from "@gooddata/numberjs";
import { AFM } from "@gooddata/typings";
export interface IMenu {
    aggregations?: boolean;
    aggregationsSubMenu?: boolean;
}
export declare type DefaultColumnWidth = "viewport" | "unset";
export interface IColumnSizing {
    defaultWidth?: DefaultColumnWidth;
    growToFit?: boolean;
    columnWidths?: ColumnWidthItem[];
}
export interface IPivotTableConfig {
    columnSizing?: IColumnSizing;
    separators?: ISeparators;
    menu?: IMenu;
    maxHeight?: number;
}
export interface IMenuAggregationClickConfig {
    type: AFM.TotalType;
    measureIdentifiers: string[];
    attributeIdentifier: string;
    include: boolean;
}
export declare enum ColumnEventSourceType {
    AUTOSIZE_COLUMNS = "autosizeColumns",
    UI_DRAGGED = "uiColumnDragged",
    FIT_GROW = "growToFit"
}
export declare enum UIClick {
    CLICK = 1,
    DOUBLE_CLICK = 2
}
export interface IManuallyResizedColumnsItem {
    width: number;
    allowGrowToFit?: boolean;
}
export interface IResizedColumns {
    [columnIdentifier: string]: IManuallyResizedColumnsItem;
}
export declare function isAbsoluteColumnWidth(columnWidth: ColumnWidth): columnWidth is IAbsoluteColumnWidth;
export interface IAbsoluteColumnWidth {
    value: number;
    allowGrowToFit?: boolean;
}
export interface IAutoColumnWidth {
    value: "auto";
}
export declare type ColumnWidth = IAbsoluteColumnWidth | IAutoColumnWidth;
export interface IAttributeColumnWidthItem {
    attributeColumnWidthItem: {
        width: IAbsoluteColumnWidth;
        attributeIdentifier: AFM.Identifier;
    };
}
export interface IMeasureColumnWidthItem {
    measureColumnWidthItem: {
        width: ColumnWidth;
        locators: LocatorItem[];
    };
}
export interface IAllMeasureColumnWidthItem {
    measureColumnWidthItem: {
        width: IAbsoluteColumnWidth;
    };
}
export interface IWeakMeasureColumnWidthItem {
    measureColumnWidthItem: {
        width: IAbsoluteColumnWidth;
        locator: AFM.IMeasureLocatorItem;
    };
}
export declare type ColumnWidthItem = IAttributeColumnWidthItem | IMeasureColumnWidthItem | IAllMeasureColumnWidthItem | IWeakMeasureColumnWidthItem;
declare type LocatorItem = IAttributeLocatorItem | AFM.IMeasureLocatorItem;
interface IAttributeLocatorItem {
    attributeLocatorItem: {
        attributeIdentifier: AFM.Identifier;
        element?: string;
    };
}
export declare function isAttributeColumnWidthItem(columnWidthItem: ColumnWidthItem): columnWidthItem is IAttributeColumnWidthItem;
export declare function isMeasureColumnWidthItem(columnWidthItem: ColumnWidthItem): columnWidthItem is IMeasureColumnWidthItem;
export declare function isAllMeasureColumnWidthItem(columnWidthItem: ColumnWidthItem): columnWidthItem is IAllMeasureColumnWidthItem;
export declare function isWeakMeasureColumnWidthItem(columnWidthItem: ColumnWidthItem): columnWidthItem is IWeakMeasureColumnWidthItem;
export declare function isMeasureLocatorItem(locator: LocatorItem): locator is AFM.IMeasureLocatorItem;
export {};
