import type { DMChannelStructure, MessageStructure, UserStructure } from '../client';
import { type MessageCreateBodyRequest, type ObjectToLower } from '../common';
import type { ImageOptions } from '../common/types/options';
import type { APIUser } from '../types';
import { DiscordBase } from './extra/DiscordBase';
export interface User extends ObjectToLower<APIUser> {
}
export declare class User extends DiscordBase<APIUser> {
    get tag(): string;
    get name(): string;
    /**
     * Fetch user
     */
    fetch(force?: boolean): Promise<UserStructure>;
    /**
     * Open a DM with the user
     */
    dm(force?: boolean): Promise<DMChannelStructure>;
    write(body: MessageCreateBodyRequest): Promise<MessageStructure>;
    defaultAvatarURL(): string;
    avatarURL(options?: ImageOptions): string;
    avatarDecorationURL(options?: ImageOptions): string | undefined;
    bannerURL(options?: ImageOptions): string | undefined;
    presence(): import("..").ReturnCache<(Omit<import("../types").GatewayPresenceUpdate, "user"> & {
        id: string;
        user_id: string;
    } & {
        guild_id: string;
    }) | undefined>;
    toString(): `<@${string}>`;
}
