import type { JsonValue } from '../control-plane';
import type { QueueExecutionContext } from '../queue';
import type { BackupPolicy, RecoveryPoint } from './model';
import type { BackupSourceAdapter, BackupSourceResult } from './service';
export interface InfrastructureBackupClient {
    startBackupJob(input: {
        BackupVaultName: string;
        ResourceArn: string;
        IamRoleArn: string;
        IdempotencyToken: string;
    }): Promise<{
        BackupJobId: string;
    }>;
    describeBackupJob(id: string): Promise<{
        State?: string;
        StatusMessage?: string;
        RecoveryPointArn?: string;
        BackupSizeInBytes?: number;
    }>;
    startRestoreJob(input: {
        RecoveryPointArn: string;
        IamRoleArn: string;
        Metadata: Record<string, string>;
        IdempotencyToken: string;
    }): Promise<{
        RestoreJobId: string;
    }>;
    describeRestoreJob(id: string): Promise<{
        Status?: string;
        StatusMessage?: string;
        CreatedResourceArn?: string;
    }>;
    deleteRecoveryPoint(vault: string, recoveryPointArn: string): Promise<void>;
}
export declare class AwsInfrastructureBackupSource implements BackupSourceAdapter {
    private readonly client;
    constructor(client?: InfrastructureBackupClient);
    create(policy: BackupPolicy, context: QueueExecutionContext): Promise<BackupSourceResult>;
    verifyExternal(point: RecoveryPoint, _context: QueueExecutionContext): Promise<Record<string, JsonValue>>;
    restore(point: RecoveryPoint, _body: Uint8Array | undefined, target: Record<string, JsonValue>, context: QueueExecutionContext): Promise<Record<string, JsonValue>>;
    validateHealth(target: Record<string, JsonValue>, _context: QueueExecutionContext): Promise<Record<string, JsonValue>>;
    deleteExternal(point: RecoveryPoint, _context: QueueExecutionContext): Promise<void>;
}
