import { OnModuleInit } from '@nestjs/common';
import { ConfigService } from '@nestjs/config';
import { Repository } from 'typeorm';
import { User } from '../../database/entities/user.entity';
import { Group } from '../../database/entities/group.entity';
import { GroupMember } from '../../database/entities/group-member.entity';
import { Expense } from '../../database/entities/expense.entity';
import { Settlement } from '../../database/entities/settlement.entity';
import { GroupInvite } from '../../database/entities/group-invite.entity';
import { AdminAuditLog } from '../../database/entities/admin-audit-log.entity';
import { AdminAuditLogDto, AdminGroupDetailDto, AdminGroupListItemDto, AdminOverviewDto, AdminUpdateGroupDto, AdminUpdateUserDto, AdminUserDetailDto, AdminUserListItemDto, PaginatedDto } from './dto/admin.dto';
import { AuthenticatedUser } from '../auth/strategies/jwt.strategy';
export declare class AdminService implements OnModuleInit {
    private readonly userRepo;
    private readonly groupRepo;
    private readonly groupMemberRepo;
    private readonly expenseRepo;
    private readonly settlementRepo;
    private readonly groupInviteRepo;
    private readonly adminAuditLogRepo;
    private readonly config;
    private readonly logger;
    constructor(userRepo: Repository<User>, groupRepo: Repository<Group>, groupMemberRepo: Repository<GroupMember>, expenseRepo: Repository<Expense>, settlementRepo: Repository<Settlement>, groupInviteRepo: Repository<GroupInvite>, adminAuditLogRepo: Repository<AdminAuditLog>, config: ConfigService);
    onModuleInit(): Promise<void>;
    getMe(actor: AuthenticatedUser): Promise<{
        id: string;
        email: string;
        name: string;
        isPlatformAdmin: boolean;
    }>;
    getOverview(): Promise<AdminOverviewDto>;
    listUsers(q: string, page: number, pageSize: number): Promise<PaginatedDto<AdminUserListItemDto>>;
    getUser(id: string): Promise<AdminUserDetailDto>;
    updateUser(actor: AuthenticatedUser, id: string, dto: AdminUpdateUserDto): Promise<AdminUserDetailDto>;
    deleteUser(actor: AuthenticatedUser, id: string): Promise<{
        message: string;
    }>;
    listGroups(q: string, page: number, pageSize: number): Promise<PaginatedDto<AdminGroupListItemDto>>;
    getGroup(id: string): Promise<AdminGroupDetailDto>;
    updateGroup(actor: AuthenticatedUser, id: string, dto: AdminUpdateGroupDto): Promise<AdminGroupDetailDto>;
    deleteGroup(actor: AuthenticatedUser, id: string): Promise<{
        message: string;
    }>;
    listAudit(page: number, pageSize: number): Promise<PaginatedDto<AdminAuditLogDto>>;
    private audit;
}
