import { PropertyValueMap } from 'lit';
import { InfiniteQueryController } from '../controllers/infinite-query-controller';
import { CommentsResultType } from '../types/comments.types';
import { ShadowPartsController } from '../controllers/shadow-parts-controller';
import { WeavySubAppComponent } from '../classes/weavy-sub-app-component';
import { RealtimeReactionEventType } from '../types/realtime.types';
declare global {
    interface HTMLElementTagNameMap {
        "wy-comment-list": WyCommentList;
    }
}
/**
 * Comment list component rendering a list of comments and an editor to create comments.
 *
 * **Used sub components:**
 *
 * - [`<wy-comment>`](./wy-comment.ts)
 * - [`<wy-editor-comment>`](./wy-editor-comment.ts)
 * - [`<wy-progress-circular>`](./ui/wy-progress-circular.ts)
 * - [`<wy-empty>`](./wy-empty.ts)
 *
 * @csspart wy-comments - Container for the comments list
 * @csspart wy-pager - Pager container element
 * @csspart wy-pager-bottom - Bottom pager modifier
 *
 * @fires {WyPreviewOpenEventType} wy-preview-open - Fired when a preview overlay is about to open.
 * @fires {WyPreviewCloseEventType} wy-preview-close - Fired when a preview overlay is closed.
 */
export declare class WyCommentList extends WeavySubAppComponent {
    #private;
    static styles: import('lit').CSSResult[];
    /**
     * Controller for exporting named shadow parts.
     *
     * @internal
     */
    protected exportParts: ShadowPartsController;
    /**
     * Id of the parent entity (post/file/app) to which comments belong.
     *
     * Set this to load comments for a specific parent.
     */
    parentId?: number;
    /**
     * Location where the comments are stored.
     */
    location: "posts" | "files" | "apps";
    /**
     * Placeholder text for the comment editor input.
     */
    placeholder?: string;
    /**
     * Whether comments should be revealed (expanded) by default.
     */
    reveal: boolean;
    /**
     * Adds padding to the comment list container.
     */
    padded: boolean;
    /**
     * Resolves when `parentId` is available.
     *
     * @returns Promise<number>
     */
    whenParentId(): Promise<number>;
    /**
     * Infinite query controller for loading paged comments.
     *
     * @internal
     */
    commentsQuery: InfiniteQueryController<CommentsResultType>;
    /**
     * Mutation controller used to add comments.
     *
     * @internal
     */
    private addCommentMutation;
    /**
     * Mutation controller used to trash a comment.
     *
     * @internal
     */
    private removeCommentMutation?;
    /**
     * Mutation controller used to restore a comment.
     *
     * @internal
     */
    private restoreCommentMutation?;
    /**
     * Mutation controller used for poll voting.
     *
     * @internal
     */
    private pollMutation?;
    /**
     * Infinite scroll controller instance used to observe the pager node.
     *
     * @internal
     */
    private infiniteScroll;
    /**
     * Ref for pager element used by the infinite scroll controller.
     *
     * @internal
     */
    private pagerRef;
    willUpdate(changedProperties: PropertyValueMap<this>): Promise<void>;
    protected update(changedProperties: PropertyValueMap<this>): void;
    /**
     * Handler invoked when a realtime comment is created.
     *
     * @internal
     */
    handleRealtimeCommentCreated: () => void;
    /**
     * Handler invoked when a realtime reaction is added.
     *
     * Updates the local cache for the affected comment.
     *
     * @internal
     */
    handleRealtimeReactionAdded: (realtimeEvent: RealtimeReactionEventType) => void;
    /**
     * Handler invoked when a realtime reaction is removed.
     *
     * Updates the local cache for the affected comment.
     *
     * @internal
     */
    handleRealtimeReactionDeleted: (realtimeEvent: RealtimeReactionEventType) => void;
    /**
     * Handle submit from the comment editor and trigger add comment mutation.
     *
     * @internal
     */
    private handleSubmit;
    /**
     * Render comment items from a flattened page array.
     *
     * @internal
     */
    private renderComments;
    render(): import('../../node_modules/lit-html/node/lit-html.js').TemplateResult<1>;
    disconnectedCallback(): void;
}
//# sourceMappingURL=wy-comment-list.d.ts.map