import { CreateAchievementDto } from './dto/create-achievement.dto';
import { UpdateAchievementDto } from './dto/update-achievement.dto';
import { AchievementRepository } from './achievements.repository';
import { Achievement } from './entities/achievement.entity';
import { DataSource, Repository } from 'typeorm';
import { CreateUserAchievementDto } from './dto/create-user-achievement.dto';
import { UserAchievement } from './entities/user-achievement.entity';
import { AppUserRepository } from 'src/app_users/app_users.repository';
import { StreakRepository } from 'src/streaks/streaks.repository';
import { UserStreak } from 'src/streaks/entities/user-streak.entity';
export declare class AchievementsService {
    private readonly achievementEntity;
    private readonly achievementRepository;
    private readonly userAchievementEntity;
    private readonly appUserRepository;
    private readonly streakRepository;
    private readonly userStreakEntity;
    private readonly connection;
    constructor(achievementEntity: Repository<Achievement>, achievementRepository: AchievementRepository, userAchievementEntity: Repository<UserAchievement>, appUserRepository: AppUserRepository, streakRepository: StreakRepository, userStreakEntity: Repository<UserStreak>, connection: DataSource);
    create(createAchievementDto: CreateAchievementDto): Promise<Achievement>;
    findAll(take: number, skip: number, key: string, order: string, headers: any): Promise<{
        count: number;
        data: Achievement[];
    }>;
    findAllUserAchievement(take: number, skip: number, userId: string, date: string): Promise<{
        achievements: {
            achievement_count: number;
            achievement_data: {
                id: string;
                name: string;
                status: number;
                created_at: Date;
                is_achieved: boolean;
            }[];
        };
        streaks: {
            streak_count: number;
            streak_data: {
                id: string;
                streak_count: string;
                status: number;
                created_at: Date;
                is_achieved: boolean;
            }[];
        };
    }>;
    findAllAchievement(take: number, skip: number, key: string, order: string, search: string, recent: boolean, province: string): Promise<{
        count: number;
        achievement: UserAchievement[];
    }>;
    findOne(id: string): Promise<Achievement>;
    update(id: string, updateAchievementDto: UpdateAchievementDto): Promise<import("typeorm").UpdateResult>;
    remove(id: string): Promise<void>;
    checkAndAddUserAchievement(createUserAchievementDto: CreateUserAchievementDto): Promise<void>;
}
