/**
 * Shapefile Builder
 *
 * Generates ESRI Shapefiles (.shp, .shx, .dbf, .prj) from GML data.
 * Uses @mapbox/shp-write to create ZIP archives containing all shapefile components.
 *
 * Note: Shapefiles have a 10-character limit for property field names.
 * Property names exceeding this limit will be automatically truncated.
 *
 * Usage:
 * ```typescript
 * const builder = new ShapefileBuilder();
 * const parser = new GmlParser(builder);
 * const featureCollection = await parser.parse(gmlXml);
 *
 * // Export as ZIP
 * const zipBlob = builder.toZip(featureCollection);
 *
 * // Export as ArrayBuffer
 * const buffer = builder.toZip(featureCollection, { outputType: 'arraybuffer' });
 * ```
 */
import type { Builder, GmlPoint, GmlLineString, GmlPolygon, GmlLinearRing, GmlEnvelope, GmlBox, GmlCurve, GmlSurface, GmlMultiPoint, GmlMultiLineString, GmlMultiPolygon, GmlRectifiedGridCoverage, GmlGridCoverage, GmlReferenceableGridCoverage, GmlMultiPointCoverage, GmlFeature, GmlFeatureCollection, Geometry, Feature, FeatureCollection } from '../types.js';
export interface ShapefileOptions {
    /**
     * Internal folder name in the ZIP
     * @default 'layers'
     */
    folder?: string;
    /**
     * Filename for the ZIP file (without extension)
     * @default 'shapefile'
     */
    filename?: string;
    /**
     * Output type: 'blob', 'base64', 'arraybuffer'
     * @default 'blob'
     */
    outputType?: 'blob' | 'base64' | 'arraybuffer';
    /**
     * Compression method: 'STORE' or 'DEFLATE'
     * @default 'DEFLATE'
     */
    compression?: 'STORE' | 'DEFLATE';
    /**
     * Custom layer names by geometry type
     */
    types?: {
        point?: string;
        polygon?: string;
        polyline?: string;
    };
    /**
     * Custom projection string in WKT format
     * If not specified, WGS84 will be used
     */
    prj?: string;
    /**
     * Truncate property names to 10 characters (Shapefile limitation)
     * @default true
     */
    truncateFieldNames?: boolean;
}
/**
 * Builder that generates GeoJSON and provides methods to export as Shapefile
 */
export declare class ShapefileBuilder implements Builder<Geometry, Feature, FeatureCollection> {
    private geojsonBuilder;
    constructor();
    buildPoint(gml: GmlPoint): Geometry;
    buildLineString(gml: GmlLineString): Geometry;
    buildPolygon(gml: GmlPolygon): Geometry;
    buildMultiPoint(gml: GmlMultiPoint): Geometry;
    buildMultiLineString(gml: GmlMultiLineString): Geometry;
    buildMultiPolygon(gml: GmlMultiPolygon): Geometry;
    buildLinearRing(gml: GmlLinearRing): Geometry;
    buildEnvelope(gml: GmlEnvelope): Feature;
    buildBox(gml: GmlBox): Feature;
    buildCurve(gml: GmlCurve): Geometry;
    buildSurface(gml: GmlSurface): Geometry;
    buildRectifiedGridCoverage(gml: GmlRectifiedGridCoverage): Feature;
    buildGridCoverage(gml: GmlGridCoverage): Feature;
    buildReferenceableGridCoverage(gml: GmlReferenceableGridCoverage): Feature;
    buildMultiPointCoverage(gml: GmlMultiPointCoverage): Feature;
    buildFeature(gml: GmlFeature): Feature;
    buildFeatureCollection(gml: GmlFeatureCollection): FeatureCollection;
    /**
     * Convert GeoJSON FeatureCollection to Shapefile ZIP
     *
     * @param featureCollection GeoJSON FeatureCollection
     * @param options Shapefile export options
     * @returns Promise resolving to ZIP file (type depends on outputType option)
     */
    toZip(featureCollection: FeatureCollection, options?: ShapefileOptions): Promise<any>;
    /**
     * Truncate property names to 10 characters (Shapefile limitation)
     */
    private truncatePropertyNames;
    /**
     * Generate WGS84 WKT projection string
     * This is the default projection for most GML data
     */
    static getWgs84Prj(): string;
    /**
     * Generate Web Mercator (EPSG:3857) WKT projection string
     * Common for web mapping applications
     */
    static getWebMercatorPrj(): string;
}
/**
 * Helper function to export GeoJSON FeatureCollection as Shapefile ZIP
 *
 * @param featureCollection GeoJSON FeatureCollection
 * @param options Shapefile export options
 * @returns Promise resolving to ZIP file (type depends on outputType option, default is Blob)
 */
export declare function toShapefile(featureCollection: FeatureCollection, options?: ShapefileOptions): Promise<any>;
