import { Repository, DataSource } from 'typeorm';
import { GeoName } from './entities/geoname.entity';
import { CityBlockIpv4, CityBlockIpv6 } from './entities/city.entity';
import { AsnEntity } from './entities/asn.entity';
import { BreachedPassword } from '../txt-import/entities/breached-password.entity';
export declare class ImportCSVService {
    private readonly geoNameRepository;
    private readonly cityBlockRepository;
    private readonly cityBlockIpv6Repository;
    private readonly asnRepository;
    private readonly breachDataRepository;
    private dataSource;
    private readonly logger;
    constructor(geoNameRepository: Repository<GeoName>, cityBlockRepository: Repository<CityBlockIpv4>, cityBlockIpv6Repository: Repository<CityBlockIpv6>, asnRepository: Repository<AsnEntity>, breachDataRepository: Repository<BreachedPassword>, dataSource: DataSource);
    private deleteFile;
    /**
     * Convert an IPv6 address in CIDR format to binary (Buffer)
     * @param {string} cidr The CIDR notation (e.g., 2001:218:6040::/42)
     * @returns {Buffer} The network address in binary format
     */
    private convertCidrToBinary;
    private calculateHash;
    /**
     * Sorts object keys recursively to ensure consistent order for hashing
     * @param obj Object to sort keys
     * @returns Object with sorted keys
     */
    private sortObjectKeysRecursively;
    populateDataHashIPV6(): Promise<void>;
    populateDataHashIPV4(): Promise<void>;
    populateDataHashASN(): Promise<void>;
    populateDataHashGeoName(): Promise<void>;
    autoCalculateIPv6EndIp(): Promise<{
        message: string;
    }>;
    private calculateEndIp;
    private convertCidrToInteger;
    importCityBlocksIpv6(filePath: string): Promise<void>;
    private ipToBigInt;
    importAsn(filePath: string): Promise<void>;
    importGeoNames(filePath: string): Promise<void>;
    importCityBlocksIpv4(filePath: string): Promise<void>;
    private processBatchAndClear;
    importCSVPassword(filePath: string, batchSize?: number, deleteAfterImport?: boolean, passwordColumnName?: string, sourceColumnName?: string): Promise<{
        totalProcessed: number;
        totalSaved: number;
    }>;
    private processBatch;
}
