import { ITelemetryConfig, IConfigEnvironment, IEnvConfig } from '../lib/config/Config.js';
export declare const ConfigEvents: Readonly<{
    Environment: Readonly<{
        /**
         * Adds the environment to the store.
         *
         * @param env The environment to add.
         * @param asDefault Whether to set the environment as default.
         * @param target Optional events target.
         */
        add: (env: IConfigEnvironment, asDefault?: boolean, target?: EventTarget) => Promise<void>;
        /**
         * Updates an environment
         *
         * @param env The environment to update.
         * @param target Optional events target.
         */
        update: (env: IConfigEnvironment, target?: EventTarget) => Promise<void>;
        /**
         * Reads the definition of an environment.
         *
         * @param id The key of the environment to read. When not set it reads the default environment.
         * @param target Optional events target.
         */
        read: (id?: string, target?: EventTarget) => Promise<IConfigEnvironment>;
        /**
         * Removes an environment from the permanent store.
         *
         * @param id The key of the environment to remove.
         * @param target Optional events target.
         */
        delete: (id: string, target?: EventTarget) => Promise<void>;
        /**
         * Sets the environment as default.
         *
         * @param id The key of the environment to set as default.
         * @param target Optional events target.
         */
        setDefault: (id: string, target?: EventTarget) => Promise<void>;
        /**
         * Lists all configured environments.
         *
         * @param target Optional events target.
         */
        list: (target?: EventTarget) => Promise<IEnvConfig>;
        State: Readonly<{
            /**
             * Informs the application that an environment has been created.
             *
             * @param env Creates environment.
             * @param isDefault Whether the created environment is a default environment
             * @param target Optional events target.
             */
            created: (env: IConfigEnvironment, isDefault: boolean, target?: EventTarget) => void;
            /**
             * Informs the application that an environment has been deleted.
             *
             * @param id The key of the environment
             * @param target Optional events target.
             */
            deleted: (id: string, target?: EventTarget) => void;
            /**
             * Informs the application that an environment has been deleted.
             *
             * @param env The updated environment.
             * @param target Optional events target.
             */
            updated: (env: IConfigEnvironment, target?: EventTarget) => void;
            /**
             * Informs the application that a default environment has changed.
             *
             * @param id The key of the environment.
             * @param target Optional events target.
             */
            defaultChange: (id: string, target?: EventTarget) => void;
        }>;
    }>;
    Session: Readonly<{
        /**
         * Sets a config property that is held in the storage only for the time of the current session.
         *
         * @param key The key under to store the value.
         * @param value The value to store. If this is not a primitive it will be serialized with `JSON.stringify()`.
         */
        set: (key: string, value: unknown, target?: EventTarget) => Promise<void>;
        /**
         * Reads a previously stored session value.
         *
         * @param key The key under which the property was stored.
         */
        get: (key: string, target?: EventTarget) => Promise<unknown | undefined>;
        /**
         * Deletes previously stored session value.
         *
         * @param key The key under which the property was stored.
         */
        delete: (key: string, target?: EventTarget) => Promise<void>;
    }>;
    Local: Readonly<{
        /**
         * Sets a config property that is permanently stored.
         * This is not the same as application configuration. This can be used to store specific configuration
         * property for a single view.
         *
         * @param key The key under to store the value.
         * @param value The value to store. If this is not a primitive it will be serialized with `JSON.stringify()`.
         */
        set: (key: string, value: unknown, target?: EventTarget) => Promise<void>;
        /**
         * Reads a previously stored local value.
         *
         * @param key The key under which the property was stored.
         * @param globalKey If known, the key of the configuration property in the application
         * global configuration. When set and the value in the local storage is not set, then
         * the config store reads the value from the application configuration.
         */
        get: (key: string, globalKey?: string, target?: EventTarget) => Promise<unknown | undefined>;
        /**
         * Deletes previously stored local value.
         *
         * @param key The key under which the property was stored.
         */
        delete: (key: string, target?: EventTarget) => Promise<void>;
    }>;
    Telemetry: Readonly<{
        /**
         * Sets the configuration for telemetry.
         *
         * @param config The configuration to set.
         * @param target Optional events target.
         */
        set: (config: ITelemetryConfig, target?: EventTarget) => Promise<void>;
        /**
         * Reads the set telemetry configuration. If the configuration is missing a default value is returned.
         *
         * @param target Optional events target
         */
        read: (target?: EventTarget) => Promise<ITelemetryConfig>;
        State: Readonly<{
            /**
             * Dispatched to inform the application that the new telemetry state has been set.
             *
             * @param config The set configuration.
             * @param target Optional events target.
             */
            set: (config: ITelemetryConfig, target?: EventTarget) => void;
        }>;
    }>;
}>;
//# sourceMappingURL=ConfigEvents.d.ts.map