"""
Auto-generated Python stub file from __zlib.zhuff.py
Module: __zlib.zhuff
"""


from stdint import *
import zdef
import t, c

ZHUFF_MAX_CODES: t.CDefine = 288
ZHUFF_MAX_BITS:  t.CDefine = 15

class zhuff_code:
    code: UINT
    bits: t.CInt
@t.Object
class zhuff_tree:
    codes: t.CArray[zhuff_code, ZHUFF_MAX_CODES]
    count: t.CInt
    max_bits: t.CInt
    def __init__(self: zhuff_tree) -> t.CInt: pass
    def build_codes(self: zhuff_tree, freqs: INTPTR, count: t.CInt, max_bits: t.CInt) -> t.CInt: pass
    def build_fixed_lit_tree(self: zhuff_tree) -> t.CInt: pass
    def build_fixed_dist_tree(self: zhuff_tree) -> t.CInt: pass
    def encode_symbol(self: zhuff_tree, symbol: int, writer: zdef.zbit_writer | t.CPtr) -> t.CInt: pass
    def build_code_lengths(self: zhuff_tree, lengths: t.CInt | t.CPtr, freqs: t.CInt | t.CPtr, count: t.CInt, max_bits: t.CInt) -> t.CInt: pass
    def get_fixed_lit_lengths(self: zhuff_tree, lengths: INTPTR) -> t.CInt: pass
    def get_fixed_dist_lengths(self: zhuff_tree, lengths: INTPTR) -> t.CInt: pass
    def build_tree_from_lengths(self: zhuff_tree, lengths: INTPTR, count: t.CInt, max_bits: t.CInt) -> t.CInt: pass
class zhuff_decode_node:
    children: t.CArray[t.CInt, 2]
    symbol: t.CInt
@t.Object
class zhuff_decode_tree:
    nodes: t.CArray[zhuff_decode_node, 2 * ZHUFF_MAX_CODES]
    node_count: t.CInt
    root: t.CInt
    def __init__(self: zhuff_decode_tree) -> t.CInt: pass
    def build_decode_tree(self: zhuff_decode_tree, ht: zhuff_tree | t.CPtr) -> t.CInt: pass
    def decode_symbol(self: zhuff_decode_tree, reader: zdef.zbit_reader | t.CPtr) -> t.CInt: pass