import { Feature } from 'geojson';
import { RefElements } from './utils';
declare class OsmObject {
    refCount: number;
    protected refElems: RefElements;
    private type;
    private id;
    private tags;
    private props;
    private hasTag;
    constructor(type: string, id: string, refElems: RefElements);
    addTags(tags: {
        [k: string]: string;
    }): void;
    addTag(k: string, v: string): void;
    addProp(k: string, v: any): void;
    addProps(props: {
        [k: string]: string;
    }): void;
    getCompositeId(): string;
    getProps(): {
        [k: string]: string;
    };
    toFeatureArray(): Array<Feature<any, any>>;
}
export declare class Node extends OsmObject {
    private latLng;
    constructor(id: string, refElems: RefElements);
    setLatLng(latLng: {
        lat: string;
        lon: string;
    }): void;
    toFeatureArray(): Array<Feature<any, any>>;
    getLatLng(): {
        lat: string;
        lon: string;
    } | null;
}
export declare class Way extends OsmObject {
    private latLngArray;
    private isPolygon;
    constructor(id: string, refElems: RefElements);
    addLatLng(latLng: {
        lat: string;
        lon: string;
    }): void;
    setLatLngArray(latLngArray: Array<{
        lat: string;
        lon: string;
        [k: string]: any;
    }>): void;
    addNodeRef(ref: string): void;
    addTags(tags: {
        [k: string]: string;
    }): void;
    addTag(k: string, v: string): void;
    toCoordsArray(): string[][];
    toFeatureArray(): Array<Feature<any, any>>;
    private analyzeTag;
}
export declare class Relation extends OsmObject {
    private relations;
    private nodes;
    private bounds;
    [k: string]: any;
    constructor(id: string, refElems: RefElements);
    setBounds(bounds: any[]): void;
    addMember(member: {
        [k: string]: any;
    }): void;
    toFeatureArray(): Array<Feature<any, any>>;
}
export {};
