import type { IFailure, ISuccess } from "@effect/core/io/Effect/definition/primitives"
/**
* @tsplus type effect/core/io/Exit/Success
*/
export interface Success extends ISuccess, Equals {}
/**
* @tsplus type effect/core/io/Exit/Failure
*/
export interface Failure extends IFailure, Equals {}
/**
* @tsplus type effect/core/io/Exit
*/
export type Exit = Success | Failure
/**
* @tsplus type effect/core/io/Exit.Ops
*/
export interface ExitOps {
$: ExitAspects
}
export const Exit: ExitOps = {
$: {}
}
/**
* @tsplus type effect/core/io/Exit.Aspects
*/
export interface ExitAspects {}
/**
* @tsplus unify effect/core/io/Exit/Success
* @tsplus unify effect/core/io/Exit/Failure
*/
export function unifyExit>(
self: X
): Exit<
X extends Failure ? EX : never,
X extends Success ? AX : never
> {
return self
}