/** * @since 1.0.0 */ import * as Equal from "@effect/data/Equal"; import type * as equivalence from "@effect/data/Equivalence"; import type { Inspectable } from "@effect/data/Inspectable"; import * as Option from "@effect/data/Option"; import * as order from "@effect/data/Order"; import type { Pipeable } from "@effect/data/Pipeable"; declare const TypeId: unique symbol; /** * @since 1.0.0 * @category symbol */ export type TypeId = typeof TypeId; /** * @since 1.0.0 * @category models */ export interface Duration extends Equal.Equal, Pipeable, Inspectable { readonly [TypeId]: TypeId; readonly value: DurationValue; } /** * @since 1.0.0 * @category models */ export type DurationValue = { _tag: "Millis"; millis: number; } | { _tag: "Nanos"; nanos: bigint; } | { _tag: "Infinity"; }; /** * @since 1.0.0 * @category models */ export type Unit = "nanos" | "micros" | "millis" | "seconds" | "minutes" | "hours" | "days" | "weeks"; /** * @since 1.0.0 * @category models */ export type DurationInput = Duration | number | bigint | `${number} ${Unit}`; /** * @since 1.0.0 */ export declare const decode: (input: DurationInput) => Duration; /** * @since 1.0.0 * @category guards */ export declare const isDuration: (u: unknown) => u is Duration; /** * @since 1.0.0 * @category constructors */ export declare const zero: Duration; /** * @since 1.0.0 * @category constructors */ export declare const infinity: Duration; /** * @since 1.0.0 * @category constructors */ export declare const nanos: (nanos: bigint) => Duration; /** * @since 1.0.0 * @category constructors */ export declare const micros: (micros: bigint) => Duration; /** * @since 1.0.0 * @category constructors */ export declare const millis: (millis: number) => Duration; /** * @since 1.0.0 * @category constructors */ export declare const seconds: (seconds: number) => Duration; /** * @since 1.0.0 * @category constructors */ export declare const minutes: (minutes: number) => Duration; /** * @since 1.0.0 * @category constructors */ export declare const hours: (hours: number) => Duration; /** * @since 1.0.0 * @category constructors */ export declare const days: (days: number) => Duration; /** * @since 1.0.0 * @category constructors */ export declare const weeks: (weeks: number) => Duration; /** * @since 1.0.0 * @category getters */ export declare const toMillis: (self: DurationInput) => number; /** * @since 1.0.0 * @category getters */ export declare const toSeconds: (self: DurationInput) => number; /** * Get the duration in nanoseconds as a bigint. * * If the duration is infinite, returns `Option.none()` * * @since 1.0.0 * @category getters */ export declare const toNanos: (self: DurationInput) => Option.Option; /** * Get the duration in nanoseconds as a bigint. * * If the duration is infinite, it throws an error. * * @since 1.0.0 * @category getters */ export declare const unsafeToNanos: (self: DurationInput) => bigint; /** * @since 1.0.0 * @category getters */ export declare const toHrTime: (self: DurationInput) => readonly [seconds: number, nanos: number]; /** * @since 1.0.0 * @category pattern matching */ export declare const match: { (options: { readonly onMillis: (millis: number) => A; readonly onNanos: (nanos: bigint) => B; }): (self: DurationInput) => A | B; (self: DurationInput, options: { readonly onMillis: (millis: number) => A; readonly onNanos: (nanos: bigint) => B; }): A | B; }; /** * @since 1.0.0 * @category pattern matching */ export declare const matchWith: { (that: DurationInput, options: { readonly onMillis: (self: number, that: number) => A; readonly onNanos: (self: bigint, that: bigint) => B; }): (self: DurationInput) => A | B; (self: DurationInput, that: DurationInput, options: { readonly onMillis: (self: number, that: number) => A; readonly onNanos: (self: bigint, that: bigint) => B; }): A | B; }; /** * @category instances * @since 1.0.0 */ export declare const Order: order.Order; /** * Checks if a `Duration` is between a `minimum` and `maximum` value. * * @category predicates * @since 1.0.0 */ export declare const between: { (minimum: DurationInput, maximum: DurationInput): (self: DurationInput) => boolean; (self: DurationInput, minimum: DurationInput, maximum: DurationInput): boolean; }; /** * @category instances * @since 1.0.0 */ export declare const Equivalence: equivalence.Equivalence; /** * @since 1.0.0 */ export declare const min: { (that: DurationInput): (self: DurationInput) => Duration; (self: DurationInput, that: DurationInput): Duration; }; /** * @since 1.0.0 */ export declare const max: { (that: DurationInput): (self: DurationInput) => Duration; (self: DurationInput, that: DurationInput): Duration; }; /** * @since 1.0.0 */ export declare const clamp: { (minimum: DurationInput, maximum: DurationInput): (self: DurationInput) => Duration; (self: DurationInput, minimum: DurationInput, maximum: DurationInput): Duration; }; /** * @since 1.0.0 * @category math */ export declare const times: { (times: number): (self: DurationInput) => Duration; (self: DurationInput, times: number): Duration; }; /** * @since 1.0.0 * @category math */ export declare const sum: { (that: DurationInput): (self: DurationInput) => Duration; (self: DurationInput, that: DurationInput): Duration; }; /** * @since 1.0.0 * @category predicates */ export declare const lessThan: { (that: DurationInput): (self: DurationInput) => boolean; (self: DurationInput, that: DurationInput): boolean; }; /** * @since 1.0.0 * @category predicates */ export declare const lessThanOrEqualTo: { (that: DurationInput): (self: DurationInput) => boolean; (self: DurationInput, that: DurationInput): boolean; }; /** * @since 1.0.0 * @category predicates */ export declare const greaterThan: { (that: DurationInput): (self: DurationInput) => boolean; (self: DurationInput, that: DurationInput): boolean; }; /** * @since 1.0.0 * @category predicates */ export declare const greaterThanOrEqualTo: { (that: DurationInput): (self: DurationInput) => boolean; (self: DurationInput, that: DurationInput): boolean; }; /** * @since 1.0.0 * @category predicates */ export declare const equals: { (that: DurationInput): (self: DurationInput) => boolean; (self: DurationInput, that: DurationInput): boolean; }; export {}; //# sourceMappingURL=Duration.d.ts.map