UNPKG

tdlib-native

Version:

🚀 Telegram TDLib native nodejs wrapper

152 lines (151 loc) • 4.84 kB
import { Client } from './client'; import { setTdlibParameters$DirectInput, phoneNumberAuthenticationSettings$Input, authenticationCodeInfo, emailAddressAuthenticationCodeInfo, registerUser$DirectInput, TermsOfService } from './generated/types'; type AuthenticateOptions = { readonly signal?: AbortSignal; }; type Waiter<T, A extends readonly unknown[] = []> = T | ((...parameters: A) => T | PromiseLike<T>); type AuthenticatorState = { parameters: Waiter<setTdlibParameters$DirectInput>; phone: Waiter<string>; token: Waiter<string>; phoneSettings: Waiter<phoneNumberAuthenticationSettings$Input>; email: Waiter<string>; otherDevice: Waiter<string, [link: string]>; code: Waiter<string, [info: authenticationCodeInfo]>; emailCode: Waiter<string, [info: emailAddressAuthenticationCodeInfo]>; password: Waiter<string, [hint: string]>; register: Waiter<registerUser$DirectInput, [tos: TermsOfService]>; }; export type StageTDLibParameters = { tdlibParameters(parameters: AuthenticatorState["parameters"]): StageSelect; }; export type StageSelect = { token(token: AuthenticatorState["token"]): StageAuthenticate; phone(phone: AuthenticatorState["phone"], settings?: AuthenticatorState["phoneSettings"]): StageUser; }; export type StageAuthenticate = { authenticate(options?: AuthenticateOptions): Promise<void>; }; export type StageUser = { email(email: AuthenticatorState["email"]): StageUser; code(email: AuthenticatorState["code"]): StageUser; emailCode(email: AuthenticatorState["emailCode"]): StageUser; password(password: AuthenticatorState["password"]): StageUser; register(data: AuthenticatorState["register"]): StageUser; } & StageAuthenticate; /** * * * @export * @class Authenticator * @implements {StageTDLibParameters} * @implements {StageSelect} * @implements {StageAuthenticate} * @implements {StageUser} */ export declare class Authenticator implements StageTDLibParameters, StageSelect, StageAuthenticate, StageUser { /** * * * @static * @param {Client} client * @returns {StageTDLibParameters} {StageTDLibParameters} * @memberof Authenticator */ static create(client: Client): StageTDLibParameters; private readonly _client; private readonly _state; /** * Creates an instance of Authenticator. * @param {Client} client * @memberof Authenticator */ private constructor(); /** * * * @private * @param {AuthorizationState} state * @param {function(): void} resolve * @returns {Promise<void>} {Promise<void>} * @memberof Authenticator */ private _handleUpdate; /** * * * @param {AuthenticateOptions} [options] * @returns {Promise<void>} {Promise<void>} * @throws {TDError} if underlying method call throws * @throws {Error} if authentication state changes to closed before authentication completes * @throws {Error} whatever is reason of cancellation token * @memberof Authenticator */ authenticate(options?: AuthenticateOptions): Promise<void>; /** * * * @param {*} parameters * @returns {StageSelect} {StageSelect} * @memberof Authenticator */ tdlibParameters(parameters: AuthenticatorState["parameters"]): StageSelect; /** * * * @param {Waiter<string>} token * @returns {StageSelect} {StageSelect} * @memberof Authenticator */ token(token: AuthenticatorState["token"]): StageAuthenticate; /** * * * @param {Waiter<string>} phone * @param {*} settings * @returns {StageUser} {StageUser} * @memberof Authenticator */ phone(phone: AuthenticatorState["phone"], settings?: AuthenticatorState["phoneSettings"]): StageUser; /** * * * @param {Waiter<string>} email * @returns {StageUser} {StageUser} * @memberof Authenticator */ email(email: AuthenticatorState["email"]): StageUser; /** * * * @param {Waiter<string>} code * @returns {StageUser} {StageUser} * @memberof Authenticator */ code(code: AuthenticatorState["code"]): StageUser; /** * * * @param {Waiter<string>} emailCode * @returns {StageUser} {StageUser} * @memberof Authenticator */ emailCode(emailCode: AuthenticatorState["emailCode"]): StageUser; /** * * * @param {Waiter<string>} password * @returns {StageUser} {StageUser} * @memberof Authenticator */ password(password: AuthenticatorState["password"]): StageUser; /** * * * @param {*} data * @returns {StageUser} {StageUser} * @memberof Authenticator */ register(data: AuthenticatorState["register"]): StageUser; } export {};