import type { RoleCategory } from './roles';
import type { TenantType, TenantStatus } from './tenants';
export type MembershipSource = 'Direct' | 'Group' | 'Both';
export interface GroupPathDto {
    groupId: string;
    groupName: string;
    isDirect: boolean;
    lineage: string;
}
export interface UserTenantDto {
    id: string;
    name: string;
    slug: string;
    type: TenantType;
    status: TenantStatus;
    isOwner: boolean;
    isDefault: boolean;
    organisationName: string | null;
    membershipSource: MembershipSource;
    groupPaths: GroupPathDto[] | null;
}
export interface UserGroupRoleDto {
    name: string;
    code: string | null;
}
export interface UserGroupDto {
    id: string;
    name: string;
    description: string | null;
    isActive: boolean;
    isSecurityGroup: boolean;
    isSyncedFromEntra: boolean;
    roles: UserGroupRoleDto[];
    addedAt: string;
    addedBy: string | null;
}
export type RoleSource = 'Direct' | 'Group' | 'Custom';
export type PermissionLevel = 'Context' | 'Application' | 'Module' | 'Section' | 'Resource';
export type PermissionAction = 'Access' | 'Read' | 'Create' | 'Update' | 'Delete' | 'Export' | 'Import' | 'Approve' | 'Reject' | 'Assign' | 'Execute';
export interface UserApplicationAccessDto {
    applicationId: string;
    applicationLabel: string;
    applicationCode: string;
    icon: string | null;
    iconType: string | null;
    route: string | null;
    hasFullAccess: boolean;
    roles: UserAppRoleDto[];
    permissions: UserAppPermissionDto[];
}
export interface UserAppRoleDto {
    roleId: string;
    roleName: string;
    roleShortName: string | null;
    category: RoleCategory;
    source: RoleSource;
}
export interface UserAppPermissionDto {
    path: string;
    action: PermissionAction | null;
    level: PermissionLevel;
    moduleName: string | null;
}
export interface UserConsolidatedRoleDto {
    roleId: string;
    roleName: string;
    roleShortName: string | null;
    tenantId: string | null;
    tenantName: string | null;
    source: RoleSource;
    sourceGroupId: string | null;
    sourceGroupName: string | null;
    permissionIds: string[];
}
//# sourceMappingURL=crossCutting.d.ts.map