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

/**
 * Запуск OAuth-сценария привязки удалённого хранилища для конкретного [CloudBrand].
 *
 * Реализация в `:app` (привязана к Activity). Слой presentation вызывает [beginLink]
 * из контекста Compose-экрана и получает [VaultLinkOutcome] асинхронно.
 *
 * Намеренно императивный API через колбэк, чтобы корректно встроиться
 * в `ActivityResultLauncher` Yandex Auth SDK без удержания Activity синглтоном.
 */
fun interface RemoteVaultAuthenticator {
    /**
     * Начать сценарий линка для бренда [brand].
     *
     * Если бренд не поддерживается — реализация должна синхронно вызвать
     * `onResult(VaultLinkOutcome.Failed(...))`, не бросая исключение.
     */
    fun beginLink(brand: CloudBrand, onResult: (VaultLinkOutcome) -> Unit)
}
