/**
* @since 2.0.0
*/
import * as internal from "./internal/channel/upstreamPullRequest.js"
import type * as Types from "./Types.js"
/**
* @since 2.0.0
* @category symbols
*/
export const UpstreamPullRequestTypeId: unique symbol = internal.UpstreamPullRequestTypeId
/**
* @since 2.0.0
* @category symbols
*/
export type UpstreamPullRequestTypeId = typeof UpstreamPullRequestTypeId
/**
* @since 2.0.0
* @category models
*/
export type UpstreamPullRequest = Pulled | NoUpstream
/**
* @since 2.0.0
*/
export declare namespace UpstreamPullRequest {
/**
* @since 2.0.0
* @category models
*/
export interface Variance {
readonly [UpstreamPullRequestTypeId]: {
readonly _A: Types.Covariant
}
}
}
/**
* @since 2.0.0
* @category models
*/
export interface Pulled extends UpstreamPullRequest.Variance {
readonly _tag: "Pulled"
readonly value: A
}
/**
* @since 2.0.0
* @category models
*/
export interface NoUpstream extends UpstreamPullRequest.Variance {
readonly _tag: "NoUpstream"
readonly activeDownstreamCount: number
}
/**
* @since 2.0.0
* @category constructors
*/
export const Pulled: (value: A) => UpstreamPullRequest = internal.Pulled
/**
* @since 2.0.0
* @category constructors
*/
export const NoUpstream: (activeDownstreamCount: number) => UpstreamPullRequest = internal.NoUpstream
/**
* Returns `true` if the specified value is an `UpstreamPullRequest`, `false`
* otherwise.
*
* @since 2.0.0
* @category refinements
*/
export const isUpstreamPullRequest: (u: unknown) => u is UpstreamPullRequest = internal.isUpstreamPullRequest
/**
* Returns `true` if the specified `UpstreamPullRequest` is a `Pulled`, `false`
* otherwise.
*
* @since 2.0.0
* @category refinements
*/
export const isPulled: (self: UpstreamPullRequest) => self is Pulled = internal.isPulled
/**
* Returns `true` if the specified `UpstreamPullRequest` is a `NoUpstream`,
* `false` otherwise.
*
* @since 2.0.0
* @category refinements
*/
export const isNoUpstream: (self: UpstreamPullRequest) => self is NoUpstream = internal.isNoUpstream
/**
* Folds an `UpstreamPullRequest` into a value of type `Z`.
*
* @since 2.0.0
* @category folding
*/
export const match: {
/**
* Folds an `UpstreamPullRequest` into a value of type `Z`.
*
* @since 2.0.0
* @category folding
*/
(
options: {
readonly onPulled: (value: A) => Z
readonly onNoUpstream: (activeDownstreamCount: number) => Z
}
): (self: UpstreamPullRequest) => Z
/**
* Folds an `UpstreamPullRequest` into a value of type `Z`.
*
* @since 2.0.0
* @category folding
*/
(
self: UpstreamPullRequest,
options: {
readonly onPulled: (value: A) => Z
readonly onNoUpstream: (activeDownstreamCount: number) => Z
}
): Z
} = internal.match