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