import { Field, RootField } from './data_tree';
import { RenderPluginFactory, RenderPluginInstance } from './api/plugin-types';
import { RenderFieldRegistryEntry } from './registry/types';
import { RenderLogCollector } from './component/render-log-collector';
import type * as Malloy from '@malloydata/malloy-interfaces';
export type OnPluginCreateError = (error: Error, factory: RenderPluginFactory, field: Field, plugins: RenderPluginInstance[]) => void;
export declare class RenderFieldMetadata {
    private pluginRegistry;
    private pluginOptions;
    private onPluginCreateError?;
    private registry;
    private rootField;
    readonly logCollector: RenderLogCollector;
    constructor(result: Malloy.Result, pluginRegistry?: RenderPluginFactory[], pluginOptions?: Record<string, unknown>, onPluginCreateError?: OnPluginCreateError | undefined, logCollector?: RenderLogCollector);
    private instantiatePluginsForField;
    private registerFields;
    private populateRenderFieldProperties;
    getAllFields(): Field[];
    getRootField(): RootField;
    getPluginsForField(fieldKey: string): RenderPluginInstance[];
    getFieldEntry(fieldKey: string): RenderFieldRegistryEntry | undefined;
    /**
     * Validate tag/field type compatibility and tag values.
     * Called during registerFields for each field.
     */
    private validateFieldTags;
    /**
     * Mark tag paths declared by plugins and built-in renderers as read.
     * This prevents false-positive "unknown tag" warnings for tags that
     * are consumed at render time or interaction time but may not have
     * been read yet (e.g. virtualized charts, hover tooltips).
     */
    private markDeclaredTags;
}
