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.

  • 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;
    }>