using JetBrains.Annotations;
using System;
using System.Threading.Tasks;
using WireMock.Matchers.Request;
using WireMock.ResponseProviders;
using WireMock.Settings;
namespace WireMock
{
///
/// The IMapping interface.
///
public interface IMapping
{
///
/// Gets the unique identifier.
///
Guid Guid { get; }
///
/// Gets the unique title.
///
string Title { get; }
///
/// The full filename path for this mapping (only defined for static mappings).
///
string Path { get; set; }
///
/// Gets the priority.
///
int Priority { get; }
///
/// Scenario.
///
[CanBeNull]
string Scenario { get; }
///
/// Execution state condition for the current mapping.
///
[CanBeNull]
string ExecutionConditionState { get; }
///
/// The next state which will be signaled after the current mapping execution.
/// In case the value is null, state will not be changed.
///
[CanBeNull]
string NextState { get; }
///
/// The Request matcher.
///
IRequestMatcher RequestMatcher { get; }
///
/// The Provider.
///
IResponseProvider Provider { get; }
///
/// The FluentMockServerSettings.
///
IFluentMockServerSettings Settings { get; }
///
/// Is State started ?
///
bool IsStartState { get; }
///
/// Gets a value indicating whether this mapping is an Admin Interface.
///
///
/// true if this mapping is an Admin Interface; otherwise, false.
///
bool IsAdminInterface { get; }
///
/// Gets a value indicating whether this mapping to be logged.
///
///
/// true if this mapping to be logged; otherwise, false.
///
bool LogMapping { get; }
///
/// ProvideResponseAsync
///
/// The request message.
/// The .
Task ProvideResponseAsync(RequestMessage requestMessage);
///
/// Gets the RequestMatchResult based on the RequestMessage.
///
/// The request message.
/// The Next State.
/// The .
RequestMatchResult GetRequestMatchResult(RequestMessage requestMessage, [CanBeNull] string nextState);
}
}