import '../generated/converter-stream-extension';
import { AesEcb128Converter } from '@iotize/common/crypto';
import { SinglePacket as SinglePacketModel } from '../generated/models';
import { SinglePacketKeyGenerator } from './definitions';
declare module '@iotize/tap/client/impl/lib/frame/tap-stream-core' {
    interface TapStreamReader {
        readSinglePacketPayloadFullData(): SinglePacketModel.Payload;
    }
}
export declare namespace EncryptedSinglePacketConverter {
    interface EncryptionOptions {
        hashKey: Uint8Array;
        username: string;
        serialNumber: string;
    }
}
export declare class SinglePacketEncryptionOptionsBuilder {
    static fromBlankKey(username: string): {
        hashKey: Uint8Array;
        serialNumber: string;
        username: string;
    };
    static fromHashKey(hashKey: Uint8Array, username: string): {
        hashKey: Uint8Array;
        serialNumber: string;
        username: string;
    };
    static fromUserCredentials(credentials: {
        username: string;
        password: string;
    }, options: {
        iterationNumber: number;
        salt: Uint8Array;
    }): {
        hashKey: Uint8Array;
        serialNumber: string;
        username: string;
    };
    static fromCurrentSessionData(sessionData: {
        username: string;
        storedKey: Uint8Array;
        serverKey: Uint8Array;
    }): {
        hashKey: Uint8Array;
        serialNumber: string;
        username: string;
    };
}
export declare class EncryptedSinglePacketConverter {
    options: EncryptedSinglePacketConverter.EncryptionOptions;
    encryptionAlgo: AesEcb128Converter;
    keyGenerator: SinglePacketKeyGenerator;
    constructor(options: EncryptedSinglePacketConverter.EncryptionOptions, encryptionAlgo?: AesEcb128Converter, keyGenerator?: SinglePacketKeyGenerator);
    static createWithBlankKey(): EncryptedSinglePacketConverter;
    setEncryptionOptions(options: Partial<EncryptedSinglePacketConverter.EncryptionOptions>): void;
    encode(packet: SinglePacketModel): Uint8Array;
    decode(packetData: Uint8Array): SinglePacketModel;
    _getEncryptionAlgo(header: SinglePacketModel.Header | Uint8Array): AesEcb128Converter;
    private computeKey;
}
