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


import t, c
import string
import memhub
from stdint import *

_HT_EMPTY: t.CDefine = 0
_HT_TOMBSTONE: t.CDefine = 1
_HT_INIT_CAP: t.CDefine = 16
_HT_SLOT_SIZE: t.CDefine = 24
_FNV_OFFSET: t.CExtern | t.CUInt64T
_FNV_PRIME: t.CExtern | t.CUInt64T

def _fnv1a_hash(key: str) -> t.CUInt64T: pass


class HashTable:
    __slots__: t.CVoid | t.CPtr
    __count__: t.CSizeT = 0
    __capacity__: t.CSizeT = 16
    __tombstones__: t.CSizeT = 0
    __mbuddy__: memhub.MemBuddy | t.CPtr
    __iter_index__: t.CSizeT = 0
    def __new__(self: HashTable, mb: memhub.MemBuddy | t.CPtr) -> t.CPtr: pass
    def __init__(self: HashTable, mb: memhub.MemBuddy | t.CPtr) -> t.CInt: pass
    def _slot_hash(self: HashTable, idx: t.CSizeT) -> t.CUInt64T: pass
    def _slot_key(self: HashTable, idx: t.CSizeT) -> str: pass
    def _slot_value(self: HashTable, idx: t.CSizeT) -> t.CPtr: pass
    def _set_slot(self: HashTable, idx: t.CSizeT, h: t.CUInt64T, key: str, val: t.CPtr) -> t.CInt: pass
    def _find_slot(self: HashTable, key: str, h: t.CUInt64T) -> t.CSizeT: pass
    def _resize(self: HashTable, new_cap: t.CSizeT) -> t.CInt: pass
    def __setitem__(self: HashTable, key: str, val: t.CNeedPtr) -> t.CInt: pass
    def __getitem__(self: HashTable, key: str) -> t.CPtr: pass
    def __contains__(self: HashTable, key: str) -> t.CInt: pass
    def __delitem__(self: HashTable, key: str) -> t.CInt: pass
    def __len__(self: HashTable) -> t.CSizeT: pass
    def __iter__(self: HashTable) -> HashTable | t.CPtr: pass
    def __next__(self: HashTable) -> str: pass
    def get(self: HashTable, key: str, default: t.CPtr) -> t.CPtr: pass
    def set_int(self: HashTable, key: str, val: int) -> t.CInt: pass
    def set_str(self: HashTable, key: str, val: str) -> t.CInt: pass