import { APIForumTopic, APIForumTopicEditPayload, APIForumTopicSummary, APIMentions } from 'guilded-api-typings';
import { FetchOptions } from '../managers/BaseManager';
import { Base } from './Base';
import { ForumChannel } from './channel/ForumChannel';
/**
 * Represents a topic on Guilded.
 * @example new ForumTopic(channel, rawForumTopic);
 */
export declare class ForumTopic extends Base<number> {
    readonly channel: ForumChannel;
    readonly raw: APIForumTopic | APIForumTopicSummary;
    /** The ID of the server the forum topic belongs to. */
    readonly serverId: string;
    /** The ID of the channel the forum topic belongs to. */
    readonly channelId: string;
    /** The title of the forum topic. */
    readonly title: string;
    /** The date the forum topic was created. */
    readonly createdAt: Date;
    /** The ID of the user that created the forum topic. */
    readonly createdBy: string;
    /** The ID of the webhook that created the forum topic. */
    readonly createdByWebhookId?: string;
    /** The date the forum topic was edited. */
    readonly editedAt?: Date;
    /** The date the forum topic was bumped. */
    readonly bumpedAt?: Date;
    /** The content of the forum topic. */
    readonly content?: string;
    /** The mentions of the forum topic. */
    readonly mentions?: APIMentions;
    /**
     * @param channel The forum channel the topic belongs to.
     * @param raw The raw data of the forum topic.
     * @param cache Whether to cache the forum topic.
     */
    constructor(channel: ForumChannel, raw: APIForumTopic | APIForumTopicSummary, cache?: boolean);
    /** Whether the forum topic is cached. */
    get isCached(): boolean;
    /** The server the forum topic belongs to. */
    get server(): import("..").Server | undefined;
    /** The timestamp the forum topic was created. */
    get createdTimestamp(): number;
    /** The server member that created the forum topic. */
    get author(): import("..").ServerMember | undefined;
    /** The webhook that created the forun topic. */
    get webhook(): import("./Webhook").Webhook | undefined;
    /** The ID of the user that created the forum topic. */
    get authorId(): string;
    /** The timestamp the forum topic was edited. */
    get editedTimestamp(): number | undefined;
    /** The timestamp the forum topic was bumped. */
    get bumpedTimestamp(): number | undefined;
    /**
     * Fetch the forum topic.
     * @param options The options to fetch the forum topic with.
     * @returns The fetched forum topic.
     * @example forumTopic.fetch();
     */
    fetch(options?: FetchOptions): Promise<ForumTopic>;
    /**
     * Fetch the server the forum topic belongs to.
     * @param options The options to fetch the server with.
     * @returns The fetched server.
     * @example forumTopic.fetchServer();
     */
    fetchServer(options?: FetchOptions): Promise<import("..").Server>;
    /**
     * Fetch the server member that created the forum topic.
     * @param options The options to fetch the server member with.
     * @returns The fetched server member.
     * @example forumTopic.fetchAuthor();
     */
    fetchAuthor(options?: FetchOptions): Promise<import("..").ServerMember>;
    /**
     * Fetch the webhook that created the forum topic.
     * @param options The options to fetch the webhook with.
     * @returns The fetched webhook.
     * @example forumTopic.fetchWebhook();
     */
    fetchWebhook(options?: FetchOptions): Promise<import("./Webhook").Webhook> | undefined;
    /**
     * Edit the forum topic.
     * @param payload The payload of the forum topic.
     * @returns The edited forum topic.
     * @example forumTopic.edit({ title: 'New title' });
     */
    edit(payload: APIForumTopicEditPayload): Promise<this>;
    /**
     * Delete the forum topic.
     * @returns The deleted forum topic.
     * @example forumTopic.delete();
     */
    delete(): Promise<this>;
    /**
     * Pin the forum topic.
     * @returns The pinned forum topic.
     * @example forumTopic.pin();
     */
    pin(): Promise<this>;
    /**
     * Unpin the forum topic.
     * @returns The unpinned forum topic.
     * @example forumTopic.unpin();
     */
    unpin(): Promise<this>;
    /**
     * Lock the forum topic.
     * @returns The locked forum topic.
     * @example forumTopic.lock();
     */
    lock(): Promise<this>;
    /**
     * Unlock the forum topic.
     * @returns The unlocked forum topic.
     * @example forumTopic.unlock();
     */
    unlock(): Promise<this>;
}
//# sourceMappingURL=ForumTopic.d.ts.map