diff --git a/android/README.md b/android/README.md index 92891fb3..00006621 100644 --- a/android/README.md +++ b/android/README.md @@ -55,7 +55,7 @@ your project: ### Gradle ```groovy -implementation "com.shopify:checkout-kit:3.6.0" +implementation "com.shopify:checkout-kit:1.0.0" ``` ### Maven @@ -65,7 +65,7 @@ implementation "com.shopify:checkout-kit:3.6.0" com.shopify checkout-kit - 3.6.0 + 1.0.0 ``` diff --git a/android/dev.yml b/android/dev.yml index d7232daf..5d4fdb5d 100644 --- a/android/dev.yml +++ b/android/dev.yml @@ -49,15 +49,6 @@ commands: desc: Regenerate the baseline after intentional public API changes run: ./gradlew :lib:apiDump - apollo: - subcommands: - download_schema: - desc: "Download GraphQL Schema. Usage: dev apollo download_schema" - run: ./scripts/apollo_download_schema - codegen: - desc: "Generate Apollo Kotlin models. Usage: dev apollo codegen" - run: ./scripts/apollo_codegen - check: license-headers: ./scripts/check_license_headers.rb detekt: ./gradlew detekt diff --git a/android/lib/api/lib.api b/android/lib/api/lib.api index 2cfd5ade..ac85877f 100644 --- a/android/lib/api/lib.api +++ b/android/lib/api/lib.api @@ -1,493 +1,3726 @@ -public final class com/shopify/checkoutkit/BuildConfig { - public static final field BUILD_TYPE Ljava/lang/String; - public static final field DEBUG Z - public static final field LIBRARY_PACKAGE_NAME Ljava/lang/String; - public static final field SDK_VERSION Ljava/lang/String; - public fun ()V +public final class com/shopify/checkoutkit/Adjustment { + public static final field Companion Lcom/shopify/checkoutkit/Adjustment$Companion; + public fun (Ljava/lang/Long;Ljava/lang/String;Ljava/lang/String;Ljava/util/List;Ljava/lang/String;Lcom/shopify/checkoutkit/AdjustmentStatus;Ljava/lang/String;)V + public synthetic fun (Ljava/lang/Long;Ljava/lang/String;Ljava/lang/String;Ljava/util/List;Ljava/lang/String;Lcom/shopify/checkoutkit/AdjustmentStatus;Ljava/lang/String;ILkotlin/jvm/internal/DefaultConstructorMarker;)V + public final fun component1 ()Ljava/lang/Long; + public final fun component2 ()Ljava/lang/String; + public final fun component3 ()Ljava/lang/String; + public final fun component4 ()Ljava/util/List; + public final fun component5 ()Ljava/lang/String; + public final fun component6 ()Lcom/shopify/checkoutkit/AdjustmentStatus; + public final fun component7 ()Ljava/lang/String; + public final fun copy (Ljava/lang/Long;Ljava/lang/String;Ljava/lang/String;Ljava/util/List;Ljava/lang/String;Lcom/shopify/checkoutkit/AdjustmentStatus;Ljava/lang/String;)Lcom/shopify/checkoutkit/Adjustment; + public static synthetic fun copy$default (Lcom/shopify/checkoutkit/Adjustment;Ljava/lang/Long;Ljava/lang/String;Ljava/lang/String;Ljava/util/List;Ljava/lang/String;Lcom/shopify/checkoutkit/AdjustmentStatus;Ljava/lang/String;ILjava/lang/Object;)Lcom/shopify/checkoutkit/Adjustment; + public fun equals (Ljava/lang/Object;)Z + public final fun getAmount ()Ljava/lang/Long; + public final fun getDescription ()Ljava/lang/String; + public final fun getId ()Ljava/lang/String; + public final fun getLineItems ()Ljava/util/List; + public final fun getOccurredAt ()Ljava/lang/String; + public final fun getStatus ()Lcom/shopify/checkoutkit/AdjustmentStatus; + public final fun getType ()Ljava/lang/String; + public fun hashCode ()I + public fun toString ()Ljava/lang/String; } -public abstract interface class com/shopify/checkoutkit/CheckoutEventProcessor { - public abstract fun onCheckoutCanceled ()V - public abstract fun onCheckoutCompleted (Lcom/shopify/checkoutkit/lifecycleevents/CheckoutCompletedEvent;)V - public abstract fun onCheckoutFailed (Lcom/shopify/checkoutkit/CheckoutException;)V - public abstract fun onCheckoutLinkClicked (Landroid/net/Uri;)V - public abstract fun onGeolocationPermissionsHidePrompt ()V - public abstract fun onGeolocationPermissionsShowPrompt (Ljava/lang/String;Landroid/webkit/GeolocationPermissions$Callback;)V - public abstract fun onPermissionRequest (Landroid/webkit/PermissionRequest;)V - public abstract fun onShowFileChooser (Landroid/webkit/WebView;Landroid/webkit/ValueCallback;Landroid/webkit/WebChromeClient$FileChooserParams;)Z - public abstract fun onWebPixelEvent (Lcom/shopify/checkoutkit/pixelevents/PixelEvent;)V +public final class com/shopify/checkoutkit/Adjustment$$serializer : kotlinx/serialization/internal/GeneratedSerializer { + public static final field INSTANCE Lcom/shopify/checkoutkit/Adjustment$$serializer; + public fun childSerializers ()[Lkotlinx/serialization/KSerializer; + public fun deserialize (Lkotlinx/serialization/encoding/Decoder;)Lcom/shopify/checkoutkit/Adjustment; + public synthetic fun deserialize (Lkotlinx/serialization/encoding/Decoder;)Ljava/lang/Object; + public fun getDescriptor ()Lkotlinx/serialization/descriptors/SerialDescriptor; + public fun serialize (Lkotlinx/serialization/encoding/Encoder;Lcom/shopify/checkoutkit/Adjustment;)V + public synthetic fun serialize (Lkotlinx/serialization/encoding/Encoder;Ljava/lang/Object;)V + public fun typeParametersSerializers ()[Lkotlinx/serialization/KSerializer; } -public abstract class com/shopify/checkoutkit/CheckoutException : java/lang/Exception { - public static final field Companion Lcom/shopify/checkoutkit/CheckoutException$Companion; - public synthetic fun (ILjava/lang/String;Ljava/lang/String;ZLkotlinx/serialization/internal/SerializationConstructorMarker;)V - public fun (Ljava/lang/String;Ljava/lang/String;Z)V - public final fun getErrorCode ()Ljava/lang/String; - public final fun getErrorDescription ()Ljava/lang/String; - public final fun isRecoverable ()Z - public static final synthetic fun write$Self (Lcom/shopify/checkoutkit/CheckoutException;Lkotlinx/serialization/encoding/CompositeEncoder;Lkotlinx/serialization/descriptors/SerialDescriptor;)V +public final class com/shopify/checkoutkit/Adjustment$Companion { + public final fun serializer ()Lkotlinx/serialization/KSerializer; } -public final class com/shopify/checkoutkit/CheckoutException$Companion { - public final fun serializer ()Lkotlinx/serialization/KSerializer; +public final class com/shopify/checkoutkit/AdjustmentElement { + public static final field Companion Lcom/shopify/checkoutkit/AdjustmentElement$Companion; + public fun (Ljava/lang/Long;Ljava/lang/String;Ljava/lang/String;Ljava/util/List;Ljava/lang/String;Lcom/shopify/checkoutkit/AdjustmentStatus;Ljava/lang/String;)V + public synthetic fun (Ljava/lang/Long;Ljava/lang/String;Ljava/lang/String;Ljava/util/List;Ljava/lang/String;Lcom/shopify/checkoutkit/AdjustmentStatus;Ljava/lang/String;ILkotlin/jvm/internal/DefaultConstructorMarker;)V + public final fun component1 ()Ljava/lang/Long; + public final fun component2 ()Ljava/lang/String; + public final fun component3 ()Ljava/lang/String; + public final fun component4 ()Ljava/util/List; + public final fun component5 ()Ljava/lang/String; + public final fun component6 ()Lcom/shopify/checkoutkit/AdjustmentStatus; + public final fun component7 ()Ljava/lang/String; + public final fun copy (Ljava/lang/Long;Ljava/lang/String;Ljava/lang/String;Ljava/util/List;Ljava/lang/String;Lcom/shopify/checkoutkit/AdjustmentStatus;Ljava/lang/String;)Lcom/shopify/checkoutkit/AdjustmentElement; + public static synthetic fun copy$default (Lcom/shopify/checkoutkit/AdjustmentElement;Ljava/lang/Long;Ljava/lang/String;Ljava/lang/String;Ljava/util/List;Ljava/lang/String;Lcom/shopify/checkoutkit/AdjustmentStatus;Ljava/lang/String;ILjava/lang/Object;)Lcom/shopify/checkoutkit/AdjustmentElement; + public fun equals (Ljava/lang/Object;)Z + public final fun getAmount ()Ljava/lang/Long; + public final fun getDescription ()Ljava/lang/String; + public final fun getId ()Ljava/lang/String; + public final fun getLineItems ()Ljava/util/List; + public final fun getOccurredAt ()Ljava/lang/String; + public final fun getStatus ()Lcom/shopify/checkoutkit/AdjustmentStatus; + public final fun getType ()Ljava/lang/String; + public fun hashCode ()I + public fun toString ()Ljava/lang/String; } -public final class com/shopify/checkoutkit/CheckoutExpiredException : com/shopify/checkoutkit/CheckoutException { - public static final field CART_COMPLETED Ljava/lang/String; - public static final field CART_EXPIRED Ljava/lang/String; - public static final field Companion Lcom/shopify/checkoutkit/CheckoutExpiredException$Companion; - public static final field INVALID_CART Ljava/lang/String; - public static final field UNKNOWN Ljava/lang/String; - public fun (Ljava/lang/String;Ljava/lang/String;Z)V - public synthetic fun (Ljava/lang/String;Ljava/lang/String;ZILkotlin/jvm/internal/DefaultConstructorMarker;)V - public fun (Ljava/lang/String;Z)V - public fun (Z)V +public final class com/shopify/checkoutkit/AdjustmentElement$$serializer : kotlinx/serialization/internal/GeneratedSerializer { + public static final field INSTANCE Lcom/shopify/checkoutkit/AdjustmentElement$$serializer; + public fun childSerializers ()[Lkotlinx/serialization/KSerializer; + public fun deserialize (Lkotlinx/serialization/encoding/Decoder;)Lcom/shopify/checkoutkit/AdjustmentElement; + public synthetic fun deserialize (Lkotlinx/serialization/encoding/Decoder;)Ljava/lang/Object; + public fun getDescriptor ()Lkotlinx/serialization/descriptors/SerialDescriptor; + public fun serialize (Lkotlinx/serialization/encoding/Encoder;Lcom/shopify/checkoutkit/AdjustmentElement;)V + public synthetic fun serialize (Lkotlinx/serialization/encoding/Encoder;Ljava/lang/Object;)V + public fun typeParametersSerializers ()[Lkotlinx/serialization/KSerializer; } -public final class com/shopify/checkoutkit/CheckoutExpiredException$Companion { +public final class com/shopify/checkoutkit/AdjustmentElement$Companion { + public final fun serializer ()Lkotlinx/serialization/KSerializer; } -public abstract interface class com/shopify/checkoutkit/CheckoutKitDialog { - public abstract fun dismiss ()V +public final class com/shopify/checkoutkit/AdjustmentLineItem { + public static final field Companion Lcom/shopify/checkoutkit/AdjustmentLineItem$Companion; + public fun (Ljava/lang/String;J)V + public final fun component1 ()Ljava/lang/String; + public final fun component2 ()J + public final fun copy (Ljava/lang/String;J)Lcom/shopify/checkoutkit/AdjustmentLineItem; + public static synthetic fun copy$default (Lcom/shopify/checkoutkit/AdjustmentLineItem;Ljava/lang/String;JILjava/lang/Object;)Lcom/shopify/checkoutkit/AdjustmentLineItem; + public fun equals (Ljava/lang/Object;)Z + public final fun getId ()Ljava/lang/String; + public final fun getQuantity ()J + public fun hashCode ()I + public fun toString ()Ljava/lang/String; } -public final class com/shopify/checkoutkit/CheckoutKitException : com/shopify/checkoutkit/CheckoutException { - public static final field Companion Lcom/shopify/checkoutkit/CheckoutKitException$Companion; - public static final field ERROR_RECEIVING_MESSAGE_FROM_CHECKOUT Ljava/lang/String; - public static final field ERROR_SENDING_MESSAGE_TO_CHECKOUT Ljava/lang/String; - public static final field RENDER_PROCESS_GONE Ljava/lang/String; - public static final field UNKNOWN Ljava/lang/String; - public fun (Ljava/lang/String;Ljava/lang/String;Z)V - public synthetic fun (Ljava/lang/String;Ljava/lang/String;ZILkotlin/jvm/internal/DefaultConstructorMarker;)V +public final class com/shopify/checkoutkit/AdjustmentLineItem$$serializer : kotlinx/serialization/internal/GeneratedSerializer { + public static final field INSTANCE Lcom/shopify/checkoutkit/AdjustmentLineItem$$serializer; + public fun childSerializers ()[Lkotlinx/serialization/KSerializer; + public fun deserialize (Lkotlinx/serialization/encoding/Decoder;)Lcom/shopify/checkoutkit/AdjustmentLineItem; + public synthetic fun deserialize (Lkotlinx/serialization/encoding/Decoder;)Ljava/lang/Object; + public fun getDescriptor ()Lkotlinx/serialization/descriptors/SerialDescriptor; + public fun serialize (Lkotlinx/serialization/encoding/Encoder;Lcom/shopify/checkoutkit/AdjustmentLineItem;)V + public synthetic fun serialize (Lkotlinx/serialization/encoding/Encoder;Ljava/lang/Object;)V + public fun typeParametersSerializers ()[Lkotlinx/serialization/KSerializer; } -public final class com/shopify/checkoutkit/CheckoutKitException$Companion { +public final class com/shopify/checkoutkit/AdjustmentLineItem$Companion { + public final fun serializer ()Lkotlinx/serialization/KSerializer; } -public class com/shopify/checkoutkit/CheckoutUnavailableException : com/shopify/checkoutkit/CheckoutException { - public static final field CLIENT_ERROR Ljava/lang/String; - public static final field Companion Lcom/shopify/checkoutkit/CheckoutUnavailableException$Companion; - public static final field HTTP_ERROR Ljava/lang/String; - public static final field UNKNOWN Ljava/lang/String; - public fun (Ljava/lang/String;Ljava/lang/String;Z)V - public synthetic fun (Ljava/lang/String;Ljava/lang/String;ZILkotlin/jvm/internal/DefaultConstructorMarker;)V - public fun (Ljava/lang/String;Z)V - public fun (Z)V +public final class com/shopify/checkoutkit/AdjustmentLineItemClass { + public static final field Companion Lcom/shopify/checkoutkit/AdjustmentLineItemClass$Companion; + public fun (Ljava/lang/String;J)V + public final fun component1 ()Ljava/lang/String; + public final fun component2 ()J + public final fun copy (Ljava/lang/String;J)Lcom/shopify/checkoutkit/AdjustmentLineItemClass; + public static synthetic fun copy$default (Lcom/shopify/checkoutkit/AdjustmentLineItemClass;Ljava/lang/String;JILjava/lang/Object;)Lcom/shopify/checkoutkit/AdjustmentLineItemClass; + public fun equals (Ljava/lang/Object;)Z + public final fun getId ()Ljava/lang/String; + public final fun getQuantity ()J + public fun hashCode ()I + public fun toString ()Ljava/lang/String; } -public final class com/shopify/checkoutkit/CheckoutUnavailableException$Companion { +public final class com/shopify/checkoutkit/AdjustmentLineItemClass$$serializer : kotlinx/serialization/internal/GeneratedSerializer { + public static final field INSTANCE Lcom/shopify/checkoutkit/AdjustmentLineItemClass$$serializer; + public fun childSerializers ()[Lkotlinx/serialization/KSerializer; + public fun deserialize (Lkotlinx/serialization/encoding/Decoder;)Lcom/shopify/checkoutkit/AdjustmentLineItemClass; + public synthetic fun deserialize (Lkotlinx/serialization/encoding/Decoder;)Ljava/lang/Object; + public fun getDescriptor ()Lkotlinx/serialization/descriptors/SerialDescriptor; + public fun serialize (Lkotlinx/serialization/encoding/Encoder;Lcom/shopify/checkoutkit/AdjustmentLineItemClass;)V + public synthetic fun serialize (Lkotlinx/serialization/encoding/Encoder;Ljava/lang/Object;)V + public fun typeParametersSerializers ()[Lkotlinx/serialization/KSerializer; } -public final class com/shopify/checkoutkit/ClientException : com/shopify/checkoutkit/CheckoutUnavailableException { - public fun (Ljava/lang/String;Z)V - public synthetic fun (Ljava/lang/String;ZILkotlin/jvm/internal/DefaultConstructorMarker;)V - public fun (Z)V +public final class com/shopify/checkoutkit/AdjustmentLineItemClass$Companion { + public final fun serializer ()Lkotlinx/serialization/KSerializer; } -public abstract class com/shopify/checkoutkit/Color { - public static final field Companion Lcom/shopify/checkoutkit/Color$Companion; - public synthetic fun (ILkotlinx/serialization/internal/SerializationConstructorMarker;)V - public final fun getValue (Landroid/content/Context;)I - public static final synthetic fun write$Self (Lcom/shopify/checkoutkit/Color;Lkotlinx/serialization/encoding/CompositeEncoder;Lkotlinx/serialization/descriptors/SerialDescriptor;)V +public final class com/shopify/checkoutkit/AdjustmentStatus : java/lang/Enum { + public static final field Companion Lcom/shopify/checkoutkit/AdjustmentStatus$Companion; + public static final field Completed Lcom/shopify/checkoutkit/AdjustmentStatus; + public static final field Failed Lcom/shopify/checkoutkit/AdjustmentStatus; + public static final field Pending Lcom/shopify/checkoutkit/AdjustmentStatus; + public static fun getEntries ()Lkotlin/enums/EnumEntries; + public final fun getValue ()Ljava/lang/String; + public static fun valueOf (Ljava/lang/String;)Lcom/shopify/checkoutkit/AdjustmentStatus; + public static fun values ()[Lcom/shopify/checkoutkit/AdjustmentStatus; } -public final class com/shopify/checkoutkit/Color$Companion { +public final class com/shopify/checkoutkit/AdjustmentStatus$Companion { public final fun serializer ()Lkotlinx/serialization/KSerializer; } -public final class com/shopify/checkoutkit/Color$ResourceId : com/shopify/checkoutkit/Color { - public static final field Companion Lcom/shopify/checkoutkit/Color$ResourceId$Companion; - public fun (I)V - public final fun component1 ()I - public final fun copy (I)Lcom/shopify/checkoutkit/Color$ResourceId; - public static synthetic fun copy$default (Lcom/shopify/checkoutkit/Color$ResourceId;IILjava/lang/Object;)Lcom/shopify/checkoutkit/Color$ResourceId; +public final class com/shopify/checkoutkit/AvailableMethodElement { + public static final field Companion Lcom/shopify/checkoutkit/AvailableMethodElement$Companion; + public fun (Ljava/lang/String;Ljava/lang/String;Ljava/util/List;Lcom/shopify/checkoutkit/TypeElement;)V + public synthetic fun (Ljava/lang/String;Ljava/lang/String;Ljava/util/List;Lcom/shopify/checkoutkit/TypeElement;ILkotlin/jvm/internal/DefaultConstructorMarker;)V + public final fun component1 ()Ljava/lang/String; + public final fun component2 ()Ljava/lang/String; + public final fun component3 ()Ljava/util/List; + public final fun component4 ()Lcom/shopify/checkoutkit/TypeElement; + public final fun copy (Ljava/lang/String;Ljava/lang/String;Ljava/util/List;Lcom/shopify/checkoutkit/TypeElement;)Lcom/shopify/checkoutkit/AvailableMethodElement; + public static synthetic fun copy$default (Lcom/shopify/checkoutkit/AvailableMethodElement;Ljava/lang/String;Ljava/lang/String;Ljava/util/List;Lcom/shopify/checkoutkit/TypeElement;ILjava/lang/Object;)Lcom/shopify/checkoutkit/AvailableMethodElement; public fun equals (Ljava/lang/Object;)Z - public final fun getId ()I + public final fun getDescription ()Ljava/lang/String; + public final fun getFulfillableOn ()Ljava/lang/String; + public final fun getLineItemIDS ()Ljava/util/List; + public final fun getType ()Lcom/shopify/checkoutkit/TypeElement; public fun hashCode ()I public fun toString ()Ljava/lang/String; } -public final class com/shopify/checkoutkit/Color$ResourceId$$serializer : kotlinx/serialization/internal/GeneratedSerializer { - public static final field INSTANCE Lcom/shopify/checkoutkit/Color$ResourceId$$serializer; +public final class com/shopify/checkoutkit/AvailableMethodElement$$serializer : kotlinx/serialization/internal/GeneratedSerializer { + public static final field INSTANCE Lcom/shopify/checkoutkit/AvailableMethodElement$$serializer; public fun childSerializers ()[Lkotlinx/serialization/KSerializer; - public fun deserialize (Lkotlinx/serialization/encoding/Decoder;)Lcom/shopify/checkoutkit/Color$ResourceId; + public fun deserialize (Lkotlinx/serialization/encoding/Decoder;)Lcom/shopify/checkoutkit/AvailableMethodElement; public synthetic fun deserialize (Lkotlinx/serialization/encoding/Decoder;)Ljava/lang/Object; public fun getDescriptor ()Lkotlinx/serialization/descriptors/SerialDescriptor; - public fun serialize (Lkotlinx/serialization/encoding/Encoder;Lcom/shopify/checkoutkit/Color$ResourceId;)V + public fun serialize (Lkotlinx/serialization/encoding/Encoder;Lcom/shopify/checkoutkit/AvailableMethodElement;)V public synthetic fun serialize (Lkotlinx/serialization/encoding/Encoder;Ljava/lang/Object;)V public fun typeParametersSerializers ()[Lkotlinx/serialization/KSerializer; } -public final class com/shopify/checkoutkit/Color$ResourceId$Companion { +public final class com/shopify/checkoutkit/AvailableMethodElement$Companion { public final fun serializer ()Lkotlinx/serialization/KSerializer; } -public final class com/shopify/checkoutkit/Color$SRGB : com/shopify/checkoutkit/Color { - public static final field Companion Lcom/shopify/checkoutkit/Color$SRGB$Companion; - public fun (I)V - public final fun component1 ()I - public final fun copy (I)Lcom/shopify/checkoutkit/Color$SRGB; - public static synthetic fun copy$default (Lcom/shopify/checkoutkit/Color$SRGB;IILjava/lang/Object;)Lcom/shopify/checkoutkit/Color$SRGB; +public final class com/shopify/checkoutkit/BillingAddressClass { + public static final field Companion Lcom/shopify/checkoutkit/BillingAddressClass$Companion; + public fun ()V + public fun (Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)V + public synthetic fun (Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;ILkotlin/jvm/internal/DefaultConstructorMarker;)V + public final fun component1 ()Ljava/lang/String; + public final fun component2 ()Ljava/lang/String; + public final fun component3 ()Ljava/lang/String; + public final fun component4 ()Ljava/lang/String; + public final fun component5 ()Ljava/lang/String; + public final fun component6 ()Ljava/lang/String; + public final fun component7 ()Ljava/lang/String; + public final fun component8 ()Ljava/lang/String; + public final fun component9 ()Ljava/lang/String; + public final fun copy (Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)Lcom/shopify/checkoutkit/BillingAddressClass; + public static synthetic fun copy$default (Lcom/shopify/checkoutkit/BillingAddressClass;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;ILjava/lang/Object;)Lcom/shopify/checkoutkit/BillingAddressClass; public fun equals (Ljava/lang/Object;)Z - public final fun getSRGB ()I + public final fun getAddressCountry ()Ljava/lang/String; + public final fun getAddressLocality ()Ljava/lang/String; + public final fun getAddressRegion ()Ljava/lang/String; + public final fun getExtendedAddress ()Ljava/lang/String; + public final fun getFirstName ()Ljava/lang/String; + public final fun getLastName ()Ljava/lang/String; + public final fun getPhoneNumber ()Ljava/lang/String; + public final fun getPostalCode ()Ljava/lang/String; + public final fun getStreetAddress ()Ljava/lang/String; public fun hashCode ()I public fun toString ()Ljava/lang/String; } -public final class com/shopify/checkoutkit/Color$SRGB$$serializer : kotlinx/serialization/internal/GeneratedSerializer { - public static final field INSTANCE Lcom/shopify/checkoutkit/Color$SRGB$$serializer; +public final class com/shopify/checkoutkit/BillingAddressClass$$serializer : kotlinx/serialization/internal/GeneratedSerializer { + public static final field INSTANCE Lcom/shopify/checkoutkit/BillingAddressClass$$serializer; public fun childSerializers ()[Lkotlinx/serialization/KSerializer; - public fun deserialize (Lkotlinx/serialization/encoding/Decoder;)Lcom/shopify/checkoutkit/Color$SRGB; + public fun deserialize (Lkotlinx/serialization/encoding/Decoder;)Lcom/shopify/checkoutkit/BillingAddressClass; public synthetic fun deserialize (Lkotlinx/serialization/encoding/Decoder;)Ljava/lang/Object; public fun getDescriptor ()Lkotlinx/serialization/descriptors/SerialDescriptor; - public fun serialize (Lkotlinx/serialization/encoding/Encoder;Lcom/shopify/checkoutkit/Color$SRGB;)V + public fun serialize (Lkotlinx/serialization/encoding/Encoder;Lcom/shopify/checkoutkit/BillingAddressClass;)V public synthetic fun serialize (Lkotlinx/serialization/encoding/Encoder;Ljava/lang/Object;)V public fun typeParametersSerializers ()[Lkotlinx/serialization/KSerializer; } -public final class com/shopify/checkoutkit/Color$SRGB$Companion { +public final class com/shopify/checkoutkit/BillingAddressClass$Companion { public final fun serializer ()Lkotlinx/serialization/KSerializer; } -public abstract class com/shopify/checkoutkit/ColorScheme { - public static final field Companion Lcom/shopify/checkoutkit/ColorScheme$Companion; - public synthetic fun (ILjava/lang/String;Lkotlinx/serialization/internal/SerializationConstructorMarker;)V - public synthetic fun (Ljava/lang/String;Lkotlin/jvm/internal/DefaultConstructorMarker;)V - public final fun customize (Lkotlin/jvm/functions/Function1;)Lcom/shopify/checkoutkit/ColorScheme; - public final fun customize (Lkotlin/jvm/functions/Function1;Lkotlin/jvm/functions/Function1;)Lcom/shopify/checkoutkit/ColorScheme; - public final fun getId ()Ljava/lang/String; - public static final synthetic fun write$Self (Lcom/shopify/checkoutkit/ColorScheme;Lkotlinx/serialization/encoding/CompositeEncoder;Lkotlinx/serialization/descriptors/SerialDescriptor;)V +public final class com/shopify/checkoutkit/BuildConfig { + public static final field BUILD_TYPE Ljava/lang/String; + public static final field DEBUG Z + public static final field LIBRARY_PACKAGE_NAME Ljava/lang/String; + public static final field SDK_VERSION Ljava/lang/String; + public fun ()V } -public final class com/shopify/checkoutkit/ColorScheme$Automatic : com/shopify/checkoutkit/ColorScheme { - public static final field Companion Lcom/shopify/checkoutkit/ColorScheme$Automatic$Companion; +public final class com/shopify/checkoutkit/BusinessFulfillmentConfig { + public static final field Companion Lcom/shopify/checkoutkit/BusinessFulfillmentConfig$Companion; public fun ()V - public fun (Lcom/shopify/checkoutkit/Colors;Lcom/shopify/checkoutkit/Colors;)V - public synthetic fun (Lcom/shopify/checkoutkit/Colors;Lcom/shopify/checkoutkit/Colors;ILkotlin/jvm/internal/DefaultConstructorMarker;)V - public final fun component1 ()Lcom/shopify/checkoutkit/Colors; - public final fun component2 ()Lcom/shopify/checkoutkit/Colors; - public final fun copy (Lcom/shopify/checkoutkit/Colors;Lcom/shopify/checkoutkit/Colors;)Lcom/shopify/checkoutkit/ColorScheme$Automatic; - public static synthetic fun copy$default (Lcom/shopify/checkoutkit/ColorScheme$Automatic;Lcom/shopify/checkoutkit/Colors;Lcom/shopify/checkoutkit/Colors;ILjava/lang/Object;)Lcom/shopify/checkoutkit/ColorScheme$Automatic; + public fun (Ljava/util/List;Lcom/shopify/checkoutkit/BusinessFulfillmentConfigAllowsMultiDestination;)V + public synthetic fun (Ljava/util/List;Lcom/shopify/checkoutkit/BusinessFulfillmentConfigAllowsMultiDestination;ILkotlin/jvm/internal/DefaultConstructorMarker;)V + public final fun component1 ()Ljava/util/List; + public final fun component2 ()Lcom/shopify/checkoutkit/BusinessFulfillmentConfigAllowsMultiDestination; + public final fun copy (Ljava/util/List;Lcom/shopify/checkoutkit/BusinessFulfillmentConfigAllowsMultiDestination;)Lcom/shopify/checkoutkit/BusinessFulfillmentConfig; + public static synthetic fun copy$default (Lcom/shopify/checkoutkit/BusinessFulfillmentConfig;Ljava/util/List;Lcom/shopify/checkoutkit/BusinessFulfillmentConfigAllowsMultiDestination;ILjava/lang/Object;)Lcom/shopify/checkoutkit/BusinessFulfillmentConfig; public fun equals (Ljava/lang/Object;)Z - public final fun getDarkColors ()Lcom/shopify/checkoutkit/Colors; - public final fun getLightColors ()Lcom/shopify/checkoutkit/Colors; + public final fun getAllowsMethodCombinations ()Ljava/util/List; + public final fun getAllowsMultiDestination ()Lcom/shopify/checkoutkit/BusinessFulfillmentConfigAllowsMultiDestination; public fun hashCode ()I - public final fun setDarkColors (Lcom/shopify/checkoutkit/Colors;)V - public final fun setLightColors (Lcom/shopify/checkoutkit/Colors;)V public fun toString ()Ljava/lang/String; } -public final class com/shopify/checkoutkit/ColorScheme$Automatic$$serializer : kotlinx/serialization/internal/GeneratedSerializer { - public static final field INSTANCE Lcom/shopify/checkoutkit/ColorScheme$Automatic$$serializer; +public final class com/shopify/checkoutkit/BusinessFulfillmentConfig$$serializer : kotlinx/serialization/internal/GeneratedSerializer { + public static final field INSTANCE Lcom/shopify/checkoutkit/BusinessFulfillmentConfig$$serializer; public fun childSerializers ()[Lkotlinx/serialization/KSerializer; - public fun deserialize (Lkotlinx/serialization/encoding/Decoder;)Lcom/shopify/checkoutkit/ColorScheme$Automatic; + public fun deserialize (Lkotlinx/serialization/encoding/Decoder;)Lcom/shopify/checkoutkit/BusinessFulfillmentConfig; public synthetic fun deserialize (Lkotlinx/serialization/encoding/Decoder;)Ljava/lang/Object; public fun getDescriptor ()Lkotlinx/serialization/descriptors/SerialDescriptor; - public fun serialize (Lkotlinx/serialization/encoding/Encoder;Lcom/shopify/checkoutkit/ColorScheme$Automatic;)V + public fun serialize (Lkotlinx/serialization/encoding/Encoder;Lcom/shopify/checkoutkit/BusinessFulfillmentConfig;)V public synthetic fun serialize (Lkotlinx/serialization/encoding/Encoder;Ljava/lang/Object;)V public fun typeParametersSerializers ()[Lkotlinx/serialization/KSerializer; } -public final class com/shopify/checkoutkit/ColorScheme$Automatic$Companion { - public final fun serializer ()Lkotlinx/serialization/KSerializer; -} - -public final class com/shopify/checkoutkit/ColorScheme$Companion { +public final class com/shopify/checkoutkit/BusinessFulfillmentConfig$Companion { public final fun serializer ()Lkotlinx/serialization/KSerializer; } -public final class com/shopify/checkoutkit/ColorScheme$Dark : com/shopify/checkoutkit/ColorScheme { - public static final field Companion Lcom/shopify/checkoutkit/ColorScheme$Dark$Companion; +public final class com/shopify/checkoutkit/BusinessFulfillmentConfigAllowsMultiDestination { + public static final field Companion Lcom/shopify/checkoutkit/BusinessFulfillmentConfigAllowsMultiDestination$Companion; public fun ()V - public fun (Lcom/shopify/checkoutkit/Colors;)V - public synthetic fun (Lcom/shopify/checkoutkit/Colors;ILkotlin/jvm/internal/DefaultConstructorMarker;)V - public final fun component1 ()Lcom/shopify/checkoutkit/Colors; - public final fun copy (Lcom/shopify/checkoutkit/Colors;)Lcom/shopify/checkoutkit/ColorScheme$Dark; - public static synthetic fun copy$default (Lcom/shopify/checkoutkit/ColorScheme$Dark;Lcom/shopify/checkoutkit/Colors;ILjava/lang/Object;)Lcom/shopify/checkoutkit/ColorScheme$Dark; + public fun (Ljava/lang/Boolean;Ljava/lang/Boolean;)V + public synthetic fun (Ljava/lang/Boolean;Ljava/lang/Boolean;ILkotlin/jvm/internal/DefaultConstructorMarker;)V + public final fun component1 ()Ljava/lang/Boolean; + public final fun component2 ()Ljava/lang/Boolean; + public final fun copy (Ljava/lang/Boolean;Ljava/lang/Boolean;)Lcom/shopify/checkoutkit/BusinessFulfillmentConfigAllowsMultiDestination; + public static synthetic fun copy$default (Lcom/shopify/checkoutkit/BusinessFulfillmentConfigAllowsMultiDestination;Ljava/lang/Boolean;Ljava/lang/Boolean;ILjava/lang/Object;)Lcom/shopify/checkoutkit/BusinessFulfillmentConfigAllowsMultiDestination; public fun equals (Ljava/lang/Object;)Z - public final fun getColors ()Lcom/shopify/checkoutkit/Colors; + public final fun getPickup ()Ljava/lang/Boolean; + public final fun getShipping ()Ljava/lang/Boolean; public fun hashCode ()I - public final fun setColors (Lcom/shopify/checkoutkit/Colors;)V public fun toString ()Ljava/lang/String; } -public final class com/shopify/checkoutkit/ColorScheme$Dark$$serializer : kotlinx/serialization/internal/GeneratedSerializer { - public static final field INSTANCE Lcom/shopify/checkoutkit/ColorScheme$Dark$$serializer; +public final class com/shopify/checkoutkit/BusinessFulfillmentConfigAllowsMultiDestination$$serializer : kotlinx/serialization/internal/GeneratedSerializer { + public static final field INSTANCE Lcom/shopify/checkoutkit/BusinessFulfillmentConfigAllowsMultiDestination$$serializer; public fun childSerializers ()[Lkotlinx/serialization/KSerializer; - public fun deserialize (Lkotlinx/serialization/encoding/Decoder;)Lcom/shopify/checkoutkit/ColorScheme$Dark; + public fun deserialize (Lkotlinx/serialization/encoding/Decoder;)Lcom/shopify/checkoutkit/BusinessFulfillmentConfigAllowsMultiDestination; public synthetic fun deserialize (Lkotlinx/serialization/encoding/Decoder;)Ljava/lang/Object; public fun getDescriptor ()Lkotlinx/serialization/descriptors/SerialDescriptor; - public fun serialize (Lkotlinx/serialization/encoding/Encoder;Lcom/shopify/checkoutkit/ColorScheme$Dark;)V + public fun serialize (Lkotlinx/serialization/encoding/Encoder;Lcom/shopify/checkoutkit/BusinessFulfillmentConfigAllowsMultiDestination;)V public synthetic fun serialize (Lkotlinx/serialization/encoding/Encoder;Ljava/lang/Object;)V public fun typeParametersSerializers ()[Lkotlinx/serialization/KSerializer; } -public final class com/shopify/checkoutkit/ColorScheme$Dark$Companion { +public final class com/shopify/checkoutkit/BusinessFulfillmentConfigAllowsMultiDestination$Companion { public final fun serializer ()Lkotlinx/serialization/KSerializer; } -public final class com/shopify/checkoutkit/ColorScheme$Light : com/shopify/checkoutkit/ColorScheme { - public static final field Companion Lcom/shopify/checkoutkit/ColorScheme$Light$Companion; +public final class com/shopify/checkoutkit/Buyer { + public static final field Companion Lcom/shopify/checkoutkit/Buyer$Companion; public fun ()V - public fun (Lcom/shopify/checkoutkit/Colors;)V - public synthetic fun (Lcom/shopify/checkoutkit/Colors;ILkotlin/jvm/internal/DefaultConstructorMarker;)V - public final fun component1 ()Lcom/shopify/checkoutkit/Colors; - public final fun copy (Lcom/shopify/checkoutkit/Colors;)Lcom/shopify/checkoutkit/ColorScheme$Light; - public static synthetic fun copy$default (Lcom/shopify/checkoutkit/ColorScheme$Light;Lcom/shopify/checkoutkit/Colors;ILjava/lang/Object;)Lcom/shopify/checkoutkit/ColorScheme$Light; + public fun (Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)V + public synthetic fun (Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;ILkotlin/jvm/internal/DefaultConstructorMarker;)V + public final fun component1 ()Ljava/lang/String; + public final fun component2 ()Ljava/lang/String; + public final fun component3 ()Ljava/lang/String; + public final fun component4 ()Ljava/lang/String; + public final fun copy (Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)Lcom/shopify/checkoutkit/Buyer; + public static synthetic fun copy$default (Lcom/shopify/checkoutkit/Buyer;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;ILjava/lang/Object;)Lcom/shopify/checkoutkit/Buyer; public fun equals (Ljava/lang/Object;)Z - public final fun getColors ()Lcom/shopify/checkoutkit/Colors; + public final fun getEmail ()Ljava/lang/String; + public final fun getFirstName ()Ljava/lang/String; + public final fun getLastName ()Ljava/lang/String; + public final fun getPhoneNumber ()Ljava/lang/String; public fun hashCode ()I - public final fun setColors (Lcom/shopify/checkoutkit/Colors;)V public fun toString ()Ljava/lang/String; } -public final class com/shopify/checkoutkit/ColorScheme$Light$$serializer : kotlinx/serialization/internal/GeneratedSerializer { - public static final field INSTANCE Lcom/shopify/checkoutkit/ColorScheme$Light$$serializer; +public final class com/shopify/checkoutkit/Buyer$$serializer : kotlinx/serialization/internal/GeneratedSerializer { + public static final field INSTANCE Lcom/shopify/checkoutkit/Buyer$$serializer; public fun childSerializers ()[Lkotlinx/serialization/KSerializer; - public fun deserialize (Lkotlinx/serialization/encoding/Decoder;)Lcom/shopify/checkoutkit/ColorScheme$Light; + public fun deserialize (Lkotlinx/serialization/encoding/Decoder;)Lcom/shopify/checkoutkit/Buyer; public synthetic fun deserialize (Lkotlinx/serialization/encoding/Decoder;)Ljava/lang/Object; public fun getDescriptor ()Lkotlinx/serialization/descriptors/SerialDescriptor; - public fun serialize (Lkotlinx/serialization/encoding/Encoder;Lcom/shopify/checkoutkit/ColorScheme$Light;)V + public fun serialize (Lkotlinx/serialization/encoding/Encoder;Lcom/shopify/checkoutkit/Buyer;)V public synthetic fun serialize (Lkotlinx/serialization/encoding/Encoder;Ljava/lang/Object;)V public fun typeParametersSerializers ()[Lkotlinx/serialization/KSerializer; } -public final class com/shopify/checkoutkit/ColorScheme$Light$Companion { +public final class com/shopify/checkoutkit/Buyer$Companion { public final fun serializer ()Lkotlinx/serialization/KSerializer; } -public final class com/shopify/checkoutkit/ColorScheme$Web : com/shopify/checkoutkit/ColorScheme { - public static final field Companion Lcom/shopify/checkoutkit/ColorScheme$Web$Companion; +public final class com/shopify/checkoutkit/BuyerClass { + public static final field Companion Lcom/shopify/checkoutkit/BuyerClass$Companion; public fun ()V - public fun (Lcom/shopify/checkoutkit/Colors;)V - public synthetic fun (Lcom/shopify/checkoutkit/Colors;ILkotlin/jvm/internal/DefaultConstructorMarker;)V - public final fun component1 ()Lcom/shopify/checkoutkit/Colors; - public final fun copy (Lcom/shopify/checkoutkit/Colors;)Lcom/shopify/checkoutkit/ColorScheme$Web; - public static synthetic fun copy$default (Lcom/shopify/checkoutkit/ColorScheme$Web;Lcom/shopify/checkoutkit/Colors;ILjava/lang/Object;)Lcom/shopify/checkoutkit/ColorScheme$Web; - public fun equals (Ljava/lang/Object;)Z - public final fun getColors ()Lcom/shopify/checkoutkit/Colors; - public fun hashCode ()I + public fun (Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)V + public synthetic fun (Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;ILkotlin/jvm/internal/DefaultConstructorMarker;)V + public final fun component1 ()Ljava/lang/String; + public final fun component2 ()Ljava/lang/String; + public final fun component3 ()Ljava/lang/String; + public final fun component4 ()Ljava/lang/String; + public final fun copy (Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)Lcom/shopify/checkoutkit/BuyerClass; + public static synthetic fun copy$default (Lcom/shopify/checkoutkit/BuyerClass;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;ILjava/lang/Object;)Lcom/shopify/checkoutkit/BuyerClass; + public fun equals (Ljava/lang/Object;)Z + public final fun getEmail ()Ljava/lang/String; + public final fun getFirstName ()Ljava/lang/String; + public final fun getLastName ()Ljava/lang/String; + public final fun getPhoneNumber ()Ljava/lang/String; + public fun hashCode ()I + public fun toString ()Ljava/lang/String; +} + +public final class com/shopify/checkoutkit/BuyerClass$$serializer : kotlinx/serialization/internal/GeneratedSerializer { + public static final field INSTANCE Lcom/shopify/checkoutkit/BuyerClass$$serializer; + public fun childSerializers ()[Lkotlinx/serialization/KSerializer; + public fun deserialize (Lkotlinx/serialization/encoding/Decoder;)Lcom/shopify/checkoutkit/BuyerClass; + public synthetic fun deserialize (Lkotlinx/serialization/encoding/Decoder;)Ljava/lang/Object; + public fun getDescriptor ()Lkotlinx/serialization/descriptors/SerialDescriptor; + public fun serialize (Lkotlinx/serialization/encoding/Encoder;Lcom/shopify/checkoutkit/BuyerClass;)V + public synthetic fun serialize (Lkotlinx/serialization/encoding/Encoder;Ljava/lang/Object;)V + public fun typeParametersSerializers ()[Lkotlinx/serialization/KSerializer; +} + +public final class com/shopify/checkoutkit/BuyerClass$Companion { + public final fun serializer ()Lkotlinx/serialization/KSerializer; +} + +public final class com/shopify/checkoutkit/CapabilityResponseSchema { + public static final field Companion Lcom/shopify/checkoutkit/CapabilityResponseSchema$Companion; + public fun (Lkotlinx/serialization/json/JsonObject;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Lcom/shopify/checkoutkit/Extends;)V + public synthetic fun (Lkotlinx/serialization/json/JsonObject;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Lcom/shopify/checkoutkit/Extends;ILkotlin/jvm/internal/DefaultConstructorMarker;)V + public final fun component1 ()Lkotlinx/serialization/json/JsonObject; + public final fun component2 ()Ljava/lang/String; + public final fun component3 ()Ljava/lang/String; + public final fun component4 ()Ljava/lang/String; + public final fun component5 ()Ljava/lang/String; + public final fun component6 ()Lcom/shopify/checkoutkit/Extends; + public final fun copy (Lkotlinx/serialization/json/JsonObject;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Lcom/shopify/checkoutkit/Extends;)Lcom/shopify/checkoutkit/CapabilityResponseSchema; + public static synthetic fun copy$default (Lcom/shopify/checkoutkit/CapabilityResponseSchema;Lkotlinx/serialization/json/JsonObject;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Lcom/shopify/checkoutkit/Extends;ILjava/lang/Object;)Lcom/shopify/checkoutkit/CapabilityResponseSchema; + public fun equals (Ljava/lang/Object;)Z + public final fun getConfig ()Lkotlinx/serialization/json/JsonObject; + public final fun getExtends ()Lcom/shopify/checkoutkit/Extends; + public final fun getId ()Ljava/lang/String; + public final fun getSchema ()Ljava/lang/String; + public final fun getSpec ()Ljava/lang/String; + public final fun getVersion ()Ljava/lang/String; + public fun hashCode ()I + public fun toString ()Ljava/lang/String; +} + +public final class com/shopify/checkoutkit/CapabilityResponseSchema$$serializer : kotlinx/serialization/internal/GeneratedSerializer { + public static final field INSTANCE Lcom/shopify/checkoutkit/CapabilityResponseSchema$$serializer; + public fun childSerializers ()[Lkotlinx/serialization/KSerializer; + public fun deserialize (Lkotlinx/serialization/encoding/Decoder;)Lcom/shopify/checkoutkit/CapabilityResponseSchema; + public synthetic fun deserialize (Lkotlinx/serialization/encoding/Decoder;)Ljava/lang/Object; + public fun getDescriptor ()Lkotlinx/serialization/descriptors/SerialDescriptor; + public fun serialize (Lkotlinx/serialization/encoding/Encoder;Lcom/shopify/checkoutkit/CapabilityResponseSchema;)V + public synthetic fun serialize (Lkotlinx/serialization/encoding/Encoder;Ljava/lang/Object;)V + public fun typeParametersSerializers ()[Lkotlinx/serialization/KSerializer; +} + +public final class com/shopify/checkoutkit/CapabilityResponseSchema$Companion { + public final fun serializer ()Lkotlinx/serialization/KSerializer; +} + +public final class com/shopify/checkoutkit/CardCredential { + public static final field Companion Lcom/shopify/checkoutkit/CardCredential$Companion; + public fun (Lcom/shopify/checkoutkit/TypeEnum;Lcom/shopify/checkoutkit/CardNumberType;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/Long;Ljava/lang/Long;Ljava/lang/String;Ljava/lang/String;)V + public synthetic fun (Lcom/shopify/checkoutkit/TypeEnum;Lcom/shopify/checkoutkit/CardNumberType;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/Long;Ljava/lang/Long;Ljava/lang/String;Ljava/lang/String;ILkotlin/jvm/internal/DefaultConstructorMarker;)V + public final fun component1 ()Lcom/shopify/checkoutkit/TypeEnum; + public final fun component2 ()Lcom/shopify/checkoutkit/CardNumberType; + public final fun component3 ()Ljava/lang/String; + public final fun component4 ()Ljava/lang/String; + public final fun component5 ()Ljava/lang/String; + public final fun component6 ()Ljava/lang/Long; + public final fun component7 ()Ljava/lang/Long; + public final fun component8 ()Ljava/lang/String; + public final fun component9 ()Ljava/lang/String; + public final fun copy (Lcom/shopify/checkoutkit/TypeEnum;Lcom/shopify/checkoutkit/CardNumberType;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/Long;Ljava/lang/Long;Ljava/lang/String;Ljava/lang/String;)Lcom/shopify/checkoutkit/CardCredential; + public static synthetic fun copy$default (Lcom/shopify/checkoutkit/CardCredential;Lcom/shopify/checkoutkit/TypeEnum;Lcom/shopify/checkoutkit/CardNumberType;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/Long;Ljava/lang/Long;Ljava/lang/String;Ljava/lang/String;ILjava/lang/Object;)Lcom/shopify/checkoutkit/CardCredential; + public fun equals (Ljava/lang/Object;)Z + public final fun getCardNumberType ()Lcom/shopify/checkoutkit/CardNumberType; + public final fun getCryptogram ()Ljava/lang/String; + public final fun getCvc ()Ljava/lang/String; + public final fun getEciValue ()Ljava/lang/String; + public final fun getExpiryMonth ()Ljava/lang/Long; + public final fun getExpiryYear ()Ljava/lang/Long; + public final fun getName ()Ljava/lang/String; + public final fun getNumber ()Ljava/lang/String; + public final fun getType ()Lcom/shopify/checkoutkit/TypeEnum; + public fun hashCode ()I + public fun toString ()Ljava/lang/String; +} + +public final class com/shopify/checkoutkit/CardCredential$$serializer : kotlinx/serialization/internal/GeneratedSerializer { + public static final field INSTANCE Lcom/shopify/checkoutkit/CardCredential$$serializer; + public fun childSerializers ()[Lkotlinx/serialization/KSerializer; + public fun deserialize (Lkotlinx/serialization/encoding/Decoder;)Lcom/shopify/checkoutkit/CardCredential; + public synthetic fun deserialize (Lkotlinx/serialization/encoding/Decoder;)Ljava/lang/Object; + public fun getDescriptor ()Lkotlinx/serialization/descriptors/SerialDescriptor; + public fun serialize (Lkotlinx/serialization/encoding/Encoder;Lcom/shopify/checkoutkit/CardCredential;)V + public synthetic fun serialize (Lkotlinx/serialization/encoding/Encoder;Ljava/lang/Object;)V + public fun typeParametersSerializers ()[Lkotlinx/serialization/KSerializer; +} + +public final class com/shopify/checkoutkit/CardCredential$Companion { + public final fun serializer ()Lkotlinx/serialization/KSerializer; +} + +public final class com/shopify/checkoutkit/CardNumberType : java/lang/Enum { + public static final field Companion Lcom/shopify/checkoutkit/CardNumberType$Companion; + public static final field Dpan Lcom/shopify/checkoutkit/CardNumberType; + public static final field Fpan Lcom/shopify/checkoutkit/CardNumberType; + public static final field NetworkToken Lcom/shopify/checkoutkit/CardNumberType; + public static fun getEntries ()Lkotlin/enums/EnumEntries; + public final fun getValue ()Ljava/lang/String; + public static fun valueOf (Ljava/lang/String;)Lcom/shopify/checkoutkit/CardNumberType; + public static fun values ()[Lcom/shopify/checkoutkit/CardNumberType; +} + +public final class com/shopify/checkoutkit/CardNumberType$Companion { + public final fun serializer ()Lkotlinx/serialization/KSerializer; +} + +public final class com/shopify/checkoutkit/CardPaymentInstrument { + public static final field Companion Lcom/shopify/checkoutkit/CardPaymentInstrument$Companion; + public fun (Lcom/shopify/checkoutkit/BillingAddressClass;Lcom/shopify/checkoutkit/CredentialClass;Lcom/shopify/checkoutkit/Display;Ljava/lang/String;Ljava/lang/String;Lcom/shopify/checkoutkit/TypeEnum;)V + public synthetic fun (Lcom/shopify/checkoutkit/BillingAddressClass;Lcom/shopify/checkoutkit/CredentialClass;Lcom/shopify/checkoutkit/Display;Ljava/lang/String;Ljava/lang/String;Lcom/shopify/checkoutkit/TypeEnum;ILkotlin/jvm/internal/DefaultConstructorMarker;)V + public final fun component1 ()Lcom/shopify/checkoutkit/BillingAddressClass; + public final fun component2 ()Lcom/shopify/checkoutkit/CredentialClass; + public final fun component3 ()Lcom/shopify/checkoutkit/Display; + public final fun component4 ()Ljava/lang/String; + public final fun component5 ()Ljava/lang/String; + public final fun component6 ()Lcom/shopify/checkoutkit/TypeEnum; + public final fun copy (Lcom/shopify/checkoutkit/BillingAddressClass;Lcom/shopify/checkoutkit/CredentialClass;Lcom/shopify/checkoutkit/Display;Ljava/lang/String;Ljava/lang/String;Lcom/shopify/checkoutkit/TypeEnum;)Lcom/shopify/checkoutkit/CardPaymentInstrument; + public static synthetic fun copy$default (Lcom/shopify/checkoutkit/CardPaymentInstrument;Lcom/shopify/checkoutkit/BillingAddressClass;Lcom/shopify/checkoutkit/CredentialClass;Lcom/shopify/checkoutkit/Display;Ljava/lang/String;Ljava/lang/String;Lcom/shopify/checkoutkit/TypeEnum;ILjava/lang/Object;)Lcom/shopify/checkoutkit/CardPaymentInstrument; + public fun equals (Ljava/lang/Object;)Z + public final fun getBillingAddress ()Lcom/shopify/checkoutkit/BillingAddressClass; + public final fun getCredential ()Lcom/shopify/checkoutkit/CredentialClass; + public final fun getDisplay ()Lcom/shopify/checkoutkit/Display; + public final fun getHandlerID ()Ljava/lang/String; + public final fun getId ()Ljava/lang/String; + public final fun getType ()Lcom/shopify/checkoutkit/TypeEnum; + public fun hashCode ()I + public fun toString ()Ljava/lang/String; +} + +public final class com/shopify/checkoutkit/CardPaymentInstrument$$serializer : kotlinx/serialization/internal/GeneratedSerializer { + public static final field INSTANCE Lcom/shopify/checkoutkit/CardPaymentInstrument$$serializer; + public fun childSerializers ()[Lkotlinx/serialization/KSerializer; + public fun deserialize (Lkotlinx/serialization/encoding/Decoder;)Lcom/shopify/checkoutkit/CardPaymentInstrument; + public synthetic fun deserialize (Lkotlinx/serialization/encoding/Decoder;)Ljava/lang/Object; + public fun getDescriptor ()Lkotlinx/serialization/descriptors/SerialDescriptor; + public fun serialize (Lkotlinx/serialization/encoding/Encoder;Lcom/shopify/checkoutkit/CardPaymentInstrument;)V + public synthetic fun serialize (Lkotlinx/serialization/encoding/Encoder;Ljava/lang/Object;)V + public fun typeParametersSerializers ()[Lkotlinx/serialization/KSerializer; +} + +public final class com/shopify/checkoutkit/CardPaymentInstrument$Companion { + public final fun serializer ()Lkotlinx/serialization/KSerializer; +} + +public final class com/shopify/checkoutkit/Checkout { + public static final field Companion Lcom/shopify/checkoutkit/Checkout$Companion; + public fun (Lcom/shopify/checkoutkit/BuyerClass;Lcom/shopify/checkoutkit/ContextClass;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/util/List;Ljava/util/List;Ljava/util/List;Lcom/shopify/checkoutkit/OrderClass;Lcom/shopify/checkoutkit/PaymentClass;Lcom/shopify/checkoutkit/CheckoutStatus;Ljava/util/List;Lcom/shopify/checkoutkit/UCPCheckoutResponseSchema;)V + public synthetic fun (Lcom/shopify/checkoutkit/BuyerClass;Lcom/shopify/checkoutkit/ContextClass;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/util/List;Ljava/util/List;Ljava/util/List;Lcom/shopify/checkoutkit/OrderClass;Lcom/shopify/checkoutkit/PaymentClass;Lcom/shopify/checkoutkit/CheckoutStatus;Ljava/util/List;Lcom/shopify/checkoutkit/UCPCheckoutResponseSchema;ILkotlin/jvm/internal/DefaultConstructorMarker;)V + public final fun component1 ()Lcom/shopify/checkoutkit/BuyerClass; + public final fun component10 ()Lcom/shopify/checkoutkit/OrderClass; + public final fun component11 ()Lcom/shopify/checkoutkit/PaymentClass; + public final fun component12 ()Lcom/shopify/checkoutkit/CheckoutStatus; + public final fun component13 ()Ljava/util/List; + public final fun component14 ()Lcom/shopify/checkoutkit/UCPCheckoutResponseSchema; + public final fun component2 ()Lcom/shopify/checkoutkit/ContextClass; + public final fun component3 ()Ljava/lang/String; + public final fun component4 ()Ljava/lang/String; + public final fun component5 ()Ljava/lang/String; + public final fun component6 ()Ljava/lang/String; + public final fun component7 ()Ljava/util/List; + public final fun component8 ()Ljava/util/List; + public final fun component9 ()Ljava/util/List; + public final fun copy (Lcom/shopify/checkoutkit/BuyerClass;Lcom/shopify/checkoutkit/ContextClass;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/util/List;Ljava/util/List;Ljava/util/List;Lcom/shopify/checkoutkit/OrderClass;Lcom/shopify/checkoutkit/PaymentClass;Lcom/shopify/checkoutkit/CheckoutStatus;Ljava/util/List;Lcom/shopify/checkoutkit/UCPCheckoutResponseSchema;)Lcom/shopify/checkoutkit/Checkout; + public static synthetic fun copy$default (Lcom/shopify/checkoutkit/Checkout;Lcom/shopify/checkoutkit/BuyerClass;Lcom/shopify/checkoutkit/ContextClass;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/util/List;Ljava/util/List;Ljava/util/List;Lcom/shopify/checkoutkit/OrderClass;Lcom/shopify/checkoutkit/PaymentClass;Lcom/shopify/checkoutkit/CheckoutStatus;Ljava/util/List;Lcom/shopify/checkoutkit/UCPCheckoutResponseSchema;ILjava/lang/Object;)Lcom/shopify/checkoutkit/Checkout; + public fun equals (Ljava/lang/Object;)Z + public final fun getBuyer ()Lcom/shopify/checkoutkit/BuyerClass; + public final fun getContext ()Lcom/shopify/checkoutkit/ContextClass; + public final fun getContinueURL ()Ljava/lang/String; + public final fun getCurrency ()Ljava/lang/String; + public final fun getExpiresAt ()Ljava/lang/String; + public final fun getId ()Ljava/lang/String; + public final fun getLineItems ()Ljava/util/List; + public final fun getLinks ()Ljava/util/List; + public final fun getMessages ()Ljava/util/List; + public final fun getOrder ()Lcom/shopify/checkoutkit/OrderClass; + public final fun getPayment ()Lcom/shopify/checkoutkit/PaymentClass; + public final fun getStatus ()Lcom/shopify/checkoutkit/CheckoutStatus; + public final fun getTotals ()Ljava/util/List; + public final fun getUcp ()Lcom/shopify/checkoutkit/UCPCheckoutResponseSchema; + public fun hashCode ()I + public fun toString ()Ljava/lang/String; +} + +public final class com/shopify/checkoutkit/Checkout$$serializer : kotlinx/serialization/internal/GeneratedSerializer { + public static final field INSTANCE Lcom/shopify/checkoutkit/Checkout$$serializer; + public fun childSerializers ()[Lkotlinx/serialization/KSerializer; + public fun deserialize (Lkotlinx/serialization/encoding/Decoder;)Lcom/shopify/checkoutkit/Checkout; + public synthetic fun deserialize (Lkotlinx/serialization/encoding/Decoder;)Ljava/lang/Object; + public fun getDescriptor ()Lkotlinx/serialization/descriptors/SerialDescriptor; + public fun serialize (Lkotlinx/serialization/encoding/Encoder;Lcom/shopify/checkoutkit/Checkout;)V + public synthetic fun serialize (Lkotlinx/serialization/encoding/Encoder;Ljava/lang/Object;)V + public fun typeParametersSerializers ()[Lkotlinx/serialization/KSerializer; +} + +public final class com/shopify/checkoutkit/Checkout$Companion { + public final fun serializer ()Lkotlinx/serialization/KSerializer; +} + +public abstract interface class com/shopify/checkoutkit/CheckoutCommunicationClient { + public abstract fun openExternalUrl (Landroid/net/Uri;)Z + public abstract fun process (Ljava/lang/String;)Ljava/lang/String; +} + +public abstract interface class com/shopify/checkoutkit/CheckoutEventProcessor { + public abstract fun onCheckoutCanceled ()V + public abstract fun onCheckoutCompleted (Lcom/shopify/checkoutkit/lifecycleevents/CheckoutCompletedEvent;)V + public abstract fun onCheckoutFailed (Lcom/shopify/checkoutkit/CheckoutException;)V + public abstract fun onCheckoutLinkClicked (Landroid/net/Uri;)V + public abstract fun onGeolocationPermissionsHidePrompt ()V + public abstract fun onGeolocationPermissionsShowPrompt (Ljava/lang/String;Landroid/webkit/GeolocationPermissions$Callback;)V + public abstract fun onPermissionRequest (Landroid/webkit/PermissionRequest;)V + public abstract fun onShowFileChooser (Landroid/webkit/WebView;Landroid/webkit/ValueCallback;Landroid/webkit/WebChromeClient$FileChooserParams;)Z + public abstract fun onWebPixelEvent (Lcom/shopify/checkoutkit/pixelevents/PixelEvent;)V +} + +public abstract class com/shopify/checkoutkit/CheckoutException : java/lang/Exception { + public static final field Companion Lcom/shopify/checkoutkit/CheckoutException$Companion; + public synthetic fun (ILjava/lang/String;Ljava/lang/String;ZLkotlinx/serialization/internal/SerializationConstructorMarker;)V + public fun (Ljava/lang/String;Ljava/lang/String;Z)V + public final fun getErrorCode ()Ljava/lang/String; + public final fun getErrorDescription ()Ljava/lang/String; + public final fun isRecoverable ()Z + public static final synthetic fun write$Self (Lcom/shopify/checkoutkit/CheckoutException;Lkotlinx/serialization/encoding/CompositeEncoder;Lkotlinx/serialization/descriptors/SerialDescriptor;)V +} + +public final class com/shopify/checkoutkit/CheckoutException$Companion { + public final fun serializer ()Lkotlinx/serialization/KSerializer; +} + +public final class com/shopify/checkoutkit/CheckoutExpiredException : com/shopify/checkoutkit/CheckoutException { + public static final field CART_COMPLETED Ljava/lang/String; + public static final field CART_EXPIRED Ljava/lang/String; + public static final field Companion Lcom/shopify/checkoutkit/CheckoutExpiredException$Companion; + public static final field INVALID_CART Ljava/lang/String; + public static final field UNKNOWN Ljava/lang/String; + public fun (Ljava/lang/String;Ljava/lang/String;Z)V + public synthetic fun (Ljava/lang/String;Ljava/lang/String;ZILkotlin/jvm/internal/DefaultConstructorMarker;)V + public fun (Ljava/lang/String;Z)V + public fun (Z)V +} + +public final class com/shopify/checkoutkit/CheckoutExpiredException$Companion { +} + +public abstract interface class com/shopify/checkoutkit/CheckoutKitDialog { + public abstract fun dismiss ()V +} + +public final class com/shopify/checkoutkit/CheckoutKitException : com/shopify/checkoutkit/CheckoutException { + public static final field Companion Lcom/shopify/checkoutkit/CheckoutKitException$Companion; + public static final field ERROR_RECEIVING_MESSAGE_FROM_CHECKOUT Ljava/lang/String; + public static final field ERROR_SENDING_MESSAGE_TO_CHECKOUT Ljava/lang/String; + public static final field RENDER_PROCESS_GONE Ljava/lang/String; + public static final field UNKNOWN Ljava/lang/String; + public fun (Ljava/lang/String;Ljava/lang/String;Z)V + public synthetic fun (Ljava/lang/String;Ljava/lang/String;ZILkotlin/jvm/internal/DefaultConstructorMarker;)V +} + +public final class com/shopify/checkoutkit/CheckoutKitException$Companion { +} + +public final class com/shopify/checkoutkit/CheckoutLineItem { + public static final field Companion Lcom/shopify/checkoutkit/CheckoutLineItem$Companion; + public fun (Ljava/lang/String;Lcom/shopify/checkoutkit/ItemClass;Ljava/lang/String;JLjava/util/List;)V + public synthetic fun (Ljava/lang/String;Lcom/shopify/checkoutkit/ItemClass;Ljava/lang/String;JLjava/util/List;ILkotlin/jvm/internal/DefaultConstructorMarker;)V + public final fun component1 ()Ljava/lang/String; + public final fun component2 ()Lcom/shopify/checkoutkit/ItemClass; + public final fun component3 ()Ljava/lang/String; + public final fun component4 ()J + public final fun component5 ()Ljava/util/List; + public final fun copy (Ljava/lang/String;Lcom/shopify/checkoutkit/ItemClass;Ljava/lang/String;JLjava/util/List;)Lcom/shopify/checkoutkit/CheckoutLineItem; + public static synthetic fun copy$default (Lcom/shopify/checkoutkit/CheckoutLineItem;Ljava/lang/String;Lcom/shopify/checkoutkit/ItemClass;Ljava/lang/String;JLjava/util/List;ILjava/lang/Object;)Lcom/shopify/checkoutkit/CheckoutLineItem; + public fun equals (Ljava/lang/Object;)Z + public final fun getId ()Ljava/lang/String; + public final fun getItem ()Lcom/shopify/checkoutkit/ItemClass; + public final fun getParentID ()Ljava/lang/String; + public final fun getQuantity ()J + public final fun getTotals ()Ljava/util/List; + public fun hashCode ()I + public fun toString ()Ljava/lang/String; +} + +public final class com/shopify/checkoutkit/CheckoutLineItem$$serializer : kotlinx/serialization/internal/GeneratedSerializer { + public static final field INSTANCE Lcom/shopify/checkoutkit/CheckoutLineItem$$serializer; + public fun childSerializers ()[Lkotlinx/serialization/KSerializer; + public fun deserialize (Lkotlinx/serialization/encoding/Decoder;)Lcom/shopify/checkoutkit/CheckoutLineItem; + public synthetic fun deserialize (Lkotlinx/serialization/encoding/Decoder;)Ljava/lang/Object; + public fun getDescriptor ()Lkotlinx/serialization/descriptors/SerialDescriptor; + public fun serialize (Lkotlinx/serialization/encoding/Encoder;Lcom/shopify/checkoutkit/CheckoutLineItem;)V + public synthetic fun serialize (Lkotlinx/serialization/encoding/Encoder;Ljava/lang/Object;)V + public fun typeParametersSerializers ()[Lkotlinx/serialization/KSerializer; +} + +public final class com/shopify/checkoutkit/CheckoutLineItem$Companion { + public final fun serializer ()Lkotlinx/serialization/KSerializer; +} + +public final class com/shopify/checkoutkit/CheckoutProtocol { + public static final field INSTANCE Lcom/shopify/checkoutkit/CheckoutProtocol; + public static final field specVersion Ljava/lang/String; + public final fun getBuyerChange ()Lcom/shopify/checkoutkit/NotificationDescriptor; + public final fun getComplete ()Lcom/shopify/checkoutkit/NotificationDescriptor; + public final fun getLineItemsChange ()Lcom/shopify/checkoutkit/NotificationDescriptor; + public final fun getMessagesChange ()Lcom/shopify/checkoutkit/NotificationDescriptor; + public final fun getPaymentChange ()Lcom/shopify/checkoutkit/NotificationDescriptor; + public final fun getReady ()Lcom/shopify/checkoutkit/NotificationDescriptor; + public final fun getStart ()Lcom/shopify/checkoutkit/NotificationDescriptor; +} + +public final class com/shopify/checkoutkit/CheckoutProtocol$Client : com/shopify/checkoutkit/CheckoutCommunicationClient { + public fun ()V + public final fun on (Lcom/shopify/checkoutkit/NotificationDescriptor;Lkotlin/jvm/functions/Function1;)Lcom/shopify/checkoutkit/CheckoutProtocol$Client; + public final fun onOpenExternalUrl (Lkotlin/jvm/functions/Function1;)Lcom/shopify/checkoutkit/CheckoutProtocol$Client; + public fun openExternalUrl (Landroid/net/Uri;)Z + public fun process (Ljava/lang/String;)Ljava/lang/String; +} + +public final class com/shopify/checkoutkit/CheckoutStatus : java/lang/Enum { + public static final field Canceled Lcom/shopify/checkoutkit/CheckoutStatus; + public static final field Companion Lcom/shopify/checkoutkit/CheckoutStatus$Companion; + public static final field CompleteInProgress Lcom/shopify/checkoutkit/CheckoutStatus; + public static final field Completed Lcom/shopify/checkoutkit/CheckoutStatus; + public static final field Incomplete Lcom/shopify/checkoutkit/CheckoutStatus; + public static final field ReadyForComplete Lcom/shopify/checkoutkit/CheckoutStatus; + public static final field RequiresEscalation Lcom/shopify/checkoutkit/CheckoutStatus; + public static fun getEntries ()Lkotlin/enums/EnumEntries; + public final fun getValue ()Ljava/lang/String; + public static fun valueOf (Ljava/lang/String;)Lcom/shopify/checkoutkit/CheckoutStatus; + public static fun values ()[Lcom/shopify/checkoutkit/CheckoutStatus; +} + +public final class com/shopify/checkoutkit/CheckoutStatus$Companion { + public final fun serializer ()Lkotlinx/serialization/KSerializer; +} + +public class com/shopify/checkoutkit/CheckoutUnavailableException : com/shopify/checkoutkit/CheckoutException { + public static final field CLIENT_ERROR Ljava/lang/String; + public static final field Companion Lcom/shopify/checkoutkit/CheckoutUnavailableException$Companion; + public static final field HTTP_ERROR Ljava/lang/String; + public static final field UNKNOWN Ljava/lang/String; + public fun (Ljava/lang/String;Ljava/lang/String;Z)V + public synthetic fun (Ljava/lang/String;Ljava/lang/String;ZILkotlin/jvm/internal/DefaultConstructorMarker;)V + public fun (Ljava/lang/String;Z)V + public fun (Z)V +} + +public final class com/shopify/checkoutkit/CheckoutUnavailableException$Companion { +} + +public final class com/shopify/checkoutkit/ClientException : com/shopify/checkoutkit/CheckoutUnavailableException { + public fun (Ljava/lang/String;Z)V + public synthetic fun (Ljava/lang/String;ZILkotlin/jvm/internal/DefaultConstructorMarker;)V + public fun (Z)V +} + +public abstract class com/shopify/checkoutkit/Color { + public static final field Companion Lcom/shopify/checkoutkit/Color$Companion; + public synthetic fun (ILkotlinx/serialization/internal/SerializationConstructorMarker;)V + public final fun getValue (Landroid/content/Context;)I + public static final synthetic fun write$Self (Lcom/shopify/checkoutkit/Color;Lkotlinx/serialization/encoding/CompositeEncoder;Lkotlinx/serialization/descriptors/SerialDescriptor;)V +} + +public final class com/shopify/checkoutkit/Color$Companion { + public final fun serializer ()Lkotlinx/serialization/KSerializer; +} + +public final class com/shopify/checkoutkit/Color$ResourceId : com/shopify/checkoutkit/Color { + public static final field Companion Lcom/shopify/checkoutkit/Color$ResourceId$Companion; + public fun (I)V + public final fun component1 ()I + public final fun copy (I)Lcom/shopify/checkoutkit/Color$ResourceId; + public static synthetic fun copy$default (Lcom/shopify/checkoutkit/Color$ResourceId;IILjava/lang/Object;)Lcom/shopify/checkoutkit/Color$ResourceId; + public fun equals (Ljava/lang/Object;)Z + public final fun getId ()I + public fun hashCode ()I + public fun toString ()Ljava/lang/String; +} + +public final class com/shopify/checkoutkit/Color$ResourceId$$serializer : kotlinx/serialization/internal/GeneratedSerializer { + public static final field INSTANCE Lcom/shopify/checkoutkit/Color$ResourceId$$serializer; + public fun childSerializers ()[Lkotlinx/serialization/KSerializer; + public fun deserialize (Lkotlinx/serialization/encoding/Decoder;)Lcom/shopify/checkoutkit/Color$ResourceId; + public synthetic fun deserialize (Lkotlinx/serialization/encoding/Decoder;)Ljava/lang/Object; + public fun getDescriptor ()Lkotlinx/serialization/descriptors/SerialDescriptor; + public fun serialize (Lkotlinx/serialization/encoding/Encoder;Lcom/shopify/checkoutkit/Color$ResourceId;)V + public synthetic fun serialize (Lkotlinx/serialization/encoding/Encoder;Ljava/lang/Object;)V + public fun typeParametersSerializers ()[Lkotlinx/serialization/KSerializer; +} + +public final class com/shopify/checkoutkit/Color$ResourceId$Companion { + public final fun serializer ()Lkotlinx/serialization/KSerializer; +} + +public final class com/shopify/checkoutkit/Color$SRGB : com/shopify/checkoutkit/Color { + public static final field Companion Lcom/shopify/checkoutkit/Color$SRGB$Companion; + public fun (I)V + public final fun component1 ()I + public final fun copy (I)Lcom/shopify/checkoutkit/Color$SRGB; + public static synthetic fun copy$default (Lcom/shopify/checkoutkit/Color$SRGB;IILjava/lang/Object;)Lcom/shopify/checkoutkit/Color$SRGB; + public fun equals (Ljava/lang/Object;)Z + public final fun getSRGB ()I + public fun hashCode ()I + public fun toString ()Ljava/lang/String; +} + +public final class com/shopify/checkoutkit/Color$SRGB$$serializer : kotlinx/serialization/internal/GeneratedSerializer { + public static final field INSTANCE Lcom/shopify/checkoutkit/Color$SRGB$$serializer; + public fun childSerializers ()[Lkotlinx/serialization/KSerializer; + public fun deserialize (Lkotlinx/serialization/encoding/Decoder;)Lcom/shopify/checkoutkit/Color$SRGB; + public synthetic fun deserialize (Lkotlinx/serialization/encoding/Decoder;)Ljava/lang/Object; + public fun getDescriptor ()Lkotlinx/serialization/descriptors/SerialDescriptor; + public fun serialize (Lkotlinx/serialization/encoding/Encoder;Lcom/shopify/checkoutkit/Color$SRGB;)V + public synthetic fun serialize (Lkotlinx/serialization/encoding/Encoder;Ljava/lang/Object;)V + public fun typeParametersSerializers ()[Lkotlinx/serialization/KSerializer; +} + +public final class com/shopify/checkoutkit/Color$SRGB$Companion { + public final fun serializer ()Lkotlinx/serialization/KSerializer; +} + +public abstract class com/shopify/checkoutkit/ColorScheme { + public static final field Companion Lcom/shopify/checkoutkit/ColorScheme$Companion; + public synthetic fun (ILjava/lang/String;Lkotlinx/serialization/internal/SerializationConstructorMarker;)V + public synthetic fun (Ljava/lang/String;Lkotlin/jvm/internal/DefaultConstructorMarker;)V + public final fun customize (Lkotlin/jvm/functions/Function1;)Lcom/shopify/checkoutkit/ColorScheme; + public final fun customize (Lkotlin/jvm/functions/Function1;Lkotlin/jvm/functions/Function1;)Lcom/shopify/checkoutkit/ColorScheme; + public final fun getId ()Ljava/lang/String; + public static final synthetic fun write$Self (Lcom/shopify/checkoutkit/ColorScheme;Lkotlinx/serialization/encoding/CompositeEncoder;Lkotlinx/serialization/descriptors/SerialDescriptor;)V +} + +public final class com/shopify/checkoutkit/ColorScheme$Automatic : com/shopify/checkoutkit/ColorScheme { + public static final field Companion Lcom/shopify/checkoutkit/ColorScheme$Automatic$Companion; + public fun ()V + public fun (Lcom/shopify/checkoutkit/Colors;Lcom/shopify/checkoutkit/Colors;)V + public synthetic fun (Lcom/shopify/checkoutkit/Colors;Lcom/shopify/checkoutkit/Colors;ILkotlin/jvm/internal/DefaultConstructorMarker;)V + public final fun component1 ()Lcom/shopify/checkoutkit/Colors; + public final fun component2 ()Lcom/shopify/checkoutkit/Colors; + public final fun copy (Lcom/shopify/checkoutkit/Colors;Lcom/shopify/checkoutkit/Colors;)Lcom/shopify/checkoutkit/ColorScheme$Automatic; + public static synthetic fun copy$default (Lcom/shopify/checkoutkit/ColorScheme$Automatic;Lcom/shopify/checkoutkit/Colors;Lcom/shopify/checkoutkit/Colors;ILjava/lang/Object;)Lcom/shopify/checkoutkit/ColorScheme$Automatic; + public fun equals (Ljava/lang/Object;)Z + public final fun getDarkColors ()Lcom/shopify/checkoutkit/Colors; + public final fun getLightColors ()Lcom/shopify/checkoutkit/Colors; + public fun hashCode ()I + public final fun setDarkColors (Lcom/shopify/checkoutkit/Colors;)V + public final fun setLightColors (Lcom/shopify/checkoutkit/Colors;)V + public fun toString ()Ljava/lang/String; +} + +public final class com/shopify/checkoutkit/ColorScheme$Automatic$$serializer : kotlinx/serialization/internal/GeneratedSerializer { + public static final field INSTANCE Lcom/shopify/checkoutkit/ColorScheme$Automatic$$serializer; + public fun childSerializers ()[Lkotlinx/serialization/KSerializer; + public fun deserialize (Lkotlinx/serialization/encoding/Decoder;)Lcom/shopify/checkoutkit/ColorScheme$Automatic; + public synthetic fun deserialize (Lkotlinx/serialization/encoding/Decoder;)Ljava/lang/Object; + public fun getDescriptor ()Lkotlinx/serialization/descriptors/SerialDescriptor; + public fun serialize (Lkotlinx/serialization/encoding/Encoder;Lcom/shopify/checkoutkit/ColorScheme$Automatic;)V + public synthetic fun serialize (Lkotlinx/serialization/encoding/Encoder;Ljava/lang/Object;)V + public fun typeParametersSerializers ()[Lkotlinx/serialization/KSerializer; +} + +public final class com/shopify/checkoutkit/ColorScheme$Automatic$Companion { + public final fun serializer ()Lkotlinx/serialization/KSerializer; +} + +public final class com/shopify/checkoutkit/ColorScheme$Companion { + public final fun serializer ()Lkotlinx/serialization/KSerializer; +} + +public final class com/shopify/checkoutkit/ColorScheme$Dark : com/shopify/checkoutkit/ColorScheme { + public static final field Companion Lcom/shopify/checkoutkit/ColorScheme$Dark$Companion; + public fun ()V + public fun (Lcom/shopify/checkoutkit/Colors;)V + public synthetic fun (Lcom/shopify/checkoutkit/Colors;ILkotlin/jvm/internal/DefaultConstructorMarker;)V + public final fun component1 ()Lcom/shopify/checkoutkit/Colors; + public final fun copy (Lcom/shopify/checkoutkit/Colors;)Lcom/shopify/checkoutkit/ColorScheme$Dark; + public static synthetic fun copy$default (Lcom/shopify/checkoutkit/ColorScheme$Dark;Lcom/shopify/checkoutkit/Colors;ILjava/lang/Object;)Lcom/shopify/checkoutkit/ColorScheme$Dark; + public fun equals (Ljava/lang/Object;)Z + public final fun getColors ()Lcom/shopify/checkoutkit/Colors; + public fun hashCode ()I + public final fun setColors (Lcom/shopify/checkoutkit/Colors;)V + public fun toString ()Ljava/lang/String; +} + +public final class com/shopify/checkoutkit/ColorScheme$Dark$$serializer : kotlinx/serialization/internal/GeneratedSerializer { + public static final field INSTANCE Lcom/shopify/checkoutkit/ColorScheme$Dark$$serializer; + public fun childSerializers ()[Lkotlinx/serialization/KSerializer; + public fun deserialize (Lkotlinx/serialization/encoding/Decoder;)Lcom/shopify/checkoutkit/ColorScheme$Dark; + public synthetic fun deserialize (Lkotlinx/serialization/encoding/Decoder;)Ljava/lang/Object; + public fun getDescriptor ()Lkotlinx/serialization/descriptors/SerialDescriptor; + public fun serialize (Lkotlinx/serialization/encoding/Encoder;Lcom/shopify/checkoutkit/ColorScheme$Dark;)V + public synthetic fun serialize (Lkotlinx/serialization/encoding/Encoder;Ljava/lang/Object;)V + public fun typeParametersSerializers ()[Lkotlinx/serialization/KSerializer; +} + +public final class com/shopify/checkoutkit/ColorScheme$Dark$Companion { + public final fun serializer ()Lkotlinx/serialization/KSerializer; +} + +public final class com/shopify/checkoutkit/ColorScheme$Light : com/shopify/checkoutkit/ColorScheme { + public static final field Companion Lcom/shopify/checkoutkit/ColorScheme$Light$Companion; + public fun ()V + public fun (Lcom/shopify/checkoutkit/Colors;)V + public synthetic fun (Lcom/shopify/checkoutkit/Colors;ILkotlin/jvm/internal/DefaultConstructorMarker;)V + public final fun component1 ()Lcom/shopify/checkoutkit/Colors; + public final fun copy (Lcom/shopify/checkoutkit/Colors;)Lcom/shopify/checkoutkit/ColorScheme$Light; + public static synthetic fun copy$default (Lcom/shopify/checkoutkit/ColorScheme$Light;Lcom/shopify/checkoutkit/Colors;ILjava/lang/Object;)Lcom/shopify/checkoutkit/ColorScheme$Light; + public fun equals (Ljava/lang/Object;)Z + public final fun getColors ()Lcom/shopify/checkoutkit/Colors; + public fun hashCode ()I public final fun setColors (Lcom/shopify/checkoutkit/Colors;)V public fun toString ()Ljava/lang/String; } -public final class com/shopify/checkoutkit/ColorScheme$Web$$serializer : kotlinx/serialization/internal/GeneratedSerializer { - public static final field INSTANCE Lcom/shopify/checkoutkit/ColorScheme$Web$$serializer; +public final class com/shopify/checkoutkit/ColorScheme$Light$$serializer : kotlinx/serialization/internal/GeneratedSerializer { + public static final field INSTANCE Lcom/shopify/checkoutkit/ColorScheme$Light$$serializer; + public fun childSerializers ()[Lkotlinx/serialization/KSerializer; + public fun deserialize (Lkotlinx/serialization/encoding/Decoder;)Lcom/shopify/checkoutkit/ColorScheme$Light; + public synthetic fun deserialize (Lkotlinx/serialization/encoding/Decoder;)Ljava/lang/Object; + public fun getDescriptor ()Lkotlinx/serialization/descriptors/SerialDescriptor; + public fun serialize (Lkotlinx/serialization/encoding/Encoder;Lcom/shopify/checkoutkit/ColorScheme$Light;)V + public synthetic fun serialize (Lkotlinx/serialization/encoding/Encoder;Ljava/lang/Object;)V + public fun typeParametersSerializers ()[Lkotlinx/serialization/KSerializer; +} + +public final class com/shopify/checkoutkit/ColorScheme$Light$Companion { + public final fun serializer ()Lkotlinx/serialization/KSerializer; +} + +public final class com/shopify/checkoutkit/ColorScheme$Web : com/shopify/checkoutkit/ColorScheme { + public static final field Companion Lcom/shopify/checkoutkit/ColorScheme$Web$Companion; + public fun ()V + public fun (Lcom/shopify/checkoutkit/Colors;)V + public synthetic fun (Lcom/shopify/checkoutkit/Colors;ILkotlin/jvm/internal/DefaultConstructorMarker;)V + public final fun component1 ()Lcom/shopify/checkoutkit/Colors; + public final fun copy (Lcom/shopify/checkoutkit/Colors;)Lcom/shopify/checkoutkit/ColorScheme$Web; + public static synthetic fun copy$default (Lcom/shopify/checkoutkit/ColorScheme$Web;Lcom/shopify/checkoutkit/Colors;ILjava/lang/Object;)Lcom/shopify/checkoutkit/ColorScheme$Web; + public fun equals (Ljava/lang/Object;)Z + public final fun getColors ()Lcom/shopify/checkoutkit/Colors; + public fun hashCode ()I + public final fun setColors (Lcom/shopify/checkoutkit/Colors;)V + public fun toString ()Ljava/lang/String; +} + +public final class com/shopify/checkoutkit/ColorScheme$Web$$serializer : kotlinx/serialization/internal/GeneratedSerializer { + public static final field INSTANCE Lcom/shopify/checkoutkit/ColorScheme$Web$$serializer; + public fun childSerializers ()[Lkotlinx/serialization/KSerializer; + public fun deserialize (Lkotlinx/serialization/encoding/Decoder;)Lcom/shopify/checkoutkit/ColorScheme$Web; + public synthetic fun deserialize (Lkotlinx/serialization/encoding/Decoder;)Ljava/lang/Object; + public fun getDescriptor ()Lkotlinx/serialization/descriptors/SerialDescriptor; + public fun serialize (Lkotlinx/serialization/encoding/Encoder;Lcom/shopify/checkoutkit/ColorScheme$Web;)V + public synthetic fun serialize (Lkotlinx/serialization/encoding/Encoder;Ljava/lang/Object;)V + public fun typeParametersSerializers ()[Lkotlinx/serialization/KSerializer; +} + +public final class com/shopify/checkoutkit/ColorScheme$Web$Companion { + public final fun serializer ()Lkotlinx/serialization/KSerializer; +} + +public final class com/shopify/checkoutkit/Colors { + public static final field Companion Lcom/shopify/checkoutkit/Colors$Companion; + public fun (Lcom/shopify/checkoutkit/Color;Lcom/shopify/checkoutkit/Color;Lcom/shopify/checkoutkit/Color;Lcom/shopify/checkoutkit/Color;Lcom/shopify/checkoutkit/DrawableResource;Lcom/shopify/checkoutkit/Color;)V + public synthetic fun (Lcom/shopify/checkoutkit/Color;Lcom/shopify/checkoutkit/Color;Lcom/shopify/checkoutkit/Color;Lcom/shopify/checkoutkit/Color;Lcom/shopify/checkoutkit/DrawableResource;Lcom/shopify/checkoutkit/Color;ILkotlin/jvm/internal/DefaultConstructorMarker;)V + public final fun component1 ()Lcom/shopify/checkoutkit/Color; + public final fun component2 ()Lcom/shopify/checkoutkit/Color; + public final fun component3 ()Lcom/shopify/checkoutkit/Color; + public final fun component4 ()Lcom/shopify/checkoutkit/Color; + public final fun component5 ()Lcom/shopify/checkoutkit/DrawableResource; + public final fun component6 ()Lcom/shopify/checkoutkit/Color; + public final fun copy (Lcom/shopify/checkoutkit/Color;Lcom/shopify/checkoutkit/Color;Lcom/shopify/checkoutkit/Color;Lcom/shopify/checkoutkit/Color;Lcom/shopify/checkoutkit/DrawableResource;Lcom/shopify/checkoutkit/Color;)Lcom/shopify/checkoutkit/Colors; + public static synthetic fun copy$default (Lcom/shopify/checkoutkit/Colors;Lcom/shopify/checkoutkit/Color;Lcom/shopify/checkoutkit/Color;Lcom/shopify/checkoutkit/Color;Lcom/shopify/checkoutkit/Color;Lcom/shopify/checkoutkit/DrawableResource;Lcom/shopify/checkoutkit/Color;ILjava/lang/Object;)Lcom/shopify/checkoutkit/Colors; + public fun equals (Ljava/lang/Object;)Z + public final fun getCloseIcon ()Lcom/shopify/checkoutkit/DrawableResource; + public final fun getCloseIconTint ()Lcom/shopify/checkoutkit/Color; + public final fun getHeaderBackground ()Lcom/shopify/checkoutkit/Color; + public final fun getHeaderFont ()Lcom/shopify/checkoutkit/Color; + public final fun getProgressIndicator ()Lcom/shopify/checkoutkit/Color; + public final fun getWebViewBackground ()Lcom/shopify/checkoutkit/Color; + public fun hashCode ()I + public fun toString ()Ljava/lang/String; +} + +public final class com/shopify/checkoutkit/Colors$$serializer : kotlinx/serialization/internal/GeneratedSerializer { + public static final field INSTANCE Lcom/shopify/checkoutkit/Colors$$serializer; + public fun childSerializers ()[Lkotlinx/serialization/KSerializer; + public fun deserialize (Lkotlinx/serialization/encoding/Decoder;)Lcom/shopify/checkoutkit/Colors; + public synthetic fun deserialize (Lkotlinx/serialization/encoding/Decoder;)Ljava/lang/Object; + public fun getDescriptor ()Lkotlinx/serialization/descriptors/SerialDescriptor; + public fun serialize (Lkotlinx/serialization/encoding/Encoder;Lcom/shopify/checkoutkit/Colors;)V + public synthetic fun serialize (Lkotlinx/serialization/encoding/Encoder;Ljava/lang/Object;)V + public fun typeParametersSerializers ()[Lkotlinx/serialization/KSerializer; +} + +public final class com/shopify/checkoutkit/Colors$Companion { + public final fun serializer ()Lkotlinx/serialization/KSerializer; +} + +public final class com/shopify/checkoutkit/ColorsBuilder { + public final fun getCloseIcon ()Lcom/shopify/checkoutkit/DrawableResource; + public final fun getCloseIconTint ()Lcom/shopify/checkoutkit/Color; + public final fun getHeaderBackground ()Lcom/shopify/checkoutkit/Color; + public final fun getHeaderFont ()Lcom/shopify/checkoutkit/Color; + public final fun getProgressIndicator ()Lcom/shopify/checkoutkit/Color; + public final fun getWebViewBackground ()Lcom/shopify/checkoutkit/Color; + public final fun setCloseIcon (Lcom/shopify/checkoutkit/DrawableResource;)V + public final fun setCloseIconTint (Lcom/shopify/checkoutkit/Color;)V + public final fun setHeaderBackground (Lcom/shopify/checkoutkit/Color;)V + public final fun setHeaderFont (Lcom/shopify/checkoutkit/Color;)V + public final fun setProgressIndicator (Lcom/shopify/checkoutkit/Color;)V + public final fun setWebViewBackground (Lcom/shopify/checkoutkit/Color;)V + public final fun withCloseIcon (Lcom/shopify/checkoutkit/DrawableResource;)Lcom/shopify/checkoutkit/ColorsBuilder; + public final fun withCloseIconTint (Lcom/shopify/checkoutkit/Color;)Lcom/shopify/checkoutkit/ColorsBuilder; + public final fun withHeaderBackground (Lcom/shopify/checkoutkit/Color;)Lcom/shopify/checkoutkit/ColorsBuilder; + public final fun withHeaderFont (Lcom/shopify/checkoutkit/Color;)Lcom/shopify/checkoutkit/ColorsBuilder; + public final fun withProgressIndicator (Lcom/shopify/checkoutkit/Color;)Lcom/shopify/checkoutkit/ColorsBuilder; + public final fun withWebViewBackground (Lcom/shopify/checkoutkit/Color;)Lcom/shopify/checkoutkit/ColorsBuilder; +} + +public final class com/shopify/checkoutkit/Configuration { + public fun ()V + public final fun component1 ()Lcom/shopify/checkoutkit/ColorScheme; + public final fun component2 ()Lcom/shopify/checkoutkit/Preloading; + public final fun component3 ()Lcom/shopify/checkoutkit/ErrorRecovery; + public final fun component4 ()Lcom/shopify/checkoutkit/Platform; + public final fun component5 ()Lcom/shopify/checkoutkit/LogLevel; + public final fun copy (Lcom/shopify/checkoutkit/ColorScheme;Lcom/shopify/checkoutkit/Preloading;Lcom/shopify/checkoutkit/ErrorRecovery;Lcom/shopify/checkoutkit/Platform;Lcom/shopify/checkoutkit/LogLevel;)Lcom/shopify/checkoutkit/Configuration; + public static synthetic fun copy$default (Lcom/shopify/checkoutkit/Configuration;Lcom/shopify/checkoutkit/ColorScheme;Lcom/shopify/checkoutkit/Preloading;Lcom/shopify/checkoutkit/ErrorRecovery;Lcom/shopify/checkoutkit/Platform;Lcom/shopify/checkoutkit/LogLevel;ILjava/lang/Object;)Lcom/shopify/checkoutkit/Configuration; + public fun equals (Ljava/lang/Object;)Z + public final fun getColorScheme ()Lcom/shopify/checkoutkit/ColorScheme; + public final fun getErrorRecovery ()Lcom/shopify/checkoutkit/ErrorRecovery; + public final fun getLogLevel ()Lcom/shopify/checkoutkit/LogLevel; + public final fun getPlatform ()Lcom/shopify/checkoutkit/Platform; + public final fun getPreloading ()Lcom/shopify/checkoutkit/Preloading; + public fun hashCode ()I + public final fun setColorScheme (Lcom/shopify/checkoutkit/ColorScheme;)V + public final fun setErrorRecovery (Lcom/shopify/checkoutkit/ErrorRecovery;)V + public final fun setLogLevel (Lcom/shopify/checkoutkit/LogLevel;)V + public final fun setPlatform (Lcom/shopify/checkoutkit/Platform;)V + public final fun setPreloading (Lcom/shopify/checkoutkit/Preloading;)V + public fun toString ()Ljava/lang/String; +} + +public final class com/shopify/checkoutkit/ConfigurationException : com/shopify/checkoutkit/CheckoutException { + public static final field Companion Lcom/shopify/checkoutkit/ConfigurationException$Companion; + public static final field STOREFRONT_PASSWORD_REQUIRED Ljava/lang/String; + public static final field UNKNOWN Ljava/lang/String; + public fun (Ljava/lang/String;Ljava/lang/String;Z)V + public synthetic fun (Ljava/lang/String;Ljava/lang/String;ZILkotlin/jvm/internal/DefaultConstructorMarker;)V + public fun (Ljava/lang/String;Z)V + public fun (Z)V +} + +public final class com/shopify/checkoutkit/ConfigurationException$Companion { +} + +public abstract interface class com/shopify/checkoutkit/ConfigurationUpdater { + public abstract fun configure (Lcom/shopify/checkoutkit/Configuration;)V +} + +public final class com/shopify/checkoutkit/ContentType : java/lang/Enum { + public static final field Companion Lcom/shopify/checkoutkit/ContentType$Companion; + public static final field Markdown Lcom/shopify/checkoutkit/ContentType; + public static final field Plain Lcom/shopify/checkoutkit/ContentType; + public static fun getEntries ()Lkotlin/enums/EnumEntries; + public final fun getValue ()Ljava/lang/String; + public static fun valueOf (Ljava/lang/String;)Lcom/shopify/checkoutkit/ContentType; + public static fun values ()[Lcom/shopify/checkoutkit/ContentType; +} + +public final class com/shopify/checkoutkit/ContentType$Companion { + public final fun serializer ()Lkotlinx/serialization/KSerializer; +} + +public final class com/shopify/checkoutkit/Context { + public static final field Companion Lcom/shopify/checkoutkit/Context$Companion; + public fun ()V + public fun (Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)V + public synthetic fun (Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;ILkotlin/jvm/internal/DefaultConstructorMarker;)V + public final fun component1 ()Ljava/lang/String; + public final fun component2 ()Ljava/lang/String; + public final fun component3 ()Ljava/lang/String; + public final fun component4 ()Ljava/lang/String; + public final fun copy (Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)Lcom/shopify/checkoutkit/Context; + public static synthetic fun copy$default (Lcom/shopify/checkoutkit/Context;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;ILjava/lang/Object;)Lcom/shopify/checkoutkit/Context; + public fun equals (Ljava/lang/Object;)Z + public final fun getAddressCountry ()Ljava/lang/String; + public final fun getAddressRegion ()Ljava/lang/String; + public final fun getIntent ()Ljava/lang/String; + public final fun getPostalCode ()Ljava/lang/String; + public fun hashCode ()I + public fun toString ()Ljava/lang/String; +} + +public final class com/shopify/checkoutkit/Context$$serializer : kotlinx/serialization/internal/GeneratedSerializer { + public static final field INSTANCE Lcom/shopify/checkoutkit/Context$$serializer; + public fun childSerializers ()[Lkotlinx/serialization/KSerializer; + public fun deserialize (Lkotlinx/serialization/encoding/Decoder;)Lcom/shopify/checkoutkit/Context; + public synthetic fun deserialize (Lkotlinx/serialization/encoding/Decoder;)Ljava/lang/Object; + public fun getDescriptor ()Lkotlinx/serialization/descriptors/SerialDescriptor; + public fun serialize (Lkotlinx/serialization/encoding/Encoder;Lcom/shopify/checkoutkit/Context;)V + public synthetic fun serialize (Lkotlinx/serialization/encoding/Encoder;Ljava/lang/Object;)V + public fun typeParametersSerializers ()[Lkotlinx/serialization/KSerializer; +} + +public final class com/shopify/checkoutkit/Context$Companion { + public final fun serializer ()Lkotlinx/serialization/KSerializer; +} + +public final class com/shopify/checkoutkit/ContextClass { + public static final field Companion Lcom/shopify/checkoutkit/ContextClass$Companion; + public fun ()V + public fun (Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)V + public synthetic fun (Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;ILkotlin/jvm/internal/DefaultConstructorMarker;)V + public final fun component1 ()Ljava/lang/String; + public final fun component2 ()Ljava/lang/String; + public final fun component3 ()Ljava/lang/String; + public final fun component4 ()Ljava/lang/String; + public final fun copy (Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)Lcom/shopify/checkoutkit/ContextClass; + public static synthetic fun copy$default (Lcom/shopify/checkoutkit/ContextClass;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;ILjava/lang/Object;)Lcom/shopify/checkoutkit/ContextClass; + public fun equals (Ljava/lang/Object;)Z + public final fun getAddressCountry ()Ljava/lang/String; + public final fun getAddressRegion ()Ljava/lang/String; + public final fun getIntent ()Ljava/lang/String; + public final fun getPostalCode ()Ljava/lang/String; + public fun hashCode ()I + public fun toString ()Ljava/lang/String; +} + +public final class com/shopify/checkoutkit/ContextClass$$serializer : kotlinx/serialization/internal/GeneratedSerializer { + public static final field INSTANCE Lcom/shopify/checkoutkit/ContextClass$$serializer; + public fun childSerializers ()[Lkotlinx/serialization/KSerializer; + public fun deserialize (Lkotlinx/serialization/encoding/Decoder;)Lcom/shopify/checkoutkit/ContextClass; + public synthetic fun deserialize (Lkotlinx/serialization/encoding/Decoder;)Ljava/lang/Object; + public fun getDescriptor ()Lkotlinx/serialization/descriptors/SerialDescriptor; + public fun serialize (Lkotlinx/serialization/encoding/Encoder;Lcom/shopify/checkoutkit/ContextClass;)V + public synthetic fun serialize (Lkotlinx/serialization/encoding/Encoder;Ljava/lang/Object;)V + public fun typeParametersSerializers ()[Lkotlinx/serialization/KSerializer; +} + +public final class com/shopify/checkoutkit/ContextClass$Companion { + public final fun serializer ()Lkotlinx/serialization/KSerializer; +} + +public final class com/shopify/checkoutkit/CredentialCheckout { + public static final field Companion Lcom/shopify/checkoutkit/CredentialCheckout$Companion; + public fun ()V + public fun (Lcom/shopify/checkoutkit/CredentialPayment;)V + public synthetic fun (Lcom/shopify/checkoutkit/CredentialPayment;ILkotlin/jvm/internal/DefaultConstructorMarker;)V + public final fun component1 ()Lcom/shopify/checkoutkit/CredentialPayment; + public final fun copy (Lcom/shopify/checkoutkit/CredentialPayment;)Lcom/shopify/checkoutkit/CredentialCheckout; + public static synthetic fun copy$default (Lcom/shopify/checkoutkit/CredentialCheckout;Lcom/shopify/checkoutkit/CredentialPayment;ILjava/lang/Object;)Lcom/shopify/checkoutkit/CredentialCheckout; + public fun equals (Ljava/lang/Object;)Z + public final fun getPayment ()Lcom/shopify/checkoutkit/CredentialPayment; + public fun hashCode ()I + public fun toString ()Ljava/lang/String; +} + +public final class com/shopify/checkoutkit/CredentialCheckout$$serializer : kotlinx/serialization/internal/GeneratedSerializer { + public static final field INSTANCE Lcom/shopify/checkoutkit/CredentialCheckout$$serializer; + public fun childSerializers ()[Lkotlinx/serialization/KSerializer; + public fun deserialize (Lkotlinx/serialization/encoding/Decoder;)Lcom/shopify/checkoutkit/CredentialCheckout; + public synthetic fun deserialize (Lkotlinx/serialization/encoding/Decoder;)Ljava/lang/Object; + public fun getDescriptor ()Lkotlinx/serialization/descriptors/SerialDescriptor; + public fun serialize (Lkotlinx/serialization/encoding/Encoder;Lcom/shopify/checkoutkit/CredentialCheckout;)V + public synthetic fun serialize (Lkotlinx/serialization/encoding/Encoder;Ljava/lang/Object;)V + public fun typeParametersSerializers ()[Lkotlinx/serialization/KSerializer; +} + +public final class com/shopify/checkoutkit/CredentialCheckout$Companion { + public final fun serializer ()Lkotlinx/serialization/KSerializer; +} + +public final class com/shopify/checkoutkit/CredentialClass { + public static final field Companion Lcom/shopify/checkoutkit/CredentialClass$Companion; + public fun (Ljava/lang/String;)V + public final fun component1 ()Ljava/lang/String; + public final fun copy (Ljava/lang/String;)Lcom/shopify/checkoutkit/CredentialClass; + public static synthetic fun copy$default (Lcom/shopify/checkoutkit/CredentialClass;Ljava/lang/String;ILjava/lang/Object;)Lcom/shopify/checkoutkit/CredentialClass; + public fun equals (Ljava/lang/Object;)Z + public final fun getType ()Ljava/lang/String; + public fun hashCode ()I + public fun toString ()Ljava/lang/String; +} + +public final class com/shopify/checkoutkit/CredentialClass$$serializer : kotlinx/serialization/internal/GeneratedSerializer { + public static final field INSTANCE Lcom/shopify/checkoutkit/CredentialClass$$serializer; + public fun childSerializers ()[Lkotlinx/serialization/KSerializer; + public fun deserialize (Lkotlinx/serialization/encoding/Decoder;)Lcom/shopify/checkoutkit/CredentialClass; + public synthetic fun deserialize (Lkotlinx/serialization/encoding/Decoder;)Ljava/lang/Object; + public fun getDescriptor ()Lkotlinx/serialization/descriptors/SerialDescriptor; + public fun serialize (Lkotlinx/serialization/encoding/Encoder;Lcom/shopify/checkoutkit/CredentialClass;)V + public synthetic fun serialize (Lkotlinx/serialization/encoding/Encoder;Ljava/lang/Object;)V + public fun typeParametersSerializers ()[Lkotlinx/serialization/KSerializer; +} + +public final class com/shopify/checkoutkit/CredentialClass$Companion { + public final fun serializer ()Lkotlinx/serialization/KSerializer; +} + +public final class com/shopify/checkoutkit/CredentialPayment { + public static final field Companion Lcom/shopify/checkoutkit/CredentialPayment$Companion; + public fun ()V + public fun (Ljava/util/List;)V + public synthetic fun (Ljava/util/List;ILkotlin/jvm/internal/DefaultConstructorMarker;)V + public final fun component1 ()Ljava/util/List; + public final fun copy (Ljava/util/List;)Lcom/shopify/checkoutkit/CredentialPayment; + public static synthetic fun copy$default (Lcom/shopify/checkoutkit/CredentialPayment;Ljava/util/List;ILjava/lang/Object;)Lcom/shopify/checkoutkit/CredentialPayment; + public fun equals (Ljava/lang/Object;)Z + public final fun getInstruments ()Ljava/util/List; + public fun hashCode ()I + public fun toString ()Ljava/lang/String; +} + +public final class com/shopify/checkoutkit/CredentialPayment$$serializer : kotlinx/serialization/internal/GeneratedSerializer { + public static final field INSTANCE Lcom/shopify/checkoutkit/CredentialPayment$$serializer; + public fun childSerializers ()[Lkotlinx/serialization/KSerializer; + public fun deserialize (Lkotlinx/serialization/encoding/Decoder;)Lcom/shopify/checkoutkit/CredentialPayment; + public synthetic fun deserialize (Lkotlinx/serialization/encoding/Decoder;)Ljava/lang/Object; + public fun getDescriptor ()Lkotlinx/serialization/descriptors/SerialDescriptor; + public fun serialize (Lkotlinx/serialization/encoding/Encoder;Lcom/shopify/checkoutkit/CredentialPayment;)V + public synthetic fun serialize (Lkotlinx/serialization/encoding/Encoder;Ljava/lang/Object;)V + public fun typeParametersSerializers ()[Lkotlinx/serialization/KSerializer; +} + +public final class com/shopify/checkoutkit/CredentialPayment$Companion { + public final fun serializer ()Lkotlinx/serialization/KSerializer; +} + +public final class com/shopify/checkoutkit/CredentialResult { + public static final field Companion Lcom/shopify/checkoutkit/CredentialResult$Companion; + public fun (Lcom/shopify/checkoutkit/CredentialCheckout;)V + public final fun component1 ()Lcom/shopify/checkoutkit/CredentialCheckout; + public final fun copy (Lcom/shopify/checkoutkit/CredentialCheckout;)Lcom/shopify/checkoutkit/CredentialResult; + public static synthetic fun copy$default (Lcom/shopify/checkoutkit/CredentialResult;Lcom/shopify/checkoutkit/CredentialCheckout;ILjava/lang/Object;)Lcom/shopify/checkoutkit/CredentialResult; + public fun equals (Ljava/lang/Object;)Z + public final fun getCheckout ()Lcom/shopify/checkoutkit/CredentialCheckout; + public fun hashCode ()I + public fun toString ()Ljava/lang/String; +} + +public final class com/shopify/checkoutkit/CredentialResult$$serializer : kotlinx/serialization/internal/GeneratedSerializer { + public static final field INSTANCE Lcom/shopify/checkoutkit/CredentialResult$$serializer; + public fun childSerializers ()[Lkotlinx/serialization/KSerializer; + public fun deserialize (Lkotlinx/serialization/encoding/Decoder;)Lcom/shopify/checkoutkit/CredentialResult; + public synthetic fun deserialize (Lkotlinx/serialization/encoding/Decoder;)Ljava/lang/Object; + public fun getDescriptor ()Lkotlinx/serialization/descriptors/SerialDescriptor; + public fun serialize (Lkotlinx/serialization/encoding/Encoder;Lcom/shopify/checkoutkit/CredentialResult;)V + public synthetic fun serialize (Lkotlinx/serialization/encoding/Encoder;Ljava/lang/Object;)V + public fun typeParametersSerializers ()[Lkotlinx/serialization/KSerializer; +} + +public final class com/shopify/checkoutkit/CredentialResult$Companion { + public final fun serializer ()Lkotlinx/serialization/KSerializer; +} + +public abstract class com/shopify/checkoutkit/DefaultCheckoutEventProcessor : com/shopify/checkoutkit/CheckoutEventProcessor { + public fun (Landroid/content/Context;)V + public fun (Landroid/content/Context;Lcom/shopify/checkoutkit/LogWrapper;)V + public synthetic fun (Landroid/content/Context;Lcom/shopify/checkoutkit/LogWrapper;ILkotlin/jvm/internal/DefaultConstructorMarker;)V + public fun onCheckoutLinkClicked (Landroid/net/Uri;)V + public fun onGeolocationPermissionsHidePrompt ()V + public fun onGeolocationPermissionsShowPrompt (Ljava/lang/String;Landroid/webkit/GeolocationPermissions$Callback;)V + public fun onPermissionRequest (Landroid/webkit/PermissionRequest;)V + public fun onShowFileChooser (Landroid/webkit/WebView;Landroid/webkit/ValueCallback;Landroid/webkit/WebChromeClient$FileChooserParams;)Z + public fun onWebPixelEvent (Lcom/shopify/checkoutkit/pixelevents/PixelEvent;)V +} + +public final class com/shopify/checkoutkit/Display { + public static final field Companion Lcom/shopify/checkoutkit/Display$Companion; + public fun ()V + public fun (Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/Long;Ljava/lang/Long;Ljava/lang/String;)V + public synthetic fun (Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/Long;Ljava/lang/Long;Ljava/lang/String;ILkotlin/jvm/internal/DefaultConstructorMarker;)V + public final fun component1 ()Ljava/lang/String; + public final fun component2 ()Ljava/lang/String; + public final fun component3 ()Ljava/lang/String; + public final fun component4 ()Ljava/lang/Long; + public final fun component5 ()Ljava/lang/Long; + public final fun component6 ()Ljava/lang/String; + public final fun copy (Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/Long;Ljava/lang/Long;Ljava/lang/String;)Lcom/shopify/checkoutkit/Display; + public static synthetic fun copy$default (Lcom/shopify/checkoutkit/Display;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/Long;Ljava/lang/Long;Ljava/lang/String;ILjava/lang/Object;)Lcom/shopify/checkoutkit/Display; + public fun equals (Ljava/lang/Object;)Z + public final fun getBrand ()Ljava/lang/String; + public final fun getCardArt ()Ljava/lang/String; + public final fun getDescription ()Ljava/lang/String; + public final fun getExpiryMonth ()Ljava/lang/Long; + public final fun getExpiryYear ()Ljava/lang/Long; + public final fun getLastDigits ()Ljava/lang/String; + public fun hashCode ()I + public fun toString ()Ljava/lang/String; +} + +public final class com/shopify/checkoutkit/Display$$serializer : kotlinx/serialization/internal/GeneratedSerializer { + public static final field INSTANCE Lcom/shopify/checkoutkit/Display$$serializer; + public fun childSerializers ()[Lkotlinx/serialization/KSerializer; + public fun deserialize (Lkotlinx/serialization/encoding/Decoder;)Lcom/shopify/checkoutkit/Display; + public synthetic fun deserialize (Lkotlinx/serialization/encoding/Decoder;)Ljava/lang/Object; + public fun getDescriptor ()Lkotlinx/serialization/descriptors/SerialDescriptor; + public fun serialize (Lkotlinx/serialization/encoding/Encoder;Lcom/shopify/checkoutkit/Display;)V + public synthetic fun serialize (Lkotlinx/serialization/encoding/Encoder;Ljava/lang/Object;)V + public fun typeParametersSerializers ()[Lkotlinx/serialization/KSerializer; +} + +public final class com/shopify/checkoutkit/Display$Companion { + public final fun serializer ()Lkotlinx/serialization/KSerializer; +} + +public final class com/shopify/checkoutkit/DrawableResource { + public static final field Companion Lcom/shopify/checkoutkit/DrawableResource$Companion; + public fun (I)V + public final fun component1 ()I + public final fun copy (I)Lcom/shopify/checkoutkit/DrawableResource; + public static synthetic fun copy$default (Lcom/shopify/checkoutkit/DrawableResource;IILjava/lang/Object;)Lcom/shopify/checkoutkit/DrawableResource; + public fun equals (Ljava/lang/Object;)Z + public final fun getId ()I + public fun hashCode ()I + public fun toString ()Ljava/lang/String; +} + +public final class com/shopify/checkoutkit/DrawableResource$$serializer : kotlinx/serialization/internal/GeneratedSerializer { + public static final field INSTANCE Lcom/shopify/checkoutkit/DrawableResource$$serializer; + public fun childSerializers ()[Lkotlinx/serialization/KSerializer; + public fun deserialize (Lkotlinx/serialization/encoding/Decoder;)Lcom/shopify/checkoutkit/DrawableResource; + public synthetic fun deserialize (Lkotlinx/serialization/encoding/Decoder;)Ljava/lang/Object; + public fun getDescriptor ()Lkotlinx/serialization/descriptors/SerialDescriptor; + public fun serialize (Lkotlinx/serialization/encoding/Encoder;Lcom/shopify/checkoutkit/DrawableResource;)V + public synthetic fun serialize (Lkotlinx/serialization/encoding/Encoder;Ljava/lang/Object;)V + public fun typeParametersSerializers ()[Lkotlinx/serialization/KSerializer; +} + +public final class com/shopify/checkoutkit/DrawableResource$Companion { + public final fun serializer ()Lkotlinx/serialization/KSerializer; +} + +public final class com/shopify/checkoutkit/EmbeddedTransportConfig { + public static final field Companion Lcom/shopify/checkoutkit/EmbeddedTransportConfig$Companion; + public fun ()V + public fun (Ljava/util/List;)V + public synthetic fun (Ljava/util/List;ILkotlin/jvm/internal/DefaultConstructorMarker;)V + public final fun component1 ()Ljava/util/List; + public final fun copy (Ljava/util/List;)Lcom/shopify/checkoutkit/EmbeddedTransportConfig; + public static synthetic fun copy$default (Lcom/shopify/checkoutkit/EmbeddedTransportConfig;Ljava/util/List;ILjava/lang/Object;)Lcom/shopify/checkoutkit/EmbeddedTransportConfig; + public fun equals (Ljava/lang/Object;)Z + public final fun getDelegate ()Ljava/util/List; + public fun hashCode ()I + public fun toString ()Ljava/lang/String; +} + +public final class com/shopify/checkoutkit/EmbeddedTransportConfig$$serializer : kotlinx/serialization/internal/GeneratedSerializer { + public static final field INSTANCE Lcom/shopify/checkoutkit/EmbeddedTransportConfig$$serializer; + public fun childSerializers ()[Lkotlinx/serialization/KSerializer; + public fun deserialize (Lkotlinx/serialization/encoding/Decoder;)Lcom/shopify/checkoutkit/EmbeddedTransportConfig; + public synthetic fun deserialize (Lkotlinx/serialization/encoding/Decoder;)Ljava/lang/Object; + public fun getDescriptor ()Lkotlinx/serialization/descriptors/SerialDescriptor; + public fun serialize (Lkotlinx/serialization/encoding/Encoder;Lcom/shopify/checkoutkit/EmbeddedTransportConfig;)V + public synthetic fun serialize (Lkotlinx/serialization/encoding/Encoder;Ljava/lang/Object;)V + public fun typeParametersSerializers ()[Lkotlinx/serialization/KSerializer; +} + +public final class com/shopify/checkoutkit/EmbeddedTransportConfig$Companion { + public final fun serializer ()Lkotlinx/serialization/KSerializer; +} + +public abstract interface class com/shopify/checkoutkit/ErrorRecovery { + public abstract fun preRecoveryActions (Lcom/shopify/checkoutkit/CheckoutException;Ljava/lang/String;)V + public abstract fun shouldRecoverFromError (Lcom/shopify/checkoutkit/CheckoutException;)Z +} + +public final class com/shopify/checkoutkit/ErrorRecovery$DefaultImpls { + public static fun preRecoveryActions (Lcom/shopify/checkoutkit/ErrorRecovery;Lcom/shopify/checkoutkit/CheckoutException;Ljava/lang/String;)V + public static fun shouldRecoverFromError (Lcom/shopify/checkoutkit/ErrorRecovery;Lcom/shopify/checkoutkit/CheckoutException;)Z +} + +public final class com/shopify/checkoutkit/EventElement { + public static final field Companion Lcom/shopify/checkoutkit/EventElement$Companion; + public fun (Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/util/List;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)V + public synthetic fun (Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/util/List;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;ILkotlin/jvm/internal/DefaultConstructorMarker;)V + public final fun component1 ()Ljava/lang/String; + public final fun component2 ()Ljava/lang/String; + public final fun component3 ()Ljava/lang/String; + public final fun component4 ()Ljava/util/List; + public final fun component5 ()Ljava/lang/String; + public final fun component6 ()Ljava/lang/String; + public final fun component7 ()Ljava/lang/String; + public final fun component8 ()Ljava/lang/String; + public final fun copy (Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/util/List;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)Lcom/shopify/checkoutkit/EventElement; + public static synthetic fun copy$default (Lcom/shopify/checkoutkit/EventElement;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/util/List;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;ILjava/lang/Object;)Lcom/shopify/checkoutkit/EventElement; + public fun equals (Ljava/lang/Object;)Z + public final fun getCarrier ()Ljava/lang/String; + public final fun getDescription ()Ljava/lang/String; + public final fun getId ()Ljava/lang/String; + public final fun getLineItems ()Ljava/util/List; + public final fun getOccurredAt ()Ljava/lang/String; + public final fun getTrackingNumber ()Ljava/lang/String; + public final fun getTrackingURL ()Ljava/lang/String; + public final fun getType ()Ljava/lang/String; + public fun hashCode ()I + public fun toString ()Ljava/lang/String; +} + +public final class com/shopify/checkoutkit/EventElement$$serializer : kotlinx/serialization/internal/GeneratedSerializer { + public static final field INSTANCE Lcom/shopify/checkoutkit/EventElement$$serializer; + public fun childSerializers ()[Lkotlinx/serialization/KSerializer; + public fun deserialize (Lkotlinx/serialization/encoding/Decoder;)Lcom/shopify/checkoutkit/EventElement; + public synthetic fun deserialize (Lkotlinx/serialization/encoding/Decoder;)Ljava/lang/Object; + public fun getDescriptor ()Lkotlinx/serialization/descriptors/SerialDescriptor; + public fun serialize (Lkotlinx/serialization/encoding/Encoder;Lcom/shopify/checkoutkit/EventElement;)V + public synthetic fun serialize (Lkotlinx/serialization/encoding/Encoder;Ljava/lang/Object;)V + public fun typeParametersSerializers ()[Lkotlinx/serialization/KSerializer; +} + +public final class com/shopify/checkoutkit/EventElement$Companion { + public final fun serializer ()Lkotlinx/serialization/KSerializer; +} + +public final class com/shopify/checkoutkit/EventLineItem { + public static final field Companion Lcom/shopify/checkoutkit/EventLineItem$Companion; + public fun (Ljava/lang/String;J)V + public final fun component1 ()Ljava/lang/String; + public final fun component2 ()J + public final fun copy (Ljava/lang/String;J)Lcom/shopify/checkoutkit/EventLineItem; + public static synthetic fun copy$default (Lcom/shopify/checkoutkit/EventLineItem;Ljava/lang/String;JILjava/lang/Object;)Lcom/shopify/checkoutkit/EventLineItem; + public fun equals (Ljava/lang/Object;)Z + public final fun getId ()Ljava/lang/String; + public final fun getQuantity ()J + public fun hashCode ()I + public fun toString ()Ljava/lang/String; +} + +public final class com/shopify/checkoutkit/EventLineItem$$serializer : kotlinx/serialization/internal/GeneratedSerializer { + public static final field INSTANCE Lcom/shopify/checkoutkit/EventLineItem$$serializer; + public fun childSerializers ()[Lkotlinx/serialization/KSerializer; + public fun deserialize (Lkotlinx/serialization/encoding/Decoder;)Lcom/shopify/checkoutkit/EventLineItem; + public synthetic fun deserialize (Lkotlinx/serialization/encoding/Decoder;)Ljava/lang/Object; + public fun getDescriptor ()Lkotlinx/serialization/descriptors/SerialDescriptor; + public fun serialize (Lkotlinx/serialization/encoding/Encoder;Lcom/shopify/checkoutkit/EventLineItem;)V + public synthetic fun serialize (Lkotlinx/serialization/encoding/Encoder;Ljava/lang/Object;)V + public fun typeParametersSerializers ()[Lkotlinx/serialization/KSerializer; +} + +public final class com/shopify/checkoutkit/EventLineItem$Companion { + public final fun serializer ()Lkotlinx/serialization/KSerializer; +} + +public final class com/shopify/checkoutkit/Expectation { + public static final field Companion Lcom/shopify/checkoutkit/Expectation$Companion; + public fun (Ljava/lang/String;Lcom/shopify/checkoutkit/BillingAddressClass;Ljava/lang/String;Ljava/lang/String;Ljava/util/List;Lcom/shopify/checkoutkit/MethodType;)V + public synthetic fun (Ljava/lang/String;Lcom/shopify/checkoutkit/BillingAddressClass;Ljava/lang/String;Ljava/lang/String;Ljava/util/List;Lcom/shopify/checkoutkit/MethodType;ILkotlin/jvm/internal/DefaultConstructorMarker;)V + public final fun component1 ()Ljava/lang/String; + public final fun component2 ()Lcom/shopify/checkoutkit/BillingAddressClass; + public final fun component3 ()Ljava/lang/String; + public final fun component4 ()Ljava/lang/String; + public final fun component5 ()Ljava/util/List; + public final fun component6 ()Lcom/shopify/checkoutkit/MethodType; + public final fun copy (Ljava/lang/String;Lcom/shopify/checkoutkit/BillingAddressClass;Ljava/lang/String;Ljava/lang/String;Ljava/util/List;Lcom/shopify/checkoutkit/MethodType;)Lcom/shopify/checkoutkit/Expectation; + public static synthetic fun copy$default (Lcom/shopify/checkoutkit/Expectation;Ljava/lang/String;Lcom/shopify/checkoutkit/BillingAddressClass;Ljava/lang/String;Ljava/lang/String;Ljava/util/List;Lcom/shopify/checkoutkit/MethodType;ILjava/lang/Object;)Lcom/shopify/checkoutkit/Expectation; + public fun equals (Ljava/lang/Object;)Z + public final fun getDescription ()Ljava/lang/String; + public final fun getDestination ()Lcom/shopify/checkoutkit/BillingAddressClass; + public final fun getFulfillableOn ()Ljava/lang/String; + public final fun getId ()Ljava/lang/String; + public final fun getLineItems ()Ljava/util/List; + public final fun getMethodType ()Lcom/shopify/checkoutkit/MethodType; + public fun hashCode ()I + public fun toString ()Ljava/lang/String; +} + +public final class com/shopify/checkoutkit/Expectation$$serializer : kotlinx/serialization/internal/GeneratedSerializer { + public static final field INSTANCE Lcom/shopify/checkoutkit/Expectation$$serializer; + public fun childSerializers ()[Lkotlinx/serialization/KSerializer; + public fun deserialize (Lkotlinx/serialization/encoding/Decoder;)Lcom/shopify/checkoutkit/Expectation; + public synthetic fun deserialize (Lkotlinx/serialization/encoding/Decoder;)Ljava/lang/Object; + public fun getDescriptor ()Lkotlinx/serialization/descriptors/SerialDescriptor; + public fun serialize (Lkotlinx/serialization/encoding/Encoder;Lcom/shopify/checkoutkit/Expectation;)V + public synthetic fun serialize (Lkotlinx/serialization/encoding/Encoder;Ljava/lang/Object;)V + public fun typeParametersSerializers ()[Lkotlinx/serialization/KSerializer; +} + +public final class com/shopify/checkoutkit/Expectation$Companion { + public final fun serializer ()Lkotlinx/serialization/KSerializer; +} + +public final class com/shopify/checkoutkit/ExpectationElement { + public static final field Companion Lcom/shopify/checkoutkit/ExpectationElement$Companion; + public fun (Ljava/lang/String;Lcom/shopify/checkoutkit/BillingAddressClass;Ljava/lang/String;Ljava/lang/String;Ljava/util/List;Lcom/shopify/checkoutkit/MethodType;)V + public synthetic fun (Ljava/lang/String;Lcom/shopify/checkoutkit/BillingAddressClass;Ljava/lang/String;Ljava/lang/String;Ljava/util/List;Lcom/shopify/checkoutkit/MethodType;ILkotlin/jvm/internal/DefaultConstructorMarker;)V + public final fun component1 ()Ljava/lang/String; + public final fun component2 ()Lcom/shopify/checkoutkit/BillingAddressClass; + public final fun component3 ()Ljava/lang/String; + public final fun component4 ()Ljava/lang/String; + public final fun component5 ()Ljava/util/List; + public final fun component6 ()Lcom/shopify/checkoutkit/MethodType; + public final fun copy (Ljava/lang/String;Lcom/shopify/checkoutkit/BillingAddressClass;Ljava/lang/String;Ljava/lang/String;Ljava/util/List;Lcom/shopify/checkoutkit/MethodType;)Lcom/shopify/checkoutkit/ExpectationElement; + public static synthetic fun copy$default (Lcom/shopify/checkoutkit/ExpectationElement;Ljava/lang/String;Lcom/shopify/checkoutkit/BillingAddressClass;Ljava/lang/String;Ljava/lang/String;Ljava/util/List;Lcom/shopify/checkoutkit/MethodType;ILjava/lang/Object;)Lcom/shopify/checkoutkit/ExpectationElement; + public fun equals (Ljava/lang/Object;)Z + public final fun getDescription ()Ljava/lang/String; + public final fun getDestination ()Lcom/shopify/checkoutkit/BillingAddressClass; + public final fun getFulfillableOn ()Ljava/lang/String; + public final fun getId ()Ljava/lang/String; + public final fun getLineItems ()Ljava/util/List; + public final fun getMethodType ()Lcom/shopify/checkoutkit/MethodType; + public fun hashCode ()I + public fun toString ()Ljava/lang/String; +} + +public final class com/shopify/checkoutkit/ExpectationElement$$serializer : kotlinx/serialization/internal/GeneratedSerializer { + public static final field INSTANCE Lcom/shopify/checkoutkit/ExpectationElement$$serializer; + public fun childSerializers ()[Lkotlinx/serialization/KSerializer; + public fun deserialize (Lkotlinx/serialization/encoding/Decoder;)Lcom/shopify/checkoutkit/ExpectationElement; + public synthetic fun deserialize (Lkotlinx/serialization/encoding/Decoder;)Ljava/lang/Object; + public fun getDescriptor ()Lkotlinx/serialization/descriptors/SerialDescriptor; + public fun serialize (Lkotlinx/serialization/encoding/Encoder;Lcom/shopify/checkoutkit/ExpectationElement;)V + public synthetic fun serialize (Lkotlinx/serialization/encoding/Encoder;Ljava/lang/Object;)V + public fun typeParametersSerializers ()[Lkotlinx/serialization/KSerializer; +} + +public final class com/shopify/checkoutkit/ExpectationElement$Companion { + public final fun serializer ()Lkotlinx/serialization/KSerializer; +} + +public final class com/shopify/checkoutkit/ExpectationLineItem { + public static final field Companion Lcom/shopify/checkoutkit/ExpectationLineItem$Companion; + public fun (Ljava/lang/String;J)V + public final fun component1 ()Ljava/lang/String; + public final fun component2 ()J + public final fun copy (Ljava/lang/String;J)Lcom/shopify/checkoutkit/ExpectationLineItem; + public static synthetic fun copy$default (Lcom/shopify/checkoutkit/ExpectationLineItem;Ljava/lang/String;JILjava/lang/Object;)Lcom/shopify/checkoutkit/ExpectationLineItem; + public fun equals (Ljava/lang/Object;)Z + public final fun getId ()Ljava/lang/String; + public final fun getQuantity ()J + public fun hashCode ()I + public fun toString ()Ljava/lang/String; +} + +public final class com/shopify/checkoutkit/ExpectationLineItem$$serializer : kotlinx/serialization/internal/GeneratedSerializer { + public static final field INSTANCE Lcom/shopify/checkoutkit/ExpectationLineItem$$serializer; + public fun childSerializers ()[Lkotlinx/serialization/KSerializer; + public fun deserialize (Lkotlinx/serialization/encoding/Decoder;)Lcom/shopify/checkoutkit/ExpectationLineItem; + public synthetic fun deserialize (Lkotlinx/serialization/encoding/Decoder;)Ljava/lang/Object; + public fun getDescriptor ()Lkotlinx/serialization/descriptors/SerialDescriptor; + public fun serialize (Lkotlinx/serialization/encoding/Encoder;Lcom/shopify/checkoutkit/ExpectationLineItem;)V + public synthetic fun serialize (Lkotlinx/serialization/encoding/Encoder;Ljava/lang/Object;)V + public fun typeParametersSerializers ()[Lkotlinx/serialization/KSerializer; +} + +public final class com/shopify/checkoutkit/ExpectationLineItem$Companion { + public final fun serializer ()Lkotlinx/serialization/KSerializer; +} + +public final class com/shopify/checkoutkit/ExpectationLineItemClass { + public static final field Companion Lcom/shopify/checkoutkit/ExpectationLineItemClass$Companion; + public fun (Ljava/lang/String;J)V + public final fun component1 ()Ljava/lang/String; + public final fun component2 ()J + public final fun copy (Ljava/lang/String;J)Lcom/shopify/checkoutkit/ExpectationLineItemClass; + public static synthetic fun copy$default (Lcom/shopify/checkoutkit/ExpectationLineItemClass;Ljava/lang/String;JILjava/lang/Object;)Lcom/shopify/checkoutkit/ExpectationLineItemClass; + public fun equals (Ljava/lang/Object;)Z + public final fun getId ()Ljava/lang/String; + public final fun getQuantity ()J + public fun hashCode ()I + public fun toString ()Ljava/lang/String; +} + +public final class com/shopify/checkoutkit/ExpectationLineItemClass$$serializer : kotlinx/serialization/internal/GeneratedSerializer { + public static final field INSTANCE Lcom/shopify/checkoutkit/ExpectationLineItemClass$$serializer; + public fun childSerializers ()[Lkotlinx/serialization/KSerializer; + public fun deserialize (Lkotlinx/serialization/encoding/Decoder;)Lcom/shopify/checkoutkit/ExpectationLineItemClass; + public synthetic fun deserialize (Lkotlinx/serialization/encoding/Decoder;)Ljava/lang/Object; + public fun getDescriptor ()Lkotlinx/serialization/descriptors/SerialDescriptor; + public fun serialize (Lkotlinx/serialization/encoding/Encoder;Lcom/shopify/checkoutkit/ExpectationLineItemClass;)V + public synthetic fun serialize (Lkotlinx/serialization/encoding/Encoder;Ljava/lang/Object;)V + public fun typeParametersSerializers ()[Lkotlinx/serialization/KSerializer; +} + +public final class com/shopify/checkoutkit/ExpectationLineItemClass$Companion { + public final fun serializer ()Lkotlinx/serialization/KSerializer; +} + +public abstract class com/shopify/checkoutkit/Extends { + public static final field Companion Lcom/shopify/checkoutkit/Extends$Companion; + public synthetic fun (ILkotlinx/serialization/internal/SerializationConstructorMarker;)V + public static final synthetic fun write$Self (Lcom/shopify/checkoutkit/Extends;Lkotlinx/serialization/encoding/CompositeEncoder;Lkotlinx/serialization/descriptors/SerialDescriptor;)V +} + +public final class com/shopify/checkoutkit/Extends$Companion { + public final fun serializer ()Lkotlinx/serialization/KSerializer; +} + +public final class com/shopify/checkoutkit/Extends$StringArrayValue : com/shopify/checkoutkit/Extends { + public fun (Ljava/util/List;)V + public final fun getValue ()Ljava/util/List; +} + +public final class com/shopify/checkoutkit/Extends$StringValue : com/shopify/checkoutkit/Extends { + public fun (Ljava/lang/String;)V + public final fun getValue ()Ljava/lang/String; +} + +public final class com/shopify/checkoutkit/Fulfillment { + public static final field Companion Lcom/shopify/checkoutkit/Fulfillment$Companion; + public fun ()V + public fun (Ljava/util/List;Ljava/util/List;)V + public synthetic fun (Ljava/util/List;Ljava/util/List;ILkotlin/jvm/internal/DefaultConstructorMarker;)V + public final fun component1 ()Ljava/util/List; + public final fun component2 ()Ljava/util/List; + public final fun copy (Ljava/util/List;Ljava/util/List;)Lcom/shopify/checkoutkit/Fulfillment; + public static synthetic fun copy$default (Lcom/shopify/checkoutkit/Fulfillment;Ljava/util/List;Ljava/util/List;ILjava/lang/Object;)Lcom/shopify/checkoutkit/Fulfillment; + public fun equals (Ljava/lang/Object;)Z + public final fun getAvailableMethods ()Ljava/util/List; + public final fun getMethods ()Ljava/util/List; + public fun hashCode ()I + public fun toString ()Ljava/lang/String; +} + +public final class com/shopify/checkoutkit/Fulfillment$$serializer : kotlinx/serialization/internal/GeneratedSerializer { + public static final field INSTANCE Lcom/shopify/checkoutkit/Fulfillment$$serializer; + public fun childSerializers ()[Lkotlinx/serialization/KSerializer; + public fun deserialize (Lkotlinx/serialization/encoding/Decoder;)Lcom/shopify/checkoutkit/Fulfillment; + public synthetic fun deserialize (Lkotlinx/serialization/encoding/Decoder;)Ljava/lang/Object; + public fun getDescriptor ()Lkotlinx/serialization/descriptors/SerialDescriptor; + public fun serialize (Lkotlinx/serialization/encoding/Encoder;Lcom/shopify/checkoutkit/Fulfillment;)V + public synthetic fun serialize (Lkotlinx/serialization/encoding/Encoder;Ljava/lang/Object;)V + public fun typeParametersSerializers ()[Lkotlinx/serialization/KSerializer; +} + +public final class com/shopify/checkoutkit/Fulfillment$Companion { + public final fun serializer ()Lkotlinx/serialization/KSerializer; +} + +public final class com/shopify/checkoutkit/FulfillmentAvailableMethod { + public static final field Companion Lcom/shopify/checkoutkit/FulfillmentAvailableMethod$Companion; + public fun (Ljava/lang/String;Ljava/lang/String;Ljava/util/List;Lcom/shopify/checkoutkit/TypeElement;)V + public synthetic fun (Ljava/lang/String;Ljava/lang/String;Ljava/util/List;Lcom/shopify/checkoutkit/TypeElement;ILkotlin/jvm/internal/DefaultConstructorMarker;)V + public final fun component1 ()Ljava/lang/String; + public final fun component2 ()Ljava/lang/String; + public final fun component3 ()Ljava/util/List; + public final fun component4 ()Lcom/shopify/checkoutkit/TypeElement; + public final fun copy (Ljava/lang/String;Ljava/lang/String;Ljava/util/List;Lcom/shopify/checkoutkit/TypeElement;)Lcom/shopify/checkoutkit/FulfillmentAvailableMethod; + public static synthetic fun copy$default (Lcom/shopify/checkoutkit/FulfillmentAvailableMethod;Ljava/lang/String;Ljava/lang/String;Ljava/util/List;Lcom/shopify/checkoutkit/TypeElement;ILjava/lang/Object;)Lcom/shopify/checkoutkit/FulfillmentAvailableMethod; + public fun equals (Ljava/lang/Object;)Z + public final fun getDescription ()Ljava/lang/String; + public final fun getFulfillableOn ()Ljava/lang/String; + public final fun getLineItemIDS ()Ljava/util/List; + public final fun getType ()Lcom/shopify/checkoutkit/TypeElement; + public fun hashCode ()I + public fun toString ()Ljava/lang/String; +} + +public final class com/shopify/checkoutkit/FulfillmentAvailableMethod$$serializer : kotlinx/serialization/internal/GeneratedSerializer { + public static final field INSTANCE Lcom/shopify/checkoutkit/FulfillmentAvailableMethod$$serializer; + public fun childSerializers ()[Lkotlinx/serialization/KSerializer; + public fun deserialize (Lkotlinx/serialization/encoding/Decoder;)Lcom/shopify/checkoutkit/FulfillmentAvailableMethod; + public synthetic fun deserialize (Lkotlinx/serialization/encoding/Decoder;)Ljava/lang/Object; + public fun getDescriptor ()Lkotlinx/serialization/descriptors/SerialDescriptor; + public fun serialize (Lkotlinx/serialization/encoding/Encoder;Lcom/shopify/checkoutkit/FulfillmentAvailableMethod;)V + public synthetic fun serialize (Lkotlinx/serialization/encoding/Encoder;Ljava/lang/Object;)V + public fun typeParametersSerializers ()[Lkotlinx/serialization/KSerializer; +} + +public final class com/shopify/checkoutkit/FulfillmentAvailableMethod$Companion { + public final fun serializer ()Lkotlinx/serialization/KSerializer; +} + +public final class com/shopify/checkoutkit/FulfillmentClass { + public static final field Companion Lcom/shopify/checkoutkit/FulfillmentClass$Companion; + public fun ()V + public fun (Ljava/util/List;Ljava/util/List;)V + public synthetic fun (Ljava/util/List;Ljava/util/List;ILkotlin/jvm/internal/DefaultConstructorMarker;)V + public final fun component1 ()Ljava/util/List; + public final fun component2 ()Ljava/util/List; + public final fun copy (Ljava/util/List;Ljava/util/List;)Lcom/shopify/checkoutkit/FulfillmentClass; + public static synthetic fun copy$default (Lcom/shopify/checkoutkit/FulfillmentClass;Ljava/util/List;Ljava/util/List;ILjava/lang/Object;)Lcom/shopify/checkoutkit/FulfillmentClass; + public fun equals (Ljava/lang/Object;)Z + public final fun getEvents ()Ljava/util/List; + public final fun getExpectations ()Ljava/util/List; + public fun hashCode ()I + public fun toString ()Ljava/lang/String; +} + +public final class com/shopify/checkoutkit/FulfillmentClass$$serializer : kotlinx/serialization/internal/GeneratedSerializer { + public static final field INSTANCE Lcom/shopify/checkoutkit/FulfillmentClass$$serializer; + public fun childSerializers ()[Lkotlinx/serialization/KSerializer; + public fun deserialize (Lkotlinx/serialization/encoding/Decoder;)Lcom/shopify/checkoutkit/FulfillmentClass; + public synthetic fun deserialize (Lkotlinx/serialization/encoding/Decoder;)Ljava/lang/Object; + public fun getDescriptor ()Lkotlinx/serialization/descriptors/SerialDescriptor; + public fun serialize (Lkotlinx/serialization/encoding/Encoder;Lcom/shopify/checkoutkit/FulfillmentClass;)V + public synthetic fun serialize (Lkotlinx/serialization/encoding/Encoder;Ljava/lang/Object;)V + public fun typeParametersSerializers ()[Lkotlinx/serialization/KSerializer; +} + +public final class com/shopify/checkoutkit/FulfillmentClass$Companion { + public final fun serializer ()Lkotlinx/serialization/KSerializer; +} + +public final class com/shopify/checkoutkit/FulfillmentDestination { + public static final field Companion Lcom/shopify/checkoutkit/FulfillmentDestination$Companion; + public fun (Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Lcom/shopify/checkoutkit/BillingAddressClass;Ljava/lang/String;)V + public synthetic fun (Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Lcom/shopify/checkoutkit/BillingAddressClass;Ljava/lang/String;ILkotlin/jvm/internal/DefaultConstructorMarker;)V + public final fun component1 ()Ljava/lang/String; + public final fun component10 ()Ljava/lang/String; + public final fun component11 ()Lcom/shopify/checkoutkit/BillingAddressClass; + public final fun component12 ()Ljava/lang/String; + public final fun component2 ()Ljava/lang/String; + public final fun component3 ()Ljava/lang/String; + public final fun component4 ()Ljava/lang/String; + public final fun component5 ()Ljava/lang/String; + public final fun component6 ()Ljava/lang/String; + public final fun component7 ()Ljava/lang/String; + public final fun component8 ()Ljava/lang/String; + public final fun component9 ()Ljava/lang/String; + public final fun copy (Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Lcom/shopify/checkoutkit/BillingAddressClass;Ljava/lang/String;)Lcom/shopify/checkoutkit/FulfillmentDestination; + public static synthetic fun copy$default (Lcom/shopify/checkoutkit/FulfillmentDestination;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Lcom/shopify/checkoutkit/BillingAddressClass;Ljava/lang/String;ILjava/lang/Object;)Lcom/shopify/checkoutkit/FulfillmentDestination; + public fun equals (Ljava/lang/Object;)Z + public final fun getAddress ()Lcom/shopify/checkoutkit/BillingAddressClass; + public final fun getAddressCountry ()Ljava/lang/String; + public final fun getAddressLocality ()Ljava/lang/String; + public final fun getAddressRegion ()Ljava/lang/String; + public final fun getExtendedAddress ()Ljava/lang/String; + public final fun getFirstName ()Ljava/lang/String; + public final fun getId ()Ljava/lang/String; + public final fun getLastName ()Ljava/lang/String; + public final fun getName ()Ljava/lang/String; + public final fun getPhoneNumber ()Ljava/lang/String; + public final fun getPostalCode ()Ljava/lang/String; + public final fun getStreetAddress ()Ljava/lang/String; + public fun hashCode ()I + public fun toString ()Ljava/lang/String; +} + +public final class com/shopify/checkoutkit/FulfillmentDestination$$serializer : kotlinx/serialization/internal/GeneratedSerializer { + public static final field INSTANCE Lcom/shopify/checkoutkit/FulfillmentDestination$$serializer; + public fun childSerializers ()[Lkotlinx/serialization/KSerializer; + public fun deserialize (Lkotlinx/serialization/encoding/Decoder;)Lcom/shopify/checkoutkit/FulfillmentDestination; + public synthetic fun deserialize (Lkotlinx/serialization/encoding/Decoder;)Ljava/lang/Object; + public fun getDescriptor ()Lkotlinx/serialization/descriptors/SerialDescriptor; + public fun serialize (Lkotlinx/serialization/encoding/Encoder;Lcom/shopify/checkoutkit/FulfillmentDestination;)V + public synthetic fun serialize (Lkotlinx/serialization/encoding/Encoder;Ljava/lang/Object;)V + public fun typeParametersSerializers ()[Lkotlinx/serialization/KSerializer; +} + +public final class com/shopify/checkoutkit/FulfillmentDestination$Companion { + public final fun serializer ()Lkotlinx/serialization/KSerializer; +} + +public final class com/shopify/checkoutkit/FulfillmentDestinationElement { + public static final field Companion Lcom/shopify/checkoutkit/FulfillmentDestinationElement$Companion; + public fun (Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Lcom/shopify/checkoutkit/BillingAddressClass;Ljava/lang/String;)V + public synthetic fun (Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Lcom/shopify/checkoutkit/BillingAddressClass;Ljava/lang/String;ILkotlin/jvm/internal/DefaultConstructorMarker;)V + public final fun component1 ()Ljava/lang/String; + public final fun component10 ()Ljava/lang/String; + public final fun component11 ()Lcom/shopify/checkoutkit/BillingAddressClass; + public final fun component12 ()Ljava/lang/String; + public final fun component2 ()Ljava/lang/String; + public final fun component3 ()Ljava/lang/String; + public final fun component4 ()Ljava/lang/String; + public final fun component5 ()Ljava/lang/String; + public final fun component6 ()Ljava/lang/String; + public final fun component7 ()Ljava/lang/String; + public final fun component8 ()Ljava/lang/String; + public final fun component9 ()Ljava/lang/String; + public final fun copy (Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Lcom/shopify/checkoutkit/BillingAddressClass;Ljava/lang/String;)Lcom/shopify/checkoutkit/FulfillmentDestinationElement; + public static synthetic fun copy$default (Lcom/shopify/checkoutkit/FulfillmentDestinationElement;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Lcom/shopify/checkoutkit/BillingAddressClass;Ljava/lang/String;ILjava/lang/Object;)Lcom/shopify/checkoutkit/FulfillmentDestinationElement; + public fun equals (Ljava/lang/Object;)Z + public final fun getAddress ()Lcom/shopify/checkoutkit/BillingAddressClass; + public final fun getAddressCountry ()Ljava/lang/String; + public final fun getAddressLocality ()Ljava/lang/String; + public final fun getAddressRegion ()Ljava/lang/String; + public final fun getExtendedAddress ()Ljava/lang/String; + public final fun getFirstName ()Ljava/lang/String; + public final fun getId ()Ljava/lang/String; + public final fun getLastName ()Ljava/lang/String; + public final fun getName ()Ljava/lang/String; + public final fun getPhoneNumber ()Ljava/lang/String; + public final fun getPostalCode ()Ljava/lang/String; + public final fun getStreetAddress ()Ljava/lang/String; + public fun hashCode ()I + public fun toString ()Ljava/lang/String; +} + +public final class com/shopify/checkoutkit/FulfillmentDestinationElement$$serializer : kotlinx/serialization/internal/GeneratedSerializer { + public static final field INSTANCE Lcom/shopify/checkoutkit/FulfillmentDestinationElement$$serializer; + public fun childSerializers ()[Lkotlinx/serialization/KSerializer; + public fun deserialize (Lkotlinx/serialization/encoding/Decoder;)Lcom/shopify/checkoutkit/FulfillmentDestinationElement; + public synthetic fun deserialize (Lkotlinx/serialization/encoding/Decoder;)Ljava/lang/Object; + public fun getDescriptor ()Lkotlinx/serialization/descriptors/SerialDescriptor; + public fun serialize (Lkotlinx/serialization/encoding/Encoder;Lcom/shopify/checkoutkit/FulfillmentDestinationElement;)V + public synthetic fun serialize (Lkotlinx/serialization/encoding/Encoder;Ljava/lang/Object;)V + public fun typeParametersSerializers ()[Lkotlinx/serialization/KSerializer; +} + +public final class com/shopify/checkoutkit/FulfillmentDestinationElement$Companion { + public final fun serializer ()Lkotlinx/serialization/KSerializer; +} + +public final class com/shopify/checkoutkit/FulfillmentEvent { + public static final field Companion Lcom/shopify/checkoutkit/FulfillmentEvent$Companion; + public fun (Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/util/List;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)V + public synthetic fun (Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/util/List;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;ILkotlin/jvm/internal/DefaultConstructorMarker;)V + public final fun component1 ()Ljava/lang/String; + public final fun component2 ()Ljava/lang/String; + public final fun component3 ()Ljava/lang/String; + public final fun component4 ()Ljava/util/List; + public final fun component5 ()Ljava/lang/String; + public final fun component6 ()Ljava/lang/String; + public final fun component7 ()Ljava/lang/String; + public final fun component8 ()Ljava/lang/String; + public final fun copy (Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/util/List;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)Lcom/shopify/checkoutkit/FulfillmentEvent; + public static synthetic fun copy$default (Lcom/shopify/checkoutkit/FulfillmentEvent;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/util/List;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;ILjava/lang/Object;)Lcom/shopify/checkoutkit/FulfillmentEvent; + public fun equals (Ljava/lang/Object;)Z + public final fun getCarrier ()Ljava/lang/String; + public final fun getDescription ()Ljava/lang/String; + public final fun getId ()Ljava/lang/String; + public final fun getLineItems ()Ljava/util/List; + public final fun getOccurredAt ()Ljava/lang/String; + public final fun getTrackingNumber ()Ljava/lang/String; + public final fun getTrackingURL ()Ljava/lang/String; + public final fun getType ()Ljava/lang/String; + public fun hashCode ()I + public fun toString ()Ljava/lang/String; +} + +public final class com/shopify/checkoutkit/FulfillmentEvent$$serializer : kotlinx/serialization/internal/GeneratedSerializer { + public static final field INSTANCE Lcom/shopify/checkoutkit/FulfillmentEvent$$serializer; + public fun childSerializers ()[Lkotlinx/serialization/KSerializer; + public fun deserialize (Lkotlinx/serialization/encoding/Decoder;)Lcom/shopify/checkoutkit/FulfillmentEvent; + public synthetic fun deserialize (Lkotlinx/serialization/encoding/Decoder;)Ljava/lang/Object; + public fun getDescriptor ()Lkotlinx/serialization/descriptors/SerialDescriptor; + public fun serialize (Lkotlinx/serialization/encoding/Encoder;Lcom/shopify/checkoutkit/FulfillmentEvent;)V + public synthetic fun serialize (Lkotlinx/serialization/encoding/Encoder;Ljava/lang/Object;)V + public fun typeParametersSerializers ()[Lkotlinx/serialization/KSerializer; +} + +public final class com/shopify/checkoutkit/FulfillmentEvent$Companion { + public final fun serializer ()Lkotlinx/serialization/KSerializer; +} + +public final class com/shopify/checkoutkit/FulfillmentEventLineItem { + public static final field Companion Lcom/shopify/checkoutkit/FulfillmentEventLineItem$Companion; + public fun (Ljava/lang/String;J)V + public final fun component1 ()Ljava/lang/String; + public final fun component2 ()J + public final fun copy (Ljava/lang/String;J)Lcom/shopify/checkoutkit/FulfillmentEventLineItem; + public static synthetic fun copy$default (Lcom/shopify/checkoutkit/FulfillmentEventLineItem;Ljava/lang/String;JILjava/lang/Object;)Lcom/shopify/checkoutkit/FulfillmentEventLineItem; + public fun equals (Ljava/lang/Object;)Z + public final fun getId ()Ljava/lang/String; + public final fun getQuantity ()J + public fun hashCode ()I + public fun toString ()Ljava/lang/String; +} + +public final class com/shopify/checkoutkit/FulfillmentEventLineItem$$serializer : kotlinx/serialization/internal/GeneratedSerializer { + public static final field INSTANCE Lcom/shopify/checkoutkit/FulfillmentEventLineItem$$serializer; + public fun childSerializers ()[Lkotlinx/serialization/KSerializer; + public fun deserialize (Lkotlinx/serialization/encoding/Decoder;)Lcom/shopify/checkoutkit/FulfillmentEventLineItem; + public synthetic fun deserialize (Lkotlinx/serialization/encoding/Decoder;)Ljava/lang/Object; + public fun getDescriptor ()Lkotlinx/serialization/descriptors/SerialDescriptor; + public fun serialize (Lkotlinx/serialization/encoding/Encoder;Lcom/shopify/checkoutkit/FulfillmentEventLineItem;)V + public synthetic fun serialize (Lkotlinx/serialization/encoding/Encoder;Ljava/lang/Object;)V + public fun typeParametersSerializers ()[Lkotlinx/serialization/KSerializer; +} + +public final class com/shopify/checkoutkit/FulfillmentEventLineItem$Companion { + public final fun serializer ()Lkotlinx/serialization/KSerializer; +} + +public final class com/shopify/checkoutkit/FulfillmentGroup { + public static final field Companion Lcom/shopify/checkoutkit/FulfillmentGroup$Companion; + public fun (Ljava/lang/String;Ljava/util/List;Ljava/util/List;Ljava/lang/String;)V + public synthetic fun (Ljava/lang/String;Ljava/util/List;Ljava/util/List;Ljava/lang/String;ILkotlin/jvm/internal/DefaultConstructorMarker;)V + public final fun component1 ()Ljava/lang/String; + public final fun component2 ()Ljava/util/List; + public final fun component3 ()Ljava/util/List; + public final fun component4 ()Ljava/lang/String; + public final fun copy (Ljava/lang/String;Ljava/util/List;Ljava/util/List;Ljava/lang/String;)Lcom/shopify/checkoutkit/FulfillmentGroup; + public static synthetic fun copy$default (Lcom/shopify/checkoutkit/FulfillmentGroup;Ljava/lang/String;Ljava/util/List;Ljava/util/List;Ljava/lang/String;ILjava/lang/Object;)Lcom/shopify/checkoutkit/FulfillmentGroup; + public fun equals (Ljava/lang/Object;)Z + public final fun getId ()Ljava/lang/String; + public final fun getLineItemIDS ()Ljava/util/List; + public final fun getOptions ()Ljava/util/List; + public final fun getSelectedOptionID ()Ljava/lang/String; + public fun hashCode ()I + public fun toString ()Ljava/lang/String; +} + +public final class com/shopify/checkoutkit/FulfillmentGroup$$serializer : kotlinx/serialization/internal/GeneratedSerializer { + public static final field INSTANCE Lcom/shopify/checkoutkit/FulfillmentGroup$$serializer; + public fun childSerializers ()[Lkotlinx/serialization/KSerializer; + public fun deserialize (Lkotlinx/serialization/encoding/Decoder;)Lcom/shopify/checkoutkit/FulfillmentGroup; + public synthetic fun deserialize (Lkotlinx/serialization/encoding/Decoder;)Ljava/lang/Object; + public fun getDescriptor ()Lkotlinx/serialization/descriptors/SerialDescriptor; + public fun serialize (Lkotlinx/serialization/encoding/Encoder;Lcom/shopify/checkoutkit/FulfillmentGroup;)V + public synthetic fun serialize (Lkotlinx/serialization/encoding/Encoder;Ljava/lang/Object;)V + public fun typeParametersSerializers ()[Lkotlinx/serialization/KSerializer; +} + +public final class com/shopify/checkoutkit/FulfillmentGroup$Companion { + public final fun serializer ()Lkotlinx/serialization/KSerializer; +} + +public final class com/shopify/checkoutkit/FulfillmentMethod { + public static final field Companion Lcom/shopify/checkoutkit/FulfillmentMethod$Companion; + public fun (Ljava/util/List;Ljava/util/List;Ljava/lang/String;Ljava/util/List;Ljava/lang/String;Lcom/shopify/checkoutkit/TypeElement;)V + public synthetic fun (Ljava/util/List;Ljava/util/List;Ljava/lang/String;Ljava/util/List;Ljava/lang/String;Lcom/shopify/checkoutkit/TypeElement;ILkotlin/jvm/internal/DefaultConstructorMarker;)V + public final fun component1 ()Ljava/util/List; + public final fun component2 ()Ljava/util/List; + public final fun component3 ()Ljava/lang/String; + public final fun component4 ()Ljava/util/List; + public final fun component5 ()Ljava/lang/String; + public final fun component6 ()Lcom/shopify/checkoutkit/TypeElement; + public final fun copy (Ljava/util/List;Ljava/util/List;Ljava/lang/String;Ljava/util/List;Ljava/lang/String;Lcom/shopify/checkoutkit/TypeElement;)Lcom/shopify/checkoutkit/FulfillmentMethod; + public static synthetic fun copy$default (Lcom/shopify/checkoutkit/FulfillmentMethod;Ljava/util/List;Ljava/util/List;Ljava/lang/String;Ljava/util/List;Ljava/lang/String;Lcom/shopify/checkoutkit/TypeElement;ILjava/lang/Object;)Lcom/shopify/checkoutkit/FulfillmentMethod; + public fun equals (Ljava/lang/Object;)Z + public final fun getDestinations ()Ljava/util/List; + public final fun getGroups ()Ljava/util/List; + public final fun getId ()Ljava/lang/String; + public final fun getLineItemIDS ()Ljava/util/List; + public final fun getSelectedDestinationID ()Ljava/lang/String; + public final fun getType ()Lcom/shopify/checkoutkit/TypeElement; + public fun hashCode ()I + public fun toString ()Ljava/lang/String; +} + +public final class com/shopify/checkoutkit/FulfillmentMethod$$serializer : kotlinx/serialization/internal/GeneratedSerializer { + public static final field INSTANCE Lcom/shopify/checkoutkit/FulfillmentMethod$$serializer; + public fun childSerializers ()[Lkotlinx/serialization/KSerializer; + public fun deserialize (Lkotlinx/serialization/encoding/Decoder;)Lcom/shopify/checkoutkit/FulfillmentMethod; + public synthetic fun deserialize (Lkotlinx/serialization/encoding/Decoder;)Ljava/lang/Object; + public fun getDescriptor ()Lkotlinx/serialization/descriptors/SerialDescriptor; + public fun serialize (Lkotlinx/serialization/encoding/Encoder;Lcom/shopify/checkoutkit/FulfillmentMethod;)V + public synthetic fun serialize (Lkotlinx/serialization/encoding/Encoder;Ljava/lang/Object;)V + public fun typeParametersSerializers ()[Lkotlinx/serialization/KSerializer; +} + +public final class com/shopify/checkoutkit/FulfillmentMethod$Companion { + public final fun serializer ()Lkotlinx/serialization/KSerializer; +} + +public final class com/shopify/checkoutkit/FulfillmentOption { + public static final field Companion Lcom/shopify/checkoutkit/FulfillmentOption$Companion; + public fun (Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/util/List;)V + public synthetic fun (Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/util/List;ILkotlin/jvm/internal/DefaultConstructorMarker;)V + public final fun component1 ()Ljava/lang/String; + public final fun component2 ()Ljava/lang/String; + public final fun component3 ()Ljava/lang/String; + public final fun component4 ()Ljava/lang/String; + public final fun component5 ()Ljava/lang/String; + public final fun component6 ()Ljava/lang/String; + public final fun component7 ()Ljava/util/List; + public final fun copy (Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/util/List;)Lcom/shopify/checkoutkit/FulfillmentOption; + public static synthetic fun copy$default (Lcom/shopify/checkoutkit/FulfillmentOption;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/util/List;ILjava/lang/Object;)Lcom/shopify/checkoutkit/FulfillmentOption; + public fun equals (Ljava/lang/Object;)Z + public final fun getCarrier ()Ljava/lang/String; + public final fun getDescription ()Ljava/lang/String; + public final fun getEarliestFulfillmentTime ()Ljava/lang/String; + public final fun getId ()Ljava/lang/String; + public final fun getLatestFulfillmentTime ()Ljava/lang/String; + public final fun getTitle ()Ljava/lang/String; + public final fun getTotals ()Ljava/util/List; + public fun hashCode ()I + public fun toString ()Ljava/lang/String; +} + +public final class com/shopify/checkoutkit/FulfillmentOption$$serializer : kotlinx/serialization/internal/GeneratedSerializer { + public static final field INSTANCE Lcom/shopify/checkoutkit/FulfillmentOption$$serializer; + public fun childSerializers ()[Lkotlinx/serialization/KSerializer; + public fun deserialize (Lkotlinx/serialization/encoding/Decoder;)Lcom/shopify/checkoutkit/FulfillmentOption; + public synthetic fun deserialize (Lkotlinx/serialization/encoding/Decoder;)Ljava/lang/Object; + public fun getDescriptor ()Lkotlinx/serialization/descriptors/SerialDescriptor; + public fun serialize (Lkotlinx/serialization/encoding/Encoder;Lcom/shopify/checkoutkit/FulfillmentOption;)V + public synthetic fun serialize (Lkotlinx/serialization/encoding/Encoder;Ljava/lang/Object;)V + public fun typeParametersSerializers ()[Lkotlinx/serialization/KSerializer; +} + +public final class com/shopify/checkoutkit/FulfillmentOption$Companion { + public final fun serializer ()Lkotlinx/serialization/KSerializer; +} + +public final class com/shopify/checkoutkit/GroupElement { + public static final field Companion Lcom/shopify/checkoutkit/GroupElement$Companion; + public fun (Ljava/lang/String;Ljava/util/List;Ljava/util/List;Ljava/lang/String;)V + public synthetic fun (Ljava/lang/String;Ljava/util/List;Ljava/util/List;Ljava/lang/String;ILkotlin/jvm/internal/DefaultConstructorMarker;)V + public final fun component1 ()Ljava/lang/String; + public final fun component2 ()Ljava/util/List; + public final fun component3 ()Ljava/util/List; + public final fun component4 ()Ljava/lang/String; + public final fun copy (Ljava/lang/String;Ljava/util/List;Ljava/util/List;Ljava/lang/String;)Lcom/shopify/checkoutkit/GroupElement; + public static synthetic fun copy$default (Lcom/shopify/checkoutkit/GroupElement;Ljava/lang/String;Ljava/util/List;Ljava/util/List;Ljava/lang/String;ILjava/lang/Object;)Lcom/shopify/checkoutkit/GroupElement; + public fun equals (Ljava/lang/Object;)Z + public final fun getId ()Ljava/lang/String; + public final fun getLineItemIDS ()Ljava/util/List; + public final fun getOptions ()Ljava/util/List; + public final fun getSelectedOptionID ()Ljava/lang/String; + public fun hashCode ()I + public fun toString ()Ljava/lang/String; +} + +public final class com/shopify/checkoutkit/GroupElement$$serializer : kotlinx/serialization/internal/GeneratedSerializer { + public static final field INSTANCE Lcom/shopify/checkoutkit/GroupElement$$serializer; + public fun childSerializers ()[Lkotlinx/serialization/KSerializer; + public fun deserialize (Lkotlinx/serialization/encoding/Decoder;)Lcom/shopify/checkoutkit/GroupElement; + public synthetic fun deserialize (Lkotlinx/serialization/encoding/Decoder;)Ljava/lang/Object; + public fun getDescriptor ()Lkotlinx/serialization/descriptors/SerialDescriptor; + public fun serialize (Lkotlinx/serialization/encoding/Encoder;Lcom/shopify/checkoutkit/GroupElement;)V + public synthetic fun serialize (Lkotlinx/serialization/encoding/Encoder;Ljava/lang/Object;)V + public fun typeParametersSerializers ()[Lkotlinx/serialization/KSerializer; +} + +public final class com/shopify/checkoutkit/GroupElement$Companion { + public final fun serializer ()Lkotlinx/serialization/KSerializer; +} + +public final class com/shopify/checkoutkit/HttpException : com/shopify/checkoutkit/CheckoutUnavailableException { + public fun (IZ)V + public fun (Ljava/lang/String;IZ)V + public synthetic fun (Ljava/lang/String;IZILkotlin/jvm/internal/DefaultConstructorMarker;)V + public final fun getStatusCode ()I +} + +public final class com/shopify/checkoutkit/IdentityClass { + public static final field Companion Lcom/shopify/checkoutkit/IdentityClass$Companion; + public fun (Ljava/lang/String;)V + public final fun component1 ()Ljava/lang/String; + public final fun copy (Ljava/lang/String;)Lcom/shopify/checkoutkit/IdentityClass; + public static synthetic fun copy$default (Lcom/shopify/checkoutkit/IdentityClass;Ljava/lang/String;ILjava/lang/Object;)Lcom/shopify/checkoutkit/IdentityClass; + public fun equals (Ljava/lang/Object;)Z + public final fun getAccessToken ()Ljava/lang/String; + public fun hashCode ()I + public fun toString ()Ljava/lang/String; +} + +public final class com/shopify/checkoutkit/IdentityClass$$serializer : kotlinx/serialization/internal/GeneratedSerializer { + public static final field INSTANCE Lcom/shopify/checkoutkit/IdentityClass$$serializer; + public fun childSerializers ()[Lkotlinx/serialization/KSerializer; + public fun deserialize (Lkotlinx/serialization/encoding/Decoder;)Lcom/shopify/checkoutkit/IdentityClass; + public synthetic fun deserialize (Lkotlinx/serialization/encoding/Decoder;)Ljava/lang/Object; + public fun getDescriptor ()Lkotlinx/serialization/descriptors/SerialDescriptor; + public fun serialize (Lkotlinx/serialization/encoding/Encoder;Lcom/shopify/checkoutkit/IdentityClass;)V + public synthetic fun serialize (Lkotlinx/serialization/encoding/Encoder;Ljava/lang/Object;)V + public fun typeParametersSerializers ()[Lkotlinx/serialization/KSerializer; +} + +public final class com/shopify/checkoutkit/IdentityClass$Companion { + public final fun serializer ()Lkotlinx/serialization/KSerializer; +} + +public final class com/shopify/checkoutkit/InstrumentsChangeCheckout { + public static final field Companion Lcom/shopify/checkoutkit/InstrumentsChangeCheckout$Companion; + public fun ()V + public fun (Lcom/shopify/checkoutkit/InstrumentsChangePayment;)V + public synthetic fun (Lcom/shopify/checkoutkit/InstrumentsChangePayment;ILkotlin/jvm/internal/DefaultConstructorMarker;)V + public final fun component1 ()Lcom/shopify/checkoutkit/InstrumentsChangePayment; + public final fun copy (Lcom/shopify/checkoutkit/InstrumentsChangePayment;)Lcom/shopify/checkoutkit/InstrumentsChangeCheckout; + public static synthetic fun copy$default (Lcom/shopify/checkoutkit/InstrumentsChangeCheckout;Lcom/shopify/checkoutkit/InstrumentsChangePayment;ILjava/lang/Object;)Lcom/shopify/checkoutkit/InstrumentsChangeCheckout; + public fun equals (Ljava/lang/Object;)Z + public final fun getPayment ()Lcom/shopify/checkoutkit/InstrumentsChangePayment; + public fun hashCode ()I + public fun toString ()Ljava/lang/String; +} + +public final class com/shopify/checkoutkit/InstrumentsChangeCheckout$$serializer : kotlinx/serialization/internal/GeneratedSerializer { + public static final field INSTANCE Lcom/shopify/checkoutkit/InstrumentsChangeCheckout$$serializer; + public fun childSerializers ()[Lkotlinx/serialization/KSerializer; + public fun deserialize (Lkotlinx/serialization/encoding/Decoder;)Lcom/shopify/checkoutkit/InstrumentsChangeCheckout; + public synthetic fun deserialize (Lkotlinx/serialization/encoding/Decoder;)Ljava/lang/Object; + public fun getDescriptor ()Lkotlinx/serialization/descriptors/SerialDescriptor; + public fun serialize (Lkotlinx/serialization/encoding/Encoder;Lcom/shopify/checkoutkit/InstrumentsChangeCheckout;)V + public synthetic fun serialize (Lkotlinx/serialization/encoding/Encoder;Ljava/lang/Object;)V + public fun typeParametersSerializers ()[Lkotlinx/serialization/KSerializer; +} + +public final class com/shopify/checkoutkit/InstrumentsChangeCheckout$Companion { + public final fun serializer ()Lkotlinx/serialization/KSerializer; +} + +public final class com/shopify/checkoutkit/InstrumentsChangePayment { + public static final field Companion Lcom/shopify/checkoutkit/InstrumentsChangePayment$Companion; + public fun ()V + public fun (Ljava/util/List;Ljava/lang/String;)V + public synthetic fun (Ljava/util/List;Ljava/lang/String;ILkotlin/jvm/internal/DefaultConstructorMarker;)V + public final fun component1 ()Ljava/util/List; + public final fun component2 ()Ljava/lang/String; + public final fun copy (Ljava/util/List;Ljava/lang/String;)Lcom/shopify/checkoutkit/InstrumentsChangePayment; + public static synthetic fun copy$default (Lcom/shopify/checkoutkit/InstrumentsChangePayment;Ljava/util/List;Ljava/lang/String;ILjava/lang/Object;)Lcom/shopify/checkoutkit/InstrumentsChangePayment; + public fun equals (Ljava/lang/Object;)Z + public final fun getInstruments ()Ljava/util/List; + public final fun getSelectedInstrumentID ()Ljava/lang/String; + public fun hashCode ()I + public fun toString ()Ljava/lang/String; +} + +public final class com/shopify/checkoutkit/InstrumentsChangePayment$$serializer : kotlinx/serialization/internal/GeneratedSerializer { + public static final field INSTANCE Lcom/shopify/checkoutkit/InstrumentsChangePayment$$serializer; + public fun childSerializers ()[Lkotlinx/serialization/KSerializer; + public fun deserialize (Lkotlinx/serialization/encoding/Decoder;)Lcom/shopify/checkoutkit/InstrumentsChangePayment; + public synthetic fun deserialize (Lkotlinx/serialization/encoding/Decoder;)Ljava/lang/Object; + public fun getDescriptor ()Lkotlinx/serialization/descriptors/SerialDescriptor; + public fun serialize (Lkotlinx/serialization/encoding/Encoder;Lcom/shopify/checkoutkit/InstrumentsChangePayment;)V + public synthetic fun serialize (Lkotlinx/serialization/encoding/Encoder;Ljava/lang/Object;)V + public fun typeParametersSerializers ()[Lkotlinx/serialization/KSerializer; +} + +public final class com/shopify/checkoutkit/InstrumentsChangePayment$Companion { + public final fun serializer ()Lkotlinx/serialization/KSerializer; +} + +public final class com/shopify/checkoutkit/InstrumentsChangeResult { + public static final field Companion Lcom/shopify/checkoutkit/InstrumentsChangeResult$Companion; + public fun (Lcom/shopify/checkoutkit/InstrumentsChangeCheckout;)V + public final fun component1 ()Lcom/shopify/checkoutkit/InstrumentsChangeCheckout; + public final fun copy (Lcom/shopify/checkoutkit/InstrumentsChangeCheckout;)Lcom/shopify/checkoutkit/InstrumentsChangeResult; + public static synthetic fun copy$default (Lcom/shopify/checkoutkit/InstrumentsChangeResult;Lcom/shopify/checkoutkit/InstrumentsChangeCheckout;ILjava/lang/Object;)Lcom/shopify/checkoutkit/InstrumentsChangeResult; + public fun equals (Ljava/lang/Object;)Z + public final fun getCheckout ()Lcom/shopify/checkoutkit/InstrumentsChangeCheckout; + public fun hashCode ()I + public fun toString ()Ljava/lang/String; +} + +public final class com/shopify/checkoutkit/InstrumentsChangeResult$$serializer : kotlinx/serialization/internal/GeneratedSerializer { + public static final field INSTANCE Lcom/shopify/checkoutkit/InstrumentsChangeResult$$serializer; + public fun childSerializers ()[Lkotlinx/serialization/KSerializer; + public fun deserialize (Lkotlinx/serialization/encoding/Decoder;)Lcom/shopify/checkoutkit/InstrumentsChangeResult; + public synthetic fun deserialize (Lkotlinx/serialization/encoding/Decoder;)Ljava/lang/Object; + public fun getDescriptor ()Lkotlinx/serialization/descriptors/SerialDescriptor; + public fun serialize (Lkotlinx/serialization/encoding/Encoder;Lcom/shopify/checkoutkit/InstrumentsChangeResult;)V + public synthetic fun serialize (Lkotlinx/serialization/encoding/Encoder;Ljava/lang/Object;)V + public fun typeParametersSerializers ()[Lkotlinx/serialization/KSerializer; +} + +public final class com/shopify/checkoutkit/InstrumentsChangeResult$Companion { + public final fun serializer ()Lkotlinx/serialization/KSerializer; +} + +public final class com/shopify/checkoutkit/Item { + public static final field Companion Lcom/shopify/checkoutkit/Item$Companion; + public fun (Ljava/lang/String;Ljava/lang/String;JLjava/lang/String;)V + public synthetic fun (Ljava/lang/String;Ljava/lang/String;JLjava/lang/String;ILkotlin/jvm/internal/DefaultConstructorMarker;)V + public final fun component1 ()Ljava/lang/String; + public final fun component2 ()Ljava/lang/String; + public final fun component3 ()J + public final fun component4 ()Ljava/lang/String; + public final fun copy (Ljava/lang/String;Ljava/lang/String;JLjava/lang/String;)Lcom/shopify/checkoutkit/Item; + public static synthetic fun copy$default (Lcom/shopify/checkoutkit/Item;Ljava/lang/String;Ljava/lang/String;JLjava/lang/String;ILjava/lang/Object;)Lcom/shopify/checkoutkit/Item; + public fun equals (Ljava/lang/Object;)Z + public final fun getId ()Ljava/lang/String; + public final fun getImageURL ()Ljava/lang/String; + public final fun getPrice ()J + public final fun getTitle ()Ljava/lang/String; + public fun hashCode ()I + public fun toString ()Ljava/lang/String; +} + +public final class com/shopify/checkoutkit/Item$$serializer : kotlinx/serialization/internal/GeneratedSerializer { + public static final field INSTANCE Lcom/shopify/checkoutkit/Item$$serializer; + public fun childSerializers ()[Lkotlinx/serialization/KSerializer; + public fun deserialize (Lkotlinx/serialization/encoding/Decoder;)Lcom/shopify/checkoutkit/Item; + public synthetic fun deserialize (Lkotlinx/serialization/encoding/Decoder;)Ljava/lang/Object; + public fun getDescriptor ()Lkotlinx/serialization/descriptors/SerialDescriptor; + public fun serialize (Lkotlinx/serialization/encoding/Encoder;Lcom/shopify/checkoutkit/Item;)V + public synthetic fun serialize (Lkotlinx/serialization/encoding/Encoder;Ljava/lang/Object;)V + public fun typeParametersSerializers ()[Lkotlinx/serialization/KSerializer; +} + +public final class com/shopify/checkoutkit/Item$Companion { + public final fun serializer ()Lkotlinx/serialization/KSerializer; +} + +public final class com/shopify/checkoutkit/ItemClass { + public static final field Companion Lcom/shopify/checkoutkit/ItemClass$Companion; + public fun (Ljava/lang/String;Ljava/lang/String;JLjava/lang/String;)V + public synthetic fun (Ljava/lang/String;Ljava/lang/String;JLjava/lang/String;ILkotlin/jvm/internal/DefaultConstructorMarker;)V + public final fun component1 ()Ljava/lang/String; + public final fun component2 ()Ljava/lang/String; + public final fun component3 ()J + public final fun component4 ()Ljava/lang/String; + public final fun copy (Ljava/lang/String;Ljava/lang/String;JLjava/lang/String;)Lcom/shopify/checkoutkit/ItemClass; + public static synthetic fun copy$default (Lcom/shopify/checkoutkit/ItemClass;Ljava/lang/String;Ljava/lang/String;JLjava/lang/String;ILjava/lang/Object;)Lcom/shopify/checkoutkit/ItemClass; + public fun equals (Ljava/lang/Object;)Z + public final fun getId ()Ljava/lang/String; + public final fun getImageURL ()Ljava/lang/String; + public final fun getPrice ()J + public final fun getTitle ()Ljava/lang/String; + public fun hashCode ()I + public fun toString ()Ljava/lang/String; +} + +public final class com/shopify/checkoutkit/ItemClass$$serializer : kotlinx/serialization/internal/GeneratedSerializer { + public static final field INSTANCE Lcom/shopify/checkoutkit/ItemClass$$serializer; + public fun childSerializers ()[Lkotlinx/serialization/KSerializer; + public fun deserialize (Lkotlinx/serialization/encoding/Decoder;)Lcom/shopify/checkoutkit/ItemClass; + public synthetic fun deserialize (Lkotlinx/serialization/encoding/Decoder;)Ljava/lang/Object; + public fun getDescriptor ()Lkotlinx/serialization/descriptors/SerialDescriptor; + public fun serialize (Lkotlinx/serialization/encoding/Encoder;Lcom/shopify/checkoutkit/ItemClass;)V + public synthetic fun serialize (Lkotlinx/serialization/encoding/Encoder;Ljava/lang/Object;)V + public fun typeParametersSerializers ()[Lkotlinx/serialization/KSerializer; +} + +public final class com/shopify/checkoutkit/ItemClass$Companion { + public final fun serializer ()Lkotlinx/serialization/KSerializer; +} + +public final class com/shopify/checkoutkit/LineItem { + public static final field Companion Lcom/shopify/checkoutkit/LineItem$Companion; + public fun (Ljava/lang/String;Lcom/shopify/checkoutkit/ItemClass;Ljava/lang/String;JLjava/util/List;)V + public synthetic fun (Ljava/lang/String;Lcom/shopify/checkoutkit/ItemClass;Ljava/lang/String;JLjava/util/List;ILkotlin/jvm/internal/DefaultConstructorMarker;)V + public final fun component1 ()Ljava/lang/String; + public final fun component2 ()Lcom/shopify/checkoutkit/ItemClass; + public final fun component3 ()Ljava/lang/String; + public final fun component4 ()J + public final fun component5 ()Ljava/util/List; + public final fun copy (Ljava/lang/String;Lcom/shopify/checkoutkit/ItemClass;Ljava/lang/String;JLjava/util/List;)Lcom/shopify/checkoutkit/LineItem; + public static synthetic fun copy$default (Lcom/shopify/checkoutkit/LineItem;Ljava/lang/String;Lcom/shopify/checkoutkit/ItemClass;Ljava/lang/String;JLjava/util/List;ILjava/lang/Object;)Lcom/shopify/checkoutkit/LineItem; + public fun equals (Ljava/lang/Object;)Z + public final fun getId ()Ljava/lang/String; + public final fun getItem ()Lcom/shopify/checkoutkit/ItemClass; + public final fun getParentID ()Ljava/lang/String; + public final fun getQuantity ()J + public final fun getTotals ()Ljava/util/List; + public fun hashCode ()I + public fun toString ()Ljava/lang/String; +} + +public final class com/shopify/checkoutkit/LineItem$$serializer : kotlinx/serialization/internal/GeneratedSerializer { + public static final field INSTANCE Lcom/shopify/checkoutkit/LineItem$$serializer; + public fun childSerializers ()[Lkotlinx/serialization/KSerializer; + public fun deserialize (Lkotlinx/serialization/encoding/Decoder;)Lcom/shopify/checkoutkit/LineItem; + public synthetic fun deserialize (Lkotlinx/serialization/encoding/Decoder;)Ljava/lang/Object; + public fun getDescriptor ()Lkotlinx/serialization/descriptors/SerialDescriptor; + public fun serialize (Lkotlinx/serialization/encoding/Encoder;Lcom/shopify/checkoutkit/LineItem;)V + public synthetic fun serialize (Lkotlinx/serialization/encoding/Encoder;Ljava/lang/Object;)V + public fun typeParametersSerializers ()[Lkotlinx/serialization/KSerializer; +} + +public final class com/shopify/checkoutkit/LineItem$Companion { + public final fun serializer ()Lkotlinx/serialization/KSerializer; +} + +public final class com/shopify/checkoutkit/LineItemElement { + public static final field Companion Lcom/shopify/checkoutkit/LineItemElement$Companion; + public fun (Ljava/lang/String;Lcom/shopify/checkoutkit/ItemClass;Ljava/lang/String;Lcom/shopify/checkoutkit/LineItemQuantity;Lcom/shopify/checkoutkit/OrderLineItemStatus;Ljava/util/List;)V + public synthetic fun (Ljava/lang/String;Lcom/shopify/checkoutkit/ItemClass;Ljava/lang/String;Lcom/shopify/checkoutkit/LineItemQuantity;Lcom/shopify/checkoutkit/OrderLineItemStatus;Ljava/util/List;ILkotlin/jvm/internal/DefaultConstructorMarker;)V + public final fun component1 ()Ljava/lang/String; + public final fun component2 ()Lcom/shopify/checkoutkit/ItemClass; + public final fun component3 ()Ljava/lang/String; + public final fun component4 ()Lcom/shopify/checkoutkit/LineItemQuantity; + public final fun component5 ()Lcom/shopify/checkoutkit/OrderLineItemStatus; + public final fun component6 ()Ljava/util/List; + public final fun copy (Ljava/lang/String;Lcom/shopify/checkoutkit/ItemClass;Ljava/lang/String;Lcom/shopify/checkoutkit/LineItemQuantity;Lcom/shopify/checkoutkit/OrderLineItemStatus;Ljava/util/List;)Lcom/shopify/checkoutkit/LineItemElement; + public static synthetic fun copy$default (Lcom/shopify/checkoutkit/LineItemElement;Ljava/lang/String;Lcom/shopify/checkoutkit/ItemClass;Ljava/lang/String;Lcom/shopify/checkoutkit/LineItemQuantity;Lcom/shopify/checkoutkit/OrderLineItemStatus;Ljava/util/List;ILjava/lang/Object;)Lcom/shopify/checkoutkit/LineItemElement; + public fun equals (Ljava/lang/Object;)Z + public final fun getId ()Ljava/lang/String; + public final fun getItem ()Lcom/shopify/checkoutkit/ItemClass; + public final fun getParentID ()Ljava/lang/String; + public final fun getQuantity ()Lcom/shopify/checkoutkit/LineItemQuantity; + public final fun getStatus ()Lcom/shopify/checkoutkit/OrderLineItemStatus; + public final fun getTotals ()Ljava/util/List; + public fun hashCode ()I + public fun toString ()Ljava/lang/String; +} + +public final class com/shopify/checkoutkit/LineItemElement$$serializer : kotlinx/serialization/internal/GeneratedSerializer { + public static final field INSTANCE Lcom/shopify/checkoutkit/LineItemElement$$serializer; + public fun childSerializers ()[Lkotlinx/serialization/KSerializer; + public fun deserialize (Lkotlinx/serialization/encoding/Decoder;)Lcom/shopify/checkoutkit/LineItemElement; + public synthetic fun deserialize (Lkotlinx/serialization/encoding/Decoder;)Ljava/lang/Object; + public fun getDescriptor ()Lkotlinx/serialization/descriptors/SerialDescriptor; + public fun serialize (Lkotlinx/serialization/encoding/Encoder;Lcom/shopify/checkoutkit/LineItemElement;)V + public synthetic fun serialize (Lkotlinx/serialization/encoding/Encoder;Ljava/lang/Object;)V + public fun typeParametersSerializers ()[Lkotlinx/serialization/KSerializer; +} + +public final class com/shopify/checkoutkit/LineItemElement$Companion { + public final fun serializer ()Lkotlinx/serialization/KSerializer; +} + +public final class com/shopify/checkoutkit/LineItemQuantity { + public static final field Companion Lcom/shopify/checkoutkit/LineItemQuantity$Companion; + public fun (JJ)V + public final fun component1 ()J + public final fun component2 ()J + public final fun copy (JJ)Lcom/shopify/checkoutkit/LineItemQuantity; + public static synthetic fun copy$default (Lcom/shopify/checkoutkit/LineItemQuantity;JJILjava/lang/Object;)Lcom/shopify/checkoutkit/LineItemQuantity; + public fun equals (Ljava/lang/Object;)Z + public final fun getFulfilled ()J + public final fun getTotal ()J + public fun hashCode ()I + public fun toString ()Ljava/lang/String; +} + +public final class com/shopify/checkoutkit/LineItemQuantity$$serializer : kotlinx/serialization/internal/GeneratedSerializer { + public static final field INSTANCE Lcom/shopify/checkoutkit/LineItemQuantity$$serializer; + public fun childSerializers ()[Lkotlinx/serialization/KSerializer; + public fun deserialize (Lkotlinx/serialization/encoding/Decoder;)Lcom/shopify/checkoutkit/LineItemQuantity; + public synthetic fun deserialize (Lkotlinx/serialization/encoding/Decoder;)Ljava/lang/Object; + public fun getDescriptor ()Lkotlinx/serialization/descriptors/SerialDescriptor; + public fun serialize (Lkotlinx/serialization/encoding/Encoder;Lcom/shopify/checkoutkit/LineItemQuantity;)V + public synthetic fun serialize (Lkotlinx/serialization/encoding/Encoder;Ljava/lang/Object;)V + public fun typeParametersSerializers ()[Lkotlinx/serialization/KSerializer; +} + +public final class com/shopify/checkoutkit/LineItemQuantity$Companion { + public final fun serializer ()Lkotlinx/serialization/KSerializer; +} + +public final class com/shopify/checkoutkit/Link { + public static final field Companion Lcom/shopify/checkoutkit/Link$Companion; + public fun (Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)V + public synthetic fun (Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;ILkotlin/jvm/internal/DefaultConstructorMarker;)V + public final fun component1 ()Ljava/lang/String; + public final fun component2 ()Ljava/lang/String; + public final fun component3 ()Ljava/lang/String; + public final fun copy (Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)Lcom/shopify/checkoutkit/Link; + public static synthetic fun copy$default (Lcom/shopify/checkoutkit/Link;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;ILjava/lang/Object;)Lcom/shopify/checkoutkit/Link; + public fun equals (Ljava/lang/Object;)Z + public final fun getTitle ()Ljava/lang/String; + public final fun getType ()Ljava/lang/String; + public final fun getUrl ()Ljava/lang/String; + public fun hashCode ()I + public fun toString ()Ljava/lang/String; +} + +public final class com/shopify/checkoutkit/Link$$serializer : kotlinx/serialization/internal/GeneratedSerializer { + public static final field INSTANCE Lcom/shopify/checkoutkit/Link$$serializer; + public fun childSerializers ()[Lkotlinx/serialization/KSerializer; + public fun deserialize (Lkotlinx/serialization/encoding/Decoder;)Lcom/shopify/checkoutkit/Link; + public synthetic fun deserialize (Lkotlinx/serialization/encoding/Decoder;)Ljava/lang/Object; + public fun getDescriptor ()Lkotlinx/serialization/descriptors/SerialDescriptor; + public fun serialize (Lkotlinx/serialization/encoding/Encoder;Lcom/shopify/checkoutkit/Link;)V + public synthetic fun serialize (Lkotlinx/serialization/encoding/Encoder;Ljava/lang/Object;)V + public fun typeParametersSerializers ()[Lkotlinx/serialization/KSerializer; +} + +public final class com/shopify/checkoutkit/Link$Companion { + public final fun serializer ()Lkotlinx/serialization/KSerializer; +} + +public final class com/shopify/checkoutkit/LinkElement { + public static final field Companion Lcom/shopify/checkoutkit/LinkElement$Companion; + public fun (Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)V + public synthetic fun (Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;ILkotlin/jvm/internal/DefaultConstructorMarker;)V + public final fun component1 ()Ljava/lang/String; + public final fun component2 ()Ljava/lang/String; + public final fun component3 ()Ljava/lang/String; + public final fun copy (Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)Lcom/shopify/checkoutkit/LinkElement; + public static synthetic fun copy$default (Lcom/shopify/checkoutkit/LinkElement;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;ILjava/lang/Object;)Lcom/shopify/checkoutkit/LinkElement; + public fun equals (Ljava/lang/Object;)Z + public final fun getTitle ()Ljava/lang/String; + public final fun getType ()Ljava/lang/String; + public final fun getUrl ()Ljava/lang/String; + public fun hashCode ()I + public fun toString ()Ljava/lang/String; +} + +public final class com/shopify/checkoutkit/LinkElement$$serializer : kotlinx/serialization/internal/GeneratedSerializer { + public static final field INSTANCE Lcom/shopify/checkoutkit/LinkElement$$serializer; + public fun childSerializers ()[Lkotlinx/serialization/KSerializer; + public fun deserialize (Lkotlinx/serialization/encoding/Decoder;)Lcom/shopify/checkoutkit/LinkElement; + public synthetic fun deserialize (Lkotlinx/serialization/encoding/Decoder;)Ljava/lang/Object; + public fun getDescriptor ()Lkotlinx/serialization/descriptors/SerialDescriptor; + public fun serialize (Lkotlinx/serialization/encoding/Encoder;Lcom/shopify/checkoutkit/LinkElement;)V + public synthetic fun serialize (Lkotlinx/serialization/encoding/Encoder;Ljava/lang/Object;)V + public fun typeParametersSerializers ()[Lkotlinx/serialization/KSerializer; +} + +public final class com/shopify/checkoutkit/LinkElement$Companion { + public final fun serializer ()Lkotlinx/serialization/KSerializer; +} + +public final class com/shopify/checkoutkit/LogLevel : java/lang/Enum { + public static final field DEBUG Lcom/shopify/checkoutkit/LogLevel; + public static final field ERROR Lcom/shopify/checkoutkit/LogLevel; + public static final field WARN Lcom/shopify/checkoutkit/LogLevel; + public static fun getEntries ()Lkotlin/enums/EnumEntries; + public static fun valueOf (Ljava/lang/String;)Lcom/shopify/checkoutkit/LogLevel; + public static fun values ()[Lcom/shopify/checkoutkit/LogLevel; +} + +public final class com/shopify/checkoutkit/LogWrapper { + public fun ()V + public final fun d (Ljava/lang/String;Ljava/lang/String;)V + public final fun e (Ljava/lang/String;Ljava/lang/String;)V + public final fun e (Ljava/lang/String;Ljava/lang/String;Ljava/lang/Throwable;)V + public final fun w (Ljava/lang/String;Ljava/lang/String;)V +} + +public final class com/shopify/checkoutkit/MerchantFulfillmentConfig { + public static final field Companion Lcom/shopify/checkoutkit/MerchantFulfillmentConfig$Companion; + public fun ()V + public fun (Ljava/util/List;Lcom/shopify/checkoutkit/MerchantFulfillmentConfigAllowsMultiDestination;)V + public synthetic fun (Ljava/util/List;Lcom/shopify/checkoutkit/MerchantFulfillmentConfigAllowsMultiDestination;ILkotlin/jvm/internal/DefaultConstructorMarker;)V + public final fun component1 ()Ljava/util/List; + public final fun component2 ()Lcom/shopify/checkoutkit/MerchantFulfillmentConfigAllowsMultiDestination; + public final fun copy (Ljava/util/List;Lcom/shopify/checkoutkit/MerchantFulfillmentConfigAllowsMultiDestination;)Lcom/shopify/checkoutkit/MerchantFulfillmentConfig; + public static synthetic fun copy$default (Lcom/shopify/checkoutkit/MerchantFulfillmentConfig;Ljava/util/List;Lcom/shopify/checkoutkit/MerchantFulfillmentConfigAllowsMultiDestination;ILjava/lang/Object;)Lcom/shopify/checkoutkit/MerchantFulfillmentConfig; + public fun equals (Ljava/lang/Object;)Z + public final fun getAllowsMethodCombinations ()Ljava/util/List; + public final fun getAllowsMultiDestination ()Lcom/shopify/checkoutkit/MerchantFulfillmentConfigAllowsMultiDestination; + public fun hashCode ()I + public fun toString ()Ljava/lang/String; +} + +public final class com/shopify/checkoutkit/MerchantFulfillmentConfig$$serializer : kotlinx/serialization/internal/GeneratedSerializer { + public static final field INSTANCE Lcom/shopify/checkoutkit/MerchantFulfillmentConfig$$serializer; + public fun childSerializers ()[Lkotlinx/serialization/KSerializer; + public fun deserialize (Lkotlinx/serialization/encoding/Decoder;)Lcom/shopify/checkoutkit/MerchantFulfillmentConfig; + public synthetic fun deserialize (Lkotlinx/serialization/encoding/Decoder;)Ljava/lang/Object; + public fun getDescriptor ()Lkotlinx/serialization/descriptors/SerialDescriptor; + public fun serialize (Lkotlinx/serialization/encoding/Encoder;Lcom/shopify/checkoutkit/MerchantFulfillmentConfig;)V + public synthetic fun serialize (Lkotlinx/serialization/encoding/Encoder;Ljava/lang/Object;)V + public fun typeParametersSerializers ()[Lkotlinx/serialization/KSerializer; +} + +public final class com/shopify/checkoutkit/MerchantFulfillmentConfig$Companion { + public final fun serializer ()Lkotlinx/serialization/KSerializer; +} + +public final class com/shopify/checkoutkit/MerchantFulfillmentConfigAllowsMultiDestination { + public static final field Companion Lcom/shopify/checkoutkit/MerchantFulfillmentConfigAllowsMultiDestination$Companion; + public fun ()V + public fun (Ljava/lang/Boolean;Ljava/lang/Boolean;)V + public synthetic fun (Ljava/lang/Boolean;Ljava/lang/Boolean;ILkotlin/jvm/internal/DefaultConstructorMarker;)V + public final fun component1 ()Ljava/lang/Boolean; + public final fun component2 ()Ljava/lang/Boolean; + public final fun copy (Ljava/lang/Boolean;Ljava/lang/Boolean;)Lcom/shopify/checkoutkit/MerchantFulfillmentConfigAllowsMultiDestination; + public static synthetic fun copy$default (Lcom/shopify/checkoutkit/MerchantFulfillmentConfigAllowsMultiDestination;Ljava/lang/Boolean;Ljava/lang/Boolean;ILjava/lang/Object;)Lcom/shopify/checkoutkit/MerchantFulfillmentConfigAllowsMultiDestination; + public fun equals (Ljava/lang/Object;)Z + public final fun getPickup ()Ljava/lang/Boolean; + public final fun getShipping ()Ljava/lang/Boolean; + public fun hashCode ()I + public fun toString ()Ljava/lang/String; +} + +public final class com/shopify/checkoutkit/MerchantFulfillmentConfigAllowsMultiDestination$$serializer : kotlinx/serialization/internal/GeneratedSerializer { + public static final field INSTANCE Lcom/shopify/checkoutkit/MerchantFulfillmentConfigAllowsMultiDestination$$serializer; + public fun childSerializers ()[Lkotlinx/serialization/KSerializer; + public fun deserialize (Lkotlinx/serialization/encoding/Decoder;)Lcom/shopify/checkoutkit/MerchantFulfillmentConfigAllowsMultiDestination; + public synthetic fun deserialize (Lkotlinx/serialization/encoding/Decoder;)Ljava/lang/Object; + public fun getDescriptor ()Lkotlinx/serialization/descriptors/SerialDescriptor; + public fun serialize (Lkotlinx/serialization/encoding/Encoder;Lcom/shopify/checkoutkit/MerchantFulfillmentConfigAllowsMultiDestination;)V + public synthetic fun serialize (Lkotlinx/serialization/encoding/Encoder;Ljava/lang/Object;)V + public fun typeParametersSerializers ()[Lkotlinx/serialization/KSerializer; +} + +public final class com/shopify/checkoutkit/MerchantFulfillmentConfigAllowsMultiDestination$Companion { + public final fun serializer ()Lkotlinx/serialization/KSerializer; +} + +public final class com/shopify/checkoutkit/Message { + public static final field Companion Lcom/shopify/checkoutkit/Message$Companion; + public fun (Ljava/lang/String;Ljava/lang/String;Lcom/shopify/checkoutkit/ContentType;Ljava/lang/String;Lcom/shopify/checkoutkit/Severity;Lcom/shopify/checkoutkit/MessageType;)V + public synthetic fun (Ljava/lang/String;Ljava/lang/String;Lcom/shopify/checkoutkit/ContentType;Ljava/lang/String;Lcom/shopify/checkoutkit/Severity;Lcom/shopify/checkoutkit/MessageType;ILkotlin/jvm/internal/DefaultConstructorMarker;)V + public final fun component1 ()Ljava/lang/String; + public final fun component2 ()Ljava/lang/String; + public final fun component3 ()Lcom/shopify/checkoutkit/ContentType; + public final fun component4 ()Ljava/lang/String; + public final fun component5 ()Lcom/shopify/checkoutkit/Severity; + public final fun component6 ()Lcom/shopify/checkoutkit/MessageType; + public final fun copy (Ljava/lang/String;Ljava/lang/String;Lcom/shopify/checkoutkit/ContentType;Ljava/lang/String;Lcom/shopify/checkoutkit/Severity;Lcom/shopify/checkoutkit/MessageType;)Lcom/shopify/checkoutkit/Message; + public static synthetic fun copy$default (Lcom/shopify/checkoutkit/Message;Ljava/lang/String;Ljava/lang/String;Lcom/shopify/checkoutkit/ContentType;Ljava/lang/String;Lcom/shopify/checkoutkit/Severity;Lcom/shopify/checkoutkit/MessageType;ILjava/lang/Object;)Lcom/shopify/checkoutkit/Message; + public fun equals (Ljava/lang/Object;)Z + public final fun getCode ()Ljava/lang/String; + public final fun getContent ()Ljava/lang/String; + public final fun getContentType ()Lcom/shopify/checkoutkit/ContentType; + public final fun getPath ()Ljava/lang/String; + public final fun getSeverity ()Lcom/shopify/checkoutkit/Severity; + public final fun getType ()Lcom/shopify/checkoutkit/MessageType; + public fun hashCode ()I + public fun toString ()Ljava/lang/String; +} + +public final class com/shopify/checkoutkit/Message$$serializer : kotlinx/serialization/internal/GeneratedSerializer { + public static final field INSTANCE Lcom/shopify/checkoutkit/Message$$serializer; + public fun childSerializers ()[Lkotlinx/serialization/KSerializer; + public fun deserialize (Lkotlinx/serialization/encoding/Decoder;)Lcom/shopify/checkoutkit/Message; + public synthetic fun deserialize (Lkotlinx/serialization/encoding/Decoder;)Ljava/lang/Object; + public fun getDescriptor ()Lkotlinx/serialization/descriptors/SerialDescriptor; + public fun serialize (Lkotlinx/serialization/encoding/Encoder;Lcom/shopify/checkoutkit/Message;)V + public synthetic fun serialize (Lkotlinx/serialization/encoding/Encoder;Ljava/lang/Object;)V + public fun typeParametersSerializers ()[Lkotlinx/serialization/KSerializer; +} + +public final class com/shopify/checkoutkit/Message$Companion { + public final fun serializer ()Lkotlinx/serialization/KSerializer; +} + +public final class com/shopify/checkoutkit/MessageElement { + public static final field Companion Lcom/shopify/checkoutkit/MessageElement$Companion; + public fun (Ljava/lang/String;Ljava/lang/String;Lcom/shopify/checkoutkit/ContentType;Ljava/lang/String;Lcom/shopify/checkoutkit/Severity;Lcom/shopify/checkoutkit/MessageType;)V + public synthetic fun (Ljava/lang/String;Ljava/lang/String;Lcom/shopify/checkoutkit/ContentType;Ljava/lang/String;Lcom/shopify/checkoutkit/Severity;Lcom/shopify/checkoutkit/MessageType;ILkotlin/jvm/internal/DefaultConstructorMarker;)V + public final fun component1 ()Ljava/lang/String; + public final fun component2 ()Ljava/lang/String; + public final fun component3 ()Lcom/shopify/checkoutkit/ContentType; + public final fun component4 ()Ljava/lang/String; + public final fun component5 ()Lcom/shopify/checkoutkit/Severity; + public final fun component6 ()Lcom/shopify/checkoutkit/MessageType; + public final fun copy (Ljava/lang/String;Ljava/lang/String;Lcom/shopify/checkoutkit/ContentType;Ljava/lang/String;Lcom/shopify/checkoutkit/Severity;Lcom/shopify/checkoutkit/MessageType;)Lcom/shopify/checkoutkit/MessageElement; + public static synthetic fun copy$default (Lcom/shopify/checkoutkit/MessageElement;Ljava/lang/String;Ljava/lang/String;Lcom/shopify/checkoutkit/ContentType;Ljava/lang/String;Lcom/shopify/checkoutkit/Severity;Lcom/shopify/checkoutkit/MessageType;ILjava/lang/Object;)Lcom/shopify/checkoutkit/MessageElement; + public fun equals (Ljava/lang/Object;)Z + public final fun getCode ()Ljava/lang/String; + public final fun getContent ()Ljava/lang/String; + public final fun getContentType ()Lcom/shopify/checkoutkit/ContentType; + public final fun getPath ()Ljava/lang/String; + public final fun getSeverity ()Lcom/shopify/checkoutkit/Severity; + public final fun getType ()Lcom/shopify/checkoutkit/MessageType; + public fun hashCode ()I + public fun toString ()Ljava/lang/String; +} + +public final class com/shopify/checkoutkit/MessageElement$$serializer : kotlinx/serialization/internal/GeneratedSerializer { + public static final field INSTANCE Lcom/shopify/checkoutkit/MessageElement$$serializer; + public fun childSerializers ()[Lkotlinx/serialization/KSerializer; + public fun deserialize (Lkotlinx/serialization/encoding/Decoder;)Lcom/shopify/checkoutkit/MessageElement; + public synthetic fun deserialize (Lkotlinx/serialization/encoding/Decoder;)Ljava/lang/Object; + public fun getDescriptor ()Lkotlinx/serialization/descriptors/SerialDescriptor; + public fun serialize (Lkotlinx/serialization/encoding/Encoder;Lcom/shopify/checkoutkit/MessageElement;)V + public synthetic fun serialize (Lkotlinx/serialization/encoding/Encoder;Ljava/lang/Object;)V + public fun typeParametersSerializers ()[Lkotlinx/serialization/KSerializer; +} + +public final class com/shopify/checkoutkit/MessageElement$Companion { + public final fun serializer ()Lkotlinx/serialization/KSerializer; +} + +public final class com/shopify/checkoutkit/MessageError { + public static final field Companion Lcom/shopify/checkoutkit/MessageError$Companion; + public fun (Ljava/lang/String;Ljava/lang/String;Lcom/shopify/checkoutkit/ContentType;Ljava/lang/String;Lcom/shopify/checkoutkit/Severity;Lcom/shopify/checkoutkit/MessageErrorType;)V + public synthetic fun (Ljava/lang/String;Ljava/lang/String;Lcom/shopify/checkoutkit/ContentType;Ljava/lang/String;Lcom/shopify/checkoutkit/Severity;Lcom/shopify/checkoutkit/MessageErrorType;ILkotlin/jvm/internal/DefaultConstructorMarker;)V + public final fun component1 ()Ljava/lang/String; + public final fun component2 ()Ljava/lang/String; + public final fun component3 ()Lcom/shopify/checkoutkit/ContentType; + public final fun component4 ()Ljava/lang/String; + public final fun component5 ()Lcom/shopify/checkoutkit/Severity; + public final fun component6 ()Lcom/shopify/checkoutkit/MessageErrorType; + public final fun copy (Ljava/lang/String;Ljava/lang/String;Lcom/shopify/checkoutkit/ContentType;Ljava/lang/String;Lcom/shopify/checkoutkit/Severity;Lcom/shopify/checkoutkit/MessageErrorType;)Lcom/shopify/checkoutkit/MessageError; + public static synthetic fun copy$default (Lcom/shopify/checkoutkit/MessageError;Ljava/lang/String;Ljava/lang/String;Lcom/shopify/checkoutkit/ContentType;Ljava/lang/String;Lcom/shopify/checkoutkit/Severity;Lcom/shopify/checkoutkit/MessageErrorType;ILjava/lang/Object;)Lcom/shopify/checkoutkit/MessageError; + public fun equals (Ljava/lang/Object;)Z + public final fun getCode ()Ljava/lang/String; + public final fun getContent ()Ljava/lang/String; + public final fun getContentType ()Lcom/shopify/checkoutkit/ContentType; + public final fun getPath ()Ljava/lang/String; + public final fun getSeverity ()Lcom/shopify/checkoutkit/Severity; + public final fun getType ()Lcom/shopify/checkoutkit/MessageErrorType; + public fun hashCode ()I + public fun toString ()Ljava/lang/String; +} + +public final class com/shopify/checkoutkit/MessageError$$serializer : kotlinx/serialization/internal/GeneratedSerializer { + public static final field INSTANCE Lcom/shopify/checkoutkit/MessageError$$serializer; + public fun childSerializers ()[Lkotlinx/serialization/KSerializer; + public fun deserialize (Lkotlinx/serialization/encoding/Decoder;)Lcom/shopify/checkoutkit/MessageError; + public synthetic fun deserialize (Lkotlinx/serialization/encoding/Decoder;)Ljava/lang/Object; + public fun getDescriptor ()Lkotlinx/serialization/descriptors/SerialDescriptor; + public fun serialize (Lkotlinx/serialization/encoding/Encoder;Lcom/shopify/checkoutkit/MessageError;)V + public synthetic fun serialize (Lkotlinx/serialization/encoding/Encoder;Ljava/lang/Object;)V + public fun typeParametersSerializers ()[Lkotlinx/serialization/KSerializer; +} + +public final class com/shopify/checkoutkit/MessageError$Companion { + public final fun serializer ()Lkotlinx/serialization/KSerializer; +} + +public final class com/shopify/checkoutkit/MessageErrorType : java/lang/Enum { + public static final field Companion Lcom/shopify/checkoutkit/MessageErrorType$Companion; + public static final field Error Lcom/shopify/checkoutkit/MessageErrorType; + public static fun getEntries ()Lkotlin/enums/EnumEntries; + public final fun getValue ()Ljava/lang/String; + public static fun valueOf (Ljava/lang/String;)Lcom/shopify/checkoutkit/MessageErrorType; + public static fun values ()[Lcom/shopify/checkoutkit/MessageErrorType; +} + +public final class com/shopify/checkoutkit/MessageErrorType$Companion { + public final fun serializer ()Lkotlinx/serialization/KSerializer; +} + +public final class com/shopify/checkoutkit/MessageInfo { + public static final field Companion Lcom/shopify/checkoutkit/MessageInfo$Companion; + public fun (Ljava/lang/String;Ljava/lang/String;Lcom/shopify/checkoutkit/ContentType;Ljava/lang/String;Lcom/shopify/checkoutkit/MessageInfoType;)V + public synthetic fun (Ljava/lang/String;Ljava/lang/String;Lcom/shopify/checkoutkit/ContentType;Ljava/lang/String;Lcom/shopify/checkoutkit/MessageInfoType;ILkotlin/jvm/internal/DefaultConstructorMarker;)V + public final fun component1 ()Ljava/lang/String; + public final fun component2 ()Ljava/lang/String; + public final fun component3 ()Lcom/shopify/checkoutkit/ContentType; + public final fun component4 ()Ljava/lang/String; + public final fun component5 ()Lcom/shopify/checkoutkit/MessageInfoType; + public final fun copy (Ljava/lang/String;Ljava/lang/String;Lcom/shopify/checkoutkit/ContentType;Ljava/lang/String;Lcom/shopify/checkoutkit/MessageInfoType;)Lcom/shopify/checkoutkit/MessageInfo; + public static synthetic fun copy$default (Lcom/shopify/checkoutkit/MessageInfo;Ljava/lang/String;Ljava/lang/String;Lcom/shopify/checkoutkit/ContentType;Ljava/lang/String;Lcom/shopify/checkoutkit/MessageInfoType;ILjava/lang/Object;)Lcom/shopify/checkoutkit/MessageInfo; + public fun equals (Ljava/lang/Object;)Z + public final fun getCode ()Ljava/lang/String; + public final fun getContent ()Ljava/lang/String; + public final fun getContentType ()Lcom/shopify/checkoutkit/ContentType; + public final fun getPath ()Ljava/lang/String; + public final fun getType ()Lcom/shopify/checkoutkit/MessageInfoType; + public fun hashCode ()I + public fun toString ()Ljava/lang/String; +} + +public final class com/shopify/checkoutkit/MessageInfo$$serializer : kotlinx/serialization/internal/GeneratedSerializer { + public static final field INSTANCE Lcom/shopify/checkoutkit/MessageInfo$$serializer; + public fun childSerializers ()[Lkotlinx/serialization/KSerializer; + public fun deserialize (Lkotlinx/serialization/encoding/Decoder;)Lcom/shopify/checkoutkit/MessageInfo; + public synthetic fun deserialize (Lkotlinx/serialization/encoding/Decoder;)Ljava/lang/Object; + public fun getDescriptor ()Lkotlinx/serialization/descriptors/SerialDescriptor; + public fun serialize (Lkotlinx/serialization/encoding/Encoder;Lcom/shopify/checkoutkit/MessageInfo;)V + public synthetic fun serialize (Lkotlinx/serialization/encoding/Encoder;Ljava/lang/Object;)V + public fun typeParametersSerializers ()[Lkotlinx/serialization/KSerializer; +} + +public final class com/shopify/checkoutkit/MessageInfo$Companion { + public final fun serializer ()Lkotlinx/serialization/KSerializer; +} + +public final class com/shopify/checkoutkit/MessageInfoType : java/lang/Enum { + public static final field Companion Lcom/shopify/checkoutkit/MessageInfoType$Companion; + public static final field Info Lcom/shopify/checkoutkit/MessageInfoType; + public static fun getEntries ()Lkotlin/enums/EnumEntries; + public final fun getValue ()Ljava/lang/String; + public static fun valueOf (Ljava/lang/String;)Lcom/shopify/checkoutkit/MessageInfoType; + public static fun values ()[Lcom/shopify/checkoutkit/MessageInfoType; +} + +public final class com/shopify/checkoutkit/MessageInfoType$Companion { + public final fun serializer ()Lkotlinx/serialization/KSerializer; +} + +public final class com/shopify/checkoutkit/MessageType : java/lang/Enum { + public static final field Companion Lcom/shopify/checkoutkit/MessageType$Companion; + public static final field Error Lcom/shopify/checkoutkit/MessageType; + public static final field Info Lcom/shopify/checkoutkit/MessageType; + public static final field Warning Lcom/shopify/checkoutkit/MessageType; + public static fun getEntries ()Lkotlin/enums/EnumEntries; + public final fun getValue ()Ljava/lang/String; + public static fun valueOf (Ljava/lang/String;)Lcom/shopify/checkoutkit/MessageType; + public static fun values ()[Lcom/shopify/checkoutkit/MessageType; +} + +public final class com/shopify/checkoutkit/MessageType$Companion { + public final fun serializer ()Lkotlinx/serialization/KSerializer; +} + +public final class com/shopify/checkoutkit/MessageWarning { + public static final field Companion Lcom/shopify/checkoutkit/MessageWarning$Companion; + public fun (Ljava/lang/String;Ljava/lang/String;Lcom/shopify/checkoutkit/ContentType;Ljava/lang/String;Lcom/shopify/checkoutkit/MessageWarningType;)V + public synthetic fun (Ljava/lang/String;Ljava/lang/String;Lcom/shopify/checkoutkit/ContentType;Ljava/lang/String;Lcom/shopify/checkoutkit/MessageWarningType;ILkotlin/jvm/internal/DefaultConstructorMarker;)V + public final fun component1 ()Ljava/lang/String; + public final fun component2 ()Ljava/lang/String; + public final fun component3 ()Lcom/shopify/checkoutkit/ContentType; + public final fun component4 ()Ljava/lang/String; + public final fun component5 ()Lcom/shopify/checkoutkit/MessageWarningType; + public final fun copy (Ljava/lang/String;Ljava/lang/String;Lcom/shopify/checkoutkit/ContentType;Ljava/lang/String;Lcom/shopify/checkoutkit/MessageWarningType;)Lcom/shopify/checkoutkit/MessageWarning; + public static synthetic fun copy$default (Lcom/shopify/checkoutkit/MessageWarning;Ljava/lang/String;Ljava/lang/String;Lcom/shopify/checkoutkit/ContentType;Ljava/lang/String;Lcom/shopify/checkoutkit/MessageWarningType;ILjava/lang/Object;)Lcom/shopify/checkoutkit/MessageWarning; + public fun equals (Ljava/lang/Object;)Z + public final fun getCode ()Ljava/lang/String; + public final fun getContent ()Ljava/lang/String; + public final fun getContentType ()Lcom/shopify/checkoutkit/ContentType; + public final fun getPath ()Ljava/lang/String; + public final fun getType ()Lcom/shopify/checkoutkit/MessageWarningType; + public fun hashCode ()I + public fun toString ()Ljava/lang/String; +} + +public final class com/shopify/checkoutkit/MessageWarning$$serializer : kotlinx/serialization/internal/GeneratedSerializer { + public static final field INSTANCE Lcom/shopify/checkoutkit/MessageWarning$$serializer; + public fun childSerializers ()[Lkotlinx/serialization/KSerializer; + public fun deserialize (Lkotlinx/serialization/encoding/Decoder;)Lcom/shopify/checkoutkit/MessageWarning; + public synthetic fun deserialize (Lkotlinx/serialization/encoding/Decoder;)Ljava/lang/Object; + public fun getDescriptor ()Lkotlinx/serialization/descriptors/SerialDescriptor; + public fun serialize (Lkotlinx/serialization/encoding/Encoder;Lcom/shopify/checkoutkit/MessageWarning;)V + public synthetic fun serialize (Lkotlinx/serialization/encoding/Encoder;Ljava/lang/Object;)V + public fun typeParametersSerializers ()[Lkotlinx/serialization/KSerializer; +} + +public final class com/shopify/checkoutkit/MessageWarning$Companion { + public final fun serializer ()Lkotlinx/serialization/KSerializer; +} + +public final class com/shopify/checkoutkit/MessageWarningType : java/lang/Enum { + public static final field Companion Lcom/shopify/checkoutkit/MessageWarningType$Companion; + public static final field Warning Lcom/shopify/checkoutkit/MessageWarningType; + public static fun getEntries ()Lkotlin/enums/EnumEntries; + public final fun getValue ()Ljava/lang/String; + public static fun valueOf (Ljava/lang/String;)Lcom/shopify/checkoutkit/MessageWarningType; + public static fun values ()[Lcom/shopify/checkoutkit/MessageWarningType; +} + +public final class com/shopify/checkoutkit/MessageWarningType$Companion { + public final fun serializer ()Lkotlinx/serialization/KSerializer; +} + +public final class com/shopify/checkoutkit/MethodElement { + public static final field Companion Lcom/shopify/checkoutkit/MethodElement$Companion; + public fun (Ljava/util/List;Ljava/util/List;Ljava/lang/String;Ljava/util/List;Ljava/lang/String;Lcom/shopify/checkoutkit/TypeElement;)V + public synthetic fun (Ljava/util/List;Ljava/util/List;Ljava/lang/String;Ljava/util/List;Ljava/lang/String;Lcom/shopify/checkoutkit/TypeElement;ILkotlin/jvm/internal/DefaultConstructorMarker;)V + public final fun component1 ()Ljava/util/List; + public final fun component2 ()Ljava/util/List; + public final fun component3 ()Ljava/lang/String; + public final fun component4 ()Ljava/util/List; + public final fun component5 ()Ljava/lang/String; + public final fun component6 ()Lcom/shopify/checkoutkit/TypeElement; + public final fun copy (Ljava/util/List;Ljava/util/List;Ljava/lang/String;Ljava/util/List;Ljava/lang/String;Lcom/shopify/checkoutkit/TypeElement;)Lcom/shopify/checkoutkit/MethodElement; + public static synthetic fun copy$default (Lcom/shopify/checkoutkit/MethodElement;Ljava/util/List;Ljava/util/List;Ljava/lang/String;Ljava/util/List;Ljava/lang/String;Lcom/shopify/checkoutkit/TypeElement;ILjava/lang/Object;)Lcom/shopify/checkoutkit/MethodElement; + public fun equals (Ljava/lang/Object;)Z + public final fun getDestinations ()Ljava/util/List; + public final fun getGroups ()Ljava/util/List; + public final fun getId ()Ljava/lang/String; + public final fun getLineItemIDS ()Ljava/util/List; + public final fun getSelectedDestinationID ()Ljava/lang/String; + public final fun getType ()Lcom/shopify/checkoutkit/TypeElement; + public fun hashCode ()I + public fun toString ()Ljava/lang/String; +} + +public final class com/shopify/checkoutkit/MethodElement$$serializer : kotlinx/serialization/internal/GeneratedSerializer { + public static final field INSTANCE Lcom/shopify/checkoutkit/MethodElement$$serializer; + public fun childSerializers ()[Lkotlinx/serialization/KSerializer; + public fun deserialize (Lkotlinx/serialization/encoding/Decoder;)Lcom/shopify/checkoutkit/MethodElement; + public synthetic fun deserialize (Lkotlinx/serialization/encoding/Decoder;)Ljava/lang/Object; + public fun getDescriptor ()Lkotlinx/serialization/descriptors/SerialDescriptor; + public fun serialize (Lkotlinx/serialization/encoding/Encoder;Lcom/shopify/checkoutkit/MethodElement;)V + public synthetic fun serialize (Lkotlinx/serialization/encoding/Encoder;Ljava/lang/Object;)V + public fun typeParametersSerializers ()[Lkotlinx/serialization/KSerializer; +} + +public final class com/shopify/checkoutkit/MethodElement$Companion { + public final fun serializer ()Lkotlinx/serialization/KSerializer; +} + +public final class com/shopify/checkoutkit/MethodType : java/lang/Enum { + public static final field Companion Lcom/shopify/checkoutkit/MethodType$Companion; + public static final field Digital Lcom/shopify/checkoutkit/MethodType; + public static final field Pickup Lcom/shopify/checkoutkit/MethodType; + public static final field Shipping Lcom/shopify/checkoutkit/MethodType; + public static fun getEntries ()Lkotlin/enums/EnumEntries; + public final fun getValue ()Ljava/lang/String; + public static fun valueOf (Ljava/lang/String;)Lcom/shopify/checkoutkit/MethodType; + public static fun values ()[Lcom/shopify/checkoutkit/MethodType; +} + +public final class com/shopify/checkoutkit/MethodType$Companion { + public final fun serializer ()Lkotlinx/serialization/KSerializer; +} + +public final class com/shopify/checkoutkit/NotificationDescriptor { + public fun (Ljava/lang/String;Lkotlin/jvm/functions/Function1;)V + public final fun getMethod ()Ljava/lang/String; +} + +public final class com/shopify/checkoutkit/OptionElement { + public static final field Companion Lcom/shopify/checkoutkit/OptionElement$Companion; + public fun (Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/util/List;)V + public synthetic fun (Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/util/List;ILkotlin/jvm/internal/DefaultConstructorMarker;)V + public final fun component1 ()Ljava/lang/String; + public final fun component2 ()Ljava/lang/String; + public final fun component3 ()Ljava/lang/String; + public final fun component4 ()Ljava/lang/String; + public final fun component5 ()Ljava/lang/String; + public final fun component6 ()Ljava/lang/String; + public final fun component7 ()Ljava/util/List; + public final fun copy (Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/util/List;)Lcom/shopify/checkoutkit/OptionElement; + public static synthetic fun copy$default (Lcom/shopify/checkoutkit/OptionElement;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/util/List;ILjava/lang/Object;)Lcom/shopify/checkoutkit/OptionElement; + public fun equals (Ljava/lang/Object;)Z + public final fun getCarrier ()Ljava/lang/String; + public final fun getDescription ()Ljava/lang/String; + public final fun getEarliestFulfillmentTime ()Ljava/lang/String; + public final fun getId ()Ljava/lang/String; + public final fun getLatestFulfillmentTime ()Ljava/lang/String; + public final fun getTitle ()Ljava/lang/String; + public final fun getTotals ()Ljava/util/List; + public fun hashCode ()I + public fun toString ()Ljava/lang/String; +} + +public final class com/shopify/checkoutkit/OptionElement$$serializer : kotlinx/serialization/internal/GeneratedSerializer { + public static final field INSTANCE Lcom/shopify/checkoutkit/OptionElement$$serializer; + public fun childSerializers ()[Lkotlinx/serialization/KSerializer; + public fun deserialize (Lkotlinx/serialization/encoding/Decoder;)Lcom/shopify/checkoutkit/OptionElement; + public synthetic fun deserialize (Lkotlinx/serialization/encoding/Decoder;)Ljava/lang/Object; + public fun getDescriptor ()Lkotlinx/serialization/descriptors/SerialDescriptor; + public fun serialize (Lkotlinx/serialization/encoding/Encoder;Lcom/shopify/checkoutkit/OptionElement;)V + public synthetic fun serialize (Lkotlinx/serialization/encoding/Encoder;Ljava/lang/Object;)V + public fun typeParametersSerializers ()[Lkotlinx/serialization/KSerializer; +} + +public final class com/shopify/checkoutkit/OptionElement$Companion { + public final fun serializer ()Lkotlinx/serialization/KSerializer; +} + +public final class com/shopify/checkoutkit/Order { + public static final field Companion Lcom/shopify/checkoutkit/Order$Companion; + public fun (Ljava/util/List;Ljava/lang/String;Lcom/shopify/checkoutkit/FulfillmentClass;Ljava/lang/String;Ljava/util/List;Ljava/lang/String;Ljava/util/List;Lcom/shopify/checkoutkit/UCPOrderResponseSchema;)V + public synthetic fun (Ljava/util/List;Ljava/lang/String;Lcom/shopify/checkoutkit/FulfillmentClass;Ljava/lang/String;Ljava/util/List;Ljava/lang/String;Ljava/util/List;Lcom/shopify/checkoutkit/UCPOrderResponseSchema;ILkotlin/jvm/internal/DefaultConstructorMarker;)V + public final fun component1 ()Ljava/util/List; + public final fun component2 ()Ljava/lang/String; + public final fun component3 ()Lcom/shopify/checkoutkit/FulfillmentClass; + public final fun component4 ()Ljava/lang/String; + public final fun component5 ()Ljava/util/List; + public final fun component6 ()Ljava/lang/String; + public final fun component7 ()Ljava/util/List; + public final fun component8 ()Lcom/shopify/checkoutkit/UCPOrderResponseSchema; + public final fun copy (Ljava/util/List;Ljava/lang/String;Lcom/shopify/checkoutkit/FulfillmentClass;Ljava/lang/String;Ljava/util/List;Ljava/lang/String;Ljava/util/List;Lcom/shopify/checkoutkit/UCPOrderResponseSchema;)Lcom/shopify/checkoutkit/Order; + public static synthetic fun copy$default (Lcom/shopify/checkoutkit/Order;Ljava/util/List;Ljava/lang/String;Lcom/shopify/checkoutkit/FulfillmentClass;Ljava/lang/String;Ljava/util/List;Ljava/lang/String;Ljava/util/List;Lcom/shopify/checkoutkit/UCPOrderResponseSchema;ILjava/lang/Object;)Lcom/shopify/checkoutkit/Order; + public fun equals (Ljava/lang/Object;)Z + public final fun getAdjustments ()Ljava/util/List; + public final fun getCheckoutID ()Ljava/lang/String; + public final fun getFulfillment ()Lcom/shopify/checkoutkit/FulfillmentClass; + public final fun getId ()Ljava/lang/String; + public final fun getLineItems ()Ljava/util/List; + public final fun getPermalinkURL ()Ljava/lang/String; + public final fun getTotals ()Ljava/util/List; + public final fun getUcp ()Lcom/shopify/checkoutkit/UCPOrderResponseSchema; + public fun hashCode ()I + public fun toString ()Ljava/lang/String; +} + +public final class com/shopify/checkoutkit/Order$$serializer : kotlinx/serialization/internal/GeneratedSerializer { + public static final field INSTANCE Lcom/shopify/checkoutkit/Order$$serializer; + public fun childSerializers ()[Lkotlinx/serialization/KSerializer; + public fun deserialize (Lkotlinx/serialization/encoding/Decoder;)Lcom/shopify/checkoutkit/Order; + public synthetic fun deserialize (Lkotlinx/serialization/encoding/Decoder;)Ljava/lang/Object; + public fun getDescriptor ()Lkotlinx/serialization/descriptors/SerialDescriptor; + public fun serialize (Lkotlinx/serialization/encoding/Encoder;Lcom/shopify/checkoutkit/Order;)V + public synthetic fun serialize (Lkotlinx/serialization/encoding/Encoder;Ljava/lang/Object;)V + public fun typeParametersSerializers ()[Lkotlinx/serialization/KSerializer; +} + +public final class com/shopify/checkoutkit/Order$Companion { + public final fun serializer ()Lkotlinx/serialization/KSerializer; +} + +public final class com/shopify/checkoutkit/OrderClass { + public static final field Companion Lcom/shopify/checkoutkit/OrderClass$Companion; + public fun (Ljava/lang/String;Ljava/lang/String;)V + public final fun component1 ()Ljava/lang/String; + public final fun component2 ()Ljava/lang/String; + public final fun copy (Ljava/lang/String;Ljava/lang/String;)Lcom/shopify/checkoutkit/OrderClass; + public static synthetic fun copy$default (Lcom/shopify/checkoutkit/OrderClass;Ljava/lang/String;Ljava/lang/String;ILjava/lang/Object;)Lcom/shopify/checkoutkit/OrderClass; + public fun equals (Ljava/lang/Object;)Z + public final fun getId ()Ljava/lang/String; + public final fun getPermalinkURL ()Ljava/lang/String; + public fun hashCode ()I + public fun toString ()Ljava/lang/String; +} + +public final class com/shopify/checkoutkit/OrderClass$$serializer : kotlinx/serialization/internal/GeneratedSerializer { + public static final field INSTANCE Lcom/shopify/checkoutkit/OrderClass$$serializer; + public fun childSerializers ()[Lkotlinx/serialization/KSerializer; + public fun deserialize (Lkotlinx/serialization/encoding/Decoder;)Lcom/shopify/checkoutkit/OrderClass; + public synthetic fun deserialize (Lkotlinx/serialization/encoding/Decoder;)Ljava/lang/Object; + public fun getDescriptor ()Lkotlinx/serialization/descriptors/SerialDescriptor; + public fun serialize (Lkotlinx/serialization/encoding/Encoder;Lcom/shopify/checkoutkit/OrderClass;)V + public synthetic fun serialize (Lkotlinx/serialization/encoding/Encoder;Ljava/lang/Object;)V + public fun typeParametersSerializers ()[Lkotlinx/serialization/KSerializer; +} + +public final class com/shopify/checkoutkit/OrderClass$Companion { + public final fun serializer ()Lkotlinx/serialization/KSerializer; +} + +public final class com/shopify/checkoutkit/OrderConfirmation { + public static final field Companion Lcom/shopify/checkoutkit/OrderConfirmation$Companion; + public fun (Ljava/lang/String;Ljava/lang/String;)V + public final fun component1 ()Ljava/lang/String; + public final fun component2 ()Ljava/lang/String; + public final fun copy (Ljava/lang/String;Ljava/lang/String;)Lcom/shopify/checkoutkit/OrderConfirmation; + public static synthetic fun copy$default (Lcom/shopify/checkoutkit/OrderConfirmation;Ljava/lang/String;Ljava/lang/String;ILjava/lang/Object;)Lcom/shopify/checkoutkit/OrderConfirmation; + public fun equals (Ljava/lang/Object;)Z + public final fun getId ()Ljava/lang/String; + public final fun getPermalinkURL ()Ljava/lang/String; + public fun hashCode ()I + public fun toString ()Ljava/lang/String; +} + +public final class com/shopify/checkoutkit/OrderConfirmation$$serializer : kotlinx/serialization/internal/GeneratedSerializer { + public static final field INSTANCE Lcom/shopify/checkoutkit/OrderConfirmation$$serializer; + public fun childSerializers ()[Lkotlinx/serialization/KSerializer; + public fun deserialize (Lkotlinx/serialization/encoding/Decoder;)Lcom/shopify/checkoutkit/OrderConfirmation; + public synthetic fun deserialize (Lkotlinx/serialization/encoding/Decoder;)Ljava/lang/Object; + public fun getDescriptor ()Lkotlinx/serialization/descriptors/SerialDescriptor; + public fun serialize (Lkotlinx/serialization/encoding/Encoder;Lcom/shopify/checkoutkit/OrderConfirmation;)V + public synthetic fun serialize (Lkotlinx/serialization/encoding/Encoder;Ljava/lang/Object;)V + public fun typeParametersSerializers ()[Lkotlinx/serialization/KSerializer; +} + +public final class com/shopify/checkoutkit/OrderConfirmation$Companion { + public final fun serializer ()Lkotlinx/serialization/KSerializer; +} + +public final class com/shopify/checkoutkit/OrderLineItem { + public static final field Companion Lcom/shopify/checkoutkit/OrderLineItem$Companion; + public fun (Ljava/lang/String;Lcom/shopify/checkoutkit/ItemClass;Ljava/lang/String;Lcom/shopify/checkoutkit/OrderLineItemQuantity;Lcom/shopify/checkoutkit/OrderLineItemStatus;Ljava/util/List;)V + public synthetic fun (Ljava/lang/String;Lcom/shopify/checkoutkit/ItemClass;Ljava/lang/String;Lcom/shopify/checkoutkit/OrderLineItemQuantity;Lcom/shopify/checkoutkit/OrderLineItemStatus;Ljava/util/List;ILkotlin/jvm/internal/DefaultConstructorMarker;)V + public final fun component1 ()Ljava/lang/String; + public final fun component2 ()Lcom/shopify/checkoutkit/ItemClass; + public final fun component3 ()Ljava/lang/String; + public final fun component4 ()Lcom/shopify/checkoutkit/OrderLineItemQuantity; + public final fun component5 ()Lcom/shopify/checkoutkit/OrderLineItemStatus; + public final fun component6 ()Ljava/util/List; + public final fun copy (Ljava/lang/String;Lcom/shopify/checkoutkit/ItemClass;Ljava/lang/String;Lcom/shopify/checkoutkit/OrderLineItemQuantity;Lcom/shopify/checkoutkit/OrderLineItemStatus;Ljava/util/List;)Lcom/shopify/checkoutkit/OrderLineItem; + public static synthetic fun copy$default (Lcom/shopify/checkoutkit/OrderLineItem;Ljava/lang/String;Lcom/shopify/checkoutkit/ItemClass;Ljava/lang/String;Lcom/shopify/checkoutkit/OrderLineItemQuantity;Lcom/shopify/checkoutkit/OrderLineItemStatus;Ljava/util/List;ILjava/lang/Object;)Lcom/shopify/checkoutkit/OrderLineItem; + public fun equals (Ljava/lang/Object;)Z + public final fun getId ()Ljava/lang/String; + public final fun getItem ()Lcom/shopify/checkoutkit/ItemClass; + public final fun getParentID ()Ljava/lang/String; + public final fun getQuantity ()Lcom/shopify/checkoutkit/OrderLineItemQuantity; + public final fun getStatus ()Lcom/shopify/checkoutkit/OrderLineItemStatus; + public final fun getTotals ()Ljava/util/List; + public fun hashCode ()I + public fun toString ()Ljava/lang/String; +} + +public final class com/shopify/checkoutkit/OrderLineItem$$serializer : kotlinx/serialization/internal/GeneratedSerializer { + public static final field INSTANCE Lcom/shopify/checkoutkit/OrderLineItem$$serializer; + public fun childSerializers ()[Lkotlinx/serialization/KSerializer; + public fun deserialize (Lkotlinx/serialization/encoding/Decoder;)Lcom/shopify/checkoutkit/OrderLineItem; + public synthetic fun deserialize (Lkotlinx/serialization/encoding/Decoder;)Ljava/lang/Object; + public fun getDescriptor ()Lkotlinx/serialization/descriptors/SerialDescriptor; + public fun serialize (Lkotlinx/serialization/encoding/Encoder;Lcom/shopify/checkoutkit/OrderLineItem;)V + public synthetic fun serialize (Lkotlinx/serialization/encoding/Encoder;Ljava/lang/Object;)V + public fun typeParametersSerializers ()[Lkotlinx/serialization/KSerializer; +} + +public final class com/shopify/checkoutkit/OrderLineItem$Companion { + public final fun serializer ()Lkotlinx/serialization/KSerializer; +} + +public final class com/shopify/checkoutkit/OrderLineItemQuantity { + public static final field Companion Lcom/shopify/checkoutkit/OrderLineItemQuantity$Companion; + public fun (JJ)V + public final fun component1 ()J + public final fun component2 ()J + public final fun copy (JJ)Lcom/shopify/checkoutkit/OrderLineItemQuantity; + public static synthetic fun copy$default (Lcom/shopify/checkoutkit/OrderLineItemQuantity;JJILjava/lang/Object;)Lcom/shopify/checkoutkit/OrderLineItemQuantity; + public fun equals (Ljava/lang/Object;)Z + public final fun getFulfilled ()J + public final fun getTotal ()J + public fun hashCode ()I + public fun toString ()Ljava/lang/String; +} + +public final class com/shopify/checkoutkit/OrderLineItemQuantity$$serializer : kotlinx/serialization/internal/GeneratedSerializer { + public static final field INSTANCE Lcom/shopify/checkoutkit/OrderLineItemQuantity$$serializer; + public fun childSerializers ()[Lkotlinx/serialization/KSerializer; + public fun deserialize (Lkotlinx/serialization/encoding/Decoder;)Lcom/shopify/checkoutkit/OrderLineItemQuantity; + public synthetic fun deserialize (Lkotlinx/serialization/encoding/Decoder;)Ljava/lang/Object; + public fun getDescriptor ()Lkotlinx/serialization/descriptors/SerialDescriptor; + public fun serialize (Lkotlinx/serialization/encoding/Encoder;Lcom/shopify/checkoutkit/OrderLineItemQuantity;)V + public synthetic fun serialize (Lkotlinx/serialization/encoding/Encoder;Ljava/lang/Object;)V + public fun typeParametersSerializers ()[Lkotlinx/serialization/KSerializer; +} + +public final class com/shopify/checkoutkit/OrderLineItemQuantity$Companion { + public final fun serializer ()Lkotlinx/serialization/KSerializer; +} + +public final class com/shopify/checkoutkit/OrderLineItemStatus : java/lang/Enum { + public static final field Companion Lcom/shopify/checkoutkit/OrderLineItemStatus$Companion; + public static final field Fulfilled Lcom/shopify/checkoutkit/OrderLineItemStatus; + public static final field Partial Lcom/shopify/checkoutkit/OrderLineItemStatus; + public static final field Processing Lcom/shopify/checkoutkit/OrderLineItemStatus; + public static fun getEntries ()Lkotlin/enums/EnumEntries; + public final fun getValue ()Ljava/lang/String; + public static fun valueOf (Ljava/lang/String;)Lcom/shopify/checkoutkit/OrderLineItemStatus; + public static fun values ()[Lcom/shopify/checkoutkit/OrderLineItemStatus; +} + +public final class com/shopify/checkoutkit/OrderLineItemStatus$Companion { + public final fun serializer ()Lkotlinx/serialization/KSerializer; +} + +public final class com/shopify/checkoutkit/Payment { + public static final field Companion Lcom/shopify/checkoutkit/Payment$Companion; + public fun ()V + public fun (Ljava/util/List;)V + public synthetic fun (Ljava/util/List;ILkotlin/jvm/internal/DefaultConstructorMarker;)V + public final fun component1 ()Ljava/util/List; + public final fun copy (Ljava/util/List;)Lcom/shopify/checkoutkit/Payment; + public static synthetic fun copy$default (Lcom/shopify/checkoutkit/Payment;Ljava/util/List;ILjava/lang/Object;)Lcom/shopify/checkoutkit/Payment; + public fun equals (Ljava/lang/Object;)Z + public final fun getInstruments ()Ljava/util/List; + public fun hashCode ()I + public fun toString ()Ljava/lang/String; +} + +public final class com/shopify/checkoutkit/Payment$$serializer : kotlinx/serialization/internal/GeneratedSerializer { + public static final field INSTANCE Lcom/shopify/checkoutkit/Payment$$serializer; + public fun childSerializers ()[Lkotlinx/serialization/KSerializer; + public fun deserialize (Lkotlinx/serialization/encoding/Decoder;)Lcom/shopify/checkoutkit/Payment; + public synthetic fun deserialize (Lkotlinx/serialization/encoding/Decoder;)Ljava/lang/Object; + public fun getDescriptor ()Lkotlinx/serialization/descriptors/SerialDescriptor; + public fun serialize (Lkotlinx/serialization/encoding/Encoder;Lcom/shopify/checkoutkit/Payment;)V + public synthetic fun serialize (Lkotlinx/serialization/encoding/Encoder;Ljava/lang/Object;)V + public fun typeParametersSerializers ()[Lkotlinx/serialization/KSerializer; +} + +public final class com/shopify/checkoutkit/Payment$Companion { + public final fun serializer ()Lkotlinx/serialization/KSerializer; +} + +public final class com/shopify/checkoutkit/PaymentAccountInfo { + public static final field Companion Lcom/shopify/checkoutkit/PaymentAccountInfo$Companion; + public fun ()V + public fun (Ljava/lang/String;)V + public synthetic fun (Ljava/lang/String;ILkotlin/jvm/internal/DefaultConstructorMarker;)V + public final fun component1 ()Ljava/lang/String; + public final fun copy (Ljava/lang/String;)Lcom/shopify/checkoutkit/PaymentAccountInfo; + public static synthetic fun copy$default (Lcom/shopify/checkoutkit/PaymentAccountInfo;Ljava/lang/String;ILjava/lang/Object;)Lcom/shopify/checkoutkit/PaymentAccountInfo; + public fun equals (Ljava/lang/Object;)Z + public final fun getPaymentAccountReference ()Ljava/lang/String; + public fun hashCode ()I + public fun toString ()Ljava/lang/String; +} + +public final class com/shopify/checkoutkit/PaymentAccountInfo$$serializer : kotlinx/serialization/internal/GeneratedSerializer { + public static final field INSTANCE Lcom/shopify/checkoutkit/PaymentAccountInfo$$serializer; + public fun childSerializers ()[Lkotlinx/serialization/KSerializer; + public fun deserialize (Lkotlinx/serialization/encoding/Decoder;)Lcom/shopify/checkoutkit/PaymentAccountInfo; + public synthetic fun deserialize (Lkotlinx/serialization/encoding/Decoder;)Ljava/lang/Object; + public fun getDescriptor ()Lkotlinx/serialization/descriptors/SerialDescriptor; + public fun serialize (Lkotlinx/serialization/encoding/Encoder;Lcom/shopify/checkoutkit/PaymentAccountInfo;)V + public synthetic fun serialize (Lkotlinx/serialization/encoding/Encoder;Ljava/lang/Object;)V + public fun typeParametersSerializers ()[Lkotlinx/serialization/KSerializer; +} + +public final class com/shopify/checkoutkit/PaymentAccountInfo$Companion { + public final fun serializer ()Lkotlinx/serialization/KSerializer; +} + +public final class com/shopify/checkoutkit/PaymentClass { + public static final field Companion Lcom/shopify/checkoutkit/PaymentClass$Companion; + public fun ()V + public fun (Ljava/util/List;)V + public synthetic fun (Ljava/util/List;ILkotlin/jvm/internal/DefaultConstructorMarker;)V + public final fun component1 ()Ljava/util/List; + public final fun copy (Ljava/util/List;)Lcom/shopify/checkoutkit/PaymentClass; + public static synthetic fun copy$default (Lcom/shopify/checkoutkit/PaymentClass;Ljava/util/List;ILjava/lang/Object;)Lcom/shopify/checkoutkit/PaymentClass; + public fun equals (Ljava/lang/Object;)Z + public final fun getInstruments ()Ljava/util/List; + public fun hashCode ()I + public fun toString ()Ljava/lang/String; +} + +public final class com/shopify/checkoutkit/PaymentClass$$serializer : kotlinx/serialization/internal/GeneratedSerializer { + public static final field INSTANCE Lcom/shopify/checkoutkit/PaymentClass$$serializer; + public fun childSerializers ()[Lkotlinx/serialization/KSerializer; + public fun deserialize (Lkotlinx/serialization/encoding/Decoder;)Lcom/shopify/checkoutkit/PaymentClass; + public synthetic fun deserialize (Lkotlinx/serialization/encoding/Decoder;)Ljava/lang/Object; + public fun getDescriptor ()Lkotlinx/serialization/descriptors/SerialDescriptor; + public fun serialize (Lkotlinx/serialization/encoding/Encoder;Lcom/shopify/checkoutkit/PaymentClass;)V + public synthetic fun serialize (Lkotlinx/serialization/encoding/Encoder;Ljava/lang/Object;)V + public fun typeParametersSerializers ()[Lkotlinx/serialization/KSerializer; +} + +public final class com/shopify/checkoutkit/PaymentClass$Companion { + public final fun serializer ()Lkotlinx/serialization/KSerializer; +} + +public final class com/shopify/checkoutkit/PaymentCredential { + public static final field Companion Lcom/shopify/checkoutkit/PaymentCredential$Companion; + public fun (Ljava/lang/String;)V + public final fun component1 ()Ljava/lang/String; + public final fun copy (Ljava/lang/String;)Lcom/shopify/checkoutkit/PaymentCredential; + public static synthetic fun copy$default (Lcom/shopify/checkoutkit/PaymentCredential;Ljava/lang/String;ILjava/lang/Object;)Lcom/shopify/checkoutkit/PaymentCredential; + public fun equals (Ljava/lang/Object;)Z + public final fun getType ()Ljava/lang/String; + public fun hashCode ()I + public fun toString ()Ljava/lang/String; +} + +public final class com/shopify/checkoutkit/PaymentCredential$$serializer : kotlinx/serialization/internal/GeneratedSerializer { + public static final field INSTANCE Lcom/shopify/checkoutkit/PaymentCredential$$serializer; + public fun childSerializers ()[Lkotlinx/serialization/KSerializer; + public fun deserialize (Lkotlinx/serialization/encoding/Decoder;)Lcom/shopify/checkoutkit/PaymentCredential; + public synthetic fun deserialize (Lkotlinx/serialization/encoding/Decoder;)Ljava/lang/Object; + public fun getDescriptor ()Lkotlinx/serialization/descriptors/SerialDescriptor; + public fun serialize (Lkotlinx/serialization/encoding/Encoder;Lcom/shopify/checkoutkit/PaymentCredential;)V + public synthetic fun serialize (Lkotlinx/serialization/encoding/Encoder;Ljava/lang/Object;)V + public fun typeParametersSerializers ()[Lkotlinx/serialization/KSerializer; +} + +public final class com/shopify/checkoutkit/PaymentCredential$Companion { + public final fun serializer ()Lkotlinx/serialization/KSerializer; +} + +public final class com/shopify/checkoutkit/PaymentHandlerResponseSchema { + public static final field Companion Lcom/shopify/checkoutkit/PaymentHandlerResponseSchema$Companion; + public fun (Lkotlinx/serialization/json/JsonObject;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)V + public synthetic fun (Lkotlinx/serialization/json/JsonObject;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;ILkotlin/jvm/internal/DefaultConstructorMarker;)V + public final fun component1 ()Lkotlinx/serialization/json/JsonObject; + public final fun component2 ()Ljava/lang/String; + public final fun component3 ()Ljava/lang/String; + public final fun component4 ()Ljava/lang/String; + public final fun component5 ()Ljava/lang/String; + public final fun copy (Lkotlinx/serialization/json/JsonObject;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)Lcom/shopify/checkoutkit/PaymentHandlerResponseSchema; + public static synthetic fun copy$default (Lcom/shopify/checkoutkit/PaymentHandlerResponseSchema;Lkotlinx/serialization/json/JsonObject;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;ILjava/lang/Object;)Lcom/shopify/checkoutkit/PaymentHandlerResponseSchema; + public fun equals (Ljava/lang/Object;)Z + public final fun getConfig ()Lkotlinx/serialization/json/JsonObject; + public final fun getId ()Ljava/lang/String; + public final fun getSchema ()Ljava/lang/String; + public final fun getSpec ()Ljava/lang/String; + public final fun getVersion ()Ljava/lang/String; + public fun hashCode ()I + public fun toString ()Ljava/lang/String; +} + +public final class com/shopify/checkoutkit/PaymentHandlerResponseSchema$$serializer : kotlinx/serialization/internal/GeneratedSerializer { + public static final field INSTANCE Lcom/shopify/checkoutkit/PaymentHandlerResponseSchema$$serializer; + public fun childSerializers ()[Lkotlinx/serialization/KSerializer; + public fun deserialize (Lkotlinx/serialization/encoding/Decoder;)Lcom/shopify/checkoutkit/PaymentHandlerResponseSchema; + public synthetic fun deserialize (Lkotlinx/serialization/encoding/Decoder;)Ljava/lang/Object; + public fun getDescriptor ()Lkotlinx/serialization/descriptors/SerialDescriptor; + public fun serialize (Lkotlinx/serialization/encoding/Encoder;Lcom/shopify/checkoutkit/PaymentHandlerResponseSchema;)V + public synthetic fun serialize (Lkotlinx/serialization/encoding/Encoder;Ljava/lang/Object;)V + public fun typeParametersSerializers ()[Lkotlinx/serialization/KSerializer; +} + +public final class com/shopify/checkoutkit/PaymentHandlerResponseSchema$Companion { + public final fun serializer ()Lkotlinx/serialization/KSerializer; +} + +public final class com/shopify/checkoutkit/PaymentIdentity { + public static final field Companion Lcom/shopify/checkoutkit/PaymentIdentity$Companion; + public fun (Ljava/lang/String;)V + public final fun component1 ()Ljava/lang/String; + public final fun copy (Ljava/lang/String;)Lcom/shopify/checkoutkit/PaymentIdentity; + public static synthetic fun copy$default (Lcom/shopify/checkoutkit/PaymentIdentity;Ljava/lang/String;ILjava/lang/Object;)Lcom/shopify/checkoutkit/PaymentIdentity; + public fun equals (Ljava/lang/Object;)Z + public final fun getAccessToken ()Ljava/lang/String; + public fun hashCode ()I + public fun toString ()Ljava/lang/String; +} + +public final class com/shopify/checkoutkit/PaymentIdentity$$serializer : kotlinx/serialization/internal/GeneratedSerializer { + public static final field INSTANCE Lcom/shopify/checkoutkit/PaymentIdentity$$serializer; + public fun childSerializers ()[Lkotlinx/serialization/KSerializer; + public fun deserialize (Lkotlinx/serialization/encoding/Decoder;)Lcom/shopify/checkoutkit/PaymentIdentity; + public synthetic fun deserialize (Lkotlinx/serialization/encoding/Decoder;)Ljava/lang/Object; + public fun getDescriptor ()Lkotlinx/serialization/descriptors/SerialDescriptor; + public fun serialize (Lkotlinx/serialization/encoding/Encoder;Lcom/shopify/checkoutkit/PaymentIdentity;)V + public synthetic fun serialize (Lkotlinx/serialization/encoding/Encoder;Ljava/lang/Object;)V + public fun typeParametersSerializers ()[Lkotlinx/serialization/KSerializer; +} + +public final class com/shopify/checkoutkit/PaymentIdentity$Companion { + public final fun serializer ()Lkotlinx/serialization/KSerializer; +} + +public final class com/shopify/checkoutkit/PaymentInstrument { + public static final field Companion Lcom/shopify/checkoutkit/PaymentInstrument$Companion; + public fun (Lcom/shopify/checkoutkit/BillingAddressClass;Lcom/shopify/checkoutkit/CredentialClass;Lkotlinx/serialization/json/JsonObject;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)V + public synthetic fun (Lcom/shopify/checkoutkit/BillingAddressClass;Lcom/shopify/checkoutkit/CredentialClass;Lkotlinx/serialization/json/JsonObject;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;ILkotlin/jvm/internal/DefaultConstructorMarker;)V + public final fun component1 ()Lcom/shopify/checkoutkit/BillingAddressClass; + public final fun component2 ()Lcom/shopify/checkoutkit/CredentialClass; + public final fun component3 ()Lkotlinx/serialization/json/JsonObject; + public final fun component4 ()Ljava/lang/String; + public final fun component5 ()Ljava/lang/String; + public final fun component6 ()Ljava/lang/String; + public final fun copy (Lcom/shopify/checkoutkit/BillingAddressClass;Lcom/shopify/checkoutkit/CredentialClass;Lkotlinx/serialization/json/JsonObject;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)Lcom/shopify/checkoutkit/PaymentInstrument; + public static synthetic fun copy$default (Lcom/shopify/checkoutkit/PaymentInstrument;Lcom/shopify/checkoutkit/BillingAddressClass;Lcom/shopify/checkoutkit/CredentialClass;Lkotlinx/serialization/json/JsonObject;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;ILjava/lang/Object;)Lcom/shopify/checkoutkit/PaymentInstrument; + public fun equals (Ljava/lang/Object;)Z + public final fun getBillingAddress ()Lcom/shopify/checkoutkit/BillingAddressClass; + public final fun getCredential ()Lcom/shopify/checkoutkit/CredentialClass; + public final fun getDisplay ()Lkotlinx/serialization/json/JsonObject; + public final fun getHandlerID ()Ljava/lang/String; + public final fun getId ()Ljava/lang/String; + public final fun getType ()Ljava/lang/String; + public fun hashCode ()I + public fun toString ()Ljava/lang/String; +} + +public final class com/shopify/checkoutkit/PaymentInstrument$$serializer : kotlinx/serialization/internal/GeneratedSerializer { + public static final field INSTANCE Lcom/shopify/checkoutkit/PaymentInstrument$$serializer; + public fun childSerializers ()[Lkotlinx/serialization/KSerializer; + public fun deserialize (Lkotlinx/serialization/encoding/Decoder;)Lcom/shopify/checkoutkit/PaymentInstrument; + public synthetic fun deserialize (Lkotlinx/serialization/encoding/Decoder;)Ljava/lang/Object; + public fun getDescriptor ()Lkotlinx/serialization/descriptors/SerialDescriptor; + public fun serialize (Lkotlinx/serialization/encoding/Encoder;Lcom/shopify/checkoutkit/PaymentInstrument;)V + public synthetic fun serialize (Lkotlinx/serialization/encoding/Encoder;Ljava/lang/Object;)V + public fun typeParametersSerializers ()[Lkotlinx/serialization/KSerializer; +} + +public final class com/shopify/checkoutkit/PaymentInstrument$Companion { + public final fun serializer ()Lkotlinx/serialization/KSerializer; +} + +public final class com/shopify/checkoutkit/Platform : java/lang/Enum { + public static final field REACT_NATIVE Lcom/shopify/checkoutkit/Platform; + public final fun getDisplayName ()Ljava/lang/String; + public static fun getEntries ()Lkotlin/enums/EnumEntries; + public static fun valueOf (Ljava/lang/String;)Lcom/shopify/checkoutkit/Platform; + public static fun values ()[Lcom/shopify/checkoutkit/Platform; +} + +public final class com/shopify/checkoutkit/PlatformFulfillmentConfig { + public static final field Companion Lcom/shopify/checkoutkit/PlatformFulfillmentConfig$Companion; + public fun ()V + public fun (Ljava/lang/Boolean;)V + public synthetic fun (Ljava/lang/Boolean;ILkotlin/jvm/internal/DefaultConstructorMarker;)V + public final fun component1 ()Ljava/lang/Boolean; + public final fun copy (Ljava/lang/Boolean;)Lcom/shopify/checkoutkit/PlatformFulfillmentConfig; + public static synthetic fun copy$default (Lcom/shopify/checkoutkit/PlatformFulfillmentConfig;Ljava/lang/Boolean;ILjava/lang/Object;)Lcom/shopify/checkoutkit/PlatformFulfillmentConfig; + public fun equals (Ljava/lang/Object;)Z + public final fun getSupportsMultiGroup ()Ljava/lang/Boolean; + public fun hashCode ()I + public fun toString ()Ljava/lang/String; +} + +public final class com/shopify/checkoutkit/PlatformFulfillmentConfig$$serializer : kotlinx/serialization/internal/GeneratedSerializer { + public static final field INSTANCE Lcom/shopify/checkoutkit/PlatformFulfillmentConfig$$serializer; + public fun childSerializers ()[Lkotlinx/serialization/KSerializer; + public fun deserialize (Lkotlinx/serialization/encoding/Decoder;)Lcom/shopify/checkoutkit/PlatformFulfillmentConfig; + public synthetic fun deserialize (Lkotlinx/serialization/encoding/Decoder;)Ljava/lang/Object; + public fun getDescriptor ()Lkotlinx/serialization/descriptors/SerialDescriptor; + public fun serialize (Lkotlinx/serialization/encoding/Encoder;Lcom/shopify/checkoutkit/PlatformFulfillmentConfig;)V + public synthetic fun serialize (Lkotlinx/serialization/encoding/Encoder;Ljava/lang/Object;)V + public fun typeParametersSerializers ()[Lkotlinx/serialization/KSerializer; +} + +public final class com/shopify/checkoutkit/PlatformFulfillmentConfig$Companion { + public final fun serializer ()Lkotlinx/serialization/KSerializer; +} + +public final class com/shopify/checkoutkit/PostalAddress { + public static final field Companion Lcom/shopify/checkoutkit/PostalAddress$Companion; + public fun ()V + public fun (Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)V + public synthetic fun (Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;ILkotlin/jvm/internal/DefaultConstructorMarker;)V + public final fun component1 ()Ljava/lang/String; + public final fun component2 ()Ljava/lang/String; + public final fun component3 ()Ljava/lang/String; + public final fun component4 ()Ljava/lang/String; + public final fun component5 ()Ljava/lang/String; + public final fun component6 ()Ljava/lang/String; + public final fun component7 ()Ljava/lang/String; + public final fun component8 ()Ljava/lang/String; + public final fun component9 ()Ljava/lang/String; + public final fun copy (Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)Lcom/shopify/checkoutkit/PostalAddress; + public static synthetic fun copy$default (Lcom/shopify/checkoutkit/PostalAddress;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;ILjava/lang/Object;)Lcom/shopify/checkoutkit/PostalAddress; + public fun equals (Ljava/lang/Object;)Z + public final fun getAddressCountry ()Ljava/lang/String; + public final fun getAddressLocality ()Ljava/lang/String; + public final fun getAddressRegion ()Ljava/lang/String; + public final fun getExtendedAddress ()Ljava/lang/String; + public final fun getFirstName ()Ljava/lang/String; + public final fun getLastName ()Ljava/lang/String; + public final fun getPhoneNumber ()Ljava/lang/String; + public final fun getPostalCode ()Ljava/lang/String; + public final fun getStreetAddress ()Ljava/lang/String; + public fun hashCode ()I + public fun toString ()Ljava/lang/String; +} + +public final class com/shopify/checkoutkit/PostalAddress$$serializer : kotlinx/serialization/internal/GeneratedSerializer { + public static final field INSTANCE Lcom/shopify/checkoutkit/PostalAddress$$serializer; + public fun childSerializers ()[Lkotlinx/serialization/KSerializer; + public fun deserialize (Lkotlinx/serialization/encoding/Decoder;)Lcom/shopify/checkoutkit/PostalAddress; + public synthetic fun deserialize (Lkotlinx/serialization/encoding/Decoder;)Ljava/lang/Object; + public fun getDescriptor ()Lkotlinx/serialization/descriptors/SerialDescriptor; + public fun serialize (Lkotlinx/serialization/encoding/Encoder;Lcom/shopify/checkoutkit/PostalAddress;)V + public synthetic fun serialize (Lkotlinx/serialization/encoding/Encoder;Ljava/lang/Object;)V + public fun typeParametersSerializers ()[Lkotlinx/serialization/KSerializer; +} + +public final class com/shopify/checkoutkit/PostalAddress$Companion { + public final fun serializer ()Lkotlinx/serialization/KSerializer; +} + +public final class com/shopify/checkoutkit/Preloading { + public fun ()V + public fun (Z)V + public synthetic fun (ZILkotlin/jvm/internal/DefaultConstructorMarker;)V + public final fun component1 ()Z + public final fun copy (Z)Lcom/shopify/checkoutkit/Preloading; + public static synthetic fun copy$default (Lcom/shopify/checkoutkit/Preloading;ZILjava/lang/Object;)Lcom/shopify/checkoutkit/Preloading; + public fun equals (Ljava/lang/Object;)Z + public final fun getEnabled ()Z + public fun hashCode ()I + public fun toString ()Ljava/lang/String; +} + +public final class com/shopify/checkoutkit/ReadyPayload { + public fun (Ljava/util/List;)V + public final fun component1 ()Ljava/util/List; + public final fun copy (Ljava/util/List;)Lcom/shopify/checkoutkit/ReadyPayload; + public static synthetic fun copy$default (Lcom/shopify/checkoutkit/ReadyPayload;Ljava/util/List;ILjava/lang/Object;)Lcom/shopify/checkoutkit/ReadyPayload; + public fun equals (Ljava/lang/Object;)Z + public final fun getDelegations ()Ljava/util/List; + public fun hashCode ()I + public fun toString ()Ljava/lang/String; +} + +public final class com/shopify/checkoutkit/RetailLocation { + public static final field Companion Lcom/shopify/checkoutkit/RetailLocation$Companion; + public fun (Lcom/shopify/checkoutkit/BillingAddressClass;Ljava/lang/String;Ljava/lang/String;)V + public synthetic fun (Lcom/shopify/checkoutkit/BillingAddressClass;Ljava/lang/String;Ljava/lang/String;ILkotlin/jvm/internal/DefaultConstructorMarker;)V + public final fun component1 ()Lcom/shopify/checkoutkit/BillingAddressClass; + public final fun component2 ()Ljava/lang/String; + public final fun component3 ()Ljava/lang/String; + public final fun copy (Lcom/shopify/checkoutkit/BillingAddressClass;Ljava/lang/String;Ljava/lang/String;)Lcom/shopify/checkoutkit/RetailLocation; + public static synthetic fun copy$default (Lcom/shopify/checkoutkit/RetailLocation;Lcom/shopify/checkoutkit/BillingAddressClass;Ljava/lang/String;Ljava/lang/String;ILjava/lang/Object;)Lcom/shopify/checkoutkit/RetailLocation; + public fun equals (Ljava/lang/Object;)Z + public final fun getAddress ()Lcom/shopify/checkoutkit/BillingAddressClass; + public final fun getId ()Ljava/lang/String; + public final fun getName ()Ljava/lang/String; + public fun hashCode ()I + public fun toString ()Ljava/lang/String; +} + +public final class com/shopify/checkoutkit/RetailLocation$$serializer : kotlinx/serialization/internal/GeneratedSerializer { + public static final field INSTANCE Lcom/shopify/checkoutkit/RetailLocation$$serializer; + public fun childSerializers ()[Lkotlinx/serialization/KSerializer; + public fun deserialize (Lkotlinx/serialization/encoding/Decoder;)Lcom/shopify/checkoutkit/RetailLocation; + public synthetic fun deserialize (Lkotlinx/serialization/encoding/Decoder;)Ljava/lang/Object; + public fun getDescriptor ()Lkotlinx/serialization/descriptors/SerialDescriptor; + public fun serialize (Lkotlinx/serialization/encoding/Encoder;Lcom/shopify/checkoutkit/RetailLocation;)V + public synthetic fun serialize (Lkotlinx/serialization/encoding/Encoder;Ljava/lang/Object;)V + public fun typeParametersSerializers ()[Lkotlinx/serialization/KSerializer; +} + +public final class com/shopify/checkoutkit/RetailLocation$Companion { + public final fun serializer ()Lkotlinx/serialization/KSerializer; +} + +public final class com/shopify/checkoutkit/SelectedPaymentInstrument { + public static final field Companion Lcom/shopify/checkoutkit/SelectedPaymentInstrument$Companion; + public fun (Lcom/shopify/checkoutkit/BillingAddressClass;Lcom/shopify/checkoutkit/CredentialClass;Lkotlinx/serialization/json/JsonObject;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/Boolean;)V + public synthetic fun (Lcom/shopify/checkoutkit/BillingAddressClass;Lcom/shopify/checkoutkit/CredentialClass;Lkotlinx/serialization/json/JsonObject;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/Boolean;ILkotlin/jvm/internal/DefaultConstructorMarker;)V + public final fun component1 ()Lcom/shopify/checkoutkit/BillingAddressClass; + public final fun component2 ()Lcom/shopify/checkoutkit/CredentialClass; + public final fun component3 ()Lkotlinx/serialization/json/JsonObject; + public final fun component4 ()Ljava/lang/String; + public final fun component5 ()Ljava/lang/String; + public final fun component6 ()Ljava/lang/String; + public final fun component7 ()Ljava/lang/Boolean; + public final fun copy (Lcom/shopify/checkoutkit/BillingAddressClass;Lcom/shopify/checkoutkit/CredentialClass;Lkotlinx/serialization/json/JsonObject;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/Boolean;)Lcom/shopify/checkoutkit/SelectedPaymentInstrument; + public static synthetic fun copy$default (Lcom/shopify/checkoutkit/SelectedPaymentInstrument;Lcom/shopify/checkoutkit/BillingAddressClass;Lcom/shopify/checkoutkit/CredentialClass;Lkotlinx/serialization/json/JsonObject;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/Boolean;ILjava/lang/Object;)Lcom/shopify/checkoutkit/SelectedPaymentInstrument; + public fun equals (Ljava/lang/Object;)Z + public final fun getBillingAddress ()Lcom/shopify/checkoutkit/BillingAddressClass; + public final fun getCredential ()Lcom/shopify/checkoutkit/CredentialClass; + public final fun getDisplay ()Lkotlinx/serialization/json/JsonObject; + public final fun getHandlerID ()Ljava/lang/String; + public final fun getId ()Ljava/lang/String; + public final fun getSelected ()Ljava/lang/Boolean; + public final fun getType ()Ljava/lang/String; + public fun hashCode ()I + public fun toString ()Ljava/lang/String; +} + +public final class com/shopify/checkoutkit/SelectedPaymentInstrument$$serializer : kotlinx/serialization/internal/GeneratedSerializer { + public static final field INSTANCE Lcom/shopify/checkoutkit/SelectedPaymentInstrument$$serializer; + public fun childSerializers ()[Lkotlinx/serialization/KSerializer; + public fun deserialize (Lkotlinx/serialization/encoding/Decoder;)Lcom/shopify/checkoutkit/SelectedPaymentInstrument; + public synthetic fun deserialize (Lkotlinx/serialization/encoding/Decoder;)Ljava/lang/Object; + public fun getDescriptor ()Lkotlinx/serialization/descriptors/SerialDescriptor; + public fun serialize (Lkotlinx/serialization/encoding/Encoder;Lcom/shopify/checkoutkit/SelectedPaymentInstrument;)V + public synthetic fun serialize (Lkotlinx/serialization/encoding/Encoder;Ljava/lang/Object;)V + public fun typeParametersSerializers ()[Lkotlinx/serialization/KSerializer; +} + +public final class com/shopify/checkoutkit/SelectedPaymentInstrument$Companion { + public final fun serializer ()Lkotlinx/serialization/KSerializer; +} + +public final class com/shopify/checkoutkit/Service { + public static final field Companion Lcom/shopify/checkoutkit/Service$Companion; + public fun (Lkotlinx/serialization/json/JsonObject;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Lcom/shopify/checkoutkit/Transport;)V + public synthetic fun (Lkotlinx/serialization/json/JsonObject;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Lcom/shopify/checkoutkit/Transport;ILkotlin/jvm/internal/DefaultConstructorMarker;)V + public final fun component1 ()Lkotlinx/serialization/json/JsonObject; + public final fun component2 ()Ljava/lang/String; + public final fun component3 ()Ljava/lang/String; + public final fun component4 ()Ljava/lang/String; + public final fun component5 ()Ljava/lang/String; + public final fun component6 ()Ljava/lang/String; + public final fun component7 ()Lcom/shopify/checkoutkit/Transport; + public final fun copy (Lkotlinx/serialization/json/JsonObject;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Lcom/shopify/checkoutkit/Transport;)Lcom/shopify/checkoutkit/Service; + public static synthetic fun copy$default (Lcom/shopify/checkoutkit/Service;Lkotlinx/serialization/json/JsonObject;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Lcom/shopify/checkoutkit/Transport;ILjava/lang/Object;)Lcom/shopify/checkoutkit/Service; + public fun equals (Ljava/lang/Object;)Z + public final fun getConfig ()Lkotlinx/serialization/json/JsonObject; + public final fun getEndpoint ()Ljava/lang/String; + public final fun getId ()Ljava/lang/String; + public final fun getSchema ()Ljava/lang/String; + public final fun getSpec ()Ljava/lang/String; + public final fun getTransport ()Lcom/shopify/checkoutkit/Transport; + public final fun getVersion ()Ljava/lang/String; + public fun hashCode ()I + public fun toString ()Ljava/lang/String; +} + +public final class com/shopify/checkoutkit/Service$$serializer : kotlinx/serialization/internal/GeneratedSerializer { + public static final field INSTANCE Lcom/shopify/checkoutkit/Service$$serializer; + public fun childSerializers ()[Lkotlinx/serialization/KSerializer; + public fun deserialize (Lkotlinx/serialization/encoding/Decoder;)Lcom/shopify/checkoutkit/Service; + public synthetic fun deserialize (Lkotlinx/serialization/encoding/Decoder;)Ljava/lang/Object; + public fun getDescriptor ()Lkotlinx/serialization/descriptors/SerialDescriptor; + public fun serialize (Lkotlinx/serialization/encoding/Encoder;Lcom/shopify/checkoutkit/Service;)V + public synthetic fun serialize (Lkotlinx/serialization/encoding/Encoder;Ljava/lang/Object;)V + public fun typeParametersSerializers ()[Lkotlinx/serialization/KSerializer; +} + +public final class com/shopify/checkoutkit/Service$Companion { + public final fun serializer ()Lkotlinx/serialization/KSerializer; +} + +public final class com/shopify/checkoutkit/ServiceResponseSchema { + public static final field Companion Lcom/shopify/checkoutkit/ServiceResponseSchema$Companion; + public fun (Lcom/shopify/checkoutkit/EmbeddedTransportConfig;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Lcom/shopify/checkoutkit/Transport;)V + public synthetic fun (Lcom/shopify/checkoutkit/EmbeddedTransportConfig;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Lcom/shopify/checkoutkit/Transport;ILkotlin/jvm/internal/DefaultConstructorMarker;)V + public final fun component1 ()Lcom/shopify/checkoutkit/EmbeddedTransportConfig; + public final fun component2 ()Ljava/lang/String; + public final fun component3 ()Ljava/lang/String; + public final fun component4 ()Ljava/lang/String; + public final fun component5 ()Ljava/lang/String; + public final fun component6 ()Ljava/lang/String; + public final fun component7 ()Lcom/shopify/checkoutkit/Transport; + public final fun copy (Lcom/shopify/checkoutkit/EmbeddedTransportConfig;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Lcom/shopify/checkoutkit/Transport;)Lcom/shopify/checkoutkit/ServiceResponseSchema; + public static synthetic fun copy$default (Lcom/shopify/checkoutkit/ServiceResponseSchema;Lcom/shopify/checkoutkit/EmbeddedTransportConfig;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Lcom/shopify/checkoutkit/Transport;ILjava/lang/Object;)Lcom/shopify/checkoutkit/ServiceResponseSchema; + public fun equals (Ljava/lang/Object;)Z + public final fun getConfig ()Lcom/shopify/checkoutkit/EmbeddedTransportConfig; + public final fun getEndpoint ()Ljava/lang/String; + public final fun getId ()Ljava/lang/String; + public final fun getSchema ()Ljava/lang/String; + public final fun getSpec ()Ljava/lang/String; + public final fun getTransport ()Lcom/shopify/checkoutkit/Transport; + public final fun getVersion ()Ljava/lang/String; + public fun hashCode ()I + public fun toString ()Ljava/lang/String; +} + +public final class com/shopify/checkoutkit/ServiceResponseSchema$$serializer : kotlinx/serialization/internal/GeneratedSerializer { + public static final field INSTANCE Lcom/shopify/checkoutkit/ServiceResponseSchema$$serializer; public fun childSerializers ()[Lkotlinx/serialization/KSerializer; - public fun deserialize (Lkotlinx/serialization/encoding/Decoder;)Lcom/shopify/checkoutkit/ColorScheme$Web; + public fun deserialize (Lkotlinx/serialization/encoding/Decoder;)Lcom/shopify/checkoutkit/ServiceResponseSchema; public synthetic fun deserialize (Lkotlinx/serialization/encoding/Decoder;)Ljava/lang/Object; public fun getDescriptor ()Lkotlinx/serialization/descriptors/SerialDescriptor; - public fun serialize (Lkotlinx/serialization/encoding/Encoder;Lcom/shopify/checkoutkit/ColorScheme$Web;)V + public fun serialize (Lkotlinx/serialization/encoding/Encoder;Lcom/shopify/checkoutkit/ServiceResponseSchema;)V public synthetic fun serialize (Lkotlinx/serialization/encoding/Encoder;Ljava/lang/Object;)V public fun typeParametersSerializers ()[Lkotlinx/serialization/KSerializer; } -public final class com/shopify/checkoutkit/ColorScheme$Web$Companion { +public final class com/shopify/checkoutkit/ServiceResponseSchema$Companion { public final fun serializer ()Lkotlinx/serialization/KSerializer; } -public final class com/shopify/checkoutkit/Colors { - public static final field Companion Lcom/shopify/checkoutkit/Colors$Companion; - public fun (Lcom/shopify/checkoutkit/Color;Lcom/shopify/checkoutkit/Color;Lcom/shopify/checkoutkit/Color;Lcom/shopify/checkoutkit/Color;Lcom/shopify/checkoutkit/DrawableResource;Lcom/shopify/checkoutkit/Color;)V - public synthetic fun (Lcom/shopify/checkoutkit/Color;Lcom/shopify/checkoutkit/Color;Lcom/shopify/checkoutkit/Color;Lcom/shopify/checkoutkit/Color;Lcom/shopify/checkoutkit/DrawableResource;Lcom/shopify/checkoutkit/Color;ILkotlin/jvm/internal/DefaultConstructorMarker;)V - public final fun component1 ()Lcom/shopify/checkoutkit/Color; - public final fun component2 ()Lcom/shopify/checkoutkit/Color; - public final fun component3 ()Lcom/shopify/checkoutkit/Color; - public final fun component4 ()Lcom/shopify/checkoutkit/Color; - public final fun component5 ()Lcom/shopify/checkoutkit/DrawableResource; - public final fun component6 ()Lcom/shopify/checkoutkit/Color; - public final fun copy (Lcom/shopify/checkoutkit/Color;Lcom/shopify/checkoutkit/Color;Lcom/shopify/checkoutkit/Color;Lcom/shopify/checkoutkit/Color;Lcom/shopify/checkoutkit/DrawableResource;Lcom/shopify/checkoutkit/Color;)Lcom/shopify/checkoutkit/Colors; - public static synthetic fun copy$default (Lcom/shopify/checkoutkit/Colors;Lcom/shopify/checkoutkit/Color;Lcom/shopify/checkoutkit/Color;Lcom/shopify/checkoutkit/Color;Lcom/shopify/checkoutkit/Color;Lcom/shopify/checkoutkit/DrawableResource;Lcom/shopify/checkoutkit/Color;ILjava/lang/Object;)Lcom/shopify/checkoutkit/Colors; +public final class com/shopify/checkoutkit/Severity : java/lang/Enum { + public static final field Companion Lcom/shopify/checkoutkit/Severity$Companion; + public static final field Recoverable Lcom/shopify/checkoutkit/Severity; + public static final field RequiresBuyerInput Lcom/shopify/checkoutkit/Severity; + public static final field RequiresBuyerReview Lcom/shopify/checkoutkit/Severity; + public static fun getEntries ()Lkotlin/enums/EnumEntries; + public final fun getValue ()Ljava/lang/String; + public static fun valueOf (Ljava/lang/String;)Lcom/shopify/checkoutkit/Severity; + public static fun values ()[Lcom/shopify/checkoutkit/Severity; +} + +public final class com/shopify/checkoutkit/Severity$Companion { + public final fun serializer ()Lkotlinx/serialization/KSerializer; +} + +public final class com/shopify/checkoutkit/ShippingDestination { + public static final field Companion Lcom/shopify/checkoutkit/ShippingDestination$Companion; + public fun (Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)V + public synthetic fun (Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;ILkotlin/jvm/internal/DefaultConstructorMarker;)V + public final fun component1 ()Ljava/lang/String; + public final fun component10 ()Ljava/lang/String; + public final fun component2 ()Ljava/lang/String; + public final fun component3 ()Ljava/lang/String; + public final fun component4 ()Ljava/lang/String; + public final fun component5 ()Ljava/lang/String; + public final fun component6 ()Ljava/lang/String; + public final fun component7 ()Ljava/lang/String; + public final fun component8 ()Ljava/lang/String; + public final fun component9 ()Ljava/lang/String; + public final fun copy (Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)Lcom/shopify/checkoutkit/ShippingDestination; + public static synthetic fun copy$default (Lcom/shopify/checkoutkit/ShippingDestination;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;ILjava/lang/Object;)Lcom/shopify/checkoutkit/ShippingDestination; public fun equals (Ljava/lang/Object;)Z - public final fun getCloseIcon ()Lcom/shopify/checkoutkit/DrawableResource; - public final fun getCloseIconTint ()Lcom/shopify/checkoutkit/Color; - public final fun getHeaderBackground ()Lcom/shopify/checkoutkit/Color; - public final fun getHeaderFont ()Lcom/shopify/checkoutkit/Color; - public final fun getProgressIndicator ()Lcom/shopify/checkoutkit/Color; - public final fun getWebViewBackground ()Lcom/shopify/checkoutkit/Color; + public final fun getAddressCountry ()Ljava/lang/String; + public final fun getAddressLocality ()Ljava/lang/String; + public final fun getAddressRegion ()Ljava/lang/String; + public final fun getExtendedAddress ()Ljava/lang/String; + public final fun getFirstName ()Ljava/lang/String; + public final fun getId ()Ljava/lang/String; + public final fun getLastName ()Ljava/lang/String; + public final fun getPhoneNumber ()Ljava/lang/String; + public final fun getPostalCode ()Ljava/lang/String; + public final fun getStreetAddress ()Ljava/lang/String; public fun hashCode ()I public fun toString ()Ljava/lang/String; } -public final class com/shopify/checkoutkit/Colors$$serializer : kotlinx/serialization/internal/GeneratedSerializer { - public static final field INSTANCE Lcom/shopify/checkoutkit/Colors$$serializer; +public final class com/shopify/checkoutkit/ShippingDestination$$serializer : kotlinx/serialization/internal/GeneratedSerializer { + public static final field INSTANCE Lcom/shopify/checkoutkit/ShippingDestination$$serializer; public fun childSerializers ()[Lkotlinx/serialization/KSerializer; - public fun deserialize (Lkotlinx/serialization/encoding/Decoder;)Lcom/shopify/checkoutkit/Colors; + public fun deserialize (Lkotlinx/serialization/encoding/Decoder;)Lcom/shopify/checkoutkit/ShippingDestination; public synthetic fun deserialize (Lkotlinx/serialization/encoding/Decoder;)Ljava/lang/Object; public fun getDescriptor ()Lkotlinx/serialization/descriptors/SerialDescriptor; - public fun serialize (Lkotlinx/serialization/encoding/Encoder;Lcom/shopify/checkoutkit/Colors;)V + public fun serialize (Lkotlinx/serialization/encoding/Encoder;Lcom/shopify/checkoutkit/ShippingDestination;)V public synthetic fun serialize (Lkotlinx/serialization/encoding/Encoder;Ljava/lang/Object;)V public fun typeParametersSerializers ()[Lkotlinx/serialization/KSerializer; } -public final class com/shopify/checkoutkit/Colors$Companion { +public final class com/shopify/checkoutkit/ShippingDestination$Companion { public final fun serializer ()Lkotlinx/serialization/KSerializer; } -public final class com/shopify/checkoutkit/ColorsBuilder { - public final fun getCloseIcon ()Lcom/shopify/checkoutkit/DrawableResource; - public final fun getCloseIconTint ()Lcom/shopify/checkoutkit/Color; - public final fun getHeaderBackground ()Lcom/shopify/checkoutkit/Color; - public final fun getHeaderFont ()Lcom/shopify/checkoutkit/Color; - public final fun getProgressIndicator ()Lcom/shopify/checkoutkit/Color; - public final fun getWebViewBackground ()Lcom/shopify/checkoutkit/Color; - public final fun setCloseIcon (Lcom/shopify/checkoutkit/DrawableResource;)V - public final fun setCloseIconTint (Lcom/shopify/checkoutkit/Color;)V - public final fun setHeaderBackground (Lcom/shopify/checkoutkit/Color;)V - public final fun setHeaderFont (Lcom/shopify/checkoutkit/Color;)V - public final fun setProgressIndicator (Lcom/shopify/checkoutkit/Color;)V - public final fun setWebViewBackground (Lcom/shopify/checkoutkit/Color;)V - public final fun withCloseIcon (Lcom/shopify/checkoutkit/DrawableResource;)Lcom/shopify/checkoutkit/ColorsBuilder; - public final fun withCloseIconTint (Lcom/shopify/checkoutkit/Color;)Lcom/shopify/checkoutkit/ColorsBuilder; - public final fun withHeaderBackground (Lcom/shopify/checkoutkit/Color;)Lcom/shopify/checkoutkit/ColorsBuilder; - public final fun withHeaderFont (Lcom/shopify/checkoutkit/Color;)Lcom/shopify/checkoutkit/ColorsBuilder; - public final fun withProgressIndicator (Lcom/shopify/checkoutkit/Color;)Lcom/shopify/checkoutkit/ColorsBuilder; - public final fun withWebViewBackground (Lcom/shopify/checkoutkit/Color;)Lcom/shopify/checkoutkit/ColorsBuilder; +public final class com/shopify/checkoutkit/ShopifyCheckoutKit { + public static final field INSTANCE Lcom/shopify/checkoutkit/ShopifyCheckoutKit; + public static final field version Ljava/lang/String; + public static final fun configure (Lcom/shopify/checkoutkit/ConfigurationUpdater;)V + public static final fun getConfiguration ()Lcom/shopify/checkoutkit/Configuration; + public static final fun invalidate ()V + public static final fun preload (Ljava/lang/String;Landroidx/activity/ComponentActivity;)V + public static final fun present (Ljava/lang/String;Landroidx/activity/ComponentActivity;Lcom/shopify/checkoutkit/DefaultCheckoutEventProcessor;)Lcom/shopify/checkoutkit/CheckoutKitDialog; + public static final fun present (Ljava/lang/String;Landroidx/activity/ComponentActivity;Lcom/shopify/checkoutkit/DefaultCheckoutEventProcessor;Lcom/shopify/checkoutkit/CheckoutCommunicationClient;)Lcom/shopify/checkoutkit/CheckoutKitDialog; + public static synthetic fun present$default (Ljava/lang/String;Landroidx/activity/ComponentActivity;Lcom/shopify/checkoutkit/DefaultCheckoutEventProcessor;Lcom/shopify/checkoutkit/CheckoutCommunicationClient;ILjava/lang/Object;)Lcom/shopify/checkoutkit/CheckoutKitDialog; } -public final class com/shopify/checkoutkit/Configuration { - public fun ()V - public final fun component1 ()Lcom/shopify/checkoutkit/ColorScheme; - public final fun component2 ()Lcom/shopify/checkoutkit/Preloading; - public final fun component3 ()Lcom/shopify/checkoutkit/ErrorRecovery; - public final fun component4 ()Lcom/shopify/checkoutkit/Platform; - public final fun component5 ()Lcom/shopify/checkoutkit/LogLevel; - public final fun copy (Lcom/shopify/checkoutkit/ColorScheme;Lcom/shopify/checkoutkit/Preloading;Lcom/shopify/checkoutkit/ErrorRecovery;Lcom/shopify/checkoutkit/Platform;Lcom/shopify/checkoutkit/LogLevel;)Lcom/shopify/checkoutkit/Configuration; - public static synthetic fun copy$default (Lcom/shopify/checkoutkit/Configuration;Lcom/shopify/checkoutkit/ColorScheme;Lcom/shopify/checkoutkit/Preloading;Lcom/shopify/checkoutkit/ErrorRecovery;Lcom/shopify/checkoutkit/Platform;Lcom/shopify/checkoutkit/LogLevel;ILjava/lang/Object;)Lcom/shopify/checkoutkit/Configuration; +public final class com/shopify/checkoutkit/TokenBinding { + public static final field Companion Lcom/shopify/checkoutkit/TokenBinding$Companion; + public fun (Ljava/lang/String;Lcom/shopify/checkoutkit/IdentityClass;)V + public synthetic fun (Ljava/lang/String;Lcom/shopify/checkoutkit/IdentityClass;ILkotlin/jvm/internal/DefaultConstructorMarker;)V + public final fun component1 ()Ljava/lang/String; + public final fun component2 ()Lcom/shopify/checkoutkit/IdentityClass; + public final fun copy (Ljava/lang/String;Lcom/shopify/checkoutkit/IdentityClass;)Lcom/shopify/checkoutkit/TokenBinding; + public static synthetic fun copy$default (Lcom/shopify/checkoutkit/TokenBinding;Ljava/lang/String;Lcom/shopify/checkoutkit/IdentityClass;ILjava/lang/Object;)Lcom/shopify/checkoutkit/TokenBinding; public fun equals (Ljava/lang/Object;)Z - public final fun getColorScheme ()Lcom/shopify/checkoutkit/ColorScheme; - public final fun getErrorRecovery ()Lcom/shopify/checkoutkit/ErrorRecovery; - public final fun getLogLevel ()Lcom/shopify/checkoutkit/LogLevel; - public final fun getPlatform ()Lcom/shopify/checkoutkit/Platform; - public final fun getPreloading ()Lcom/shopify/checkoutkit/Preloading; + public final fun getCheckoutID ()Ljava/lang/String; + public final fun getIdentity ()Lcom/shopify/checkoutkit/IdentityClass; public fun hashCode ()I - public final fun setColorScheme (Lcom/shopify/checkoutkit/ColorScheme;)V - public final fun setErrorRecovery (Lcom/shopify/checkoutkit/ErrorRecovery;)V - public final fun setLogLevel (Lcom/shopify/checkoutkit/LogLevel;)V - public final fun setPlatform (Lcom/shopify/checkoutkit/Platform;)V - public final fun setPreloading (Lcom/shopify/checkoutkit/Preloading;)V public fun toString ()Ljava/lang/String; } -public final class com/shopify/checkoutkit/ConfigurationException : com/shopify/checkoutkit/CheckoutException { - public static final field Companion Lcom/shopify/checkoutkit/ConfigurationException$Companion; - public static final field STOREFRONT_PASSWORD_REQUIRED Ljava/lang/String; - public static final field UNKNOWN Ljava/lang/String; - public fun (Ljava/lang/String;Ljava/lang/String;Z)V - public synthetic fun (Ljava/lang/String;Ljava/lang/String;ZILkotlin/jvm/internal/DefaultConstructorMarker;)V - public fun (Ljava/lang/String;Z)V - public fun (Z)V +public final class com/shopify/checkoutkit/TokenBinding$$serializer : kotlinx/serialization/internal/GeneratedSerializer { + public static final field INSTANCE Lcom/shopify/checkoutkit/TokenBinding$$serializer; + public fun childSerializers ()[Lkotlinx/serialization/KSerializer; + public fun deserialize (Lkotlinx/serialization/encoding/Decoder;)Lcom/shopify/checkoutkit/TokenBinding; + public synthetic fun deserialize (Lkotlinx/serialization/encoding/Decoder;)Ljava/lang/Object; + public fun getDescriptor ()Lkotlinx/serialization/descriptors/SerialDescriptor; + public fun serialize (Lkotlinx/serialization/encoding/Encoder;Lcom/shopify/checkoutkit/TokenBinding;)V + public synthetic fun serialize (Lkotlinx/serialization/encoding/Encoder;Ljava/lang/Object;)V + public fun typeParametersSerializers ()[Lkotlinx/serialization/KSerializer; } -public final class com/shopify/checkoutkit/ConfigurationException$Companion { +public final class com/shopify/checkoutkit/TokenBinding$Companion { + public final fun serializer ()Lkotlinx/serialization/KSerializer; } -public abstract interface class com/shopify/checkoutkit/ConfigurationUpdater { - public abstract fun configure (Lcom/shopify/checkoutkit/Configuration;)V +public final class com/shopify/checkoutkit/TokenCredential { + public static final field Companion Lcom/shopify/checkoutkit/TokenCredential$Companion; + public fun (Ljava/lang/String;Ljava/lang/String;)V + public final fun component1 ()Ljava/lang/String; + public final fun component2 ()Ljava/lang/String; + public final fun copy (Ljava/lang/String;Ljava/lang/String;)Lcom/shopify/checkoutkit/TokenCredential; + public static synthetic fun copy$default (Lcom/shopify/checkoutkit/TokenCredential;Ljava/lang/String;Ljava/lang/String;ILjava/lang/Object;)Lcom/shopify/checkoutkit/TokenCredential; + public fun equals (Ljava/lang/Object;)Z + public final fun getToken ()Ljava/lang/String; + public final fun getType ()Ljava/lang/String; + public fun hashCode ()I + public fun toString ()Ljava/lang/String; } -public abstract class com/shopify/checkoutkit/DefaultCheckoutEventProcessor : com/shopify/checkoutkit/CheckoutEventProcessor { - public fun (Landroid/content/Context;)V - public fun (Landroid/content/Context;Lcom/shopify/checkoutkit/LogWrapper;)V - public synthetic fun (Landroid/content/Context;Lcom/shopify/checkoutkit/LogWrapper;ILkotlin/jvm/internal/DefaultConstructorMarker;)V - public fun onCheckoutLinkClicked (Landroid/net/Uri;)V - public fun onGeolocationPermissionsHidePrompt ()V - public fun onGeolocationPermissionsShowPrompt (Ljava/lang/String;Landroid/webkit/GeolocationPermissions$Callback;)V - public fun onPermissionRequest (Landroid/webkit/PermissionRequest;)V - public fun onShowFileChooser (Landroid/webkit/WebView;Landroid/webkit/ValueCallback;Landroid/webkit/WebChromeClient$FileChooserParams;)Z - public fun onWebPixelEvent (Lcom/shopify/checkoutkit/pixelevents/PixelEvent;)V +public final class com/shopify/checkoutkit/TokenCredential$$serializer : kotlinx/serialization/internal/GeneratedSerializer { + public static final field INSTANCE Lcom/shopify/checkoutkit/TokenCredential$$serializer; + public fun childSerializers ()[Lkotlinx/serialization/KSerializer; + public fun deserialize (Lkotlinx/serialization/encoding/Decoder;)Lcom/shopify/checkoutkit/TokenCredential; + public synthetic fun deserialize (Lkotlinx/serialization/encoding/Decoder;)Ljava/lang/Object; + public fun getDescriptor ()Lkotlinx/serialization/descriptors/SerialDescriptor; + public fun serialize (Lkotlinx/serialization/encoding/Encoder;Lcom/shopify/checkoutkit/TokenCredential;)V + public synthetic fun serialize (Lkotlinx/serialization/encoding/Encoder;Ljava/lang/Object;)V + public fun typeParametersSerializers ()[Lkotlinx/serialization/KSerializer; } -public final class com/shopify/checkoutkit/DrawableResource { - public static final field Companion Lcom/shopify/checkoutkit/DrawableResource$Companion; - public fun (I)V - public final fun component1 ()I - public final fun copy (I)Lcom/shopify/checkoutkit/DrawableResource; - public static synthetic fun copy$default (Lcom/shopify/checkoutkit/DrawableResource;IILjava/lang/Object;)Lcom/shopify/checkoutkit/DrawableResource; +public final class com/shopify/checkoutkit/TokenCredential$Companion { + public final fun serializer ()Lkotlinx/serialization/KSerializer; +} + +public final class com/shopify/checkoutkit/Total { + public static final field Companion Lcom/shopify/checkoutkit/Total$Companion; + public fun (JLjava/lang/String;Lcom/shopify/checkoutkit/TotalType;)V + public synthetic fun (JLjava/lang/String;Lcom/shopify/checkoutkit/TotalType;ILkotlin/jvm/internal/DefaultConstructorMarker;)V + public final fun component1 ()J + public final fun component2 ()Ljava/lang/String; + public final fun component3 ()Lcom/shopify/checkoutkit/TotalType; + public final fun copy (JLjava/lang/String;Lcom/shopify/checkoutkit/TotalType;)Lcom/shopify/checkoutkit/Total; + public static synthetic fun copy$default (Lcom/shopify/checkoutkit/Total;JLjava/lang/String;Lcom/shopify/checkoutkit/TotalType;ILjava/lang/Object;)Lcom/shopify/checkoutkit/Total; public fun equals (Ljava/lang/Object;)Z - public final fun getId ()I + public final fun getAmount ()J + public final fun getDisplayText ()Ljava/lang/String; + public final fun getType ()Lcom/shopify/checkoutkit/TotalType; public fun hashCode ()I public fun toString ()Ljava/lang/String; } -public final class com/shopify/checkoutkit/DrawableResource$$serializer : kotlinx/serialization/internal/GeneratedSerializer { - public static final field INSTANCE Lcom/shopify/checkoutkit/DrawableResource$$serializer; +public final class com/shopify/checkoutkit/Total$$serializer : kotlinx/serialization/internal/GeneratedSerializer { + public static final field INSTANCE Lcom/shopify/checkoutkit/Total$$serializer; public fun childSerializers ()[Lkotlinx/serialization/KSerializer; - public fun deserialize (Lkotlinx/serialization/encoding/Decoder;)Lcom/shopify/checkoutkit/DrawableResource; + public fun deserialize (Lkotlinx/serialization/encoding/Decoder;)Lcom/shopify/checkoutkit/Total; public synthetic fun deserialize (Lkotlinx/serialization/encoding/Decoder;)Ljava/lang/Object; public fun getDescriptor ()Lkotlinx/serialization/descriptors/SerialDescriptor; - public fun serialize (Lkotlinx/serialization/encoding/Encoder;Lcom/shopify/checkoutkit/DrawableResource;)V + public fun serialize (Lkotlinx/serialization/encoding/Encoder;Lcom/shopify/checkoutkit/Total;)V public synthetic fun serialize (Lkotlinx/serialization/encoding/Encoder;Ljava/lang/Object;)V public fun typeParametersSerializers ()[Lkotlinx/serialization/KSerializer; } -public final class com/shopify/checkoutkit/DrawableResource$Companion { +public final class com/shopify/checkoutkit/Total$Companion { public final fun serializer ()Lkotlinx/serialization/KSerializer; } -public abstract interface class com/shopify/checkoutkit/ErrorRecovery { - public abstract fun preRecoveryActions (Lcom/shopify/checkoutkit/CheckoutException;Ljava/lang/String;)V - public abstract fun shouldRecoverFromError (Lcom/shopify/checkoutkit/CheckoutException;)Z +public final class com/shopify/checkoutkit/TotalElement { + public static final field Companion Lcom/shopify/checkoutkit/TotalElement$Companion; + public fun (JLjava/lang/String;Lcom/shopify/checkoutkit/TotalType;)V + public synthetic fun (JLjava/lang/String;Lcom/shopify/checkoutkit/TotalType;ILkotlin/jvm/internal/DefaultConstructorMarker;)V + public final fun component1 ()J + public final fun component2 ()Ljava/lang/String; + public final fun component3 ()Lcom/shopify/checkoutkit/TotalType; + public final fun copy (JLjava/lang/String;Lcom/shopify/checkoutkit/TotalType;)Lcom/shopify/checkoutkit/TotalElement; + public static synthetic fun copy$default (Lcom/shopify/checkoutkit/TotalElement;JLjava/lang/String;Lcom/shopify/checkoutkit/TotalType;ILjava/lang/Object;)Lcom/shopify/checkoutkit/TotalElement; + public fun equals (Ljava/lang/Object;)Z + public final fun getAmount ()J + public final fun getDisplayText ()Ljava/lang/String; + public final fun getType ()Lcom/shopify/checkoutkit/TotalType; + public fun hashCode ()I + public fun toString ()Ljava/lang/String; } -public final class com/shopify/checkoutkit/ErrorRecovery$DefaultImpls { - public static fun preRecoveryActions (Lcom/shopify/checkoutkit/ErrorRecovery;Lcom/shopify/checkoutkit/CheckoutException;Ljava/lang/String;)V - public static fun shouldRecoverFromError (Lcom/shopify/checkoutkit/ErrorRecovery;Lcom/shopify/checkoutkit/CheckoutException;)Z +public final class com/shopify/checkoutkit/TotalElement$$serializer : kotlinx/serialization/internal/GeneratedSerializer { + public static final field INSTANCE Lcom/shopify/checkoutkit/TotalElement$$serializer; + public fun childSerializers ()[Lkotlinx/serialization/KSerializer; + public fun deserialize (Lkotlinx/serialization/encoding/Decoder;)Lcom/shopify/checkoutkit/TotalElement; + public synthetic fun deserialize (Lkotlinx/serialization/encoding/Decoder;)Ljava/lang/Object; + public fun getDescriptor ()Lkotlinx/serialization/descriptors/SerialDescriptor; + public fun serialize (Lkotlinx/serialization/encoding/Encoder;Lcom/shopify/checkoutkit/TotalElement;)V + public synthetic fun serialize (Lkotlinx/serialization/encoding/Encoder;Ljava/lang/Object;)V + public fun typeParametersSerializers ()[Lkotlinx/serialization/KSerializer; } -public final class com/shopify/checkoutkit/HttpException : com/shopify/checkoutkit/CheckoutUnavailableException { - public fun (IZ)V - public fun (Ljava/lang/String;IZ)V - public synthetic fun (Ljava/lang/String;IZILkotlin/jvm/internal/DefaultConstructorMarker;)V - public final fun getStatusCode ()I +public final class com/shopify/checkoutkit/TotalElement$Companion { + public final fun serializer ()Lkotlinx/serialization/KSerializer; } -public final class com/shopify/checkoutkit/LogLevel : java/lang/Enum { - public static final field DEBUG Lcom/shopify/checkoutkit/LogLevel; - public static final field ERROR Lcom/shopify/checkoutkit/LogLevel; - public static final field WARN Lcom/shopify/checkoutkit/LogLevel; +public final class com/shopify/checkoutkit/TotalType : java/lang/Enum { + public static final field Companion Lcom/shopify/checkoutkit/TotalType$Companion; + public static final field Discount Lcom/shopify/checkoutkit/TotalType; + public static final field Fee Lcom/shopify/checkoutkit/TotalType; + public static final field Fulfillment Lcom/shopify/checkoutkit/TotalType; + public static final field ItemsDiscount Lcom/shopify/checkoutkit/TotalType; + public static final field Subtotal Lcom/shopify/checkoutkit/TotalType; + public static final field Tax Lcom/shopify/checkoutkit/TotalType; + public static final field Total Lcom/shopify/checkoutkit/TotalType; public static fun getEntries ()Lkotlin/enums/EnumEntries; - public static fun valueOf (Ljava/lang/String;)Lcom/shopify/checkoutkit/LogLevel; - public static fun values ()[Lcom/shopify/checkoutkit/LogLevel; + public final fun getValue ()Ljava/lang/String; + public static fun valueOf (Ljava/lang/String;)Lcom/shopify/checkoutkit/TotalType; + public static fun values ()[Lcom/shopify/checkoutkit/TotalType; } -public final class com/shopify/checkoutkit/LogWrapper { - public fun ()V - public final fun d (Ljava/lang/String;Ljava/lang/String;)V - public final fun e (Ljava/lang/String;Ljava/lang/String;)V - public final fun e (Ljava/lang/String;Ljava/lang/String;Ljava/lang/Throwable;)V - public final fun w (Ljava/lang/String;Ljava/lang/String;)V +public final class com/shopify/checkoutkit/TotalType$Companion { + public final fun serializer ()Lkotlinx/serialization/KSerializer; } -public final class com/shopify/checkoutkit/Platform : java/lang/Enum { - public static final field REACT_NATIVE Lcom/shopify/checkoutkit/Platform; - public final fun getDisplayName ()Ljava/lang/String; +public final class com/shopify/checkoutkit/Transport : java/lang/Enum { + public static final field A2A Lcom/shopify/checkoutkit/Transport; + public static final field Companion Lcom/shopify/checkoutkit/Transport$Companion; + public static final field Embedded Lcom/shopify/checkoutkit/Transport; + public static final field MCP Lcom/shopify/checkoutkit/Transport; + public static final field REST Lcom/shopify/checkoutkit/Transport; public static fun getEntries ()Lkotlin/enums/EnumEntries; - public static fun valueOf (Ljava/lang/String;)Lcom/shopify/checkoutkit/Platform; - public static fun values ()[Lcom/shopify/checkoutkit/Platform; + public final fun getValue ()Ljava/lang/String; + public static fun valueOf (Ljava/lang/String;)Lcom/shopify/checkoutkit/Transport; + public static fun values ()[Lcom/shopify/checkoutkit/Transport; } -public final class com/shopify/checkoutkit/Preloading { - public fun ()V - public fun (Z)V - public synthetic fun (ZILkotlin/jvm/internal/DefaultConstructorMarker;)V - public final fun component1 ()Z - public final fun copy (Z)Lcom/shopify/checkoutkit/Preloading; - public static synthetic fun copy$default (Lcom/shopify/checkoutkit/Preloading;ZILjava/lang/Object;)Lcom/shopify/checkoutkit/Preloading; +public final class com/shopify/checkoutkit/Transport$Companion { + public final fun serializer ()Lkotlinx/serialization/KSerializer; +} + +public final class com/shopify/checkoutkit/TypeElement : java/lang/Enum { + public static final field Companion Lcom/shopify/checkoutkit/TypeElement$Companion; + public static final field Pickup Lcom/shopify/checkoutkit/TypeElement; + public static final field Shipping Lcom/shopify/checkoutkit/TypeElement; + public static fun getEntries ()Lkotlin/enums/EnumEntries; + public final fun getValue ()Ljava/lang/String; + public static fun valueOf (Ljava/lang/String;)Lcom/shopify/checkoutkit/TypeElement; + public static fun values ()[Lcom/shopify/checkoutkit/TypeElement; +} + +public final class com/shopify/checkoutkit/TypeElement$Companion { + public final fun serializer ()Lkotlinx/serialization/KSerializer; +} + +public final class com/shopify/checkoutkit/TypeEnum : java/lang/Enum { + public static final field Card Lcom/shopify/checkoutkit/TypeEnum; + public static final field Companion Lcom/shopify/checkoutkit/TypeEnum$Companion; + public static fun getEntries ()Lkotlin/enums/EnumEntries; + public final fun getValue ()Ljava/lang/String; + public static fun valueOf (Ljava/lang/String;)Lcom/shopify/checkoutkit/TypeEnum; + public static fun values ()[Lcom/shopify/checkoutkit/TypeEnum; +} + +public final class com/shopify/checkoutkit/TypeEnum$Companion { + public final fun serializer ()Lkotlinx/serialization/KSerializer; +} + +public final class com/shopify/checkoutkit/UCPCheckoutResponseSchema { + public static final field Companion Lcom/shopify/checkoutkit/UCPCheckoutResponseSchema$Companion; + public fun (Ljava/util/Map;Ljava/util/Map;Ljava/util/Map;Ljava/lang/String;)V + public synthetic fun (Ljava/util/Map;Ljava/util/Map;Ljava/util/Map;Ljava/lang/String;ILkotlin/jvm/internal/DefaultConstructorMarker;)V + public final fun component1 ()Ljava/util/Map; + public final fun component2 ()Ljava/util/Map; + public final fun component3 ()Ljava/util/Map; + public final fun component4 ()Ljava/lang/String; + public final fun copy (Ljava/util/Map;Ljava/util/Map;Ljava/util/Map;Ljava/lang/String;)Lcom/shopify/checkoutkit/UCPCheckoutResponseSchema; + public static synthetic fun copy$default (Lcom/shopify/checkoutkit/UCPCheckoutResponseSchema;Ljava/util/Map;Ljava/util/Map;Ljava/util/Map;Ljava/lang/String;ILjava/lang/Object;)Lcom/shopify/checkoutkit/UCPCheckoutResponseSchema; public fun equals (Ljava/lang/Object;)Z - public final fun getEnabled ()Z + public final fun getCapabilities ()Ljava/util/Map; + public final fun getPaymentHandlers ()Ljava/util/Map; + public final fun getServices ()Ljava/util/Map; + public final fun getVersion ()Ljava/lang/String; public fun hashCode ()I public fun toString ()Ljava/lang/String; } -public final class com/shopify/checkoutkit/ShopifyCheckoutKit { - public static final field INSTANCE Lcom/shopify/checkoutkit/ShopifyCheckoutKit; - public static final field version Ljava/lang/String; - public static final fun configure (Lcom/shopify/checkoutkit/ConfigurationUpdater;)V - public static final fun getConfiguration ()Lcom/shopify/checkoutkit/Configuration; - public static final fun invalidate ()V - public static final fun preload (Ljava/lang/String;Landroidx/activity/ComponentActivity;)V - public static final fun present (Ljava/lang/String;Landroidx/activity/ComponentActivity;Lcom/shopify/checkoutkit/DefaultCheckoutEventProcessor;)Lcom/shopify/checkoutkit/CheckoutKitDialog; +public final class com/shopify/checkoutkit/UCPCheckoutResponseSchema$$serializer : kotlinx/serialization/internal/GeneratedSerializer { + public static final field INSTANCE Lcom/shopify/checkoutkit/UCPCheckoutResponseSchema$$serializer; + public fun childSerializers ()[Lkotlinx/serialization/KSerializer; + public fun deserialize (Lkotlinx/serialization/encoding/Decoder;)Lcom/shopify/checkoutkit/UCPCheckoutResponseSchema; + public synthetic fun deserialize (Lkotlinx/serialization/encoding/Decoder;)Ljava/lang/Object; + public fun getDescriptor ()Lkotlinx/serialization/descriptors/SerialDescriptor; + public fun serialize (Lkotlinx/serialization/encoding/Encoder;Lcom/shopify/checkoutkit/UCPCheckoutResponseSchema;)V + public synthetic fun serialize (Lkotlinx/serialization/encoding/Encoder;Ljava/lang/Object;)V + public fun typeParametersSerializers ()[Lkotlinx/serialization/KSerializer; +} + +public final class com/shopify/checkoutkit/UCPCheckoutResponseSchema$Companion { + public final fun serializer ()Lkotlinx/serialization/KSerializer; +} + +public final class com/shopify/checkoutkit/UCPOrderResponseSchema { + public static final field Companion Lcom/shopify/checkoutkit/UCPOrderResponseSchema$Companion; + public fun (Ljava/util/Map;Ljava/util/Map;Ljava/util/Map;Ljava/lang/String;)V + public synthetic fun (Ljava/util/Map;Ljava/util/Map;Ljava/util/Map;Ljava/lang/String;ILkotlin/jvm/internal/DefaultConstructorMarker;)V + public final fun component1 ()Ljava/util/Map; + public final fun component2 ()Ljava/util/Map; + public final fun component3 ()Ljava/util/Map; + public final fun component4 ()Ljava/lang/String; + public final fun copy (Ljava/util/Map;Ljava/util/Map;Ljava/util/Map;Ljava/lang/String;)Lcom/shopify/checkoutkit/UCPOrderResponseSchema; + public static synthetic fun copy$default (Lcom/shopify/checkoutkit/UCPOrderResponseSchema;Ljava/util/Map;Ljava/util/Map;Ljava/util/Map;Ljava/lang/String;ILjava/lang/Object;)Lcom/shopify/checkoutkit/UCPOrderResponseSchema; + public fun equals (Ljava/lang/Object;)Z + public final fun getCapabilities ()Ljava/util/Map; + public final fun getPaymentHandlers ()Ljava/util/Map; + public final fun getServices ()Ljava/util/Map; + public final fun getVersion ()Ljava/lang/String; + public fun hashCode ()I + public fun toString ()Ljava/lang/String; +} + +public final class com/shopify/checkoutkit/UCPOrderResponseSchema$$serializer : kotlinx/serialization/internal/GeneratedSerializer { + public static final field INSTANCE Lcom/shopify/checkoutkit/UCPOrderResponseSchema$$serializer; + public fun childSerializers ()[Lkotlinx/serialization/KSerializer; + public fun deserialize (Lkotlinx/serialization/encoding/Decoder;)Lcom/shopify/checkoutkit/UCPOrderResponseSchema; + public synthetic fun deserialize (Lkotlinx/serialization/encoding/Decoder;)Ljava/lang/Object; + public fun getDescriptor ()Lkotlinx/serialization/descriptors/SerialDescriptor; + public fun serialize (Lkotlinx/serialization/encoding/Encoder;Lcom/shopify/checkoutkit/UCPOrderResponseSchema;)V + public synthetic fun serialize (Lkotlinx/serialization/encoding/Encoder;Ljava/lang/Object;)V + public fun typeParametersSerializers ()[Lkotlinx/serialization/KSerializer; +} + +public final class com/shopify/checkoutkit/UCPOrderResponseSchema$Companion { + public final fun serializer ()Lkotlinx/serialization/KSerializer; } public final class com/shopify/checkoutkit/lifecycleevents/Address { diff --git a/android/lib/build.gradle b/android/lib/build.gradle index 13b42c7e..db2b4b1d 100644 --- a/android/lib/build.gradle +++ b/android/lib/build.gradle @@ -16,7 +16,7 @@ def resolveEnvVarValue(name, defaultValue) { return rawValue ? rawValue : defaultValue } -def versionName = resolveEnvVarValue("CHECKOUT_KIT_VERSION", "3.6.0") +def versionName = resolveEnvVarValue("CHECKOUT_KIT_VERSION", "1.0.0") ext { app_compat_version = '1.7.1' @@ -141,6 +141,11 @@ detekt { autoCorrect = true } +// Models.kt is generated from UCP JSON Schemas — exclude it from static analysis. +tasks.withType(io.gitlab.arturbosch.detekt.Detekt).configureEach { + exclude('**/Models.kt') +} + project.afterEvaluate { publishing { diff --git a/android/lib/src/main/java/com/shopify/checkoutkit/BaseWebView.kt b/android/lib/src/main/java/com/shopify/checkoutkit/BaseWebView.kt index e84fc8c4..8c2df69c 100644 --- a/android/lib/src/main/java/com/shopify/checkoutkit/BaseWebView.kt +++ b/android/lib/src/main/java/com/shopify/checkoutkit/BaseWebView.kt @@ -57,8 +57,6 @@ internal abstract class BaseWebView(context: Context, attributeSet: AttributeSet abstract fun getEventProcessor(): CheckoutWebViewEventProcessor abstract val recoverErrors: Boolean - abstract val variant: String - abstract val cspSchema: String private fun configureWebView() { visibility = VISIBLE @@ -125,11 +123,11 @@ internal abstract class BaseWebView(context: Context, attributeSet: AttributeSet private fun isOnConfirmationPage(): Boolean = url?.let(Uri::parse).isConfirmationPage() internal fun userAgentSuffix(): String { - val theme = ShopifyCheckoutKit.configuration.colorScheme.id - val version = ShopifyCheckoutKit.version.split("-").first() val platform = ShopifyCheckoutKit.configuration.platform - val platformSuffix = if (platform != null) " ${platform.displayName}" else "" - val suffix = "ShopifyCheckoutSDK/$version ($cspSchema;$theme;$variant)$platformSuffix" + val suffix = buildString { + append("ShopifyCheckoutKit/${BuildConfig.SDK_VERSION} android") + if (platform != null) append(" ${platform.displayName}") + } log.d(LOG_TAG, "Setting User-Agent suffix $suffix") return suffix } diff --git a/android/lib/src/main/java/com/shopify/checkoutkit/CheckoutBridge.kt b/android/lib/src/main/java/com/shopify/checkoutkit/CheckoutBridge.kt index 9bec0040..1930545a 100644 --- a/android/lib/src/main/java/com/shopify/checkoutkit/CheckoutBridge.kt +++ b/android/lib/src/main/java/com/shopify/checkoutkit/CheckoutBridge.kt @@ -23,7 +23,6 @@ package com.shopify.checkoutkit import android.webkit.JavascriptInterface -import android.webkit.WebView import com.shopify.checkoutkit.CheckoutBridge.CheckoutWebOperation.COMPLETED import com.shopify.checkoutkit.CheckoutBridge.CheckoutWebOperation.ERROR import com.shopify.checkoutkit.CheckoutBridge.CheckoutWebOperation.MODAL @@ -33,7 +32,6 @@ import com.shopify.checkoutkit.errorevents.CheckoutErrorDecoder import com.shopify.checkoutkit.lifecycleevents.CheckoutCompletedEventDecoder import com.shopify.checkoutkit.pixelevents.PixelEventDecoder import kotlinx.serialization.Serializable -import kotlinx.serialization.encodeToString import kotlinx.serialization.json.Json internal class CheckoutBridge( @@ -66,11 +64,6 @@ internal class CheckoutBridge( } } - sealed class SDKOperation(val key: String) { - data object Presented : SDKOperation("presented") - class Instrumentation(val payload: InstrumentationPayload) : SDKOperation("instrumentation") - } - // Allows Web to postMessages back to the SDK @Suppress("SwallowedException") @JavascriptInterface @@ -137,73 +130,11 @@ internal class CheckoutBridge( } } - // Send messages from SDK to Web - @Suppress("SwallowedException") - fun sendMessage(view: WebView, operation: SDKOperation) { - val script = when (operation) { - is SDKOperation.Presented -> { - log.d(LOG_TAG, "Sending presented message to checkout, informing it that the sheet is now visible.") - dispatchMessageTemplate("'${operation.key}'") - } - - is SDKOperation.Instrumentation -> { - log.d(LOG_TAG, "Sending instrumentation message to checkout.") - val body = Json.encodeToString(SdkToWebEvent(operation.payload)) - dispatchMessageTemplate("'${operation.key}', $body") - } - } - try { - view.evaluateJavascript(script, null) - } catch (e: Exception) { - log.d(LOG_TAG, "Failed to send message to checkout, invoking onCheckoutViewFailedWithError") - onMainThread { - eventProcessor.onCheckoutViewFailedWithError( - CheckoutKitException( - errorDescription = "Failed to send '${operation.key}' message to checkout, some features may not work.", - errorCode = CheckoutKitException.ERROR_SENDING_MESSAGE_TO_CHECKOUT, - isRecoverable = true, - ) - ) - } - } - } - companion object { private const val LOG_TAG = "CheckoutBridge" - const val SCHEMA_VERSION_NUMBER: String = "8.1" - - private fun dispatchMessageTemplate(body: String) = """| - |if (window.MobileCheckoutSdk && window.MobileCheckoutSdk.dispatchMessage) { - | window.MobileCheckoutSdk.dispatchMessage($body); - |} else { - | window.addEventListener('mobileCheckoutBridgeReady', function () { - | window.MobileCheckoutSdk.dispatchMessage($body); - | }, {passive: true, once: true}); - |} - | - """.trimMargin() } } -@Serializable -internal data class SdkToWebEvent( - val detail: T -) - -@Serializable -internal data class InstrumentationPayload( - val name: String, - val value: Long, - val type: InstrumentationType, - val tags: Map -) - -@Suppress("EnumNaming", "EnumEntryNameCase") -@Serializable -internal enum class InstrumentationType { - histogram -} - @Serializable internal data class WebToSdkEvent( val name: String, diff --git a/android/lib/src/main/java/com/shopify/checkoutkit/CheckoutCommunicationClient.kt b/android/lib/src/main/java/com/shopify/checkoutkit/CheckoutCommunicationClient.kt new file mode 100644 index 00000000..627b6304 --- /dev/null +++ b/android/lib/src/main/java/com/shopify/checkoutkit/CheckoutCommunicationClient.kt @@ -0,0 +1,53 @@ +/* + * MIT License + * + * Copyright 2023-present, Shopify Inc. + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in all + * copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + */ +package com.shopify.checkoutkit + +import android.net.Uri + +/** + * Implement this interface to handle Embedded Checkout Protocol (ECP) messages beyond + * the built-in methods handled natively by the SDK. + * + * Register an implementation via [ShopifyCheckoutKit.present]. + */ +public interface CheckoutCommunicationClient { + /** + * Process a JSON-RPC 2.0 ECP message from the checkout web page. + * + * Called for all EC notifications (ec.start, ec.error, ec.complete, ec.*.change) + * and any unknown methods. For requests, return a JSON-RPC 2.0 response string; + * for notifications, return null (no response is sent). + * + * @param message JSON-RPC 2.0 encoded message string + * @return JSON-RPC 2.0 encoded response string, or null to send no response + */ + public fun process(message: String): String? + + /** + * Called when checkout requests that a URL be opened externally (ec.window.open_request). + * + * @param url the URL checkout wants opened in an external browser or app + * @return true if the URL was handled and displayed externally, false otherwise + */ + public fun openExternalUrl(url: Uri): Boolean +} diff --git a/android/lib/src/main/java/com/shopify/checkoutkit/CheckoutDialog.kt b/android/lib/src/main/java/com/shopify/checkoutkit/CheckoutDialog.kt index 08cfda5f..b8155ac2 100644 --- a/android/lib/src/main/java/com/shopify/checkoutkit/CheckoutDialog.kt +++ b/android/lib/src/main/java/com/shopify/checkoutkit/CheckoutDialog.kt @@ -55,6 +55,7 @@ internal class CheckoutDialog( private val checkoutUrl: String, private val checkoutEventProcessor: CheckoutEventProcessor, context: Context, + private val communicationClient: CheckoutCommunicationClient? = null, ) : ComponentDialog(context) { internal var recoveryAttemptCount = 0 @@ -91,6 +92,8 @@ internal class CheckoutDialog( checkoutWebView.onResume() log.d(LOG_TAG, "Setting event processor on WebView.") checkoutWebView.setEventProcessor(eventProcessor()) + log.d(LOG_TAG, "Setting communication client on WebView.") + checkoutWebView.setClient(communicationClient) val colorScheme = ShopifyCheckoutKit.configuration.colorScheme log.d(LOG_TAG, "Configured colorScheme $colorScheme") @@ -124,11 +127,6 @@ internal class CheckoutDialog( removeWebViewFromContainer() } - setOnShowListener { - log.d(LOG_TAG, "On show listener invoked, calling WebView notifyPresented.") - checkoutWebView.notifyPresented() - } - log.d(LOG_TAG, "Showing dialog.") show() } diff --git a/android/lib/src/main/java/com/shopify/checkoutkit/CheckoutProtocol.kt b/android/lib/src/main/java/com/shopify/checkoutkit/CheckoutProtocol.kt new file mode 100644 index 00000000..e5153a4e --- /dev/null +++ b/android/lib/src/main/java/com/shopify/checkoutkit/CheckoutProtocol.kt @@ -0,0 +1,166 @@ +/* + * MIT License + * + * Copyright 2023-present, Shopify Inc. + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in all + * copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + */ +package com.shopify.checkoutkit + +import android.net.Uri +import com.shopify.checkoutkit.ShopifyCheckoutKit.log +import kotlinx.serialization.json.Json +import kotlinx.serialization.json.JsonElement +import kotlinx.serialization.json.decodeFromJsonElement +import kotlinx.serialization.json.jsonObject + +/** + * Entry point for the typed Embedded Checkout Protocol (ECP) client. + * + * Provides static [NotificationDescriptor] instances for every EC notification method, + * plus a fluent [Client] builder that implements [CheckoutCommunicationClient]. + * + * Example usage: + * ```kotlin + * val client = CheckoutProtocol.Client() + * .on(CheckoutProtocol.start) { checkout -> showProgressUI(checkout) } + * .on(CheckoutProtocol.complete) { checkout -> navigateToConfirmation(checkout) } + * .onOpenExternalUrl { uri -> startActivity(Intent(Intent.ACTION_VIEW, uri)); true } + * + * ShopifyCheckoutKit.present(url, activity, eventProcessor, client) + * ``` + */ +public object CheckoutProtocol { + + public const val specVersion: String = "2026-01-11" + + // Notifications — checkout carries the full current state + public val start: NotificationDescriptor = checkoutDescriptor("ec.start") + public val complete: NotificationDescriptor = checkoutDescriptor("ec.complete") + public val messagesChange: NotificationDescriptor = checkoutDescriptor("ec.messages.change") + public val lineItemsChange: NotificationDescriptor = checkoutDescriptor("ec.line_items.change") + public val buyerChange: NotificationDescriptor = checkoutDescriptor("ec.buyer.change") + public val paymentChange: NotificationDescriptor = checkoutDescriptor("ec.payment.change") + + /** Fires on the initial handshake; payload carries the delegations the page has requested. */ + public val ready: NotificationDescriptor = NotificationDescriptor( + method = "ec.ready", + decode = { params -> + val delegate = params?.jsonObject?.get("delegate") + val delegations = delegate?.let { + try { json.decodeFromJsonElement>(it) } catch (_: Exception) { emptyList() } + } ?: emptyList() + ReadyPayload(delegations) + } + ) + + private fun checkoutDescriptor(method: String): NotificationDescriptor = + NotificationDescriptor( + method = method, + decode = { params -> + params?.jsonObject?.get("checkout")?.let { + try { json.decodeFromJsonElement(it) } catch (_: Exception) { null } + } + } + ) + + internal val json: Json = Json { ignoreUnknownKeys = true } + + /** + * A typed, fluent implementation of [CheckoutCommunicationClient]. + * + * Each [on] call returns a new [Client] instance (value semantics), + * making it safe to share a base configuration across multiple presents. + */ + public class Client private constructor( + private val handlers: Map, + private val urlHandler: ((Uri) -> Boolean)?, + ) : CheckoutCommunicationClient { + + public constructor() : this(emptyMap(), null) + + /** + * Register a handler for an EC notification descriptor. + * + * The handler is invoked on the **main thread** whenever the checkout page + * sends the corresponding notification. Returning from the handler sends + * no response to the page (notifications are fire-and-forget). + */ + public fun

on( + descriptor: NotificationDescriptor

, + handler: (P) -> Unit, + ): Client { + @Suppress("UNCHECKED_CAST") + val entry = HandlerEntry( + decode = descriptor.decode, + invoke = { payload -> (payload as? P)?.let { handler(it) } }, + ) + return Client(handlers + (descriptor.method to entry), urlHandler) + } + + /** + * Register a handler for [ec.window.open_request]. + * + * Called on the **main thread** (the SDK uses a latch to dispatch from the + * JavascriptInterface thread). Return `true` if the URL was opened externally, + * `false` to let the SDK report an error back to the page. + */ + public fun onOpenExternalUrl(handler: (Uri) -> Boolean): Client = + Client(handlers, handler) + + /** Called by [EmbeddedCheckoutProtocol] for every delegated EC message. */ + override fun process(message: String): String? { + try { + val request = json.decodeFromString(message) + handlers[request.method]?.let { entry -> + entry.decode(request.params)?.let { payload -> + onMainThread { entry.invoke(payload) } + } + } + } catch (e: Exception) { + log.d(LOG_TAG, "Error processing ECP message in typed client: $e") + } + return null + } + + /** Called by [EmbeddedCheckoutProtocol] on the main thread for [ec.window.open_request]. */ + override fun openExternalUrl(url: Uri): Boolean = urlHandler?.invoke(url) ?: false + + private companion object { + private const val LOG_TAG = "CheckoutProtocol.Client" + } + } + + private class HandlerEntry( + val decode: (JsonElement?) -> Any?, + val invoke: (Any) -> Unit, + ) +} + +/** + * Describes a typed EC notification handler binding. + * + * Create instances via [CheckoutProtocol] static properties; do not instantiate directly. + */ +public class NotificationDescriptor

@PublishedApi internal constructor( + public val method: String, + internal val decode: (JsonElement?) -> P?, +) + +/** Payload delivered with the [CheckoutProtocol.ready] notification. */ +public data class ReadyPayload(public val delegations: List) diff --git a/android/lib/src/main/java/com/shopify/checkoutkit/CheckoutWebView.kt b/android/lib/src/main/java/com/shopify/checkoutkit/CheckoutWebView.kt index ed2c7a5f..bda86ca0 100644 --- a/android/lib/src/main/java/com/shopify/checkoutkit/CheckoutWebView.kt +++ b/android/lib/src/main/java/com/shopify/checkoutkit/CheckoutWebView.kt @@ -31,7 +31,6 @@ import android.util.AttributeSet import android.webkit.WebResourceRequest import android.webkit.WebView import androidx.activity.ComponentActivity -import com.shopify.checkoutkit.InstrumentationType.histogram import com.shopify.checkoutkit.ShopifyCheckoutKit.log import java.util.concurrent.CountDownLatch import kotlin.math.abs @@ -41,35 +40,16 @@ internal class CheckoutWebView(context: Context, attributeSet: AttributeSet? = n BaseWebView(context, attributeSet) { override val recoverErrors = true - override val variant = "standard" - override val cspSchema = CheckoutBridge.SCHEMA_VERSION_NUMBER var isPreload = false private val checkoutBridge = CheckoutBridge(CheckoutWebViewEventProcessor(NoopEventProcessor())) + private val embeddedCheckoutProtocol = EmbeddedCheckoutProtocol(this) private var loadComplete = false - set(value) { - log.d(LOG_TAG, "Setting loadComplete to $value.") - field = value - dispatchWhenPresentedAndLoaded(value, presented) - } - private var presented = false - set(value) { - log.d(LOG_TAG, "Setting presented to $value.") - field = value - dispatchWhenPresentedAndLoaded(loadComplete, value) - } - - private fun dispatchWhenPresentedAndLoaded(loadComplete: Boolean, hasBeenPresented: Boolean) { - if (loadComplete && hasBeenPresented) { - checkoutBridge.sendMessage(this, CheckoutBridge.SDKOperation.Presented) - } - } - - private var initLoadTime: Long = -1 init { webViewClient = CheckoutWebViewClient() addJavascriptInterface(checkoutBridge, JAVASCRIPT_INTERFACE_NAME) + addJavascriptInterface(embeddedCheckoutProtocol, EmbeddedCheckoutProtocol.INTERFACE_NAME) settings.userAgentString = "${settings.userAgentString} ${userAgentSuffix()}" } @@ -80,9 +60,9 @@ internal class CheckoutWebView(context: Context, attributeSet: AttributeSet? = n checkoutBridge.setEventProcessor(eventProcessor) } - fun notifyPresented() { - log.d(LOG_TAG, "Notify presented called.") - presented = true + fun setClient(client: CheckoutCommunicationClient?) { + log.d(LOG_TAG, "Setting communication client $client.") + embeddedCheckoutProtocol.setClient(client) } override fun getEventProcessor(): CheckoutWebViewEventProcessor { @@ -91,19 +71,20 @@ internal class CheckoutWebView(context: Context, attributeSet: AttributeSet? = n override fun onAttachedToWindow() { super.onAttachedToWindow() - log.d(LOG_TAG, "Attached to window. Adding JavaScript interface with name $JAVASCRIPT_INTERFACE_NAME.") + log.d(LOG_TAG, "Attached to window. Adding JavaScript interfaces.") addJavascriptInterface(checkoutBridge, JAVASCRIPT_INTERFACE_NAME) + addJavascriptInterface(embeddedCheckoutProtocol, EmbeddedCheckoutProtocol.INTERFACE_NAME) } override fun onDetachedFromWindow() { super.onDetachedFromWindow() - log.d(LOG_TAG, "Detached from window. Removing JavaScript interface with name $JAVASCRIPT_INTERFACE_NAME.") + log.d(LOG_TAG, "Detached from window. Removing JavaScript interfaces.") removeJavascriptInterface(JAVASCRIPT_INTERFACE_NAME) + removeJavascriptInterface(EmbeddedCheckoutProtocol.INTERFACE_NAME) } fun loadCheckout(url: String, isPreload: Boolean) { log.d(LOG_TAG, "Loading checkout with url $url. IsPreload: $isPreload.") - initLoadTime = System.currentTimeMillis() this.isPreload = isPreload Handler(Looper.getMainLooper()).post { val headers = if (isPreload) mutableMapOf("Shopify-Purpose" to "prefetch") else mutableMapOf() @@ -121,20 +102,8 @@ internal class CheckoutWebView(context: Context, attributeSet: AttributeSet? = n override fun onPageFinished(view: WebView, url: String) { super.onPageFinished(view, url) - log.d(LOG_TAG, "onPageFinished called $url, emitting instrumentation message.") + log.d(LOG_TAG, "onPageFinished called $url.") loadComplete = true - val timeToLoad = System.currentTimeMillis() - initLoadTime - checkoutBridge.sendMessage( - view, - CheckoutBridge.SDKOperation.Instrumentation( - InstrumentationPayload( - name = "checkout_finished_loading", - value = timeToLoad, - type = histogram, - tags = mapOf("preloading" to isPreload.toString()), - ) - ) - ) getEventProcessor().onCheckoutViewLoadComplete() } diff --git a/android/lib/src/main/java/com/shopify/checkoutkit/EmbeddedCheckoutProtocol.kt b/android/lib/src/main/java/com/shopify/checkoutkit/EmbeddedCheckoutProtocol.kt new file mode 100644 index 00000000..45b8bd7a --- /dev/null +++ b/android/lib/src/main/java/com/shopify/checkoutkit/EmbeddedCheckoutProtocol.kt @@ -0,0 +1,195 @@ +/* + * MIT License + * + * Copyright 2023-present, Shopify Inc. + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in all + * copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + */ +package com.shopify.checkoutkit + +import android.net.Uri +import android.webkit.JavascriptInterface +import androidx.core.net.toUri +import com.shopify.checkoutkit.ShopifyCheckoutKit.log +import kotlinx.serialization.Serializable +import kotlinx.serialization.json.Json +import kotlinx.serialization.json.JsonElement +import kotlinx.serialization.json.contentOrNull +import kotlinx.serialization.json.jsonObject +import kotlinx.serialization.json.jsonPrimitive +import java.util.concurrent.CountDownLatch + +/** + * Handles the Embedded Checkout Protocol (ECP) JS bridge. + * + * Registered on the WebView as [INTERFACE_NAME] so checkout can call + * `window.EmbeddedCheckoutProtocolConsumer.postMessage(jsonRpcString)`. + * Responses are sent back via `window.EmbeddedCheckoutProtocol.postMessage(responseString)`. + */ +internal class EmbeddedCheckoutProtocol( + private val view: CheckoutWebView, + @Volatile private var client: CheckoutCommunicationClient? = null, +) { + private val decoder = Json { ignoreUnknownKeys = true } + + internal fun setClient(client: CheckoutCommunicationClient?) { + this.client = client + } + + @JavascriptInterface + fun postMessage(message: String) { + try { + log.d(LOG_TAG, "Received ECP message.") + val request = decoder.decodeFromString(message) + when { + request.method == METHOD_READY -> handleReady(request, message) + // Respond with explicit "not supported" so web-side promises don't hang + request.method in UNSUPPORTED_METHODS -> + sendError(request.id, CODE_METHOD_NOT_SUPPORTED, "Method not supported by this SDK") + // ep.cart.* is out of scope for the checkout bridge + request.method.startsWith("ep.") -> + log.d(LOG_TAG, "Ignoring out-of-scope ep method: ${request.method}.") + request.method == METHOD_WINDOW_OPEN_REQUEST -> handleWindowOpenRequest(request) + request.method == METHOD_START -> handleStart(message) + else -> handleClientMessage(message) + } + } catch (e: Exception) { + log.d(LOG_TAG, "Failed to decode ECP message: $e") + sendError(null, CODE_PARSE_ERROR, "Parse error") + } + } + + private fun handleReady(request: EcpRequest, rawMessage: String) { + log.d(LOG_TAG, "Handling $METHOD_READY, sending ACK.") + sendResult(request.id, UCP_SUCCESS) + // Also notify the typed client so handlers registered on CheckoutProtocol.ready fire. + onMainThread { client?.process(rawMessage) } + } + + private fun handleStart(message: String) { + log.d(LOG_TAG, "Handling $METHOD_START: showing progress bar and bubbling up.") + onMainThread { + view.getEventProcessor().onCheckoutViewLoadStarted() + client?.process(message) + } + } + + private fun handleWindowOpenRequest(request: EcpRequest) { + log.d(LOG_TAG, "Handling $METHOD_WINDOW_OPEN_REQUEST.") + val urlString = request.params?.jsonObject?.get("url")?.jsonPrimitive?.contentOrNull + if (urlString == null) { + sendError(request.id, CODE_INVALID_PARAMS, "Missing url parameter") + return + } + val uri = urlString.toUri() + if (uri.scheme != "https" && uri.scheme != "http") { + log.d(LOG_TAG, "Rejecting $METHOD_WINDOW_OPEN_REQUEST with non-web scheme: ${uri.scheme}") + sendError(request.id, CODE_INVALID_PARAMS, "Only http and https URIs are supported") + return + } + if (!openExternalUrlOnMainThread(uri)) { + log.d(LOG_TAG, "No external URL handler; falling back to default link click behavior.") + onMainThread { view.getEventProcessor().onCheckoutViewLinkClicked(uri) } + } + sendResult(request.id, UCP_SUCCESS) + } + + private fun openExternalUrlOnMainThread(uri: Uri): Boolean { + val currentClient = client ?: return false + var handled = false + val latch = CountDownLatch(1) + onMainThread { + try { + handled = currentClient.openExternalUrl(uri) + } finally { + latch.countDown() + } + } + latch.await() + return handled + } + + private fun handleClientMessage(message: String) { + log.d(LOG_TAG, "Delegating ECP message to client.") + onMainThread { client?.process(message)?.let { sendRaw(it) } } + } + + private fun sendResult(id: JsonElement?, result: String) { + sendRaw("""{"jsonrpc":"2.0","id":${id ?: "null"},"result":$result}""") + } + + private fun sendError(id: JsonElement?, code: Int, message: String) { + sendRaw("""{"jsonrpc":"2.0","id":${id ?: "null"},"error":{"code":$code,"message":"$message"}}""") + } + + private fun sendRaw(responseJson: String) { + val escaped = responseJson + .replace("\\", "\\\\") + .replace("'", "\\'") + .replace("\n", "\\n") + .replace("\r", "\\r") + val script = """ + |if (window.$ECP_RESPONSE_GLOBAL && window.$ECP_RESPONSE_GLOBAL.postMessage) { + | window.$ECP_RESPONSE_GLOBAL.postMessage('$escaped'); + |} + """.trimMargin() + onMainThread { + view.evaluateJavascript(script, null) + } + } + + companion object { + private const val LOG_TAG = "EmbeddedCheckoutProtocol" + + /** Name under which this handler is registered as a JS interface on the WebView. */ + internal const val INTERFACE_NAME = "EmbeddedCheckoutProtocolConsumer" + + /** Global JS object the checkout uses to receive responses. */ + private const val ECP_RESPONSE_GLOBAL = "EmbeddedCheckoutProtocol" + + internal const val METHOD_READY = "ec.ready" + internal const val METHOD_START = "ec.start" + + private const val METHOD_WINDOW_OPEN_REQUEST = "ec.window.open_request" + + // Requests the SDK explicitly does not support — send a protocol-level error so the + // web-side promise resolves rather than hanging indefinitely. + private val UNSUPPORTED_METHODS = setOf( + "ec.auth", + "ec.payment.instruments_change_request", + "ec.payment.credential_request", + "ec.fulfillment.address_change_request", + ) + + // UCP-compliant success envelope required by the spec for all result responses. + private val UCP_SUCCESS = + """{"ucp":{"version":"${CheckoutProtocol.specVersion}","status":"success"}}""" + + private const val CODE_PARSE_ERROR = -32700 + private const val CODE_METHOD_NOT_SUPPORTED = -32601 + private const val CODE_INVALID_PARAMS = -32602 + } +} + +@Serializable +internal data class EcpRequest( + val jsonrpc: String = "2.0", + val method: String, + val id: JsonElement? = null, + val params: JsonElement? = null, +) diff --git a/android/lib/src/main/java/com/shopify/checkoutkit/FallbackWebView.kt b/android/lib/src/main/java/com/shopify/checkoutkit/FallbackWebView.kt index aa32969b..310f305d 100644 --- a/android/lib/src/main/java/com/shopify/checkoutkit/FallbackWebView.kt +++ b/android/lib/src/main/java/com/shopify/checkoutkit/FallbackWebView.kt @@ -34,8 +34,6 @@ internal class FallbackWebView(context: Context, attributeSet: AttributeSet? = n BaseWebView(context, attributeSet) { override val recoverErrors = false - override val variant = "standard_recovery" - override val cspSchema = "noconnect" init { log.d(LOG_TAG, "Initializing fallback web view.") diff --git a/android/lib/src/main/java/com/shopify/checkoutkit/Models.kt b/android/lib/src/main/java/com/shopify/checkoutkit/Models.kt new file mode 100644 index 00000000..33510379 --- /dev/null +++ b/android/lib/src/main/java/com/shopify/checkoutkit/Models.kt @@ -0,0 +1,2853 @@ +/* + * MIT License + * + * Copyright 2023-present, Shopify Inc. + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in all + * copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + */ +// This file was generated from JSON Schema using quicktype, do not modify it directly. +// To regenerate: android/scripts/generate_kotlin_models.sh +// +// To parse the JSON, install kotlin's serialization plugin and do: +// +// val json = Json { allowStructuredMapKeys = true } +// val checkout = json.parse(Checkout.serializer(), jsonString) +// val paymentAccountInfo = json.parse(PaymentAccountInfo.serializer(), jsonString) +// val adjustment = json.parse(Adjustment.serializer(), jsonString) +// val binding = json.parse(TokenBinding.serializer(), jsonString) +// val businessFulfillmentConfig = json.parse(BusinessFulfillmentConfig.serializer(), jsonString) +// val buyer = json.parse(Buyer.serializer(), jsonString) +// val cardCredential = json.parse(CardCredential.serializer(), jsonString) +// val cardPaymentInstrument = json.parse(CardPaymentInstrument.serializer(), jsonString) +// val context = json.parse(Context.serializer(), jsonString) +// val errorCode = json.parse(ErrorCode.serializer(), jsonString) +// val expectation = json.parse(Expectation.serializer(), jsonString) +// val fulfillmentAvailableMethod = json.parse(FulfillmentAvailableMethod.serializer(), jsonString) +// val fulfillmentDestination = json.parse(FulfillmentDestination.serializer(), jsonString) +// val fulfillmentEvent = json.parse(FulfillmentEvent.serializer(), jsonString) +// val fulfillmentGroup = json.parse(FulfillmentGroup.serializer(), jsonString) +// val fulfillmentMethod = json.parse(FulfillmentMethod.serializer(), jsonString) +// val fulfillmentOption = json.parse(FulfillmentOption.serializer(), jsonString) +// val fulfillment = json.parse(Fulfillment.serializer(), jsonString) +// val item = json.parse(Item.serializer(), jsonString) +// val lineItem = json.parse(LineItem.serializer(), jsonString) +// val link = json.parse(Link.serializer(), jsonString) +// val merchantFulfillmentConfig = json.parse(MerchantFulfillmentConfig.serializer(), jsonString) +// val messageError = json.parse(MessageError.serializer(), jsonString) +// val messageInfo = json.parse(MessageInfo.serializer(), jsonString) +// val messageWarning = json.parse(MessageWarning.serializer(), jsonString) +// val message = json.parse(Message.serializer(), jsonString) +// val orderConfirmation = json.parse(OrderConfirmation.serializer(), jsonString) +// val orderLineItem = json.parse(OrderLineItem.serializer(), jsonString) +// val paymentCredential = json.parse(PaymentCredential.serializer(), jsonString) +// val paymentIdentity = json.parse(PaymentIdentity.serializer(), jsonString) +// val paymentInstrument = json.parse(PaymentInstrument.serializer(), jsonString) +// val platformFulfillmentConfig = json.parse(PlatformFulfillmentConfig.serializer(), jsonString) +// val postalAddress = json.parse(PostalAddress.serializer(), jsonString) +// val retailLocation = json.parse(RetailLocation.serializer(), jsonString) +// val shippingDestination = json.parse(ShippingDestination.serializer(), jsonString) +// val tokenCredential = json.parse(TokenCredential.serializer(), jsonString) +// val total = json.parse(Total.serializer(), jsonString) +// val payment = json.parse(Payment.serializer(), jsonString) +// val order = json.parse(Order.serializer(), jsonString) +// val instrumentsChangeResult = json.parse(InstrumentsChangeResult.serializer(), jsonString) +// val credentialResult = json.parse(CredentialResult.serializer(), jsonString) + +package com.shopify.checkoutkit + +import kotlinx.serialization.* +import kotlinx.serialization.json.* +import kotlinx.serialization.descriptors.* +import kotlinx.serialization.encoding.* + +public typealias ErrorCode = String + +/** + * Base checkout schema. Extensions compose onto this using allOf. + */ +@Serializable +public data class Checkout ( + /** + * Representation of the buyer. + */ + public val buyer: BuyerClass? = null, + + public val context: ContextClass? = null, + + /** + * URL for checkout handoff and session recovery. MUST be provided when status is + * requires_escalation. See specification for format and availability requirements. + */ + @SerialName("continue_url") + public val continueURL: String? = null, + + /** + * ISO 4217 currency code reflecting the merchant's market determination. Derived from + * address, context, and geo IP—buyers provide signals, merchants determine currency. + */ + public val currency: String, + + /** + * RFC 3339 expiry timestamp. Default TTL is 6 hours from creation if not sent. + */ + @SerialName("expires_at") + public val expiresAt: String? = null, + + /** + * Unique identifier of the checkout session. + */ + public val id: String, + + /** + * List of line items being checked out. + */ + @SerialName("line_items") + public val lineItems: List, + + /** + * Links to be displayed by the platform (Privacy Policy, TOS). Mandatory for legal + * compliance. + */ + public val links: List, + + /** + * List of messages with error and info about the checkout session state. + */ + public val messages: List? = null, + + /** + * Details about an order created for this checkout session. + */ + public val order: OrderClass? = null, + + public val payment: PaymentClass? = null, + + /** + * Checkout state indicating the current phase and required action. See Checkout Status + * lifecycle documentation for state transition details. + */ + public val status: CheckoutStatus, + + /** + * Different cart totals. + */ + public val totals: List, + + public val ucp: UCPCheckoutResponseSchema +) + +/** + * Representation of the buyer. + */ +@Serializable +public data class BuyerClass ( + /** + * Email of the buyer. + */ + public val email: String? = null, + + /** + * First name of the buyer. + */ + @SerialName("first_name") + public val firstName: String? = null, + + /** + * Last name of the buyer. + */ + @SerialName("last_name") + public val lastName: String? = null, + + /** + * E.164 standard. + */ + @SerialName("phone_number") + public val phoneNumber: String? = null +) + +/** + * Provisional buyer signals for relevance and localization: product availability, pricing, + * currency, tax, shipping, payment methods, and eligibility (e.g., student or affiliation + * discounts). Businesses SHOULD use these values when authoritative data (e.g., address) is + * absent, and MAY ignore unsupported values without returning errors. Context SHOULD be + * non-identifying and can be disclosed progressively—coarse signals early, finer resolution + * as the session progresses. Higher-resolution data (shipping address, billing address) + * supersedes context. Platforms SHOULD progressively enhance context throughout the buyer + * journey. + */ +@Serializable +public data class ContextClass ( + /** + * The country. Recommended to be in 2-letter ISO 3166-1 alpha-2 format, for example "US". + * For backward compatibility, a 3-letter ISO 3166-1 alpha-3 country code such as "SGP" or a + * full country name such as "Singapore" can also be used. Optional hint for market context + * (currency, availability, pricing)—higher-resolution data (e.g., shipping address) + * supersedes this value. + */ + @SerialName("address_country") + public val addressCountry: String? = null, + + /** + * The region in which the locality is, and which is in the country. For example, California + * or another appropriate first-level Administrative division. Optional hint for progressive + * localization—higher-resolution data (e.g., shipping address) supersedes this value. + */ + @SerialName("address_region") + public val addressRegion: String? = null, + + /** + * Background context describing buyer's intent (e.g., 'looking for a gift under $50', 'need + * something durable for outdoor use'). Informs relevance, recommendations, and + * personalization. + */ + public val intent: String? = null, + + /** + * The postal code. For example, 94043. Optional hint for regional + * refinement—higher-resolution data (e.g., shipping address) supersedes this value. + */ + @SerialName("postal_code") + public val postalCode: String? = null +) + +/** + * Line item object. Expected to use the currency of the parent object. + */ +@Serializable +public data class CheckoutLineItem ( + public val id: String, + public val item: ItemClass, + + /** + * Parent line item identifier for any nested structures. + */ + @SerialName("parent_id") + public val parentID: String? = null, + + /** + * Quantity of the item being purchased. + */ + public val quantity: Long, + + /** + * Line item totals breakdown. + */ + public val totals: List +) + +/** + * Product data (id, title, price, image_url). + */ +@Serializable +public data class ItemClass ( + /** + * The product identifier, often the SKU, required to resolve the product details associated + * with this line item. Should be recognized by both the Platform, and the Business. + */ + public val id: String, + + /** + * Product image URI. + */ + @SerialName("image_url") + public val imageURL: String? = null, + + /** + * Unit price in minor (cents) currency units. + */ + public val price: Long, + + /** + * Product title. + */ + public val title: String +) + +@Serializable +public data class TotalElement ( + /** + * If type == total, sums subtotal - discount + fulfillment + tax + fee. Should be >= 0. + * Amount in minor (cents) currency units. + */ + public val amount: Long, + + /** + * Text to display against the amount. Should reflect appropriate method (e.g., 'Shipping', + * 'Delivery'). + */ + @SerialName("display_text") + public val displayText: String? = null, + + /** + * Type of total categorization. + */ + public val type: TotalType +) + +/** + * Type of total categorization. + */ +@Serializable +public enum class TotalType(public val value: String) { + @SerialName("discount") Discount("discount"), + @SerialName("fee") Fee("fee"), + @SerialName("fulfillment") Fulfillment("fulfillment"), + @SerialName("items_discount") ItemsDiscount("items_discount"), + @SerialName("subtotal") Subtotal("subtotal"), + @SerialName("tax") Tax("tax"), + @SerialName("total") Total("total"); +} + +@Serializable +public data class LinkElement ( + /** + * Optional display text for the link. When provided, use this instead of generating from + * type. + */ + public val title: String? = null, + + /** + * Type of link. Well-known values: `privacy_policy`, `terms_of_service`, `refund_policy`, + * `shipping_policy`, `faq`. Consumers SHOULD handle unknown values gracefully by displaying + * them using the `title` field or omitting the link. + */ + public val type: String, + + /** + * The actual URL pointing to the content to be displayed. + */ + public val url: String +) + +/** + * Container for error, warning, or info messages. + */ +@Serializable +public data class MessageElement ( + /** + * Warning code. Machine-readable identifier for the warning type (e.g., final_sale, prop65, + * fulfillment_changed, age_restricted, etc.). + * + * Info code for programmatic handling. + */ + public val code: String? = null, + + /** + * Human-readable message. + * + * Human-readable warning message that MUST be displayed. + */ + public val content: String, + + /** + * Content format, default = plain. + */ + @SerialName("content_type") + public val contentType: ContentType? = null, + + /** + * RFC 9535 JSONPath to the component the message refers to (e.g., $.items[1]). + * + * JSONPath (RFC 9535) to related field (e.g., $.line_items[0]). + * + * RFC 9535 JSONPath to the component the message refers to. + */ + public val path: String? = null, + + /** + * Declares who resolves this error. 'recoverable': agent can fix via API. + * 'requires_buyer_input': merchant requires information their API doesn't support + * collecting programmatically (checkout incomplete). 'requires_buyer_review': buyer must + * authorize before order placement due to policy, regulatory, or entitlement rules + * (checkout complete). Errors with 'requires_*' severity contribute to 'status: + * requires_escalation'. + */ + public val severity: Severity? = null, + + /** + * Message type discriminator. + */ + public val type: MessageType +) + +/** + * Content format, default = plain. + */ +@Serializable +public enum class ContentType(public val value: String) { + @SerialName("markdown") Markdown("markdown"), + @SerialName("plain") Plain("plain"); +} + +/** + * Declares who resolves this error. 'recoverable': agent can fix via API. + * 'requires_buyer_input': merchant requires information their API doesn't support + * collecting programmatically (checkout incomplete). 'requires_buyer_review': buyer must + * authorize before order placement due to policy, regulatory, or entitlement rules + * (checkout complete). Errors with 'requires_*' severity contribute to 'status: + * requires_escalation'. + */ +@Serializable +public enum class Severity(public val value: String) { + @SerialName("recoverable") Recoverable("recoverable"), + @SerialName("requires_buyer_input") RequiresBuyerInput("requires_buyer_input"), + @SerialName("requires_buyer_review") RequiresBuyerReview("requires_buyer_review"); +} + +@Serializable +public enum class MessageType(public val value: String) { + @SerialName("error") Error("error"), + @SerialName("info") Info("info"), + @SerialName("warning") Warning("warning"); +} + +/** + * Details about an order created for this checkout session. + * + * Order details available at the time of checkout completion. + */ +@Serializable +public data class OrderClass ( + /** + * Unique order identifier. + */ + public val id: String, + + /** + * Permalink to access the order on merchant site. + */ + @SerialName("permalink_url") + public val permalinkURL: String +) + +/** + * Payment configuration containing handlers. + */ +@Serializable +public data class PaymentClass ( + /** + * The payment instruments available for this payment. Each instrument is associated with a + * specific handler via the handler_id field. Handlers can extend the base + * payment_instrument schema to add handler-specific fields. + */ + public val instruments: List? = null +) + +/** + * A payment instrument with selection state. + * + * The base definition for any payment instrument. It links the instrument to a specific + * payment handler. + */ +@Serializable +public data class SelectedPaymentInstrument ( + /** + * The billing address associated with this payment method. + */ + @SerialName("billing_address") + public val billingAddress: BillingAddressClass? = null, + + public val credential: CredentialClass? = null, + + /** + * Display information for this payment instrument. Each payment instrument schema defines + * its specific display properties, as outlined by the payment handler. + */ + public val display: JsonObject? = null, + + /** + * The unique identifier for the handler instance that produced this instrument. This + * corresponds to the 'id' field in the Payment Handler definition. + */ + @SerialName("handler_id") + public val handlerID: String, + + /** + * A unique identifier for this instrument instance, assigned by the platform. + */ + public val id: String, + + /** + * The broad category of the instrument (e.g., 'card', 'tokenized_card'). Specific schemas + * will constrain this to a constant value. + */ + public val type: String, + + /** + * Whether this instrument is selected by the user. + */ + public val selected: Boolean? = null +) + +/** + * The billing address associated with this payment method. + * + * Delivery destination address. + * + * Physical address of the location. + */ +@Serializable +public data class BillingAddressClass ( + /** + * The country. Recommended to be in 2-letter ISO 3166-1 alpha-2 format, for example "US". + * For backward compatibility, a 3-letter ISO 3166-1 alpha-3 country code such as "SGP" or a + * full country name such as "Singapore" can also be used. + */ + @SerialName("address_country") + public val addressCountry: String? = null, + + /** + * The locality in which the street address is, and which is in the region. For example, + * Mountain View. + */ + @SerialName("address_locality") + public val addressLocality: String? = null, + + /** + * The region in which the locality is, and which is in the country. Required for applicable + * countries (i.e. state in US, province in CA). For example, California or another + * appropriate first-level Administrative division. + */ + @SerialName("address_region") + public val addressRegion: String? = null, + + /** + * An address extension such as an apartment number, C/O or alternative name. + */ + @SerialName("extended_address") + public val extendedAddress: String? = null, + + /** + * Optional. First name of the contact associated with the address. + */ + @SerialName("first_name") + public val firstName: String? = null, + + /** + * Optional. Last name of the contact associated with the address. + */ + @SerialName("last_name") + public val lastName: String? = null, + + /** + * Optional. Phone number of the contact associated with the address. + */ + @SerialName("phone_number") + public val phoneNumber: String? = null, + + /** + * The postal code. For example, 94043. + */ + @SerialName("postal_code") + public val postalCode: String? = null, + + /** + * The street address. + */ + @SerialName("street_address") + public val streetAddress: String? = null +) + +/** + * The base definition for any payment credential. Handlers define specific credential types. + */ +@Serializable +public data class CredentialClass ( + /** + * The credential type discriminator. Specific schemas will constrain this to a constant + * value. + */ + public val type: String +) + +/** + * Checkout state indicating the current phase and required action. See Checkout Status + * lifecycle documentation for state transition details. + */ +@Serializable +public enum class CheckoutStatus(public val value: String) { + @SerialName("canceled") Canceled("canceled"), + @SerialName("complete_in_progress") CompleteInProgress("complete_in_progress"), + @SerialName("completed") Completed("completed"), + @SerialName("incomplete") Incomplete("incomplete"), + @SerialName("ready_for_complete") ReadyForComplete("ready_for_complete"), + @SerialName("requires_escalation") RequiresEscalation("requires_escalation"); +} + +/** + * UCP metadata for checkout responses. + * + * Base UCP metadata with shared properties for all schema types. + */ +@Serializable +public data class UCPCheckoutResponseSchema ( + /** + * Capability registry keyed by reverse-domain name. + */ + public val capabilities: Map>? = null, + + /** + * Payment handler registry keyed by reverse-domain name. + */ + @SerialName("payment_handlers") + public val paymentHandlers: Map>, + + /** + * Service registry keyed by reverse-domain name. + */ + public val services: Map>? = null, + + public val version: String +) + +/** + * Capability reference in responses. Only name/version required to confirm active + * capabilities. + * + * Shared foundation for all UCP entities. + */ +@Serializable +public data class CapabilityResponseSchema ( + /** + * Entity-specific configuration. Structure defined by each entity's schema. + */ + public val config: JsonObject? = null, + + /** + * Unique identifier for this entity instance. Used to disambiguate when multiple instances + * exist. + */ + public val id: String? = null, + + /** + * URL to JSON Schema defining this entity's structure and payloads. + */ + public val schema: String? = null, + + /** + * URL to human-readable specification document. + */ + public val spec: String? = null, + + /** + * Entity version in YYYY-MM-DD format. + */ + public val version: String, + + /** + * Parent capability(s) this extends. Present for extensions, absent for root capabilities. + * Use array for multi-parent extensions. + */ + public val extends: Extends? = null +) + +/** + * Parent capability(s) this extends. Present for extensions, absent for root capabilities. + * Use array for multi-parent extensions. + */ +@Serializable +public sealed class Extends { + public class StringArrayValue(public val value: List) : Extends() + public class StringValue(public val value: String) : Extends() +} + +/** + * Handler reference in responses. May include full config state for runtime usage of the + * handler. + * + * Shared foundation for all UCP entities. + */ +@Serializable +public data class PaymentHandlerResponseSchema ( + /** + * Entity-specific configuration. Structure defined by each entity's schema. + */ + public val config: JsonObject? = null, + + /** + * Unique identifier for this entity instance. Used to disambiguate when multiple instances + * exist. + */ + public val id: String, + + /** + * URL to JSON Schema defining this entity's structure and payloads. + */ + public val schema: String? = null, + + /** + * URL to human-readable specification document. + */ + public val spec: String? = null, + + /** + * Entity version in YYYY-MM-DD format. + */ + public val version: String +) + +/** + * Service binding in API responses. Includes per-resource transport configuration via typed + * config. + * + * Shared foundation for all UCP entities. + */ +@Serializable +public data class ServiceResponseSchema ( + /** + * Entity-specific configuration. Structure defined by each entity's schema. + */ + public val config: EmbeddedTransportConfig? = null, + + /** + * Unique identifier for this entity instance. Used to disambiguate when multiple instances + * exist. + */ + public val id: String? = null, + + /** + * URL to JSON Schema defining this entity's structure and payloads. + */ + public val schema: String? = null, + + /** + * URL to human-readable specification document. + */ + public val spec: String? = null, + + /** + * Entity version in YYYY-MM-DD format. + */ + public val version: String, + + /** + * Endpoint URL for this transport binding. + */ + public val endpoint: String? = null, + + /** + * Transport protocol for this service binding. + */ + public val transport: Transport +) + +/** + * Entity-specific configuration. Structure defined by each entity's schema. + * + * Per-checkout configuration for embedded transport binding. Allows businesses to vary ECP + * availability and delegations based on cart contents, agent authorization, or policy. + */ +@Serializable +public data class EmbeddedTransportConfig ( + /** + * Delegations the business allows. At service-level, declares available delegations. In + * checkout responses, confirms accepted delegations for this session. + */ + public val delegate: List? = null +) + +/** + * Transport protocol for this service binding. + */ +@Serializable +public enum class Transport(public val value: String) { + @SerialName("a2a") A2A("a2a"), + @SerialName("embedded") Embedded("embedded"), + @SerialName("mcp") MCP("mcp"), + @SerialName("rest") REST("rest"); +} + +/** + * Non-sensitive backend identifiers for linking. + */ +@Serializable +public data class PaymentAccountInfo ( + /** + * EMVCo PAR. A unique identifier linking a payment card to a specific account, enabling + * tracking across tokens (Apple Pay, physical card, etc). + */ + @SerialName("payment_account_reference") + public val paymentAccountReference: String? = null +) + +/** + * Append-only event that exists independently of fulfillment. Typically represents money + * movements but can be any post-order change. Polymorphic type that can optionally + * reference line items. + */ +@Serializable +public data class Adjustment ( + /** + * Amount in minor units (cents) for refunds, credits, price adjustments (optional). + */ + public val amount: Long? = null, + + /** + * Human-readable reason or description (e.g., 'Defective item', 'Customer requested'). + */ + public val description: String? = null, + + /** + * Adjustment event identifier. + */ + public val id: String, + + /** + * Which line items and quantities are affected (optional). + */ + @SerialName("line_items") + public val lineItems: List? = null, + + /** + * RFC 3339 timestamp when this adjustment occurred. + */ + @SerialName("occurred_at") + public val occurredAt: String, + + /** + * Adjustment status. + */ + public val status: AdjustmentStatus, + + /** + * Type of adjustment (open string). Typically money-related like: refund, return, credit, + * price_adjustment, dispute, cancellation. Can be any value that makes sense for the + * merchant's business. + */ + public val type: String +) + +@Serializable +public data class AdjustmentLineItem ( + /** + * Line item ID reference. + */ + public val id: String, + + /** + * Quantity affected by this adjustment. + */ + public val quantity: Long +) + +/** + * Adjustment status. + */ +@Serializable +public enum class AdjustmentStatus(public val value: String) { + @SerialName("completed") Completed("completed"), + @SerialName("failed") Failed("failed"), + @SerialName("pending") Pending("pending"); +} + +/** + * Binds a token to a specific checkout session and participant. Prevents token reuse across + * different checkouts or participants. + */ +@Serializable +public data class TokenBinding ( + /** + * The checkout session identifier this token is bound to. + */ + @SerialName("checkout_id") + public val checkoutID: String, + + /** + * The participant this token is bound to. Required when acting on behalf of another + * participant (e.g., agent tokenizing for merchant). Omit when the authenticated caller is + * the binding target. + */ + public val identity: IdentityClass? = null +) + +/** + * The participant this token is bound to. Required when acting on behalf of another + * participant (e.g., agent tokenizing for merchant). Omit when the authenticated caller is + * the binding target. + * + * Identity of a participant for token binding. The access_token uniquely identifies the + * participant who tokens should be bound to. + */ +@Serializable +public data class IdentityClass ( + /** + * Unique identifier for this participant, obtained during onboarding with the tokenizer. + */ + @SerialName("access_token") + public val accessToken: String +) + +/** + * Business's fulfillment configuration. + */ +@Serializable +public data class BusinessFulfillmentConfig ( + /** + * Allowed method type combinations. + */ + @SerialName("allows_method_combinations") + public val allowsMethodCombinations: List>? = null, + + /** + * Permits multiple destinations per method type. + */ + @SerialName("allows_multi_destination") + public val allowsMultiDestination: BusinessFulfillmentConfigAllowsMultiDestination? = null +) + +/** + * Fulfillment method type this availability applies to. + * + * Fulfillment method type. + */ +@Serializable +public enum class TypeElement(public val value: String) { + @SerialName("pickup") Pickup("pickup"), + @SerialName("shipping") Shipping("shipping"); +} + +/** + * Permits multiple destinations per method type. + */ +@Serializable +public data class BusinessFulfillmentConfigAllowsMultiDestination ( + /** + * Multiple pickup locations allowed. + */ + public val pickup: Boolean? = null, + + /** + * Multiple shipping destinations allowed. + */ + public val shipping: Boolean? = null +) + +@Serializable +public data class Buyer ( + /** + * Email of the buyer. + */ + public val email: String? = null, + + /** + * First name of the buyer. + */ + @SerialName("first_name") + public val firstName: String? = null, + + /** + * Last name of the buyer. + */ + @SerialName("last_name") + public val lastName: String? = null, + + /** + * E.164 standard. + */ + @SerialName("phone_number") + public val phoneNumber: String? = null +) + +/** + * A card credential containing sensitive payment card details including raw Primary Account + * Numbers (PANs). This credential type MUST NOT be used for checkout, only with payment + * handlers that tokenize or encrypt credentials. CRITICAL: Both parties handling + * CardCredential (sender and receiver) MUST be PCI DSS compliant. Transmission MUST use + * HTTPS/TLS with strong cipher suites. + * + * The base definition for any payment credential. Handlers define specific credential types. + */ +@Serializable +public data class CardCredential ( + /** + * The credential type discriminator. Specific schemas will constrain this to a constant + * value. + * + * The credential type identifier for card credentials. + */ + public val type: TypeEnum, + + /** + * The type of card number. Network tokens are preferred with fallback to FPAN. See PCI + * Scope for more details. + */ + @SerialName("card_number_type") + public val cardNumberType: CardNumberType, + + /** + * Cryptogram provided with network tokens. + */ + public val cryptogram: String? = null, + + /** + * Card CVC number. + */ + public val cvc: String? = null, + + /** + * Electronic Commerce Indicator / Security Level Indicator provided with network tokens. + */ + @SerialName("eci_value") + public val eciValue: String? = null, + + /** + * The month of the card's expiration date (1-12). + */ + @SerialName("expiry_month") + public val expiryMonth: Long? = null, + + /** + * The year of the card's expiration date. + */ + @SerialName("expiry_year") + public val expiryYear: Long? = null, + + /** + * Cardholder name. + */ + public val name: String? = null, + + /** + * Card number. + */ + public val number: String? = null +) + +/** + * The type of card number. Network tokens are preferred with fallback to FPAN. See PCI + * Scope for more details. + */ +@Serializable +public enum class CardNumberType(public val value: String) { + @SerialName("dpan") Dpan("dpan"), + @SerialName("fpan") Fpan("fpan"), + @SerialName("network_token") NetworkToken("network_token"); +} + +/** + * Error code identifying the type of error. Standard errors are defined in specification + * (see examples), and have standardized semantics; freeform codes are permitted. + */ +@Serializable +public enum class TypeEnum(public val value: String) { + @SerialName("card") Card("card"); +} + +/** + * A basic card payment instrument with visible card details. Can be inherited by a + * handler's instrument schema to define handler-specific display details or more complex + * credential structures. + * + * The base definition for any payment instrument. It links the instrument to a specific + * payment handler. + */ +@Serializable +public data class CardPaymentInstrument ( + /** + * The billing address associated with this payment method. + */ + @SerialName("billing_address") + public val billingAddress: BillingAddressClass? = null, + + public val credential: CredentialClass? = null, + + /** + * Display information for this payment instrument. Each payment instrument schema defines + * its specific display properties, as outlined by the payment handler. + * + * Display information for this card payment instrument. + */ + public val display: Display? = null, + + /** + * The unique identifier for the handler instance that produced this instrument. This + * corresponds to the 'id' field in the Payment Handler definition. + */ + @SerialName("handler_id") + public val handlerID: String, + + /** + * A unique identifier for this instrument instance, assigned by the platform. + */ + public val id: String, + + /** + * The broad category of the instrument (e.g., 'card', 'tokenized_card'). Specific schemas + * will constrain this to a constant value. + * + * Indicates this is a card payment instrument. + */ + public val type: TypeEnum +) + +/** + * Display information for this payment instrument. Each payment instrument schema defines + * its specific display properties, as outlined by the payment handler. + * + * Display information for this card payment instrument. + */ +@Serializable +public data class Display ( + /** + * The card brand/network (e.g., visa, mastercard, amex). + */ + public val brand: String? = null, + + /** + * An optional URI to a rich image representing the card (e.g., card art provided by the + * issuer). + */ + @SerialName("card_art") + public val cardArt: String? = null, + + /** + * An optional rich text description of the card to display to the user (e.g., 'Visa ending + * in 1234, expires 12/2025'). + */ + public val description: String? = null, + + /** + * The month of the card's expiration date (1-12). + */ + @SerialName("expiry_month") + public val expiryMonth: Long? = null, + + /** + * The year of the card's expiration date. + */ + @SerialName("expiry_year") + public val expiryYear: Long? = null, + + /** + * Last 4 digits of the card number. + */ + @SerialName("last_digits") + public val lastDigits: String? = null +) + +/** + * Provisional buyer signals for relevance and localization: product availability, pricing, + * currency, tax, shipping, payment methods, and eligibility (e.g., student or affiliation + * discounts). Businesses SHOULD use these values when authoritative data (e.g., address) is + * absent, and MAY ignore unsupported values without returning errors. Context SHOULD be + * non-identifying and can be disclosed progressively—coarse signals early, finer resolution + * as the session progresses. Higher-resolution data (shipping address, billing address) + * supersedes context. Platforms SHOULD progressively enhance context throughout the buyer + * journey. + */ +@Serializable +public data class Context ( + /** + * The country. Recommended to be in 2-letter ISO 3166-1 alpha-2 format, for example "US". + * For backward compatibility, a 3-letter ISO 3166-1 alpha-3 country code such as "SGP" or a + * full country name such as "Singapore" can also be used. Optional hint for market context + * (currency, availability, pricing)—higher-resolution data (e.g., shipping address) + * supersedes this value. + */ + @SerialName("address_country") + public val addressCountry: String? = null, + + /** + * The region in which the locality is, and which is in the country. For example, California + * or another appropriate first-level Administrative division. Optional hint for progressive + * localization—higher-resolution data (e.g., shipping address) supersedes this value. + */ + @SerialName("address_region") + public val addressRegion: String? = null, + + /** + * Background context describing buyer's intent (e.g., 'looking for a gift under $50', 'need + * something durable for outdoor use'). Informs relevance, recommendations, and + * personalization. + */ + public val intent: String? = null, + + /** + * The postal code. For example, 94043. Optional hint for regional + * refinement—higher-resolution data (e.g., shipping address) supersedes this value. + */ + @SerialName("postal_code") + public val postalCode: String? = null +) + +/** + * Buyer-facing fulfillment expectation representing logical groupings of items (e.g., + * 'package'). Can be split, merged, or adjusted post-order to set buyer expectations for + * when/how items arrive. + */ +@Serializable +public data class Expectation ( + /** + * Human-readable delivery description (e.g., 'Arrives in 5-8 business days'). + */ + public val description: String? = null, + + /** + * Delivery destination address. + */ + public val destination: BillingAddressClass, + + /** + * When this expectation can be fulfilled: 'now' or ISO 8601 timestamp for future date + * (backorder, pre-order). + */ + @SerialName("fulfillable_on") + public val fulfillableOn: String? = null, + + /** + * Expectation identifier. + */ + public val id: String, + + /** + * Which line items and quantities are in this expectation. + */ + @SerialName("line_items") + public val lineItems: List, + + /** + * Delivery method type (shipping, pickup, digital). + */ + @SerialName("method_type") + public val methodType: MethodType +) + +@Serializable +public data class ExpectationLineItem ( + /** + * Line item ID reference. + */ + public val id: String, + + /** + * Quantity of this item in this expectation. + */ + public val quantity: Long +) + +/** + * Delivery method type (shipping, pickup, digital). + */ +@Serializable +public enum class MethodType(public val value: String) { + @SerialName("digital") Digital("digital"), + @SerialName("pickup") Pickup("pickup"), + @SerialName("shipping") Shipping("shipping"); +} + +/** + * Inventory availability hint for a fulfillment method type. + */ +@Serializable +public data class FulfillmentAvailableMethod ( + /** + * Human-readable availability info (e.g., 'Available for pickup at Downtown Store today'). + */ + public val description: String? = null, + + /** + * 'now' for immediate availability, or ISO 8601 date for future (preorders, transfers). + */ + @SerialName("fulfillable_on") + public val fulfillableOn: String? = null, + + /** + * Line items available for this fulfillment method. + */ + @SerialName("line_item_ids") + public val lineItemIDS: List, + + /** + * Fulfillment method type this availability applies to. + */ + public val type: TypeElement +) + +/** + * A destination for fulfillment. + * + * Shipping destination. + * + * The billing address associated with this payment method. + * + * Delivery destination address. + * + * Physical address of the location. + * + * A pickup location (retail store, locker, etc.). + */ +@Serializable +public data class FulfillmentDestination ( + /** + * The country. Recommended to be in 2-letter ISO 3166-1 alpha-2 format, for example "US". + * For backward compatibility, a 3-letter ISO 3166-1 alpha-3 country code such as "SGP" or a + * full country name such as "Singapore" can also be used. + */ + @SerialName("address_country") + public val addressCountry: String? = null, + + /** + * The locality in which the street address is, and which is in the region. For example, + * Mountain View. + */ + @SerialName("address_locality") + public val addressLocality: String? = null, + + /** + * The region in which the locality is, and which is in the country. Required for applicable + * countries (i.e. state in US, province in CA). For example, California or another + * appropriate first-level Administrative division. + */ + @SerialName("address_region") + public val addressRegion: String? = null, + + /** + * An address extension such as an apartment number, C/O or alternative name. + */ + @SerialName("extended_address") + public val extendedAddress: String? = null, + + /** + * Optional. First name of the contact associated with the address. + */ + @SerialName("first_name") + public val firstName: String? = null, + + /** + * Optional. Last name of the contact associated with the address. + */ + @SerialName("last_name") + public val lastName: String? = null, + + /** + * Optional. Phone number of the contact associated with the address. + */ + @SerialName("phone_number") + public val phoneNumber: String? = null, + + /** + * The postal code. For example, 94043. + */ + @SerialName("postal_code") + public val postalCode: String? = null, + + /** + * The street address. + */ + @SerialName("street_address") + public val streetAddress: String? = null, + + /** + * ID specific to this shipping destination. + * + * Unique location identifier. + */ + public val id: String, + + /** + * Physical address of the location. + */ + public val address: BillingAddressClass? = null, + + /** + * Location name (e.g., store name). + */ + public val name: String? = null +) + +/** + * Append-only fulfillment event representing an actual shipment. References line items by + * ID. + */ +@Serializable +public data class FulfillmentEvent ( + /** + * Carrier name (e.g., 'FedEx', 'USPS'). + */ + public val carrier: String? = null, + + /** + * Human-readable description of the shipment status or delivery information (e.g., + * 'Delivered to front door', 'Out for delivery'). + */ + public val description: String? = null, + + /** + * Fulfillment event identifier. + */ + public val id: String, + + /** + * Which line items and quantities are fulfilled in this event. + */ + @SerialName("line_items") + public val lineItems: List, + + /** + * RFC 3339 timestamp when this fulfillment event occurred. + */ + @SerialName("occurred_at") + public val occurredAt: String, + + /** + * Carrier tracking number (required if type != processing). + */ + @SerialName("tracking_number") + public val trackingNumber: String? = null, + + /** + * URL to track this shipment (required if type != processing). + */ + @SerialName("tracking_url") + public val trackingURL: String? = null, + + /** + * Fulfillment event type. Common values include: processing (preparing to ship), shipped + * (handed to carrier), in_transit (in delivery network), delivered (received by buyer), + * failed_attempt (delivery attempt failed), canceled (fulfillment canceled), undeliverable + * (cannot be delivered), returned_to_sender (returned to merchant). + */ + public val type: String +) + +@Serializable +public data class FulfillmentEventLineItem ( + /** + * Line item ID reference. + */ + public val id: String, + + /** + * Quantity fulfilled in this event. + */ + public val quantity: Long +) + +/** + * A merchant-generated package/group of line items with fulfillment options. + */ +@Serializable +public data class FulfillmentGroup ( + /** + * Group identifier for referencing merchant-generated groups in updates. + */ + public val id: String, + + /** + * Line item IDs included in this group/package. + */ + @SerialName("line_item_ids") + public val lineItemIDS: List, + + /** + * Available fulfillment options for this group. + */ + public val options: List? = null, + + /** + * ID of the selected fulfillment option for this group. + */ + @SerialName("selected_option_id") + public val selectedOptionID: String? = null +) + +/** + * A fulfillment option within a group (e.g., Standard Shipping $5, Express $15). + */ +@Serializable +public data class OptionElement ( + /** + * Carrier name (for shipping). + */ + public val carrier: String? = null, + + /** + * Complete context for buyer decision (e.g., 'Arrives Dec 12-15 via FedEx'). + */ + public val description: String? = null, + + /** + * Earliest fulfillment date. + */ + @SerialName("earliest_fulfillment_time") + public val earliestFulfillmentTime: String? = null, + + /** + * Unique fulfillment option identifier. + */ + public val id: String, + + /** + * Latest fulfillment date. + */ + @SerialName("latest_fulfillment_time") + public val latestFulfillmentTime: String? = null, + + /** + * Short label (e.g., 'Express Shipping', 'Curbside Pickup'). + */ + public val title: String, + + /** + * Fulfillment option totals breakdown. + */ + public val totals: List +) + +/** + * A fulfillment method (shipping or pickup) with destinations and groups. + */ +@Serializable +public data class FulfillmentMethod ( + /** + * Available destinations. For shipping: addresses. For pickup: retail locations. + */ + public val destinations: List? = null, + + /** + * Fulfillment groups for selecting options. Agent sets selected_option_id on groups to + * choose shipping method. + */ + public val groups: List? = null, + + /** + * Unique fulfillment method identifier. + */ + public val id: String, + + /** + * Line item IDs fulfilled via this method. + */ + @SerialName("line_item_ids") + public val lineItemIDS: List, + + /** + * ID of the selected destination. + */ + @SerialName("selected_destination_id") + public val selectedDestinationID: String? = null, + + /** + * Fulfillment method type. + */ + public val type: TypeElement +) + +/** + * A destination for fulfillment. + * + * Shipping destination. + * + * The billing address associated with this payment method. + * + * Delivery destination address. + * + * Physical address of the location. + * + * A pickup location (retail store, locker, etc.). + */ +@Serializable +public data class FulfillmentDestinationElement ( + /** + * The country. Recommended to be in 2-letter ISO 3166-1 alpha-2 format, for example "US". + * For backward compatibility, a 3-letter ISO 3166-1 alpha-3 country code such as "SGP" or a + * full country name such as "Singapore" can also be used. + */ + @SerialName("address_country") + public val addressCountry: String? = null, + + /** + * The locality in which the street address is, and which is in the region. For example, + * Mountain View. + */ + @SerialName("address_locality") + public val addressLocality: String? = null, + + /** + * The region in which the locality is, and which is in the country. Required for applicable + * countries (i.e. state in US, province in CA). For example, California or another + * appropriate first-level Administrative division. + */ + @SerialName("address_region") + public val addressRegion: String? = null, + + /** + * An address extension such as an apartment number, C/O or alternative name. + */ + @SerialName("extended_address") + public val extendedAddress: String? = null, + + /** + * Optional. First name of the contact associated with the address. + */ + @SerialName("first_name") + public val firstName: String? = null, + + /** + * Optional. Last name of the contact associated with the address. + */ + @SerialName("last_name") + public val lastName: String? = null, + + /** + * Optional. Phone number of the contact associated with the address. + */ + @SerialName("phone_number") + public val phoneNumber: String? = null, + + /** + * The postal code. For example, 94043. + */ + @SerialName("postal_code") + public val postalCode: String? = null, + + /** + * The street address. + */ + @SerialName("street_address") + public val streetAddress: String? = null, + + /** + * ID specific to this shipping destination. + * + * Unique location identifier. + */ + public val id: String, + + /** + * Physical address of the location. + */ + public val address: BillingAddressClass? = null, + + /** + * Location name (e.g., store name). + */ + public val name: String? = null +) + +/** + * A merchant-generated package/group of line items with fulfillment options. + */ +@Serializable +public data class GroupElement ( + /** + * Group identifier for referencing merchant-generated groups in updates. + */ + public val id: String, + + /** + * Line item IDs included in this group/package. + */ + @SerialName("line_item_ids") + public val lineItemIDS: List, + + /** + * Available fulfillment options for this group. + */ + public val options: List? = null, + + /** + * ID of the selected fulfillment option for this group. + */ + @SerialName("selected_option_id") + public val selectedOptionID: String? = null +) + +/** + * A fulfillment option within a group (e.g., Standard Shipping $5, Express $15). + */ +@Serializable +public data class FulfillmentOption ( + /** + * Carrier name (for shipping). + */ + public val carrier: String? = null, + + /** + * Complete context for buyer decision (e.g., 'Arrives Dec 12-15 via FedEx'). + */ + public val description: String? = null, + + /** + * Earliest fulfillment date. + */ + @SerialName("earliest_fulfillment_time") + public val earliestFulfillmentTime: String? = null, + + /** + * Unique fulfillment option identifier. + */ + public val id: String, + + /** + * Latest fulfillment date. + */ + @SerialName("latest_fulfillment_time") + public val latestFulfillmentTime: String? = null, + + /** + * Short label (e.g., 'Express Shipping', 'Curbside Pickup'). + */ + public val title: String, + + /** + * Fulfillment option totals breakdown. + */ + public val totals: List +) + +/** + * Container for fulfillment methods and availability. + */ +@Serializable +public data class Fulfillment ( + /** + * Inventory availability hints. + */ + @SerialName("available_methods") + public val availableMethods: List? = null, + + /** + * Fulfillment methods for cart items. + */ + public val methods: List? = null +) + +/** + * Inventory availability hint for a fulfillment method type. + */ +@Serializable +public data class AvailableMethodElement ( + /** + * Human-readable availability info (e.g., 'Available for pickup at Downtown Store today'). + */ + public val description: String? = null, + + /** + * 'now' for immediate availability, or ISO 8601 date for future (preorders, transfers). + */ + @SerialName("fulfillable_on") + public val fulfillableOn: String? = null, + + /** + * Line items available for this fulfillment method. + */ + @SerialName("line_item_ids") + public val lineItemIDS: List, + + /** + * Fulfillment method type this availability applies to. + */ + public val type: TypeElement +) + +/** + * A fulfillment method (shipping or pickup) with destinations and groups. + */ +@Serializable +public data class MethodElement ( + /** + * Available destinations. For shipping: addresses. For pickup: retail locations. + */ + public val destinations: List? = null, + + /** + * Fulfillment groups for selecting options. Agent sets selected_option_id on groups to + * choose shipping method. + */ + public val groups: List? = null, + + /** + * Unique fulfillment method identifier. + */ + public val id: String, + + /** + * Line item IDs fulfilled via this method. + */ + @SerialName("line_item_ids") + public val lineItemIDS: List, + + /** + * ID of the selected destination. + */ + @SerialName("selected_destination_id") + public val selectedDestinationID: String? = null, + + /** + * Fulfillment method type. + */ + public val type: TypeElement +) + +@Serializable +public data class Item ( + /** + * The product identifier, often the SKU, required to resolve the product details associated + * with this line item. Should be recognized by both the Platform, and the Business. + */ + public val id: String, + + /** + * Product image URI. + */ + @SerialName("image_url") + public val imageURL: String? = null, + + /** + * Unit price in minor (cents) currency units. + */ + public val price: Long, + + /** + * Product title. + */ + public val title: String +) + +/** + * Line item object. Expected to use the currency of the parent object. + */ +@Serializable +public data class LineItem ( + public val id: String, + public val item: ItemClass, + + /** + * Parent line item identifier for any nested structures. + */ + @SerialName("parent_id") + public val parentID: String? = null, + + /** + * Quantity of the item being purchased. + */ + public val quantity: Long, + + /** + * Line item totals breakdown. + */ + public val totals: List +) + +@Serializable +public data class Link ( + /** + * Optional display text for the link. When provided, use this instead of generating from + * type. + */ + public val title: String? = null, + + /** + * Type of link. Well-known values: `privacy_policy`, `terms_of_service`, `refund_policy`, + * `shipping_policy`, `faq`. Consumers SHOULD handle unknown values gracefully by displaying + * them using the `title` field or omitting the link. + */ + public val type: String, + + /** + * The actual URL pointing to the content to be displayed. + */ + public val url: String +) + +/** + * Merchant's fulfillment configuration. + */ +@Serializable +public data class MerchantFulfillmentConfig ( + /** + * Allowed method type combinations. + */ + @SerialName("allows_method_combinations") + public val allowsMethodCombinations: List>? = null, + + /** + * Permits multiple destinations per method type. + */ + @SerialName("allows_multi_destination") + public val allowsMultiDestination: MerchantFulfillmentConfigAllowsMultiDestination? = null +) + +/** + * Permits multiple destinations per method type. + */ +@Serializable +public data class MerchantFulfillmentConfigAllowsMultiDestination ( + /** + * Multiple pickup locations allowed. + */ + public val pickup: Boolean? = null, + + /** + * Multiple shipping destinations allowed. + */ + public val shipping: Boolean? = null +) + +@Serializable +public data class MessageError ( + public val code: String, + + /** + * Human-readable message. + */ + public val content: String, + + /** + * Content format, default = plain. + */ + @SerialName("content_type") + public val contentType: ContentType? = null, + + /** + * RFC 9535 JSONPath to the component the message refers to (e.g., $.items[1]). + */ + public val path: String? = null, + + /** + * Declares who resolves this error. 'recoverable': agent can fix via API. + * 'requires_buyer_input': merchant requires information their API doesn't support + * collecting programmatically (checkout incomplete). 'requires_buyer_review': buyer must + * authorize before order placement due to policy, regulatory, or entitlement rules + * (checkout complete). Errors with 'requires_*' severity contribute to 'status: + * requires_escalation'. + */ + public val severity: Severity, + + /** + * Message type discriminator. + */ + public val type: MessageErrorType +) + +@Serializable +public enum class MessageErrorType(public val value: String) { + @SerialName("error") Error("error"); +} + +@Serializable +public data class MessageInfo ( + /** + * Info code for programmatic handling. + */ + public val code: String? = null, + + /** + * Human-readable message. + */ + public val content: String, + + /** + * Content format, default = plain. + */ + @SerialName("content_type") + public val contentType: ContentType? = null, + + /** + * RFC 9535 JSONPath to the component the message refers to. + */ + public val path: String? = null, + + /** + * Message type discriminator. + */ + public val type: MessageInfoType +) + +@Serializable +public enum class MessageInfoType(public val value: String) { + @SerialName("info") Info("info"); +} + +@Serializable +public data class MessageWarning ( + /** + * Warning code. Machine-readable identifier for the warning type (e.g., final_sale, prop65, + * fulfillment_changed, age_restricted, etc.). + */ + public val code: String, + + /** + * Human-readable warning message that MUST be displayed. + */ + public val content: String, + + /** + * Content format, default = plain. + */ + @SerialName("content_type") + public val contentType: ContentType? = null, + + /** + * JSONPath (RFC 9535) to related field (e.g., $.line_items[0]). + */ + public val path: String? = null, + + /** + * Message type discriminator. + */ + public val type: MessageWarningType +) + +@Serializable +public enum class MessageWarningType(public val value: String) { + @SerialName("warning") Warning("warning"); +} + +/** + * Container for error, warning, or info messages. + */ +@Serializable +public data class Message ( + /** + * Warning code. Machine-readable identifier for the warning type (e.g., final_sale, prop65, + * fulfillment_changed, age_restricted, etc.). + * + * Info code for programmatic handling. + */ + public val code: String? = null, + + /** + * Human-readable message. + * + * Human-readable warning message that MUST be displayed. + */ + public val content: String, + + /** + * Content format, default = plain. + */ + @SerialName("content_type") + public val contentType: ContentType? = null, + + /** + * RFC 9535 JSONPath to the component the message refers to (e.g., $.items[1]). + * + * JSONPath (RFC 9535) to related field (e.g., $.line_items[0]). + * + * RFC 9535 JSONPath to the component the message refers to. + */ + public val path: String? = null, + + /** + * Declares who resolves this error. 'recoverable': agent can fix via API. + * 'requires_buyer_input': merchant requires information their API doesn't support + * collecting programmatically (checkout incomplete). 'requires_buyer_review': buyer must + * authorize before order placement due to policy, regulatory, or entitlement rules + * (checkout complete). Errors with 'requires_*' severity contribute to 'status: + * requires_escalation'. + */ + public val severity: Severity? = null, + + /** + * Message type discriminator. + */ + public val type: MessageType +) + +/** + * Order details available at the time of checkout completion. + */ +@Serializable +public data class OrderConfirmation ( + /** + * Unique order identifier. + */ + public val id: String, + + /** + * Permalink to access the order on merchant site. + */ + @SerialName("permalink_url") + public val permalinkURL: String +) + +@Serializable +public data class OrderLineItem ( + /** + * Line item identifier. + */ + public val id: String, + + /** + * Product data (id, title, price, image_url). + */ + public val item: ItemClass, + + /** + * Parent line item identifier for any nested structures. + */ + @SerialName("parent_id") + public val parentID: String? = null, + + /** + * Quantity tracking. Both total and fulfilled are derived from events. + */ + public val quantity: OrderLineItemQuantity, + + /** + * Derived status: fulfilled if quantity.fulfilled == quantity.total, partial if + * quantity.fulfilled > 0, otherwise processing. + */ + public val status: OrderLineItemStatus, + + /** + * Line item totals breakdown. + */ + public val totals: List +) + +/** + * Quantity tracking. Both total and fulfilled are derived from events. + */ +@Serializable +public data class OrderLineItemQuantity ( + /** + * Quantity fulfilled (sum from fulfillment events). + */ + public val fulfilled: Long, + + /** + * Current total quantity. + */ + public val total: Long +) + +/** + * Derived status: fulfilled if quantity.fulfilled == quantity.total, partial if + * quantity.fulfilled > 0, otherwise processing. + */ +@Serializable +public enum class OrderLineItemStatus(public val value: String) { + @SerialName("fulfilled") Fulfilled("fulfilled"), + @SerialName("partial") Partial("partial"), + @SerialName("processing") Processing("processing"); +} + +/** + * The base definition for any payment credential. Handlers define specific credential types. + */ +@Serializable +public data class PaymentCredential ( + /** + * The credential type discriminator. Specific schemas will constrain this to a constant + * value. + */ + public val type: String +) + +/** + * Identity of a participant for token binding. The access_token uniquely identifies the + * participant who tokens should be bound to. + */ +@Serializable +public data class PaymentIdentity ( + /** + * Unique identifier for this participant, obtained during onboarding with the tokenizer. + */ + @SerialName("access_token") + public val accessToken: String +) + +/** + * The base definition for any payment instrument. It links the instrument to a specific + * payment handler. + */ +@Serializable +public data class PaymentInstrument ( + /** + * The billing address associated with this payment method. + */ + @SerialName("billing_address") + public val billingAddress: BillingAddressClass? = null, + + public val credential: CredentialClass? = null, + + /** + * Display information for this payment instrument. Each payment instrument schema defines + * its specific display properties, as outlined by the payment handler. + */ + public val display: JsonObject? = null, + + /** + * The unique identifier for the handler instance that produced this instrument. This + * corresponds to the 'id' field in the Payment Handler definition. + */ + @SerialName("handler_id") + public val handlerID: String, + + /** + * A unique identifier for this instrument instance, assigned by the platform. + */ + public val id: String, + + /** + * The broad category of the instrument (e.g., 'card', 'tokenized_card'). Specific schemas + * will constrain this to a constant value. + */ + public val type: String +) + +/** + * Platform's fulfillment configuration. + */ +@Serializable +public data class PlatformFulfillmentConfig ( + /** + * Enables multiple groups per method. + */ + @SerialName("supports_multi_group") + public val supportsMultiGroup: Boolean? = null +) + +@Serializable +public data class PostalAddress ( + /** + * The country. Recommended to be in 2-letter ISO 3166-1 alpha-2 format, for example "US". + * For backward compatibility, a 3-letter ISO 3166-1 alpha-3 country code such as "SGP" or a + * full country name such as "Singapore" can also be used. + */ + @SerialName("address_country") + public val addressCountry: String? = null, + + /** + * The locality in which the street address is, and which is in the region. For example, + * Mountain View. + */ + @SerialName("address_locality") + public val addressLocality: String? = null, + + /** + * The region in which the locality is, and which is in the country. Required for applicable + * countries (i.e. state in US, province in CA). For example, California or another + * appropriate first-level Administrative division. + */ + @SerialName("address_region") + public val addressRegion: String? = null, + + /** + * An address extension such as an apartment number, C/O or alternative name. + */ + @SerialName("extended_address") + public val extendedAddress: String? = null, + + /** + * Optional. First name of the contact associated with the address. + */ + @SerialName("first_name") + public val firstName: String? = null, + + /** + * Optional. Last name of the contact associated with the address. + */ + @SerialName("last_name") + public val lastName: String? = null, + + /** + * Optional. Phone number of the contact associated with the address. + */ + @SerialName("phone_number") + public val phoneNumber: String? = null, + + /** + * The postal code. For example, 94043. + */ + @SerialName("postal_code") + public val postalCode: String? = null, + + /** + * The street address. + */ + @SerialName("street_address") + public val streetAddress: String? = null +) + +/** + * A pickup location (retail store, locker, etc.). + */ +@Serializable +public data class RetailLocation ( + /** + * Physical address of the location. + */ + public val address: BillingAddressClass? = null, + + /** + * Unique location identifier. + */ + public val id: String, + + /** + * Location name (e.g., store name). + */ + public val name: String +) + +/** + * Shipping destination. + * + * The billing address associated with this payment method. + * + * Delivery destination address. + * + * Physical address of the location. + */ +@Serializable +public data class ShippingDestination ( + /** + * The country. Recommended to be in 2-letter ISO 3166-1 alpha-2 format, for example "US". + * For backward compatibility, a 3-letter ISO 3166-1 alpha-3 country code such as "SGP" or a + * full country name such as "Singapore" can also be used. + */ + @SerialName("address_country") + public val addressCountry: String? = null, + + /** + * The locality in which the street address is, and which is in the region. For example, + * Mountain View. + */ + @SerialName("address_locality") + public val addressLocality: String? = null, + + /** + * The region in which the locality is, and which is in the country. Required for applicable + * countries (i.e. state in US, province in CA). For example, California or another + * appropriate first-level Administrative division. + */ + @SerialName("address_region") + public val addressRegion: String? = null, + + /** + * An address extension such as an apartment number, C/O or alternative name. + */ + @SerialName("extended_address") + public val extendedAddress: String? = null, + + /** + * Optional. First name of the contact associated with the address. + */ + @SerialName("first_name") + public val firstName: String? = null, + + /** + * Optional. Last name of the contact associated with the address. + */ + @SerialName("last_name") + public val lastName: String? = null, + + /** + * Optional. Phone number of the contact associated with the address. + */ + @SerialName("phone_number") + public val phoneNumber: String? = null, + + /** + * The postal code. For example, 94043. + */ + @SerialName("postal_code") + public val postalCode: String? = null, + + /** + * The street address. + */ + @SerialName("street_address") + public val streetAddress: String? = null, + + /** + * ID specific to this shipping destination. + */ + public val id: String +) + +/** + * Base token credential schema. Concrete payment handlers may extend this schema with + * additional fields and define their own constraints. + * + * The base definition for any payment credential. Handlers define specific credential types. + */ +@Serializable +public data class TokenCredential ( + /** + * The credential type discriminator. Specific schemas will constrain this to a constant + * value. + * + * The specific type of token produced by the handler (e.g., 'stripe_token'). + */ + public val type: String, + + /** + * The token value. + */ + public val token: String +) + +@Serializable +public data class Total ( + /** + * If type == total, sums subtotal - discount + fulfillment + tax + fee. Should be >= 0. + * Amount in minor (cents) currency units. + */ + public val amount: Long, + + /** + * Text to display against the amount. Should reflect appropriate method (e.g., 'Shipping', + * 'Delivery'). + */ + @SerialName("display_text") + public val displayText: String? = null, + + /** + * Type of total categorization. + */ + public val type: TotalType +) + +/** + * Payment configuration containing handlers. + */ +@Serializable +public data class Payment ( + /** + * The payment instruments available for this payment. Each instrument is associated with a + * specific handler via the handler_id field. Handlers can extend the base + * payment_instrument schema to add handler-specific fields. + */ + public val instruments: List? = null +) + +/** + * Order schema with immutable line items, buyer-facing fulfillment expectations, and + * append-only event logs. + */ +@Serializable +public data class Order ( + /** + * Append-only event log of money movements (refunds, returns, credits, disputes, + * cancellations, etc.) that exist independently of fulfillment. + */ + public val adjustments: List? = null, + + /** + * Associated checkout ID for reconciliation. + */ + @SerialName("checkout_id") + public val checkoutID: String, + + /** + * Fulfillment data: buyer expectations and what actually happened. + */ + public val fulfillment: FulfillmentClass, + + /** + * Unique order identifier. + */ + public val id: String, + + /** + * Immutable line items — source of truth for what was ordered. + */ + @SerialName("line_items") + public val lineItems: List, + + /** + * Permalink to access the order on merchant site. + */ + @SerialName("permalink_url") + public val permalinkURL: String, + + /** + * Different totals for the order. + */ + public val totals: List, + + public val ucp: UCPOrderResponseSchema +) + +/** + * Append-only event that exists independently of fulfillment. Typically represents money + * movements but can be any post-order change. Polymorphic type that can optionally + * reference line items. + */ +@Serializable +public data class AdjustmentElement ( + /** + * Amount in minor units (cents) for refunds, credits, price adjustments (optional). + */ + public val amount: Long? = null, + + /** + * Human-readable reason or description (e.g., 'Defective item', 'Customer requested'). + */ + public val description: String? = null, + + /** + * Adjustment event identifier. + */ + public val id: String, + + /** + * Which line items and quantities are affected (optional). + */ + @SerialName("line_items") + public val lineItems: List? = null, + + /** + * RFC 3339 timestamp when this adjustment occurred. + */ + @SerialName("occurred_at") + public val occurredAt: String, + + /** + * Adjustment status. + */ + public val status: AdjustmentStatus, + + /** + * Type of adjustment (open string). Typically money-related like: refund, return, credit, + * price_adjustment, dispute, cancellation. Can be any value that makes sense for the + * merchant's business. + */ + public val type: String +) + +@Serializable +public data class AdjustmentLineItemClass ( + /** + * Line item ID reference. + */ + public val id: String, + + /** + * Quantity affected by this adjustment. + */ + public val quantity: Long +) + +/** + * Fulfillment data: buyer expectations and what actually happened. + */ +@Serializable +public data class FulfillmentClass ( + /** + * Append-only event log of actual shipments. Each event references line items by ID. + */ + public val events: List? = null, + + /** + * Buyer-facing groups representing when/how items will be delivered. Can be split, merged, + * or adjusted post-order. + */ + public val expectations: List? = null +) + +/** + * Append-only fulfillment event representing an actual shipment. References line items by + * ID. + */ +@Serializable +public data class EventElement ( + /** + * Carrier name (e.g., 'FedEx', 'USPS'). + */ + public val carrier: String? = null, + + /** + * Human-readable description of the shipment status or delivery information (e.g., + * 'Delivered to front door', 'Out for delivery'). + */ + public val description: String? = null, + + /** + * Fulfillment event identifier. + */ + public val id: String, + + /** + * Which line items and quantities are fulfilled in this event. + */ + @SerialName("line_items") + public val lineItems: List, + + /** + * RFC 3339 timestamp when this fulfillment event occurred. + */ + @SerialName("occurred_at") + public val occurredAt: String, + + /** + * Carrier tracking number (required if type != processing). + */ + @SerialName("tracking_number") + public val trackingNumber: String? = null, + + /** + * URL to track this shipment (required if type != processing). + */ + @SerialName("tracking_url") + public val trackingURL: String? = null, + + /** + * Fulfillment event type. Common values include: processing (preparing to ship), shipped + * (handed to carrier), in_transit (in delivery network), delivered (received by buyer), + * failed_attempt (delivery attempt failed), canceled (fulfillment canceled), undeliverable + * (cannot be delivered), returned_to_sender (returned to merchant). + */ + public val type: String +) + +@Serializable +public data class EventLineItem ( + /** + * Line item ID reference. + */ + public val id: String, + + /** + * Quantity fulfilled in this event. + */ + public val quantity: Long +) + +/** + * Buyer-facing fulfillment expectation representing logical groupings of items (e.g., + * 'package'). Can be split, merged, or adjusted post-order to set buyer expectations for + * when/how items arrive. + */ +@Serializable +public data class ExpectationElement ( + /** + * Human-readable delivery description (e.g., 'Arrives in 5-8 business days'). + */ + public val description: String? = null, + + /** + * Delivery destination address. + */ + public val destination: BillingAddressClass, + + /** + * When this expectation can be fulfilled: 'now' or ISO 8601 timestamp for future date + * (backorder, pre-order). + */ + @SerialName("fulfillable_on") + public val fulfillableOn: String? = null, + + /** + * Expectation identifier. + */ + public val id: String, + + /** + * Which line items and quantities are in this expectation. + */ + @SerialName("line_items") + public val lineItems: List, + + /** + * Delivery method type (shipping, pickup, digital). + */ + @SerialName("method_type") + public val methodType: MethodType +) + +@Serializable +public data class ExpectationLineItemClass ( + /** + * Line item ID reference. + */ + public val id: String, + + /** + * Quantity of this item in this expectation. + */ + public val quantity: Long +) + +@Serializable +public data class LineItemElement ( + /** + * Line item identifier. + */ + public val id: String, + + /** + * Product data (id, title, price, image_url). + */ + public val item: ItemClass, + + /** + * Parent line item identifier for any nested structures. + */ + @SerialName("parent_id") + public val parentID: String? = null, + + /** + * Quantity tracking. Both total and fulfilled are derived from events. + */ + public val quantity: LineItemQuantity, + + /** + * Derived status: fulfilled if quantity.fulfilled == quantity.total, partial if + * quantity.fulfilled > 0, otherwise processing. + */ + public val status: OrderLineItemStatus, + + /** + * Line item totals breakdown. + */ + public val totals: List +) + +/** + * Quantity tracking. Both total and fulfilled are derived from events. + */ +@Serializable +public data class LineItemQuantity ( + /** + * Quantity fulfilled (sum from fulfillment events). + */ + public val fulfilled: Long, + + /** + * Current total quantity. + */ + public val total: Long +) + +/** + * UCP metadata for order responses. No payment handlers needed post-purchase. + * + * Base UCP metadata with shared properties for all schema types. + */ +@Serializable +public data class UCPOrderResponseSchema ( + /** + * Capability registry keyed by reverse-domain name. + */ + public val capabilities: Map>? = null, + + /** + * Payment handler registry keyed by reverse-domain name. + */ + @SerialName("payment_handlers") + public val paymentHandlers: Map>? = null, + + /** + * Service registry keyed by reverse-domain name. + */ + public val services: Map>? = null, + + public val version: String +) + +/** + * Shared foundation for all UCP entities. + */ +@Serializable +public data class Service ( + /** + * Entity-specific configuration. Structure defined by each entity's schema. + */ + public val config: JsonObject? = null, + + /** + * Unique identifier for this entity instance. Used to disambiguate when multiple instances + * exist. + */ + public val id: String? = null, + + /** + * URL to JSON Schema defining this entity's structure and payloads. + */ + public val schema: String? = null, + + /** + * URL to human-readable specification document. + */ + public val spec: String? = null, + + /** + * Entity version in YYYY-MM-DD format. + */ + public val version: String, + + /** + * Endpoint URL for this transport binding. + */ + public val endpoint: String? = null, + + /** + * Transport protocol for this service binding. + */ + public val transport: Transport +) + +/** + * Checkout state after instrument selection. + */ +@Serializable +public data class InstrumentsChangeResult ( + /** + * Partial checkout update with payment instrument selection. + */ + public val checkout: InstrumentsChangeCheckout +) + +/** + * Partial checkout update with payment instrument selection. + */ +@Serializable +public data class InstrumentsChangeCheckout ( + public val payment: InstrumentsChangePayment? = null +) + +@Serializable +public data class InstrumentsChangePayment ( + public val instruments: List? = null, + + /** + * ID of the selected payment instrument. + */ + @SerialName("selected_instrument_id") + public val selectedInstrumentID: String? = null +) + +/** + * Checkout state with payment credential ready for completion. + */ +@Serializable +public data class CredentialResult ( + /** + * Partial checkout update with payment credential. + */ + public val checkout: CredentialCheckout +) + +/** + * Partial checkout update with payment credential. + */ +@Serializable +public data class CredentialCheckout ( + public val payment: CredentialPayment? = null +) + +@Serializable +public data class CredentialPayment ( + public val instruments: List? = null +) diff --git a/android/lib/src/main/java/com/shopify/checkoutkit/ShopifyCheckoutKit.kt b/android/lib/src/main/java/com/shopify/checkoutkit/ShopifyCheckoutKit.kt index 4a602c34..f01dffb1 100644 --- a/android/lib/src/main/java/com/shopify/checkoutkit/ShopifyCheckoutKit.kt +++ b/android/lib/src/main/java/com/shopify/checkoutkit/ShopifyCheckoutKit.kt @@ -125,13 +125,19 @@ public object ShopifyCheckoutKit { * @param context The context the checkout is being presented from * @param checkoutEventProcessor provides callbacks to allow clients to listen for and respond to checkout lifecycle events such as * (failure, completion, cancellation, external link clicks). + * @param communicationClient optional handler for Embedded Checkout Protocol (ECP) messages. + * Implement [CheckoutCommunicationClient] to intercept arbitrary ECP messages from the checkout + * web page. Built-in messages ([ec.ready][EmbeddedCheckoutProtocol.METHOD_READY] and + * [ec.start][EmbeddedCheckoutProtocol.METHOD_START]) are handled automatically by the SDK. * @return An instance of [CheckoutKitDialog] if the dialog was successfully created and displayed. */ + @JvmOverloads @JvmStatic public fun present( checkoutUrl: String, context: ComponentActivity, - checkoutEventProcessor: T + checkoutEventProcessor: T, + communicationClient: CheckoutCommunicationClient? = null, ): CheckoutKitDialog? { log.d("ShopifyCheckoutKit", "Present called with checkoutUrl $checkoutUrl.") if (context.isDestroyed || context.isFinishing) { @@ -139,7 +145,7 @@ public object ShopifyCheckoutKit { return null } log.d("ShopifyCheckoutKit", "Constructing Dialog") - val dialog = CheckoutDialog(checkoutUrl, checkoutEventProcessor, context) + val dialog = CheckoutDialog(checkoutUrl, checkoutEventProcessor, context, communicationClient) context.lifecycle.addObserver(object : DefaultLifecycleObserver { override fun onDestroy(owner: LifecycleOwner) { log.d("ShopifyCheckoutKit", "Context is being destroyed, dismissing dialog.") diff --git a/android/lib/src/test/java/com/shopify/checkoutkit/CheckoutBridgeTest.kt b/android/lib/src/test/java/com/shopify/checkoutkit/CheckoutBridgeTest.kt index b96611c3..95f1566c 100644 --- a/android/lib/src/test/java/com/shopify/checkoutkit/CheckoutBridgeTest.kt +++ b/android/lib/src/test/java/com/shopify/checkoutkit/CheckoutBridgeTest.kt @@ -22,7 +22,6 @@ */ package com.shopify.checkoutkit -import android.webkit.WebView import com.shopify.checkoutkit.CheckoutBridge.CheckoutWebOperation.COMPLETED import com.shopify.checkoutkit.CheckoutBridge.CheckoutWebOperation.MODAL import com.shopify.checkoutkit.pixelevents.PixelEvent @@ -33,15 +32,12 @@ import org.assertj.core.api.Assertions.assertThat import org.junit.Before import org.junit.Test import org.junit.runner.RunWith -import org.mockito.Mockito import org.mockito.kotlin.any import org.mockito.kotlin.argumentCaptor -import org.mockito.kotlin.eq import org.mockito.kotlin.mock import org.mockito.kotlin.timeout import org.mockito.kotlin.verify import org.mockito.kotlin.verifyNoInteractions -import org.mockito.kotlin.whenever import org.robolectric.RobolectricTestRunner @RunWith(RobolectricTestRunner::class) @@ -93,70 +89,6 @@ class CheckoutBridgeTest { verifyNoInteractions(mockEventProcessor) } - @Test - fun `sendMessage evaluates javascript on the provided WebView`() { - val webView = mock() - checkoutBridge.sendMessage(webView, CheckoutBridge.SDKOperation.Presented) - - verify(webView).evaluateJavascript( - """| - |if (window.MobileCheckoutSdk && window.MobileCheckoutSdk.dispatchMessage) { - | window.MobileCheckoutSdk.dispatchMessage('presented'); - |} else { - | window.addEventListener('mobileCheckoutBridgeReady', function () { - | window.MobileCheckoutSdk.dispatchMessage('presented'); - | }, {passive: true, once: true}); - |} - | - """.trimMargin(), - null - ) - } - - @Test - fun `sendMessage returns error if evaluating javascript fails`() { - val webView = mock() - whenever(webView.evaluateJavascript(any(), eq(null))).thenThrow(RuntimeException("something went wrong")) - - checkoutBridge.sendMessage(webView, CheckoutBridge.SDKOperation.Presented) - - val errorCaptor = argumentCaptor() - verify(mockEventProcessor).onCheckoutViewFailedWithError(errorCaptor.capture()) - - val error = errorCaptor.firstValue - assertThat(error.message).isEqualTo( - "Failed to send 'presented' message to checkout, some features may not work." - ) - assertThat(error.isRecoverable).isTrue() - assertThat(error.errorCode).isEqualTo(CheckoutKitException.ERROR_SENDING_MESSAGE_TO_CHECKOUT) - } - - @Test - fun `instrumentation sends message to the bridge`() { - val webView = mock() - val payload = InstrumentationPayload( - name = "Test", - value = 123L, - type = InstrumentationType.histogram, - tags = mapOf("tag1" to "value1", "tag2" to "value2") - ) - val expectedPayload = """{"detail":{"name":"Test","value":123,"type":"histogram","tags":{"tag1":"value1","tag2":"value2"}}}""" - val expectedJavascript = """| - |if (window.MobileCheckoutSdk && window.MobileCheckoutSdk.dispatchMessage) { - | window.MobileCheckoutSdk.dispatchMessage('instrumentation', $expectedPayload); - |} else { - | window.addEventListener('mobileCheckoutBridgeReady', function () { - | window.MobileCheckoutSdk.dispatchMessage('instrumentation', $expectedPayload); - | }, {passive: true, once: true}); - |} - | - """.trimMargin() - - checkoutBridge.sendMessage(webView, CheckoutBridge.SDKOperation.Instrumentation(payload)) - - Mockito.verify(webView).evaluateJavascript(expectedJavascript, null) - } - @Test fun `calls onPixelEvent when valid webPixels event received`() { val eventString = """| diff --git a/android/lib/src/test/java/com/shopify/checkoutkit/CheckoutProtocolTest.kt b/android/lib/src/test/java/com/shopify/checkoutkit/CheckoutProtocolTest.kt new file mode 100644 index 00000000..cbf469a2 --- /dev/null +++ b/android/lib/src/test/java/com/shopify/checkoutkit/CheckoutProtocolTest.kt @@ -0,0 +1,278 @@ +/* + * MIT License + * + * Copyright 2023-present, Shopify Inc. + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in all + * copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + */ +package com.shopify.checkoutkit + +import android.net.Uri +import android.os.Looper +import org.assertj.core.api.Assertions.assertThat +import org.junit.Test +import org.junit.runner.RunWith +import org.robolectric.RobolectricTestRunner +import org.robolectric.Shadows.shadowOf + +@RunWith(RobolectricTestRunner::class) +class CheckoutProtocolTest { + + // region NotificationDescriptor + + @Test + fun `start descriptor has correct method`() { + assertThat(CheckoutProtocol.start.method).isEqualTo("ec.start") + } + + @Test + fun `complete descriptor has correct method`() { + assertThat(CheckoutProtocol.complete.method).isEqualTo("ec.complete") + } + + @Test + fun `messagesChange descriptor has correct method`() { + assertThat(CheckoutProtocol.messagesChange.method).isEqualTo("ec.messages.change") + } + + @Test + fun `lineItemsChange descriptor has correct method`() { + assertThat(CheckoutProtocol.lineItemsChange.method).isEqualTo("ec.line_items.change") + } + + @Test + fun `buyerChange descriptor has correct method`() { + assertThat(CheckoutProtocol.buyerChange.method).isEqualTo("ec.buyer.change") + } + + @Test + fun `paymentChange descriptor has correct method`() { + assertThat(CheckoutProtocol.paymentChange.method).isEqualTo("ec.payment.change") + } + + @Test + fun `ready descriptor has correct method`() { + assertThat(CheckoutProtocol.ready.method).isEqualTo("ec.ready") + } + + // endregion + + // region process — notification dispatch + + @Test + fun `process dispatches ec start to registered handler on main thread`() { + val received = mutableListOf() + val client = CheckoutProtocol.Client() + .on(CheckoutProtocol.start) { checkout -> received.add(checkout) } + + client.process(ecStartMessage(currency = "USD")) + shadowOf(Looper.getMainLooper()).runToEndOfTasks() + + assertThat(received).hasSize(1) + assertThat(received[0].currency).isEqualTo("USD") + } + + @Test + fun `process dispatches ec complete to registered handler`() { + val received = mutableListOf() + val client = CheckoutProtocol.Client() + .on(CheckoutProtocol.complete) { checkout -> received.add(checkout) } + + client.process(ecCompleteMessage()) + shadowOf(Looper.getMainLooper()).runToEndOfTasks() + + assertThat(received).hasSize(1) + } + + @Test + fun `process does not dispatch to unregistered method`() { + val received = mutableListOf() + val client = CheckoutProtocol.Client() + .on(CheckoutProtocol.complete) { checkout -> received.add(checkout) } + + client.process(ecStartMessage()) + shadowOf(Looper.getMainLooper()).runToEndOfTasks() + + assertThat(received).isEmpty() + } + + @Test + fun `process dispatches ready notification with correct delegations`() { + val received = mutableListOf() + val client = CheckoutProtocol.Client() + .on(CheckoutProtocol.ready) { payload -> received.add(payload) } + + val delegate = """["payment.instruments_change","fulfillment.address_change"]""" + val message = """{"jsonrpc":"2.0","method":"ec.ready","id":"1","params":{"delegate":$delegate}}""" + client.process(message) + shadowOf(Looper.getMainLooper()).runToEndOfTasks() + + assertThat(received).hasSize(1) + assertThat(received[0].delegations).containsExactly( + "payment.instruments_change", + "fulfillment.address_change" + ) + } + + @Test + fun `process dispatches ready with empty delegations when delegate is absent`() { + val received = mutableListOf() + val client = CheckoutProtocol.Client() + .on(CheckoutProtocol.ready) { payload -> received.add(payload) } + + val message = """{"jsonrpc":"2.0","method":"ec.ready","id":"1","params":{}}""" + client.process(message) + shadowOf(Looper.getMainLooper()).runToEndOfTasks() + + assertThat(received).hasSize(1) + assertThat(received[0].delegations).isEmpty() + } + + // endregion + + // region process — always returns null + + @Test + fun `process always returns null`() { + val client = CheckoutProtocol.Client() + .on(CheckoutProtocol.start) { /* no-op */ } + + assertThat(client.process(ecStartMessage())).isNull() + } + + @Test + fun `process returns null for unknown method`() { + val client = CheckoutProtocol.Client() + assertThat(client.process("""{"jsonrpc":"2.0","method":"unknown.method","params":{}}""")).isNull() + } + + @Test + fun `process returns null for malformed JSON`() { + val client = CheckoutProtocol.Client() + assertThat(client.process("not valid json {{{")).isNull() + } + + // endregion + + // region process — message without checkout in params + + @Test + fun `process does not dispatch when params has no checkout field`() { + val received = mutableListOf() + val client = CheckoutProtocol.Client() + .on(CheckoutProtocol.start) { checkout -> received.add(checkout) } + + client.process("""{"jsonrpc":"2.0","method":"ec.start","params":{"other":"value"}}""") + shadowOf(Looper.getMainLooper()).runToEndOfTasks() + + assertThat(received).isEmpty() + } + + // endregion + + // region value semantics + + @Test + fun `on returns new client leaving original unchanged`() { + val base = CheckoutProtocol.Client() + val received = mutableListOf() + val withHandler = base.on(CheckoutProtocol.start) { checkout -> received.add(checkout) } + + // base client should not dispatch + base.process(ecStartMessage()) + shadowOf(Looper.getMainLooper()).runToEndOfTasks() + assertThat(received).isEmpty() + + // withHandler client should dispatch + withHandler.process(ecStartMessage()) + shadowOf(Looper.getMainLooper()).runToEndOfTasks() + assertThat(received).hasSize(1) + } + + @Test + fun `onOpenExternalUrl returns new client leaving original unchanged`() { + val uri = Uri.parse("https://example.com") + val base = CheckoutProtocol.Client() + val withHandler = base.onOpenExternalUrl { true } + + assertThat(base.openExternalUrl(uri)).isFalse() + assertThat(withHandler.openExternalUrl(uri)).isTrue() + } + + // endregion + + // region openExternalUrl + + @Test + fun `openExternalUrl returns false when no handler registered`() { + val client = CheckoutProtocol.Client() + assertThat(client.openExternalUrl(Uri.parse("https://example.com"))).isFalse() + } + + @Test + fun `openExternalUrl delegates to registered handler`() { + val seen = mutableListOf() + val client = CheckoutProtocol.Client() + .onOpenExternalUrl { uri -> + seen.add(uri) + true + } + + val uri = Uri.parse("https://shop.example.com/page") + val result = client.openExternalUrl(uri) + + assertThat(result).isTrue() + assertThat(seen).containsExactly(uri) + } + + @Test + fun `openExternalUrl respects handler returning false`() { + val client = CheckoutProtocol.Client().onOpenExternalUrl { false } + assertThat(client.openExternalUrl(Uri.parse("https://example.com"))).isFalse() + } + + // endregion + + // region specVersion + + @Test + fun `specVersion is non-empty`() { + assertThat(CheckoutProtocol.specVersion).isNotEmpty() + } + + // endregion + + // region helpers + + private fun ecStartMessage(currency: String = "USD"): String = + """{"jsonrpc":"2.0","method":"ec.start","params":{"checkout":${checkoutJson(currency = currency)}}}""" + + private fun ecCompleteMessage(): String = + """{"jsonrpc":"2.0","method":"ec.complete","params":{"checkout":${checkoutJson(status = "completed")}}}""" + + private fun checkoutJson( + id: String = "chk1", + currency: String = "USD", + status: String = "incomplete", + ): String { + val ucp = """{"payment_handlers":{},"version":"1.0"}""" + return """{"id":"$id","currency":"$currency","status":"$status","line_items":[],"totals":[],"links":[],"ucp":$ucp}""" + } + + // endregion +} diff --git a/android/lib/src/test/java/com/shopify/checkoutkit/CheckoutWebViewTest.kt b/android/lib/src/test/java/com/shopify/checkoutkit/CheckoutWebViewTest.kt index 8e78ee60..15b8cb04 100644 --- a/android/lib/src/test/java/com/shopify/checkoutkit/CheckoutWebViewTest.kt +++ b/android/lib/src/test/java/com/shopify/checkoutkit/CheckoutWebViewTest.kt @@ -37,17 +37,13 @@ import org.junit.After import org.junit.Before import org.junit.Test import org.junit.runner.RunWith -import org.mockito.ArgumentMatchers.contains -import org.mockito.ArgumentMatchers.eq import org.mockito.Mockito.mock -import org.mockito.Mockito.spy -import org.mockito.Mockito.verify +import org.mockito.kotlin.verify import org.mockito.kotlin.whenever import org.robolectric.Robolectric import org.robolectric.RobolectricTestRunner import org.robolectric.Shadows.shadowOf import org.robolectric.shadows.ShadowLooper -import java.util.regex.Pattern @RunWith(RobolectricTestRunner::class) class CheckoutWebViewTest { @@ -84,52 +80,20 @@ class CheckoutWebViewTest { } @Test - fun `user agent suffix includes ShopifyCheckoutSDK and version number`() { - ShopifyCheckoutKit.configuration.colorScheme = ColorScheme.Dark() + fun `user agent suffix contains ShopifyCheckoutKit version and android platform`() { val view = CheckoutWebView.cacheableCheckoutView(URL, activity) - assertThat(view.settings.userAgentString).contains("ShopifyCheckoutSDK/${BuildConfig.SDK_VERSION} ") + assertThat(view.settings.userAgentString).contains("ShopifyCheckoutKit/") + assertThat(view.settings.userAgentString).contains(" android") } @Test - fun `user agent suffix includes metadata for the schema version, theme, and variant - dark`() { - ShopifyCheckoutKit.configuration.colorScheme = ColorScheme.Dark() - val view = CheckoutWebView.cacheableCheckoutView(URL, activity) - - assertThat(view.settings.userAgentString).endsWith("(8.1;dark;standard)") - } - - @Test - fun `user agent suffix includes metadata for the schema version, theme, and variant - light`() { - ShopifyCheckoutKit.configuration.colorScheme = ColorScheme.Light() - val view = CheckoutWebView.cacheableCheckoutView(URL, activity) - - assertThat(view.settings.userAgentString).endsWith("(8.1;light;standard)") - } - - @Test - fun `user agent suffix includes metadata for the schema version, theme, and variant - web`() { - ShopifyCheckoutKit.configuration.colorScheme = ColorScheme.Web() - val view = CheckoutWebView.cacheableCheckoutView(URL, activity) - - assertThat(view.settings.userAgentString).endsWith("(8.1;web_default;standard)") - } - - @Test - fun `user agent suffix includes metadata for the schema version, theme, and variant - automatic`() { - ShopifyCheckoutKit.configuration.colorScheme = ColorScheme.Automatic() - val view = CheckoutWebView.cacheableCheckoutView(URL, activity) - - assertThat(view.settings.userAgentString).endsWith("(8.1;automatic;standard)") - } - - @Test - fun `user agent suffix includes platform if specified`() { - ShopifyCheckoutKit.configuration.colorScheme = ColorScheme.Automatic() + fun `user agent suffix appends platform displayName when set`() { ShopifyCheckoutKit.configuration.platform = Platform.REACT_NATIVE val view = CheckoutWebView.cacheableCheckoutView(URL, activity) - assertThat(view.settings.userAgentString).endsWith("(8.1;automatic;standard) ReactNative") + assertThat(view.settings.userAgentString) + .endsWith("ShopifyCheckoutKit/${ShopifyCheckoutKit.version} android ReactNative") } @Test @@ -145,40 +109,6 @@ class CheckoutWebViewTest { } } - @Test - fun `records checkout_finished_loading instrumentation event on page finished - preloading`() { - withPreloadingEnabled { - val isPreload = true - val view = CheckoutWebView.cacheableCheckoutView(URL, activity, isPreload) - val shadow = shadowOf(view) - shadow.webViewClient.onPageFinished(view, URL) - - val regex = Pattern.compile( - @Suppress("MaxLineLength") - """.*\.dispatchMessage\('instrumentation', \{"detail":\{"name":"checkout_finished_loading","value":\d*,"type":"histogram","tags":\{"preloading":"true"}}}\).*""", - Pattern.DOTALL - ) - assertThat(shadow.lastEvaluatedJavascript).matches(regex) - } - } - - @Test - fun `records checkout_finished_loading instrumentation event on page finished - presenting`() { - withPreloadingEnabled { - val isPreload = false - val view = CheckoutWebView.cacheableCheckoutView(URL, activity, isPreload) - val shadow = shadowOf(view) - shadow.webViewClient.onPageFinished(view, URL) - - val regex = Pattern.compile( - @Suppress("MaxLineLength") - """.*\.dispatchMessage\('instrumentation', \{"detail":\{"name":"checkout_finished_loading","value":\d*,"type":"histogram","tags":\{"preloading":"false"}}}\).*""", - Pattern.DOTALL - ) - assertThat(shadow.lastEvaluatedJavascript).matches(regex) - } - } - @Test fun `does not send prefetch header for preloads`() { val isPreload = false @@ -211,22 +141,6 @@ class CheckoutWebViewTest { assertThat(shadow.getJavascriptInterface("android")).isNull() } - @Test - fun `sends presented message each time when view is loaded if it has been presented`() { - val view = CheckoutWebView.cacheableCheckoutView(URL, activity) - - val shadow = shadowOf(view) - shadow.webViewClient.onPageFinished(view, "https://anything") - - val spy = spy(view) - spy.notifyPresented() - - verify(spy).evaluateJavascript( - contains("window.MobileCheckoutSdk.dispatchMessage('presented');"), - eq(null) - ) - } - @Test fun `calls update progress when new progress is reported by WebChromeClient`() { val view = CheckoutWebView.cacheableCheckoutView(URL, activity) diff --git a/android/lib/src/test/java/com/shopify/checkoutkit/EmbeddedCheckoutProtocolTest.kt b/android/lib/src/test/java/com/shopify/checkoutkit/EmbeddedCheckoutProtocolTest.kt new file mode 100644 index 00000000..ddf076ea --- /dev/null +++ b/android/lib/src/test/java/com/shopify/checkoutkit/EmbeddedCheckoutProtocolTest.kt @@ -0,0 +1,442 @@ +/* + * MIT License + * + * Copyright 2023-present, Shopify Inc. + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in all + * copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + */ +package com.shopify.checkoutkit + +import android.net.Uri +import android.os.Looper +import androidx.activity.ComponentActivity +import org.assertj.core.api.Assertions.assertThat +import org.junit.Before +import org.junit.Test +import org.junit.runner.RunWith +import org.mockito.Mockito +import org.mockito.kotlin.any +import org.mockito.kotlin.argumentCaptor +import org.mockito.kotlin.isNull +import org.mockito.kotlin.mock +import org.mockito.kotlin.never +import org.mockito.kotlin.verify +import org.mockito.kotlin.whenever +import org.robolectric.Robolectric +import org.robolectric.RobolectricTestRunner +import org.robolectric.Shadows.shadowOf + +@RunWith(RobolectricTestRunner::class) +class EmbeddedCheckoutProtocolTest { + + private lateinit var activity: ComponentActivity + private lateinit var viewSpy: CheckoutWebView + private lateinit var mockEventProcessor: CheckoutWebViewEventProcessor + private lateinit var ecp: EmbeddedCheckoutProtocol + + @Before + fun setUp() { + CheckoutWebView.clearCache() + shadowOf(Looper.getMainLooper()).runToEndOfTasks() + + activity = Robolectric.buildActivity(ComponentActivity::class.java).setup().get() + viewSpy = Mockito.spy(CheckoutWebView(activity)) + mockEventProcessor = mock() + whenever(viewSpy.getEventProcessor()).thenReturn(mockEventProcessor) + ecp = EmbeddedCheckoutProtocol(viewSpy) + } + + // region ec.ready + + @Test + fun `ec ready sends UCP success ACK`() { + val js = captureEvaluatedJs { + ecp.postMessage(ecReadyMessage()) + } + assertThat(js).contains("\"result\"") + assertThat(js).contains("\"ucp\"") + assertThat(js).contains("\"status\":\"success\"") + assertThat(js).doesNotContain("\"error\"") + } + + @Test + fun `ec ready ACK echoes string request id`() { + val js = captureEvaluatedJs { + ecp.postMessage(ecReadyMessage(id = "\"req-42\"")) + } + assertThat(js).contains("\"id\":\"req-42\"") + } + + @Test + fun `ec ready ACK echoes numeric id`() { + val js = captureEvaluatedJs { + ecp.postMessage("""{"jsonrpc":"2.0","method":"ec.ready","id":7,"params":{"delegate":[]}}""") + } + assertThat(js).contains("\"id\":7") + } + + @Test + fun `ec ready response dispatches via window EmbeddedCheckoutProtocol`() { + val js = captureEvaluatedJs { + ecp.postMessage(ecReadyMessage()) + } + assertThat(js).contains("window.EmbeddedCheckoutProtocol") + assertThat(js).contains(".postMessage(") + } + + // endregion + + // region unsupported methods — explicit error response + + @Test + fun `ec auth sends method not supported error`() { + val js = captureEvaluatedJs { + ecp.postMessage("""{"jsonrpc":"2.0","method":"ec.auth","id":"1","params":{"type":"oauth"}}""") + } + assertThat(js).contains("\"error\"") + assertThat(js).contains("-32601") + } + + @Test + fun `ec auth does not invoke client`() { + val client = mock() + ecp.setClient(client) + ecp.postMessage("""{"jsonrpc":"2.0","method":"ec.auth","id":"1","params":{"type":"oauth"}}""") + verify(client, never()).process(any()) + } + + @Test + fun `ec payment instruments change request sends method not supported error`() { + val js = captureEvaluatedJs { + ecp.postMessage( + """{"jsonrpc":"2.0","method":"ec.payment.instruments_change_request","id":"2","params":{}}""" + ) + } + assertThat(js).contains("\"error\"") + assertThat(js).contains("-32601") + } + + @Test + fun `ec payment credential request sends method not supported error`() { + val js = captureEvaluatedJs { + ecp.postMessage( + """{"jsonrpc":"2.0","method":"ec.payment.credential_request","id":"3","params":{}}""" + ) + } + assertThat(js).contains("\"error\"") + assertThat(js).contains("-32601") + } + + @Test + fun `ec fulfillment address change request sends method not supported error`() { + val js = captureEvaluatedJs { + ecp.postMessage( + """{"jsonrpc":"2.0","method":"ec.fulfillment.address_change_request","id":"4","params":{}}""" + ) + } + assertThat(js).contains("\"error\"") + assertThat(js).contains("-32601") + } + + @Test + fun `ep cart methods are silently ignored and not delegated to client`() { + val client = mock() + ecp.setClient(client) + + ecp.postMessage("""{"jsonrpc":"2.0","method":"ep.cart.ready","id":"5","params":{}}""") + shadowOf(Looper.getMainLooper()).runToEndOfTasks() + + verify(viewSpy, never()).evaluateJavascript(any(), any()) + verify(client, never()).process(any()) + } + + // endregion + + // region ec.window.open_request + + @Test + fun `ec window open request calls openExternalUrl on client with parsed uri`() { + val client = mock() + whenever(client.openExternalUrl(any())).thenReturn(true) + ecp.setClient(client) + + ecp.postMessage( + """{"jsonrpc":"2.0","method":"ec.window.open_request","id":"5","params":{"url":"https://example.com/page"}}""" + ) + shadowOf(Looper.getMainLooper()).runToEndOfTasks() + + val captor = argumentCaptor() + verify(client).openExternalUrl(captor.capture()) + assertThat(captor.firstValue.toString()).isEqualTo("https://example.com/page") + } + + @Test + fun `ec window open request sends UCP success result when client returns true`() { + val client = mock() + whenever(client.openExternalUrl(any())).thenReturn(true) + ecp.setClient(client) + + val js = captureEvaluatedJs { + ecp.postMessage( + """{"jsonrpc":"2.0","method":"ec.window.open_request","id":"5","params":{"url":"https://example.com"}}""" + ) + } + assertThat(js).contains("\"result\"") + assertThat(js).contains("\"ucp\"") + assertThat(js).contains("\"status\":\"success\"") + assertThat(js).doesNotContain("\"error\"") + } + + @Test + fun `ec window open request falls back to event processor when client returns false`() { + val client = mock() + whenever(client.openExternalUrl(any())).thenReturn(false) + ecp.setClient(client) + + val js = captureEvaluatedJs { + ecp.postMessage( + """{"jsonrpc":"2.0","method":"ec.window.open_request","id":"6","params":{"url":"https://example.com"}}""" + ) + } + shadowOf(Looper.getMainLooper()).runToEndOfTasks() + + assertThat(js).contains("\"result\"") + assertThat(js).contains("\"ucp\"") + assertThat(js).contains("\"status\":\"success\"") + assertThat(js).doesNotContain("\"error\"") + verify(mockEventProcessor).onCheckoutViewLinkClicked(Uri.parse("https://example.com")) + } + + @Test + fun `ec window open request falls back to event processor when no client is set`() { + val js = captureEvaluatedJs { + ecp.postMessage( + """{"jsonrpc":"2.0","method":"ec.window.open_request","id":"7","params":{"url":"https://example.com"}}""" + ) + } + shadowOf(Looper.getMainLooper()).runToEndOfTasks() + + assertThat(js).contains("\"result\"") + assertThat(js).contains("\"ucp\"") + assertThat(js).contains("\"status\":\"success\"") + assertThat(js).doesNotContain("\"error\"") + verify(mockEventProcessor).onCheckoutViewLinkClicked(Uri.parse("https://example.com")) + } + + @Test + fun `ec window open request does not call event processor when client handles it`() { + val client = mock() + whenever(client.openExternalUrl(any())).thenReturn(true) + ecp.setClient(client) + + ecp.postMessage( + """{"jsonrpc":"2.0","method":"ec.window.open_request","id":"8","params":{"url":"https://example.com"}}""" + ) + shadowOf(Looper.getMainLooper()).runToEndOfTasks() + + verify(mockEventProcessor, never()).onCheckoutViewLinkClicked(any()) + } + + @Test + fun `ec window open request rejects non-http schemes`() { + val client = mock() + ecp.setClient(client) + + val js = captureEvaluatedJs { + ecp.postMessage( + """{"jsonrpc":"2.0","method":"ec.window.open_request","id":"8","params":{"url":"intent://evil"}}""" + ) + } + assertThat(js).contains("\"error\"") + assertThat(js).contains("-32602") + verify(client, never()).openExternalUrl(any()) + } + + // endregion + + // region ec.start + + @Test + fun `ec start shows progress bar`() { + ecp.postMessage("""{"jsonrpc":"2.0","method":"ec.start","params":{"checkout":{}}}""") + shadowOf(Looper.getMainLooper()).runToEndOfTasks() + verify(mockEventProcessor).onCheckoutViewLoadStarted() + } + + @Test + fun `ec start bubbles up to client`() { + val rawMessage = """{"jsonrpc":"2.0","method":"ec.start","params":{"checkout":{}}}""" + val client = mock() + ecp.setClient(client) + + ecp.postMessage(rawMessage) + shadowOf(Looper.getMainLooper()).runToEndOfTasks() + + verify(client).process(rawMessage) + } + + @Test + fun `ec start sends no response to checkout`() { + val client = mock() + whenever(client.process(any())).thenReturn(null) + ecp.setClient(client) + + ecp.postMessage("""{"jsonrpc":"2.0","method":"ec.start","params":{"checkout":{}}}""") + shadowOf(Looper.getMainLooper()).runToEndOfTasks() + + verify(viewSpy, never()).evaluateJavascript(any(), any()) + } + + // endregion + + // region delegated notifications + + @Test + fun `ec error is delegated to client`() { + val rawMessage = """{"jsonrpc":"2.0","method":"ec.error","params":{"error":{"code":-1,"message":"fail"}}}""" + val client = mock() + ecp.setClient(client) + + ecp.postMessage(rawMessage) + shadowOf(Looper.getMainLooper()).runToEndOfTasks() + + verify(client).process(rawMessage) + } + + @Test + fun `ec complete is delegated to client`() { + val rawMessage = """{"jsonrpc":"2.0","method":"ec.complete","params":{"checkout":{}}}""" + val client = mock() + ecp.setClient(client) + + ecp.postMessage(rawMessage) + shadowOf(Looper.getMainLooper()).runToEndOfTasks() + + verify(client).process(rawMessage) + } + + @Test + fun `ec payment change is delegated to client`() { + val rawMessage = """{"jsonrpc":"2.0","method":"ec.payment.change","params":{"checkout":{}}}""" + val client = mock() + ecp.setClient(client) + + ecp.postMessage(rawMessage) + shadowOf(Looper.getMainLooper()).runToEndOfTasks() + + verify(client).process(rawMessage) + } + + // endregion + + // region client delegation — requests + + @Test + fun `unknown method is delegated to client`() { + val rawMessage = """{"jsonrpc":"2.0","method":"customMethod","id":"8","params":{}}""" + val client = mock() + whenever(client.process(rawMessage)).thenReturn(null) + ecp.setClient(client) + + ecp.postMessage(rawMessage) + shadowOf(Looper.getMainLooper()).runToEndOfTasks() + + verify(client).process(rawMessage) + } + + @Test + fun `non-null client response is sent back to checkout`() { + val rawMessage = """{"jsonrpc":"2.0","method":"customMethod","id":"9"}""" + val clientResponse = """{"jsonrpc":"2.0","id":"9","result":{"data":"ok"}}""" + val client = mock() + whenever(client.process(rawMessage)).thenReturn(clientResponse) + ecp.setClient(client) + + val js = captureEvaluatedJs { ecp.postMessage(rawMessage) } + + assertThat(js).contains("window.EmbeddedCheckoutProtocol") + assertThat(js).contains(".postMessage(") + assertThat(js).contains("ok") + } + + @Test + fun `null client response sends nothing to checkout`() { + val rawMessage = """{"jsonrpc":"2.0","method":"customMethod","id":"10"}""" + val client = mock() + whenever(client.process(rawMessage)).thenReturn(null) + ecp.setClient(client) + + ecp.postMessage(rawMessage) + shadowOf(Looper.getMainLooper()).runToEndOfTasks() + + verify(viewSpy, never()).evaluateJavascript(any(), any()) + } + + @Test + fun `unknown method with no client sends nothing to checkout`() { + ecp.postMessage("""{"jsonrpc":"2.0","method":"unknownMethod","id":"11"}""") + shadowOf(Looper.getMainLooper()).runToEndOfTasks() + + verify(viewSpy, never()).evaluateJavascript(any(), any()) + } + + // endregion + + // region malformed input + + @Test + fun `malformed JSON sends parse error`() { + val js = captureEvaluatedJs { + ecp.postMessage("not valid json {{{") + } + assertThat(js).contains("\"error\"") + assertThat(js).contains("-32700") + } + + @Test + fun `message missing method field sends parse error`() { + val js = captureEvaluatedJs { + ecp.postMessage("""{"jsonrpc":"2.0","id":"12"}""") + } + assertThat(js).contains("\"error\"") + assertThat(js).contains("-32700") + } + + // endregion + + // region helpers + + private fun ecReadyMessage(id: String = "\"1\""): String { + val params = """{"delegate":["fulfillment.address_change","payment.instruments_change"]}""" + return """{"jsonrpc":"2.0","method":"ec.ready","id":$id,"params":$params}""" + } + + /** + * Runs [block], drains the main-thread queue, captures the first JS string + * passed to [CheckoutWebView.evaluateJavascript]. + */ + private fun captureEvaluatedJs(block: () -> Unit): String { + block() + shadowOf(Looper.getMainLooper()).runToEndOfTasks() + val captor = argumentCaptor() + verify(viewSpy).evaluateJavascript(captor.capture(), isNull()) + return captor.firstValue + } + + // endregion +} diff --git a/android/lib/src/test/java/com/shopify/checkoutkit/FallbackWebViewTest.kt b/android/lib/src/test/java/com/shopify/checkoutkit/FallbackWebViewTest.kt index 606453a4..f7191e67 100644 --- a/android/lib/src/test/java/com/shopify/checkoutkit/FallbackWebViewTest.kt +++ b/android/lib/src/test/java/com/shopify/checkoutkit/FallbackWebViewTest.kt @@ -64,57 +64,11 @@ class FallbackWebViewTest { } @Test - fun `user agent suffix includes ShopifyCheckoutSDK and version number`() { - ShopifyCheckoutKit.configuration.colorScheme = ColorScheme.Dark() + fun `user agent suffix contains ShopifyCheckoutKit version and android platform`() { Robolectric.buildActivity(ComponentActivity::class.java).use { activityController -> val view = FallbackWebView(activityController.get()) - assertThat(view.settings.userAgentString).contains("ShopifyCheckoutSDK/${BuildConfig.SDK_VERSION} ") - } - } - - @Test - fun `user agent suffix includes metadata for the schema version, theme, and variant - dark`() { - ShopifyCheckoutKit.configuration.colorScheme = ColorScheme.Dark() - Robolectric.buildActivity(ComponentActivity::class.java).use { activityController -> - val view = FallbackWebView(activityController.get()) - assertThat(view.settings.userAgentString).endsWith("(noconnect;dark;standard_recovery)") - } - } - - @Test - fun `user agent suffix includes metadata for the schema version, theme, and variant - light`() { - ShopifyCheckoutKit.configuration.colorScheme = ColorScheme.Light() - Robolectric.buildActivity(ComponentActivity::class.java).use { activityController -> - val view = FallbackWebView(activityController.get()) - assertThat(view.settings.userAgentString).endsWith("(noconnect;light;standard_recovery)") - } - } - - @Test - fun `user agent suffix includes metadata for the schema version, theme, and variant - web`() { - ShopifyCheckoutKit.configuration.colorScheme = ColorScheme.Web() - Robolectric.buildActivity(ComponentActivity::class.java).use { activityController -> - val view = FallbackWebView(activityController.get()) - assertThat(view.settings.userAgentString).endsWith("(noconnect;web_default;standard_recovery)") - } - } - - @Test - fun `user agent suffix includes metadata for the schema version, theme, and variant - automatic`() { - ShopifyCheckoutKit.configuration.colorScheme = ColorScheme.Automatic() - Robolectric.buildActivity(ComponentActivity::class.java).use { activityController -> - val view = FallbackWebView(activityController.get()) - assertThat(view.settings.userAgentString).endsWith("(noconnect;automatic;standard_recovery)") - } - } - - @Test - fun `user agent suffix includes platform if specified`() { - ShopifyCheckoutKit.configuration.colorScheme = ColorScheme.Automatic() - ShopifyCheckoutKit.configuration.platform = Platform.REACT_NATIVE - Robolectric.buildActivity(ComponentActivity::class.java).use { activityController -> - val view = FallbackWebView(activityController.get()) - assertThat(view.settings.userAgentString).endsWith("(noconnect;automatic;standard_recovery) ReactNative") + assertThat(view.settings.userAgentString).contains("ShopifyCheckoutKit/") + assertThat(view.settings.userAgentString).contains(" android") } } diff --git a/dev.yml b/dev.yml new file mode 100644 index 00000000..cc22e1f4 --- /dev/null +++ b/dev.yml @@ -0,0 +1,31 @@ +name: checkout-kit + +commands: + codegen: + desc: "Generate UCP models. Usage: dev codegen " + syntax: "" + run: | + case "$1" in + kotlin|swift) ./protocol/scripts/generate_models.sh --lang "$1" ;; + *) echo "Usage: dev codegen "; exit 1 ;; + esac + apollo: + subcommands: + download_schema: + desc: "Download GraphQL schema. Usage: dev apollo download_schema [accelerated|mobile-buy|all]" + syntax: " [accelerated|mobile-buy|all]" + run: | + case "$1" in + android) cd android && ./scripts/apollo_download_schema ;; + swift) shift; cd swift && ./Scripts/apollo_download_schema "$@" ;; + *) echo "Usage: dev apollo download_schema [accelerated|mobile-buy|all]"; exit 1 ;; + esac + codegen: + desc: "Generate Apollo models. Usage: dev apollo codegen [accelerated|mobile-buy|all]" + syntax: " [accelerated|mobile-buy|all]" + run: | + case "$1" in + android) cd android && ./scripts/apollo_codegen ;; + swift) shift; cd swift && ./Scripts/apollo_codegen "$@" ;; + *) echo "Usage: dev apollo codegen [accelerated|mobile-buy|all]"; exit 1 ;; + esac diff --git a/protocol/schemas/capability.json b/protocol/schemas/capability.json new file mode 100644 index 00000000..9eb2eb33 --- /dev/null +++ b/protocol/schemas/capability.json @@ -0,0 +1,54 @@ +{ + "$schema": "https://json-schema.org/draft/2020-12/schema", + "$id": "https://ucp.dev/schemas/capability.json", + "title": "UCP Capability", + "description": "Schema for UCP capabilities and extensions. Extensions are capabilities with an 'extends' field. Uses reverse-domain naming for governance.", + + "$defs": { + "base": { + "allOf": [ + { "$ref": "ucp.json#/$defs/entity" }, + { + "type": "object", + "properties": { + "extends": { + "oneOf": [ + { + "type": "string", + "pattern": "^[a-z][a-z0-9]*(?:\\.[a-z][a-z0-9_]*)+$" + }, + { + "type": "array", + "items": { + "type": "string", + "pattern": "^[a-z][a-z0-9]*(?:\\.[a-z][a-z0-9_]*)+$" + }, + "minItems": 1 + } + ], + "description": "Parent capability(s) this extends. Present for extensions, absent for root capabilities. Use array for multi-parent extensions." + } + } + } + ] + }, + + "platform_schema": { + "title": "Capability (Platform Schema)", + "description": "Full capability declaration for platform-level discovery. Includes spec/schema URLs for agent fetching.", + "allOf": [{ "$ref": "#/$defs/base" }, { "required": ["spec", "schema"] }] + }, + + "business_schema": { + "title": "Capability (Business Schema)", + "description": "Capability configuration for business/merchant level. May include business-specific config overrides.", + "allOf": [{ "$ref": "#/$defs/base" }] + }, + + "response_schema": { + "title": "Capability (Response Schema)", + "description": "Capability reference in responses. Only name/version required to confirm active capabilities.", + "allOf": [{ "$ref": "#/$defs/base" }] + } + } +} diff --git a/protocol/schemas/payment_handler.json b/protocol/schemas/payment_handler.json new file mode 100644 index 00000000..7e40c289 --- /dev/null +++ b/protocol/schemas/payment_handler.json @@ -0,0 +1,36 @@ +{ + "$schema": "https://json-schema.org/draft/2020-12/schema", + "$id": "https://ucp.dev/schemas/payment_handler.json", + "title": "Payment Handler", + "description": "Schema for UCP payment handlers. Handlers define how payment instruments are processed.", + + "$defs": { + "base": { + "allOf": [ + { "$ref": "ucp.json#/$defs/entity" }, + { + "type": "object", + "required": ["id"] + } + ] + }, + + "platform_schema": { + "title": "Payment Handler (Platform Schema)", + "description": "Platform declaration for discovery profiles. May include partial config state required for discovery.", + "allOf": [{ "$ref": "#/$defs/base" }, { "required": ["spec", "schema"] }] + }, + + "business_schema": { + "title": "Payment Handler (Business Schema)", + "description": "Business declaration for discovery profiles. May include partial config state required for discovery.", + "allOf": [{ "$ref": "#/$defs/base" }] + }, + + "response_schema": { + "title": "Payment Handler (Response Schema)", + "description": "Handler reference in responses. May include full config state for runtime usage of the handler.", + "allOf": [{ "$ref": "#/$defs/base" }] + } + } +} diff --git a/protocol/schemas/service.json b/protocol/schemas/service.json new file mode 100644 index 00000000..678dfb29 --- /dev/null +++ b/protocol/schemas/service.json @@ -0,0 +1,116 @@ +{ + "$schema": "https://json-schema.org/draft/2020-12/schema", + "$id": "https://ucp.dev/schemas/service.json", + "title": "UCP Service", + "description": "Service binding for a specific transport. Each transport binding is a separate entry in the service array.", + + "$defs": { + "base": { + "allOf": [ + { "$ref": "ucp.json#/$defs/entity" }, + { + "type": "object", + "required": ["transport"], + "properties": { + "transport": { + "type": "string", + "enum": ["rest", "mcp", "a2a", "embedded"], + "description": "Transport protocol for this service binding." + }, + "endpoint": { + "type": "string", + "format": "uri", + "description": "Endpoint URL for this transport binding." + } + } + } + ] + }, + + "platform_schema": { + "title": "Service (Platform Schema)", + "description": "Full service declaration for platform-level discovery. Different transports require different fields.", + "allOf": [ + { "$ref": "#/$defs/base" }, + { "required": ["spec"] }, + { + "anyOf": [ + { + "properties": { "transport": { "const": "rest" } }, + "required": ["schema", "endpoint"] + }, + { + "properties": { "transport": { "const": "mcp" } }, + "required": ["schema", "endpoint"] + }, + { + "properties": { "transport": { "const": "a2a" } }, + "required": ["endpoint"] + }, + { + "properties": { "transport": { "const": "embedded" } }, + "required": ["schema"] + } + ] + } + ] + }, + + "business_schema": { + "title": "Service (Business Schema)", + "description": "Service binding for business/merchant configuration. May override platform endpoints.", + "allOf": [ + { "$ref": "#/$defs/base" }, + { + "anyOf": [ + { + "properties": { "transport": { "const": "rest" } }, + "required": ["endpoint"] + }, + { + "properties": { "transport": { "const": "mcp" } }, + "required": ["endpoint"] + }, + { + "properties": { "transport": { "const": "a2a" } }, + "required": ["endpoint"] + }, + { + "properties": { + "transport": { "const": "embedded" }, + "config": { "$ref": "transports/embedded_config.json" } + } + } + ] + } + ] + }, + + "response_schema": { + "title": "Service (Response Schema)", + "description": "Service binding in API responses. Includes per-resource transport configuration via typed config.", + "allOf": [ + { "$ref": "#/$defs/base" }, + { + "anyOf": [ + { + "properties": { "transport": { "const": "rest" } } + }, + { + "properties": { "transport": { "const": "mcp" } } + }, + { + "properties": { "transport": { "const": "a2a" } } + }, + { + "properties": { + "transport": { "const": "embedded" }, + "config": { "$ref": "transports/embedded_config.json" } + } + } + ] + } + ] + } + } +} diff --git a/protocol/schemas/shopping/ap2_mandate.json b/protocol/schemas/shopping/ap2_mandate.json new file mode 100644 index 00000000..4d8b7d07 --- /dev/null +++ b/protocol/schemas/shopping/ap2_mandate.json @@ -0,0 +1,90 @@ +{ + "$schema": "https://json-schema.org/draft/2020-12/schema", + "$id": "https://ucp.dev/schemas/shopping/ap2_mandate.json", + "name": "dev.ucp.shopping.ap2_mandate", + "title": "AP2 Mandate Extension", + "description": "Extends Checkout with cryptographic mandate support for non-repudiable authorization per the AP2 protocol. Uses embedded signature model with ap2 namespace.", + "$defs": { + "merchant_authorization": { + "title": "Merchant Authorization", + "description": "JWS Detached Content signature (RFC 7515 Appendix F) over the checkout response body (excluding ap2 field). Format: `..`. The header MUST contain 'alg' (ES256/ES384/ES512) and 'kid' claims. The signature covers both the header and JCS-canonicalized checkout payload.", + "type": "string", + "pattern": "^[A-Za-z0-9_-]+\\.\\.[A-Za-z0-9_-]+$" + }, + "checkout_mandate": { + "title": "Checkout Mandate", + "description": "SD-JWT+kb credential in `ap2.checkout_mandate`. Proving user authorization for the checkout. Contains the full checkout including `ap2.merchant_authorization`.", + "type": "string", + "pattern": "^[A-Za-z0-9_-]+\\.[A-Za-z0-9_-]*\\.[A-Za-z0-9_-]+(~[A-Za-z0-9_-]+)*$" + }, + "ap2_with_merchant_authorization": { + "type": "object", + "description": "AP2 extension data including merchant authorization.", + "properties": { + "merchant_authorization": { + "$ref": "#/$defs/merchant_authorization", + "description": "Merchant's signature proving checkout terms are authentic.", + "ucp_request": "omit" + } + } + }, + "ap2_with_checkout_mandate": { + "type": "object", + "description": "AP2 extension data including checkout mandate.", + "properties": { + "checkout_mandate": { + "$ref": "#/$defs/checkout_mandate", + "description": "SD-JWT+kb proving user authorized this checkout.", + "ucp_request": { + "create": "omit", + "update": "omit", + "complete": "required" + } + } + } + }, + "dev.ucp.shopping.checkout": { + "title": "Checkout with AP2 Mandate", + "description": "Checkout extended with AP2 mandate support.", + "allOf": [ + { + "$ref": "checkout.json" + }, + { + "type": "object", + "properties": { + "ap2": { + "allOf": [ + { + "$ref": "#/$defs/ap2_with_merchant_authorization" + }, + { + "$ref": "#/$defs/ap2_with_checkout_mandate" + } + ], + "ucp_request": { + "create": "omit", + "update": "omit", + "complete": "required" + } + } + } + } + ] + }, + "error_code": { + "title": "AP2 Error Code", + "description": "Error codes specific to AP2 mandate verification.", + "type": "string", + "enum": [ + "mandate_required", + "agent_missing_key", + "mandate_invalid_signature", + "mandate_expired", + "mandate_scope_mismatch", + "merchant_authorization_invalid", + "merchant_authorization_missing" + ] + } + } +} diff --git a/protocol/schemas/shopping/buyer_consent.json b/protocol/schemas/shopping/buyer_consent.json new file mode 100644 index 00000000..2edf9028 --- /dev/null +++ b/protocol/schemas/shopping/buyer_consent.json @@ -0,0 +1,72 @@ +{ + "$schema": "https://json-schema.org/draft/2020-12/schema", + "$id": "https://ucp.dev/schemas/shopping/buyer_consent.json", + "name": "dev.ucp.shopping.buyer_consent", + "title": "Buyer Consent Extension", + "description": "Extends Checkout with buyer consent tracking for privacy compliance via the buyer object.", + "$defs": { + "consent": { + "type": "object", + "description": "User consent states for data processing", + "properties": { + "analytics": { + "type": "boolean", + "description": "Consent for analytics and performance tracking." + }, + "preferences": { + "type": "boolean", + "description": "Consent for storing user preferences." + }, + "marketing": { + "type": "boolean", + "description": "Consent for marketing communications." + }, + "sale_of_data": { + "type": "boolean", + "description": "Consent for selling data to third parties (CCPA)." + } + } + }, + "buyer": { + "title": "Buyer with Consent", + "description": "Buyer object extended with consent tracking.", + "allOf": [ + { + "$ref": "types/buyer.json" + }, + { + "type": "object", + "properties": { + "consent": { + "$ref": "#/$defs/consent", + "description": "Consent tracking fields." + } + } + } + ] + }, + "dev.ucp.shopping.checkout": { + "title": "Checkout with Buyer Consent", + "description": "Checkout extended with consent tracking via buyer object.", + "allOf": [ + { + "$ref": "checkout.json" + }, + { + "type": "object", + "properties": { + "buyer": { + "$ref": "#/$defs/buyer", + "description": "Buyer with consent tracking.", + "ucp_request": { + "create": "optional", + "update": "optional", + "complete": "omit" + } + } + } + } + ] + } + } +} diff --git a/protocol/schemas/shopping/cart.json b/protocol/schemas/shopping/cart.json new file mode 100644 index 00000000..de3ff320 --- /dev/null +++ b/protocol/schemas/shopping/cart.json @@ -0,0 +1,122 @@ +{ + "$schema": "https://json-schema.org/draft/2020-12/schema", + "$id": "https://ucp.dev/schemas/shopping/cart.json", + "name": "dev.ucp.shopping.cart", + "title": "Cart", + "description": "Shopping cart with estimated pricing before checkout. Lightweight pre-purchase exploration with no payment info or complex status states. Cart exists (200) or doesn't (404).", + "$defs": { + "checkout": { + "title": "Checkout with Cart", + "description": "Checkout extended with cart capability. Adds cart_id to create_checkout for cart-to-checkout conversion.", + "allOf": [ + { + "$ref": "checkout.json" + }, + { + "type": "object", + "properties": { + "cart_id": { + "type": "string", + "description": "Cart ID to convert to checkout. Business MUST use cart contents (line_items, context, buyer) and MUST ignore overlapping fields in checkout payload.", + "ucp_request": { + "create": "optional", + "update": "omit" + } + } + } + } + ] + } + }, + "type": "object", + "required": [ + "ucp", + "id", + "line_items", + "currency", + "totals" + ], + "additionalProperties": true, + "properties": { + "ucp": { + "$ref": "../ucp.json#/$defs/response_cart_schema", + "ucp_request": "omit" + }, + "id": { + "type": "string", + "description": "Unique cart identifier.", + "ucp_request": { + "create": "omit", + "update": "required" + } + }, + "line_items": { + "type": "array", + "items": { + "$ref": "types/line_item.json" + }, + "description": "Cart line items. Same structure as checkout. Full replacement on update.", + "ucp_request": { + "create": "required", + "update": "required" + } + }, + "context": { + "$ref": "types/context.json", + "description": "Buyer signals for localization (country, region, postal_code). Merchant uses for pricing, availability, currency. Falls back to geo-IP if omitted.", + "ucp_request": { + "create": "optional", + "update": "optional" + } + }, + "buyer": { + "$ref": "types/buyer.json", + "description": "Optional buyer information for personalized estimates.", + "ucp_request": { + "create": "optional", + "update": "optional" + } + }, + "currency": { + "type": "string", + "description": "ISO 4217 currency code. Determined by merchant based on context or geo-IP.", + "ucp_request": "omit" + }, + "totals": { + "type": "array", + "items": { + "$ref": "types/total.json" + }, + "description": "Estimated cost breakdown. May be partial if shipping/tax not yet calculable.", + "ucp_request": "omit" + }, + "messages": { + "type": "array", + "items": { + "$ref": "types/message.json" + }, + "description": "Validation messages, warnings, or informational notices.", + "ucp_request": "omit" + }, + "links": { + "type": "array", + "items": { + "$ref": "types/link.json" + }, + "description": "Optional merchant links (policies, FAQs).", + "ucp_request": "omit" + }, + "continue_url": { + "type": "string", + "format": "uri", + "description": "URL for cart handoff and session recovery. Enables sharing and human-in-the-loop flows.", + "ucp_request": "omit" + }, + "expires_at": { + "type": "string", + "format": "date-time", + "description": "Cart expiry timestamp (RFC 3339). Optional.", + "ucp_request": "omit" + } + } +} diff --git a/protocol/schemas/shopping/checkout.json b/protocol/schemas/shopping/checkout.json new file mode 100644 index 00000000..9e23b778 --- /dev/null +++ b/protocol/schemas/shopping/checkout.json @@ -0,0 +1,134 @@ +{ + "$schema": "https://json-schema.org/draft/2020-12/schema", + "$id": "https://ucp.dev/schemas/shopping/checkout.json", + "name": "dev.ucp.shopping.checkout", + "title": "Checkout", + "description": "Base checkout schema. Extensions compose onto this using allOf.", + "type": "object", + "required": [ + "ucp", + "id", + "line_items", + "status", + "currency", + "totals", + "links" + ], + "additionalProperties": true, + "properties": { + "ucp": { + "$ref": "../ucp.json#/$defs/response_checkout_schema", + "ucp_request": "omit" + }, + "id": { + "type": "string", + "description": "Unique identifier of the checkout session.", + "ucp_request": { + "create": "omit", + "update": "required", + "complete": "omit" + } + }, + "line_items": { + "type": "array", + "items": { + "$ref": "types/line_item.json" + }, + "description": "List of line items being checked out.", + "ucp_request": { + "create": "required", + "update": "required", + "complete": "omit" + } + }, + "buyer": { + "$ref": "types/buyer.json", + "description": "Representation of the buyer.", + "ucp_request": { + "create": "optional", + "update": "optional", + "complete": "omit" + } + }, + "context": { + "$ref": "types/context.json", + "ucp_request": { + "create": "optional", + "update": "optional", + "complete": "omit" + }, + "ucp_response": "omit" + }, + "status": { + "type": "string", + "enum": [ + "incomplete", + "requires_escalation", + "ready_for_complete", + "complete_in_progress", + "completed", + "canceled" + ], + "description": "Checkout state indicating the current phase and required action. See Checkout Status lifecycle documentation for state transition details.", + "ucp_request": "omit" + }, + "currency": { + "type": "string", + "description": "ISO 4217 currency code reflecting the merchant's market determination. Derived from address, context, and geo IP—buyers provide signals, merchants determine currency.", + "ucp_request": { + "create": "omit", + "update": "omit", + "complete": "omit" + } + }, + "totals": { + "type": "array", + "items": { + "$ref": "types/total.json" + }, + "description": "Different cart totals.", + "ucp_request": "omit" + }, + "messages": { + "type": "array", + "items": { + "$ref": "types/message.json" + }, + "description": "List of messages with error and info about the checkout session state.", + "ucp_request": "omit" + }, + "links": { + "type": "array", + "items": { + "$ref": "types/link.json" + }, + "description": "Links to be displayed by the platform (Privacy Policy, TOS). Mandatory for legal compliance.", + "ucp_request": "omit" + }, + "expires_at": { + "type": "string", + "format": "date-time", + "description": "RFC 3339 expiry timestamp. Default TTL is 6 hours from creation if not sent.", + "ucp_request": "omit" + }, + "continue_url": { + "type": "string", + "format": "uri", + "description": "URL for checkout handoff and session recovery. MUST be provided when status is requires_escalation. See specification for format and availability requirements.", + "ucp_request": "omit" + }, + "payment": { + "$ref": "payment.json", + "ucp_request": { + "create": "optional", + "update": "optional", + "complete": "required" + } + }, + "order": { + "$ref": "types/order_confirmation.json", + "description": "Details about an order created for this checkout session.", + "ucp_request": "omit" + } + } +} diff --git a/protocol/schemas/shopping/discount.json b/protocol/schemas/shopping/discount.json new file mode 100644 index 00000000..db1fea8c --- /dev/null +++ b/protocol/schemas/shopping/discount.json @@ -0,0 +1,119 @@ +{ + "$schema": "https://json-schema.org/draft/2020-12/schema", + "$id": "https://ucp.dev/schemas/shopping/discount.json", + "name": "dev.ucp.shopping.discount", + "title": "Discount Extension", + "description": "Extends Checkout with discount code support, enabling agents to apply promotional, loyalty, referral, and other discount codes.", + "$defs": { + "allocation": { + "type": "object", + "description": "Breakdown of how a discount amount was allocated to a specific target.", + "required": [ + "path", + "amount" + ], + "properties": { + "path": { + "type": "string", + "description": "JSONPath to the allocation target (e.g., '$.line_items[0]', '$.totals.shipping')." + }, + "amount": { + "type": "integer", + "minimum": 0, + "description": "Amount allocated to this target in minor (cents) currency units." + } + } + }, + "applied_discount": { + "type": "object", + "description": "A discount that was successfully applied.", + "required": [ + "title", + "amount" + ], + "properties": { + "code": { + "type": "string", + "description": "The discount code. Omitted for automatic discounts." + }, + "title": { + "type": "string", + "description": "Human-readable discount name (e.g., 'Summer Sale 20% Off')." + }, + "amount": { + "type": "integer", + "minimum": 0, + "description": "Total discount amount in minor (cents) currency units." + }, + "automatic": { + "type": "boolean", + "default": false, + "description": "True if applied automatically by merchant rules (no code required)." + }, + "method": { + "type": "string", + "enum": [ + "each", + "across" + ], + "description": "Allocation method. 'each' = applied independently per item. 'across' = split proportionally by value." + }, + "priority": { + "type": "integer", + "minimum": 1, + "description": "Stacking order for discount calculation. Lower numbers applied first (1 = first)." + }, + "allocations": { + "type": "array", + "items": { + "$ref": "#/$defs/allocation" + }, + "description": "Breakdown of where this discount was allocated. Sum of allocation amounts equals total amount." + } + } + }, + "discounts_object": { + "type": "object", + "description": "Discount codes input and applied discounts output.", + "properties": { + "codes": { + "type": "array", + "items": { + "type": "string" + }, + "description": "Discount codes to apply. Case-insensitive. Replaces previously submitted codes. Send empty array to clear." + }, + "applied": { + "type": "array", + "readOnly": true, + "items": { + "$ref": "#/$defs/applied_discount" + }, + "description": "Discounts successfully applied (code-based and automatic)." + } + } + }, + "dev.ucp.shopping.checkout": { + "title": "Checkout with Discount", + "description": "Checkout extended with discount capability.", + "allOf": [ + { + "$ref": "checkout.json" + }, + { + "type": "object", + "properties": { + "discounts": { + "$ref": "#/$defs/discounts_object", + "ucp_request": { + "create": "optional", + "update": "optional", + "complete": "omit" + } + } + } + } + ] + } + } +} diff --git a/protocol/schemas/shopping/fulfillment.json b/protocol/schemas/shopping/fulfillment.json new file mode 100644 index 00000000..9c083ec5 --- /dev/null +++ b/protocol/schemas/shopping/fulfillment.json @@ -0,0 +1,142 @@ +{ + "$schema": "https://json-schema.org/draft/2020-12/schema", + "$id": "https://ucp.dev/schemas/shopping/fulfillment.json", + "name": "dev.ucp.shopping.fulfillment", + "title": "Fulfillment Extension", + "description": "Extends Checkout with fulfillment support using methods, destinations, and groups.", + "$defs": { + "fulfillment_option": { + "$ref": "types/fulfillment_option.json" + }, + "fulfillment_group": { + "$ref": "types/fulfillment_group.json" + }, + "fulfillment_method": { + "$ref": "types/fulfillment_method.json" + }, + "fulfillment_available_method": { + "$ref": "types/fulfillment_available_method.json" + }, + "fulfillment": { + "$ref": "types/fulfillment.json" + }, + "dev.ucp.shopping.checkout": { + "title": "Checkout with Fulfillment", + "description": "Checkout extended with hierarchical fulfillment.", + "allOf": [ + { + "$ref": "checkout.json" + }, + { + "type": "object", + "properties": { + "fulfillment": { + "$ref": "#/$defs/fulfillment", + "description": "Fulfillment details.", + "ucp_request": { + "create": "optional", + "update": "optional", + "complete": "omit" + } + } + } + } + ] + }, + "dev.ucp.shopping.fulfillment": { + "platform_schema": { + "title": "Fulfillment Capability (Platform)", + "description": "Platform-level fulfillment capability configuration", + "allOf": [ + { + "$ref": "../capability.json#/$defs/platform_schema" + }, + { + "properties": { + "config": { + "$ref": "types/platform_fulfillment_config.json", + "description": "Platform fulfillment configuration" + } + } + } + ] + }, + "business_schema": { + "title": "Fulfillment Capability (Business)", + "description": "Business-level fulfillment capability configuration", + "allOf": [ + { + "$ref": "../capability.json#/$defs/business_schema" + }, + { + "properties": { + "config": { + "$ref": "types/business_fulfillment_config.json", + "description": "Business fulfillment configuration" + } + } + } + ] + } + } + }, + "embedded": { + "delegations": [ + "fulfillment.address_change" + ], + "methods": [ + { + "name": "ec.fulfillment.change", + "summary": "Fulfillment details changed", + "description": "Merchant notifies host that checkout.fulfillment has changed (shipping method selected, destination updated).", + "params": [ + { + "name": "checkout", + "required": true, + "schema": { + "$ref": "../../schemas/shopping/checkout.json", + "description": "Current checkout state with updated fulfillment." + } + } + ] + }, + { + "name": "ec.fulfillment.address_change_request", + "summary": "Request address selection", + "description": "Merchant requests host to present address selection UI for a shipping fulfillment method.", + "params": [ + { + "name": "checkout", + "required": true, + "schema": { + "$ref": "../../schemas/shopping/checkout.json", + "description": "Current checkout state with fulfillment context." + } + } + ], + "result": { + "name": "addressChangeResult", + "schema": { + "type": "object", + "description": "Checkout state with updated fulfillment address.", + "required": [ + "checkout" + ], + "properties": { + "checkout": { + "type": "object", + "description": "Partial checkout update with fulfillment address selection.", + "properties": { + "fulfillment": { + "$ref": "../../schemas/shopping/types/fulfillment.json", + "description": "Fulfillment with updated destinations and selected_destination_id." + } + } + } + } + } + } + } + ] + } +} diff --git a/protocol/schemas/shopping/order.json b/protocol/schemas/shopping/order.json new file mode 100644 index 00000000..c170c285 --- /dev/null +++ b/protocol/schemas/shopping/order.json @@ -0,0 +1,93 @@ +{ + "$schema": "https://json-schema.org/draft/2020-12/schema", + "$id": "https://ucp.dev/schemas/shopping/order.json", + "name": "dev.ucp.shopping.order", + "title": "Order", + "description": "Order schema with immutable line items, buyer-facing fulfillment expectations, and append-only event logs.", + "$defs": { + "platform_schema": { + "title": "Platform Order Schema", + "description": "Platform's order capability configuration.", + "type": "object", + "required": [ + "webhook_url" + ], + "properties": { + "webhook_url": { + "type": "string", + "format": "uri", + "description": "URL where merchant sends order lifecycle events (webhooks)." + } + } + } + }, + "type": "object", + "required": [ + "ucp", + "id", + "checkout_id", + "permalink_url", + "line_items", + "fulfillment", + "totals" + ], + "properties": { + "ucp": { + "$ref": "../ucp.json#/$defs/response_order_schema" + }, + "id": { + "type": "string", + "description": "Unique order identifier." + }, + "checkout_id": { + "type": "string", + "description": "Associated checkout ID for reconciliation." + }, + "permalink_url": { + "type": "string", + "format": "uri", + "description": "Permalink to access the order on merchant site." + }, + "line_items": { + "type": "array", + "items": { + "$ref": "types/order_line_item.json" + }, + "description": "Immutable line items — source of truth for what was ordered." + }, + "fulfillment": { + "type": "object", + "properties": { + "expectations": { + "type": "array", + "items": { + "$ref": "types/expectation.json" + }, + "description": "Buyer-facing groups representing when/how items will be delivered. Can be split, merged, or adjusted post-order." + }, + "events": { + "type": "array", + "items": { + "$ref": "types/fulfillment_event.json" + }, + "description": "Append-only event log of actual shipments. Each event references line items by ID." + } + }, + "description": "Fulfillment data: buyer expectations and what actually happened." + }, + "adjustments": { + "type": "array", + "items": { + "$ref": "types/adjustment.json" + }, + "description": "Append-only event log of money movements (refunds, returns, credits, disputes, cancellations, etc.) that exist independently of fulfillment." + }, + "totals": { + "type": "array", + "items": { + "$ref": "types/total.json" + }, + "description": "Different totals for the order." + } + } +} diff --git a/protocol/schemas/shopping/payment.json b/protocol/schemas/shopping/payment.json new file mode 100644 index 00000000..e572e064 --- /dev/null +++ b/protocol/schemas/shopping/payment.json @@ -0,0 +1,16 @@ +{ + "$schema": "https://json-schema.org/draft/2020-12/schema", + "$id": "https://ucp.dev/schemas/shopping/payment.json", + "title": "Payment", + "description": "Payment configuration containing handlers.", + "type": "object", + "properties": { + "instruments": { + "type": "array", + "items": { + "$ref": "types/payment_instrument.json#/$defs/selected_payment_instrument" + }, + "description": "The payment instruments available for this payment. Each instrument is associated with a specific handler via the handler_id field. Handlers can extend the base payment_instrument schema to add handler-specific fields." + } + } +} diff --git a/protocol/schemas/shopping/types/account_info.json b/protocol/schemas/shopping/types/account_info.json new file mode 100644 index 00000000..bcda6a24 --- /dev/null +++ b/protocol/schemas/shopping/types/account_info.json @@ -0,0 +1,13 @@ +{ + "$schema": "https://json-schema.org/draft/2020-12/schema", + "$id": "https://ucp.dev/schemas/shopping/types/account_info.json", + "title": "Payment Account Info", + "type": "object", + "description": "Non-sensitive backend identifiers for linking.", + "properties": { + "payment_account_reference": { + "type": "string", + "description": "EMVCo PAR. A unique identifier linking a payment card to a specific account, enabling tracking across tokens (Apple Pay, physical card, etc)." + } + } +} diff --git a/protocol/schemas/shopping/types/adjustment.json b/protocol/schemas/shopping/types/adjustment.json new file mode 100644 index 00000000..6665c38d --- /dev/null +++ b/protocol/schemas/shopping/types/adjustment.json @@ -0,0 +1,64 @@ +{ + "$schema": "https://json-schema.org/draft/2020-12/schema", + "$id": "https://ucp.dev/schemas/shopping/types/adjustment.json", + "title": "Adjustment", + "description": "Append-only event that exists independently of fulfillment. Typically represents money movements but can be any post-order change. Polymorphic type that can optionally reference line items.", + "type": "object", + "required": [ + "id", + "type", + "occurred_at", + "status" + ], + "properties": { + "id": { + "type": "string", + "description": "Adjustment event identifier." + }, + "type": { + "type": "string", + "description": "Type of adjustment (open string). Typically money-related like: refund, return, credit, price_adjustment, dispute, cancellation. Can be any value that makes sense for the merchant's business." + }, + "occurred_at": { + "type": "string", + "format": "date-time", + "description": "RFC 3339 timestamp when this adjustment occurred." + }, + "status": { + "type": "string", + "enum": [ + "pending", + "completed", + "failed" + ], + "description": "Adjustment status." + }, + "line_items": { + "type": "array", + "items": { + "type": "object", + "required": ["id", "quantity"], + "properties": { + "id": { + "type": "string", + "description": "Line item ID reference." + }, + "quantity": { + "type": "integer", + "minimum": 1, + "description": "Quantity affected by this adjustment." + } + } + }, + "description": "Which line items and quantities are affected (optional)." + }, + "amount": { + "type": "integer", + "description": "Amount in minor units (cents) for refunds, credits, price adjustments (optional)." + }, + "description": { + "type": "string", + "description": "Human-readable reason or description (e.g., 'Defective item', 'Customer requested')." + } + } +} diff --git a/protocol/schemas/shopping/types/binding.json b/protocol/schemas/shopping/types/binding.json new file mode 100644 index 00000000..e73ef7b0 --- /dev/null +++ b/protocol/schemas/shopping/types/binding.json @@ -0,0 +1,18 @@ +{ + "$schema": "https://json-schema.org/draft/2020-12/schema", + "$id": "https://ucp.dev/schemas/shopping/types/binding.json", + "title": "Binding", + "description": "Binds a token to a specific checkout session and participant. Prevents token reuse across different checkouts or participants.", + "type": "object", + "required": ["checkout_id"], + "properties": { + "checkout_id": { + "type": "string", + "description": "The checkout session identifier this token is bound to." + }, + "identity": { + "$ref": "payment_identity.json", + "description": "The participant this token is bound to. Required when acting on behalf of another participant (e.g., agent tokenizing for merchant). Omit when the authenticated caller is the binding target." + } + } +} diff --git a/protocol/schemas/shopping/types/business_fulfillment_config.json b/protocol/schemas/shopping/types/business_fulfillment_config.json new file mode 100644 index 00000000..d84deb96 --- /dev/null +++ b/protocol/schemas/shopping/types/business_fulfillment_config.json @@ -0,0 +1,35 @@ +{ + "$schema": "https://json-schema.org/draft/2020-12/schema", + "$id": "https://ucp.dev/schemas/shopping/types/business_fulfillment_config.json", + "title": "Business Fulfillment Config", + "description": "Business's fulfillment configuration.", + "type": "object", + "properties": { + "allows_multi_destination": { + "type": "object", + "description": "Permits multiple destinations per method type.", + "properties": { + "shipping": { + "type": "boolean", + "description": "Multiple shipping destinations allowed." + }, + "pickup": { + "type": "boolean", + "description": "Multiple pickup locations allowed." + } + }, + "additionalProperties": false + }, + "allows_method_combinations": { + "type": "array", + "description": "Allowed method type combinations.", + "items": { + "type": "array", + "items": { + "type": "string", + "enum": ["shipping", "pickup"] + } + } + } + } +} diff --git a/protocol/schemas/shopping/types/buyer.json b/protocol/schemas/shopping/types/buyer.json new file mode 100644 index 00000000..507bcf39 --- /dev/null +++ b/protocol/schemas/shopping/types/buyer.json @@ -0,0 +1,25 @@ +{ + "$schema": "https://json-schema.org/draft/2020-12/schema", + "$id": "https://ucp.dev/schemas/shopping/types/buyer.json", + "title": "Buyer", + "type": "object", + "additionalProperties": true, + "properties": { + "first_name": { + "type": "string", + "description": "First name of the buyer." + }, + "last_name": { + "type": "string", + "description": "Last name of the buyer." + }, + "email": { + "type": "string", + "description": "Email of the buyer." + }, + "phone_number": { + "type": "string", + "description": "E.164 standard." + } + } +} diff --git a/protocol/schemas/shopping/types/card_credential.json b/protocol/schemas/shopping/types/card_credential.json new file mode 100644 index 00000000..0d08cc79 --- /dev/null +++ b/protocol/schemas/shopping/types/card_credential.json @@ -0,0 +1,77 @@ +{ + "$schema": "https://json-schema.org/draft/2020-12/schema", + "$id": "https://ucp.dev/schemas/shopping/types/card_credential.json", + "title": "Card Credential", + "description": "A card credential containing sensitive payment card details including raw Primary Account Numbers (PANs). This credential type MUST NOT be used for checkout, only with payment handlers that tokenize or encrypt credentials. CRITICAL: Both parties handling CardCredential (sender and receiver) MUST be PCI DSS compliant. Transmission MUST use HTTPS/TLS with strong cipher suites.", + "allOf": [ + { + "$ref": "payment_credential.json" + }, + { + "type": "object", + "required": [ + "type", + "card_number_type" + ], + "properties": { + "type": { + "const": "card", + "description": "The credential type identifier for card credentials." + }, + "card_number_type": { + "type": "string", + "enum": [ + "fpan", + "network_token", + "dpan" + ], + "description": "The type of card number. Network tokens are preferred with fallback to FPAN. See PCI Scope for more details." + }, + "number": { + "type": "string", + "description": "Card number.", + "examples": [ + "4242424242424242" + ] + }, + "expiry_month": { + "type": "integer", + "description": "The month of the card's expiration date (1-12)." + }, + "expiry_year": { + "type": "integer", + "description": "The year of the card's expiration date." + }, + "name": { + "type": "string", + "description": "Cardholder name.", + "examples": [ + "Jane Doe" + ] + }, + "cvc": { + "type": "string", + "maxLength": 4, + "description": "Card CVC number.", + "examples": [ + "223" + ] + }, + "cryptogram": { + "type": "string", + "description": "Cryptogram provided with network tokens.", + "examples": [ + "gXc5UCLnM6ckD7pjM1TdPA==" + ] + }, + "eci_value": { + "type": "string", + "description": "Electronic Commerce Indicator / Security Level Indicator provided with network tokens.", + "examples": [ + "07" + ] + } + } + } + ] +} diff --git a/protocol/schemas/shopping/types/card_payment_instrument.json b/protocol/schemas/shopping/types/card_payment_instrument.json new file mode 100644 index 00000000..da5b1d47 --- /dev/null +++ b/protocol/schemas/shopping/types/card_payment_instrument.json @@ -0,0 +1,53 @@ +{ + "$schema": "https://json-schema.org/draft/2020-12/schema", + "$id": "https://ucp.dev/schemas/shopping/types/card_payment_instrument.json", + "title": "Card Payment Instrument", + "description": "A basic card payment instrument with visible card details. Can be inherited by a handler's instrument schema to define handler-specific display details or more complex credential structures.", + "allOf": [ + { + "$ref": "payment_instrument.json" + }, + { + "type": "object", + "required": ["type"], + "properties": { + "type": { + "type": "string", + "const": "card", + "description": "Indicates this is a card payment instrument." + }, + "display": { + "type": "object", + "description": "Display information for this card payment instrument.", + "properties": { + "brand": { + "type": "string", + "description": "The card brand/network (e.g., visa, mastercard, amex)." + }, + "last_digits": { + "type": "string", + "description": "Last 4 digits of the card number." + }, + "expiry_month": { + "type": "integer", + "description": "The month of the card's expiration date (1-12)." + }, + "expiry_year": { + "type": "integer", + "description": "The year of the card's expiration date." + }, + "description": { + "type": "string", + "description": "An optional rich text description of the card to display to the user (e.g., 'Visa ending in 1234, expires 12/2025')." + }, + "card_art": { + "type": "string", + "format": "uri", + "description": "An optional URI to a rich image representing the card (e.g., card art provided by the issuer)." + } + } + } + } + } + ] +} diff --git a/protocol/schemas/shopping/types/context.json b/protocol/schemas/shopping/types/context.json new file mode 100644 index 00000000..afd46b86 --- /dev/null +++ b/protocol/schemas/shopping/types/context.json @@ -0,0 +1,26 @@ +{ + "$schema": "https://json-schema.org/draft/2020-12/schema", + "$id": "https://ucp.dev/schemas/shopping/types/context.json", + "title": "Context", + "description": "Provisional buyer signals for relevance and localization: product availability, pricing, currency, tax, shipping, payment methods, and eligibility (e.g., student or affiliation discounts). Businesses SHOULD use these values when authoritative data (e.g., address) is absent, and MAY ignore unsupported values without returning errors. Context SHOULD be non-identifying and can be disclosed progressively—coarse signals early, finer resolution as the session progresses. Higher-resolution data (shipping address, billing address) supersedes context. Platforms SHOULD progressively enhance context throughout the buyer journey.", + "type": "object", + "additionalProperties": true, + "properties": { + "address_country": { + "type": "string", + "description": "The country. Recommended to be in 2-letter ISO 3166-1 alpha-2 format, for example \"US\". For backward compatibility, a 3-letter ISO 3166-1 alpha-3 country code such as \"SGP\" or a full country name such as \"Singapore\" can also be used. Optional hint for market context (currency, availability, pricing)—higher-resolution data (e.g., shipping address) supersedes this value." + }, + "address_region": { + "type": "string", + "description": "The region in which the locality is, and which is in the country. For example, California or another appropriate first-level Administrative division. Optional hint for progressive localization—higher-resolution data (e.g., shipping address) supersedes this value." + }, + "postal_code": { + "type": "string", + "description": "The postal code. For example, 94043. Optional hint for regional refinement—higher-resolution data (e.g., shipping address) supersedes this value." + }, + "intent": { + "type": "string", + "description": "Background context describing buyer's intent (e.g., 'looking for a gift under $50', 'need something durable for outdoor use'). Informs relevance, recommendations, and personalization." + } + } +} diff --git a/protocol/schemas/shopping/types/error_code.json b/protocol/schemas/shopping/types/error_code.json new file mode 100644 index 00000000..77ddf32d --- /dev/null +++ b/protocol/schemas/shopping/types/error_code.json @@ -0,0 +1,13 @@ +{ + "$schema": "https://json-schema.org/draft/2020-12/schema", + "$id": "https://ucp.dev/schemas/shopping/types/error_code.json", + "title": "Error Code", + "description": "Error code identifying the type of error. Standard errors are defined in specification (see examples), and have standardized semantics; freeform codes are permitted.", + "type": "string", + "examples": [ + "out_of_stock", + "item_unavailable", + "address_undeliverable", + "payment_failed" + ] +} diff --git a/protocol/schemas/shopping/types/expectation.json b/protocol/schemas/shopping/types/expectation.json new file mode 100644 index 00000000..40ceb9da --- /dev/null +++ b/protocol/schemas/shopping/types/expectation.json @@ -0,0 +1,55 @@ +{ + "$schema": "https://json-schema.org/draft/2020-12/schema", + "$id": "https://ucp.dev/schemas/shopping/types/expectation.json", + "title": "Expectation", + "description": "Buyer-facing fulfillment expectation representing logical groupings of items (e.g., 'package'). Can be split, merged, or adjusted post-order to set buyer expectations for when/how items arrive.", + "type": "object", + "required": [ + "id", + "line_items", + "method_type", + "destination" + ], + "properties": { + "id": { + "type": "string", + "description": "Expectation identifier." + }, + "line_items": { + "type": "array", + "items": { + "type": "object", + "required": ["id", "quantity"], + "properties": { + "id": { + "type": "string", + "description": "Line item ID reference." + }, + "quantity": { + "type": "integer", + "minimum": 1, + "description": "Quantity of this item in this expectation." + } + } + }, + "description": "Which line items and quantities are in this expectation." + }, + "method_type": { + "type": "string", + "enum": ["shipping", "pickup", "digital"], + "description": "Delivery method type (shipping, pickup, digital)." + }, + "destination": { + "$ref": "postal_address.json", + "description": "Delivery destination address." + }, + "description": { + "type": "string", + "description": "Human-readable delivery description (e.g., 'Arrives in 5-8 business days')." + }, + "fulfillable_on": { + "type": "string", + "description": "When this expectation can be fulfilled: 'now' or ISO 8601 timestamp for future date (backorder, pre-order)." + } + } +} diff --git a/protocol/schemas/shopping/types/fulfillment.json b/protocol/schemas/shopping/types/fulfillment.json new file mode 100644 index 00000000..6aa8c058 --- /dev/null +++ b/protocol/schemas/shopping/types/fulfillment.json @@ -0,0 +1,21 @@ +{ + "$schema": "https://json-schema.org/draft/2020-12/schema", + "$id": "https://ucp.dev/schemas/shopping/types/fulfillment.json", + "title": "Fulfillment", + "description": "Container for fulfillment methods and availability.", + "type": "object", + "ucp_shared_request": true, + "properties": { + "methods": { + "type": "array", + "description": "Fulfillment methods for cart items.", + "items": { "$ref": "fulfillment_method.json" } + }, + "available_methods": { + "type": "array", + "description": "Inventory availability hints.", + "items": { "$ref": "fulfillment_available_method.json" }, + "ucp_request": "omit" + } + } +} diff --git a/protocol/schemas/shopping/types/fulfillment_available_method.json b/protocol/schemas/shopping/types/fulfillment_available_method.json new file mode 100644 index 00000000..ca4af01d --- /dev/null +++ b/protocol/schemas/shopping/types/fulfillment_available_method.json @@ -0,0 +1,34 @@ +{ + "$schema": "https://json-schema.org/draft/2020-12/schema", + "$id": "https://ucp.dev/schemas/shopping/types/fulfillment_available_method.json", + "title": "Fulfillment Available Method", + "description": "Inventory availability hint for a fulfillment method type.", + "type": "object", + "ucp_shared_request": true, + "required": ["type", "line_item_ids"], + "additionalProperties": true, + "properties": { + "type": { + "type": "string", + "enum": ["shipping", "pickup"], + "description": "Fulfillment method type this availability applies to.", + "ucp_request": "omit" + }, + "line_item_ids": { + "type": "array", + "description": "Line items available for this fulfillment method.", + "items": { "type": "string" }, + "ucp_request": "omit" + }, + "fulfillable_on": { + "type": ["string", "null"], + "description": "'now' for immediate availability, or ISO 8601 date for future (preorders, transfers).", + "ucp_request": "omit" + }, + "description": { + "type": "string", + "description": "Human-readable availability info (e.g., 'Available for pickup at Downtown Store today').", + "ucp_request": "omit" + } + } +} diff --git a/protocol/schemas/shopping/types/fulfillment_destination.json b/protocol/schemas/shopping/types/fulfillment_destination.json new file mode 100644 index 00000000..cc6708dc --- /dev/null +++ b/protocol/schemas/shopping/types/fulfillment_destination.json @@ -0,0 +1,16 @@ +{ + "$schema": "https://json-schema.org/draft/2020-12/schema", + "$id": "https://ucp.dev/schemas/shopping/types/fulfillment_destination.json", + "title": "Fulfillment Destination", + "description": "A destination for fulfillment.", + "type": "object", + "ucp_shared_request": true, + "oneOf": [ + { + "$ref": "shipping_destination.json" + }, + { + "$ref": "retail_location.json" + } + ] +} diff --git a/protocol/schemas/shopping/types/fulfillment_event.json b/protocol/schemas/shopping/types/fulfillment_event.json new file mode 100644 index 00000000..5d0ba7e7 --- /dev/null +++ b/protocol/schemas/shopping/types/fulfillment_event.json @@ -0,0 +1,64 @@ +{ + "$schema": "https://json-schema.org/draft/2020-12/schema", + "$id": "https://ucp.dev/schemas/shopping/types/fulfillment_event.json", + "title": "Fulfillment Event", + "description": "Append-only fulfillment event representing an actual shipment. References line items by ID.", + "type": "object", + "required": [ + "id", + "occurred_at", + "type", + "line_items" + ], + "properties": { + "id": { + "type": "string", + "description": "Fulfillment event identifier." + }, + "occurred_at": { + "type": "string", + "format": "date-time", + "description": "RFC 3339 timestamp when this fulfillment event occurred." + }, + "type": { + "type": "string", + "description": "Fulfillment event type. Common values include: processing (preparing to ship), shipped (handed to carrier), in_transit (in delivery network), delivered (received by buyer), failed_attempt (delivery attempt failed), canceled (fulfillment canceled), undeliverable (cannot be delivered), returned_to_sender (returned to merchant)." + }, + "line_items": { + "type": "array", + "items": { + "type": "object", + "required": ["id", "quantity"], + "properties": { + "id": { + "type": "string", + "description": "Line item ID reference." + }, + "quantity": { + "type": "integer", + "minimum": 1, + "description": "Quantity fulfilled in this event." + } + } + }, + "description": "Which line items and quantities are fulfilled in this event." + }, + "tracking_number": { + "type": "string", + "description": "Carrier tracking number (required if type != processing)." + }, + "tracking_url": { + "type": "string", + "format": "uri", + "description": "URL to track this shipment (required if type != processing)." + }, + "carrier": { + "type": "string", + "description": "Carrier name (e.g., 'FedEx', 'USPS')." + }, + "description": { + "type": "string", + "description": "Human-readable description of the shipment status or delivery information (e.g., 'Delivered to front door', 'Out for delivery')." + } + } +} diff --git a/protocol/schemas/shopping/types/fulfillment_group.json b/protocol/schemas/shopping/types/fulfillment_group.json new file mode 100644 index 00000000..6f0529ef --- /dev/null +++ b/protocol/schemas/shopping/types/fulfillment_group.json @@ -0,0 +1,32 @@ +{ + "$schema": "https://json-schema.org/draft/2020-12/schema", + "$id": "https://ucp.dev/schemas/shopping/types/fulfillment_group.json", + "title": "Fulfillment Group", + "description": "A merchant-generated package/group of line items with fulfillment options.", + "type": "object", + "required": ["id", "line_item_ids"], + "additionalProperties": true, + "properties": { + "id": { + "type": "string", + "description": "Group identifier for referencing merchant-generated groups in updates.", + "ucp_request": {"create": "omit", "update": "required"} + }, + "line_item_ids": { + "type": "array", + "description": "Line item IDs included in this group/package.", + "items": { "type": "string" }, + "ucp_request": "omit" + }, + "options": { + "type": "array", + "description": "Available fulfillment options for this group.", + "items": { "$ref": "fulfillment_option.json" }, + "ucp_request": "omit" + }, + "selected_option_id": { + "type": ["string", "null"], + "description": "ID of the selected fulfillment option for this group." + } + } +} diff --git a/protocol/schemas/shopping/types/fulfillment_method.json b/protocol/schemas/shopping/types/fulfillment_method.json new file mode 100644 index 00000000..de486ab9 --- /dev/null +++ b/protocol/schemas/shopping/types/fulfillment_method.json @@ -0,0 +1,42 @@ +{ + "$schema": "https://json-schema.org/draft/2020-12/schema", + "$id": "https://ucp.dev/schemas/shopping/types/fulfillment_method.json", + "title": "Fulfillment Method", + "description": "A fulfillment method (shipping or pickup) with destinations and groups.", + "type": "object", + "required": ["id", "type", "line_item_ids"], + "additionalProperties": true, + "properties": { + "id": { + "type": "string", + "description": "Unique fulfillment method identifier.", + "ucp_request": {"create": "omit", "update": "required"} + }, + "type": { + "type": "string", + "enum": ["shipping", "pickup"], + "description": "Fulfillment method type.", + "ucp_request": {"create": "required", "update": "omit"} + }, + "line_item_ids": { + "type": "array", + "description": "Line item IDs fulfilled via this method.", + "items": { "type": "string" }, + "ucp_request": {"create": "optional", "update": "required"} + }, + "destinations": { + "type": "array", + "description": "Available destinations. For shipping: addresses. For pickup: retail locations.", + "items": { "$ref": "fulfillment_destination.json" } + }, + "selected_destination_id": { + "type": ["string", "null"], + "description": "ID of the selected destination." + }, + "groups": { + "type": "array", + "description": "Fulfillment groups for selecting options. Agent sets selected_option_id on groups to choose shipping method.", + "items": { "$ref": "fulfillment_group.json" } + } + } +} diff --git a/protocol/schemas/shopping/types/fulfillment_option.json b/protocol/schemas/shopping/types/fulfillment_option.json new file mode 100644 index 00000000..ad879085 --- /dev/null +++ b/protocol/schemas/shopping/types/fulfillment_option.json @@ -0,0 +1,52 @@ +{ + "$schema": "https://json-schema.org/draft/2020-12/schema", + "$id": "https://ucp.dev/schemas/shopping/types/fulfillment_option.json", + "title": "Fulfillment Option", + "description": "A fulfillment option within a group (e.g., Standard Shipping $5, Express $15).", + "type": "object", + "ucp_shared_request": true, + "required": ["id", "title", "totals"], + "additionalProperties": true, + "properties": { + "id": { + "type": "string", + "description": "Unique fulfillment option identifier.", + "ucp_request": "omit" + }, + "title": { + "type": "string", + "description": "Short label (e.g., 'Express Shipping', 'Curbside Pickup').", + "ucp_request": "omit" + }, + "description": { + "type": "string", + "description": "Complete context for buyer decision (e.g., 'Arrives Dec 12-15 via FedEx').", + "ucp_request": "omit" + }, + "carrier": { + "type": "string", + "description": "Carrier name (for shipping).", + "ucp_request": "omit" + }, + "earliest_fulfillment_time": { + "type": "string", + "format": "date-time", + "description": "Earliest fulfillment date.", + "ucp_request": "omit" + }, + "latest_fulfillment_time": { + "type": "string", + "format": "date-time", + "description": "Latest fulfillment date.", + "ucp_request": "omit" + }, + "totals": { + "type": "array", + "items": { + "$ref": "total.json" + }, + "description": "Fulfillment option totals breakdown.", + "ucp_request": "omit" + } + } +} diff --git a/protocol/schemas/shopping/types/item.json b/protocol/schemas/shopping/types/item.json new file mode 100644 index 00000000..1893e7b4 --- /dev/null +++ b/protocol/schemas/shopping/types/item.json @@ -0,0 +1,34 @@ +{ + "$schema": "https://json-schema.org/draft/2020-12/schema", + "$id": "https://ucp.dev/schemas/shopping/types/item.json", + "title": "Item", + "type": "object", + "required": [ + "id", + "title", + "price" + ], + "properties": { + "id": { + "type": "string", + "description": "The product identifier, often the SKU, required to resolve the product details associated with this line item. Should be recognized by both the Platform, and the Business." + }, + "title": { + "type": "string", + "description": "Product title.", + "ucp_request": "omit" + }, + "price": { + "type": "integer", + "description": "Unit price in minor (cents) currency units.", + "minimum": 0, + "ucp_request": "omit" + }, + "image_url": { + "type": "string", + "description": "Product image URI.", + "format": "uri", + "ucp_request": "omit" + } + } +} diff --git a/protocol/schemas/shopping/types/line_item.json b/protocol/schemas/shopping/types/line_item.json new file mode 100644 index 00000000..0eba9ed0 --- /dev/null +++ b/protocol/schemas/shopping/types/line_item.json @@ -0,0 +1,46 @@ +{ + "$schema": "https://json-schema.org/draft/2020-12/schema", + "$id": "https://ucp.dev/schemas/shopping/types/line_item.json", + "title": "Line Item", + "type": "object", + "description": "Line item object. Expected to use the currency of the parent object.", + "required": [ + "id", + "item", + "quantity", + "totals" + ], + "properties": { + "id": { + "type": "string", + "ucp_request": { + "create": "omit", + "update": "optional" + } + }, + "item": { + "$ref": "item.json" + }, + "quantity": { + "type": "integer", + "description": "Quantity of the item being purchased.", + "minimum": 1 + }, + "totals": { + "type": "array", + "items": { + "$ref": "total.json" + }, + "description": "Line item totals breakdown.", + "ucp_request": "omit" + }, + "parent_id": { + "type": "string", + "description": "Parent line item identifier for any nested structures.", + "ucp_request": { + "create": "omit", + "update": "optional" + } + } + } +} diff --git a/protocol/schemas/shopping/types/link.json b/protocol/schemas/shopping/types/link.json new file mode 100644 index 00000000..b377b4a0 --- /dev/null +++ b/protocol/schemas/shopping/types/link.json @@ -0,0 +1,25 @@ +{ + "$schema": "https://json-schema.org/draft/2020-12/schema", + "$id": "https://ucp.dev/schemas/shopping/types/link.json", + "title": "Link", + "type": "object", + "required": [ + "type", + "url" + ], + "properties": { + "type": { + "type": "string", + "description": "Type of link. Well-known values: `privacy_policy`, `terms_of_service`, `refund_policy`, `shipping_policy`, `faq`. Consumers SHOULD handle unknown values gracefully by displaying them using the `title` field or omitting the link." + }, + "url": { + "type": "string", + "description": "The actual URL pointing to the content to be displayed.", + "format": "uri" + }, + "title": { + "type": "string", + "description": "Optional display text for the link. When provided, use this instead of generating from type." + } + } +} diff --git a/protocol/schemas/shopping/types/merchant_fulfillment_config.json b/protocol/schemas/shopping/types/merchant_fulfillment_config.json new file mode 100644 index 00000000..5f049e48 --- /dev/null +++ b/protocol/schemas/shopping/types/merchant_fulfillment_config.json @@ -0,0 +1,35 @@ +{ + "$schema": "https://json-schema.org/draft/2020-12/schema", + "$id": "https://ucp.dev/schemas/shopping/types/merchant_fulfillment_config.json", + "title": "Merchant Fulfillment Config", + "description": "Merchant's fulfillment configuration.", + "type": "object", + "properties": { + "allows_multi_destination": { + "type": "object", + "description": "Permits multiple destinations per method type.", + "properties": { + "shipping": { + "type": "boolean", + "description": "Multiple shipping destinations allowed." + }, + "pickup": { + "type": "boolean", + "description": "Multiple pickup locations allowed." + } + }, + "additionalProperties": false + }, + "allows_method_combinations": { + "type": "array", + "description": "Allowed method type combinations.", + "items": { + "type": "array", + "items": { + "type": "string", + "enum": ["shipping", "pickup"] + } + } + } + } +} diff --git a/protocol/schemas/shopping/types/message.json b/protocol/schemas/shopping/types/message.json new file mode 100644 index 00000000..c0bbbe90 --- /dev/null +++ b/protocol/schemas/shopping/types/message.json @@ -0,0 +1,18 @@ +{ + "$schema": "https://json-schema.org/draft/2020-12/schema", + "$id": "https://ucp.dev/schemas/shopping/types/message.json", + "title": "Message", + "type": "object", + "description": "Container for error, warning, or info messages.", + "oneOf": [ + { + "$ref": "message_error.json" + }, + { + "$ref": "message_warning.json" + }, + { + "$ref": "message_info.json" + } + ] +} diff --git a/protocol/schemas/shopping/types/message_error.json b/protocol/schemas/shopping/types/message_error.json new file mode 100644 index 00000000..14ccd8ff --- /dev/null +++ b/protocol/schemas/shopping/types/message_error.json @@ -0,0 +1,48 @@ +{ + "$schema": "https://json-schema.org/draft/2020-12/schema", + "$id": "https://ucp.dev/schemas/shopping/types/message_error.json", + "title": "Message Error", + "type": "object", + "required": [ + "type", + "code", + "content", + "severity" + ], + "properties": { + "type": { + "type": "string", + "const": "error", + "description": "Message type discriminator." + }, + "code": { + "$ref": "error_code.json" + }, + "path": { + "type": "string", + "description": "RFC 9535 JSONPath to the component the message refers to (e.g., $.items[1])." + }, + "content_type": { + "type": "string", + "enum": [ + "plain", + "markdown" + ], + "default": "plain", + "description": "Content format, default = plain." + }, + "content": { + "type": "string", + "description": "Human-readable message." + }, + "severity": { + "type": "string", + "enum": [ + "recoverable", + "requires_buyer_input", + "requires_buyer_review" + ], + "description": "Declares who resolves this error. 'recoverable': agent can fix via API. 'requires_buyer_input': merchant requires information their API doesn't support collecting programmatically (checkout incomplete). 'requires_buyer_review': buyer must authorize before order placement due to policy, regulatory, or entitlement rules (checkout complete). Errors with 'requires_*' severity contribute to 'status: requires_escalation'." + } + } +} diff --git a/protocol/schemas/shopping/types/message_info.json b/protocol/schemas/shopping/types/message_info.json new file mode 100644 index 00000000..4960378b --- /dev/null +++ b/protocol/schemas/shopping/types/message_info.json @@ -0,0 +1,38 @@ +{ + "$schema": "https://json-schema.org/draft/2020-12/schema", + "$id": "https://ucp.dev/schemas/shopping/types/message_info.json", + "title": "Message Info", + "type": "object", + "required": [ + "type", + "content" + ], + "properties": { + "type": { + "type": "string", + "const": "info", + "description": "Message type discriminator." + }, + "path": { + "type": "string", + "description": "RFC 9535 JSONPath to the component the message refers to." + }, + "code": { + "type": "string", + "description": "Info code for programmatic handling." + }, + "content_type": { + "type": "string", + "enum": [ + "plain", + "markdown" + ], + "default": "plain", + "description": "Content format, default = plain." + }, + "content": { + "type": "string", + "description": "Human-readable message." + } + } +} diff --git a/protocol/schemas/shopping/types/message_warning.json b/protocol/schemas/shopping/types/message_warning.json new file mode 100644 index 00000000..20695b73 --- /dev/null +++ b/protocol/schemas/shopping/types/message_warning.json @@ -0,0 +1,39 @@ +{ + "$schema": "https://json-schema.org/draft/2020-12/schema", + "$id": "https://ucp.dev/schemas/shopping/types/message_warning.json", + "title": "Message Warning", + "type": "object", + "required": [ + "type", + "code", + "content" + ], + "properties": { + "type": { + "type": "string", + "const": "warning", + "description": "Message type discriminator." + }, + "path": { + "type": "string", + "description": "JSONPath (RFC 9535) to related field (e.g., $.line_items[0])." + }, + "code": { + "type": "string", + "description": "Warning code. Machine-readable identifier for the warning type (e.g., final_sale, prop65, fulfillment_changed, age_restricted, etc.)." + }, + "content": { + "type": "string", + "description": "Human-readable warning message that MUST be displayed." + }, + "content_type": { + "type": "string", + "enum": [ + "plain", + "markdown" + ], + "default": "plain", + "description": "Content format, default = plain." + } + } +} diff --git a/protocol/schemas/shopping/types/order_confirmation.json b/protocol/schemas/shopping/types/order_confirmation.json new file mode 100644 index 00000000..45a2a59a --- /dev/null +++ b/protocol/schemas/shopping/types/order_confirmation.json @@ -0,0 +1,22 @@ +{ + "$schema": "https://json-schema.org/draft/2020-12/schema", + "$id": "https://ucp.dev/schemas/shopping/types/order_confirmation.json", + "title": "Order Confirmation", + "description": "Order details available at the time of checkout completion.", + "type": "object", + "required": [ + "id", + "permalink_url" + ], + "properties": { + "id": { + "type": "string", + "description": "Unique order identifier." + }, + "permalink_url": { + "type": "string", + "format": "uri", + "description": "Permalink to access the order on merchant site." + } + } +} diff --git a/protocol/schemas/shopping/types/order_line_item.json b/protocol/schemas/shopping/types/order_line_item.json new file mode 100644 index 00000000..758e6b63 --- /dev/null +++ b/protocol/schemas/shopping/types/order_line_item.json @@ -0,0 +1,60 @@ +{ + "$schema": "https://json-schema.org/draft/2020-12/schema", + "$id": "https://ucp.dev/schemas/shopping/types/order_line_item.json", + "title": "Order Line Item", + "type": "object", + "required": [ + "id", + "item", + "quantity", + "totals", + "status" + ], + "properties": { + "id": { + "type": "string", + "description": "Line item identifier." + }, + "item": { + "$ref": "item.json", + "description": "Product data (id, title, price, image_url)." + }, + "quantity": { + "type": "object", + "required": ["total", "fulfilled"], + "properties": { + "total": { + "type": "integer", + "minimum": 0, + "description": "Current total quantity." + }, + "fulfilled": { + "type": "integer", + "minimum": 0, + "description": "Quantity fulfilled (sum from fulfillment events)." + } + }, + "description": "Quantity tracking. Both total and fulfilled are derived from events." + }, + "totals": { + "type": "array", + "items": { + "$ref": "total.json" + }, + "description": "Line item totals breakdown." + }, + "status": { + "type": "string", + "enum": [ + "processing", + "partial", + "fulfilled" + ], + "description": "Derived status: fulfilled if quantity.fulfilled == quantity.total, partial if quantity.fulfilled > 0, otherwise processing." + }, + "parent_id": { + "type": "string", + "description": "Parent line item identifier for any nested structures." + } + } +} diff --git a/protocol/schemas/shopping/types/payment_credential.json b/protocol/schemas/shopping/types/payment_credential.json new file mode 100644 index 00000000..d7be3a0a --- /dev/null +++ b/protocol/schemas/shopping/types/payment_credential.json @@ -0,0 +1,15 @@ +{ + "$schema": "https://json-schema.org/draft/2020-12/schema", + "$id": "https://ucp.dev/schemas/shopping/types/payment_credential.json", + "title": "Payment Credential", + "description": "The base definition for any payment credential. Handlers define specific credential types.", + "type": "object", + "required": ["type"], + "properties": { + "type": { + "type": "string", + "description": "The credential type discriminator. Specific schemas will constrain this to a constant value." + } + }, + "additionalProperties": true +} diff --git a/protocol/schemas/shopping/types/payment_identity.json b/protocol/schemas/shopping/types/payment_identity.json new file mode 100644 index 00000000..01c3ed38 --- /dev/null +++ b/protocol/schemas/shopping/types/payment_identity.json @@ -0,0 +1,14 @@ +{ + "$schema": "https://json-schema.org/draft/2020-12/schema", + "$id": "https://ucp.dev/schemas/shopping/types/payment_identity.json", + "title": "Payment Identity", + "description": "Identity of a participant for token binding. The access_token uniquely identifies the participant who tokens should be bound to.", + "type": "object", + "required": ["access_token"], + "properties": { + "access_token": { + "type": "string", + "description": "Unique identifier for this participant, obtained during onboarding with the tokenizer." + } + } +} diff --git a/protocol/schemas/shopping/types/payment_instrument.json b/protocol/schemas/shopping/types/payment_instrument.json new file mode 100644 index 00000000..aed22730 --- /dev/null +++ b/protocol/schemas/shopping/types/payment_instrument.json @@ -0,0 +1,56 @@ +{ + "$schema": "https://json-schema.org/draft/2020-12/schema", + "$id": "https://ucp.dev/schemas/shopping/types/payment_instrument.json", + "title": "Payment Instrument", + "description": "The base definition for any payment instrument. It links the instrument to a specific payment handler.", + "type": "object", + "required": [ + "id", + "handler_id", + "type" + ], + "properties": { + "id": { + "type": "string", + "description": "A unique identifier for this instrument instance, assigned by the platform." + }, + "handler_id": { + "type": "string", + "description": "The unique identifier for the handler instance that produced this instrument. This corresponds to the 'id' field in the Payment Handler definition." + }, + "type": { + "type": "string", + "description": "The broad category of the instrument (e.g., 'card', 'tokenized_card'). Specific schemas will constrain this to a constant value." + }, + "billing_address": { + "$ref": "postal_address.json", + "description": "The billing address associated with this payment method." + }, + "credential": { + "$ref": "payment_credential.json" + }, + "display": { + "type": "object", + "description": "Display information for this payment instrument. Each payment instrument schema defines its specific display properties, as outlined by the payment handler." + } + }, + "additionalProperties": true, + "$defs": { + "selected_payment_instrument": { + "title": "Selected Payment Instrument", + "description": "A payment instrument with selection state.", + "allOf": [ + { "$ref": "#" }, + { + "type": "object", + "properties": { + "selected": { + "type": "boolean", + "description": "Whether this instrument is selected by the user." + } + } + } + ] + } + } +} diff --git a/protocol/schemas/shopping/types/platform_fulfillment_config.json b/protocol/schemas/shopping/types/platform_fulfillment_config.json new file mode 100644 index 00000000..ff4278f3 --- /dev/null +++ b/protocol/schemas/shopping/types/platform_fulfillment_config.json @@ -0,0 +1,14 @@ +{ + "$schema": "https://json-schema.org/draft/2020-12/schema", + "$id": "https://ucp.dev/schemas/shopping/types/platform_fulfillment_config.json", + "title": "Platform Fulfillment Config", + "description": "Platform's fulfillment configuration.", + "type": "object", + "properties": { + "supports_multi_group": { + "type": "boolean", + "default": false, + "description": "Enables multiple groups per method." + } + } +} diff --git a/protocol/schemas/shopping/types/postal_address.json b/protocol/schemas/shopping/types/postal_address.json new file mode 100644 index 00000000..3cf69437 --- /dev/null +++ b/protocol/schemas/shopping/types/postal_address.json @@ -0,0 +1,44 @@ +{ + "$schema": "https://json-schema.org/draft/2020-12/schema", + "$id": "https://ucp.dev/schemas/shopping/types/postal_address.json", + "title": "Postal Address", + "type": "object", + "properties": { + "extended_address": { + "type": "string", + "description": "An address extension such as an apartment number, C/O or alternative name." + }, + "street_address": { + "type": "string", + "description": "The street address." + }, + "address_locality": { + "type": "string", + "description": "The locality in which the street address is, and which is in the region. For example, Mountain View." + }, + "address_region": { + "type": "string", + "description": "The region in which the locality is, and which is in the country. Required for applicable countries (i.e. state in US, province in CA). For example, California or another appropriate first-level Administrative division." + }, + "address_country": { + "type": "string", + "description": "The country. Recommended to be in 2-letter ISO 3166-1 alpha-2 format, for example \"US\". For backward compatibility, a 3-letter ISO 3166-1 alpha-3 country code such as \"SGP\" or a full country name such as \"Singapore\" can also be used." + }, + "postal_code": { + "type": "string", + "description": "The postal code. For example, 94043." + }, + "first_name": { + "type": "string", + "description": "Optional. First name of the contact associated with the address." + }, + "last_name": { + "type": "string", + "description": "Optional. Last name of the contact associated with the address." + }, + "phone_number": { + "type": "string", + "description": "Optional. Phone number of the contact associated with the address." + } + } +} diff --git a/protocol/schemas/shopping/types/retail_location.json b/protocol/schemas/shopping/types/retail_location.json new file mode 100644 index 00000000..8ec9c676 --- /dev/null +++ b/protocol/schemas/shopping/types/retail_location.json @@ -0,0 +1,25 @@ +{ + "$schema": "https://json-schema.org/draft/2020-12/schema", + "$id": "https://ucp.dev/schemas/shopping/types/retail_location.json", + "title": "Retail Location", + "description": "A pickup location (retail store, locker, etc.).", + "type": "object", + "ucp_shared_request": true, + "required": ["id", "name"], + "additionalProperties": true, + "properties": { + "id": { + "type": "string", + "description": "Unique location identifier.", + "ucp_request": "omit" + }, + "name": { + "type": "string", + "description": "Location name (e.g., store name)." + }, + "address": { + "$ref": "postal_address.json", + "description": "Physical address of the location." + } + } +} diff --git a/protocol/schemas/shopping/types/shipping_destination.json b/protocol/schemas/shopping/types/shipping_destination.json new file mode 100644 index 00000000..a452a6b2 --- /dev/null +++ b/protocol/schemas/shopping/types/shipping_destination.json @@ -0,0 +1,26 @@ +{ + "$schema": "https://json-schema.org/draft/2020-12/schema", + "$id": "https://ucp.dev/schemas/shopping/types/shipping_destination.json", + "title": "Shipping Destination", + "description": "Shipping destination.", + "type": "object", + "ucp_shared_request": true, + "allOf": [ + { + "$ref": "postal_address.json" + }, + { + "type": "object", + "properties": { + "id": { + "type": "string", + "description": "ID specific to this shipping destination.", + "ucp_request": "optional" + } + }, + "required": [ + "id" + ] + } + ] +} diff --git a/protocol/schemas/shopping/types/token_credential.json b/protocol/schemas/shopping/types/token_credential.json new file mode 100644 index 00000000..aa0cde38 --- /dev/null +++ b/protocol/schemas/shopping/types/token_credential.json @@ -0,0 +1,26 @@ +{ + "$schema": "https://json-schema.org/draft/2020-12/schema", + "$id": "https://ucp.dev/schemas/shopping/types/token_credential.json", + "title": "Token Credential", + "description": "Base token credential schema. Concrete payment handlers may extend this schema with additional fields and define their own constraints.", + "allOf": [ + { + "$ref": "payment_credential.json" + }, + { + "type": "object", + "required": ["type", "token"], + "properties": { + "type": { + "type": "string", + "description": "The specific type of token produced by the handler (e.g., 'stripe_token')." + }, + "token": { + "type": "string", + "description": "The token value.", + "ucp_response": "omit" + } + } + } + ] +} diff --git a/protocol/schemas/shopping/types/total.json b/protocol/schemas/shopping/types/total.json new file mode 100644 index 00000000..4d2e24ad --- /dev/null +++ b/protocol/schemas/shopping/types/total.json @@ -0,0 +1,37 @@ +{ + "$schema": "https://json-schema.org/draft/2020-12/schema", + "$id": "https://ucp.dev/schemas/shopping/types/total.json", + "title": "Total", + "type": "object", + "required": [ + "type", + "amount" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "items_discount", + "subtotal", + "discount", + "fulfillment", + "tax", + "fee", + "total" + ], + "description": "Type of total categorization.", + "ucp_request": "omit" + }, + "display_text": { + "type": "string", + "description": "Text to display against the amount. Should reflect appropriate method (e.g., 'Shipping', 'Delivery').", + "ucp_request": "omit" + }, + "amount": { + "type": "integer", + "description": "If type == total, sums subtotal - discount + fulfillment + tax + fee. Should be >= 0. Amount in minor (cents) currency units.", + "minimum": 0, + "ucp_request": "omit" + } + } +} diff --git a/protocol/schemas/transports/embedded_config.json b/protocol/schemas/transports/embedded_config.json new file mode 100644 index 00000000..1310100f --- /dev/null +++ b/protocol/schemas/transports/embedded_config.json @@ -0,0 +1,14 @@ +{ + "$schema": "https://json-schema.org/draft/2020-12/schema", + "$id": "https://ucp.dev/schemas/transports/embedded_config.json", + "title": "Embedded Transport Config", + "description": "Per-checkout configuration for embedded transport binding. Allows businesses to vary ECP availability and delegations based on cart contents, agent authorization, or policy.", + "type": "object", + "properties": { + "delegate": { + "type": "array", + "items": { "type": "string" }, + "description": "Delegations the business allows. At service-level, declares available delegations. In checkout responses, confirms accepted delegations for this session." + } + } +} diff --git a/protocol/schemas/ucp.json b/protocol/schemas/ucp.json new file mode 100644 index 00000000..d6cffac8 --- /dev/null +++ b/protocol/schemas/ucp.json @@ -0,0 +1,211 @@ +{ + "$schema": "https://json-schema.org/draft/2020-12/schema", + "$id": "https://ucp.dev/schemas/ucp.json", + "title": "UCP Metadata", + "description": "Protocol metadata for discovery profiles and responses. Uses slim schema pattern with context-specific required fields.", + + "$defs": { + "version": { + "type": "string", + "pattern": "^\\d{4}-\\d{2}-\\d{2}$", + "description": "UCP version in YYYY-MM-DD format." + }, + + "reverse_domain_name": { + "type": "string", + "pattern": "^[a-z][a-z0-9]*(?:\\.[a-z][a-z0-9_]*)+$", + "description": "Reverse-domain identifier (e.g., com.google.pay, dev.ucp.shopping.checkout)" + }, + + "entity": { + "type": "object", + "description": "Shared foundation for all UCP entities.", + "required": ["version"], + "properties": { + "version": { + "$ref": "#/$defs/version", + "description": "Entity version in YYYY-MM-DD format." + }, + "spec": { + "type": "string", + "format": "uri", + "description": "URL to human-readable specification document." + }, + "schema": { + "type": "string", + "format": "uri", + "description": "URL to JSON Schema defining this entity's structure and payloads." + }, + "id": { + "type": "string", + "description": "Unique identifier for this entity instance. Used to disambiguate when multiple instances exist." + }, + "config": { + "type": "object", + "description": "Entity-specific configuration. Structure defined by each entity's schema.", + "additionalProperties": true + } + } + }, + + "base": { + "description": "Base UCP metadata with shared properties for all schema types.", + "type": "object", + "required": ["version"], + "properties": { + "version": { "$ref": "#/$defs/version" }, + "services": { + "type": "object", + "description": "Service registry keyed by reverse-domain name.", + "propertyNames": { "$ref": "#/$defs/reverse_domain_name" }, + "additionalProperties": { + "type": "array", + "items": { "$ref": "service.json#/$defs/base" } + } + }, + "capabilities": { + "type": "object", + "description": "Capability registry keyed by reverse-domain name.", + "propertyNames": { "$ref": "#/$defs/reverse_domain_name" }, + "additionalProperties": { + "type": "array", + "items": { "$ref": "capability.json#/$defs/base" } + } + }, + "payment_handlers": { + "type": "object", + "description": "Payment handler registry keyed by reverse-domain name.", + "propertyNames": { "$ref": "#/$defs/reverse_domain_name" }, + "additionalProperties": { + "type": "array", + "items": { "$ref": "payment_handler.json#/$defs/base" } + } + } + } + }, + + "platform_schema": { + "title": "UCP Platform Schema", + "description": "Full UCP metadata for platform-level configuration. Hosted at a URI advertised by the platform in request headers.", + "allOf": [ + { "$ref": "#/$defs/base" }, + { + "required": ["services", "payment_handlers"], + "properties": { + "services": { + "additionalProperties": { + "items": { "$ref": "service.json#/$defs/platform_schema" } + } + }, + "capabilities": { + "additionalProperties": { + "items": { "$ref": "capability.json#/$defs/platform_schema" } + } + }, + "payment_handlers": { + "additionalProperties": { + "items": { + "$ref": "payment_handler.json#/$defs/platform_schema" + } + } + } + } + } + ] + }, + + "business_schema": { + "title": "UCP Business Schema", + "description": "UCP metadata for business/merchant-level configuration. Subset of platform schema with business-specific settings.", + "allOf": [ + { "$ref": "#/$defs/base" }, + { + "required": ["services", "payment_handlers"], + "properties": { + "services": { + "additionalProperties": { + "items": { "$ref": "service.json#/$defs/business_schema" } + } + }, + "capabilities": { + "additionalProperties": { + "items": { "$ref": "capability.json#/$defs/business_schema" } + } + }, + "payment_handlers": { + "additionalProperties": { + "items": { + "$ref": "payment_handler.json#/$defs/business_schema" + } + } + } + } + } + ] + }, + + "response_checkout_schema": { + "title": "UCP Checkout Response Schema", + "description": "UCP metadata for checkout responses.", + "allOf": [ + { "$ref": "#/$defs/base" }, + { + "required": ["payment_handlers"], + "properties": { + "services": { + "additionalProperties": { + "items": { "$ref": "service.json#/$defs/response_schema" } + } + }, + "capabilities": { + "additionalProperties": { + "items": { "$ref": "capability.json#/$defs/response_schema" } + } + }, + "payment_handlers": { + "additionalProperties": { + "items": { + "$ref": "payment_handler.json#/$defs/response_schema" + } + } + } + } + } + ] + }, + + "response_order_schema": { + "title": "UCP Order Response Schema", + "description": "UCP metadata for order responses. No payment handlers needed post-purchase.", + "allOf": [ + { "$ref": "#/$defs/base" }, + { + "properties": { + "capabilities": { + "additionalProperties": { + "items": { "$ref": "capability.json#/$defs/response_schema" } + } + } + } + } + ] + }, + + "response_cart_schema": { + "title": "UCP Cart Response Schema", + "description": "UCP metadata for cart responses. No payment handlers needed pre-checkout.", + "allOf": [ + { "$ref": "#/$defs/base" }, + { + "properties": { + "capabilities": { + "additionalProperties": { + "items": { "$ref": "capability.json#/$defs/response_schema" } + } + } + } + } + ] + } + } +} diff --git a/protocol/scripts/generate_models.sh b/protocol/scripts/generate_models.sh new file mode 100755 index 00000000..10d3cab3 --- /dev/null +++ b/protocol/scripts/generate_models.sh @@ -0,0 +1,161 @@ +#!/bin/bash +# MIT License +# +# Copyright 2023-present, Shopify Inc. +# +# Permission is hereby granted, free of charge, to any person obtaining a copy +# of this software and associated documentation files (the "Software"), to deal +# in the Software without restriction, including without limitation the rights +# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +# copies of the Software, and to permit persons to whom the Software is +# furnished to do so, subject to the following conditions: +# +# The above copyright notice and this permission notice shall be included in all +# copies or substantial portions of the Software. +# +# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +set -euo pipefail + +REPO_ROOT="$(cd "$(dirname "${BASH_SOURCE[0]}")/../.." && pwd)" +SPEC_DIR="${REPO_ROOT}/protocol/schemas/shopping" +SERVICES_DIR="${REPO_ROOT}/protocol/services/shopping" + +LANG="" +while [[ $# -gt 0 ]]; do + case "$1" in + --lang) LANG="$2"; shift 2 ;; + *) echo "Unknown argument: $1"; exit 1 ;; + esac +done + +if [[ -z "$LANG" ]]; then + echo "Usage: $0 --lang " + exit 1 +fi + +if ! command -v quicktype &>/dev/null; then + echo "quicktype not found. Install via: pnpm install -g quicktype" + exit 1 +fi + +TEMP_SCHEMAS=() +cleanup() { rm -f "${TEMP_SCHEMAS[@]}"; } +trap cleanup EXIT + +# quicktype generates non-deterministic color-based names (e.g. PurplePayment, FluffyPayment) +# when inline objects collide with existing type names. Injecting "title" fields into the +# extracted result schemas gives quicktype deterministic naming hints. +# +# We also rewrite $ref paths from "../../schemas/shopping/" to "" so that refs resolve +# correctly when the temp file is placed alongside the main schemas in SPEC_DIR. +extract_result_schema() { + local method_name="$1" + local output_file="$2" + local root_title="$3" + local checkout_title="$4" + local payment_title="$5" + jq --arg method "$method_name" \ + --arg root_title "$root_title" \ + --arg checkout_title "$checkout_title" \ + --arg payment_title "$payment_title" \ + ' + .methods[] | select(.name == $method) | .result.schema + | .title = $root_title + | .properties.checkout.title = $checkout_title + | .properties.checkout.properties.payment.title = $payment_title + | walk(if type == "object" and has("$ref") then + .["$ref"] |= gsub("../../schemas/shopping/"; "") + else . end) + | .properties.checkout.properties.payment.properties.instruments = + {"$ref": "payment.json#/properties/instruments"} + ' \ + "${SERVICES_DIR}/embedded.openrpc.json" > "$output_file" + TEMP_SCHEMAS+=("$output_file") +} + +extract_result_schema "ec.payment.instruments_change_request" \ + "${SPEC_DIR}/instruments_change_result.json" \ + "InstrumentsChangeResult" "InstrumentsChangeCheckout" "InstrumentsChangePayment" + +extract_result_schema "ec.payment.credential_request" \ + "${SPEC_DIR}/credential_result.json" \ + "CredentialResult" "CredentialCheckout" "CredentialPayment" + +case "$LANG" in + kotlin) + OUTPUT="${REPO_ROOT}/android/lib/src/main/java/com/shopify/checkoutkit/Models.kt" + quicktype \ + --lang kotlin \ + --src-lang schema \ + --framework kotlinx \ + --src "${SPEC_DIR}/checkout.json" \ + --src "${SPEC_DIR}/types/"*.json \ + --src "${SPEC_DIR}/payment.json" \ + --src "${SPEC_DIR}/order.json" \ + --src "${SPEC_DIR}/instruments_change_result.json" \ + --src "${SPEC_DIR}/credential_result.json" \ + --package "com.shopify.checkoutkit" \ + -o "${OUTPUT}" + + # Post-process for -Xexplicit-api=strict: every top-level and member declaration that + # is part of the public API surface needs an explicit 'public' modifier. + # + # quicktype Kotlin does not support --access-level, so we add 'public' via sed. + # Patterns: top-level classes/aliases, 4-space-indented constructor properties, + # inner classes inside sealed classes, and inline constructor params in enum/sealed. + sed -i '' \ + -e 's/^data class /public data class /' \ + -e 's/^sealed class /public sealed class /' \ + -e 's/^enum class /public enum class /' \ + -e 's/^typealias /public typealias /' \ + -e 's/^ class / public class /' \ + -e 's/^ val / public val /' \ + -e 's/(val value: /(public val value: /' \ + "${OUTPUT}" + + # Rename types that conflict with platform or Kotlin stdlib names. + # quicktype emits 'data class Binding (' (with space before paren). + # Apply the same renames in Swift and React Native generators for consistency. + sed -i '' \ + -e 's/public data class Binding (/public data class TokenBinding (/' \ + -e 's/: Binding$/: TokenBinding/' \ + -e 's/Binding\.serializer()/TokenBinding.serializer()/' \ + "${OUTPUT}" + + echo "Generated ${OUTPUT}" + ;; + + swift) + OUTPUT="${REPO_ROOT}/swift/Sources/ShopifyCheckoutKit/Models.swift" + quicktype \ + --lang swift5 \ + --src-lang schema \ + --src "${SPEC_DIR}/checkout.json" \ + --src "${SPEC_DIR}/types/"*.json \ + --src "${SPEC_DIR}/payment.json" \ + --src "${SPEC_DIR}/order.json" \ + --src "${SPEC_DIR}/instruments_change_result.json" \ + --src "${SPEC_DIR}/credential_result.json" \ + -o "${OUTPUT}" + + # Rename types that conflict with platform or Swift stdlib names. + # Apply the same renames as in the Kotlin generator for consistency. + sed -i '' \ + -e 's/class Binding /class TokenBinding /' \ + -e 's/struct Binding /struct TokenBinding /' \ + -e 's/: Binding$/: TokenBinding/' \ + "${OUTPUT}" + + echo "Generated ${OUTPUT}" + ;; + + *) + echo "Unsupported language: $LANG. Use kotlin or swift." + exit 1 + ;; +esac diff --git a/protocol/services/shopping/embedded.openrpc.json b/protocol/services/shopping/embedded.openrpc.json new file mode 100644 index 00000000..e058cde2 --- /dev/null +++ b/protocol/services/shopping/embedded.openrpc.json @@ -0,0 +1,243 @@ +{ + "openrpc": "1.3.2", + "info": { + "title": "UCP Shopping Embedded Protocol", + "version": "2026-01-11", + "description": "Embedded Protocol (EP) methods for the UCP shopping service. Methods are sent from Merchant to Host via postMessage using JSON-RPC 2.0. Method prefixes indicate capability scope: ec.* (checkout). Future capabilities may define additional prefixes (e.g., eo.* for order). Schema references are logical pointers - actual payload shape is determined by negotiated capabilities.\n\nEmbedded Protocol is a client-to-client postMessage interface, so there is no endpoint URL to access this API. Platforms detect merchant support for this protocol based on the presence of `services[\"dev.ucp.shopping\"][transport=embedded]` in discovery responses." + }, + "servers": [], + "methods": [ + { + "name": "ec.ready", + "summary": "Handshake from merchant to host", + "description": "Initiates the Embedded Checkout Protocol. Merchant declares which delegations it accepts, host responds with optional channel upgrade and initial checkout state.", + "params": [ + { + "name": "delegate", + "required": true, + "schema": { + "type": "array", + "description": "Delegation types the merchant accepts. Must be subset of checkout.embedded.delegations.", + "items": { + "type": "string", + "pattern": "^[a-z_]+(?:\\.[a-z_]+)*$" + }, + "uniqueItems": true + } + } + ], + "result": { + "name": "readyResult", + "schema": { + "type": "object", + "description": "Handshake response from host.", + "properties": { + "upgrade": { + "type": "object", + "description": "Channel upgrade instructions. If present, switch to provided MessagePort.", + "properties": { + "port": { + "type": "object", + "description": "MessagePort for upgraded channel. Runtime type is MessagePort." + } + } + }, + "checkout": { + "$ref": "../../schemas/shopping/checkout.json", + "description": "Initial checkout state with host-provided data (saved instruments, addresses)." + } + } + } + } + }, + + { + "name": "ec.start", + "summary": "Checkout visible to buyer", + "description": "Merchant notifies host that checkout UI is visible and ready for interaction. Sent after successful ec.ready handshake.", + "params": [ + { + "name": "checkout", + "required": true, + "schema": { + "$ref": "../../schemas/shopping/checkout.json", + "description": "Current checkout state." + } + } + ] + }, + + { + "name": "ec.complete", + "summary": "Checkout completed successfully", + "description": "Merchant notifies host that order has been placed successfully.", + "params": [ + { + "name": "checkout", + "required": true, + "schema": { + "$ref": "../../schemas/shopping/checkout.json", + "description": "Final checkout state." + } + } + ] + }, + + { + "name": "ec.messages.change", + "summary": "Checkout messages changed", + "description": "Merchant notifies host that checkout.messages has changed. Includes errors, warnings, and info. Host should update UI accordingly.", + "params": [ + { + "name": "checkout", + "required": true, + "schema": { + "$ref": "../../schemas/shopping/checkout.json", + "description": "Current checkout state with updated messages." + } + } + ] + }, + + { + "name": "ec.line_items.change", + "summary": "Line items changed", + "description": "Merchant notifies host that checkout.line_items has changed (item added, removed, quantity updated).", + "params": [ + { + "name": "checkout", + "required": true, + "schema": { + "$ref": "../../schemas/shopping/checkout.json", + "description": "Current checkout state with updated line items." + } + } + ] + }, + + { + "name": "ec.buyer.change", + "summary": "Buyer information changed", + "description": "Merchant notifies host that checkout.buyer has changed (email, phone, address updated).", + "params": [ + { + "name": "checkout", + "required": true, + "schema": { + "$ref": "../../schemas/shopping/checkout.json", + "description": "Current checkout state with updated buyer." + } + } + ] + }, + + { + "name": "ec.payment.change", + "summary": "Payment state changed", + "description": "Merchant notifies host that checkout.payment has changed (instrument selected, status updated).", + "params": [ + { + "name": "checkout", + "required": true, + "schema": { + "$ref": "../../schemas/shopping/checkout.json", + "description": "Current checkout state with updated payment." + } + } + ] + }, + + { + "name": "ec.payment.instruments_change_request", + "summary": "Request payment instrument change", + "description": "Merchant requests host to present payment instrument selection UI for the buyer to change their payment method.", + "params": [ + { + "name": "checkout", + "required": true, + "schema": { + "$ref": "../../schemas/shopping/checkout.json", + "description": "Current checkout state." + } + } + ], + "result": { + "name": "instrumentsChangeResult", + "schema": { + "type": "object", + "description": "Checkout state after instrument selection.", + "required": ["checkout"], + "properties": { + "checkout": { + "type": "object", + "description": "Partial checkout update with payment instrument selection.", + "properties": { + "payment": { + "type": "object", + "properties": { + "selected_instrument_id": { + "type": "string", + "description": "ID of the selected payment instrument." + }, + "instruments": { + "type": "array", + "items": { + "$ref": "../../schemas/shopping/types/payment_instrument.json#/$defs/selected_payment_instrument" + }, + "description": "Available payment instruments after selection." + } + } + } + } + } + } + } + } + }, + + { + "name": "ec.payment.credential_request", + "summary": "Request payment credential", + "description": "Merchant requests host to collect payment credential for selected instrument (CVV, 3DS, wallet confirmation).", + "params": [ + { + "name": "checkout", + "required": true, + "schema": { + "$ref": "../../schemas/shopping/checkout.json", + "description": "Current checkout state with selected instrument." + } + } + ], + "result": { + "name": "credentialResult", + "schema": { + "type": "object", + "description": "Checkout state with payment credential ready for completion.", + "required": ["checkout"], + "properties": { + "checkout": { + "type": "object", + "description": "Partial checkout update with payment credential.", + "properties": { + "payment": { + "type": "object", + "properties": { + "instruments": { + "type": "array", + "items": { + "$ref": "../../schemas/shopping/types/payment_instrument.json#/$defs/selected_payment_instrument" + }, + "description": "Payment instruments with credential populated on selected instrument." + } + } + } + } + } + } + } + } + } + ], + "x-delegations": ["payment.instruments_change", "payment.credential"] +} diff --git a/swift/dev.yml b/swift/dev.yml index 711f6196..b91e030e 100644 --- a/swift/dev.yml +++ b/swift/dev.yml @@ -59,12 +59,3 @@ commands: `dev test` - Run all tests for the ShopifyCheckoutKit-Package. `dev test ` - Run only the specified test class. run: ./scripts/xcode_run test ShopifyCheckoutKit-Package "$1" - - apollo: - subcommands: - download_schema: - desc: "Download GraphQL Schema. Usage: dev apollo download_schema [accelerated|mobile-buy|all]" - run: ./Scripts/apollo_download_schema "$1" - codegen: - desc: "Generate Apollo Client models. Usage: dev apollo codegen [accelerated|mobile-buy|all]" - run: ./Scripts/apollo_codegen "$1"