import { AssistantAppState, AssistantServerAction, AssistantClientCustomizedCommand, AssistantSmartAppData, AssistantSmartAppError, AssistantSmartAppCommand, Hints, Suggestions } from './typings';
import { ObserverFunc } from './nanoobservable';
export interface AssistantEvents<A extends AssistantSmartAppData> {
    start: () => void;
    data: (command: AssistantClientCustomizedCommand<A>) => void;
    command: <T extends AssistantSmartAppCommand['smart_app_data'] = AssistantSmartAppCommand['smart_app_data']>(data: T) => void;
    error: <T extends AssistantSmartAppError['smart_app_error'] = AssistantSmartAppError['smart_app_error']>(error: T) => void;
}
export interface SendDataParams {
    action: AssistantServerAction;
    name?: string;
    requestId?: string;
}
export interface CreateAssistantParams {
    getState: () => AssistantAppState;
    getRecoveryState?: () => unknown;
    ready?: boolean;
}
export declare const createAssistant: <A extends AssistantSmartAppData>({ getState, getRecoveryState, ready, }: CreateAssistantParams) => {
    cancelTts: (() => void) | undefined;
    close: () => void;
    getInitialData: () => AssistantClientCustomizedCommand<AssistantSmartAppCommand>[];
    findInInitialData: <T>({ type, command }: {
        type?: string | undefined;
        command?: string | undefined;
    }) => T | undefined;
    getRecoveryState: () => unknown;
    on: <K extends "command" | "error" | "data" | "start">(event: K, cb: AssistantEvents<A>[K]) => () => void;
    sendAction: <D extends {
        type: string;
        payload?: Record<string, unknown> | undefined;
    } = {
        type: string;
        payload?: Record<string, unknown> | undefined;
    }, E extends {
        code: number;
        description: string;
    } = {
        code: number;
        description: string;
    }>(action: {
        type: string;
        payload: Record<string, unknown>;
    }, onData?: ObserverFunc<D> | undefined, onError?: ObserverFunc<E> | undefined, { name, requestId }?: Pick<SendDataParams, 'name' | 'requestId'>) => () => void;
    sendData: ({ action, name, requestId }: SendDataParams, onData?: ObserverFunc<AssistantSmartAppError | A> | undefined) => (() => void);
    setGetState: (nextGetState: () => {}) => void;
    setGetRecoveryState: (nextGetRecoveryState?: (() => unknown) | undefined) => void;
    setSuggests: (suggestions: Suggestions['buttons']) => void;
    setHints: (hints: Hints) => void;
    sendText: (message: string) => void;
    ready: () => void;
};
export * from './typings';
//# sourceMappingURL=createAssistant.d.ts.map