/**
 * Constantes des identifiants d'actions de formatage supportés.
 */
export declare enum FormatConst {
    ALIGN = "align",
    BACKGROUND = "background",
    BLOCKQUOTE = "blockquote",
    BOLD = "bold",
    CLEAN = "clean",
    CODE_BLOCK = "code-block",
    COLOR = "color",
    DIRECTION = "direction",
    HEADER = "header",
    IMAGE = "image",
    INDENT = "indent",
    ITALIC = "italic",
    LINK = "link",
    LIST = "list",
    SCRIPT = "script",
    SIZE = "size",
    STRIKE = "strike",
    UNDERLINE = "underline"
}
/**
 * Type correspondant aux identifiants d'actions de formatage supportés.
 */
export type Format = `${FormatConst}`;
/**
 * Mapping des clés d'internationalisation des libellés des actions de formatage.
 *
 * Selon le contexte, le libellé sera utilisé comme tooltip, libellé de champ ou transcription accessible.
 */
export declare const FORMAT_I18N_KEYS: Record<Format, string | Record<string, string>>;
/**
 * Mapping des icônes par défaut correspondant aux actions de formatage supportées.
 *
 * Note de conception (RPA+KGE) pour l'instant on décide de maintenir les icônes dans une structure à part afin de
 * verrouiller le modèle. Si demain on souhaite donner à l'utilisateur la possibilité de surcharger les icônes des
 * actions de formatage alors on pourra réintégrer les icônes au modèle en augmentant l'interface `BaseFormatControl`
 * d'une propriété `icon` (rétrocompatible car la propriété aura une valeur par défaut dans le modèle par défaut)
 */
export declare const FORMAT_ICON: Record<Format, string | Record<string, string> | undefined>;
/**
 * Les différents mode supportés par les contrôles de formatage à valeur unique.
 */
export declare enum ControlMode {
    /**
     * Active/désactive le format.
     */
    TOGGLE = "toggle",
    /**
     * Le format dépend de la capture d'un paramètre utilisateur.
     */
    PROMPT = "prompt",
    /**
     * Action issue d'une des options d'une action multivaluée érigée en action unique autonome.
     * Ex. je veux un bouton permettant de formater en Titre de niveau 1 (H1)
     */
    CUSTOM = "custom",
    /**
     * Permet de représenter l'une des options d'une action multivaluée.
     */
    VALUE = "valued",
    /**
     * Dénote une action de formatage multivaluée à afficher sous forme de selecteur.
     */
    SELECT = "select",
    /**
     * Dénote une action de formatage multivaluée à afficher sous de groupe de bouton exclusif.
     */
    RADIO = "radio",
    /**
     * Mode spécial dénotant le contrôle de réinitialisation.
     */
    CLEAN = "clean"
}
/**
 * Les valeurs possibles pour le format 'size'.
 */
export declare enum SizeValue {
    SMALL = "small",
    NORMAL = "normal",
    LARGE = "large",
    HUGE = "huge"
}
/**
 * Les valeurs possibles pour le format 'header'.
 */
export declare enum HeaderValue {
    NORMAL = 0,
    H1 = 1,
    H2 = 2,
    H3 = 3,
    H4 = 4,
    H5 = 5,
    H6 = 6
}
/**
 * Les valeurs possibles pour le format 'align'.
 */
export declare enum AlignValue {
    LEFT = "normal",
    CENTER = "center",
    RIGHT = "right",
    JUSTIFY = "justify"
}
/**
 * Les valeurs possibles pour le format 'list'.
 */
export declare enum ListValue {
    ORDERED = "ordered",
    BULLET = "bullet",
    CHECKBOX = "unchecked"
}
/**
 * Les valeurs possibles pour le format 'script'.
 */
export declare enum ScriptValue {
    /**
     * Subscript.
     */
    SUBSCRIPT = "sub",
    /**
     * Superscript.
     */
    SUPERSCRIPT = "super"
}
/**
 * Les valeurs possibles pour le format 'indent'.
 */
export declare enum IndentValue {
    /**
     * Decrease indent.
     */
    DECREASE = "-1",
    /**
     * Increase indent.
     */
    INCREASE = "+1"
}
/**
 * Les valeurs possibles pour le format 'direction'.
 */
