// TODO: Add effect cause/exit etc import type { Effect, EffectTypeId } from "@effect/io/Effect" import type { Chunk, Either, Option } from "./Prelude.js" /** * @tsplus unify effect/io/Effect */ export function unifyEffect>( self: X ): Effect< [X] extends [{ readonly [EffectTypeId]: { _R: (_: never) => infer R } }] ? R : never, [X] extends [{ readonly [EffectTypeId]: { _E: (_: never) => infer E } }] ? E : never, [X] extends [{ readonly [EffectTypeId]: { _A: (_: never) => infer A } }] ? A : never > { return self } /** * @tsplus unify fp-ts/data/Chunk */ export function unifyChunk>( self: X ): Chunk<[X] extends [Chunk] ? A : never> { return self } /** * @tsplus unify fp-ts/data/Either * @tsplus unify fp-ts/data/Either.Left * @tsplus unify fp-ts/data/Either.Right */ export function unifyEither>( self: X ): Either< X extends Either.Left ? EX : never, X extends Either.Right ? AX : never > { return self } /** * @tsplus unify fp-ts/data/Option * @tsplus unify fp-ts/data/Option.Some * @tsplus unify fp-ts/data/Option.None */ export function unifyOpt>( self: X ): Option ? A : never> { return self }