interface Region {
    code: string;
    name: string;
}
interface Province {
    code: string;
    name: string;
    regionCode: string;
}
interface Municipality {
    code: string;
    name: string;
    regionCode: string;
    provinceCode: string | null;
    isCity: boolean;
    zipCodes: string[];
}
interface Barangay {
    code: string;
    name: string;
    municipalityCode: string;
}
interface ZipLookupResult {
    zip: string;
    region: Region;
    province: Province | null;
    municipality: Municipality;
    barangays: Barangay[];
}
interface SearchResult {
    type: 'region' | 'province' | 'municipality' | 'barangay';
    code: string;
    name: string;
    regionCode?: string;
    provinceCode?: string | null;
    municipalityCode?: string;
}

declare function getRegions(): Region[];
declare function getProvinces(regionCode: string): Province[];
declare function getMunicipalities(provinceCode: string): Municipality[];
declare function getBarangays(municipalityCode: string): Barangay[];
declare function search(query: string): SearchResult[];

declare function lookupByZip(zip: string): ZipLookupResult | null;

export { type Barangay, type Municipality, type Province, type Region, type SearchResult, type ZipLookupResult, getBarangays, getMunicipalities, getProvinces, getRegions, lookupByZip, search };
