import type { JsonValue } from "../sync/json-path.js";
import { type ProbeResult } from "./ui-status-json.js";
export type { ProbeResult } from "./ui-status-json.js";
/** One bounded, independently executable live-status probe. */
export interface StatusProbe<T extends JsonValue = JsonValue> {
    /** Stable identifier used as the status endpoint's object key. */
    readonly id: string;
    /** Abort-aware operation returning an explicit tri-state result. */
    readonly run: (signal: AbortSignal) => Promise<ProbeResult<T>>;
    /** Maximum time the status endpoint will await this probe. */
    readonly timeoutMs: number;
}
/** Injectable check used by the reference GitHub authentication probe. */
export type GithubAuthCheck = (cwd: string, timeoutMs: number, signal: AbortSignal, hostname: string) => Promise<"authenticated" | "not-authenticated">;
/** Injectable effective-origin reader used by the GitHub reference probe. */
export type GitRemoteReader = (cwd: string, timeoutMs: number, signal: AbortSignal) => Promise<string>;
/**
 * Run one probe without allowing it to block siblings or fabricate data.
 * @param probe - Probe to execute
 * @returns Explicit result, or unknown for invalid input, failure, or timeout
 */
export declare function runProbe<T extends JsonValue>(probe: StatusProbe<T>): Promise<ProbeResult<T>>;
/**
 * Create the reference GitHub authentication probe.
 * @param cwd - Project root used as the command working directory
 * @param check - Injectable command check used by focused tests
 * @param readRemote - Injectable effective-origin reader used by focused tests
 * @returns Reference probe for the live-status transport
 */
export declare function createGithubAuthProbe(cwd: string, check?: GithubAuthCheck, readRemote?: GitRemoteReader): StatusProbe<boolean>;
/**
 * Validate probe keys before binding a server so status snapshots cannot lose data.
 * @param probes - Registered status probes
 */
export declare function validateStatusProbes(probes: readonly StatusProbe[]): void;
/**
 * Execute all probes concurrently, with failures isolated per probe.
 * @param probes - Probes to execute
 * @returns Results keyed by stable probe identifier
 */
export declare function readStatusSnapshot(probes: readonly StatusProbe[]): Promise<Record<string, ProbeResult>>;
//# sourceMappingURL=ui-status.d.ts.map