import { Thing } from './schema-simple.js';
/**
 * Options for applying micro data.
 */
export interface ApplyOptions {
    /**
     * Format the text for a HyperLink.
     *
     * @remarks
     *
     * If not given or returns null, the content of the link is left alone.
     */
    linkFormatter?: (data: string, elementData: DOMStringMap) => string | null;
    /**
     * Format the text for a time element.
     *
     * @remarks
     *
     * If not given, the content of the time element is left alone.
     */
    timeFormatter?: (data: string, elementData: DOMStringMap) => string;
    /**
     * Format the text for a data element.
     *
     * @remarks
     *
     * If not given, the content of the data element is left alone.
     */
    dataFormatter?: (data: string, elementData: DOMStringMap) => string;
    /**
     * Methods that allow for special handling for types.
     *
     * @remarks
     *
     * If a method returns false, then the properties of the item still go through the usual logic.
     */
    typeHelpers?: {
        /**
         * Map from type to special handler.
         *
         * @remarks
         *
         * If the method returns false, then the properties of the item still go through the usual logic.
         */
        [t: string]: (data: Thing, element: HTMLElement) => boolean;
    };
}
/**
 * Apply micro data to an HTML element tree.
 *
 * @remarks
 *
 * Generally, if a value is a string it will be set as the text for an element
 * and if an object it will recurse on the properties. To support values that
 * are an array,
 * {@linkcode https://developer.mozilla.org/en-US/docs/Web/API/HTMLTemplateElement | HTMLTemplateElement}s
 * are used. Each item in the array looks for a template with an attribute
 * `data-type` that matches the type. Strings look for a type of `Text`.
 *
 * @param data - The micro data to apply.
 * @param element - The root of the HTML element tree.
 * @param options - Optional options for applying data.
 *
 * @see {@link https://html.spec.whatwg.org/multipage/microdata.html}
 */
export declare function apply(data: Thing, element: HTMLElement, options?: ApplyOptions): void;
