import { BaseManager, FetchManyOptions, FetchOptions } from './BaseManager';
import { ForumChannel } from '../structures/channel/ForumChannel';
import { ForumTopic } from '../structures/ForumTopic';
import { APIForumTopicEditPayload, APIForumTopicFetchManyOptions, APIForumTopicPayload } from 'guilded-api-typings';
import { Collection } from '@discordjs/collection';
/**
 * The manager of topics that belong to a forum channel.
 * @example new ForumTopicManager(channel);
 */
export declare class ForumTopicManager extends BaseManager<number, ForumTopic> {
    readonly channel: ForumChannel;
    /** @param channel The forum channel the topics belong to. */
    constructor(channel: ForumChannel);
    /**
     * Fetch a forum topic from the channel, or cache.
     * @param forumTopic The forum topic to fetch.
     * @param options The options to fetch the forum topic with.
     * @returns The fetched forum topic.
     * @example topics.fetch(forumTopic);
     */
    fetch(forumTopic: number | ForumTopic, options?: FetchOptions): Promise<ForumTopic>;
    /**
     * Fetch forum topics from the channel.
     * @param options The options to fetch the forum topics with.
     * @returns The fetched forum topics.
     * @example topics.fetch();
     */
    fetch(options?: ForumTopicFetchManyOptions): Promise<Collection<number, ForumTopic>>;
    /** @ignore */
    private fetchSingle;
    /** @ignore */
    private fetchMany;
    /**
     * Create a topic in the forum channel.
     * @param payload The payload of the forum topic.
     * @returns The created forum topic.
     * @example topics.create({ title: 'My Topic' });
     */
    create(payload: APIForumTopicPayload): Promise<ForumTopic>;
    /**
     * Edit a forum topic in the channel.
     * @param forumTopic The forum topic to edit.
     * @param payload The payload of the forum topic.
     * @returns The edited forum topic.
     * @example topics.edit(forumTopic, { title: 'My Topic' });
     */
    edit(forumTopic: number | ForumTopic, payload: APIForumTopicEditPayload): Promise<ForumTopic>;
    /**
     * Delete a forum topic from the channel.
     * @param forumTopic The forum topic to delete.
     * @example topics.delete(forumTopic);
     */
    delete(forumTopic: number | ForumTopic): Promise<void>;
    /**
     * Pin a forum topic in the channel.
     * @param forumTopic The forum topic to pin.
     * @example topics.pin(forumTopic);
     */
    pin(forumTopic: number | ForumTopic): Promise<void>;
    /**
     * Unpin a forum topic from the channel.
     * @param forumTopic The forum topic to unpin.
     * @example topics.unpin(forumTopic);
     */
    unpin(forumTopic: number | ForumTopic): Promise<void>;
    /**
     * Lock a forum topic in the channel.
     * @param forumTopic The forum topic to lock.
     * @example topics.lock(forumTopic);
     */
    lock(forumTopic: number | ForumTopic): Promise<void>;
    /**
     * Unlock a forum topic in the channel.
     * @param forumTopic The forum topic to unlock.
     * @example topics.unlock(forumTopic);
     */
    unlock(forumTopic: number | ForumTopic): Promise<void>;
}
/** The options for fetching forum topics. */
export interface ForumTopicFetchManyOptions extends FetchManyOptions, APIForumTopicFetchManyOptions {
}
//# sourceMappingURL=ForumTopicManager.d.ts.map