import { type BaseClass } from '../../implementation/index.js'; import type Client from '../../index.js'; import { Badge } from '../badge/Badge.js'; import { Comment } from '../comment/Comment.js'; import type { TtsModel } from '../ttsModel/TtsModel.js'; import { type EditUserProfileInputSchema, type UserProfileSchema } from './profileUser.schema.js'; import { UserAudioFile } from './userAudioFile/UserAudioFile.js'; export type PaginatedUserAudioFiles = { cursorNext: string | null; cursorPrev: string | null; results: UserAudioFile[]; }; /** * A user profile, which contains their public information. */ export declare class ProfileUser implements BaseClass { /** * @param client The main client. * @param data The data that has arrived from the FakeYou API. */ constructor(client: Client, data: UserProfileSchema); readonly client: Client; /** * The URL of the user's profile page. */ readonly webUrl: string; readonly token: string; readonly username: string; readonly displayName: string; readonly emailGravatarHash: string; readonly defaultAvatarIndex: number; readonly defaultAvatarColorIndex: number; readonly bio: string; readonly bioHtml: string; readonly userRoleSlug: string; readonly disableGravatar: boolean; readonly preferredTtsResultVisibility: string; readonly preferredW2lResultVisibility: string; readonly discordUsername: string | null; readonly twitchUsername: string | null; readonly twitterUsername: string | null; readonly patreonUsername: string | null; readonly githubUsername: string | null; readonly cashappUsername: string | null; readonly websiteUrl: string | null; readonly createdAt: Date; readonly moderatorFields: string | null; readonly badges: Badge[]; /** * Edit the user profile. This will only edit the fields that you have privileges to edit. * You need to be logged in to perform this action. * * @param newValues The new values to set for the user profile. * You do not need to include all values, it will only edit the values that you provide. * @returns Whether the user profile was successfully edited. */ editProfile(newValues: Partial): Promise; /** * Fetch a paginated list of the user's audio files. This includes TTS audio files only. * 10 audio files are returned per page, and the results are sorted by newest first. * * @param cursor The cursor to use for pagination. If not provided, the first page will be fetched. * @returns The user audio file. Undefined if the audio file could not be fetched. */ fetchUserAudioFiles(cursor?: string): Promise; /** * Fetch the TTS models of the user profile. These are the models that the user has uploaded. * * @returns The TTS models of the user profile. Undefined if the models could not be fetched. */ fetchUserModels(): Promise; /** * User profile comments. These are comments other people have left on the user's profile. * * @returns The comments on the user profile. */ fetchUserComments(): Promise; }