import { CoreEventTypes } from "../../utils/enums";
import { VeltButtonClickEvent } from "./button.data.model";
import { PermissionSource, User } from "./user.data.model";
export type CoreEventTypesMap = {
    [CoreEventTypes.PERMISSION_PROVIDER]: PermissionProviderEvent;
    [CoreEventTypes.USER_RESOLVER]: UserResolverEvent;
    [CoreEventTypes.COMMENT_RESOLVER]: CommentResolverEvent;
    [CoreEventTypes.ATTACHMENT_RESOLVER]: AttachmentResolverEvent;
    [CoreEventTypes.REACTION_RESOLVER]: ReactionResolverEvent;
    [CoreEventTypes.VELT_BUTTON_CLICK]: VeltButtonClickEvent;
    [CoreEventTypes.USER_UPDATE]: UserUpdateEvent;
    [CoreEventTypes.DOCUMENT_INIT]: DocumentInitEvent;
    [CoreEventTypes.ERROR]: ErrorEvent;
    [CoreEventTypes.INIT_UPDATE]: InitUpdateEvent;
};
export type UserUpdateEvent = User | null;
export type DocumentInitEvent = boolean | undefined;
export declare enum UserResolverSource {
    RESOLVE_USERS = "resolveUsers",
    FORMAT_RESPONSE = "formatResponse",
    MERGE_USER_WITH_PROVIDED_USER_DATA = "mergeUserWithProvidedUserData",
    GET_TEMPORARY_USERS = "getTemporaryUsers",
    SET_SINGLE_EDITOR_MODE_LIVE_STATE_DATA_FOR_DIFFERENT_USER_PRESENT_ON_TAB = "setSingleEditorModeLiveStateDataForDifferentUserPresentOnTab",
    RESOLVE_AND_MERGE_SINGLE_EDITOR_LIVE_STATE_DATA_WITH_USER = "resolveAndMergeSingleEditorLiveStateDataWithUser",
    GET_SINGLE_EDITOR_MODE_DATA = "getSingleEditorModeData",
    RESOLVE_USERS_FROM_HUDDLE_MESSAGES = "resolveUsersFromHuddleMessages"
}
export declare enum UserResolverModuleName {
    IDENTIFY = "identify/authProvider",
    GET_TEMPORARY_USERS = "getTemporaryUsers",
    GET_USERS = "getUsers",
    GET_HUDDLE_USERS = "getHuddleUsers",
    GET_SINGLE_EDITOR_USERS = "getSingleEditorUsers"
}
export declare enum CommentResolverSource {
    RESOLVE_COMMENT_ANNOTATIONS = "resolveCommentAnnotations",
    SAVE_COMMENT_ANNOTATION = "saveCommentAnnotation",
    DELETE_COMMENT_ANNOTATION = "deleteCommentAnnotation",
    FORMAT_RESPONSE = "formatResponse",
    INIT_DOCUMENTS = "initDocuments",
    SET_DATA = "setData",
    UPDATE_DATA = "updateData",
    DELETE_DATA = "deleteData"
}
export declare enum AttachmentResolverSource {
    SAVE_ATTACHMENT = "saveAttachment",
    DELETE_ATTACHMENT = "deleteAttachment",
    UPLOAD_TO_RESOLVER = "uploadToResolver"
}
export declare enum ReactionResolverSource {
    RESOLVE_REACTION_ANNOTATIONS = "resolveReactionAnnotations",
    SAVE_REACTION_ANNOTATION = "saveReactionAnnotation",
    DELETE_REACTION_ANNOTATION = "deleteReactionAnnotation",
    FORMAT_RESPONSE = "formatResponse",
    INIT_DOCUMENTS = "initDocuments",
    SET_DATA = "setData",
    UPDATE_DATA = "updateData",
    DELETE_DATA = "deleteData"
}
export type BaseResolverEvent<TEventType, TMethodName, TModuleName> = {
    event: TEventType;
    methodName?: TMethodName;
    moduleName?: TModuleName;
    source?: 'internal' | 'external';
    timestamp?: number;
    uniqueId?: string;
    payload?: any;
};
export type PermissionProviderEvent = BaseResolverEvent<PermissionProviderEventType, PermissionSource, PermissionProviderModuleName>;
export declare enum PermissionProviderModuleName {
}
export type PermissionProviderEventType = {
    RESOURCE_ACCESS_REQUEST_FORMED: 'resourceAccessRequestFormed';
    RESOURCE_ACCESS_REQUEST_TRIGGERED: 'resourceAccessRequestTriggered';
    RESOURCE_ACCESS_RESULT: 'resourceAccessResult';
    RESOURCE_ACCESS_ERROR: 'resourceAccessError';
    RESOURCE_ACCESS_RESULT_FROM_CACHE: 'resourceAccessResultFromCache';
    REVOKE_ACCESS_ON_DOCUMENT_UNSET_TRIGGERED: 'revokeAccessOnDocumentUnsetTriggered';
    REVOKE_ACCESS_ON_DOCUMENT_UNSET_FORMED: 'revokeAccessOnDocumentUnsetFormed';
    REVOKE_ACCESS_ON_DOCUMENT_UNSET_RESULT: 'revokeAccessOnDocumentUnsetResult';
    REVOKE_ACCESS_ON_USER_LOGOUT_TRIGGERED: 'revokeAccessOnUserLogoutTriggered';
    REVOKE_ACCESS_ON_USER_LOGOUT_FORMED: 'revokeAccessOnUserLogoutFormed';
    REVOKE_ACCESS_ON_USER_LOGOUT_RESULT: 'revokeAccessOnUserLogoutResult';
    REVOKE_ACCESS_ON_DOCUMENT_UNSET_ERROR: 'revokeAccessOnDocumentUnsetError';
    REVOKE_ACCESS_ON_USER_LOGOUT_ERROR: 'revokeAccessOnUserLogoutError';
};
export type UserResolverEvent = BaseResolverEvent<UserResolverEventType, UserResolverSource, UserResolverModuleName>;
export type UserResolverEventType = {
    USER_RESOLUTION_REQUEST_FORMED: 'userResolutionRequestFormed';
    USER_RESOLUTION_REQUEST_TRIGGERED: 'userResolutionRequestTriggered';
    USER_RESOLUTION_RESULT: 'userResolutionResult';
    USER_RESOLUTION_ERROR: 'userResolutionError';
    USER_RESOLUTION_RESULT_FROM_CACHE: 'userResolutionResultFromCache';
};
export type CommentResolverEvent = BaseResolverEvent<CommentResolverEventType, CommentResolverSource, CommentResolverModuleName>;
export declare enum CommentResolverModuleName {
    SET_DOCUMENTS = "setDocuments",
    GET_COMMENT_ANNOTATIONS = "getCommentAnnotations",
    GET_NOTIFICATIONS = "getNotifications"
}
export type CommentResolverEventType = {
    COMMENT_RESOLUTION_REQUEST_FORMED: 'commentResolutionRequestFormed';
    COMMENT_RESOLUTION_REQUEST_TRIGGERED: 'commentResolutionRequestTriggered';
    COMMENT_RESOLUTION_RESULT: 'commentResolutionResult';
    COMMENT_RESOLUTION_ERROR: 'commentResolutionError';
    COMMENT_RESOLUTION_RESULT_FROM_CACHE: 'commentResolutionResultFromCache';
    COMMENT_SAVE_REQUEST_FORMED: 'commentSaveRequestFormed';
    COMMENT_SAVE_REQUEST_TRIGGERED: 'commentSaveRequestTriggered';
    COMMENT_SAVE_RESULT: 'commentSaveResult';
    COMMENT_SAVE_ERROR: 'commentSaveError';
    COMMENT_DELETE_REQUEST_FORMED: 'commentDeleteRequestFormed';
    COMMENT_DELETE_REQUEST_TRIGGERED: 'commentDeleteRequestTriggered';
    COMMENT_DELETE_RESULT: 'commentDeleteResult';
    COMMENT_DELETE_ERROR: 'commentDeleteError';
};
export type AttachmentResolverEvent = BaseResolverEvent<AttachmentResolverEventType, AttachmentResolverSource, AttachmentResolverModuleName>;
export declare enum AttachmentResolverModuleName {
}
export type AttachmentResolverEventType = {
    ATTACHMENT_SAVE_REQUEST_FORMED: 'attachmentSaveRequestFormed';
    ATTACHMENT_SAVE_REQUEST_TRIGGERED: 'attachmentSaveRequestTriggered';
    ATTACHMENT_SAVE_RESULT: 'attachmentSaveResult';
    ATTACHMENT_SAVE_ERROR: 'attachmentSaveError';
    ATTACHMENT_DELETE_REQUEST_FORMED: 'attachmentDeleteRequestFormed';
    ATTACHMENT_DELETE_REQUEST_TRIGGERED: 'attachmentDeleteRequestTriggered';
    ATTACHMENT_DELETE_RESULT: 'attachmentDeleteResult';
    ATTACHMENT_DELETE_ERROR: 'attachmentDeleteError';
};
export type ReactionResolverEvent = BaseResolverEvent<ReactionResolverEventType, ReactionResolverSource, ReactionResolverModuleName>;
export declare enum ReactionResolverModuleName {
    SET_DOCUMENTS = "setDocuments",
    GET_REACTION_ANNOTATIONS = "getReactionAnnotations"
}
export type ReactionResolverEventType = {
    REACTION_RESOLUTION_REQUEST_FORMED: 'reactionResolutionRequestFormed';
    REACTION_RESOLUTION_REQUEST_TRIGGERED: 'reactionResolutionRequestTriggered';
    REACTION_RESOLUTION_RESULT: 'reactionResolutionResult';
    REACTION_RESOLUTION_ERROR: 'reactionResolutionError';
    REACTION_RESOLUTION_RESULT_FROM_CACHE: 'reactionResolutionResultFromCache';
    REACTION_SAVE_REQUEST_FORMED: 'reactionSaveRequestFormed';
    REACTION_SAVE_REQUEST_TRIGGERED: 'reactionSaveRequestTriggered';
    REACTION_SAVE_RESULT: 'reactionSaveResult';
    REACTION_SAVE_ERROR: 'reactionSaveError';
    REACTION_DELETE_REQUEST_FORMED: 'reactionDeleteRequestFormed';
    REACTION_DELETE_REQUEST_TRIGGERED: 'reactionDeleteRequestTriggered';
    REACTION_DELETE_RESULT: 'reactionDeleteResult';
    REACTION_DELETE_ERROR: 'reactionDeleteError';
};
export type ErrorEvent = {
    event?: string;
    sourceMethod?: string;
    documentIds?: string[];
    userId?: string;
    timestamp?: number;
    error?: string;
    code?: string;
    message?: string;
    source?: string;
};
export declare enum InitUpdateMethodNames {
    SET_DOCUMENTS = "setDocuments",
    SET_ROOT_DOCUMENT = "setRootDocument",
    SET_DOCUMENT_ID = "setDocumentId",
    UNSET_DOCUMENT_ID = "unsetDocumentId",
    UNSET_DOCUMENTS = "unsetDocuments",
    SET_LOCATION = "setLocation",
    SET_LOCATIONS = "setLocations",
    SET_ROOT_LOCATION = "setRootLocation",
    ADD_LOCATION = "addLocation",
    REMOVE_LOCATION = "removeLocation",
    REMOVE_LOCATIONS = "removeLocations",
    UNSET_LOCATION_IDS = "unsetLocationIds",
    REMOVE_LOCATIONS_SUCCESS = "removeLocationsSuccess"
}
export type InitUpdateEvent = {
    event: string;
    methodName?: string;
    source?: string;
    payload?: any;
};
