import type { CellCoord, CellRange, CellValue } from './base';
export interface SortInfo {
    field: string;
    order: 'asc' | 'desc';
    col: number;
}
export interface FilterInfo {
    col: number;
    conditions: FilterCondition[];
}
export interface FilterCondition {
    type: 'equals' | 'contains' | 'greater_than' | 'less_than' | 'between';
    value: string | number | [number, number];
}
export interface Range {
    startRow: number;
    endRow: number;
    startCol: number;
    endCol: number;
}
export declare enum VTableSheetEventType {
    FORMULA_CALCULATE_START = "formula_calculate_start",
    FORMULA_CALCULATE_END = "formula_calculate_end",
    FORMULA_ERROR = "formula_error",
    FORMULA_DEPENDENCY_CHANGED = "formula_dependency_changed",
    FORMULA_ADDED = "formula_added",
    FORMULA_REMOVED = "formula_removed",
    DATA_LOADED = "data_loaded",
    SPREADSHEET_READY = "spreadsheet_ready",
    SPREADSHEET_DESTROYED = "spreadsheet_destroyed",
    SPREADSHEET_RESIZED = "spreadsheet_resized",
    SHEET_ADDED = "sheet_added",
    SHEET_REMOVED = "sheet_removed",
    SHEET_RENAMED = "sheet_renamed",
    SHEET_ACTIVATED = "sheet_activated",
    SHEET_DEACTIVATED = "sheet_deactivated",
    SHEET_MOVED = "sheet_moved",
    SHEET_VISIBILITY_CHANGED = "sheet_visibility_changed",
    IMPORT_START = "import_start",
    IMPORT_COMPLETED = "import_completed",
    IMPORT_ERROR = "import_error",
    EXPORT_START = "export_start",
    EXPORT_COMPLETED = "export_completed",
    EXPORT_ERROR = "export_error",
    CROSS_SHEET_REFERENCE_UPDATED = "cross_sheet_reference_updated",
    CROSS_SHEET_FORMULA_CALCULATE_START = "cross_sheet_formula_calculate_start",
    CROSS_SHEET_FORMULA_CALCULATE_END = "cross_sheet_formula_calculate_end"
}
export declare const WORKSHEET_EVENT_TYPES: readonly ["formula_calculate_start", "formula_calculate_end", "formula_error", "formula_dependency_changed", "formula_added", "formula_removed", "data_loaded", "data_sorted", "data_filtered"];
export declare const SPREADSHEET_EVENT_TYPES: readonly ["spreadsheet_ready", "spreadsheet_destroyed", "spreadsheet_resized", "sheet_added", "sheet_removed", "sheet_renamed", "sheet_activated", "sheet_deactivated", "sheet_moved", "sheet_visibility_changed", "import_start", "import_completed", "import_error", "export_start", "export_completed", "export_error", "cross_sheet_reference_updated", "cross_sheet_formula_calculate_start", "cross_sheet_formula_calculate_end"];
export interface SheetActivatedEvent {
    sheetKey: string;
    sheetTitle: string;
    previousSheetKey?: string;
    previousSheetTitle?: string;
}
export interface SheetResizedEvent {
    sheetKey: string;
    sheetTitle: string;
    width: number;
    height: number;
}
export interface FormulaCalculateEvent {
    sheetKey: string;
    formulaCount?: number;
    duration?: number;
}
export interface FormulaErrorEvent {
    sheetKey: string;
    cell: CellCoord & {
        sheet: string;
    };
    formula: string;
    error: string | Error;
}
export interface FormulaChangeEvent {
    sheetKey: string;
    cell: CellCoord;
    formula?: string;
}
export interface FormulaDependencyChangedEvent {
    sheetKey: string;
}
export interface DataSortedEvent {
    sheetKey: string;
    sortInfo: SortInfo;
}
export interface DataFilteredEvent {
    sheetKey: string;
    filterInfo: FilterInfo;
}
export interface DataLoadedEvent {
    sheetKey: string;
    rowCount: number;
    colCount: number;
}
export interface SheetAddedEvent {
    sheetKey: string;
    sheetTitle: string;
    index: number;
}
export interface SheetRemovedEvent {
    sheetKey: string;
    sheetTitle: string;
    index: number;
}
export interface SheetRenamedEvent {
    sheetKey: string;
    oldTitle: string;
    newTitle: string;
}
export interface SheetMovedEvent {
    sheetKey: string;
    fromIndex: number;
    toIndex: number;
}
export interface SheetVisibilityChangedEvent {
    sheetKey: string;
    visible: boolean;
}
export interface ImportEvent {
    fileType: 'xlsx' | 'xls' | 'csv';
    sheetCount?: number;
    error?: string | Error;
}
export interface ExportEvent {
    fileType: 'xlsx' | 'csv';
    sheetCount?: number;
    allSheets: boolean;
    error?: string | Error;
}
export interface CrossSheetReferenceEvent {
    sourceSheetKey: string;
    targetSheetKeys: string[];
    affectedFormulaCount: number;
}
export interface RangeDataChangedEvent {
    sheetKey: string;
    range: CellRange;
    changes: Array<{
        row: number;
        col: number;
        oldValue: CellValue;
        newValue: CellValue;
    }>;
}
export interface SpreadSheetEventMap {
    spreadsheet_ready: undefined;
    spreadsheet_destroyed: undefined;
    spreadsheet_resized: {
        width: number;
        height: number;
    };
    sheet_added: SheetAddedEvent;
    sheet_removed: SheetRemovedEvent;
    sheet_renamed: SheetRenamedEvent;
    sheet_activated: SheetActivatedEvent;
    sheet_deactivated: SheetActivatedEvent;
    sheet_moved: SheetMovedEvent;
    sheet_visibility_changed: SheetVisibilityChangedEvent;
    import_start: ImportEvent;
    import_completed: ImportEvent;
    import_error: ImportEvent;
    export_start: ExportEvent;
    export_completed: ExportEvent;
    export_error: ExportEvent;
    cross_sheet_reference_updated: CrossSheetReferenceEvent;
    cross_sheet_formula_calculate_start: undefined;
    cross_sheet_formula_calculate_end: undefined;
}
export interface WorkSheetEventMap {
    formula_calculate_start: FormulaCalculateEvent;
    formula_calculate_end: FormulaCalculateEvent;
    formula_error: FormulaErrorEvent;
    formula_dependency_changed: FormulaDependencyChangedEvent;
    formula_added: FormulaChangeEvent;
    formula_removed: FormulaChangeEvent;
    data_loaded: DataLoadedEvent;
    sheet_added: SheetAddedEvent;
    sheet_removed: SheetRemovedEvent;
    sheet_renamed: SheetRenamedEvent;
    sheet_moved: SheetMovedEvent;
    sheet_activated: SheetActivatedEvent;
    sheet_deactivated: SheetActivatedEvent;
    sheet_visibility_changed: SheetVisibilityChangedEvent;
    import_start: ImportEvent;
    import_completed: ImportEvent;
    import_error: ImportEvent;
    export_start: ExportEvent;
    export_completed: ExportEvent;
    export_error: ExportEvent;
    cross_sheet_reference_updated: CrossSheetReferenceEvent;
    cross_sheet_formula_calculate_start: undefined;
    cross_sheet_formula_calculate_end: undefined;
}
