import { JwtService } from '@nestjs/jwt';
import { ConfigService } from '@nestjs/config';
import { PrismaService } from '../../prisma/prisma.service';
import { SignupDto } from './dto/signup.dto';
export declare class AuthService {
    private readonly prisma;
    private readonly jwtService;
    private readonly configService;
    constructor(prisma: PrismaService, jwtService: JwtService, configService: ConfigService);
    signup(dto: SignupDto): Promise<{
        accessToken: string;
        refreshToken: `${string}-${string}-${string}-${string}-${string}`;
        user: {
            id: number;
            email: string;
            name: string;
        };
    }>;
    login(email: string, password: string): Promise<{
        accessToken: string;
        refreshToken: `${string}-${string}-${string}-${string}-${string}`;
        user: {
            id: number;
            email: string;
            name: string;
        };
    }>;
    validateUser(email: string, password: string): Promise<{
        email: string;
        name: string;
        id: number;
        nameEn: string | null;
        phone: string | null;
        avatarUrl: string | null;
        languagePreference: string;
        emailVerified: boolean;
        emailVerifyToken: string | null;
        passwordResetToken: string | null;
        passwordResetExpires: Date | null;
        isActive: boolean;
        createdAt: Date;
        updatedAt: Date;
    } | null>;
    generateTokens(user: {
        id: number;
        email: string;
    }): Promise<{
        accessToken: string;
        refreshToken: `${string}-${string}-${string}-${string}-${string}`;
    }>;
    refreshToken(userId: number, refreshToken: string): Promise<{
        accessToken: string;
        refreshToken: `${string}-${string}-${string}-${string}-${string}`;
    }>;
    logout(userId: number): Promise<{
        message: string;
    }>;
    forgotPassword(email: string): Promise<{
        message: string;
        token?: undefined;
    } | {
        message: string;
        token: `${string}-${string}-${string}-${string}-${string}`;
    }>;
    resetPassword(token: string, newPassword: string): Promise<{
        message: string;
    }>;
    verifyEmail(token: string): Promise<{
        message: string;
    }>;
    getProfile(userId: number): Promise<{
        business: {
            email: string | null;
            businessName: string;
            id: number;
            phone: string | null;
            createdAt: Date;
            updatedAt: Date;
            businessNameEn: string | null;
            registrationNumber: string | null;
            ownerName: string | null;
            ownerNameEn: string | null;
            businessType: string | null;
            businessTypeEn: string | null;
            businessItem: string | null;
            businessItemEn: string | null;
            address: string | null;
            addressEn: string | null;
            taxType: string;
            taxRate: number;
            calculationBasis: string;
            registrationCertUrl: string | null;
            digitalCertRegistered: boolean;
            digitalCertValidFrom: Date | null;
            digitalCertValidUntil: Date | null;
            hometaxAuthStatus: string;
            hometaxAuthMethod: string | null;
            hometaxAuthRegisteredAt: Date | null;
            userId: number;
        } | null;
        subscription: ({
            plan: {
                name: string;
                id: number;
                isActive: boolean;
                createdAt: Date;
                planId: string;
                nameKo: string;
                price: number;
                creditBonus: number;
                totalCredits: number;
                features: import("@prisma/client/runtime/library").JsonValue | null;
                featuresEn: import("@prisma/client/runtime/library").JsonValue | null;
            };
        } & {
            id: number;
            createdAt: Date;
            updatedAt: Date;
            planId: number;
            userId: number;
            status: string;
            currentPeriodStart: Date | null;
            currentPeriodEnd: Date | null;
            cancelAtPeriodEnd: boolean;
            tossCustomerKey: string | null;
            tossBillingKey: string | null;
            billingAnchorDay: number;
            nextBillingDate: Date | null;
            lastBillingStatus: string;
            pendingPlanId: number | null;
        }) | null;
        creditSettings: {
            id: number;
            userId: number;
            balance: number;
            autoCharge: boolean;
            autoChargeThreshold: number;
            autoChargeAmount: number;
            lowBalanceAlert: boolean;
        } | null;
        email: string;
        name: string;
        id: number;
        nameEn: string | null;
        phone: string | null;
        avatarUrl: string | null;
        languagePreference: string;
        emailVerified: boolean;
        isActive: boolean;
        createdAt: Date;
        updatedAt: Date;
    }>;
}
