import { Action, EntityType } from '../../services/EntityManager/types';
import { Configuration, CommentsApi as GeneratedCommentsApi, type CreateCommentRequest, type UpdateCommentRequest, type DeleteCommentRequest, type PinCommentRequest, type UnpinCommentRequest, type ReactToCommentRequest, type UnreactToCommentRequest, type ReportCommentRequest } from '../generated/default';
import { EntityManagerCreateCommentRequest, EntityManagerUpdateCommentRequest, EntityManagerDeleteCommentRequest, EntityManagerPinCommentRequest, EntityManagerReactCommentRequest, EntityManagerReportCommentRequest, type CommentsApiServicesConfig } from './types';
export declare class CommentsApi extends GeneratedCommentsApi {
    private readonly entityManager?;
    constructor(configuration: Configuration, services: CommentsApiServicesConfig);
    generateCommentId(): Promise<number>;
    /** @hidden
     * Create a comment using entity manager
     */
    createCommentWithEntityManager(params: EntityManagerCreateCommentRequest): Promise<{
        commentId: string;
        blockHash: string;
        blockNumber: number;
        transactionHash: string;
    }>;
    createComment(params: CreateCommentRequest, requestInit?: RequestInit): Promise<import("../generated/default").CreateCommentResponse>;
    /** @hidden
     * Update a comment using entity manager
     */
    updateCommentWithEntityManager(params: EntityManagerUpdateCommentRequest): Promise<import("../../services/EntityManager/types").EntityManagerTransactionReceipt>;
    updateComment(params: UpdateCommentRequest, requestInit?: RequestInit): Promise<import("../generated/default").WriteResponse>;
    /** @hidden
     * Delete a comment using entity manager
     */
    deleteCommentWithEntityManager(params: EntityManagerDeleteCommentRequest): Promise<import("../../services/EntityManager/types").EntityManagerTransactionReceipt>;
    deleteComment(params: DeleteCommentRequest, requestInit?: RequestInit): Promise<import("../generated/default").WriteResponse>;
    /** @hidden
     * React to a comment using entity manager
     */
    reactToCommentWithEntityManager(params: EntityManagerReactCommentRequest): Promise<import("../../services/EntityManager/types").EntityManagerTransactionReceipt>;
    reactToComment(params: ReactToCommentRequest, requestInit?: RequestInit): Promise<import("../generated/default").WriteResponse>;
    unreactToComment(params: UnreactToCommentRequest, requestInit?: RequestInit): Promise<import("../generated/default").WriteResponse>;
    /** @hidden
     * Pin a comment using entity manager
     */
    pinCommentWithEntityManager(params: EntityManagerPinCommentRequest): Promise<import("../../services/EntityManager/types").EntityManagerTransactionReceipt>;
    pinComment(params: PinCommentRequest, requestInit?: RequestInit): Promise<import("../generated/default").WriteResponse>;
    unpinComment(params: UnpinCommentRequest, requestInit?: RequestInit): Promise<import("../generated/default").WriteResponse>;
    /** @hidden
     * Report a comment using entity manager
     */
    reportCommentWithEntityManager(params: EntityManagerReportCommentRequest): Promise<import("../../services/EntityManager/types").EntityManagerTransactionReceipt>;
    reportComment(params: ReportCommentRequest, requestInit?: RequestInit): Promise<import("../generated/default").WriteResponse>;
    /** @hidden
     * Mute/unmute a user (entity manager only)
     */
    muteUser(userId: number, mutedUserId: number, isMuted: boolean): Promise<import("../../services/EntityManager/types").EntityManagerTransactionReceipt>;
    /** @hidden
     * Update comment notification settings (entity manager only)
     */
    updateCommentNotificationSetting(config: {
        userId: number;
        entityType: EntityType;
        entityId: number;
        action: Action.MUTE | Action.UNMUTE;
    }): Promise<import("../../services/EntityManager/types").EntityManagerTransactionReceipt>;
}
