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