import type { DwgHatchEntity } from "@mlightcad/libredwg-web";
import IGeometry, { IEntity, IPoint } from "./geomtry";
import { DxfBaseReader, IGroup } from "../DxfBaseReader";
export declare enum HatchBoundaryPathTypeFlag {
    Default = 0,
    External = 1,
    Polyline = 2,
    Derived = 4,
    Textbox = 8,
    Outermost = 16,
    MaxFlags = 31
}
export declare enum HatchEdgeType {
    Polyline = 0,
    Line = 1,
    Arc = 2,
    Ellipse = 3,
    Spline = 4
}
export declare abstract class HatchEdge {
    readonly type: HatchEdgeType;
    startPoint: IPoint;
    endPoint: IPoint;
    constructor(type: HatchEdgeType);
}
export declare class HatchPolyline extends HatchEdge {
    points: IPoint[];
    isClosed: boolean;
    constructor();
}
export declare class HatchLine extends HatchEdge {
    constructor();
}
export declare class HatchArc extends HatchEdge {
    center: IPoint;
    radius: number;
    startAngle: number;
    endAngle: number;
    bCounterclockwise: boolean;
    constructor();
}
export declare class HatchEllipse extends HatchEdge {
    center: IPoint;
    majorAxisEndPoint: IPoint;
    minorRatio: number;
    startAngle: number;
    endAngle: number;
    bCounterclockwise: boolean;
    constructor();
}
export declare class HatchSpline extends HatchEdge {
    controlPoints: IPoint[];
    numControlPoints: number;
    knots: number[];
    numKnots: number;
    bPeriodic: boolean;
    bRational: boolean;
    /**
     * degree of spline curve
     */
    degree: number;
    constructor();
}
export interface IHatchBoundaryPath {
    edges: HatchEdge[];
    pathTypeFlag: HatchBoundaryPathTypeFlag;
}
export declare enum HatchStyle {
    Normal = 0,// Hatch “odd parity” area
    Outer = 1,//Hatch outermost area only
    Ignore = 2
}
export declare enum HatchType {
    UserDefined = 0,
    Predefined = 1,
    Custom = 2
}
export interface IHatchPatternDefinition {
    angle: number;
    base: IPoint;
    offset: IPoint;
    dashLengths: number[];
}
export interface IHatchEntity extends IEntity {
    elevationX: number;
    elevationY: number;
    elevationZ: number;
    pixelSize: number;
    associativity: boolean;
    annotatedBoundary: boolean;
    boundaryPathsCount: number;
    boundaryPaths: IHatchBoundaryPath[];
    seedPointsCount: number;
    extrusionDirectionX: number;
    extrusionDirectionY: number;
    extrusionDirectionZ: number;
    patternName: string;
    solidFill: boolean;
    patternFillColor: number;
    style: HatchStyle;
    patternType: HatchType;
    patternAngle: number;
    patternScale: number;
    definitionLines?: IHatchPatternDefinition[];
    isGradientColor?: boolean;
    gradientColorCount?: number;
    gradientColors?: number[];
}
export default class Hatch implements IGeometry {
    readonly ForEntityType = "HATCH";
    parseEntity(scanner: DxfBaseReader, curr: IGroup): IHatchEntity;
    parseDwgEntity(entity: DwgHatchEntity): IEntity;
}
