import { JsonObject } from "config_file.js";
import { EnkaProfile, User } from "enka-system";
import { Costume } from "./character/Costume";
import { NameCard } from "./material/Material";
import { EnkaClient } from "../client/EnkaClient";
import { ProfilePicture } from "./ProfilePicture";
import { Element } from "./Element";
import { TheaterMode } from "./theater/TheaterMode";
export interface CharacterPreview {
    /** Costume whose icon is used for character preview. */
    costume: Costume;
    level: number;
    element: Element | null;
    constellation: number | null;
}
export declare class GenshinUser extends User {
    readonly enka: EnkaClient;
    /** This will be NaN if this GenshinUser is from [EnkaGameAccount](https://enka-system.vercel.app/docs/api/EnkaGameAccount) and [isUidPublic](https://enka-system.vercel.app/docs/api/EnkaGameAccount#isUidPublic) is `false`. */
    readonly uid: number;
    readonly nickname: string | null;
    readonly signature: string | null;
    readonly profilePicture: ProfilePicture | null;
    readonly showConstellationPreview: boolean;
    readonly charactersPreview: CharacterPreview[];
    readonly nameCards: NameCard[];
    readonly level: number;
    readonly worldLevel: number;
    readonly profileCard: NameCard;
    readonly achievements: number;
    readonly maxFriendshipCount: number;
    readonly spiralAbyss: {
        floor: number;
        chamber: number;
        stars: number;
    } | null;
    readonly theater: {
        act: number;
        stars: number;
        mode: TheaterMode;
    } | null;
    /** This will be -1 if this GenshinUser is from EnkaGameAccount */
    readonly ttl: number;
    readonly enkaProfile: EnkaProfile | null;
    readonly enkaGameAccountHash: string | null;
    readonly url: string;
    constructor(data: JsonObject, enka: EnkaClient);
}
