Thanks to visit codestin.com
Credit goes to github.com

Skip to content
This repository was archived by the owner on Mar 5, 2025. It is now read-only.
Merged
Show file tree
Hide file tree
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Next Next commit
Add populate tx method
  • Loading branch information
avkos committed Jun 25, 2024
commit 101c3a04cd2816f6d81ba9dde76bc6bfaa830622
18 changes: 17 additions & 1 deletion packages/web3-eth-contract/src/contract.ts
Original file line number Diff line number Diff line change
Expand Up @@ -1268,7 +1268,23 @@ export class Contract<Abi extends ContractAbi>

send: (options?: PayableTxOptions | NonPayableTxOptions): ContractMethodSend =>
this._contractMethodSend(methodAbi, abiParams, internalErrorsAbis, options),

populateTransaction: (
options?: PayableTxOptions | NonPayableTxOptions,
contractOptions?: ContractOptions,
) => {
let modifiedContractOptions = contractOptions ?? options;
modifiedContractOptions = {
...modifiedContractOptions,
input: undefined,
from: modifiedContractOptions?.from ?? this.defaultAccount ?? undefined,
};
return getSendTxParams({
abi,
params,
options: { ...options, dataInputFill: this.config.contractDataInputFill },
contractOptions: modifiedContractOptions as ContractOptions,
});
},
estimateGas: async <ReturnFormat extends DataFormat = typeof DEFAULT_RETURN_FORMAT>(
options?: PayableCallOptions | NonPayableCallOptions,
returnFormat: ReturnFormat = this
Expand Down
17 changes: 16 additions & 1 deletion packages/web3-eth-contract/src/types.ts
Original file line number Diff line number Diff line change
Expand Up @@ -28,13 +28,15 @@ import {
DataFormat,
DEFAULT_RETURN_FORMAT,
FormatType,
TransactionCall,
} from 'web3-types';
import { NewHeadsSubscription, SendTransactionEvents } from 'web3-eth';
import { LogsSubscription } from './log_subscription.js';

export type NonPayableTxOptions = NonPayableCallOptions;
export type PayableTxOptions = PayableCallOptions;
export { ContractAbiWithSignature, EventLog, ContractOptions } from 'web3-types';
import type { ContractOptions } from 'web3-types';
export type { ContractAbiWithSignature, EventLog, ContractOptions } from 'web3-types';

export interface ContractEventOptions {
/**
Expand Down Expand Up @@ -177,6 +179,10 @@ export interface NonPayableMethodObject<Inputs = unknown[], Outputs = unknown[]>
FormatType<TransactionReceipt, typeof DEFAULT_RETURN_FORMAT>,
SendTransactionEvents<typeof DEFAULT_RETURN_FORMAT>
>;
populateTransaction(
tx?: PayableTxOptions | NonPayableTxOptions,
contractOptions?: ContractOptions,
): TransactionCall;

/**
* Returns the amount of gas consumed by executing the method locally without creating a new transaction on the blockchain.
Expand Down Expand Up @@ -375,6 +381,15 @@ export interface PayableMethodObject<Inputs = unknown[], Outputs = unknown[]> {
SendTransactionEvents<typeof DEFAULT_RETURN_FORMAT>
>;

/**
*
* @param tx
* @param contractOptions
*/
populateTransaction(
tx?: PayableTxOptions | NonPayableTxOptions,
contractOptions?: ContractOptions,
): TransactionCall;
/**
* Returns the amount of gas consumed by executing the method locally without creating a new transaction on the blockchain.
* The returned amount can be used as a gas estimate for executing the transaction publicly. The actual gas used can be
Expand Down