import { Chunk } from "@tsplus/stdlib/collections/Chunk/definition";
import { MutableQueue } from "@tsplus/stdlib/collections/mutable/MutableQueue/definition";
import { Deferred } from "@effect/core/io/Deferred/definition";
import { AtomicBoolean } from "@tsplus/stdlib/data/AtomicBoolean";
import { Effect } from "@effect/core/io/Effect/definition";
import { EmptyMutableQueue } from "@tsplus/stdlib/collections/mutable/MutableQueue";
/**
* @tsplus type effect/core/io/Queue/Strategy
*/
export interface Strategy {
readonly handleSurplus: (as: Chunk, queue: MutableQueue, takers: MutableQueue>, isShutdown: AtomicBoolean) => Effect;
readonly unsafeOnQueueEmptySpace: (queue: MutableQueue, takers: MutableQueue>) => void;
readonly surplusSize: number;
readonly shutdown: Effect;
}
/**
* @tsplus type effect/core/io/Queue/Strategy.Ops
*/
export interface StrategyOps {
}
export declare const Strategy: StrategyOps;
export declare class DroppingStrategy implements Strategy {
handleSurplus(_as: Chunk, _queue: MutableQueue, _takers: MutableQueue>, _isShutdown: AtomicBoolean): Effect;
unsafeOnQueueEmptySpace(_queue: MutableQueue): void;
get surplusSize(): number;
get shutdown(): Effect;
}
export declare class SlidingStrategy implements Strategy {
handleSurplus(as: Chunk, queue: MutableQueue, takers: MutableQueue>, _isShutdown: AtomicBoolean): Effect;
unsafeOnQueueEmptySpace(_queue: MutableQueue): void;
get surplusSize(): number;
get shutdown(): Effect;
private unsafeSlidingOffer;
}
/**
* @tsplus static effect/core/io/Queue/Strategy.Ops Sliding
* @tsplus location "@effect/core/io/Queue/operations/strategy"
*/
export declare function slidingStrategy(): SlidingStrategy;
/**
* @tsplus static effect/core/io/Queue/Strategy.Ops Dropping
* @tsplus location "@effect/core/io/Queue/operations/strategy"
*/
export declare function dropppingStrategy(): DroppingStrategy;
//# sourceMappingURL=strategy.d.ts.map