import { PlatformBindings } from './PlatformBindings.js';
import { IConfigEnvironment, ITelemetryConfig, IEnvConfig } from '../../lib/config/Config.js';
export declare const KeyPrefix = "api-client.config.";
export declare const EnvironmentsKey: string;
export declare const TelemetryKey: string;
export interface LocalConfiguration {
    /**
     * Reads a previously stored local value.
     *
     * @param key The key under which the property was stored.
     * @returns The configuration value or undefined when not found.
     */
    get(key: string): Promise<unknown | undefined>;
    /**
     * Sets a config property that is permanently stored.
     *
     * @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): Promise<void>;
    /**
     * Deletes previously stored local value.
     *
     * @param key The key under which the property was stored.
     */
    delete(key: string): Promise<void>;
}
export interface SessionConfiguration {
    /**
     * Reads a previously stored session value.
     *
     * @param key The key under which the property was stored.
     * @returns The configuration value or undefined when not found.
     */
    get(key: string): Promise<unknown | undefined>;
    /**
     * 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): Promise<void>;
    /**
     * Deletes previously stored session value.
     *
     * @param key The key under which the property was stored.
     */
    delete(key: string): Promise<void>;
}
export interface AddConfigEnvironmentInit {
    /**
     *  Whether to set this environment asd default. Default to `false`.
     */
    asDefault?: boolean;
}
export interface EnvironmentConfiguration {
    /**
     * Adds a new environment configuration to the application permanent storage.
     * This is not synchronized between applications.
     *
     * @param env The environment to add.
     * @param init Add configuration environment options.
     */
    add(env: IConfigEnvironment, init?: AddConfigEnvironmentInit): Promise<void>;
    /**
     * Updates an existing environment.
     *
     * @param env The environment to update
     */
    update(env: IConfigEnvironment): 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.
     */
    read(id?: string): Promise<IConfigEnvironment>;
    /**
     * Removes an environment from the permanent store.
     * @param id The key of the environment to remove.
     */
    remove(id: string): Promise<void>;
    /**
     * Sets the environment as default.
     *
     * @param id The key of the environment to set as default.
     */
    setDefault(id: string): Promise<void>;
    /**
     * Lists all environments in the store.
     */
    list(): Promise<IEnvConfig>;
}
export interface TelemetryConfiguration {
    /**
     * Reads the set telemetry configuration. If the configuration is missing a default value is returned.
     */
    read(): Promise<ITelemetryConfig>;
    /**
     * Sets the configuration for telemetry.
     *
     * @param config The configuration to set.
     */
    set(config: ITelemetryConfig): Promise<void>;
}
/**
 * The base class for application settings bindings.
 */
export declare abstract class ConfigurationBindings extends PlatformBindings {
    abstract local: LocalConfiguration;
    abstract session: SessionConfiguration;
    abstract telemetry: TelemetryConfiguration;
    abstract environment: EnvironmentConfiguration;
    initialize(): Promise<void>;
    protected addEnvironmentHandler(input: Event): void;
    protected updateEnvironmentHandler(input: Event): void;
    protected readEnvironmentHandler(input: Event): void;
    protected removeEnvironmentHandler(input: Event): void;
    protected setDefaultHandler(input: Event): void;
    protected listEnvironmentsHandler(input: Event): void;
    protected getSessionHandler(input: Event): void;
    protected setSessionHandler(input: Event): void;
    protected deleteSessionHandler(input: Event): void;
    protected getLocalHandler(input: Event): void;
    protected setLocalHandler(input: Event): void;
    protected deleteLocalHandler(input: Event): void;
    protected telemetryReadHandler(input: Event): void;
    protected telemetrySetHandler(input: Event): void;
}
//# sourceMappingURL=ConfigurationBindings.d.ts.map