export interface HostingInfo {
    ports?: number[];
    domain?: string;
    [key: string]: unknown;
}
export interface AppStatus {
    app: string;
    status: string;
    [key: string]: unknown;
}
export interface DeployError {
    timestamp: string;
    error: string;
    [key: string]: unknown;
}
/**
 * Request a fresh hosting snapshot from the host via IPC, then read the result.
 * Falls back to reading the existing (possibly stale) hosting.json on timeout.
 */
export declare function getHostingInfo(ipcDir?: string): Promise<HostingInfo>;
export declare function getAppStatus(app?: string, ipcDir?: string): Promise<AppStatus[]>;
export declare function getDeployErrors(limit?: number, ipcDir?: string): Promise<DeployError[]>;
/**
 * Wait for an app-apply to complete, then return the final deploy status.
 * Polls {ipcDir}/hosting-status/{app}.json every 2s until stage !== building or timeout.
 */
export declare function waitForDeploy(app: string, timeoutSeconds?: number, ipcDir?: string): Promise<unknown>;
export interface LiveContainer {
    name: string;
    port: number;
    app: string | null;
    status: string;
}
export interface PortOccupancy {
    port: number;
    declaredBy: string | null;
    container: LiveContainer | null;
    conflict: boolean;
}
/**
 * Returns port occupancy for this tenant's allocated port range.
 * Requests a fresh hosting snapshot via IPC, then cross-references with usedPorts.
 * Identifies zombie containers (running on a port that isn't registered to them).
 */
export declare function getPortOccupancy(ipcDir?: string): Promise<PortOccupancy[]>;
//# sourceMappingURL=hosting.d.ts.map