import { CompletionsHandlers, KeyVerificationHandlers, ServiceFileTypes, ServiceIO, StreamHandlers } from '../serviceIO';
import { CameraFilesServiceConfig, FilesUploader, MicrophoneFilesServiceConfig } from '../../types/fileServiceConfigs';
import { ValidateMessageBeforeSending } from '../../types/validateMessageBeforeSending';
import { RequestInterceptor, ResponseInterceptor } from '../../types/interceptors';
import { RequestSettings, ServiceCallConfig } from '../../types/requestSettings';
import { KeyVerificationDetails } from '../../types/keyVerificationDetails';
import { AudioFormat, MicrophoneStyles } from '../../types/microphone';
import { Messages } from '../../views/chat/messages/messages';
import { GenericObject } from '../../types/object';
import { FILE_TYPES } from '../../types/fileTypes';
import { CustomStyle } from '../../types/styles';
import { AiAssistant } from '../../aiAssistant';
import { Button } from '../../types/button';
type BuildHeadersFunc = (key: string) => GenericObject<string>;
type Camera = {
    camera?: true | {
        button?: Button;
        modalContainerStyle?: CustomStyle;
    };
};
type Microphone = {
    microphone?: true | {
        styles?: MicrophoneStyles;
        maxDurationSeconds?: number;
        format?: AudioFormat;
    };
};
type Config = true | (FilesUploader & ServiceCallConfig & Camera & Microphone);
export declare class BaseServideIO implements ServiceIO {
    key?: string;
    validateConfigKey: boolean;
    insertKeyPlaceholderText: string;
    getKeyLink: string;
    canSendMessage: ValidateMessageBeforeSending;
    requestSettings?: RequestSettings;
    requestInterceptor: RequestInterceptor;
    responseInterceptor: ResponseInterceptor;
    fileTypes?: ServiceFileTypes;
    camera?: CameraFilesServiceConfig;
    recordAudio?: MicrophoneFilesServiceConfig;
    private readonly keyVerificationDetails;
    private readonly buildHeadersFunc;
    constructor(aiAssistant: AiAssistant, keyVerificationDetails: KeyVerificationDetails, buildHeadersFunc: BuildHeadersFunc, config?: Config, fileType?: FILE_TYPES);
    private processAudioConfig;
    private processImagesConfig;
    private buildRequestSettings;
    private cleanServiceConfig;
    private static canSendMessage;
    private keyAuthenticated;
    verifyKey(key: string, keyVerificationHandlers: KeyVerificationHandlers): void;
    callApi(_: Messages, __: CompletionsHandlers, ___: StreamHandlers, ____?: File[]): void;
}
export {};
//# sourceMappingURL=baseServiceIO.d.ts.map