import { IObservable, Observer } from "./internal_modules";
/**
 * get enum numerical value from enum class name and value as a string
 * @param enumClass enum class name
 * @param enumValueName enum value as a string
 * @returns enum numerical value
 */
export declare function enumValueFromString(enumClass: string, enumValueName: string): any;
/**
 * represents a boolean: true if provided value at parameter creation must be ignore (@see nghyd/enableEmptyFieldsOnFormInit)
 */
export declare const Prop_NullParameters: string;
/**
 * Interface permettant de propager de manière transparente des opérations sur des propriétés en encapsulant celles ci
 * (implémentée par Props et les classes possédant directement ou indirectement un membre de type Props, par ex Nub)
 */
export interface IProperties extends IObservable {
    /**
     * get property value
     * @param key property name
     */
    getPropValue(key: string): any;
    /**
     * set property value
     * @param key property name
     * @param val property value to set
     * @param sender object from which modification originates
     */
    setPropValue(key: string, val: any, sender?: any): boolean;
    /**
     * determine if this object directly or indirectly has a given property
     * @param key property name
     */
    hasProperty(key: string): boolean;
    /**
     * list of properties keys
    */
    readonly keys: string[];
}
/**
 * gestion d'un ensemble de propriétés (clé/valeur) qui prévient quand
 * l'une d'entre-elles change
 */
export declare class Props implements IProperties {
    /** correspondance entre les noms de propriétés et les enum associés */
    static readonly enumFromProperty: any;
    private _observable;
    private _map;
    constructor(prps?: any | IProperties);
    /**
     * @returns true if an object implements the IProperties interface
     */
    static implementsIProperties(o: any): boolean;
    /**
     * set properties map from an IProperties
     */
    private copyIProperties;
    get keys(): string[];
    getPropValue(key: string): any;
    setPropValue(key: string, val: any, sender?: any): boolean;
    removeProp(key: string): void;
    hasProperty(key: string): boolean;
    getObservers(): Observer[];
    /**
     * Remove all properties, does not notify of any change
     */
    reset(): void;
    /**
     * Clones properties into a new Props object
     */
    clone(): Props;
    toString(): string;
    /**
     * ajoute un observateur à la liste
     */
    addObserver(o: Observer): void;
    /**
     * supprime un observateur de la liste
     */
    removeObserver(o: Observer): void;
    /**
     * notifie un événement aux observateurs
     */
    notifyObservers(data: any, sender?: any): void;
    /**
     * notification de changement de la valeur d'une propriété
     * @param prop nom de la propriété modifiée
     * @param val nouvelle valeur
     * @param sender objet ayant changé la valeur
     */
    private notifyPropChange;
    /**
     * Returns a copy of given map, inverting enum keys and values
     */
    static invertEnumKeysAndValuesInProperties(stringProps: any, forceNumbers?: boolean): any;
    invertEnumKeysAndValues(forceNumbers?: boolean): any;
}
//# sourceMappingURL=props.d.ts.map