# This file is part of the faebryk project
# SPDX-License-Identifier: MIT

# This file is auto-generated by zig.
# Do not edit this file directly; edit the corresponding
# Zig file instead.

from enum import Enum, IntEnum  # noqa: F401
from typing import Any  # noqa: F401

# Dirty hack to not error in ruff check
type Allocator = Any

class Property:
    name: str
    value: str

    def __init__(self, *, name: str, value: str) -> None: ...
    def __repr__(self) -> str: ...
    @staticmethod
    def __field_names__() -> list[str]: ...
    def __zig_address__(self) -> int: ...

class Libsource:
    lib: str
    part: str
    description: str

    def __init__(self, *, lib: str, part: str, description: str) -> None: ...
    def __repr__(self) -> str: ...
    @staticmethod
    def __field_names__() -> list[str]: ...
    def __zig_address__(self) -> int: ...

class Sheetpath:
    names: str
    tstamps: str

    def __init__(self, *, names: str, tstamps: str) -> None: ...
    def __repr__(self) -> str: ...
    @staticmethod
    def __field_names__() -> list[str]: ...
    def __zig_address__(self) -> int: ...

class Field:
    name: str
    value: str | None

    def __init__(self, *, name: str, value: str | None) -> None: ...
    def __repr__(self) -> str: ...
    @staticmethod
    def __field_names__() -> list[str]: ...
    def __zig_address__(self) -> int: ...

class Fields:
    fields: list[Field]

    def __init__(self, *, fields: list[Field]) -> None: ...
    def __repr__(self) -> str: ...
    @staticmethod
    def __field_names__() -> list[str]: ...
    def __zig_address__(self) -> int: ...

class Component:
    ref: str
    value: str
    footprint: str
    propertys: list[Property]
    tstamps: list[str]
    fields: Fields | None
    sheetpath: Sheetpath | None
    libsource: Libsource | None
    datasheet: str | None

    def __init__(
        self,
        *,
        ref: str,
        value: str,
        footprint: str,
        propertys: list[Property],
        tstamps: list[str],
        fields: Fields | None,
        sheetpath: Sheetpath | None,
        libsource: Libsource | None,
        datasheet: str | None,
    ) -> None: ...
    def __repr__(self) -> str: ...
    @staticmethod
    def __field_names__() -> list[str]: ...
    def __zig_address__(self) -> int: ...

class Components:
    comps: list[Component]

    def __init__(self, *, comps: list[Component]) -> None: ...
    def __repr__(self) -> str: ...
    @staticmethod
    def __field_names__() -> list[str]: ...
    def __zig_address__(self) -> int: ...

class Node:
    ref: str
    pin: str
    pintype: str | None
    pinfunction: str | None

    def __init__(
        self, *, ref: str, pin: str, pintype: str | None, pinfunction: str | None
    ) -> None: ...
    def __repr__(self) -> str: ...
    @staticmethod
    def __field_names__() -> list[str]: ...
    def __zig_address__(self) -> int: ...

class Net:
    code: str
    name: str
    nodes: list[Node]

    def __init__(self, *, code: str, name: str, nodes: list[Node]) -> None: ...
    def __repr__(self) -> str: ...
    @staticmethod
    def __field_names__() -> list[str]: ...
    def __zig_address__(self) -> int: ...

class Nets:
    nets: list[Net]

    def __init__(self, *, nets: list[Net]) -> None: ...
    def __repr__(self) -> str: ...
    @staticmethod
    def __field_names__() -> list[str]: ...
    def __zig_address__(self) -> int: ...

class Comment:
    number: str
    value: str

    def __init__(self, *, number: str, value: str) -> None: ...
    def __repr__(self) -> str: ...
    @staticmethod
    def __field_names__() -> list[str]: ...
    def __zig_address__(self) -> int: ...

class TitleBlock:
    title: str
    company: str
    rev: str
    date: str
    source: str
    comment: list[Comment]

    def __init__(
        self,
        *,
        title: str,
        company: str,
        rev: str,
        date: str,
        source: str,
        comment: list[Comment],
    ) -> None: ...
    def __repr__(self) -> str: ...
    @staticmethod
    def __field_names__() -> list[str]: ...
    def __zig_address__(self) -> int: ...

