dequanto 0.1.15 → 0.1.22

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (147) hide show
  1. package/lib/cjs/abi/coders/array.js +1 -1
  2. package/lib/cjs/abi/coders/array.js.map +1 -1
  3. package/lib/cjs/chains/arbitrum/Arbiscan.d.ts +1 -1
  4. package/lib/cjs/chains/boba/Bobascan.d.ts +1 -1
  5. package/lib/cjs/chains/xdai/XDaiscan.d.ts +1 -1
  6. package/lib/cjs/config/Config.js.map +1 -1
  7. package/lib/cjs/contracts/ContractBase.d.ts +1 -0
  8. package/lib/cjs/contracts/ContractBase.js.map +1 -1
  9. package/lib/cjs/contracts/ContractClassFactory.d.ts +2 -1
  10. package/lib/cjs/contracts/ContractClassFactory.js +5 -1
  11. package/lib/cjs/contracts/ContractClassFactory.js.map +1 -1
  12. package/lib/cjs/contracts/deploy/ContractDeployer.d.ts +1 -1
  13. package/lib/cjs/contracts/deploy/Deployments.d.ts +1 -1
  14. package/lib/cjs/contracts/deploy/proxy/ProxyDeployment.d.ts +1 -1
  15. package/lib/cjs/contracts/deploy/storage/DeploymentsStorage.d.ts +1 -1
  16. package/lib/cjs/contracts/deploy/storage/DeploymentsStorage.js +3 -3
  17. package/lib/cjs/contracts/deploy/storage/DeploymentsStorage.js.map +1 -1
  18. package/lib/cjs/explorer/BlockChainExplorerFactory.d.ts +1 -1
  19. package/lib/cjs/explorer/BlockChainExplorerProvider.d.ts +1 -1
  20. package/lib/cjs/explorer/Bscscan.d.ts +1 -1
  21. package/lib/cjs/explorer/ContractVerifier.d.ts +1 -1
  22. package/lib/cjs/explorer/ContractVerifier.js.map +1 -1
  23. package/lib/cjs/explorer/Etherscan.d.ts +1 -1
  24. package/lib/cjs/explorer/Polyscan.d.ts +1 -1
  25. package/lib/cjs/gen/Generator.d.ts +2 -0
  26. package/lib/cjs/gen/Generator.js +2 -0
  27. package/lib/cjs/gen/Generator.js.map +1 -1
  28. package/lib/cjs/gen/GeneratorFromAbi.d.ts +33 -7
  29. package/lib/cjs/gen/GeneratorFromAbi.js +222 -111
  30. package/lib/cjs/gen/GeneratorFromAbi.js.map +1 -1
  31. package/lib/cjs/gen/GeneratorStorageReader.d.ts +1 -0
  32. package/lib/cjs/gen/GeneratorStorageReader.js +25 -9
  33. package/lib/cjs/gen/GeneratorStorageReader.js.map +1 -1
  34. package/lib/cjs/hardhat/HardhatProvider.d.ts +24 -2
  35. package/lib/cjs/hardhat/HardhatProvider.js +155 -92
  36. package/lib/cjs/hardhat/HardhatProvider.js.map +1 -1
  37. package/lib/cjs/json/JsonArrayMultiStore.js +4 -2
  38. package/lib/cjs/json/JsonArrayMultiStore.js.map +1 -1
  39. package/lib/cjs/json/JsonArrayStore.d.ts +2 -2
  40. package/lib/cjs/models/TEth.d.ts +2 -2
  41. package/lib/cjs/solidity/SlotsStorage.js.map +1 -1
  42. package/lib/cjs/utils/$abiParser.js +8 -1
  43. package/lib/cjs/utils/$abiParser.js.map +1 -1
  44. package/lib/cjs/utils/$bigint.d.ts +4 -0
  45. package/lib/cjs/utils/$bigint.js +40 -0
  46. package/lib/cjs/utils/$bigint.js.map +1 -1
  47. package/lib/cjs/utils/$config.js +4 -0
  48. package/lib/cjs/utils/$config.js.map +1 -1
  49. package/lib/cjs/utils/$contract.js +6 -0
  50. package/lib/cjs/utils/$contract.js.map +1 -1
  51. package/lib/cjs/utils/$path.d.ts +6 -0
  52. package/lib/cjs/utils/$path.js +19 -0
  53. package/lib/cjs/utils/$path.js.map +1 -1
  54. package/lib/cjs/utils/$sig.d.ts +3 -0
  55. package/lib/cjs/utils/$sig.js +2 -2
  56. package/lib/cjs/utils/$sig.js.map +1 -1
  57. package/lib/cjs/utils/types.d.ts +3 -0
  58. package/lib/esm/abi/coders/array.js.map +1 -1
  59. package/lib/esm/abi/coders/array.mjs +1 -1
  60. package/lib/esm/chains/arbitrum/Arbiscan.d.ts +1 -1
  61. package/lib/esm/chains/boba/Bobascan.d.ts +1 -1
  62. package/lib/esm/chains/xdai/XDaiscan.d.ts +1 -1
  63. package/lib/esm/config/Config.js.map +1 -1
  64. package/lib/esm/contracts/ContractBase.d.ts +1 -0
  65. package/lib/esm/contracts/ContractBase.js.map +1 -1
  66. package/lib/esm/contracts/ContractClassFactory.d.ts +2 -1
  67. package/lib/esm/contracts/ContractClassFactory.js.map +1 -1
  68. package/lib/esm/contracts/ContractClassFactory.mjs +5 -1
  69. package/lib/esm/contracts/deploy/ContractDeployer.d.ts +1 -1
  70. package/lib/esm/contracts/deploy/Deployments.d.ts +1 -1
  71. package/lib/esm/contracts/deploy/proxy/ProxyDeployment.d.ts +1 -1
  72. package/lib/esm/contracts/deploy/storage/DeploymentsStorage.d.ts +1 -1
  73. package/lib/esm/contracts/deploy/storage/DeploymentsStorage.js.map +1 -1
  74. package/lib/esm/contracts/deploy/storage/DeploymentsStorage.mjs +3 -3
  75. package/lib/esm/explorer/BlockChainExplorerFactory.d.ts +1 -1
  76. package/lib/esm/explorer/BlockChainExplorerProvider.d.ts +1 -1
  77. package/lib/esm/explorer/Bscscan.d.ts +1 -1
  78. package/lib/esm/explorer/ContractVerifier.d.ts +1 -1
  79. package/lib/esm/explorer/ContractVerifier.js.map +1 -1
  80. package/lib/esm/explorer/Etherscan.d.ts +1 -1
  81. package/lib/esm/explorer/Polyscan.d.ts +1 -1
  82. package/lib/esm/gen/Generator.d.ts +2 -0
  83. package/lib/esm/gen/Generator.js.map +1 -1
  84. package/lib/esm/gen/Generator.mjs +2 -0
  85. package/lib/esm/gen/GeneratorFromAbi.d.ts +33 -7
  86. package/lib/esm/gen/GeneratorFromAbi.js.map +1 -1
  87. package/lib/esm/gen/GeneratorFromAbi.mjs +222 -111
  88. package/lib/esm/gen/GeneratorStorageReader.d.ts +1 -0
  89. package/lib/esm/gen/GeneratorStorageReader.js.map +1 -1
  90. package/lib/esm/gen/GeneratorStorageReader.mjs +25 -9
  91. package/lib/esm/hardhat/HardhatProvider.d.ts +24 -2
  92. package/lib/esm/hardhat/HardhatProvider.js.map +1 -1
  93. package/lib/esm/hardhat/HardhatProvider.mjs +155 -92
  94. package/lib/esm/json/JsonArrayMultiStore.js.map +1 -1
  95. package/lib/esm/json/JsonArrayMultiStore.mjs +4 -2
  96. package/lib/esm/json/JsonArrayStore.d.ts +2 -2
  97. package/lib/esm/models/TEth.d.ts +2 -2
  98. package/lib/esm/solidity/SlotsStorage.js.map +1 -1
  99. package/lib/esm/utils/$abiParser.js.map +1 -1
  100. package/lib/esm/utils/$abiParser.mjs +8 -1
  101. package/lib/esm/utils/$bigint.d.ts +4 -0
  102. package/lib/esm/utils/$bigint.js.map +1 -1
  103. package/lib/esm/utils/$bigint.mjs +40 -0
  104. package/lib/esm/utils/$config.js.map +1 -1
  105. package/lib/esm/utils/$config.mjs +4 -0
  106. package/lib/esm/utils/$contract.js.map +1 -1
  107. package/lib/esm/utils/$contract.mjs +6 -0
  108. package/lib/esm/utils/$path.d.ts +6 -0
  109. package/lib/esm/utils/$path.js.map +1 -1
  110. package/lib/esm/utils/$path.mjs +19 -0
  111. package/lib/esm/utils/$sig.d.ts +3 -0
  112. package/lib/esm/utils/$sig.js.map +1 -1
  113. package/lib/esm/utils/$sig.mjs +1 -1
  114. package/lib/esm/utils/types.d.ts +3 -0
  115. package/package.json +1 -1
  116. package/src/abi/coders/array.ts +1 -1
  117. package/src/config/Config.ts +2 -1
  118. package/src/contracts/ContractBase.ts +2 -0
  119. package/src/contracts/ContractClassFactory.ts +8 -2
  120. package/src/contracts/deploy/ContractDeployer.ts +1 -1
  121. package/src/contracts/deploy/Deployments.ts +1 -1
  122. package/src/contracts/deploy/proxy/ProxyDeployment.ts +1 -1
  123. package/src/contracts/deploy/storage/DeploymentsStorage.ts +5 -5
  124. package/src/contracts/wrappers/FnSignedWrapper.ts +1 -1
  125. package/src/explorer/BlockChainExplorerFactory.ts +1 -1
  126. package/src/explorer/BlockChainExplorerProvider.ts +1 -1
  127. package/src/explorer/ContractVerifier.ts +2 -1
  128. package/src/gen/ContractStorageReaderTemplate.d.ts.template +14 -0
  129. package/src/gen/ContractStorageReaderTemplate.js +17 -0
  130. package/src/gen/ContractTemplate.d.ts.template +111 -0
  131. package/src/gen/ContractTemplate.js +77 -0
  132. package/src/gen/Generator.ts +6 -0
  133. package/src/gen/GeneratorFromAbi.ts +233 -122
  134. package/src/gen/GeneratorStorageReader.ts +29 -11
  135. package/src/hardhat/HardhatProvider.ts +228 -106
  136. package/src/json/JsonArrayMultiStore.ts +4 -2
  137. package/src/json/JsonArrayStore.ts +1 -1
  138. package/src/models/TEth.ts +2 -2
  139. package/src/solidity/SlotsStorage.ts +2 -1
  140. package/src/types/TAbi.ts +2 -2
  141. package/src/utils/$abiParser.ts +8 -1
  142. package/src/utils/$bigint.ts +41 -0
  143. package/src/utils/$config.ts +4 -0
  144. package/src/utils/$contract.ts +6 -1
  145. package/src/utils/$path.ts +18 -0
  146. package/src/utils/$sig.ts +1 -1
  147. package/src/utils/types.ts +3 -0
