"""
Type stubs for the _oboron native Rust extension module.

These stubs enable IDE autocompletion (VS Code, PyCharm), mypy, and pyright
support for the oboron Python bindings.
"""

from typing import Optional

__version__: str

# ============================================================================
# Fixed-format A-tier codec classes
# ============================================================================

class AagsC32:
    def __init__(self, key: Optional[str] = None, keyless: bool = False) -> None: ...
    def enc(self, plaintext: str) -> str: ...
    def dec(self, obtext: str) -> str: ...
    @property
    def format(self) -> str: ...
    @property
    def scheme(self) -> str: ...
    @property
    def encoding(self) -> str: ...
    @property
    def key(self) -> str: ...
    @property
    def key_hex(self) -> str: ...
    @property
    def key_bytes(self) -> bytes: ...
    def __repr__(self) -> str: ...

class AagsB32:
    def __init__(self, key: Optional[str] = None, keyless: bool = False) -> None: ...
    def enc(self, plaintext: str) -> str: ...
    def dec(self, obtext: str) -> str: ...
    @property
    def format(self) -> str: ...
    @property
    def scheme(self) -> str: ...
    @property
    def encoding(self) -> str: ...
    @property
    def key(self) -> str: ...
    @property
    def key_hex(self) -> str: ...
    @property
    def key_bytes(self) -> bytes: ...
    def __repr__(self) -> str: ...

class AagsB64:
    def __init__(self, key: Optional[str] = None, keyless: bool = False) -> None: ...
    def enc(self, plaintext: str) -> str: ...
    def dec(self, obtext: str) -> str: ...
    @property
    def format(self) -> str: ...
    @property
    def scheme(self) -> str: ...
    @property
    def encoding(self) -> str: ...
    @property
    def key(self) -> str: ...
    @property
    def key_hex(self) -> str: ...
    @property
    def key_bytes(self) -> bytes: ...
    def __repr__(self) -> str: ...

class AagsHex:
    def __init__(self, key: Optional[str] = None, keyless: bool = False) -> None: ...
    def enc(self, plaintext: str) -> str: ...
    def dec(self, obtext: str) -> str: ...
    @property
    def format(self) -> str: ...
    @property
    def scheme(self) -> str: ...
    @property
    def encoding(self) -> str: ...
    @property
    def key(self) -> str: ...
    @property
    def key_hex(self) -> str: ...
    @property
    def key_bytes(self) -> bytes: ...
    def __repr__(self) -> str: ...

class AasvC32:
    def __init__(self, key: Optional[str] = None, keyless: bool = False) -> None: ...
    def enc(self, plaintext: str) -> str: ...
    def dec(self, obtext: str) -> str: ...
    @property
    def format(self) -> str: ...
    @property
    def scheme(self) -> str: ...
    @property
    def encoding(self) -> str: ...
    @property
    def key(self) -> str: ...
    @property
    def key_hex(self) -> str: ...
    @property
    def key_bytes(self) -> bytes: ...
    def __repr__(self) -> str: ...

class AasvB32:
    def __init__(self, key: Optional[str] = None, keyless: bool = False) -> None: ...
    def enc(self, plaintext: str) -> str: ...
    def dec(self, obtext: str) -> str: ...
    @property
    def format(self) -> str: ...
    @property
    def scheme(self) -> str: ...
    @property
    def encoding(self) -> str: ...
    @property
    def key(self) -> str: ...
    @property
    def key_hex(self) -> str: ...
    @property
    def key_bytes(self) -> bytes: ...
    def __repr__(self) -> str: ...

class AasvB64:
    def __init__(self, key: Optional[str] = None, keyless: bool = False) -> None: ...
    def enc(self, plaintext: str) -> str: ...
    def dec(self, obtext: str) -> str: ...
    @property
    def format(self) -> str: ...
    @property
    def scheme(self) -> str: ...
    @property
    def encoding(self) -> str: ...
    @property
    def key(self) -> str: ...
    @property
    def key_hex(self) -> str: ...
    @property
    def key_bytes(self) -> bytes: ...
    def __repr__(self) -> str: ...

