import type { Request } from 'express';
import type { AuthenticatedUser } from '../../common/interfaces/authenticated-user.interface';
import { AuditService } from '../audit/audit.service';
import { UsersService } from '../users/users.service';
import { AuthService } from './auth.service';
import { ChangePasswordDto } from './dto/change-password.dto';
import { LoginDto } from './dto/login.dto';
import { RefreshTokenDto } from './dto/refresh-token.dto';
import { UpdateMyProfileDto } from './dto/update-my-profile.dto';
import type { JwtRefreshRequestUser } from './strategies/jwt-refresh.strategy';
export declare class AuthController {
    private readonly authService;
    private readonly usersService;
    private readonly auditService;
    constructor(authService: AuthService, usersService: UsersService, auditService: AuditService);
    login(dto: LoginDto, req: Request): Promise<import("./auth.service").LoginResponse>;
    refresh(_dto: RefreshTokenDto, req: Request & {
        user: JwtRefreshRequestUser;
    }): Promise<import("./auth.service").AuthTokens>;
    logout(user: AuthenticatedUser): Promise<void>;
    me(user: AuthenticatedUser): AuthenticatedUser;
    updateMyProfile(user: AuthenticatedUser, dto: UpdateMyProfileDto, req: Request): Promise<import("../users/users.service").PublicUser>;
    changePassword(user: AuthenticatedUser, dto: ChangePasswordDto): Promise<void>;
    private getIp;
}
