export type ChartCategory = 'vega' | 'table' | 'kpi' | 'html' | 'map';
export type ChartOptions = {
    title?: string;
    description?: string;
    mark?: string;
    x?: string;
    y?: string;
    sortDirection?: 'asc' | 'desc' | 'none';
    sortAxis?: 'x' | 'y';
    color?: string;
};
export type ChartColumn = {
    name: string;
    sqlSchemaName: string;
    title: string;
    memberType: 'measure' | 'dimension' | 'timeDimension';
    columnType: 'time' | 'number' | 'string' | 'boolean';
    grain?: string;
    format?: (value: string) => string;
    formatString?: string;
    hasDrillMembers?: boolean;
};
export type TableChartColumnConfig = {
    key: string;
    width?: number;
    pinned?: 'left' | 'right';
    hidden?: boolean;
    sortable?: boolean;
    resizable?: boolean;
};
export type TableChartSpec = {
    pivot?: {
        rows?: TableChartColumnConfig[];
        columns?: TableChartColumnConfig[];
        values?: TableChartColumnConfig[];
    } | null;
    pivotInitialized?: boolean;
};
export type TablePivotConfigEntry = string | TableChartColumnConfig;
export declare const normalizePivotConfigEntries: (entries?: TablePivotConfigEntry[], chartColumns?: ChartColumn[]) => TableChartColumnConfig[];
export declare const getPivotConfigKey: (entry: TablePivotConfigEntry) => string;
export type TablePivotSpec = {
    rows?: TablePivotConfigEntry[];
    columns?: TablePivotConfigEntry[];
    values?: TableChartColumnConfig[];
} | null;
export type NormalizedTablePivotSpec = {
    rows?: TableChartColumnConfig[];
    columns?: TableChartColumnConfig[];
    values?: TableChartColumnConfig[];
} | null;
export type DataBinding = {
    type: 'column';
    column: string;
    rowIndex?: number;
    fallback?: string | number | boolean | null;
} | {
    type: 'literal';
    value: string | number | boolean | null;
} | {
    type: 'template';
    template: string;
};
export interface KpiLayoutSettings {
    direction?: 'row' | 'column';
    align?: string;
    justify?: string;
    gap?: string;
    wrap?: boolean;
    style?: string;
}
interface BaseKpiChartItem {
    id?: string;
    title?: string;
    description?: string;
}
export interface KpiNumberChartSpec extends BaseKpiChartItem {
    type: 'KpiNumber';
    value: DataBinding;
    color?: string;
    background?: string;
    padding?: string;
    size?: string;
    align?: 'left' | 'center' | 'right';
    extraProps?: Record<string, string | number | boolean | null | undefined>;
}
export interface KpiComparisonChartSpec extends BaseKpiChartItem {
    type: 'KpiComparison';
    current: DataBinding;
    previous: DataBinding;
    showDifference?: boolean;
    decimals?: number;
    positiveColor?: string;
    negativeColor?: string;
    neutralColor?: string;
    size?: string;
    weight?: string;
    extraProps?: Record<string, string | number | boolean | null | undefined>;
}
export interface KpiProgressBarChartSpec extends BaseKpiChartItem {
    type: 'KpiProgressBar';
    value: DataBinding;
    target?: DataBinding;
    showPercent?: boolean;
    showTarget?: boolean;
    width?: string;
    customGoalEnabled?: boolean;
    customGoalValue?: string | number | null;
    extraProps?: Record<string, string | number | boolean | null | undefined>;
}
export interface KpiSparklineChartSpec extends BaseKpiChartItem {
    type: 'KpiSparkline';
    value?: DataBinding;
    seriesMeasure?: string;
    seriesDimension?: string;
    showValue?: boolean;
    showTrend?: boolean;
    lineColor?: string;
    fillColor?: string;
    lineWidth?: number;
    maxPoints?: number;
    headlineUsesSparklineMeasure?: boolean;
    width?: string;
    height?: string;
    extraProps?: Record<string, string | number | boolean | null | undefined>;
}
export interface KpiHtmlChartSpec extends BaseKpiChartItem {
    type: 'KpiHtml';
    htmlContent?: string;
}
export type KpiChartItemSpec = KpiNumberChartSpec | KpiComparisonChartSpec | KpiProgressBarChartSpec | KpiSparklineChartSpec | KpiHtmlChartSpec;
export interface KpiChartSpec {
    layout?: KpiLayoutSettings;
    charts?: KpiChartItemSpec[];
}
export interface HtmlChartSpec {
    htmlContent?: string;
}
export interface MapChartSpec {
    mapType?: 'choropleth' | 'bubble';
    mapStyle?: string;
    latitudeField?: string;
    longitudeField?: string;
    sizeField?: string;
    colorField?: string;
    colorMode?: 'default' | 'palette' | 'column';
    colorPalette?: string;
    defaultColor?: string;
    tooltipFields?: string[];
    sizeRange?: [number, number];
    center?: [number, number];
    zoom?: number;
    projection?: 'globe' | 'mercator';
}
export interface ChartDataRow {
    [key: string]: any;
}
export interface ArrayDataRow {
    [key: string]: any;
}
export interface ObjectDataRow {
    [key: string]: any;
}
export interface DataValue {
    value: any;
    isArray: boolean;
    isObject: boolean;
}
export type VegaLiteEncoding = {
    field?: string;
    type?: 'nominal' | 'quantitative' | 'temporal' | 'ordinal';
    title?: string;
    sort?: string | null | {
        [key: string]: any;
    };
    scale?: {
        range?: string[];
        [key: string]: any;
    };
    legend?: null | {
        [key: string]: any;
    };
    aggregate?: string;
    timeUnit?: string;
    axis?: any;
    format?: string;
    [key: string]: any;
};
export type VegaLiteSpec = {
    encoding?: {
        x?: VegaLiteEncoding;
        y?: VegaLiteEncoding;
        color?: VegaLiteEncoding;
        tooltip?: VegaLiteEncoding[] | VegaLiteEncoding;
        [key: string]: any;
    };
    mark?: string | {
        type: string;
        [key: string]: any;
    };
    title?: string;
    description?: string;
    layer?: any[];
    config?: any;
    data?: any;
    transform?: any[];
    resolve?: any;
    [key: string]: any;
};
export {};
//# sourceMappingURL=chart.d.ts.map