import { ReplaceTextModel } from "../Models/ViewerTypes";
/**
 * Represents a set of local modifications to a document.
 * These modifications will be sent to the SupportApi service.
 * @typedef {Object} LocalDocumentModification
 * @property {boolean} [renderInteractiveForms] Indicates whether interactive forms should be rendered.
 * @property {number} [rotation] The rotation angle of the document.
 * @property {*} [formData] Data related to form fields.
 * @property {Object} [annotationsData] Data related to annotations.
 * @property {Array} annotationsData.newAnnotations Newly added annotations.
 * @property {Array} annotationsData.updatedAnnotations Updated annotations.
 * @property {Array} annotationsData.removedAnnotations Removed annotations.
 * @property {Object[]} [structureChanges] Changes to the document structure.
 * @property {number} structureChanges.pageIndex Index of the page affected by the change.
 * @property {boolean} structureChanges.add Indicates whether an element is being added.
 * @property {number} structureChanges.checkNumPages Number of pages to check.
 * @property {Object.<number, string[]>} annotationsOrderTable Table mapping annotation keys to their respective order.
 * @property {Array} optionalContentVisibility Visibility settings for optional content groups.
 * @property {string} optionalContentVisibility.groupId ID of the optional content group.
 * @property {string} optionalContentVisibility.groupName Name of the optional content group.
 * @property {boolean} optionalContentVisibility.visible Indicates whether the group is visible.
 */
export type LocalDocumentModification = {
    renderInteractiveForms?: boolean;
    rotation?: number;
    formData?: any;
    annotationsData?: {
        newAnnotations: any[];
        updatedAnnotations: any[];
        removedAnnotations: any[];
    };
    structureChanges?: {
        pageIndex: number;
        add: boolean;
        checkNumPages: number;
    }[];
    annotationsOrderTable: {
        [key: number]: string[];
    };
    optionalContentVisibility: {
        groupId: string;
        groupName: string;
        visible: boolean;
    }[];
    replaceTextData?: ReplaceTextModel[];
};
