import { MultipolygonData, PolygonData } from './types';
export interface ProjectedBoundsData {
    southWest: ProjectedPointData;
    northEast: ProjectedPointData;
}
/**
 *
 */
export declare class ProjectedBounds implements ProjectedBoundsData {
    southWest: ProjectedPoint;
    northEast: ProjectedPoint;
    constructor(bounds?: {
        southWest: {
            x: number;
            y: number;
        };
        northEast: {
            x: number;
            y: number;
        };
    });
    expandPoint(x: number, y: number): void;
    expand(bounds: ProjectedBoundsData): void;
    modifyIntersect(bounds: ProjectedBoundsData): this;
    contains(bounds: ProjectedBoundsData): boolean;
    intersects(bounds: ProjectedBoundsData): boolean;
    growOutwardsFactor(factor?: number): this;
    growOutwardsAmount(amount: number): this;
    toLineString(): ProjectedPoint[];
    reproject(project: (x: number, y: number) => {
        x: number;
        y: number;
    }): ProjectedBounds;
    width(): number;
    height(): number;
    left(): number;
    top(): number;
}
export interface ProjectedPointData {
    x: number;
    y: number;
}
/**
 *
 */
export declare class ProjectedPoint implements ProjectedPointData {
    x: number;
    y: number;
    constructor(x: number, y: number);
    /**
     * Checks if the given three points are collinear.
     */
    isCollinear(before: ProjectedPoint, after: ProjectedPoint, tolerance: number): boolean;
    /**
     *
     * @param point
     */
    euclideanDistance(point: ProjectedPoint): number;
}
/**
 *
 */
export declare class ProjectedLineString {
    points: ProjectedPoint[];
    bounds3857: ProjectedBounds;
    constructor(coordinates: [number, number][]);
}
/**
 *
 */
export declare class ProjectedPolygon {
    travelTime: number;
    area: number;
    lineStrings: ProjectedLineString[];
    bounds3857: ProjectedBounds;
    constructor(data: PolygonData);
    getOuterBoundary(): ProjectedLineString;
    getInnerBoundary(): ProjectedLineString[];
}
/**
 *
 */
export declare class ProjectedMultiPolygon {
    polygons: {
        [travelTime: number]: ProjectedPolygon[];
    };
    bounds3857: ProjectedBounds;
    constructor(data: MultipolygonData[]);
    forEach(callback: (travelTime: number, polygon: ProjectedPolygon[], i?: number) => void): void;
}
