import { PlatformBindings } from './PlatformBindings.js';
import type { TelemetryConfig } from '@api-client/core/config/index.js';
export declare const KeyPrefix = "api-client.config.";
export declare const TelemetryKey = "api-client.config.telemetry";
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 TelemetryConfiguration {
    /**
     * Reads the set telemetry configuration. If the configuration is missing a default value is returned.
     */
    read(): Promise<TelemetryConfig>;
    /**
     * Sets the configuration for telemetry.
     *
     * @param config The configuration to set.
     */
    set(config: TelemetryConfig): 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;
    initialize(): Promise<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