# This file is dual licensed under the terms of the Apache License, Version
# 2.0, and the BSD License. See the LICENSE file in the root of this repository
# for complete details.

from cryptography.hazmat.primitives.asymmetric import mldsa
from cryptography.utils import Buffer

class MLDSA44PrivateKey: ...
class MLDSA44PublicKey: ...
class MLDSA65PrivateKey: ...
class MLDSA65PublicKey: ...
class MLDSA87PrivateKey: ...
class MLDSA87PublicKey: ...

class MLDSAMuHasher:
    def __init__(
        self,
        public_key: mldsa.MLDSA44PublicKey
        | mldsa.MLDSA65PublicKey
        | mldsa.MLDSA87PublicKey,
        context: Buffer | None = None,
    ) -> None: ...
    def update(self, data: Buffer) -> None: ...
    def copy(self) -> MLDSAMuHasher: ...
    def finalize(self) -> bytes: ...

def generate_mldsa44_key() -> mldsa.MLDSA44PrivateKey: ...
def from_mldsa44_public_bytes(data: bytes) -> mldsa.MLDSA44PublicKey: ...
def from_mldsa44_seed_bytes(data: Buffer) -> mldsa.MLDSA44PrivateKey: ...
def generate_mldsa65_key() -> mldsa.MLDSA65PrivateKey: ...
def from_mldsa65_public_bytes(data: bytes) -> mldsa.MLDSA65PublicKey: ...
def from_mldsa65_seed_bytes(data: Buffer) -> mldsa.MLDSA65PrivateKey: ...
def generate_mldsa87_key() -> mldsa.MLDSA87PrivateKey: ...
def from_mldsa87_public_bytes(data: bytes) -> mldsa.MLDSA87PublicKey: ...
def from_mldsa87_seed_bytes(data: Buffer) -> mldsa.MLDSA87PrivateKey: ...
