import { DataEditChannel, Override } from "revolt-api"; import { APIChannel } from "../api"; import { Client } from "../Client"; import { MessageManager } from "../managers/MessageManager"; import { MessagePayload } from "../utils/Messaging"; import { PermissionFlags } from "../utils/PermissionFlags"; import { Attachment, AttachmentArgs } from "./Attachment"; import { BaseMessage } from "./BaseMessage"; import { BaseObject } from "./BaseObject"; import { DMChannel } from "./DMChannel"; import { GroupDMChannel } from "./GroupDMChannel"; import { Member } from "./Member"; import { Message } from "./Message"; import { Role } from "./Role"; import { SavedMessagesChannel } from "./SavedMessagesChannel"; import { ServerChannel } from "./ServerChannel"; import { ServerInvite } from "./ServerInvite"; import { TextChannel } from "./TextChannel"; import { User } from "./User"; import { VoiceChannel } from "./VoiceChannel"; export declare enum ChannelType { DM = "DirectMessage", GroupDM = "Group", SavedMessages = "SavedMessages", Text = "TextChannel", Voice = "VoiceChannel" } export type ChannelUnreadChecker = (target: Channel) => boolean; export declare class Channel extends BaseObject { get type(): ChannelType; messages: MessageManager; constructor(client: Client, data: APIChannel); isText(): this is TextChannel; isVoice(): this is VoiceChannel; isDM(): this is DMChannel; isGroupDM(): this is GroupDMChannel; isSavedMessages(): this is SavedMessagesChannel; isTextBased(): this is TextChannel | DMChannel | GroupDMChannel | SavedMessagesChannel; isDMBased(): this is DMChannel | GroupDMChannel; isServerBased(): this is ServerChannel; get name(): string; get description(): string; get nsfw(): boolean; get icon(): Attachment; generateIconURL(...args: AttachmentArgs): any; /** Set permissions for a role or 'default' for everyone. */ setPermissions(role: Role | "default", permissions: Override): Promise; get permissions(): PermissionFlags; permissionsFor(member: Member): PermissionFlags; createInvite(): Promise; get lastMessageID(): string; get lastMessage(): BaseMessage; fetchLastMessage(): Promise; lastMessageBy(user: User): Message | null; /** Can include your own user ID. */ typingIDs: Set; /** Will not include your user. */ get typing(): User[]; startTyping(): void; stopTyping(): void; checkUnread(valid: ChannelUnreadChecker): any; get unread(): boolean; getMentions(valid: ChannelUnreadChecker): any; get mentions(): string[]; /** Mark a specific message as read/unread. */ ack(message?: BaseMessage | string): Promise; /** * Syncs unreads from server and marks channel as read if unread. * @param useSeparate If true, will create a new unread object to avoid 'unread flashing'. */ markRead(useSeparate?: boolean): Promise; /** * Set `expandMentions` to automatically turn plaintext user mentions into 'real' ones. * Set `expandEmojis` to do the same for emojis (using uniqueName). */ send(data: MessagePayload): Promise; fetchMessage(id: string): Promise; edit(data: DataEditChannel): Promise; /** Delete or leave this channel. */ delete(silent?: boolean): Promise; }