class AasvHex:
    def __init__(self, key: Optional[str] = None, keyless: bool = False) -> None: ...
    def enc(self, plaintext: str) -> str: ...
    def dec(self, obtext: str) -> str: ...
    @property
    def format(self) -> str: ...
    @property
    def scheme(self) -> str: ...
    @property
    def encoding(self) -> str: ...
    @property
    def key(self) -> str: ...
    @property
    def key_hex(self) -> str: ...
    @property
    def key_bytes(self) -> bytes: ...
    def __repr__(self) -> str: ...

class ApgsC32:
    def __init__(self, key: Optional[str] = None, keyless: bool = False) -> None: ...
    def enc(self, plaintext: str) -> str: ...
    def dec(self, obtext: str) -> str: ...
    @property
    def format(self) -> str: ...
    @property
    def scheme(self) -> str: ...
    @property
    def encoding(self) -> str: ...
    @property
    def key(self) -> str: ...
    @property
    def key_hex(self) -> str: ...
    @property
    def key_bytes(self) -> bytes: ...
    def __repr__(self) -> str: ...

class ApgsB32:
    def __init__(self, key: Optional[str] = None, keyless: bool = False) -> None: ...
    def enc(self, plaintext: str) -> str: ...
    def dec(self, obtext: str) -> str: ...
    @property
    def format(self) -> str: ...
    @property
    def scheme(self) -> str: ...
    @property
    def encoding(self) -> str: ...
    @property
    def key(self) -> str: ...
    @property
    def key_hex(self) -> str: ...
    @property
    def key_bytes(self) -> bytes: ...
    def __repr__(self) -> str: ...

class ApgsB64:
    def __init__(self, key: Optional[str] = None, keyless: bool = False) -> None: ...
    def enc(self, plaintext: str) -> str: ...
    def dec(self, obtext: str) -> str: ...
    @property
    def format(self) -> str: ...
    @property
    def scheme(self) -> str: ...
    @property
    def encoding(self) -> str: ...
    @property
    def key(self) -> str: ...
    @property
    def key_hex(self) -> str: ...
    @property
    def key_bytes(self) -> bytes: ...
    def __repr__(self) -> str: ...

class ApgsHex:
    def __init__(self, key: Optional[str] = None, keyless: bool = False) -> None: ...
    def enc(self, plaintext: str) -> str: ...
    def dec(self, obtext: str) -> str: ...
    @property
    def format(self) -> str: ...
    @property
    def scheme(self) -> str: ...
    @property
    def encoding(self) -> str: ...
    @property
    def key(self) -> str: ...
    @property
    def key_hex(self) -> str: ...
    @property
    def key_bytes(self) -> bytes: ...
    def __repr__(self) -> str: ...

class ApsvC32:
    def __init__(self, key: Optional[str] = None, keyless: bool = False) -> None: ...
    def enc(self, plaintext: str) -> str: ...
    def dec(self, obtext: str) -> str: ...
    @property
    def format(self) -> str: ...
    @property
    def scheme(self) -> str: ...
    @property
    def encoding(self) -> str: ...
    @property
    def key(self) -> str: ...
    @property
    def key_hex(self) -> str: ...
    @property
    def key_bytes(self) -> bytes: ...
    def __repr__(self) -> str: ...

class ApsvB32:
    def __init__(self, key: Optional[str] = None, keyless: bool = False) -> None: ...
    def enc(self, plaintext: str) -> str: ...
    def dec(self, obtext: str) -> str: ...
    @property
    def format(self) -> str: ...
    @property
    def scheme(self) -> str: ...
    @property
    def encoding(self) -> str: ...
    @property
    def key(self) -> str: ...
    @property
    def key_hex(self) -> str: ...
    @property
    def key_bytes(self) -> bytes: ...
    def __repr__(self) -> str: ...

