import { ParticipantRole } from 'src/common/enum/participant-role.enum';
import { RegistrationAction } from 'src/common/enum/registration-action.enum';
import { ROLE_KEYS } from 'src/common/constants/strings-constants';
import { ZoomRole } from '../enums/zoom-role.enum';
import { ZoomRegistrationUpdate } from '../enums/zoom-registration-update.enum';

/**
 * Provider translation maps for the zoom edge. These live in the zoom module
 * (not common/constants) because they reference zoom-specific enums; common must
 * never import from the zoom module.
 */

/** Neutral role -> Zoom role. Values are identical strings; the map keeps it explicit. */
export const ROLE_MAP: Record<ParticipantRole, ZoomRole> = {
  [ParticipantRole.PANELIST]: ZoomRole.PANELIST,
  [ParticipantRole.ATTENDEE]: ZoomRole.ATTENDEE,
};

/** Neutral action -> Zoom registration update. */
export const ACTION_MAP: Record<RegistrationAction, ZoomRegistrationUpdate> = {
  [RegistrationAction.REGISTER]: ZoomRegistrationUpdate.REGISTER,
  [RegistrationAction.UNREGISTER]: ZoomRegistrationUpdate.UNREGISTER,
  [RegistrationAction.DOWNGRADE_TO_AUDIO]: ZoomRegistrationUpdate.DOWNGRADE_TO_AUDIO,
};

/** Roles auto-issued a Zoom general link when a shared ("same link") session group is created. */
export const SHARED_SESSION_GENERAL_LINK_ROLE_KEYS: string[] = [
  ROLE_KEYS.RELATIONAL_MANAGER
];

/** Placeholder registrants auto-issued a Zoom general link when a shared session group is created. */
export const SHARED_SESSION_GENERAL_LINK_PLACEHOLDER = {
  name: 'system',
  count: 0,
  domain: 'infinitheism.com',
} as const;