@@ -21,6 +21,7 @@ class GeneratorFromAbi {
21
21
  return Gen;
22
22
  }
23
23
  async generate(abiJson, opts) {
24
+ let targetType = opts.target ?? 'ts';
24
25
  let methodsArr = (0, alot_1.default)(abiJson)
25
26
  .filter(x => x.type === 'function' || x.type === 'constructor')
26
27
  .groupBy(x => x.name)
@@ -36,18 +37,9 @@ class GeneratorFromAbi {
36
37
  return null;
37
38
  })
38
39
  .filter(Boolean)
40
+ .map(x => x[opts?.target ?? 'ts'])
39
41
  .map(Str_1.Str.formatMethod)
40
42
  .toArray();
41
- // let methodInterfacesArr = alot(abiJson)
42
- // .filter(x => x.type === 'function')
43
- // .groupBy(x => x.name)
44
- // .map(group => {
45
- // let item = group.values[0];
46
- // return Gen.serializeMethodInterfacesTs(item.name, group.values);
47
- // })
48
- // .filter(Boolean)
49
- // .toArray();
50
- //let methodInterfacesAll = Gen.serializeMethodInterfacesAllTs(methodInterfacesArr);
51
43
  let methodTypes = (0, alot_1.default)(abiJson)
52
44
  .filter(x => x.type === 'function')
