// 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.Harvesters.Extensibility
{
using Wix = WixToolset.Harvesters.Serialize;
///
/// Interface for a mutator.
///
public interface IMutator
{
///
/// Gets or sets the harvester core for the extension.
///
/// The harvester core for the extension.
IHarvesterCore Core { get; }
///
/// Gets or sets the value of the extension argument passed to heat.
///
/// The extension argument.
string ExtensionArgument { get; }
///
/// Adds a mutator extension.
///
/// The mutator extension to add.
void AddExtension(IMutatorExtension mutatorExtension);
///
/// Mutate a WiX document.
///
/// The Wix document element.
/// true if mutation was successful
bool Mutate(Wix.Wix wix);
///
/// Mutate a WiX document.
///
/// The Wix document as a string.
/// The mutated Wix document as a string if mutation was successful, else null.
string Mutate(string wixString);
}
}