import { Repository, DataSource } from 'typeorm';
import { JwtService } from '@nestjs/jwt';
import { ConfigService } from '@nestjs/config';
import { User, UserRole } from '../users/entities/user.entity';
import { Organization } from '../organizations/entities/organization.entity';
import { RefreshToken } from './entities/refresh-token.entity';
import { PasswordResetToken } from './entities/password-reset-token.entity';
import { EmailVerificationToken } from './entities/email-verification-token.entity';
import { SignupDto } from './dto/signup.dto';
import { LoginDto } from './dto/login.dto';
export declare class AuthService {
    private usersRepository;
    private organizationsRepository;
    private refreshTokensRepository;
    private passwordResetTokensRepository;
    private emailVerificationTokensRepository;
    private jwtService;
    private configService;
    private dataSource;
    constructor(usersRepository: Repository<User>, organizationsRepository: Repository<Organization>, refreshTokensRepository: Repository<RefreshToken>, passwordResetTokensRepository: Repository<PasswordResetToken>, emailVerificationTokensRepository: Repository<EmailVerificationToken>, jwtService: JwtService, configService: ConfigService, dataSource: DataSource);
    private generateSlug;
    signup(signupDto: SignupDto): Promise<{
        access_token: string;
        refresh_token: string;
        expires_in: any;
        user: {
            id: string;
            email: string;
            name: string;
            role: UserRole;
        };
        organization: {
            id: string;
            name: string;
            slug: string;
        };
    }>;
    login(loginDto: LoginDto, ipAddress?: string, userAgent?: string): Promise<{
        access_token: string;
        refresh_token: string;
        expires_in: any;
        user: {
            id: string;
            email: string;
            name: string;
            role: UserRole;
            is_super_admin: boolean;
        };
        organization: {
            id: string;
            name: string;
            slug: string;
            plan: import("../organizations/entities/organization.entity").OrganizationPlan;
        };
    }>;
    refreshTokens(refreshToken: string, ipAddress?: string, userAgent?: string): Promise<{
        access_token: string;
        refresh_token: string;
        expires_in: any;
        user: {
            id: string;
            email: string;
            name: string;
            role: UserRole;
            is_super_admin: boolean;
        };
        organization: {
            id: string;
            name: string;
            slug: string;
            plan: import("../organizations/entities/organization.entity").OrganizationPlan;
        };
    }>;
    logout(refreshToken: string): Promise<{
        message: string;
    }>;
    forgotPassword(email: string): Promise<{
        message: string;
        token?: undefined;
    } | {
        message: string;
        token: string;
    }>;
    resetPassword(token: string, newPassword: string): Promise<{
        message: string;
    }>;
    changePassword(userId: string, currentPassword: string, newPassword: string): Promise<{
        message: string;
    }>;
    validateUser(userId: string): Promise<User>;
    seedSuperAdmin(): Promise<void>;
    private generateTokens;
}
