import { EncoderDecoder, EncoderDecoderFct } from '@iotize/common/converter/api';
import { BodyDecoder } from '@iotize/tap/client/api';
declare type PipeConverterType<InputType, OutputType> = EncoderDecoder<OutputType, InputType> | EncoderDecoderFct<InputType, InputType>;
export declare class PipeConverterBuilder {
    aliases: {
        [key: string]: PipeConverterType<any, any>;
    };
    constructor(aliases?: {
        [key: string]: PipeConverterType<any, any>;
    });
    pipe<T>(converter: PipeConverterType<Uint8Array, T> | string): PipeConverter<T>;
}
/**
 * Pipe multiple converter one after another
 */
export declare class PipeConverter<T> implements BodyDecoder<T> {
    converters: PipeConverterType<any, any>[];
    aliases: {
        [key: string]: PipeConverterType<any, any>;
    };
    constructor(converters: PipeConverterType<any, any>[], aliases?: {
        [key: string]: PipeConverterType<any, any>;
    });
    decode(body: Uint8Array): T;
    encode(value: T): Uint8Array;
    pipe<OutputType>(converter: PipeConverterType<T, OutputType> | string): PipeConverter<OutputType>;
    static pipe<T>(converter: PipeConverterType<Uint8Array, T>): PipeConverter<T>;
}
export {};
