/**
* @tsplus type effect/core/stream/Channel/UpstreamPullRequest
*/
export type UpstreamPullRequest = Pulled | NoUpstream
export class Pulled {
readonly _tag = "Pulled"
constructor(readonly value: A) {}
}
export class NoUpstream {
readonly _tag = "NoUpstream"
constructor(readonly activeDownstreamCount: number) {}
}
/**
* @tsplus type effect/core/stream/Channel/UpstreamPullRequest.Ops
*/
export interface UpstreamPullRequestOps {}
export const UpstreamPullRequest: UpstreamPullRequestOps = {}
/**
* @tsplus unify effect/core/stream/Channel/UpstreamPullRequest
*/
export function unifyUpstreamPullRequest>(
self: X
): UpstreamPullRequest<[X] extends [UpstreamPullRequest] ? AX : never> {
return self
}
/**
* @tsplus static effect/core/stream/Channel/UpstreamPullRequest.Ops Pulled
*/
export function pulled(value: A): UpstreamPullRequest {
return new Pulled(value)
}
/**
* @tsplus static effect/core/stream/Channel/UpstreamPullRequest.Ops NoUpstream
*/
export function noUpstream(activeDownstreamCount: number): UpstreamPullRequest {
return new NoUpstream(activeDownstreamCount)
}