import { ProviderHandler, ProviderName, Providers, ProviderType } from './types';
export default class ProviderFactory {
    private providers;
    private subscribers;
    static create(providers: Providers & {
        [key: string]: Promise<any> | undefined;
    }): ProviderFactory;
    destroy(): void;
    isEmpty(): boolean;
    setProvider<T extends ProviderName>(name: T, provider?: ProviderType<T>): void;
    removeProvider<T extends string>(name: T | ProviderName): void;
    subscribe<T extends string>(name: T, handler: ProviderHandler<typeof name>): void;
    unsubscribe<T extends string>(name: T, handler: ProviderHandler<typeof name>): void;
    unsubscribeAll<T extends string>(name: T | ProviderName): void;
    hasProvider<T extends string>(name: T | ProviderName): boolean;
    notifyUpdated<T extends string>(name: T, provider?: ProviderType<typeof name>): void;
}
