import { Translation } from '../../translate/types';
import { KubernetesResource } from '../../types/k8s';
import { StringMap } from './../../types/commons';
import { AccessMode } from './constants';
export declare enum StorageProvisioner {
    CEPH_FS_INTERNAL = "rook-ceph.cephfs.csi.ceph.com",
    CEPH_FS_RBD = "rook-ceph.rbd.csi.ceph.com",
    CEPH_OBJECT = "rook-ceph.ceph.rook.io/bucket",
    CEPH_FS = "ceph.com/cephfs",
    NFS = "cpaas.io/nfs-client",
    TOPOLVM = "topolvm.cybozu.com"
}
export declare enum StorageProvider {
    PLATFORM = "platform",
    THIRD_PARTY = "third_party"
}
export declare enum StorageType {
    FILE_STORAGE = "file_storage",
    OBJECT_STORAGE = "object_storage",
    BLOCK_STORAGE = "block_storage"
}
export declare enum VolumeMode {
    FILE_SYSTEM = "Filesystem",
    BLOCK_DEVICE = "Block"
}
export declare enum StorageclassFeature {
    SNAPSHOT = "snapshot",
    EXPANSION = "expansion"
}
export interface StorageOption {
    provisioner: StorageProvisioner;
    gate?: string;
    clusterGate?: string;
    provider: StorageProvider;
    type: StorageType;
    display?: Translation;
    accessModes: AccessMode[];
    features: StorageclassFeature[];
    volumeModes: VolumeMode[];
}
export declare enum VolumeBindingMode {
    Immediate = "Immediate",
    WaitForFirstConsumer = "WaitForFirstConsumer"
}
export declare enum RecaimPolicy {
    Retain = "retain",
    Delete = "delete"
}
export interface StorageClass extends KubernetesResource {
    mountOptions?: string[];
    parameters?: StringMap;
    provisioner?: StorageProvisioner;
    reclaimPolicy?: RecaimPolicy;
    volumeBindingMode?: VolumeBindingMode;
    allowVolumeExpansion?: boolean;
}
