import { AnnotationBase } from "../Annotations/AnnotationTypes";
/**
 * Log levels available to the SignalR client.
 * @see https://docs.microsoft.com/en-us/aspnet/core/signalr/diagnostics?view=aspnetcore-5.0
 * */
export type LogLevel = 'None' | 'Critical' | 'Error' | 'Warning' | 'Information' | 'Debug' | 'Trace';
/**
 * Shared document modification type.
 * */
export declare enum ModificationType {
    NoChanges = 0,
    Structure = 1,
    RemoveAnnotation = 2,
    AddAnnotation = 3,
    UpdateAnnotation = 4,
    Undo = 5,
    Redo = 6
}
/**
 * Undo change name.
 **/
export type UndoChangeName = 'form' | 'annotation' | 'rotation' | 'document-structure' | 'optional-content-config';
/**
 * Page modification.
 **/
export type PageModification = {
    width?: number;
    height?: number;
    rotate?: number;
    tabs?: "S" | "R" | "C" | undefined;
};
/**
 * Page structure change.
 **/
export type PageStructureChange = {
    pageIndex: number;
    add: boolean;
    checkNumPages: number;
    modOnly?: boolean;
    mod?: PageModification;
};
/**
 * Document structure changes.
 **/
export type StructureChanges = {
    resultStructure: number[];
    structureChanges: PageStructureChange[];
    pdfInfo: {
        numPages: number;
        fingerprint: string;
        fingerprints?: string[];
    };
    touchedAnnotations?: {
        pageIndex: number;
        annotationId: string;
    }[];
};
/**
 * Shared document modifications.
 * */
export type ModificationsState = {
    newAnnotations: {
        pageIndex: number;
        annotation: AnnotationBase;
    }[];
    updatedAnnotations: {
        pageIndex: number;
        annotation: AnnotationBase;
    }[];
    removedAnnotations: {
        pageIndex: number;
        annotationId: string;
    }[];
    structure?: StructureChanges;
    lastChangeType: ModificationType;
    undoCount: number;
    undoIndex: number;
    version: number;
};
/**
 * Information about shared document.
 **/
export type SharedDocumentInfo = {
    accessMode: SharedAccessMode;
    documentId: string;
    fileName: string;
    ownerUserName: string;
    userName: string;
};
/**
 * Shared document access mode.
 * */
export declare enum SharedAccessMode {
    /**
    * Information about access mode is not yet loaded.
    * */
    Loading = -1,
    /**
     * Access to document is denied.
     * */
    AccessDenied = 0,
    /**
     * User can only view the shared document.
     * */
    ViewOnly = 1,
    /**
     * User can view and edit the shared document.
     * */
    ViewAndEdit = 2
}
/**
 * User access mode.
 * */
export type UserAccess = {
    userName: string;
    accessMode: SharedAccessMode;
};
