import type { Option } from "../../../Option"; import * as T from "../../Task"; import * as XP from "../../XPromise"; import * as XR from "../../XRef"; declare type State = Empty | Full; declare class Empty { readonly notifyConsumer: XP.XPromise; readonly _tag = "Empty"; constructor(notifyConsumer: XP.XPromise); } declare class Full { readonly a: A; readonly notifyProducer: XP.XPromise; readonly _tag = "Full"; constructor(a: A, notifyProducer: XP.XPromise); } /** * A synchronous queue-like abstraction that allows a producer to offer * an element and wait for it to be taken, and allows a consumer to wait * for an element to be available. */ declare class Handoff { readonly ref: XR.Ref>; readonly _tag = "Handoff"; constructor(ref: XR.Ref>); } export declare function make(): T.IO>; export declare function offer(a: A): (h: Handoff) => T.IO; export declare function take(h: Handoff): T.IO; export declare function poll(h: Handoff): T.IO>; export {}; //# sourceMappingURL=Handoff.d.ts.map