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.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 type PermissionProviderEvent = {
    event: PermissionProviderEventType;
    methodName?: PermissionSource;
    source?: 'internal' | 'external';
    timestamp?: number;
    uniqueId?: string;
    payload?: any;
};
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';
};
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;
};
