import { FixedInterval } from '@devexpress/utils/lib/intervals/fixed';
import { SpellCheckerSettings } from '../model/options/spell-checker';
import { SubDocument } from '../model/sub-document';
import { MisspelledInterval, UncheckedInterval } from './intervals';
import { SpellCheckerIntervalsManager } from './intervals-manager';
export interface IMisspelledIntervalsChangesListener {
    setMisspelledSelectionIntervals(intervals: FixedInterval[]): any;
}
export declare abstract class SpellChecker {
    settings: SpellCheckerSettings;
    protected subDocument: SubDocument;
    protected intervalsManager: SpellCheckerIntervalsManager;
    private misspelledIntervalsChangesListener;
    private checkCoreId;
    constructor(misspelledIntervalsChangesListener: IMisspelledIntervalsChangesListener, settings: SpellCheckerSettings);
    dispose(): void;
    initialize(subDocument: SubDocument): void;
    processResponse(checkedIntervals: any[]): void;
    check(): void;
    getSelectedMisspelledInterval(selectionIntervals: FixedInterval[]): MisspelledInterval;
    findNextMisspelledInterval(position: number): MisspelledInterval;
    ignore(misspelledInterval: MisspelledInterval): void;
    ignoreAll(misspelledInterval: MisspelledInterval): void;
    addWord(misspelledInterval: MisspelledInterval): void;
    getIntervalsWithErrorByWord(word: string): FixedInterval[];
    isInProgress(): boolean;
    getMisspelledIntervals(): MisspelledInterval[];
    onModelIntervalChanged(start: number, length: number, isSeparator: boolean): void;
    onCurrentSelectedWordChanged(): void;
    onLayoutChanged(): void;
    protected checkCore(): void;
    protected abstract sendCheckSpellingRequest(uncheckedIntervals: UncheckedInterval[]): any;
    protected abstract sendAddWordRequest(word: string): any;
    updateMisspelledBoxes(): void;
}
export declare enum SpellingErrorType {
    Unknown = 0,
    Misspelling = 1,
    Repeating = 2,
    Syntax = 3
}
export declare class SpellingErrorInfo {
    errorType: SpellingErrorType;
    suggestions: string[];
    word: string;
    constructor(errorType: SpellingErrorType, suggestions: string[], word: string);
}
