import { CareLocaleType, City, SearchBarSectionApi, SearchCityByGeoIpApi } from "../../../interfaces/types";
import { GeoLocationPermission, GPSType } from "../../../../interfaces/types";
import { FocusedType } from "./types";
export type ReducerState = {
    isMobile: boolean;
    isDebug: boolean;
    navigateTo: null | string;
    geoLocationPermission: GeoLocationPermission;
    geoLocationCoordinates: null | GPSType;
    searchLocationKeywords: string;
    searchKeywords: string;
    focused: FocusedType;
    selectedLocation: City | null;
    defaultCity: City | null;
    initialCities: City[];
    cities: City[];
    searchResults: SearchBarSectionApi[];
    initialSearchResults: SearchBarSectionApi[];
    isLoadingCities: boolean;
    isLoadingSearchResults: boolean;
    isMobileModalOpened: boolean;
    initialSelectedCity: City | null;
    autoCompleteDisabled: boolean;
    inputSearchPlaceholder: string;
    locale: CareLocaleType;
};
export declare const initialState: ReducerState;
export declare enum ActionTypes {
    NavigateTo = "navigate to url",
    ClickOutsideInputLocation = "click outside input location",
    ClickOutsideInputSearch = "click outside input search",
    SelectCurrentLocation = "select current location",
    FocusInputLocation = "focus input location",
    FocusInputSearch = "focus input search",
    ChangeInputLocation = "change input location",
    ChangeInputSearch = "change input search",
    ClearInputLocation = "clear input location",
    ClearInputSearch = "clear input search",
    SelectLocation = "select location",
    FetchCitiesStart = "fetch cities start",
    FetchCitiesFinish = "fetch cities finish",
    FetchSearchResultsStart = "fetch search results start",
    FetchSearchResultsComplete = "fetch search results complete",
    FetchSearchResultsFinish = "fetch search results finish",
    FetchCitiesByGeoIpComplete = "fetch cities by geo IP finish",
    FetchCitiesByKeywordComplete = "fetch cities by keyword finish",
    DisplayInitialCities = "display initial cities",
    DisplayInitialSearchResults = "display initial search results",
    GrantGeoLocationPermission = "grant geolocation permission",
    DenyGeoLocationPermission = "deny geolocation permission",
    OpenMobileModal = "open mobile modal",
    CloseMobileModal = "close mobile modal",
    UpdateInitialSearchValue = "update initial search value",
    SelectSearchResult = "select search result",
    SetInputSearchPlaceholder = "set input search placeholder"
}
export type Action = {
    type: ActionTypes.NavigateTo;
    payload: string;
} | {
    type: ActionTypes.ClickOutsideInputLocation;
} | {
    type: ActionTypes.ClickOutsideInputSearch;
} | {
    type: ActionTypes.FocusInputLocation;
} | {
    type: ActionTypes.FocusInputSearch;
} | {
    type: ActionTypes.ChangeInputLocation;
    payload: string;
} | {
    type: ActionTypes.ChangeInputSearch;
    payload: string;
} | {
    type: ActionTypes.ClearInputLocation;
} | {
    type: ActionTypes.ClearInputSearch;
} | {
    type: ActionTypes.SelectCurrentLocation;
    payload: City;
} | {
    type: ActionTypes.SelectLocation;
    payload: City;
} | {
    type: ActionTypes.FetchCitiesStart;
} | {
    type: ActionTypes.FetchCitiesFinish;
} | {
    type: ActionTypes.FetchSearchResultsStart;
} | {
    type: ActionTypes.FetchSearchResultsComplete;
    payload: SearchBarSectionApi[];
} | {
    type: ActionTypes.FetchSearchResultsFinish;
} | {
    type: ActionTypes.FetchCitiesByGeoIpComplete;
    payload: SearchCityByGeoIpApi;
} | {
    type: ActionTypes.FetchCitiesByKeywordComplete;
    payload: City[];
} | {
    type: ActionTypes.DisplayInitialCities;
} | {
    type: ActionTypes.DisplayInitialSearchResults;
} | {
    type: ActionTypes.GrantGeoLocationPermission;
    payload: GPSType;
} | {
    type: ActionTypes.DenyGeoLocationPermission;
} | {
    type: ActionTypes.OpenMobileModal;
} | {
    type: ActionTypes.CloseMobileModal;
} | {
    type: ActionTypes.UpdateInitialSearchValue;
    payload: string;
} | {
    type: ActionTypes.SelectSearchResult;
    payload: {
        name: string;
        url: string;
    };
} | {
    type: ActionTypes.SetInputSearchPlaceholder;
    payload: string;
};
export declare function reducer(state: ReducerState, action: Action): ReducerState;
