/**
 * Company Name Filtering Utilities
 * Helper functions for filtering data based on company IMO numbers
 *
 * ============================================================================
 * OLD IMPLEMENTATION (COMMENTED OUT - REPLACED BY OPTIMIZED VERSION)
 * ============================================================================
 * The old implementation has been replaced with an optimized version that includes:
 * - In-memory caching with TTL (5 minutes)
 * - MongoDB connection pooling
 * - Set-based IMO lookups (O(1) instead of O(n))
 * - Cached environment variables and config
 * ============================================================================
 */
/**
 * Check if IMO filtering should be bypassed for admin companies
 */
declare function shouldBypassImoFiltering(companyName: string): boolean;
/**
 * Optimized Company Filter Manager with caching and connection pooling
 */
declare class CompanyFilterManager {
    private imoCache;
    private mongoClients;
    private readonly CACHE_TTL;
    private cachedCompanyName;
    private cachedDbConfig;
    /**
     * Get company name (cached)
     */
    private getCompanyName;
    /**
     * Get database configuration (cached)
     */
    private getDbConfig;
    /**
     * Get or create MongoDB client (connection pooling)
     */
    private getMongoClient;
    /**
     * Get company IMO set with caching (returns Set for O(1) lookups)
     */
    getCompanyImoSet(companyName: string, dbName: string, mongoUri: string, collectionName?: string): Promise<Set<string>>;
    /**
     * Validate if an IMO belongs to the company (optimized)
     */
    isValidImoForCompany(imo: string | number, companyName?: string, dbName?: string, mongoUri?: string): Promise<boolean>;
    /**
     * Update Typesense filter with company IMO numbers (optimized)
     */
    updateTypesenseFilterWithCompanyImos(filter: string, dbName?: string, mongoUri?: string): Promise<string>;
    /**
     * Get company IMO numbers as array (for backward compatibility)
     */
    getCompanyImoNumbers(companyName: string, dbName: string, mongoUri: string, collectionName?: string): Promise<string[]>;
    filterImoListForCompany(imoList: number[], dbName?: string, mongoUri?: string): Promise<number[]>;
    /**
     * Clear cache (useful for testing or forced refresh)
     */
    clearCache(): void;
    /**
     * Close all MongoDB connections (cleanup)
     */
    closeConnections(): Promise<void>;
}
export declare const companyFilter: CompanyFilterManager;
export declare function fetchCompanyImoNumbers(companyName: string, dbName: string, mongoUri: string, collectionName?: string): Promise<string[]>;
export declare function isValidImoForCompany(imo: string | number, companyName?: string, dbName?: string, mongoUri?: string): Promise<boolean>;
export declare function updateTypesenseFilterWithCompanyImos(filter: string, dbName?: string, mongoUri?: string): Promise<string>;
export declare function filterImoListForCompany(imoList: number[], dbName?: string, mongoUri?: string): Promise<number[]>;
export { shouldBypassImoFiltering };
