import { mtp, tl } from '../tl/index.js';
import { Logger } from '../utils/index.js';
import { SessionConnectionParams, SessionConnection } from './session-connection.js';
import { TelegramTransport } from './transports/index.js';
import { Deferred, Emitter } from '@fuman/utils';
export declare class MultiSessionConnection {
    readonly params: SessionConnectionParams;
    private _count;
    private _log;
    private _enforcePfs;
    readonly onRequestKeys: Emitter<Deferred<void>>;
    readonly onError: Emitter<Error>;
    readonly onUpdate: Emitter<tl.TypeUpdates>;
    readonly onKeyChange: Emitter<[number, Uint8Array | null]>;
    readonly onTmpKeyChange: Emitter<[number, Uint8Array | null, number]>;
    readonly onFutureSalts: Emitter<mtp.RawMt_future_salt[]>;
    readonly onAuthBegin: Emitter<number>;
    readonly onUsable: Emitter<number>;
    readonly onWait: Emitter<number>;
    readonly onRequestAuth: Emitter<number>;
    constructor(params: SessionConnectionParams, _count: number, log: Logger, logPrefix?: string);
    readonly _connections: SessionConnection[];
    setCount(count: number, connect?: boolean): void;
    getCount(): number;
    private _updateConnections;
    _destroyed: boolean;
    destroy(): Promise<void>;
    private _nextConnection;
    sendRpc<T extends tl.RpcMethod>(request: T, timeout?: number, abortSignal?: AbortSignal, chainId?: string | number): Promise<tl.RpcCallReturn[T['_']] | mtp.RawMt_rpc_error>;
    connect(): void;
    ensureConnected(): void;
    private _authKey;
    setAuthKey(authKey: Uint8Array | null): void;
    setTempAuthKey(authKey: Uint8Array | null, idx: number): void;
    resetAuthKeys(): void;
    setInactivityTimeout(timeout?: number): void;
    notifyKeyChange(): void;
    notifyNetworkChanged(connected: boolean): void;
    requestAuth(): void;
    resetSessions(): void;
    changeTransport(factory: TelegramTransport): Promise<void>;
    getPoolSize(): number;
}
