UNPKG

@hyperlane-xyz/sdk

Version:

The official SDK for the Hyperlane Network

43 lines 2.09 kB
import { ProtocolType, rootLogger } from '@hyperlane-xyz/utils'; import { MultiProtocolApp } from '../app/MultiProtocolApp.js'; import { CosmNativeCoreAdapter } from './adapters/CosmNativeCoreAdapter.js'; import { CosmWasmCoreAdapter } from './adapters/CosmWasmCoreAdapter.js'; import { EvmCoreAdapter } from './adapters/EvmCoreAdapter.js'; import { SealevelCoreAdapter } from './adapters/SealevelCoreAdapter.js'; import { StarknetCoreAdapter } from './adapters/StarknetCoreAdapter.js'; export class MultiProtocolCore extends MultiProtocolApp { multiProvider; addresses; logger; constructor(multiProvider, addresses, logger = rootLogger.child({ module: 'MultiProtocolCore' })) { super(multiProvider, addresses, logger); this.multiProvider = multiProvider; this.addresses = addresses; this.logger = logger; } static fromAddressesMap(addressesMap, multiProvider) { return new MultiProtocolCore(multiProvider.intersect(Object.keys(addressesMap)).result, addressesMap); } protocolToAdapter(protocol) { if (protocol === ProtocolType.Ethereum) return EvmCoreAdapter; if (protocol === ProtocolType.Sealevel) return SealevelCoreAdapter; if (protocol === ProtocolType.Cosmos) return CosmWasmCoreAdapter; if (protocol === ProtocolType.CosmosNative) return CosmNativeCoreAdapter; if (protocol === ProtocolType.Starknet) return StarknetCoreAdapter; throw new Error(`No adapter for protocol ${protocol}`); } extractMessageIds(origin, sourceTx) { return this.adapter(origin).extractMessageIds(sourceTx); } async waitForMessagesProcessed(origin, destination, sourceTx, delayMs, maxAttempts) { const messages = this.adapter(origin).extractMessageIds(sourceTx); await Promise.all(messages.map((msg) => this.adapter(destination).waitForMessageProcessed(msg.messageId, msg.destination, delayMs, maxAttempts))); return true; } } //# sourceMappingURL=MultiProtocolCore.js.map