import type { IObjectMatrixPrimitiveType, IRange, ObjectMatrix } from '@univerjs/core';
export type ISparklinesModel = Map<string, Map<string, Map<string, ISparklineGroup>>>;
export type ISparklineSnapshotJSON = Record<string, Record<string, Record<string, ISparklineSerializedGroup>>>;
export interface ISparklineAnchorData {
    groupId: string;
    data: Array<string | number | undefined>;
    max: number;
    min: number;
    highIndex: number;
    lowIndex: number;
    negativeIndexes: number[];
}
export type ISparklineAnchorMap = Map<string, Map<string, {
    matrix: ObjectMatrix<ISparklineAnchorData>;
    extra: Record<string, ISparklineGroupExtra>;
}>>;
export interface ISparklineGroupExtra {
    groupMax: number;
    groupMin: number;
    showMax: number;
    showMin: number;
    startGradient: string;
    endGradient: string;
}
/**
 * Represents the configuration for a sparkline group.
 */
export interface ISparklineGroupConfig {
    /**
     * The type of sparkline
     */
    type?: SparklineTypeEnum;
    /**
     * The axis configuration of the sparkline
     */
    axis?: ISparklineAxisConfig;
    /**
     * The max extremum configuration of the sparkline
     */
    extremumMax?: ISparklineExtremumConfig;
    /**
     * The min extremum configuration of the sparkline
     */
    extremumMin?: ISparklineExtremumConfig;
    /**
     * The theme of the sparkline
     */
    themeType?: SparklineThemeTypeEnum;
    /**
     * How to display non-numeric values
     */
    nonNumShowAs?: SpacialShowAsEnum;
    /**
     * How to display empty values
     */
    emptyShowAs?: SpacialShowAsEnum;
    /**
     * Whether to display hidden cells
     */
    containHiddenCells?: boolean;
    /**
     * The color of the sparkline
     */
    seriesColor?: string;
    /**
     * The point configuration in sparklines
     */
    points?: ISparklinePoints;
    /**
     * The line width of the sparkline
     */
    lineWidth?: number;
    /**
     * Whether to display the gradient of the line chart
     */
    showGradient?: boolean;
    /**
     * Whether to display rounded corners of bar charts and profit and loss charts
     */
    showRadius?: boolean;
}
/**
 * Enumerates various sparkline theme types.
 */
export declare enum SparklineThemeTypeEnum {
    /**
     * Standard theme
     */
    STANDARD = "standard",
    /**
     * Specialty theme
     */
    SPECIALTY = "specialty",
    /**
     * Distinctive theme
     */
    DISTINCTIVE = "distinctive",
    /**
     * Soft theme
     */
    SOFT = "soft",
    /**
     * Fresh theme
     */
    FRESH = "fresh",
    /**
     * Custom theme
     */
    CUSTOM = "custom"
}
export type IExcludeCustom = Exclude<SparklineThemeTypeEnum, SparklineThemeTypeEnum.CUSTOM>;
/**
 * Enumerates various sparkline types.
 */
export declare enum SparklineTypeEnum {
    /**
     * Line Sparkline
     */
    LINE_CHART = 1,
    /**
     * Bar Sparkline
     */
    BAR_CHART = 2,
    /**
     * Profit and Loss Sparkline
     */
    PROFIT_AND_LOSS_CHART = 3,
    /**
     * Pie Sparkline
     */
    PIE_CHART = 4
}
export declare enum SpacialShowAsEnum {
    /**
     * Display as a spacing
     */
    SPACING = "spacing",
    /**
     * Display as a zero value
     */
    ZERO_VALUE = "zero_value",
    /**
     * Display as a connect with line
     */
    CONNECT_WITH_LINE = "connect_with_line"
}
export interface ISparklinePoints {
    /**
     * The configuration of the high point
     */
    highPoint?: ISparklinePointConfig;
    /**
     * The configuration of the low point
     */
    lowPoint?: ISparklinePointConfig;
    /**
     * The configuration of the first point
     */
    firstPoint?: ISparklinePointConfig;
    /**
     * The configuration of the last point
     */
    lastPoint?: ISparklinePointConfig;
    /**
     * The configuration of the negative point
     */
    negativePoint?: ISparklinePointConfig;
    /**
     * The configuration of the markers point
     */
    markersPoint?: ISparklinePointConfig;
}
export interface ISparklinePointConfig {
    /**
     * Display the point
     */
    visible?: boolean;
    /**
     * The color of the point
     */
    color?: string;
}
export interface ISparklineAxisConfig {
    /**
     * The color of the axis
     */
    color?: string;
    /**
     * Display from right to left
     */
    reverse?: boolean;
    /**
     * Display the axis
     */
    visible?: boolean;
}
export interface ISparklineExtremumConfig {
    /**
     * The type of extremum
     */
    type?: SparklineExtremumTypeEnum;
    value?: number;
}
export declare enum SparklineExtremumTypeEnum {
    /**
     * Maximum value in a single sparkline
     */
    SELF_EXTREMUM = 1,
    /**
     * Maximum value in a group of sparklines
     */
    GROUP_EXTREMUM = 2,
    /**
     * Custom maximum value
     */
    CUSTOM_EXTREMUM = 3
}
export interface ISparklinePosition {
    row: number;
    col: number;
}
/**
 * Represents a sparkline group.
 *
 * @property {ISparklineGroupConfig} config - The configuration for this sparkline group.
 * @property {ObjectMatrix<IRange>} sparklines - The matrix of defined ranges for this group.
 */
export interface ISparklineGroup {
    config: ISparklineGroupConfig;
    sparklines: ObjectMatrix<IRange>;
}
export interface ISparklineSerializedGroup {
    config: ISparklineGroupConfig;
    sparklines: IObjectMatrixPrimitiveType<IRange>;
}
export interface IUnitInfo {
    unitId: string;
    subUnitId: string;
}
