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 type THubSym = typeof THubSym;
export declare const _A: unique symbol;
export type _A = typeof _A;
export declare namespace THub {
type Node = NodeInternal;
type Strategy = BackPressure | Dropping | Sliding;
interface TDequeue extends TDequeueInternal {
}
}
/**
* A `THub` is a transactional message hub. Publishers can publish messages to
* the hub and subscribers can subscribe to take messages from the hub.
*
* @tsplus type effect/core/stm/THub
*/
export interface THub {
}
/**
* @tsplus type effect/core/stm/THub.Ops
*/
export interface THubOps {
$: THubAspects;
Node: NodeOps;
TDequeue: TDequeueOps;
}
export declare const THub: THubOps;
/**
* @tsplus type effect/core/stm/THub.Aspects
*/
export interface THubAspects {
}
export interface BackPressure {
_tag: "BackPressure";
}
export interface Dropping {
_tag: "Dropping";
}
export interface Sliding {
_tag: "Sliding";
}
/**
* A strategy that retries if the hub is at capacity.
* @tsplus static effect/core/stm/THub.Ops BackPressure
* @tsplus location "@effect/core/stm/THub/definition/THub"
*/
export declare const BackPressure: THub.Strategy;
/**
* A strategy that drops new messages if the hub is at capacity.
* @tsplus static effect/core/stm/THub.Ops Dropping
* @tsplus location "@effect/core/stm/THub/definition/THub"
*/
export declare const Dropping: THub.Strategy;
/**
* A strategy that drops old messages if the hub is at capacity.
* @tsplus static effect/core/stm/THub.Ops Sliding
* @tsplus location "@effect/core/stm/THub/definition/THub"
*/
export declare const Sliding: THub.Strategy;
//# sourceMappingURL=THub.d.ts.map