import { Decoder, Encoder } from '@iotize/common/converter/api';
import { Observable } from 'rxjs';
import { TapRequestFrame, TapResponseFrame } from './generated/models';
import { TapClientInterface } from './tap-client.interface';
export interface EncryptionAlgo extends Encoder<Uint8Array, Uint8Array>, Decoder<Uint8Array, Uint8Array> {
    setOptions(options: any): void;
}
export interface ExecutionContext {
    request: TapRequestFrame;
    bodyDecoder?: any;
    client: TapClientInterface;
}
export interface RequestHandler {
    handle(req: ExecutionContext): Observable<TapResponseFrame>;
}
export interface RequestInterceptor {
    intercept(req: ExecutionContext, next: RequestHandler): Observable<TapResponseFrame>;
}
export declare type RequestInterceptorFct = (req: ExecutionContext, next: RequestHandler) => Observable<TapResponseFrame>;
export declare type RequestInterceptorType = RequestInterceptorFct | RequestInterceptor;
