import type { Entity as TEntity } from '@strapi/types'; export interface Entity { id: TEntity.ID; createdAt: string; updatedAt: string; } export interface Permission extends Entity { action: string; actionParameters: object; subject?: string | null; properties: { fields?: string[]; locales?: string[]; [key: string]: any; }; conditions: string[]; } export interface AdminUser extends Entity { firstname?: string; lastname?: string; username?: string; email?: string; password?: string; resetPasswordToken?: string | null; registrationToken?: string | null; isActive: boolean; roles: AdminRole[]; blocked: boolean; preferedLanguage?: string; } export type AdminUserCreationPayload = Omit & { roles: TEntity.ID[]; }; export type SanitizedAdminUser = Omit< AdminUser, 'password' | 'resetPasswordToken' | 'registrationToken' | 'roles' > & { roles: SanitizedAdminRole[]; }; export interface AdminRole extends Entity { name: string; code: string; description?: string; users: AdminUser[]; permissions: Permission[]; } export type SanitizedAdminRole = Omit< AdminRole, 'users' | 'permissions' | 'createdAt' | 'updatedAt' >;