import { APIListItem, APIListItemSummary, APIMentions } from 'guilded-api-typings';
import { Base } from '../Base';
import { ListItemNote } from './ListItemNote';
import { ListChannel } from '../channel/ListChannel';
import { FetchOptions } from '../../managers/BaseManager';
/**
 * Represents a list item on Guilded.
 * @example new ListItem(channel, rawItem);
 */
export declare class ListItem extends Base {
    readonly channel: ListChannel;
    readonly raw: APIListItem | APIListItemSummary;
    /** The ID of the server the list item belongs to. */
    readonly serverId: string;
    /** The ID of the channel the list item belongs to. */
    readonly channelId: string;
    /** The message of the list item. */
    readonly message: string;
    /** The mentions of the list item. */
    readonly mentions?: APIMentions;
    /** The date the list item was created. */
    readonly createdAt: Date;
    /** The ID of the user that created the list item. */
    readonly createdBy: string;
    /** The ID of the webhook that created the list item. */
    readonly createdByWebhookId?: string;
    /** The date the list item was edited. */
    readonly editedAt?: Date;
    /** The ID of the user that edited the list item. */
    readonly editedBy?: string;
    /** The ID of the list item the list item belongs to. */
    readonly parentId?: string;
    /** The date the list item was completed. */
    readonly completedAt?: Date;
    /** The ID of the user that completed the list item. */
    readonly completedBy?: string;
    /** The note of the list item. */
    readonly note?: ListItemNote;
    /**
     * @param channel The list channel the item belongs to.
     * @param raw The raw data of the list item.
     * @param cache Whether to cache the list item.
     */
    constructor(channel: ListChannel, raw: APIListItem | APIListItemSummary, cache?: boolean);
    /** Whether the list item is cached. */
    get isCached(): boolean;
    /** The server the list item belongs to. */
    get server(): import("../..").Server | undefined;
    /** The timestamp the list item was created. */
    get createdTimestamp(): number;
    /** The server member that created the list item. */
    get author(): import("../..").ServerMember | undefined;
    /** The webhook that created the list item. */
    get webhook(): import("../Webhook").Webhook | undefined;
    /** The ID of the user that created the list item. */
    get authorId(): string;
    /** The timestamp the list item was edited. */
    get editedTimestamp(): number | undefined;
    /** The server member that edited the list item. */
    get editor(): import("../..").ServerMember | undefined;
    /** The list item the list item belongs to. */
    get parent(): ListItem | undefined;
    /** The timestamp the list item was completed. */
    get completedTimestamp(): number | undefined;
    /** The server member that completed the list item. */
    get completer(): import("../..").ServerMember | undefined;
    /** Whether the list item is completed. */
    get isCompleted(): boolean;
    /** Whether the list item is editable. */
    get isEditable(): boolean;
    /**
     * Fetch the list item.
     * @param options The options to fetch the list item with.
     * @returns The fetched list item.
     * @example listItem.fetch();
     */
    fetch(options?: FetchOptions): Promise<this>;
    /**
     * Fetch the server the list item belongs to.
     * @param options The options to fetch the server with.
     * @returns The fetched server.
     * @example listItem.fetchServer();
     */
    fetchServer(options?: FetchOptions): Promise<import("../..").Server>;
    /**
     * Fetch the server member that created the list item.
     * @param options The options to fetch the server member with.
     * @returns The fetched server member.
     * @example listItem.fetchAuthor();
     */
    fetchAuthor(options?: FetchOptions): Promise<import("../..").ServerMember>;
    /**
     * Fetch the webhook that created the list item.
     * @param options The options to fetch the webhook with.
     * @returns The fetched webhook.
     * @example listItem.fetchWebhook();
     */
    fetchWebhook(options?: FetchOptions): Promise<import("../Webhook").Webhook> | undefined;
    /**
     * Fetch the server member that edited the list item.
     * @param options The options to fetch the server member with.
     * @returns The fetched server member.
     * @example listItem.fetchEditor();
     */
    fetchEditor(options?: FetchOptions): Promise<import("../..").ServerMember | undefined>;
    /**
     * Fetch the list item the list item belongs to.
     * @param options The options to fetch the list item with.
     * @returns The fetched list item.
     * @example listItem.fetchParent();
     */
    fetchParent(options?: FetchOptions): Promise<ListItem | undefined>;
    /**
     * Fetch the server member that completed the list item.
     * @param options The options to fetch the server member with.
     * @returns The fetched server member.
     * @example listItem.fetchCompleter();
     */
    fetchCompleter(options?: FetchOptions): Promise<import("../..").ServerMember | undefined>;
    /**
     * Edit the list item.
     * @param message The message of the list item.
     * @param note The note of the list item.
     * @returns The edited list item.
     * @example listItem.edit('Hello World!');
     */
    edit(message: string, note?: string): Promise<this>;
    /**
     * Remove the list item.
     * @returns The removed list item.
     * @example listItem.remove();
     */
    remove(): Promise<this>;
    /**
     * Complete the list item.
     * @returns The completed list item.
     * @example listItem.complete();
     */
    complete(): Promise<this>;
    /**
     * Uncomplete the list item.
     * @returns The uncompleted list item.
     * @example listItem.uncomplete();
     */
    uncomplete(): Promise<this>;
}
//# sourceMappingURL=ListItem.d.ts.map