export type GitStatusExecFn = (file: string, args: string[], cwd: string) => Promise<{ stdout: string; stderr: string; }>; export interface GitStatusSamplerOptions { cwd: string | (() => string); exec?: GitStatusExecFn; prTtlMs?: number; branchTtlMs?: number; now?: () => number; timeoutMs?: number; onUpdate?: () => void; } export declare class GitStatusSampler { private readonly getCwd; private lastSampledCwd; private readonly exec; private readonly prTtlMs; private readonly branchTtlMs; private readonly now; private onUpdate; private branch; private pr; private prBranch; private prFetchedAt; private branchFetchedAt; private branchInFlight; private prInFlight; private disposed; private resetToken; constructor(opts: GitStatusSamplerOptions); setOnUpdate(cb: (() => void) | undefined): void; getBranch(): string | undefined; getPr(): number | undefined; refresh(opts?: { blockOnPr?: boolean; }): Promise; reset(): void; dispose(): void; private updateBranch; private notify; private gitBranch; private maybeFetchPr; }