/** A minimal structural interface for the d3plus class instances that the framework wrappers drive. Every visualization, component, and shape exposes `.config()`; charts additionally expose `.render()` and `.destroy()`, plus loader methods (`data()`, `links()`, …) for their data-like fields. */ export interface D3plusInstance { config(c: Record): unknown; render?(callback?: () => void): unknown; destroy?(): unknown; [key: string]: unknown; } /** Constructor type for d3plus visualization, component, and shape classes. */ export type D3plusConstructor = new (...args: any[]) => D3plusInstance; /** Merges the supplied config objects over a fresh `{select: node}` target, routes any `` + `Format` pairs to their loader methods, then applies whatever remains via `instance.config()`. Shared by every d3plus framework wrapper so this routing lives in exactly one place. @param instance A d3plus class instance. @param node The DOM element the visualization renders into (its `select`). @param configs One or more config objects, merged left-to-right (later objects win); `undefined`/`null` entries are ignored. */ export declare function applyConfig(instance: D3plusInstance, node: Element, ...configs: (Record | undefined)[]): D3plusInstance; /** Stable hash that serializes functions by their source, so function-valued config props (accessors, formatters) still register as changed when their body changes. Wrappers use this to diff config across a framework's render cycles — two structurally identical config objects hash equal, so an unchanged config skips a re-render. @param val Any config value. */ export declare function hash(val: unknown): string;