aboutsummaryrefslogtreecommitdiffstats
path: root/packages/contract_templates/partials
diff options
context:
space:
mode:
authorBrandon Millman <brandon.millman@gmail.com>2018-03-02 05:04:55 +0800
committerBrandon Millman <brandon.millman@gmail.com>2018-03-02 05:04:55 +0800
commit0c16f0ea221d65e66942c27a69dda1c54f49e775 (patch)
tree5530d18fcd6e6c5e15272de3cb915fc2025c01bf /packages/contract_templates/partials
parent003d43b03ae373ca24d6d728ffa6b0f2dfcda79a (diff)
parent451a0dacbe85d7a0d16ef007c1eb945a4c1977cb (diff)
downloaddexon-sol-tools-0c16f0ea221d65e66942c27a69dda1c54f49e775.tar
dexon-sol-tools-0c16f0ea221d65e66942c27a69dda1c54f49e775.tar.gz
dexon-sol-tools-0c16f0ea221d65e66942c27a69dda1c54f49e775.tar.bz2
dexon-sol-tools-0c16f0ea221d65e66942c27a69dda1c54f49e775.tar.lz
dexon-sol-tools-0c16f0ea221d65e66942c27a69dda1c54f49e775.tar.xz
dexon-sol-tools-0c16f0ea221d65e66942c27a69dda1c54f49e775.tar.zst
dexon-sol-tools-0c16f0ea221d65e66942c27a69dda1c54f49e775.zip
Merge branch 'development' into feature/sra-reporter
* development: (71 commits) Set max to 2 ETH/2 ZRX Add missing types from website Add dependencies Update the README Move BaseContract to its own package Upgrate prettier remove unused import Move more configs into docsInfo and remove logic that does not belong there elsewhere Fix a bug with displaying solidity functions returning multiple return values Add ethers-contracts as a dependency Include types for ethers-contracts Fix the version Include types for ethers-contracts Rename idx to i Remove tslint disable Move BaseContract to web3Wrapper Merge ifs Fix an option description Add link to the docs Improve CHANGELOG entry ...
Diffstat (limited to 'packages/contract_templates/partials')
-rw-r--r--packages/contract_templates/partials/call.handlebars3
-rw-r--r--packages/contract_templates/partials/callAsync.handlebars30
-rw-r--r--packages/contract_templates/partials/event.handlebars5
-rw-r--r--packages/contract_templates/partials/params.handlebars3
-rw-r--r--packages/contract_templates/partials/return_type.handlebars10
-rw-r--r--packages/contract_templates/partials/tx.handlebars58
-rw-r--r--packages/contract_templates/partials/typed_params.handlebars3
7 files changed, 112 insertions, 0 deletions
diff --git a/packages/contract_templates/partials/call.handlebars b/packages/contract_templates/partials/call.handlebars
new file mode 100644
index 000000000..cfb9bea82
--- /dev/null
+++ b/packages/contract_templates/partials/call.handlebars
@@ -0,0 +1,3 @@
+public {{this.name}} = {
+ {{> callAsync}}
+};
diff --git a/packages/contract_templates/partials/callAsync.handlebars b/packages/contract_templates/partials/callAsync.handlebars
new file mode 100644
index 000000000..93d347145
--- /dev/null
+++ b/packages/contract_templates/partials/callAsync.handlebars
@@ -0,0 +1,30 @@
+{{#hasReturnValue}}
+async callAsync(
+{{> typed_params inputs=inputs}}
+{{#this.payable}}
+ txData: TxDataPayable = {},
+{{/this.payable}}
+{{^this.payable}}
+ txData: TxData = {},
+{{/this.payable}}
+ defaultBlock?: Web3.BlockParam,
+): Promise<{{> return_type outputs=outputs}}> {
+ const self = this as {{contractName}}Contract;
+ const inputAbi = _.find(this.abi, {name: '{{this.name}}'}).inputs;
+ [{{> params inputs=inputs}}] = BaseContract._transformABIData(inputAbi, [{{> params inputs=inputs}}], BaseContract._bigNumberToString.bind(this));
+ const encodedData = self._ethersInterface.functions.{{this.name}}(
+ {{> params inputs=inputs}}
+ ).data;
+ const callData = await self._applyDefaultsToTxDataAsync(
+ {
+ data: encodedData,
+ }
+ )
+ const rawCallResult = await self._web3Wrapper.callAsync(callData, defaultBlock);
+ const outputAbi = _.find(this.abi, {name: '{{this.name}}'}).outputs as Web3.DataItem[];
+ const outputParamsTypes = _.map(outputAbi, 'type');
+ let resultArray = ethersContracts.Interface.decodeParams(outputParamsTypes, rawCallResult) as any;
+ resultArray = BaseContract._transformABIData(outputAbi, resultArray, BaseContract._lowercaseAddress.bind(this));
+ return resultArray{{#singleReturnValue}}[0]{{/singleReturnValue}};
+},
+{{/hasReturnValue}}
diff --git a/packages/contract_templates/partials/event.handlebars b/packages/contract_templates/partials/event.handlebars
new file mode 100644
index 000000000..3c6100e4f
--- /dev/null
+++ b/packages/contract_templates/partials/event.handlebars
@@ -0,0 +1,5 @@
+export interface {{name}}ContractEventArgs {
+ {{#each inputs}}
+ {{name}}: {{#returnType type components}}{{/returnType}};
+ {{/each}}
+}
diff --git a/packages/contract_templates/partials/params.handlebars b/packages/contract_templates/partials/params.handlebars
new file mode 100644
index 000000000..ac5d4ae85
--- /dev/null
+++ b/packages/contract_templates/partials/params.handlebars
@@ -0,0 +1,3 @@
+{{#each inputs}}
+{{name}},
+{{/each}}
diff --git a/packages/contract_templates/partials/return_type.handlebars b/packages/contract_templates/partials/return_type.handlebars
new file mode 100644
index 000000000..9dd509953
--- /dev/null
+++ b/packages/contract_templates/partials/return_type.handlebars
@@ -0,0 +1,10 @@
+{{#if outputs.length}}
+{{#singleReturnValue}}
+{{#returnType outputs.0.type components}}{{/returnType}}
+{{/singleReturnValue}}
+{{^singleReturnValue}}
+[{{#each outputs}}{{#returnType type components}}{{/returnType}}{{#unless @last}}, {{/unless}}{{/each}}]
+{{/singleReturnValue}}
+{{else}}
+void
+{{/if}}
diff --git a/packages/contract_templates/partials/tx.handlebars b/packages/contract_templates/partials/tx.handlebars
new file mode 100644
index 000000000..347a482d6
--- /dev/null
+++ b/packages/contract_templates/partials/tx.handlebars
@@ -0,0 +1,58 @@
+public {{this.name}} = {
+ async sendTransactionAsync(
+ {{> typed_params inputs=inputs}}
+ {{#this.payable}}
+ txData: TxDataPayable = {},
+ {{/this.payable}}
+ {{^this.payable}}
+ txData: TxData = {},
+ {{/this.payable}}
+ ): Promise<string> {
+ const self = this as {{contractName}}Contract;
+ const inputAbi = _.find(this.abi, {name: '{{this.name}}'}).inputs;
+ [{{> params inputs=inputs}}] = BaseContract._transformABIData(inputAbi, [{{> params inputs=inputs}}], BaseContract._bigNumberToString.bind(this));
+ const encodedData = this._ethersInterface.functions.{{this.name}}(
+ {{> params inputs=inputs}}
+ ).data
+ const txDataWithDefaults = await self._applyDefaultsToTxDataAsync(
+ {
+ ...txData,
+ data: encodedData,
+ },
+ self.{{this.name}}.estimateGasAsync.bind(
+ self,
+ {{> params inputs=inputs}}
+ ),
+ );
+ const txHash = await this._web3Wrapper.sendTransactionAsync(txDataWithDefaults);
+ return txHash;
+ },
+ async estimateGasAsync(
+ {{> typed_params inputs=inputs}}
+ txData: TxData = {},
+ ): Promise<number> {
+ const self = this as {{contractName}}Contract;
+ const encodedData = this._ethersInterface.functions.{{this.name}}(
+ {{> params inputs=inputs}}
+ ).data
+ const txDataWithDefaults = await self._applyDefaultsToTxDataAsync(
+ {
+ ...txData,
+ data: encodedData,
+ }
+ );
+ const gas = await this._web3Wrapper.estimateGasAsync(txDataWithDefaults);
+ return gas;
+ },
+ getABIEncodedTransactionData(
+ {{> typed_params inputs=inputs}}
+ txData: TxData = {},
+ ): string {
+ const self = this as {{contractName}}Contract;
+ const abiEncodedTransactionData = this._ethersInterface.functions.{{this.name}}(
+ {{> params inputs=inputs}}
+ ).data
+ return abiEncodedTransactionData;
+ },
+ {{> callAsync}}
+};
diff --git a/packages/contract_templates/partials/typed_params.handlebars b/packages/contract_templates/partials/typed_params.handlebars
new file mode 100644
index 000000000..c100e58f7
--- /dev/null
+++ b/packages/contract_templates/partials/typed_params.handlebars
@@ -0,0 +1,3 @@
+{{#each inputs}}
+ {{name}}: {{#parameterType type components}}{{/parameterType}},
+{{/each}}