import { ICaseChat, ICaseComment } from '@cee-eng/hydrajs/@types/api/public/case'; import { ICommentFeedback } from '@cee-eng/hydrajs/@types/api/public/commentFeedback'; import { IAttachment } from '@cee-eng/hydrajs/@types/models/attachment'; import { IAction } from '@rh-support/types/shared'; import { ApolloQueryClient } from '@rh-support/utils'; type IActionType = IAction; export type DiscussionsReducerDispatchType = (value: IActionType) => void; export interface IDiscussion { item: Partial; last_modified_date: string; discussionType: string; feedback?: number; feedbackReason?: string; } export declare enum DiscussionType { COMMENT = "comment", CHAT = "chat", ATTACHMENT = "attachment", EXTERNAL_TRACKER = "externalTracker", ALL = "All" } export interface ISort { name: string; sortOrder: 'desc' | 'asc'; } export declare const discussionSortOrderConst: ISort[]; export interface IFilter { filterLabel: string; value: string; isDisabled: boolean; isSelected: boolean; canSee: boolean; } export declare const initDiscussionFiltersListState: IFilter[]; export interface IDiscussionState { sort: ISort; allDiscussions: IDiscussion[]; discussionFiltersListState: IFilter[]; replyingToAuthor: string | null; replyingToCommentId: string | null; replyingToTimestamp: string | null; } export declare const initialDiscussionState: IDiscussionState; export declare enum DiscussionsConstants { updateDiscussionState = "updateDiscussionState" } export declare const discussionReducer: (state: IDiscussionState, action: IActionType) => IDiscussionState; export declare const setSort: (dispatch: DiscussionsReducerDispatchType, sort: ISort, allDiscussions: IDiscussion[]) => void; export declare const setReplyingTo: (dispatch: DiscussionsReducerDispatchType, author: string, commentId: string, timestamp: string) => void; export declare const clearReplyingTo: (dispatch: DiscussionsReducerDispatchType) => void; export declare const setFilter: (dispatch: DiscussionsReducerDispatchType, selected: string[], discussionFiltersListState: IFilter[]) => void; export declare const commputeFeedback: (commentId: string, feedbacks: ICommentFeedback[]) => number; export declare const computeFeedbackReason: (commentId: string, feedbacks: ICommentFeedback[]) => string | undefined; export declare const setDiscussions: (dispatch: DiscussionsReducerDispatchType, comments: ICaseComment[], chats: ICaseChat[], attachments: IAttachment[], feedbacks: ICommentFeedback[], trackerUpdates: Partial, discussionFiltersListState: IFilter[], canSeeExternalTracker: boolean, canSeeChat: boolean, canSeeAttachments: boolean, sort?: ISort) => void; export declare const appendNewComments: (dispatch: DiscussionsReducerDispatchType, allComments: ICaseComment[], existingDiscussions: IDiscussion[], feedbacks: ICommentFeedback[], sort?: ISort) => void; export declare const updateAttacmentsAfterRemoval: (dispatch: DiscussionsReducerDispatchType, uuid_removed: string, allDiscussions: IDiscussion[], discussionFiltersListState: IFilter[]) => void; export declare const updateCommentStateFeedback: (dispatch: DiscussionsReducerDispatchType, comment_id: string, newFeedback: any, allDiscussions: IDiscussion[], feedbackReason?: string) => Promise; export declare const updateAttachment: (dispatch: DiscussionsReducerDispatchType, uuid: string, newAttachment: any, allDiscussions: IDiscussion[]) => void; export declare const updateDiscussionStateAttachments: (dispatch: DiscussionsReducerDispatchType, caseNumber: string, allDiscussions: IDiscussion[], sort: ISort, discussionFiltersListState: IFilter[], dispatchCaseDetailsHydraAttachments: any, apolloClient: ApolloQueryClient, caseSalesforceId?: string, includeSecureSupport?: boolean) => Promise; export {}; //# sourceMappingURL=CaseDiscussionTabReducer.d.ts.map