class AESCCM(object):
    def __init__(self, key: bytes, tag_length: int | None) -> None: ...
    def decrypt(self, nonce: bytes, data: bytes, associated_data: bytes | None) -> bytes: ...
    def encrypt(self, nonce: bytes, data: bytes, associated_data: bytes | None) -> bytes: ...
    @classmethod
    def generate_key(cls, bit_length: int) -> bytes: ...

class AESGCM(object):
    def __init__(self, key: bytes) -> None: ...
    def decrypt(self, nonce: bytes, data: bytes, associated_data: bytes | None) -> bytes: ...
    def encrypt(self, nonce: bytes, data: bytes, associated_data: bytes | None) -> bytes: ...
    @classmethod
    def generate_key(cls, bit_length: int) -> bytes: ...

class ChaCha20Poly1305(object):
    def __init__(self, key: bytes) -> None: ...
    def decrypt(self, nonce: bytes, data: bytes, associated_data: bytes | None) -> bytes: ...
    def encrypt(self, nonce: bytes, data: bytes, associated_data: bytes | None) -> bytes: ...
    @classmethod
    def generate_key(cls) -> bytes: ...
