import { Class } from 'type-fest';
import { Layer as DeckLayer, LayerProps } from '@deck.gl/core';
import { Layer } from './types';
type DefaultProps = Partial<LayerProps> & Record<string, unknown>;
/**
 * Internal registry of library-level default props per deck.gl Layer class.
 * Not part of the public API — seed it here so the defaults don't have to be
 * repeated in every `setLayer` call. Subclasses inherit a parent's entry (see
 * {@link withLayerDefaults}).
 *
 * @internal
 */
export declare const layerDefaults: Map<Class<DeckLayer<{}>>, DefaultProps>;
/**
 * Builds a layer config of `type` with the library's default props injected
 * beneath `layer.props`, ready to pass straight to `setLayer`. Precedence:
 * deck.gl defaults < library defaults < the caller's `props`.
 *
 * Defaults are matched up the class hierarchy: a subclass (e.g. `VectorTileLayer`)
 * inherits the defaults registered for an ancestor (e.g. `TileLayer`).
 *
 * Use this when **creating** a layer. For incremental updates use plain
 * `setLayer(id, { props })` — wrapping an update would re-assert the defaults
 * over the layer's live state. The defaults↔caller props merge is shallow;
 * nested default objects/arrays are shared with the registry, so don't mutate
 * them in place.
 *
 * @example
 *   setLayer(id, withLayerDefaults(VectorTileLayer, { name: 'Counties', props: { data } }))
 *   // → { type: VectorTileLayer, name: 'Counties', props: { refinementStrategy: 'no-overlap', data } }
 */
export declare function withLayerDefaults<T extends Class<DeckLayer>>(type: T, layer?: Omit<Partial<Layer>, 'type'>): Layer;
export {};