class Sheet:
    number: str
    name: str
    tstamps: str
    title_block: TitleBlock

    def __init__(
        self, *, number: str, name: str, tstamps: str, title_block: TitleBlock
    ) -> None: ...
    def __repr__(self) -> str: ...
    @staticmethod
    def __field_names__() -> list[str]: ...
    def __zig_address__(self) -> int: ...

class Design:
    source: str
    date: str
    tool: str
    sheet: Sheet

    def __init__(self, *, source: str, date: str, tool: str, sheet: Sheet) -> None: ...
    def __repr__(self) -> str: ...
    @staticmethod
    def __field_names__() -> list[str]: ...
    def __zig_address__(self) -> int: ...

class Fp:
    fp: str

    def __init__(self, *, fp: str) -> None: ...
    def __repr__(self) -> str: ...
    @staticmethod
    def __field_names__() -> list[str]: ...
    def __zig_address__(self) -> int: ...

class Footprints:
    fps: list[Fp]

    def __init__(self, *, fps: list[Fp]) -> None: ...
    def __repr__(self) -> str: ...
    @staticmethod
    def __field_names__() -> list[str]: ...
    def __zig_address__(self) -> int: ...

class Pin:
    num: str
    name: str
    type: str

    def __init__(self, *, num: str, name: str, type: str) -> None: ...
    def __repr__(self) -> str: ...
    @staticmethod
    def __field_names__() -> list[str]: ...
    def __zig_address__(self) -> int: ...

class Pins:
    pin: list[Pin]

    def __init__(self, *, pin: list[Pin]) -> None: ...
    def __repr__(self) -> str: ...
    @staticmethod
    def __field_names__() -> list[str]: ...
    def __zig_address__(self) -> int: ...

class Libpart:
    lib: str
    part: str
    fields: Fields | None
    pins: Pins | None
    footprints: Footprints | None

    def __init__(
        self,
        *,
        lib: str,
        part: str,
        fields: Fields | None,
        pins: Pins | None,
        footprints: Footprints | None,
    ) -> None: ...
    def __repr__(self) -> str: ...
    @staticmethod
    def __field_names__() -> list[str]: ...
    def __zig_address__(self) -> int: ...

class Libparts:
    libparts: list[Libpart]

    def __init__(self, *, libparts: list[Libpart]) -> None: ...
    def __repr__(self) -> str: ...
    @staticmethod
    def __field_names__() -> list[str]: ...
    def __zig_address__(self) -> int: ...

class Libraries:
    def __init__(self) -> None: ...
    def __repr__(self) -> str: ...
    @staticmethod
    def __field_names__() -> list[str]: ...
    def __zig_address__(self) -> int: ...

class Netlist:
    version: str
    components: Components
    nets: Nets
    design: Design | None
    libparts: Libparts
    libraries: Libraries

    def __init__(
        self,
        *,
        version: str,
        components: Components,
        nets: Nets,
        design: Design | None,
        libparts: Libparts,
        libraries: Libraries,
    ) -> None: ...
    def __repr__(self) -> str: ...
    @staticmethod
    def __field_names__() -> list[str]: ...
    def __zig_address__(self) -> int: ...

class NetlistFile:
    netlist: Netlist

    def __init__(self, *, netlist: Netlist) -> None: ...
    def __repr__(self) -> str: ...
    @staticmethod
    def __field_names__() -> list[str]: ...
    def __zig_address__(self) -> int: ...
    @staticmethod
    def loads(*, arg_0: Allocator, arg_1: Any) -> NetlistFile: ...
    @staticmethod
    def dumps(*, arg_0: NetlistFile, arg_1: Allocator, arg_2: Any) -> None: ...
    def free(self, *, arg_0: Allocator) -> None: ...

# Module-level functions
def loads(data: str) -> NetlistFile: ...
def dumps(obj: NetlistFile) -> str: ...
