import Model from '@tripian/model';
/**
 *
 * Cities
 *
 */
export declare const cityCached: (cities: Model.City[], id: number) => Model.City | undefined;
export declare const citiesConcat: (cities: Record<Model.LangCodeKey, Model.City[]>, lang: Model.LangCodeKey, newCities: Model.City[]) => Record<Model.LangCodeKey, Model.City[]>;
/**
 *
 * City Info
 *
 */
export declare const cityInfoCached: (citiesInfo: Model.CityInfo[], id: number) => Model.CityInfo | undefined;
export declare const citiesInfoConcat: (citiesInfo: Record<Model.LangCodeKey, Model.CityInfo[]>, lang: Model.LangCodeKey, newCityInfo: Model.CityInfo) => Record<Model.LangCodeKey, Model.CityInfo[]>;
export declare const citiesEventsConcat: (citiesEvents: Record<Model.LangCodeKey, {
    cityId: number;
    events: Model.CityEvent[];
}[]>, lang: Model.LangCodeKey, cityId: number, newEvents: Model.CityEvent[]) => Record<Model.LangCodeKey, {
    cityId: number;
    events: Model.CityEvent[];
}[]>;
/**
 *
 * POI
 *
 */
export declare const poiCached: (pois: Model.Poi[], id: number) => Model.Poi | undefined;
export declare const poisConcat: (pois: Record<Model.LangCodeKey, {
    showOffersOnly: number;
    showBookingsOnly: number;
    pois: Model.Poi[];
}[]>, lang: Model.LangCodeKey, newPois: Model.Poi[], showOffersOnly: number, showBookingsOnly: number) => Record<Model.LangCodeKey, {
    showOffersOnly: number;
    showBookingsOnly: number;
    pois: Model.Poi[];
}[]>;
export declare const autoCompleteTagsConcat: (tags: Record<Model.LangCodeKey, {
    id: number;
    name: string;
}[]>, lang: Model.LangCodeKey, newTags: {
    id: number;
    name: string;
}[]) => Record<Model.LangCodeKey, {
    id: number;
    name: string;
}[]>;
/**
 ******************************************************************************
 *
 * Questions
 *
 */
export declare const questionCached: (questions: Model.Question[], id: number) => Model.Question | undefined;
export declare const questionsConcat: (questions: Record<Model.LangCodeKey, Model.Question[]>, lang: Model.LangCodeKey, newQuestions: Model.Question[]) => Record<Model.LangCodeKey, Model.Question[]>;
/**
 *
 * Trip Refs
 *
 */
export declare const tripRefCached: (tripRefs: Model.TripReference[], id: number) => Model.TripReference | undefined;
export declare const tripRefsConcatOne: (tripRefs: Model.TripReference[], newTripRef: Model.TripReference) => Model.TripReference[];
/**
 *
 * Trips
 *
 */
export declare const tripCached: (trips: Model.Trip[], id: number) => Model.Trip | undefined;
export declare const tripsConcatOne: (trips: Record<Model.LangCodeKey, Model.Trip[]>, lang: Model.LangCodeKey, newTrip: Model.Trip) => Record<Model.LangCodeKey, Model.Trip[]>;
/**
 *
 * Plan
 *
 */
export declare const planUpdated: (updatedPlan: Model.Plan, trip?: Model.Trip) => Model.Trip | undefined;
/**
 *
 * Step
 *
 */
export declare const stepAdded: (planId: number, addedStep: Model.Step, trip?: Model.Trip) => Model.Trip | undefined;
export declare const stepUpdated: (updatedStep: Model.Step, trip?: Model.Trip) => Model.Trip | undefined;
export declare const stepDeleted: (deletedStepId: number, trip?: Model.Trip) => Model.Trip | undefined;
/**
 *
 * Favorites
 *
 */
export declare const favoriteCached: (favorites: Model.Favorite[], id: number) => Model.Favorite | undefined;
export declare const favoriteConcatOne: (favorites: Record<Model.LangCodeKey, {
    cityId: number;
    favoritePois: Model.Favorite[];
}[]>, lang: Model.LangCodeKey, cityId: number, newFavorite: Model.Favorite) => Record<Model.LangCodeKey, {
    cityId: number;
    favoritePois: Model.Favorite[];
}[]>;
/**
 *
 * Companions
 *
 */
export declare const companionCached: (companions: Model.Companion[], id: number) => Model.Companion | undefined;
export declare const companionConcatOne: (companions: Record<Model.LangCodeKey, Model.Companion[]>, lang: Model.LangCodeKey, newCompanion: Model.Companion) => Record<Model.LangCodeKey, Model.Companion[]>;
/**
 *
 * Reservations
 *
 */
