import type { BBox } from '../../geometry';
import type { Pbf as Protobuf } from '../protobuf';
/** OSM Header Block */
export interface OSMHeader {
    bbox: BBox;
    required_features: string[];
    optional_features: string[];
    writingprogram?: string;
    source?: string;
    osmosis_replication_timestamp: number;
    osmosis_replication_sequence_number: number;
    osmosis_replication_base_url?: string;
}
/**
 * The OSM Header Block
 * A block containing OSM header information that helps guide the parser
 * of the OSM data how to interpret the data.
 */
export declare class HeaderBlock {
    #private;
    bbox: HeaderBBox;
    required_features: string[];
    optional_features: string[];
    writingprogram?: string;
    source?: string;
    osmosis_replication_timestamp: number;
    osmosis_replication_sequence_number: number;
    osmosis_replication_base_url?: string;
    /** @param pbf - the Protobuf object to read from */
    constructor(pbf: Protobuf);
    /**
     * Read the header block's contents into an object
     * @returns - the header object
     */
    toHeader(): OSMHeader;
}
/**
 * The bounding box field in the OSM header. BBOX, as used in the OSM
 * header. Units are always in nanodegrees -- they do not obey
 * granularity rules.
 */
export declare class HeaderBBox {
    left: number;
    right: number;
    top: number;
    bottom: number;
    /**
     * Read the header block's contents into an object
     * @param tag - the tag of the message
     * @param bbox - the bbox object to modify
     * @param pbf - the Protobuf object to read from
     */
    readLayer(tag: number, bbox: HeaderBBox, pbf: Protobuf): void;
    /**
     * Returns the bounding box as a [left, bottom, right, top] array
     * @returns - [left, bottom, right, top]
     */
    toBBox(): [left: number, bottom: number, right: number, top: number];
}
//# sourceMappingURL=headerBlock.d.ts.map