import { Component } from '../../../shared-logic/src/Component/types';
import { Tick } from '../ChartsV2/types';
import { DataType } from '../Field/types';
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 Axis<SupportedVizzlyDataTypes, AxisKeys> = {
    ticks: Tick<SupportedVizzlyDataTypes>[];
    scale: {
        dataType: DataType;
        key: KeyId | null;
        ordering: 'asc' | 'desc' | null;
        min: SupportedVizzlyDataTypes | null;
        max: SupportedVizzlyDataTypes | null;
    };
    postfix: string;
    prefix: string;
    title: string | null;
} & AxisKeys;
export declare type LegendItemStyleLine = {
    type: 'line';
    strokeDasharray: string | number | null;
    strokeWidth: number;
};
export declare type LegendItem = {
    yKey: KeyId;
    color: string;
    style: LegendItemStyleLine;
};
export declare type Key = {
    key: KeyId;
    keyFormatted: string;
    dataType: DataType;
};
export declare type Legend = {
    keys: {
        [key: KeyId]: Key;
    };
    items: LegendItem[];
};
export declare type ScatterChartRepresentation = {
    keys: {
        [key: KeyId]: Key;
    };
    x: Axis<Date | string | number, {
        key: KeyId;
    }>;
    y: Axis<number, {
        keys: KeyId[];
    }>;
    quadrants: Component.Quadrant.Rule;
    conditionalFormattingRules: ConditionalFormattingRule[];
    goalLines: GoalLine[];
    data: {
        [keyId: string]: DataItem;
    }[];
    lines: LegendItem[];
    groupByKey: string;
    legend: Legend;
};
export declare type DataItem = {
    value: number | string | null;
    formattedValue: string | null;
};
export declare type GoalLine = {
    value: number;
    formattedValue: string | null;
    color: string;
    strokeStyle?: 'dashed' | 'solid';
    strokeWidth: number;
};
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 ScatterStyles = {
    type: 'scatter';
};
