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