export declare type Point = { x: number; y: number; }; export declare type MCommand = 'M'; export declare type mCommand = 'm'; export declare type LCommand = 'L'; export declare type lCommand = 'l'; export declare type VCommand = 'V'; export declare type vCommand = 'v'; export declare type HCommand = 'H'; export declare type hCommand = 'h'; export declare type ZCommand = 'Z'; export declare type zCommand = 'z'; export declare type CCommand = 'C'; export declare type cCommand = 'c'; export declare type SCommand = 'S'; export declare type sCommand = 's'; export declare type QCommand = 'Q'; export declare type qCommand = 'q'; export declare type TCommand = 'T'; export declare type tCommand = 't'; export declare type ACommand = 'A'; export declare type aCommand = 'a'; export declare type AbsoluteCommand = MCommand | LCommand | VCommand | HCommand | ZCommand | CCommand | SCommand | QCommand | TCommand | ACommand; export declare type RelativeCommand = mCommand | lCommand | vCommand | hCommand | zCommand | cCommand | sCommand | qCommand | tCommand | aCommand; export declare type PathCommand = AbsoluteCommand | RelativeCommand; export declare type MSegment = [MCommand, number, number]; export declare type mSegment = [mCommand, number, number]; export declare type MoveSegment = MSegment | mSegment; export declare type LSegment = [LCommand, number, number]; export declare type lSegment = [lCommand, number, number]; export declare type LineSegment = LSegment | lSegment; export declare type VSegment = [VCommand, number]; export declare type vSegment = [vCommand, number]; export declare type VertLineSegment = vSegment | VSegment; export declare type HSegment = [HCommand, number]; export declare type hSegment = [hCommand, number]; export declare type HorLineSegment = HSegment | hSegment; export declare type ZSegment = [ZCommand]; export declare type zSegment = [zCommand]; export declare type CloseSegment = ZSegment | zSegment; export declare type CSegment = [CCommand, number, number, number, number, number, number]; export declare type cSegment = [cCommand, number, number, number, number, number, number]; export declare type CubicSegment = CSegment | cSegment; export declare type SSegment = [SCommand, number, number, number, number]; export declare type sSegment = [sCommand, number, number, number, number]; export declare type ShortCubicSegment = SSegment | sSegment; export declare type QSegment = [QCommand, number, number, number, number]; export declare type qSegment = [qCommand, number, number, number, number]; export declare type QuadSegment = QSegment | qSegment; export declare type TSegment = [TCommand, number, number]; export declare type tSegment = [tCommand, number, number]; export declare type ShortQuadSegment = TSegment | tSegment; export declare type ASegment = [ACommand, number, number, number, number, number, number, number]; export declare type aSegment = [aCommand, number, number, number, number, number, number, number]; export declare type ArcSegment = ASegment | aSegment; export declare type PathSegment = MoveSegment | LineSegment | VertLineSegment | HorLineSegment | CloseSegment | CubicSegment | ShortCubicSegment | QuadSegment | ShortQuadSegment | ArcSegment; export interface SegmentProperties { /** the segment */ segment: PathSegment; /** the segment index */ index: number; /** the segment length */ length: number; /** the length including the segment length */ lengthAtSegment: number; [key: string]: any; } export declare type ShortSegment = VertLineSegment | HorLineSegment | ShortCubicSegment | ShortQuadSegment | CloseSegment; export declare type AbsoluteSegment = MSegment | LSegment | VSegment | HSegment | CSegment | SSegment | QSegment | TSegment | ASegment | ZSegment; export declare type RelativeSegment = mSegment | lSegment | vSegment | hSegment | cSegment | sSegment | qSegment | tSegment | aSegment | zSegment; export declare type NormalSegment = MSegment | LSegment | CSegment | QSegment | ASegment | ZSegment; export declare type PathArray = [MSegment | mSegment, ...PathSegment[]]; export declare type AbsoluteArray = [MSegment, ...AbsoluteSegment[]]; export declare type RelativeArray = [MSegment, ...RelativeSegment[]]; export declare type NormalArray = [MSegment, ...NormalSegment[]]; export declare type CurveArray = [MSegment, ...CSegment[]]; export declare type PolygonArray = [MSegment, ...LSegment[], ZSegment]; export declare type PolylineArray = [MSegment, ...LSegment[]]; export interface ParserParams { x1: number; y1: number; x2: number; y2: number; x: number; y: number; qx: number | null; qy: number | null; } export interface PathBBox { width: number; height: number; x: number; y: number; x2: number; y2: number; cx: number; cy: number; cz: number; } export interface PathBBoxTotalLength extends PathBBox { length: number; } export interface PathLengthFactoryOptions { bbox: boolean; length: boolean; sampleSize: number; } export interface SegmentLimits { min: Point; max: Point; } export interface PointProperties { closest: { x: number; y: number; }; distance: number; segment?: SegmentProperties; } export interface LengthFactory { length: number; point: Point; min: Point; max: Point; }