/// <reference types="node" />
/// <reference types="node" />
import Tunnel from '../tunnel/tunnel';
import { EventEmitter } from 'node:events';
import { Session, EcdhPrivateKey } from './hpke';
import { encryption } from '../../../../proto_gen/proto';
import Abort = encryption.EncryptionAbort;
export declare class EncryptionToTunnel extends EventEmitter {
    tunnel: Tunnel;
    messageEmitter: EventEmitter;
    buffer: Buffer;
    privateKey: EcdhPrivateKey;
    session: Session | null;
    writesPending: Array<Buffer>;
    static rejectionReasons: Map<Abort.CryptoError, string>;
    constructor(tunnel: Tunnel, debugKey: EcdhPrivateKey);
    onReceiveDeviceKey(data: Uint8Array): void;
    onReceiveAbort(data: Uint8Array): void;
    onReceiveEnvelope(data: Uint8Array): void;
    flushPendingWrites(): void;
    write(message: Buffer): void;
    sendMessagePlain(purpose: number, requestData: Uint8Array): void;
}
