import { Maybe } from "@tsplus/stdlib/data/Maybe/definition";
/**
 * @tsplus type ets/Channel/UpstreamPullStrategy
 */
export declare type UpstreamPullStrategy<A> = PullAfterNext<A> | PullAfterAllEnqueued<A>;
export declare class PullAfterNext<A> {
    readonly emitSeparator: Maybe<A>;
    readonly _tag = "PullAfterNext";
    constructor(emitSeparator: Maybe<A>);
}
export declare class PullAfterAllEnqueued<A> {
    readonly emitSeparator: Maybe<A>;
    readonly _tag = "PullAfterAllEnqueued";
    constructor(emitSeparator: Maybe<A>);
}
/**
 * @tsplus type ets/Channel/UpstreamPullStrategy/Ops
 */
export interface UpstreamPullStrategyOps {
}
export declare const UpstreamPullStrategy: UpstreamPullStrategyOps;
/**
 * @tsplus unify ets/Channel/UpstreamPullStrategy
 */
export declare function unifyUpstreamPullStrategy<X extends UpstreamPullStrategy<any>>(self: X): UpstreamPullStrategy<[X] extends [UpstreamPullStrategy<infer AX>] ? AX : never>;
/**
 * @tsplus static ets/Channel/UpstreamPullStrategy/Ops PullAfterNext
 * @tsplus location "@effect/core/stream/Channel/UpstreamPullStrategy"
 */
export declare function pullAfterNext<A>(emitSeparator: Maybe<A>): UpstreamPullStrategy<A>;
/**
 * @tsplus static ets/Channel/UpstreamPullStrategy/Ops PullAfterAllEnqueued
 * @tsplus location "@effect/core/stream/Channel/UpstreamPullStrategy"
 */
export declare function pullAfterAllEnqueued<A>(emitSeparator: Maybe<A>): UpstreamPullStrategy<A>;
//# sourceMappingURL=UpstreamPullStrategy.d.ts.map