@hyperlane-xyz/sdk
Version:
The official SDK for the Hyperlane Network
40 lines • 1.95 kB
JavaScript
import { assert } from '@hyperlane-xyz/utils';
import { CwHypCollateralAdapter, CwHypNativeAdapter, CwHypSyntheticAdapter, } from './CosmWasmTokenAdapter.js';
import { CosmNativeHypCollateralAdapter, CosmNativeHypSyntheticAdapter, } from './CosmosModuleTokenAdapter.js';
import { hasChainMetadata, } from './hypTokenAdapterUtils.js';
import { TokenStandard } from '../TokenStandard.js';
export function createCosmosHypAdapter(multiProvider, token) {
const { standard, chainName, addressOrDenom, collateralAddressOrDenom } = token;
if (!standard || !hasChainMetadata(multiProvider, chainName)) {
return undefined;
}
switch (standard) {
case TokenStandard.CwHypNative:
return new CwHypNativeAdapter(chainName, multiProvider, {
warpRouter: addressOrDenom,
});
case TokenStandard.CwHypCollateral:
assert(collateralAddressOrDenom, 'collateralAddressOrDenom required for CwHypCollateral');
return new CwHypCollateralAdapter(chainName, multiProvider, {
warpRouter: addressOrDenom,
token: collateralAddressOrDenom,
});
case TokenStandard.CwHypSynthetic:
assert(collateralAddressOrDenom, 'collateralAddressOrDenom required for CwHypSynthetic');
return new CwHypSyntheticAdapter(chainName, multiProvider, {
warpRouter: addressOrDenom,
token: collateralAddressOrDenom,
});
case TokenStandard.CosmNativeHypCollateral:
return new CosmNativeHypCollateralAdapter(chainName, multiProvider, {
token: addressOrDenom,
});
case TokenStandard.CosmNativeHypSynthetic:
return new CosmNativeHypSyntheticAdapter(chainName, multiProvider, {
token: addressOrDenom,
});
default:
return undefined;
}
}
//# sourceMappingURL=cosmosHyp.js.map