import { HttpStatus } from '@nestjs/common';
import type { Response } from 'express';
import { AuthService } from './auth.service';
import { CreateUserDto, LoginDto, RegisterDeviceDto, LogoutDeviceDto, ForgotPasswordDto, ResetPasswordDto, VerifyEmailDto, SocialLoginDto } from './auth.dto';
import { DeviceService } from '../devices/device.service';
export declare class AuthController {
    private readonly authService;
    private readonly deviceService;
    constructor(authService: AuthService, deviceService: DeviceService);
    register(req: any, payload: CreateUserDto): Promise<{
        status: boolean;
        statusCode: HttpStatus;
        data: {
            user: {
                id: string;
                email: string;
                display_name: string;
                phone: string | null;
                referralCode: string | null;
                role: string;
                premium_until: Date | string | null;
                premium_source: string | null;
                is_premium: boolean;
                email_verified_at: Date | null;
                is_email_verified: boolean;
                basic_credits: number;
                additional_credits: number;
                total_credits: number;
            };
            token: string;
            emailVerificationRequired: boolean;
            otpExpiresAt: string;
        };
    }>;
    login(payload: LoginDto): Promise<{
        status: boolean;
        statusCode: HttpStatus;
        data: {
            user: {
                id: string;
                email: string;
                display_name: string;
                phone: string | null;
                role: string;
                premium_until: Date | null;
                premium_source: string | null;
                is_premium: boolean;
                email_verified_at: Date | null;
                is_email_verified: boolean;
                basic_credits: number;
                additional_credits: number;
                total_credits: number;
            };
            token: string;
        };
    }>;
    socialLogin(req: any, res: Response, payload: SocialLoginDto): Promise<{
        status: boolean;
        statusCode: HttpStatus;
        data: {
            user: {
                id: string;
                email: string;
                display_name: string;
                phone: string | null;
                role: string;
                premium_until: Date | string | null;
                premium_source: string | null;
                is_premium: boolean;
                email_verified_at: Date | string | null;
                is_email_verified: boolean;
                basic_credits: number;
                additional_credits: number;
                total_credits: number;
            };
            token: string;
            socialSignup: boolean;
        };
    }>;
    getCurrentUser(req: any): Promise<{
        status: boolean;
        statusCode: HttpStatus;
        data: {
            display_name: string;
            email: string;
            email_verified_at: Date | null;
            id: string;
            phone: string | null;
            premium_source: string | null;
            premium_until: Date | null;
            role: string;
            basic_credits: number;
            additional_credits: number;
            is_premium: boolean;
            is_email_verified: boolean;
            total_credits: number;
        };
    }>;
    requestEmailVerificationOtp(req: any): Promise<{
        status: boolean;
        statusCode: HttpStatus;
        data: {
            message: string;
            otpExpiresAt?: undefined;
        };
    } | {
        status: boolean;
        statusCode: HttpStatus;
        data: {
            message: string;
            otpExpiresAt: string;
        };
    }>;
    verifyEmail(req: any, payload: VerifyEmailDto): Promise<{
        status: boolean;
        statusCode: HttpStatus;
        data: {
            message: string;
            email_verified_at: string;
        };
    } | {
        status: boolean;
        statusCode: HttpStatus;
        data: {
            message: string;
            email_verified_at: Date | null;
        };
    }>;
    forgotPassword(payload: ForgotPasswordDto): Promise<{
        status: boolean;
        statusCode: HttpStatus;
        message: string;
    }>;
    resetPassword(payload: ResetPasswordDto): Promise<{
        status: boolean;
        statusCode: HttpStatus;
        message: string;
    }>;
    registerDevice(req: any, res: Response, data: RegisterDeviceDto): Promise<{
        status: boolean;
        statusCode: HttpStatus;
        data: {
            message: string;
            device_id: string;
            user_id: string | null;
        };
    }>;
    logoutDevice(res: Response, data: LogoutDeviceDto): Promise<{
        status: boolean;
        statusCode: HttpStatus;
        data: {
            message: string;
        };
        message?: undefined;
    } | {
        status: boolean;
        statusCode: HttpStatus;
        message: string;
        data?: undefined;
    }>;
}
