import { DataSource } from './liveDataSlides';

/** KPI visualization type. */
export type KPIWidgetType = 'number-tile' | 'gauge' | 'sparkline' | 'mini-bar' | 'mini-pie' | 'progress' | 'trend-indicator' | 'comparison' | 'bullet-chart' | 'traffic-light';
/** Trend direction. */
export type TrendDirection = 'up' | 'down' | 'flat' | 'unknown';
/** Threshold-based status. */
export type KPIStatus = 'good' | 'warning' | 'critical' | 'info' | 'neutral';
/** Color scheme for KPI. */
export interface KPIColorScheme {
    good: string;
    warning: string;
    critical: string;
    info: string;
    neutral: string;
    background: string;
    text: string;
    textMuted: string;
}
/** Default color scheme. */
export declare const DEFAULT_KPI_COLORS: KPIColorScheme;
/** Threshold definition. */
export interface KPIThreshold {
    value: number;
    status: KPIStatus;
    label?: string;
}
/** A single KPI widget. */
export interface KPIWidget {
    /** Unique widget ID. */
    id: string;
    /** Widget title. */
    title: string;
    /** Subtitle / description. */
    subtitle?: string;
    /** Widget type. */
    type: KPIWidgetType;
    /** Grid position: column start (1-based). */
    column: number;
    /** Grid position: row start (1-based). */
    row: number;
    /** Number of columns to span. */
    colSpan?: number;
    /** Number of rows to span. */
    rowSpan?: number;
    /** Data source binding. */
    dataSource?: DataSourceBinding;
    /** Static value (if no data source). */
    value?: number | string;
    /** Previous value for comparison. */
    previousValue?: number;
    /** Target value for progress / bullet chart. */
    targetValue?: number;
    /** Unit label (%, $, etc.). */
    unit?: string;
    /** Decimal precision. */
    precision?: number;
    /** Thresholds for color coding. */
    thresholds?: KPIThreshold[];
    /** Icon name. */
    icon?: string;
    /** Sparkline data points. */
    sparklineData?: number[];
    /** Mini chart data. */
    chartData?: Array<{
        label: string;
        value: number;
    }>;
    /** Gauge configuration. */
    gaugeConfig?: GaugeConfig;
    /** Click action: drill down URL or slide ID. */
    drillDownTarget?: string;
    /** Custom colors. */
    colors?: Partial<KPIColorScheme>;
    /** Animation settings. */
    animation?: KPIAnimation;
}
/** Data source binding for a widget. */
export interface DataSourceBinding {
    /** Data source ID from slide context. */
    sourceId: string;
    /** JSONPath or property path to extract value. */
    valuePath: string;
    /** Path to previous value. */
    previousValuePath?: string;
    /** Path to sparkline data array. */
    sparklineDataPath?: string;
    /** Path to chart data array. */
    chartDataPath?: string;
    /** Refresh interval override. */
    refreshInterval?: number;
}
/** Gauge widget configuration. */
export interface GaugeConfig {
    /** Minimum value. */
    min: number;
    /** Maximum value. */
    max: number;
    /** Gauge style. */
    style: 'semicircle' | 'full-circle' | 'linear' | 'meter';
    /** Show needle. */
    showNeedle?: boolean;
    /** Show ticks. */
    showTicks?: boolean;
    /** Number of ticks. */
    tickCount?: number;
    /** Arc thickness. */
    thickness?: number;
}
/** Animation configuration. */
export interface KPIAnimation {
    /** Enable value count-up animation. */
    countUp?: boolean;
    /** Count-up duration in ms. */
    countUpDuration?: number;
    /** Pulse on threshold breach. */
    pulseOnAlert?: boolean;
    /** Entrance animation. */
    entrance?: 'fadeIn' | 'slideUp' | 'scaleIn' | 'none';
    /** Entrance delay in ms. */
    entranceDelay?: number;
}
/** Dashboard slide configuration. */
export interface DashboardSlideConfig {
    /** Slide ID. */
    id: string;
    /** Dashboard title. */
    title: string;
    /** Number of columns in grid. */
    columns: number;
    /** Number of rows in grid. */
    rows: number;
    /** Gap between widgets (px). */
    gap?: number;
    /** Padding inside slide. */
    padding?: number;
    /** All KPI widgets. */
    widgets: KPIWidget[];
    /** Data sources used by widgets. */
    dataSources?: DataSource[];
    /** Global refresh interval. */
    refreshInterval?: number;
    /** Color scheme. */
    colorScheme?: Partial<KPIColorScheme>;
    /** Background color. */
    background?: string;
    /** Show last updated timestamp. */
    showLastUpdated?: boolean;
    /** Auto-cycle through widgets (for TV mode). */
    autoCycle?: boolean;
    /** Auto-cycle interval in ms. */
    autoCycleInterval?: number;
}
/**
 * Generate dashboard slide from configuration.
 */
