import { Nullable } from '../../types';
import { MaybeRef } from 'vue';
import { Map, MapLayerEventType, LayerSpecification } from 'maplibre-gl';

/**
 * Layer event listener status enum for better state management
 */
export declare enum LayerEventListenerStatus {
    NotAttached = "not-attached",
    Attached = "attached",
    Error = "error"
}
interface LayerEventListenerProps<T extends keyof MapLayerEventType> {
    map: MaybeRef<Nullable<Map>>;
    layer: MaybeRef<Nullable<LayerSpecification | string>>;
    event: keyof MapLayerEventType;
    on: (e: MapLayerEventType[T]) => void;
    debug?: boolean;
    once?: boolean;
}
interface LayerEventListenerActions {
    removeListener: () => void;
    attachListener: () => void;
    isListenerAttached: boolean;
    listenerStatus: Readonly<LayerEventListenerStatus>;
    layerId: string | null;
}
/**
 * Composable for managing MapLibre GL Layer Event Listeners
 * Provides reactive layer event listener with error handling, performance optimizations, and enhanced API
 *
 * @param props - Configuration options for the layer event listener
 * @returns Enhanced actions and state for the layer event listener
 */
export declare function useLayerEventListener<T extends keyof MapLayerEventType>(props: LayerEventListenerProps<T>): LayerEventListenerActions;
export {};
//# sourceMappingURL=useLayerEventListener.d.ts.map