import CancellationToken from 'cancellationtoken' import { RemoteServiceConnectionInfo } from './RemoteServiceConnectionInfo' import { ServiceActivationOptions } from './ServiceActivationOptions' import { ServiceBrokerClientMetadata } from './ServiceBrokerClientMetadata' import { ServiceMoniker } from './ServiceMoniker' import { ServiceBrokerEmitter } from './IServiceBroker' /** * A service broker that can proffer services remotely. * Emits event when the availability of a service has changed. */ export interface IRemoteServiceBroker extends ServiceBrokerEmitter { /** * Establishes a connection with a client * @param clientMetadata Information about the client's capabilities * @param cancellationToken A cancellation token */ handshake(clientMetadata: ServiceBrokerClientMetadata, cancellationToken?: CancellationToken): Promise /** * Requests information about how to connect to the given service * @param serviceMoniker The moniker for the service being requested * @param options The activation options for the service * @param cancellationToken A cancellation token * @returns An object that describes supported service connections. Never null or undefined, but may be empty if the requested service is not available. */ requestServiceChannel( serviceMoniker: ServiceMoniker, options?: ServiceActivationOptions, cancellationToken?: CancellationToken ): Promise /** * Cancels a request for a service * @param serviceRequestId The GUID of the service request to cancel * @param cancellationToken A cancellation token */ cancelServiceRequest(serviceRequestId: string, cancellationToken?: CancellationToken): Promise }