import { ISyncWritable, Bytes } from '@fuman/io';
import { ICryptoProvider } from '../../utils/crypto/abstract.js';
import { Logger } from '../../utils/logger.js';
import { IPacketCodec } from '../transports/index.js';
export declare function generateFakeTlsHeader(domain: Uint8Array, secret: Uint8Array, crypto: ICryptoProvider): Promise<Uint8Array>;
/**
 * Fake TLS packet codec, used for some MTProxies.
 *
 * Must only be used inside {@link MtProxyTcpTransport}
 * @internal
 */
export declare class FakeTlsPacketCodec implements IPacketCodec {
    readonly _inner: IPacketCodec;
    constructor(_inner: IPacketCodec);
    private _isFirstTls;
    setup?(crypto: ICryptoProvider, log: Logger): void;
    private _tag;
    tag(): Promise<Uint8Array>;
    encode(packet: Uint8Array, into: ISyncWritable): Promise<void>;
    decode(reader: Bytes, eof: boolean): Promise<Uint8Array | null>;
    reset(): void;
}
