import type { ControlPlaneStore, JsonValue } from '../control-plane';
import type { PersistentVolume, VolumeAttachment, VolumeInventoryItem, VolumeSnapshot } from './model';
export declare class VolumeStore {
    readonly controlPlane: ControlPlaneStore;
    private readonly now;
    private readonly id;
    constructor(controlPlane: ControlPlaneStore, now?: () => Date, id?: () => string);
    get(id: string): PersistentVolume | undefined;
    list(input: {
        projectId: string;
        environmentId?: string;
        includeDeleted?: boolean;
    }): PersistentVolume[];
    create(input: Omit<PersistentVolume, 'id' | 'version' | 'createdAt' | 'updatedAt'> & {
        id?: string;
    }): PersistentVolume;
    update(id: string, expectedVersion: number, patch: Partial<Omit<PersistentVolume, 'id' | 'organizationId' | 'projectId' | 'createdAt' | 'version'>>): PersistentVolume;
    attachments(volumeId: string): VolumeAttachment[];
    attachment(id: string): VolumeAttachment | undefined;
    upsertAttachment(input: Omit<VolumeAttachment, 'id' | 'version' | 'createdAt' | 'updatedAt'> & {
        id?: string;
    }): VolumeAttachment;
    updateAttachment(id: string, patch: Partial<Pick<VolumeAttachment, 'desiredState' | 'observedState' | 'operationId' | 'lastError'>>): VolumeAttachment;
    snapshots(volumeId: string): VolumeSnapshot[];
    snapshot(id: string): VolumeSnapshot | undefined;
    createSnapshot(input: Omit<VolumeSnapshot, 'id' | 'createdAt' | 'updatedAt'> & {
        id?: string;
    }): VolumeSnapshot;
    updateSnapshot(id: string, patch: Partial<VolumeSnapshot>): VolumeSnapshot;
    inventory(projectId: string, environmentId?: string): VolumeInventoryItem[];
    audit(input: {
        organizationId: string;
        projectId: string;
        environmentId?: string;
        actorId?: string;
        type: string;
        volumeId: string;
        payload?: Record<string, JsonValue>;
    }): void;
}
