# 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 E_stroke_type(str, Enum):
    SOLID = "solid"
    DASH = "dash"
    DASH_DOT = "dash_dot"
    DASH_DOT_DOT = "dash_dot_dot"
    DOT = "dot"
    DEFAULT = "default"

class E_justify(str, Enum):
    LEFT = "left"
    RIGHT = "right"
    BOTTOM = "bottom"
    TOP = "top"
    MIRROR = "mirror"

class E_fill(str, Enum):
    YES = "yes"
    NO = "no"
    NONE = "none"
    SOLID = "solid"

class E_knockout(str, Enum):
    KNOCKOUT = "knockout"

class E_paper_type(str, Enum):
    A5 = "A5"
    A4 = "A4"
    A3 = "A3"
    A2 = "A2"
    A1 = "A1"
    A0 = "A0"
    A = "A"
    B = "B"
    C = "C"
    D = "D"
    E = "E"
    USLETTER = "USLetter"
    USLEGAL = "USLegal"
    USLEDGER = "USLedger"
    CUSTOM = "Custom"

class E_paper_orientation(str, Enum):
    PORTRAIT = "portrait"
    LANDSCAPE = "landscape"

class E_layer_type(str, Enum):
    SIGNAL = "signal"
    USER = "user"
    MIXED = "mixed"
    JUMPER = "jumper"
    POWER = "power"

class E_fp_text_type(str, Enum):
    USER = "user"
    REFERENCE = "reference"
    VALUE = "value"

class E_pad_type(str, Enum):
    THRU_HOLE = "thru_hole"
    SMD = "smd"
    NP_THRU_HOLE = "np_thru_hole"
    CONNECT = "connect"

class E_pad_shape(str, Enum):
    CIRCLE = "circle"
    RECT = "rect"
    OVAL = "oval"
    ROUNDRECT = "roundrect"
    CUSTOM = "custom"
    TRAPEZOID = "trapezoid"
    CHAMFERED_RECT = "chamfered_rect"

class E_pad_clearance(str, Enum):
    OUTLINE = "outline"
    CONVEXHULL = "convexhull"

class E_pad_anchor(str, Enum):
    RECT = "rect"
    CIRCLE = "circle"

class E_pad_property(str, Enum):
    PAD_PROP_BGA = "pad_prop_bga"
    PAD_PROP_FIDUCIAL_GLOB = "pad_prop_fiducial_glob"
    PAD_PROP_FIDUCIAL_LOC = "pad_prop_fiducial_loc"
    PAD_PROP_TESTPOINT = "pad_prop_testpoint"
    PAD_PROP_CASTELLATED = "pad_prop_castellated"
    PAD_PROP_HEATSINK = "pad_prop_heatsink"
    PAD_PROP_MECHANICAL = "pad_prop_mechanical"
    NONE = "none"

class E_pad_chamfer(str, Enum):
    CHAMFER_TOP_LEFT = "chamfer_top_left"
    CHAMFER_TOP_RIGHT = "chamfer_top_right"
    CHAMFER_BOTTOM_LEFT = "chamfer_bottom_left"
    CHAMFER_BOTTOM_RIGHT = "chamfer_bottom_right"

class E_pad_drill_shape(str, Enum):
    CIRCLE = "circle"
    OVAL = "oval"

class E_pad_tenting(str, Enum):
    FRONT = "front"
    BACK = "back"
    NONE = "none"

class E_zone_connection(IntEnum):
    INHERITED = -1
    NONE = 0
    THERMAL = 1
    FULL = 2
    THT_THERMAL = 3

class E_padstack_mode(str, Enum):
    FRONT_INNER_BACK = "front_inner_back"
    CUSTOM = "custom"

class E_via_tenting(str, Enum):
    FRONT = "front"
    BACK = "back"

class E_zone_hatch_mode(str, Enum):
    EDGE = "edge"
    FULL = "full"
    NONE = "none"

class E_zone_connect_pads_mode(str, Enum):
    NO = "no"
    YES = "yes"
    THERMAL_RELIEFS = "thermal_reliefs"
    THRU_HOLE_ONLY = "thru_hole_only"

class E_zone_fill_mode(str, Enum):
    HATCH = "hatch"
    POLYGON = "polygon"

class E_zone_smoothing(str, Enum):
    FILLET = "fillet"
    CHAMFER = "chamfer"
    NONE = "none"

class E_zone_hatch_border_algorithm(str, Enum):
    HATCH_THICKNESS = "hatch_thickness"
    MIN_THICKNESS = "min_thickness"

class E_zone_island_removal_mode(IntEnum):
    ALWAYS = 0
    DO_NOT_REMOVE = 1
    BELOW_AREA_LIMIT = 2

class E_zone_keepout(str, Enum):
    ALLOWED = "allowed"
    NOT_ALLOWED = "not_allowed"

class E_zone_placement_source_type(str, Enum):
    SHEETNAME = "sheetname"
    COMPONENT_CLASS = "component_class"

class E_zone_teardrop_type(str, Enum):
    PADVIA = "padvia"
    TRACK_END = "track_end"

