import uuid
from ..schema.iot_schema import WappstoMethod as WappstoMethod
from ..service.template import ServiceClass as ServiceClass
from ..utils import name_check as name_check
from .device import Device as Device
from _typeshed import Incomplete
from typing import Callable, Optional

class Network:
    schema: Incomplete
    log: Incomplete
    element: Incomplete
    children_uuid_mapping: Incomplete
    children_name_mapping: Incomplete
    cloud_id_mapping: Incomplete
    connection: Incomplete
    def __init__(self, name: str, connection: ServiceClass, network_uuid: uuid.UUID, description: str = ...) -> None: ...
    @property
    def name(self) -> Optional[str]: ...
    @property
    def uuid(self) -> uuid.UUID: ...
    def onChange(self, callback: Callable[[Network], None]) -> Callable[[Network], None]: ...
    def cancelOnChange(self) -> None: ...
    def onCreate(self, callback: Callable[[Network], None]) -> Callable[[Network], None]: ...
    def cancelOnCreate(self) -> None: ...
    def onRefresh(self, callback: Callable[[Network], None]) -> Callable[[Network], None]: ...
    def cancelOnRefresh(self) -> None: ...
    def onDelete(self, callback: Callable[[Network], None]) -> Callable[[Network], None]: ...
    def cancelOnDelete(self) -> None: ...
    def refresh(self) -> None: ...
    def change(self) -> None: ...
    def delete(self) -> None: ...
    def createDevice(self, name: str, manufacturer: Optional[str] = ..., product: Optional[str] = ..., version: Optional[str] = ..., serial: Optional[str] = ..., protocol: Optional[str] = ..., communication: Optional[str] = ..., description: Optional[str] = ...) -> Device: ...
    def close(self) -> None: ...
