package com.github.nullptroma.wallenc.vault.contract

/**
 * Результат сценария OAuth-линка нового удалённого хранилища.
 *
 * Слой presentation сводит это к: успех → отдать `registration` в [VaultRegistrar.register];
 * cancel → ничего не делать; failure → показать сообщение.
 */
sealed interface VaultLinkOutcome {
    /** Пользователь успешно вошёл; в [registration] лежат данные для регистрации. */
    data class Success(val registration: VaultRegistration) : VaultLinkOutcome

    /** Пользователь отменил вход. */
    data object Cancelled : VaultLinkOutcome

    /** Ошибка SDK/сети/сервера; [reason] маппится в UI через [VaultLinkFailure]. */
    data class Failed(val reason: VaultLinkFailure) : VaultLinkOutcome
}
