import type { RecordSelection } from '@univerjs/core';
import type { ISlicerStylesDefinition, ITimelineStylesDefinition } from './style';
export declare enum SlicerSourceKind {
    Table = "table",
    Pivot = "pivot"
}
export declare enum SlicerControlKind {
    Slicer = "slicer",
    Timeline = "timeline"
}
/** A report target is distinct from the source cache family. */
export declare enum SlicerTargetKind {
    Table = "table",
    PivotTable = "pivotTable",
    PivotChart = "pivotChart",
    OwnedPivotChart = "ownedPivotChart"
}
export declare enum SlicerPresentationStatus {
    Ready = "ready",
    Loading = "loading",
    Error = "error"
}
export declare enum SlicerCacheSortOrder {
    Ascending = "ascending",
    Descending = "descending"
}
export declare enum SlicerCacheCrossFilter {
    None = "none",
    ShowItemsWithDataAtTop = "showItemsWithDataAtTop",
    ShowItemsWithNoData = "showItemsWithNoData"
}
export declare enum TimelineLevel {
    Year = 0,
    Quarter = 1,
    Month = 2,
    Day = 3
}
export interface IPivotSlicerReportReference {
    subUnitId: string;
    pivotTableId: string;
}
export interface IOwnedPivotSlicerChartReference {
    subUnitId: string;
    pivotChartId: string;
}
export interface ISlicerCacheOptions {
    sortOrder?: SlicerCacheSortOrder;
    customListSort?: boolean;
    crossFilter?: SlicerCacheCrossFilter;
}
export interface IPivotSlicerCacheDefinition {
    id: string;
    kind: SlicerSourceKind.Pivot;
    name: string;
    sourceName: string;
    sourceFieldId: string;
    data: ISlicerCacheOptions & {
        pivotCacheId: string;
    };
    pivotTables: IPivotSlicerReportReference[];
    ownedPivotCharts?: IOwnedPivotSlicerChartReference[];
    selection: RecordSelection;
    hideItemsWithNoData?: boolean;
}
export interface ITableSlicerCacheDefinition {
    id: string;
    kind: SlicerSourceKind.Table;
    name: string;
    sourceName: string;
    tableSlicerCache: ISlicerCacheOptions & {
        subUnitId: string;
        tableId: string;
        column: string;
    };
    hideItemsWithNoData?: boolean;
}
export type SlicerCacheDefinition = IPivotSlicerCacheDefinition | ITableSlicerCacheDefinition;
export interface ISlicerViewConfig {
    name: string;
    rowHeight: number;
    caption?: string;
    startItem?: number;
    columnCount?: number;
    showCaption?: boolean;
    lockedPosition?: boolean;
    style?: string;
}
/** Sheet resources store rowHeight in EMU; the Canvas presentation adapter converts it to CSS pixels. */
export interface ISlicerDefinition extends ISlicerViewConfig {
    id: string;
    subUnitId: string;
    cacheId: string;
}
export interface ITimelineRange {
    startDate: number;
    endDate: number;
}
export interface ITimelineCacheDefinition {
    id: string;
    name: string;
    sourceName: string;
    sourceFieldId: string;
    pivotCacheId: string;
    pivotTables: IPivotSlicerReportReference[];
    ownedPivotCharts?: IOwnedPivotSlicerChartReference[];
    state: {
        selection?: ITimelineRange;
    };
}
export interface ITimelineViewConfig {
    name: string;
    level: TimelineLevel;
    selectionLevel: TimelineLevel;
    caption?: string;
    style?: string;
    scrollPosition?: number;
    showHeader?: boolean;
    showSelectionLabel?: boolean;
    showTimeLevel?: boolean;
    showHorizontalScrollbar?: boolean;
}
export interface ITimelineDefinition extends ITimelineViewConfig {
    id: string;
    subUnitId: string;
    cacheId: string;
}
export interface ISlicerResource {
    slicerCaches: SlicerCacheDefinition[];
    slicers: ISlicerDefinition[];
    timelineCaches: ITimelineCacheDefinition[];
    timelines: ITimelineDefinition[];
    slicerStyles?: ISlicerStylesDefinition;
    timelineStyles?: ITimelineStylesDefinition;
}
