"""
Auto-generated Python stub file from hashlib.__sha512.py
Module: hashlib.__sha512
"""


import t, c

SHA512_BLOCK_LEN:  t.CDefine = 128
SHA512_DIGEST_LEN: t.CDefine =  64

def sha512_ror(x: t.CUInt64T, n: int) -> t.CUInt64T: pass

def sha512_shr(x: t.CUInt64T, n: int) -> t.CUInt64T: pass

def sha512_Ch(x: t.CUInt64T, y: t.CUInt64T, z: t.CUInt64T) -> t.CUInt64T: pass

def sha512_Maj(x: t.CUInt64T, y: t.CUInt64T, z: t.CUInt64T) -> t.CUInt64T: pass

def sha512_BigSigma0(x: t.CUInt64T) -> t.CUInt64T: pass

def sha512_BigSigma1(x: t.CUInt64T) -> t.CUInt64T: pass

def sha512_Sigma0(x: t.CUInt64T) -> t.CUInt64T: pass

def sha512_Sigma1(x: t.CUInt64T) -> t.CUInt64T: pass


sha512_K: t.CExtern | t.CArray[t.CUInt64T, 80]

@t.Object
class sha512:
    state: t.CArray[t.CUInt64T, 8]
    count: t.CArray[t.CUInt64T, 2]
    buf: t.CArray[t.CUInt8T, SHA512_BLOCK_LEN]
    def __init__(self: sha512) -> t.CInt: pass
    def transform(self: sha512, block: t.CArray[t.CUInt8T, SHA512_BLOCK_LEN]) -> t.CInt: pass
    def update(self: sha512, s: str) -> t.CInt: pass
    def final(self: sha512, out: t.CArray[t.CUInt8T, SHA512_DIGEST_LEN]) -> t.CInt: pass