/**
* MTKruto - Cross-runtime JavaScript library for building Telegram clients
* Copyright (C) 2023-2026 Roj
*
* This file is part of MTKruto.
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU Lesser General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public License
* along with this program. If not, see .
*/
import { Api, Mtproto } from "../2_tl.js";
import type { DC } from "../3_transport.js";
import { SessionEncrypted } from "../4_session.js";
import { ClientAbstract } from "./0_client_abstract.js";
import { type ClientPlainParams } from "./1_client_plain.js";
export interface ClientEncryptedParams extends ClientPlainParams {
/** The app_version parameter to be passed to initConnection. It is recommended that this parameter is changed if users are authorized. Defaults to _MTKruto_. */
appVersion?: string;
/** The device_version parameter to be passed to initConnection. The default varies by the current runtime. */
deviceModel?: string;
/** The lang_pack parameter to be passed to initConnection. Defaults to the runtime's language or `"en"`. */
langCode?: string;
/** The lang_pack parameter to be passed to initConnection. Defaults to an empty string. */
langPack?: string;
/** The system_lang_code parameter to be passed to initConnection. Defaults to the runtime's language or `"en"`. */
systemLangCode?: string;
/** The system_version parameter to be passed to initConnection. The default varies by the current runtime. */
systemVersion?: string;
/** Whether to disable receiving updates. Defaults to `false`. */
disableUpdates?: boolean;
}
export interface ClientEncryptedHandlers {
onNewServerSalt?: (newServerSalt: bigint) => void;
onUpdate?: (update: Api.Updates | Api.Update) => void;
onDeserializationError?: () => void;
}
export declare class ClientEncrypted extends ClientAbstract {
#private;
handlers: ClientEncryptedHandlers;
session: SessionEncrypted;
constructor(dc: DC, apiId: number, params?: ClientEncryptedParams);
connect(): Promise;
disconnect(): void;
get authKey(): Uint8Array;
setAuthKey(authKey: Uint8Array): Promise;
lastRequest?: Date;
invoke ? Api.ReturnType : T["_"] extends keyof Api.Functions ? Api.ReturnType extends never ? Api.ReturnType : never : never>(function_: T): Promise;
}
//# sourceMappingURL=2_client_encrypted.d.ts.map