class E_dimension_type(str, Enum):
    ALIGNED = "aligned"
    ORTHOGONAL = "orthogonal"
    LEADER = "leader"
    CENTER = "center"
    RADIAL = "radial"

class E_dimension_arrow_direction(str, Enum):
    INWARD = "inward"
    OUTWARD = "outward"

class E_copper_finish(str, Enum):
    ENIG = "ENIG"
    ENEPIG = "ENEPIG"
    HAL_SNPB = "HAL SnPb"
    HAL_LEAD_FREE = "HAL lead-free"
    HARD_GOLD = "Hard Gold"
    IMMERSION_TIN = "Immersion tin"
    IMMERSION_SILVER = "Immersion silver"
    IMMERSION_NICKEL = "Immersion nickel"
    IMMERSION_GOLD = "Immersion gold"
    OSP = "OSP"
    HT_OSP = "HT_OSP"
    NONE = "None"
    USER_DEFINED = "User defined"

class E_edge_connector(str, Enum):
    BEVELLED = "bevelled"
    YES = "yes"

class E_embedded_file_type(str, Enum):
    OTHER = "other"
    MODEL = "model"
    FONT = "font"
    DATASHEET = "datasheet"
    WORKSHEET = "worksheet"

class E_Attr(str, Enum):
    SMD = "smd"
    DNP = "dnp"
    BOARD_ONLY = "board_only"
    THROUGH_HOLE = "through_hole"
    EXCLUDE_FROM_POS_FILES = "exclude_from_pos_files"
    EXCLUDE_FROM_BOM = "exclude_from_bom"
    ALLOW_MISSING_COURTYARD = "allow_missing_courtyard"

class E_zone_fill_enable(str, Enum):
    YES = "yes"

class Xy:
    x: float
    y: float

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

class Xyz:
    x: float
    y: float
    z: float

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

class Xyr:
    x: float
    y: float
    r: float | None

    def __init__(self, *, x: float, y: float, r: float | None) -> None: ...
    def __repr__(self) -> str: ...
    @staticmethod
    def __field_names__() -> list[str]: ...
    def __zig_address__(self) -> int: ...

class Wh:
    w: float
    h: float | None

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

class Stroke:
    width: float
    type: str

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

class Font:
    size: Wh
    thickness: float | None
    bold: bool | None
    italic: bool | None

    def __init__(
        self,
        *,
        size: Wh,
        thickness: float | None,
        bold: bool | None,
        italic: bool | None,
    ) -> None: ...
    def __repr__(self) -> str: ...
    @staticmethod
    def __field_names__() -> list[str]: ...
    def __zig_address__(self) -> int: ...

class Justify:
    justify1: str | None
    justify2: str | None
    justify3: str | None

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

class Effects:
    font: Font
    hide: bool | None
    justify: Justify | None

    def __init__(
        self, *, font: Font, hide: bool | None, justify: Justify | None
    ) -> None: ...
    def __repr__(self) -> str: ...
    @staticmethod
    def __field_names__() -> list[str]: ...
    def __zig_address__(self) -> int: ...

class TextLayer:
    layer: str
    knockout: str | None

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

class Line:
    start: Xy
    end: Xy
    solder_mask_margin: float | None
    stroke: Stroke | None
    fill: str | None
    layer: str | None
    layers: list[str]
    locked: bool | None
    uuid: str | None

    def __init__(
        self,
        *,
        start: Xy,
        end: Xy,
        solder_mask_margin: float | None,
        stroke: Stroke | None,
        fill: str | None,
        layer: str | None,
        layers: list[str],
        locked: bool | None,
        uuid: str | None,
    ) -> None: ...
    def __repr__(self) -> str: ...
    @staticmethod
    def __field_names__() -> list[str]: ...
    def __zig_address__(self) -> int: ...

class Arc:
    start: Xy
    mid: Xy
    end: Xy
    solder_mask_margin: float | None
    stroke: Stroke | None
    fill: str | None
    layer: str | None
    layers: list[str]
    locked: bool | None
    uuid: str | None

    def __init__(
        self,
        *,
        start: Xy,
        mid: Xy,
        end: Xy,
        solder_mask_margin: float | None,
        stroke: Stroke | None,
        fill: str | None,
        layer: str | None,
        layers: list[str],
        locked: bool | None,
        uuid: str | None,
    ) -> None: ...
    def __repr__(self) -> str: ...
    @staticmethod
    def __field_names__() -> list[str]: ...
    def __zig_address__(self) -> int: ...

class Circle:
    center: Xy
    end: Xy
    solder_mask_margin: float | None
    stroke: Stroke | None
    fill: str | None
    layer: str | None
    layers: list[str]
    locked: bool | None
    uuid: str | None

    def __init__(
        self,
        *,
        center: Xy,
        end: Xy,
        solder_mask_margin: float | None,
        stroke: Stroke | None,
        fill: str | None,
        layer: str | None,
        layers: list[str],
        locked: bool | None,
        uuid: str | None,
    ) -> None: ...
    def __repr__(self) -> str: ...
    @staticmethod
    def __field_names__() -> list[str]: ...
    def __zig_address__(self) -> int: ...

