tdlib-native
Version:
🚀 Telegram TDLib native nodejs wrapper
152 lines (151 loc) • 4.84 kB
TypeScript
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 {};