import { Infer } from '@vinejs/vine/types';
import { PathLike } from 'fs';
import Fuse from 'fuse.js';
export declare const AKOpenDataCityVineSchema: {
    name: import("@vinejs/vine").VineString;
    postalCode: import("@vinejs/vine").VineString;
    latitude: import("@vinejs/vine/schema/base/literal").OptionalModifier<import("@vinejs/vine").VineNumber>;
    longitude: import("@vinejs/vine/schema/base/literal").OptionalModifier<import("@vinejs/vine").VineNumber>;
    inseeCode: import("@vinejs/vine").VineString;
};
declare const AKOpenDataCityVineSchemaObject: import("@vinejs/vine").VineObject<{
    name: import("@vinejs/vine").VineString;
    postalCode: import("@vinejs/vine").VineString;
    latitude: import("@vinejs/vine/schema/base/literal").OptionalModifier<import("@vinejs/vine").VineNumber>;
    longitude: import("@vinejs/vine/schema/base/literal").OptionalModifier<import("@vinejs/vine").VineNumber>;
    inseeCode: import("@vinejs/vine").VineString;
}, {
    latitude?: string | number | null | undefined;
    longitude?: string | number | null | undefined;
    name: string;
    postalCode: string;
    inseeCode: string;
}, {
    latitude?: number | undefined;
    longitude?: number | undefined;
    name: string;
    postalCode: string;
    inseeCode: string;
}, {
    latitude?: number | undefined;
    longitude?: number | undefined;
    name: string;
    postalCode: string;
    inseeCode: string;
}>;
export type AKOpenDataCity = Infer<typeof AKOpenDataCityVineSchemaObject>;
type AKOpenDataCityInFuse = Omit<AKOpenDataCity, 'postalCode'> & {
    postalCodes: string[];
};
export type AKOpenDataServiceOptions = {
    assetsPath: PathLike;
};
export default class AKOpenDataCityService {
    #private;
    fuse: Fuse<AKOpenDataCityInFuse>;
    outputValidator: import("@vinejs/vine").VineValidator<import("@vinejs/vine").VineObject<{
        name: import("@vinejs/vine").VineString;
        postalCode: import("@vinejs/vine").VineString;
        latitude: import("@vinejs/vine/schema/base/literal").OptionalModifier<import("@vinejs/vine").VineNumber>;
        longitude: import("@vinejs/vine/schema/base/literal").OptionalModifier<import("@vinejs/vine").VineNumber>;
        inseeCode: import("@vinejs/vine").VineString;
    }, {
        latitude?: string | number | null | undefined;
        longitude?: string | number | null | undefined;
        name: string;
        postalCode: string;
        inseeCode: string;
    }, {
        latitude?: number | undefined;
        longitude?: number | undefined;
        name: string;
        postalCode: string;
        inseeCode: string;
    }, {
        latitude?: number | undefined;
        longitude?: number | undefined;
        name: string;
        postalCode: string;
        inseeCode: string;
    }>, Record<string, any> | undefined>;
    static create(options: AKOpenDataServiceOptions): Promise<AKOpenDataCityService>;
    constructor(options: AKOpenDataServiceOptions);
    search(query: string): AKOpenDataCity[];
    getByCodes(postalCode: string, inseeCode: string): AKOpenDataCity;
    loadCities(): Promise<void>;
    loadDatagouvCities(): Promise<AKOpenDataCityInFuse[]>;
    loadOpenDataJuridictionsPostalCodes(): Promise<String[]>;
    loadCedexToPostalCode(): Promise<Record<string, string>>;
    normalizePostalCode(code: string): string;
}
export {};
