using System;
using System.Collections.Generic;
using JetBrains.Annotations;
using WireMock.Matchers;
using WireMock.Matchers.Request;
namespace WireMock.RequestBuilders
{
///
/// The HeadersAndCookieRequestBuilder interface.
///
public interface IHeadersAndCookiesRequestBuilder : IBodyRequestBuilder, IRequestMatcher, IParamsRequestBuilder
{
///
/// WithHeader: matching based on name, pattern and matchBehaviour.
///
/// The name.
/// The pattern.
/// The match behaviour.
/// The .
IRequestBuilder WithHeader([NotNull] string name, string pattern, MatchBehaviour matchBehaviour);
///
/// WithHeader: matching based on name, pattern, ignoreCase and matchBehaviour.
///
/// The name.
/// The pattern.
/// Ignore the case from the pattern.
/// The match behaviour.
/// The .
IRequestBuilder WithHeader([NotNull] string name, string pattern, bool ignoreCase = true, MatchBehaviour matchBehaviour = MatchBehaviour.AcceptOnMatch);
///
/// WithHeader: matching based on name, patterns and matchBehaviour.
///
/// The name.
/// The patterns.
/// The match behaviour.
/// The .
IRequestBuilder WithHeader([NotNull] string name, string[] patterns, MatchBehaviour matchBehaviour);
///
/// WithHeader: matching based on name, patterns, ignoreCase and matchBehaviour.
///
/// The name.
/// The patterns.
/// Ignore the case from the pattern.
/// The match behaviour.
/// The .
IRequestBuilder WithHeader([NotNull] string name, string[] patterns, bool ignoreCase = true, MatchBehaviour matchBehaviour = MatchBehaviour.AcceptOnMatch);
///
/// WithHeader: matching based on name and IStringMatcher[].
///
/// The name.
/// The matchers.
/// The .
IRequestBuilder WithHeader([NotNull] string name, [NotNull] params IStringMatcher[] matchers);
///
/// WithHeader: matching based on functions.
///
/// The headers funcs.
/// The .
IRequestBuilder WithHeader([NotNull] params Func, bool>[] funcs);
///
/// WithCookie: cookie matching based on name, pattern, ignoreCase and matchBehaviour.
///
/// The name.
/// The pattern.
/// Ignore the case from the pattern.
/// The match behaviour.
/// The .
IRequestBuilder WithCookie([NotNull] string name, string pattern, bool ignoreCase = true, MatchBehaviour matchBehaviour = MatchBehaviour.AcceptOnMatch);
///
/// WithCookie: matching based on name and IStringMatcher[].
///
/// The name.
/// The matchers.
/// The .
IRequestBuilder WithCookie([NotNull] string name, [NotNull] params IStringMatcher[] matchers);
///
/// WithCookie: matching based on functions.
///
/// The funcs.
/// The .
IRequestBuilder WithCookie([NotNull] params Func, bool>[] cookieFuncs);
}
}