import MainThreadRpcDriver from './MainThreadRpcDriver';
import WebWorkerRpcDriver from './WebWorkerRpcDriver';
import type PluginManager from '../PluginManager';
import type { AnyConfigurationModel } from '../configuration';
type DriverClass = WebWorkerRpcDriver | MainThreadRpcDriver;
interface BackendConfigurations {
    WebWorkerRpcDriver?: Omit<ConstructorParameters<typeof WebWorkerRpcDriver>[0], 'config'>;
    MainThreadRpcDriver?: Omit<ConstructorParameters<typeof MainThreadRpcDriver>[0], 'config'>;
}
declare const DriverClasses: {
    WebWorkerRpcDriver: typeof WebWorkerRpcDriver;
    MainThreadRpcDriver: typeof MainThreadRpcDriver;
};
export default class RpcManager {
    pluginManager: PluginManager;
    mainConfiguration: AnyConfigurationModel;
    backendConfigurations: BackendConfigurations;
    static configSchema: import("../configuration/configurationSchema").ConfigurationSchemaType<{
        defaultDriver: {
            type: string;
            description: string;
            defaultValue: string;
        };
        drivers: import("mobx-state-tree").IOptionalIType<import("mobx-state-tree").IMapType<import("mobx-state-tree").ITypeUnion<import("mobx-state-tree").ModelCreationType<import("mobx-state-tree/dist/internal").ExtractCFromProps<Record<string, any>>> | undefined, import("mobx-state-tree").ModelSnapshotType<Record<string, any>>, ({} & Partial<import("mobx-state-tree/dist/internal").ExtractCFromProps<Record<string, any>>> & import("mobx-state-tree/dist/internal").NonEmptyObject) | undefined>>, [undefined]>;
    }, import("../configuration/configurationSchema").ConfigurationSchemaOptions<undefined, undefined>>;
    driverObjects: Map<string, DriverClass>;
    constructor(pluginManager: PluginManager, mainConfiguration: AnyConfigurationModel, backendConfigurations: BackendConfigurations);
    getDriver(backendName: keyof typeof DriverClasses): DriverClass;
    getDriverForCall(_sessionId: string, _functionName: string, args: {
        rpcDriverName?: string;
    }): Promise<DriverClass>;
    call(sessionId: string, functionName: string, args: Record<string, unknown>, opts?: {}): Promise<unknown>;
}
export {};
