import type P5 from "p5"; type CSGInput = (() => void) | P5.Geometry; type CSGWrapperInput = CSGWrapper | CSGInput; type BooleanOptions = { includeSelfFaces?: boolean; includeOtherFaces?: boolean; }; declare module "P5" { interface p5InstanceExtensions { P5(): P5; csg(input: CSGInput): CSGWrapper; buildGeometry(cb: () => void): P5.Geometry; Geometry: { new (...args: any[]): P5.Geometry; }; } interface Geometry { gid: string; faces: Array<[number, number, number]>; vertices: Array; vertexNormals: Array; } } declare class CSGWrapper { csg: any; p5: P5 | P5.p5InstanceExtensions; constructor(p5: P5 | P5.p5InstanceExtensions, input: CSGInput); private ids; private inputToGeom; private inputToCSG; private inputToCSGWrapper; private applyBooleanOptions; union(other: CSGWrapperInput, options?: BooleanOptions): CSGWrapper; subtract(other: CSGWrapperInput, options?: BooleanOptions): CSGWrapper; intersect(other: CSGWrapperInput, options?: BooleanOptions): CSGWrapper; invert(): CSGWrapper; done(): P5.Geometry; } export declare const setupCSG: (p5: P5) => void; export {};