import { ResolverActions } from "../../utils/enums";
import { BaseMetadata } from "./base-metadata.data.model";
import { CommentAnnotation } from "./comment-annotation.data.model";
import { ResolverConfig, ResolverResponse } from "./resolver.data.model";
export interface CommentAnnotationDataProvider {
    get: (request: GetCommentResolverRequest) => Promise<ResolverResponse<Record<string, PartialCommentAnnotation>>>;
    save: (request: SaveCommentResolverRequest) => Promise<ResolverResponse<undefined>>;
    delete: (request: DeleteCommentResolverRequest) => Promise<ResolverResponse<undefined>>;
    config?: ResolverConfig;
}
export interface GetCommentResolverRequest {
    organizationId: string;
    commentAnnotationIds?: string[];
    documentIds?: string[];
    folderId?: string;
    allDocuments?: boolean;
}
export interface DeleteCommentResolverRequest {
    commentAnnotationId: string;
    metadata?: BaseMetadata;
    event?: ResolverActions;
}
export interface SaveCommentResolverRequest {
    commentAnnotation: {
        [key: string]: PartialCommentAnnotation;
    };
    event?: ResolverActions;
    commentId?: string;
}
export interface PartialComment {
    commentId: string | number;
    commentHtml?: string;
    commentText?: string;
}
export interface PartialCommentAnnotationResult {
    strippedData: {
        [annotationId: string]: PartialCommentAnnotation;
    } | null;
    originalData: CommentAnnotation | null;
    eventType?: ResolverActions;
}
export interface PartialCommentAnnotation {
    annotationId: string;
    metadata?: BaseMetadata;
    comments: {
        [commentId: string]: PartialComment;
    };
}
