import { DataEditServer, Override } from "revolt-api"; import { APIServer } from "../api"; import { Client } from "../Client"; import { MemberManager } from "../managers/MemberManager"; import { RoleManager } from "../managers/RoleManager"; import { ServerChannelManager } from "../managers/ServerChannelManager"; import { ServerEmojiManager } from "../managers/ServerEmojiManager"; import { PermissionFlags } from "../utils/PermissionFlags"; import { ServerFlags } from "../utils/ServerFlags"; import { Attachment, AttachmentArgs } from "./Attachment"; import { BaseObject } from "./BaseObject"; import { Category } from "./Category"; import { Channel } from "./Channel"; import { Member } from "./Member"; import { ServerInvite } from "./ServerInvite"; export type ServerUnreadChecker = (target: Channel | Server) => boolean; export declare class Server extends BaseObject { members: MemberManager; roles: RoleManager; constructor(client: Client, data: APIServer); update(data: Partial): this; get channels(): ServerChannelManager; get emojis(): ServerEmojiManager; get categories(): Category[]; /** * Get an array of ordered categories with their respective channels. * Uncategorized channels are returned in the `id="default"` category. */ get orderedChannels(): Category[]; get name(): string; get description(): string; get nsfw(): boolean; get flags(): ServerFlags; get ownerID(): string; get owner(): import("./User").User; fetchOwner(forceNew?: boolean): Promise; get me(): Member | null; fetchMe(): Promise; get defaultPermissions(): PermissionFlags; get systemMessages(): { user_joined?: string; user_left?: string; user_kicked?: string; user_banned?: string; }; get icon(): Attachment; generateIconURL(...args: AttachmentArgs): string; get banner(): Attachment; generateBannerURL(...args: AttachmentArgs): string; /** Edit this server. */ edit(data: DataEditServer): Promise; /** Leave (or delete if owner) this server. */ leave(silent?: boolean): Promise; /** Fetch invites for this server. */ fetchInvites(): Promise; /** Fetch bans for this server. */ fetchBans(): Promise<{ userID: string; userUsername: string; userAvatar: Attachment; reason: string; }[]>; /** Test if this server is unread. */ isUnread(valid: ServerUnreadChecker): boolean; /** Gets an array of mentioned message IDs. */ getMentions(valid: ServerUnreadChecker): string[]; /** Mark this server as read. */ ack(): Promise; /** Set permissions for a role id or 'default'. */ setRolePermissions(id: "default", permissions: number): Promise; setRolePermissions(id: T extends "default" ? never : T, permissions: Override): Promise; }