///
import { Observable } from 'rxjs';
import { Dayjs, ConfigType } from 'dayjs';
import { IDuration, TimeUnit } from '@platform/types';
export { IDuration, TimeUnit };
export declare type TimeDelay = (msecs: number, callback?: () => T) => TimeDelayPromise;
export declare type TimeDelayPromise = Promise & {
id: NodeJS.Timeout;
isCancelled: boolean;
cancel(): void;
result: T | undefined;
};
export declare type TimeWait = (msecs: number | Observable) => Promise;
export declare type TimeElapsed = (from: DateInput, options?: {
to?: DateInput;
round?: number;
}) => IDuration;
export declare type DayFactory = (config?: ConfigType) => Dayjs;
export declare type DateInput = number | string | Date | Dayjs;
export declare type ITime = {
delay: TimeDelay;
wait: TimeWait;
elapsed: TimeElapsed;
day: DayFactory;
now: IDate;
timezone: string;
utc(input?: Date | number): IDate;
timer(start?: Date, options?: {
round?: number;
}): ITimer;
duration(msec: number | string, options?: {
round?: number;
}): IDuration;
};
export declare type IDate = {
date: Date;
timestamp: number;
unix: number;
format(template?: string): string;
};
export declare type ITimer = {
startedAt: Date;
reset: () => ITimer;
elapsed: IDuration;
};