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 }