import { Decoder, Encoder } from '@iotize/common/converter/api';
import { Observable } from 'rxjs';
import { Command as CommandInterface } from './request/definitions';
import { IoTizeClient } from './iotize-client.interface';
import { Response as ResponseInterface } from './response/definitions';
export interface EncryptionAlgo extends Encoder<Uint8Array, Uint8Array>, Decoder<Uint8Array, Uint8Array> {
    setOptions(options: any): void;
}
export interface ExecutionContext {
    command: CommandInterface;
    bodyDecoder?: any;
    client: IoTizeClient;
    [key: string]: any;
}
export interface RequestHandler {
    handle(req: ExecutionContext): Observable<ResponseInterface<any>>;
}
export interface RequestInterceptor {
    intercept(req: ExecutionContext, next: RequestHandler): Observable<ResponseInterface<any>>;
}
export declare type RequestInterceptorFct = (req: ExecutionContext, next: RequestHandler) => Observable<ResponseInterface<any>>;
export declare type RequestInterceptorType = RequestInterceptorFct | RequestInterceptor;
