import type { IUser } from './user';
export interface IGroup {
    id: number;
    name: string;
    description?: string;
    mappingsSSO?: string[];
    rootRole?: number;
    createdAt?: Date;
    userCount?: number;
    createdBy?: string;
    scimId?: string;
}
export interface IGroupUser {
    groupId: number;
    userId: number;
    joinedAt: Date;
    rootRoleId?: number;
    seenAt?: Date;
    createdBy?: string;
}
export interface IGroupRole {
    name: string;
    groupId: number;
    roleId: number;
    createdAt: Date;
}
export interface IGroupModel extends IGroup {
    users: IGroupUserModel[];
    projects?: string[];
}
export interface ICreateGroupModel extends Omit<IGroup, 'id'> {
    users?: ICreateGroupUserModel[];
    projects?: string[];
}
export interface IGroupProject {
    groupId: number;
    project: string;
}
export interface IGroupUserModel {
    user: IUser;
    joinedAt?: Date;
    createdBy?: string;
}
export interface ICreateGroupUserModel {
    user: Pick<IUser, 'id'>;
}
export interface IGroupModelWithProjectRole extends IGroupModel {
    roleId: number;
    addedAt: Date;
}
export default class Group implements IGroup {
    type: string;
    createdAt: Date;
    createdBy: string;
    id: number;
    name: string;
    rootRole?: number;
    description: string;
    mappingsSSO: string[];
    scimId?: string;
    constructor({ id, name, description, mappingsSSO, rootRole, createdBy, createdAt, scimId, }: IGroup);
}
//# sourceMappingURL=group.d.ts.map