/**
 * @mergeTarget
 * @module Src/Profiles
 */
import { LisioProfile, LisioProfileNames } from "./lisio-profile.js";
/**
 * Type representing a lisio profile builder
 */
type LisioProfileBuilder = () => LisioProfile;
/**
 * ## How to create a new profile ? Part 2
 *
 * To create a new profile is very easy, if you don't create a new profile name go to {@link Src/Profiles.LisioProfileNames | LisioProfileNames}.\
 * Next go create a new builder for your profile, it only consists at choose which parameters your profile will use. You can take exemple on other builders.\
 * When it's done the final step is to add your new builder in {@link LisioProfileFactory._builders | LisioProfileFactory._builders}
 *
 * ## How to modify a profile ? Part 2
 *
 * To rename a profile is very easy, if you want to rename your profile and you don't choose a new profile name go to {@link Src/Profiles.LisioProfileNames | LisioProfileNames}.\
 * Next change all old profile name by your new profile name.\
 *
 * If you want to modify parameters used in profile, go to profile builder and modify it as you desire.
 *
 * ## How to delete a profile ? Part 2
 *
 * To delete a profile is very easy, if you don't delete profile name go to {@link Src/Profiles.LisioProfileNames | LisioProfileNames}.\
 * Next delete your profile builder.\
 * When it's done the final step is to remove your old builder from {@link LisioProfileFactory._builders | LisioProfileFactory._builders}
 *
 * ## Documentation
 *
 * Class representing a profile factory.\
 * It aims to centralize all instanciation of profile.\
 * To execute his responsability this class does :
 *  * Build a profile with right corresponding parameters
 */