class Rect:
    start: Xy
    end: Xy
    solder_mask_margin: float | None
    stroke: Stroke | None
    fill: str | None
    layer: str | None
    layers: list[str]
    locked: bool | None
    uuid: str | None

    def __init__(
        self,
        *,
        start: Xy,
        end: Xy,
        solder_mask_margin: float | None,
        stroke: Stroke | None,
        fill: str | None,
        layer: str | None,
        layers: list[str],
        locked: bool | None,
        uuid: str | None,
    ) -> None: ...
    def __repr__(self) -> str: ...
    @staticmethod
    def __field_names__() -> list[str]: ...
    def __zig_address__(self) -> int: ...

class Pts:
    xys: list[Xy]

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

class Polygon:
    pts: Pts
    solder_mask_margin: float | None
    stroke: Stroke | None
    fill: str | None
    layer: str | None
    layers: list[str]
    locked: bool | None
    uuid: str | None

    def __init__(
        self,
        *,
        pts: Pts,
        solder_mask_margin: float | None,
        stroke: Stroke | None,
        fill: str | None,
        layer: str | None,
        layers: list[str],
        locked: bool | None,
        uuid: str | None,
    ) -> None: ...
    def __repr__(self) -> str: ...
    @staticmethod
    def __field_names__() -> list[str]: ...
    def __zig_address__(self) -> int: ...

class Curve:
    pts: Pts
    solder_mask_margin: float | None
    stroke: Stroke | None
    fill: str | None
    layer: str | None
    layers: list[str]
    locked: bool | None
    uuid: str | None

    def __init__(
        self,
        *,
        pts: Pts,
        solder_mask_margin: float | None,
        stroke: Stroke | None,
        fill: str | None,
        layer: str | None,
        layers: list[str],
        locked: bool | None,
        uuid: str | None,
    ) -> None: ...
    def __repr__(self) -> str: ...
    @staticmethod
    def __field_names__() -> list[str]: ...
    def __zig_address__(self) -> int: ...

class Text:
    text: str
    at: Xyr
    layer: TextLayer
    uuid: str | None
    effects: Effects

    def __init__(
        self,
        *,
        text: str,
        at: Xyr,
        layer: TextLayer,
        uuid: str | None,
        effects: Effects,
    ) -> None: ...
    def __repr__(self) -> str: ...
    @staticmethod
    def __field_names__() -> list[str]: ...
    def __zig_address__(self) -> int: ...

class FpText:
    type: str
    text: str
    at: Xyr
    layer: TextLayer
    hide: bool | None
    uuid: str | None
    effects: Effects

    def __init__(
        self,
        *,
        type: str,
        text: str,
        at: Xyr,
        layer: TextLayer,
        hide: bool | None,
        uuid: str | None,
        effects: Effects,
    ) -> None: ...
    def __repr__(self) -> str: ...
    @staticmethod
    def __field_names__() -> list[str]: ...
    def __zig_address__(self) -> int: ...

class PadPrimitives:
    gr_polys: list[Polygon]

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

class PadDrill:
    shape: str | None
    size_x: float | None
    size_y: float | None
    offset: Xy | None

    def __init__(
        self,
        *,
        shape: str | None,
        size_x: float | None,
        size_y: float | None,
        offset: Xy | None,
    ) -> None: ...
    def __repr__(self) -> str: ...
    @staticmethod
    def __field_names__() -> list[str]: ...
    def __zig_address__(self) -> int: ...

class PadOptions:
    clearance: str | None
    anchor: str | None

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

class PadTenting:
    type: str

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

class Pad:
    name: str
    type: str
    shape: str
    at: Xyr
    size: Wh
    drill: PadDrill | None
    layers: list[str]
    remove_unused_layers: bool | None
    net: Net | None
    solder_mask_margin: float | None
    solder_paste_margin: float | None
    solder_paste_margin_ratio: float | None
    clearance: float | None
    zone_connect: int | None
    thermal_bridge_width: float | None
    thermal_gap: float | None
    roundrect_rratio: float | None
    chamfer_ratio: float | None
    chamfer: str | None
    properties: str | None
    options: PadOptions | None
    tenting: PadTenting | None
    uuid: str | None
    primitives: PadPrimitives | None

    def __init__(
        self,
        *,
        name: str,
        type: str,
        shape: str,
        at: Xyr,
        size: Wh,
        drill: PadDrill | None,
        layers: list[str],
        remove_unused_layers: bool | None,
        net: Net | None,
        solder_mask_margin: float | None,
        solder_paste_margin: float | None,
        solder_paste_margin_ratio: float | None,
        clearance: float | None,
        zone_connect: int | None,
        thermal_bridge_width: float | None,
        thermal_gap: float | None,
        roundrect_rratio: float | None,
        chamfer_ratio: float | None,
        chamfer: str | None,
        properties: str | None,
        options: PadOptions | None,
        tenting: PadTenting | None,
        uuid: str | None,
        primitives: PadPrimitives | None,
    ) -> None: ...
    def __repr__(self) -> str: ...
    @staticmethod
    def __field_names__() -> list[str]: ...
    def __zig_address__(self) -> int: ...

class Net:
    number: int
    name: str | None

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

