"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.Role = void 0; const ValueObject_1 = require("../../../../shared/domain/ValueObject"); class Role extends ValueObject_1.ValueObject { static create(value) { if (!Role.VALID_ROLES.includes(value)) { throw new Error(`Invalid role: ${value}. Must be one of: ${Role.VALID_ROLES.join(', ')}`); } return new Role({ value: value }); } static owner() { return new Role({ value: 'owner' }); } static admin() { return new Role({ value: 'admin' }); } static member() { return new Role({ value: 'member' }); } static viewer() { return new Role({ value: 'viewer' }); } get value() { return this.props.value; } isOwner() { return this.props.value === 'owner'; } isAdmin() { return this.props.value === 'admin'; } isMember() { return this.props.value === 'member'; } isViewer() { return this.props.value === 'viewer'; } } exports.Role = Role; Role.OWNER = 'owner'; Role.ADMIN = 'admin'; Role.MEMBER = 'member'; Role.VIEWER = 'viewer'; Role.VALID_ROLES = ['owner', 'admin', 'member', 'viewer'];