///
import { Logger, PromisedNetSockets, PromisedWebSockets } from "../../extensions";
import { AbridgedPacketCodec } from "./TCPAbridged";
import { FullPacketCodec } from "./TCPFull";
import { ProxyInterface } from "./TCPMTProxy";
interface ConnectionInterfaceParams {
ip: string;
port: number;
dcId: number;
loggers: Logger;
proxy?: ProxyInterface;
socket: typeof PromisedNetSockets | typeof PromisedWebSockets;
testServers: boolean;
}
/**
* The `Connection` class is a wrapper around ``asyncio.open_connection``.
*
* Subclasses will implement different transport modes as atomic operations,
* which this class eases doing since the exposed interface simply puts and
* gets complete data payloads to and from queues.
*
* The only error that will raise from send and receive methods is
* ``ConnectionError``, which will raise when attempting to send if
* the client is disconnected (includes remote disconnections).
*/
declare class Connection {
PacketCodecClass?: typeof AbridgedPacketCodec | typeof FullPacketCodec;
readonly _ip: string;
readonly _port: number;
_dcId: number;
_log: Logger;
_proxy?: ProxyInterface;
private _connected;
private _sendTask?;
private _recvTask?;
protected _codec: any;
protected _obfuscation: any;
private readonly _sendArray;
private _recvArray;
socket: PromisedNetSockets | PromisedWebSockets;
_testServers: boolean;
constructor({ ip, port, dcId, loggers, proxy, socket, testServers, }: ConnectionInterfaceParams);
_connect(): Promise;
connect(): Promise;
disconnect(): Promise;
send(data: Buffer): Promise;
recv(): Promise;
_sendLoop(): Promise;
_recvLoop(): Promise;
_initConn(): Promise;
_send(data: Buffer): Promise;
_recv(): Promise;
toString(): string;
}
declare class ObfuscatedConnection extends Connection {
ObfuscatedIO: any;
_initConn(): Promise;
_send(data: Buffer): Promise;
_recv(): Promise;
}
declare class PacketCodec {
private _conn;
constructor(connection: Buffer);
encodePacket(data: Buffer): void;
readPacket(reader: PromisedNetSockets | PromisedWebSockets): Promise;
}
export { Connection, PacketCodec, ObfuscatedConnection };