import { Ast, Syntax } from 'thingtalk'; import { ReplacedResult } from '../template-string'; declare type ScopeMap = Record; export declare class Describer { private _; locale: string; timezone: string | undefined; private _langPack; private _entityAllocator; private _direction; private _datasets; private _preprocessedArgumentCanonicals; private _preprocessedFunctionCanonicals; constructor(locale: string, timezone: string | undefined, entityAllocator: Syntax.SequentialEntityAllocator, direction?: 'user' | 'agent'); private _interp; private _const; private _makeList; setDataset(kind: string, dataset: Ast.Dataset): void; setFullDataset(datasets: Ast.Dataset[]): void; private _displayLocation; private _getEntity; private _describeTime; private _describeDate; describeArg(arg: Ast.Value, scope?: ScopeMap, skipThePrefix?: boolean): ReplacedResult | null; private _describeRecurrentTimeRule; private _describeRecurrentTimeSpec; private _describeOperator; private _compoundTypeToSchema; private _describeAtomFilter; describeFilter(expr: Ast.BooleanExpression, schema?: Ast.FunctionDef | null, scope?: ScopeMap, canonical_overwrite?: ScopeMap): ReplacedResult | null; private _getDeviceAttribute; private _computeParamMatchingScore; private _exampleToTemplate; private _preprocessFunctionCanonical; private _preprocessParameterCanonical; private _findBestExampleUtterance; describePrimitive(obj: Ast.Invocation | Ast.ExternalBooleanExpression | Ast.FunctionCallExpression, scope?: ScopeMap): ReplacedResult | null; private _describeIndex; private _describeFilteredTable; describeQuery(table: Ast.Expression): ReplacedResult | null; private _getArgCanonical; private __describeArgList; private _describeTimer; private _describeAtTimer; private _describeOnTimer; describeStream(stream: Ast.Expression): ReplacedResult | null; describeAction(action: Ast.Expression, scope?: ScopeMap): ReplacedResult | null; private _describeExpression; describeExpressionStatement(r: Ast.ExpressionStatement): ReplacedResult | null; private _describeAssignment; describeProgram(program: Ast.Program): ReplacedResult | null; describeDialogueState(state: Ast.DialogueState): ReplacedResult | null; describePermissionFunction(permissionFunction: Ast.PermissionFunction, functionType: 'query' | 'action', scope: ScopeMap): ReplacedResult | null; describePermissionRule(permissionRule: Ast.PermissionRule): ReplacedResult | null; private _describeSpecial; private _describeControlCommand; describe(input: Ast.Input): ReplacedResult | null; } export declare function getProgramName(program: Ast.Program): string; export {};