"""
@generated by mypy-protobuf.  Do not edit manually!
isort:skip_file

Commands related to schematic document and sheet management
"""
import builtins
import collections.abc
from .. import common
import google.protobuf.descriptor
import google.protobuf.internal.containers
import google.protobuf.internal.enum_type_wrapper
import google.protobuf.message
from .. import schematic
import sys
import typing
if sys.version_info >= (3, 10):
    import typing as typing_extensions
else:
    import typing_extensions
DESCRIPTOR: google.protobuf.descriptor.FileDescriptor

class _AnnotateScope:
    ValueType = typing.NewType('ValueType', builtins.int)
    V: typing_extensions.TypeAlias = ValueType

class _AnnotateScopeEnumTypeWrapper(google.protobuf.internal.enum_type_wrapper._EnumTypeWrapper[_AnnotateScope.ValueType], builtins.type):
    DESCRIPTOR: google.protobuf.descriptor.EnumDescriptor
    AS_UNKNOWN: _AnnotateScope.ValueType
    AS_ALL: _AnnotateScope.ValueType
    'Annotate all sheets'
    AS_CURRENT_SHEET: _AnnotateScope.ValueType
    'Annotate current sheet only'
    AS_SELECTION: _AnnotateScope.ValueType
    'Annotate selected symbols only'

class AnnotateScope(_AnnotateScope, metaclass=_AnnotateScopeEnumTypeWrapper):
    """
    Annotation Commands

    / Scope for annotation operations
    """
AS_UNKNOWN: AnnotateScope.ValueType
AS_ALL: AnnotateScope.ValueType
'Annotate all sheets'
AS_CURRENT_SHEET: AnnotateScope.ValueType
'Annotate current sheet only'
AS_SELECTION: AnnotateScope.ValueType
'Annotate selected symbols only'
global___AnnotateScope = AnnotateScope

class _AnnotateOrder:
    ValueType = typing.NewType('ValueType', builtins.int)
    V: typing_extensions.TypeAlias = ValueType

class _AnnotateOrderEnumTypeWrapper(google.protobuf.internal.enum_type_wrapper._EnumTypeWrapper[_AnnotateOrder.ValueType], builtins.type):
    DESCRIPTOR: google.protobuf.descriptor.EnumDescriptor
    AO_UNKNOWN: _AnnotateOrder.ValueType
    AO_X_Y: _AnnotateOrder.ValueType
    'Sort by X then Y coordinate'
    AO_Y_X: _AnnotateOrder.ValueType
    'Sort by Y then X coordinate'

class AnnotateOrder(_AnnotateOrder, metaclass=_AnnotateOrderEnumTypeWrapper):
    """/ Sort order for annotation"""
AO_UNKNOWN: AnnotateOrder.ValueType
AO_X_Y: AnnotateOrder.ValueType
'Sort by X then Y coordinate'
AO_Y_X: AnnotateOrder.ValueType
'Sort by Y then X coordinate'
global___AnnotateOrder = AnnotateOrder

class _AnnotateAlgorithm:
    ValueType = typing.NewType('ValueType', builtins.int)
    V: typing_extensions.TypeAlias = ValueType

class _AnnotateAlgorithmEnumTypeWrapper(google.protobuf.internal.enum_type_wrapper._EnumTypeWrapper[_AnnotateAlgorithm.ValueType], builtins.type):
    DESCRIPTOR: google.protobuf.descriptor.EnumDescriptor
    AA_UNKNOWN: _AnnotateAlgorithm.ValueType
    AA_INCREMENTAL: _AnnotateAlgorithm.ValueType
    'Keep existing numbers, fill gaps'
    AA_RESTART: _AnnotateAlgorithm.ValueType
    'Restart numbering from start_number'

class AnnotateAlgorithm(_AnnotateAlgorithm, metaclass=_AnnotateAlgorithmEnumTypeWrapper):
    """/ Algorithm for annotation numbering"""
AA_UNKNOWN: AnnotateAlgorithm.ValueType
AA_INCREMENTAL: AnnotateAlgorithm.ValueType
'Keep existing numbers, fill gaps'
AA_RESTART: AnnotateAlgorithm.ValueType
'Restart numbering from start_number'
global___AnnotateAlgorithm = AnnotateAlgorithm

class _ERCSeverity:
    ValueType = typing.NewType('ValueType', builtins.int)
    V: typing_extensions.TypeAlias = ValueType

class _ERCSeverityEnumTypeWrapper(google.protobuf.internal.enum_type_wrapper._EnumTypeWrapper[_ERCSeverity.ValueType], builtins.type):
    DESCRIPTOR: google.protobuf.descriptor.EnumDescriptor
    ERC_SEV_UNKNOWN: _ERCSeverity.ValueType
    ERC_SEV_ERROR: _ERCSeverity.ValueType
    ERC_SEV_WARNING: _ERCSeverity.ValueType
    ERC_SEV_EXCLUDED: _ERCSeverity.ValueType

class ERCSeverity(_ERCSeverity, metaclass=_ERCSeverityEnumTypeWrapper):
    """/ ERC violation severity"""
ERC_SEV_UNKNOWN: ERCSeverity.ValueType
ERC_SEV_ERROR: ERCSeverity.ValueType
ERC_SEV_WARNING: ERCSeverity.ValueType
ERC_SEV_EXCLUDED: ERCSeverity.ValueType
global___ERCSeverity = ERCSeverity

class _ConnectionType:
    ValueType = typing.NewType('ValueType', builtins.int)
    V: typing_extensions.TypeAlias = ValueType

class _ConnectionTypeEnumTypeWrapper(google.protobuf.internal.enum_type_wrapper._EnumTypeWrapper[_ConnectionType.ValueType], builtins.type):
    DESCRIPTOR: google.protobuf.descriptor.EnumDescriptor
    CT_UNKNOWN: _ConnectionType.ValueType
    CT_NONE: _ConnectionType.ValueType
    'No connection (dangling)'
    CT_NET: _ConnectionType.ValueType
    'Electrical net (single signal)'
    CT_BUS: _ConnectionType.ValueType
    'Bus vector (e.g., D[0..7])'
    CT_BUS_GROUP: _ConnectionType.ValueType
    'Bus group (e.g., {DATA, ADDR, CTRL})'

class ConnectionType(_ConnectionType, metaclass=_ConnectionTypeEnumTypeWrapper):
    """
    Connectivity Commands

    / Type of connection
    """
CT_UNKNOWN: ConnectionType.ValueType
CT_NONE: ConnectionType.ValueType
'No connection (dangling)'
CT_NET: ConnectionType.ValueType
'Electrical net (single signal)'
CT_BUS: ConnectionType.ValueType
'Bus vector (e.g., D[0..7])'
CT_BUS_GROUP: ConnectionType.ValueType
'Bus group (e.g., {DATA, ADDR, CTRL})'
global___ConnectionType = ConnectionType

class _SymbolUnitNotation:
    ValueType = typing.NewType('ValueType', builtins.int)
    V: typing_extensions.TypeAlias = ValueType

class _SymbolUnitNotationEnumTypeWrapper(google.protobuf.internal.enum_type_wrapper._EnumTypeWrapper[_SymbolUnitNotation.ValueType], builtins.type):
    DESCRIPTOR: google.protobuf.descriptor.EnumDescriptor
    SUN_A: _SymbolUnitNotation.ValueType
    'A (no separator, letter)'
    SUN_DOT_A: _SymbolUnitNotation.ValueType
    '.A (dot separator, letter)'
    SUN_DASH_A: _SymbolUnitNotation.ValueType
    '-A (dash separator, letter)'
    SUN_UNDER_A: _SymbolUnitNotation.ValueType
    '_A (underscore separator, letter)'
    SUN_DOT_1: _SymbolUnitNotation.ValueType
    '.1 (dot separator, number)'
    SUN_DASH_1: _SymbolUnitNotation.ValueType
    '-1 (dash separator, number)'
    SUN_UNDER_1: _SymbolUnitNotation.ValueType
    '_1 (underscore separator, number)'

class SymbolUnitNotation(_SymbolUnitNotation, metaclass=_SymbolUnitNotationEnumTypeWrapper):
    """
    Annotation Settings Commands
    (Project-level settings from Schematic Setup -> General -> Annotation)

    / Symbol unit notation options (subpart separator and first ID)
    / Maps to combinations of m_SubpartIdSeparator and m_SubpartFirstId
    """
SUN_A: SymbolUnitNotation.ValueType
'A (no separator, letter)'
SUN_DOT_A: SymbolUnitNotation.ValueType
'.A (dot separator, letter)'
SUN_DASH_A: SymbolUnitNotation.ValueType
'-A (dash separator, letter)'
SUN_UNDER_A: SymbolUnitNotation.ValueType
'_A (underscore separator, letter)'
SUN_DOT_1: SymbolUnitNotation.ValueType
'.1 (dot separator, number)'
SUN_DASH_1: SymbolUnitNotation.ValueType
'-1 (dash separator, number)'
SUN_UNDER_1: SymbolUnitNotation.ValueType
'_1 (underscore separator, number)'
global___SymbolUnitNotation = SymbolUnitNotation

class _AnnotationSortOrder:
    ValueType = typing.NewType('ValueType', builtins.int)
    V: typing_extensions.TypeAlias = ValueType

class _AnnotationSortOrderEnumTypeWrapper(google.protobuf.internal.enum_type_wrapper._EnumTypeWrapper[_AnnotationSortOrder.ValueType], builtins.type):
    DESCRIPTOR: google.protobuf.descriptor.EnumDescriptor
    ASO_X_POSITION: _AnnotationSortOrder.ValueType
    'Sort symbols by X position'
    ASO_Y_POSITION: _AnnotationSortOrder.ValueType
    'Sort symbols by Y position'

class AnnotationSortOrder(_AnnotationSortOrder, metaclass=_AnnotationSortOrderEnumTypeWrapper):
    """/ Annotation sort order"""
ASO_X_POSITION: AnnotationSortOrder.ValueType
'Sort symbols by X position'
ASO_Y_POSITION: AnnotationSortOrder.ValueType
'Sort symbols by Y position'
global___AnnotationSortOrder = AnnotationSortOrder

class _AnnotationNumberingMethod:
    ValueType = typing.NewType('ValueType', builtins.int)
    V: typing_extensions.TypeAlias = ValueType

class _AnnotationNumberingMethodEnumTypeWrapper(google.protobuf.internal.enum_type_wrapper._EnumTypeWrapper[_AnnotationNumberingMethod.ValueType], builtins.type):
    DESCRIPTOR: google.protobuf.descriptor.EnumDescriptor
    ANM_FIRST_FREE: _AnnotationNumberingMethod.ValueType
    'Use first free number after start_number'
    ANM_SHEET_X_100: _AnnotationNumberingMethod.ValueType
    'First free after sheet number X 100'
    ANM_SHEET_X_1000: _AnnotationNumberingMethod.ValueType
    'First free after sheet number X 1000'

class AnnotationNumberingMethod(_AnnotationNumberingMethod, metaclass=_AnnotationNumberingMethodEnumTypeWrapper):
    """/ Annotation numbering method"""
ANM_FIRST_FREE: AnnotationNumberingMethod.ValueType
'Use first free number after start_number'
ANM_SHEET_X_100: AnnotationNumberingMethod.ValueType
'First free after sheet number X 100'
ANM_SHEET_X_1000: AnnotationNumberingMethod.ValueType
'First free after sheet number X 1000'
global___AnnotationNumberingMethod = AnnotationNumberingMethod

class _NetlistFormat:
    ValueType = typing.NewType('ValueType', builtins.int)
    V: typing_extensions.TypeAlias = ValueType

class _NetlistFormatEnumTypeWrapper(google.protobuf.internal.enum_type_wrapper._EnumTypeWrapper[_NetlistFormat.ValueType], builtins.type):
    DESCRIPTOR: google.protobuf.descriptor.EnumDescriptor
    NF_UNKNOWN: _NetlistFormat.ValueType
    NF_KICAD: _NetlistFormat.ValueType
    'KiCad native format'
    NF_SPICE: _NetlistFormat.ValueType
    'SPICE netlist'
    NF_ORCAD: _NetlistFormat.ValueType
    'OrCAD format'
    NF_CADSTAR: _NetlistFormat.ValueType
    'CADSTAR format'
    NF_PADS: _NetlistFormat.ValueType
    'PADS format'

class NetlistFormat(_NetlistFormat, metaclass=_NetlistFormatEnumTypeWrapper):
    """
    Export Commands

    / Netlist format options
    """
NF_UNKNOWN: NetlistFormat.ValueType
NF_KICAD: NetlistFormat.ValueType
'KiCad native format'
NF_SPICE: NetlistFormat.ValueType
'SPICE netlist'
NF_ORCAD: NetlistFormat.ValueType
'OrCAD format'
NF_CADSTAR: NetlistFormat.ValueType
'CADSTAR format'
NF_PADS: NetlistFormat.ValueType
'PADS format'
global___NetlistFormat = NetlistFormat

class _PlotFormat:
    ValueType = typing.NewType('ValueType', builtins.int)
    V: typing_extensions.TypeAlias = ValueType

class _PlotFormatEnumTypeWrapper(google.protobuf.internal.enum_type_wrapper._EnumTypeWrapper[_PlotFormat.ValueType], builtins.type):
    DESCRIPTOR: google.protobuf.descriptor.EnumDescriptor
    PF_UNKNOWN: _PlotFormat.ValueType
    PF_PDF: _PlotFormat.ValueType
    PF_SVG: _PlotFormat.ValueType
    PF_HPGL: _PlotFormat.ValueType
    PF_PS: _PlotFormat.ValueType
    PF_DXF: _PlotFormat.ValueType
    PF_PNG: _PlotFormat.ValueType

class PlotFormat(_PlotFormat, metaclass=_PlotFormatEnumTypeWrapper):
    """/ Plot format options"""
PF_UNKNOWN: PlotFormat.ValueType
PF_PDF: PlotFormat.ValueType
PF_SVG: PlotFormat.ValueType
PF_HPGL: PlotFormat.ValueType
PF_PS: PlotFormat.ValueType
PF_DXF: PlotFormat.ValueType
PF_PNG: PlotFormat.ValueType
global___PlotFormat = PlotFormat

class _PinErrorType:
    ValueType = typing.NewType('ValueType', builtins.int)
    V: typing_extensions.TypeAlias = ValueType

class _PinErrorTypeEnumTypeWrapper(google.protobuf.internal.enum_type_wrapper._EnumTypeWrapper[_PinErrorType.ValueType], builtins.type):
    DESCRIPTOR: google.protobuf.descriptor.EnumDescriptor
    PET_OK: _PinErrorType.ValueType
    'No error'
    PET_WARNING: _PinErrorType.ValueType
    'Warning'
    PET_ERROR: _PinErrorType.ValueType
    'Error'
    PET_UNCONNECTED: _PinErrorType.ValueType
    'Unconnected'

class PinErrorType(_PinErrorType, metaclass=_PinErrorTypeEnumTypeWrapper):
    """
    ERC Pin Type Matrix Commands

    / Pin error types for the ERC pin matrix
    """
PET_OK: PinErrorType.ValueType
'No error'
PET_WARNING: PinErrorType.ValueType
'Warning'
PET_ERROR: PinErrorType.ValueType
'Error'
PET_UNCONNECTED: PinErrorType.ValueType
'Unconnected'
global___PinErrorType = PinErrorType

class _ElectricalPinType:
    ValueType = typing.NewType('ValueType', builtins.int)
    V: typing_extensions.TypeAlias = ValueType

class _ElectricalPinTypeEnumTypeWrapper(google.protobuf.internal.enum_type_wrapper._EnumTypeWrapper[_ElectricalPinType.ValueType], builtins.type):
    DESCRIPTOR: google.protobuf.descriptor.EnumDescriptor
    EPT_INPUT: _ElectricalPinType.ValueType
    EPT_OUTPUT: _ElectricalPinType.ValueType
    EPT_BIDI: _ElectricalPinType.ValueType
    EPT_TRISTATE: _ElectricalPinType.ValueType
    EPT_PASSIVE: _ElectricalPinType.ValueType
    EPT_NIC: _ElectricalPinType.ValueType
    'Not internally connected'
    EPT_UNSPECIFIED: _ElectricalPinType.ValueType
    EPT_POWER_IN: _ElectricalPinType.ValueType
    EPT_POWER_OUT: _ElectricalPinType.ValueType
    EPT_OPENCOLLECTOR: _ElectricalPinType.ValueType
    EPT_OPENEMITTER: _ElectricalPinType.ValueType
    EPT_NC: _ElectricalPinType.ValueType
    'Not connected'

class ElectricalPinType(_ElectricalPinType, metaclass=_ElectricalPinTypeEnumTypeWrapper):
    """/ Electrical pin types (must match ELECTRICAL_PINTYPE enum)"""
EPT_INPUT: ElectricalPinType.ValueType
EPT_OUTPUT: ElectricalPinType.ValueType
EPT_BIDI: ElectricalPinType.ValueType
EPT_TRISTATE: ElectricalPinType.ValueType
EPT_PASSIVE: ElectricalPinType.ValueType
EPT_NIC: ElectricalPinType.ValueType
'Not internally connected'
EPT_UNSPECIFIED: ElectricalPinType.ValueType
EPT_POWER_IN: ElectricalPinType.ValueType
EPT_POWER_OUT: ElectricalPinType.ValueType
EPT_OPENCOLLECTOR: ElectricalPinType.ValueType
EPT_OPENEMITTER: ElectricalPinType.ValueType
EPT_NC: ElectricalPinType.ValueType
'Not connected'
global___ElectricalPinType = ElectricalPinType

class _SchematicLineStyle:
    ValueType = typing.NewType('ValueType', builtins.int)
    V: typing_extensions.TypeAlias = ValueType

class _SchematicLineStyleEnumTypeWrapper(google.protobuf.internal.enum_type_wrapper._EnumTypeWrapper[_SchematicLineStyle.ValueType], builtins.type):
    DESCRIPTOR: google.protobuf.descriptor.EnumDescriptor
    SLS_SOLID: _SchematicLineStyle.ValueType
    SLS_DASH: _SchematicLineStyle.ValueType
    SLS_DOT: _SchematicLineStyle.ValueType
    SLS_DASH_DOT: _SchematicLineStyle.ValueType
    SLS_DASH_DOT_DOT: _SchematicLineStyle.ValueType

class SchematicLineStyle(_SchematicLineStyle, metaclass=_SchematicLineStyleEnumTypeWrapper):
    """
    Net Class Commands
    (Project-level settings from Schematic Setup -> Project -> Net Classes)

    / Line style for schematic wires/buses
    """
SLS_SOLID: SchematicLineStyle.ValueType
SLS_DASH: SchematicLineStyle.ValueType
SLS_DOT: SchematicLineStyle.ValueType
SLS_DASH_DOT: SchematicLineStyle.ValueType
SLS_DASH_DOT_DOT: SchematicLineStyle.ValueType
global___SchematicLineStyle = SchematicLineStyle

