import { Equals } from "@tsplus/stdlib/structure/Equals";
import { Hash } from "@tsplus/stdlib/structure/Hash";
import { FiberId } from "@effect/core/io/FiberId/definition";
/**
 * @tsplus type ets/TExit
 */
export declare type TExit<A, B> = Fail<A> | Die | Interrupt | Succeed<B> | Retry;
/**
 * @tsplus type ets/TExit/Ops
 */
export interface TExitOps {
    $: TExitAspects;
}
export declare const TExit: TExitOps;
/**
 * @tsplus type ets/TExit/Aspects
 */
export interface TExitAspects {
}
/**
 * @tsplus unify ets/TExit
 */
export declare function unifyTExit<X extends TExit<any, any>>(self: X): TExit<[
    X
] extends [TExit<infer EX, any>] ? EX : never, [
    X
] extends [TExit<any, infer AX>] ? AX : never>;
export declare class Fail<A> implements Equals {
    readonly value: A;
    readonly _tag = "Fail";
    constructor(value: A);
    [Hash.sym](): number;
    [Equals.sym](that: unknown): boolean;
}
export declare class Die implements Equals {
    readonly value: unknown;
    readonly _tag = "Die";
    constructor(value: unknown);
    [Hash.sym](): number;
    [Equals.sym](that: unknown): boolean;
}
export declare class Interrupt implements Equals {
    readonly fiberId: FiberId;
    readonly _tag = "Interrupt";
    constructor(fiberId: FiberId);
    [Hash.sym](): number;
    [Equals.sym](that: unknown): boolean;
}
export declare class Succeed<B> implements Equals {
    readonly value: B;
    readonly _tag = "Succeed";
    constructor(value: B);
    [Hash.sym](): number;
    [Equals.sym](that: unknown): boolean;
}
export declare class Retry implements Equals {
    readonly _tag = "Retry";
    [Hash.sym](): number;
    [Equals.sym](that: unknown): boolean;
}
/**
 * @tsplus static ets/TExit/Ops unit
 * @tsplus location "@effect/core/stm/TExit/definition"
 */
export declare const unit: TExit<never, void>;
/**
 * @tsplus static ets/TExit/Ops succeed
 * @tsplus location "@effect/core/stm/TExit/definition"
 */
export declare function succeed<A>(a: A): TExit<never, A>;
/**
 * @tsplus static ets/TExit/Ops fail
 * @tsplus location "@effect/core/stm/TExit/definition"
 */
export declare function fail<E>(e: E): TExit<E, never>;
/**
 * @tsplus static ets/TExit/Ops die
 * @tsplus location "@effect/core/stm/TExit/definition"
 */
export declare function die(e: unknown): TExit<never, never>;
/**
 * @tsplus static ets/TExit/Ops interrupt
 * @tsplus location "@effect/core/stm/TExit/definition"
 */
export declare function interrupt(fiberId: FiberId): TExit<never, never>;
/**
 * @tsplus static ets/TExit/Ops retry
 * @tsplus location "@effect/core/stm/TExit/definition"
 */
export declare const retry: TExit<never, never>;
//# sourceMappingURL=definition.d.ts.map