type Condition = { id: string; displayName: string; category: string; }; type Permission = { action: string; displayName: string; plugin: string; subCategory: string; }; type ContentTypePermission = { actionId: string; applyToProperties: string[]; label: string; subjects: string[]; }; type ContentTypeSubject = { uid: string; label: string; properties: ContentTypeSubjectProperties[]; }; type ContentTypeSubjectPropertyChild = { label: string; value: string; required?: boolean; }; type ContentTypeSubjectProperties = { label: string; value: string; children: ContentTypeSubjectPropertyChild[]; }; type ContentTypePermissions = { actions: ContentTypePermission[]; subjects: ContentTypeSubject[]; }; export interface RolePermissions { conditions: Condition[]; sections: { plugins: Permission[]; settings: Permission[]; singleTypes: ContentTypePermissions; collectionTypes: ContentTypePermissions; }; }