async callAsync( {{> typed_params inputs=inputs}} callData: Partial = {}, defaultBlock?: BlockParam, ): Promise<{{> return_type outputs=outputs}}> { const self = this as any as {{contractName}}Contract; const functionSignature = '{{this.functionSignature}}'; const abiEncoder = self._lookupAbiEncoder(functionSignature); const encodedData = abiEncoder.encode([{{> params inputs=inputs}}]); const callDataWithDefaults = await BaseContract._applyDefaultsToTxDataAsync( { to: self.address, ...callData, data: encodedData, }, self._web3Wrapper.getContractDefaults(), ); const rawCallResult = await self._web3Wrapper.callAsync(callDataWithDefaults, defaultBlock); BaseContract._throwIfRevertWithReasonCallResult(rawCallResult); let resultArray = abiEncoder.decodeReturnValuesAsArrayOrNull(rawCallResult); return resultArray{{#singleReturnValue}}[0]{{/singleReturnValue}}; },