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


import t
import stdio
import c
import testcheck

def square[T](x: T) -> T: pass

def test_generic_square_types() -> t.CInt: pass

def clamp[T](val: T, lo: T, hi: T) -> T: pass

def test_generic_clamp() -> t.CInt: pass


class Stack[T]:
    data: t.CArray[t.CInt, 16]
    top: t.CInt
    def __init__(self: Stack) -> t.CInt: pass
    def push(self: Stack, val: T) -> t.CInt: pass
    def pop(self: Stack) -> T: pass
    def is_empty(self: Stack) -> t.CInt: pass
    def size_of(self: Stack) -> t.CSizeT: pass
    def type_size(self: Stack) -> t.CSizeT: pass

def test_generic_stack() -> t.CInt: pass


class IntPair:
    a: t.CInt
    b: t.CInt

def generic_swap[T](p: IntPair | t.CPtr) -> t.CInt: pass

def test_generic_swap() -> t.CInt: pass


class Range[T]:
    start: T
    end_val: T
    step: T
    def __init__(self: Range, s: T, e: T, st: T) -> t.CInt: pass
    def sum_all(self: Range) -> T: pass

def test_generic_range() -> t.CInt: pass

def array_sum(arr: t.CArray[t.CInt, 8], n: t.CInt) -> t.CInt: pass

def test_generic_array_sum() -> t.CInt: pass

def max_of_three[T](a: T, b: T, c_val: T) -> T: pass

def test_generic_max_three() -> t.CInt: pass


class Container[T]:
    values: t.CArray[t.CInt, 8]
    size: t.CInt
    def __init__(self: Container) -> t.CInt: pass
    def add(self: Container, v: T) -> t.CInt: pass
    def get(self: Container, idx: t.CInt) -> T: pass
    def contains(self: Container, v: T) -> t.CInt: pass
    def total(self: Container) -> T: pass

def test_generic_container() -> t.CInt: pass

def factorial[T](n: T) -> T: pass

def test_generic_factorial() -> t.CInt: pass


class Accumulator[T]:
    total: T
    def __init__(self: Accumulator, start: T) -> t.CInt: pass
    def add_val(self: Accumulator, v: T) -> t.CInt: pass
    def get_result(self: Accumulator) -> T: pass

def test_generic_accumulator() -> t.CInt: pass

def test_generic_sizeof_bug() -> t.CInt: pass

def main() -> t.CInt: pass
