﻿namespace Duende.Bff.Blazor.Client
{
    public sealed class BffBlazorClientOptions : System.IEquatable<Duende.Bff.Blazor.Client.BffBlazorClientOptions>
    {
        public BffBlazorClientOptions() { }
        public string? RemoteApiBaseAddress { get; set; }
        public string RemoteApiPath { get; set; }
        public string? StateProviderBaseAddress { get; set; }
        public int WebAssemblyStateProviderPollingDelay { get; set; }
        public int WebAssemblyStateProviderPollingInterval { get; set; }
    }
    public static class Constants
    {
        public static class ClaimTypes
        {
            public const string LogoutUrl = "bff:logout_url";
        }
    }
    public static class ServiceCollectionExtensions
    {
        public static Microsoft.Extensions.DependencyInjection.IServiceCollection AddBffBlazorClient(this Microsoft.Extensions.DependencyInjection.IServiceCollection services, System.Action<Duende.Bff.Blazor.Client.BffBlazorClientOptions>? configureAction = null) { }
        public static Microsoft.Extensions.DependencyInjection.IHttpClientBuilder AddLocalApiHttpClient(this Microsoft.Extensions.DependencyInjection.IServiceCollection services, string clientName, System.Action<System.Net.Http.HttpClient> configureClient) { }
        public static Microsoft.Extensions.DependencyInjection.IHttpClientBuilder AddLocalApiHttpClient(this Microsoft.Extensions.DependencyInjection.IServiceCollection services, string clientName, System.Action<System.IServiceProvider, System.Net.Http.HttpClient>? configureClient = null) { }
        public static Microsoft.Extensions.DependencyInjection.IHttpClientBuilder AddLocalApiHttpClient<T>(this Microsoft.Extensions.DependencyInjection.IServiceCollection services, System.Action<System.IServiceProvider, System.Net.Http.HttpClient>? configureClient = null)
            where T :  class { }
        public static Microsoft.Extensions.DependencyInjection.IHttpClientBuilder AddRemoteApiHttpClient(this Microsoft.Extensions.DependencyInjection.IServiceCollection services, string clientName, System.Action<System.Net.Http.HttpClient> configureClient) { }
        public static Microsoft.Extensions.DependencyInjection.IHttpClientBuilder AddRemoteApiHttpClient(this Microsoft.Extensions.DependencyInjection.IServiceCollection services, string clientName, System.Action<System.IServiceProvider, System.Net.Http.HttpClient>? configureClient = null) { }
        public static Microsoft.Extensions.DependencyInjection.IHttpClientBuilder AddRemoteApiHttpClient<T>(this Microsoft.Extensions.DependencyInjection.IServiceCollection services, System.Action<System.Net.Http.HttpClient> configureClient)
            where T :  class { }
        public static Microsoft.Extensions.DependencyInjection.IHttpClientBuilder AddRemoteApiHttpClient<T>(this Microsoft.Extensions.DependencyInjection.IServiceCollection services, System.Action<System.IServiceProvider, System.Net.Http.HttpClient>? configureClient = null)
            where T :  class { }
    }
}