class Property:
    name: str
    value: str
    at: Xyr
    unlocked: bool | None
    layer: str
    hide: bool | None
    uuid: str | None
    effects: Effects | None

    def __init__(
        self,
        *,
        name: str,
        value: str,
        at: Xyr,
        unlocked: bool | None,
        layer: str,
        hide: bool | None,
        uuid: str | None,
        effects: Effects | None,
    ) -> None: ...
    def __repr__(self) -> str: ...
    @staticmethod
    def __field_names__() -> list[str]: ...
    def __zig_address__(self) -> int: ...

class ModelXyz:
    xyz: Xyz

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

class Model:
    path: str
    offset: ModelXyz
    scale: ModelXyz
    rotate: ModelXyz

    def __init__(
        self, *, path: str, offset: ModelXyz, scale: ModelXyz, rotate: ModelXyz
    ) -> None: ...
    def __repr__(self) -> str: ...
    @staticmethod
    def __field_names__() -> list[str]: ...
    def __zig_address__(self) -> int: ...

class Footprint:
    name: str
    layer: str
    uuid: str | None
    at: Xyr
    path: str | None
    propertys: list[Property]
    attr: list[str]
    fp_lines: list[Line]
    fp_arcs: list[Arc]
    fp_circles: list[Circle]
    fp_rects: list[Rect]
    fp_poly: list[Polygon]
    fp_texts: list[FpText]
    pads: list[Pad]
    embedded_fonts: bool | None
    models: list[Model]

    def __init__(
        self,
        *,
        name: str,
        layer: str,
        uuid: str | None,
        at: Xyr,
        path: str | None,
        propertys: list[Property],
        attr: list[str],
        fp_lines: list[Line],
        fp_arcs: list[Arc],
        fp_circles: list[Circle],
        fp_rects: list[Rect],
        fp_poly: list[Polygon],
        fp_texts: list[FpText],
        pads: list[Pad],
        embedded_fonts: bool | None,
        models: list[Model],
    ) -> None: ...
    def __repr__(self) -> str: ...
    @staticmethod
    def __field_names__() -> list[str]: ...
    def __zig_address__(self) -> int: ...

class ViaLayer:
    name: str
    size: Xy | None
    thermal_gap: float | None
    thermal_bridge_width: float | None
    thermal_bridge_angle: float | None
    zone_connect: int | None

    def __init__(
        self,
        *,
        name: str,
        size: Xy | None,
        thermal_gap: float | None,
        thermal_bridge_width: float | None,
        thermal_bridge_angle: float | None,
        zone_connect: int | None,
    ) -> None: ...
    def __repr__(self) -> str: ...
    @staticmethod
    def __field_names__() -> list[str]: ...
    def __zig_address__(self) -> int: ...

class ViaPadstack:
    mode: str
    layers: list[ViaLayer]

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

class ViaTenting:
    front: bool
    back: bool

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

class Via:
    at: Xy
    size: float
    drill: float
    layers: list[str]
    net: int
    remove_unused_layers: bool | None
    keep_end_layers: bool | None
    zone_layer_connections: list[str]
    padstack: ViaPadstack | None
    teardrops: Teardrop | None
    tenting: ViaTenting | None
    free: bool | None
    locked: bool | None
    uuid: str | None

    def __init__(
        self,
        *,
        at: Xy,
        size: float,
        drill: float,
        layers: list[str],
        net: int,
        remove_unused_layers: bool | None,
        keep_end_layers: bool | None,
        zone_layer_connections: list[str],
        padstack: ViaPadstack | None,
        teardrops: Teardrop | None,
        tenting: ViaTenting | None,
        free: bool | None,
        locked: bool | None,
        uuid: str | None,
    ) -> None: ...
    def __repr__(self) -> str: ...
    @staticmethod
    def __field_names__() -> list[str]: ...
    def __zig_address__(self) -> int: ...

class Hatch:
    mode: str
    pitch: float

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

class ConnectPads:
    mode: str | None
    clearance: float | None

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

class ZoneFill:
    enable: str | None
    mode: str | None
    hatch_thickness: float | None
    hatch_gap: float | None
    hatch_orientation: float | None
    hatch_smoothing_level: float | None
    hatch_smoothing_value: float | None
    hatch_border_algorithm: str | None
    hatch_min_hole_area: float | None
    arc_segments: int | None
    thermal_gap: float | None
    thermal_bridge_width: float | None
    smoothing: str | None
    radius: float | None
    island_removal_mode: int | None
    island_area_min: float | None

    def __init__(
        self,
        *,
        enable: str | None,
        mode: str | None,
        hatch_thickness: float | None,
        hatch_gap: float | None,
        hatch_orientation: float | None,
        hatch_smoothing_level: float | None,
        hatch_smoothing_value: float | None,
        hatch_border_algorithm: str | None,
        hatch_min_hole_area: float | None,
        arc_segments: int | None,
        thermal_gap: float | None,
        thermal_bridge_width: float | None,
        smoothing: str | None,
        radius: float | None,
        island_removal_mode: int | None,
        island_area_min: float | None,
    ) -> None: ...
    def __repr__(self) -> str: ...
    @staticmethod
    def __field_names__() -> list[str]: ...
    def __zig_address__(self) -> int: ...

