export type Entity = GroupEntity | PersonEntity; export interface EntityBase { documentation?: string; is_person?: boolean; key: string; key_plural?: string; label?: string; label_plural?: string; } export type EntityByKey = { [key: string]: Entity; }; export interface GroupEntity extends EntityBase { composition_label?: string; is_person?: false; is_single_label?: string; roles: Role[]; } export interface PersonEntity extends EntityBase { is_person: true; } export interface Role extends RoleBase { adult?: boolean; child?: boolean; subroles?: SubRole[]; } export interface RoleBase { documentation?: string; key: string; key_plural?: string; label?: string; max?: number; } type SubRole = RoleBase; export declare function getRolePersonsIdKey(role: Role | SubRole): string; export declare function isAdultRole(role: Role): boolean; export declare function isChildRole(role: Role): boolean; export declare function iterFlattenedRole(role: Role): Generator; export declare function iterSubRole(subrole: SubRole): Generator; export {};