import { z } from "zod";
import { type moveToSchema } from "./dispatch.js";
type MoveTo = z.infer<typeof moveToSchema>;
import { type DispatchHost } from "./dispatch-hosts.js";
import { type Json } from "./protocol.js";
declare const availability: z.ZodObject<{
    computerId: z.ZodOptional<z.ZodString>;
    hasCheckout: z.ZodBoolean;
    harnesses: z.ZodArray<z.ZodObject<{
        source: z.ZodEnum<{
            claude: "claude";
            codex: "codex";
            copilot: "copilot";
            opencode: "opencode";
        }>;
        usable: z.ZodBoolean;
        reason: z.ZodOptional<z.ZodString>;
        accounts: z.ZodOptional<z.ZodArray<z.ZodObject<{
            id: z.ZodString;
            label: z.ZodString;
            usable: z.ZodBoolean;
            signedIn: z.ZodBoolean;
            email: z.ZodOptional<z.ZodString>;
            plan: z.ZodOptional<z.ZodString>;
            current: z.ZodDefault<z.ZodBoolean>;
            fiveHourResetsAt: z.ZodOptional<z.ZodString>;
            weekResetsAt: z.ZodOptional<z.ZodString>;
            fiveHourLeft: z.ZodOptional<z.ZodNumber>;
            weekLeft: z.ZodOptional<z.ZodNumber>;
            resetsAt: z.ZodOptional<z.ZodString>;
        }, z.core.$strip>>>;
    }, z.core.$strip>>;
}, z.core.$strip>;
export type MoveAvailability = z.infer<typeof availability>;
export declare function localMoveAvailability(project: unknown, usage: () => Promise<Json>, conductor?: boolean): Promise<MoveAvailability>;
/** Exact verified names only; self also accepts the name health displays. */
export declare function movePeer(computer: string | undefined, self?: string): Promise<DispatchHost | undefined>;
export declare function peerMoveAvailability(peer: DispatchHost, project: string, conductor?: boolean): Promise<MoveAvailability>;
export declare function checkMovePeer(peer: DispatchHost, project: string, to: MoveTo, conductor?: boolean): Promise<{
    account?: string;
    accountChoice?: string;
    computerId?: string;
}>;
export declare function moveComputers(project: unknown, self: string, local: () => Promise<MoveAvailability>, currentAccount?: string, conductor?: boolean): Promise<Json>;
/** Re-read enrollment before every request that may transmit a brief. */
export declare function currentMovePeer(captured: DispatchHost): Promise<DispatchHost>;
export {};