53
45
  .groupBy(x => x.name)
@@ -61,6 +53,7 @@ class GeneratorFromAbi {
61
53
  .filter(x => x.type === 'event')
62
54
  .map(x => Gen.serializeEvent(x))
63
55
  .filter(Boolean)
56
+ .map(x => x[opts?.target ?? 'ts'])
64
57
  .map(Str_1.Str.formatMethod);
65
58
  let eventTypes = (0, alot_1.default)(abiJson)
66
59
  .filter(x => x.type === 'event')
@@ -76,11 +69,13 @@ class GeneratorFromAbi {
76
69
  .filter(x => x.type === 'event')
77
70
  .map(x => Gen.serializeEventExtractor(x))
78
71
  .filter(Boolean)
72
+ .map(x => x[opts?.target ?? 'ts'])
79
73
  .map(Str_1.Str.formatMethod);
80
74
  let eventsFetchersArr = abiJson
81
75
  .filter(x => x.type === 'event')
82
76
  .map(x => Gen.serializeEventFetcher(x))
83
77
  .filter(Boolean)
78
+ .map(x => x[opts?.target ?? 'ts'])
84
79
  .map(Str_1.Str.formatMethod);
85
80
  // let eventInterfaces = abiJson
86
81
  // .filter(x => x.type === 'event')
@@ -92,7 +87,7 @@ class GeneratorFromAbi {
92
87
  let eventsExtractors = eventsExtractorsArr.join('\n\n');
93
88
  let eventsFetchers = eventsFetchersArr.join('\n\n');
94
89
  let name = opts.name;
95
- let templatePath = _path_1.$path.resolve(`/src/gen/ContractTemplate.ts`);
90
+ let templatePath = _path_1.$path.resolve(`/src/gen/ContractTemplate.${targetType}`);
96
91
  let template = await atma_io_1.File.readAsync(templatePath, { skipHooks: true });
97
92
  let EtherscanStr;
98
93
  let EthWeb3ClientStr;
@@ -100,13 +95,14 @@ class GeneratorFromAbi {
100
95
  let sourceUri;
101
96
  let Web3ClientOptions = '';
102
97
  let EvmScanOptions = '';
98
+ let importPfx = targetType === 'js' ? 'dequanto' : '@dequanto';
103
99
  switch (opts.network) {
104
100
  case 'bsc':
105
101
  EtherscanStr = 'Bscscan';
106
102
  EthWeb3ClientStr = 'BscWeb3Client';
107
103
  imports = [
108
- `import { Bscscan } from '@dequanto/explorer/Bscscan'`,
109
- `import { BscWeb3Client } from '@dequanto/clients/BscWeb3Client'`,
104
+ `import { Bscscan } from '${importPfx}/explorer/Bscscan'`,
105
+ `import { BscWeb3Client } from '${importPfx}/clients/BscWeb3Client'`,
110
106
  ];
111
107
  sourceUri = `https://bscscan.com/address/${opts.address}#code`;
112
108
  break;
@@ -114,8 +110,8 @@ class GeneratorFromAbi {
114
110
  EtherscanStr = 'Polyscan';
115
111
  EthWeb3ClientStr = 'PolyWeb3Client';
116
112
  imports = [
117
- `import { Polyscan } from '@dequanto/explorer/Polyscan'`,
118
- `import { PolyWeb3Client } from '@dequanto/clients/PolyWeb3Client'`,
113
+ `import { Polyscan } from '${importPfx}/explorer/Polyscan'`,
114
+ `import { PolyWeb3Client } from '${importPfx}/clients/PolyWeb3Client'`,
119
115
  ];
120
116
  sourceUri = `https://polygonscan.com/address/${opts.address}#code`;
121
117
  break;
@@ -123,8 +119,8 @@ class GeneratorFromAbi {
123
119
  EtherscanStr = 'XDaiscan';
124
120
  EthWeb3ClientStr = 'XDaiWeb3Client';
125
121
  imports = [
126
- `import { XDaiscan } from '@dequanto/chains/xdai/XDaiscan'`,
127
- `import { XDaiWeb3Client } from '@dequanto/chains/xdai/XDaiWeb3Client'`,
122
+ `import { XDaiscan } from '${importPfx}/chains/xdai/XDaiscan'`,
123
+ `import { XDaiWeb3Client } from '${importPfx}/chains/xdai/XDaiWeb3Client'`,
128
124
  ];
129
125
  sourceUri = `https://blockscout.com/xdai/mainnet/address/${opts.address}/contracts`;
130
126
  break;
@@ -132,8 +128,8 @@ class GeneratorFromAbi {
132
128
  EtherscanStr = 'Etherscan';
133
129
  EthWeb3ClientStr = 'EthWeb3Client';
134
130
  imports = [
135
- `import { Etherscan } from '@dequanto/explorer/Etherscan'`,
136
- `import { EthWeb3Client } from '@dequanto/clients/EthWeb3Client'`,
131
+ `import { Etherscan } from '${importPfx}/explorer/Etherscan'`,
132
+ `import { EthWeb3Client } from '${importPfx}/clients/EthWeb3Client'`,
137
133
  ];
138
134
  sourceUri = `https://etherscan.io/address/${opts.address}#code`;
139
135
  break;
@@ -141,8 +137,8 @@ class GeneratorFromAbi {
141
137
  EtherscanStr = 'Etherscan';
142
138
  EthWeb3ClientStr = 'HardhatWeb3Client';
143
139
  imports = [
144
- `import { Etherscan } from '@dequanto/explorer/Etherscan'`,
145
- `import { HardhatWeb3Client } from '@dequanto/hardhat/HardhatWeb3Client'`,
140
+ `import { Etherscan } from '${importPfx}/explorer/Etherscan'`,
141
+ `import { HardhatWeb3Client } from '${importPfx}/hardhat/HardhatWeb3Client'`,
146
142
  ];
147
143
  sourceUri = ``;
148
144
  break;
@@ -152,8 +148,8 @@ class GeneratorFromAbi {
152
148
  EtherscanStr = 'Evmscan';
153
149
  EthWeb3ClientStr = 'EvmWeb3Client';
154
150
  imports = [
155
- `import { Evmscan } from '@dequanto/explorer/Evmscan'`,
156
- `import { EvmWeb3Client } from '@dequanto/clients/EvmWeb3Client'`,
151
+ `import { Evmscan } from '${importPfx}/explorer/Evmscan'`,
152
+ `import { EvmWeb3Client } from '${importPfx}/clients/EvmWeb3Client'`,
157
153
  ];
158
154
  Web3ClientOptions = `{ platform: '${opts.network}' }`;
159
155
  EvmScanOptions = `{ platform: '${opts.network}' }`;
@@ -171,7 +167,7 @@ class GeneratorFromAbi {
171
167
  let outputFilename = /[^\\/]+$/.exec(name)[0];
172
168
  let outputPath = /\.(ts|js)$/.test(opts.output)
173
169
  ? opts.output
174
- : atma_utils_1.class_Uri.combine(opts.output, outputDirectory, `${outputFilename}.ts`);
170
+ : atma_utils_1.class_Uri.combine(opts.output, outputDirectory, `${outputFilename}.${opts.outputFileExt ?? targetType}`);
175
171
  let meta = {
176
172
  artifact: opts.artifact
177
173
  ? this.getRelativePath(opts.artifact)
@@ -187,13 +183,13 @@ class GeneratorFromAbi {
187
183
  let storageReaderClass = '';
188
184
  try {
189
185
  let storageReaderGenerator = new GeneratorStorageReader_1.GeneratorStorageReader();
190
- let reader = await storageReaderGenerator.generate({ ...opts });
186
+ let reader = await storageReaderGenerator.generate({ ...opts, target: targetType });
191
187
  if (reader.sourcePath != null && opts.address == null) {
192
188
  sourceUri = this.getRelativePath(reader.sourcePath);
193
189
  }
194
190
  if (reader.className) {
195
191
  storageReaderClass = reader.code;
196
- storageReaderProperty = `declare storage: ${reader.className}`;
192
+ storageReaderProperty = targetType === 'ts' ? `declare storage: ${reader.className}` : '';
197
193
  storageReaderInitializer = `this.storage = new ${reader.className}(this.address, this.client, this.explorer);`;
198
194
  _logger_1.$logger.log(`green<StorageReader> was generated`);
199
195
  }
@@ -226,13 +222,13 @@ class GeneratorFromAbi {
226
222
  .replace(`/* STORAGE_READER_INITIALIZER */`, storageReaderInitializer)
227
223
  .replace(`/* STORAGE_READER_PROPERTY */`, storageReaderProperty)
228
224
  .replace(`/* STORAGE_READER_CLASS */`, () => storageReaderClass)
229
- .replace(`/* TX_CALLER_METHODS */`, () => Gen.serializeTxCallerMethods(className, abiJson))
230
- .replace(`/* TX_DATA_METHODS */`, () => Gen.serializeTxDataMethods(className, abiJson))
225
+ .replace(`/* TX_CALLER_METHODS */`, () => Gen.serializeTxCallerMethods(className, abiJson)[targetType])
226
+ .replace(`/* TX_DATA_METHODS */`, () => Gen.serializeTxDataMethods(className, abiJson)[targetType])
231
227
  .replace(`/* $EVENT_TYPES$ */`, () => Str_1.Str.indent(eventTypes.map(x => x.code).join('\n'), ' '))
232
228
  .replace(`/* $METHOD_TYPES$ */`, () => Str_1.Str.indent(methodTypes.map(x => x.code).join('\n'), ' '));
233
229
  await atma_io_1.File.writeAsync(outputPath, code, { skipHooks: true });
234
230
  if (opts.saveAbi) {
235
- let path = atma_utils_1.class_Uri.combine(opts.output, outputDirectory, `${outputFilename}.json`);
231
+ let path = atma_utils_1.class_Uri.combine(opts.output, outputDirectory, `${outputFilename}Abi.json`);
236
232
  await atma_io_1.File.writeAsync(path, abiJson);
237
233
  }
238
234
  _logger_1.$logger.log(`bold<green<${className}>> ABI wrapper class created: bold<${outputPath}>`);
@@ -302,8 +298,8 @@ var Gen;
302
298
  // abi.length > 1 if has method overloads
303
299
  function serializeMethodInterfacesTs(name, abis) {
304
300
  let args = abis.map(abi => {
305
- let { fnInputArguments } = serializeArgumentsTs(abi);
306
- return `[ ${fnInputArguments} ]`;
301
+ let { fnInputArgumentsTargets } = serializeArgumentsTs(abi);
302
+ return `[ ${fnInputArgumentsTargets.ts} ]`;
307
303
  }).join(' | ');
308
304
  let iface = `IMethod${name[0].toUpperCase()}${name.substring(1)}`;
309
305
  let code = [
@@ -321,8 +317,8 @@ var Gen;
321
317
  Gen.serializeMethodInterfacesTs = serializeMethodInterfacesTs;
322
318
  function serializeMethodTypeTs(name, abis) {
323
319
  let args = abis.map(abi => {
324
- let { fnInputArguments } = serializeArgumentsTs(abi);
325
- return `[ ${fnInputArguments} ]`;
320
+ let { fnInputArgumentsTargets } = serializeArgumentsTs(abi);
321
+ return `[ ${fnInputArgumentsTargets.ts} ]`;
326
322
  }).join(' | ');
327
323
  let iface = `IMethod${name[0].toUpperCase()}${name.substring(1)}`;
328
324
  let code = [
@@ -369,9 +365,9 @@ var Gen;
369
365
  }
370
366
  Gen.serializeEventsInterfacesAllTs = serializeEventsInterfacesAllTs;
371
367
  function serializeEventType(event) {
372
- let { fnInputArguments, callInputArguments, fnResult } = serializeArgumentsTs(event);
373
- let outputParams = `{ ${fnInputArguments} }`;
374
- let outputArgs = `[ ${fnInputArguments.replace('\n', '')} ]`;
368
+ let { fnInputArgumentsTargets, callInputArguments, fnResult } = serializeArgumentsTs(event);
369
+ let outputParams = `{ ${fnInputArgumentsTargets.ts} }`;
370
+ let outputArgs = `[ ${fnInputArgumentsTargets.ts.replace('\n', '')} ]`;
375
371
  let code = [
376
372
  `${event.name}: {`,
377
373
  ` outputParams: ${outputParams},`,
@@ -384,36 +380,67 @@ var Gen;
384
380
  }
385
381
  Gen.serializeEventType = serializeEventType;
386
382
  function serializeEvent(abi) {
387
- let { fnInputArguments, callInputArguments, fnResult } = serializeArgumentsTs(abi);
388
- return `
389
- on${abi.name} (fn?: (event: TClientEventsStreamData<TEventArguments<'${abi.name}'>>) => void): ClientEventsStream<TClientEventsStreamData<TEventArguments<'${abi.name}'>>> {
390
- return this.$onLog('${abi.name}', fn);
391
- }
392
- `;
383
+ let { fnInputArgumentsTargets, callInputArguments, fnResult } = serializeArgumentsTs(abi);
384
+ return {
385
+ ts: `
386
+ on${abi.name} (fn?: (event: TClientEventsStreamData<TEventArguments<'${abi.name}'>>) => void): ClientEventsStream<TClientEventsStreamData<TEventArguments<'${abi.name}'>>> {
387
+ return this.$onLog('${abi.name}', fn);
388
+ }
389
+ `,
390
+ js: `
391
+ on${abi.name} (fn) {
392
+ return this.$onLog('${abi.name}', fn);
393
+ }
394
+ `
395
+ };
393
396
  }
394
397
  Gen.serializeEvent = serializeEvent;
395
398
  function serializeEventExtractor(abi) {
396
- return `
397
- extractLogs${abi.name} (tx: TEth.TxReceipt): ITxLogItem<TEventParams<'${abi.name}'>>[] {
398
- let abi = this.$getAbiItem('event', '${abi.name}');
399
- return this.$extractLogs(tx, abi) as any as ITxLogItem<TEventParams<'${abi.name}'>>[];
400
- }
401
- `;
399
+ return {
400
+ ts: `
401
+ extractLogs${abi.name} (tx: TEth.TxReceipt): ITxLogItem<TEventParams<'${abi.name}'>>[] {
402
+ let abi = this.$getAbiItem('event', '${abi.name}');
403
+ return this.$extractLogs(tx, abi) as any as ITxLogItem<TEventParams<'${abi.name}'>>[];
404
+ }
405
+ `,
406
+ js: `
407
+ extractLogs${abi.name} (tx) {
408
+ let abi = this.$getAbiItem('event', '${abi.name}');
409
+ return this.$extractLogs(tx, abi);
410
+ }
411
+ `
412
+ };
402
413
  }
403
414
  Gen.serializeEventExtractor = serializeEventExtractor;
404
415
  function serializeEventFetcher(abi) {
405
416
  let inputs = abi.inputs;
406
417
  let indexed = (0, alot_1.default)(inputs).takeWhile(x => x.indexed).toArray();
407
418
  let indexedParams = indexed.map(param => `${param.name}?: ${_abiType_1.$abiType.getTsType(param.type, param)}`);
408
- return `
409
- async getPastLogs${abi.name} (options?: {
410
- fromBlock?: number | Date
411
- toBlock?: number | Date
412
- params?: { ${indexedParams} }
413
- }): Promise<ITxLogItem<TEventParams<'${abi.name}'>>[]> {
414
- return await this.$getPastLogsParsed('${abi.name}', options) as any;
415
- }
416
- `;
419
+ return {
420
+ ts: `
421
+ async getPastLogs${abi.name} (options?: {
422
+ fromBlock?: number | Date
423
+ toBlock?: number | Date
424
+ params?: { ${indexedParams} }
425
+ }): Promise<ITxLogItem<TEventParams<'${abi.name}'>>[]> {
426
+ return await this.$getPastLogsParsed('${abi.name}', options) as any;
427
+ }
428
+ `,
429
+ types: `
430
+ async getPastLogs${abi.name} (options?: {
431
+ fromBlock?: number | Date
432
+ toBlock?: number | Date
433
+ params?: { ${indexedParams} }
434
+ }): Promise<ITxLogItem<TEventParams<'${abi.name}'>>[]> {
435
+ return await this.$getPastLogsParsed('${abi.name}', options) as any;
436
+ }
437
+ `,
438
+ js: `
439
+ async getPastLogs${abi.name} (options) {
440
+ return await this.$getPastLogsParsed('${abi.name}', options);
441
+ }
442
+ `
443
+ };
417
444
  }
418
445
  Gen.serializeEventFetcher = serializeEventFetcher;
419
446
  // export function serializeEventInterface (abi: TAbiItem) {
@@ -442,76 +469,134 @@ var Gen;
442
469
  }
443
470
  Gen.serializeMethodAbi = serializeMethodAbi;
444
471
  function serializeReadMethodTs(abi) {
445
- let { fnInputArguments, callInputArguments, fnResult } = serializeArgumentsTs(abi);
472
+ let { fnInputArgumentsTargets, callInputArguments, fnResult } = serializeArgumentsTs(abi);
446
473
  if (callInputArguments) {
447
474
  callInputArguments = `, ${callInputArguments}`;
448
475
  }
449
- return `
450
- // ${_abiUtils_1.$abiUtils.getMethodSignature(abi)}
451
- async ${abi.name} (${fnInputArguments}): ${fnResult} {
452
- return this.$read(this.$getAbiItem('function', '${abi.name}')${callInputArguments});
453
- }
454
- `;
476
+ return {
477
+ ts: `
478
+ // ${_abiUtils_1.$abiUtils.getMethodSignature(abi)}
479
+ async ${abi.name} (${fnInputArgumentsTargets.ts}): ${fnResult} {
480
+ return this.$read(this.$getAbiItem('function', '${abi.name}')${callInputArguments});
481
+ }
482
+ `,
483
+ types: `
484
+ // ${_abiUtils_1.$abiUtils.getMethodSignature(abi)}
485
+ async ${abi.name} (${fnInputArgumentsTargets.ts}): ${fnResult}
486
+ `,
487
+ js: `
488
+ // ${_abiUtils_1.$abiUtils.getMethodSignature(abi)}
489
+ async ${abi.name} (${fnInputArgumentsTargets.js}) {
490
+ return this.$read(this.$getAbiItem('function', '${abi.name}')${callInputArguments});
491
+ }
492
+ `
493
+ };
455
494
  }
456
495
  function serializeReadMethodTsOverloads(abis) {
457
496
  let overrides = abis.map(abi => {
458
- let { fnInputArguments, fnResult } = serializeArgumentsTs(abi);
497
+ let { fnInputArgumentsTargets, fnResult } = serializeArgumentsTs(abi);
459
498
  return `
460
499
  // ${_abiUtils_1.$abiUtils.getMethodSignature(abi)}
461
- async ${abi.name} (${fnInputArguments}): ${fnResult}
500
+ async ${abi.name} (${fnInputArgumentsTargets.ts}): ${fnResult}
462
501
  `;
463
502
  }).join('\n');
464
503
  let abi = abis[0];
465
504
  let { fnResult } = serializeArgumentsTs(abi);
466
505
  let sigs = abis.map(abi => serializeMethodAbi(abi)).map(x => `'${x}'`).join(', ');
467
- return `
468
- ${overrides}
469
- async ${abi.name} (...args): ${fnResult} {
470
- let abi = this.$getAbiItemOverload([ ${sigs} ], args);
471
- return this.$read(abi, ...args);
472
- }
473
- `;
506
+ return {
507
+ ts: `
508
+ ${overrides}
509
+ async ${abi.name} (...args): ${fnResult} {
510
+ let abi = this.$getAbiItemOverload([ ${sigs} ], args);
511
+ return this.$read(abi, ...args);
512
+ }
513
+ `,
514
+ types: `
515
+ ${overrides}
516
+ async ${abi.name} (...args): ${fnResult}
517
+ `,
518
+ js: `
519
+ async ${abi.name} (...args) {
520
+ let abi = this.$getAbiItemOverload([ ${sigs} ], args);
521
+ return this.$read(abi, ...args);
522
+ }
523
+ `
524
+ };
474
525
  }
475
526
  function serializeWriteMethodTs(abi) {
476
- let { fnInputArguments, callInputArguments } = serializeArgumentsTs(abi);
527
+ let { fnInputArgumentsTargets, callInputArguments } = serializeArgumentsTs(abi);
477
528
  if (callInputArguments) {
478
529
  callInputArguments = `, ${callInputArguments}`;
479
530
  }
480
- return `
481
- // ${_abiUtils_1.$abiUtils.getMethodSignature(abi)}
482
- async ${abi.name} (sender: TSender, ${fnInputArguments}): Promise<TxWriter> {
483
- return this.$write(this.$getAbiItem('function', '${abi.name}'), sender${callInputArguments});
484
- }
485
- `;
531
+ return {
532
+ ts: `
533
+ // ${_abiUtils_1.$abiUtils.getMethodSignature(abi)}
534
+ async ${abi.name} (sender: TSender, ${fnInputArgumentsTargets.ts}): Promise<TxWriter> {
535
+ return this.$write(this.$getAbiItem('function', '${abi.name}'), sender${callInputArguments});
536
+ }
537
+ `,
538
+ types: `
539
+ // ${_abiUtils_1.$abiUtils.getMethodSignature(abi)}
540
+ async ${abi.name} (sender: TSender, ${fnInputArgumentsTargets.ts}): Promise<TxWriter>
541
+ `,
542
+ js: `
543
+ // ${_abiUtils_1.$abiUtils.getMethodSignature(abi)}
544
+ async ${abi.name} (sender, ${fnInputArgumentsTargets.js}) {
545
+ return this.$write(this.$getAbiItem('function', '${abi.name}'), sender${callInputArguments});
546
+ }
547
+ `
548
+ };
486
549
  }
487
550
  function serializeConstructorMethodTs(abi) {
488
- let { fnInputArguments, callInputArguments } = serializeArgumentsTs(abi);
551
+ let { fnInputArgumentsTargets, callInputArguments } = serializeArgumentsTs(abi);
489
552
  if (callInputArguments) {
490
553
  callInputArguments = `, ${callInputArguments}`;
491
554
  }
492
- return `
493
- async $constructor (deployer: TSender, ${fnInputArguments}): Promise<TxWriter> {
494
- throw new Error('Not implemented. Typing purpose. Use the ContractDeployer class to deploy the contract');
495
- }
496
- `;
555
+ return {
556
+ ts: `
557
+ async $constructor (deployer: TSender, ${fnInputArgumentsTargets.ts}): Promise<TxWriter> {
558
+ throw new Error('Not implemented. Typing purpose. Use the ContractDeployer class to deploy the contract');
559
+ }
560
+ `,
561
+ types: `
562
+ async $constructor (deployer: TSender, ${fnInputArgumentsTargets.ts}): Promise<TxWriter>
563
+ `,
564
+ js: `
565
+ async $constructor (deployer, ${fnInputArgumentsTargets.js}) {
566
+ throw new Error('Not implemented. Typing purpose. Use the ContractDeployer class to deploy the contract');
567
+ }
568
+ `
569
+ };
497
570
  }
498
571
  function serializeWriteMethodTsOverloads(abis) {
499
572
  let overrides = abis.map(abi => {
500
- let { fnInputArguments, fnResult } = serializeArgumentsTs(abi);
573
+ let { fnInputArgumentsTargets, fnResult } = serializeArgumentsTs(abi);
501
574
  return `
502
575
  // ${_abiUtils_1.$abiUtils.getMethodSignature(abi)}
503
- async ${abi.name} (sender: TSender, ${fnInputArguments}): Promise<TxWriter>
576
+ async ${abi.name} (sender: TSender, ${fnInputArgumentsTargets.ts}): Promise<TxWriter>
504
577
  `;
505
578
  }).join('\n');
506
579
  let abi = abis[0];
507
580
  let sigs = abis.map(abi => serializeMethodAbi(abi)).map(x => `'${x}'`).join(', ');
508
- return `
509
- ${overrides}
510
- async ${abi.name} (sender: TSender, ...args): Promise<TxWriter> {
511
- let abi = this.$getAbiItemOverload([ ${sigs} ], args);
512
- return this.$write(abi, sender, ...args);
513
- }
514
- `;
581
+ return {
582
+ ts: `
583
+ ${overrides}
584
+ async ${abi.name} (sender: TSender, ...args): Promise<TxWriter> {
585
+ let abi = this.$getAbiItemOverload([ ${sigs} ], args);
586
+ return this.$write(abi, sender, ...args);
587
+ }
588
+ `,
589
+ types: `
590
+ ${overrides}
591
+ async ${abi.name} (sender: TSender, ...args): Promise<TxWriter>
592
+ `,
593
+ js: `
594
+ async ${abi.name} (sender, ...args) {
595
+ let abi = this.$getAbiItemOverload([ ${sigs} ], args);
596
+ return this.$write(abi, sender, ...args);
597
+ }
598
+ `
599
+ };
515
600
  }
516
601
  function serializeArgumentsTs(abi) {
517
602
  let inputs = abi.inputs.map((input, i) => {
@@ -524,22 +609,38 @@ var Gen;
524
609
  }
525
610
  return result;
526
611
  });
527
- let fnInputArguments = inputs
612
+ let fnInputArgumentsArr = inputs
528
613
  ?.map((input) => {
529
614
  let tsType = _abiType_1.$abiType.getTsType(input.type, input);
530
615
  if (tsType == null) {
531
616
  throw new Error(`Unknown abi type in arguments: ${input.type}`);
532
617
  }
533
- return `${input.name}: ${tsType}`;
618
+ return { name: input.name, type: tsType };
619
+ }) ?? [];
620
+ let fnInputArgumentsTs = fnInputArgumentsArr
621
+ .map((input) => {
622
+ return `${input.name}: ${input.type}`;
534
623
  })
535
- ?.join(', ') ?? '';
624
+ .join(', ');
625
+ let fnInputArgumentsJs = fnInputArgumentsArr
626
+ .map((input) => {
627
+ return `${input.name}`;
628
+ })
629
+ .join(', ');
536
630
  let callInputArguments = inputs
537
631
  ?.map(input => {
538
632
  return `${input.name}`;
539
633
  })
540
634
  ?.join(', ') ?? '';
541
635
  let fnResult = serializeMethodTsReturns(abi.outputs);
542
- return { fnInputArguments, callInputArguments, fnResult };
636
+ return {
637
+ fnInputArgumentsTargets: {
638
+ ts: fnInputArgumentsTs,
639
+ js: fnInputArgumentsJs,
640
+ },
641
+ callInputArguments,
642
+ fnResult
643
+ };
543
644
  }
544
645
  function isObjectParams(params) {
545
646
  return params?.every(x => Boolean(x.name));
@@ -617,34 +718,44 @@ var Gen;
617
718
  function serializeTxCallerMethods(className, abiJson) {
618
719
  let methods = abiJson.filter(x => x.type === 'function');
619
720
  let writeMethods = methods.filter(abi => _abiUtils_1.$abiUtils.isReadMethod(abi) === false);
620
- let lines = [];
621
- writeMethods.forEach(method => {
622
- lines.push(serializeMethodTs(method));
721
+ let lines = writeMethods.map(method => {
722
+ return serializeMethodTs(method);
623
723
  });
624
- return lines.join('\n');
724
+ return {
725
+ ts: lines.map(x => x.ts).join('\n'),
726
+ js: lines.map(x => x.js).join('\n'),
727
+ };
625
728
  function serializeMethodTs(abi) {
626
- let { fnInputArguments, callInputArguments, fnResult } = serializeArgumentsTs(abi);
729
+ let { fnInputArgumentsTargets, callInputArguments, fnResult } = serializeArgumentsTs(abi);
627
730
  if (callInputArguments) {
628
731
  callInputArguments = `, ${callInputArguments}`;
629
732
  }
630
- return ` ${abi.name} (sender: TSender, ${fnInputArguments}): Promise<{ error?: Error & { data?: { type: string, params } }, result? }>`;
733
+ return {
734
+ ts: ` ${abi.name} (sender: TSender, ${fnInputArgumentsTargets.ts}): Promise<{ error?: Error & { data?: { type: string, params } }, result? }>`,
735
+ js: ` ${abi.name} (sender, ${fnInputArgumentsTargets.js})`,
736
+ };
631
737
  }
632
738
  }
633
739
  Gen.serializeTxCallerMethods = serializeTxCallerMethods;
634
740
  function serializeTxDataMethods(className, abiJson) {
635
741
  let methods = abiJson.filter(x => x.type === 'function');
636
742
  let writeMethods = methods.filter(abi => _abiUtils_1.$abiUtils.isReadMethod(abi) === false);
637
- let lines = [];
638
- writeMethods.forEach(method => {
639
- lines.push(serializeInterfaceMethodTs(method));
743
+ let lines = writeMethods.map(method => {
744
+ return serializeInterfaceMethodTs(method);
640
745
  });
641
- return lines.join('\n');
746
+ return {
747
+ ts: lines.map(x => x.ts).join('\n'),
748
+ js: lines.map(x => x.js).join('\n'),
749
+ };
642
750
  function serializeInterfaceMethodTs(abi) {
643
- let { fnInputArguments, callInputArguments, fnResult } = serializeArgumentsTs(abi);
751
+ let { fnInputArgumentsTargets, callInputArguments, fnResult } = serializeArgumentsTs(abi);
644
752
  if (callInputArguments) {
645
753
  callInputArguments = `, ${callInputArguments}`;
646
754
  }
647
- return ` ${abi.name} (sender: TSender, ${fnInputArguments}): Promise<TEth.TxLike>`;
755
+ return {
756
+ ts: ` ${abi.name} (sender: TSender, ${fnInputArgumentsTargets.ts}): Promise<TEth.TxLike>`,
757
+ js: ` ${abi.name} (sender, ${fnInputArgumentsTargets.js})`,
758
+ };
648
759
  }
649
760
  }
650
761
  Gen.serializeTxDataMethods = serializeTxDataMethods;