UNPKG

ntqq

Version:
173 lines (172 loc) 6.92 kB
import * as pb from "./protobuf"; import { Apk, Device, Platform, ShortDevice } from "./device"; import { Config } from "../client"; import { EventEmitter } from "events"; declare const FN_NEXT_SEQ: unique symbol; declare const FN_SEND: unique symbol; declare const FN_SEND_LOGIN: unique symbol; declare const HANDLERS: unique symbol; declare const NET: unique symbol; declare const ECDH: unique symbol; declare const IS_ONLINE: unique symbol; declare const LOGIN_LOCK: unique symbol; declare const HEARTBEAT: unique symbol; declare const SSO_HEARTBEAT: unique symbol; export declare enum VerboseLevel { Fatal = 0, Mark = 1, Error = 2, Warn = 3, Info = 4, Debug = 5 } export declare class ApiRejection { code: number; message: string; constructor(code: number, message?: string); } export declare enum QrcodeResult { OtherError = 0, Timeout = 17, WaitingForScan = 48, WaitingForConfirm = 53, Canceled = 54 } export interface CoreEventMap { 'internal.qrcode': (qrcode: Buffer) => void; 'internal.slider': (url: string) => void; 'internal.verify': (url: string, phone: string) => void; 'internal.error.token': (code?: number, message?: string) => void; 'internal.error.network': (code: number, message: string) => void; 'internal.error.login': (code: number, message: string) => void; 'internal.error.qrcode': (code: QrcodeResult, message: string) => void; 'internal.online': (token: Buffer, nickname: string, gender: number, age: number) => void; 'internal.token': (token: Buffer) => void; 'internal.kickoff': (reason: string) => void; 'internal.sso': (cmd: string, payload: Buffer, seq: number) => void; 'internal.verbose': (verbose: unknown, level: VerboseLevel) => void; } export interface BaseClient { uin: number; uid: string; on<T extends keyof CoreEventMap>(event: T, listener: CoreEventMap[T]): this; on<S extends string | symbol>(event: S & Exclude<S, keyof CoreEventMap>, listener: (...args: any[]) => any | void): this; once<T extends keyof CoreEventMap>(event: T, listener: CoreEventMap[T]): this; once<S extends string | symbol>(event: S & Exclude<S, keyof CoreEventMap>, listener: (...args: any[]) => any | void): this; off<T extends keyof CoreEventMap>(event: T, listener: CoreEventMap[T]): this; off<S extends string | symbol>(event: S & Exclude<S, keyof CoreEventMap>, listener: (...args: any[]) => any | void): this; emit<T extends keyof CoreEventMap>(event: T, ...args: Parameters<CoreEventMap[T]>): boolean; emit<S extends string | symbol>(event: S & Exclude<S, keyof CoreEventMap>, ...args: any[]): boolean; } type Packet = { cmd: string; type: number; callbackId?: number; body: Buffer; }; export declare class BaseClient extends EventEmitter { config: Required<Config>; private [IS_ONLINE]; private [LOGIN_LOCK]; private [HEARTBEAT]?; private [SSO_HEARTBEAT]?; private [ECDH]; private readonly [NET]; private readonly [HANDLERS]; apk: Apk; readonly device: Device; readonly sig: Record<string, any>; readonly pkg: any; readonly pskey: { [domain: string]: Buffer; }; readonly pt4token: { [domain: string]: Buffer; }; /** 心跳间隔(秒) */ protected interval: number; protected ssoInterval: number; /** 随心跳一起触发的函数,可以随意设定 */ protected heartbeat: () => void; /** 数据统计 */ protected readonly statistics: { start_time: number; lost_times: number; recv_pkt_cnt: number; sent_pkt_cnt: number; lost_pkt_cnt: number; recv_msg_cnt: number; sent_msg_cnt: number; msg_cnt_per_min: number; remote_ip: string; sign_api_addr: string; sign_api_init: boolean; remote_port: number; }; protected signLoginCmd: string[]; protected signCmd: string[]; private ssoPacketList; constructor(p: Platform | undefined, d: ShortDevice, config: Required<Config>); getApkInfo(platform: Platform, ver?: string): Apk; getApkInfoList(platform: Platform): Apk[]; /** 设置连接服务器,不设置则自动搜索 */ setRemoteServer(host?: string, port?: number): void; setSignServer(addr?: string): Promise<void>; /** 是否为在线状态 (可以收发业务包的状态) */ isOnline(): boolean; switchQQVer(ver?: string): Promise<boolean>; getApiQQVer(): Promise<string>; getT544(cmd: string): Promise<Buffer>; getSign(cmd: string, seq: number, body: Buffer): Promise<Buffer>; generateT544Packet(cmd: String, sign: Buffer): Buffer; generateSignPacket(sign: String, token: String, extra: String): Buffer; ssoPacketListHandler(list: Packet[] | null): Promise<void>; requestToken(): Promise<void>; requestSignToken(): Promise<never[]>; submitSsoPacket(cmd: string, callbackId: number, body: Buffer): Promise<Packet[]>; calcPoW(data: any): Buffer; /** 下线 (keepalive: 是否保持tcp连接) */ logout(keepalive?: boolean): Promise<void>; /** 关闭连接 */ terminate(): void; /** 使用接收到的token登录 */ tokenLogin(token: Buffer): Promise<boolean | undefined>; /** * 使用密码登录 * @param uin 登录账号 * @param md5pass 密码的md5值 */ passwordLogin(uin: number, md5pass: Buffer): Promise<void>; /** 收到滑动验证码后,用于提交滑动验证码 */ submitSlider(ticket: string): Promise<void>; /** 收到设备锁验证请求后,用于发短信 */ sendSmsCode(): Promise<void>; /** 提交短信验证码 */ submitSmsCode(code: string): Promise<void>; /** 获取登录二维码 */ fetchQrcode(): Promise<void>; /** 扫码后调用此方法登录 */ qrcodeLogin(): Promise<void>; /** 获取扫码结果(可定时查询,retcode为0则调用qrcodeLogin登录) */ queryQrcodeResult(): Promise<{ retcode: number; uin: number | undefined; t106: Buffer | undefined; t16a: Buffer | undefined; t318: Buffer | undefined; tgtgt: Buffer | undefined; }>; private [FN_NEXT_SEQ]; private [FN_SEND]; private [FN_SEND_LOGIN]; /** 发送一个业务包不等待返回 */ writeUni(cmd: string, body: Uint8Array, seq?: number): Promise<void>; /** dont use it if not clear the usage */ sendOidb(cmd: string, body: Uint8Array, timeout?: number): Promise<Buffer>; sendPacket(type: string, cmd: string, body: any): Promise<Buffer>; /** 发送一个业务包并等待返回 */ sendUni(cmd: string, body: Uint8Array, timeout?: number): Promise<Buffer>; sendOidbSvcTrpcTcp(cmd: number, subCmd: number, buffer: Uint8Array, isUid?: boolean, isAfter?: boolean): Promise<pb.Proto>; fetchHighwayTicket(): Promise<any>; } export {};