/**
 * @mergeTarget
 * @module Src/User
 */
import { LisioParameterParsed, LisioParameterNames, LisioParameter } from "./parameter/lisio-parameter.js";
import { LisioProfileNames } from "./profile/lisio-profile.js";
/**
 * Type to describe parsed user
 */
type LisioUserParsed = {
    name: string;
    isSelected: boolean;
    customParameters: LisioParameterParsed[];
    profiles: LisioProfileNames[];
};
/**
 * Class representing a user.\
 * It aims to centralize all the logic of user.\
 * To execute his responsability this class does :
 *  * Saves name, selected state, parameters and profiles of user
 *  * Formats user for message exchange
 */
declare class LisioUser {
    /**
     * Private attribute to store username
     * @source
     */
    private _name;
    /**
     * Private attribute to store selected state
     * @source
     */
    private _isSelected;
    /**
     * Private attribute to store parameters
     * @source
     */
    private _customParameters;
    /**
     * Private attribute to store profiles
     */
    private _profiles;
    /**
     * Getter for attribute {@link _name | _name}
     * @returns Returns _name attribute
     * @source
     */
    get name(): string;
    /**
     * Getter for attribute {@link _isSelected | _isSelected}
     * @returns Returns _isSelected attribute
     * @source
     */
    get isSelected(): boolean;
    /**
     * Getter for attribute {@link _customParameters | _customParameters}
     * @returns Returns _customParameters attribute
     * @source
     */
    get customParameters(): Map<LisioParameterNames, LisioParameter>;
    /**
     * Getter for attribute {@link _profiles | _profiles}
     * @returns Returns _profiles attribute
     * @source
     */
    get profiles(): LisioProfileNames[];
    /**
     * Setter for attribute {@link _name | _name}
     * @param {string} value - New username
     * @returns Returns nothing
     * @source
     */
    set name(value: string);
    /**
     * Setter for attribute {@link _isSelected | _isSelected}
     * @param {boolean} value - New selected state
     * @returns Returns nothing
     * @source
     */
    set isSelected(value: boolean);
    /**
     * Public method to parse user
     * @returns Returns parsed user
     * @source
     */
    formatForSaving(): LisioUserParsed;
    /**
     * Public method to check if parameters are in an activate profile
     * @param {LisioParameterNames[]} parameterNames - List of parameter to check
     * @returns Returns a list of profiles
     * @source
     */
    checkIfParametersAreInActivatedProfile(parameterNames: LisioParameterNames[]): LisioProfileNames[];
    /**
     * Constructor of class {@link LisioUser | LisioUser}
     * @param {string} name - Username
     * @param {boolean} isSelected - Selected state of user
     * @param {Map<LisioParameterNames, LisioParameter>} customParameters - Parameters used by user
     * @param {LisioProfileNames[]} profiles - Profiles used by user
     * @source
     */
    constructor(name: string, isSelected: boolean, customParameters: Map<LisioParameterNames, LisioParameter>, profiles: LisioProfileNames[]);
}
export { LisioUser };
export type { LisioUserParsed };