class ApsvB64:
    def __init__(self, key: Optional[str] = None, keyless: bool = False) -> None: ...
    def enc(self, plaintext: str) -> str: ...
    def dec(self, obtext: str) -> str: ...
    @property
    def format(self) -> str: ...
    @property
    def scheme(self) -> str: ...
    @property
    def encoding(self) -> str: ...
    @property
    def key(self) -> str: ...
    @property
    def key_hex(self) -> str: ...
    @property
    def key_bytes(self) -> bytes: ...
    def __repr__(self) -> str: ...

class ApsvHex:
    def __init__(self, key: Optional[str] = None, keyless: bool = False) -> None: ...
    def enc(self, plaintext: str) -> str: ...
    def dec(self, obtext: str) -> str: ...
    @property
    def format(self) -> str: ...
    @property
    def scheme(self) -> str: ...
    @property
    def encoding(self) -> str: ...
    @property
    def key(self) -> str: ...
    @property
    def key_hex(self) -> str: ...
    @property
    def key_bytes(self) -> bytes: ...
    def __repr__(self) -> str: ...

class UpbcC32:
    def __init__(self, key: Optional[str] = None, keyless: bool = False) -> None: ...
    def enc(self, plaintext: str) -> str: ...
    def dec(self, obtext: str) -> str: ...
    @property
    def format(self) -> str: ...
    @property
    def scheme(self) -> str: ...
    @property
    def encoding(self) -> str: ...
    @property
    def key(self) -> str: ...
    @property
    def key_hex(self) -> str: ...
    @property
    def key_bytes(self) -> bytes: ...
    def __repr__(self) -> str: ...

class UpbcB32:
    def __init__(self, key: Optional[str] = None, keyless: bool = False) -> None: ...
    def enc(self, plaintext: str) -> str: ...
    def dec(self, obtext: str) -> str: ...
    @property
    def format(self) -> str: ...
    @property
    def scheme(self) -> str: ...
    @property
    def encoding(self) -> str: ...
    @property
    def key(self) -> str: ...
    @property
    def key_hex(self) -> str: ...
    @property
    def key_bytes(self) -> bytes: ...
    def __repr__(self) -> str: ...

class UpbcB64:
    def __init__(self, key: Optional[str] = None, keyless: bool = False) -> None: ...
    def enc(self, plaintext: str) -> str: ...
    def dec(self, obtext: str) -> str: ...
    @property
    def format(self) -> str: ...
    @property
    def scheme(self) -> str: ...
    @property
    def encoding(self) -> str: ...
    @property
    def key(self) -> str: ...
    @property
    def key_hex(self) -> str: ...
    @property
    def key_bytes(self) -> bytes: ...
    def __repr__(self) -> str: ...

class UpbcHex:
    def __init__(self, key: Optional[str] = None, keyless: bool = False) -> None: ...
    def enc(self, plaintext: str) -> str: ...
    def dec(self, obtext: str) -> str: ...
    @property
    def format(self) -> str: ...
    @property
    def scheme(self) -> str: ...
    @property
    def encoding(self) -> str: ...
    @property
    def key(self) -> str: ...
    @property
    def key_hex(self) -> str: ...
    @property
    def key_bytes(self) -> bytes: ...
    def __repr__(self) -> str: ...

# ============================================================================
# Z-tier codec classes
# ============================================================================

class ZrbcxC32:
    def __init__(self, secret: Optional[str] = None, keyless: bool = False) -> None: ...
    def enc(self, plaintext: str) -> str: ...
    def dec(self, obtext: str) -> str: ...
    @property
    def format(self) -> str: ...
    @property
    def scheme(self) -> str: ...
    @property
    def encoding(self) -> str: ...
    @property
    def secret(self) -> str: ...
    @property
    def secret_hex(self) -> str: ...
    @property
    def secret_bytes(self) -> bytes: ...
    def __repr__(self) -> str: ...

class ZrbcxB32:
    def __init__(self, secret: Optional[str] = None, keyless: bool = False) -> None: ...
    def enc(self, plaintext: str) -> str: ...
    def dec(self, obtext: str) -> str: ...
    @property
    def format(self) -> str: ...
    @property
    def scheme(self) -> str: ...
    @property
    def encoding(self) -> str: ...
    @property
    def secret(self) -> str: ...
    @property
    def secret_hex(self) -> str: ...
    @property
    def secret_bytes(self) -> bytes: ...
    def __repr__(self) -> str: ...

