import { BodyDecoder, BodyEncoder } from '@iotize/tap/client/api';
export interface NumberDecoderOptions {
    signed: boolean;
    /**
     * Size of number if bits
     */
    sizeOf: 8 | 16 | 32;
    leastSignificantBitFirst: boolean;
}
export interface Newable<T> {
    new (...args: any[]): T;
}
export declare class NumberConverter implements BodyEncoder<number>, BodyDecoder<number> {
    options: NumberDecoderOptions;
    constructor(options: NumberDecoderOptions);
    /**
     * Number as unsigned 8 bits converter
     * @param lsb true for least significant bit first
     */
    static uint8(lsb?: boolean): NumberConverter;
    /**
     * Number as unsigned 16 bits converter
     * @param lsb true for least significant bit first
     */
    static uint16(lsb?: boolean): NumberConverter;
    /**
     * Number as unsigned 32 bits converter
     * @param lsb true for least significant bit first
     */
    static uint32(lsb?: boolean): NumberConverter;
    /**
     * Number as signed 8 bits converter
     * @param lsb  true for least significant bit first
     */
    static int8(lsb?: boolean): NumberConverter;
    /**
     * Number as signed 16 bits converter
     * @param lsb  true for least significant bit first
     */
    static int16(lsb?: boolean): NumberConverter;
    /**
     * Number as signed 32 bits converter
     * @param lsb  true for least significant bit first
     */
    static int32(lsb?: boolean): NumberConverter;
    decode(body: Uint8Array): number;
    encode(value: number): Uint8Array;
    static toOpaqueMsb(input: number, sizeOf: 8 | 16 | 32 | number): Uint8Array;
    static fromOpaqueMsb(data: Uint8Array, sizeOf?: number): number;
    /**
     * @param size size in bytes
     */
    static fromBytes(data: Uint8Array, size: number, signed: boolean, lsb: boolean): number;
}