export declare function createDashboardSlide(config: DashboardSlideConfig): DashboardSlide;
/** Extended dashboard slide with computed properties. */
export interface DashboardSlide {
    id: string;
    title: string;
    type: 'dashboard';
    layout: {
        columns: number;
        rows: number;
        gap: number;
        padding: number;
    };
    widgets: Array<KPIWidget & {
        colSpan: number;
        rowSpan: number;
    }>;
    dataSources: DataSource[];
    refreshInterval: number;
    colorScheme: KPIColorScheme;
    background: string;
    showLastUpdated: boolean;
    autoCycle: boolean;
    autoCycleInterval: number;
    lastUpdated: string;
}
/**
 * Calculate KPI status based on thresholds.
 */
export declare function computeKPIStatus(value: number, thresholds: KPIThreshold[] | undefined, higherIsBetter?: boolean): KPIStatus;
/**
 * Calculate trend direction.
 */
export declare function computeTrend(current: number, previous: number | undefined): TrendDirection;
/**
 * Calculate percentage change.
 */
export declare function computePercentChange(current: number, previous: number | undefined): number | null;
/**
 * Format KPI value for display.
 */
export declare function formatKPIValue(value: number | string, options?: {
    unit?: string;
    precision?: number;
    compact?: boolean;
    locale?: string;
}): string;
/** Create a revenue KPI widget. */
export declare function createRevenueWidget(overrides?: Partial<KPIWidget>): KPIWidget;
/** Create a customer count widget. */
export declare function createCustomerCountWidget(overrides?: Partial<KPIWidget>): KPIWidget;
/** Create a gauge widget for percentage metrics. */
export declare function createPercentageGauge(overrides?: Partial<KPIWidget>): KPIWidget;
/** Create a sparkline trend widget. */
export declare function createSparklineTrend(overrides?: Partial<KPIWidget>): KPIWidget;
/** Create a traffic light status widget. */
export declare function createTrafficLight(overrides?: Partial<KPIWidget>): KPIWidget;
/** Create a comparison widget (actual vs target). */
export declare function createComparisonWidget(overrides?: Partial<KPIWidget>): KPIWidget;
/** Executive summary dashboard template. */
export declare function createExecutiveDashboard(): DashboardSlideConfig;
/** Operational metrics dashboard template. */
export declare function createOperationalDashboard(): DashboardSlideConfig;
declare const _default: {
    createDashboardSlide: typeof createDashboardSlide;
    createExecutiveDashboard: typeof createExecutiveDashboard;
    createOperationalDashboard: typeof createOperationalDashboard;
    computeKPIStatus: typeof computeKPIStatus;
    computeTrend: typeof computeTrend;
    computePercentChange: typeof computePercentChange;
    formatKPIValue: typeof formatKPIValue;
};
export default _default;
//# sourceMappingURL=dashboardSlide.d.ts.map