class ZrbcxB64:
    def __init__(self, secret: Optional[str] = None, keyless: bool = False) -> None: ...
    def enc(self, plaintext: str) -> str: ...
    def dec(self, obtext: str) -> str: ...
    @property
    def format(self) -> str: ...
    @property
    def scheme(self) -> str: ...
    @property
    def encoding(self) -> str: ...
    @property
    def secret(self) -> str: ...
    @property
    def secret_hex(self) -> str: ...
    @property
    def secret_bytes(self) -> bytes: ...
    def __repr__(self) -> str: ...

class ZrbcxHex:
    def __init__(self, secret: Optional[str] = None, keyless: bool = False) -> None: ...
    def enc(self, plaintext: str) -> str: ...
    def dec(self, obtext: str) -> str: ...
    @property
    def format(self) -> str: ...
    @property
    def scheme(self) -> str: ...
    @property
    def encoding(self) -> str: ...
    @property
    def secret(self) -> str: ...
    @property
    def secret_hex(self) -> str: ...
    @property
    def secret_bytes(self) -> bytes: ...
    def __repr__(self) -> str: ...

# ============================================================================
# Flexible interfaces
# ============================================================================

class Ob:
    def __init__(self, format: str, key: Optional[str] = None, keyless: bool = False) -> None: ...
    def enc(self, plaintext: str) -> str: ...
    def dec(self, obtext: str) -> str: ...
    def autodec(self, obtext: str) -> str: ...
    @property
    def format(self) -> str: ...
    @property
    def scheme(self) -> str: ...
    @property
    def encoding(self) -> str: ...
    @property
    def key(self) -> str: ...
    @property
    def key_hex(self) -> str: ...
    @property
    def key_bytes(self) -> bytes: ...
    def set_format(self, format: str) -> None: ...
    def set_scheme(self, scheme: str) -> None: ...
    def set_encoding(self, encoding: str) -> None: ...
    def __repr__(self) -> str: ...

class Omnib:
    def __init__(self, key: Optional[str] = None, keyless: bool = False) -> None: ...
    def enc(self, plaintext: str, format: str) -> str: ...
    def dec(self, obtext: str, format: str) -> str: ...
    def autodec(self, obtext: str) -> str: ...
    @property
    def key(self) -> str: ...
    @property
    def key_hex(self) -> str: ...
    @property
    def key_bytes(self) -> bytes: ...
    def __repr__(self) -> str: ...

class Obz:
    def __init__(self, format: str, key: Optional[str] = None, keyless: bool = False) -> None: ...
    def enc(self, plaintext: str) -> str: ...
    def dec(self, obtext: str) -> str: ...
    def autodec(self, obtext: str) -> str: ...
    @property
    def format(self) -> str: ...
    @property
    def scheme(self) -> str: ...
    @property
    def encoding(self) -> str: ...
    @property
    def secret(self) -> str: ...
    @property
    def secret_hex(self) -> str: ...
    @property
    def secret_bytes(self) -> bytes: ...
    def set_format(self, format: str) -> None: ...
    def set_scheme(self, scheme: str) -> None: ...
    def set_encoding(self, encoding: str) -> None: ...
    def __repr__(self) -> str: ...

class Omnibz:
    def __init__(self, secret: Optional[str] = None, keyless: bool = False) -> None: ...
    def enc(self, plaintext: str, format: str) -> str: ...
    def dec(self, obtext: str, format: str) -> str: ...
    def autodec(self, obtext: str) -> str: ...
    @property
    def secret(self) -> str: ...
    @property
    def secret_hex(self) -> str: ...
    @property
    def secret_bytes(self) -> bytes: ...
    def __repr__(self) -> str: ...

# ============================================================================
# Mock/testing codec classes (A-tier shape)
# ============================================================================

