import { AptlyOrganizationRoles } from '../core/index.js';
import { AptlyOrganizationSchema } from './organization.js';
import { AptlyProjectSchema } from './project.js';
import { AptlyUserSchema } from './user.js';
import { AptlyBaseSchema } from './extends.js';
import { AptlyUnitSchema } from './unit.js';
export type AptlyDepartment = AptlyDepartmentGeneric<string, string>;
export interface AptlyDepartmentGeneric<ID, DATE> extends Omit<AptlyBaseSchema<ID, DATE>, 'archived'> {
    organization: ID | AptlyOrganizationSchema<ID, DATE>;
    projects: AptlyDepartmentProjectGeneric<ID, DATE>[];
    users: AptlyDepartmentUserGeneric<ID, DATE>[];
}
export type AptlyDepartmentProject = AptlyDepartmentProjectGeneric<string, string>;
export interface AptlyDepartmentProjectGeneric<ID, DATE> {
    _id: ID;
    project: ID | AptlyProjectSchema<ID, DATE>;
    units: (ID | AptlyUnitSchema<ID, DATE>)[] | null;
    createdAt: DATE;
    updatedAt: DATE;
}
export type AptlyDepartmentUser = AptlyDepartmentUserGeneric<string, string>;
export interface AptlyDepartmentUserGeneric<ID, DATE> {
    _id: ID;
    user: ID | AptlyUserSchema<ID, DATE>;
    permissions: AptlyOrganizationRoles[];
    createdAt: DATE;
    updatedAt: DATE;
}
