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