import "../../Operator/index.js"; import type { Option } from "../../Option/index.js"; import * as P from "../../Promise/index.js"; import * as T from "../_internal/effect.js"; import * as R from "../_internal/ref.js"; declare type State = Empty | Full; declare class Empty { readonly notifyConsumer: P.Promise; readonly _tag = "Empty"; constructor(notifyConsumer: P.Promise); } declare class Full { readonly a: A; readonly notifyProducer: P.Promise; readonly _tag = "Full"; constructor(a: A, notifyProducer: P.Promise); } /** * 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: R.Ref>; readonly _tag = "Handoff"; constructor(ref: R.Ref>); } export declare function make(): T.UIO>; export declare function offer_(h: Handoff, a: A): T.UIO; export declare function offer(a: A): (h: Handoff) => T.UIO; export declare function take(h: Handoff): T.UIO; export declare function poll(h: Handoff): T.UIO>; export {}; //# sourceMappingURL=index.d.ts.map