import * as Tp from 'thingpedia';
import * as ThingTalk from 'thingtalk';
import { SentenceExample } from '../parsers';
interface ParameterRecord {
    preprocessed: string;
    weight: number;
}
interface ParameterProvider {
    get(type: 'entity' | 'string', key: string): Promise<ParameterRecord[]>;
}
declare type SamplingType = 'random' | 'uniform' | 'default' | 'sequential';
interface ParameterReplacerOptions {
    thingpediaClient: Tp.BaseClient;
    schemaRetriever: ThingTalk.SchemaRetriever;
    constProvider: ParameterProvider;
    paramLocale: string;
    rng: () => number;
    debug?: boolean;
    addFlag?: boolean;
    quotedProbability?: number;
    untypedStringProbability?: number;
    maxSpanLength?: number;
    replaceLocations?: boolean;
    replaceNumbers?: boolean;
    cleanParameters?: boolean;
    requotable?: boolean;
    numAttempts?: number;
    syntheticExpandFactor?: number;
    noQuoteExpandFactor?: number;
    paraphrasingExpandFactor?: number;
    samplingType?: SamplingType;
    subsetParamSet?: [number, number];
}
export default class ParameterReplacer {
    private _tpClient;
    private _schemas;
    private _loader;
    private _rng;
    private _addFlag;
    private _paramLangPack;
    private _quotedProbability;
    private _untypedStringProbability;
    private _maxSpanLength;
    private _replaceLocations;
    private _replaceNumbers;
    private _cleanParameters;
    private _requotable;
    private _numAttempts;
    private _debug;
    private _blowUpSynthetic;
    private _blowUpNoQuote;
    private _blowUpParaphrasing;
    private _blowUpAugmented;
    private _warned;
    constructor(options: ParameterReplacerOptions);
    private _warn;
    private _blowupFactor;
    private _getSlotArg;
    private _getParamListKey;
    private _getEntityListKey;
    private _getFallbackParamListKey;
    private _transformValue;
    private _getValueListForSlot;
    private _getValueListForToken;
    private _sampleParam;
    private _replaceTokensInSentence;
    private _replaceTokensInProgram;
    private _replaceWithSlot;
    private _computeReplaceableParameters;
    process(example: SentenceExample): Promise<SentenceExample[]>;
}
export {};
