package Ġdan b roid . ipfs . api Ċ Ċ import Ġkotlinx . serialization . Internal Serialization Api Ċ import Ġkotlinx . serialization . K Serializer Ċ import Ġkotlinx . serialization . Serial Name Ċ import Ġkotlinx . serialization . descriptors . Serial Descriptor Ċ import Ġkotlinx . serialization . descriptors . build Class Serial Descriptor Ċ import Ġkotlinx . serialization . descriptors . element Ċ import Ġkotlinx . serialization . encoding .* Ċ import Ġkotlinx . serialization . json . Json Ċ import Ġkotlinx . serialization . serializer Ċ Ċ @ Target ( Annotation Target . FIELD , ĠAnnotation Target . CLASS ) Ċ @ Retention ( Annotation Retention . RUNTIME ) Ċ annotation Ġclass ĠIp fs Link Ċ Ċ @ Internal Serialization Api Ċ inline Ġfun Ġ< re ified ĠT Ġ: ĠAny > ĠT . toJson ( json : ĠJson Ġ= ĠJson ): ĠString Ġ= ĊĠ Ġjson . encode ToString ( T :: class . serializer (), Ġthis ) ĊĊ Ċ class ĠD ag Link Serializer < T Ġ: ĠAny >( val Ġserializer : ĠK Serializer < T >) Ġ: ĠK Serializer < Dag Link < T >> Ġ{ ĊĊĠ Ġoverride Ġval Ġdescriptor : ĠSerial Descriptor Ġ= Ġbuild Class Serial Descriptor (" Dag Link ") Ġ{ ĊĠĠĠ Ġelement < String > ("/") ĊĠ Ġ} ĊĊĠ Ġoverride Ġfun Ġdeserialize ( decoder : ĠDecoder ) Ġ= ĊĠĠĠ Ġdecoder . decode Structure ( descriptor ) Ġ{ ĊĠĠĠĠĠ Ġvar Ġcid : ĠString ? Ġ= Ġnull ĊĠĠĠĠĠ Ġwhile Ġ( true ) Ġ{ ĊĠĠĠĠĠĠĠ Ġwhen Ġ( val Ġindex Ġ= Ġdecode Element Index ( descriptor )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠ 0 Ġ-> Ġcid Ġ= Ġdecode String Element ( descriptor , Ġ 0 ) ĊĠĠĠĠĠĠĠĠĠ ĠComposite Decoder . DECODE _ DONE Ġ-> Ġbreak ĊĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġerror (" Unexpected Ġindex : Ġ$ index ") ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠ Ġ} ĊĠĠĠĠĠ Ġrequire ( cid Ġ!= Ġnull ) ĊĠĠĠĠĠ ĠD ag Link ( cid , Ġserializer ) ĊĠĠĠ Ġ} ĊĊĠ Ġoverride Ġfun Ġserialize ( encoder : ĠEncoder , Ġvalue : ĠD ag Link < T >) Ġ{ ĊĠĠĠ Ġencoder . encode Structure ( descriptor ) Ġ{ ĊĠĠĠĠĠ Ġencode String Element ( descriptor , Ġ 0 , Ġvalue . cid ) ĊĠĠĠ Ġ} ĊĠ Ġ} Ċ } Ċ Ċ @ Serializable ( with Ġ= ĠD ag Link Serializer :: class ) Ċ data Ġclass ĠD ag Link < out ĠT Ġ: ĠAny >( ĊĠ Ġ@ Serial Name ("/") Ġval Ġcid : ĠString , ĊĠ Ġprivate Ġval Ġserializer : ĠK Serializer < T > Ċ ) Ġ{ ĊĠ Ġsuspend Ġfun Ġvalue ( api : ĠIP FS ): ĠT Ġ= Ġapi . dag . get < T >( cid ). invoke (). text (). let Ġ{ ĊĠĠĠ Ġapi . json . decode FromString ( serializer , Ġit ) ĊĠ Ġ} Ċ } Ċ Ċ suspend Ġinline Ġfun Ġ< re ified ĠT Ġ: ĠAny > ĠT . dag Cid ( api : ĠIP FS , Ġpin : ĠBoolean Ġ= Ġfalse ): ĠString Ġ= ĊĠ Ġapi . dag . put Object ( this , Ġpin Ġ= Ġpin ). json (). Cid . path ĊĊ Ċ inline Ġsuspend Ġfun Ġ< re ified ĠT Ġ: ĠAny > ĠT . dag Link ( api : ĠIP FS , Ġpin : ĠBoolean Ġ= Ġfalse ): ĠD ag Link < T > Ġ{ ĊĠ Ġreturn ĠD ag Link ( dag Cid ( api , Ġpin ), ĠT :: class . serializer ()) Ċ } Ċ Ċ inline Ġfun Ġ< re ified ĠT Ġ: ĠAny > Ġdag Link ( cid : ĠString ): ĠD ag Link < T > Ġ= ĠD ag Link ( cid , Ġserializer ()) Ċ Ċ type alias ĠSerializable Ġ= Ġkotlinx . serialization . Serializable Ċ type alias ĠTrans ient Ġ= Ġkotlinx . serialization . Transient Ċ