using System;
using System.Threading;
using System.Threading.Tasks;
using System.Collections.Generic;
using Microsoft.Extensions.Logging;

namespace {{namespace}};

/// <summary>
/// Interface for {{name}} service operations
/// </summary>
public interface I{{name}}Service
{
{{#each methods}}
    /// <summary>
    /// {{this}} operation
    /// </summary>
    Task<object> {{this}}(CancellationToken cancellationToken = default);

{{/each}}
}

/// <summary>
/// Implementation of {{name}} service
/// </summary>
public class {{name}}Service : I{{name}}Service
{
    private readonly ILogger<{{name}}Service> _logger;

    public {{name}}Service(ILogger<{{name}}Service> logger)
    {
        _logger = logger ?? throw new ArgumentNullException(nameof(logger));
    }

{{#each methods}}
    /// <inheritdoc />
    public async Task<object> {{this}}(CancellationToken cancellationToken = default)
    {
        _logger.LogInformation("Executing {{this}} in {{../name}}Service");

        // TODO: Implement {{this}} logic
        await Task.CompletedTask;

        throw new NotImplementedException("{{this}} is not yet implemented");
    }

{{/each}}
}

// ============================================================================
// Registration (add to DependencyInjection.cs)
// ============================================================================
// services.AddScoped<I{{name}}Service, {{name}}Service>();