export declare enum DirectionValue {
    /**
     * De gauche à droite.
     */
    NORMAL = "normal",
    /**
     * De droite à gauche.
     */
    RTL = "rtl"
}
/**
 * Représente une tâche de formatage de base.
 */
export interface DsfrBaseFormatControl {
    /**
     * L'identifiant Quill du format.
     */
    name: Format;
    /**
     * Le mode du contrôle de format.
     */
    mode: ControlMode;
}
/**
 * Représente une action simple (bouton).
 */
export interface DsfrSingleFormatControl extends DsfrBaseFormatControl {
    /**
     * Optionnel : permet de surcharger l'icône illustrative.
     * Doit être une classe CSS Remix wrappée DSFR. Ex. 'fr-icon-bold'.
     */
    icon?: string;
}
/**
 * Permet de sortir une des options de formatage d'une action multivaluée et d el'ériger en action unique autonome.
 */
export declare class DsfrCustomFormatControl implements DsfrSingleFormatControl {
    name: Format;
    value: string | number | false;
    /**
     * Le mode d'une action avec valeur prédéfinie est forcément 'valued'.
     */
    mode: ControlMode;
    /**
     * Construit une action de formatage valuée.
     *
     * @param name le format de cette action
     * @param value la valeur spécifique de cette action de formatage
     */
    constructor(name: Format, value: string | number | false);
}
/**
 *
 */
export declare class DsfrToggleFormatControl implements DsfrSingleFormatControl {
    name: Format;
    /**
     * Le mode d'une action avec valeur prédéfinie est forcément 'toggle'.
     */
    mode: ControlMode;
    constructor(name: Format);
}
/**
 *
 */
export declare class DsfrPromptFormatControl implements DsfrSingleFormatControl {
    name: Format;
    /**
     * Le mode d'une action avec valeur prédéfinie est forcément 'prompt'.
     */
    mode: ControlMode;
    constructor(name: Format);
}
/**
 * Représente une des actions possibles d'une méta-action multi-valuée.
 */
export declare class DsfrValueFormatControl implements Omit<DsfrSingleFormatControl, 'name'> {
    value: string | number | false;
    /**
     * Le mode d'une action avec valeur prédéfinie est forcément 'valued'.
     */
    mode: ControlMode;
    /**
     * Construit une action de formatage valuée.
     *
     * @param value la valeur spécifique de cette action de formatage
     */
    constructor(value: string | number | false);
}
/**
 * Représente une méta-tâche qui s'applique à travers la sélection d'une valeur concrète au sein d'une liste de valeurs.
 */
export interface DsfrMultivaluedFormatControl extends DsfrBaseFormatControl {
    /**
     * Permet d'indiquer si le contrôle multivalué doit s'afficher au sein d'un groupe dans la toolbar.
     */
    group: boolean;
    /**
     * Valeurs possibles pour cette action de formatage.
     */
    values: DsfrValueFormatControl[];
}
/**
 * Représente une action multi-valuée en mode radio.
 */
export declare class RadioFormatControl implements DsfrMultivaluedFormatControl {
    name: Format;
    values: DsfrValueFormatControl[];
    group: boolean;
    mode: ControlMode;
    /**
     * Construit un control de type radio.
     *
     * @param values les différentes valeurs possibles pour le control de type radio
     */
    constructor(name: Format, values: DsfrValueFormatControl[], group: boolean);
}
/**
 * Représente une action multi-valuée en mode select.
 */
export declare class SelectFormatControl implements DsfrMultivaluedFormatControl {
    name: Format;
    values: DsfrValueFormatControl[];
    mode: ControlMode;
    group: boolean;
    /**
     * Construit un control de type select.
     *
     * @param values les différentes valeurs possibles pour le control de type select.
     */
    constructor(name: Format, values: DsfrValueFormatControl[]);
}
/**
 * Type générique encapsulant toutes les types de tâches de formatage.
 */
export type FormatControl = DsfrSingleFormatControl | DsfrMultivaluedFormatControl;
/**
 * Type décrivant un élément de la barre d'outil qui peut être soit une tâche unitaire soit un regroupement de tâches.
 */
export type ToolbarControl = FormatControl | FormatControl[];
