import { CbEvents, getSDK as WasmGetSDK } from 'open-im-sdk-wasm';
import { MessageItem, WsResponse } from 'open-im-sdk-wasm/lib/types/entity';
import { WasmPathConfig, InitAndLoginConfig } from 'open-im-sdk-wasm/lib/types/params';
import Emitter from './utils/emitter';
import { InitConfig, FileMsgByPathParams, SoundMsgByPathParams, VideoMsgByPathParams } from './types/params';
type EmitterEvents = {
    [key in CbEvents]: any;
};
type WasmInterface = ReturnType<typeof WasmGetSDK>;
type IMSDKInterface = Omit<WasmInterface, 'login'> & {
    login: (params: Partial<InitAndLoginConfig>, operationID?: string) => Promise<WsResponse>;
    /**
     * @access only for electron
     */
    initSDK: (param: InitConfig, opid?: string) => Promise<boolean>;
    /**
     * @access only for electron
     */
    createImageMessage: (imagePath: string, opid?: string) => Promise<WsResponse<MessageItem>>;
    /**
     * @access only for electron
     */
    createImageMessageFromFullPath: (imagePath: string, opid?: string) => Promise<WsResponse<MessageItem>>;
    /**
     * @access only for electron
     */
    createVideoMessage: (params: VideoMsgByPathParams, opid?: string) => Promise<WsResponse<MessageItem>>;
    /**
     * @access only for electron
     */
    createVideoMessageFromFullPath: (params: VideoMsgByPathParams, opid?: string) => Promise<WsResponse<MessageItem>>;
    /**
     * @access only for electron
     */
    createSoundMessage: (params: SoundMsgByPathParams, opid?: string) => Promise<WsResponse<MessageItem>>;
    /**
     * @access only for electron
     */
    createSoundMessageFromFullPath: (params: SoundMsgByPathParams, opid?: string) => Promise<WsResponse<MessageItem>>;
    /**
     * @access only for electron
     */
    createFileMessage: (params: FileMsgByPathParams, opid?: string) => Promise<WsResponse<MessageItem>>;
    /**
     * @access only for electron
     */
    createFileMessageFromFullPath: (params: FileMsgByPathParams, opid?: string) => Promise<WsResponse<MessageItem>>;
};
type ElectronInvoke = (method: string, ...args: any[]) => Promise<WsResponse>;
type CreateElectronOptions = {
    wasmConfig?: WasmPathConfig;
    invoke?: ElectronInvoke;
};
export declare function getWithRenderProcess({ wasmConfig, invoke, }: CreateElectronOptions): {
    instance: IMSDKInterface;
    subscribeCallback: (event: keyof EmitterEvents, data: any) => Emitter;
};
export {};