class FilledPolygon:
    layer: str
    pts: Pts

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

class ZoneKeepout:
    tracks: str
    vias: str
    pads: str
    copperpour: str
    footprints: str

    def __init__(
        self, *, tracks: str, vias: str, pads: str, copperpour: str, footprints: str
    ) -> None: ...
    def __repr__(self) -> str: ...
    @staticmethod
    def __field_names__() -> list[str]: ...
    def __zig_address__(self) -> int: ...

class ZonePlacement:
    source_type: str | None
    source: str | None
    enabled: bool
    sheetname: str | None

    def __init__(
        self,
        *,
        source_type: str | None,
        source: str | None,
        enabled: bool,
        sheetname: str | None,
    ) -> None: ...
    def __repr__(self) -> str: ...
    @staticmethod
    def __field_names__() -> list[str]: ...
    def __zig_address__(self) -> int: ...

class ZoneTeardrop:
    type: str

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

class ZoneAttr:
    teardrop: ZoneTeardrop | None

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

class Zone:
    net: int
    net_name: str
    layer: str | None
    layers: list[str]
    uuid: str | None
    name: str | None
    hatch: Hatch
    priority: int | None
    attr: ZoneAttr | None
    connect_pads: ConnectPads | None
    min_thickness: float | None
    filled_areas_thickness: bool | None
    keepout: ZoneKeepout | None
    placement: ZonePlacement | None
    fill: ZoneFill | None
    polygon: Polygon
    filled_polygon: list[FilledPolygon]

    def __init__(
        self,
        *,
        net: int,
        net_name: str,
        layer: str | None,
        layers: list[str],
        uuid: str | None,
        name: str | None,
        hatch: Hatch,
        priority: int | None,
        attr: ZoneAttr | None,
        connect_pads: ConnectPads | None,
        min_thickness: float | None,
        filled_areas_thickness: bool | None,
        keepout: ZoneKeepout | None,
        placement: ZonePlacement | None,
        fill: ZoneFill | None,
        polygon: Polygon,
        filled_polygon: list[FilledPolygon],
    ) -> None: ...
    def __repr__(self) -> str: ...
    @staticmethod
    def __field_names__() -> list[str]: ...
    def __zig_address__(self) -> int: ...

class Segment:
    start: Xy
    end: Xy
    width: float
    layer: str | None
    net: int
    uuid: str | None

    def __init__(
        self,
        *,
        start: Xy,
        end: Xy,
        width: float,
        layer: str | None,
        net: int,
        uuid: str | None,
    ) -> None: ...
    def __repr__(self) -> str: ...
    @staticmethod
    def __field_names__() -> list[str]: ...
    def __zig_address__(self) -> int: ...

class ArcSegment:
    start: Xy
    mid: Xy
    end: Xy
    width: float
    layer: str | None
    net: int
    uuid: str | None

    def __init__(
        self,
        *,
        start: Xy,
        mid: Xy,
        end: Xy,
        width: float,
        layer: str | None,
        net: int,
        uuid: str | None,
    ) -> None: ...
    def __repr__(self) -> str: ...
    @staticmethod
    def __field_names__() -> list[str]: ...
    def __zig_address__(self) -> int: ...

class General:
    thickness: float
    legacy_teardrops: bool

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

class Paper:
    type: str
    size: Xy | None
    orientation: str | None

    def __init__(
        self, *, type: str, size: Xy | None, orientation: str | None
    ) -> None: ...
    def __repr__(self) -> str: ...
    @staticmethod
    def __field_names__() -> list[str]: ...
    def __zig_address__(self) -> int: ...

class TitleBlock:
    title: str | None
    date: str | None
    revision: str | None
    company: str | None
    comment: list[Comment]

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

class Comment:
    number: int
    text: str

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

class Layer:
    number: int
    name: str
    type: str
    alias: str | None

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

class Stackup:
    layers: list[StackupLayer]
    copper_finish: str | None
    dielectric_constraints: bool | None
    edge_connector: str | None
    castellated_pads: bool | None
    edge_plating: bool | None

    def __init__(
        self,
        *,
        layers: list[StackupLayer],
        copper_finish: str | None,
        dielectric_constraints: bool | None,
        edge_connector: str | None,
        castellated_pads: bool | None,
        edge_plating: bool | None,
    ) -> None: ...
    def __repr__(self) -> str: ...
    @staticmethod
    def __field_names__() -> list[str]: ...
    def __zig_address__(self) -> int: ...

class StackupLayer:
    name: str
    type: str
    color: str | None
    thickness: float | None
    material: str | None
    epsilon_r: float | None
    loss_tangent: float | None

    def __init__(
        self,
        *,
        name: str,
        type: str,
        color: str | None,
        thickness: float | None,
        material: str | None,
        epsilon_r: float | None,
        loss_tangent: float | None,
    ) -> None: ...
    def __repr__(self) -> str: ...
    @staticmethod
    def __field_names__() -> list[str]: ...
    def __zig_address__(self) -> int: ...

