# ----------------------------------------------------------------------------
# Copyright (c) Omnissa, LLC. All rights reserved.
# This product is protected by copyright and intellectual property laws in the
# United States and other countries as well as by international treaties.
# ----------------------------------------------------------------------------

from typing import Any, Optional

from ohcs.lcm.api import Pool, VmInfo

# Global functions - Required
def init() -> Optional[dict[str, Any]]: ...

# Pool management functions - Required
def health(pool: Pool, params: dict[str, Any]) -> dict[str, Any]: ...
def prepare_pool(pool: Pool, params: dict[str, Any]) -> Optional[dict[str, Any]]: ...
def destroy_pool(pool: Pool, params: dict[str, Any]) -> None: ...
def list_vms(pool: Pool, params: dict[str, Any]) -> list[VmInfo]: ...

# VM management functions - Required
def get_vm(pool: Pool, vmId: str) -> Optional[VmInfo]: ...
def create_vm(pool: Pool, vmId: str, params: dict[str, Any]) -> VmInfo: ...
def delete_vm(pool: Pool, vmId: str, params: dict[str, Any]) -> None: ...
def power_on_vm(pool: Pool, vmId: str, params: dict[str, Any]) -> VmInfo: ...
def power_off_vm(pool: Pool, vmId: str, params: dict[str, Any]) -> VmInfo: ...
def shutdown_vm(pool: Pool, vmId: str, params: dict[str, Any]) -> VmInfo: ...

# VM management functions - Optional
def restart_vm(pool: Pool, vmId: str, params: dict[str, Any]) -> VmInfo: ...
def snapshot_vm(pool: Pool, vmId: str, params: dict[str, Any]) -> VmInfo: ...
def restore_vm(pool: Pool, vmId: str, params: dict[str, Any]) -> VmInfo: ...
def hibernate_vm(pool: Pool, vmId: str, params: dict[str, Any]) -> VmInfo: ...
def resize_vm(pool: Pool, vmId: str, params: dict[str, Any]) -> VmInfo: ...

required_functions: list[str] = [
    "init",
    "health",
    "prepare_pool",
    "destroy_pool",
    "list_vms",
    "get_vm",
    "create_vm",
    "delete_vm",
    "power_on_vm",
    "power_off_vm",
    "shutdown_vm",
]
