import { Optional } from "matrix-events-sdk";
import { SnakedObject } from "./utils/SnakedObject";
import { IConfigOptions, ISsoRedirectOptions } from "./IConfigOptions";
import { DeepReadonly, Defaultize } from "./@types/common";
export declare const DEFAULTS: DeepReadonly<IConfigOptions>;
export type ConfigOptions = Defaultize<IConfigOptions, typeof DEFAULTS>;
type ObjectType<K extends keyof IConfigOptions> = IConfigOptions[K] extends object ? SnakedObject<NonNullable<IConfigOptions[K]>> : Optional<SnakedObject<NonNullable<IConfigOptions[K]>>>;
export default class SdkConfig {
    private static instance;
    private static fallback;
    private static setInstance;
    static get(): IConfigOptions;
    static get<K extends keyof IConfigOptions>(key: K, altCaseName?: string): IConfigOptions[K];
    static getObject<K extends keyof IConfigOptions>(key: K, altCaseName?: string): ObjectType<K>;
    static put(cfg: DeepReadonly<ConfigOptions>): void;
    /**
     * Resets the config.
     */
    static reset(): void;
    static add(cfg: Partial<ConfigOptions>): void;
}
export declare function parseSsoRedirectOptions(config: IConfigOptions): ISsoRedirectOptions;
export {};
