make Chain Hub ( zone , agoricNames , vowTools ) : Guarded < { getAsset ( denom : string ) : undefined | DenomDetail ; getChainInfo < K > ( chainName : K ) : Vow < ActualChainInfo < K > > ; getChainsAndConnection < C1 , C2 > ( primaryName : C1 , counterName : C2 ) : Vow < [ ActualChainInfo < C1 > , ActualChainInfo < C2 > , IBCConnectionInfo ] > ; getConnectionInfo ( primary : string | { chainId : string ; } , counter : string | { chainId : string ; } ) : Vow < IBCConnectionInfo > ; getDenom ( brand : Brand ) : undefined | string ; makeChainAddress ( address : string ) : ChainAddress ; registerAsset ( denom : string , detail : DenomDetail ) : void ; registerChain ( name : string , chainInfo : Readonly < { bech32Prefix ?: string ; chainId : string ; connections ?: Record < string , IBCConnectionInfo > ; icqEnabled ?: boolean ; stakingTokens ?: readonly { denom : string ; } [] ; } > ) : void ; registerConnection ( primaryChainId : string , counterpartyChainId : string , connectionInfo : IBCConnectionInfo ) : void ; } > Parameters zone : Zone agoricNames : Remote < NameHub > vowTools : VowTools Returns Guarded < { getAsset ( denom : string ) : undefined | DenomDetail ; getChainInfo < K > ( chainName : K ) : Vow < ActualChainInfo < K > > ; getChainsAndConnection < C1 , C2 > ( primaryName : C1 , counterName : C2 ) : Vow < [ ActualChainInfo < C1 > , ActualChainInfo < C2 > , IBCConnectionInfo ] > ; getConnectionInfo ( primary : string | { chainId : string ; } , counter : string | { chainId : string ; } ) : Vow < IBCConnectionInfo > ; getDenom ( brand : Brand ) : undefined | string ; makeChainAddress ( address : string ) : ChainAddress ; registerAsset ( denom : string , detail : DenomDetail ) : void ; registerChain ( name : string , chainInfo : Readonly < { bech32Prefix ?: string ; chainId : string ; connections ?: Record < string , IBCConnectionInfo > ; icqEnabled ?: boolean ; stakingTokens ?: readonly { denom : string ; } [] ; } > ) : void ; registerConnection ( primaryChainId : string , counterpartyChainId : string , connectionInfo : IBCConnectionInfo ) : void ; } >
Make a new ChainHub in the zone.
The resulting object is an Exo singleton. It has no precious state. It's only state is a cache of queries to agoricNames and whatever info was provided in registration calls. When you need a newer version you can simply make a hub hub and repeat the registrations.