import { AuthService } from './auth.service';
import { UserRole } from '@prisma/client';
import type { Request } from 'express';
import { UpdateMyProfileDto } from '../users/dto/update-my-profile.dto';
import { UpdateMyLocationDto } from '../users/dto/update-my-location.dto';
import { BootstrapSuperadminDto } from './dto/bootstrap-superadmin.dto';
import { PasswordLoginDto } from './dto/password-login.dto';
import { OtpRequestDto } from './dto/otp-request.dto';
import { OtpVerifyDto } from './dto/otp-verify.dto';
import { RegisterStoreDto } from './dto/register-store.dto';
import { PasswordResetRequestDto } from './dto/password-reset-request.dto';
import { PasswordResetVerifyDto } from './dto/password-reset-verify.dto';
import { PasswordResetConfirmDto } from './dto/password-reset-confirm.dto';
import { RegisterStoreMeDto } from './dto/register-store-me.dto';
type AuthedRequest = Request & {
    user?: {
        id: string;
        role: UserRole;
        shopId?: string | null;
    };
};
export declare class AuthController {
    private readonly auth;
    private readonly logger;
    constructor(auth: AuthService);
    bootstrapSuperadmin(dto: BootstrapSuperadminDto): Promise<{
        accessToken: string;
        tokenType: "Bearer";
        expiresIn: string;
    }>;
    loginWithPassword(dto: PasswordLoginDto): Promise<{
        accessToken: string;
        tokenType: "Bearer";
        expiresIn: string;
    }>;
    registerStore(req: Request, dto: RegisterStoreDto): Promise<{
        pendingApproval: boolean;
        admin: {
            id: string;
            email: string | null;
            phone: string | null;
            role: import("@prisma/client").$Enums.UserRole;
            tokenVersion: number;
        };
        shop: {
            id: string;
            name: string;
            isActive: boolean;
            city: string;
            state: string;
            pincode: string;
            status: import("@prisma/client").$Enums.ShopStatus;
            approvedAt: Date | null;
        };
        requestedPlanCode: string;
        checkoutUrl: string | null;
        accessToken: string;
        tokenType: "Bearer";
        expiresIn: string;
    }>;
    registerStoreForMe(req: AuthedRequest, dto: RegisterStoreMeDto): Promise<{
        pendingApproval: boolean;
        accessToken: string;
        tokenType: "Bearer";
        expiresIn: string;
    } | {
        pendingApproval: boolean;
        admin: {
            id: string;
            email: string | null;
            phone: string | null;
            role: import("@prisma/client").$Enums.UserRole;
            tokenVersion: number;
            shopId: string | null;
        };
        shop: {
            id: string;
            name: string;
            isActive: boolean;
            city: string;
            state: string;
            pincode: string;
            status: import("@prisma/client").$Enums.ShopStatus;
            approvedAt: Date | null;
        };
        requestedPlanCode: string;
        checkoutUrl: string | null;
        accessToken: string;
        tokenType: "Bearer";
        expiresIn: string;
    }>;
    registerStoreAvailable(email?: string, phone?: string): Promise<{
        emailAvailable: boolean;
        phoneAvailable: boolean;
    }>;
    requestOtp(dto: OtpRequestDto): Promise<{
        otpSent: boolean;
        devOtp?: undefined;
    } | {
        otpSent: boolean;
        devOtp: string;
    }>;
    verifyOtp(dto: OtpVerifyDto): Promise<{
        accessToken: string;
        tokenType: "Bearer";
        expiresIn: string;
    }>;
    requestPasswordReset(dto: PasswordResetRequestDto): Promise<{
        requested: boolean;
        expiresAt: Date;
        resetUrl: string;
    }>;
    verifyPasswordReset(dto: PasswordResetVerifyDto): Promise<{
        valid: boolean;
        expiresAt: Date;
    } | {
        valid: boolean;
        expiresAt?: undefined;
    }>;
    confirmPasswordReset(dto: PasswordResetConfirmDto): Promise<{
        updated: boolean;
    }>;
    logout(req: Request & {
        user?: {
            id?: string;
        };
    }): Promise<{
        loggedOut: boolean;
    }>;
    me(req: Request & {
        user?: unknown;
    }): Promise<Record<string, unknown>>;
    postCustomerProfile(req: AuthedRequest, dto: UpdateMyProfileDto): Promise<{
        id: string;
        email: string | null;
        phone: string | null;
        referralCode: string | null;
        role: import("@prisma/client").$Enums.UserRole;
        name: string | null;
        referredByUserId: string | null;
    }>;
    postCustomerLocation(req: AuthedRequest, dto: UpdateMyLocationDto): Promise<{
        id: string;
        latitude: number | null;
        longitude: number | null;
        locationAddress: string | null;
    }>;
    patchMyProfile(req: AuthedRequest, dto: UpdateMyProfileDto): Promise<{
        id: string;
        email: string | null;
        phone: string | null;
        referralCode: string | null;
        role: import("@prisma/client").$Enums.UserRole;
        name: string | null;
        referredByUserId: string | null;
    }>;
    postMeProfileAlias(req: AuthedRequest, dto: UpdateMyProfileDto): Promise<{
        id: string;
        email: string | null;
        phone: string | null;
        referralCode: string | null;
        role: import("@prisma/client").$Enums.UserRole;
        name: string | null;
        referredByUserId: string | null;
    }>;
    patchMyLocation(req: AuthedRequest, dto: UpdateMyLocationDto): Promise<{
        id: string;
        latitude: number | null;
        longitude: number | null;
        locationAddress: string | null;
    }>;
    postMeLocationAlias(req: AuthedRequest, dto: UpdateMyLocationDto): Promise<{
        id: string;
        latitude: number | null;
        longitude: number | null;
        locationAddress: string | null;
    }>;
}
export {};
