import type { Mwn } from './bot'; import type { MwnPage } from './page'; import type { ApiBlockParams, ApiEmailUserParams, CentralAuthApiQueryGlobalUserInfoParams, ApiQueryLogEventsParams, ApiQueryUserContribsParams, ApiQueryUsersParams, ApiUnblockParams } from 'types-mediawiki-api'; import { ApiBlockResponse, ApiEditResponse, ApiEmailUserResponse, ApiQueryGlobalUserInfoResponse, ApiQueryUsersResponse, ApiUnblockResponse, LogEvent, UserContribution } from './api_response_types'; export interface MwnUserStatic { new (username: string): MwnUser; } export interface MwnUser { username: string; userpage: MwnPage; talkpage: MwnPage; /** * Get user's recent contributions * @param {Object} options - additional API options * @returns {Promise} */ contribs(options?: ApiQueryUserContribsParams): Promise; contribsGen(options?: ApiQueryUserContribsParams): AsyncGenerator; /** * Get user's recent log actions * @param {Object} options - additional API options * @returns {Promise} */ logs(options?: ApiQueryLogEventsParams): Promise; logsGen(options?: ApiQueryLogEventsParams): AsyncGenerator; /** * Get public information about the user * @param {string|string[]} props - properties to fetch * @returns {Promise} */ info(props?: ApiQueryUsersParams['usprop']): Promise; /** * Get global user info for wikis with CentralAuth * @param {string|string[]} props */ globalinfo(props?: CentralAuthApiQueryGlobalUserInfoParams['guiprop']): Promise; /** * Post a message on user's talk page * @param {string} header * @param {string} message * @returns {Promise} */ sendMessage(header: string, message: string): Promise; /** * Send the user an email */ email(subject: string, message: string, options?: ApiEmailUserParams): Promise; /** * Block the user * @param {Object} options - additional API options */ block(options: ApiBlockParams): Promise; /** * Unblock the user * @param {Object} options - additional API options */ unblock(options: ApiUnblockParams): Promise; } export default function (bot: Mwn): MwnUserStatic;