import { TLObject } from '../TL.js';
import { Raw } from '../../platform.node.js';
import type { Snake } from '../../Client/index.js';
import { Restriction } from './Restriction.js';
import { ChatPhoto } from './ChatPhoto.js';
export interface TypeUser {
    id: bigint;
    accessHash?: bigint;
    isSelf?: boolean;
    isContact?: boolean;
    isMutualContact?: boolean;
    isDeleted?: boolean;
    isBot?: boolean;
    isVerified?: boolean;
    isRestricted?: boolean;
    isScam?: boolean;
    isFake?: boolean;
    isSupport?: boolean;
    isPremium?: boolean;
    firstname?: string;
    lastname?: string;
    status?: string;
    lastOnlineDate?: Date;
    nextOfflineDate?: Date;
    username?: string;
    languageCode?: string;
    dcId?: number;
    phoneNumber?: string;
    photo?: ChatPhoto;
    restrictions?: Array<Restriction>;
    addedToAttachmentMenu?: boolean;
    canJoinGroups?: boolean;
    canReadAllGroupMessages?: boolean;
    supportsInlineQueries?: boolean;
}
export declare class User extends TLObject {
    id: bigint;
    accessHash?: bigint;
    isSelf?: boolean;
    isContact?: boolean;
    isMutualContact?: boolean;
    isDeleted?: boolean;
    isBot?: boolean;
    isVerified?: boolean;
    isRestricted?: boolean;
    isScam?: boolean;
    isFake?: boolean;
    isSupport?: boolean;
    isPremium?: boolean;
    firstname?: string;
    lastname?: string;
    status?: string;
    lastOnlineDate?: Date;
    nextOfflineDate?: Date;
    username?: string;
    languageCode?: string;
    dcId?: number;
    phoneNumber?: string;
    photo?: ChatPhoto;
    restrictions?: Array<Restriction>;
    addedToAttachmentMenu?: boolean;
    canJoinGroups?: boolean;
    canReadAllGroupMessages?: boolean;
    supportsInlineQueries?: boolean;
    constructor({ id, accessHash, isSelf, isContact, isMutualContact, isDeleted, isBot, isVerified, isRestricted, isScam, isFake, isSupport, isPremium, firstname, lastname, status, lastOnlineDate, nextOfflineDate, username, languageCode, dcId, phoneNumber, photo, restrictions, addedToAttachmentMenu, canJoinGroups, canReadAllGroupMessages, supportsInlineQueries, }: TypeUser, client: Snake);
    static parse(client: Snake, user?: Raw.TypeUser): User | undefined;
    static parseRestrictions(restrictions: Array<Raw.TypeRestrictionReason>, client: Snake): Array<Restriction>;
    static parseStatus(userStatus?: Raw.TypeUserStatus, isBot?: boolean): {
        status?: string;
        lastOnlineDate?: Date;
        nextOfflineDate?: Date;
    };
    static parseUpdateStatus(client: Snake, userStatus: Raw.UpdateUserStatus): User;
    mention({ name, style }?: {
        name?: string;
        style?: 'html' | 'md' | 'markdown';
    }): string;
    get inputPeer(): Raw.InputPeerUser | Raw.InputPeerSelf;
}
