@hyperlane-xyz/sdk
Version:
The official SDK for the Hyperlane Network
27 lines • 1.21 kB
JavaScript
import { Wallet, ethers } from 'ethers';
import { Wallet as ZkSyncWallet } from 'zksync-ethers';
import { assert } from '@hyperlane-xyz/utils';
import { ChainTechnicalStack } from '../../index.js';
export class EvmMultiProtocolSignerAdapter {
chainName;
multiProvider;
constructor(chainName, privateKey, multiProtocolProvider) {
this.chainName = chainName;
const multiProvider = multiProtocolProvider.toMultiProvider();
const { technicalStack } = multiProvider.getChainMetadata(chainName);
assert(ethers.utils.isHexString(privateKey), `Private key for chain ${chainName} should be a hex string`);
const wallet = technicalStack === ChainTechnicalStack.ZkSync
? new ZkSyncWallet(privateKey)
: new Wallet(privateKey);
multiProvider.setSigner(this.chainName, wallet);
this.multiProvider = multiProvider;
}
async address() {
return this.multiProvider.getSignerAddress(this.chainName);
}
async sendAndConfirmTransaction(tx) {
const res = await this.multiProvider.sendTransaction(this.chainName, tx.transaction);
return res.transactionHash;
}
}
//# sourceMappingURL=ethersv5.js.map