using System;
using System.Collections.Generic;
using System.ComponentModel;
namespace GitHub.DistributedTask.Pipelines.Artifacts
{
///
/// Provides a mechanism to resolve the artifacts
///
[EditorBrowsable(EditorBrowsableState.Never)]
public interface IArtifactResolver
{
///
/// Given a resource, it gets the corresponding task id from its extension
///
///
///
Guid GetArtifactDownloadTaskId(Resource resource);
///
/// Given a resource and step, it maps the resource properties to task inputs
///
///
///
void PopulateMappedTaskInputs(Resource resource, TaskStep taskStep);
///
/// Given an artifact step, it resolves the artifact and returns a download artifact task
///
///
///
///
Boolean ResolveStep(IPipelineContext pipelineContext, JobStep step, out IList resolvedSteps);
///
/// Given resource store and task step it translate the taskStep into actual task reference with mapped inputs
///
///
///
///
Boolean ResolveStep(IResourceStore resourceStore, TaskStep taskStep, out String errorMessage);
///
/// Validate the given resource in the YAML file. Also resolve version for the resource if not resolved already
///
///
Boolean ValidateDeclaredResource(Resource resource, out PipelineValidationError error);
}
}