1 package com.android.onboarding.contracts 2 3 import android.content.Intent 4 import androidx.activity.result.ActivityResult 5 import com.android.onboarding.contracts.annotations.InternalOnboardingApi 6 7 /** An [ActivityNodeResult] used by lightweight Activity node contracts. */ 8 sealed interface ContractResult : ActivityNodeResult { 9 val resultCode: Int 10 val intent: Intent? 11 toActivityResultnull12 override fun toActivityResult() = ActivityResult(resultCode, intent) 13 14 data class Success 15 @JvmOverloads 16 constructor(override val resultCode: Int, override val intent: Intent? = null) : 17 ContractResult, NodeResult.Success 18 19 data class Failure 20 @JvmOverloads 21 constructor( 22 override val resultCode: Int, 23 override val intent: Intent? = null, 24 val reason: String? = null, 25 ) : ContractResult, NodeResult.Failure 26 } 27 28 @InternalOnboardingApi 29 data class UnknownContractResult( 30 override val resultCode: Int, 31 override val intent: Intent? = null, 32 ) : ContractResult, NodeResult.Success 33