import { CreateBaseLayerActions, Nullable, LayerTypes } from '../../types';
import { MaybeRef } from 'vue';
import { SourceSpecification, FilterSpecification, Map, LayerSpecification } from 'maplibre-gl';

/**
 * Layer creation status enum for better state management
 */
export declare enum LayerStatus {
    NotCreated = "not-created",
    Creating = "creating",
    Created = "created",
    Error = "error"
}
export interface CreateBaseLayerProps<Layer extends LayerSpecification> {
    map: MaybeRef<Nullable<Map>>;
    id?: string;
    source: MaybeRef<string | SourceSpecification | object | null | undefined>;
    type: LayerTypes;
    beforeId?: string;
    filter?: FilterSpecification;
    layout?: Layer['layout'];
    paint?: Layer['paint'];
    maxzoom?: number;
    minzoom?: number;
    metadata?: object;
    sourceLayer?: string;
    debug?: boolean;
    register?: (actions: CreateBaseLayerActions<Layer>, map: Map) => void;
}
export interface EnhancedLayerActions<Layer extends LayerSpecification> extends CreateBaseLayerActions<Layer> {
    layerStatus: Readonly<LayerStatus>;
    isLayerReady: boolean;
    refreshLayer: () => void;
    updateLayer: (updates: {
        filter?: FilterSpecification;
        minzoom?: number;
        maxzoom?: number;
        paint?: Record<string, any>;
        layout?: Record<string, any>;
    }) => void;
}
/**
 * Composable for creating and managing MapLibre GL Layers
 * Provides reactive layer management with error handling, performance optimizations, and enhanced API
 *
 * @param cfg - Configuration options for the layer
 * @returns Enhanced actions and state for the layer
 */
export declare function useCreateLayer<Layer extends LayerSpecification>(cfg: CreateBaseLayerProps<Layer>): EnhancedLayerActions<Layer>;
//# sourceMappingURL=useCreateLayer.d.ts.map