import type { FormulaCell } from '../ts-types/formula';
import type { FormulaEngine } from './formula-engine';
import type { CrossSheetFormulaManager } from './cross-sheet-formula-manager';
export interface DataChangeEvent {
    sheet: string;
    cells: FormulaCell[];
    oldValues: any[];
    newValues: any[];
    timestamp: number;
}
export interface SyncOptions {
    immediate: boolean;
    batchSize: number;
    timeout: number;
}
export declare class CrossSheetDataSynchronizer {
    private formulaEngine;
    private crossSheetManager;
    private changeQueue;
    private isSyncing;
    private syncTimer;
    private options;
    private listeners;
    constructor(formulaEngine: FormulaEngine, crossSheetManager: CrossSheetFormulaManager);
    registerDataChange(sheet: string, cells: FormulaCell[], oldValues: any[], newValues: any[]): void;
    private scheduleSync;
    private processChanges;
    private groupChangesBySheet;
    private syncSheetChanges;
    getCrossSheetDependencies(): Map<string, string[]>;
    validateCrossSheetReferences(): {
        valid: boolean;
        errors: string[];
    };
    private detectCircularDependencies;
    addDataChangeListener(sheet: string, listener: (event: DataChangeEvent) => void): void;
    removeDataChangeListener(sheet: string, listener: (event: DataChangeEvent) => void): void;
    private emitDataChange;
    forceSync(): Promise<void>;
    clearSyncQueue(): void;
    getSyncStatus(): {
        pendingChanges: number;
        isSyncing: boolean;
        lastSyncTime: number | null;
    };
    updateSyncOptions(options: Partial<SyncOptions>): void;
    destroy(): void;
}
