export enum TipState { Unknown, Unborn, Detached, Valid, } export interface IUnknownRepository { readonly kind: TipState.Unknown; } export interface IUnbornRepository { readonly kind: TipState.Unborn; /** * The symbolic reference that the unborn repository points to currently. * * Typically this will be "master" but a user can easily create orphaned * branches externally. */ readonly ref: string; } export interface IDetachedHead { readonly kind: TipState.Detached; /** * The commit identifier of the current tip of the repository. */ readonly currentSha: string; } export type Tip = | IUnknownRepository | IUnbornRepository | IDetachedHead ;