export declare const reservationCached: (reservations: Model.UserReservation[], id: number) => Model.UserReservation | undefined;
export declare const reservationConcatOne: (reservations: Record<Model.LangCodeKey, Model.UserReservation[]>, lang: Model.LangCodeKey, newReservation: Model.UserReservation) => Record<Model.LangCodeKey, Model.UserReservation[]>;
/**
 *
 * Reactions
 *
 */
export declare const reactionCached: (reactions: Model.UserReaction[], id: number) => Model.UserReaction | undefined;
export declare const reactionConcatOne: (reactions: Record<Model.LangCodeKey, {
    tripHash: string;
    userReactions: Model.UserReaction[];
}[]>, lang: Model.LangCodeKey, tripHash: string, newReaction: Model.UserReaction) => Record<Model.LangCodeKey, {
    tripHash: string;
    userReactions: Model.UserReaction[];
}[]>;
export declare const topTensConcatOne: (topTens: Record<Model.LangCodeKey, {
    cityId: number;
    topTen: Model.TopTen[];
}[]>, lang: Model.LangCodeKey, cityId: number, newTopTen: Model.TopTen[]) => Record<Model.LangCodeKey, {
    cityId: number;
    topTen: Model.TopTen[];
}[]>;
declare const _default: {
    citiesConcat: (cities: Record<Model.LangCodeKey, Model.City[]>, lang: Model.LangCodeKey, newCities: Model.City[]) => Record<Model.LangCodeKey, Model.City[]>;
    poisConcat: (pois: Record<Model.LangCodeKey, {
        showOffersOnly: number;
        showBookingsOnly: number;
        pois: Model.Poi[];
    }[]>, lang: Model.LangCodeKey, newPois: Model.Poi[], showOffersOnly: number, showBookingsOnly: number) => Record<Model.LangCodeKey, {
        showOffersOnly: number;
        showBookingsOnly: number;
        pois: Model.Poi[];
    }[]>;
    questionsConcat: (questions: Record<Model.LangCodeKey, Model.Question[]>, lang: Model.LangCodeKey, newQuestions: Model.Question[]) => Record<Model.LangCodeKey, Model.Question[]>;
    tripRefsConcatOne: (tripRefs: Model.TripReference[], newTripRef: Model.TripReference) => Model.TripReference[];
    tripsConcatOne: (trips: Record<Model.LangCodeKey, Model.Trip[]>, lang: Model.LangCodeKey, newTrip: Model.Trip) => Record<Model.LangCodeKey, Model.Trip[]>;
    companionConcatOne: (companions: Record<Model.LangCodeKey, Model.Companion[]>, lang: Model.LangCodeKey, newCompanion: Model.Companion) => Record<Model.LangCodeKey, Model.Companion[]>;
    stepDeleted: (deletedStepId: number, trip?: Model.Trip | undefined) => Model.Trip | undefined;
    planUpdated: (updatedPlan: Model.Plan, trip?: Model.Trip | undefined) => Model.Trip | undefined;
    reservationConcatOne: (reservations: Record<Model.LangCodeKey, Model.UserReservation[]>, lang: Model.LangCodeKey, newReservation: Model.UserReservation) => Record<Model.LangCodeKey, Model.UserReservation[]>;
    reactionConcatOne: (reactions: Record<Model.LangCodeKey, {
        tripHash: string;
        userReactions: Model.UserReaction[];
    }[]>, lang: Model.LangCodeKey, tripHash: string, newReaction: Model.UserReaction) => Record<Model.LangCodeKey, {
        tripHash: string;
        userReactions: Model.UserReaction[];
    }[]>;
    favoriteConcatOne: (favorites: Record<Model.LangCodeKey, {
        cityId: number;
        favoritePois: Model.Favorite[];
    }[]>, lang: Model.LangCodeKey, cityId: number, newFavorite: Model.Favorite) => Record<Model.LangCodeKey, {
        cityId: number;
        favoritePois: Model.Favorite[];
    }[]>;
    stepUpdated: (updatedStep: Model.Step, trip?: Model.Trip | undefined) => Model.Trip | undefined;
    stepAdded: (planId: number, addedStep: Model.Step, trip?: Model.Trip | undefined) => Model.Trip | undefined;
    autoCompleteTagsConcat: (tags: Record<Model.LangCodeKey, {
        id: number;
        name: string;
    }[]>, lang: Model.LangCodeKey, newTags: {
        id: number;
        name: string;
    }[]) => Record<Model.LangCodeKey, {
        id: number;
        name: string;
    }[]>;
    topTensConcatOne: (topTens: Record<Model.LangCodeKey, {
        cityId: number;
        topTen: Model.TopTen[];
    }[]>, lang: Model.LangCodeKey, cityId: number, newTopTen: Model.TopTen[]) => Record<Model.LangCodeKey, {
        cityId: number;
        topTen: Model.TopTen[];
    }[]>;
};
export default _default;
