import { z } from 'zod';
import { AnyCircuitElement } from 'circuit-json';

type MakeRequired<T, K extends keyof T> = Omit<T, K> & Required<Pick<T, K>>;
declare const kicad_mod_json_def: z.ZodObject<{
    footprint_name: z.ZodString;
    version: z.ZodOptional<z.ZodString>;
    generator: z.ZodOptional<z.ZodString>;
    generator_version: z.ZodOptional<z.ZodString>;
    layer: z.ZodString;
    descr: z.ZodDefault<z.ZodString>;
    tags: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
    properties: z.ZodArray<z.ZodObject<{
        key: z.ZodString;
        val: z.ZodString;
        attributes: z.ZodObject<{
            at: z.ZodOptional<z.ZodUnion<[z.ZodTuple<[z.ZodNumber, z.ZodNumber], null>, z.ZodTuple<[z.ZodNumber, z.ZodNumber, z.ZodNumber], null>]>>;
            size: z.ZodOptional<z.ZodTuple<[z.ZodNumber, z.ZodNumber], null>>;
            layer: z.ZodOptional<z.ZodString>;
            layers: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
            roundrect_rratio: z.ZodOptional<z.ZodNumber>;
            uuid: z.ZodOptional<z.ZodString>;
        }, "strip", z.ZodTypeAny, {
            at?: [number, number] | [number, number, number] | undefined;
            size?: [number, number] | undefined;
            layer?: string | undefined;
            layers?: string[] | undefined;
            roundrect_rratio?: number | undefined;
            uuid?: string | undefined;
        }, {
            at?: [number, number] | [number, number, number] | undefined;
            size?: [number, number] | undefined;
            layer?: string | undefined;
            layers?: string[] | undefined;
            roundrect_rratio?: number | undefined;
            uuid?: string | undefined;
        }>;
    }, "strip", z.ZodTypeAny, {
        key: string;
        val: string;
        attributes: {
            at?: [number, number] | [number, number, number] | undefined;
            size?: [number, number] | undefined;
            layer?: string | undefined;
            layers?: string[] | undefined;
            roundrect_rratio?: number | undefined;
            uuid?: string | undefined;
        };
    }, {
        key: string;
        val: string;
        attributes: {
            at?: [number, number] | [number, number, number] | undefined;
            size?: [number, number] | undefined;
            layer?: string | undefined;
            layers?: string[] | undefined;
            roundrect_rratio?: number | undefined;
            uuid?: string | undefined;
        };
    }>, "many">;
    fp_lines: z.ZodArray<z.ZodEffects<z.ZodObject<{
        start: z.ZodTuple<[z.ZodNumber, z.ZodNumber], null>;
        end: z.ZodTuple<[z.ZodNumber, z.ZodNumber], null>;
        stroke: z.ZodOptional<z.ZodObject<{
            width: z.ZodNumber;
            type: z.ZodString;
        }, "strip", z.ZodTypeAny, {
            type: string;
            width: number;
        }, {
            type: string;
            width: number;
        }>>;
        width: z.ZodOptional<z.ZodNumber>;
        layer: z.ZodString;
        uuid: z.ZodOptional<z.ZodString>;
    }, "strip", z.ZodTypeAny, {
        start: [number, number];
        end: [number, number];
        layer: string;
        uuid?: string | undefined;
        width?: number | undefined;
        stroke?: {
            type: string;
            width: number;
        } | undefined;
    }, {
        start: [number, number];
        end: [number, number];
        layer: string;
        uuid?: string | undefined;
        width?: number | undefined;
        stroke?: {
            type: string;
            width: number;
        } | undefined;
    }>, MakeRequired<Omit<{
        start: [number, number];
        end: [number, number];
        layer: string;
        uuid?: string | undefined;
        width?: number | undefined;
        stroke?: {
            type: string;
            width: number;
        } | undefined;
    }, "width">, "stroke">, {
        start: [number, number];
        end: [number, number];
        layer: string;
        uuid?: string | undefined;
        width?: number | undefined;
        stroke?: {
            type: string;
            width: number;
        } | undefined;
    }>, "many">;
    fp_rects: z.ZodOptional<z.ZodArray<z.ZodEffects<z.ZodObject<{
        start: z.ZodTuple<[z.ZodNumber, z.ZodNumber], null>;
        end: z.ZodTuple<[z.ZodNumber, z.ZodNumber], null>;
        stroke: z.ZodOptional<z.ZodObject<{
            width: z.ZodNumber;
            type: z.ZodString;
        }, "strip", z.ZodTypeAny, {
            type: string;
            width: number;
        }, {
            type: string;
            width: number;
        }>>;
        width: z.ZodOptional<z.ZodNumber>;
        fill: z.ZodOptional<z.ZodString>;
        layer: z.ZodString;
        uuid: z.ZodOptional<z.ZodString>;
    }, "strip", z.ZodTypeAny, {
        start: [number, number];
        end: [number, number];
        layer: string;
        fill?: string | undefined;
        uuid?: string | undefined;
        width?: number | undefined;
        stroke?: {
            type: string;
            width: number;
        } | undefined;
    }, {
        start: [number, number];
        end: [number, number];
        layer: string;
        fill?: string | undefined;
        uuid?: string | undefined;
        width?: number | undefined;
        stroke?: {
            type: string;
            width: number;
        } | undefined;
    }>, MakeRequired<Omit<{
        start: [number, number];
        end: [number, number];
        layer: string;
        fill?: string | undefined;
        uuid?: string | undefined;
        width?: number | undefined;
        stroke?: {
            type: string;
            width: number;
        } | undefined;
    }, "width">, "stroke">, {
        start: [number, number];
        end: [number, number];
        layer: string;
        fill?: string | undefined;
        uuid?: string | undefined;
        width?: number | undefined;
        stroke?: {
            type: string;
            width: number;
        } | undefined;
    }>, "many">>;
    fp_texts: z.ZodArray<z.ZodObject<{
        fp_text_type: z.ZodLiteral<"user">;
        text: z.ZodString;
        at: z.ZodUnion<[z.ZodTuple<[z.ZodNumber, z.ZodNumber], null>, z.ZodTuple<[z.ZodNumber, z.ZodNumber, z.ZodNumber], null>]>;
        layer: z.ZodString;
        uuid: z.ZodOptional<z.ZodString>;
        effects: z.ZodObject<{
            font: z.ZodOptional<z.ZodOptional<z.ZodObject<{
                size: z.ZodTuple<[z.ZodNumber, z.ZodNumber], null>;
                thickness: z.ZodOptional<z.ZodNumber>;
            }, "strip", z.ZodTypeAny, {
                size: [number, number];
                thickness?: number | undefined;
            }, {
                size: [number, number];
                thickness?: number | undefined;
            }>>>;
        }, "strip", z.ZodTypeAny, {
            font?: {
                size: [number, number];
                thickness?: number | undefined;
            } | undefined;
        }, {
            font?: {
                size: [number, number];
                thickness?: number | undefined;
            } | undefined;
        }>;
    }, "strip", z.ZodTypeAny, {
        at: [number, number] | [number, number, number];
        layer: string;
        fp_text_type: "user";
        text: string;
        effects: {
            font?: {
                size: [number, number];
                thickness?: number | undefined;
            } | undefined;
        };
        uuid?: string | undefined;
    }, {
        at: [number, number] | [number, number, number];
        layer: string;
        fp_text_type: "user";
        text: string;
        effects: {
            font?: {
                size: [number, number];
                thickness?: number | undefined;
            } | undefined;
        };
        uuid?: string | undefined;
    }>, "many">;
    fp_arcs: z.ZodArray<z.ZodObject<{
        start: z.ZodTuple<[z.ZodNumber, z.ZodNumber], null>;
        mid: z.ZodTuple<[z.ZodNumber, z.ZodNumber], null>;
        end: z.ZodTuple<[z.ZodNumber, z.ZodNumber], null>;
        stroke: z.ZodObject<{
            width: z.ZodNumber;
            type: z.ZodString;
        }, "strip", z.ZodTypeAny, {
            type: string;
            width: number;
        }, {
            type: string;
            width: number;
        }>;
        layer: z.ZodString;
        uuid: z.ZodOptional<z.ZodString>;
    }, "strip", z.ZodTypeAny, {
        start: [number, number];
        mid: [number, number];
        end: [number, number];
        layer: string;
        stroke: {
            type: string;
            width: number;
        };
        uuid?: string | undefined;
    }, {
        start: [number, number];
        mid: [number, number];
        end: [number, number];
        layer: string;
        stroke: {
            type: string;
            width: number;
        };
        uuid?: string | undefined;
    }>, "many">;
    fp_circles: z.ZodOptional<z.ZodArray<z.ZodObject<{
        center: z.ZodTuple<[z.ZodNumber, z.ZodNumber], null>;
        end: z.ZodTuple<[z.ZodNumber, z.ZodNumber], null>;
        stroke: z.ZodObject<{
            width: z.ZodNumber;
            type: z.ZodString;
        }, "strip", z.ZodTypeAny, {
            type: string;
            width: number;
        }, {
            type: string;
            width: number;
        }>;
        fill: z.ZodOptional<z.ZodString>;
        layer: z.ZodString;
        uuid: z.ZodOptional<z.ZodString>;
    }, "strip", z.ZodTypeAny, {
        end: [number, number];
        layer: string;
        stroke: {
            type: string;
            width: number;
        };
        center: [number, number];
        fill?: string | undefined;
        uuid?: string | undefined;
    }, {
        end: [number, number];
        layer: string;
        stroke: {
            type: string;
            width: number;
        };
        center: [number, number];
        fill?: string | undefined;
        uuid?: string | undefined;
    }>, "many">>;
    fp_polys: z.ZodOptional<z.ZodArray<z.ZodEffects<z.ZodObject<{
        pts: z.ZodArray<z.ZodUnion<[z.ZodTuple<[z.ZodNumber, z.ZodNumber], null>, z.ZodObject<{
            kind: z.ZodLiteral<"arc">;
            start: z.ZodTuple<[z.ZodNumber, z.ZodNumber], null>;
            mid: z.ZodTuple<[z.ZodNumber, z.ZodNumber], null>;
            end: z.ZodTuple<[z.ZodNumber, z.ZodNumber], null>;
        }, "strip", z.ZodTypeAny, {
            kind: "arc";
            start: [number, number];
            mid: [number, number];
            end: [number, number];
        }, {
            kind: "arc";
            start: [number, number];
            mid: [number, number];
            end: [number, number];
        }>]>, "many">;
        stroke: z.ZodOptional<z.ZodObject<{
            width: z.ZodNumber;
            type: z.ZodString;
        }, "strip", z.ZodTypeAny, {
            type: string;
            width: number;
        }, {
            type: string;
            width: number;
        }>>;
        width: z.ZodOptional<z.ZodNumber>;
        layer: z.ZodString;
        uuid: z.ZodOptional<z.ZodString>;
        fill: z.ZodOptional<z.ZodString>;
    }, "strip", z.ZodTypeAny, {
        layer: string;
        pts: ([number, number] | {
            kind: "arc";
            start: [number, number];
            mid: [number, number];
            end: [number, number];
        })[];
        fill?: string | undefined;
        uuid?: string | undefined;
        width?: number | undefined;
        stroke?: {
            type: string;
            width: number;
        } | undefined;
    }, {
        layer: string;
        pts: ([number, number] | {
            kind: "arc";
            start: [number, number];
            mid: [number, number];
            end: [number, number];
        })[];
        fill?: string | undefined;
        uuid?: string | undefined;
        width?: number | undefined;
        stroke?: {
            type: string;
            width: number;
        } | undefined;
    }>, MakeRequired<Omit<{
        layer: string;
        pts: ([number, number] | {
            kind: "arc";
            start: [number, number];
            mid: [number, number];
            end: [number, number];
        })[];
        fill?: string | undefined;
        uuid?: string | undefined;
        width?: number | undefined;
        stroke?: {
            type: string;
            width: number;
        } | undefined;
    }, "width">, "stroke">, {
        layer: string;
        pts: ([number, number] | {
            kind: "arc";
            start: [number, number];
            mid: [number, number];
            end: [number, number];
        })[];
        fill?: string | undefined;
        uuid?: string | undefined;
        width?: number | undefined;
        stroke?: {
            type: string;
            width: number;
        } | undefined;
    }>, "many">>;
    pads: z.ZodArray<z.ZodObject<{
        name: z.ZodString;
        pad_type: z.ZodEnum<["thru_hole", "smd", "np_thru_hole", "connect"]>;
        pad_shape: z.ZodEnum<["roundrect", "circle", "rect", "oval", "trapezoid", "custom"]>;
        at: z.ZodUnion<[z.ZodTuple<[z.ZodNumber, z.ZodNumber], null>, z.ZodTuple<[z.ZodNumber, z.ZodNumber, z.ZodNumber], null>]>;
        size: z.ZodTuple<[z.ZodNumber, z.ZodNumber], null>;
        drill: z.ZodOptional<z.ZodPipeline<z.ZodEffects<z.ZodUnion<[z.ZodNumber, z.ZodArray<z.ZodAny, "many">, z.ZodObject<{
            oval: z.ZodDefault<z.ZodBoolean>;
            width: z.ZodOptional<z.ZodNumber>;
            height: z.ZodOptional<z.ZodNumber>;
            offset: z.ZodOptional<z.ZodTuple<[z.ZodNumber, z.ZodNumber], null>>;
        }, "strip", z.ZodTypeAny, {
            oval: boolean;
            width?: number | undefined;
            height?: number | undefined;
            offset?: [number, number] | undefined;
        }, {
            oval?: boolean | undefined;
            width?: number | undefined;
            height?: number | undefined;
            offset?: [number, number] | undefined;
        }>]>, any[] | {
            oval: boolean;
            width?: number | undefined;
            height?: number | undefined;
            offset?: [number, number] | undefined;
        }, number | any[] | {
            oval?: boolean | undefined;
            width?: number | undefined;
            height?: number | undefined;
            offset?: [number, number] | undefined;
        }>, z.ZodObject<{
            oval: z.ZodDefault<z.ZodBoolean>;
            width: z.ZodOptional<z.ZodNumber>;
            height: z.ZodOptional<z.ZodNumber>;
            offset: z.ZodOptional<z.ZodTuple<[z.ZodNumber, z.ZodNumber], null>>;
        }, "strip", z.ZodTypeAny, {
            oval: boolean;
            width?: number | undefined;
            height?: number | undefined;
            offset?: [number, number] | undefined;
        }, {
            oval?: boolean | undefined;
            width?: number | undefined;
            height?: number | undefined;
            offset?: [number, number] | undefined;
        }>>>;
        layers: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
        roundrect_rratio: z.ZodOptional<z.ZodNumber>;
        chamfer_ratio: z.ZodOptional<z.ZodNumber>;
        solder_paste_margin: z.ZodOptional<z.ZodNumber>;
        solder_paste_margin_ratio: z.ZodOptional<z.ZodNumber>;
        clearance: z.ZodOptional<z.ZodNumber>;
        zone_connection: z.ZodOptional<z.ZodUnion<[z.ZodLiteral<0>, z.ZodLiteral<1>, z.ZodLiteral<2>]>>;
        thermal_width: z.ZodOptional<z.ZodNumber>;
        thermal_gap: z.ZodOptional<z.ZodNumber>;
        uuid: z.ZodOptional<z.ZodString>;
    }, "strip", z.ZodTypeAny, {
        at: [number, number] | [number, number, number];
        size: [number, number];
        name: string;
        pad_type: "thru_hole" | "smd" | "np_thru_hole" | "connect";
        pad_shape: "custom" | "oval" | "roundrect" | "circle" | "rect" | "trapezoid";
        layers?: string[] | undefined;
        roundrect_rratio?: number | undefined;
        uuid?: string | undefined;
        drill?: {
            oval: boolean;
            width?: number | undefined;
            height?: number | undefined;
            offset?: [number, number] | undefined;
        } | undefined;
        chamfer_ratio?: number | undefined;
        solder_paste_margin?: number | undefined;
        solder_paste_margin_ratio?: number | undefined;
        clearance?: number | undefined;
        zone_connection?: 0 | 2 | 1 | undefined;
        thermal_width?: number | undefined;
        thermal_gap?: number | undefined;
    }, {
        at: [number, number] | [number, number, number];
        size: [number, number];
        name: string;
        pad_type: "thru_hole" | "smd" | "np_thru_hole" | "connect";
        pad_shape: "custom" | "oval" | "roundrect" | "circle" | "rect" | "trapezoid";
        layers?: string[] | undefined;
        roundrect_rratio?: number | undefined;
        uuid?: string | undefined;
        drill?: number | any[] | {
            oval?: boolean | undefined;
            width?: number | undefined;
            height?: number | undefined;
            offset?: [number, number] | undefined;
        } | undefined;
        chamfer_ratio?: number | undefined;
        solder_paste_margin?: number | undefined;
        solder_paste_margin_ratio?: number | undefined;
        clearance?: number | undefined;
        zone_connection?: 0 | 2 | 1 | undefined;
        thermal_width?: number | undefined;
        thermal_gap?: number | undefined;
    }>, "many">;
    holes: z.ZodOptional<z.ZodArray<z.ZodObject<{
        name: z.ZodString;
        pad_type: z.ZodEnum<["thru_hole", "smd", "np_thru_hole", "connect"]>;
        pad_shape: z.ZodEnum<["roundrect", "circle", "rect", "oval", "trapezoid", "custom"]>;
        at: z.ZodUnion<[z.ZodTuple<[z.ZodNumber, z.ZodNumber], null>, z.ZodTuple<[z.ZodNumber, z.ZodNumber, z.ZodNumber], null>]>;
        drill: z.ZodPipeline<z.ZodEffects<z.ZodUnion<[z.ZodNumber, z.ZodArray<z.ZodAny, "many">, z.ZodObject<{
            oval: z.ZodDefault<z.ZodBoolean>;
            width: z.ZodOptional<z.ZodNumber>;
            height: z.ZodOptional<z.ZodNumber>;
            offset: z.ZodOptional<z.ZodTuple<[z.ZodNumber, z.ZodNumber], null>>;
        }, "strip", z.ZodTypeAny, {
            oval: boolean;
            width?: number | undefined;
            height?: number | undefined;
            offset?: [number, number] | undefined;
        }, {
            oval?: boolean | undefined;
            width?: number | undefined;
            height?: number | undefined;
            offset?: [number, number] | undefined;
        }>]>, any[] | {
            oval: boolean;
            width?: number | undefined;
            height?: number | undefined;
            offset?: [number, number] | undefined;
        }, number | any[] | {
            oval?: boolean | undefined;
            width?: number | undefined;
            height?: number | undefined;
            offset?: [number, number] | undefined;
        }>, z.ZodObject<{
            oval: z.ZodDefault<z.ZodBoolean>;
            width: z.ZodOptional<z.ZodNumber>;
            height: z.ZodOptional<z.ZodNumber>;
            offset: z.ZodOptional<z.ZodTuple<[z.ZodNumber, z.ZodNumber], null>>;
        }, "strip", z.ZodTypeAny, {
            oval: boolean;
            width?: number | undefined;
            height?: number | undefined;
            offset?: [number, number] | undefined;
        }, {
            oval?: boolean | undefined;
            width?: number | undefined;
            height?: number | undefined;
            offset?: [number, number] | undefined;
        }>>;
        size: z.ZodUnion<[z.ZodEffects<z.ZodArray<z.ZodNumber, "many">, {
            width: number;
            height: number;
        }, number[]>, z.ZodObject<{
            width: z.ZodNumber;
            height: z.ZodNumber;
        }, "strip", z.ZodTypeAny, {
            width: number;
            height: number;
        }, {
            width: number;
            height: number;
        }>]>;
        layers: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
        roundrect_rratio: z.ZodOptional<z.ZodNumber>;
        uuid: z.ZodOptional<z.ZodString>;
    }, "strip", z.ZodTypeAny, {
        at: [number, number] | [number, number, number];
        size: {
            width: number;
            height: number;
        } | {
            width: number;
            height: number;
        };
        name: string;
        pad_type: "thru_hole" | "smd" | "np_thru_hole" | "connect";
        pad_shape: "custom" | "oval" | "roundrect" | "circle" | "rect" | "trapezoid";
        drill: {
            oval: boolean;
            width?: number | undefined;
            height?: number | undefined;
            offset?: [number, number] | undefined;
        };
        layers?: string[] | undefined;
        roundrect_rratio?: number | undefined;
        uuid?: string | undefined;
    }, {
        at: [number, number] | [number, number, number];
        size: number[] | {
            width: number;
            height: number;
        };
        name: string;
        pad_type: "thru_hole" | "smd" | "np_thru_hole" | "connect";
        pad_shape: "custom" | "oval" | "roundrect" | "circle" | "rect" | "trapezoid";
        drill: number | any[] | {
            oval?: boolean | undefined;
            width?: number | undefined;
            height?: number | undefined;
            offset?: [number, number] | undefined;
        };
        layers?: string[] | undefined;
        roundrect_rratio?: number | undefined;
        uuid?: string | undefined;
    }>, "many">>;
}, "strip", z.ZodTypeAny, {
    layer: string;
    footprint_name: string;
    descr: string;
    properties: {
        key: string;
        val: string;
        attributes: {
            at?: [number, number] | [number, number, number] | undefined;
            size?: [number, number] | undefined;
            layer?: string | undefined;
            layers?: string[] | undefined;
            roundrect_rratio?: number | undefined;
            uuid?: string | undefined;
        };
    }[];
    fp_lines: MakeRequired<Omit<{
        start: [number, number];
        end: [number, number];
        layer: string;
        uuid?: string | undefined;
        width?: number | undefined;
        stroke?: {
            type: string;
            width: number;
        } | undefined;
    }, "width">, "stroke">[];
    fp_texts: {
        at: [number, number] | [number, number, number];
        layer: string;
        fp_text_type: "user";
        text: string;
        effects: {
            font?: {
                size: [number, number];
                thickness?: number | undefined;
            } | undefined;
        };
        uuid?: string | undefined;
    }[];
    fp_arcs: {
        start: [number, number];
        mid: [number, number];
        end: [number, number];
        layer: string;
        stroke: {
            type: string;
            width: number;
        };
        uuid?: string | undefined;
    }[];
    pads: {
        at: [number, number] | [number, number, number];
        size: [number, number];
        name: string;
        pad_type: "thru_hole" | "smd" | "np_thru_hole" | "connect";
        pad_shape: "custom" | "oval" | "roundrect" | "circle" | "rect" | "trapezoid";
        layers?: string[] | undefined;
        roundrect_rratio?: number | undefined;
        uuid?: string | undefined;
        drill?: {
            oval: boolean;
            width?: number | undefined;
            height?: number | undefined;
            offset?: [number, number] | undefined;
        } | undefined;
        chamfer_ratio?: number | undefined;
        solder_paste_margin?: number | undefined;
        solder_paste_margin_ratio?: number | undefined;
        clearance?: number | undefined;
        zone_connection?: 0 | 2 | 1 | undefined;
        thermal_width?: number | undefined;
        thermal_gap?: number | undefined;
    }[];
    version?: string | undefined;
    generator?: string | undefined;
    generator_version?: string | undefined;
    tags?: string[] | undefined;
    fp_rects?: MakeRequired<Omit<{
        start: [number, number];
        end: [number, number];
        layer: string;
        fill?: string | undefined;
        uuid?: string | undefined;
        width?: number | undefined;
        stroke?: {
            type: string;
            width: number;
        } | undefined;
    }, "width">, "stroke">[] | undefined;
    fp_circles?: {
        end: [number, number];
        layer: string;
        stroke: {
            type: string;
            width: number;
        };
        center: [number, number];
        fill?: string | undefined;
        uuid?: string | undefined;
    }[] | undefined;
    fp_polys?: MakeRequired<Omit<{
        layer: string;
        pts: ([number, number] | {
            kind: "arc";
            start: [number, number];
            mid: [number, number];
            end: [number, number];
        })[];
        fill?: string | undefined;
        uuid?: string | undefined;
        width?: number | undefined;
        stroke?: {
            type: string;
            width: number;
        } | undefined;
    }, "width">, "stroke">[] | undefined;
    holes?: {
        at: [number, number] | [number, number, number];
        size: {
            width: number;
            height: number;
        } | {
            width: number;
            height: number;
        };
        name: string;
        pad_type: "thru_hole" | "smd" | "np_thru_hole" | "connect";
        pad_shape: "custom" | "oval" | "roundrect" | "circle" | "rect" | "trapezoid";
        drill: {
            oval: boolean;
            width?: number | undefined;
            height?: number | undefined;
            offset?: [number, number] | undefined;
        };
        layers?: string[] | undefined;
        roundrect_rratio?: number | undefined;
        uuid?: string | undefined;
    }[] | undefined;
}, {
    layer: string;
    footprint_name: string;
    properties: {
        key: string;
        val: string;
        attributes: {
            at?: [number, number] | [number, number, number] | undefined;
            size?: [number, number] | undefined;
            layer?: string | undefined;
            layers?: string[] | undefined;
            roundrect_rratio?: number | undefined;
            uuid?: string | undefined;
        };
    }[];
    fp_lines: {
        start: [number, number];
        end: [number, number];
        layer: string;
        uuid?: string | undefined;
        width?: number | undefined;
        stroke?: {
            type: string;
            width: number;
        } | undefined;
    }[];
    fp_texts: {
        at: [number, number] | [number, number, number];
        layer: string;
        fp_text_type: "user";
        text: string;
        effects: {
            font?: {
                size: [number, number];
                thickness?: number | undefined;
            } | undefined;
        };
        uuid?: string | undefined;
    }[];
    fp_arcs: {
        start: [number, number];
        mid: [number, number];
        end: [number, number];
        layer: string;
        stroke: {
            type: string;
            width: number;
        };
        uuid?: string | undefined;
    }[];
    pads: {
        at: [number, number] | [number, number, number];
        size: [number, number];
        name: string;
        pad_type: "thru_hole" | "smd" | "np_thru_hole" | "connect";
        pad_shape: "custom" | "oval" | "roundrect" | "circle" | "rect" | "trapezoid";
        layers?: string[] | undefined;
        roundrect_rratio?: number | undefined;
        uuid?: string | undefined;
        drill?: number | any[] | {
            oval?: boolean | undefined;
            width?: number | undefined;
            height?: number | undefined;
            offset?: [number, number] | undefined;
        } | undefined;
        chamfer_ratio?: number | undefined;
        solder_paste_margin?: number | undefined;
        solder_paste_margin_ratio?: number | undefined;
        clearance?: number | undefined;
        zone_connection?: 0 | 2 | 1 | undefined;
        thermal_width?: number | undefined;
        thermal_gap?: number | undefined;
    }[];
    version?: string | undefined;
    generator?: string | undefined;
    generator_version?: string | undefined;
    descr?: string | undefined;
    tags?: string[] | undefined;
    fp_rects?: {
        start: [number, number];
        end: [number, number];
        layer: string;
        fill?: string | undefined;
        uuid?: string | undefined;
        width?: number | undefined;
        stroke?: {
            type: string;
            width: number;
        } | undefined;
    }[] | undefined;
    fp_circles?: {
        end: [number, number];
        layer: string;
        stroke: {
            type: string;
            width: number;
        };
        center: [number, number];
        fill?: string | undefined;
        uuid?: string | undefined;
    }[] | undefined;
    fp_polys?: {
        layer: string;
        pts: ([number, number] | {
            kind: "arc";
            start: [number, number];
            mid: [number, number];
            end: [number, number];
        })[];
        fill?: string | undefined;
        uuid?: string | undefined;
        width?: number | undefined;
        stroke?: {
            type: string;
            width: number;
        } | undefined;
    }[] | undefined;
    holes?: {
        at: [number, number] | [number, number, number];
        size: number[] | {
            width: number;
            height: number;
        };
        name: string;
        pad_type: "thru_hole" | "smd" | "np_thru_hole" | "connect";
        pad_shape: "custom" | "oval" | "roundrect" | "circle" | "rect" | "trapezoid";
        drill: number | any[] | {
            oval?: boolean | undefined;
            width?: number | undefined;
            height?: number | undefined;
            offset?: [number, number] | undefined;
        };
        layers?: string[] | undefined;
        roundrect_rratio?: number | undefined;
        uuid?: string | undefined;
    }[] | undefined;
}>;
type KicadModJson = z.infer<typeof kicad_mod_json_def>;

declare const parseKicadModToKicadJson: (fileContent: string) => KicadModJson;

declare const parseKicadModToCircuitJson: (kicadMod: string) => Promise<AnyCircuitElement[]>;

declare const convertKicadJsonToTsCircuitSoup: (kicadJson: KicadModJson) => Promise<AnyCircuitElement[]>;

export { convertKicadJsonToTsCircuitSoup, parseKicadModToCircuitJson, parseKicadModToKicadJson };