class Rules:
    max_error: float
    min_clearance: float
    min_connection: float
    min_copper_edge_clearance: float
    min_hole_clearance: float
    min_hole_to_hole: float
    min_microvia_diameter: float
    min_microvia_drill: float
    min_resolved_spokes: int
    min_silk_clearance: float
    min_text_height: float
    min_text_thickness: float
    min_through_hole_diameter: float
    min_track_width: float
    min_via_annular_width: float
    min_via_diameter: float
    solder_mask_to_copper_clearance: float
    use_height_for_length_calcs: bool

    def __init__(
        self,
        *,
        max_error: float,
        min_clearance: float,
        min_connection: float,
        min_copper_edge_clearance: float,
        min_hole_clearance: float,
        min_hole_to_hole: float,
        min_microvia_diameter: float,
        min_microvia_drill: float,
        min_resolved_spokes: int,
        min_silk_clearance: float,
        min_text_height: float,
        min_text_thickness: float,
        min_through_hole_diameter: float,
        min_track_width: float,
        min_via_annular_width: float,
        min_via_diameter: float,
        solder_mask_to_copper_clearance: float,
        use_height_for_length_calcs: bool,
    ) -> None: ...
    def __repr__(self) -> str: ...
    @staticmethod
    def __field_names__() -> list[str]: ...
    def __zig_address__(self) -> int: ...

class PcbPlotParams:
    layerselection: str
    plot_on_all_layers_selection: str
    disableapertmacros: bool | None
    usegerberextensions: bool | None
    usegerberattributes: bool | None
    usegerberadvancedattributes: bool | None
    creategerberjobfile: bool | None
    dashed_line_dash_ratio: float
    dashed_line_gap_ratio: float
    svgprecision: int
    plotframeref: bool | None
    viasonmask: bool | None
    mode: int
    useauxorigin: bool | None
    hpglpennumber: int
    hpglpenspeed: int
    hpglpendiameter: float
    pdf_front_fp_property_popups: bool | None
    pdf_back_fp_property_popups: bool | None
    pdf_metadata: bool | None
    pdf_single_document: bool | None
    dxfpolygonmode: bool | None
    dxfimperialunits: bool | None
    dxfusepcbnewfont: bool | None
    psnegative: bool | None
    psa4output: bool | None
    plot_black_and_white: bool | None
    plotinvisibletext: bool | None
    sketchpadsonfab: bool | None
    plotreference: bool | None
    plotvalue: bool | None
    plotpadnumbers: bool | None
    hidednponfab: bool | None
    sketchdnponfab: bool | None
    crossoutdnponfab: bool | None
    plotfptext: bool | None
    subtractmaskfromsilk: bool | None
    outputformat: int
    mirror: bool | None
    drillshape: int
    scaleselection: int
    outputdirectory: str

    def __init__(
        self,
        *,
        layerselection: str,
        plot_on_all_layers_selection: str,
        disableapertmacros: bool | None,
        usegerberextensions: bool | None,
        usegerberattributes: bool | None,
        usegerberadvancedattributes: bool | None,
        creategerberjobfile: bool | None,
        dashed_line_dash_ratio: float,
        dashed_line_gap_ratio: float,
        svgprecision: int,
        plotframeref: bool | None,
        viasonmask: bool | None,
        mode: int,
        useauxorigin: bool | None,
        hpglpennumber: int,
        hpglpenspeed: int,
        hpglpendiameter: float,
        pdf_front_fp_property_popups: bool | None,
        pdf_back_fp_property_popups: bool | None,
        pdf_metadata: bool | None,
        pdf_single_document: bool | None,
        dxfpolygonmode: bool | None,
        dxfimperialunits: bool | None,
        dxfusepcbnewfont: bool | None,
        psnegative: bool | None,
        psa4output: bool | None,
        plot_black_and_white: bool | None,
        plotinvisibletext: bool | None,
        sketchpadsonfab: bool | None,
        plotreference: bool | None,
        plotvalue: bool | None,
        plotpadnumbers: bool | None,
        hidednponfab: bool | None,
        sketchdnponfab: bool | None,
        crossoutdnponfab: bool | None,
        plotfptext: bool | None,
        subtractmaskfromsilk: bool | None,
        outputformat: int,
        mirror: bool | None,
        drillshape: int,
        scaleselection: int,
        outputdirectory: str,
    ) -> None: ...
    def __repr__(self) -> str: ...
    @staticmethod
    def __field_names__() -> list[str]: ...
    def __zig_address__(self) -> int: ...

class Tenting:
    values: list[str]

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

class Setup:
    stackup: Stackup | None
    pad_to_mask_clearance: int
    allow_soldermask_bridges_in_footprints: bool
    tenting: list[str]
    pcbplotparams: PcbPlotParams
    rules: Rules | None

    def __init__(
        self,
        *,
        stackup: Stackup | None,
        pad_to_mask_clearance: int,
        allow_soldermask_bridges_in_footprints: bool,
        tenting: list[str],
        pcbplotparams: PcbPlotParams,
        rules: Rules | None,
    ) -> None: ...
    def __repr__(self) -> str: ...
    @staticmethod
    def __field_names__() -> list[str]: ...
    def __zig_address__(self) -> int: ...

