@using System.Linq
@using ApiGenerator
@using ApiGenerator.Domain
@using ApiGenerator.Domain.Code
@inherits ApiGenerator.CodeTemplatePage<RestApiSpec>
@{ await IncludeGeneratorNotice(); }
// ReSharper disable RedundantUsingDirective
using System;
using System.Collections.Generic;
using System.Collections.Specialized;
using System.Linq;
using System.Text;
using System.Threading;
using System.Threading.Tasks;
using OpenSearch.Net;
@{ await IncludeAsync("LowLevel/Client/Usings.cshtml", Model);}

namespace OpenSearch.Net
{
    ///<summary>
    ///OpenSearch low level client
    ///</summary>
    public partial interface IOpenSearchLowLevelClient 
    {
        @foreach(var (ns, endpoints) in Model.EndpointsPerNamespaceLowLevel)
        {
        if (ns != CsharpNames.RootNamespace)
        {
<text>
            ///<summary>@ns.SplitPascalCase() APIs</summary>
            @CsharpNames.LowLevelClientNamespacePrefix@(ns)@CsharpNames.ClientNamespaceSuffix @ns { get; }
</text>
            continue;
        }
	        var methods = endpoints.SelectMany(e=>e.LowLevelClientMethods).ToList();
            foreach(var method in methods)
            {
                await IncludeAsync("LowLevel/Client/Methods/MethodInterface.cshtml", method);
            }
        }
    }
}