import { SystemMessageDataType, OriginalMessageType, AppInfo, HistoryMessages, AdditionalMeta, Status, AssistantServerActionMode, Mid } from '../../typings';
import { PacketWrapperFromServer } from '../voice/recognizers/asr';
import { Music2TrackProtocol } from '../voice/recognizers/mtt';
import { BatchableMethods, createProtocol } from './protocol';
import { SendSystemMessageData, MetaStringified } from './methods';
export interface ClientEvents {
    voice: (voice: Uint8Array, original: OriginalMessageType) => void;
    musicRecognition: (response: Music2TrackProtocol.MttResponse, original: OriginalMessageType) => void;
    stt: (data: {
        text?: OriginalMessageType['text'];
        response?: PacketWrapperFromServer;
    }, original: OriginalMessageType) => void;
    status: (status: Status, original: OriginalMessageType) => void;
    systemMessage: (systemMessage: SystemMessageDataType, original: OriginalMessageType) => void;
    history: (historyMessages: HistoryMessages[], original: OriginalMessageType) => void;
    ready: () => void;
}
export declare type SystemMessage = SystemMessageDataType & {
    messageId: string;
    messageName: OriginalMessageType[];
};
export declare const createClient: (protocol: ReturnType<typeof createProtocol>, provideMeta: ((additionalMeta?: AdditionalMeta | undefined) => Promise<MetaStringified>) | undefined, { getVoiceMeta }: {
    getVoiceMeta: () => Record<string, string>;
}) => {
    destroy: () => void;
    close: () => void;
    init: () => Promise<void>;
    createVoiceStream: (callback: ({ messageId, sendVoice }: Pick<BatchableMethods, 'messageId' | 'sendVoice'>) => Promise<void>, additionalMeta: AdditionalMeta) => Promise<void>;
    sendData: (data: Record<string, unknown>, messageName?: string, meta?: MetaStringified | undefined) => Mid;
    sendMeta: (sendSystemMessage: (data: SendSystemMessageData, last: boolean, params?: {
        meta?: MetaStringified | undefined;
    } | undefined) => void, additionalMeta?: AdditionalMeta | undefined) => Promise<void>;
    sendOpenAssistant: ({ isFirstSession }?: {
        isFirstSession: boolean;
    }) => Promise<SystemMessageDataType>;
    sendServerAction: (serverAction: unknown, appInfo: AppInfo, messageName?: string, mode?: AssistantServerActionMode | undefined) => Promise<Mid | undefined>;
    sendText: (text: string, isSsml?: boolean, shouldSendDisableDubbing?: boolean | undefined, additionalMeta?: AdditionalMeta | undefined) => Promise<Mid | undefined>;
    sendCancel: (messageId: Mid) => void;
    sendMute: (messageId: Mid) => void;
    on: <K extends keyof ClientEvents>(event: K, cb: ClientEvents[K]) => () => void;
    waitForAnswer: (messageId: Mid) => Promise<SystemMessageDataType>;
    readonly status: "ready" | "connecting" | "connected" | "closed";
    readonly currentMessageId: number;
};
//# sourceMappingURL=client.d.ts.map