import { TextUnWrappingAction, TextWrappingAction } from '../actions/Text.actions';
import { BaseWidget, BaseWidgetJSON } from '../BaseWidget';
import { State } from '../State';
import { TypeComponent } from '../TypeComponent';
export declare enum ETextSize {
    s14px = "14",
    s16px = "16",
    s18px = "18",
    s20px = "20",
    s22px = "22",
    s24px = "24",
    s26px = "26",
    s28px = "28",
    s30px = "30",
    s32px = "32",
    s34px = "34",
    s36px = "36",
    s38px = "38",
    s40px = "40"
}
export declare enum ETextAlign {
    left = "left",
    center = "center",
    right = "right",
    justify = "justify"
}
export declare enum ETextStyl {
    bold = "bold",
    italic = "italic",
    underline = "underline",
    strikethrough = "strikethrough",
    inlineCode = "inlineCode"
}
export declare enum ETextColor {
    black = "black",
    red = "red",
    green = "green",
    orange = "orange",
    blue = "blue",
    yellow = "yellow",
    orangeDark = "orangeDark",
    yellowDark = "yellowDark",
    purpleDark = "purpleDark",
    pinkDark = "pinkDark",
    grayDark = "grayDark",
    redDark = "redDark"
}
export declare enum ETextBgColor {
    bgRed = "bgRed",
    bgBlue = "bgBlue",
    bgGreen = "bgGreen",
    bgOrange = "bgOrange",
    bgYellow = "bgYellow",
    bgRedDark = "bgRedDark",
    bgOrangeDark = "bgOrangeDark",
    bgYellowDark = "bgYellowDark",
    bgPurpleDark = "bgPurpleDark",
    bgPinkDark = "bgPinkDark",
    bgGrayDark = "bgGrayDark"
}
export declare class ListStyle {
    position: [number, number];
    style: ETextStyl[];
}
export interface TextJSON extends BaseWidgetJSON {
    textAlign: ETextAlign;
    value: string;
    styles: ListStyle[];
}
export declare class Text extends BaseWidget {
    textAlign: ETextAlign;
    value: string;
    valueHTML: string;
    styles: ListStyle[];
    selection: [number, number];
    constructor(type: TypeComponent, id: string);
    /**
     * Получить объект класса Text из json
     * @param json валидная json строка
     * @returns объект класса Text
     */
    static fromJSON(json: string): Text;
    /**
     * Получить объект для сериализации
     * @returns Объект для сериализации
     */
    toJSON(): TextJSON;
    /**
    * Пересчитать позиции стилей
    * @param text Текст
    * @param listStyle Список стилей для текста
    * @returns Пересчитанный список стилей
    */
    recPositions(text: string, listStyle: ListStyle[]): ListStyle[];
    applyStyles(): void;
    private replaceInRange;
    /**
     * Получить из массива символов со стилями список стилей
     * @param posCharStyl массив позиций символов со стилями
     * @returns список стилей
     */
    static groupPosByStyle(posCharStyl: ETextStyl[][]): ListStyle[];
    /**
     * Разбиваем текст на позиции со своими стилями
     * @param text Текст
     * @param listStyle Стили текста
     * @returns Массив стилей для каждого символа
     */
    static getPosCharStl(text: string, listStyle: ListStyle[]): ETextStyl[][];
    /**
     * Добавить стиль к массиву символов со стилями
     * @param listTextStyl массив позиций символов и их стили
     * @param position позиция вставки символов
     * @param style стиль
     * @returns массив позиций символов со стилями
     */
    static addStyle(listTextStyl: ETextStyl[][], position: [number, number], style: ETextStyl): ETextStyl[][];
    static composeUnWrapAction(widgetId: string, store: any): TextUnWrappingAction;
    static composeWrapAction(newIdWidget: string, position: number, widgetId: string, store: any): TextWrappingAction;
    static isText(state: State): boolean;
}
