import { Repository } from 'typeorm';
import { User } from '../../entities/user.entity';
import { App } from '../../entities/app.entity';
import { Build } from '../../entities/build.entity';
import { PlatformSettings } from '../../entities/platform-settings.entity';
export declare class AdminService {
    private userRepository;
    private appRepository;
    private buildRepository;
    private settingsRepository;
    constructor(userRepository: Repository<User>, appRepository: Repository<App>, buildRepository: Repository<Build>, settingsRepository: Repository<PlatformSettings>);
    getDashboardStats(): Promise<{
        totalUsers: number;
        activeUsers: number;
        inactiveUsers: number;
        totalApps: number;
        totalBuilds: number;
        activeUsersLast30Days: number;
        platformDistribution: {
            android: number;
            ios: number;
        };
        usersByMonth: {
            month: any;
            count: number;
        }[];
        buildsByMonth: {
            month: any;
            count: number;
        }[];
    }>;
    getAllUsers(page?: number, limit?: number, search?: string): Promise<{
        users: {
            id: string;
            name: string;
            email: string;
            profilePhoto: string | null;
            role: string;
            isActive: boolean;
            createdAt: Date;
            lastActiveAt: Date | null;
            totalApps: number;
            totalBuilds: number;
        }[];
        total: number;
        page: number;
        limit: number;
        totalPages: number;
    }>;
    getUserDetails(userId: string): Promise<{
        id: string;
        name: string;
        email: string;
        profilePhoto: string | null;
        role: string;
        isActive: boolean;
        createdAt: Date;
        lastActiveAt: Date | null;
        apps: {
            id: string;
            appName: string;
            platform: "android" | "ios";
            bundleOrPackage: string;
            iconFileId: string | null;
            builds: {
                id: string;
                version: string;
                buildNumber: string;
                size: number;
                createdAt: Date;
                iconFileId: string | null;
                minOs: string | null;
                shortCode: string | null;
                isPasswordProtected: boolean;
                passwordText: string | null;
            }[];
        }[];
        stats: {
            totalApps: number;
            totalBuilds: number;
            totalSize: number;
        };
        userSettings: {
            buildLinkExpiryDays: number | null;
            aiReleaseNotesEnabled: boolean | null;
            maxBuildSizeMb: number | null;
            cicdEnabled: boolean | null;
            slackEnabled: boolean | null;
        };
        slackStatus: {
            connected: boolean;
            channelId: string | null;
            workspaceId: string | null;
        };
    }>;
    updateUserStatus(userId: string, isActive: boolean): Promise<{
        success: boolean;
        user: User;
    }>;
    updateUserRole(userId: string, role: string): Promise<{
        success: boolean;
        user: User;
    }>;
    getRecentBuilds(limit?: number): Promise<{
        id: string;
        version: string;
        buildNumber: string;
        platform: "android" | "ios";
        appName: string;
        iconFileId: string | null;
        createdAt: Date;
        size: number;
        userName: string;
        userEmail: string;
        shortCode: string | null;
        isPasswordProtected: boolean;
        passwordText: string | null;
    }[]>;
    getRecentUsers(limit?: number): Promise<{
        id: string;
        name: string;
        email: string;
        profilePhoto: string | null;
        role: string;
        isActive: boolean;
        createdAt: Date;
        totalApps: number;
    }[]>;
    getAllAppsWithIcons(limit?: number): Promise<{
        id: string;
        appName: string;
        platform: "android" | "ios";
        iconFileId: string;
        userName: string;
        totalBuilds: number;
        createdAt: Date;
    }[]>;
    private getUsersByMonth;
    private getBuildsByMonth;
    deleteUser(userId: string): Promise<{
        success: boolean;
        message: string;
    }>;
    getAllBuilds(page?: number, limit?: number, search?: string): Promise<{
        builds: {
            id: string;
            version: string;
            buildNumber: string;
            platform: "android" | "ios";
            appName: string;
            iconFileId: string | null;
            createdAt: Date;
            size: number;
            userName: string;
            userEmail: string;
            userId: string;
            shortCode: string | null;
            isPasswordProtected: boolean;
            passwordText: string | null;
        }[];
        total: number;
        page: number;
        limit: number;
        totalPages: number;
    }>;
    getActiveUsers(page?: number, limit?: number): Promise<{
        users: {
            id: string;
            name: string;
            email: string;
            profilePhoto: string | null;
            role: string;
            isActive: boolean;
            createdAt: Date;
            lastActiveAt: Date | null;
            totalApps: number;
            totalBuilds: number;
        }[];
        total: number;
        page: number;
        limit: number;
        totalPages: number;
    }>;
    getUniqueApps(page?: number, limit?: number, search?: string): Promise<{
        apps: {
            appName: string;
            platforms: string[];
            uploaders: {
                id: string;
                name: string;
                email: string;
                profilePhoto: string | null;
            }[];
            totalBuilds: number;
            iconFileId: string | null;
            latestCreatedAt: Date;
        }[];
        total: number;
        page: number;
        limit: number;
        totalPages: number;
    }>;
    getUniqueAppCount(): Promise<number>;
    updateUserSettings(userId: string, updates: {
        buildLinkExpiryDays?: number | null;
        aiReleaseNotesEnabled?: boolean | null;
        maxBuildSizeMb?: number | null;
        cicdEnabled?: boolean | null;
        slackEnabled?: boolean | null;
    }): Promise<{
        success: boolean;
        userSettings: {
            buildLinkExpiryDays: number | null;
            aiReleaseNotesEnabled: boolean | null;
            maxBuildSizeMb: number | null;
            cicdEnabled: boolean | null;
            slackEnabled: boolean | null;
        };
    }>;
    getSettings(): Promise<PlatformSettings>;
    updateSettings(updates: {
        buildLinkExpiryDays?: number;
        aiReleaseNotesEnabled?: boolean;
        maxBuildSizeMb?: number;
        cicdEnabled?: boolean;
        slackEnabled?: boolean;
    }): Promise<PlatformSettings>;
}
