import * as react from 'react';
import { isCityCached, clearCache } from '../zip6/loader.cjs';

interface SearchResult {
    city: string;
    area: string;
    road: string;
}
interface Zip6Result {
    zipcode: string;
    zip3: string;
    city: string;
    area: string;
    road: string;
}
interface UseTwZip6Options {
    /** 資料來源 URL（預設使用 jsDelivr CDN） */
    baseUrl?: string;
    /** 預載入的縣市列表 */
    preload?: string[];
}
declare function useTwZip6(options?: UseTwZip6Options): {
    loading: boolean;
    cities: string[];
    areas: string[];
    roads: string[];
    city: string;
    area: string;
    road: string;
    number: number | undefined;
    lane: number | undefined;
    alley: number | undefined;
    setCity: (value: string) => Promise<void>;
    setArea: (value: string) => void;
    setRoad: (value: string) => void;
    setNumber: react.Dispatch<react.SetStateAction<number | undefined>>;
    setLane: react.Dispatch<react.SetStateAction<number | undefined>>;
    setAlley: react.Dispatch<react.SetStateAction<number | undefined>>;
    searchRoads: (keyword: string) => void;
    searchResults: SearchResult[];
    zipCode: string;
    zip3: string;
    result: Zip6Result | undefined;
    preloadCities: (citiesToPreload: string[]) => Promise<void>;
    isCityCached: typeof isCityCached;
    clearCache: typeof clearCache;
};

export { type SearchResult, type UseTwZip6Options, type Zip6Result, useTwZip6 };
