/**
 * @mergeTarget
 * @module Src/Profiles
 */
import { LisioParameterParsed, LisioParameterNames, LisioParameter } from "../parameter/lisio-parameter.js";
/**
 * Enumetor for all profiles availables in Lisio
 * Please names new profiles as following :
 * ```
 * MY_NAME : "my_name"
 * ```
 * @source
 */
declare enum LisioProfileNames {
    DYSLEXIA = "dyslexia",
    GLASS_X2 = "glass_x2",
    GLASS_X4 = "glass_x4",
    EPILEPSY = "epilepsy",
    MOVEMENTS = "movements",
    GESTURES = "gestures",
    FOCUS = "focus",
    READING = "reading",
    LOW_EYE_SIGHT = "low_eye_sight",
    VERY_LOW_EYE_SIGHT = "very_low_eye_sight",
    VISION = "vision",
    PRESBYOPIA = "presbyopia",
    CATARACT = "cataract",
    UNDERLINE = "underline",
    INEXPERIENCE = "inexperience",
    ATTENTION = "attention",
    HEADACHE = "headache",
    MEMORY = "memory",
    LEARNING = "learning",
    LOW_NETWORK = "low_network",
    DICTIONARY = "dictionary",
    ECOLO = "ecolo",
    LIGHT_ECOLO = "light_ecolo",
    DARK_MODE = "dark_mode"
}
/**
 * Type representing a parsed profile
 */
type LisioProfileParsed = {
    name: LisioProfileNames;
    parameters: LisioParameterParsed[];
};
/**
 * @remarks
 * ## How to create a new profile ? Part 1
 *
 * To create a new profile is very easy, choose a revelant name and add it to {@link LisioProfileNames | LisioProfileNames}.\
 * Next go to {@link Src/Profiles.LisioProfileFactory | LisioProfileFactory}
 *
 * ## How to modify a profile ? Part 1
 *
 * If you don't want to rename your profile skip to part 2 {@link Src/Profiles.LisioProfileFactory | LisioProfileFactory}.\
 * To rename a profile is very easy, choose a new revelant name and cahnge old name in {@link LisioProfileNames | LisioProfileNames}.\
 * Next go to {@link Src/Profiles.LisioProfileFactory | LisioProfileFactory}
 *
 * ## How to delete a profile ? Part 1
 *
 * To delete a profile is very easy, delete his name from {@link LisioProfileNames | LisioProfileNames}.\
 * Next go to {@link Src/Profiles.LisioProfileFactory | LisioProfileFactory}
 *
 * ## Documentation
 *
 * Class representing a profile.\
 * It aims to centralize all the logic of profiles.\
 * To execute his responsability this class does :
 *  * Saves name and used parameters
 *  * Formats profile for message exchange
 */
declare class LisioProfile {
    /**
     * Private attribute to store profile name
     * @source
     */
    private _name;
    /**
     * Private attribute to store parameters used by profile
     * @source
     */
    private _parameters;
    /**
     * Getter for attribute {@link _name | _name}
     * @returns Returns _name attribute
     * @source
     */
    get name(): LisioProfileNames;
    /**
     * Getter for attribute {@link _parameters | _parameters}
     * @returns Returns _parameters attribute
     * @source
     */
    get parameters(): Map<LisioParameterNames, LisioParameter>;
    /**
     * Public method to parse profile
     * @returns Returns a parsed profile
     * @source
     */
    formatForSaving(): LisioProfileParsed;
    /**
     * Public method to test if one of parameters are in profile
     * @param {LisioParameterNames[]} parameterNames - List of parameter to check
     * @returns Returns boolean
     * @source
     */
    checkIfParametersAreInProfile(parameterNames: LisioParameterNames[]): boolean;
    /**
     * Constructor of class {@link LisioProfile | LisioProfile}
     * @param {LisioProfileNames} name - Profile name
     * @param {Map<LisioParameterNames, LisioParameter>} parameters - Parameters used by profile
     * @source
     */
    constructor(name: LisioProfileNames, parameters: Map<LisioParameterNames, LisioParameter>);
}
export { LisioProfile, LisioProfileNames };
export type { LisioProfileParsed };
