package Ġorg . know ledger . ledger . storage . serial Ċ Ċ import Ġkotlinx . serialization . Binary Format Ċ import Ġkotlinx . serialization . Deserialization Strategy Ċ import Ġkotlinx . serialization . Experimental Serialization Api Ċ import Ġkotlinx . serialization . Serial Format Ċ import Ġkotlinx . serialization . Serialization Strategy Ċ import Ġkotlinx . serialization . String Format Ċ import Ġkotlinx . serialization . cb or . Cb or Ċ import Ġkotlinx . serialization . json . Json Ċ import Ġkotlinx . serialization . modules . Serial izers Module Ċ import Ġorg . know ledger . ledger . results . F ailable Ċ import Ġorg . know ledger . ledger . results . Outcome Ċ import Ġorg . know ledger . ledger . results . err Ċ import Ġorg . know ledger . ledger . results . ok Ċ import Ġorg . know ledger . ledger . storage . results . dead Code Ċ import Ġorg . know ledger . ledger . results . Failure Ġas ĠCore Failure Ċ Ċ @ Opt In ( Experimental Serialization Api :: class ) Ċ sealed Ġclass ĠLed ger Serializer Ġ{ ĊĊĠĠĠ Ġdata Ġclass ĠText ( val Ġserializer : ĠString Format ) Ġ: ĠLed ger Serializer (), ĠSerializable As < String > Ġ{ ĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġ< R > Ġencode ( strategy : ĠSerialization Strategy < R >, Ġelement : ĠR ): ĠString Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ Ġserializer . encode ToString ( strategy , Ġelement ) ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġ< R > Ġdecode ( strategy : ĠDeserial ization Strategy < R >, Ġelement : ĠString ): ĠR Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ Ġserializer . decode FromString ( strategy , Ġelement ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġdata Ġclass ĠBinary ( val Ġserializer : ĠBinary Format ) Ġ: ĠLed ger Serializer (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠSerializable As < ByteArray > Ġ{ ĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġ< R > Ġencode ( strategy : ĠSerialization Strategy < R >, Ġelement : ĠR ): ĠByteArray Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ Ġserializer . encode To ByteArray ( strategy , Ġelement ) ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġ< R > Ġdecode ( strategy : ĠDeserial ization Strategy < R >, Ġelement : ĠByteArray ): ĠR Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ Ġserializer . decode From ByteArray ( strategy , Ġelement ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġsealed Ġclass ĠFailure Ġ: ĠCore Failure Ġ{ ĊĠĠĠĠĠĠĠ Ġclass ĠNo Encoder Supp lied ( module : ĠSerial izers Module ?, Ġencoder : ĠSerial Format ?) Ġ: ĠFailure () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġval Ġf ailable : ĠF ailable Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠF ailable . Light Failure ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" Module Ġor ĠEncoder Ġnot Ġsupplied : ĠModule Ġ-> Ġ$ module , ĠEncoder Ġ-> Ġ$ encoder " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ Ċ @ Opt In ( Experimental Serialization Api :: class ) Ċ class ĠLed ger Text Serializer Builder Ġ{ ĊĠĠĠ Ġvar Ġencoder : ĠString Format ? Ġ= Ġnull ĊĠĠĠ Ġvar Ġshould Pretty Print : ĠBoolean Ġ= Ġfalse ĊĠĠĠ Ġvar Ġmodule : ĠSerial izers Module ? Ġ= Ġnull ĊĊĠĠĠ Ġfun Ġbuild (): ĠOut come < Ledger Serializer . Text , ĠLed ger Serializer . Failure > Ġ= ĊĠĠĠĠĠĠĠ Ġwhen Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmodule Ġ!= Ġnull Ġ&& Ġencoder Ġ== Ġnull Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġencoder Ġ= ĠJson Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpretty Print Ġ= Ġshould Pretty Print ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġserializers Module Ġ= Ġmodule Ġas ĠSerial izers Module ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLed ger Serializer . Text ( encoder !! ). ok () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġencoder Ġ!= Ġnull Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLed ger Serializer . Text ( encoder !! ). ok () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmodule Ġ== Ġnull Ġ&& Ġencoder Ġ== Ġnull Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLed ger Serializer . Failure . No Encoder Supp lied ( module , Ġencoder ). err () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġdead Code () ĊĠĠĠĠĠĠĠ Ġ} Ċ } ĊĊ Ċ @ Opt In ( Experimental Serialization Api :: class ) Ċ class ĠLed ger Binary Serializer Builder Ġ{ ĊĠĠĠ Ġvar Ġencoder : ĠBinary Format ? Ġ= Ġnull ĊĠĠĠ Ġvar Ġmodule : ĠSerial izers Module ? Ġ= Ġnull ĊĊĠĠĠ Ġfun Ġbuild (): ĠOut come < Ledger Serializer . Binary , ĠLed ger Serializer . Failure > Ġ= ĊĠĠĠĠĠĠĠ Ġwhen Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmodule Ġ!= Ġnull Ġ&& Ġencoder Ġ== Ġnull Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġencoder Ġ= ĠC bor Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġencode Defaults Ġ= Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġserializers Module Ġ= Ġmodule Ġas ĠSerial izers Module ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLed ger Serializer . Binary ( encoder !! ). ok () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġencoder Ġ!= Ġnull Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLed ger Serializer . Binary ( encoder !! ). ok () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmodule Ġ== Ġnull Ġ&& Ġencoder Ġ== Ġnull Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLed ger Serializer . Failure . No Encoder Supp lied ( module , Ġencoder ). err () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġdead Code () ĊĠĠĠĠĠĠĠ Ġ} Ċ } ĊĊ Ċ inline Ġfun Ġledger Text Serializer ( ĊĠĠĠ Ġsetup : ĠLed ger Text Serializer Builder . () Ġ-> ĠUnit Ċ ): ĠOut come < Ledger Serializer . Text , ĠLed ger Serializer . Failure > Ġ{ ĊĠĠĠ Ġval Ġbuilder Ġ= ĠLed ger Text Serializer Builder () ĊĠĠĠ Ġbuilder . setup () ĊĠĠĠ Ġreturn Ġbuilder . build () Ċ } Ċ Ċ inline Ġfun Ġledger Binary Serializer ( ĊĠĠĠ Ġsetup : ĠLed ger Binary Serializer Builder . () Ġ-> ĠUnit Ċ ): ĠOut come < Ledger Serializer . Binary , ĠLed ger Serializer . Failure > Ġ{ ĊĠĠĠ Ġval Ġbuilder Ġ= ĠLed ger Binary Serializer Builder () ĊĠĠĠ Ġbuilder . setup () ĊĠĠĠ Ġreturn Ġbuilder . build () Ċ }