harsta
Version:
Harsta is a contract development tool based on Hardhat, designed to streamline the development, testing, and referencing of contracts, addresses, ABIs, and contract instances.
57 lines (43 loc) • 1.48 kB
text/typescript
import type { ContractFactory, ContractTransactionResponse, TransactionReceipt } from 'ethers'
import { wait } from '../../utils'
export async function waitForDeplTrans(
[factory, args]: [ContractFactory, unknown[]] | [ContractFactory],
confirming?: (transaction: ContractTransactionResponse, args: any[]) => void,
confirmed?: (address: string, receipt: TransactionReceipt) => void,
) {
const contract = await factory.deploy(...(args || []))
const transaction = contract.deploymentTransaction()
if (!transaction)
throw new Error('Error: transaction send failed')
confirming?.(transaction, args || [])
const receipt = await wait(transaction)
if (!receipt)
throw new Error('Error: transaction confirm failed')
confirmed?.(receipt.contractAddress!, receipt)
return {
contract,
transaction,
receipt,
args,
address: receipt.contractAddress!,
}
}
export async function waitForCallTrans(
[method, args]: [any, any[]] | [any],
confirming?: (transaction: ContractTransactionResponse, args: any[]) => void,
confirmed?: (receipt: TransactionReceipt) => void,
) {
const transaction = await method(...(args || []))
if (!transaction)
throw new Error('Error: transaction send failed')
confirming?.(transaction, args || [])
const receipt = await wait(transaction)
if (!receipt)
throw new Error('Error: transaction confirm failed')
confirmed?.(receipt)
return {
transaction,
receipt,
args,
}
}