class Mock1C32:
    def __init__(self, key: Optional[str] = None, keyless: bool = False) -> None: ...
    def enc(self, plaintext: str) -> str: ...
    def dec(self, obtext: str) -> str: ...
    @property
    def format(self) -> str: ...
    @property
    def scheme(self) -> str: ...
    @property
    def encoding(self) -> str: ...
    @property
    def key(self) -> str: ...
    @property
    def key_hex(self) -> str: ...
    @property
    def key_bytes(self) -> bytes: ...
    def __repr__(self) -> str: ...

class Mock1B32:
    def __init__(self, key: Optional[str] = None, keyless: bool = False) -> None: ...
    def enc(self, plaintext: str) -> str: ...
    def dec(self, obtext: str) -> str: ...
    @property
    def format(self) -> str: ...
    @property
    def scheme(self) -> str: ...
    @property
    def encoding(self) -> str: ...
    @property
    def key(self) -> str: ...
    @property
    def key_hex(self) -> str: ...
    @property
    def key_bytes(self) -> bytes: ...
    def __repr__(self) -> str: ...

class Mock1B64:
    def __init__(self, key: Optional[str] = None, keyless: bool = False) -> None: ...
    def enc(self, plaintext: str) -> str: ...
    def dec(self, obtext: str) -> str: ...
    @property
    def format(self) -> str: ...
    @property
    def scheme(self) -> str: ...
    @property
    def encoding(self) -> str: ...
    @property
    def key(self) -> str: ...
    @property
    def key_hex(self) -> str: ...
    @property
    def key_bytes(self) -> bytes: ...
    def __repr__(self) -> str: ...

class Mock1Hex:
    def __init__(self, key: Optional[str] = None, keyless: bool = False) -> None: ...
    def enc(self, plaintext: str) -> str: ...
    def dec(self, obtext: str) -> str: ...
    @property
    def format(self) -> str: ...
    @property
    def scheme(self) -> str: ...
    @property
    def encoding(self) -> str: ...
    @property
    def key(self) -> str: ...
    @property
    def key_hex(self) -> str: ...
    @property
    def key_bytes(self) -> bytes: ...
    def __repr__(self) -> str: ...

class Mock2C32:
    def __init__(self, key: Optional[str] = None, keyless: bool = False) -> None: ...
    def enc(self, plaintext: str) -> str: ...
    def dec(self, obtext: str) -> str: ...
    @property
    def format(self) -> str: ...
    @property
    def scheme(self) -> str: ...
    @property
    def encoding(self) -> str: ...
    @property
    def key(self) -> str: ...
    @property
    def key_hex(self) -> str: ...
    @property
    def key_bytes(self) -> bytes: ...
    def __repr__(self) -> str: ...

class Mock2B32:
    def __init__(self, key: Optional[str] = None, keyless: bool = False) -> None: ...
    def enc(self, plaintext: str) -> str: ...
    def dec(self, obtext: str) -> str: ...
    @property
    def format(self) -> str: ...
    @property
    def scheme(self) -> str: ...
    @property
    def encoding(self) -> str: ...
    @property
    def key(self) -> str: ...
    @property
    def key_hex(self) -> str: ...
    @property
    def key_bytes(self) -> bytes: ...
    def __repr__(self) -> str: ...

class Mock2B64:
    def __init__(self, key: Optional[str] = None, keyless: bool = False) -> None: ...
    def enc(self, plaintext: str) -> str: ...
    def dec(self, obtext: str) -> str: ...
    @property
    def format(self) -> str: ...
    @property
    def scheme(self) -> str: ...
    @property
    def encoding(self) -> str: ...
    @property
    def key(self) -> str: ...
    @property
    def key_hex(self) -> str: ...
    @property
    def key_bytes(self) -> bytes: ...
    def __repr__(self) -> str: ...

