import { FShape } from '@univerjs-pro/engine-shape/facade';
import * as ThreadComment from '@univerjs/thread-comment';
export type IShapeCommentCreateOptions = Omit<ThreadComment.ICreateThreadCommentOptions, 'unitId' | 'subUnitId' | 'anchor' | 'content'>;
export interface IFShapeThreadCommentMixin {
    /**
     * Creates a comment on this Shape using the host product's stable element anchor.
     * @param content Plain text or a Univer document body for rich comment content.
     * @param options Optional stable IDs, author, attachments, and creation time.
     * @returns `true` when the create command succeeds; otherwise, `false`.
     * @throws {Error} If the Shape host is not Sheets, Docs, Slides, or Board.
     * @throws {TypeError} If the content is empty.
     * @example
     * ```ts
     * const shape = univerAPI.getActivePresentation()?.getSlideByIndex(0)?.getShapes()[0];
     * await shape?.createCommentAsync('Align this shape with the title.');
     * ```
     */
    createCommentAsync(content: ThreadComment.ThreadCommentContent, options?: IShapeCommentCreateOptions): Promise<boolean>;
    /**
     * Returns locally loaded comments anchored to this Shape's stable ID.
     * @returns Matching comment threads in the Shape's host product.
     * @example
     * ```ts
     * const shape = univerAPI.getActivePresentation()?.getSlideByIndex(0)?.getShapes()[0];
     * console.log(shape?.getComments().length ?? 0);
     * ```
     */
    getComments(): ThreadComment.IFacadeThreadCommentInfo[];
    /**
     * Synchronizes known threads and returns comments anchored to this Shape's stable ID.
     * @returns A promise resolving to matching synchronized comment threads.
     * @example
     * ```ts
     * const shape = univerAPI.getActivePresentation()?.getSlideByIndex(0)?.getShapes()[0];
     * const comments = shape ? await shape.listCommentsAsync() : [];
     * console.log(comments.length);
     * ```
     */
    listCommentsAsync(): Promise<ThreadComment.IFacadeThreadCommentInfo[]>;
}
export declare class FShapeThreadCommentMixin extends FShape implements IFShapeThreadCommentMixin {
    private _getThreadCommentService;
    /** @inheritdoc */
    createCommentAsync(content: ThreadComment.ThreadCommentContent, options?: IShapeCommentCreateOptions): Promise<boolean>;
    /** @inheritdoc */
    getComments(): ThreadComment.IFacadeThreadCommentInfo[];
    /** @inheritdoc */
    listCommentsAsync(): Promise<ThreadComment.IFacadeThreadCommentInfo[]>;
}
declare module '@univerjs-pro/engine-shape/facade' {
    interface FShape extends IFShapeThreadCommentMixin {
    }
}
