import { OverrideProperties } from 'type-fest';
import { LoggerService } from '../../services';
import { Action, EntityManagerService, ManageEntityOptions } from '../../services/EntityManager/types';
import { Configuration, CommentsApi as GeneratedCommentsApi } from '../generated/default';
import { CommentMetadata } from './types';
type EditCommentMetadata = CommentMetadata & {
    trackId: number;
};
type PinCommentMetadata = {
    userId: number;
    entityId: number;
    trackId: number;
    isPin: boolean;
};
type ReactCommentMetadata = {
    userId: number;
    commentId: number;
    isLiked: boolean;
    trackId: number;
};
type CommentNotificationOptions = OverrideProperties<Omit<ManageEntityOptions, 'metadata' | 'auth'>, {
    action: Action.MUTE | Action.UNMUTE;
}>;
export declare class CommentsApi extends GeneratedCommentsApi {
    private readonly entityManager;
    private readonly logger;
    constructor(configuration: Configuration, entityManager: EntityManagerService, logger: LoggerService);
    generateCommentId(): Promise<number>;
    postComment(metadata: CommentMetadata): Promise<string | null>;
    editComment(metadata: EditCommentMetadata): Promise<Pick<import("web3-core").TransactionReceipt, "blockHash" | "blockNumber">>;
    deleteComment(metadata: CommentMetadata): Promise<Pick<import("web3-core").TransactionReceipt, "blockHash" | "blockNumber">>;
    reactComment(metadata: ReactCommentMetadata): Promise<Pick<import("web3-core").TransactionReceipt, "blockHash" | "blockNumber">>;
    pinComment(metadata: PinCommentMetadata): Promise<Pick<import("web3-core").TransactionReceipt, "blockHash" | "blockNumber">>;
    reportComment(userId: number, entityId: number): Promise<Pick<import("web3-core").TransactionReceipt, "blockHash" | "blockNumber">>;
    muteUser(userId: number, mutedUserId: number, isMuted: boolean): Promise<Pick<import("web3-core").TransactionReceipt, "blockHash" | "blockNumber">>;
    updateCommentNotificationSetting(config: CommentNotificationOptions): Promise<Pick<import("web3-core").TransactionReceipt, "blockHash" | "blockNumber">>;
}
export {};
