import type { CDK } from "../../../_imports";
import type { ManifestResource } from "../../../node";
import { SubResource } from "../../../node/sub-resource";
import type { ConfigMap } from "../../configmap";
import { Pvc } from "../../persistent";
import type { Secret } from "../../secret";
import { Mount } from "../container/mounts";
export type Volume<Props extends Volume.Backend = Volume.Backend> = Volume.PodVolume<Props>;
export declare namespace Volume {
    interface PodVolume_Backend_Pvc {
        $backend: Pvc.Pvc<"Filesystem">;
        readOnly?: boolean;
    }
    interface PodVolume_Backend_ConfigMap {
        $backend: ConfigMap;
    }
    interface PodVolume_Backend_Secret {
        $backend: Secret;
    }
    export type Backend = PodVolume_Backend_Pvc | PodVolume_Backend_ConfigMap | PodVolume_Backend_Secret;
    export abstract class PodVolume<Props extends Backend = Backend> extends SubResource<Props> {
        readonly kind: import("@k8ts/instruments").Kind.SubKind<"Volume", import("@k8ts/instruments").Kind.Kind<"Pod", import("@k8ts/instruments").Kind.Version<"v1", import("@k8ts/instruments").Kind.Group<"">>>>;
        abstract submanifest(): CDK.Volume;
        Mount(options?: Omit<Mount.Props, "volume">): Mount.ContainerVolumeMount;
    }
    export function make(parent: ManifestResource, name: string, input: Backend): PodVolume;
    export {};
}
//# sourceMappingURL=volumes.d.ts.map