import { CareLocaleType, City, SearchBarTabSectionApi, SearchCityByGeoIpApi, SearchBarSectionItemApi, PopularKeySearchItemApi, Specialty } from "../../../interfaces/types";
import { GeoLocationPermission, GPSType } from "../../../../interfaces/types";
import { FocusedType, FocusedSpecialtyType } from "./types";
export type ReducerState = {
    isMobile: boolean;
    isDebug: boolean;
    navigateTo: null | string;
    geoLocationPermission: GeoLocationPermission;
    geoLocationCoordinates: null | GPSType;
    searchLocationKeywords: string;
    searchSpecialtyKeywords: string;
    searchKeywords: string;
    focused: FocusedType;
    focusedSpecialty: FocusedSpecialtyType;
    selectedLocation: City | null;
    selectedSpecialty: Specialty | null;
    defaultCity: City | null;
    initialCities: City[];
    cities: City[];
    searchResults: SearchBarTabSectionApi;
    initialSearchResults: SearchBarTabSectionApi;
    isLoadingCities: boolean;
    isLoadingSearchResults: boolean;
    isMobileModalOpened: boolean;
    initialSelectedCity: City | null;
    autoCompleteDisabled: boolean;
    inputSearchPlaceholder: string;
    locale: CareLocaleType;
    allSpecialties: SearchBarSectionItemApi[];
    popularKeys: PopularKeySearchItemApi[];
};
export declare const initialState: ReducerState;
export declare enum ActionTypes {
    NavigateTo = "navigate to url",
    ClickOutsideInputLocation = "click outside input location",
    ClickOutsideInputSearch = "click outside input search",
    ClickOutsideInputSearchSpecialty = "click outside input search specialty",
    ClickOutsideInputSpecialty = "click outside input specialty",
    SelectCurrentLocation = "select current location",
    FocusInputLocation = "focus input location",
    FocusInputSearch = "focus input search",
    FocusInputSearchSpecialty = "focus input search specialty",
    ChangeInputLocation = "change input location",
    ChangeInputSearch = "change input search",
    ClearInputLocation = "clear input location",
    ClearInputSearch = "clear input search",
    SelectLocation = "select location",
    SelectSpecialty = "select specialty",
    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",
    UpdateInitialSearchResults = "update 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",
    FocusInputSpecialty = "focus input specialty",
    FetchAllSpecialties = "fetch all specialty",
    FetchPopularKeys = "fetch popular key by type"
}
export type Action = {
    type: ActionTypes.NavigateTo;
    payload: string;
} | {
    type: ActionTypes.ClickOutsideInputLocation;
} | {
    type: ActionTypes.ClickOutsideInputSpecialty;
} | {
    type: ActionTypes.ClickOutsideInputSearch;
} | {
    type: ActionTypes.ClickOutsideInputSearchSpecialty;
} | {
    type: ActionTypes.FocusInputLocation;
} | {
    type: ActionTypes.FocusInputSpecialty;
} | {
    type: ActionTypes.FocusInputSearch;
} | {
    type: ActionTypes.FocusInputSearchSpecialty;
} | {
    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.SelectSpecialty;
    payload: Specialty;
} | {
    type: ActionTypes.FetchCitiesStart;
} | {
    type: ActionTypes.FetchCitiesFinish;
} | {
    type: ActionTypes.FetchSearchResultsStart;
} | {
    type: ActionTypes.FetchSearchResultsComplete;
    payload: {
        searches: SearchBarSectionItemApi[];
        key: string;
    };
} | {
    type: ActionTypes.FetchSearchResultsFinish;
} | {
    type: ActionTypes.FetchCitiesByGeoIpComplete;
    payload: SearchCityByGeoIpApi;
} | {
    type: ActionTypes.FetchCitiesByKeywordComplete;
    payload: City[];
} | {
    type: ActionTypes.DisplayInitialCities;
} | {
    type: ActionTypes.DisplayInitialSearchResults;
} | {
    type: ActionTypes.UpdateInitialSearchResults;
    payload: {
        searches: SearchBarSectionItemApi[];
        key: string;
    };
} | {
    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;
} | {
    type: ActionTypes.FetchAllSpecialties;
    payload: SearchBarSectionItemApi[];
} | {
    type: ActionTypes.FetchPopularKeys;
    payload: PopularKeySearchItemApi[];
};
export declare function reducer(state: ReducerState, action: Action): ReducerState;
