diff --git a/packages/plugins/EVM/src/state/Connection/connection.ts b/packages/plugins/EVM/src/state/Connection/connection.ts index b93467fb8cdb..a67ace10b623 100644 --- a/packages/plugins/EVM/src/state/Connection/connection.ts +++ b/packages/plugins/EVM/src/state/Connection/connection.ts @@ -176,7 +176,7 @@ class Connection implements EVM_Connection { ): Promise { // Native if (!address || isNativeTokenAddress(options?.chainId ?? this.chainId, address)) { - const tx = { + const tx: Transaction = { from: options?.account ?? this.account, to: recipient, value: toHex(amount), @@ -186,6 +186,7 @@ class Connection implements EVM_Connection { { ...tx, gas: await this.estimateTransaction(tx, 50000, options), + ...options?.overrides, }, options, ) @@ -194,7 +195,7 @@ class Connection implements EVM_Connection { // ERC20 const contract = await this.getWeb3Contract(address, ERC20ABI as AbiItem[], options) const tx = contract?.methods.transfer(recipient, toHex(amount)) - return sendTransaction(contract, tx) + return sendTransaction(contract, tx, options?.overrides) } async transferNonFungibleToken( address: string, @@ -206,7 +207,7 @@ class Connection implements EVM_Connection { // ERC721 const contract = await this.getWeb3Contract(address, ERC721ABI as AbiItem[], options) const tx = contract?.methods.transferFrom(options?.account ?? this.account, recipient, tokenId) - return sendTransaction(contract, tx) + return sendTransaction(contract, tx, options?.overrides) } async getGasPrice(options?: EVM_Web3ConnectionOptions): Promise { @@ -280,7 +281,6 @@ class Connection implements EVM_Connection { async switchChain(options?: EVM_Web3ConnectionOptions): Promise { await Providers[options?.providerType ?? this.providerType].switchChain(options?.chainId) } - getNativeTokenBalance(options?: EVM_Web3ConnectionOptions): Promise { return this.getBalance(options?.account ?? this.account, options) } @@ -600,7 +600,13 @@ class Connection implements EVM_Connection { return this.hijackedRequest( { method: EthereumMethodType.ETH_CALL, - params: [transaction, 'latest'], + params: [ + { + ...transaction, + ...options?.overrides, + }, + 'latest', + ], }, options, ) @@ -609,7 +615,12 @@ class Connection implements EVM_Connection { return this.hijackedRequest( { method: EthereumMethodType.ETH_SEND_TRANSACTION, - params: [transaction], + params: [ + { + ...transaction, + ...options?.overrides, + }, + ], }, options, ) diff --git a/packages/web3-shared/evm/utils/contract.ts b/packages/web3-shared/evm/utils/contract.ts index f60b7b136974..2c2ecd4187a5 100644 --- a/packages/web3-shared/evm/utils/contract.ts +++ b/packages/web3-shared/evm/utils/contract.ts @@ -35,14 +35,14 @@ export async function encodeTransaction( export async function sendTransaction( contract: BaseContract | null, transaction?: PayableTransactionObject | NonPayableTransactionObject, - options?: SendOptions & { - maxPriorityFeePerGas?: string - maxFeePerGas?: string - }, + overrides?: Partial, ) { if (!contract || !transaction) throw new Error('Invalid contract or transaction.') const tx = await encodeTransaction(contract, transaction) - const receipt = await transaction.send(tx as PayableTx) + const receipt = await transaction.send({ + ...tx, + ...overrides, + } as PayableTx) return receipt?.transactionHash ?? '' }