using TarninaHub.Application.Dtos; namespace TarninaHub.Application.Abstractions; public interface IIdeaService { Task CreateAsync(string authorId, CreateIdeaRequest request, CancellationToken cancellationToken); Task GetAsync(string ideaId, CancellationToken cancellationToken); Task> ListForAuthorAsync(string authorId, CancellationToken cancellationToken); Task UpdateAsync(string ideaId, UpdateIdeaRequest request, CancellationToken cancellationToken); Task GetCardAsync(string ideaId, CancellationToken cancellationToken); Task UpdateCardAsync(string ideaId, IdeaCardRequest request, CancellationToken cancellationToken); } public interface IIdeaAssistant { Task AssistAsync( string ideaId, IdeaAssistRequest request, CancellationToken cancellationToken); } public interface IGrantCallService { Task> ListAsync(string? status, CancellationToken cancellationToken); Task GetAsync(string grantCallId, CancellationToken cancellationToken); } public enum CreateApplicationOutcome { Created, CallNotFound, CallNotOpen, IdeaNotFound, } public sealed record CreateApplicationResult( CreateApplicationOutcome Outcome, ApplicationResponse? Application); public interface IApplicationService { Task CreateAsync( string userId, CreateApplicationRequest request, CancellationToken cancellationToken); Task GetAsync(string applicationId, CancellationToken cancellationToken); Task> ListForAuthorAsync( string authorId, CancellationToken cancellationToken); }