import { default as Frame } from './protocol/Frame';
import { default as InetAddress } from './utils/InetAddress';
import { RemoteInfo } from 'node:dgram';
import { default as RakNetListener } from './ServerSocket';
export declare enum RakNetPriority {
    NORMAL = 0,
    IMMEDIATE = 1
}
export declare enum SessionStatus {
    CONNECTING = 0,
    CONNECTED = 1,
    DISCONNECTING = 2,
    DISCONNECTED = 3
}
export default class Session {
    private readonly listener;
    private readonly mtuSize;
    readonly rinfo: RemoteInfo;
    readonly guid: bigint;
    private state;
    private outputFrameQueue;
    private outputSequenceNumber;
    private outputReliableIndex;
    private readonly outputBackupQueue;
    private readonly outputOrderIndex;
    private readonly outputSequenceIndex;
    private receivedFrameSequences;
    private lostFrameSequences;
    private readonly fragmentsQueue;
    private outputFragmentIndex;
    private lastInputSequenceNumber;
    private readonly inputHighestSequenceIndex;
    private readonly inputOrderIndex;
    private inputOrderingQueue;
    private lastUpdate;
    private active;
    private readonly packetPool;
    constructor(listener: RakNetListener, mtuSize: number, rinfo: RemoteInfo, guid: bigint);
    private readonly packetHandlers;
    update(timestamp: number): void;
    handle(buffer: Buffer): void;
    private handleFrameSet;
    private handleACK;
    private handleNACK;
    private handleFrame;
    sendFrame(frame: Frame, flags?: RakNetPriority): void;
    private addFrameToQueue;
    private handlePacket;
    handleConnectionRequest(buffer: Buffer): Promise<Frame>;
    handleConnectedPing(buffer: Buffer): Promise<Frame>;
    handleFragment(frame: Frame): void;
    sendFrameQueue(): void;
    private sendFrameSet;
    private sendPacket;
    close(): void;
    /**
     * Kick a client
     * @param reason - the reason message, optional
     */
    disconnect(reason?: string): void;
    getState(): number;
    isActive(): boolean;
    isDisconnected(): boolean;
    getListener(): RakNetListener;
    /**
     * Returns the maxmium transfer unit
     * for this connection.
     * @returns {number} the UDP adjusted.
     */
    getMTU(): number;
    getAddress(): InetAddress;
}
//# sourceMappingURL=Session.d.ts.map