import { Effect } from "@effect/core/io/Effect/definition";
import { LazyArg, Lazy } from "@tsplus/stdlib/data/Function";
import { Duration } from "@tsplus/stdlib/data/Duration";
import { Tag } from "@tsplus/stdlib/service/Tag";
export declare const ClockSym: unique symbol;
export declare type ClockSym = typeof ClockSym;
/**
 * @tsplus type ets/Clock
 */
export interface Clock {
    readonly [ClockSym]: ClockSym;
    readonly currentTime: Effect<never, never, number>;
    readonly unsafeCurrentTime: number;
    readonly scheduler: Effect<never, never, Clock.Scheduler>;
    readonly sleep: (duration: LazyArg<Duration>, __tsplusTrace?: string) => Effect<never, never, void>;
}
/**
 * @tsplus type ets/Clock/Ops
 */
export interface ClockOps {
    $: ClockAspects;
    Scheduler: SchedulerOps;
    Tag: Tag<Clock>;
}
export declare const Clock: ClockOps;
/**
 * @tsplus type ets/Clock/Aspects
 */
export interface ClockAspects {
}
/**
 * @tsplus type ets/Clock/Scheduler/Ops
 */
export interface SchedulerOps {
}
export declare namespace Clock {
    type CancelToken = Lazy<boolean>;
    /**
     * @tsplus type ets/Clock/Scheduler
     */
    interface Scheduler {
        readonly unsafeSchedule: (task: () => void, duration: Duration) => CancelToken;
    }
}
/**
 * @tsplus static ets/Clock/Ops MAX_TIMER_MILLIS
 * @tsplus location "@effect/core/io/Clock/definition"
 */
export declare const MAX_TIMER_MILLIS: number;
/**
 * @tsplus static ets/Clock/Scheduler/Ops globalScheduler
 * @tsplus location "@effect/core/io/Clock/definition"
 */
export declare const globalScheduler: Clock.Scheduler;
//# sourceMappingURL=definition.d.ts.map