// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
// SPDX-License-Identifier: Apache-2.0
using System.Collections.Generic;
using System.Threading.Tasks;
using AWS.Deploy.Common.Recipes.Validation;
namespace AWS.Deploy.Common.Recipes
{
    public interface IRecipeHandler
    {
        /// 
        /// Retrieves all the  that are defined by the system as well as any other recipes that are retrieved from an external source.
        /// 
        Task> GetRecipeDefinitions(List? recipeDefinitionPaths = null);
        /// 
        /// Wrapper method to fetch custom recipe definition paths from a deployment-manifest file as well as
        /// other locations that are monitored by the same source control root as the target application that needs to be deployed.
        /// 
        Task> LocateCustomRecipePaths(ProjectDefinition projectDefinition);
        /// 
        /// Wrapper method to fetch custom recipe definition paths from a deployment-manifest file as well as
        /// other locations that are monitored by the same source control root as the target application that needs to be deployed.
        /// 
        Task> LocateCustomRecipePaths(string targetApplicationFullPath, string solutionDirectoryPath);
        /// 
        /// Runs the recipe level validators and returns a list of failed validations
        /// 
        List RunRecipeValidators(Recommendation recommendation, IDeployToolValidationContext deployToolValidationContext);
    }
}