using Nexus.Api.Models;

namespace Nexus.Api.Services;

public interface IOpenClawSetupService
{
    Task<OpenClawSetupStatusDto> GetStatusAsync(
        CancellationToken cancellationToken = default);

    Task<OpenClawDiscoveryDto> DiscoverAsync(
        OpenClawDiscoveryRequest request,
        CancellationToken cancellationToken = default);

    Task<OpenClawSetupOperationDto<OpenClawProbeDto>> ProbeAsync(
        ProbeOpenClawRequest request,
        CancellationToken cancellationToken = default);

    Task<OpenClawSetupOperationDto<OpenClawSetupStatusDto>> AttachAsync(
        AttachOpenClawRequest request,
        CancellationToken cancellationToken = default);

    Task<OpenClawSetupOperationDto<OpenClawSetupStatusDto>> VerifyAsync(
        VerifyOpenClawRequest request,
        CancellationToken cancellationToken = default);

    Task<OpenClawSetupOperationDto<OpenClawAdoptionInventoryDto>> AdoptAsync(
        AdoptOpenClawRequest request,
        CancellationToken cancellationToken = default);

    Task<OpenClawSetupOperationDto<OpenClawSetupStatusDto>> SetManagementAsync(
        SetOpenClawManagementRequest request,
        CancellationToken cancellationToken = default);

    Task<OpenClawSetupOperationDto<OpenClawSetupStatusDto>> DeleteAsync(
        DeleteOpenClawConnectionRequest request,
        CancellationToken cancellationToken = default);
}
