import { vec2 } from 'gl-matrix';
export declare function computeMiter(lineTangent: vec2, miter: vec2, start: vec2, end: vec2, halfThick: number): [number, vec2];
export declare function computeNormal(out: vec2, dir: vec2): vec2;
export declare function direction(out: vec2, a: vec2, b: vec2): vec2;
export declare function getArrayUnique(matrix: number[][]): number[][];
export interface IExtrudeLineOption {
    join: string;
    cap: string;
    dash: boolean;
    closed: boolean;
    indexOffset: number;
    miterLimit: number;
    thickness: number;
}
export default class ExtrudePolyline {
    complex: {
        positions: number[];
        indices: number[];
        normals: number[];
        startIndex: number;
        indexes: number[];
    };
    private join;
    private cap;
    private miterLimit;
    private thickness;
    private normal;
    private lastFlip;
    private miter;
    private started;
    private dash;
    private totalDistance;
    private currentIndex;
    constructor(opts?: Partial<IExtrudeLineOption>);
    extrude_gaode2(points: number[][], originPoints: number[][]): {
        positions: number[];
        indices: number[];
        normals: number[];
        startIndex: number;
        indexes: number[];
    };
    simpleExtrude_gaode2(points: number[][], originPoints: number[][]): {
        positions: number[];
        indices: number[];
        normals: number[];
        startIndex: number;
        indexes: number[];
    };
    extrude(points: number[][]): {
        positions: number[];
        indices: number[];
        normals: number[];
        startIndex: number;
        indexes: number[];
    };
    simpleExtrude(points: number[][]): {
        positions: number[];
        indices: number[];
        normals: number[];
        startIndex: number;
        indexes: number[];
    };
    private segment_gaode2;
    private simpleSegment;
    private segment;
    private extrusions;
    private lineSegmentDistance;
}
