import { Equals } from "@tsplus/stdlib/structure/Equals";
import { Hash } from "@tsplus/stdlib/structure/Hash";
import { FiberId } from "@effect/core/io/FiberId/definition";
import { TraceElement } from "@effect/core/io/TraceElement/definition";
export declare const FiberStatusSym: unique symbol;
export declare type FiberStatusSym = typeof FiberStatusSym;
/**
 * @tsplus type ets/Fiber/Status
 */
export declare type FiberStatus = Done | Running | Suspended;
/**
 * @tsplus type ets/Fiber/Status/Ops
 */
export interface FiberStatusOps {
}
export declare const FiberStatus: FiberStatusOps;
export declare class Done implements Equals {
    readonly _tag = "Done";
    readonly [FiberStatusSym]: FiberStatusSym;
    [Hash.sym](): number;
    [Equals.sym](that: unknown): boolean;
}
export declare class Running implements Equals {
    readonly interrupting: boolean;
    readonly _tag = "Running";
    readonly [FiberStatusSym]: FiberStatusSym;
    constructor(interrupting: boolean);
    [Hash.sym](): number;
    [Equals.sym](that: unknown): boolean;
}
export declare class Suspended implements Equals {
    readonly interrupting: boolean;
    readonly interruptible: boolean;
    readonly asyncs: number;
    readonly blockingOn: FiberId;
    readonly asyncTrace: TraceElement;
    readonly _tag = "Suspended";
    readonly [FiberStatusSym]: FiberStatusSym;
    constructor(interrupting: boolean, interruptible: boolean, asyncs: number, blockingOn: FiberId, asyncTrace: TraceElement);
    [Hash.sym](): number;
    [Equals.sym](that: unknown): boolean;
}
/**
 * @tsplus static ets/Fiber/Status/Ops isFiberStatus
 * @tsplus location "@effect/core/io/Fiber/status"
 */
export declare function isFiberStatus(u: unknown): u is FiberStatus;
/**
 * @tsplus static ets/Fiber/Status/Ops Done
 * @tsplus location "@effect/core/io/Fiber/status"
 */
export declare const statusDone: FiberStatus;
/**
 * @tsplus static ets/Fiber/Status/Ops Running
 * @tsplus location "@effect/core/io/Fiber/status"
 */
export declare function statusRunning(interrupting: boolean): FiberStatus;
/**
 * @tsplus static ets/Fiber/Status/Ops Suspended
 * @tsplus location "@effect/core/io/Fiber/status"
 */
export declare function statusSuspended(interrupting: boolean, interruptible: boolean, asyncs: number, blockingOn: FiberId, asyncTrace: TraceElement): FiberStatus;
/**
 * @tsplus getter ets/Fiber/Status isInterrupting
 * @tsplus location "@effect/core/io/Fiber/status"
 */
export declare function isInterrupting(self: FiberStatus): boolean;
/**
 * @tsplus fluent ets/Fiber/Status withInterrupting
 * @tsplus location "@effect/core/io/Fiber/status"
 */
export declare function withInterrupting(self: FiberStatus, newInterrupting: boolean): FiberStatus;
//# sourceMappingURL=status.d.ts.map