# This file is automatically generated by pyo3_stub_gen
# ruff: noqa: E501, F401

import builtins
import typing
from enum import Enum, auto

class PyKey:
    algorithm: PyAlgorithm
    format: PyKeyFormat
    key: PyKeyData
    def __new__(cls,algorithm:PyAlgorithm, format:PyKeyFormat, key:PyKeyData): ...

class PyName:
    r"""
    name class
    """
    id: builtins.int
    def __new__(cls,component0:builtins.str, component1:builtins.str, component2:builtins.str, id:typing.Optional[builtins.int]=None): ...
    def set_id(self, id:builtins.int) -> None:
        ...

    def components(self) -> builtins.list[builtins.int]:
        ...

    def components_strings(self) -> builtins.list[builtins.str]:
        ...

    def equal_without_id(self, name:PyName) -> builtins.bool:
        ...

    def __repr__(self) -> builtins.str:
        ...

    def __str__(self) -> builtins.str:
        ...


class PyService:
    id: builtins.int
    name: PyName

class PySessionInfo:
    id: builtins.int
    source_name: PyName
    destination_name: PyName
    payload_type: builtins.str
    metadata: builtins.dict[builtins.str, builtins.str]
    def __new__(cls,session_id:builtins.int): ...

class PyAlgorithm(Enum):
    HS256 = auto()
    HS384 = auto()
    HS512 = auto()
    RS256 = auto()
    RS384 = auto()
    RS512 = auto()
    PS256 = auto()
    PS384 = auto()
    PS512 = auto()
    ES256 = auto()
    ES384 = auto()
    EdDSA = auto()

class PyIdentityProvider(Enum):
    StaticJwt = auto()
    Jwt = auto()
    SharedSecret = auto()

class PyIdentityVerifier(Enum):
    Jwt = auto()
    SharedSecret = auto()

class PyKeyData(Enum):
    File = auto()
    Content = auto()

class PyKeyFormat(Enum):
    Pem = auto()
    Jwk = auto()
    Jwks = auto()

class PySessionConfiguration(Enum):
    FireAndForget = auto()
    Streaming = auto()

class PySessionDirection(Enum):
    r"""
    session direction
    """
    SENDER = auto()
    RECEIVER = auto()
    BIDIRECTIONAL = auto()

class PySessionType(Enum):
    r"""
    session type
    """
    FIRE_AND_FORGET = auto()
    STREAMING = auto()

def connect(svc:PyService, config:dict) -> typing.Any:
    ...

def create_pyservice(name:PyName, provider:PyIdentityProvider, verifier:PyIdentityVerifier) -> typing.Any:
    ...

def create_session(svc:PyService, config:PySessionConfiguration) -> typing.Any:
    ...

def delete_session(svc:PyService, session_id:builtins.int) -> typing.Any:
    ...

def disconnect(svc:PyService, conn:builtins.int) -> typing.Any:
    ...

def get_default_session_config(svc:PyService, session_type:PySessionType) -> typing.Any:
    ...

def get_session_config(svc:PyService, session_id:builtins.int) -> typing.Any:
    ...

def init_tracing(config:dict) -> typing.Any:
    ...

def invite(svc:PyService, session_info:PySessionInfo, name:PyName) -> typing.Any:
    ...

def publish(svc:PyService, session_info:PySessionInfo, fanout:builtins.int, blob:typing.Sequence[builtins.int], name:typing.Optional[PyName]=None, payload_type:typing.Optional[builtins.str]=None, metadata:typing.Optional[typing.Mapping[builtins.str, builtins.str]]=None) -> typing.Any:
    ...

def receive(svc:PyService) -> typing.Any:
    ...

def remove(svc:PyService, session_info:PySessionInfo, name:PyName) -> typing.Any:
    ...

def remove_route(svc:PyService, conn:builtins.int, name:PyName) -> typing.Any:
    ...

def run_server(svc:PyService, config:dict) -> typing.Any:
    ...

def set_default_session_config(svc:PyService, config:PySessionConfiguration) -> typing.Any:
    ...

def set_route(svc:PyService, conn:builtins.int, name:PyName) -> typing.Any:
    ...

def set_session_config(svc:PyService, session_id:builtins.int, config:PySessionConfiguration) -> typing.Any:
    ...

def stop_server(svc:PyService, endpoint:builtins.str) -> typing.Any:
    ...

def subscribe(svc:PyService, conn:builtins.int, name:PyName) -> typing.Any:
    ...

def unsubscribe(svc:PyService, conn:builtins.int, name:PyName) -> typing.Any:
    ...

