import { Request } from 'express';
import { AuthService, AuthResponse } from './services/auth.service';
import { LoginDto, RegisterDto, RequestPasswordResetDto, ResetPasswordDto, ChangePasswordDto } from './dto';
import { RequestUser } from './strategies/jwt.strategy';
export declare class AuthController {
    private readonly authService;
    constructor(authService: AuthService);
    register(dto: RegisterDto, tenantId: string, req: Request): Promise<AuthResponse>;
    login(dto: LoginDto, tenantId: string, req: Request): Promise<AuthResponse>;
    logout(user: RequestUser, sessionToken: string): Promise<{
        message: string;
    }>;
    logoutAll(user: RequestUser): Promise<{
        message: string;
    }>;
    refresh(refreshToken: string, req: Request): Promise<{
        accessToken: string;
        refreshToken: string;
    }>;
    requestPasswordReset(dto: RequestPasswordResetDto, tenantId: string): Promise<{
        message: string;
    }>;
    resetPassword(dto: ResetPasswordDto, tenantId: string): Promise<{
        message: string;
    }>;
    changePassword(user: RequestUser, dto: ChangePasswordDto): Promise<{
        message: string;
    }>;
    verifyEmail(token: string, tenantId: string): Promise<{
        message: string;
    }>;
    getProfile(user: RequestUser): Promise<Partial<import("./entities").User>>;
}
