using System.Text.Json.Nodes;

namespace Nexus.Api.Models;

public sealed record StartOpenClawWizardRequest(
    string Mode = "local",
    bool Confirmed = false);

public sealed record AdvanceOpenClawWizardRequest(
    string SessionId,
    string? StepId = null,
    JsonNode? Value = null,
    bool HasAnswer = true);

public sealed record OpenClawWizardOptionDto(
    JsonNode? Value,
    string Label,
    string? Hint);

public sealed record OpenClawWizardDeviceCodeDto(
    string Code,
    int? ExpiresInMinutes,
    string? Message);

public sealed record OpenClawWizardStepDto(
    string Id,
    string Type,
    string? Title,
    string? Message,
    IReadOnlyList<OpenClawWizardOptionDto> Options,
    JsonNode? InitialValue,
    string? Placeholder,
    bool Sensitive,
    string? Executor,
    string? ExternalUrl,
    OpenClawWizardDeviceCodeDto? DeviceCode,
    bool CanAnswer,
    string? BlockedReason);

public sealed record OpenClawWizardResultDto(
    bool Ok,
    string State,
    string Message,
    string? SessionId,
    bool Done,
    string? Status,
    string? Error,
    OpenClawWizardStepDto? Step,
    string? Recovery,
    DateTimeOffset CompletedAt);
