import IController from './IController';
import IMark from './IMark';
declare enum TypeSpanData {
    Text = 0,
    Mark = 1,
    Selection = 2,
    Meta = 3
}
declare type SpanControllerCbk = (event: Event, spanData: SpanData, controller: IController) => void;
declare class SpanData {
    charRange: [number, number];
    key: string;
    cssClasses: string[];
    subjects: string[];
    spanControllerEvents: {
        [eventName: string]: SpanControllerCbk;
    };
    text: string;
    constructor(charRange: [number, number], key: string, cssClasses: string[], subjects: string[], spanControllerEvents: {
        [eventName: string]: SpanControllerCbk;
    }, text: string);
    clone(): SpanData;
}
interface SpanDataArgs {
    charRange: [number, number];
    spanText: string;
    marks?: IMark[];
}
declare function createSpanData(typeSpanData: TypeSpanData, args: SpanDataArgs): SpanData;
declare function TextSpanData(charRange: [number, number], spanText: string): SpanData;
declare function MarkSpanData(charRange: [number, number], spanText: string, marks?: IMark[]): SpanData;
declare function SelectionSpanData(charRange: [number, number], spanText: string): SpanData;
declare function MetaStringSpanData(charRange: [number, number], spanText: string): SpanData;
export { SpanData as default, SpanControllerCbk, TypeSpanData, createSpanData, TextSpanData, MarkSpanData, SelectionSpanData, MetaStringSpanData };
