import { Ast } from 'thingtalk';
import SimulationDialogueAgent, { SimulationDialogueAgentOptions } from '../../dialogue-agent/simulator/simulation_dialogue_agent';
import { extractConstants, createConstants } from './constants';
export * from './describe';
export * from './syntax';
export * from './dialogue_state_utils';
export * from './example-utils';
import { clean } from '../misc-utils';
export { clean };
export declare type Input = Ast.Input;
export declare type DialogueState = Ast.DialogueState;
export declare type Simulator = SimulationDialogueAgent;
export declare type SimulatorOptions = SimulationDialogueAgentOptions;
export { extractConstants, createConstants, };
export declare function createSimulator(options: SimulationDialogueAgentOptions): SimulationDialogueAgent;
declare class StateValidator {
    private _policyManifest;
    private _policy;
    constructor(policyManifest: string | undefined);
    load(): Promise<void>;
    validateUser(state: Ast.DialogueState): void;
    validateAgent(state: Ast.DialogueState): void;
}
export declare function createStateValidator(policyManifest?: string): StateValidator;
interface DialoguePolicy {
    handleAnswer(state: Ast.DialogueState, value: Ast.Value): Promise<Ast.DialogueState | null>;
}
export declare function inputToDialogueState(policy: DialoguePolicy, context: Ast.DialogueState | null, input: Ast.Input): Promise<Ast.DialogueState | null>;
