import { KubernetesService } from '../../infrastructure/shared/services/kubernetes.service';
import { CreateExportInput, DeleteExportInput, ExportResult, ExportSummary, IVolumeExport, ListExportsInput, RestorePvcFromExportInput, VolumeExportCapabilities } from '../interfaces/volume-export.interface';
/**
 * Universal volume export primitive based on the copy-pod pattern.
 *
 * One implementation serves every Flui-supported provider: the storage class
 * is always `local-path` (rancher.io/local-path) on top of NFS+fscache,
 * therefore "snapshot" / "backup" cannot rely on CSI VolumeSnapshot. Both
 * sink kinds — pvc-clone and s3-archive — funnel through a Job that mounts
 * the source PVC and streams data to the chosen sink.
 *
 * Provider-specific behavior (cost, capabilities) is exposed through
 * `capabilities` so the upper layers can warn / price accordingly.
 */
export declare class VolumeExportService implements IVolumeExport {
    private readonly k8s;
    private readonly logger;
    readonly capabilities: VolumeExportCapabilities;
    constructor(k8s: KubernetesService);
    createExport(input: CreateExportInput): Promise<ExportResult>;
    listExports(input: ListExportsInput): Promise<ExportSummary[]>;
    deleteExport(input: DeleteExportInput): Promise<void>;
    restoreFromExport(input: RestorePvcFromExportInput): Promise<{
        pvcName: string;
    }>;
    private createPvcCloneExport;
    private createS3ArchiveExport;
    private requireSourcePvc;
    private requireS3;
    private s3DeleteJobName;
    private shortId;
    /**
     * Read the completed copy-pod logs and extract the actual byte count
     * emitted by the container as `FLUI_ACTUAL_BYTES=<n>` on its last line.
     * Returns undefined when the marker is missing or unparseable.
     */
    private parseActualBytesFromJob;
    private annotateExportPvc;
    private cleanupCopyJob;
    private waitForJobCompletion;
    private renderPvcManifest;
    private renderTarCopyJobManifest;
    private renderS3ExportJobManifest;
    private renderS3RestoreJobManifest;
    private renderS3DeleteJobManifest;
    private renderS3EnvBlock;
    private renderLabelLines;
    private parseStorageGb;
    private yamlString;
}
