import { Contactable } from "./contactable"; import { Client } from "./client"; import { Gender } from "./common"; import { EventDeliver } from "event-deliver"; import { PrivateMessageEvent, FriendRequestEvent, FriendIncreaseEvent, FriendDecreaseEvent, FriendRecallEvent, FriendPokeEvent, MessageRet } from "./event"; import { Quotable, Sendable } from "./message"; export declare class User extends Contactable { readonly uid: number; constructor(c: Client, uid: number); static as(this: Client, uid: number): User; asFriend(): Friend; asMember(gid: number): import("./group").Member; } export interface UserInfo { user_id: number; nickname: string; } export interface FriendInfo extends UserInfo { sex: Gender; remark: string; class_id: number; } export interface PrivateMessageEventMap { 'message'(event: PrivateMessageEvent): void; 'message.friend'(event: PrivateMessageEvent): void; 'message.group'(event: PrivateMessageEvent): void; 'message.other'(event: PrivateMessageEvent): void; 'message.self'(event: PrivateMessageEvent): void; } export interface FriendNoticeEventMap { 'notice'(event: FriendIncreaseEvent | FriendDecreaseEvent | FriendRecallEvent | FriendPokeEvent): void; 'notice.increase'(event: FriendIncreaseEvent): void; 'notice.decrease'(event: FriendDecreaseEvent): void; 'notice.recall'(event: FriendRecallEvent): void; 'notice.poke'(event: FriendPokeEvent): void; } export interface FriendRequestEventMap { 'request'(event: FriendRequestEvent): void; 'request.add'(event: FriendRequestEvent): void; 'request.single'(event: FriendRequestEvent): void; } export interface FriendEventMap extends PrivateMessageEventMap, FriendNoticeEventMap, FriendRequestEventMap { } export declare class Friend extends Contactable { info: FriendInfo; constructor(c: Client, uid: number); static as(this: Client, uid: number): Friend; delete(): Promise; sendMsg(message: Sendable, quote?: Quotable): Promise; } export interface Friend { on(event: E, listener: FriendEventMap[E], prepend?: boolean): EventDeliver.Dispose; on(event: S & Exclude, listener: (...args: any) => any, prepend?: boolean): EventDeliver.Dispose; addEventListener(event: E, listener: FriendEventMap[E], prepend?: boolean): EventDeliver.Dispose; addEventListener(event: S & Exclude, listener: (...args: any) => any, prepend?: boolean): EventDeliver.Dispose; prependEventListener(event: E, listener: FriendEventMap[E], append?: boolean): EventDeliver.Dispose; prependEventListener(event: S & Exclude, listener: (...args: any) => any, append?: boolean): EventDeliver.Dispose; once(event: E, listener: FriendEventMap[E], prepend?: boolean): EventDeliver.Dispose; once(event: S & Exclude, listener: (...args: any) => any, prepend?: boolean): EventDeliver.Dispose; addOnceEventListener(event: E, listener: FriendEventMap[E], prepend?: boolean): EventDeliver.Dispose; addOnceEventListener(event: S & Exclude, listener: (...args: any) => any, prepend?: boolean): EventDeliver.Dispose; prependOnceEventListener(event: E, listener: FriendEventMap[E], append?: boolean): EventDeliver.Dispose; off(event?: E, listener?: FriendEventMap[E]): boolean; off(event?: S & Exclude, listener?: (...args: any) => any): boolean; removeEventListener(event: E, listener?: FriendEventMap[E]): EventDeliver.Dispose; removeEventListener(event: S & Exclude, listener?: (...args: any) => any): EventDeliver.Dispose; emit(event: E, ...args: FriendEventMap[E] extends ((...args: infer P) => any) ? P : never[]): boolean; emit(event: S & Exclude, ...args: Parameters<(...args: any) => any>): boolean; }