///
import CancellationToken from 'cancellationtoken';
import { MultiplexingStream, MultiplexingStreamOptions } from 'nerdbank-streams';
import { IAuthorizationService } from './IAuthorizationService';
import { IDisposable } from './IDisposable';
import { IRemoteServiceBroker } from './IRemoteServiceBroker';
import { IServiceBroker, ServiceBrokerEmitter } from './IServiceBroker';
import { ServiceActivationOptions } from './ServiceActivationOptions';
import { ServiceBrokerClientMetadata } from './ServiceBrokerClientMetadata';
import { ServiceMoniker } from './ServiceMoniker';
import { ServiceRpcDescriptor } from './ServiceRpcDescriptor';
declare const RemoteServiceBroker_base: new () => ServiceBrokerEmitter;
/**
* An {@link IServiceBroker} that provisions services from a (typically remote) {@link IRemoteServiceBroker}.
*/
export declare class RemoteServiceBroker extends RemoteServiceBroker_base implements IDisposable, IServiceBroker {
private readonly serviceBroker;
private readonly multiplexingStream?;
private static readonly fullConnectionSupport;
/**
* Connects to a pipe to a remote service broker that can then answer service requests
* @param server The pipe to connect to
* @param cancellationToken A cancellation token
*/
static connectToDuplex(server: NodeJS.ReadWriteStream, cancellationToken?: CancellationToken): Promise;
/**
* Connects to a remote service broker that can answer service requests
* @param server The remote service broker
* @param cancellationToken A cancellation token
*/
static connectToRemoteServiceBroker(server: IRemoteServiceBroker, cancellationToken?: CancellationToken): Promise;
/**
* Connects to a multiplexing remote service broker through a pipe
* @param server The pipe to connect to
* @param cancellationToken A cancellation token
*/
static connectToMultiplexingDuplex(server: NodeJS.ReadWriteStream, options?: MultiplexingStreamOptions, cancellationToken?: CancellationToken): Promise;
/**
* Connects to a multiplexing remote service broker
* @param server The remote service broker
* @param stream A multiplexing stream to use in communication
* @param cancellationToken A cancellation token
*/
static connectToMultiplexingRemoteServiceBroker(server: IRemoteServiceBroker, stream: MultiplexingStream, cancellationToken?: CancellationToken): Promise;
private static initializeBrokerConnection;
/**
* Indicates if the service broker has been disposed
*/
isDisposed: boolean;
/**
* Indicates if the service broker owns the multiplexing stream
*/
private ownsMxStream;
/**
* Defines the default client culture used in communication.
*/
defaultClientCulture: string;
/**
* Defines the default client UI culture used in communication.
*/
defaultClientUICulture: string;
private authorizationClient?;
/**
* Initializes a new instance of the [ServiceBroker](#ServiceBroker) class
* @param serviceBroker The remote service broker to use for requests
* @param clientMetadata The client metadata for the remote service broker
* @param multiplexingStream An optional multiplexing stream to use in making requests
*/
constructor(serviceBroker: IRemoteServiceBroker, clientMetadata: ServiceBrokerClientMetadata, multiplexingStream?: MultiplexingStream | undefined);
/**
* Sets the authorization service to use when sending requests
* @param authorizationService The authorization service
*/
setAuthorizationService(authorizationService: IAuthorizationService): void;
getProxy(serviceDescriptor: ServiceRpcDescriptor, options?: ServiceActivationOptions, cancellationToken?: CancellationToken): Promise<(T & IDisposable) | null>;
getPipe(serviceMoniker: ServiceMoniker, options?: ServiceActivationOptions, cancellationToken?: CancellationToken): Promise;
dispose(): void;
private applyAuthorization;
}
export {};