make Chain Hub ( zone , agoricNames , vowTools ) : Guarded < { getAsset ( denom : string , srcChainName : 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 ; makeTransferRoute ( destination : ChainAddress , denomAmount : DenomAmount , srcChainName : string , forwardOpts ?: { intermediateRecipient ?: ChainAddress ; retries ?: number ; timeout ?: | ` ${ number } s ` | ` ${ number } m ` | ` ${ number } h ` | ` ${ number } ms ` | ` ${ number } us ` | ` ${ number } ns ` ; } ) : TransferRoute ; registerAsset ( denom : string , detail : DenomDetail ) : void ; registerChain ( name : string , chainInfo : Readonly < { bech32Prefix ?: string ; chainId : string ; connections ?: Record < string , IBCConnectionInfo > ; icqEnabled ?: boolean ; pfmEnabled ?: 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 , srcChainName : 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 ; makeTransferRoute ( destination : ChainAddress , denomAmount : DenomAmount , srcChainName : string , forwardOpts ?: { intermediateRecipient ?: ChainAddress ; retries ?: number ; timeout ?: | ` ${ number } s ` | ` ${ number } m ` | ` ${ number } h ` | ` ${ number } ms ` | ` ${ number } us ` | ` ${ number } ns ` ; } ) : TransferRoute ; registerAsset ( denom : string , detail : DenomDetail ) : void ; registerChain ( name : string , chainInfo : Readonly < { bech32Prefix ?: string ; chainId : string ; connections ?: Record < string , IBCConnectionInfo > ; icqEnabled ?: boolean ; pfmEnabled ?: 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.