import { Collection } from '@discordjs/collection';
import Base from '../Base';
import UserSearchResult from '../structures/user/UserSearchResult';
import User from '../structures/user/User';
import Avatar from '../structures/Avatar';
import GlobalProfile from '../structures/GlobalProfile';
import ClientUser from '../structures/user/ClientUser';
import type BlockedUser from '../structures/user/BlockedUser';
import type { UserSearchPlatform } from '../../resources/structs';
import type Client from '../Client';
declare class UserManager extends Base {
    /**
     * The client's blocklist
     */
    blocklist: Collection<string, BlockedUser>;
    /**
     * The client's user cache
     * @private
     */
    cache: Collection<string, User & {
        cachedAt: number;
    }>;
    /**
     * The client's user
     */
    self?: ClientUser;
    constructor(client: Client);
    /**
     * Resolves a user's ID from the cache or via the API
     * @param idOrDisplayName The user's ID or display name
     */
    resolveId(idOrDisplayName: string): Promise<string>;
    fetch(idOrDisplayName: string): Promise<User>;
    fetchMultiple(idsOrDisplayNames: string[]): Promise<User[]>;
    fetchSelf(): Promise<void>;
    search(prefix: string, platform?: UserSearchPlatform): Promise<UserSearchResult[]>;
    /**
     * Fetches the avatar of a user
     * @param user The id or display name of the user
     * @throws {EpicgamesAPIError}
     * @throws {UserNotFoundError} The user wasn't found
     */
    fetchAvatar(idOrDisplayName: string): Promise<Avatar>;
    /**
     * Fetches the avatar of multiple users
     * @param user The ids and/or display names of the users
     * @throws {EpicgamesAPIError}
     */
    fetchAvatarMultiple(idsOrDisplayNames: string[]): Promise<Avatar[]>;
    /**
     * Fetches the global profile of a user
     * @param user The id or display name of the user
     * @throws {EpicgamesAPIError}
     * @throws {UserNotFoundError} The user wasn't found
     */
    fetchGlobalProfile(idOrDisplayName: string): Promise<GlobalProfile>;
    /**
     * Fetches the global profile for multiple users
     * @param user The ids and/or display names of the users
     * @throws {EpicgamesAPIError}
     */
    fetchGlobalProfileMultiple(idsOrDisplayNames: string[]): Promise<GlobalProfile[]>;
    /**
     * Blocks a user
     * @param user The id or display name of the user
     * @throws {UserNotFoundError} The user wasn't found
     * @throws {EpicgamesAPIError}
     */
    block(user: string): Promise<void>;
    /**
     * Unblocks a user
     * @param user The id or display name of the user
     * @throws {UserNotFoundError} The user wasn't found
     * @throws {EpicgamesAPIError}
     */
    unblock(user: string): Promise<void>;
}
export default UserManager;
