import { FutureAwareContainer, FutureContainer, IFutureModel, MultiFutureAware } from './future-types';

export declare class MultipleFutureHandler<T extends {} = Record<string, unknown>> implements FutureAwareContainer<T>, MultiFutureAware<T> {
    private futures;
    private defaultContext;
    private context;
    private disposers;
    private container?;
    constructor(container?: FutureContainer<T>, defaultContext?: string);
    get allFutures(): IFutureModel<T>[];
    get future(): IFutureModel<T> | undefined;
    addFuture(future: IFutureModel<T>, alias?: string): void;
    removeFuture(alias?: string): void;
    getFuture(alias?: string): IFutureModel<T> | undefined;
    get futureMap(): Map<string, IFutureModel<T>>;
}
export declare class FutureHandler<T extends object = Record<string, unknown>> implements FutureAwareContainer<T> {
    private disposer?;
    private _future?;
    private container?;
    constructor(container?: FutureContainer<T>);
    removeFuture(): void;
    get future(): IFutureModel<T> | undefined;
    getFuture(): IFutureModel<T> | undefined;
    addFuture(future: IFutureModel<T>): void;
    onFutureUpdate?: ((future: IFutureModel<T>) => void) | undefined;
    get allFutures(): IFutureModel<T>[];
    get timeRemaining(): string;
    get status(): string;
    get progress(): number;
    cancel(): Promise<void>;
}
//# sourceMappingURL=future-aware.d.ts.map