import { TlReaderMap, TlWriterMap } from '@mtcute/tl-runtime'; import { mtp, tl } from '../tl/index.js'; import { ICorePlatform } from '../types/platform.js'; import { Logger } from '../utils/index.js'; import { PersistentConnectionParams, PersistentConnection } from './persistent-connection.js'; import { ServerSaltManager } from './server-salt.js'; import { Emitter } from '@fuman/utils'; import { MtprotoSession } from './mtproto-session.js'; export interface SessionConnectionParams extends PersistentConnectionParams { initConnection: tl.RawInitConnectionRequest; inactivityTimeout?: number; pingInterval: number; layer: number; disableUpdates?: boolean; withUpdates?: boolean; isMainConnection: boolean; isMainDcConnection: boolean; usePfs?: boolean; salts: ServerSaltManager; readerMap: TlReaderMap; writerMap: TlWriterMap; platform: ICorePlatform; } /** * A connection to a single DC. */ export declare class SessionConnection extends PersistentConnection { readonly params: SessionConnectionParams; private _flushTimer; private _queuedDestroySession; private _pendingWaitForUnencrypted; private _usePfs; private _isPfsBindingPending; private _isPfsBindingPendingInBackground; private _pfsUpdateTimeout?; private _inactivityPendingFlush; private _readerMap; private _writerMap; private _crypto; private _salts; readonly _session: MtprotoSession; private _pingInterval; readonly onDisconnect: Emitter; readonly onKeyChange: Emitter; readonly onTmpKeyChange: Emitter<[Uint8Array, number] | null>; readonly onFloodDone: Emitter; readonly onRequestAuth: Emitter; readonly onAuthBegin: Emitter; readonly onUpdate: Emitter; readonly onFutureSalts: Emitter; private _triedReconnectingOn404; constructor(params: SessionConnectionParams, log: Logger); private _online; getAuthKey(temp?: boolean): Uint8Array | null; setUsePfs(usePfs: boolean): void; onClosed(): void; destroy(): Promise; reset(forever?: boolean): void; onConnected(): void; protected handleError(error: Error): void; protected onConnectionUsable(): void; _authorize(): void; private _authorizePfs; waitForUnencryptedMessage(timeout?: number): Promise; private _warnedAboutUpdates; protected onMessage(data: Uint8Array): void; private _handleRawMessage; private _handleMessage; private _onRpcResult; private _processPendingChainedFails; private _onMessageAcked; private _onAllFailed; private _onMessageFailed; private _registerOutgoingMsgId; private _onPong; private _onBadServerSalt; private _onBadMsgNotification; private _onNewSessionCreated; private _onMessageInfo; private _onMessagesInfo; private _onMsgsStateInfo; private _onFutureSalts; private _enqueueRpc; _resetSession(reason?: string): void; private _sendAck; sendRpc(request: T, timeout?: number, abortSignal?: AbortSignal, chainId?: string | number): Promise; notifyNetworkChanged(online: boolean): void; private _cancelRpc; protected _onInactivityTimeout(): void; flushWhenIdle(): void; private _handleGetStateTimeout; private _flush; private _doFlush; }