From 31bf6ca4b7752a98e77cbf3d6ee54b821b602ad7 Mon Sep 17 00:00:00 2001 From: Andrew Westberg Date: Mon, 2 Sep 2024 20:17:00 +0000 Subject: [PATCH] STUD-329: Fix Kogmios Certificate parsing --- build.gradle.kts | 2 +- buildSrc/src/main/kotlin/Versions.kt | 2 +- .../kogmios/protocols/model/Certificate.kt | 48 +++++++++++++++---- .../io/newm/kogmios/protocols/model/IdHash.kt | 2 + 4 files changed, 44 insertions(+), 10 deletions(-) diff --git a/build.gradle.kts b/build.gradle.kts index e19c918..50ab659 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -19,7 +19,7 @@ if (!project.hasProperty("isGithubActions")) { } group = "io.newm" -version = "2.3.1-SNAPSHOT" +version = "2.3.2-SNAPSHOT" java.sourceCompatibility = JavaVersion.VERSION_21 java.targetCompatibility = JavaVersion.VERSION_21 diff --git a/buildSrc/src/main/kotlin/Versions.kt b/buildSrc/src/main/kotlin/Versions.kt index f01d990..9fc33ea 100644 --- a/buildSrc/src/main/kotlin/Versions.kt +++ b/buildSrc/src/main/kotlin/Versions.kt @@ -6,7 +6,7 @@ object Versions { const val JUNIT = "5.11.0" const val KOTLIN = "2.0.20" const val KOTLINX_DATETIME = "0.6.1" - const val KOTLINX_SERIALIZATION = "1.7.1" + const val KOTLINX_SERIALIZATION = "1.7.2" const val KTLINT = "1.3.1" const val KTLINT_PLUGIN = "12.1.1" const val KTOR = "2.3.12" diff --git a/src/main/kotlin/io/newm/kogmios/protocols/model/Certificate.kt b/src/main/kotlin/io/newm/kogmios/protocols/model/Certificate.kt index 59aab6a..1acfbaa 100644 --- a/src/main/kotlin/io/newm/kogmios/protocols/model/Certificate.kt +++ b/src/main/kotlin/io/newm/kogmios/protocols/model/Certificate.kt @@ -13,6 +13,8 @@ sealed interface Certificate @Serializable @SerialName("stakeDelegation") data class StakeDelegationCertificate( + @SerialName("from") + val from: String, @SerialName("credential") val credential: String, @SerialName("stakePool") @@ -24,6 +26,8 @@ data class StakeDelegationCertificate( @Serializable @SerialName("stakeCredentialRegistration") data class StakeCredentialRegistrationCertificate( + @SerialName("from") + val from: String, @SerialName("credential") val credential: String, @SerialName("deposit") @@ -33,6 +37,8 @@ data class StakeCredentialRegistrationCertificate( @Serializable @SerialName("stakeCredentialDeregistration") data class StakeCredentialDeregistrationCertificate( + @SerialName("from") + val from: String, @SerialName("credential") val credential: String, @SerialName("deposit") @@ -114,19 +120,45 @@ data class GenesisDelegation( ) @Serializable -@SerialName("constitutionalCommitteeHotKeyRegistration") -data class ConstitutionalCommitteeHotKeyRegistrationCertificate( +@SerialName("constitutionalCommitteeDelegation") +data class ConstitutionalCommitteeDelegationCertificate( @SerialName("member") val member: IdHash, - @SerialName("hotKey") - val hotKey: String, + @SerialName("delegate") + val delegate: ConstitutionalCommitteeDelegate, ) : Certificate +@Serializable +@JsonClassDiscriminator("status") +sealed interface ConstitutionalCommitteeDelegate + +@Serializable +@SerialName("authorized") +data class AuthorizedConstitutionalCommitteeDelegate( + @SerialName("id") + val id: String, + @SerialName("from") + val from: String, +) : ConstitutionalCommitteeDelegate + +@Serializable +@SerialName("resigned") +data class ResignedConstitutionalCommitteeDelegate( + @SerialName("metadata") + val metadata: AnchorMetadata? = null, +) : ConstitutionalCommitteeDelegate + +@Serializable +@SerialName("none") +data object NoneConstitutionalCommitteeDelegate : ConstitutionalCommitteeDelegate + @Serializable @SerialName("constitutionalCommitteeRetirement") data class ConstitutionalCommitteeRetirementCertificate( @SerialName("member") val member: IdHash, + @SerialName("metadata") + val metadata: AnchorMetadata? = null, ) : Certificate @Serializable @@ -136,8 +168,8 @@ data class DelegateRepresentativeRegistrationCertificate( val delegateRepresentative: DelegateRepresentative, @SerialName("deposit") val deposit: Ada, - @SerialName("anchor") - val anchor: AnchorMetadata? = null, + @SerialName("metadata") + val metadata: AnchorMetadata? = null, ) : Certificate @Serializable @@ -145,8 +177,8 @@ data class DelegateRepresentativeRegistrationCertificate( data class DelegateRepresentativeUpdateCertificate( @SerialName("delegateRepresentative") val delegateRepresentative: DelegateRepresentative, - @SerialName("anchor") - val anchor: AnchorMetadata? = null, + @SerialName("metadata") + val metadata: AnchorMetadata? = null, ) : Certificate @Serializable diff --git a/src/main/kotlin/io/newm/kogmios/protocols/model/IdHash.kt b/src/main/kotlin/io/newm/kogmios/protocols/model/IdHash.kt index cb88775..89b9cb7 100644 --- a/src/main/kotlin/io/newm/kogmios/protocols/model/IdHash.kt +++ b/src/main/kotlin/io/newm/kogmios/protocols/model/IdHash.kt @@ -7,4 +7,6 @@ import kotlinx.serialization.Serializable data class IdHash( @SerialName("id") val id: String, + @SerialName("from") + val from: String? = null, )