UNPKG

@hyperlane-xyz/sdk

Version:

The official SDK for the Hyperlane Network

49 lines 1.98 kB
import { DEFAULT_ROUTER_KEY } from './types.js'; export function getConfiguredRoutingDestinations(feeContracts, getDestinationDomain) { return Object.keys(feeContracts).map((chainName) => getDestinationDomain(chainName)); } export function getConfiguredCrossCollateralRouters(feeContracts, getDestinationDomain) { return Object.fromEntries(Object.entries(feeContracts).map(([chainName, routerFeeContracts]) => [ getDestinationDomain(chainName), Object.keys(routerFeeContracts), ])); } export function mergeCrossCollateralRouters(...routerMaps) { const mergedRouters = new Map(); for (const routerMap of routerMaps) { if (!routerMap) continue; for (const [destination, routers] of Object.entries(routerMap)) { const destinationDomain = Number(destination); const mergedDestinationRouters = mergedRouters.get(destinationDomain) ?? new Set(); for (const router of routers) { mergedDestinationRouters.add(router); } mergedRouters.set(destinationDomain, mergedDestinationRouters); } } if (mergedRouters.size === 0) return undefined; return Object.fromEntries([...mergedRouters.entries()].map(([destination, routers]) => [ destination, [...routers], ])); } export function getEffectiveCrossCollateralDestinations(routingDestinations, crossCollateralRouters) { const crossCollateralDestinations = Object.keys(crossCollateralRouters ?? {}).map((domain) => Number(domain)); return [ ...new Set([ ...(routingDestinations ?? []), ...crossCollateralDestinations, ]), ]; } export function getCrossCollateralRouterKeys(destination, crossCollateralRouters) { return [ ...new Set([ DEFAULT_ROUTER_KEY, ...(crossCollateralRouters?.[destination] ?? []), ]), ]; } //# sourceMappingURL=crossCollateralUtils.js.map