import { Container, interfaces } from '@theia/core/shared/inversify';
import { ModelAccessorBusClient, ModelAccessorBusProtocol, ProviderChangeSubscriptionToken } from '../../common';
import { FrontendModelAccessorBusSubscriber } from '../frontend-model-accessor-bus-subscriber';
/**
 * All that we need for testing are the subscription-related methods and `get()`.
 */
export declare class FakeModelAccessorBusProtocol implements ModelAccessorBusProtocol {
    protected nextSubscriptionId: number;
    protected readonly subscriptions: Map<number, ProviderChangeSubscriptionToken>;
    protected client: ModelAccessorBusClient | undefined;
    protected readonly pendingSubs: Promise<ProviderChangeSubscriptionToken>[];
    subscribe(_context: string, accessorId: string): Promise<ProviderChangeSubscriptionToken>;
    closeSubscription(token: ProviderChangeSubscriptionToken): void;
    /**
     * (fake) get function that returns the first parameter given
     *
     * @param _context not used
     * @param _accessorId not used
     * @param parameters a list of parameters (can be empty)
     * @returns the first parameter given
     */
    get<T>(_context: string, _accessorId: string, ...parameters: unknown[]): Promise<T | undefined>;
    setClient(client: ModelAccessorBusClient): void;
    get pendingSubsReady(): Promise<void>;
    protected lookupSubs(accessorId: string): ProviderChangeSubscriptionToken[];
}
export declare function bindFakeModelAccessorBusProtocol(binder: interfaces.Bind | Container): void;
export declare function connectClient(modelAccessorBus: FakeModelAccessorBusProtocol, subscriber: FrontendModelAccessorBusSubscriber): void;
//# sourceMappingURL=fake-model-accessor-bus-protocol.d.ts.map