import { RequestUser } from '../common/request-user';
import { AuthService } from './auth.service';
import { LoginDto, RefreshTokenDto, SignupDto, VerifyOtpDto } from './dto/auth.dto';
export declare class AuthController {
    private readonly authService;
    constructor(authService: AuthService);
    login(dto: LoginDto): Promise<{
        devOtp?: string | undefined;
        message: string;
        provider: import("./otp.types").OtpDeliveryProvider;
        providerPriority: import("./otp.types").OtpDeliveryProvider[];
        expiresInSeconds: number;
    }>;
    verifyOtp(dto: VerifyOtpDto): Promise<{
        accessToken: string;
        refreshToken: string;
        user: {
            id: string;
            name: string;
            firstName: string | null;
            lastName: string | null;
            phone: string;
            role: import(".prisma/client").$Enums.UserRole;
            estateId: string | null;
        } | null;
        estate: {
            subscriptionPlan: {
                name: string;
                code: string;
                sortOrder: number;
            } | null;
            id: string;
            name: string;
            location: string;
        } | null;
        estateName: string | null;
        estatePlanCode: string | null;
    }>;
    refresh(dto: RefreshTokenDto): Promise<{
        accessToken: string;
        refreshToken: string;
        user: {
            id: string;
            name: string;
            firstName: string | null;
            lastName: string | null;
            phone: string;
            role: import(".prisma/client").$Enums.UserRole;
            estateId: string | null;
        } | null;
        estate: {
            subscriptionPlan: {
                name: string;
                code: string;
                sortOrder: number;
            } | null;
            id: string;
            name: string;
            location: string;
        } | null;
        estateName: string | null;
        estatePlanCode: string | null;
    }>;
    signup(dto: SignupDto, user: RequestUser): Promise<{
        user: {
            status: import(".prisma/client").$Enums.AccountStatus;
            id: string;
            metadata: import("@prisma/client/runtime/library").JsonValue;
            estateId: string | null;
            name: string;
            firstName: string | null;
            lastName: string | null;
            phone: string;
            address: string | null;
            profileConfirmed: boolean;
            profilePictureUrl: string | null;
            refreshToken: string | null;
            role: import(".prisma/client").$Enums.UserRole;
            email: string | null;
            createdAt: Date;
            updatedAt: Date;
            profilePictureThumbnailUrl: string | null;
            profileCompletion: number;
            phoneVerifiedAt: Date | null;
            emailVerifiedAt: Date | null;
        };
        resident: {
            status: import(".prisma/client").$Enums.AccountStatus;
            id: string;
            metadata: import("@prisma/client/runtime/library").JsonValue;
            estateId: string;
            name: string;
            firstName: string | null;
            lastName: string | null;
            phone: string;
            blockNumber: string | null;
            flatNumber: string | null;
            address: string | null;
            profileConfirmed: boolean;
            profilePictureUrl: string | null;
            emergencyContact: import("@prisma/client/runtime/library").JsonValue;
            unit: string;
            email: string | null;
            createdAt: Date;
            updatedAt: Date;
            profilePictureThumbnailUrl: string | null;
            profileCompletion: number;
            residentCode: string;
            householdMembers: import("@prisma/client/runtime/library").JsonValue;
            userId: string;
        };
        guard?: undefined;
    } | {
        user: {
            status: import(".prisma/client").$Enums.AccountStatus;
            id: string;
            metadata: import("@prisma/client/runtime/library").JsonValue;
            estateId: string | null;
            name: string;
            firstName: string | null;
            lastName: string | null;
            phone: string;
            address: string | null;
            profileConfirmed: boolean;
            profilePictureUrl: string | null;
            refreshToken: string | null;
            role: import(".prisma/client").$Enums.UserRole;
            email: string | null;
            createdAt: Date;
            updatedAt: Date;
            profilePictureThumbnailUrl: string | null;
            profileCompletion: number;
            phoneVerifiedAt: Date | null;
            emailVerifiedAt: Date | null;
        };
        guard: {
            status: import(".prisma/client").$Enums.AccountStatus;
            id: string;
            metadata: import("@prisma/client/runtime/library").JsonValue;
            estateId: string;
            name: string;
            firstName: string | null;
            lastName: string | null;
            phone: string;
            address: string | null;
            profileConfirmed: boolean;
            guardCode: string;
            assignedGateId: string | null;
            assignedShifts: import("@prisma/client/runtime/library").JsonValue;
            profilePictureUrl: string | null;
            emergencyContact: import("@prisma/client/runtime/library").JsonValue;
            deviceId: string | null;
            createdAt: Date;
            updatedAt: Date;
            profilePictureThumbnailUrl: string | null;
            profileCompletion: number;
            userId: string;
        };
        resident?: undefined;
    } | {
        user: {
            status: import(".prisma/client").$Enums.AccountStatus;
            id: string;
            metadata: import("@prisma/client/runtime/library").JsonValue;
            estateId: string | null;
            name: string;
            firstName: string | null;
            lastName: string | null;
            phone: string;
            address: string | null;
            profileConfirmed: boolean;
            profilePictureUrl: string | null;
            refreshToken: string | null;
            role: import(".prisma/client").$Enums.UserRole;
            email: string | null;
            createdAt: Date;
            updatedAt: Date;
            profilePictureThumbnailUrl: string | null;
            profileCompletion: number;
            phoneVerifiedAt: Date | null;
            emailVerifiedAt: Date | null;
        };
        resident?: undefined;
        guard?: undefined;
    }>;
}
