// Copyright (c) .NET Foundation and contributors. All rights reserved. Licensed under the Microsoft Reciprocal License. See LICENSE.TXT file in the project root for full license information.
namespace WixToolset.Extensibility.Services
{
using System;
using WixToolset.Data;
using WixToolset.Extensibility.Data;
///
/// Interface provided to help backend extensions.
///
public interface IBackendHelper
{
///
/// Creates a file transfer and marks it redundant if the source and destination are identical.
///
/// Source for the file transfer.
/// Destiation for the file transfer.
/// Indicates whether to move or copy the source file.
IFileTransfer CreateFileTransfer(string source, string destination, bool move, SourceLineNumber sourceLineNumbers = null);
///
/// Creates a version 3 name-based UUID.
///
/// The namespace UUID.
/// The value.
/// The generated GUID for the given namespace and value.
string CreateGuid(Guid namespaceGuid, string value);
///
/// Creates a resolved directory.
///
/// Directory parent identifier.
/// Name of directory.
/// Resolved directory.
IResolvedDirectory CreateResolvedDirectory(string directoryParent, string name);
///
/// Creates a tracked file.
///
/// Destination path for the build output.
/// Type of tracked file to create.
/// Optional source line numbers that requested the tracked file.
ITrackedFile TrackFile(string path, TrackedFileType type, SourceLineNumber sourceLineNumbers = null);
}
}