import { TransactionReceipt, TransactionRequest, TransactionResponse } from '@ethersproject/abstract-provider'; import type { BigNumber } from '@ethersproject/bignumber'; import { Deferrable } from '@ethersproject/properties'; import { BlockIdentifier, DebugTransaction, SendPrivateTransactionOptions, SimulateAssetChangesResponse, SimulateExecutionResponse } from '../types/types'; /** * The Transact namespace contains methods used for sending transactions and * checking on the state of submitted transactions. * * Do not call this constructor directly. Instead, instantiate an Alchemy object * with `const alchemy = new Alchemy(config)` and then access the transact * namespace via `alchemy.transact`. */ export declare class TransactNamespace { private readonly config; /** * Used to send a single transaction to Flashbots. Flashbots will attempt to * send the transaction to miners for the next 25 blocks. * * Returns the transaction hash of the submitted transaction. * * @param signedTransaction The raw, signed transaction as a hash. * @param maxBlockNumber Optional highest block number in which the * transaction should be included. * @param options Options to configure the request. */ sendPrivateTransaction(signedTransaction: string, maxBlockNumber?: number, options?: SendPrivateTransactionOptions): Promise; /** * Stops the provided private transaction from being submitted for future * blocks. A transaction can only be cancelled if the request is signed by the * same key as the {@link sendPrivateTransaction} call submitting the * transaction in first place. * * Please note that fast mode transactions cannot be cancelled using this method. * * Returns a boolean indicating whether the cancellation was successful. * * @param transactionHash Transaction hash of private tx to be cancelled */ cancelPrivateTransaction(transactionHash: string): Promise; /** * Simulates the asset changes resulting from a list of transactions simulated * in sequence. * * Returns a list of asset changes for each transaction during simulation. * * @param transactions Transactions list of max 3 transactions to simulate. * @param blockIdentifier Optional block identifier to simulate the * transaction in. */ simulateAssetChangesBundle(transactions: DebugTransaction[], blockIdentifier?: BlockIdentifier): Promise; /** * Simulates the asset changes resulting from a single transaction. * * Returns list of asset changes that occurred during the transaction * simulation. Note that this method does not run the transaction on the * blockchain. * * @param transaction The transaction to simulate. * @param blockIdentifier Optional block identifier to simulate the * transaction in. */ simulateAssetChanges(transaction: DebugTransaction, blockIdentifier?: BlockIdentifier): Promise; /** * Simulates a list of transactions in sequence and returns list of decoded * traces and logs that occurred for each transaction during simulation. * * Note that this method does not run any transactions on the blockchain. * * @param transactions Transactions list of max 3 transactions to simulate. * @param blockIdentifier Optional block identifier to simulate the * transaction in. */ simulateExecutionBundle(transactions: DebugTransaction[], blockIdentifier?: BlockIdentifier): Promise; /** * Simulates a single transaction and the resulting and returns list of * decoded traces and logs that occurred during the transaction simulation. * * Note that this method does not run the transaction on the blockchain. * * @param transaction The transaction to simulate. * @param blockIdentifier Optional block identifier to simulate the * transaction in. */ simulateExecution(transaction: DebugTransaction, blockIdentifier?: BlockIdentifier): Promise; /** * Returns the transaction with hash or null if the transaction is unknown. * * If a transaction has not been mined, this method will search the * transaction pool. Various backends may have more restrictive transaction * pool access (e.g. if the gas price is too low or the transaction was only * recently sent and not yet indexed) in which case this method may also return null. * * NOTE: This is an alias for {@link CoreNamespace.getTransaction}. * * @param transactionHash The hash of the transaction to get. * @public */ getTransaction(transactionHash: string | Promise): Promise; /** * Submits transaction to the network to be mined. The transaction must be * signed, and be valid (i.e. the nonce is correct and the account has * sufficient balance to pay for the transaction). * * NOTE: This is an alias for {@link CoreNamespace.sendTransaction}. * * @param signedTransaction The signed transaction to send. * @public */ sendTransaction(signedTransaction: string | Promise): Promise; /** * Returns an estimate of the amount of gas that would be required to submit * transaction to the network. * * An estimate may not be accurate since there could be another transaction on * the network that was not accounted for, but after being mined affects the * relevant state. * * This is an alias for {@link CoreNamespace.estimateGas}. * * @param transaction The transaction to estimate gas for. * @public */ estimateGas(transaction: Deferrable): Promise; /** * Returns a fee per gas (in wei) that is an estimate of how much you can pay * as a priority fee, or "tip", to get a transaction included in the current block. * * This number is generally used to set the `maxPriorityFeePerGas` field in a * transaction request. * * @public */ getMaxPriorityFeePerGas(): Promise; /** * Returns a promise which will not resolve until specified transaction hash is mined. * * If {@link confirmations} is 0, this method is non-blocking and if the * transaction has not been mined returns null. Otherwise, this method will * block until the transaction has confirmed blocks mined on top of the block * in which it was mined. * * NOTE: This is an alias for {@link CoreNamespace.waitForTransaction}. * * @param transactionHash The hash of the transaction to wait for. * @param confirmations The number of blocks to wait for. * @param timeout The maximum time to wait for the transaction to confirm. * @public */ waitForTransaction(transactionHash: string, confirmations?: number, timeout?: number): Promise; }