import { Context, ContextFactoryOptions, ContextDefaultState } from './context';
import { Attachmentable } from '../shared/attachmentable';
import { kSerializeData } from '../../utils/constants';
export interface ICommentContextPayload {
    id: number;
    owner_id: number;
    from_id?: number;
    user_id?: number;
    reply_to_user?: number;
    reply_to_comment?: number;
    deleter_id?: number;
    photo_id?: number;
    video_id?: number;
    post_id?: number;
    item_id?: number;
    topic_id?: number;
    photo_owner_id?: number;
    video_owner_id?: number;
    post_owner_id?: number;
    topic_owner_id?: number;
    market_owner_id?: number;
    date?: number;
    text?: string;
    attachments?: object[];
    likes?: object;
}
export type CommentContextOptions<S> = ContextFactoryOptions<ICommentContextPayload, S>;
export type CommentContextType = 'comment';
export type CommentContextSubType = 'photo_comment' | 'video_comment' | 'wall_reply' | 'board_comment' | 'market_comment' | 'photo_comment_new' | 'photo_comment_edit' | 'photo_comment_delete' | 'photo_comment_restore' | 'video_comment_new' | 'video_comment_edit' | 'video_comment_delete' | 'video_comment_restore' | 'wall_reply_new' | 'wall_reply_edit' | 'wall_reply_restore' | 'wall_reply_delete' | 'board_comment_new' | 'board_comment_edit' | 'board_comment_delete' | 'board_comment_restore' | 'market_comment_new' | 'market_comment_edit' | 'market_comment_delete' | 'market_comment_restore';
declare class CommentContext<S = ContextDefaultState> extends Context<ICommentContextPayload, S, CommentContextType, CommentContextSubType> {
    constructor(options: CommentContextOptions<S>);
    /**
     * Checks is new comment
     */
    get isNew(): boolean;
    /**
     * Checks is edit comment
     */
    get isEdit(): boolean;
    /**
     * Checks is delete comment
     */
    get isDelete(): boolean;
    /**
     * Checks is restore comment
     */
    get isRestore(): boolean;
    /**
     * Checks is photo comment
     */
    get isPhotoComment(): boolean;
    /**
     * Checks is wall comment
     */
    get isWallComment(): boolean;
    /**
     * Checks is video comment
     */
    get isVideoComment(): boolean;
    /**
     * Checks is board comment
     */
    get isBoardComment(): boolean;
    /**
     * Checks is board comment
     */
    get isMarketComment(): boolean;
    /**
     * Checks is reply comment
     */
    get isReply(): boolean;
    /**
     * Checks if the user wrote a message
     */
    get isUser(): boolean;
    /**
     * Checks if the group wrote a message
     */
    get isGroup(): boolean;
    /**
     * Returns the identifier comment
     */
    get id(): number;
    /**
     * Returns the identifier reply comment
     */
    get replyId(): number | undefined;
    /**
     * identifier of who wrote the comment
     */
    get fromId(): number | undefined;
    /**
     * Returns the identifier reply user
     */
    get replyUserId(): number | undefined;
    /**
     * Returns the identifier of the user who deleted the comment
     */
    get deleterUserId(): number | undefined;
    /**
     * Returns the identifier of object
     */
    get objectId(): number;
    /**
     * Returns the identifier of owner
     */
    get ownerId(): number;
    /**
     * Returns the date creation action comment
     */
    get createdAt(): number | undefined;
    /**
     * Returns the text comment
     */
    get text(): string | undefined;
    /**
     * Returns the likes
     */
    get likes(): Record<string, any> | undefined;
    /**
     * Includes from subtype
     */
    includesFromSubType(type: string): boolean;
    /**
     * Edits a comment
     */
    editComment(options: {
        message?: string;
        attachments?: any;
    }): Promise<number>;
    /**
     * Removes comment
     */
    deleteComment(): Promise<number>;
    /**
     * Returns the custom data
     */
    [kSerializeData](): object;
}
interface CommentContext extends Attachmentable {
}
export { CommentContext };
