import { resolveMapMarkerDomPortalStacking } from "../../markers/model/mapMarkerDomPortalStacking"; import { resolveAdaptiveMarkerState } from "../../markers/model/markerResolvers"; import { downgradeMarkerDomSize, upgradeMarkerDomSize } from "../../markers/model/markerSizeMap"; import { DEFAULT_MARKER_SIZE_BREAKPOINTS, MARKER_DISC_BORDER_WIDTH_PX, pickMarkerSize, pickRenderMedium, pickSymbolDescriptor, pickSymbolDiameter } from "./adaptiveHelpers"; export type AdaptiveMarkerHelpers = Readonly<{ pickMarkerSize: typeof pickMarkerSize; pickRenderMedium: typeof pickRenderMedium; pickSymbolDescriptor: typeof pickSymbolDescriptor; pickSymbolDiameter: typeof pickSymbolDiameter; resolveAdaptiveMarkerState: typeof resolveAdaptiveMarkerState; downgradeMarkerDomSize: typeof downgradeMarkerDomSize; upgradeMarkerDomSize: typeof upgradeMarkerDomSize; resolveMapMarkerDomPortalStacking: typeof resolveMapMarkerDomPortalStacking; DEFAULT_MARKER_SIZE_BREAKPOINTS: typeof DEFAULT_MARKER_SIZE_BREAKPOINTS; MARKER_DISC_BORDER_WIDTH_PX: typeof MARKER_DISC_BORDER_WIDTH_PX; }>; /** * Build-your-own hook: stable references to the full adaptive marker kit. * * Returns the complete set of primitives needed to hand-roll an adaptive marker * layer (DOM ↔ symbol mode switching, zoom-based sizing, portal stacking) while * staying consistent with `useMarkers`'s built-in rendering pipeline. * * @example * ```tsx * const { * pickRenderMedium, pickMarkerSize, pickSymbolDescriptor, * resolveAdaptiveMarkerState, resolveMapMarkerDomPortalStacking, * } = useAdaptiveMarkerHelpers(); * * // Inside your adaptive render callback: * const medium = pickRenderMedium(ctx); * if (medium === "symbol") return pickSymbolDescriptor(color, theme, ctx); * const size = pickMarkerSize(ctx); * const state = resolveAdaptiveMarkerState({ selected, hovered }); * ``` */ export declare const useAdaptiveMarkerHelpers: () => AdaptiveMarkerHelpers;