import { Tag } from '@malloydata/malloy-tag';
import { Renderer } from './renderer';
import { DataRenderOptions, RenderDef, StyleDefaults } from './data_styles';
import { RendererOptions } from './renderer_types';
import { Field } from '../data_tree';
type TagPropertyExtractor<T extends DataRenderOptions> = (options: T, tagObj: Tag | undefined) => void;
export declare abstract class RendererFactory<T extends DataRenderOptions> {
    readonly tagOptionExtractors: Record<string, TagPropertyExtractor<T>>;
    protected addExtractor(extractor: TagPropertyExtractor<T>, ...tags: string[]): void;
    activates(_field: Field): boolean;
    isValidMatch(_field: Field): boolean;
    matches(renderDef: RenderDef): boolean;
    parseTagParameters(tags: Tag): T;
    abstract get rendererName(): string | undefined;
    abstract create(document: Document, styleDefaults: StyleDefaults, rendererOptions: RendererOptions, field: Field, renderOptions: T, timezone?: string): Renderer;
}
export {};
