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