import interpolate from 'string-interp';
import { SchemaRetriever } from 'thingtalk';
import { FormattedObjectSpec, FormattedObject } from './format_objects';
declare type PlainObject = {
    [key: string]: unknown;
};
interface TextSpec {
    type: 'text';
    text: string;
}
declare type FormatSpecChunk = string | FormattedObjectSpec | TextSpec;
export declare type FormatSpec = FormatSpecChunk[];
export declare type FormattedChunk = string | FormattedObject;
/**
 * An object that is able to convert structured ThingTalk results
 * into interactive cards suitable to supplement text or speech output.
 */
export default class CardFormatter extends interpolate.Formatter {
    private _schemas;
    private _;
    /**
     * Construct a new formatter.
     *
     * @param locale - the user's locale, as a BCP47 tag
     * @param timezone - the user's timezone, as a string in the IANA timezone database (e.g. America/Los_Angeles, Europe/Rome)
     * @param schemaRetriever - the interface to access Thingpedia for formatting information
     */
    constructor(locale: string, timezone: string | undefined, schemaRetriever: SchemaRetriever);
    replaceInString(str: unknown, argMap: PlainObject): string | null;
    formatForType(outputType: string, outputValue: PlainObject, options: {
        removeText: boolean;
    }): Promise<FormattedChunk[]>;
    private _normalize;
}
export {};
