UNPKG

@hyperlane-xyz/sdk

Version:

The official SDK for the Hyperlane Network

47 lines 2.48 kB
import { assert } from '@hyperlane-xyz/utils'; import { SealevelHypCollateralAdapter, SealevelHypNativeAdapter, SealevelHypSyntheticAdapter, } from './SealevelTokenAdapter.js'; import { hasChainMetadata, } from './hypTokenAdapterUtils.js'; import { TokenStandard } from '../TokenStandard.js'; import { SealevelHypCrossCollateralAdapter } from './SealevelCrossCollateralAdapter.js'; export function createSealevelHypAdapter(multiProvider, token) { const { standard, chainName, addressOrDenom, collateralAddressOrDenom } = token; if (!standard || !hasChainMetadata(multiProvider, chainName)) { return undefined; } const mailbox = multiProvider.getChainMetadata(chainName).mailbox; switch (standard) { case TokenStandard.SealevelHypNative: assert(mailbox, 'Mailbox required for Sealevel hyp tokens'); return new SealevelHypNativeAdapter(chainName, multiProvider, { warpRouter: addressOrDenom, mailbox, }); case TokenStandard.SealevelHypCollateral: assert(mailbox, 'Mailbox required for Sealevel hyp tokens'); assert(collateralAddressOrDenom, 'collateralAddressOrDenom required for Sealevel hyp collateral tokens'); return new SealevelHypCollateralAdapter(chainName, multiProvider, { warpRouter: addressOrDenom, token: collateralAddressOrDenom, mailbox, }); case TokenStandard.SealevelHypSynthetic: assert(mailbox, 'Mailbox required for Sealevel hyp tokens'); assert(collateralAddressOrDenom, 'collateralAddressOrDenom required for Sealevel hyp synthetic tokens'); return new SealevelHypSyntheticAdapter(chainName, multiProvider, { warpRouter: addressOrDenom, token: collateralAddressOrDenom, mailbox, }); case TokenStandard.SealevelHypCrossCollateral: assert(mailbox, 'Mailbox required for Sealevel hyp tokens'); assert(collateralAddressOrDenom, 'collateralAddressOrDenom required for Sealevel hyp cross-collateral tokens'); return new SealevelHypCrossCollateralAdapter(chainName, multiProvider, { warpRouter: addressOrDenom, token: collateralAddressOrDenom, mailbox, }); default: return undefined; } } //# sourceMappingURL=sealevelHyp.js.map