import React from 'react';
import type { ActionObject, Option } from 'jamis-core';
import type { FormControlProps } from '../types';
import type { CityPickerProps } from './types';
interface CityPickerState {
    code: number;
    province: string;
    provinceCode: number;
    city: string;
    cityCode: number;
    district: string;
    districtCode: number;
    street: string;
    db?: {
        province: Array<string>;
        city: {
            [propName: number]: Array<number>;
        };
        district: {
            [propName: number]: {
                [propName: number]: Array<number>;
            } | Array<number>;
        };
        [propName: string]: any;
    };
}
export default class CityPicker extends React.Component<CityPickerProps, CityPickerState> {
    static defaultProps: {
        joinValues: boolean;
        extractValue: boolean;
        delimiter: string;
        allowCity: boolean;
        allowDistrict: boolean;
        allowStreet: boolean;
    };
    state: CityPickerState;
    componentDidMount(): void;
    componentDidUpdate(prevProps: CityPickerProps): void;
    loadDb(callback?: () => void): void;
    handleProvinceChange(option: Option): void;
    handleCityChange(option: Option): void;
    handleDistrictChange(option: Option, otherStates?: any): void;
    handleStreetChange(e: React.ChangeEvent<HTMLInputElement>): void;
    handleStreetEnd(): void;
    syncIn(props?: Readonly<CityPickerProps>): void;
    syncOut(): void;
    render(): JSX.Element;
}
export interface LocationControlProps extends FormControlProps {
    allowCity?: boolean;
    allowDistrict?: boolean;
    extractValue?: boolean;
    joinValues?: boolean;
    allowStreet?: boolean;
}
export declare class LocationControl extends React.Component<LocationControlProps> {
    doAction(action: ActionObject, data: object, throwErrors: boolean): void;
    handleChange(value: number | string): Promise<void>;
    render(): JSX.Element;
}
export declare class CityControlRenderer extends LocationControl {
}
export {};