class KicadPcb:
    version: int
    generator: str
    generator_version: str
    general: General
    paper: str | None
    title_block: TitleBlock | None
    layers: list[Layer]
    setup: Setup
    nets: list[Net]
    footprints: list[Footprint]
    vias: list[Via]
    segments: list[Segment]
    arcs: list[ArcSegment]
    gr_lines: list[Line]
    gr_arcs: list[Arc]
    gr_curves: list[Curve]
    gr_circles: list[Circle]
    gr_rects: list[Rect]
    gr_polys: list[Polygon]
    gr_texts: list[Text]
    gr_text_boxes: list[TextBox]
    zones: list[Zone]
    images: list[Image]
    dimensions: list[Dimension]
    groups: list[Group]
    targets: list[Target]
    embedded_fonts: bool | None
    embedded_files: EmbeddedFiles | None
    tables: list[Table]
    generateds: list[Generated]

    def __init__(
        self,
        *,
        version: int,
        generator: str,
        generator_version: str,
        general: General,
        paper: str | None,
        title_block: TitleBlock | None,
        layers: list[Layer],
        setup: Setup,
        nets: list[Net],
        footprints: list[Footprint],
        vias: list[Via],
        segments: list[Segment],
        arcs: list[ArcSegment],
        gr_lines: list[Line],
        gr_arcs: list[Arc],
        gr_curves: list[Curve],
        gr_circles: list[Circle],
        gr_rects: list[Rect],
        gr_polys: list[Polygon],
        gr_texts: list[Text],
        gr_text_boxes: list[TextBox],
        zones: list[Zone],
        images: list[Image],
        dimensions: list[Dimension],
        groups: list[Group],
        targets: list[Target],
        embedded_fonts: bool | None,
        embedded_files: EmbeddedFiles | None,
        tables: list[Table],
        generateds: list[Generated],
    ) -> None: ...
    def __repr__(self) -> str: ...
    @staticmethod
    def __field_names__() -> list[str]: ...
    def __zig_address__(self) -> int: ...

class Generated:
    uuid: str
    type: str
    name: str
    layer: str
    members: list[str]
    locked: bool | None

    def __init__(
        self,
        *,
        uuid: str,
        type: str,
        name: str,
        layer: str,
        members: list[str],
        locked: bool | None,
    ) -> None: ...
    def __repr__(self) -> str: ...
    @staticmethod
    def __field_names__() -> list[str]: ...
    def __zig_address__(self) -> int: ...

class Image:
    at: Xy
    layer: str
    scale: float
    data: list[str]
    uuid: str | None

    def __init__(
        self, *, at: Xy, layer: str, scale: float, data: list[str], uuid: str | None
    ) -> None: ...
    def __repr__(self) -> str: ...
    @staticmethod
    def __field_names__() -> list[str]: ...
    def __zig_address__(self) -> int: ...

class EmbeddedFile:
    name: str
    type: str
    data: list[str]
    checksum: str | None

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

class EmbeddedFiles:
    files: list[EmbeddedFile]

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

class Teardrop:
    enabled: bool
    allow_two_segments: bool
    prefer_zone_connections: bool
    best_length_ratio: float
    max_length: float
    best_width_ratio: float
    max_width: float
    curved_edges: bool
    filter_ratio: float

    def __init__(
        self,
        *,
        enabled: bool,
        allow_two_segments: bool,
        prefer_zone_connections: bool,
        best_length_ratio: float,
        max_length: float,
        best_width_ratio: float,
        max_width: float,
        curved_edges: bool,
        filter_ratio: float,
    ) -> None: ...
    def __repr__(self) -> str: ...
    @staticmethod
    def __field_names__() -> list[str]: ...
    def __zig_address__(self) -> int: ...

class RenderCache:
    text: str
    rotation: float
    polygons: list[Polygon]

    def __init__(
        self, *, text: str, rotation: float, polygons: list[Polygon]
    ) -> None: ...
    def __repr__(self) -> str: ...
    @staticmethod
    def __field_names__() -> list[str]: ...
    def __zig_address__(self) -> int: ...

class Margins:
    left: float
    top: float
    right: float
    bottom: float

    def __init__(
        self, *, left: float, top: float, right: float, bottom: float
    ) -> None: ...
    def __repr__(self) -> str: ...
    @staticmethod
    def __field_names__() -> list[str]: ...
    def __zig_address__(self) -> int: ...

class Span:
    cols: int
    rows: int

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

class TextBox:
    text: str
    start: Xy | None
    end: Xy | None
    pts: Pts | None
    margins: Margins | None
    angle: float | None
    layer: str
    uuid: str | None
    effects: Effects
    border: bool | None
    stroke: Stroke | None
    locked: bool | None

    def __init__(
        self,
        *,
        text: str,
        start: Xy | None,
        end: Xy | None,
        pts: Pts | None,
        margins: Margins | None,
        angle: float | None,
        layer: str,
        uuid: str | None,
        effects: Effects,
        border: bool | None,
        stroke: Stroke | None,
        locked: bool | None,
    ) -> None: ...
    def __repr__(self) -> str: ...
    @staticmethod
    def __field_names__() -> list[str]: ...
    def __zig_address__(self) -> int: ...

