export interface IResolve<T> {
    (value?: T | PromiseLike<T>): void;
}
export interface IReject {
    (reason?: any): void;
}
export type TDeferredStatus = 'pending' | 'fulfilled' | 'rejected';
export declare class Deferred<T> {
    promise: Promise<T>;
    resolve: IResolve<T>;
    reject: IReject;
    status: TDeferredStatus;
    claimed: boolean;
    claim(): void;
    startedAt: number;
    stoppedAt: number;
    get duration(): number;
    constructor();
}
export declare const defer: <T>() => Deferred<T>;
