import { LifeCycleObserver, Provider } from '@loopback/core';
import { juggler } from '@loopback/repository';
import { ServerConfigService } from '../../server-config/server-config.service';
import { GeocoderLocation, IGeocoderService } from '../geocoder.service';
import { CurrentContext } from './../../../services/application.service';
export declare class GeocoderNominatimDataSource extends juggler.DataSource implements LifeCycleObserver {
    static dataSourceName: string;
    static readonly defaultConfig: {
        name: string;
        connector: string;
        options: {
            headers: {
                accept: string;
                'content-type': string;
            };
        };
        operations: {
            template: {
                method: string;
                url: string;
                headers: {
                    referer: string;
                    'user-agent': string;
                };
            };
            functions: {
                geocode: string[];
            };
        }[];
    };
    constructor(dsConfig?: object);
}
export interface GeocoderNominatimRepository {
    geocode(address: string, referer: string, userAgent: string): Promise<{
        place_id: number;
        licence: string;
        osm_type: string;
        osm_id: number;
        boundingbox: [string, string, string, string];
        lat: string;
        lon: string;
        display_name: string;
        place_rank: number;
        category: string;
        type: string;
        importance: number;
        geojson: {
            type: string;
            coordinates: [number, number];
        };
    }[]>;
}
export declare class GeocoderNominatimRepositoryProvider implements Provider<GeocoderNominatimRepository> {
    protected dataSource: GeocoderNominatimDataSource;
    constructor(dataSource?: GeocoderNominatimDataSource);
    value(): Promise<GeocoderNominatimRepository>;
}
export declare class GeocoderNominatimService implements IGeocoderService {
    private geocoderRepository;
    private serverConfigService;
    constructor(geocoderRepository: GeocoderNominatimRepository, serverConfigService: ServerConfigService);
    getName(): string;
    getAddressLocation(address: string, isAddressUriEncoded: boolean | undefined, ctx: CurrentContext): Promise<GeocoderLocation>;
}
