import pathlib
from typing import Callable, Literal, final

class SIT:
    def __init__(
        self,
        module_name: str,
        lib: str,
        ipc: Literal["sock", "zmq"],
        module_dir: str = ...,
        lib_dir: str = ...,
        desc: str = ...,
        width_macros: dict[str, int] | None = ...,
    ) -> None: ...
    def _get_driver_inputs(self) -> str: ...
    def _get_driver_outputs(self) -> str: ...
    def _get_driver_defs(self) -> str: ...
    def set_template_paths(
        self,
        template_dir_path: str | pathlib.Path = ...,
        driver_template_path: str | pathlib.Path = ...,
        component_template_path: str | pathlib.Path = ...,
    ) -> None: ...
    def set_gen_paths(
        self,
        gen_dir_path: str | pathlib.Path = ...,
        driver_path: str | pathlib.Path = ...,
        comp_path: str | pathlib.Path = ...,
    ) -> None: ...
    @staticmethod
    def _sig_fmt(
        fmt: str, split_func: Callable[[str], str], array: list[str], delim: str
    ) -> str: ...
    def _get_signal_width_from_macro(self, signal_type: str) -> str: ...
    def _get_all_ports(self) -> None: ...
    @final
    def set_ports(self, ports: tuple[tuple[str, str, str], ...]) -> None: ...
    def __get_comp_defs(self) -> dict[str, str]: ...
    def __generate_comp_str(self) -> str: ...
    def __generate_driver_str(self) -> str: ...
    @final
    def generate_bbox(self) -> None: ...
    @final
    def fixed_width_float_output(self, precision: int) -> None: ...
    @final
    def disable_runtime_warnings(self, warnings: str | list[str]) -> None: ...
    @staticmethod
    def _get_ints(signal: str) -> int: ...
    @staticmethod
    def _get_num_digits(signal: int) -> int: ...
