using System;
using System.Collections.ObjectModel;
using System.Security.Cryptography;

using Grpc.Core;
using Grpc.Core.Interceptors;

using Microsoft.Extensions.Logging;

namespace FrostFS.SDK.Client;

[System.Diagnostics.CodeAnalysis.SuppressMessage("Performance", "CA1815:Override equals and operator equals on value types", Justification = "<Pending>")]
public struct WrapperPrm
{
    internal ILogger? Logger { get; set; }

    internal string Address { get; set; }

    internal ECDsa Key { get; set; }

    internal ulong DialTimeout { get; set; }

    internal ulong StreamTimeout { get; set; }

    internal uint ErrorThreshold { get; set; }

    internal Action ResponseInfoCallback { get; set; }

    internal Action PoolRequestInfoCallback { get; set; }

    internal Func<string, ChannelBase> GrpcChannelFactory { get; set; }

    internal ulong GracefulCloseOnSwitchTimeout { get; set; }

    internal Action<CallStatistics>? Callback { get; set; }

    internal Collection<Interceptor>? Interceptors { get; set; }
}