import { APIChannel, APIChannelEditPayload, ChannelType } from 'guilded-api-typings';
import { Base } from '../Base';
import { Client } from '../Client';
import { ChannelWebhookManager } from '../../managers/channel/ChannelWebhookManager';
import { FetchOptions } from '../../managers/BaseManager';
/**
 * Represents a channel on Guilded.
 * @example new Channel(client, rawChannel);
 */
export declare class Channel extends Base {
    readonly raw: APIChannel;
    /** The type of the channel. */
    readonly type: ChannelType;
    /** The name of the channel. */
    readonly name: string;
    /** The topic of the channel. */
    readonly topic?: string;
    /** The date the channel was created. */
    readonly createdAt: Date;
    /** The ID of the user that created the channel. */
    readonly createdBy: string;
    /** The date the channel was edited. */
    readonly editedAt?: Date;
    /** The ID of the server the channel belongs to. */
    readonly serverId: string;
    /** The ID of the parent channel the channel belongs to. */
    readonly parantId?: string;
    /** The ID of the category the channel belongs to. */
    readonly categoryId?: number;
    /** The ID of the group the channel belongs to. */
    readonly groupId: string;
    /** Whether the channel is public. */
    readonly isPublic?: boolean;
    /** The ID of the user that archived the channel. */
    readonly archivedBy?: string;
    /** The date the channel was archived. */
    readonly archivedAt?: Date;
    /** The manager of webhooks that belong to the channel. */
    readonly webhooks: ChannelWebhookManager;
    /**
     * @param client The client the channel belongs to.
     * @param raw The raw data of the channel.
     * @param cache Whether to cache the channel.
     */
    constructor(client: Client, raw: APIChannel, cache?: boolean);
    /** Whether the channel is cached. */
    get isCached(): boolean;
    /** The timestamp the channel was created. */
    get createdTimestamp(): number;
    /** The server member that created the channel. */
    get creator(): import("../..").ServerMember | undefined;
    /** The timestamp the channel was edited. */
    get editedTimestamp(): number | undefined;
    /** The server the channel belongs to. */
    get server(): import("../..").Server | undefined;
    /** The parent channel the channel belongs to. */
    get parent(): Channel | undefined;
    /** The group the channel belongs to. */
    get group(): import("../Group").Group | undefined;
    /** The server member that archived the channel. */
    get archiver(): import("../..").ServerMember | undefined;
    /** The timestamp the channel was archived. */
    get archivedTimestamp(): number | undefined;
    /** Whether the channel is archived. */
    get isArchived(): boolean;
    /** Whether the channel is a announcement channel. */
    get isAnnouncement(): boolean;
    /** Whther the channel is a chat channel. */
    get isChat(): boolean;
    /** Whether the channel is chat based. */
    get isChatBased(): boolean;
    /** Whther the channel is a calendar channel. */
    get isCalendar(): boolean;
    /** Whther the channel is a forum channel. */
    get isForum(): boolean;
    /** Whther the channel is a media channel. */
    get isMedia(): boolean;
    /** Whther the channel is a doc channel. */
    get isDoc(): boolean;
    /** Whther the channel is a voice channel. */
    get isVoice(): boolean;
    /** Whther the channel is a list channel. */
    get isList(): boolean;
    /** Whther the channel is a schedule channel. */
    get isSchedule(): boolean;
    /** Whther the channel is a stream channel. */
    get isStream(): boolean;
    /**
     * Fetch the channel.
     * @param options The options to fetch the channel with.
     * @returns The fetched channel.
     * @example channel.fetch();
     */
    fetch(options?: FetchOptions): Promise<this>;
    /**
     * Fetch the server member that created the channel.
     * @param options The options to fetch the server member with.
     * @returns The fetched server member.
     * @example channel.fetchCreator();
     */
    fetchCreator(options?: FetchOptions): Promise<import("../..").ServerMember>;
    /**
     * Fetch the server the channel belongs to.
     * @param options The options to fetch the server with.
     * @returns The fetched server.
     * @example channel.fetchServer();
     */
    fetchServer(options?: FetchOptions): Promise<import("../..").Server>;
    /**
     * Fetch the parent channel the channel belongs to.
     * @param options The options to fetch the channel with.
     * @returns The fetched channel.
     * @example channel.fetchParent();
     */
    fetchParent(options?: FetchOptions): Promise<Channel> | undefined;
    /**
     * Fetch the group the channel belongs to.
     * @param options The options to fetch the group with.
     * @returns The fetched group.
     * @example channel.fetchGroup();
     */
    fetchGroup(options?: FetchOptions): import("../Group").Group;
    /**
     * Fetch the server member that archived the channel.
     * @param options The options to fetch the server member with.
     * @returns The fetched server member.
     * @example channel.fetchArchiver();
     */
    fetchArchiver(options?: FetchOptions): Promise<import("../..").ServerMember | undefined>;
    /**
     * Edit the channel.
     * @param payload The payload of the channel.
     * @returns The edited channel.
     * @example channel.edit({ name: 'Chat' });
     */
    edit(payload: APIChannelEditPayload): Promise<this>;
    /**
     * Set the name of the channel.
     * @param name The name of the channel.
     * @returns The edited channel.
     * @example channel.setName('Chat');
     */
    setName(name: string): Promise<this>;
    /**
     * Set the topic of the channel.
     * @param topic The topic of the channel.
     * @returns The edited channel.
     * @example channel.setTopic('This is a topic');
     */
    setTopic(topic: string): Promise<this>;
    /**
     * Set whether the channel is public.
     * @param isPublic Whether the channel is public.
     * @returns The edited channel.
     * @example channel.setPublic(true);
     */
    setPublic(isPublic: boolean): Promise<this>;
    /**
     * Delete the channel.
     * @returns The deleted channel.
     * @example channel.delete();
     */
    delete(): Promise<this>;
}
export { ChannelType };
//# sourceMappingURL=Channel.d.ts.map