import { HttpStatus } from '@nestjs/common';
import { JwtService } from '@nestjs/jwt';
import { PermissionUserContext } from '../../common/access-control/permission-context.types';
import { PermissionResolverService } from '../../common/access-control/permission-resolver.service';
import { DatabaseService, HashService, MailService, UploadService } from '../../config';
import { AccessControlService } from '../access-control/access-control.service';
import { DevicesService } from '../devices/devices.service';
import { createMemberDto, filterMembersDto, signinMemberDto, updateMemberDto } from './members.dto';
import { MembersHelper } from './members.helper';
export declare class MembersService {
    private readonly db;
    private readonly hashService;
    private readonly jwt;
    private readonly mailService;
    private readonly uploadService;
    private readonly membersHelper;
    private readonly accessControlService;
    private readonly permissionResolver;
    private readonly devicesService;
    constructor(db: DatabaseService, hashService: HashService, jwt: JwtService, mailService: MailService, uploadService: UploadService, membersHelper: MembersHelper, accessControlService: AccessControlService, permissionResolver: PermissionResolverService, devicesService: DevicesService);
    private getPermissions;
    private buildMembersScopeFilter;
    private deriveLegacyRoleFromAccessRole;
    private resolveAndValidateAccessRole;
    private assertCanAssignAccessRole;
    private assertActiveMemberForSelf;
    private resolveMemberAccessRoleId;
    signinMember(data: signinMemberDto, clientIp?: string): Promise<{
        data: {
            id: string;
            first_name: string;
            employee_id: string;
            status: "active" | "deleted" | "deactivated" | "terminated" | "deceased" | "resigned";
            last_name?: string;
            email?: string;
            image?: {
                file_name: string;
                original_name: string;
                file_size: number;
                mime_type: string;
            };
            department_id?: string;
            role?: string;
            access_token?: string;
        };
        message: string;
        status: HttpStatus;
        details: any;
    }>;
    getMembers(owner_id: string, ctx: PermissionUserContext, dataScope?: 'own' | 'all'): Promise<{
        data: {
            id?: string;
            email?: string;
            work_email?: string;
            employee_id?: string;
            nickname?: string;
            first_name?: string;
            last_name?: string;
            about?: string;
            expertise?: string;
            work_phone?: string;
            phone?: string;
            image?: {
                file_name: string;
                original_name: string;
                file_size: number;
                mime_type: string;
            };
            role?: "owner" | "admin" | "member";
            access_role_id?: string;
            present_address_line_one?: string;
            present_address_line_two?: string;
            present_address_city?: string;
            present_address_country?: string;
            present_address_state?: string;
            present_address_zip_code?: string;
            permanent_address_line_one?: string;
            permanent_address_line_two?: string;
            permanent_address_city?: string;
            permanent_address_country?: string;
            permanent_address_state?: string;
            permanent_address_zip_code?: string;
            father_name?: string;
            mother_name?: string;
            emergency_contact_name?: string;
            emergency_contact_phone?: string;
            emergency_contact_relationship?: string;
            gender?: "male" | "female" | "others";
            marital_status?: "single" | "married" | "divorced" | "widowed";
            date_of_birth?: string;
            date_of_joining?: Date;
            department_id?: string;
            designation_id?: string;
            location_id?: string;
            employment_type_id?: string;
            hiring_source_id?: string;
            reporting_manager_id?: string;
            status?: "active" | "deleted" | "deactivated" | "terminated" | "deceased" | "resigned";
            department?: {
                id: string;
                name: string;
            };
            designation?: {
                id: string;
                name: string;
            };
            location?: {
                id: string;
                name: string;
            };
            employment_type?: {
                id: string;
                name: string;
            };
            hiring_source?: {
                id: string;
                name: string;
            };
            work_experiences?: {
                id?: string;
                company?: string;
                position?: string;
                start_date?: string;
                end_date?: string;
                description?: string;
                relevant?: boolean;
                created_at?: string;
                updated_at?: string;
            }[];
            educations?: {
                id?: string;
                institution?: string;
                degree?: string;
                field?: string;
                start_date?: string;
                end_date?: string;
                description?: string;
                relevant?: boolean;
                created_at?: string;
                updated_at?: string;
            }[];
            created_at?: string;
            updated_at?: string;
            token?: string;
        }[];
        message: string;
        status: HttpStatus;
        details: any;
    }>;
    getMemberById(id: string, owner_id: string, ctx: PermissionUserContext): Promise<{
        data: {
            id?: string;
            email?: string;
            work_email?: string;
            employee_id?: string;
            nickname?: string;
            first_name?: string;
            last_name?: string;
            about?: string;
            expertise?: string;
            work_phone?: string;
            phone?: string;
            image?: {
                file_name: string;
                original_name: string;
                file_size: number;
                mime_type: string;
            };
            role?: "owner" | "admin" | "member";
            access_role_id?: string;
            present_address_line_one?: string;
            present_address_line_two?: string;
            present_address_city?: string;
            present_address_country?: string;
            present_address_state?: string;
            present_address_zip_code?: string;
            permanent_address_line_one?: string;
            permanent_address_line_two?: string;
            permanent_address_city?: string;
            permanent_address_country?: string;
            permanent_address_state?: string;
            permanent_address_zip_code?: string;
            father_name?: string;
            mother_name?: string;
            emergency_contact_name?: string;
            emergency_contact_phone?: string;
            emergency_contact_relationship?: string;
            gender?: "male" | "female" | "others";
            marital_status?: "single" | "married" | "divorced" | "widowed";
            date_of_birth?: string;
            date_of_joining?: Date;
            department_id?: string;
            designation_id?: string;
            location_id?: string;
            employment_type_id?: string;
            hiring_source_id?: string;
            reporting_manager_id?: string;
            status?: "active" | "deleted" | "deactivated" | "terminated" | "deceased" | "resigned";
            department?: {
                id: string;
                name: string;
            };
            designation?: {
                id: string;
                name: string;
            };
            location?: {
                id: string;
                name: string;
            };
            employment_type?: {
                id: string;
                name: string;
            };
            hiring_source?: {
                id: string;
                name: string;
            };
            work_experiences?: {
                id?: string;
                company?: string;
                position?: string;
                start_date?: string;
                end_date?: string;
                description?: string;
                relevant?: boolean;
                created_at?: string;
                updated_at?: string;
            }[];
            educations?: {
                id?: string;
                institution?: string;
                degree?: string;
                field?: string;
                start_date?: string;
                end_date?: string;
                description?: string;
                relevant?: boolean;
                created_at?: string;
                updated_at?: string;
            }[];
            created_at?: string;
            updated_at?: string;
            token?: string;
        };
        message: string;
        status: HttpStatus;
        details: any;
    }>;
    getMembersByFilters(query: filterMembersDto, owner_id: string, ctx: PermissionUserContext): Promise<{
        data: unknown;
        message: string;
        status: HttpStatus;
        details: {
            pagination: {
                total_items: number;
                total_pages: number;
                current_page: number;
                items_per_page: number;
                has_next_page: boolean;
                has_previous_page: boolean;
                next_page: number;
                previous_page: number;
            };
        };
    }>;
    getCalculatedMembersByFilters(query: filterMembersDto, owner_id: string, ctx: PermissionUserContext): Promise<{
        data: unknown;
        message: string;
        status: HttpStatus;
        details: {
            pagination: {
                total_items: number;
                total_pages: number;
                current_page: number;
                items_per_page: number;
                has_next_page: boolean;
                has_previous_page: boolean;
                next_page: number;
                previous_page: number;
            };
        };
    }>;
    createMember(data: createMemberDto, owner_id: string, ctx: PermissionUserContext): Promise<{
        data: {
            id?: string;
            email?: string;
            work_email?: string;
            employee_id?: string;
            nickname?: string;
            first_name?: string;
            last_name?: string;
            about?: string;
            expertise?: string;
            work_phone?: string;
            phone?: string;
            image?: {
                file_name: string;
                original_name: string;
                file_size: number;
                mime_type: string;
            };
            role?: "owner" | "admin" | "member";
            access_role_id?: string;
            present_address_line_one?: string;
            present_address_line_two?: string;
            present_address_city?: string;
            present_address_country?: string;
            present_address_state?: string;
            present_address_zip_code?: string;
            permanent_address_line_one?: string;
            permanent_address_line_two?: string;
            permanent_address_city?: string;
            permanent_address_country?: string;
            permanent_address_state?: string;
            permanent_address_zip_code?: string;
            father_name?: string;
            mother_name?: string;
            emergency_contact_name?: string;
            emergency_contact_phone?: string;
            emergency_contact_relationship?: string;
            gender?: "male" | "female" | "others";
            marital_status?: "single" | "married" | "divorced" | "widowed";
            date_of_birth?: string;
            date_of_joining?: Date;
            department_id?: string;
            designation_id?: string;
            location_id?: string;
            employment_type_id?: string;
            hiring_source_id?: string;
            reporting_manager_id?: string;
            status?: "active" | "deleted" | "deactivated" | "terminated" | "deceased" | "resigned";
            department?: {
                id: string;
                name: string;
            };
            designation?: {
                id: string;
                name: string;
            };
            location?: {
                id: string;
                name: string;
            };
            employment_type?: {
                id: string;
                name: string;
            };
            hiring_source?: {
                id: string;
                name: string;
            };
            work_experiences?: {
                id?: string;
                company?: string;
                position?: string;
                start_date?: string;
                end_date?: string;
                description?: string;
                relevant?: boolean;
                created_at?: string;
                updated_at?: string;
            }[];
            educations?: {
                id?: string;
                institution?: string;
                degree?: string;
                field?: string;
                start_date?: string;
                end_date?: string;
                description?: string;
                relevant?: boolean;
                created_at?: string;
                updated_at?: string;
            }[];
            created_at?: string;
            updated_at?: string;
            token?: string;
        };
        message: string;
        status: HttpStatus;
        details: any;
    }>;
    updateMember(id: string, data: updateMemberDto, owner_id: string, ctx: PermissionUserContext): Promise<{
        data: {
            id?: string;
            email?: string;
            work_email?: string;
            employee_id?: string;
            nickname?: string;
            first_name?: string;
            last_name?: string;
            about?: string;
            expertise?: string;
            work_phone?: string;
            phone?: string;
            image?: {
                file_name: string;
                original_name: string;
                file_size: number;
                mime_type: string;
            };
            role?: "owner" | "admin" | "member";
            access_role_id?: string;
            present_address_line_one?: string;
            present_address_line_two?: string;
            present_address_city?: string;
            present_address_country?: string;
            present_address_state?: string;
            present_address_zip_code?: string;
            permanent_address_line_one?: string;
            permanent_address_line_two?: string;
            permanent_address_city?: string;
            permanent_address_country?: string;
            permanent_address_state?: string;
            permanent_address_zip_code?: string;
            father_name?: string;
            mother_name?: string;
            emergency_contact_name?: string;
            emergency_contact_phone?: string;
            emergency_contact_relationship?: string;
            gender?: "male" | "female" | "others";
            marital_status?: "single" | "married" | "divorced" | "widowed";
            date_of_birth?: string;
            date_of_joining?: Date;
            department_id?: string;
            designation_id?: string;
            location_id?: string;
            employment_type_id?: string;
            hiring_source_id?: string;
            reporting_manager_id?: string;
            status?: "active" | "deleted" | "deactivated" | "terminated" | "deceased" | "resigned";
            department?: {
                id: string;
                name: string;
            };
            designation?: {
                id: string;
                name: string;
            };
            location?: {
                id: string;
                name: string;
            };
            employment_type?: {
                id: string;
                name: string;
            };
            hiring_source?: {
                id: string;
                name: string;
            };
            work_experiences?: {
                id?: string;
                company?: string;
                position?: string;
                start_date?: string;
                end_date?: string;
                description?: string;
                relevant?: boolean;
                created_at?: string;
                updated_at?: string;
            }[];
            educations?: {
                id?: string;
                institution?: string;
                degree?: string;
                field?: string;
                start_date?: string;
                end_date?: string;
                description?: string;
                relevant?: boolean;
                created_at?: string;
                updated_at?: string;
            }[];
            created_at?: string;
            updated_at?: string;
            token?: string;
        };
        message: string;
        status: HttpStatus;
        details: any;
    }>;
    deleteMember(id: string, owner_id: string, ctx: PermissionUserContext): Promise<{
        data: any;
        message: string;
        status: HttpStatus;
        details: any;
    }>;
}
