import * as plugins from '../plugins.ts';
import * as data from '../data/index.ts';

export interface IReq_GetServiceLogStream extends plugins.typedrequestInterfaces.implementsTR<
  plugins.typedrequestInterfaces.ITypedRequest,
  IReq_GetServiceLogStream
> {
  method: 'getServiceLogStream';
  request: {
    identity: data.IIdentity;
    serviceName: string;
  };
  response: {
    logStream: plugins.typedrequestInterfaces.IVirtualStream;
  };
}

export interface IReq_GetPlatformServiceLogStream extends plugins.typedrequestInterfaces.implementsTR<
  plugins.typedrequestInterfaces.ITypedRequest,
  IReq_GetPlatformServiceLogStream
> {
  method: 'getPlatformServiceLogStream';
  request: {
    identity: data.IIdentity;
    serviceType: data.TPlatformServiceType;
  };
  response: {
    logStream: plugins.typedrequestInterfaces.IVirtualStream;
  };
}

export interface IReq_GetNetworkLogStream extends plugins.typedrequestInterfaces.implementsTR<
  plugins.typedrequestInterfaces.ITypedRequest,
  IReq_GetNetworkLogStream
> {
  method: 'getNetworkLogStream';
  request: {
    identity: data.IIdentity;
    filter?: {
      domain?: string;
      sampleRate?: number;
    };
  };
  response: {
    logStream: plugins.typedrequestInterfaces.IVirtualStream;
  };
}

export interface IReq_GetEventStream extends plugins.typedrequestInterfaces.implementsTR<
  plugins.typedrequestInterfaces.ITypedRequest,
  IReq_GetEventStream
> {
  method: 'getEventStream';
  request: {
    identity: data.IIdentity;
  };
  response: {
    eventStream: plugins.typedrequestInterfaces.IVirtualStream;
  };
}
