import { Repository } from 'typeorm';
import { BaseService } from 'src/services/base.service';
import { AuthEntity, UserDetailEntity } from '../entities/authentication.entity';
import { AuthService } from './authentication.service';
import { LoginDto, SaveUserDTO, UserSearchQueryDTO } from '../dtos/authentication.dto';
import { EAuthType } from '../enums/authentication.enum';
import { ISearchResponse, SDKLogoutDTO, SDKSystemLogoutDTO } from '@serene-dev/la-nest-library';
import { ToggleActiveDTO } from 'src/dtos/organisation.dto';
export declare class UsersService extends BaseService<UserDetailEntity, UserSearchQueryDTO> {
    readonly repo: Repository<UserDetailEntity>;
    protected authService: AuthService;
    static path: string;
    type: EAuthType;
    createConfig: {
        pre?: (req: SaveUserDTO) => Promise<SaveUserDTO>;
        post?: (res: UserDetailEntity) => Promise<UserDetailEntity>;
    };
    constructor(repo: Repository<UserDetailEntity>, authService: AuthService);
    search(query: UserSearchQueryDTO): Promise<ISearchResponse<UserDetailEntity>>;
    loginFunc: (req: LoginDto, res: AuthEntity) => Promise<any>;
    login(body: LoginDto): Promise<UserDetailEntity>;
    getById(id: string): Promise<UserDetailEntity>;
    getByAuthId(id: string): Promise<UserDetailEntity>;
    createUser(body: SaveUserDTO): Promise<UserDetailEntity>;
    updateUser(id: string, body: SaveUserDTO): Promise<UserDetailEntity>;
    toggleStatus(id: string, data: ToggleActiveDTO): Promise<AuthEntity>;
    forceLogout(data: SDKSystemLogoutDTO): Promise<boolean>;
    logout(data: SDKLogoutDTO): Promise<boolean>;
}
