pub trait VolumeProxyInterface: Send + Sync {
    type MountResponseFut: Future<Output = Result<VolumeMountResult, Error>> + Send;
    type CheckResponseFut: Future<Output = Result<VolumeCheckResult, Error>> + Send;
    type SetLimitResponseFut: Future<Output = Result<VolumeSetLimitResult, Error>> + Send;
    type GetLimitResponseFut: Future<Output = Result<VolumeGetLimitResult, Error>> + Send;
    // Required methods
    fn mount(
        &self,
        outgoing_directory: ServerEnd<DirectoryMarker>,
        options: MountOptions,
    ) -> Self::MountResponseFut;
    fn check(&self, options: CheckOptions) -> Self::CheckResponseFut;
    fn set_limit(&self, bytes: u64) -> Self::SetLimitResponseFut;
    fn get_limit(&self) -> Self::GetLimitResponseFut;
}