/// import stream = require('stream'); import events = require('events'); import { AuthManager, AuthRequest, AuthResponse } from './auth'; import { Mountpoint, MountpointOptions } from './mountpoint'; import { Connection } from './connection'; import { Transport } from './transport'; import { Sourcetable } from './sourcetable'; export interface CasterParameters { authManager: AuthManager; mountpointOptions?: MountpointOptions | ((mountpointName: string) => MountpointOptions); } export declare class Caster extends events.EventEmitter { static readonly NAME = "NodeNtripCaster/0.0.1"; private readonly authManager; private readonly mountpointOptions?; readonly _transports: Set; get transports(): ReadonlySet; readonly _connections: Set; get connections(): ReadonlySet; readonly _mountpoints: Map; get mountpoints(): ReadonlyMap; staticSourcetableEntries: Sourcetable.Entry[]; constructor(parameters: CasterParameters); authenticate(request: AuthRequest): Promise; private createMountpoint; private prepareMountpoint; private connect; addTransport(constructor: CasterTransportDefinition): Transport; removeTransport(transport: Transport): void; /** * Gets a list of sourcetable entries for the caster with an optional set of filters * * @param filters Optional filters to apply to the sourcetable list * @param auth Authentication request for auth filter */ getSourcetableEntries(filters?: Sourcetable.Filters, auth?: AuthRequest): Promise; /** * Generates the sourcetable for the caster with an optional set of filters * * @param filters Optional filters to apply to the sourcetable list * @param auth Authentication request for auth filter */ generateSourcetable(filters?: Sourcetable.Filters, auth?: AuthRequest): Promise; } export interface CasterTransportInterface { authenticate(request: AuthRequest): Promise; connect(params: CasterConnectionParameters): Connection; generateSourcetable(filters?: Sourcetable.Filters, auth?: AuthRequest): Promise; } export declare type CasterTransportDefinition = (caster: CasterTransportInterface) => Transport; export interface CasterConnectionParameters { type: 'server' | 'client'; mountpoint: string; transport: Transport; source: any; gga?: string; str?: string; input?: stream.Readable; output?: stream.Writable; stream?: stream.Duplex; auth?: AuthResponse; }