import * as react_jsx_runtime from 'react/jsx-runtime'; import { LayerRef, AnyCircuitElement } from 'circuit-json'; import { GraphicsObject } from 'graphics-debug'; import { ManualEditEvent } from '@tscircuit/props'; import { Matrix } from 'transformation-matrix'; interface State { hidden_layer_opacity: number; setHiddenLayerOpacity: (opacity: number) => void; selected_layer: LayerRef; pcb_viewer_id: string; in_edit_mode: boolean; in_move_footprint_mode: boolean; is_mouse_over_container: boolean; is_moving_component: boolean; is_showing_autorouting: boolean; is_showing_drc_errors: boolean; is_showing_drc_warnings: boolean; is_showing_multiple_traces_length: boolean; is_showing_rats_nest: boolean; is_showing_copper_pours: boolean; is_showing_courtyards: boolean; is_showing_pcb_groups: boolean; is_showing_group_anchor_offsets: boolean; is_showing_solder_mask: boolean; is_showing_silkscreen: boolean; is_showing_fabrication_notes: boolean; is_showing_pcb_notes: boolean; pcb_group_view_mode: "all" | "named_only"; hovered_error_id: string | null; focused_error_id: string | null; selectLayer: (layer: LayerRef) => void; setEditMode: (mode: "off" | "move_footprint") => void; setIsMovingComponent: (is_moving: boolean) => void; setIsShowingRatsNest: (is_showing: boolean) => void; setIsMouseOverContainer: (is_focused: boolean) => void; setIsShowingAutorouting: (is_showing: boolean) => void; setIsShowingMultipleTracesLength: (is_showing: boolean) => void; setIsShowingDrcErrors: (is_showing: boolean) => void; setIsShowingDrcWarnings: (is_showing: boolean) => void; setIsShowingCopperPours: (is_showing: boolean) => void; setIsShowingCourtyards: (is_showing: boolean) => void; setIsShowingPcbGroups: (is_showing: boolean) => void; setIsShowingGroupAnchorOffsets: (is_showing: boolean) => void; setIsShowingSolderMask: (is_showing: boolean) => void; setIsShowingSilkscreen: (is_showing: boolean) => void; setIsShowingFabricationNotes: (is_showing: boolean) => void; setIsShowingPcbNotes: (is_showing: boolean) => void; setPcbGroupViewMode: (mode: "all" | "named_only") => void; setHoveredErrorId: (errorId: string | null) => void; setFocusedErrorId: (errorId: string | null) => void; } type StateProps = { [key in keyof State]: State[key] extends boolean ? boolean : never; }; type GridConfig = { spacing: number; view_window: { left: number; right: number; top: number; bottom: number; }; }; interface BoundsSelection { minX: number; minY: number; maxX: number; maxY: number; } type Props = { circuitJson?: AnyCircuitElement[]; height?: number; /** Initial engine; users can switch via the context menu. Prop changes reset it. * WebGPU runs in a worker and falls back to Canvas when unavailable. */ renderer?: "webgpu" | "canvas"; allowEditing?: boolean; editEvents?: ManualEditEvent[]; initialState?: Partial; onEditEventsChanged?: (editEvents: ManualEditEvent[]) => void; onBoundsSelected?: (bounds: BoundsSelection) => void; focusOnHover?: boolean; clickToInteractEnabled?: boolean; debugGraphics?: GraphicsObject | null; disablePcbGroups?: boolean; }; declare const PCBViewer: ({ circuitJson, debugGraphics, height, renderer, initialState, allowEditing, editEvents: editEventsProp, onEditEventsChanged, onBoundsSelected, focusOnHover, clickToInteractEnabled, disablePcbGroups, }: Props) => react_jsx_runtime.JSX.Element; interface CanvasElementsRendererProps { elements: AnyCircuitElement[]; debugGraphics?: GraphicsObject | null; transform?: Matrix; setTransform?: (transform: Matrix) => void; width?: number; height?: number; renderer?: "webgpu" | "canvas"; grid?: GridConfig; allowEditing: boolean; focusOnHover?: boolean; onBoundsSelected?: (bounds: BoundsSelection) => void; onContextMenuOpenChange?: (open: boolean) => void; cancelPanDrag: () => void; onCreateEditEvent: (event: ManualEditEvent) => void; onModifyEditEvent: (event: Partial) => void; } declare const CanvasElementsRenderer: (props: CanvasElementsRendererProps) => react_jsx_runtime.JSX.Element; export { CanvasElementsRenderer, PCBViewer };