using System.Collections.Generic;
using System.Threading;
using System.Threading.Tasks;

using AIRuntime.Runtime.Models;
using AIRuntime.Runtime.Providers.Models;


namespace AIRuntime.Runtime.Providers
{
    /// <summary>
    /// Optional enhanced provider contract supporting
    /// per-request generation settings.
    ///
    /// Providers that do not implement this interface
    /// continue using the original IProvider contract.
    /// </summary>
    public interface IProviderWithRequestOptions :
        IProvider
    {
        Task<ChatCompletion> ChatAsync(
            IReadOnlyList<ConversationMessage> messages,
            IReadOnlyList<ProviderTool> tools,
            ProviderRequestOptions options,
            CancellationToken cancellationToken = default);
    }
}