import type { Option } from "../../Option"; import type { Exit } from "../Exit"; import type { Ref } from "../XRef/model"; import * as T from "./_internal/task"; export declare type Finalizer = (exit: Exit) => T.Task; export interface ReleaseMap { readonly ref: Ref; } export interface Exited { readonly _tag: "Exited"; readonly nextKey: number; readonly exit: Exit; } export interface Running { readonly _tag: "Running"; readonly nextKey: number; readonly finalizers: ReadonlyMap; } export declare type ManagedState = Exited | Running; export declare const running: (nextKey: number, finalizers: ReadonlyMap) => Running; export declare const exited: (nextKey: number, exit: Exit) => Exited; export declare const finalizers: (state: Running) => ReadonlyMap; export declare const noopFinalizer: Finalizer; export declare function addIfOpen(finalizer: Finalizer): (_: ReleaseMap) => T.Task>; export declare function release(key: number, exit: Exit): (_: ReleaseMap) => T.Task; export declare function add(finalizer: Finalizer): (_: ReleaseMap) => T.Task; export declare const replace: ( key: number, finalizer: Finalizer ) => (_: ReleaseMap) => T.Task>; export declare const ReleaseMap: (ref: Ref) => ReleaseMap; export declare const makeReleaseMap: T.Task; //# sourceMappingURL=ReleaseMap.d.ts.map