import type { ServerRecord } from "../types/index.js";
import type { PlatformAdapter } from "../adapters/interface.js";
export interface StepResult {
    step: number;
    name: string;
    status: "success" | "failure" | "skipped";
    detail?: string;
    error?: string;
    hint?: string;
}
export interface MaintainResult {
    server: string;
    ip: string;
    provider: string;
    steps: StepResult[];
    success: boolean;
}
export type { UpdateResult } from "../adapters/interface.js";
export interface RestartResult {
    success: boolean;
    finalStatus?: string;
    error?: string;
    hint?: string;
}
export declare function pollHealth(adapter: PlatformAdapter, ip: string, maxAttempts: number, intervalMs: number, domain?: string): Promise<boolean>;
export declare function rebootAndWait(server: ServerRecord, apiToken: string, maxAttempts?: number, intervalMs?: number, initialWaitMs?: number): Promise<RestartResult>;
export interface MaintainOptions {
    skipReboot?: boolean;
    healthPollAttempts?: number;
    healthPollIntervalMs?: number;
    rebootMaxAttempts?: number;
    rebootIntervalMs?: number;
    rebootInitialWaitMs?: number;
}
export declare function maintainServer(server: ServerRecord, apiToken: string, options?: MaintainOptions): Promise<MaintainResult>;
//# sourceMappingURL=maintain.d.ts.map