import * as Redux from 'redux';
import { CommentThread, AdaptableComment, CommentState } from '../../AdaptableState/CommentState';
import { CellAddress } from '../../types';
/**
 * @ReduxAction A Comment has been added
 */
export declare const COMMENT_ADD = "COMMENT_ADD";
/**
 * @ReduxAction A Comment Thread has been added
 */
export declare const COMMENT_THREAD_ADD = "COMMENT_THREAD_ADD";
/**
 * @ReduxAction A Comment Thread has been removed
 */
export declare const COMMENT_THREAD_DELETE = "COMMENT_THREAD_DELETE";
/**
 * @ReduxAction A Comment has been edited
 */
export declare const COMMENT_EDIT = "COMMENT_EDIT";
/**
 * @ReduxAction A Comment has been deleted
 */
export declare const COMMENT_DELETE = "COMMENT_DELETE";
/**
 * @ReduxAction Comments Module is ready
 */
export declare const COMMENTS_READY = "COMMENTS_READY";
/**
 * @ReduxAction Comments have been loaded
 */
export declare const COMMENTS_THREADS_LOAD = "COMMENTS_THREADS_LOAD";
export interface AdaptableCommentAction extends Redux.Action {
    comment: AdaptableComment;
    cellAddress: CellAddress;
}
export interface AdaptableCommentAddAction extends AdaptableCommentAction {
}
export interface AdaptableCommentThreadAddAction extends Redux.Action {
    commentThread: CommentThread;
}
export interface AdaptableCommentThreadsLoadAction extends Redux.Action {
    commentThreads: CommentThread[];
}
export interface AdaptableCommentThreadDeleteAction extends Redux.Action {
    cellAddress: CellAddress;
}
export interface AdaptableCommentEditAction extends AdaptableCommentAction {
}
export interface AdaptableCommentDeleteAction extends Redux.Action {
    commentUuid: AdaptableComment['Uuid'];
    cellAddress: CellAddress;
}
export interface CommentReadyAction extends Redux.Action {
    commentState: CommentState;
}
export declare const CommentThreadsLoad: ({ commentThreads, }: {
    commentThreads: CommentThread[];
}) => AdaptableCommentThreadsLoadAction;
export declare const CommentAdd: ({ comment, cellAddress, }: {
    comment: AdaptableComment;
    cellAddress: CellAddress;
}) => AdaptableCommentAddAction;
export declare const CommentThreadAdd: ({ commentThread, }: {
    commentThread: CommentThread;
}) => AdaptableCommentThreadAddAction;
export declare const CommentThreadDelete: ({ cellAddress: cellAddress, }: {
    cellAddress: CellAddress;
}) => AdaptableCommentThreadDeleteAction;
export declare const CommentEdit: ({ comment, cellAddress, }: {
    comment: AdaptableComment;
    cellAddress: CellAddress;
}) => AdaptableCommentEditAction;
export declare const CommentsDelete: ({ commentUuid, cellAddress, }: {
    commentUuid: AdaptableComment["Uuid"];
    cellAddress: CellAddress;
}) => AdaptableCommentDeleteAction;
export declare const GetCellCommentSelector: (state: CommentState, address: CellAddress) => CommentThread | undefined;
export declare const CommentsReducer: Redux.Reducer<CommentState>;
