import { SchemaRetriever } from 'thingtalk';
import { FormattedObjectSpec, FormattedObject } from './format_objects';
declare type PlainObject = Record<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 a textual representation suitable to send as a notification
 * or a message.
 *
 * This is used to implement `$result` in ThingTalk.
 */
export default class TextFormatter {
    private _locale;
    private _timezone;
    private _schemas;
    private _interp;
    private _;
    private _cardFormatter;
    /**
     * 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);
    private _displayKey;
    private _displayKeyPart;
    private _getFunctionDef;
    private _getArgImportance;
    private _formatFallbackValue;
    private _formatFallbackObject;
    private _formatFallback;
    private _formatAggregation;
    formatForType(outputType: string, outputValue: PlainObject, hint: 'string'): Promise<string>;
    formatForType(outputType: string, outputValue: PlainObject, hint: 'messages'): Promise<FormattedChunk[]>;
    formatForType(outputType: string, outputValue: PlainObject, hint: string): Promise<string | FormattedChunk[]>;
    private _applyHint;
    private _anyToString;
    private _locationToString;
}
export {};
