# Copyright (c) 2006-2025 Broadcom. All Rights Reserved.
# Broadcom Confidential. The term "Broadcom" refers to Broadcom Inc.
# and/or its subsidiaries.

# ******* WARNING - AUTO GENERATED CODE - DO NOT EDIT *******

from typing import NoReturn
from typing import Optional

from pyVmomi.VmomiSupport import long

from pyVmomi.vim import Datastore
from pyVmomi.vim import KeyValue
from pyVmomi.vim import Task

from pyVmomi.vim.encryption import CryptoSpec

from pyVmomi.vim.vm import ProfileSpec

from pyVmomi.vim.vslm import CloneSpec
from pyVmomi.vim.vslm import CreateSpec
from pyVmomi.vim.vslm import ID
from pyVmomi.vim.vslm import InfrastructureObjectPolicy
from pyVmomi.vim.vslm import RelocateSpec
from pyVmomi.vim.vslm import StateInfo
from pyVmomi.vim.vslm import VStorageObject
from pyVmomi.vim.vslm import VStorageObjectManagerBase
from pyVmomi.vim.vslm import VStorageObjectSnapshotInfo

class VStorageObjectManager(VStorageObjectManagerBase):
   def CreateDisk(self, spec: CreateSpec) -> Task: ...
   def RegisterDisk(self, path: str, name: Optional[str], modifyControlFlags: Optional[bool]) -> VStorageObject: ...
   def ExtendDisk(self, id: ID, datastore: Datastore, newCapacityInMB: long) -> Task: ...
   def InflateDisk(self, id: ID, datastore: Datastore) -> Task: ...
   def RenameVStorageObject(self, id: ID, datastore: Datastore, name: str) -> NoReturn: ...
   def RetrieveVStorageInfrastructureObjectPolicy(self, datastore: Datastore) -> list[InfrastructureObjectPolicy]: ...
   def DeleteVStorageObject(self, id: ID, datastore: Datastore) -> Task: ...
   def RetrieveVStorageObject(self, id: ID, datastore: Datastore, diskInfoFlags: list[str]) -> VStorageObject: ...
   def RetrieveVStorageObjectState(self, id: ID, datastore: Datastore) -> StateInfo: ...
   def ListVStorageObject(self, datastore: Datastore) -> list[ID]: ...
   def CloneVStorageObject(self, id: ID, datastore: Datastore, spec: CloneSpec) -> Task: ...
   def RelocateVStorageObject(self, id: ID, datastore: Datastore, spec: RelocateSpec) -> Task: ...
   def SetVStorageObjectControlFlags(self, id: ID, datastore: Datastore, controlFlags: list[str]) -> NoReturn: ...
   def ClearVStorageObjectControlFlags(self, id: ID, datastore: Datastore, controlFlags: list[str]) -> NoReturn: ...
   def ReconcileDatastoreInventory(self, datastore: Datastore, deepCleansing: Optional[bool]) -> Task: ...
   def ScheduleReconcileDatastoreInventory(self, datastore: Datastore, deepCleansing: Optional[bool]) -> NoReturn: ...
   def CreateSnapshot(self, id: ID, datastore: Datastore, description: str) -> Task: ...
   def DeleteSnapshot(self, id: ID, datastore: Datastore, snapshotId: ID) -> Task: ...
   def RetrieveSnapshotInfo(self, id: ID, datastore: Datastore) -> VStorageObjectSnapshotInfo: ...
   def CreateDiskFromSnapshot(self, id: ID, datastore: Datastore, snapshotId: ID, name: str, profile: list[ProfileSpec], crypto: Optional[CryptoSpec], path: Optional[str], provisioningType: Optional[str]) -> Task: ...
   def RevertVStorageObject(self, id: ID, datastore: Datastore, snapshotId: ID) -> Task: ...
   def UpdateVStorageObjectMetadata(self, id: ID, datastore: Datastore, metadata: list[KeyValue], deleteKeys: list[str]) -> Task: ...
   def RetrieveVStorageObjectMetadata(self, id: ID, datastore: Datastore, snapshotId: Optional[ID], prefix: Optional[str]) -> list[KeyValue]: ...
   def RetrieveVStorageObjectMetadataValue(self, id: ID, datastore: Datastore, snapshotId: Optional[ID], key: str) -> str: ...
   def DeleteVStorageObjectEx(self, id: ID, datastore: Datastore) -> Task: ...
   def UpdateVStorageObjectMetadataEx(self, id: ID, datastore: Datastore, metadata: list[KeyValue], deleteKeys: list[str]) -> Task: ...
   def SetVirtualDiskUuidEx(self, name: str, uuid: Optional[str]) -> Task: ...
   def QueryVirtualDiskUuidEx(self, name: str) -> str: ...
