// <auto-generated/>

#nullable disable

using System;
using System.ClientModel;
using System.ClientModel.Primitives;
using System.Diagnostics.CodeAnalysis;
using System.Threading;
using System.Threading.Tasks;

namespace Authentication.Http.Custom
{
    public partial class CustomClient
    {
        private const string AuthorizationHeader = "Authorization";
        private const string AuthorizationApiKeyPrefix = "SharedAccessKey";

        protected CustomClient() => throw null;

        public CustomClient(ApiKeyCredential credential) : this(new Uri("http://localhost:3000"), credential, new CustomClientOptions()) => throw null;

        public CustomClient(ApiKeyCredential credential, CustomClientOptions options) : this(new Uri("http://localhost:3000"), credential, options) => throw null;

        internal CustomClient(AuthenticationPolicy authenticationPolicy, Uri endpoint, CustomClientOptions options) => throw null;

        public CustomClient(Uri endpoint, ApiKeyCredential credential, CustomClientOptions options) : this(ApiKeyAuthenticationPolicy.CreateHeaderApiKeyPolicy(credential, AuthorizationHeader, AuthorizationApiKeyPrefix), endpoint, options) => throw null;

        [Experimental("SCME0002")]
        public CustomClient(CustomClientSettings settings) : this(AuthenticationPolicy.Create(settings), settings?.Endpoint, settings?.Options) => throw null;

        public ClientPipeline Pipeline => throw null;

        public virtual ClientResult Valid(RequestOptions options) => throw null;

        public virtual Task<ClientResult> ValidAsync(RequestOptions options) => throw null;

        public virtual ClientResult Valid(CancellationToken cancellationToken = default) => throw null;

        public virtual Task<ClientResult> ValidAsync(CancellationToken cancellationToken = default) => throw null;

        public virtual ClientResult Invalid(RequestOptions options) => throw null;

        public virtual Task<ClientResult> InvalidAsync(RequestOptions options) => throw null;

        public virtual ClientResult Invalid(CancellationToken cancellationToken = default) => throw null;

        public virtual Task<ClientResult> InvalidAsync(CancellationToken cancellationToken = default) => throw null;
    }
}