class TableCell:
    text: str
    locked: bool
    start: Xy | None
    end: Xy | None
    pts: Pts | None
    angle: float | None
    stroke: Stroke | None
    border: bool | None
    margins: Margins | None
    layer: str
    span: Span | None
    effects: Effects
    render_cache: RenderCache | None
    uuid: str | None

    def __init__(
        self,
        *,
        text: str,
        locked: bool,
        start: Xy | None,
        end: Xy | None,
        pts: Pts | None,
        angle: float | None,
        stroke: Stroke | None,
        border: bool | None,
        margins: Margins | None,
        layer: str,
        span: Span | None,
        effects: Effects,
        render_cache: RenderCache | None,
        uuid: str | None,
    ) -> None: ...
    def __repr__(self) -> str: ...
    @staticmethod
    def __field_names__() -> list[str]: ...
    def __zig_address__(self) -> int: ...

class Cells:
    table_cells: list[TableCell]

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

class Border:
    external: bool
    header: bool
    stroke: Stroke

    def __init__(self, *, external: bool, header: bool, stroke: Stroke) -> None: ...
    def __repr__(self) -> str: ...
    @staticmethod
    def __field_names__() -> list[str]: ...
    def __zig_address__(self) -> int: ...

class Separator:
    rows: bool
    cols: bool
    stroke: Stroke

    def __init__(self, *, rows: bool, cols: bool, stroke: Stroke) -> None: ...
    def __repr__(self) -> str: ...
    @staticmethod
    def __field_names__() -> list[str]: ...
    def __zig_address__(self) -> int: ...

class Table:
    column_count: int
    locked: bool | None
    layer: str
    column_widths: list[float]
    row_heights: list[float]
    cells: Cells
    border: Border
    separators: Separator

    def __init__(
        self,
        *,
        column_count: int,
        locked: bool | None,
        layer: str,
        column_widths: list[float],
        row_heights: list[float],
        cells: Cells,
        border: Border,
        separators: Separator,
    ) -> None: ...
    def __repr__(self) -> str: ...
    @staticmethod
    def __field_names__() -> list[str]: ...
    def __zig_address__(self) -> int: ...

class DimensionPts:
    xys: list[Xy]

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

class DimensionFormat:
    prefix: str
    suffix: str
    units: int
    units_format: int
    precision: int
    override_value: str | None
    suppress_zeroes: bool

    def __init__(
        self,
        *,
        prefix: str,
        suffix: str,
        units: int,
        units_format: int,
        precision: int,
        override_value: str | None,
        suppress_zeroes: bool,
    ) -> None: ...
    def __repr__(self) -> str: ...
    @staticmethod
    def __field_names__() -> list[str]: ...
    def __zig_address__(self) -> int: ...

class DimensionStyle:
    thickness: float | None
    arrow_length: float | None
    arrow_direction: str
    text_position_mode: int | None
    extension_height: float | None
    extension_offset: float | None
    keep_text_aligned: bool
    text_frame: int | None

    def __init__(
        self,
        *,
        thickness: float | None,
        arrow_length: float | None,
        arrow_direction: str,
        text_position_mode: int | None,
        extension_height: float | None,
        extension_offset: float | None,
        keep_text_aligned: bool,
        text_frame: int | None,
    ) -> None: ...
    def __repr__(self) -> str: ...
    @staticmethod
    def __field_names__() -> list[str]: ...
    def __zig_address__(self) -> int: ...

class Dimension:
    type: str
    layer: str
    uuid: str | None
    pts: DimensionPts
    height: float
    orientation: float | None
    leader_length: float | None
    format: DimensionFormat | None
    style: DimensionStyle | None
    gr_text: Text

    def __init__(
        self,
        *,
        type: str,
        layer: str,
        uuid: str | None,
        pts: DimensionPts,
        height: float,
        orientation: float | None,
        leader_length: float | None,
        format: DimensionFormat | None,
        style: DimensionStyle | None,
        gr_text: Text,
    ) -> None: ...
    def __repr__(self) -> str: ...
    @staticmethod
    def __field_names__() -> list[str]: ...
    def __zig_address__(self) -> int: ...

class Group:
    name: str | None
    uuid: str | None
    locked: bool | None
    members: list[str]

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

class Target:
    at: Xy
    size: Xy
    width: float
    layer: str
    uuid: str | None

    def __init__(
        self, *, at: Xy, size: Xy, width: float, layer: str, uuid: str | None
    ) -> None: ...
    def __repr__(self) -> str: ...
    @staticmethod
    def __field_names__() -> list[str]: ...
    def __zig_address__(self) -> int: ...

class PcbFile:
    kicad_pcb: KicadPcb

    def __init__(self, *, kicad_pcb: KicadPcb) -> 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) -> PcbFile: ...
    @staticmethod
    def dumps(*, arg_0: PcbFile, arg_1: Allocator, arg_2: Any) -> None: ...
    def free(self, *, arg_0: Allocator) -> None: ...

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