import { Subscription } from 'rxjs';
export interface ISubjectHolder<T> {
    subscribe(callback: (data?: T) => void): Subscription;
    current(): T | undefined;
    resetData(): void;
    refreshData(callback?: () => void): void;
}
export declare class SubjectHolder<T> implements ISubjectHolder<T> {
    private readonly subject;
    private data?;
    private asyncGetData?;
    private sending;
    constructor(asyncGetData?: () => Promise<T>);
    subscribe(callback: (data?: T) => void): Subscription;
    private getData;
    resetData(): void;
    refreshData(callback?: () => void): void;
    current(): T | undefined;
}
export declare function lazyHolderSingletonGetter<T>(supplier: () => ISubjectHolder<T>): () => ISubjectHolder<T>;
