import { ConfigService } from "@nestjs/config"; import { EmailService } from "../../../core/email/services/email.service"; import { UserPostDataDTO } from "../../user/dtos/user.post.dto"; import { UserPutDataDTO } from "../../user/dtos/user.put.dto"; import { ClsService } from "nestjs-cls"; import { BaseConfigInterface } from "../../../config/interfaces"; import { JsonApiDataInterface } from "../../../core/jsonapi/interfaces/jsonapi.data.interface"; import { JsonApiService } from "../../../core/jsonapi/services/jsonapi.service"; import { AbstractService } from "../../../core/neo4j/abstracts/abstract.service"; import { UserPatchAvatarDataDTO } from "../../user/dtos/user.patch.avatar.dto"; import { UserPatchRateDataDTO } from "../../user/dtos/user.patch.rate.dto"; import { User, UserDescriptor } from "../../user/entities/user"; import { UserRepository } from "../repositories/user.repository"; /** * User service. * * Extends `AbstractService` so an application can subclass it and have BOTH the * inherited generic methods AND every method declared here serialise with the * *extended* model. Model resolution is by subclass polymorphism — a subclass * re-declares `descriptor` and `model` as initialised class fields — never by a * registry lookup (Nest constructs providers before `onModuleInit`, where models * are registered). * * The three domain methods whose names collide with the abstract's generic CRUD * (`create` / `put` / `delete`) are named `createUser` / `putUser` / * `deleteUser` so the inherited descriptor-driven CRUD stays reachable. */ export declare class UserService extends AbstractService { protected readonly userRepository: UserRepository; protected readonly emailService: EmailService; protected readonly configService: ConfigService; protected readonly descriptor: import("../../..").EntityDescriptor; direction: "out"; relationship: string; cardinality: "one"; }; module: { model: import("../../..").DataMeta; direction: "out"; relationship: string; cardinality: "many"; dtoKey: string; }; }>; constructor(jsonApiService: JsonApiService, userRepository: UserRepository, emailService: EmailService, configService: ConfigService, clsService: ClsService); private get appConfig(); /** * Defence in depth: the global Administrator role is platform-level and may * only be granted through the dedicated platform path (`addUserToRole`). A * company-scoped write (create / put) that carried it would create a * company Membership holding Administrator, which the JWT would then surface * as platform-admin for that company. */ private companyRoleIds; expectNotExists(params: { email: string; }): Promise; findMany(params: { query: any; isAdmin: boolean; term?: string; userIds?: string[]; includeDeleted?: boolean; }): Promise; findByContentIds(params: { contentIds: string[]; query: any; term?: string; includeDeleted?: boolean; }): Promise; findManyByCompany(params: { companyId: string; query: any; isDeleted?: boolean; term?: string; userIds?: string[]; includeDeleted?: boolean; }): Promise; findInRole(params: { roleId: string; term: string; query: any; isAdmin: boolean; }): Promise; findNotInRole(params: { roleId: string; term: string; query: any; isAdmin: boolean; }): Promise; findByUserId(params: { userId: string; }): Promise; findOneForAdmin(params: { userId: string; }): Promise; findByUserIdCompanyId(params: { userId: string; companyId: string; }): Promise; putUser(params: { data: UserPutDataDTO; isAdmin: boolean; isCurrentUser: boolean; }): Promise; findFullUser(params: { userId: string; }): Promise; reactivate(params: { userId: string; }): Promise; patchAvatar(params: { data: UserPatchAvatarDataDTO; }): Promise; patchRate(params: { data: UserPatchRateDataDTO; }): Promise; sendInvitationEmail(params: { userId: string; }): Promise; findByEmail(params: { email: string; }): Promise; createUser(params: { data: UserPostDataDTO; forceCompanyAdmin?: boolean; language: string; }): Promise; createForCompany(params: { companyId: string; data: UserPostDataDTO; language: string; }): Promise; deleteUser(params: { userId: string; }): Promise; addUserToRole(params: { userId: string; roleId: string; returnsFull: boolean; }): Promise; removeUserFromRole(params: { roleId: string; userId: string; returnsFull: boolean; }): Promise; } //# sourceMappingURL=user.service.d.ts.map