UNPKG

@hyperlane-xyz/sdk

Version:

The official SDK for the Hyperlane Network

26 lines 1.28 kB
import { rootLogger } from '@hyperlane-xyz/utils'; import { impersonateAccount, stopImpersonatingAccount, } from '../../../../utils/fork.js'; import { TxSubmitterType } from '../TxSubmitterTypes.js'; import { EV5JsonRpcTxSubmitter } from './EV5JsonRpcTxSubmitter.js'; export class EV5ImpersonatedAccountTxSubmitter extends EV5JsonRpcTxSubmitter { props; txSubmitterType = TxSubmitterType.IMPERSONATED_ACCOUNT; logger = rootLogger.child({ module: 'impersonated-account-submitter', }); constructor(multiProvider, props) { super(multiProvider, props); this.props = props; } async submit(...txs) { // It is assumed that this Submitter will be used by setting the registry url to the anvil endpoint const anvilEndpoint = this.multiProvider.getChainMetadata(this.props.chain) ?.rpcUrls[0].http; const impersonatedAccount = await impersonateAccount(this.props.userAddress, anvilEndpoint); this.multiProvider.setSharedSigner(impersonatedAccount); const transactionReceipts = await super.submit(...txs); await stopImpersonatingAccount(this.props.userAddress, anvilEndpoint); return transactionReceipts; } } //# sourceMappingURL=EV5ImpersonatedAccountTxSubmitter.js.map