import { Decoder, Encoder } from '@iotize/common/converter/api'; import { ComProtocol, ConnectionStateChangeEvent } from '@iotize/tap/protocol/api'; import { Observable } from 'rxjs'; import { RequestInterceptorType } from './definitions'; import { TapRequestFrame, TapResponseFrame } from './generated/models'; export interface ProtocolChangeEvent { newProtocol: ComProtocol; oldProtocol?: ComProtocol; } export interface TapClientInterface { commandEncoder: Encoder; responseDecoder: Decoder; /** * Get current protocol * @throw an error if no protocol */ getCurrentProtocol(): ComProtocol; addComProtocol(newProtocol: ComProtocol, id: string): this; switchProtocol(type: string): this; useComProtocol(protocol: ComProtocol | string): this; connect(): Observable; disconnect(): Observable; request(request: TapRequestFrame): Observable; onConnectionStateChange(): Observable; isConnected(): boolean; send(dataIn: Uint8Array): Observable; addInterceptor(interceptor: RequestInterceptorType): this; }