public {{this.name}} = { async sendTransactionAsync( {{> typed_params inputs=inputs}} {{#this.payable}} txData: TxDataPayable = {}, {{/this.payable}} {{^this.payable}} txData: TxData = {}, {{/this.payable}} ): Promise { const self = this as {{contractName}}Contract; const txDataWithDefaults = await self.applyDefaultsToTxDataAsync( txData, self.{{this.name}}.estimateGasAsync.bind( self, {{> params inputs=inputs}} ), ); const txHash = await promisify( self.web3ContractInstance.{{this.name}}, self.web3ContractInstance, )( {{> params inputs=inputs}} txDataWithDefaults, ); return txHash; }, async estimateGasAsync( {{> typed_params inputs=inputs}} txData: TxData = {}, ): Promise { const self = this as {{contractName}}Contract; const txDataWithDefaults = await self.applyDefaultsToTxDataAsync( txData, ); const gas = await promisify( self.web3ContractInstance.{{this.name}}.estimateGas, self.web3ContractInstance, )( {{> params inputs=inputs}} txDataWithDefaults, ); return gas; }, getABIEncodedTransactionData( {{> typed_params inputs=inputs}} txData: TxData = {}, ): string { const self = this as {{contractName}}Contract; const abiEncodedTransactionData = self.web3ContractInstance.{{this.name}}.getData(); return abiEncodedTransactionData; }, };