/** * External dependencies */ import type { Maybe, Opportunity } from '@nab/types'; /** * Internal dependencies */ import { State } from '../types'; export type RecommendationEngineAction = | InitRecommendationEngineData | MarkOpportunityAsBeingInstantiated | SetSuggestionGenerationState; export function initRecommendationEngineData( data: Partial< State[ 'recommendationEngine' ] > ): InitRecommendationEngineData { return { type: 'INIT_RECOMMENDATION_ENGINE_DATA', data, }; } export function setSuggestionGenerationState( state: State[ 'recommendationEngine' ][ 'suggestionGenerationState' ] ): SetSuggestionGenerationState { return { type: 'SET_SUGGESTION_GENERATION_STATE', state, }; } export function markOpportunityAsBeingInstantiated( opportunity: Maybe< Opportunity > ): MarkOpportunityAsBeingInstantiated { return { type: 'MARK_OPPORTUNTIY_AS_BEING_INSTANTIATED', opportunity, }; } // ============ // HELPER TYPES // ============ type InitRecommendationEngineData = { readonly type: 'INIT_RECOMMENDATION_ENGINE_DATA'; readonly data: Partial< State[ 'recommendationEngine' ] >; }; type SetSuggestionGenerationState = { readonly type: 'SET_SUGGESTION_GENERATION_STATE'; readonly state: State[ 'recommendationEngine' ][ 'suggestionGenerationState' ]; }; type MarkOpportunityAsBeingInstantiated = { readonly type: 'MARK_OPPORTUNTIY_AS_BEING_INSTANTIATED'; readonly opportunity: Maybe< Opportunity >; };