class Mock2Hex:
    def __init__(self, key: Optional[str] = None, keyless: bool = False) -> None: ...
    def enc(self, plaintext: str) -> str: ...
    def dec(self, obtext: str) -> str: ...
    @property
    def format(self) -> str: ...
    @property
    def scheme(self) -> str: ...
    @property
    def encoding(self) -> str: ...
    @property
    def key(self) -> str: ...
    @property
    def key_hex(self) -> str: ...
    @property
    def key_bytes(self) -> bytes: ...
    def __repr__(self) -> str: ...

# ============================================================================
# Z-tier mock/testing codec classes
# ============================================================================

class Zmock1C32:
    def __init__(self, secret: Optional[str] = None, keyless: bool = False) -> None: ...
    def enc(self, plaintext: str) -> str: ...
    def dec(self, obtext: str) -> str: ...
    @property
    def format(self) -> str: ...
    @property
    def scheme(self) -> str: ...
    @property
    def encoding(self) -> str: ...
    @property
    def secret(self) -> str: ...
    @property
    def secret_hex(self) -> str: ...
    @property
    def secret_bytes(self) -> bytes: ...
    def __repr__(self) -> str: ...

class Zmock1B32:
    def __init__(self, secret: Optional[str] = None, keyless: bool = False) -> None: ...
    def enc(self, plaintext: str) -> str: ...
    def dec(self, obtext: str) -> str: ...
    @property
    def format(self) -> str: ...
    @property
    def scheme(self) -> str: ...
    @property
    def encoding(self) -> str: ...
    @property
    def secret(self) -> str: ...
    @property
    def secret_hex(self) -> str: ...
    @property
    def secret_bytes(self) -> bytes: ...
    def __repr__(self) -> str: ...

class Zmock1B64:
    def __init__(self, secret: Optional[str] = None, keyless: bool = False) -> None: ...
    def enc(self, plaintext: str) -> str: ...
    def dec(self, obtext: str) -> str: ...
    @property
    def format(self) -> str: ...
    @property
    def scheme(self) -> str: ...
    @property
    def encoding(self) -> str: ...
    @property
    def secret(self) -> str: ...
    @property
    def secret_hex(self) -> str: ...
    @property
    def secret_bytes(self) -> bytes: ...
    def __repr__(self) -> str: ...

class Zmock1Hex:
    def __init__(self, secret: Optional[str] = None, keyless: bool = False) -> None: ...
    def enc(self, plaintext: str) -> str: ...
    def dec(self, obtext: str) -> str: ...
    @property
    def format(self) -> str: ...
    @property
    def scheme(self) -> str: ...
    @property
    def encoding(self) -> str: ...
    @property
    def secret(self) -> str: ...
    @property
    def secret_hex(self) -> str: ...
    @property
    def secret_bytes(self) -> bytes: ...
    def __repr__(self) -> str: ...

# ============================================================================
# Legacy Z-tier codec class
# ============================================================================

class Legacy:
    def __init__(self, secret: Optional[str] = None, keyless: bool = False) -> None: ...
    def enc(self, plaintext: str) -> str: ...
    def dec(self, obtext: str) -> str: ...
    @property
    def format(self) -> str: ...
    @property
    def scheme(self) -> str: ...
    @property
    def encoding(self) -> str: ...
    @property
    def secret(self) -> str: ...
    @property
    def secret_hex(self) -> str: ...
    @property
    def secret_bytes(self) -> bytes: ...
    def __repr__(self) -> str: ...

# ============================================================================
# Key/secret generation functions
# ============================================================================

def generate_key() -> str: ...
def generate_key_hex() -> str: ...
def generate_key_bytes() -> bytes: ...
def generate_secret() -> str: ...
def generate_secret_hex() -> str: ...
def generate_secret_bytes() -> bytes: ...

# ============================================================================
# Convenience functions
# ============================================================================

def enc(plaintext: str, format: str, key: str) -> str: ...
def enc_keyless(plaintext: str, format: str) -> str: ...
def dec(obtext: str, format: str, key: str) -> str: ...
def dec_keyless(obtext: str, format: str) -> str: ...
def autodec(obtext: str, key: str) -> str: ...
def autodec_keyless(obtext: str) -> str: ...
