import { Repository, DataSource } from 'typeorm';
import { Company } from './entities/company.entity';
import { CreateCompanyDto } from './dto/create-company.dto';
import { UpdateCompanyDto } from './dto/update-company.dto';
import { Standard } from '../standards/entities/standard.entity';
import { Country } from '../countries/entities/country.entity';
import { CompanyResolverService } from './services/company-resolver.service';
import { CompanyUser } from './entities/company-user.entity';
export declare class CompaniesService {
    private readonly companyRepository;
    private readonly standardRepository;
    private readonly countryRepository;
    private readonly dataSource;
    private readonly companyResolver;
    [x: string]: any;
    private readonly logger;
    constructor(companyRepository: Repository<Company>, standardRepository: Repository<Standard>, countryRepository: Repository<Country>, dataSource: DataSource, companyResolver: CompanyResolverService);
    private generateCompanyCode;
    migrateUniqueCompanies(): Promise<void>;
    create(dto: CreateCompanyDto): Promise<Company>;
    findAll(options?: {
        page?: number;
        limit?: number;
        search?: string;
    }): Promise<{
        data: Company[];
        meta: {
            total: number;
            page: number;
            limit: number;
            totalPages: number;
            hasNextPage: boolean;
            hasPrevPage: boolean;
        };
    }>;
    private fillClientGroupFromAuditRequest;
    getAnalyticsByCertBody(): Promise<{
        totalClients: number;
        perBody: any[];
    }>;
    findOne(id: number): Promise<Company | null>;
    update(id: number, dto: UpdateCompanyDto): Promise<Company | null>;
    regenerateAllCompanyCodes(): Promise<void>;
    remove(id: number): Promise<import("typeorm").DeleteResult>;
    backfillNormalizedNames(): Promise<{
        updated: number;
        skipped: number;
        duplicates: Array<{
            normalized: string;
            ids: number[];
        }>;
    }>;
    getPortalUsers(companyId: number): Promise<CompanyUser[]>;
    grantPortalAccess(companyId: number, userId: number, email: string, grantedById: number): Promise<CompanyUser>;
    disablePortalAccess(companyId: number, userId: number, disabledById: number): Promise<CompanyUser>;
    enablePortalAccess(companyId: number, userId: number, enabledById: number): Promise<CompanyUser>;
    disableAllPortalAccess(companyId: number, disabledById: number): Promise<{
        disabled: number;
    }>;
    revokePortalAccess(companyId: number, userId: number): Promise<{
        message: string;
    }>;
    updateLastLogin(companyId: number, userId: number): Promise<void>;
}
