import type { V as Variance } from "@principia/prelude/HKT"; import * as T from "../Task/model"; import type { Finalizer, ReleaseMap } from "./ReleaseMap"; export const URI = "Managed"; export type URI = typeof URI; export type V = Variance<"R", "-"> & Variance<"E", "+">; export class Managed { readonly [T._U]: URI; readonly [T._R]: (_: R) => void; readonly [T._E]: () => E; readonly [T._A]: () => A; constructor(readonly task: T.Task) {} } export type InferSuccess = T extends Managed ? A : never; export type IO = Managed; export type RIO = Managed; export type EIO = Managed;