package Ġorg . know ledger . ledger . storage . config . chain id . factory Ċ Ċ import Ġkotlinx . serialization . Binary Format Ċ import Ġkotlinx . serialization . Experimental Serialization Api Ċ import Ġorg . know ledger . ledger . core . adapters . Tag Ċ import Ġorg . know ledger . ledger . crypto . Hash Ċ import Ġorg . know ledger . ledger . crypto . hash . Hash ers Ċ import Ġorg . know ledger . ledger . storage . Block Params Ċ import Ġorg . know ledger . ledger . storage . Chain Id Ċ import Ġorg . know ledger . ledger . storage . Coin base Params Ċ import Ġorg . know ledger . ledger . storage . config . chain id . Storage Aware Chain Id Impl Ċ Ċ @ Opt In ( Experimental Serialization Api :: class ) Ċ internal Ġclass ĠStorage Aware Chain Id Factory ( ĊĠĠĠ Ġprivate Ġval Ġfactory : ĠChain Id Factory Ġ= ĠChain Id Factory Impl (), Ċ ) Ġ: ĠChain Id Factory Ġ{ ĊĊĠĠĠ Ġprivate Ġfun Ġcreate SA ( chain Id : ĠChain Id ): ĠStorage Aware Chain Id Impl Ġ= ĊĠĠĠĠĠĠĠ ĠStorage Aware Chain Id Impl ( chain Id ) ĊĊĠĠĠ Ġoverride Ġfun Ġcreate ( ĊĠĠĠĠĠĠĠ Ġhash : ĠHash , Ġledger Hash : ĠHash , Ġtag : ĠTag , Ġraw Tag : ĠHash , ĊĠĠĠĠĠĠĠ Ġblock Params : ĠBlock Params , Ġcoin base Params : ĠCoin base Params , ĊĠĠĠ Ġ): ĠStorage Aware Chain Id Impl Ġ= ĊĠĠĠĠĠĠĠ Ġcreate SA ( factory . create ( hash , Ġledger Hash , Ġtag , Ġraw Tag , Ġblock Params , Ġcoin base Params )) ĊĊĠĠĠ Ġoverride Ġfun Ġcreate ( ĊĠĠĠĠĠĠĠ Ġledger Hash : ĠHash , Ġtag : ĠTag , Ġraw Tag : ĠHash , Ġhash er : ĠHash ers , Ġencoder : ĠBinary Format , ĊĠĠĠĠĠĠĠ Ġblock Params : ĠBlock Params , Ġcoin base Params : ĠCoin base Params , ĊĠĠĠ Ġ): ĠStorage Aware Chain Id Impl Ġ= Ġcreate SA ( ĊĠĠĠĠĠĠĠ Ġfactory . create ( ledger Hash , Ġtag , Ġraw Tag , Ġhash er , Ġencoder , Ġblock Params , Ġcoin base Params ) ĊĠĠĠ Ġ) ĊĊĠĠĠ Ġoverride Ġfun Ġcreate ( other : ĠChain Id ): ĠStorage Aware Chain Id Impl Ġ= ĊĠĠĠĠĠĠĠ Ġcreate SA ( factory . create ( other )) Ċ }