@typing.final
class SheetHierarchyNode(google.protobuf.message.Message):
    """
    Sheet Hierarchy Commands

    / Information about a sheet in the hierarchy
    """
    DESCRIPTOR: google.protobuf.descriptor.Descriptor
    ID_FIELD_NUMBER: builtins.int
    PATH_FIELD_NUMBER: builtins.int
    NAME_FIELD_NUMBER: builtins.int
    FILENAME_FIELD_NUMBER: builtins.int
    PAGE_NUMBER_FIELD_NUMBER: builtins.int
    CHILDREN_FIELD_NUMBER: builtins.int
    name: builtins.str
    filename: builtins.str
    page_number: builtins.str

    @property
    def id(self) -> common.types.base_types_pb2.KIID:
        ...

    @property
    def path(self) -> common.types.base_types_pb2.SheetPath:
        ...

    @property
    def children(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[global___SheetHierarchyNode]:
        ...

    def __init__(self, *, id: common.types.base_types_pb2.KIID | None=..., path: common.types.base_types_pb2.SheetPath | None=..., name: builtins.str=..., filename: builtins.str=..., page_number: builtins.str=..., children: collections.abc.Iterable[global___SheetHierarchyNode] | None=...) -> None:
        ...

    def HasField(self, field_name: typing.Literal['id', b'id', 'path', b'path']) -> builtins.bool:
        ...

    def ClearField(self, field_name: typing.Literal['children', b'children', 'filename', b'filename', 'id', b'id', 'name', b'name', 'page_number', b'page_number', 'path', b'path']) -> None:
        ...
global___SheetHierarchyNode = SheetHierarchyNode

@typing.final
class GetSheetHierarchy(google.protobuf.message.Message):
    """/ Retrieves the full sheet hierarchy tree"""
    DESCRIPTOR: google.protobuf.descriptor.Descriptor
    DOCUMENT_FIELD_NUMBER: builtins.int

    @property
    def document(self) -> common.types.base_types_pb2.DocumentSpecifier:
        ...

    def __init__(self, *, document: common.types.base_types_pb2.DocumentSpecifier | None=...) -> None:
        ...

    def HasField(self, field_name: typing.Literal['document', b'document']) -> builtins.bool:
        ...

    def ClearField(self, field_name: typing.Literal['document', b'document']) -> None:
        ...
global___GetSheetHierarchy = GetSheetHierarchy

@typing.final
class GetSheetHierarchyResponse(google.protobuf.message.Message):
    DESCRIPTOR: google.protobuf.descriptor.Descriptor
    ROOT_FIELD_NUMBER: builtins.int

    @property
    def root(self) -> global___SheetHierarchyNode:
        ...

    def __init__(self, *, root: global___SheetHierarchyNode | None=...) -> None:
        ...

    def HasField(self, field_name: typing.Literal['root', b'root']) -> builtins.bool:
        ...

    def ClearField(self, field_name: typing.Literal['root', b'root']) -> None:
        ...
global___GetSheetHierarchyResponse = GetSheetHierarchyResponse

@typing.final
class GetCurrentSheet(google.protobuf.message.Message):
    """/ Gets the currently displayed sheet"""
    DESCRIPTOR: google.protobuf.descriptor.Descriptor
    DOCUMENT_FIELD_NUMBER: builtins.int

    @property
    def document(self) -> common.types.base_types_pb2.DocumentSpecifier:
        ...

    def __init__(self, *, document: common.types.base_types_pb2.DocumentSpecifier | None=...) -> None:
        ...

    def HasField(self, field_name: typing.Literal['document', b'document']) -> builtins.bool:
        ...

    def ClearField(self, field_name: typing.Literal['document', b'document']) -> None:
        ...
global___GetCurrentSheet = GetCurrentSheet

@typing.final
class GetCurrentSheetResponse(google.protobuf.message.Message):
    DESCRIPTOR: google.protobuf.descriptor.Descriptor
    CURRENT_SHEET_FIELD_NUMBER: builtins.int
    SHEET_INFO_FIELD_NUMBER: builtins.int

    @property
    def current_sheet(self) -> common.types.base_types_pb2.SheetPath:
        ...

    @property
    def sheet_info(self) -> schematic.schematic_types_pb2.Sheet:
        ...

    def __init__(self, *, current_sheet: common.types.base_types_pb2.SheetPath | None=..., sheet_info: schematic.schematic_types_pb2.Sheet | None=...) -> None:
        ...

    def HasField(self, field_name: typing.Literal['current_sheet', b'current_sheet', 'sheet_info', b'sheet_info']) -> builtins.bool:
        ...

    def ClearField(self, field_name: typing.Literal['current_sheet', b'current_sheet', 'sheet_info', b'sheet_info']) -> None:
        ...
global___GetCurrentSheetResponse = GetCurrentSheetResponse

@typing.final
class NavigateToSheet(google.protobuf.message.Message):
    """/ Navigates to a specific sheet in the hierarchy"""
    DESCRIPTOR: google.protobuf.descriptor.Descriptor
    DOCUMENT_FIELD_NUMBER: builtins.int
    TARGET_SHEET_FIELD_NUMBER: builtins.int

    @property
    def document(self) -> common.types.base_types_pb2.DocumentSpecifier:
        ...

    @property
    def target_sheet(self) -> common.types.base_types_pb2.SheetPath:
        ...

    def __init__(self, *, document: common.types.base_types_pb2.DocumentSpecifier | None=..., target_sheet: common.types.base_types_pb2.SheetPath | None=...) -> None:
        ...

    def HasField(self, field_name: typing.Literal['document', b'document', 'target_sheet', b'target_sheet']) -> builtins.bool:
        ...

    def ClearField(self, field_name: typing.Literal['document', b'document', 'target_sheet', b'target_sheet']) -> None:
        ...
global___NavigateToSheet = NavigateToSheet

@typing.final
class CreateSheet(google.protobuf.message.Message):
    """
    Sheet CRUD Commands

    / Creates a new hierarchical sheet in the schematic
    """
    DESCRIPTOR: google.protobuf.descriptor.Descriptor
    HEADER_FIELD_NUMBER: builtins.int
    NAME_FIELD_NUMBER: builtins.int
    FILENAME_FIELD_NUMBER: builtins.int
    POSITION_FIELD_NUMBER: builtins.int
    SIZE_FIELD_NUMBER: builtins.int
    CREATE_FILE_FIELD_NUMBER: builtins.int
    PARENT_SHEET_PATH_FIELD_NUMBER: builtins.int
    name: builtins.str
    'Sheet properties'
    filename: builtins.str
    create_file: builtins.bool
    'If true, create the .kicad_sch file on disk'
    parent_sheet_path: builtins.str
    'Human-readable path of the parent sheet (e.g., "/" for root, "/Power Supply/").\n    If empty, uses the current agent target sheet (existing behavior).\n    '

    @property
    def header(self) -> common.types.base_types_pb2.ItemHeader:
        """Specifies the parent document/sheet where the new sheet will be added"""

    @property
    def position(self) -> common.types.base_types_pb2.Vector2:
        ...

    @property
    def size(self) -> common.types.base_types_pb2.Vector2:
        ...

    def __init__(self, *, header: common.types.base_types_pb2.ItemHeader | None=..., name: builtins.str=..., filename: builtins.str=..., position: common.types.base_types_pb2.Vector2 | None=..., size: common.types.base_types_pb2.Vector2 | None=..., create_file: builtins.bool=..., parent_sheet_path: builtins.str | None=...) -> None:
        ...

    def HasField(self, field_name: typing.Literal['_parent_sheet_path', b'_parent_sheet_path', 'header', b'header', 'parent_sheet_path', b'parent_sheet_path', 'position', b'position', 'size', b'size']) -> builtins.bool:
        ...

    def ClearField(self, field_name: typing.Literal['_parent_sheet_path', b'_parent_sheet_path', 'create_file', b'create_file', 'filename', b'filename', 'header', b'header', 'name', b'name', 'parent_sheet_path', b'parent_sheet_path', 'position', b'position', 'size', b'size']) -> None:
        ...

    def WhichOneof(self, oneof_group: typing.Literal['_parent_sheet_path', b'_parent_sheet_path']) -> typing.Literal['parent_sheet_path'] | None:
        ...
global___CreateSheet = CreateSheet

@typing.final
class CreateSheetResponse(google.protobuf.message.Message):
    DESCRIPTOR: google.protobuf.descriptor.Descriptor
    SHEET_ID_FIELD_NUMBER: builtins.int
    NEW_SHEET_PATH_FIELD_NUMBER: builtins.int

    @property
    def sheet_id(self) -> common.types.base_types_pb2.KIID:
        ...

    @property
    def new_sheet_path(self) -> common.types.base_types_pb2.SheetPath:
        ...

    def __init__(self, *, sheet_id: common.types.base_types_pb2.KIID | None=..., new_sheet_path: common.types.base_types_pb2.SheetPath | None=...) -> None:
        ...

    def HasField(self, field_name: typing.Literal['new_sheet_path', b'new_sheet_path', 'sheet_id', b'sheet_id']) -> builtins.bool:
        ...

    def ClearField(self, field_name: typing.Literal['new_sheet_path', b'new_sheet_path', 'sheet_id', b'sheet_id']) -> None:
        ...
global___CreateSheetResponse = CreateSheetResponse

@typing.final
class DeleteSheet(google.protobuf.message.Message):
    """/ Deletes a sheet from the hierarchy"""
    DESCRIPTOR: google.protobuf.descriptor.Descriptor
    DOCUMENT_FIELD_NUMBER: builtins.int
    SHEET_ID_FIELD_NUMBER: builtins.int
    DELETE_FILE_FIELD_NUMBER: builtins.int
    delete_file: builtins.bool
    'If true, also delete the .kicad_sch file from disk'

    @property
    def document(self) -> common.types.base_types_pb2.DocumentSpecifier:
        ...

    @property
    def sheet_id(self) -> common.types.base_types_pb2.KIID:
        ...

    def __init__(self, *, document: common.types.base_types_pb2.DocumentSpecifier | None=..., sheet_id: common.types.base_types_pb2.KIID | None=..., delete_file: builtins.bool=...) -> None:
        ...

    def HasField(self, field_name: typing.Literal['document', b'document', 'sheet_id', b'sheet_id']) -> builtins.bool:
        ...

    def ClearField(self, field_name: typing.Literal['delete_file', b'delete_file', 'document', b'document', 'sheet_id', b'sheet_id']) -> None:
        ...
global___DeleteSheet = DeleteSheet

@typing.final
class GetSheetProperties(google.protobuf.message.Message):
    """/ Gets properties of a specific sheet"""
    DESCRIPTOR: google.protobuf.descriptor.Descriptor
    DOCUMENT_FIELD_NUMBER: builtins.int
    SHEET_ID_FIELD_NUMBER: builtins.int

    @property
    def document(self) -> common.types.base_types_pb2.DocumentSpecifier:
        ...

    @property
    def sheet_id(self) -> common.types.base_types_pb2.KIID:
        ...

    def __init__(self, *, document: common.types.base_types_pb2.DocumentSpecifier | None=..., sheet_id: common.types.base_types_pb2.KIID | None=...) -> None:
        ...

    def HasField(self, field_name: typing.Literal['document', b'document', 'sheet_id', b'sheet_id']) -> builtins.bool:
        ...

    def ClearField(self, field_name: typing.Literal['document', b'document', 'sheet_id', b'sheet_id']) -> None:
        ...
global___GetSheetProperties = GetSheetProperties

@typing.final
class GetSheetPropertiesResponse(google.protobuf.message.Message):
    DESCRIPTOR: google.protobuf.descriptor.Descriptor
    SHEET_FIELD_NUMBER: builtins.int

    @property
    def sheet(self) -> schematic.schematic_types_pb2.Sheet:
        ...

    def __init__(self, *, sheet: schematic.schematic_types_pb2.Sheet | None=...) -> None:
        ...

    def HasField(self, field_name: typing.Literal['sheet', b'sheet']) -> builtins.bool:
        ...

    def ClearField(self, field_name: typing.Literal['sheet', b'sheet']) -> None:
        ...
global___GetSheetPropertiesResponse = GetSheetPropertiesResponse

@typing.final
class SetSheetProperties(google.protobuf.message.Message):
    """/ Updates properties of a sheet"""
    DESCRIPTOR: google.protobuf.descriptor.Descriptor
    DOCUMENT_FIELD_NUMBER: builtins.int
    SHEET_ID_FIELD_NUMBER: builtins.int
    NAME_FIELD_NUMBER: builtins.int
    FILENAME_FIELD_NUMBER: builtins.int
    PAGE_NUMBER_FIELD_NUMBER: builtins.int
    name: builtins.str
    'Optional fields - only provided fields will be updated'
    filename: builtins.str
    page_number: builtins.str

    @property
    def document(self) -> common.types.base_types_pb2.DocumentSpecifier:
        ...

    @property
    def sheet_id(self) -> common.types.base_types_pb2.KIID:
        ...

    def __init__(self, *, document: common.types.base_types_pb2.DocumentSpecifier | None=..., sheet_id: common.types.base_types_pb2.KIID | None=..., name: builtins.str | None=..., filename: builtins.str | None=..., page_number: builtins.str | None=...) -> None:
        ...

    def HasField(self, field_name: typing.Literal['_filename', b'_filename', '_name', b'_name', '_page_number', b'_page_number', 'document', b'document', 'filename', b'filename', 'name', b'name', 'page_number', b'page_number', 'sheet_id', b'sheet_id']) -> builtins.bool:
        ...

    def ClearField(self, field_name: typing.Literal['_filename', b'_filename', '_name', b'_name', '_page_number', b'_page_number', 'document', b'document', 'filename', b'filename', 'name', b'name', 'page_number', b'page_number', 'sheet_id', b'sheet_id']) -> None:
        ...

    @typing.overload
    def WhichOneof(self, oneof_group: typing.Literal['_filename', b'_filename']) -> typing.Literal['filename'] | None:
        ...

    @typing.overload
    def WhichOneof(self, oneof_group: typing.Literal['_name', b'_name']) -> typing.Literal['name'] | None:
        ...

    @typing.overload
    def WhichOneof(self, oneof_group: typing.Literal['_page_number', b'_page_number']) -> typing.Literal['page_number'] | None:
        ...
global___SetSheetProperties = SetSheetProperties

@typing.final
class CreateSheetPin(google.protobuf.message.Message):
    """
    Sheet Pin Commands

    / Creates a new sheet pin on a sheet
    """
    DESCRIPTOR: google.protobuf.descriptor.Descriptor
    DOCUMENT_FIELD_NUMBER: builtins.int
    SHEET_ID_FIELD_NUMBER: builtins.int
    NAME_FIELD_NUMBER: builtins.int
    SHAPE_FIELD_NUMBER: builtins.int
    SIDE_FIELD_NUMBER: builtins.int
    POSITION_FIELD_NUMBER: builtins.int
    name: builtins.str
    shape: schematic.schematic_types_pb2.LabelShape.ValueType
    side: schematic.schematic_types_pb2.SheetPinSide.ValueType

    @property
    def document(self) -> common.types.base_types_pb2.DocumentSpecifier:
        ...

    @property
    def sheet_id(self) -> common.types.base_types_pb2.KIID:
        ...

    @property
    def position(self) -> common.types.base_types_pb2.Vector2:
        ...

    def __init__(self, *, document: common.types.base_types_pb2.DocumentSpecifier | None=..., sheet_id: common.types.base_types_pb2.KIID | None=..., name: builtins.str=..., shape: schematic.schematic_types_pb2.LabelShape.ValueType=..., side: schematic.schematic_types_pb2.SheetPinSide.ValueType=..., position: common.types.base_types_pb2.Vector2 | None=...) -> None:
        ...

    def HasField(self, field_name: typing.Literal['document', b'document', 'position', b'position', 'sheet_id', b'sheet_id']) -> builtins.bool:
        ...

    def ClearField(self, field_name: typing.Literal['document', b'document', 'name', b'name', 'position', b'position', 'shape', b'shape', 'sheet_id', b'sheet_id', 'side', b'side']) -> None:
        ...
global___CreateSheetPin = CreateSheetPin

@typing.final
class CreateSheetPinResponse(google.protobuf.message.Message):
    DESCRIPTOR: google.protobuf.descriptor.Descriptor
    PIN_ID_FIELD_NUMBER: builtins.int

    @property
    def pin_id(self) -> common.types.base_types_pb2.KIID:
        ...

    def __init__(self, *, pin_id: common.types.base_types_pb2.KIID | None=...) -> None:
        ...

    def HasField(self, field_name: typing.Literal['pin_id', b'pin_id']) -> builtins.bool:
        ...

    def ClearField(self, field_name: typing.Literal['pin_id', b'pin_id']) -> None:
        ...
global___CreateSheetPinResponse = CreateSheetPinResponse

@typing.final
class DeleteSheetPin(google.protobuf.message.Message):
    """/ Deletes a sheet pin"""
    DESCRIPTOR: google.protobuf.descriptor.Descriptor
    DOCUMENT_FIELD_NUMBER: builtins.int
    PIN_ID_FIELD_NUMBER: builtins.int

    @property
    def document(self) -> common.types.base_types_pb2.DocumentSpecifier:
        ...

    @property
    def pin_id(self) -> common.types.base_types_pb2.KIID:
        ...

    def __init__(self, *, document: common.types.base_types_pb2.DocumentSpecifier | None=..., pin_id: common.types.base_types_pb2.KIID | None=...) -> None:
        ...

    def HasField(self, field_name: typing.Literal['document', b'document', 'pin_id', b'pin_id']) -> builtins.bool:
        ...

    def ClearField(self, field_name: typing.Literal['document', b'document', 'pin_id', b'pin_id']) -> None:
        ...
global___DeleteSheetPin = DeleteSheetPin

@typing.final
class GetSheetPins(google.protobuf.message.Message):
    """/ Gets all pins on a specific sheet"""
    DESCRIPTOR: google.protobuf.descriptor.Descriptor
    DOCUMENT_FIELD_NUMBER: builtins.int
    SHEET_ID_FIELD_NUMBER: builtins.int

    @property
    def document(self) -> common.types.base_types_pb2.DocumentSpecifier:
        ...

    @property
    def sheet_id(self) -> common.types.base_types_pb2.KIID:
        ...

    def __init__(self, *, document: common.types.base_types_pb2.DocumentSpecifier | None=..., sheet_id: common.types.base_types_pb2.KIID | None=...) -> None:
        ...

    def HasField(self, field_name: typing.Literal['document', b'document', 'sheet_id', b'sheet_id']) -> builtins.bool:
        ...

    def ClearField(self, field_name: typing.Literal['document', b'document', 'sheet_id', b'sheet_id']) -> None:
        ...
global___GetSheetPins = GetSheetPins

@typing.final
class GetSheetPinsResponse(google.protobuf.message.Message):
    DESCRIPTOR: google.protobuf.descriptor.Descriptor
    PINS_FIELD_NUMBER: builtins.int

    @property
    def pins(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[schematic.schematic_types_pb2.SheetPin]:
        ...

    def __init__(self, *, pins: collections.abc.Iterable[schematic.schematic_types_pb2.SheetPin] | None=...) -> None:
        ...

    def ClearField(self, field_name: typing.Literal['pins', b'pins']) -> None:
        ...
global___GetSheetPinsResponse = GetSheetPinsResponse

@typing.final
class SyncSheetPins(google.protobuf.message.Message):
    """/ Synchronizes sheet pins with hierarchical labels in the child sheet"""
    DESCRIPTOR: google.protobuf.descriptor.Descriptor
    DOCUMENT_FIELD_NUMBER: builtins.int
    SHEET_ID_FIELD_NUMBER: builtins.int

    @property
    def document(self) -> common.types.base_types_pb2.DocumentSpecifier:
        ...

    @property
    def sheet_id(self) -> common.types.base_types_pb2.KIID:
        """If empty, sync all sheets in the hierarchy"""

    def __init__(self, *, document: common.types.base_types_pb2.DocumentSpecifier | None=..., sheet_id: common.types.base_types_pb2.KIID | None=...) -> None:
        ...

    def HasField(self, field_name: typing.Literal['document', b'document', 'sheet_id', b'sheet_id']) -> builtins.bool:
        ...

    def ClearField(self, field_name: typing.Literal['document', b'document', 'sheet_id', b'sheet_id']) -> None:
        ...
global___SyncSheetPins = SyncSheetPins

@typing.final
class SyncSheetPinsResponse(google.protobuf.message.Message):
    DESCRIPTOR: google.protobuf.descriptor.Descriptor
    PINS_ADDED_FIELD_NUMBER: builtins.int
    PINS_REMOVED_FIELD_NUMBER: builtins.int
    pins_added: builtins.int
    pins_removed: builtins.int

    def __init__(self, *, pins_added: builtins.int=..., pins_removed: builtins.int=...) -> None:
        ...

    def ClearField(self, field_name: typing.Literal['pins_added', b'pins_added', 'pins_removed', b'pins_removed']) -> None:
        ...
global___SyncSheetPinsResponse = SyncSheetPinsResponse

@typing.final
class AnnotateSymbols(google.protobuf.message.Message):
    """/ Annotates symbols with reference designators"""
    DESCRIPTOR: google.protobuf.descriptor.Descriptor
    DOCUMENT_FIELD_NUMBER: builtins.int
    SCOPE_FIELD_NUMBER: builtins.int
    ORDER_FIELD_NUMBER: builtins.int
    ALGORITHM_FIELD_NUMBER: builtins.int
    START_NUMBER_FIELD_NUMBER: builtins.int
    RESET_EXISTING_FIELD_NUMBER: builtins.int
    RECURSIVE_FIELD_NUMBER: builtins.int
    REPAIR_TIMESTAMPS_FIELD_NUMBER: builtins.int
    scope: global___AnnotateScope.ValueType
    'Scope of annotation'
    order: global___AnnotateOrder.ValueType
    'Sort order for assigning numbers'
    algorithm: global___AnnotateAlgorithm.ValueType
    'Numbering algorithm'
    start_number: builtins.int
    'Starting number for annotation'
    reset_existing: builtins.bool
    'If true, clear existing annotation first'
    recursive: builtins.bool
    'If true, include subsheets when scope is CURRENT_SHEET or SELECTION'
    repair_timestamps: builtins.bool
    'If true, repair duplicate timestamps'

    @property
    def document(self) -> common.types.base_types_pb2.DocumentSpecifier:
        ...

    def __init__(self, *, document: common.types.base_types_pb2.DocumentSpecifier | None=..., scope: global___AnnotateScope.ValueType=..., order: global___AnnotateOrder.ValueType=..., algorithm: global___AnnotateAlgorithm.ValueType=..., start_number: builtins.int=..., reset_existing: builtins.bool=..., recursive: builtins.bool=..., repair_timestamps: builtins.bool=...) -> None:
        ...

    def HasField(self, field_name: typing.Literal['document', b'document']) -> builtins.bool:
        ...

    def ClearField(self, field_name: typing.Literal['algorithm', b'algorithm', 'document', b'document', 'order', b'order', 'recursive', b'recursive', 'repair_timestamps', b'repair_timestamps', 'reset_existing', b'reset_existing', 'scope', b'scope', 'start_number', b'start_number']) -> None:
        ...
global___AnnotateSymbols = AnnotateSymbols

@typing.final
class AnnotateSymbolsResponse(google.protobuf.message.Message):
    DESCRIPTOR: google.protobuf.descriptor.Descriptor
    SYMBOLS_ANNOTATED_FIELD_NUMBER: builtins.int
    RESULTS_FIELD_NUMBER: builtins.int
    symbols_annotated: builtins.int
    'Number of symbols annotated'

    @property
    def results(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[global___AnnotationResult]:
        """Detailed annotation results"""

    def __init__(self, *, symbols_annotated: builtins.int=..., results: collections.abc.Iterable[global___AnnotationResult] | None=...) -> None:
        ...

    def ClearField(self, field_name: typing.Literal['results', b'results', 'symbols_annotated', b'symbols_annotated']) -> None:
        ...
global___AnnotateSymbolsResponse = AnnotateSymbolsResponse

@typing.final
class AnnotationResult(google.protobuf.message.Message):
    DESCRIPTOR: google.protobuf.descriptor.Descriptor
    SYMBOL_ID_FIELD_NUMBER: builtins.int
    PREVIOUS_REF_FIELD_NUMBER: builtins.int
    NEW_REF_FIELD_NUMBER: builtins.int
    previous_ref: builtins.str
    new_ref: builtins.str

    @property
    def symbol_id(self) -> common.types.base_types_pb2.KIID:
        ...

    def __init__(self, *, symbol_id: common.types.base_types_pb2.KIID | None=..., previous_ref: builtins.str=..., new_ref: builtins.str=...) -> None:
        ...

    def HasField(self, field_name: typing.Literal['symbol_id', b'symbol_id']) -> builtins.bool:
        ...

    def ClearField(self, field_name: typing.Literal['new_ref', b'new_ref', 'previous_ref', b'previous_ref', 'symbol_id', b'symbol_id']) -> None:
        ...
global___AnnotationResult = AnnotationResult

@typing.final
class ClearAnnotation(google.protobuf.message.Message):
    """/ Clears annotation from symbols"""
    DESCRIPTOR: google.protobuf.descriptor.Descriptor
    DOCUMENT_FIELD_NUMBER: builtins.int
    SCOPE_FIELD_NUMBER: builtins.int
    RECURSIVE_FIELD_NUMBER: builtins.int
    scope: global___AnnotateScope.ValueType
    'Scope of annotation clearing'
    recursive: builtins.bool
    'If true, include subsheets when scope is CURRENT_SHEET or SELECTION'

    @property
    def document(self) -> common.types.base_types_pb2.DocumentSpecifier:
        ...

    def __init__(self, *, document: common.types.base_types_pb2.DocumentSpecifier | None=..., scope: global___AnnotateScope.ValueType=..., recursive: builtins.bool=...) -> None:
        ...

    def HasField(self, field_name: typing.Literal['document', b'document']) -> builtins.bool:
        ...

    def ClearField(self, field_name: typing.Literal['document', b'document', 'recursive', b'recursive', 'scope', b'scope']) -> None:
        ...
global___ClearAnnotation = ClearAnnotation

@typing.final
class ClearAnnotationResponse(google.protobuf.message.Message):
    DESCRIPTOR: google.protobuf.descriptor.Descriptor
    SYMBOLS_CLEARED_FIELD_NUMBER: builtins.int
    symbols_cleared: builtins.int
    'Number of symbols cleared'

    def __init__(self, *, symbols_cleared: builtins.int=...) -> None:
        ...

    def ClearField(self, field_name: typing.Literal['symbols_cleared', b'symbols_cleared']) -> None:
        ...
global___ClearAnnotationResponse = ClearAnnotationResponse

@typing.final
class CheckAnnotation(google.protobuf.message.Message):
    """/ Checks for annotation errors (duplicates, missing, etc.)"""
    DESCRIPTOR: google.protobuf.descriptor.Descriptor
    DOCUMENT_FIELD_NUMBER: builtins.int
    SCOPE_FIELD_NUMBER: builtins.int
    RECURSIVE_FIELD_NUMBER: builtins.int
    scope: global___AnnotateScope.ValueType
    'Scope of check'
    recursive: builtins.bool
    'If true, include subsheets when scope is CURRENT_SHEET or SELECTION'

    @property
    def document(self) -> common.types.base_types_pb2.DocumentSpecifier:
        ...

    def __init__(self, *, document: common.types.base_types_pb2.DocumentSpecifier | None=..., scope: global___AnnotateScope.ValueType=..., recursive: builtins.bool=...) -> None:
        ...

    def HasField(self, field_name: typing.Literal['document', b'document']) -> builtins.bool:
        ...

    def ClearField(self, field_name: typing.Literal['document', b'document', 'recursive', b'recursive', 'scope', b'scope']) -> None:
        ...
global___CheckAnnotation = CheckAnnotation

@typing.final
class AnnotationError(google.protobuf.message.Message):
    DESCRIPTOR: google.protobuf.descriptor.Descriptor
    ERROR_TYPE_FIELD_NUMBER: builtins.int
    MESSAGE_FIELD_NUMBER: builtins.int
    SYMBOL_IDS_FIELD_NUMBER: builtins.int
    error_type: builtins.str
    'Type of error (ERCE_DUPLICATE_REFERENCE, ERCE_UNANNOTATED, etc.)'
    message: builtins.str
    'Human-readable error message'

    @property
    def symbol_ids(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[common.types.base_types_pb2.KIID]:
        """Affected symbols"""

    def __init__(self, *, error_type: builtins.str=..., message: builtins.str=..., symbol_ids: collections.abc.Iterable[common.types.base_types_pb2.KIID] | None=...) -> None:
        ...

    def ClearField(self, field_name: typing.Literal['error_type', b'error_type', 'message', b'message', 'symbol_ids', b'symbol_ids']) -> None:
        ...
global___AnnotationError = AnnotationError

@typing.final
class CheckAnnotationResponse(google.protobuf.message.Message):
    DESCRIPTOR: google.protobuf.descriptor.Descriptor
    ERROR_COUNT_FIELD_NUMBER: builtins.int
    ERRORS_FIELD_NUMBER: builtins.int
    error_count: builtins.int
    'Number of errors found'

    @property
    def errors(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[global___AnnotationError]:
        """Detailed error list"""

    def __init__(self, *, error_count: builtins.int=..., errors: collections.abc.Iterable[global___AnnotationError] | None=...) -> None:
        ...

    def ClearField(self, field_name: typing.Literal['error_count', b'error_count', 'errors', b'errors']) -> None:
        ...
global___CheckAnnotationResponse = CheckAnnotationResponse

@typing.final
class RunERC(google.protobuf.message.Message):
    """
    ERC (Electrical Rules Check) Commands

    / Runs ERC tests on the schematic
    """
    DESCRIPTOR: google.protobuf.descriptor.Descriptor
    DOCUMENT_FIELD_NUMBER: builtins.int
    RUN_ALL_TESTS_FIELD_NUMBER: builtins.int
    run_all_tests: builtins.bool
    'If true, run all tests. If false, only run enabled tests from settings.'

    @property
    def document(self) -> common.types.base_types_pb2.DocumentSpecifier:
        ...

    def __init__(self, *, document: common.types.base_types_pb2.DocumentSpecifier | None=..., run_all_tests: builtins.bool=...) -> None:
        ...

    def HasField(self, field_name: typing.Literal['document', b'document']) -> builtins.bool:
        ...

    def ClearField(self, field_name: typing.Literal['document', b'document', 'run_all_tests', b'run_all_tests']) -> None:
        ...
global___RunERC = RunERC

@typing.final
class ERCViolation(google.protobuf.message.Message):
    """/ An ERC violation"""
    DESCRIPTOR: google.protobuf.descriptor.Descriptor
    ID_FIELD_NUMBER: builtins.int
    ERROR_CODE_FIELD_NUMBER: builtins.int
    DESCRIPTION_FIELD_NUMBER: builtins.int
    SEVERITY_FIELD_NUMBER: builtins.int
    SHEET_PATH_FIELD_NUMBER: builtins.int
    POSITION_FIELD_NUMBER: builtins.int
    ITEM_IDS_FIELD_NUMBER: builtins.int
    error_code: builtins.str
    'Error code string (e.g., "ERCE_PIN_TO_PIN_ERROR")'
    description: builtins.str
    'Human-readable description'
    severity: global___ERCSeverity.ValueType
    'Severity of the violation'

    @property
    def id(self) -> common.types.base_types_pb2.KIID:
        """Unique marker ID"""

    @property
    def sheet_path(self) -> common.types.base_types_pb2.SheetPath:
        """Sheet where the violation occurs"""

    @property
    def position(self) -> common.types.base_types_pb2.Vector2:
        """Position of the marker"""

    @property
    def item_ids(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[common.types.base_types_pb2.KIID]:
        """IDs of items involved in the violation"""

    def __init__(self, *, id: common.types.base_types_pb2.KIID | None=..., error_code: builtins.str=..., description: builtins.str=..., severity: global___ERCSeverity.ValueType=..., sheet_path: common.types.base_types_pb2.SheetPath | None=..., position: common.types.base_types_pb2.Vector2 | None=..., item_ids: collections.abc.Iterable[common.types.base_types_pb2.KIID] | None=...) -> None:
        ...

    def HasField(self, field_name: typing.Literal['id', b'id', 'position', b'position', 'sheet_path', b'sheet_path']) -> builtins.bool:
        ...

    def ClearField(self, field_name: typing.Literal['description', b'description', 'error_code', b'error_code', 'id', b'id', 'item_ids', b'item_ids', 'position', b'position', 'severity', b'severity', 'sheet_path', b'sheet_path']) -> None:
        ...
global___ERCViolation = ERCViolation

@typing.final
class RunERCResponse(google.protobuf.message.Message):
    DESCRIPTOR: google.protobuf.descriptor.Descriptor
    ERROR_COUNT_FIELD_NUMBER: builtins.int
    WARNING_COUNT_FIELD_NUMBER: builtins.int
    VIOLATIONS_FIELD_NUMBER: builtins.int
    error_count: builtins.int
    'Total number of errors'
    warning_count: builtins.int
    'Total number of warnings'

    @property
    def violations(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[global___ERCViolation]:
        """List of violations"""

    def __init__(self, *, error_count: builtins.int=..., warning_count: builtins.int=..., violations: collections.abc.Iterable[global___ERCViolation] | None=...) -> None:
        ...

    def ClearField(self, field_name: typing.Literal['error_count', b'error_count', 'violations', b'violations', 'warning_count', b'warning_count']) -> None:
        ...
global___RunERCResponse = RunERCResponse

@typing.final
class GetERCViolations(google.protobuf.message.Message):
    """/ Gets current ERC violations without re-running checks"""
    DESCRIPTOR: google.protobuf.descriptor.Descriptor
    DOCUMENT_FIELD_NUMBER: builtins.int
    FILTER_SEVERITY_FIELD_NUMBER: builtins.int
    FILTER_SHEET_FIELD_NUMBER: builtins.int
    filter_severity: global___ERCSeverity.ValueType
    'Optional: filter by severity'

    @property
    def document(self) -> common.types.base_types_pb2.DocumentSpecifier:
        ...

    @property
    def filter_sheet(self) -> common.types.base_types_pb2.SheetPath:
        """Optional: filter by sheet path"""

    def __init__(self, *, document: common.types.base_types_pb2.DocumentSpecifier | None=..., filter_severity: global___ERCSeverity.ValueType=..., filter_sheet: common.types.base_types_pb2.SheetPath | None=...) -> None:
        ...

    def HasField(self, field_name: typing.Literal['document', b'document', 'filter_sheet', b'filter_sheet']) -> builtins.bool:
        ...

    def ClearField(self, field_name: typing.Literal['document', b'document', 'filter_severity', b'filter_severity', 'filter_sheet', b'filter_sheet']) -> None:
        ...
global___GetERCViolations = GetERCViolations

@typing.final
class GetERCViolationsResponse(google.protobuf.message.Message):
    DESCRIPTOR: google.protobuf.descriptor.Descriptor
    VIOLATIONS_FIELD_NUMBER: builtins.int

    @property
    def violations(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[global___ERCViolation]:
        ...

    def __init__(self, *, violations: collections.abc.Iterable[global___ERCViolation] | None=...) -> None:
        ...

    def ClearField(self, field_name: typing.Literal['violations', b'violations']) -> None:
        ...
global___GetERCViolationsResponse = GetERCViolationsResponse

@typing.final
class ClearERCMarkers(google.protobuf.message.Message):
    """/ Clears/excludes specific ERC markers"""
    DESCRIPTOR: google.protobuf.descriptor.Descriptor
    DOCUMENT_FIELD_NUMBER: builtins.int
    MARKER_IDS_FIELD_NUMBER: builtins.int

    @property
    def document(self) -> common.types.base_types_pb2.DocumentSpecifier:
        ...

    @property
    def marker_ids(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[common.types.base_types_pb2.KIID]:
        """If empty, clear all markers. Otherwise, clear only specified markers."""

    def __init__(self, *, document: common.types.base_types_pb2.DocumentSpecifier | None=..., marker_ids: collections.abc.Iterable[common.types.base_types_pb2.KIID] | None=...) -> None:
        ...

    def HasField(self, field_name: typing.Literal['document', b'document']) -> builtins.bool:
        ...

    def ClearField(self, field_name: typing.Literal['document', b'document', 'marker_ids', b'marker_ids']) -> None:
        ...
global___ClearERCMarkers = ClearERCMarkers

@typing.final
class ClearERCMarkersResponse(google.protobuf.message.Message):
    DESCRIPTOR: google.protobuf.descriptor.Descriptor
    MARKERS_CLEARED_FIELD_NUMBER: builtins.int
    markers_cleared: builtins.int

    def __init__(self, *, markers_cleared: builtins.int=...) -> None:
        ...

    def ClearField(self, field_name: typing.Literal['markers_cleared', b'markers_cleared']) -> None:
        ...
global___ClearERCMarkersResponse = ClearERCMarkersResponse

@typing.final
class ExcludeERCViolation(google.protobuf.message.Message):
    """/ Excludes a specific ERC violation (marks it as ignored)"""
    DESCRIPTOR: google.protobuf.descriptor.Descriptor
    DOCUMENT_FIELD_NUMBER: builtins.int
    MARKER_ID_FIELD_NUMBER: builtins.int

    @property
    def document(self) -> common.types.base_types_pb2.DocumentSpecifier:
        ...

    @property
    def marker_id(self) -> common.types.base_types_pb2.KIID:
        """The marker to exclude"""

    def __init__(self, *, document: common.types.base_types_pb2.DocumentSpecifier | None=..., marker_id: common.types.base_types_pb2.KIID | None=...) -> None:
        ...

    def HasField(self, field_name: typing.Literal['document', b'document', 'marker_id', b'marker_id']) -> builtins.bool:
        ...

    def ClearField(self, field_name: typing.Literal['document', b'document', 'marker_id', b'marker_id']) -> None:
        ...
global___ExcludeERCViolation = ExcludeERCViolation

@typing.final
class ConnectionInfo(google.protobuf.message.Message):
    """/ Information about a net or bus connection"""
    DESCRIPTOR: google.protobuf.descriptor.Descriptor
    TYPE_FIELD_NUMBER: builtins.int
    NAME_FIELD_NUMBER: builtins.int
    SHEET_PATH_FIELD_NUMBER: builtins.int
    DRIVER_ID_FIELD_NUMBER: builtins.int
    BUS_MEMBERS_FIELD_NUMBER: builtins.int
    VECTOR_PREFIX_FIELD_NUMBER: builtins.int
    VECTOR_START_FIELD_NUMBER: builtins.int
    VECTOR_END_FIELD_NUMBER: builtins.int
    type: global___ConnectionType.ValueType
    'Type of connection'
    name: builtins.str
    'Net or bus name (fully qualified)'
    vector_prefix: builtins.str
    'For bus vectors: prefix and range'
    vector_start: builtins.int
    vector_end: builtins.int

    @property
    def sheet_path(self) -> common.types.base_types_pb2.SheetPath:
        """Sheet path where this connection is defined"""

    @property
    def driver_id(self) -> common.types.base_types_pb2.KIID:
        """ID of the item that drives this connection (label, pin, etc.)"""

    @property
    def bus_members(self) -> google.protobuf.internal.containers.RepeatedScalarFieldContainer[builtins.str]:
        """For buses: the member net names"""

    def __init__(self, *, type: global___ConnectionType.ValueType=..., name: builtins.str=..., sheet_path: common.types.base_types_pb2.SheetPath | None=..., driver_id: common.types.base_types_pb2.KIID | None=..., bus_members: collections.abc.Iterable[builtins.str] | None=..., vector_prefix: builtins.str=..., vector_start: builtins.int=..., vector_end: builtins.int=...) -> None:
        ...

    def HasField(self, field_name: typing.Literal['driver_id', b'driver_id', 'sheet_path', b'sheet_path']) -> builtins.bool:
        ...

    def ClearField(self, field_name: typing.Literal['bus_members', b'bus_members', 'driver_id', b'driver_id', 'name', b'name', 'sheet_path', b'sheet_path', 'type', b'type', 'vector_end', b'vector_end', 'vector_prefix', b'vector_prefix', 'vector_start', b'vector_start']) -> None:
        ...
global___ConnectionInfo = ConnectionInfo

@typing.final
class NetInfo(google.protobuf.message.Message):
    """/ Information about a net in the schematic"""
    DESCRIPTOR: google.protobuf.descriptor.Descriptor
    NAME_FIELD_NUMBER: builtins.int
    NET_CODE_FIELD_NUMBER: builtins.int
    CONNECTION_COUNT_FIELD_NUMBER: builtins.int
    ITEM_IDS_FIELD_NUMBER: builtins.int
    name: builtins.str
    'Net name (fully qualified)'
    net_code: builtins.int
    'Net code (unique identifier within the schematic)'
    connection_count: builtins.int
    'Number of connection points'

    @property
    def item_ids(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[common.types.base_types_pb2.KIID]:
        """IDs of items connected to this net"""

    def __init__(self, *, name: builtins.str=..., net_code: builtins.int=..., connection_count: builtins.int=..., item_ids: collections.abc.Iterable[common.types.base_types_pb2.KIID] | None=...) -> None:
        ...

    def ClearField(self, field_name: typing.Literal['connection_count', b'connection_count', 'item_ids', b'item_ids', 'name', b'name', 'net_code', b'net_code']) -> None:
        ...
global___NetInfo = NetInfo

@typing.final
class BusInfo(google.protobuf.message.Message):
    """/ Information about a bus in the schematic"""
    DESCRIPTOR: google.protobuf.descriptor.Descriptor
    NAME_FIELD_NUMBER: builtins.int
    IS_VECTOR_FIELD_NUMBER: builtins.int
    VECTOR_PREFIX_FIELD_NUMBER: builtins.int
    VECTOR_START_FIELD_NUMBER: builtins.int
    VECTOR_END_FIELD_NUMBER: builtins.int
    MEMBERS_FIELD_NUMBER: builtins.int
    BUS_LINE_IDS_FIELD_NUMBER: builtins.int
    name: builtins.str
    'Bus name'
    is_vector: builtins.bool
    'Type: true for bus vector (D[0..7]), false for bus group ({A, B, C})'
    vector_prefix: builtins.str
    'For vectors: prefix and range'
    vector_start: builtins.int
    vector_end: builtins.int

    @property
    def members(self) -> google.protobuf.internal.containers.RepeatedScalarFieldContainer[builtins.str]:
        """Member names (either generated from vector or explicit group members)"""

    @property
    def bus_line_ids(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[common.types.base_types_pb2.KIID]:
        """IDs of bus line segments"""

    def __init__(self, *, name: builtins.str=..., is_vector: builtins.bool=..., vector_prefix: builtins.str=..., vector_start: builtins.int=..., vector_end: builtins.int=..., members: collections.abc.Iterable[builtins.str] | None=..., bus_line_ids: collections.abc.Iterable[common.types.base_types_pb2.KIID] | None=...) -> None:
        ...

    def ClearField(self, field_name: typing.Literal['bus_line_ids', b'bus_line_ids', 'is_vector', b'is_vector', 'members', b'members', 'name', b'name', 'vector_end', b'vector_end', 'vector_prefix', b'vector_prefix', 'vector_start', b'vector_start']) -> None:
        ...
global___BusInfo = BusInfo

@typing.final
class GetNets(google.protobuf.message.Message):
    """/ Gets all nets in the schematic"""
    DESCRIPTOR: google.protobuf.descriptor.Descriptor
    DOCUMENT_FIELD_NUMBER: builtins.int
    FILTER_SHEET_FIELD_NUMBER: builtins.int

    @property
    def document(self) -> common.types.base_types_pb2.DocumentSpecifier:
        ...

    @property
    def filter_sheet(self) -> common.types.base_types_pb2.SheetPath:
        """Optional: filter by sheet path (empty for all sheets)"""

    def __init__(self, *, document: common.types.base_types_pb2.DocumentSpecifier | None=..., filter_sheet: common.types.base_types_pb2.SheetPath | None=...) -> None:
        ...

    def HasField(self, field_name: typing.Literal['document', b'document', 'filter_sheet', b'filter_sheet']) -> builtins.bool:
        ...

    def ClearField(self, field_name: typing.Literal['document', b'document', 'filter_sheet', b'filter_sheet']) -> None:
        ...
global___GetNets = GetNets

@typing.final
class GetNetsResponse(google.protobuf.message.Message):
    DESCRIPTOR: google.protobuf.descriptor.Descriptor
    NETS_FIELD_NUMBER: builtins.int

    @property
    def nets(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[global___NetInfo]:
        ...

    def __init__(self, *, nets: collections.abc.Iterable[global___NetInfo] | None=...) -> None:
        ...

    def ClearField(self, field_name: typing.Literal['nets', b'nets']) -> None:
        ...
global___GetNetsResponse = GetNetsResponse

@typing.final
class GetBuses(google.protobuf.message.Message):
    """/ Gets all buses in the schematic"""
    DESCRIPTOR: google.protobuf.descriptor.Descriptor
    DOCUMENT_FIELD_NUMBER: builtins.int
    FILTER_SHEET_FIELD_NUMBER: builtins.int

    @property
    def document(self) -> common.types.base_types_pb2.DocumentSpecifier:
        ...

    @property
    def filter_sheet(self) -> common.types.base_types_pb2.SheetPath:
        """Optional: filter by sheet path (empty for all sheets)"""

    def __init__(self, *, document: common.types.base_types_pb2.DocumentSpecifier | None=..., filter_sheet: common.types.base_types_pb2.SheetPath | None=...) -> None:
        ...

    def HasField(self, field_name: typing.Literal['document', b'document', 'filter_sheet', b'filter_sheet']) -> builtins.bool:
        ...

    def ClearField(self, field_name: typing.Literal['document', b'document', 'filter_sheet', b'filter_sheet']) -> None:
        ...
global___GetBuses = GetBuses

@typing.final
class GetBusesResponse(google.protobuf.message.Message):
    DESCRIPTOR: google.protobuf.descriptor.Descriptor
    BUSES_FIELD_NUMBER: builtins.int

    @property
    def buses(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[global___BusInfo]:
        ...

    def __init__(self, *, buses: collections.abc.Iterable[global___BusInfo] | None=...) -> None:
        ...

    def ClearField(self, field_name: typing.Literal['buses', b'buses']) -> None:
        ...
global___GetBusesResponse = GetBusesResponse

@typing.final
class GetNetForItem(google.protobuf.message.Message):
    """/ Gets connectivity information for a specific item"""
    DESCRIPTOR: google.protobuf.descriptor.Descriptor
    DOCUMENT_FIELD_NUMBER: builtins.int
    ITEM_ID_FIELD_NUMBER: builtins.int
    SHEET_PATH_FIELD_NUMBER: builtins.int

    @property
    def document(self) -> common.types.base_types_pb2.DocumentSpecifier:
        ...

    @property
    def item_id(self) -> common.types.base_types_pb2.KIID:
        """ID of the item to query"""

    @property
    def sheet_path(self) -> common.types.base_types_pb2.SheetPath:
        """Sheet path context (for items that may have different connections on different sheets)"""

    def __init__(self, *, document: common.types.base_types_pb2.DocumentSpecifier | None=..., item_id: common.types.base_types_pb2.KIID | None=..., sheet_path: common.types.base_types_pb2.SheetPath | None=...) -> None:
        ...

    def HasField(self, field_name: typing.Literal['document', b'document', 'item_id', b'item_id', 'sheet_path', b'sheet_path']) -> builtins.bool:
        ...

    def ClearField(self, field_name: typing.Literal['document', b'document', 'item_id', b'item_id', 'sheet_path', b'sheet_path']) -> None:
        ...
global___GetNetForItem = GetNetForItem

@typing.final
class GetNetForItemResponse(google.protobuf.message.Message):
    DESCRIPTOR: google.protobuf.descriptor.Descriptor
    CONNECTION_FIELD_NUMBER: builtins.int
    IS_CONNECTED_FIELD_NUMBER: builtins.int
    is_connected: builtins.bool
    'True if the item is connected, false if dangling'

    @property
    def connection(self) -> global___ConnectionInfo:
        """Connection info for the item"""

    def __init__(self, *, connection: global___ConnectionInfo | None=..., is_connected: builtins.bool=...) -> None:
        ...

    def HasField(self, field_name: typing.Literal['connection', b'connection']) -> builtins.bool:
        ...

    def ClearField(self, field_name: typing.Literal['connection', b'connection', 'is_connected', b'is_connected']) -> None:
        ...
global___GetNetForItemResponse = GetNetForItemResponse

@typing.final
class GetBusMembers(google.protobuf.message.Message):
    """/ Gets members of a specific bus"""
    DESCRIPTOR: google.protobuf.descriptor.Descriptor
    DOCUMENT_FIELD_NUMBER: builtins.int
    BUS_NAME_FIELD_NUMBER: builtins.int
    bus_name: builtins.str
    'Bus name to query'

    @property
    def document(self) -> common.types.base_types_pb2.DocumentSpecifier:
        ...

    def __init__(self, *, document: common.types.base_types_pb2.DocumentSpecifier | None=..., bus_name: builtins.str=...) -> None:
        ...

    def HasField(self, field_name: typing.Literal['document', b'document']) -> builtins.bool:
        ...

    def ClearField(self, field_name: typing.Literal['bus_name', b'bus_name', 'document', b'document']) -> None:
        ...
global___GetBusMembers = GetBusMembers

@typing.final
class GetBusMembersResponse(google.protobuf.message.Message):
    DESCRIPTOR: google.protobuf.descriptor.Descriptor
    MEMBERS_FIELD_NUMBER: builtins.int
    IS_VECTOR_FIELD_NUMBER: builtins.int
    VECTOR_PREFIX_FIELD_NUMBER: builtins.int
    VECTOR_START_FIELD_NUMBER: builtins.int
    VECTOR_END_FIELD_NUMBER: builtins.int
    is_vector: builtins.bool
    "Whether it's a vector bus"
    vector_prefix: builtins.str
    'Vector info (if applicable)'
    vector_start: builtins.int
    vector_end: builtins.int

    @property
    def members(self) -> google.protobuf.internal.containers.RepeatedScalarFieldContainer[builtins.str]:
        """Member net names"""

    def __init__(self, *, members: collections.abc.Iterable[builtins.str] | None=..., is_vector: builtins.bool=..., vector_prefix: builtins.str=..., vector_start: builtins.int=..., vector_end: builtins.int=...) -> None:
        ...

    def ClearField(self, field_name: typing.Literal['is_vector', b'is_vector', 'members', b'members', 'vector_end', b'vector_end', 'vector_prefix', b'vector_prefix', 'vector_start', b'vector_start']) -> None:
        ...
global___GetBusMembersResponse = GetBusMembersResponse

@typing.final
class GetNetItems(google.protobuf.message.Message):
    """/ Gets all items connected to a specific net"""
    DESCRIPTOR: google.protobuf.descriptor.Descriptor
    DOCUMENT_FIELD_NUMBER: builtins.int
    NET_NAME_FIELD_NUMBER: builtins.int
    net_name: builtins.str
    'Net name to query'

    @property
    def document(self) -> common.types.base_types_pb2.DocumentSpecifier:
        ...

    def __init__(self, *, document: common.types.base_types_pb2.DocumentSpecifier | None=..., net_name: builtins.str=...) -> None:
        ...

    def HasField(self, field_name: typing.Literal['document', b'document']) -> builtins.bool:
        ...

    def ClearField(self, field_name: typing.Literal['document', b'document', 'net_name', b'net_name']) -> None:
        ...
global___GetNetItems = GetNetItems

@typing.final
class GetNetItemsResponse(google.protobuf.message.Message):
    DESCRIPTOR: google.protobuf.descriptor.Descriptor
    ITEM_IDS_FIELD_NUMBER: builtins.int
    CONNECTION_POINTS_FIELD_NUMBER: builtins.int

    @property
    def item_ids(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[common.types.base_types_pb2.KIID]:
        """IDs of all items on this net"""

    @property
    def connection_points(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[common.types.base_types_pb2.Vector2]:
        """Connection points (positions where items connect)"""

    def __init__(self, *, item_ids: collections.abc.Iterable[common.types.base_types_pb2.KIID] | None=..., connection_points: collections.abc.Iterable[common.types.base_types_pb2.Vector2] | None=...) -> None:
        ...

    def ClearField(self, field_name: typing.Literal['connection_points', b'connection_points', 'item_ids', b'item_ids']) -> None:
        ...
global___GetNetItemsResponse = GetNetItemsResponse

@typing.final
class GridSettings(google.protobuf.message.Message):
    """
    Grid Settings Commands

    / Grid settings for the schematic editor
    """
    DESCRIPTOR: google.protobuf.descriptor.Descriptor
    GRID_SIZE_FIELD_NUMBER: builtins.int
    GRID_ORIGIN_FIELD_NUMBER: builtins.int
    GRID_VISIBLE_FIELD_NUMBER: builtins.int
    SNAP_TO_GRID_FIELD_NUMBER: builtins.int
    grid_visible: builtins.bool
    snap_to_grid: builtins.bool

    @property
    def grid_size(self) -> common.types.base_types_pb2.Vector2:
        """Grid spacing in nm"""

    @property
    def grid_origin(self) -> common.types.base_types_pb2.Vector2:
        """Grid origin in nm"""

    def __init__(self, *, grid_size: common.types.base_types_pb2.Vector2 | None=..., grid_origin: common.types.base_types_pb2.Vector2 | None=..., grid_visible: builtins.bool=..., snap_to_grid: builtins.bool=...) -> None:
        ...

    def HasField(self, field_name: typing.Literal['grid_origin', b'grid_origin', 'grid_size', b'grid_size']) -> builtins.bool:
        ...

    def ClearField(self, field_name: typing.Literal['grid_origin', b'grid_origin', 'grid_size', b'grid_size', 'grid_visible', b'grid_visible', 'snap_to_grid', b'snap_to_grid']) -> None:
        ...
global___GridSettings = GridSettings

@typing.final
class GetGridSettings(google.protobuf.message.Message):
    """/ Gets current grid settings"""
    DESCRIPTOR: google.protobuf.descriptor.Descriptor
    DOCUMENT_FIELD_NUMBER: builtins.int

    @property
    def document(self) -> common.types.base_types_pb2.DocumentSpecifier:
        ...

    def __init__(self, *, document: common.types.base_types_pb2.DocumentSpecifier | None=...) -> None:
        ...

    def HasField(self, field_name: typing.Literal['document', b'document']) -> builtins.bool:
        ...

    def ClearField(self, field_name: typing.Literal['document', b'document']) -> None:
        ...
global___GetGridSettings = GetGridSettings

@typing.final
class GetGridSettingsResponse(google.protobuf.message.Message):
    DESCRIPTOR: google.protobuf.descriptor.Descriptor
    SETTINGS_FIELD_NUMBER: builtins.int

    @property
    def settings(self) -> global___GridSettings:
        ...

    def __init__(self, *, settings: global___GridSettings | None=...) -> None:
        ...

    def HasField(self, field_name: typing.Literal['settings', b'settings']) -> builtins.bool:
        ...

    def ClearField(self, field_name: typing.Literal['settings', b'settings']) -> None:
        ...
global___GetGridSettingsResponse = GetGridSettingsResponse

@typing.final
class SetGridSettings(google.protobuf.message.Message):
    """/ Sets grid settings"""
    DESCRIPTOR: google.protobuf.descriptor.Descriptor
    DOCUMENT_FIELD_NUMBER: builtins.int
    GRID_SIZE_X_NM_FIELD_NUMBER: builtins.int
    GRID_SIZE_Y_NM_FIELD_NUMBER: builtins.int
    GRID_VISIBLE_FIELD_NUMBER: builtins.int
    SNAP_TO_GRID_FIELD_NUMBER: builtins.int
    grid_size_x_nm: builtins.int
    'Grid X spacing in nm'
    grid_size_y_nm: builtins.int
    'Grid Y spacing in nm'
    grid_visible: builtins.bool
    snap_to_grid: builtins.bool

    @property
    def document(self) -> common.types.base_types_pb2.DocumentSpecifier:
        ...

    def __init__(self, *, document: common.types.base_types_pb2.DocumentSpecifier | None=..., grid_size_x_nm: builtins.int | None=..., grid_size_y_nm: builtins.int | None=..., grid_visible: builtins.bool | None=..., snap_to_grid: builtins.bool | None=...) -> None:
        ...

    def HasField(self, field_name: typing.Literal['_grid_size_x_nm', b'_grid_size_x_nm', '_grid_size_y_nm', b'_grid_size_y_nm', '_grid_visible', b'_grid_visible', '_snap_to_grid', b'_snap_to_grid', 'document', b'document', 'grid_size_x_nm', b'grid_size_x_nm', 'grid_size_y_nm', b'grid_size_y_nm', 'grid_visible', b'grid_visible', 'snap_to_grid', b'snap_to_grid']) -> builtins.bool:
        ...

    def ClearField(self, field_name: typing.Literal['_grid_size_x_nm', b'_grid_size_x_nm', '_grid_size_y_nm', b'_grid_size_y_nm', '_grid_visible', b'_grid_visible', '_snap_to_grid', b'_snap_to_grid', 'document', b'document', 'grid_size_x_nm', b'grid_size_x_nm', 'grid_size_y_nm', b'grid_size_y_nm', 'grid_visible', b'grid_visible', 'snap_to_grid', b'snap_to_grid']) -> None:
        ...

    @typing.overload
    def WhichOneof(self, oneof_group: typing.Literal['_grid_size_x_nm', b'_grid_size_x_nm']) -> typing.Literal['grid_size_x_nm'] | None:
        ...

    @typing.overload
    def WhichOneof(self, oneof_group: typing.Literal['_grid_size_y_nm', b'_grid_size_y_nm']) -> typing.Literal['grid_size_y_nm'] | None:
        ...

    @typing.overload
    def WhichOneof(self, oneof_group: typing.Literal['_grid_visible', b'_grid_visible']) -> typing.Literal['grid_visible'] | None:
        ...

    @typing.overload
    def WhichOneof(self, oneof_group: typing.Literal['_snap_to_grid', b'_snap_to_grid']) -> typing.Literal['snap_to_grid'] | None:
        ...
global___SetGridSettings = SetGridSettings

@typing.final
class ERCRuleSeverity(google.protobuf.message.Message):
    """
    ERC Settings Commands

    / Individual ERC rule severity setting
    """
    DESCRIPTOR: google.protobuf.descriptor.Descriptor
    ERROR_CODE_FIELD_NUMBER: builtins.int
    SEVERITY_FIELD_NUMBER: builtins.int
    error_code: builtins.str
    'ERC error code (e.g., "ERCE_PIN_NOT_CONNECTED")'
    severity: global___ERCSeverity.ValueType
    'Severity level'

    def __init__(self, *, error_code: builtins.str=..., severity: global___ERCSeverity.ValueType=...) -> None:
        ...

    def ClearField(self, field_name: typing.Literal['error_code', b'error_code', 'severity', b'severity']) -> None:
        ...
global___ERCRuleSeverity = ERCRuleSeverity

@typing.final
class ERCSettingsData(google.protobuf.message.Message):
    """/ ERC settings for the schematic"""
    DESCRIPTOR: google.protobuf.descriptor.Descriptor
    RULE_SEVERITIES_FIELD_NUMBER: builtins.int
    CHECK_BUS_DRIVER_CONFLICTS_FIELD_NUMBER: builtins.int
    CHECK_BUS_TO_NET_CONFLICTS_FIELD_NUMBER: builtins.int
    CHECK_BUS_ENTRY_CONFLICTS_FIELD_NUMBER: builtins.int
    CHECK_SIMILAR_LABELS_FIELD_NUMBER: builtins.int
    CHECK_UNIQUE_GLOBAL_LABELS_FIELD_NUMBER: builtins.int
    check_bus_driver_conflicts: builtins.bool
    check_bus_to_net_conflicts: builtins.bool
    check_bus_entry_conflicts: builtins.bool
    check_similar_labels: builtins.bool
    check_unique_global_labels: builtins.bool

    @property
    def rule_severities(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[global___ERCRuleSeverity]:
        ...

    def __init__(self, *, rule_severities: collections.abc.Iterable[global___ERCRuleSeverity] | None=..., check_bus_driver_conflicts: builtins.bool=..., check_bus_to_net_conflicts: builtins.bool=..., check_bus_entry_conflicts: builtins.bool=..., check_similar_labels: builtins.bool=..., check_unique_global_labels: builtins.bool=...) -> None:
        ...

    def ClearField(self, field_name: typing.Literal['check_bus_driver_conflicts', b'check_bus_driver_conflicts', 'check_bus_entry_conflicts', b'check_bus_entry_conflicts', 'check_bus_to_net_conflicts', b'check_bus_to_net_conflicts', 'check_similar_labels', b'check_similar_labels', 'check_unique_global_labels', b'check_unique_global_labels', 'rule_severities', b'rule_severities']) -> None:
        ...
global___ERCSettingsData = ERCSettingsData

@typing.final
class GetERCSettings(google.protobuf.message.Message):
    """/ Gets current ERC settings"""
    DESCRIPTOR: google.protobuf.descriptor.Descriptor
    DOCUMENT_FIELD_NUMBER: builtins.int

    @property
    def document(self) -> common.types.base_types_pb2.DocumentSpecifier:
        ...

    def __init__(self, *, document: common.types.base_types_pb2.DocumentSpecifier | None=...) -> None:
        ...

    def HasField(self, field_name: typing.Literal['document', b'document']) -> builtins.bool:
        ...

    def ClearField(self, field_name: typing.Literal['document', b'document']) -> None:
        ...
global___GetERCSettings = GetERCSettings

@typing.final
class GetERCSettingsResponse(google.protobuf.message.Message):
    DESCRIPTOR: google.protobuf.descriptor.Descriptor
    SETTINGS_FIELD_NUMBER: builtins.int

    @property
    def settings(self) -> global___ERCSettingsData:
        ...

    def __init__(self, *, settings: global___ERCSettingsData | None=...) -> None:
        ...

    def HasField(self, field_name: typing.Literal['settings', b'settings']) -> builtins.bool:
        ...

    def ClearField(self, field_name: typing.Literal['settings', b'settings']) -> None:
        ...
global___GetERCSettingsResponse = GetERCSettingsResponse

@typing.final
class SetERCSettings(google.protobuf.message.Message):
    """/ Sets ERC settings"""
    DESCRIPTOR: google.protobuf.descriptor.Descriptor
    DOCUMENT_FIELD_NUMBER: builtins.int
    SETTINGS_FIELD_NUMBER: builtins.int

    @property
    def document(self) -> common.types.base_types_pb2.DocumentSpecifier:
        ...

    @property
    def settings(self) -> global___ERCSettingsData:
        ...

    def __init__(self, *, document: common.types.base_types_pb2.DocumentSpecifier | None=..., settings: global___ERCSettingsData | None=...) -> None:
        ...

    def HasField(self, field_name: typing.Literal['document', b'document', 'settings', b'settings']) -> builtins.bool:
        ...

    def ClearField(self, field_name: typing.Literal['document', b'document', 'settings', b'settings']) -> None:
        ...
global___SetERCSettings = SetERCSettings

@typing.final
class AssignNetToClass(google.protobuf.message.Message):
    """
    Net Class Commands

    / Assigns a net to a specific net class
    """
    DESCRIPTOR: google.protobuf.descriptor.Descriptor
    DOCUMENT_FIELD_NUMBER: builtins.int
    NET_NAME_FIELD_NUMBER: builtins.int
    NET_CLASS_NAME_FIELD_NUMBER: builtins.int
    net_name: builtins.str
    net_class_name: builtins.str

    @property
    def document(self) -> common.types.base_types_pb2.DocumentSpecifier:
        ...

    def __init__(self, *, document: common.types.base_types_pb2.DocumentSpecifier | None=..., net_name: builtins.str=..., net_class_name: builtins.str=...) -> None:
        ...

    def HasField(self, field_name: typing.Literal['document', b'document']) -> builtins.bool:
        ...

    def ClearField(self, field_name: typing.Literal['document', b'document', 'net_class_name', b'net_class_name', 'net_name', b'net_name']) -> None:
        ...
global___AssignNetToClass = AssignNetToClass

@typing.final
class EditorPreferences(google.protobuf.message.Message):
    """
    Editor Preferences Commands

    / Editor preferences for the schematic editor
    """
    DESCRIPTOR: google.protobuf.descriptor.Descriptor
    SHOW_HIDDEN_PINS_FIELD_NUMBER: builtins.int
    SHOW_HIDDEN_FIELDS_FIELD_NUMBER: builtins.int
    SHOW_PIN_NUMBERS_FIELD_NUMBER: builtins.int
    SHOW_PIN_NAMES_FIELD_NUMBER: builtins.int
    SHOW_ERC_ERRORS_FIELD_NUMBER: builtins.int
    SHOW_ERC_WARNINGS_FIELD_NUMBER: builtins.int
    SHOW_ERC_EXCLUSIONS_FIELD_NUMBER: builtins.int
    AUTO_PLACE_FIELDS_FIELD_NUMBER: builtins.int
    AUTO_PAN_FIELD_NUMBER: builtins.int
    AUTO_PAN_ACCELERATION_FIELD_NUMBER: builtins.int
    CENTER_ON_ZOOM_FIELD_NUMBER: builtins.int
    DEFAULT_WIRE_WIDTH_NM_FIELD_NUMBER: builtins.int
    DEFAULT_BUS_WIDTH_NM_FIELD_NUMBER: builtins.int
    DEFAULT_JUNCTION_SIZE_NM_FIELD_NUMBER: builtins.int
    DEFAULT_TEXT_SIZE_NM_FIELD_NUMBER: builtins.int
    show_hidden_pins: builtins.bool
    'Display settings'
    show_hidden_fields: builtins.bool
    show_pin_numbers: builtins.bool
    show_pin_names: builtins.bool
    show_erc_errors: builtins.bool
    show_erc_warnings: builtins.bool
    show_erc_exclusions: builtins.bool
    auto_place_fields: builtins.bool
    'Behavior settings'
    auto_pan: builtins.bool
    auto_pan_acceleration: builtins.int
    center_on_zoom: builtins.bool
    default_wire_width_nm: builtins.int
    'Drawing defaults'
    default_bus_width_nm: builtins.int
    default_junction_size_nm: builtins.int
    default_text_size_nm: builtins.int

    def __init__(self, *, show_hidden_pins: builtins.bool | None=..., show_hidden_fields: builtins.bool | None=..., show_pin_numbers: builtins.bool | None=..., show_pin_names: builtins.bool | None=..., show_erc_errors: builtins.bool | None=..., show_erc_warnings: builtins.bool | None=..., show_erc_exclusions: builtins.bool | None=..., auto_place_fields: builtins.bool | None=..., auto_pan: builtins.bool | None=..., auto_pan_acceleration: builtins.int | None=..., center_on_zoom: builtins.bool | None=..., default_wire_width_nm: builtins.int | None=..., default_bus_width_nm: builtins.int | None=..., default_junction_size_nm: builtins.int | None=..., default_text_size_nm: builtins.int | None=...) -> None:
        ...

    def HasField(self, field_name: typing.Literal['_auto_pan', b'_auto_pan', '_auto_pan_acceleration', b'_auto_pan_acceleration', '_auto_place_fields', b'_auto_place_fields', '_center_on_zoom', b'_center_on_zoom', '_default_bus_width_nm', b'_default_bus_width_nm', '_default_junction_size_nm', b'_default_junction_size_nm', '_default_text_size_nm', b'_default_text_size_nm', '_default_wire_width_nm', b'_default_wire_width_nm', '_show_erc_errors', b'_show_erc_errors', '_show_erc_exclusions', b'_show_erc_exclusions', '_show_erc_warnings', b'_show_erc_warnings', '_show_hidden_fields', b'_show_hidden_fields', '_show_hidden_pins', b'_show_hidden_pins', '_show_pin_names', b'_show_pin_names', '_show_pin_numbers', b'_show_pin_numbers', 'auto_pan', b'auto_pan', 'auto_pan_acceleration', b'auto_pan_acceleration', 'auto_place_fields', b'auto_place_fields', 'center_on_zoom', b'center_on_zoom', 'default_bus_width_nm', b'default_bus_width_nm', 'default_junction_size_nm', b'default_junction_size_nm', 'default_text_size_nm', b'default_text_size_nm', 'default_wire_width_nm', b'default_wire_width_nm', 'show_erc_errors', b'show_erc_errors', 'show_erc_exclusions', b'show_erc_exclusions', 'show_erc_warnings', b'show_erc_warnings', 'show_hidden_fields', b'show_hidden_fields', 'show_hidden_pins', b'show_hidden_pins', 'show_pin_names', b'show_pin_names', 'show_pin_numbers', b'show_pin_numbers']) -> builtins.bool:
        ...

    def ClearField(self, field_name: typing.Literal['_auto_pan', b'_auto_pan', '_auto_pan_acceleration', b'_auto_pan_acceleration', '_auto_place_fields', b'_auto_place_fields', '_center_on_zoom', b'_center_on_zoom', '_default_bus_width_nm', b'_default_bus_width_nm', '_default_junction_size_nm', b'_default_junction_size_nm', '_default_text_size_nm', b'_default_text_size_nm', '_default_wire_width_nm', b'_default_wire_width_nm', '_show_erc_errors', b'_show_erc_errors', '_show_erc_exclusions', b'_show_erc_exclusions', '_show_erc_warnings', b'_show_erc_warnings', '_show_hidden_fields', b'_show_hidden_fields', '_show_hidden_pins', b'_show_hidden_pins', '_show_pin_names', b'_show_pin_names', '_show_pin_numbers', b'_show_pin_numbers', 'auto_pan', b'auto_pan', 'auto_pan_acceleration', b'auto_pan_acceleration', 'auto_place_fields', b'auto_place_fields', 'center_on_zoom', b'center_on_zoom', 'default_bus_width_nm', b'default_bus_width_nm', 'default_junction_size_nm', b'default_junction_size_nm', 'default_text_size_nm', b'default_text_size_nm', 'default_wire_width_nm', b'default_wire_width_nm', 'show_erc_errors', b'show_erc_errors', 'show_erc_exclusions', b'show_erc_exclusions', 'show_erc_warnings', b'show_erc_warnings', 'show_hidden_fields', b'show_hidden_fields', 'show_hidden_pins', b'show_hidden_pins', 'show_pin_names', b'show_pin_names', 'show_pin_numbers', b'show_pin_numbers']) -> None:
        ...

    @typing.overload
    def WhichOneof(self, oneof_group: typing.Literal['_auto_pan', b'_auto_pan']) -> typing.Literal['auto_pan'] | None:
        ...

    @typing.overload
    def WhichOneof(self, oneof_group: typing.Literal['_auto_pan_acceleration', b'_auto_pan_acceleration']) -> typing.Literal['auto_pan_acceleration'] | None:
        ...

    @typing.overload
    def WhichOneof(self, oneof_group: typing.Literal['_auto_place_fields', b'_auto_place_fields']) -> typing.Literal['auto_place_fields'] | None:
        ...

    @typing.overload
    def WhichOneof(self, oneof_group: typing.Literal['_center_on_zoom', b'_center_on_zoom']) -> typing.Literal['center_on_zoom'] | None:
        ...

    @typing.overload
    def WhichOneof(self, oneof_group: typing.Literal['_default_bus_width_nm', b'_default_bus_width_nm']) -> typing.Literal['default_bus_width_nm'] | None:
        ...

    @typing.overload
    def WhichOneof(self, oneof_group: typing.Literal['_default_junction_size_nm', b'_default_junction_size_nm']) -> typing.Literal['default_junction_size_nm'] | None:
        ...

    @typing.overload
    def WhichOneof(self, oneof_group: typing.Literal['_default_text_size_nm', b'_default_text_size_nm']) -> typing.Literal['default_text_size_nm'] | None:
        ...

    @typing.overload
    def WhichOneof(self, oneof_group: typing.Literal['_default_wire_width_nm', b'_default_wire_width_nm']) -> typing.Literal['default_wire_width_nm'] | None:
        ...

    @typing.overload
    def WhichOneof(self, oneof_group: typing.Literal['_show_erc_errors', b'_show_erc_errors']) -> typing.Literal['show_erc_errors'] | None:
        ...

    @typing.overload
    def WhichOneof(self, oneof_group: typing.Literal['_show_erc_exclusions', b'_show_erc_exclusions']) -> typing.Literal['show_erc_exclusions'] | None:
        ...

    @typing.overload
    def WhichOneof(self, oneof_group: typing.Literal['_show_erc_warnings', b'_show_erc_warnings']) -> typing.Literal['show_erc_warnings'] | None:
        ...

    @typing.overload
    def WhichOneof(self, oneof_group: typing.Literal['_show_hidden_fields', b'_show_hidden_fields']) -> typing.Literal['show_hidden_fields'] | None:
        ...

    @typing.overload
    def WhichOneof(self, oneof_group: typing.Literal['_show_hidden_pins', b'_show_hidden_pins']) -> typing.Literal['show_hidden_pins'] | None:
        ...

    @typing.overload
    def WhichOneof(self, oneof_group: typing.Literal['_show_pin_names', b'_show_pin_names']) -> typing.Literal['show_pin_names'] | None:
        ...

    @typing.overload
    def WhichOneof(self, oneof_group: typing.Literal['_show_pin_numbers', b'_show_pin_numbers']) -> typing.Literal['show_pin_numbers'] | None:
        ...
global___EditorPreferences = EditorPreferences

@typing.final
class GetEditorPreferences(google.protobuf.message.Message):
    """/ Gets editor preferences"""
    DESCRIPTOR: google.protobuf.descriptor.Descriptor
    DOCUMENT_FIELD_NUMBER: builtins.int

    @property
    def document(self) -> common.types.base_types_pb2.DocumentSpecifier:
        ...

    def __init__(self, *, document: common.types.base_types_pb2.DocumentSpecifier | None=...) -> None:
        ...

    def HasField(self, field_name: typing.Literal['document', b'document']) -> builtins.bool:
        ...

    def ClearField(self, field_name: typing.Literal['document', b'document']) -> None:
        ...
global___GetEditorPreferences = GetEditorPreferences

@typing.final
class GetEditorPreferencesResponse(google.protobuf.message.Message):
    DESCRIPTOR: google.protobuf.descriptor.Descriptor
    PREFERENCES_FIELD_NUMBER: builtins.int

    @property
    def preferences(self) -> global___EditorPreferences:
        ...

    def __init__(self, *, preferences: global___EditorPreferences | None=...) -> None:
        ...

    def HasField(self, field_name: typing.Literal['preferences', b'preferences']) -> builtins.bool:
        ...

    def ClearField(self, field_name: typing.Literal['preferences', b'preferences']) -> None:
        ...
global___GetEditorPreferencesResponse = GetEditorPreferencesResponse

@typing.final
class SetEditorPreferences(google.protobuf.message.Message):
    """/ Sets editor preferences"""
    DESCRIPTOR: google.protobuf.descriptor.Descriptor
    DOCUMENT_FIELD_NUMBER: builtins.int
    PREFERENCES_FIELD_NUMBER: builtins.int

    @property
    def document(self) -> common.types.base_types_pb2.DocumentSpecifier:
        ...

    @property
    def preferences(self) -> global___EditorPreferences:
        ...

    def __init__(self, *, document: common.types.base_types_pb2.DocumentSpecifier | None=..., preferences: global___EditorPreferences | None=...) -> None:
        ...

    def HasField(self, field_name: typing.Literal['document', b'document', 'preferences', b'preferences']) -> builtins.bool:
        ...

    def ClearField(self, field_name: typing.Literal['document', b'document', 'preferences', b'preferences']) -> None:
        ...
global___SetEditorPreferences = SetEditorPreferences

@typing.final
class FormattingSettings(google.protobuf.message.Message):
    """
    Schematic Formatting Settings Commands
    (Project-level settings from Schematic Setup -> General -> Formatting)

    / Schematic formatting settings stored in the project file
    """
    DESCRIPTOR: google.protobuf.descriptor.Descriptor
    DEFAULT_TEXT_SIZE_MILS_FIELD_NUMBER: builtins.int
    OVERBAR_OFFSET_RATIO_FIELD_NUMBER: builtins.int
    LABEL_OFFSET_RATIO_FIELD_NUMBER: builtins.int
    GLOBAL_LABEL_MARGIN_RATIO_FIELD_NUMBER: builtins.int
    DEFAULT_LINE_WIDTH_MILS_FIELD_NUMBER: builtins.int
    PIN_SYMBOL_SIZE_MILS_FIELD_NUMBER: builtins.int
    JUNCTION_SIZE_CHOICE_FIELD_NUMBER: builtins.int
    HOP_OVER_SIZE_CHOICE_FIELD_NUMBER: builtins.int
    CONNECTION_GRID_MILS_FIELD_NUMBER: builtins.int
    INTERSHEET_REFS_SHOW_FIELD_NUMBER: builtins.int
    INTERSHEET_REFS_LIST_OWN_PAGE_FIELD_NUMBER: builtins.int
    INTERSHEET_REFS_FORMAT_SHORT_FIELD_NUMBER: builtins.int
    INTERSHEET_REFS_PREFIX_FIELD_NUMBER: builtins.int
    INTERSHEET_REFS_SUFFIX_FIELD_NUMBER: builtins.int
    DASHED_LINE_DASH_RATIO_FIELD_NUMBER: builtins.int
    DASHED_LINE_GAP_RATIO_FIELD_NUMBER: builtins.int
    OPO_VOLTAGE_PRECISION_FIELD_NUMBER: builtins.int
    OPO_VOLTAGE_RANGE_FIELD_NUMBER: builtins.int
    OPO_CURRENT_PRECISION_FIELD_NUMBER: builtins.int
    OPO_CURRENT_RANGE_FIELD_NUMBER: builtins.int
    default_text_size_mils: builtins.int
    'Text section'
    overbar_offset_ratio: builtins.float
    'Percentage (e.g., 123.0 = 123%)'
    label_offset_ratio: builtins.float
    'Percentage'
    global_label_margin_ratio: builtins.float
    'Percentage'
    default_line_width_mils: builtins.int
    'Symbols section'
    pin_symbol_size_mils: builtins.int
    junction_size_choice: builtins.int
    'Connections section\n    0=none, 1=smallest, 2=small, etc.\n    '
    hop_over_size_choice: builtins.int
    '0=none, 1=smallest, etc.'
    connection_grid_mils: builtins.int
    intersheet_refs_show: builtins.bool
    'Inter-sheet References section'
    intersheet_refs_list_own_page: builtins.bool
    intersheet_refs_format_short: builtins.bool
    'true=Abbreviated(1..3), false=Standard(1,2,3)'
    intersheet_refs_prefix: builtins.str
    intersheet_refs_suffix: builtins.str
    dashed_line_dash_ratio: builtins.float
    'Dashed Lines section\n    Ratio of line width\n    '
    dashed_line_gap_ratio: builtins.float
    'Ratio of line width'
    opo_voltage_precision: builtins.int
    'Operating-point Overlay section\n    Significant digits\n    '
    opo_voltage_range: builtins.str
    '"Auto", "V", "mV", etc.'
    opo_current_precision: builtins.int
    'Significant digits'
    opo_current_range: builtins.str
    '"Auto", "A", "mA", etc.'

    def __init__(self, *, default_text_size_mils: builtins.int | None=..., overbar_offset_ratio: builtins.float | None=..., label_offset_ratio: builtins.float | None=..., global_label_margin_ratio: builtins.float | None=..., default_line_width_mils: builtins.int | None=..., pin_symbol_size_mils: builtins.int | None=..., junction_size_choice: builtins.int | None=..., hop_over_size_choice: builtins.int | None=..., connection_grid_mils: builtins.int | None=..., intersheet_refs_show: builtins.bool | None=..., intersheet_refs_list_own_page: builtins.bool | None=..., intersheet_refs_format_short: builtins.bool | None=..., intersheet_refs_prefix: builtins.str | None=..., intersheet_refs_suffix: builtins.str | None=..., dashed_line_dash_ratio: builtins.float | None=..., dashed_line_gap_ratio: builtins.float | None=..., opo_voltage_precision: builtins.int | None=..., opo_voltage_range: builtins.str | None=..., opo_current_precision: builtins.int | None=..., opo_current_range: builtins.str | None=...) -> None:
        ...

    def HasField(self, field_name: typing.Literal['_connection_grid_mils', b'_connection_grid_mils', '_dashed_line_dash_ratio', b'_dashed_line_dash_ratio', '_dashed_line_gap_ratio', b'_dashed_line_gap_ratio', '_default_line_width_mils', b'_default_line_width_mils', '_default_text_size_mils', b'_default_text_size_mils', '_global_label_margin_ratio', b'_global_label_margin_ratio', '_hop_over_size_choice', b'_hop_over_size_choice', '_intersheet_refs_format_short', b'_intersheet_refs_format_short', '_intersheet_refs_list_own_page', b'_intersheet_refs_list_own_page', '_intersheet_refs_prefix', b'_intersheet_refs_prefix', '_intersheet_refs_show', b'_intersheet_refs_show', '_intersheet_refs_suffix', b'_intersheet_refs_suffix', '_junction_size_choice', b'_junction_size_choice', '_label_offset_ratio', b'_label_offset_ratio', '_opo_current_precision', b'_opo_current_precision', '_opo_current_range', b'_opo_current_range', '_opo_voltage_precision', b'_opo_voltage_precision', '_opo_voltage_range', b'_opo_voltage_range', '_overbar_offset_ratio', b'_overbar_offset_ratio', '_pin_symbol_size_mils', b'_pin_symbol_size_mils', 'connection_grid_mils', b'connection_grid_mils', 'dashed_line_dash_ratio', b'dashed_line_dash_ratio', 'dashed_line_gap_ratio', b'dashed_line_gap_ratio', 'default_line_width_mils', b'default_line_width_mils', 'default_text_size_mils', b'default_text_size_mils', 'global_label_margin_ratio', b'global_label_margin_ratio', 'hop_over_size_choice', b'hop_over_size_choice', 'intersheet_refs_format_short', b'intersheet_refs_format_short', 'intersheet_refs_list_own_page', b'intersheet_refs_list_own_page', 'intersheet_refs_prefix', b'intersheet_refs_prefix', 'intersheet_refs_show', b'intersheet_refs_show', 'intersheet_refs_suffix', b'intersheet_refs_suffix', 'junction_size_choice', b'junction_size_choice', 'label_offset_ratio', b'label_offset_ratio', 'opo_current_precision', b'opo_current_precision', 'opo_current_range', b'opo_current_range', 'opo_voltage_precision', b'opo_voltage_precision', 'opo_voltage_range', b'opo_voltage_range', 'overbar_offset_ratio', b'overbar_offset_ratio', 'pin_symbol_size_mils', b'pin_symbol_size_mils']) -> builtins.bool:
        ...

    def ClearField(self, field_name: typing.Literal['_connection_grid_mils', b'_connection_grid_mils', '_dashed_line_dash_ratio', b'_dashed_line_dash_ratio', '_dashed_line_gap_ratio', b'_dashed_line_gap_ratio', '_default_line_width_mils', b'_default_line_width_mils', '_default_text_size_mils', b'_default_text_size_mils', '_global_label_margin_ratio', b'_global_label_margin_ratio', '_hop_over_size_choice', b'_hop_over_size_choice', '_intersheet_refs_format_short', b'_intersheet_refs_format_short', '_intersheet_refs_list_own_page', b'_intersheet_refs_list_own_page', '_intersheet_refs_prefix', b'_intersheet_refs_prefix', '_intersheet_refs_show', b'_intersheet_refs_show', '_intersheet_refs_suffix', b'_intersheet_refs_suffix', '_junction_size_choice', b'_junction_size_choice', '_label_offset_ratio', b'_label_offset_ratio', '_opo_current_precision', b'_opo_current_precision', '_opo_current_range', b'_opo_current_range', '_opo_voltage_precision', b'_opo_voltage_precision', '_opo_voltage_range', b'_opo_voltage_range', '_overbar_offset_ratio', b'_overbar_offset_ratio', '_pin_symbol_size_mils', b'_pin_symbol_size_mils', 'connection_grid_mils', b'connection_grid_mils', 'dashed_line_dash_ratio', b'dashed_line_dash_ratio', 'dashed_line_gap_ratio', b'dashed_line_gap_ratio', 'default_line_width_mils', b'default_line_width_mils', 'default_text_size_mils', b'default_text_size_mils', 'global_label_margin_ratio', b'global_label_margin_ratio', 'hop_over_size_choice', b'hop_over_size_choice', 'intersheet_refs_format_short', b'intersheet_refs_format_short', 'intersheet_refs_list_own_page', b'intersheet_refs_list_own_page', 'intersheet_refs_prefix', b'intersheet_refs_prefix', 'intersheet_refs_show', b'intersheet_refs_show', 'intersheet_refs_suffix', b'intersheet_refs_suffix', 'junction_size_choice', b'junction_size_choice', 'label_offset_ratio', b'label_offset_ratio', 'opo_current_precision', b'opo_current_precision', 'opo_current_range', b'opo_current_range', 'opo_voltage_precision', b'opo_voltage_precision', 'opo_voltage_range', b'opo_voltage_range', 'overbar_offset_ratio', b'overbar_offset_ratio', 'pin_symbol_size_mils', b'pin_symbol_size_mils']) -> None:
        ...

    @typing.overload
    def WhichOneof(self, oneof_group: typing.Literal['_connection_grid_mils', b'_connection_grid_mils']) -> typing.Literal['connection_grid_mils'] | None:
        ...

    @typing.overload
    def WhichOneof(self, oneof_group: typing.Literal['_dashed_line_dash_ratio', b'_dashed_line_dash_ratio']) -> typing.Literal['dashed_line_dash_ratio'] | None:
        ...

    @typing.overload
    def WhichOneof(self, oneof_group: typing.Literal['_dashed_line_gap_ratio', b'_dashed_line_gap_ratio']) -> typing.Literal['dashed_line_gap_ratio'] | None:
        ...

    @typing.overload
    def WhichOneof(self, oneof_group: typing.Literal['_default_line_width_mils', b'_default_line_width_mils']) -> typing.Literal['default_line_width_mils'] | None:
        ...

    @typing.overload
    def WhichOneof(self, oneof_group: typing.Literal['_default_text_size_mils', b'_default_text_size_mils']) -> typing.Literal['default_text_size_mils'] | None:
        ...

    @typing.overload
    def WhichOneof(self, oneof_group: typing.Literal['_global_label_margin_ratio', b'_global_label_margin_ratio']) -> typing.Literal['global_label_margin_ratio'] | None:
        ...

    @typing.overload
    def WhichOneof(self, oneof_group: typing.Literal['_hop_over_size_choice', b'_hop_over_size_choice']) -> typing.Literal['hop_over_size_choice'] | None:
        ...

    @typing.overload
    def WhichOneof(self, oneof_group: typing.Literal['_intersheet_refs_format_short', b'_intersheet_refs_format_short']) -> typing.Literal['intersheet_refs_format_short'] | None:
        ...

    @typing.overload
    def WhichOneof(self, oneof_group: typing.Literal['_intersheet_refs_list_own_page', b'_intersheet_refs_list_own_page']) -> typing.Literal['intersheet_refs_list_own_page'] | None:
        ...

    @typing.overload
    def WhichOneof(self, oneof_group: typing.Literal['_intersheet_refs_prefix', b'_intersheet_refs_prefix']) -> typing.Literal['intersheet_refs_prefix'] | None:
        ...

    @typing.overload
    def WhichOneof(self, oneof_group: typing.Literal['_intersheet_refs_show', b'_intersheet_refs_show']) -> typing.Literal['intersheet_refs_show'] | None:
        ...

    @typing.overload
    def WhichOneof(self, oneof_group: typing.Literal['_intersheet_refs_suffix', b'_intersheet_refs_suffix']) -> typing.Literal['intersheet_refs_suffix'] | None:
        ...

    @typing.overload
    def WhichOneof(self, oneof_group: typing.Literal['_junction_size_choice', b'_junction_size_choice']) -> typing.Literal['junction_size_choice'] | None:
        ...

    @typing.overload
    def WhichOneof(self, oneof_group: typing.Literal['_label_offset_ratio', b'_label_offset_ratio']) -> typing.Literal['label_offset_ratio'] | None:
        ...

    @typing.overload
    def WhichOneof(self, oneof_group: typing.Literal['_opo_current_precision', b'_opo_current_precision']) -> typing.Literal['opo_current_precision'] | None:
        ...

    @typing.overload
    def WhichOneof(self, oneof_group: typing.Literal['_opo_current_range', b'_opo_current_range']) -> typing.Literal['opo_current_range'] | None:
        ...

    @typing.overload
    def WhichOneof(self, oneof_group: typing.Literal['_opo_voltage_precision', b'_opo_voltage_precision']) -> typing.Literal['opo_voltage_precision'] | None:
        ...

    @typing.overload
    def WhichOneof(self, oneof_group: typing.Literal['_opo_voltage_range', b'_opo_voltage_range']) -> typing.Literal['opo_voltage_range'] | None:
        ...

    @typing.overload
    def WhichOneof(self, oneof_group: typing.Literal['_overbar_offset_ratio', b'_overbar_offset_ratio']) -> typing.Literal['overbar_offset_ratio'] | None:
        ...

    @typing.overload
    def WhichOneof(self, oneof_group: typing.Literal['_pin_symbol_size_mils', b'_pin_symbol_size_mils']) -> typing.Literal['pin_symbol_size_mils'] | None:
        ...
global___FormattingSettings = FormattingSettings

@typing.final
class GetFormattingSettings(google.protobuf.message.Message):
    """/ Gets schematic formatting settings"""
    DESCRIPTOR: google.protobuf.descriptor.Descriptor
    DOCUMENT_FIELD_NUMBER: builtins.int

    @property
    def document(self) -> common.types.base_types_pb2.DocumentSpecifier:
        ...

    def __init__(self, *, document: common.types.base_types_pb2.DocumentSpecifier | None=...) -> None:
        ...

    def HasField(self, field_name: typing.Literal['document', b'document']) -> builtins.bool:
        ...

    def ClearField(self, field_name: typing.Literal['document', b'document']) -> None:
        ...
global___GetFormattingSettings = GetFormattingSettings

@typing.final
class GetFormattingSettingsResponse(google.protobuf.message.Message):
    DESCRIPTOR: google.protobuf.descriptor.Descriptor
    SETTINGS_FIELD_NUMBER: builtins.int

    @property
    def settings(self) -> global___FormattingSettings:
        ...

    def __init__(self, *, settings: global___FormattingSettings | None=...) -> None:
        ...

    def HasField(self, field_name: typing.Literal['settings', b'settings']) -> builtins.bool:
        ...

    def ClearField(self, field_name: typing.Literal['settings', b'settings']) -> None:
        ...
global___GetFormattingSettingsResponse = GetFormattingSettingsResponse

@typing.final
class SetFormattingSettings(google.protobuf.message.Message):
    """/ Sets schematic formatting settings"""
    DESCRIPTOR: google.protobuf.descriptor.Descriptor
    DOCUMENT_FIELD_NUMBER: builtins.int
    SETTINGS_FIELD_NUMBER: builtins.int

    @property
    def document(self) -> common.types.base_types_pb2.DocumentSpecifier:
        ...

    @property
    def settings(self) -> global___FormattingSettings:
        ...

    def __init__(self, *, document: common.types.base_types_pb2.DocumentSpecifier | None=..., settings: global___FormattingSettings | None=...) -> None:
        ...

    def HasField(self, field_name: typing.Literal['document', b'document', 'settings', b'settings']) -> builtins.bool:
        ...

    def ClearField(self, field_name: typing.Literal['document', b'document', 'settings', b'settings']) -> None:
        ...
global___SetFormattingSettings = SetFormattingSettings

@typing.final
class FieldNameTemplate(google.protobuf.message.Message):
    """
    Field Name Templates Commands
    (Project-level settings from Schematic Setup -> General -> Field Name Templates)

    / A single field name template entry
    """
    DESCRIPTOR: google.protobuf.descriptor.Descriptor
    NAME_FIELD_NUMBER: builtins.int
    VISIBLE_FIELD_NUMBER: builtins.int
    URL_FIELD_NUMBER: builtins.int
    name: builtins.str
    'Field name'
    visible: builtins.bool
    'Default visibility'
    url: builtins.bool
    'Has URL/browse button'

    def __init__(self, *, name: builtins.str=..., visible: builtins.bool=..., url: builtins.bool=...) -> None:
        ...

    def ClearField(self, field_name: typing.Literal['name', b'name', 'url', b'url', 'visible', b'visible']) -> None:
        ...
global___FieldNameTemplate = FieldNameTemplate

@typing.final
class GetFieldNameTemplates(google.protobuf.message.Message):
    """/ Gets all field name templates"""
    DESCRIPTOR: google.protobuf.descriptor.Descriptor
    DOCUMENT_FIELD_NUMBER: builtins.int

    @property
    def document(self) -> common.types.base_types_pb2.DocumentSpecifier:
        ...

    def __init__(self, *, document: common.types.base_types_pb2.DocumentSpecifier | None=...) -> None:
        ...

    def HasField(self, field_name: typing.Literal['document', b'document']) -> builtins.bool:
        ...

    def ClearField(self, field_name: typing.Literal['document', b'document']) -> None:
        ...
global___GetFieldNameTemplates = GetFieldNameTemplates

@typing.final
class GetFieldNameTemplatesResponse(google.protobuf.message.Message):
    DESCRIPTOR: google.protobuf.descriptor.Descriptor
    TEMPLATES_FIELD_NUMBER: builtins.int

    @property
    def templates(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[global___FieldNameTemplate]:
        ...

    def __init__(self, *, templates: collections.abc.Iterable[global___FieldNameTemplate] | None=...) -> None:
        ...

    def ClearField(self, field_name: typing.Literal['templates', b'templates']) -> None:
        ...
global___GetFieldNameTemplatesResponse = GetFieldNameTemplatesResponse

@typing.final
class SetFieldNameTemplates(google.protobuf.message.Message):
    """/ Sets (replaces) all field name templates
    / Provide the complete list of templates to replace existing ones
    """
    DESCRIPTOR: google.protobuf.descriptor.Descriptor
    DOCUMENT_FIELD_NUMBER: builtins.int
    TEMPLATES_FIELD_NUMBER: builtins.int

    @property
    def document(self) -> common.types.base_types_pb2.DocumentSpecifier:
        ...

    @property
    def templates(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[global___FieldNameTemplate]:
        ...

    def __init__(self, *, document: common.types.base_types_pb2.DocumentSpecifier | None=..., templates: collections.abc.Iterable[global___FieldNameTemplate] | None=...) -> None:
        ...

    def HasField(self, field_name: typing.Literal['document', b'document']) -> builtins.bool:
        ...

    def ClearField(self, field_name: typing.Literal['document', b'document', 'templates', b'templates']) -> None:
        ...
global___SetFieldNameTemplates = SetFieldNameTemplates

@typing.final
class AnnotationSettingsData(google.protobuf.message.Message):
    """/ Annotation settings stored in the project file"""
    DESCRIPTOR: google.protobuf.descriptor.Descriptor
    SYMBOL_UNIT_NOTATION_FIELD_NUMBER: builtins.int
    SORT_ORDER_FIELD_NUMBER: builtins.int
    NUMBERING_METHOD_FIELD_NUMBER: builtins.int
    START_NUMBER_FIELD_NUMBER: builtins.int
    ALLOW_REFERENCE_REUSE_FIELD_NUMBER: builtins.int
    symbol_unit_notation: global___SymbolUnitNotation.ValueType
    'Units section'
    sort_order: global___AnnotationSortOrder.ValueType
    'Order section'
    numbering_method: global___AnnotationNumberingMethod.ValueType
    'Numbering section'
    start_number: builtins.int
    'Starting number for annotation'
    allow_reference_reuse: builtins.bool
    'Allow reusing reference designators'

    def __init__(self, *, symbol_unit_notation: global___SymbolUnitNotation.ValueType | None=..., sort_order: global___AnnotationSortOrder.ValueType | None=..., numbering_method: global___AnnotationNumberingMethod.ValueType | None=..., start_number: builtins.int | None=..., allow_reference_reuse: builtins.bool | None=...) -> None:
        ...

    def HasField(self, field_name: typing.Literal['_allow_reference_reuse', b'_allow_reference_reuse', '_numbering_method', b'_numbering_method', '_sort_order', b'_sort_order', '_start_number', b'_start_number', '_symbol_unit_notation', b'_symbol_unit_notation', 'allow_reference_reuse', b'allow_reference_reuse', 'numbering_method', b'numbering_method', 'sort_order', b'sort_order', 'start_number', b'start_number', 'symbol_unit_notation', b'symbol_unit_notation']) -> builtins.bool:
        ...

    def ClearField(self, field_name: typing.Literal['_allow_reference_reuse', b'_allow_reference_reuse', '_numbering_method', b'_numbering_method', '_sort_order', b'_sort_order', '_start_number', b'_start_number', '_symbol_unit_notation', b'_symbol_unit_notation', 'allow_reference_reuse', b'allow_reference_reuse', 'numbering_method', b'numbering_method', 'sort_order', b'sort_order', 'start_number', b'start_number', 'symbol_unit_notation', b'symbol_unit_notation']) -> None:
        ...

    @typing.overload
    def WhichOneof(self, oneof_group: typing.Literal['_allow_reference_reuse', b'_allow_reference_reuse']) -> typing.Literal['allow_reference_reuse'] | None:
        ...

    @typing.overload
    def WhichOneof(self, oneof_group: typing.Literal['_numbering_method', b'_numbering_method']) -> typing.Literal['numbering_method'] | None:
        ...

    @typing.overload
    def WhichOneof(self, oneof_group: typing.Literal['_sort_order', b'_sort_order']) -> typing.Literal['sort_order'] | None:
        ...

    @typing.overload
    def WhichOneof(self, oneof_group: typing.Literal['_start_number', b'_start_number']) -> typing.Literal['start_number'] | None:
        ...

    @typing.overload
    def WhichOneof(self, oneof_group: typing.Literal['_symbol_unit_notation', b'_symbol_unit_notation']) -> typing.Literal['symbol_unit_notation'] | None:
        ...
global___AnnotationSettingsData = AnnotationSettingsData

@typing.final
class GetAnnotationSettings(google.protobuf.message.Message):
    """/ Gets annotation settings"""
    DESCRIPTOR: google.protobuf.descriptor.Descriptor
    DOCUMENT_FIELD_NUMBER: builtins.int

    @property
    def document(self) -> common.types.base_types_pb2.DocumentSpecifier:
        ...

    def __init__(self, *, document: common.types.base_types_pb2.DocumentSpecifier | None=...) -> None:
        ...

    def HasField(self, field_name: typing.Literal['document', b'document']) -> builtins.bool:
        ...

    def ClearField(self, field_name: typing.Literal['document', b'document']) -> None:
        ...
global___GetAnnotationSettings = GetAnnotationSettings

@typing.final
class GetAnnotationSettingsResponse(google.protobuf.message.Message):
    DESCRIPTOR: google.protobuf.descriptor.Descriptor
    SETTINGS_FIELD_NUMBER: builtins.int

    @property
    def settings(self) -> global___AnnotationSettingsData:
        ...

    def __init__(self, *, settings: global___AnnotationSettingsData | None=...) -> None:
        ...

    def HasField(self, field_name: typing.Literal['settings', b'settings']) -> builtins.bool:
        ...

    def ClearField(self, field_name: typing.Literal['settings', b'settings']) -> None:
        ...
global___GetAnnotationSettingsResponse = GetAnnotationSettingsResponse

@typing.final
class SetAnnotationSettings(google.protobuf.message.Message):
    """/ Sets annotation settings"""
    DESCRIPTOR: google.protobuf.descriptor.Descriptor
    DOCUMENT_FIELD_NUMBER: builtins.int
    SETTINGS_FIELD_NUMBER: builtins.int

    @property
    def document(self) -> common.types.base_types_pb2.DocumentSpecifier:
        ...

    @property
    def settings(self) -> global___AnnotationSettingsData:
        ...

    def __init__(self, *, document: common.types.base_types_pb2.DocumentSpecifier | None=..., settings: global___AnnotationSettingsData | None=...) -> None:
        ...

    def HasField(self, field_name: typing.Literal['document', b'document', 'settings', b'settings']) -> builtins.bool:
        ...

    def ClearField(self, field_name: typing.Literal['document', b'document', 'settings', b'settings']) -> None:
        ...
global___SetAnnotationSettings = SetAnnotationSettings

@typing.final
class SimulationSettings(google.protobuf.message.Message):
    """
    Simulation Settings Commands

    / SPICE simulation settings
    """
    DESCRIPTOR: google.protobuf.descriptor.Descriptor

    @typing.final
    class ModelOverridesEntry(google.protobuf.message.Message):
        DESCRIPTOR: google.protobuf.descriptor.Descriptor
        KEY_FIELD_NUMBER: builtins.int
        VALUE_FIELD_NUMBER: builtins.int
        key: builtins.str
        value: builtins.str

        def __init__(self, *, key: builtins.str=..., value: builtins.str=...) -> None:
            ...

        def ClearField(self, field_name: typing.Literal['key', b'key', 'value', b'value']) -> None:
            ...
    SPICE_COMMAND_FIELD_NUMBER: builtins.int
    INCLUDE_PATHS_FIELD_NUMBER: builtins.int
    MODEL_OVERRIDES_FIELD_NUMBER: builtins.int
    SIMULATOR_FIELD_NUMBER: builtins.int
    spice_command: builtins.str
    'Default SPICE command (e.g., ".tran 1u 1m")'
    simulator: builtins.str
    'Simulator name (e.g., "ngspice")'

    @property
    def include_paths(self) -> google.protobuf.internal.containers.RepeatedScalarFieldContainer[builtins.str]:
        """SPICE include paths"""

    @property
    def model_overrides(self) -> google.protobuf.internal.containers.ScalarMap[builtins.str, builtins.str]:
        """Symbol to model mappings"""

    def __init__(self, *, spice_command: builtins.str=..., include_paths: collections.abc.Iterable[builtins.str] | None=..., model_overrides: collections.abc.Mapping[builtins.str, builtins.str] | None=..., simulator: builtins.str | None=...) -> None:
        ...

    def HasField(self, field_name: typing.Literal['_simulator', b'_simulator', 'simulator', b'simulator']) -> builtins.bool:
        ...

    def ClearField(self, field_name: typing.Literal['_simulator', b'_simulator', 'include_paths', b'include_paths', 'model_overrides', b'model_overrides', 'simulator', b'simulator', 'spice_command', b'spice_command']) -> None:
        ...

    def WhichOneof(self, oneof_group: typing.Literal['_simulator', b'_simulator']) -> typing.Literal['simulator'] | None:
        ...
global___SimulationSettings = SimulationSettings

@typing.final
class GetSimulationSettings(google.protobuf.message.Message):
    """/ Gets simulation settings"""
    DESCRIPTOR: google.protobuf.descriptor.Descriptor
    DOCUMENT_FIELD_NUMBER: builtins.int

    @property
    def document(self) -> common.types.base_types_pb2.DocumentSpecifier:
        ...

    def __init__(self, *, document: common.types.base_types_pb2.DocumentSpecifier | None=...) -> None:
        ...

    def HasField(self, field_name: typing.Literal['document', b'document']) -> builtins.bool:
        ...

    def ClearField(self, field_name: typing.Literal['document', b'document']) -> None:
        ...
global___GetSimulationSettings = GetSimulationSettings

@typing.final
class GetSimulationSettingsResponse(google.protobuf.message.Message):
    DESCRIPTOR: google.protobuf.descriptor.Descriptor
    SETTINGS_FIELD_NUMBER: builtins.int

    @property
    def settings(self) -> global___SimulationSettings:
        ...

    def __init__(self, *, settings: global___SimulationSettings | None=...) -> None:
        ...

    def HasField(self, field_name: typing.Literal['settings', b'settings']) -> builtins.bool:
        ...

    def ClearField(self, field_name: typing.Literal['settings', b'settings']) -> None:
        ...
global___GetSimulationSettingsResponse = GetSimulationSettingsResponse

@typing.final
class SetSimulationSettings(google.protobuf.message.Message):
    """/ Sets simulation settings"""
    DESCRIPTOR: google.protobuf.descriptor.Descriptor
    DOCUMENT_FIELD_NUMBER: builtins.int
    SETTINGS_FIELD_NUMBER: builtins.int

    @property
    def document(self) -> common.types.base_types_pb2.DocumentSpecifier:
        ...

    @property
    def settings(self) -> global___SimulationSettings:
        ...

    def __init__(self, *, document: common.types.base_types_pb2.DocumentSpecifier | None=..., settings: global___SimulationSettings | None=...) -> None:
        ...

    def HasField(self, field_name: typing.Literal['document', b'document', 'settings', b'settings']) -> builtins.bool:
        ...

    def ClearField(self, field_name: typing.Literal['document', b'document', 'settings', b'settings']) -> None:
        ...
global___SetSimulationSettings = SetSimulationSettings

@typing.final
class SymbolInfo(google.protobuf.message.Message):
    """
    Library Query Commands

    / Information about a library symbol
    """
    DESCRIPTOR: google.protobuf.descriptor.Descriptor
    LIB_ID_FIELD_NUMBER: builtins.int
    NAME_FIELD_NUMBER: builtins.int
    DESCRIPTION_FIELD_NUMBER: builtins.int
    KEYWORDS_FIELD_NUMBER: builtins.int
    FOOTPRINT_FILTERS_FIELD_NUMBER: builtins.int
    UNIT_COUNT_FIELD_NUMBER: builtins.int
    PINS_FIELD_NUMBER: builtins.int
    IS_POWER_FIELD_NUMBER: builtins.int
    DATASHEET_FIELD_NUMBER: builtins.int
    BODY_BBOX_MIN_X_NM_FIELD_NUMBER: builtins.int
    BODY_BBOX_MIN_Y_NM_FIELD_NUMBER: builtins.int
    BODY_BBOX_MAX_X_NM_FIELD_NUMBER: builtins.int
    BODY_BBOX_MAX_Y_NM_FIELD_NUMBER: builtins.int
    lib_id: builtins.str
    'Full library:symbol identifier'
    name: builtins.str
    'Symbol name'
    description: builtins.str
    'Symbol description'
    keywords: builtins.str
    'Space-separated keywords'
    unit_count: builtins.int
    'Number of units'
    is_power: builtins.bool
    'True if power symbol'
    datasheet: builtins.str
    'Datasheet URL or path'
    body_bbox_min_x_nm: builtins.int
    'Bounding box of the symbol body including pins, relative to symbol origin, in nm'
    body_bbox_min_y_nm: builtins.int
    body_bbox_max_x_nm: builtins.int
    body_bbox_max_y_nm: builtins.int

    @property
    def footprint_filters(self) -> google.protobuf.internal.containers.RepeatedScalarFieldContainer[builtins.str]:
        """Footprint filter patterns"""

    @property
    def pins(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[global___PinInfo]:
        """Pin information"""

    def __init__(self, *, lib_id: builtins.str=..., name: builtins.str=..., description: builtins.str=..., keywords: builtins.str=..., footprint_filters: collections.abc.Iterable[builtins.str] | None=..., unit_count: builtins.int=..., pins: collections.abc.Iterable[global___PinInfo] | None=..., is_power: builtins.bool=..., datasheet: builtins.str=..., body_bbox_min_x_nm: builtins.int=..., body_bbox_min_y_nm: builtins.int=..., body_bbox_max_x_nm: builtins.int=..., body_bbox_max_y_nm: builtins.int=...) -> None:
        ...

    def ClearField(self, field_name: typing.Literal['body_bbox_max_x_nm', b'body_bbox_max_x_nm', 'body_bbox_max_y_nm', b'body_bbox_max_y_nm', 'body_bbox_min_x_nm', b'body_bbox_min_x_nm', 'body_bbox_min_y_nm', b'body_bbox_min_y_nm', 'datasheet', b'datasheet', 'description', b'description', 'footprint_filters', b'footprint_filters', 'is_power', b'is_power', 'keywords', b'keywords', 'lib_id', b'lib_id', 'name', b'name', 'pins', b'pins', 'unit_count', b'unit_count']) -> None:
        ...
global___SymbolInfo = SymbolInfo

@typing.final
class PinInfo(google.protobuf.message.Message):
    """/ Information about a symbol pin"""
    DESCRIPTOR: google.protobuf.descriptor.Descriptor
    NUMBER_FIELD_NUMBER: builtins.int
    NAME_FIELD_NUMBER: builtins.int
    POSITION_FIELD_NUMBER: builtins.int
    ORIENTATION_FIELD_NUMBER: builtins.int
    ELECTRICAL_TYPE_FIELD_NUMBER: builtins.int
    GRAPHICAL_STYLE_FIELD_NUMBER: builtins.int
    UNIT_FIELD_NUMBER: builtins.int
    number: builtins.str
    'Pin number (electrical identifier)'
    name: builtins.str
    'Pin name'
    orientation: builtins.int
    'Orientation in degrees (0, 90, 180, 270)'
    electrical_type: builtins.str
    'Type: input, output, bidirectional, etc.'
    graphical_style: builtins.str
    'Style: line, inverted, clock, etc.'
    unit: builtins.int
    'Unit number (for multi-unit symbols)'

    @property
    def position(self) -> common.types.base_types_pb2.Vector2:
        """Position relative to symbol origin"""

    def __init__(self, *, number: builtins.str=..., name: builtins.str=..., position: common.types.base_types_pb2.Vector2 | None=..., orientation: builtins.int=..., electrical_type: builtins.str=..., graphical_style: builtins.str=..., unit: builtins.int=...) -> None:
        ...

    def HasField(self, field_name: typing.Literal['position', b'position']) -> builtins.bool:
        ...

    def ClearField(self, field_name: typing.Literal['electrical_type', b'electrical_type', 'graphical_style', b'graphical_style', 'name', b'name', 'number', b'number', 'orientation', b'orientation', 'position', b'position', 'unit', b'unit']) -> None:
        ...
global___PinInfo = PinInfo

@typing.final
class GetLibrarySymbols(google.protobuf.message.Message):
    """/ Gets all symbols in a library"""
    DESCRIPTOR: google.protobuf.descriptor.Descriptor
    LIBRARY_NAME_FIELD_NUMBER: builtins.int
    library_name: builtins.str
    'Library nickname'

    def __init__(self, *, library_name: builtins.str=...) -> None:
        ...

    def ClearField(self, field_name: typing.Literal['library_name', b'library_name']) -> None:
        ...
global___GetLibrarySymbols = GetLibrarySymbols

@typing.final
class GetLibrarySymbolsResponse(google.protobuf.message.Message):
    DESCRIPTOR: google.protobuf.descriptor.Descriptor
    SYMBOL_NAMES_FIELD_NUMBER: builtins.int

    @property
    def symbol_names(self) -> google.protobuf.internal.containers.RepeatedScalarFieldContainer[builtins.str]:
        """List of symbol names in the library"""

    def __init__(self, *, symbol_names: collections.abc.Iterable[builtins.str] | None=...) -> None:
        ...

    def ClearField(self, field_name: typing.Literal['symbol_names', b'symbol_names']) -> None:
        ...
global___GetLibrarySymbolsResponse = GetLibrarySymbolsResponse

@typing.final
class SearchLibrarySymbols(google.protobuf.message.Message):
    """/ Searches for symbols across libraries"""
    DESCRIPTOR: google.protobuf.descriptor.Descriptor
    QUERY_FIELD_NUMBER: builtins.int
    LIBRARIES_FIELD_NUMBER: builtins.int
    MAX_RESULTS_FIELD_NUMBER: builtins.int
    PATTERN_TYPE_FIELD_NUMBER: builtins.int
    query: builtins.str
    'Search query (matches name, description, keywords)'
    max_results: builtins.int
    'Maximum results (0 = no limit)'
    pattern_type: builtins.str
    '"substring" (default), "wildcard", or "regex" '

    @property
    def libraries(self) -> google.protobuf.internal.containers.RepeatedScalarFieldContainer[builtins.str]:
        """Libraries to search (empty = all)"""

    def __init__(self, *, query: builtins.str=..., libraries: collections.abc.Iterable[builtins.str] | None=..., max_results: builtins.int=..., pattern_type: builtins.str=...) -> None:
        ...

    def ClearField(self, field_name: typing.Literal['libraries', b'libraries', 'max_results', b'max_results', 'pattern_type', b'pattern_type', 'query', b'query']) -> None:
        ...
global___SearchLibrarySymbols = SearchLibrarySymbols

@typing.final
class SearchLibrarySymbolsResponse(google.protobuf.message.Message):
    DESCRIPTOR: google.protobuf.descriptor.Descriptor
    SYMBOLS_FIELD_NUMBER: builtins.int

    @property
    def symbols(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[global___SymbolInfo]:
        ...

    def __init__(self, *, symbols: collections.abc.Iterable[global___SymbolInfo] | None=...) -> None:
        ...

    def ClearField(self, field_name: typing.Literal['symbols', b'symbols']) -> None:
        ...
global___SearchLibrarySymbolsResponse = SearchLibrarySymbolsResponse

@typing.final
class GetSymbolInfo(google.protobuf.message.Message):
    """/ Gets detailed information about a specific symbol"""
    DESCRIPTOR: google.protobuf.descriptor.Descriptor
    LIB_ID_FIELD_NUMBER: builtins.int
    lib_id: builtins.str
    '"Library:SymbolName" format'

    def __init__(self, *, lib_id: builtins.str=...) -> None:
        ...

    def ClearField(self, field_name: typing.Literal['lib_id', b'lib_id']) -> None:
        ...
global___GetSymbolInfo = GetSymbolInfo

@typing.final
class GetSymbolInfoResponse(google.protobuf.message.Message):
    DESCRIPTOR: google.protobuf.descriptor.Descriptor
    SYMBOL_FIELD_NUMBER: builtins.int

    @property
    def symbol(self) -> global___SymbolInfo:
        ...

    def __init__(self, *, symbol: global___SymbolInfo | None=...) -> None:
        ...

    def HasField(self, field_name: typing.Literal['symbol', b'symbol']) -> builtins.bool:
        ...

    def ClearField(self, field_name: typing.Literal['symbol', b'symbol']) -> None:
        ...
global___GetSymbolInfoResponse = GetSymbolInfoResponse

@typing.final
class GetTransformedPinPosition(google.protobuf.message.Message):
    """/ Gets the transformed position of a specific pin on a placed symbol"""
    DESCRIPTOR: google.protobuf.descriptor.Descriptor
    DOCUMENT_FIELD_NUMBER: builtins.int
    SYMBOL_ID_FIELD_NUMBER: builtins.int
    PIN_NUMBER_FIELD_NUMBER: builtins.int
    pin_number: builtins.str

    @property
    def document(self) -> common.types.base_types_pb2.DocumentSpecifier:
        ...

    @property
    def symbol_id(self) -> common.types.base_types_pb2.KIID:
        ...

    def __init__(self, *, document: common.types.base_types_pb2.DocumentSpecifier | None=..., symbol_id: common.types.base_types_pb2.KIID | None=..., pin_number: builtins.str=...) -> None:
        ...

    def HasField(self, field_name: typing.Literal['document', b'document', 'symbol_id', b'symbol_id']) -> builtins.bool:
        ...

    def ClearField(self, field_name: typing.Literal['document', b'document', 'pin_number', b'pin_number', 'symbol_id', b'symbol_id']) -> None:
        ...
global___GetTransformedPinPosition = GetTransformedPinPosition

@typing.final
class GetTransformedPinPositionResponse(google.protobuf.message.Message):
    DESCRIPTOR: google.protobuf.descriptor.Descriptor
    POSITION_FIELD_NUMBER: builtins.int
    ORIENTATION_FIELD_NUMBER: builtins.int
    orientation: builtins.int
    'World orientation in degrees'

    @property
    def position(self) -> common.types.base_types_pb2.Vector2:
        """World position in nm"""

    def __init__(self, *, position: common.types.base_types_pb2.Vector2 | None=..., orientation: builtins.int=...) -> None:
        ...

    def HasField(self, field_name: typing.Literal['position', b'position']) -> builtins.bool:
        ...

    def ClearField(self, field_name: typing.Literal['orientation', b'orientation', 'position', b'position']) -> None:
        ...
global___GetTransformedPinPositionResponse = GetTransformedPinPositionResponse

@typing.final
class GetAllTransformedPinPositions(google.protobuf.message.Message):
    """/ Gets the transformed positions of ALL pins on a placed symbol in a single call.
    / This is much more efficient than calling GetTransformedPinPosition for each pin,
    / especially for symbols with many pins (e.g., 600+ pin BGA packages).
    """
    DESCRIPTOR: google.protobuf.descriptor.Descriptor
    DOCUMENT_FIELD_NUMBER: builtins.int
    SYMBOL_ID_FIELD_NUMBER: builtins.int

    @property
    def document(self) -> common.types.base_types_pb2.DocumentSpecifier:
        ...

    @property
    def symbol_id(self) -> common.types.base_types_pb2.KIID:
        ...

    def __init__(self, *, document: common.types.base_types_pb2.DocumentSpecifier | None=..., symbol_id: common.types.base_types_pb2.KIID | None=...) -> None:
        ...

    def HasField(self, field_name: typing.Literal['document', b'document', 'symbol_id', b'symbol_id']) -> builtins.bool:
        ...

    def ClearField(self, field_name: typing.Literal['document', b'document', 'symbol_id', b'symbol_id']) -> None:
        ...
global___GetAllTransformedPinPositions = GetAllTransformedPinPositions

@typing.final
class TransformedPinInfo(google.protobuf.message.Message):
    DESCRIPTOR: google.protobuf.descriptor.Descriptor
    PIN_NUMBER_FIELD_NUMBER: builtins.int
    PIN_NAME_FIELD_NUMBER: builtins.int
    POSITION_FIELD_NUMBER: builtins.int
    ORIENTATION_FIELD_NUMBER: builtins.int
    pin_number: builtins.str
    pin_name: builtins.str
    orientation: builtins.int
    'Pin orientation enum'

    @property
    def position(self) -> common.types.base_types_pb2.Vector2:
        """World position in nm"""

    def __init__(self, *, pin_number: builtins.str=..., pin_name: builtins.str=..., position: common.types.base_types_pb2.Vector2 | None=..., orientation: builtins.int=...) -> None:
        ...

    def HasField(self, field_name: typing.Literal['position', b'position']) -> builtins.bool:
        ...

    def ClearField(self, field_name: typing.Literal['orientation', b'orientation', 'pin_name', b'pin_name', 'pin_number', b'pin_number', 'position', b'position']) -> None:
        ...
global___TransformedPinInfo = TransformedPinInfo

@typing.final
class GetAllTransformedPinPositionsResponse(google.protobuf.message.Message):
    DESCRIPTOR: google.protobuf.descriptor.Descriptor
    PINS_FIELD_NUMBER: builtins.int

    @property
    def pins(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[global___TransformedPinInfo]:
        ...

    def __init__(self, *, pins: collections.abc.Iterable[global___TransformedPinInfo] | None=...) -> None:
        ...

    def ClearField(self, field_name: typing.Literal['pins', b'pins']) -> None:
        ...
global___GetAllTransformedPinPositionsResponse = GetAllTransformedPinPositionsResponse

@typing.final
class GetNeededJunctions(google.protobuf.message.Message):
    """/ Returns positions where explicit junction dots are needed for the given items.
    / Items must already be placed on the schematic.  Analyzes each item's connection
    / points (and interior crossings for wires) using KiCad's AnalyzePoint.
    """
    DESCRIPTOR: google.protobuf.descriptor.Descriptor
    DOCUMENT_FIELD_NUMBER: builtins.int
    ITEM_IDS_FIELD_NUMBER: builtins.int

    @property
    def document(self) -> common.types.base_types_pb2.DocumentSpecifier:
        ...

    @property
    def item_ids(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[common.types.base_types_pb2.KIID]:
        ...

    def __init__(self, *, document: common.types.base_types_pb2.DocumentSpecifier | None=..., item_ids: collections.abc.Iterable[common.types.base_types_pb2.KIID] | None=...) -> None:
        ...

    def HasField(self, field_name: typing.Literal['document', b'document']) -> builtins.bool:
        ...

    def ClearField(self, field_name: typing.Literal['document', b'document', 'item_ids', b'item_ids']) -> None:
        ...
global___GetNeededJunctions = GetNeededJunctions

@typing.final
class GetNeededJunctionsResponse(google.protobuf.message.Message):
    DESCRIPTOR: google.protobuf.descriptor.Descriptor
    POSITIONS_FIELD_NUMBER: builtins.int

    @property
    def positions(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[common.types.base_types_pb2.Vector2]:
        ...

    def __init__(self, *, positions: collections.abc.Iterable[common.types.base_types_pb2.Vector2] | None=...) -> None:
        ...

    def ClearField(self, field_name: typing.Literal['positions', b'positions']) -> None:
        ...
global___GetNeededJunctionsResponse = GetNeededJunctionsResponse

@typing.final
class RunSimulation(google.protobuf.message.Message):
    """
    Simulation Commands

    / Runs SPICE simulation
    """
    DESCRIPTOR: google.protobuf.descriptor.Descriptor
    DOCUMENT_FIELD_NUMBER: builtins.int
    COMMAND_OVERRIDE_FIELD_NUMBER: builtins.int
    command_override: builtins.str
    'Override default command'

    @property
    def document(self) -> common.types.base_types_pb2.DocumentSpecifier:
        ...

    def __init__(self, *, document: common.types.base_types_pb2.DocumentSpecifier | None=..., command_override: builtins.str | None=...) -> None:
        ...

    def HasField(self, field_name: typing.Literal['_command_override', b'_command_override', 'command_override', b'command_override', 'document', b'document']) -> builtins.bool:
        ...

    def ClearField(self, field_name: typing.Literal['_command_override', b'_command_override', 'command_override', b'command_override', 'document', b'document']) -> None:
        ...

    def WhichOneof(self, oneof_group: typing.Literal['_command_override', b'_command_override']) -> typing.Literal['command_override'] | None:
        ...
global___RunSimulation = RunSimulation

@typing.final
class SimulationTrace(google.protobuf.message.Message):
    """/ Simulation trace data"""
    DESCRIPTOR: google.protobuf.descriptor.Descriptor
    NAME_FIELD_NUMBER: builtins.int
    TIME_VALUES_FIELD_NUMBER: builtins.int
    DATA_VALUES_FIELD_NUMBER: builtins.int
    name: builtins.str
    'Signal name'

    @property
    def time_values(self) -> google.protobuf.internal.containers.RepeatedScalarFieldContainer[builtins.float]:
        """Time points"""

    @property
    def data_values(self) -> google.protobuf.internal.containers.RepeatedScalarFieldContainer[builtins.float]:
        """Signal values"""

    def __init__(self, *, name: builtins.str=..., time_values: collections.abc.Iterable[builtins.float] | None=..., data_values: collections.abc.Iterable[builtins.float] | None=...) -> None:
        ...

    def ClearField(self, field_name: typing.Literal['data_values', b'data_values', 'name', b'name', 'time_values', b'time_values']) -> None:
        ...
global___SimulationTrace = SimulationTrace

@typing.final
class RunSimulationResponse(google.protobuf.message.Message):
    DESCRIPTOR: google.protobuf.descriptor.Descriptor
    SUCCESS_FIELD_NUMBER: builtins.int
    ERROR_MESSAGE_FIELD_NUMBER: builtins.int
    TRACES_FIELD_NUMBER: builtins.int
    success: builtins.bool
    error_message: builtins.str

    @property
    def traces(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[global___SimulationTrace]:
        ...

    def __init__(self, *, success: builtins.bool=..., error_message: builtins.str=..., traces: collections.abc.Iterable[global___SimulationTrace] | None=...) -> None:
        ...

    def ClearField(self, field_name: typing.Literal['error_message', b'error_message', 'success', b'success', 'traces', b'traces']) -> None:
        ...
global___RunSimulationResponse = RunSimulationResponse

@typing.final
class GetSimulationResults(google.protobuf.message.Message):
    """/ Gets results from previous simulation"""
    DESCRIPTOR: google.protobuf.descriptor.Descriptor
    DOCUMENT_FIELD_NUMBER: builtins.int

    @property
    def document(self) -> common.types.base_types_pb2.DocumentSpecifier:
        ...

    def __init__(self, *, document: common.types.base_types_pb2.DocumentSpecifier | None=...) -> None:
        ...

    def HasField(self, field_name: typing.Literal['document', b'document']) -> builtins.bool:
        ...

    def ClearField(self, field_name: typing.Literal['document', b'document']) -> None:
        ...
global___GetSimulationResults = GetSimulationResults

@typing.final
class GetSimulationResultsResponse(google.protobuf.message.Message):
    DESCRIPTOR: google.protobuf.descriptor.Descriptor
    HAS_RESULTS_FIELD_NUMBER: builtins.int
    TRACES_FIELD_NUMBER: builtins.int
    has_results: builtins.bool

    @property
    def traces(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[global___SimulationTrace]:
        ...

    def __init__(self, *, has_results: builtins.bool=..., traces: collections.abc.Iterable[global___SimulationTrace] | None=...) -> None:
        ...

    def ClearField(self, field_name: typing.Literal['has_results', b'has_results', 'traces', b'traces']) -> None:
        ...
global___GetSimulationResultsResponse = GetSimulationResultsResponse

@typing.final
class ExportNetlist(google.protobuf.message.Message):
    """/ Exports netlist"""
    DESCRIPTOR: google.protobuf.descriptor.Descriptor
    DOCUMENT_FIELD_NUMBER: builtins.int
    FORMAT_FIELD_NUMBER: builtins.int
    OUTPUT_PATH_FIELD_NUMBER: builtins.int
    format: global___NetlistFormat.ValueType
    output_path: builtins.str
    'Output file path'

    @property
    def document(self) -> common.types.base_types_pb2.DocumentSpecifier:
        ...

    def __init__(self, *, document: common.types.base_types_pb2.DocumentSpecifier | None=..., format: global___NetlistFormat.ValueType=..., output_path: builtins.str=...) -> None:
        ...

    def HasField(self, field_name: typing.Literal['document', b'document']) -> builtins.bool:
        ...

    def ClearField(self, field_name: typing.Literal['document', b'document', 'format', b'format', 'output_path', b'output_path']) -> None:
        ...
global___ExportNetlist = ExportNetlist

@typing.final
class ExportNetlistResponse(google.protobuf.message.Message):
    DESCRIPTOR: google.protobuf.descriptor.Descriptor
    SUCCESS_FIELD_NUMBER: builtins.int
    OUTPUT_PATH_FIELD_NUMBER: builtins.int
    ERROR_MESSAGE_FIELD_NUMBER: builtins.int
    success: builtins.bool
    output_path: builtins.str
    'Actual output path'
    error_message: builtins.str

    def __init__(self, *, success: builtins.bool=..., output_path: builtins.str=..., error_message: builtins.str=...) -> None:
        ...

    def ClearField(self, field_name: typing.Literal['error_message', b'error_message', 'output_path', b'output_path', 'success', b'success']) -> None:
        ...
global___ExportNetlistResponse = ExportNetlistResponse

@typing.final
class ExportBOM(google.protobuf.message.Message):
    """/ Exports BOM (Bill of Materials)"""
    DESCRIPTOR: google.protobuf.descriptor.Descriptor
    DOCUMENT_FIELD_NUMBER: builtins.int
    OUTPUT_PATH_FIELD_NUMBER: builtins.int
    FORMAT_FIELD_NUMBER: builtins.int
    FIELDS_FIELD_NUMBER: builtins.int
    GROUP_REFERENCES_FIELD_NUMBER: builtins.int
    output_path: builtins.str
    format: builtins.str
    '"csv", "xml", "json" '
    group_references: builtins.bool
    'Group identical components'

    @property
    def document(self) -> common.types.base_types_pb2.DocumentSpecifier:
        ...

    @property
    def fields(self) -> google.protobuf.internal.containers.RepeatedScalarFieldContainer[builtins.str]:
        """Fields to include"""

    def __init__(self, *, document: common.types.base_types_pb2.DocumentSpecifier | None=..., output_path: builtins.str=..., format: builtins.str=..., fields: collections.abc.Iterable[builtins.str] | None=..., group_references: builtins.bool=...) -> None:
        ...

    def HasField(self, field_name: typing.Literal['document', b'document']) -> builtins.bool:
        ...

    def ClearField(self, field_name: typing.Literal['document', b'document', 'fields', b'fields', 'format', b'format', 'group_references', b'group_references', 'output_path', b'output_path']) -> None:
        ...
global___ExportBOM = ExportBOM

@typing.final
class ExportBOMResponse(google.protobuf.message.Message):
    DESCRIPTOR: google.protobuf.descriptor.Descriptor
    SUCCESS_FIELD_NUMBER: builtins.int
    OUTPUT_PATH_FIELD_NUMBER: builtins.int
    COMPONENT_COUNT_FIELD_NUMBER: builtins.int
    ERROR_MESSAGE_FIELD_NUMBER: builtins.int
    success: builtins.bool
    output_path: builtins.str
    component_count: builtins.int
    error_message: builtins.str

    def __init__(self, *, success: builtins.bool=..., output_path: builtins.str=..., component_count: builtins.int=..., error_message: builtins.str=...) -> None:
        ...

    def ClearField(self, field_name: typing.Literal['component_count', b'component_count', 'error_message', b'error_message', 'output_path', b'output_path', 'success', b'success']) -> None:
        ...
global___ExportBOMResponse = ExportBOMResponse

@typing.final
class ExportPlot(google.protobuf.message.Message):
    """/ Exports plot (PDF, SVG, etc.)"""
    DESCRIPTOR: google.protobuf.descriptor.Descriptor
    DOCUMENT_FIELD_NUMBER: builtins.int
    FORMAT_FIELD_NUMBER: builtins.int
    OUTPUT_PATH_FIELD_NUMBER: builtins.int
    PLOT_ALL_SHEETS_FIELD_NUMBER: builtins.int
    BLACK_AND_WHITE_FIELD_NUMBER: builtins.int
    DPI_FIELD_NUMBER: builtins.int
    format: global___PlotFormat.ValueType
    output_path: builtins.str
    'Output file or directory'
    plot_all_sheets: builtins.bool
    'Plot all sheets vs current only'
    black_and_white: builtins.bool
    'Black and white mode'
    dpi: builtins.int
    'DPI for raster formats'

    @property
    def document(self) -> common.types.base_types_pb2.DocumentSpecifier:
        ...

    def __init__(self, *, document: common.types.base_types_pb2.DocumentSpecifier | None=..., format: global___PlotFormat.ValueType=..., output_path: builtins.str=..., plot_all_sheets: builtins.bool=..., black_and_white: builtins.bool=..., dpi: builtins.int | None=...) -> None:
        ...

    def HasField(self, field_name: typing.Literal['_dpi', b'_dpi', 'document', b'document', 'dpi', b'dpi']) -> builtins.bool:
        ...

    def ClearField(self, field_name: typing.Literal['_dpi', b'_dpi', 'black_and_white', b'black_and_white', 'document', b'document', 'dpi', b'dpi', 'format', b'format', 'output_path', b'output_path', 'plot_all_sheets', b'plot_all_sheets']) -> None:
        ...

    def WhichOneof(self, oneof_group: typing.Literal['_dpi', b'_dpi']) -> typing.Literal['dpi'] | None:
        ...
global___ExportPlot = ExportPlot

@typing.final
class ExportPlotResponse(google.protobuf.message.Message):
    DESCRIPTOR: google.protobuf.descriptor.Descriptor
    SUCCESS_FIELD_NUMBER: builtins.int
    OUTPUT_FILES_FIELD_NUMBER: builtins.int
    ERROR_MESSAGE_FIELD_NUMBER: builtins.int
    success: builtins.bool
    error_message: builtins.str

    @property
    def output_files(self) -> google.protobuf.internal.containers.RepeatedScalarFieldContainer[builtins.str]:
        """Generated file paths"""

    def __init__(self, *, success: builtins.bool=..., output_files: collections.abc.Iterable[builtins.str] | None=..., error_message: builtins.str=...) -> None:
        ...

    def ClearField(self, field_name: typing.Literal['error_message', b'error_message', 'output_files', b'output_files', 'success', b'success']) -> None:
        ...
global___ExportPlotResponse = ExportPlotResponse

@typing.final
class UndoRedoInfo(google.protobuf.message.Message):
    """
    Undo/Redo Commands

    / Information about an undo/redo action
    """
    DESCRIPTOR: google.protobuf.descriptor.Descriptor
    DESCRIPTION_FIELD_NUMBER: builtins.int
    ITEM_COUNT_FIELD_NUMBER: builtins.int
    description: builtins.str
    'Human-readable description'
    item_count: builtins.int
    'Number of items affected'

    def __init__(self, *, description: builtins.str=..., item_count: builtins.int=...) -> None:
        ...

    def ClearField(self, field_name: typing.Literal['description', b'description', 'item_count', b'item_count']) -> None:
        ...
global___UndoRedoInfo = UndoRedoInfo

@typing.final
class GetUndoHistory(google.protobuf.message.Message):
    """/ Gets undo/redo history"""
    DESCRIPTOR: google.protobuf.descriptor.Descriptor
    DOCUMENT_FIELD_NUMBER: builtins.int

    @property
    def document(self) -> common.types.base_types_pb2.DocumentSpecifier:
        ...

    def __init__(self, *, document: common.types.base_types_pb2.DocumentSpecifier | None=...) -> None:
        ...

    def HasField(self, field_name: typing.Literal['document', b'document']) -> builtins.bool:
        ...

    def ClearField(self, field_name: typing.Literal['document', b'document']) -> None:
        ...
global___GetUndoHistory = GetUndoHistory

@typing.final
class GetUndoHistoryResponse(google.protobuf.message.Message):
    DESCRIPTOR: google.protobuf.descriptor.Descriptor
    UNDO_STACK_FIELD_NUMBER: builtins.int
    REDO_STACK_FIELD_NUMBER: builtins.int

    @property
    def undo_stack(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[global___UndoRedoInfo]:
        """Actions that can be undone"""

    @property
    def redo_stack(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[global___UndoRedoInfo]:
        """Actions that can be redone"""

    def __init__(self, *, undo_stack: collections.abc.Iterable[global___UndoRedoInfo] | None=..., redo_stack: collections.abc.Iterable[global___UndoRedoInfo] | None=...) -> None:
        ...

    def ClearField(self, field_name: typing.Literal['redo_stack', b'redo_stack', 'undo_stack', b'undo_stack']) -> None:
        ...
global___GetUndoHistoryResponse = GetUndoHistoryResponse

@typing.final
class Undo(google.protobuf.message.Message):
    """/ Performs undo operation"""
    DESCRIPTOR: google.protobuf.descriptor.Descriptor
    DOCUMENT_FIELD_NUMBER: builtins.int
    COUNT_FIELD_NUMBER: builtins.int
    count: builtins.int
    'Number of steps to undo (default 1)'

    @property
    def document(self) -> common.types.base_types_pb2.DocumentSpecifier:
        ...

    def __init__(self, *, document: common.types.base_types_pb2.DocumentSpecifier | None=..., count: builtins.int=...) -> None:
        ...

    def HasField(self, field_name: typing.Literal['document', b'document']) -> builtins.bool:
        ...

    def ClearField(self, field_name: typing.Literal['count', b'count', 'document', b'document']) -> None:
        ...
global___Undo = Undo

@typing.final
class UndoResponse(google.protobuf.message.Message):
    DESCRIPTOR: google.protobuf.descriptor.Descriptor
    STEPS_UNDONE_FIELD_NUMBER: builtins.int
    steps_undone: builtins.int

    def __init__(self, *, steps_undone: builtins.int=...) -> None:
        ...

    def ClearField(self, field_name: typing.Literal['steps_undone', b'steps_undone']) -> None:
        ...
global___UndoResponse = UndoResponse

@typing.final
class Redo(google.protobuf.message.Message):
    """/ Performs redo operation"""
    DESCRIPTOR: google.protobuf.descriptor.Descriptor
    DOCUMENT_FIELD_NUMBER: builtins.int
    COUNT_FIELD_NUMBER: builtins.int
    count: builtins.int
    'Number of steps to redo (default 1)'

    @property
    def document(self) -> common.types.base_types_pb2.DocumentSpecifier:
        ...

    def __init__(self, *, document: common.types.base_types_pb2.DocumentSpecifier | None=..., count: builtins.int=...) -> None:
        ...

    def HasField(self, field_name: typing.Literal['document', b'document']) -> builtins.bool:
        ...

    def ClearField(self, field_name: typing.Literal['count', b'count', 'document', b'document']) -> None:
        ...
global___Redo = Redo

@typing.final
class RedoResponse(google.protobuf.message.Message):
    DESCRIPTOR: google.protobuf.descriptor.Descriptor
    STEPS_REDONE_FIELD_NUMBER: builtins.int
    steps_redone: builtins.int

    def __init__(self, *, steps_redone: builtins.int=...) -> None:
        ...

    def ClearField(self, field_name: typing.Literal['steps_redone', b'steps_redone']) -> None:
        ...
global___RedoResponse = RedoResponse

@typing.final
class ViewportSettings(google.protobuf.message.Message):
    """
    Viewport Commands

    / Viewport settings
    """
    DESCRIPTOR: google.protobuf.descriptor.Descriptor
    CENTER_FIELD_NUMBER: builtins.int
    SCALE_FIELD_NUMBER: builtins.int
    VISIBLE_AREA_FIELD_NUMBER: builtins.int
    scale: builtins.float
    'Zoom scale (pixels per IU)'

    @property
    def center(self) -> common.types.base_types_pb2.Vector2:
        """View center in nm"""

    @property
    def visible_area(self) -> common.types.base_types_pb2.Box2:
        """Currently visible area"""

    def __init__(self, *, center: common.types.base_types_pb2.Vector2 | None=..., scale: builtins.float=..., visible_area: common.types.base_types_pb2.Box2 | None=...) -> None:
        ...

    def HasField(self, field_name: typing.Literal['center', b'center', 'visible_area', b'visible_area']) -> builtins.bool:
        ...

    def ClearField(self, field_name: typing.Literal['center', b'center', 'scale', b'scale', 'visible_area', b'visible_area']) -> None:
        ...
global___ViewportSettings = ViewportSettings

@typing.final
class GetViewport(google.protobuf.message.Message):
    """/ Gets current viewport"""
    DESCRIPTOR: google.protobuf.descriptor.Descriptor
    DOCUMENT_FIELD_NUMBER: builtins.int

    @property
    def document(self) -> common.types.base_types_pb2.DocumentSpecifier:
        ...

    def __init__(self, *, document: common.types.base_types_pb2.DocumentSpecifier | None=...) -> None:
        ...

    def HasField(self, field_name: typing.Literal['document', b'document']) -> builtins.bool:
        ...

    def ClearField(self, field_name: typing.Literal['document', b'document']) -> None:
        ...
global___GetViewport = GetViewport

@typing.final
class GetViewportResponse(google.protobuf.message.Message):
    DESCRIPTOR: google.protobuf.descriptor.Descriptor
    VIEWPORT_FIELD_NUMBER: builtins.int

    @property
    def viewport(self) -> global___ViewportSettings:
        ...

    def __init__(self, *, viewport: global___ViewportSettings | None=...) -> None:
        ...

    def HasField(self, field_name: typing.Literal['viewport', b'viewport']) -> builtins.bool:
        ...

    def ClearField(self, field_name: typing.Literal['viewport', b'viewport']) -> None:
        ...
global___GetViewportResponse = GetViewportResponse

@typing.final
class SetViewport(google.protobuf.message.Message):
    """/ Sets viewport"""
    DESCRIPTOR: google.protobuf.descriptor.Descriptor
    DOCUMENT_FIELD_NUMBER: builtins.int
    CENTER_FIELD_NUMBER: builtins.int
    SCALE_FIELD_NUMBER: builtins.int
    scale: builtins.float
    'New zoom scale'

    @property
    def document(self) -> common.types.base_types_pb2.DocumentSpecifier:
        ...

    @property
    def center(self) -> common.types.base_types_pb2.Vector2:
        """New center position"""

    def __init__(self, *, document: common.types.base_types_pb2.DocumentSpecifier | None=..., center: common.types.base_types_pb2.Vector2 | None=..., scale: builtins.float | None=...) -> None:
        ...

    def HasField(self, field_name: typing.Literal['_center', b'_center', '_scale', b'_scale', 'center', b'center', 'document', b'document', 'scale', b'scale']) -> builtins.bool:
        ...

    def ClearField(self, field_name: typing.Literal['_center', b'_center', '_scale', b'_scale', 'center', b'center', 'document', b'document', 'scale', b'scale']) -> None:
        ...

    @typing.overload
    def WhichOneof(self, oneof_group: typing.Literal['_center', b'_center']) -> typing.Literal['center'] | None:
        ...

    @typing.overload
    def WhichOneof(self, oneof_group: typing.Literal['_scale', b'_scale']) -> typing.Literal['scale'] | None:
        ...
global___SetViewport = SetViewport

@typing.final
class ZoomToFit(google.protobuf.message.Message):
    """/ Zooms to fit all content"""
    DESCRIPTOR: google.protobuf.descriptor.Descriptor
    DOCUMENT_FIELD_NUMBER: builtins.int

    @property
    def document(self) -> common.types.base_types_pb2.DocumentSpecifier:
        ...

    def __init__(self, *, document: common.types.base_types_pb2.DocumentSpecifier | None=...) -> None:
        ...

    def HasField(self, field_name: typing.Literal['document', b'document']) -> builtins.bool:
        ...

    def ClearField(self, field_name: typing.Literal['document', b'document']) -> None:
        ...
global___ZoomToFit = ZoomToFit

@typing.final
class ZoomToItems(google.protobuf.message.Message):
    """/ Zooms to fit specific items"""
    DESCRIPTOR: google.protobuf.descriptor.Descriptor
    DOCUMENT_FIELD_NUMBER: builtins.int
    ITEM_IDS_FIELD_NUMBER: builtins.int
    MARGIN_RATIO_FIELD_NUMBER: builtins.int
    margin_ratio: builtins.float
    'Margin as ratio of bounds (e.g., 0.1 = 10%)'

    @property
    def document(self) -> common.types.base_types_pb2.DocumentSpecifier:
        ...

    @property
    def item_ids(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[common.types.base_types_pb2.KIID]:
        ...

    def __init__(self, *, document: common.types.base_types_pb2.DocumentSpecifier | None=..., item_ids: collections.abc.Iterable[common.types.base_types_pb2.KIID] | None=..., margin_ratio: builtins.float=...) -> None:
        ...

    def HasField(self, field_name: typing.Literal['document', b'document']) -> builtins.bool:
        ...

    def ClearField(self, field_name: typing.Literal['document', b'document', 'item_ids', b'item_ids', 'margin_ratio', b'margin_ratio']) -> None:
        ...
global___ZoomToItems = ZoomToItems

@typing.final
class HighlightNet(google.protobuf.message.Message):
    """
    Highlighting Commands

    / Highlights a net
    """
    DESCRIPTOR: google.protobuf.descriptor.Descriptor
    DOCUMENT_FIELD_NUMBER: builtins.int
    NET_NAME_FIELD_NUMBER: builtins.int
    net_name: builtins.str

    @property
    def document(self) -> common.types.base_types_pb2.DocumentSpecifier:
        ...

    def __init__(self, *, document: common.types.base_types_pb2.DocumentSpecifier | None=..., net_name: builtins.str=...) -> None:
        ...

    def HasField(self, field_name: typing.Literal['document', b'document']) -> builtins.bool:
        ...

    def ClearField(self, field_name: typing.Literal['document', b'document', 'net_name', b'net_name']) -> None:
        ...
global___HighlightNet = HighlightNet

@typing.final
class ClearHighlight(google.protobuf.message.Message):
    """/ Clears all highlighting"""
    DESCRIPTOR: google.protobuf.descriptor.Descriptor
    DOCUMENT_FIELD_NUMBER: builtins.int

    @property
    def document(self) -> common.types.base_types_pb2.DocumentSpecifier:
        ...

    def __init__(self, *, document: common.types.base_types_pb2.DocumentSpecifier | None=...) -> None:
        ...

    def HasField(self, field_name: typing.Literal['document', b'document']) -> builtins.bool:
        ...

    def ClearField(self, field_name: typing.Literal['document', b'document']) -> None:
        ...
global___ClearHighlight = ClearHighlight

@typing.final
class CrossProbeToBoard(google.protobuf.message.Message):
    """
    Cross-Probe Commands

    / Cross-probes items to the PCB editor
    """
    DESCRIPTOR: google.protobuf.descriptor.Descriptor
    DOCUMENT_FIELD_NUMBER: builtins.int
    ITEM_IDS_FIELD_NUMBER: builtins.int
    SELECT_IN_BOARD_FIELD_NUMBER: builtins.int
    CENTER_VIEW_FIELD_NUMBER: builtins.int
    select_in_board: builtins.bool
    'Select corresponding items in board'
    center_view: builtins.bool
    'Center board view on items'

    @property
    def document(self) -> common.types.base_types_pb2.DocumentSpecifier:
        ...

    @property
    def item_ids(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[common.types.base_types_pb2.KIID]:
        """Items to cross-probe"""

    def __init__(self, *, document: common.types.base_types_pb2.DocumentSpecifier | None=..., item_ids: collections.abc.Iterable[common.types.base_types_pb2.KIID] | None=..., select_in_board: builtins.bool=..., center_view: builtins.bool=...) -> None:
        ...

    def HasField(self, field_name: typing.Literal['document', b'document']) -> builtins.bool:
        ...

    def ClearField(self, field_name: typing.Literal['center_view', b'center_view', 'document', b'document', 'item_ids', b'item_ids', 'select_in_board', b'select_in_board']) -> None:
        ...
global___CrossProbeToBoard = CrossProbeToBoard

@typing.final
class CrossProbeResponse(google.protobuf.message.Message):
    DESCRIPTOR: google.protobuf.descriptor.Descriptor
    BOARD_FOUND_FIELD_NUMBER: builtins.int
    ITEMS_FOUND_FIELD_NUMBER: builtins.int
    board_found: builtins.bool
    'True if board editor is open'
    items_found: builtins.int
    'Number of items found in board'

    def __init__(self, *, board_found: builtins.bool=..., items_found: builtins.int=...) -> None:
        ...

    def ClearField(self, field_name: typing.Literal['board_found', b'board_found', 'items_found', b'items_found']) -> None:
        ...
global___CrossProbeResponse = CrossProbeResponse

@typing.final
class CrossProbeFromBoard(google.protobuf.message.Message):
    """/ Cross-probes from the PCB editor to the schematic"""
    DESCRIPTOR: google.protobuf.descriptor.Descriptor
    DOCUMENT_FIELD_NUMBER: builtins.int
    REFERENCES_FIELD_NUMBER: builtins.int
    NET_NAMES_FIELD_NUMBER: builtins.int
    SELECT_ITEMS_FIELD_NUMBER: builtins.int
    HIGHLIGHT_NETS_FIELD_NUMBER: builtins.int
    CENTER_VIEW_FIELD_NUMBER: builtins.int
    CLEAR_EXISTING_SELECTION_FIELD_NUMBER: builtins.int
    select_items: builtins.bool
    'Actions to perform\n    Select corresponding symbols\n    '
    highlight_nets: builtins.bool
    'Highlight the specified nets'
    center_view: builtins.bool
    'Center schematic view on found items'
    clear_existing_selection: builtins.bool
    'Clear existing selection first'

    @property
    def document(self) -> common.types.base_types_pb2.DocumentSpecifier:
        ...

    @property
    def references(self) -> google.protobuf.internal.containers.RepeatedScalarFieldContainer[builtins.str]:
        """Reference designators to find (e.g., "R1", "U1")"""

    @property
    def net_names(self) -> google.protobuf.internal.containers.RepeatedScalarFieldContainer[builtins.str]:
        """Net names to find/highlight"""

    def __init__(self, *, document: common.types.base_types_pb2.DocumentSpecifier | None=..., references: collections.abc.Iterable[builtins.str] | None=..., net_names: collections.abc.Iterable[builtins.str] | None=..., select_items: builtins.bool=..., highlight_nets: builtins.bool=..., center_view: builtins.bool=..., clear_existing_selection: builtins.bool=...) -> None:
        ...

    def HasField(self, field_name: typing.Literal['document', b'document']) -> builtins.bool:
        ...

    def ClearField(self, field_name: typing.Literal['center_view', b'center_view', 'clear_existing_selection', b'clear_existing_selection', 'document', b'document', 'highlight_nets', b'highlight_nets', 'net_names', b'net_names', 'references', b'references', 'select_items', b'select_items']) -> None:
        ...
global___CrossProbeFromBoard = CrossProbeFromBoard

@typing.final
class CrossProbeFromBoardResponse(google.protobuf.message.Message):
    DESCRIPTOR: google.protobuf.descriptor.Descriptor
    SYMBOLS_FOUND_FIELD_NUMBER: builtins.int
    NETS_FOUND_FIELD_NUMBER: builtins.int
    FOUND_SYMBOL_IDS_FIELD_NUMBER: builtins.int
    symbols_found: builtins.int
    'Number of symbols found by reference'
    nets_found: builtins.int
    'Number of nets found'

    @property
    def found_symbol_ids(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[common.types.base_types_pb2.KIID]:
        """IDs of found symbols"""

    def __init__(self, *, symbols_found: builtins.int=..., nets_found: builtins.int=..., found_symbol_ids: collections.abc.Iterable[common.types.base_types_pb2.KIID] | None=...) -> None:
        ...

    def ClearField(self, field_name: typing.Literal['found_symbol_ids', b'found_symbol_ids', 'nets_found', b'nets_found', 'symbols_found', b'symbols_found']) -> None:
        ...
global___CrossProbeFromBoardResponse = CrossProbeFromBoardResponse

@typing.final
class PinMatrixEntry(google.protobuf.message.Message):
    """/ A single entry in the ERC pin type matrix"""
    DESCRIPTOR: google.protobuf.descriptor.Descriptor
    FIRST_PIN_TYPE_FIELD_NUMBER: builtins.int
    SECOND_PIN_TYPE_FIELD_NUMBER: builtins.int
    ERROR_TYPE_FIELD_NUMBER: builtins.int
    first_pin_type: global___ElectricalPinType.ValueType
    second_pin_type: global___ElectricalPinType.ValueType
    error_type: global___PinErrorType.ValueType

    def __init__(self, *, first_pin_type: global___ElectricalPinType.ValueType=..., second_pin_type: global___ElectricalPinType.ValueType=..., error_type: global___PinErrorType.ValueType=...) -> None:
        ...

    def ClearField(self, field_name: typing.Literal['error_type', b'error_type', 'first_pin_type', b'first_pin_type', 'second_pin_type', b'second_pin_type']) -> None:
        ...
global___PinMatrixEntry = PinMatrixEntry

@typing.final
class PinTypeMatrix(google.protobuf.message.Message):
    """/ The full ERC pin type matrix"""
    DESCRIPTOR: google.protobuf.descriptor.Descriptor
    ENTRIES_FIELD_NUMBER: builtins.int

    @property
    def entries(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[global___PinMatrixEntry]:
        ...

    def __init__(self, *, entries: collections.abc.Iterable[global___PinMatrixEntry] | None=...) -> None:
        ...

    def ClearField(self, field_name: typing.Literal['entries', b'entries']) -> None:
        ...
global___PinTypeMatrix = PinTypeMatrix

@typing.final
class GetPinTypeMatrix(google.protobuf.message.Message):
    """/ Gets the ERC pin type matrix"""
    DESCRIPTOR: google.protobuf.descriptor.Descriptor
    DOCUMENT_FIELD_NUMBER: builtins.int

    @property
    def document(self) -> common.types.base_types_pb2.DocumentSpecifier:
        ...

    def __init__(self, *, document: common.types.base_types_pb2.DocumentSpecifier | None=...) -> None:
        ...

    def HasField(self, field_name: typing.Literal['document', b'document']) -> builtins.bool:
        ...

    def ClearField(self, field_name: typing.Literal['document', b'document']) -> None:
        ...
global___GetPinTypeMatrix = GetPinTypeMatrix

@typing.final
class GetPinTypeMatrixResponse(google.protobuf.message.Message):
    DESCRIPTOR: google.protobuf.descriptor.Descriptor
    MATRIX_FIELD_NUMBER: builtins.int

    @property
    def matrix(self) -> global___PinTypeMatrix:
        ...

    def __init__(self, *, matrix: global___PinTypeMatrix | None=...) -> None:
        ...

    def HasField(self, field_name: typing.Literal['matrix', b'matrix']) -> builtins.bool:
        ...

    def ClearField(self, field_name: typing.Literal['matrix', b'matrix']) -> None:
        ...
global___GetPinTypeMatrixResponse = GetPinTypeMatrixResponse

@typing.final
class SetPinTypeMatrix(google.protobuf.message.Message):
    """/ Sets entries in the ERC pin type matrix"""
    DESCRIPTOR: google.protobuf.descriptor.Descriptor
    DOCUMENT_FIELD_NUMBER: builtins.int
    ENTRIES_FIELD_NUMBER: builtins.int
    RESET_TO_DEFAULTS_FIELD_NUMBER: builtins.int
    reset_to_defaults: builtins.bool
    'If true, reset matrix to defaults before applying entries'

    @property
    def document(self) -> common.types.base_types_pb2.DocumentSpecifier:
        ...

    @property
    def entries(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[global___PinMatrixEntry]:
        """Entries to set"""

    def __init__(self, *, document: common.types.base_types_pb2.DocumentSpecifier | None=..., entries: collections.abc.Iterable[global___PinMatrixEntry] | None=..., reset_to_defaults: builtins.bool=...) -> None:
        ...

    def HasField(self, field_name: typing.Literal['document', b'document']) -> builtins.bool:
        ...

    def ClearField(self, field_name: typing.Literal['document', b'document', 'entries', b'entries', 'reset_to_defaults', b'reset_to_defaults']) -> None:
        ...
global___SetPinTypeMatrix = SetPinTypeMatrix

@typing.final
class DesignBlockInfo(google.protobuf.message.Message):
    """
    Design Block Commands

    / Information about a design block
    """
    DESCRIPTOR: google.protobuf.descriptor.Descriptor
    LIB_ID_FIELD_NUMBER: builtins.int
    NAME_FIELD_NUMBER: builtins.int
    DESCRIPTION_FIELD_NUMBER: builtins.int
    KEYWORDS_FIELD_NUMBER: builtins.int
    LIBRARY_NICKNAME_FIELD_NUMBER: builtins.int
    lib_id: builtins.str
    '"Library:BlockName" format'
    name: builtins.str
    'Design block name'
    description: builtins.str
    'Design block description'
    keywords: builtins.str
    'Space-separated keywords'
    library_nickname: builtins.str
    'Library nickname'

    def __init__(self, *, lib_id: builtins.str=..., name: builtins.str=..., description: builtins.str=..., keywords: builtins.str=..., library_nickname: builtins.str=...) -> None:
        ...

    def ClearField(self, field_name: typing.Literal['description', b'description', 'keywords', b'keywords', 'lib_id', b'lib_id', 'library_nickname', b'library_nickname', 'name', b'name']) -> None:
        ...
global___DesignBlockInfo = DesignBlockInfo

@typing.final
class GetDesignBlocks(google.protobuf.message.Message):
    """/ Gets available design blocks"""
    DESCRIPTOR: google.protobuf.descriptor.Descriptor
    LIBRARY_NICKNAME_FIELD_NUMBER: builtins.int
    library_nickname: builtins.str
    'Library to search (empty = all libraries)'

    def __init__(self, *, library_nickname: builtins.str=...) -> None:
        ...

    def ClearField(self, field_name: typing.Literal['library_nickname', b'library_nickname']) -> None:
        ...
global___GetDesignBlocks = GetDesignBlocks

@typing.final
class GetDesignBlocksResponse(google.protobuf.message.Message):
    DESCRIPTOR: google.protobuf.descriptor.Descriptor
    DESIGN_BLOCKS_FIELD_NUMBER: builtins.int

    @property
    def design_blocks(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[global___DesignBlockInfo]:
        ...

    def __init__(self, *, design_blocks: collections.abc.Iterable[global___DesignBlockInfo] | None=...) -> None:
        ...

    def ClearField(self, field_name: typing.Literal['design_blocks', b'design_blocks']) -> None:
        ...
global___GetDesignBlocksResponse = GetDesignBlocksResponse

@typing.final
class SearchDesignBlocks(google.protobuf.message.Message):
    """/ Searches for design blocks"""
    DESCRIPTOR: google.protobuf.descriptor.Descriptor
    QUERY_FIELD_NUMBER: builtins.int
    LIBRARIES_FIELD_NUMBER: builtins.int
    MAX_RESULTS_FIELD_NUMBER: builtins.int
    query: builtins.str
    'Search query (matches name, description, keywords)'
    max_results: builtins.int
    'Maximum results (0 = no limit)'

    @property
    def libraries(self) -> google.protobuf.internal.containers.RepeatedScalarFieldContainer[builtins.str]:
        """Libraries to search (empty = all)"""

    def __init__(self, *, query: builtins.str=..., libraries: collections.abc.Iterable[builtins.str] | None=..., max_results: builtins.int=...) -> None:
        ...

    def ClearField(self, field_name: typing.Literal['libraries', b'libraries', 'max_results', b'max_results', 'query', b'query']) -> None:
        ...
global___SearchDesignBlocks = SearchDesignBlocks

@typing.final
class SearchDesignBlocksResponse(google.protobuf.message.Message):
    DESCRIPTOR: google.protobuf.descriptor.Descriptor
    DESIGN_BLOCKS_FIELD_NUMBER: builtins.int

    @property
    def design_blocks(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[global___DesignBlockInfo]:
        ...

    def __init__(self, *, design_blocks: collections.abc.Iterable[global___DesignBlockInfo] | None=...) -> None:
        ...

    def ClearField(self, field_name: typing.Literal['design_blocks', b'design_blocks']) -> None:
        ...
global___SearchDesignBlocksResponse = SearchDesignBlocksResponse

@typing.final
class SaveSelectionAsDesignBlock(google.protobuf.message.Message):
    """/ Saves the current selection as a design block"""
    DESCRIPTOR: google.protobuf.descriptor.Descriptor
    DOCUMENT_FIELD_NUMBER: builtins.int
    LIBRARY_NICKNAME_FIELD_NUMBER: builtins.int
    NAME_FIELD_NUMBER: builtins.int
    DESCRIPTION_FIELD_NUMBER: builtins.int
    KEYWORDS_FIELD_NUMBER: builtins.int
    library_nickname: builtins.str
    'Target library'
    name: builtins.str
    'Design block name'
    description: builtins.str
    'Optional description'
    keywords: builtins.str
    'Optional keywords'

    @property
    def document(self) -> common.types.base_types_pb2.DocumentSpecifier:
        ...

    def __init__(self, *, document: common.types.base_types_pb2.DocumentSpecifier | None=..., library_nickname: builtins.str=..., name: builtins.str=..., description: builtins.str=..., keywords: builtins.str=...) -> None:
        ...

    def HasField(self, field_name: typing.Literal['document', b'document']) -> builtins.bool:
        ...

    def ClearField(self, field_name: typing.Literal['description', b'description', 'document', b'document', 'keywords', b'keywords', 'library_nickname', b'library_nickname', 'name', b'name']) -> None:
        ...
global___SaveSelectionAsDesignBlock = SaveSelectionAsDesignBlock

@typing.final
class SaveDesignBlockResponse(google.protobuf.message.Message):
    DESCRIPTOR: google.protobuf.descriptor.Descriptor
    SUCCESS_FIELD_NUMBER: builtins.int
    LIB_ID_FIELD_NUMBER: builtins.int
    ERROR_MESSAGE_FIELD_NUMBER: builtins.int
    success: builtins.bool
    lib_id: builtins.str
    'The created design block ID'
    error_message: builtins.str

    def __init__(self, *, success: builtins.bool=..., lib_id: builtins.str=..., error_message: builtins.str=...) -> None:
        ...

    def ClearField(self, field_name: typing.Literal['error_message', b'error_message', 'lib_id', b'lib_id', 'success', b'success']) -> None:
        ...
global___SaveDesignBlockResponse = SaveDesignBlockResponse

@typing.final
class SaveSheetAsDesignBlock(google.protobuf.message.Message):
    """/ Saves the current sheet as a design block"""
    DESCRIPTOR: google.protobuf.descriptor.Descriptor
    DOCUMENT_FIELD_NUMBER: builtins.int
    LIBRARY_NICKNAME_FIELD_NUMBER: builtins.int
    NAME_FIELD_NUMBER: builtins.int
    DESCRIPTION_FIELD_NUMBER: builtins.int
    KEYWORDS_FIELD_NUMBER: builtins.int
    library_nickname: builtins.str
    name: builtins.str
    description: builtins.str
    keywords: builtins.str

    @property
    def document(self) -> common.types.base_types_pb2.DocumentSpecifier:
        ...

    def __init__(self, *, document: common.types.base_types_pb2.DocumentSpecifier | None=..., library_nickname: builtins.str=..., name: builtins.str=..., description: builtins.str=..., keywords: builtins.str=...) -> None:
        ...

    def HasField(self, field_name: typing.Literal['document', b'document']) -> builtins.bool:
        ...

    def ClearField(self, field_name: typing.Literal['description', b'description', 'document', b'document', 'keywords', b'keywords', 'library_nickname', b'library_nickname', 'name', b'name']) -> None:
        ...
global___SaveSheetAsDesignBlock = SaveSheetAsDesignBlock

@typing.final
class DeleteDesignBlock(google.protobuf.message.Message):
    """/ Deletes a design block"""
    DESCRIPTOR: google.protobuf.descriptor.Descriptor
    LIB_ID_FIELD_NUMBER: builtins.int
    lib_id: builtins.str
    '"Library:BlockName" to delete'

    def __init__(self, *, lib_id: builtins.str=...) -> None:
        ...

    def ClearField(self, field_name: typing.Literal['lib_id', b'lib_id']) -> None:
        ...
global___DeleteDesignBlock = DeleteDesignBlock

@typing.final
class DeleteDesignBlockResponse(google.protobuf.message.Message):
    DESCRIPTOR: google.protobuf.descriptor.Descriptor
    SUCCESS_FIELD_NUMBER: builtins.int
    ERROR_MESSAGE_FIELD_NUMBER: builtins.int
    success: builtins.bool
    error_message: builtins.str

    def __init__(self, *, success: builtins.bool=..., error_message: builtins.str=...) -> None:
        ...

    def ClearField(self, field_name: typing.Literal['error_message', b'error_message', 'success', b'success']) -> None:
        ...
global___DeleteDesignBlockResponse = DeleteDesignBlockResponse

@typing.final
class PlaceDesignBlock(google.protobuf.message.Message):
    """/ Places a design block into the schematic"""
    DESCRIPTOR: google.protobuf.descriptor.Descriptor
    DOCUMENT_FIELD_NUMBER: builtins.int
    LIB_ID_FIELD_NUMBER: builtins.int
    POSITION_FIELD_NUMBER: builtins.int
    lib_id: builtins.str
    '"Library:BlockName" to place'

    @property
    def document(self) -> common.types.base_types_pb2.DocumentSpecifier:
        ...

    @property
    def position(self) -> common.types.base_types_pb2.Vector2:
        ...

    def __init__(self, *, document: common.types.base_types_pb2.DocumentSpecifier | None=..., lib_id: builtins.str=..., position: common.types.base_types_pb2.Vector2 | None=...) -> None:
        ...

    def HasField(self, field_name: typing.Literal['document', b'document', 'position', b'position']) -> builtins.bool:
        ...

    def ClearField(self, field_name: typing.Literal['document', b'document', 'lib_id', b'lib_id', 'position', b'position']) -> None:
        ...
global___PlaceDesignBlock = PlaceDesignBlock

@typing.final
class PlaceDesignBlockResponse(google.protobuf.message.Message):
    DESCRIPTOR: google.protobuf.descriptor.Descriptor
    SUCCESS_FIELD_NUMBER: builtins.int
    CREATED_ITEM_IDS_FIELD_NUMBER: builtins.int
    ERROR_MESSAGE_FIELD_NUMBER: builtins.int
    success: builtins.bool
    error_message: builtins.str

    @property
    def created_item_ids(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[common.types.base_types_pb2.KIID]:
        """IDs of created items"""

    def __init__(self, *, success: builtins.bool=..., created_item_ids: collections.abc.Iterable[common.types.base_types_pb2.KIID] | None=..., error_message: builtins.str=...) -> None:
        ...

    def ClearField(self, field_name: typing.Literal['created_item_ids', b'created_item_ids', 'error_message', b'error_message', 'success', b'success']) -> None:
        ...
global___PlaceDesignBlockResponse = PlaceDesignBlockResponse

@typing.final
class NetClassData(google.protobuf.message.Message):
    """/ A netclass definition for schematic use"""
    DESCRIPTOR: google.protobuf.descriptor.Descriptor
    NAME_FIELD_NUMBER: builtins.int
    DESCRIPTION_FIELD_NUMBER: builtins.int
    WIRE_WIDTH_MILS_FIELD_NUMBER: builtins.int
    BUS_WIDTH_MILS_FIELD_NUMBER: builtins.int
    COLOR_FIELD_NUMBER: builtins.int
    LINE_STYLE_FIELD_NUMBER: builtins.int
    PRIORITY_FIELD_NUMBER: builtins.int
    name: builtins.str
    'Netclass name (required)'
    description: builtins.str
    'Optional description'
    wire_width_mils: builtins.int
    'Wire thickness in mils'
    bus_width_mils: builtins.int
    'Bus thickness in mils'
    color: builtins.str
    'Color in hex format (#RRGGBB) or "transparent" '
    line_style: global___SchematicLineStyle.ValueType
    'Line style'
    priority: builtins.int
    'Priority for multi-netclass resolution'

    def __init__(self, *, name: builtins.str=..., description: builtins.str | None=..., wire_width_mils: builtins.int | None=..., bus_width_mils: builtins.int | None=..., color: builtins.str | None=..., line_style: global___SchematicLineStyle.ValueType | None=..., priority: builtins.int | None=...) -> None:
        ...

    def HasField(self, field_name: typing.Literal['_bus_width_mils', b'_bus_width_mils', '_color', b'_color', '_description', b'_description', '_line_style', b'_line_style', '_priority', b'_priority', '_wire_width_mils', b'_wire_width_mils', 'bus_width_mils', b'bus_width_mils', 'color', b'color', 'description', b'description', 'line_style', b'line_style', 'priority', b'priority', 'wire_width_mils', b'wire_width_mils']) -> builtins.bool:
        ...

    def ClearField(self, field_name: typing.Literal['_bus_width_mils', b'_bus_width_mils', '_color', b'_color', '_description', b'_description', '_line_style', b'_line_style', '_priority', b'_priority', '_wire_width_mils', b'_wire_width_mils', 'bus_width_mils', b'bus_width_mils', 'color', b'color', 'description', b'description', 'line_style', b'line_style', 'name', b'name', 'priority', b'priority', 'wire_width_mils', b'wire_width_mils']) -> None:
        ...

    @typing.overload
    def WhichOneof(self, oneof_group: typing.Literal['_bus_width_mils', b'_bus_width_mils']) -> typing.Literal['bus_width_mils'] | None:
        ...

    @typing.overload
    def WhichOneof(self, oneof_group: typing.Literal['_color', b'_color']) -> typing.Literal['color'] | None:
        ...

    @typing.overload
    def WhichOneof(self, oneof_group: typing.Literal['_description', b'_description']) -> typing.Literal['description'] | None:
        ...

    @typing.overload
    def WhichOneof(self, oneof_group: typing.Literal['_line_style', b'_line_style']) -> typing.Literal['line_style'] | None:
        ...

    @typing.overload
    def WhichOneof(self, oneof_group: typing.Literal['_priority', b'_priority']) -> typing.Literal['priority'] | None:
        ...

    @typing.overload
    def WhichOneof(self, oneof_group: typing.Literal['_wire_width_mils', b'_wire_width_mils']) -> typing.Literal['wire_width_mils'] | None:
        ...
global___NetClassData = NetClassData

@typing.final
class GetNetClasses(google.protobuf.message.Message):
    """/ Gets all netclasses"""
    DESCRIPTOR: google.protobuf.descriptor.Descriptor
    DOCUMENT_FIELD_NUMBER: builtins.int

    @property
    def document(self) -> common.types.base_types_pb2.DocumentSpecifier:
        ...

    def __init__(self, *, document: common.types.base_types_pb2.DocumentSpecifier | None=...) -> None:
        ...

    def HasField(self, field_name: typing.Literal['document', b'document']) -> builtins.bool:
        ...

    def ClearField(self, field_name: typing.Literal['document', b'document']) -> None:
        ...
global___GetNetClasses = GetNetClasses

@typing.final
class GetNetClassesResponse(google.protobuf.message.Message):
    DESCRIPTOR: google.protobuf.descriptor.Descriptor
    DEFAULT_NETCLASS_FIELD_NUMBER: builtins.int
    NETCLASSES_FIELD_NUMBER: builtins.int

    @property
    def default_netclass(self) -> global___NetClassData:
        """The default netclass (always exists)"""

    @property
    def netclasses(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[global___NetClassData]:
        """User-defined netclasses"""

    def __init__(self, *, default_netclass: global___NetClassData | None=..., netclasses: collections.abc.Iterable[global___NetClassData] | None=...) -> None:
        ...

    def HasField(self, field_name: typing.Literal['default_netclass', b'default_netclass']) -> builtins.bool:
        ...

    def ClearField(self, field_name: typing.Literal['default_netclass', b'default_netclass', 'netclasses', b'netclasses']) -> None:
        ...
global___GetNetClassesResponse = GetNetClassesResponse

@typing.final
class SetNetClass(google.protobuf.message.Message):
    """/ Creates or updates a netclass"""
    DESCRIPTOR: google.protobuf.descriptor.Descriptor
    DOCUMENT_FIELD_NUMBER: builtins.int
    NETCLASS_FIELD_NUMBER: builtins.int

    @property
    def document(self) -> common.types.base_types_pb2.DocumentSpecifier:
        ...

    @property
    def netclass(self) -> global___NetClassData:
        """Netclass data (name is used as key)"""

    def __init__(self, *, document: common.types.base_types_pb2.DocumentSpecifier | None=..., netclass: global___NetClassData | None=...) -> None:
        ...

    def HasField(self, field_name: typing.Literal['document', b'document', 'netclass', b'netclass']) -> builtins.bool:
        ...

    def ClearField(self, field_name: typing.Literal['document', b'document', 'netclass', b'netclass']) -> None:
        ...
global___SetNetClass = SetNetClass

@typing.final
class DeleteNetClass(google.protobuf.message.Message):
    """/ Deletes a netclass"""
    DESCRIPTOR: google.protobuf.descriptor.Descriptor
    DOCUMENT_FIELD_NUMBER: builtins.int
    NAME_FIELD_NUMBER: builtins.int
    name: builtins.str
    'Netclass name to delete (cannot delete "Default")'

    @property
    def document(self) -> common.types.base_types_pb2.DocumentSpecifier:
        ...

    def __init__(self, *, document: common.types.base_types_pb2.DocumentSpecifier | None=..., name: builtins.str=...) -> None:
        ...

    def HasField(self, field_name: typing.Literal['document', b'document']) -> builtins.bool:
        ...

    def ClearField(self, field_name: typing.Literal['document', b'document', 'name', b'name']) -> None:
        ...
global___DeleteNetClass = DeleteNetClass

@typing.final
class NetClassAssignment(google.protobuf.message.Message):
    """/ A netclass pattern assignment (pattern -> netclass)"""
    DESCRIPTOR: google.protobuf.descriptor.Descriptor
    PATTERN_FIELD_NUMBER: builtins.int
    NETCLASS_FIELD_NUMBER: builtins.int
    pattern: builtins.str
    'Wildcard pattern to match net names'
    netclass: builtins.str
    'Netclass to assign'

    def __init__(self, *, pattern: builtins.str=..., netclass: builtins.str=...) -> None:
        ...

    def ClearField(self, field_name: typing.Literal['netclass', b'netclass', 'pattern', b'pattern']) -> None:
        ...
global___NetClassAssignment = NetClassAssignment

@typing.final
class GetNetClassAssignments(google.protobuf.message.Message):
    """/ Gets all netclass pattern assignments"""
    DESCRIPTOR: google.protobuf.descriptor.Descriptor
    DOCUMENT_FIELD_NUMBER: builtins.int

    @property
    def document(self) -> common.types.base_types_pb2.DocumentSpecifier:
        ...

    def __init__(self, *, document: common.types.base_types_pb2.DocumentSpecifier | None=...) -> None:
        ...

    def HasField(self, field_name: typing.Literal['document', b'document']) -> builtins.bool:
        ...

    def ClearField(self, field_name: typing.Literal['document', b'document']) -> None:
        ...
global___GetNetClassAssignments = GetNetClassAssignments

@typing.final
class GetNetClassAssignmentsResponse(google.protobuf.message.Message):
    DESCRIPTOR: google.protobuf.descriptor.Descriptor
    ASSIGNMENTS_FIELD_NUMBER: builtins.int

    @property
    def assignments(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[global___NetClassAssignment]:
        ...

    def __init__(self, *, assignments: collections.abc.Iterable[global___NetClassAssignment] | None=...) -> None:
        ...

    def ClearField(self, field_name: typing.Literal['assignments', b'assignments']) -> None:
        ...
global___GetNetClassAssignmentsResponse = GetNetClassAssignmentsResponse

@typing.final
class SetNetClassAssignments(google.protobuf.message.Message):
    """/ Sets all netclass pattern assignments (replaces existing)"""
    DESCRIPTOR: google.protobuf.descriptor.Descriptor
    DOCUMENT_FIELD_NUMBER: builtins.int
    ASSIGNMENTS_FIELD_NUMBER: builtins.int

    @property
    def document(self) -> common.types.base_types_pb2.DocumentSpecifier:
        ...

    @property
    def assignments(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[global___NetClassAssignment]:
        ...

    def __init__(self, *, document: common.types.base_types_pb2.DocumentSpecifier | None=..., assignments: collections.abc.Iterable[global___NetClassAssignment] | None=...) -> None:
        ...

    def HasField(self, field_name: typing.Literal['document', b'document']) -> builtins.bool:
        ...

    def ClearField(self, field_name: typing.Literal['assignments', b'assignments', 'document', b'document']) -> None:
        ...
global___SetNetClassAssignments = SetNetClassAssignments

@typing.final
class AddNetClassAssignment(google.protobuf.message.Message):
    """/ Adds a single netclass pattern assignment"""
    DESCRIPTOR: google.protobuf.descriptor.Descriptor
    DOCUMENT_FIELD_NUMBER: builtins.int
    ASSIGNMENT_FIELD_NUMBER: builtins.int

    @property
    def document(self) -> common.types.base_types_pb2.DocumentSpecifier:
        ...

    @property
    def assignment(self) -> global___NetClassAssignment:
        ...

    def __init__(self, *, document: common.types.base_types_pb2.DocumentSpecifier | None=..., assignment: global___NetClassAssignment | None=...) -> None:
        ...

    def HasField(self, field_name: typing.Literal['assignment', b'assignment', 'document', b'document']) -> builtins.bool:
        ...

    def ClearField(self, field_name: typing.Literal['assignment', b'assignment', 'document', b'document']) -> None:
        ...
global___AddNetClassAssignment = AddNetClassAssignment

@typing.final
class RemoveNetClassAssignment(google.protobuf.message.Message):
    """/ Removes a netclass pattern assignment by pattern"""
    DESCRIPTOR: google.protobuf.descriptor.Descriptor
    DOCUMENT_FIELD_NUMBER: builtins.int
    PATTERN_FIELD_NUMBER: builtins.int
    pattern: builtins.str
    'Pattern to remove'

    @property
    def document(self) -> common.types.base_types_pb2.DocumentSpecifier:
        ...

    def __init__(self, *, document: common.types.base_types_pb2.DocumentSpecifier | None=..., pattern: builtins.str=...) -> None:
        ...

    def HasField(self, field_name: typing.Literal['document', b'document']) -> builtins.bool:
        ...

    def ClearField(self, field_name: typing.Literal['document', b'document', 'pattern', b'pattern']) -> None:
        ...
global___RemoveNetClassAssignment = RemoveNetClassAssignment

@typing.final
class BusAliasData(google.protobuf.message.Message):
    """
    Bus Alias Commands

    / Bus alias definition - maps an alias name to a list of member signals
    """
    DESCRIPTOR: google.protobuf.descriptor.Descriptor
    NAME_FIELD_NUMBER: builtins.int
    MEMBERS_FIELD_NUMBER: builtins.int
    name: builtins.str
    'Alias name (e.g., "DATA_BUS")'

    @property
    def members(self) -> google.protobuf.internal.containers.RepeatedScalarFieldContainer[builtins.str]:
        """Member signal names (e.g., ["D0", "D1", "D2", ...])"""

    def __init__(self, *, name: builtins.str=..., members: collections.abc.Iterable[builtins.str] | None=...) -> None:
        ...

    def ClearField(self, field_name: typing.Literal['members', b'members', 'name', b'name']) -> None:
        ...
global___BusAliasData = BusAliasData

@typing.final
class GetBusAliases(google.protobuf.message.Message):
    """/ Gets all bus aliases defined in the project"""
    DESCRIPTOR: google.protobuf.descriptor.Descriptor
    DOCUMENT_FIELD_NUMBER: builtins.int

    @property
    def document(self) -> common.types.base_types_pb2.DocumentSpecifier:
        ...

    def __init__(self, *, document: common.types.base_types_pb2.DocumentSpecifier | None=...) -> None:
        ...

    def HasField(self, field_name: typing.Literal['document', b'document']) -> builtins.bool:
        ...

    def ClearField(self, field_name: typing.Literal['document', b'document']) -> None:
        ...
global___GetBusAliases = GetBusAliases

@typing.final
class GetBusAliasesResponse(google.protobuf.message.Message):
    DESCRIPTOR: google.protobuf.descriptor.Descriptor
    ALIASES_FIELD_NUMBER: builtins.int

    @property
    def aliases(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[global___BusAliasData]:
        ...

    def __init__(self, *, aliases: collections.abc.Iterable[global___BusAliasData] | None=...) -> None:
        ...

    def ClearField(self, field_name: typing.Literal['aliases', b'aliases']) -> None:
        ...
global___GetBusAliasesResponse = GetBusAliasesResponse

@typing.final
class SetBusAlias(google.protobuf.message.Message):
    """/ Creates or updates a bus alias"""
    DESCRIPTOR: google.protobuf.descriptor.Descriptor
    DOCUMENT_FIELD_NUMBER: builtins.int
    ALIAS_FIELD_NUMBER: builtins.int

    @property
    def document(self) -> common.types.base_types_pb2.DocumentSpecifier:
        ...

    @property
    def alias(self) -> global___BusAliasData:
        ...

    def __init__(self, *, document: common.types.base_types_pb2.DocumentSpecifier | None=..., alias: global___BusAliasData | None=...) -> None:
        ...

    def HasField(self, field_name: typing.Literal['alias', b'alias', 'document', b'document']) -> builtins.bool:
        ...

    def ClearField(self, field_name: typing.Literal['alias', b'alias', 'document', b'document']) -> None:
        ...
global___SetBusAlias = SetBusAlias

@typing.final
class DeleteBusAlias(google.protobuf.message.Message):
    """/ Deletes a bus alias by name"""
    DESCRIPTOR: google.protobuf.descriptor.Descriptor
    DOCUMENT_FIELD_NUMBER: builtins.int
    NAME_FIELD_NUMBER: builtins.int
    name: builtins.str

    @property
    def document(self) -> common.types.base_types_pb2.DocumentSpecifier:
        ...

    def __init__(self, *, document: common.types.base_types_pb2.DocumentSpecifier | None=..., name: builtins.str=...) -> None:
        ...

    def HasField(self, field_name: typing.Literal['document', b'document']) -> builtins.bool:
        ...

    def ClearField(self, field_name: typing.Literal['document', b'document', 'name', b'name']) -> None:
        ...
global___DeleteBusAlias = DeleteBusAlias

@typing.final
class SetBusAliases(google.protobuf.message.Message):
    """/ Replaces all bus aliases at once"""
    DESCRIPTOR: google.protobuf.descriptor.Descriptor
    DOCUMENT_FIELD_NUMBER: builtins.int
    ALIASES_FIELD_NUMBER: builtins.int

    @property
    def document(self) -> common.types.base_types_pb2.DocumentSpecifier:
        ...

    @property
    def aliases(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[global___BusAliasData]:
        ...

    def __init__(self, *, document: common.types.base_types_pb2.DocumentSpecifier | None=..., aliases: collections.abc.Iterable[global___BusAliasData] | None=...) -> None:
        ...

    def HasField(self, field_name: typing.Literal['document', b'document']) -> builtins.bool:
        ...

    def ClearField(self, field_name: typing.Literal['aliases', b'aliases', 'document', b'document']) -> None:
        ...
global___SetBusAliases = SetBusAliases