UNPKG

@hyperlane-xyz/sdk

Version:

The official SDK for the Hyperlane Network

67 lines 2.85 kB
import { EvmHypCollateralFiatAdapter, EvmHypNativeAdapter, EvmHypOwnerCollateralAdapter, EvmHypRebaseCollateralAdapter, EvmHypSyntheticAdapter, EvmHypSyntheticRebaseAdapter, EvmHypXERC20Adapter, EvmHypXERC20LockboxAdapter, EvmMovableCollateralAdapter, } from './EvmTokenAdapter.js'; import { EvmHypCrossCollateralAdapter } from './EvmCrossCollateralAdapter.js'; import { hasChainMetadata, hasOnlyHyperlaneConnections, } from './hypTokenAdapterUtils.js'; export function createEvmLikeHypAdapter(multiProvider, token, standards) { const { standard, chainName, addressOrDenom } = token; if (!standard || !hasChainMetadata(multiProvider, chainName)) { return undefined; } if (standard === standards.native && hasOnlyHyperlaneConnections(token)) { return new EvmHypNativeAdapter(chainName, multiProvider, { token: addressOrDenom, }); } if (standard === standards.hypNative) { return new EvmHypNativeAdapter(chainName, multiProvider, { token: addressOrDenom, }); } if (standards.hypOwnerCollateral && standard === standards.hypOwnerCollateral) { return new EvmHypOwnerCollateralAdapter(chainName, multiProvider, { token: addressOrDenom, }); } if (standards.hypCollateral.some((candidate) => candidate === standard)) { return new EvmMovableCollateralAdapter(chainName, multiProvider, { token: addressOrDenom, }); } if (standard === standards.hypCrossCollateralRouter) { return new EvmHypCrossCollateralAdapter(chainName, multiProvider, { token: addressOrDenom, }); } if (standard === standards.hypRebaseCollateral) { return new EvmHypRebaseCollateralAdapter(chainName, multiProvider, { token: addressOrDenom, }); } if (standard === standards.hypCollateralFiat) { return new EvmHypCollateralFiatAdapter(chainName, multiProvider, { token: addressOrDenom, }); } if (standard === standards.hypSynthetic) { return new EvmHypSyntheticAdapter(chainName, multiProvider, { token: addressOrDenom, }); } if (standard === standards.hypSyntheticRebase) { return new EvmHypSyntheticRebaseAdapter(chainName, multiProvider, { token: addressOrDenom, }); } if (standards.hypXerc20.some((candidate) => candidate === standard)) { return new EvmHypXERC20Adapter(chainName, multiProvider, { token: addressOrDenom, }); } if (standards.hypXerc20Lockbox.some((candidate) => candidate === standard)) { return new EvmHypXERC20LockboxAdapter(chainName, multiProvider, { token: addressOrDenom, }); } return undefined; } //# sourceMappingURL=evmLikeHyp.js.map