From 1855b284d98471b564d57e3647528f2140631b82 Mon Sep 17 00:00:00 2001 From: psuzn Date: Wed, 17 Apr 2024 17:56:01 +0545 Subject: [PATCH] add binary api validation --- .github/workflows/build-linux.yml | 3 + .github/workflows/build-macos.yml | 3 + .github/workflows/release.yaml | 3 + .../main/kotlin/PackagingConventionPlugin.kt | 1 + build.gradle.kts | 1 + context-provider/api/context-provider.api | 4 + .../ApplicationContextInitializer.kt | 1 + gradle/libs.versions.toml | 2 + .../api/android/multiplatform-paths.api | 24 +++ .../api/desktop/multiplatform-paths.api | 22 +++ .../api/android/platform-identifier.api | 175 +++++++++++++++++ .../api/desktop/platform-identifier.api | 179 ++++++++++++++++++ 12 files changed, 418 insertions(+) create mode 100644 context-provider/api/context-provider.api create mode 100644 multiplatform-paths/api/android/multiplatform-paths.api create mode 100644 multiplatform-paths/api/desktop/multiplatform-paths.api create mode 100644 platform-identifier/api/android/platform-identifier.api create mode 100644 platform-identifier/api/desktop/platform-identifier.api diff --git a/.github/workflows/build-linux.yml b/.github/workflows/build-linux.yml index 6b18cf5..5f77836 100644 --- a/.github/workflows/build-linux.yml +++ b/.github/workflows/build-linux.yml @@ -39,6 +39,9 @@ jobs: - name: Lint and Static analysis run: ./gradlew detekt ktlintCheck --no-daemon --stacktrace + - name: Validate api compatibility + run: ./gradlew apiCheck --no-daemon --stacktrace + - name: Build Artifacts run: ./gradlew publishToMavenLocal diff --git a/.github/workflows/build-macos.yml b/.github/workflows/build-macos.yml index 783025d..129d35e 100644 --- a/.github/workflows/build-macos.yml +++ b/.github/workflows/build-macos.yml @@ -38,6 +38,9 @@ jobs: - name: Tests run: ./gradlew allTests -x tvosSimulatorArm64Test -x watchosSimulatorArm64Test + - name: Validate api compatibility + run: ./gradlew apiCheck --no-daemon --stacktrace + - name: Mac build run: | ./gradlew \ diff --git a/.github/workflows/release.yaml b/.github/workflows/release.yaml index 110838c..fc75114 100644 --- a/.github/workflows/release.yaml +++ b/.github/workflows/release.yaml @@ -41,6 +41,9 @@ jobs: restore-keys: | ${{ runner.os }}-gradle- + - name: Validate api compatibility + run: ./gradlew apiCheck --no-daemon --stacktrace + - name: Get version name id: extract_version_name run: | diff --git a/build-logic/src/main/kotlin/PackagingConventionPlugin.kt b/build-logic/src/main/kotlin/PackagingConventionPlugin.kt index e7f736d..52beac0 100644 --- a/build-logic/src/main/kotlin/PackagingConventionPlugin.kt +++ b/build-logic/src/main/kotlin/PackagingConventionPlugin.kt @@ -34,6 +34,7 @@ class PackagingConventionPlugin : Plugin { with(pluginManager) { apply(libs.plugins.mavenPublish) apply("signing") + apply(libs.plugins.binaryCompatibilityValidator) } configurePublishingMetadata() diff --git a/build.gradle.kts b/build.gradle.kts index c777b69..9082b90 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -13,6 +13,7 @@ plugins { alias(libs.plugins.ktlint) apply false alias(libs.plugins.detekt) apply false alias(libs.plugins.mavenPublish) apply false + alias(libs.plugins.binaryCompatibilityValidator) apply false id("module") base } diff --git a/context-provider/api/context-provider.api b/context-provider/api/context-provider.api new file mode 100644 index 0000000..505242e --- /dev/null +++ b/context-provider/api/context-provider.api @@ -0,0 +1,4 @@ +public final class me/sujanpoudel/utils/contextProvider/ApplicationContextInitializerKt { + public static final fun getApplicationContext ()Landroid/content/Context; +} + diff --git a/context-provider/src/androidMain/kotlin/me/sujanpoudel/utils/contextProvider/ApplicationContextInitializer.kt b/context-provider/src/androidMain/kotlin/me/sujanpoudel/utils/contextProvider/ApplicationContextInitializer.kt index 1e1668d..52814f3 100644 --- a/context-provider/src/androidMain/kotlin/me/sujanpoudel/utils/contextProvider/ApplicationContextInitializer.kt +++ b/context-provider/src/androidMain/kotlin/me/sujanpoudel/utils/contextProvider/ApplicationContextInitializer.kt @@ -23,6 +23,7 @@ import androidx.startup.Initializer * Application scoped context for current app session */ lateinit var applicationContext: Context + private set internal class ApplicationContextInitializer : Initializer { override fun create(context: Context): Context = context.also { diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index 1cf2ef4..084ea43 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -12,6 +12,7 @@ compose = "1.6.1" klint-plugin = "12.0.3" mavenPublish = "0.28.0" detekt = "1.23.6" +binaryCompatibilityValidator = "0.15.0-Beta.2" # libraries ktlint = "1.2.1" @@ -50,4 +51,5 @@ compose = { id = "org.jetbrains.compose", version.ref = "compose" } ktlint = { id = "org.jlleitschuh.gradle.ktlint", version.ref = "klint-plugin" } mavenPublish = { id = "com.vanniktech.maven.publish", version.ref = "mavenPublish" } detekt = { id = "io.gitlab.arturbosch.detekt", version.ref = "detekt" } +binaryCompatibilityValidator = { id = "org.jetbrains.kotlinx.binary-compatibility-validator", version.ref = "binaryCompatibilityValidator" } diff --git a/multiplatform-paths/api/android/multiplatform-paths.api b/multiplatform-paths/api/android/multiplatform-paths.api new file mode 100644 index 0000000..1771d19 --- /dev/null +++ b/multiplatform-paths/api/android/multiplatform-paths.api @@ -0,0 +1,24 @@ +public final class me/sujanpoudel/multiplatform/utils/multiplatformPaths/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 fun ()V +} + +public final class me/sujanpoudel/utils/paths/DirectoriesKt { + public static final fun appCacheDirectory (Ljava/lang/String;Z)Lkotlinx/io/files/Path; + public static synthetic fun appCacheDirectory$default (Ljava/lang/String;ZILjava/lang/Object;)Lkotlinx/io/files/Path; + public static final fun appDataDirectory (Ljava/lang/String;Z)Lkotlinx/io/files/Path; + public static synthetic fun appDataDirectory$default (Ljava/lang/String;ZILjava/lang/Object;)Lkotlinx/io/files/Path; +} + +public final class me/sujanpoudel/utils/paths/Directories_androidKt { + public static final fun cacheDirectory (Ljava/lang/String;)Lkotlinx/io/files/Path; + public static final fun dataDirectory (Ljava/lang/String;)Lkotlinx/io/files/Path; +} + +public final class me/sujanpoudel/utils/paths/utils/PathKt { + public static final fun div (Lkotlinx/io/files/Path;Ljava/lang/String;)Lkotlinx/io/files/Path; + public static final fun toPath (Ljava/lang/String;)Lkotlinx/io/files/Path; +} + diff --git a/multiplatform-paths/api/desktop/multiplatform-paths.api b/multiplatform-paths/api/desktop/multiplatform-paths.api new file mode 100644 index 0000000..9aa2d60 --- /dev/null +++ b/multiplatform-paths/api/desktop/multiplatform-paths.api @@ -0,0 +1,22 @@ +public final class me/sujanpoudel/utils/paths/DirectoriesKt { + public static final fun appCacheDirectory (Ljava/lang/String;Z)Lkotlinx/io/files/Path; + public static synthetic fun appCacheDirectory$default (Ljava/lang/String;ZILjava/lang/Object;)Lkotlinx/io/files/Path; + public static final fun appDataDirectory (Ljava/lang/String;Z)Lkotlinx/io/files/Path; + public static synthetic fun appDataDirectory$default (Ljava/lang/String;ZILjava/lang/Object;)Lkotlinx/io/files/Path; +} + +public final class me/sujanpoudel/utils/paths/Directories_desktopCommonKt { + public static final fun desktopAppHomeDirectory (Ljava/lang/String;Lme/sujanpoudel/utils/platformIdentifier/Platform$OS;Lkotlin/jvm/functions/Function1;)Lkotlinx/io/files/Path; + public static final fun desktopCacheDirectory (Ljava/lang/String;Lme/sujanpoudel/utils/platformIdentifier/Platform$OS;Lkotlin/jvm/functions/Function1;)Lkotlinx/io/files/Path; +} + +public final class me/sujanpoudel/utils/paths/Directories_desktopKt { + public static final fun cacheDirectory (Ljava/lang/String;)Lkotlinx/io/files/Path; + public static final fun dataDirectory (Ljava/lang/String;)Lkotlinx/io/files/Path; +} + +public final class me/sujanpoudel/utils/paths/utils/PathKt { + public static final fun div (Lkotlinx/io/files/Path;Ljava/lang/String;)Lkotlinx/io/files/Path; + public static final fun toPath (Ljava/lang/String;)Lkotlinx/io/files/Path; +} + diff --git a/platform-identifier/api/android/platform-identifier.api b/platform-identifier/api/android/platform-identifier.api new file mode 100644 index 0000000..a59e47b --- /dev/null +++ b/platform-identifier/api/android/platform-identifier.api @@ -0,0 +1,175 @@ +public final class me/sujanpoudel/multiplatform/utils/platformIdentifier/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 fun ()V +} + +public final class me/sujanpoudel/utils/platformIdentifier/Arch : java/lang/Enum { + public static final field ARM_X32 Lme/sujanpoudel/utils/platformIdentifier/Arch; + public static final field ARM_X64 Lme/sujanpoudel/utils/platformIdentifier/Arch; + public static final field UNKNOWN Lme/sujanpoudel/utils/platformIdentifier/Arch; + public static final field X64 Lme/sujanpoudel/utils/platformIdentifier/Arch; + public static final field X86 Lme/sujanpoudel/utils/platformIdentifier/Arch; + public static fun getEntries ()Lkotlin/enums/EnumEntries; + public static fun valueOf (Ljava/lang/String;)Lme/sujanpoudel/utils/platformIdentifier/Arch; + public static fun values ()[Lme/sujanpoudel/utils/platformIdentifier/Arch; +} + +public abstract class me/sujanpoudel/utils/platformIdentifier/Platform { +} + +public abstract class me/sujanpoudel/utils/platformIdentifier/Platform$JS : me/sujanpoudel/utils/platformIdentifier/Platform { +} + +public final class me/sujanpoudel/utils/platformIdentifier/Platform$JS$Browser : me/sujanpoudel/utils/platformIdentifier/Platform$JS { + public fun (Ljava/lang/String;)V + public final fun component1 ()Ljava/lang/String; + public final fun copy (Ljava/lang/String;)Lme/sujanpoudel/utils/platformIdentifier/Platform$JS$Browser; + public static synthetic fun copy$default (Lme/sujanpoudel/utils/platformIdentifier/Platform$JS$Browser;Ljava/lang/String;ILjava/lang/Object;)Lme/sujanpoudel/utils/platformIdentifier/Platform$JS$Browser; + public fun equals (Ljava/lang/Object;)Z + public final fun getUserAgent ()Ljava/lang/String; + public fun hashCode ()I + public fun toString ()Ljava/lang/String; +} + +public final class me/sujanpoudel/utils/platformIdentifier/Platform$JS$Node : me/sujanpoudel/utils/platformIdentifier/Platform$JS { + public fun (Lme/sujanpoudel/utils/platformIdentifier/Platform$OS;Ljava/lang/String;Ljava/lang/String;)V + public final fun component1 ()Lme/sujanpoudel/utils/platformIdentifier/Platform$OS; + public final fun component2 ()Ljava/lang/String; + public final fun component3 ()Ljava/lang/String; + public final fun copy (Lme/sujanpoudel/utils/platformIdentifier/Platform$OS;Ljava/lang/String;Ljava/lang/String;)Lme/sujanpoudel/utils/platformIdentifier/Platform$JS$Node; + public static synthetic fun copy$default (Lme/sujanpoudel/utils/platformIdentifier/Platform$JS$Node;Lme/sujanpoudel/utils/platformIdentifier/Platform$OS;Ljava/lang/String;Ljava/lang/String;ILjava/lang/Object;)Lme/sujanpoudel/utils/platformIdentifier/Platform$JS$Node; + public fun equals (Ljava/lang/Object;)Z + public final fun getNodeVersion ()Ljava/lang/String; + public final fun getOs ()Lme/sujanpoudel/utils/platformIdentifier/Platform$OS; + public final fun getV8Version ()Ljava/lang/String; + public fun hashCode ()I + public fun toString ()Ljava/lang/String; +} + +public abstract class me/sujanpoudel/utils/platformIdentifier/Platform$OS : me/sujanpoudel/utils/platformIdentifier/Platform { + public synthetic fun (Lme/sujanpoudel/utils/platformIdentifier/Arch;Lkotlin/jvm/internal/DefaultConstructorMarker;)V + public fun getArch ()Lme/sujanpoudel/utils/platformIdentifier/Arch; +} + +public final class me/sujanpoudel/utils/platformIdentifier/Platform$OS$Android : me/sujanpoudel/utils/platformIdentifier/Platform$OS { + public fun (Lme/sujanpoudel/utils/platformIdentifier/Arch;ILjava/lang/String;ZZ)V + public final fun component1 ()Lme/sujanpoudel/utils/platformIdentifier/Arch; + public final fun component2 ()I + public final fun component3 ()Ljava/lang/String; + public final fun component4 ()Z + public final fun component5 ()Z + public final fun copy (Lme/sujanpoudel/utils/platformIdentifier/Arch;ILjava/lang/String;ZZ)Lme/sujanpoudel/utils/platformIdentifier/Platform$OS$Android; + public static synthetic fun copy$default (Lme/sujanpoudel/utils/platformIdentifier/Platform$OS$Android;Lme/sujanpoudel/utils/platformIdentifier/Arch;ILjava/lang/String;ZZILjava/lang/Object;)Lme/sujanpoudel/utils/platformIdentifier/Platform$OS$Android; + public fun equals (Ljava/lang/Object;)Z + public final fun getAndroidVersion ()Ljava/lang/String; + public fun getArch ()Lme/sujanpoudel/utils/platformIdentifier/Arch; + public final fun getBuildNumber ()I + public fun hashCode ()I + public final fun isTv ()Z + public final fun isWatch ()Z + public fun toString ()Ljava/lang/String; +} + +public final class me/sujanpoudel/utils/platformIdentifier/Platform$OS$IOS : me/sujanpoudel/utils/platformIdentifier/Platform$OS { + public fun (Lme/sujanpoudel/utils/platformIdentifier/Arch;Ljava/lang/String;Z)V + public final fun component1 ()Lme/sujanpoudel/utils/platformIdentifier/Arch; + public final fun component2 ()Ljava/lang/String; + public final fun component3 ()Z + public final fun copy (Lme/sujanpoudel/utils/platformIdentifier/Arch;Ljava/lang/String;Z)Lme/sujanpoudel/utils/platformIdentifier/Platform$OS$IOS; + public static synthetic fun copy$default (Lme/sujanpoudel/utils/platformIdentifier/Platform$OS$IOS;Lme/sujanpoudel/utils/platformIdentifier/Arch;Ljava/lang/String;ZILjava/lang/Object;)Lme/sujanpoudel/utils/platformIdentifier/Platform$OS$IOS; + public fun equals (Ljava/lang/Object;)Z + public fun getArch ()Lme/sujanpoudel/utils/platformIdentifier/Arch; + public final fun getVersion ()Ljava/lang/String; + public fun hashCode ()I + public final fun isSimulator ()Z + public fun toString ()Ljava/lang/String; +} + +public final class me/sujanpoudel/utils/platformIdentifier/Platform$OS$Linux : me/sujanpoudel/utils/platformIdentifier/Platform$OS { + public fun (Lme/sujanpoudel/utils/platformIdentifier/Arch;Ljava/lang/String;)V + public final fun component1 ()Lme/sujanpoudel/utils/platformIdentifier/Arch; + public final fun component2 ()Ljava/lang/String; + public final fun copy (Lme/sujanpoudel/utils/platformIdentifier/Arch;Ljava/lang/String;)Lme/sujanpoudel/utils/platformIdentifier/Platform$OS$Linux; + public static synthetic fun copy$default (Lme/sujanpoudel/utils/platformIdentifier/Platform$OS$Linux;Lme/sujanpoudel/utils/platformIdentifier/Arch;Ljava/lang/String;ILjava/lang/Object;)Lme/sujanpoudel/utils/platformIdentifier/Platform$OS$Linux; + public fun equals (Ljava/lang/Object;)Z + public fun getArch ()Lme/sujanpoudel/utils/platformIdentifier/Arch; + public final fun getVersion ()Ljava/lang/String; + public fun hashCode ()I + public fun toString ()Ljava/lang/String; +} + +public final class me/sujanpoudel/utils/platformIdentifier/Platform$OS$MacOs : me/sujanpoudel/utils/platformIdentifier/Platform$OS { + public fun (Lme/sujanpoudel/utils/platformIdentifier/Arch;Ljava/lang/String;)V + public final fun component1 ()Lme/sujanpoudel/utils/platformIdentifier/Arch; + public final fun component2 ()Ljava/lang/String; + public final fun copy (Lme/sujanpoudel/utils/platformIdentifier/Arch;Ljava/lang/String;)Lme/sujanpoudel/utils/platformIdentifier/Platform$OS$MacOs; + public static synthetic fun copy$default (Lme/sujanpoudel/utils/platformIdentifier/Platform$OS$MacOs;Lme/sujanpoudel/utils/platformIdentifier/Arch;Ljava/lang/String;ILjava/lang/Object;)Lme/sujanpoudel/utils/platformIdentifier/Platform$OS$MacOs; + public fun equals (Ljava/lang/Object;)Z + public fun getArch ()Lme/sujanpoudel/utils/platformIdentifier/Arch; + public final fun getVersion ()Ljava/lang/String; + public fun hashCode ()I + public fun toString ()Ljava/lang/String; +} + +public final class me/sujanpoudel/utils/platformIdentifier/Platform$OS$TvOs : me/sujanpoudel/utils/platformIdentifier/Platform$OS { + public fun (Lme/sujanpoudel/utils/platformIdentifier/Arch;Ljava/lang/String;Z)V + public final fun component1 ()Lme/sujanpoudel/utils/platformIdentifier/Arch; + public final fun component2 ()Ljava/lang/String; + public final fun component3 ()Z + public final fun copy (Lme/sujanpoudel/utils/platformIdentifier/Arch;Ljava/lang/String;Z)Lme/sujanpoudel/utils/platformIdentifier/Platform$OS$TvOs; + public static synthetic fun copy$default (Lme/sujanpoudel/utils/platformIdentifier/Platform$OS$TvOs;Lme/sujanpoudel/utils/platformIdentifier/Arch;Ljava/lang/String;ZILjava/lang/Object;)Lme/sujanpoudel/utils/platformIdentifier/Platform$OS$TvOs; + public fun equals (Ljava/lang/Object;)Z + public fun getArch ()Lme/sujanpoudel/utils/platformIdentifier/Arch; + public final fun getVersion ()Ljava/lang/String; + public fun hashCode ()I + public final fun isSimulator ()Z + public fun toString ()Ljava/lang/String; +} + +public final class me/sujanpoudel/utils/platformIdentifier/Platform$OS$Unknown : me/sujanpoudel/utils/platformIdentifier/Platform$OS { + public fun (Lme/sujanpoudel/utils/platformIdentifier/Arch;Ljava/lang/String;)V + public final fun component1 ()Lme/sujanpoudel/utils/platformIdentifier/Arch; + public final fun component2 ()Ljava/lang/String; + public final fun copy (Lme/sujanpoudel/utils/platformIdentifier/Arch;Ljava/lang/String;)Lme/sujanpoudel/utils/platformIdentifier/Platform$OS$Unknown; + public static synthetic fun copy$default (Lme/sujanpoudel/utils/platformIdentifier/Platform$OS$Unknown;Lme/sujanpoudel/utils/platformIdentifier/Arch;Ljava/lang/String;ILjava/lang/Object;)Lme/sujanpoudel/utils/platformIdentifier/Platform$OS$Unknown; + public fun equals (Ljava/lang/Object;)Z + public fun getArch ()Lme/sujanpoudel/utils/platformIdentifier/Arch; + public final fun getVersion ()Ljava/lang/String; + public fun hashCode ()I + public fun toString ()Ljava/lang/String; +} + +public final class me/sujanpoudel/utils/platformIdentifier/Platform$OS$WatchOs : me/sujanpoudel/utils/platformIdentifier/Platform$OS { + public fun (Lme/sujanpoudel/utils/platformIdentifier/Arch;Ljava/lang/String;Z)V + public final fun component1 ()Lme/sujanpoudel/utils/platformIdentifier/Arch; + public final fun component2 ()Ljava/lang/String; + public final fun component3 ()Z + public final fun copy (Lme/sujanpoudel/utils/platformIdentifier/Arch;Ljava/lang/String;Z)Lme/sujanpoudel/utils/platformIdentifier/Platform$OS$WatchOs; + public static synthetic fun copy$default (Lme/sujanpoudel/utils/platformIdentifier/Platform$OS$WatchOs;Lme/sujanpoudel/utils/platformIdentifier/Arch;Ljava/lang/String;ZILjava/lang/Object;)Lme/sujanpoudel/utils/platformIdentifier/Platform$OS$WatchOs; + public fun equals (Ljava/lang/Object;)Z + public fun getArch ()Lme/sujanpoudel/utils/platformIdentifier/Arch; + public final fun getVersion ()Ljava/lang/String; + public fun hashCode ()I + public final fun isSimulator ()Z + public fun toString ()Ljava/lang/String; +} + +public final class me/sujanpoudel/utils/platformIdentifier/Platform$OS$Windows : me/sujanpoudel/utils/platformIdentifier/Platform$OS { + public fun (Lme/sujanpoudel/utils/platformIdentifier/Arch;Ljava/lang/String;)V + public final fun component1 ()Lme/sujanpoudel/utils/platformIdentifier/Arch; + public final fun component2 ()Ljava/lang/String; + public final fun copy (Lme/sujanpoudel/utils/platformIdentifier/Arch;Ljava/lang/String;)Lme/sujanpoudel/utils/platformIdentifier/Platform$OS$Windows; + public static synthetic fun copy$default (Lme/sujanpoudel/utils/platformIdentifier/Platform$OS$Windows;Lme/sujanpoudel/utils/platformIdentifier/Arch;Ljava/lang/String;ILjava/lang/Object;)Lme/sujanpoudel/utils/platformIdentifier/Platform$OS$Windows; + public fun equals (Ljava/lang/Object;)Z + public fun getArch ()Lme/sujanpoudel/utils/platformIdentifier/Arch; + public final fun getVersion ()Ljava/lang/String; + public fun hashCode ()I + public fun toString ()Ljava/lang/String; +} + +public final class me/sujanpoudel/utils/platformIdentifier/Platform_androidKt { + public static final fun platform ()Lme/sujanpoudel/utils/platformIdentifier/Platform; +} + diff --git a/platform-identifier/api/desktop/platform-identifier.api b/platform-identifier/api/desktop/platform-identifier.api new file mode 100644 index 0000000..9c265cc --- /dev/null +++ b/platform-identifier/api/desktop/platform-identifier.api @@ -0,0 +1,179 @@ +public final class me/sujanpoudel/utils/platformIdentifier/Arch : java/lang/Enum { + public static final field ARM_X32 Lme/sujanpoudel/utils/platformIdentifier/Arch; + public static final field ARM_X64 Lme/sujanpoudel/utils/platformIdentifier/Arch; + public static final field UNKNOWN Lme/sujanpoudel/utils/platformIdentifier/Arch; + public static final field X64 Lme/sujanpoudel/utils/platformIdentifier/Arch; + public static final field X86 Lme/sujanpoudel/utils/platformIdentifier/Arch; + public static fun getEntries ()Lkotlin/enums/EnumEntries; + public static fun valueOf (Ljava/lang/String;)Lme/sujanpoudel/utils/platformIdentifier/Arch; + public static fun values ()[Lme/sujanpoudel/utils/platformIdentifier/Arch; +} + +public final class me/sujanpoudel/utils/platformIdentifier/DesktopOs : java/lang/Enum { + public static final field Linux Lme/sujanpoudel/utils/platformIdentifier/DesktopOs; + public static final field Macos Lme/sujanpoudel/utils/platformIdentifier/DesktopOs; + public static final field Unknown Lme/sujanpoudel/utils/platformIdentifier/DesktopOs; + public static final field Windows Lme/sujanpoudel/utils/platformIdentifier/DesktopOs; + public static fun getEntries ()Lkotlin/enums/EnumEntries; + public static fun valueOf (Ljava/lang/String;)Lme/sujanpoudel/utils/platformIdentifier/DesktopOs; + public static fun values ()[Lme/sujanpoudel/utils/platformIdentifier/DesktopOs; +} + +public abstract class me/sujanpoudel/utils/platformIdentifier/Platform { +} + +public abstract class me/sujanpoudel/utils/platformIdentifier/Platform$JS : me/sujanpoudel/utils/platformIdentifier/Platform { +} + +public final class me/sujanpoudel/utils/platformIdentifier/Platform$JS$Browser : me/sujanpoudel/utils/platformIdentifier/Platform$JS { + public fun (Ljava/lang/String;)V + public final fun component1 ()Ljava/lang/String; + public final fun copy (Ljava/lang/String;)Lme/sujanpoudel/utils/platformIdentifier/Platform$JS$Browser; + public static synthetic fun copy$default (Lme/sujanpoudel/utils/platformIdentifier/Platform$JS$Browser;Ljava/lang/String;ILjava/lang/Object;)Lme/sujanpoudel/utils/platformIdentifier/Platform$JS$Browser; + public fun equals (Ljava/lang/Object;)Z + public final fun getUserAgent ()Ljava/lang/String; + public fun hashCode ()I + public fun toString ()Ljava/lang/String; +} + +public final class me/sujanpoudel/utils/platformIdentifier/Platform$JS$Node : me/sujanpoudel/utils/platformIdentifier/Platform$JS { + public fun (Lme/sujanpoudel/utils/platformIdentifier/Platform$OS;Ljava/lang/String;Ljava/lang/String;)V + public final fun component1 ()Lme/sujanpoudel/utils/platformIdentifier/Platform$OS; + public final fun component2 ()Ljava/lang/String; + public final fun component3 ()Ljava/lang/String; + public final fun copy (Lme/sujanpoudel/utils/platformIdentifier/Platform$OS;Ljava/lang/String;Ljava/lang/String;)Lme/sujanpoudel/utils/platformIdentifier/Platform$JS$Node; + public static synthetic fun copy$default (Lme/sujanpoudel/utils/platformIdentifier/Platform$JS$Node;Lme/sujanpoudel/utils/platformIdentifier/Platform$OS;Ljava/lang/String;Ljava/lang/String;ILjava/lang/Object;)Lme/sujanpoudel/utils/platformIdentifier/Platform$JS$Node; + public fun equals (Ljava/lang/Object;)Z + public final fun getNodeVersion ()Ljava/lang/String; + public final fun getOs ()Lme/sujanpoudel/utils/platformIdentifier/Platform$OS; + public final fun getV8Version ()Ljava/lang/String; + public fun hashCode ()I + public fun toString ()Ljava/lang/String; +} + +public abstract class me/sujanpoudel/utils/platformIdentifier/Platform$OS : me/sujanpoudel/utils/platformIdentifier/Platform { + public synthetic fun (Lme/sujanpoudel/utils/platformIdentifier/Arch;Lkotlin/jvm/internal/DefaultConstructorMarker;)V + public fun getArch ()Lme/sujanpoudel/utils/platformIdentifier/Arch; +} + +public final class me/sujanpoudel/utils/platformIdentifier/Platform$OS$Android : me/sujanpoudel/utils/platformIdentifier/Platform$OS { + public fun (Lme/sujanpoudel/utils/platformIdentifier/Arch;ILjava/lang/String;ZZ)V + public final fun component1 ()Lme/sujanpoudel/utils/platformIdentifier/Arch; + public final fun component2 ()I + public final fun component3 ()Ljava/lang/String; + public final fun component4 ()Z + public final fun component5 ()Z + public final fun copy (Lme/sujanpoudel/utils/platformIdentifier/Arch;ILjava/lang/String;ZZ)Lme/sujanpoudel/utils/platformIdentifier/Platform$OS$Android; + public static synthetic fun copy$default (Lme/sujanpoudel/utils/platformIdentifier/Platform$OS$Android;Lme/sujanpoudel/utils/platformIdentifier/Arch;ILjava/lang/String;ZZILjava/lang/Object;)Lme/sujanpoudel/utils/platformIdentifier/Platform$OS$Android; + public fun equals (Ljava/lang/Object;)Z + public final fun getAndroidVersion ()Ljava/lang/String; + public fun getArch ()Lme/sujanpoudel/utils/platformIdentifier/Arch; + public final fun getBuildNumber ()I + public fun hashCode ()I + public final fun isTv ()Z + public final fun isWatch ()Z + public fun toString ()Ljava/lang/String; +} + +public final class me/sujanpoudel/utils/platformIdentifier/Platform$OS$IOS : me/sujanpoudel/utils/platformIdentifier/Platform$OS { + public fun (Lme/sujanpoudel/utils/platformIdentifier/Arch;Ljava/lang/String;Z)V + public final fun component1 ()Lme/sujanpoudel/utils/platformIdentifier/Arch; + public final fun component2 ()Ljava/lang/String; + public final fun component3 ()Z + public final fun copy (Lme/sujanpoudel/utils/platformIdentifier/Arch;Ljava/lang/String;Z)Lme/sujanpoudel/utils/platformIdentifier/Platform$OS$IOS; + public static synthetic fun copy$default (Lme/sujanpoudel/utils/platformIdentifier/Platform$OS$IOS;Lme/sujanpoudel/utils/platformIdentifier/Arch;Ljava/lang/String;ZILjava/lang/Object;)Lme/sujanpoudel/utils/platformIdentifier/Platform$OS$IOS; + public fun equals (Ljava/lang/Object;)Z + public fun getArch ()Lme/sujanpoudel/utils/platformIdentifier/Arch; + public final fun getVersion ()Ljava/lang/String; + public fun hashCode ()I + public final fun isSimulator ()Z + public fun toString ()Ljava/lang/String; +} + +public final class me/sujanpoudel/utils/platformIdentifier/Platform$OS$Linux : me/sujanpoudel/utils/platformIdentifier/Platform$OS { + public fun (Lme/sujanpoudel/utils/platformIdentifier/Arch;Ljava/lang/String;)V + public final fun component1 ()Lme/sujanpoudel/utils/platformIdentifier/Arch; + public final fun component2 ()Ljava/lang/String; + public final fun copy (Lme/sujanpoudel/utils/platformIdentifier/Arch;Ljava/lang/String;)Lme/sujanpoudel/utils/platformIdentifier/Platform$OS$Linux; + public static synthetic fun copy$default (Lme/sujanpoudel/utils/platformIdentifier/Platform$OS$Linux;Lme/sujanpoudel/utils/platformIdentifier/Arch;Ljava/lang/String;ILjava/lang/Object;)Lme/sujanpoudel/utils/platformIdentifier/Platform$OS$Linux; + public fun equals (Ljava/lang/Object;)Z + public fun getArch ()Lme/sujanpoudel/utils/platformIdentifier/Arch; + public final fun getVersion ()Ljava/lang/String; + public fun hashCode ()I + public fun toString ()Ljava/lang/String; +} + +public final class me/sujanpoudel/utils/platformIdentifier/Platform$OS$MacOs : me/sujanpoudel/utils/platformIdentifier/Platform$OS { + public fun (Lme/sujanpoudel/utils/platformIdentifier/Arch;Ljava/lang/String;)V + public final fun component1 ()Lme/sujanpoudel/utils/platformIdentifier/Arch; + public final fun component2 ()Ljava/lang/String; + public final fun copy (Lme/sujanpoudel/utils/platformIdentifier/Arch;Ljava/lang/String;)Lme/sujanpoudel/utils/platformIdentifier/Platform$OS$MacOs; + public static synthetic fun copy$default (Lme/sujanpoudel/utils/platformIdentifier/Platform$OS$MacOs;Lme/sujanpoudel/utils/platformIdentifier/Arch;Ljava/lang/String;ILjava/lang/Object;)Lme/sujanpoudel/utils/platformIdentifier/Platform$OS$MacOs; + public fun equals (Ljava/lang/Object;)Z + public fun getArch ()Lme/sujanpoudel/utils/platformIdentifier/Arch; + public final fun getVersion ()Ljava/lang/String; + public fun hashCode ()I + public fun toString ()Ljava/lang/String; +} + +public final class me/sujanpoudel/utils/platformIdentifier/Platform$OS$TvOs : me/sujanpoudel/utils/platformIdentifier/Platform$OS { + public fun (Lme/sujanpoudel/utils/platformIdentifier/Arch;Ljava/lang/String;Z)V + public final fun component1 ()Lme/sujanpoudel/utils/platformIdentifier/Arch; + public final fun component2 ()Ljava/lang/String; + public final fun component3 ()Z + public final fun copy (Lme/sujanpoudel/utils/platformIdentifier/Arch;Ljava/lang/String;Z)Lme/sujanpoudel/utils/platformIdentifier/Platform$OS$TvOs; + public static synthetic fun copy$default (Lme/sujanpoudel/utils/platformIdentifier/Platform$OS$TvOs;Lme/sujanpoudel/utils/platformIdentifier/Arch;Ljava/lang/String;ZILjava/lang/Object;)Lme/sujanpoudel/utils/platformIdentifier/Platform$OS$TvOs; + public fun equals (Ljava/lang/Object;)Z + public fun getArch ()Lme/sujanpoudel/utils/platformIdentifier/Arch; + public final fun getVersion ()Ljava/lang/String; + public fun hashCode ()I + public final fun isSimulator ()Z + public fun toString ()Ljava/lang/String; +} + +public final class me/sujanpoudel/utils/platformIdentifier/Platform$OS$Unknown : me/sujanpoudel/utils/platformIdentifier/Platform$OS { + public fun (Lme/sujanpoudel/utils/platformIdentifier/Arch;Ljava/lang/String;)V + public final fun component1 ()Lme/sujanpoudel/utils/platformIdentifier/Arch; + public final fun component2 ()Ljava/lang/String; + public final fun copy (Lme/sujanpoudel/utils/platformIdentifier/Arch;Ljava/lang/String;)Lme/sujanpoudel/utils/platformIdentifier/Platform$OS$Unknown; + public static synthetic fun copy$default (Lme/sujanpoudel/utils/platformIdentifier/Platform$OS$Unknown;Lme/sujanpoudel/utils/platformIdentifier/Arch;Ljava/lang/String;ILjava/lang/Object;)Lme/sujanpoudel/utils/platformIdentifier/Platform$OS$Unknown; + public fun equals (Ljava/lang/Object;)Z + public fun getArch ()Lme/sujanpoudel/utils/platformIdentifier/Arch; + public final fun getVersion ()Ljava/lang/String; + public fun hashCode ()I + public fun toString ()Ljava/lang/String; +} + +public final class me/sujanpoudel/utils/platformIdentifier/Platform$OS$WatchOs : me/sujanpoudel/utils/platformIdentifier/Platform$OS { + public fun (Lme/sujanpoudel/utils/platformIdentifier/Arch;Ljava/lang/String;Z)V + public final fun component1 ()Lme/sujanpoudel/utils/platformIdentifier/Arch; + public final fun component2 ()Ljava/lang/String; + public final fun component3 ()Z + public final fun copy (Lme/sujanpoudel/utils/platformIdentifier/Arch;Ljava/lang/String;Z)Lme/sujanpoudel/utils/platformIdentifier/Platform$OS$WatchOs; + public static synthetic fun copy$default (Lme/sujanpoudel/utils/platformIdentifier/Platform$OS$WatchOs;Lme/sujanpoudel/utils/platformIdentifier/Arch;Ljava/lang/String;ZILjava/lang/Object;)Lme/sujanpoudel/utils/platformIdentifier/Platform$OS$WatchOs; + public fun equals (Ljava/lang/Object;)Z + public fun getArch ()Lme/sujanpoudel/utils/platformIdentifier/Arch; + public final fun getVersion ()Ljava/lang/String; + public fun hashCode ()I + public final fun isSimulator ()Z + public fun toString ()Ljava/lang/String; +} + +public final class me/sujanpoudel/utils/platformIdentifier/Platform$OS$Windows : me/sujanpoudel/utils/platformIdentifier/Platform$OS { + public fun (Lme/sujanpoudel/utils/platformIdentifier/Arch;Ljava/lang/String;)V + public final fun component1 ()Lme/sujanpoudel/utils/platformIdentifier/Arch; + public final fun component2 ()Ljava/lang/String; + public final fun copy (Lme/sujanpoudel/utils/platformIdentifier/Arch;Ljava/lang/String;)Lme/sujanpoudel/utils/platformIdentifier/Platform$OS$Windows; + public static synthetic fun copy$default (Lme/sujanpoudel/utils/platformIdentifier/Platform$OS$Windows;Lme/sujanpoudel/utils/platformIdentifier/Arch;Ljava/lang/String;ILjava/lang/Object;)Lme/sujanpoudel/utils/platformIdentifier/Platform$OS$Windows; + public fun equals (Ljava/lang/Object;)Z + public fun getArch ()Lme/sujanpoudel/utils/platformIdentifier/Arch; + public final fun getVersion ()Ljava/lang/String; + public fun hashCode ()I + public fun toString ()Ljava/lang/String; +} + +public final class me/sujanpoudel/utils/platformIdentifier/Platform_desktopKt { + public static final fun getHostOs ()Lme/sujanpoudel/utils/platformIdentifier/Platform$OS; + public static final fun platform ()Lme/sujanpoudel/utils/platformIdentifier/Platform; +} +