from _typeshed import Incomplete

from kafka.sasl.abc import SaslMechanism

log: Incomplete

def xor_bytes(left, right): ...

class SaslMechanismScram(SaslMechanism):
    username: Incomplete
    mechanism: Incomplete
    def __init__(self, **config) -> None: ...
    def auth_bytes(self): ...
    def receive(self, auth_bytes): ...
    def is_done(self): ...
    def is_authenticated(self): ...
    def auth_details(self): ...

class ScramClient:
    MECHANISMS: Incomplete
    nonce: Incomplete
    auth_message: bytes
    salted_password: Incomplete
    user: Incomplete
    password: Incomplete
    hashfunc: Incomplete
    hashname: Incomplete
    stored_key: Incomplete
    client_key: Incomplete
    client_signature: Incomplete
    client_proof: Incomplete
    server_key: Incomplete
    server_signature: Incomplete
    def __init__(self, user, password, mechanism) -> None: ...
    def first_message(self): ...
    def process_server_first_message(self, server_first_message) -> None: ...
    def hmac(self, key, msg): ...
    def create_salted_password(self, salt, iterations) -> None: ...
    def final_message(self): ...
    def process_server_final_message(self, server_final_message) -> None: ...
