using System.Threading;
using System.Threading.Tasks;
using MCPForUnity.Editor.Services.AssetGen.Http;
namespace MCPForUnity.Editor.Services.AssetGen.Providers
{
///
/// A generative 3D model provider (Tripo, Meshy, ...). Submit mints a provider-side
/// job id; poll reports progress and, on success, the download URL. The api key is passed in
/// at call time and never cached on the adapter.
///
public interface IModelProviderAdapter
{
string Id { get; }
Task SubmitAsync(ModelGenRequest req, string apiKey, IHttpTransport http, CancellationToken ct);
Task PollAsync(string providerJobId, string apiKey, IHttpTransport http, CancellationToken ct);
}
/// A generative 2D image provider (fal, OpenRouter, ...). Phase 7.
public interface IImageProviderAdapter
{
string Id { get; }
Task SubmitAsync(ImageGenRequest req, string apiKey, IHttpTransport http, CancellationToken ct);
Task PollAsync(string providerJobId, string apiKey, IHttpTransport http, CancellationToken ct);
}
/// A 3D marketplace provider (Sketchfab, ...). Search/preview/resolve, not generative. Phase 6.
public interface IMarketplaceProviderAdapter
{
string Id { get; }
Task SearchAsync(string query, string categories, bool downloadable, int? count, string cursor, string apiKey, IHttpTransport http, CancellationToken ct);
Task PreviewAsync(string uid, string apiKey, IHttpTransport http, CancellationToken ct);
Task ResolveDownloadUrlAsync(string uid, string apiKey, IHttpTransport http, CancellationToken ct);
}
}