/**
 * @mergeTarget
 * @module Src/Parameters/String
 */
import { LisioParameter } from "./lisio-parameter.js";
import { CursorSizeOptions } from "./stringOptionsEnums/cursor-size-options.js";
import { DatltonismOptions } from "./stringOptionsEnums/daltonism-options.js";
import { DeeplTranslationOptions } from "./stringOptionsEnums/deepl-translation-options.js";
import { FontFamilyOptions } from "./stringOptionsEnums/font-family-options.js";
import { GoogleTranslationOptions } from "./stringOptionsEnums/google-translation-options.js";
import { TextAlignOptions } from "./stringOptionsEnums/text-align-options.js";
import { ThemeOptions } from "./stringOptionsEnums/theme-options.js";
/**
 * Enumerator for all string parameters availables in Lisio.\
 * Please names new parameters as following :
 * ```
 * MY_NAME : "my_name"
 * ```
 * @source
 */
declare enum LisioStringParameterNames {
    THEME = "theme",
    DALTONISM = "daltonism",
    FONT_FAMILY = "font_family",
    TEXT_ALIGN = "text_align",
    CURSOR_SIZE = "cursor_size",
    GOOGLE_TRANSLATION = "google_translation",
    DEEPL_TRANSLATION = "deepl_translation",
    SPEECH_SYNTHESIS_VOICE = "speech_synthesis_voice",
    UNDERLINE_RED = "underline_red",
    UNDERLINE_GREEN = "underline_green",
    UNDERLINE_BLUE = "underline_blue"
}
/**
 * Type representing all options for each string parameter
 */
type StringParametersOptions = ThemeOptions | CursorSizeOptions | DatltonismOptions | DeeplTranslationOptions | FontFamilyOptions | GoogleTranslationOptions | TextAlignOptions;
/**
 * ## How to create a new (string) parameter ? Part 2
 *
 * To create a new string parameter is very easy. To begin, choose a revelant name and add it to {@link LisioStringParameterNames | LisioStringParameterNames}.\
 * If you parameter has determined answers, please create a new enumerator like {@link Src/Parameters/String/Options.ThemeOptions | ThemeOptions} to prevent errors and it to {@link StringParametersOptions | StringParametersOptions}.
 * Next you have to adapt method {@link checkIfValueCorrespondingWithParameter | checkIfValueCorrespondingWithParameter} :
 *  * If you parameter has determined answers : add a new entry in {@link parametersWithOptions | parametersWithOptions}
 *  * Else add a new entry in {@link undeterminedStringParameters | undeterminedStringParameters}
 *
 * ## How to create a new (string) parameter ? Part 2
 *
 * If you want to rename it, choose a new revelant name and modify the old one in {@link LisioStringParameterNames | LisioStringParameterNames}.\
 * If you want change his type, see "How to delete" for current parameter and "How to create a new parameter" for new parameter.\
 *
 * ## How to delete a (string) parameter ? Part 2
 *
 * Delete his name from {@link LisioStringParameterNames | LisioStringParameterNames}.\
 *
 * ## Documentation
 *
 * Class representing a string parameter extending LisioParameter.\
 * It aims to centralize all the logic of string parameter.\
 * To execute his responsability this class does :
 *  * Saves name and value of string parameter
 *  * Check if a value is associated with his parameter
 */
declare class LisioStringParameter extends LisioParameter {
    /**
     * Protected attribute to store value of parameter
     * @source
     */
    protected _value: string | StringParametersOptions;
    /**
     * Protected attribute to store default value of parameter
     * @source
     */
    protected _defaultValue: string | StringParametersOptions;
    /**
     * Getter for attribute {@link _value | _value}
     * @returns Returns _value attribute
     * @source
     */
    get value(): string | StringParametersOptions;
    /**
     * Getter for attribute {@link _defaultValue | _defaultValue}
     * @returns Returns _defaultValue attribute
     * @source
     */
    get defaultValue(): string | StringParametersOptions;
    /**
     * Constructor of class {@link LisioStringParameter | LisioStringParameter}
     * @param {LisioStringParameterNames} name - Parameter name
     * @param {string | StringParametersOptions} value - Parameter value
     * @throws If parameter doesn't exist or value not corresponding.\
     * See {@link Src/Utils.LisioProfilErrorCodes.WRONG_STRING_PARAMETER | LisioProfilErrorCodes.WRONG_STRING_PARAMETER}
     * @source
     */
    constructor(name: LisioStringParameterNames, value: string | StringParametersOptions);
}
export { LisioStringParameter, LisioStringParameterNames };
export type { StringParametersOptions };