declare class LisioProfileFactory {
    /**
     * Private attribute to store all profile builders
     * @source
     */
    private _builders;
    /**
     * @static
     * Private attribute to store instance of {@link LisioProfileFactory | LisioProfileFactory}
     * @source
     */
    private static _current;
    /**
     * @static
     * Getter for attribute {@link _current | _current}
     * @returns Returns _current attribute
     * @source
     */
    static get current(): LisioProfileFactory;
    /**
     * Private method to build a dyslexia profile.\
     * This profile uses following parameters :
     *  * {@link Src/Parameters/String.LisioStringParameterNames.FONT_FAMILY | LisioStringParameterNames.FONT_FAMILY} = {@link Src/Parameters/String/Options.FontFamilyOptions.OPEN_DYSLEXIC = FontFamilyOptions.OPEN_DYSLEXIC}
     *  * {@link Src/Parameters/Numeric.LisioNumericParameterNames.WORD_SPACING | LisioNumericParameterNames.WORD_SPACING} = 5
     * @returns Returns a dyslexia profile
     * @source
     */
    private dyslexiaBuilder;
    /**
     * Private method to build a glassX2 profile
     * This profile uses following parameters :
     *  * {@link Src/Parameters/String.LisioStringParameterNames.CURSOR_SIZE | LisioStringParameterNames.CURSOR_SIZE} = {@link Src/Parameters/String/Options.CursorSizeOptions.VERY_BIG = CursorSizeOptions.VERY_BIG}
     *  * {@link Src/Parameters/Numeric.LisioNumericParameterNames.ZOOM | LisioNumericParameterNames.ZOOM} = 2
     * @returns Returns a glassX2 profile
     * @source
     */
    private glassX2Builder;
    /**
     * Private method to build a glassX4 profile
     * This profile uses following parameters :
     *  * {@link Src/Parameters/String.LisioStringParameterNames.CURSOR_SIZE | LisioStringParameterNames.CURSOR_SIZE} = {@link Src/Parameters/String/Options.CursorSizeOptions.VERY_BIG = CursorSizeOptions.VERY_BIG}
     *  * {@link Src/Parameters/Numeric.LisioNumericParameterNames.ZOOM | LisioNumericParameterNames.ZOOM} = 4
     * @returns Returns a glassX4 profile
     * @source
     */
    private glassX4Builder;
    /**
     * Private method to build a epilepsy profile
     * This profile uses following parameters :
     *  * {@link Src/Parameters/String.LisioStringParameterNames.THEME | LisioStringParameterNames.THEME} = {@link Src/Parameters/String/Options.ThemeOptions.C_BK_BG_G = ThemeOptions.C_BK_BG_G}
     *  * {@link Src/Parameters/Numeric.LisioNumericParameterNames.FONT_SIZE | LisioNumericParameterNames.FONT_SIZE} = 2
     *  * {@link Src/Parameters/Boolean.LisioBooleanParameterNames.DISABLE_ANIMATION | LisioBooleanParameterNames.DISABLE_ANIMATION = true}
     * @returns Returns a epilepsy profile
     * @source
     */
    private epilepsyBuilder;
    /**
     * Private method to build a movements profile
     * This profile uses following parameters :
     *  * {@link Src/Parameters/String.LisioStringParameterNames.CURSOR_SIZE | LisioStringParameterNames.CURSOR_SIZE} = {@link Src/Parameters/String/Options.CursorSizeOptions.BIG = CursorSizeOptions.BIG}
     *  * {@link Src/Parameters/Numeric.LisioNumericParameterNames.BIGGER_CLICK | LisioNumericParameterNames.BIGGER_CLICK} = 4
     * @returns Returns a movements profile
     * @source
     */
    private movementsBuilder;
    /**
     * Private method to build a gestures profile
     * This profile uses following parameters :
     *  * {@link Src/Parameters/String.LisioStringParameterNames.CURSOR_SIZE | LisioStringParameterNames.CURSOR_SIZE} = {@link Src/Parameters/String/Options.CursorSizeOptions.BIG = CursorSizeOptions.BIG}
     *  * {@link Src/Parameters/Numeric.LisioNumericParameterNames.BIGGER_CLICK | LisioNumericParameterNames.BIGGER_CLICK} = 4
     * @returns Returns a gestures profile
     * @source
     */
    private gesturesBuilder;
    /**
     * Private method to build a focus profile
     * This profile uses following parameters :
     *  * {@link Src/Parameters/Boolean.LisioBooleanParameterNames.DISABLE_ANIMATION | LisioBooleanParameterNames.DISABLE_ANIMATION} = true
     *  * {@link Src/Parameters/Boolean.LisioBooleanParameterNames.READING_MASK | LisioBooleanParameterNames.READING_MASK} = true
     *  * {@link Src/Parameters/String.LisioStringParameterNames.FONT_FAMILY | LisioStringParameterNames.FONT_FAMILY} = {@link Src/Parameters/String/Options.FontFamilyOptions.ARIAL = FontFamilyOptions.ARIAL}
     * @returns Returns a focus profile
     * @source
     */
    private focusBuilder;
    /**
     * Private method to build a reading profile
     * This profile uses following parameters :
     *  * {@link Src/Parameters/Numeric.LisioNumericParameterNames.FONT_SIZE | LisioNumericParameterNames.FONT_SIZE} = 2
     *  * {@link Src/Parameters/Numeric.LisioNumericParameterNames.LINE_HEIGHT | LisioNumericParameterNames.LINE_HEIGHT} = 1.5
     *  * {@link Src/Parameters/Numeric.LisioNumericParameterNames.WORD_SPACING | LisioNumericParameterNames.WORD_SPACING} = 5
     *  * {@link Src/Parameters/String.LisioStringParameterNames.FONT_FAMILY | LisioStringParameterNames.FONT_FAMILY} = {@link Src/Parameters/String/Options.FontFamilyOptions.ARIAL = FontFamilyOptions.ARIAL}
     *  * {@link Src/Parameters/Boolean.LisioBooleanParameterNames.BOOK_PAGE | LisioBooleanParameterNames.BOOK_PAGE} = true
     * @returns Returns a reading profile
     * @source
     */
    private readingBuilder;
    /**
     * Private method to build a low eye sight profile
     * This profile uses following parameters :
     *  * {@link Src/Parameters/Numeric.LisioNumericParameterNames.FONT_SIZE | LisioNumericParameterNames.FONT_SIZE} = 4
     *  * {@link Src/Parameters/Numeric.LisioNumericParameterNames.LINE_HEIGHT | LisioNumericParameterNames.LINE_HEIGHT} = 1.5
     *  * {@link Src/Parameters/Numeric.LisioNumericParameterNames.WORD_SPACING | LisioNumericParameterNames.WORD_SPACING} = 6
     *  * {@link Src/Parameters/String.LisioStringParameterNames.CURSOR_SIZE | LisioStringParameterNames.CURSOR_SIZE} = {@link Src/Parameters/String/Options.CursorSizeOptions.BIG = CursorSizeOptions.BIG}
     *  * {@link Src/Parameters/String.LisioStringParameterNames.FONT_FAMILY | LisioStringParameterNames.FONT_FAMILY} = {@link Src/Parameters/String/Options.FontFamilyOptions.LUCIOLE = FontFamilyOptions.LUCIOLE}
     *  * {@link Src/Parameters/Boolean.LisioBooleanParameterNames.BOOK_PAGE | LisioBooleanParameterNames.BOOK_PAGE} = true
     * @returns Returns a low eye sight profile
     * @source
     */
    private lowEyeSightBuilder;
    /**
     * Private method to build a very low eye sight profile
     * This profile uses following parameters :
     *  * {@link Src/Parameters/Numeric.LisioNumericParameterNames.FONT_SIZE | LisioNumericParameterNames.FONT_SIZE} = 6
     *  * {@link Src/Parameters/Numeric.LisioNumericParameterNames.LINE_HEIGHT | LisioNumericParameterNames.LINE_HEIGHT} = 2
     *  * {@link Src/Parameters/Numeric.LisioNumericParameterNames.WORD_SPACING | LisioNumericParameterNames.WORD_SPACING} = 10
     *  * {@link Src/Parameters/String.LisioStringParameterNames.CURSOR_SIZE | LisioStringParameterNames.CURSOR_SIZE} = {@link Src/Parameters/String/Options.CursorSizeOptions.VERY_BIG = CursorSizeOptions.VERY_BIG}
     *  * {@link Src/Parameters/String.LisioStringParameterNames.FONT_FAMILY | LisioStringParameterNames.FONT_FAMILY} = {@link Src/Parameters/String/Options.FontFamilyOptions.LUCIOLE = FontFamilyOptions.LUCIOLE}
     *  * {@link Src/Parameters/Boolean.LisioBooleanParameterNames.BOOK_PAGE | LisioBooleanParameterNames.BOOK_PAGE} = true
     * @returns Returns a very low eye sight profile
     * @source
     */
    private veryLowEyeSightBuilder;
    /**
     * Private method to build a vision profile
     * This profile uses following parameters :
     *  * {@link Src/Parameters/Numeric.LisioNumericParameterNames.FONT_SIZE | LisioNumericParameterNames.FONT_SIZE} = 4
     *  * {@link Src/Parameters/Numeric.LisioNumericParameterNames.LINE_HEIGHT | LisioNumericParameterNames.LINE_HEIGHT} = 1.5
     *  * {@link Src/Parameters/Numeric.LisioNumericParameterNames.WORD_SPACING | LisioNumericParameterNames.WORD_SPACING} = 5
     *  * {@link Src/Parameters/String.LisioStringParameterNames.CURSOR_SIZE | LisioStringParameterNames.CURSOR_SIZE} = {@link Src/Parameters/String/Options.CursorSizeOptions.BIG = CursorSizeOptions.BIG}
     *  * {@link Src/Parameters/String.LisioStringParameterNames.FONT_FAMILY | LisioStringParameterNames.FONT_FAMILY} = {@link Src/Parameters/String/Options.FontFamilyOptions.LUCIOLE = FontFamilyOptions.LUCIOLE}
     *  * {@link Src/Parameters/Boolean.LisioBooleanParameterNames.BOOK_PAGE | LisioBooleanParameterNames.BOOK_PAGE} = true
     * @returns Returns a vision profile
     * @source
     */
    private visionBuilder;
    /**
     * Private method to build a presbyopia profile
     * This profile uses following parameters :
     *  * {@link Src/Parameters/Numeric.LisioNumericParameterNames.FONT_SIZE | LisioNumericParameterNames.FONT_SIZE} = 2
     *  * {@link Src/Parameters/String.LisioStringParameterNames.THEME | LisioStringParameterNames.THEME} = {@link Src/Parameters/String/Options.ThemeOptions.C_BK_BG_W = ThemeOptions.C_BK_BG_W}
     *  * {@link Src/Parameters/Numeric.LisioNumericParameterNames.WORD_SPACING | LisioNumericParameterNames.WORD_SPACING} = 10
     *  * {@link Src/Parameters/String.LisioStringParameterNames.CURSOR_SIZE | LisioStringParameterNames.CURSOR_SIZE} = {@link Src/Parameters/String/Options.CursorSizeOptions.VERY_BIG = CursorSizeOptions.VERY_BIG}
     *  * {@link Src/Parameters/String.LisioStringParameterNames.FONT_FAMILY | LisioStringParameterNames.FONT_FAMILY} = {@link Src/Parameters/String/Options.FontFamilyOptions.LUCIOLE = FontFamilyOptions.LUCIOLE}
     *  * {@link Src/Parameters/Boolean.LisioBooleanParameterNames.BOOK_PAGE | LisioBooleanParameterNames.BOOK_PAGE} = true
     * @returns Returns a presbyopia profile
     * @source
     */
    private presbyopiaBuilder;
    /**
     * Private method to build a cataract profile
     * This profile uses following parameters :
     *  * {@link Src/Parameters/Numeric.LisioNumericParameterNames.FONT_SIZE | LisioNumericParameterNames.FONT_SIZE} = 3
     *  * {@link Src/Parameters/String.LisioStringParameterNames.THEME | LisioStringParameterNames.THEME} = {@link Src/Parameters/String/Options.ThemeOptions.C_BK_BG_G = ThemeOptions.C_BK_BG_G}
     *  * {@link Src/Parameters/Numeric.LisioNumericParameterNames.WORD_SPACING | LisioNumericParameterNames.WORD_SPACING} = 5
     *  * {@link Src/Parameters/String.LisioStringParameterNames.CURSOR_SIZE | LisioStringParameterNames.CURSOR_SIZE} = {@link Src/Parameters/String/Options.CursorSizeOptions.VERY_BIG = CursorSizeOptions.VERY_BIG}
     *  * {@link Src/Parameters/Numeric.LisioNumericParameterNames.LINE_HEIGHT | LisioNumericParameterNames.LINE_HEIGHT} = 1.5
     *  * {@link Src/Parameters/Boolean.LisioBooleanParameterNames.HIGHLIGHT | LisioBooleanParameterNames.HIGHLIGHT} = true
     *  * {@link Src/Parameters/String.LisioStringParameterNames.FONT_FAMILY | LisioStringParameterNames.FONT_FAMILY} = {@link Src/Parameters/String/Options.FontFamilyOptions.LUCIOLE = FontFamilyOptions.LUCIOLE}
     *  * {@link Src/Parameters/Boolean.LisioBooleanParameterNames.BOOK_PAGE | LisioBooleanParameterNames.BOOK_PAGE} = true
     * @returns Returns a cataract profile
     * @source
     */
    private cataractBuilder;
    /**
     * Private method to build a underline profile
     * This profile uses following parameters :
     *  * {@link Src/Parameters/String.LisioStringParameterNames.FONT_FAMILY | LisioStringParameterNames.FONT_FAMILY} = {@link Src/Parameters/String/Options.FontFamilyOptions.OPEN_DYSLEXIC = FontFamilyOptions.OPEN_DYSLEXIC}
     *  * {@link Src/Parameters/Numeric.LisioNumericParameterNames.WORD_SPACING | LisioNumericParameterNames.WORD_SPACING} = 5
     *  * {@link Src/Parameters/Boolean.LisioBooleanParameterNames.ACTIVE_UNDERLINE | LisioBooleanParameterNames.ACTIVE_UNDERLINE} = true
     *  * {@link Src/Parameters/Boolean.LisioBooleanParameterNames.BOOK_PAGE | LisioBooleanParameterNames.BOOK_PAGE} = true
     * @returns Returns a underline profile
     * @source
     */
    private underlineBuilder;
    /**
     * @deprecated
     * Private method to build a inexperience profile
     * @returns Returns a inexperience profile
     * @source
     */
    private inexperienceBuilder;
    /**
     * Private method to build a learning profile
     * This profile uses following parameters :
     *  * {@link Src/Parameters/Numeric.LisioNumericParameterNames.FONT_SIZE | LisioNumericParameterNames.FONT_SIZE} = 2
     *  * {@link Src/Parameters/Numeric.LisioNumericParameterNames.LINE_HEIGHT | LisioNumericParameterNames.LINE_HEIGHT} = 1.5
     *  * {@link Src/Parameters/Numeric.LisioNumericParameterNames.WORD_SPACING | LisioNumericParameterNames.WORD_SPACING} = 5
     *  * {@link Src/Parameters/String.LisioStringParameterNames.FONT_FAMILY | LisioStringParameterNames.FONT_FAMILY} = {@link Src/Parameters/String/Options.FontFamilyOptions.ARIAL = FontFamilyOptions.ARIAL}
     *  * {@link Src/Parameters/Boolean.LisioBooleanParameterNames.BOOK_PAGE | LisioBooleanParameterNames.BOOK_PAGE} = true
     * @returns Returns a learning profile
     * @source
     */
    private learningBuilder;
    /**
     * Private method to build an attention profile
     * This profile uses following parameters :
     *  * {@link Src/Parameters/Numeric.LisioNumericParameterNames.FONT_SIZE | LisioNumericParameterNames.FONT_SIZE} = 2
     *  * {@link Src/Parameters/Numeric.LisioNumericParameterNames.LINE_HEIGHT | LisioNumericParameterNames.LINE_HEIGHT} = 1.5
     *  * {@link Src/Parameters/Numeric.LisioNumericParameterNames.WORD_SPACING | LisioNumericParameterNames.WORD_SPACING} = 5
     *  * {@link Src/Parameters/String.LisioStringParameterNames.FONT_FAMILY | LisioStringParameterNames.FONT_FAMILY} = {@link Src/Parameters/String/Options.FontFamilyOptions.ARIAL = FontFamilyOptions.ARIAL}
     *  * {@link Src/Parameters/Boolean.LisioBooleanParameterNames.BOOK_PAGE | LisioBooleanParameterNames.BOOK_PAGE} = true
     * @returns Returns an attention profile
     * @source
     */
    private attentionBuilder;
    /**
     * Private method to build a memory profile
     * This profile uses following parameters :
     *  * {@link Src/Parameters/Numeric.LisioNumericParameterNames.FONT_SIZE | LisioNumericParameterNames.FONT_SIZE} = 2
     *  * {@link Src/Parameters/Numeric.LisioNumericParameterNames.LINE_HEIGHT | LisioNumericParameterNames.LINE_HEIGHT} = 1.5
     *  * {@link Src/Parameters/Numeric.LisioNumericParameterNames.WORD_SPACING | LisioNumericParameterNames.WORD_SPACING} = 5
     *  * {@link Src/Parameters/String.LisioStringParameterNames.FONT_FAMILY | LisioStringParameterNames.FONT_FAMILY} = {@link Src/Parameters/String/Options.FontFamilyOptions.ARIAL = FontFamilyOptions.ARIAL}
     *  * {@link Src/Parameters/Boolean.LisioBooleanParameterNames.BOOK_PAGE | LisioBooleanParameterNames.BOOK_PAGE} = true
     * @returns Returns a memory profile
     * @source
     */
    private memoryBuilder;
    /**
     * Private method to build a headache profile
     * This profile uses following parameters :
     *  * {@link Src/Parameters/Numeric.LisioNumericParameterNames.FONT_SIZE | LisioNumericParameterNames.FONT_SIZE} = 2
     *  * {@link Src/Parameters/String.LisioStringParameterNames.THEME | LisioStringParameterNames.THEME} = {@link Src/Parameters/String/Options.ThemeOptions.C_BK_BG_G = ThemeOptions.C_BK_BG_G}
     *  * {@link Src/Parameters/String.LisioStringParameterNames.FONT_FAMILY | LisioStringParameterNames.FONT_FAMILY} = {@link Src/Parameters/String/Options.FontFamilyOptions.ARIAL = FontFamilyOptions.ARIAL}
     *  * {@link Src/Parameters/Boolean.LisioBooleanParameterNames.BOOK_PAGE | LisioBooleanParameterNames.BOOK_PAGE} = true
     * @returns Returns a headache profile
     * @source
     */
    private headacheBuilder;
    /**
     * Private method to build a low network profile
     * This profile uses following parameters :
     *  * {@link Src/Parameters/Boolean.LisioBooleanParameterNames.BOOK_PAGE | LisioBooleanParameterNames.BOOK_PAGE} = true
     * @returns Returns a low network profile
     * @source
     */
    private lowNetworkBuilder;
    /**
     * Private method to build a dictionary profile
     * This profile uses following parameters :
     *  * {@link Src/Parameters/Boolean.LisioBooleanParameterNames.VOCA | LisioBooleanParameterNames.VOCA} = true
     * @returns Returns a dictionary profile
     * @source
     */
    private dictionaryBuilder;
    /**
     * Private method to build a eco profile
     * This profile uses following parameters :
     *  * {@link Src/Parameters/Boolean.LisioBooleanParameterNames.BOOK_PAGE | LisioBooleanParameterNames.BOOK_PAGE} = true
     * @returns Returns a eco profile
     * @source
     */
    private ecoBuilder;
    /**
     * Private method to build a light eco profile
     * This profile uses following parameters :
     *  * {@link Src/Parameters/String.LisioStringParameterNames.THEME | LisioStringParameterNames.THEME} = {@link Src/Parameters/String/Options.ThemeOptions.C_W_BG_BK = ThemeOptions.C_W_BG_BK}
     * @returns Returns a light eco profile
     * @source
     */
    private lightEcoBuilder;
    /**
     * Private method to build a dark mode profile
     * This profile uses following parameters :
     *  * {@link Src/Parameters/String.LisioStringParameterNames.THEME | LisioStringParameterNames.THEME} = {@link Src/Parameters/String/Options.ThemeOptions.C_W_BG_GY = ThemeOptions.C_W_BG_GY}
     * @returns Returns a dark mode profile
     * @source
     */
    private darkModeBuilder;
    /**
     * Public method to build a desired profile
     * @param {LisioProfileNames} profileName - Name of desired profile
     * @returns Retuns a lisio profile
     * @throws If profile doesn't exist.\
     * See {@link Src/Utils.LisioProfilErrorCodes.PROFILE_NOT_FOUND | LisioProfilErrorCodes.PROFILE_NOT_FOUND}
     * @source
     */
    buildLisioProfile(profileName: LisioProfileNames): LisioProfile;
    /**
     * Constructor of class {@link LisioProfileFactory | LisioProfileFactory}
     * @throws If singleton already initialize.\
     * See {@link https://env-preprod-docs.lisio.fr/lisio-engine/enums/Src_Core.CoreErrorCodes.html#SINGLETON_NOT_UNIQUE | CoreErrorCodes.SINGLETON_NOT_UNIQUE}
     * @source
     */
    constructor();
}
export { LisioProfileFactory };
export type { LisioProfileBuilder };
