export interface ITypedRequest { /** * the method that the request response data is meant for */ method: string; /** * any needed auth data */ authInfo?: { jwt: string; }; /** * localData tracks things within typedrequest. * needed for VirtualStreams */ localData?: { firstTypedrouter?: any; } /** * server data that is added for dealing with the request server side. Will be omitted when sending the response */ serverData?: { jwtData: any; jwtValid: boolean; }; /** * the request data */ request: object; /** * the response data */ response: object; /** * any error information that might be encountered while dealing with a request */ error?: { text: string; data: any }; /** * retry information for smartly advising the client to retry at a later point in time */ retry?: { waitForMs: number; reason: string; }; /** * a correlation id that * used for matching request and response * !important. Don't remove. */ correlation?: { id: string; phase: 'request' | 'response'; }; } export type implementsTR = {}; export interface ITypedEvent { name: string; uniqueEventId: string; payload: T; } export interface ITag { name: string; payload: any; } export type implementsTag = {}; export interface IStreamRequest extends implementsTR< ITypedRequest, IStreamRequest > { method: '##VirtualStream##'; request: { streamId: string; type: 'start' | 'binaryChunk' | 'object' | 'end' | 'keepAlive'; streamChunk?: any; keepAlive?: boolean; next?: boolean; }; response: { streamId: string; type: 'start' | 'binaryChunk' | 'object' | 'end' | 'keepAlive'; streamChunk?: any; keepAlive?: boolean; next?: boolean; }; }