import { RuntimeData, CreateRuntimeRequest, CreateRuntimeResponse, ListRuntimesResponse } from '../../models/RuntimeDTO';
/**
 * Create a new runtime instance.
 * @param token - Authentication token
 * @param data - Runtime creation configuration
 * @param baseUrl - Base URL for the API (defaults to production Runtimes URL)
 * @returns Promise resolving to the created runtime details
 * @throws {Error} If authentication token is missing or invalid
 * @throws {Error} With status 404 if the environment is not found
 * @throws {Error} With status 503 if no runtime is available
 */
export declare const createRuntime: (token: string, data: CreateRuntimeRequest, baseUrl?: string) => Promise<CreateRuntimeResponse>;
/**
 * List all runtime instances.
 * @param token - Authentication token
 * @param baseUrl - Base URL for the API (defaults to production Runtimes URL)
 * @returns Promise resolving to list of runtime instances
 * @throws {Error} If authentication token is missing or invalid
 */
export declare const listRuntimes: (token: string, baseUrl?: string) => Promise<ListRuntimesResponse>;
/**
 * Get details for a specific runtime instance.
 * @param token - Authentication token
 * @param podName - The unique pod name of the runtime
 * @param baseUrl - Base URL for the API (defaults to production Runtimes URL)
 * @returns Promise resolving to runtime details
 * @throws {Error} If authentication token is missing or invalid
 * @throws {Error} If pod name is missing or invalid
 * @throws {Error} With status 404 if the runtime is not found
 */
export declare const getRuntime: (token: string, podName: string, baseUrl?: string) => Promise<RuntimeData>;
/**
 * Delete a runtime instance.
 * @param token - Authentication token
 * @param podName - The unique pod name of the runtime to delete
 * @param baseUrl - Base URL for the API (defaults to production Runtimes URL)
 * @returns Promise resolving when deletion is complete
 * @throws {Error} If authentication token is missing or invalid
 * @throws {Error} If pod name is missing or invalid
 * @throws {Error} With status 404 if the runtime is not found
 */
export declare const deleteRuntime: (token: string, podName: string, baseUrl?: string) => Promise<void>;
/**
 * Update a runtime instance.
 * @param token - Authentication token
 * @param podName - The unique pod name of the runtime
 * @param from - The source to update from
 * @param baseUrl - Base URL for the API (defaults to production Runtimes URL)
 * @returns Promise resolving to updated runtime details
 * @throws {Error} If authentication token is missing or invalid
 * @throws {Error} If pod name is missing or invalid
 * @throws {Error} With status 404 if the runtime is not found
 */
export declare const updateRuntime: (token: string, podName: string, from: string, baseUrl?: string) => Promise<RuntimeData>;
/**
 * Response from the pause/resume runtime endpoints.
 * The server returns 202 Accepted and provides a checkpoint UID
 * that can be polled for status updates.
 */
export interface PauseResumeResponse {
    success: boolean;
    message: string;
    checkpoint_id: string | null;
}
/**
 * Optional body for the pause endpoint.
 * Metadata is stored in the checkpoint Solr record created by the backend.
 */
export interface PauseRuntimeBody {
    /** Checkpoint mode: 'criu' (full) or 'light' (history-only) */
    checkpoint_mode?: 'criu' | 'light';
    /** Human-readable checkpoint name */
    name?: string;
    /** Checkpoint description */
    description?: string;
    /** Agent spec identifier */
    agent_spec_id?: string;
    /** Full agent spec payload to persist with the checkpoint */
    agentspec?: Record<string, any>;
    /** Additional metadata */
    metadata?: Record<string, any>;
    /** Lightweight checkpoint message history */
    messages?: string[];
}
/**
 * Pause a runtime by creating a checkpoint (async, light mode by default).
 *
 * Returns immediately with a 202 Accepted response.  The actual checkpoint
 * process runs in the background.  Use the returned `checkpoint_id` to
 * poll for status via the runtime-checkpoints API.
 *
 * @param token - Authentication token
 * @param podName - The unique pod name of the runtime to pause
 * @param baseUrl - Base URL for the API (defaults to production Runtimes URL)
 * @param body - Optional metadata to store in the checkpoint record
 * @returns Promise resolving with the checkpoint ID for status tracking
 * @throws {Error} If authentication token is missing or invalid
 * @throws {Error} If pod name is missing or invalid
 */
export declare const pauseRuntime: (token: string, podName: string, baseUrl?: string, body?: PauseRuntimeBody) => Promise<PauseResumeResponse>;
/**
 * Optional body for the resume endpoint.
 * Contains information needed by the operator to restore from a checkpoint.
 */
export interface ResumeRuntimeBody {
    /** Checkpoint mode to resume from: 'criu' or 'light' */
    checkpoint_mode?: 'criu' | 'light';
    /** Explicit checkpoint identifier */
    checkpoint_id?: string;
    /** Agent spec identifier (required by the operator for restore) */
    agent_spec_id?: string;
    /** Specific checkpoint timestamp to restore from */
    checkpoint_timestamp?: string;
    /** Environment name override */
    environment_name?: string;
    /** Container image override */
    container_image?: string;
    /** Target node name */
    node_name?: string;
    /** Additional metadata */
    metadata?: Record<string, any>;
}
/**
 * Resume a paused runtime by restoring from a checkpoint (async).
 *
 * Returns immediately with a 202 Accepted response.  The actual restore
 * process runs in the background.  Use the returned `checkpoint_id` to
 * poll for status.
 *
 * @param token - Authentication token
 * @param podName - The unique pod name of the runtime to resume
 * @param baseUrl - Base URL for the API (defaults to production Runtimes URL)
 * @param body - Optional body with agent_spec_id and restore options
 * @returns Promise resolving with the checkpoint ID for status tracking
 * @throws {Error} If authentication token is missing or invalid
 * @throws {Error} If pod name is missing or invalid
 */
export declare const resumeRuntime: (token: string, podName: string, baseUrl?: string, body?: ResumeRuntimeBody) => Promise<PauseResumeResponse>;
