import { type Point } from './geometry.js'; import type { SilkAnchor } from './silk.js'; export type SilkKind = 'frame' | 'capture' | 'tie'; export interface SilkCurve { from: Point; to: Point; sag: number; } export interface WeaveTask extends SilkCurve { lay: boolean; length: number; kind: SilkKind; grain: number; route?: { curve: SilkCurve; start: number; end: number; }; } export interface WebPlan { tasks: WeaveTask[]; style: 'drape' | 'fan' | 'bridge'; ink: string; } export declare const distance: (a: Point, b: Point) => number; export declare function curvePoint(from: Point, to: Point, sag: number, t: number): Point; export declare function taskPoint(task: WeaveTask, t: number): Point; /** Site geometry sets the footprint; a private seed varies tension, branching, gaps and spacing. */ export declare function buildWeb(origin: Point, anchors: readonly SilkAnchor[], density: number, span: number, seed: number): WebPlan | null; //# sourceMappingURL=weaving.d.ts.map