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); } }