/*
 * Copyright (c) 2023-2025 Datalayer, Inc.
 * Distributed under the terms of the Modified BSD License.
 */
import { AlienIcon, UserIcon, PersonIcon, PassportControlIcon, } from '@datalayer/icons-react';
const PLATFORM_ANONYMOUS_PERMSSIONS = ['view_landings'];
const PLATFORM_SECURITY_AUDITOR_PERMSSIONS = ['view_landings'];
const PLATFORM_USAGE_REVIEWER_PERMSSIONS = ['view_landings'];
const PLATFORM_FEATURES_PREVIEWER_PERMSSIONS = ['view_landings'];
const PLATFORM_GUEST_PERMSSIONS = PLATFORM_ANONYMOUS_PERMSSIONS.concat(...['view_users']);
const PLATFORM_MEMBER_PERMSSIONS = PLATFORM_GUEST_PERMSSIONS.concat(...['invite_users']);
const PLATFORM_SUPPORT_MANAGER_PERMSSIONS = PLATFORM_GUEST_PERMSSIONS.concat(...['invite_users']);
const PLATFORM_GROWTH_MANAGER_PERMSSIONS = PLATFORM_GUEST_PERMSSIONS.concat(...['invite_users']);
const PLATFORM_SUCCESS_MANAGER_PERMSSIONS = PLATFORM_GUEST_PERMSSIONS.concat(...['invite_users']);
const PLATFORM_IAM_TOKEN_PERMSSIONS = PLATFORM_MEMBER_PERMSSIONS.concat(...['invite_users']);
const PLATFORM_ADMIN_PERMSSIONS = PLATFORM_MEMBER_PERMSSIONS.concat(...['manage_users']);
export class PlatformRoles {
    constructor() { }
    static Anonymous = {
        id: 'platform_anonymous',
        handle: 'platform_anonymous',
        displayName: 'Platform Anonymous',
        description: 'A Platform Anonymous is given to an anonymous visitor of the platform who does not have any account.',
        permissions: PLATFORM_ANONYMOUS_PERMSSIONS,
        icon: AlienIcon,
    };
    static Guest = {
        id: 'platform_guest',
        handle: 'platform_guest',
        displayName: 'Platform Guest',
        description: 'A Platform Guest to an guest of the platform who eg. has requested access to the platform.',
        permissions: PLATFORM_GUEST_PERMSSIONS,
        icon: PersonIcon,
    };
    static Member = {
        id: 'platform_member',
        handle: 'platform_member',
        displayName: 'Platform Member',
        description: 'A Platform Member is the role given to any member of the platform.',
        permissions: PLATFORM_MEMBER_PERMSSIONS,
        icon: UserIcon,
    };
    static IAMToken = {
        id: 'platform_iam_token',
        handle: 'platform_iam_token',
        displayName: 'Platform API Key',
        description: 'A Platform API Key.',
        permissions: PLATFORM_IAM_TOKEN_PERMSSIONS,
        icon: UserIcon,
    };
    static SupportManager = {
        id: 'platform_support_manager',
        handle: 'platform_support_manager',
        displayName: 'Platform Support Manager',
        description: 'A Platform Support Manager supports users.',
        permissions: PLATFORM_SUPPORT_MANAGER_PERMSSIONS,
        icon: AlienIcon,
    };
    static GrowthManager = {
        id: 'platform_growth_manager',
        handle: 'platform_growth_manager',
        displayName: 'Platform Growth Manager',
        description: 'A Platform Growth Manager growths Datalayer.',
        permissions: PLATFORM_GROWTH_MANAGER_PERMSSIONS,
        icon: AlienIcon,
    };
    static SuccessManager = {
        id: 'platform_success_manager',
        handle: 'platform_success_manager',
        displayName: 'Platform Success Manager',
        description: 'A Platform Success Manager ensures user success.',
        permissions: PLATFORM_SUCCESS_MANAGER_PERMSSIONS,
        icon: AlienIcon,
    };
    static SecurityAuditor = {
        id: 'platform_security_auditor',
        handle: 'platform_security_auditor',
        displayName: 'Platform Security Auditor',
        description: 'A Platform Security Auditor is given to access to create security reviews.',
        permissions: PLATFORM_SECURITY_AUDITOR_PERMSSIONS,
        icon: AlienIcon,
    };
    static FeaturesPreviewer = {
        id: 'platform_features_previewer',
        handle: 'platform_features_previewer',
        displayName: 'Platform Features Previewer',
        description: 'A Platform Features Previewer can see features before others.',
        permissions: PLATFORM_FEATURES_PREVIEWER_PERMSSIONS,
        icon: AlienIcon,
    };
    static UsageReviewer = {
        id: 'platform_usage_reviewer',
        handle: 'platform_usage_reviewer',
        displayName: 'Platform Usage Reviewer',
        description: 'A Platform Usage Reviewer can review the platform usage.',
        permissions: PLATFORM_USAGE_REVIEWER_PERMSSIONS,
        icon: AlienIcon,
    };
    static Admin = {
        id: 'platform_admin',
        handle: 'platform_admin',
        displayName: 'Platform Admin',
        description: 'A Platform Admin is the administrator of the platform.',
        permissions: PLATFORM_ADMIN_PERMSSIONS,
        icon: PassportControlIcon,
    };
    static ALL_ROLES = [
        PlatformRoles.Admin,
        PlatformRoles.Anonymous,
        PlatformRoles.FeaturesPreviewer,
        PlatformRoles.Guest,
        PlatformRoles.Member,
        PlatformRoles.IAMToken,
        PlatformRoles.SecurityAuditor,
        PlatformRoles.SupportManager,
        PlatformRoles.GrowthManager,
        PlatformRoles.SuccessManager,
        PlatformRoles.UsageReviewer,
    ];
}
