import { GoalLineEnum } from '../enums/goalline.enum';
import { DataType } from '../Field/types';
export declare type Scale<SupportedVizzlyDataTypes> = {
    dataType: DataType;
    key: KeyId | null;
    ordering: 'asc' | 'desc' | null;
    min: SupportedVizzlyDataTypes | null;
    max: SupportedVizzlyDataTypes | null;
};
export declare type Axis<SupportedVizzlyDataTypes, AxisKeys> = {
    ticks: Tick<SupportedVizzlyDataTypes>[];
    scale: Scale<SupportedVizzlyDataTypes>;
    postfix: string;
    prefix: string;
    title: string | null;
} & AxisKeys;
export declare type Tick<DataType> = {
    value: DataType;
    formattedValue: string | null;
    scaleValue: DataType | null;
    key?: string;
};
export declare type ChartOnViewClick = {
    clickedValue: {
        index: number;
        y: {
            key: string;
            value: number;
        };
        x: Tick<string | number | Date | boolean>;
    };
    clickEvent: {
        clientY: number;
        nativeEvent: {
            clientX: number;
            clientY: number;
        };
    };
};
export declare type KeyId = string;
export declare type Operator = string;
export declare type ConditionalFormattingRule = {
    operator: Operator;
    value: any;
    color: string;
    yKey: KeyId;
};
export declare type GoalLine = {
    value: number;
    formattedValue: string | null;
    color: string;
    strokeStyle?: 'dashed' | 'solid';
    strokeWidth: number;
    goalLineType?: GoalLineEnum.FIXED | GoalLineEnum.AVERAGE;
    metricField?: string;
};
export declare type DataItem = {
    value: number | string | null;
    formattedValue: string | null;
    originalValue?: number | string | null;
    displayValue?: string | null;
};
export declare type DateTimeFormatter = {
    formatter: (date: Date) => string;
    description: string;
};
export declare type NumberFormatter = {
    formatter: (number: number | undefined | null, noValueReplacement?: string) => string;
    description: string;
};
export declare type Key = {
    key: KeyId;
    keyFormatted: string;
    dataType: DataType;
};
export declare type ShapeDefinition<T> = {
    yKey: KeyId;
    color: string;
    style: T;
};
export declare type LabelRotationData = {
    angle: number;
    dy: number;
    extraHeight: number;
};
export declare type BaseXAxis = Axis<Date | string | number | boolean, {
    key: KeyId;
    labelRotationData?: LabelRotationData;
}>;
export declare type BaseYAxis = Axis<number, {
    keys: KeyId[];
}>;
export declare type Datum = {
    [keyId: string]: DataItem;
};
export declare type BaseChartRepresentation = {
    keys: {
        [key: KeyId]: Key;
    };
    x: BaseXAxis;
    y: BaseYAxis;
    data: Datum[];
    yDual?: BaseYAxis;
};
export declare type ChartDataDefinition = {
    [keyId: string]: DataItem;
};
