@hyperlane-xyz/sdk
Version:
The official SDK for the Hyperlane Network
49 lines • 1.98 kB
JavaScript
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