import { type CensusFeature, type District, type Locality, type Location, type Municipality, type Parish } from '@tmlmobilidade/types';
import { Filter, FindOptions, WithId } from 'mongodb';
declare class LocationsClass {
    private static _instance;
    private collections;
    private mongoConnector;
    private constructor();
    static getInstance(): Promise<LocationsClass>;
    countCensus: (filter?: Filter<CensusFeature>) => Promise<number>;
    countDistricts: (filter?: Filter<District>) => Promise<number>;
    countLocalities: (filter?: Filter<Locality>) => Promise<number>;
    countMunicipalities: (filter?: Filter<Municipality>) => Promise<number>;
    countParishes: (filter?: Filter<Parish>) => Promise<number>;
    findCensus: (filter?: Filter<CensusFeature>, options?: FindOptions) => Promise<WithId<CensusFeature>[]>;
    findDistricts: (filter?: Filter<District>, options?: FindOptions) => Promise<District[]>;
    findLocalities: (filter?: Filter<Locality>, options?: FindOptions) => Promise<Locality[]>;
    findMunicipalities: (filter?: Filter<Municipality>, options?: FindOptions) => Promise<Municipality[]>;
    findParishes: (filter?: Filter<Parish>, options?: FindOptions) => Promise<Parish[]>;
    findCensusById: (id: string, options?: FindOptions) => Promise<null | WithId<CensusFeature>>;
    findDistrictById: (id: string, options?: FindOptions) => Promise<District | null>;
    findLocalityById: (id: string, options?: FindOptions) => Promise<Locality | null>;
    findMunicipalityById: (id: string, options?: FindOptions) => Promise<Municipality | null>;
    findParishById: (id: string, options?: FindOptions) => Promise<null | Parish>;
    findMunicipalitiesByGeo: (lat: number, lon: number, options?: FindOptions) => Promise<Municipality | null>;
    findParishesByGeo: (lat: number, lon: number, options?: FindOptions) => Promise<null | Parish>;
    findDistrictsByGeo: (lat: number, lon: number, options?: FindOptions) => Promise<District | null>;
    findLocalitiesByGeo: (lat: number, lon: number, options?: FindOptions) => Promise<Locality | null>;
    findCensusByGeo: (lat: number, lon: number, options?: FindOptions) => Promise<null | WithId<CensusFeature>>;
    findLocationByGeo(lat: number, lon: number, { census }?: {
        census?: boolean;
    }): Promise<Location>;
    private connect;
    private findById;
    private findMany;
    private findOne;
    private count;
    private geoFilter;
    private transformDocument;
    private convertFilterField;
    private convertFilter;
}
export declare const locations: LocationsClass;
export {};
