//
// Copyright (c) StellaOps. Licensed under the BUSL-1.1.
//
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.DependencyInjection.Extensions;
using StellaOps.AdvisoryAI.Attestation.Storage;
namespace StellaOps.AdvisoryAI.Attestation;
///
/// Extension methods for registering AI attestation services.
/// Sprint: SPRINT_20260109_011_001
///
public static class AiAttestationServiceExtensions
{
///
/// Adds AI attestation services to the service collection.
///
/// The service collection.
/// The service collection for chaining.
public static IServiceCollection AddAiAttestationServices(this IServiceCollection services)
{
services.TryAddSingleton(TimeProvider.System);
services.TryAddSingleton();
services.TryAddSingleton();
return services;
}
///
/// Adds AI attestation services with a custom time provider.
///
/// The service collection.
/// The time provider to use.
/// The service collection for chaining.
public static IServiceCollection AddAiAttestationServices(
this IServiceCollection services,
TimeProvider timeProvider)
{
services.AddSingleton(timeProvider);
services.TryAddSingleton();
services.TryAddSingleton();
return services;
}
///
/// Adds in-memory attestation storage. Useful for testing and development.
///
/// The service collection.
/// The service collection for chaining.
public static IServiceCollection AddInMemoryAiAttestationStore(this IServiceCollection services)
{
services.TryAddSingleton();
return services;
}
}