import type { Node as NodeInternal, NodeOps } from "@effect/core/stm/THub/definition/Node";
import type { TDequeue as TDequeueInternal } from "@effect/core/stm/THub/definition/TDequeue";
import { TDequeueOps } from "@effect/core/stm/THub/definition/TDequeue";
export declare const THubSym: unique symbol;
export declare type THubSym = typeof THubSym;
export declare const _A: unique symbol;
export declare type _A = typeof _A;
export declare namespace THub {
    type Node<A> = NodeInternal<A>;
    type Strategy = BackPressure | Dropping | Sliding;
    interface TDequeue<A> extends TDequeueInternal<A> {
    }
}
/**
 * A `THub` is a transactional queue. Offerors can offer values to the queue
 * and takers can take values from the queue.
 *
 * @tsplus type ets/THub
 */
export interface THub<A> {
}
/**
 * @tsplus type ets/THub/Ops
 */
export interface THubOps {
    $: THubAspects;
    Node: NodeOps;
    TDequeue: TDequeueOps;
}
export declare const THub: THubOps;
/**
 * @tsplus type ets/THub/Aspects
 */
export interface THubAspects {
}
export interface BackPressure {
    _tag: "BackPressure";
}
export interface Dropping {
    _tag: "Dropping";
}
export interface Sliding {
    _tag: "Sliding";
}
/**
 * @tsplus static ets/THub/Ops BackPressure
 * @tsplus location "@effect/core/stm/THub/definition/THub"
 */
export declare const BackPressure: THub.Strategy;
/**
 * @tsplus static ets/THub/Ops Dropping
 * @tsplus location "@effect/core/stm/THub/definition/THub"
 */
export declare const Dropping: THub.Strategy;
/**
 * @tsplus static ets/THub/Ops Sliding
 * @tsplus location "@effect/core/stm/THub/definition/THub"
 */
export declare const Sliding: THub.Strategy;
//# sourceMappingURL=THub.d.ts.map