dequanto 0.1.21 → 0.1.23

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 (227) 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/arbitrum/TokensServiceArbitrum.d.ts +1 -1
  5. package/lib/cjs/chains/boba/Bobascan.d.ts +1 -1
  6. package/lib/cjs/chains/xdai/XDaiscan.d.ts +1 -1
  7. package/lib/cjs/clients/EvmWeb3Client.d.ts +3 -0
  8. package/lib/cjs/clients/EvmWeb3Client.js +23 -4
  9. package/lib/cjs/clients/EvmWeb3Client.js.map +1 -1
  10. package/lib/cjs/clients/Web3Client.d.ts +2 -2
  11. package/lib/cjs/clients/Web3ClientFactory.js +1 -1
  12. package/lib/cjs/clients/Web3ClientFactory.js.map +1 -1
  13. package/lib/cjs/config/ConfigDefaults.js +14 -0
  14. package/lib/cjs/config/ConfigDefaults.js.map +1 -1
  15. package/lib/cjs/contracts/ContractBase.d.ts +1 -0
  16. package/lib/cjs/contracts/ContractBase.js.map +1 -1
  17. package/lib/cjs/contracts/ContractClassFactory.d.ts +2 -1
  18. package/lib/cjs/contracts/ContractClassFactory.js +5 -1
  19. package/lib/cjs/contracts/ContractClassFactory.js.map +1 -1
  20. package/lib/cjs/contracts/deploy/ContractDeployer.d.ts +1 -1
  21. package/lib/cjs/contracts/deploy/Deployments.d.ts +1 -1
  22. package/lib/cjs/contracts/deploy/proxy/ProxyDeployment.d.ts +1 -1
  23. package/lib/cjs/contracts/deploy/storage/DeploymentsStorage.d.ts +1 -1
  24. package/lib/cjs/contracts/deploy/storage/DeploymentsStorage.js +3 -3
  25. package/lib/cjs/contracts/deploy/storage/DeploymentsStorage.js.map +1 -1
  26. package/lib/cjs/erc4337/models/UserOperation.d.ts +1 -1
  27. package/lib/cjs/explorer/BlockChainExplorerFactory.d.ts +1 -1
  28. package/lib/cjs/explorer/BlockChainExplorerProvider.d.ts +1 -1
  29. package/lib/cjs/explorer/Bscscan.d.ts +1 -1
  30. package/lib/cjs/explorer/ContractVerifier.d.ts +1 -1
  31. package/lib/cjs/explorer/ContractVerifier.js.map +1 -1
  32. package/lib/cjs/explorer/Etherscan.d.ts +1 -1
  33. package/lib/cjs/explorer/Polyscan.d.ts +1 -1
  34. package/lib/cjs/gen/GeneratorFromAbi.d.ts +6 -1
  35. package/lib/cjs/gen/GeneratorFromAbi.js +107 -60
  36. package/lib/cjs/gen/GeneratorFromAbi.js.map +1 -1
  37. package/lib/cjs/gen/GeneratorStorageReader.d.ts +1 -0
  38. package/lib/cjs/gen/GeneratorStorageReader.js +13 -1
  39. package/lib/cjs/gen/GeneratorStorageReader.js.map +1 -1
  40. package/lib/cjs/hardhat/HardhatProvider.d.ts +47 -2
  41. package/lib/cjs/hardhat/HardhatProvider.js +169 -92
  42. package/lib/cjs/hardhat/HardhatProvider.js.map +1 -1
  43. package/lib/cjs/json/JsonArrayMultiStore.js +4 -2
  44. package/lib/cjs/json/JsonArrayMultiStore.js.map +1 -1
  45. package/lib/cjs/json/JsonArrayStore.d.ts +2 -2
  46. package/lib/cjs/models/TEth.d.ts +2 -2
  47. package/lib/cjs/ns/providers/EnsProvider.d.ts +2 -2
  48. package/lib/cjs/safe/GnosisSafeFactory.js.map +1 -1
  49. package/lib/cjs/safe/GnosisSafeService.js.map +1 -1
  50. package/lib/cjs/safe/SafeTx.js.map +1 -1
  51. package/lib/cjs/safe/transport/FileServiceTransport.js.map +1 -1
  52. package/lib/cjs/safe/transport/InMemoryServiceTransport.js.map +1 -1
  53. package/lib/cjs/services/TimelockService/TimelockService.d.ts +1 -1
  54. package/lib/cjs/solidity/SlotsStorage.js.map +1 -1
  55. package/lib/cjs/tokens/TokenExchanges/AmmV2ExchangeBase.d.ts +4 -4
  56. package/lib/cjs/tokens/TokenExchanges/AmmV2ExchangeBase.js.map +1 -1
  57. package/lib/cjs/tokens/TokenExchanges/OneInchExchange.js.map +1 -1
  58. package/lib/cjs/tokens/TokenOracles/amm/AmmV1Oracle.js.map +1 -1
  59. package/lib/cjs/tokens/TokenService.js.map +1 -1
  60. package/lib/cjs/tokens/TokensService.d.ts +1 -1
  61. package/lib/cjs/tokens/TokensService.js.map +1 -1
  62. package/lib/cjs/tokens/TokensServiceBsc.d.ts +1 -1
  63. package/lib/cjs/tokens/TokensServicePolygon.d.ts +1 -1
  64. package/lib/cjs/tokens/TokensServiceXDai.d.ts +1 -1
  65. package/lib/cjs/utils/$abiParser.js +8 -1
  66. package/lib/cjs/utils/$abiParser.js.map +1 -1
  67. package/lib/cjs/utils/$bigint.d.ts +4 -0
  68. package/lib/cjs/utils/$bigint.js +40 -0
  69. package/lib/cjs/utils/$bigint.js.map +1 -1
  70. package/lib/cjs/utils/$contract.js +6 -0
  71. package/lib/cjs/utils/$contract.js.map +1 -1
  72. package/lib/cjs/utils/$logger.js +4 -0
  73. package/lib/cjs/utils/$logger.js.map +1 -1
  74. package/lib/cjs/utils/$path.d.ts +6 -0
  75. package/lib/cjs/utils/$path.js +21 -0
  76. package/lib/cjs/utils/$path.js.map +1 -1
  77. package/lib/cjs/utils/$sig.d.ts +3 -0
  78. package/lib/cjs/utils/$sig.js +2 -2
  79. package/lib/cjs/utils/$sig.js.map +1 -1
  80. package/lib/cjs/utils/types.d.ts +3 -0
  81. package/lib/cjs/wallets/Wallet.js.map +1 -1
  82. package/lib/esm/abi/coders/array.js.map +1 -1
  83. package/lib/esm/abi/coders/array.mjs +1 -1
  84. package/lib/esm/chains/arbitrum/Arbiscan.d.ts +1 -1
  85. package/lib/esm/chains/arbitrum/TokensServiceArbitrum.d.ts +1 -1
  86. package/lib/esm/chains/boba/Bobascan.d.ts +1 -1
  87. package/lib/esm/chains/xdai/XDaiscan.d.ts +1 -1
  88. package/lib/esm/clients/EvmWeb3Client.d.ts +3 -0
  89. package/lib/esm/clients/EvmWeb3Client.js.map +1 -1
  90. package/lib/esm/clients/EvmWeb3Client.mjs +21 -3
  91. package/lib/esm/clients/Web3Client.d.ts +2 -2
  92. package/lib/esm/clients/Web3ClientFactory.js.map +1 -1
  93. package/lib/esm/clients/Web3ClientFactory.mjs +1 -1
  94. package/lib/esm/config/ConfigDefaults.js.map +1 -1
  95. package/lib/esm/config/ConfigDefaults.mjs +14 -0
  96. package/lib/esm/contracts/ContractBase.d.ts +1 -0
  97. package/lib/esm/contracts/ContractBase.js.map +1 -1
  98. package/lib/esm/contracts/ContractClassFactory.d.ts +2 -1
  99. package/lib/esm/contracts/ContractClassFactory.js.map +1 -1
  100. package/lib/esm/contracts/ContractClassFactory.mjs +5 -1
  101. package/lib/esm/contracts/deploy/ContractDeployer.d.ts +1 -1
  102. package/lib/esm/contracts/deploy/Deployments.d.ts +1 -1
  103. package/lib/esm/contracts/deploy/proxy/ProxyDeployment.d.ts +1 -1
  104. package/lib/esm/contracts/deploy/storage/DeploymentsStorage.d.ts +1 -1
  105. package/lib/esm/contracts/deploy/storage/DeploymentsStorage.js.map +1 -1
  106. package/lib/esm/contracts/deploy/storage/DeploymentsStorage.mjs +3 -3
  107. package/lib/esm/erc4337/models/UserOperation.d.ts +1 -1
  108. package/lib/esm/explorer/BlockChainExplorerFactory.d.ts +1 -1
  109. package/lib/esm/explorer/BlockChainExplorerProvider.d.ts +1 -1
  110. package/lib/esm/explorer/Bscscan.d.ts +1 -1
  111. package/lib/esm/explorer/ContractVerifier.d.ts +1 -1
  112. package/lib/esm/explorer/ContractVerifier.js.map +1 -1
  113. package/lib/esm/explorer/Etherscan.d.ts +1 -1
  114. package/lib/esm/explorer/Polyscan.d.ts +1 -1
  115. package/lib/esm/gen/GeneratorFromAbi.d.ts +6 -1
  116. package/lib/esm/gen/GeneratorFromAbi.js.map +1 -1
  117. package/lib/esm/gen/GeneratorFromAbi.mjs +107 -60
  118. package/lib/esm/gen/GeneratorStorageReader.d.ts +1 -0
  119. package/lib/esm/gen/GeneratorStorageReader.js.map +1 -1
  120. package/lib/esm/gen/GeneratorStorageReader.mjs +13 -1
  121. package/lib/esm/hardhat/HardhatProvider.d.ts +47 -2
  122. package/lib/esm/hardhat/HardhatProvider.js.map +1 -1
  123. package/lib/esm/hardhat/HardhatProvider.mjs +169 -92
  124. package/lib/esm/json/JsonArrayMultiStore.js.map +1 -1
  125. package/lib/esm/json/JsonArrayMultiStore.mjs +4 -2
  126. package/lib/esm/json/JsonArrayStore.d.ts +2 -2
  127. package/lib/esm/models/TEth.d.ts +2 -2
  128. package/lib/esm/ns/providers/EnsProvider.d.ts +2 -2
  129. package/lib/esm/safe/GnosisSafeFactory.js.map +1 -1
  130. package/lib/esm/safe/GnosisSafeService.js.map +1 -1
  131. package/lib/esm/safe/SafeTx.js.map +1 -1
  132. package/lib/esm/safe/transport/FileServiceTransport.js.map +1 -1
  133. package/lib/esm/safe/transport/InMemoryServiceTransport.js.map +1 -1
  134. package/lib/esm/services/TimelockService/TimelockService.d.ts +1 -1
  135. package/lib/esm/solidity/SlotsStorage.js.map +1 -1
  136. package/lib/esm/tokens/TokenExchanges/AmmV2ExchangeBase.d.ts +4 -4
  137. package/lib/esm/tokens/TokenExchanges/AmmV2ExchangeBase.js.map +1 -1
  138. package/lib/esm/tokens/TokenExchanges/OneInchExchange.js.map +1 -1
  139. package/lib/esm/tokens/TokenOracles/amm/AmmV1Oracle.js.map +1 -1
  140. package/lib/esm/tokens/TokenService.js.map +1 -1
  141. package/lib/esm/tokens/TokensService.d.ts +1 -1
  142. package/lib/esm/tokens/TokensService.js.map +1 -1
  143. package/lib/esm/tokens/TokensServiceBsc.d.ts +1 -1
  144. package/lib/esm/tokens/TokensServicePolygon.d.ts +1 -1
  145. package/lib/esm/tokens/TokensServiceXDai.d.ts +1 -1
  146. package/lib/esm/utils/$abiParser.js.map +1 -1
  147. package/lib/esm/utils/$abiParser.mjs +8 -1
  148. package/lib/esm/utils/$bigint.d.ts +4 -0
  149. package/lib/esm/utils/$bigint.js.map +1 -1
  150. package/lib/esm/utils/$bigint.mjs +40 -0
  151. package/lib/esm/utils/$contract.js.map +1 -1
  152. package/lib/esm/utils/$contract.mjs +6 -0
  153. package/lib/esm/utils/$logger.js.map +1 -1
  154. package/lib/esm/utils/$logger.mjs +4 -0
  155. package/lib/esm/utils/$path.d.ts +6 -0
  156. package/lib/esm/utils/$path.js.map +1 -1
  157. package/lib/esm/utils/$path.mjs +21 -0
  158. package/lib/esm/utils/$sig.d.ts +3 -0
  159. package/lib/esm/utils/$sig.js.map +1 -1
  160. package/lib/esm/utils/$sig.mjs +1 -1
  161. package/lib/esm/utils/types.d.ts +3 -0
  162. package/lib/esm/wallets/Wallet.js.map +1 -1
  163. package/package.json +4 -3
  164. package/src/abi/coders/array.ts +1 -1
  165. package/src/chains/arbitrum/TokensServiceArbitrum.ts +1 -1
  166. package/src/clients/EvmWeb3Client.ts +23 -2
  167. package/src/clients/Web3Client.ts +2 -2
  168. package/src/clients/Web3ClientFactory.ts +1 -1
  169. package/src/config/ConfigDefaults.ts +14 -0
  170. package/src/contracts/ContractBase.ts +2 -0
  171. package/src/contracts/ContractClassFactory.ts +8 -2
  172. package/src/contracts/deploy/ContractDeployer.ts +1 -1
  173. package/src/contracts/deploy/Deployments.ts +1 -1
  174. package/src/contracts/deploy/proxy/ProxyDeployment.ts +1 -1
  175. package/src/contracts/deploy/storage/DeploymentsStorage.ts +5 -5
  176. package/src/contracts/wrappers/FnSignedWrapper.ts +1 -1
  177. package/src/erc4337/models/UserOperation.ts +1 -1
  178. package/src/explorer/BlockChainExplorerFactory.ts +1 -1
  179. package/src/explorer/BlockChainExplorerProvider.ts +1 -1
  180. package/src/explorer/ContractVerifier.ts +2 -1
  181. package/src/gen/GeneratorFromAbi.ts +114 -60
  182. package/src/gen/GeneratorStorageReader.ts +16 -2
  183. package/src/gen/templates/ContractStorageReaderTemplate.d.ts.tmpl +7 -0
  184. package/src/gen/templates/ContractTemplate.d.ts.tmpl +110 -0
  185. package/src/hardhat/HardhatProvider.ts +239 -106
  186. package/src/json/JsonArrayMultiStore.ts +4 -2
  187. package/src/json/JsonArrayStore.ts +1 -1
  188. package/src/models/TEth.ts +2 -2
  189. package/src/ns/providers/EnsProvider.ts +2 -2
  190. package/src/safe/GnosisSafeFactory.ts +2 -2
  191. package/src/safe/GnosisSafeService.ts +1 -1
  192. package/src/safe/SafeTx.ts +1 -1
  193. package/src/safe/transport/FileServiceTransport.ts +1 -1
  194. package/src/safe/transport/InMemoryServiceTransport.ts +1 -1
  195. package/src/services/TimelockService/TimelockService.ts +1 -1
  196. package/src/services/TimelockService/TimelockServiceFallbackSafe.ts +1 -1
  197. package/src/solidity/SlotsStorage.ts +2 -1
  198. package/src/tokens/TokenExchanges/AmmV2ExchangeBase.ts +4 -4
  199. package/src/tokens/TokenExchanges/OneInchExchange.ts +1 -1
  200. package/src/tokens/TokenOracles/amm/AmmV1Oracle.ts +1 -1
  201. package/src/tokens/TokenService.ts +1 -1
  202. package/src/tokens/TokensService.ts +1 -1
  203. package/src/tokens/TokensServiceBsc.ts +1 -1
  204. package/src/tokens/TokensServicePolygon.ts +1 -1
  205. package/src/tokens/TokensServiceXDai.ts +1 -1
  206. package/src/types/TAbi.ts +2 -2
  207. package/src/utils/$abiParser.ts +8 -1
  208. package/src/utils/$bigint.ts +41 -0
  209. package/src/utils/$contract.ts +6 -1
  210. package/src/utils/$logger.ts +4 -0
  211. package/src/utils/$path.ts +20 -0
  212. package/src/utils/$sig.ts +1 -1
  213. package/src/utils/types.ts +3 -0
  214. package/src/wallets/Wallet.ts +1 -1
  215. package/tsconfig.json +1 -0
  216. package/lib/cjs/gen/ContractStorageReaderTemplate.js +0 -13
  217. package/lib/cjs/gen/ContractStorageReaderTemplate.js.map +0 -1
  218. package/lib/cjs/gen/ContractTemplate.js +0 -56
  219. package/lib/cjs/gen/ContractTemplate.js.map +0 -1
  220. package/lib/esm/gen/ContractStorageReaderTemplate.js.map +0 -1
  221. package/lib/esm/gen/ContractStorageReaderTemplate.mjs +0 -13
  222. package/lib/esm/gen/ContractTemplate.js.map +0 -1
  223. package/lib/esm/gen/ContractTemplate.mjs +0 -49
  224. /package/src/gen/{ContractStorageReaderTemplate.js → templates/ContractStorageReaderTemplate.js.tmpl} +0 -0
  225. /package/src/gen/{ContractStorageReaderTemplate.ts → templates/ContractStorageReaderTemplate.ts.tmpl} +0 -0
  226. /package/src/gen/{ContractTemplate.js → templates/ContractTemplate.js.tmpl} +0 -0
  227. /package/src/gen/{ContractTemplate.ts → templates/ContractTemplate.ts.tmpl} +0 -0
@@ -59,27 +59,36 @@ export class GeneratorFromAbi {
59
59
  return null;
60
60
  })
61
61
  .filter(Boolean)
62
- .map(x => x[ opts?.target ?? 'ts' ])
63
- .map(Str.formatMethod)
64
- .toArray();
62
+ .mapFull(arr => {
63
+ return {
64
+ ts: arr.map(x => Str.formatMethod(x.ts)),
65
+ js: arr.map(x => Str.formatMethod(x.js)),
66
+ types: arr.map(x => Str.formatMethod(x.types)),
67
+ }
68
+ });
65
69
 
66
70
 
67
- let methodTypes = alot(abiJson)
71
+ let methodTypings = alot(abiJson)
68
72
  .filter(x => x.type === 'function')
69
73
  .groupBy(x => x.name)
70
74
  .map(group => {
71
75
  let item = group.values[0];
72
- return Gen.serializeMethodTypeTs(item.name, group.values);
76
+ return Gen.serializeMethodTypingsTs(item.name, group.values);
73
77
  })
74
78
  .filter(Boolean)
75
79
  .toArray();
76
80
 
77
- let eventsArr = abiJson
81
+ let eventsArr = alot(abiJson)
78
82
  .filter(x => x.type === 'event')
79
83
  .map(x => Gen.serializeEvent(x))
80
84
  .filter(Boolean)
81
- .map(x => x[ opts?.target ?? 'ts' ])
82
- .map(Str.formatMethod);
85
+ .mapFull(arr => {
86
+ return {
87
+ ts: arr.map(x => Str.formatMethod(x.ts)),
88
+ js: arr.map(x => Str.formatMethod(x.js)),
89
+ types: arr.map(x => Str.formatMethod(x.types)),
90
+ }
91
+ })
83
92
 
84
93
  let eventTypes = alot(abiJson)
85
94
  .filter(x => x.type === 'event')
@@ -94,19 +103,29 @@ export class GeneratorFromAbi {
94
103
 
95
104
  //let eventInterfacesAll = Gen.serializeEventsInterfacesAllTs(abiJson.filter(x => x.type === 'event'));
96
105
 
97
- let eventsExtractorsArr = abiJson
106
+ let eventsExtractorsArr = alot(abiJson)
98
107
  .filter(x => x.type === 'event')
99
108
  .map(x => Gen.serializeEventExtractor(x))
100
109
  .filter(Boolean)
101
- .map(x => x[ opts?.target ?? 'ts' ])
102
- .map(Str.formatMethod);
110
+ .mapFull(arr => {
111
+ return {
112
+ ts: arr.map(x => Str.formatMethod(x.ts)),
113
+ js: arr.map(x => Str.formatMethod(x.js)),
114
+ types: arr.map(x => Str.formatMethod(x.types)),
115
+ }
116
+ });
103
117
 
104
- let eventsFetchersArr = abiJson
118
+ let eventsFetchersArr = alot(abiJson)
105
119
  .filter(x => x.type === 'event')
106
120
  .map(x => Gen.serializeEventFetcher(x))
107
121
  .filter(Boolean)
108
- .map(x => x[ opts?.target ?? 'ts' ])
109
- .map(Str.formatMethod);
122
+ .mapFull(arr => {
123
+ return {
124
+ ts: arr.map(x => Str.formatMethod(x.ts)),
125
+ js: arr.map(x => Str.formatMethod(x.js)),
126
+ types: arr.map(x => Str.formatMethod(x.types)),
127
+ }
128
+ });
110
129
 
111
130
  // let eventInterfaces = abiJson
112
131
  // .filter(x => x.type === 'event')
@@ -114,15 +133,22 @@ export class GeneratorFromAbi {
114
133
  // .filter(Boolean)
115
134
  // .map(Str.formatMethod);
116
135
 
117
- let methods = methodsArr.join('\n\n');
118
- let events = eventsArr.join('\n\n');
119
- let eventsExtractors = eventsExtractorsArr.join('\n\n');
120
- let eventsFetchers = eventsFetchersArr.join('\n\n');
136
+ let methods = methodsArr[targetType].join('\n\n');
137
+ let methodsTypings = methodsArr.types.join('\n\n');
138
+ let events = eventsArr[targetType].join('\n\n');
139
+ let eventsTypings = eventsArr.types.join('\n\n');
140
+
141
+ let eventsExtractors = eventsExtractorsArr[targetType].join('\n\n');
142
+ let eventsExtractorsTypings = eventsExtractorsArr.types.join('\n\n');
143
+
144
+ let eventsFetchers = eventsFetchersArr[targetType].join('\n\n');
145
+ let eventsFetchersTypings = eventsFetchersArr.types.join('\n\n');
121
146
 
122
147
  let name = opts.name;
123
- let templatePath = $path.resolve(`/src/gen/ContractTemplate.${ targetType }`);
148
+ let templatePath = $path.resolve(`/src/gen/templates/ContractTemplate.${ targetType }.tmpl`);
124
149
  let template = await File.readAsync<string>(templatePath, { skipHooks: true });
125
-
150
+ let templateDtsPath = $path.resolve(`/src/gen/templates/ContractTemplate.d.ts.tmpl`);
151
+ let templateDts = await File.readAsync<string>(templateDtsPath, { skipHooks: true });
126
152
 
127
153
  let EtherscanStr;
128
154
  let EthWeb3ClientStr;
@@ -130,44 +156,8 @@ export class GeneratorFromAbi {
130
156
  let sourceUri: string;
131
157
  let Web3ClientOptions = '';
132
158
  let EvmScanOptions = '';
133
- let importPfx = targetType === 'js' ? 'dequanto' : '@dequanto';
159
+ let importPfx = true /* always */ ? 'dequanto' : '@dequanto';
134
160
  switch (opts.network) {
135
- case 'bsc':
136
- EtherscanStr = 'Bscscan';
137
- EthWeb3ClientStr = 'BscWeb3Client';
138
- imports = [
139
- `import { Bscscan } from '${importPfx}/explorer/Bscscan'`,
140
- `import { BscWeb3Client } from '${importPfx}/clients/BscWeb3Client'`,
141
- ];
142
- sourceUri = `https://bscscan.com/address/${opts.address}#code`;
143
- break;
144
- case 'polygon':
145
- EtherscanStr = 'Polyscan';
146
- EthWeb3ClientStr = 'PolyWeb3Client';
147
- imports = [
148
- `import { Polyscan } from '${importPfx}/explorer/Polyscan'`,
149
- `import { PolyWeb3Client } from '${importPfx}/clients/PolyWeb3Client'`,
150
- ];
151
- sourceUri = `https://polygonscan.com/address/${opts.address}#code`;
152
- break;
153
- case 'xdai':
154
- EtherscanStr = 'XDaiscan';
155
- EthWeb3ClientStr = 'XDaiWeb3Client';
156
- imports = [
157
- `import { XDaiscan } from '${importPfx}/chains/xdai/XDaiscan'`,
158
- `import { XDaiWeb3Client } from '${importPfx}/chains/xdai/XDaiWeb3Client'`,
159
- ];
160
- sourceUri = `https://blockscout.com/xdai/mainnet/address/${opts.address}/contracts`;
161
- break;
162
- case 'eth':
163
- EtherscanStr = 'Etherscan';
164
- EthWeb3ClientStr = 'EthWeb3Client';
165
- imports = [
166
- `import { Etherscan } from '${importPfx}/explorer/Etherscan'`,
167
- `import { EthWeb3Client } from '${importPfx}/clients/EthWeb3Client'`,
168
- ];
169
- sourceUri = `https://etherscan.io/address/${opts.address}#code`;
170
- break;
171
161
  case 'hardhat':
172
162
  EtherscanStr = 'Etherscan';
173
163
  EthWeb3ClientStr = 'HardhatWeb3Client';
@@ -222,6 +212,7 @@ export class GeneratorFromAbi {
222
212
  let storageReaderInitializer = '';
223
213
  let storageReaderProperty = '';
224
214
  let storageReaderClass = '';
215
+ let storageReaderClassTypings = '';
225
216
  try {
226
217
  let storageReaderGenerator = new GeneratorStorageReader();
227
218
  let reader = await storageReaderGenerator.generate({ ...opts, target: targetType });
@@ -231,6 +222,7 @@ export class GeneratorFromAbi {
231
222
  }
232
223
  if (reader.className) {
233
224
  storageReaderClass = reader.code;
225
+ storageReaderClassTypings = reader.types;
234
226
  storageReaderProperty = targetType === 'ts' ? `declare storage: ${reader.className}` : '';
235
227
  storageReaderInitializer = `this.storage = new ${reader.className}(this.address, this.client, this.explorer);`;
236
228
  $logger.log(`green<StorageReader> was generated`);
@@ -270,16 +262,46 @@ export class GeneratorFromAbi {
270
262
 
271
263
 
272
264
  .replace(`/* $EVENT_TYPES$ */`, () => Str.indent(eventTypes.map(x => x.code).join('\n'), ' '))
273
- .replace(`/* $METHOD_TYPES$ */`, () => Str.indent(methodTypes.map(x => x.code).join('\n'), ' '))
265
+ .replace(`/* $METHOD_TYPES$ */`, () => Str.indent(methodTypings.map(x => x.code).join('\n'), ' '))
274
266
  //.replace(`/* $METHOD_INTERFACES$ */`, () => methodInterfacesArr.map(x => x.code).join('\n\n') + '\n\n' + methodInterfacesAll.code + '\n\n')
275
267
  ;
276
268
 
269
+ let codeDts = templateDts
270
+
271
+ .replace(`/* IMPORTS */`, () => imports.join('\n'))
272
+ .replace(`/* ERRORS */`, () => Gen.serializeErrors(className, abiJson))
273
+ .replace(/\$NAME\$/g, className)
274
+ .replace(`$ADDRESS$`, opts.address ? `'${opts.address}'` : 'null')
275
+ .replace(`/* METHODS */`, methodsTypings)
276
+ .replace(`/* EVENTS */`, eventsTypings)
277
+ .replace(`/* EVENTS_EXTRACTORS */`, eventsExtractorsTypings)
278
+ .replace(`/* EVENTS_FETCHERS */`, eventsFetchersTypings)
279
+ .replace(`$ABI$`, () => JSON.stringify(abiJson))
280
+ .replace(`$DATE$`, $date.format(new Date(), 'yyyy-MM-dd HH:mm'))
281
+ .replace(`$EXPLORER_URL$`, sourceUri)
282
+ //.replace(`/* $EVENT_INTERFACES$ */`, () => eventInterfaces.join('\n') + '\n\n' + eventInterfacesAll.code + '\n\n')
283
+
284
+ .replace(`/* STORAGE_READER_INITIALIZER */`, storageReaderInitializer)
285
+ .replace(`/* STORAGE_READER_PROPERTY */`, storageReaderProperty)
286
+ .replace(`/* STORAGE_READER_CLASS */`, () => storageReaderClassTypings)
287
+ .replace(`/* TX_CALLER_METHODS */`, () => Gen.serializeTxCallerMethods(className, abiJson)[targetType])
288
+ .replace(`/* TX_DATA_METHODS */`, () => Gen.serializeTxDataMethods(className, abiJson)[targetType])
289
+
290
+
291
+ .replace(`/* $EVENT_TYPES$ */`, () => Str.indent(eventTypes.map(x => x.code).join('\n'), ' '))
292
+ .replace(`/* $METHOD_TYPES$ */`, () => Str.indent(methodTypings.map(x => x.code).join('\n'), ' '))
293
+ ;
277
294
 
278
295
 
279
296
  await File.writeAsync(outputPath, code, { skipHooks: true });
297
+ if (targetType === 'js') {
298
+ let outputPathDts = outputPath.replace(/\.\w+$/, '.d.ts');
299
+ await File.writeAsync(outputPathDts, codeDts, { skipHooks: true });
300
+ }
301
+
280
302
 
281
303
  if (opts.saveAbi) {
282
- let path = class_Uri.combine(opts.output, outputDirectory, `${outputFilename}.json`);
304
+ let path = class_Uri.combine(opts.output, outputDirectory, `${outputFilename}Abi.json`);
283
305
  await File.writeAsync(path, abiJson);
284
306
  }
285
307
 
@@ -372,7 +394,7 @@ namespace Gen {
372
394
  };
373
395
  }
374
396
 
375
- export function serializeMethodTypeTs(name: string, abis: TAbiItem[]) {
397
+ export function serializeMethodTypingsTs(name: string, abis: TAbiItem[]) {
376
398
  let args = abis.map(abi => {
377
399
  let { fnInputArgumentsTargets } = serializeArgumentsTs(abi);
378
400
  return `[ ${fnInputArgumentsTargets.ts} ]`;
@@ -443,6 +465,9 @@ namespace Gen {
443
465
  return this.$onLog('${abi.name}', fn);
444
466
  }
445
467
  `,
468
+ types: `
469
+ on${abi.name} (fn?: (event: TClientEventsStreamData<TEventArguments<'${abi.name}'>>) => void): ClientEventsStream<TClientEventsStreamData<TEventArguments<'${abi.name}'>>>
470
+ `,
446
471
  js: `
447
472
  on${abi.name} (fn) {
448
473
  return this.$onLog('${abi.name}', fn);
@@ -458,6 +483,9 @@ namespace Gen {
458
483
  return this.$extractLogs(tx, abi) as any as ITxLogItem<TEventParams<'${abi.name}'>>[];
459
484
  }
460
485
  `,
486
+ types: `
487
+ extractLogs${abi.name} (tx: TEth.TxReceipt): ITxLogItem<TEventParams<'${abi.name}'>>[]
488
+ `,
461
489
  js: `
462
490
  extractLogs${abi.name} (tx) {
463
491
  let abi = this.$getAbiItem('event', '${abi.name}');
@@ -480,6 +508,13 @@ namespace Gen {
480
508
  return await this.$getPastLogsParsed('${abi.name}', options) as any;
481
509
  }
482
510
  `,
511
+ types: `
512
+ getPastLogs${abi.name} (options?: {
513
+ fromBlock?: number | Date
514
+ toBlock?: number | Date
515
+ params?: { ${indexedParams} }
516
+ }): Promise<ITxLogItem<TEventParams<'${abi.name}'>>[]>
517
+ `,
483
518
  js: `
484
519
  async getPastLogs${abi.name} (options) {
485
520
  return await this.$getPastLogsParsed('${abi.name}', options);
@@ -525,6 +560,10 @@ namespace Gen {
525
560
  return this.$read(this.$getAbiItem('function', '${abi.name}')${callInputArguments});
526
561
  }
527
562
  `,
563
+ types: `
564
+ // ${$abiUtils.getMethodSignature(abi)}
565
+ ${abi.name} (${fnInputArgumentsTargets.ts}): ${fnResult}
566
+ `,
528
567
  js: `
529
568
  // ${$abiUtils.getMethodSignature(abi)}
530
569
  async ${abi.name} (${fnInputArgumentsTargets.js}) {
@@ -553,6 +592,10 @@ namespace Gen {
553
592
  return this.$read(abi, ...args);
554
593
  }
555
594
  `,
595
+ types: `
596
+ ${overrides}
597
+ ${abi.name} (...args): ${fnResult}
598
+ `,
556
599
  js: `
557
600
  async ${abi.name} (...args) {
558
601
  let abi = this.$getAbiItemOverload([ ${sigs} ], args);
@@ -575,6 +618,10 @@ namespace Gen {
575
618
  return this.$write(this.$getAbiItem('function', '${abi.name}'), sender${callInputArguments});
576
619
  }
577
620
  `,
621
+ types: `
622
+ // ${$abiUtils.getMethodSignature(abi)}
623
+ ${abi.name} (sender: TSender, ${fnInputArgumentsTargets.ts}): Promise<TxWriter>
624
+ `,
578
625
  js: `
579
626
  // ${$abiUtils.getMethodSignature(abi)}
580
627
  async ${abi.name} (sender, ${fnInputArgumentsTargets.js}) {
@@ -594,6 +641,9 @@ namespace Gen {
594
641
  throw new Error('Not implemented. Typing purpose. Use the ContractDeployer class to deploy the contract');
595
642
  }
596
643
  `,
644
+ types: `
645
+ $constructor (deployer: TSender, ${fnInputArgumentsTargets.ts}): Promise<TxWriter>
646
+ `,
597
647
  js: `
598
648
  async $constructor (deployer, ${fnInputArgumentsTargets.js}) {
599
649
  throw new Error('Not implemented. Typing purpose. Use the ContractDeployer class to deploy the contract');
@@ -620,6 +670,10 @@ namespace Gen {
620
670
  return this.$write(abi, sender, ...args);
621
671
  }
622
672
  `,
673
+ types: `
674
+ ${overrides}
675
+ ${abi.name} (sender: TSender, ...args): Promise<TxWriter>
676
+ `,
623
677
  js: `
624
678
  async ${abi.name} (sender, ...args) {
625
679
  let abi = this.$getAbiItemOverload([ ${sigs} ], args);
@@ -24,7 +24,7 @@ export class GeneratorStorageReader {
24
24
  [file: string]: { content: string }
25
25
  },
26
26
  client?: Web3Client
27
- }): Promise<{ code?: string, className?: string, sourcePath?: string, error?: Error }> {
27
+ }): Promise<{ code?: string, types?: string, className?: string, sourcePath?: string, error?: Error }> {
28
28
 
29
29
  let targetType = opts.target ?? 'ts';
30
30
  let { client, sources, contractName, address } = opts;
@@ -60,19 +60,29 @@ export class GeneratorStorageReader {
60
60
 
61
61
  let methods = this.serializeSlots(slots);
62
62
  let codeMethods = methods.map(x => x[targetType]).join('\n\n');
63
+ let codeMethodsTypings = methods.map(x => x.types).join('\n\n');
63
64
 
64
- let templatePath = $path.resolve(`/src/gen/ContractStorageReaderTemplate.${targetType}`);
65
+ let templatePath = $path.resolve(`/src/gen/templates/ContractStorageReaderTemplate.${targetType}.tmpl`);
65
66
  let template = await File.readAsync<string>(templatePath, { skipHooks: true });
67
+
68
+ let templateTypingsPath = $path.resolve(`/src/gen/templates/ContractStorageReaderTemplate.d.ts.tmpl`);
69
+ let templateTypings = await File.readAsync<string>(templateTypingsPath, { skipHooks: true });
70
+
66
71
  let className = $gen.toClassName(opts.name + 'StorageReader');
67
72
  let code = template
68
73
  .replace(`$NAME$`, className)
69
74
  .replace(`/* METHODS */`, () => codeMethods)
70
75
  .replace(`$SLOTS$`, () => JSON.stringify(slots, null, ' '))
71
76
 
77
+ let codeTypings = templateTypings
78
+ .replace(`$NAME$`, className)
79
+ .replace(`/* METHODS */`, () => codeMethodsTypings)
80
+ .replace(`$SLOTS$`, () => JSON.stringify(slots, null, ' '))
72
81
 
73
82
  return {
74
83
  className: className,
75
84
  code: code,
85
+ types: codeTypings,
76
86
  sourcePath: file.path
77
87
  };
78
88
  }
@@ -84,6 +94,7 @@ export class GeneratorStorageReader {
84
94
  return {
85
95
  ts: Str.formatMethod(entry.ts),
86
96
  js: Str.formatMethod(entry.js),
97
+ types: Str.formatMethod(entry.types),
87
98
  }
88
99
  });
89
100
  }
@@ -98,6 +109,9 @@ export class GeneratorStorageReader {
98
109
  return this.$storage.get(['${name}', ${ parametersCall ?? '' }]);
99
110
  }
100
111
  `,
112
+ types: `
113
+ ${name}(${parametersTypes?.ts ?? ''}): Promise<${returnType}>
114
+ `,
101
115
  js: `
102
116
  async ${name}(${parametersTypes?.js ?? ''}) {
103
117
  return this.$storage.get(['${name}', ${ parametersCall ?? '' }]);
@@ -0,0 +1,7 @@
1
+ declare class $NAME$ extends ContractStorageReaderBase {
2
+
3
+ /* METHODS */
4
+
5
+ $slots: $SLOTS$
6
+
7
+ }
@@ -0,0 +1,110 @@
1
+ /**
2
+ * AUTO-Generated Class: $DATE$
3
+ * Implementation: $EXPLORER_URL$
4
+ */
5
+ import di from 'a-di';
6
+ import { TAddress } from 'dequanto/models/TAddress';
7
+ import { TAccount } from 'dequanto/models/TAccount';
8
+ import { TBufferLike } from 'dequanto/models/TBufferLike';
9
+ import { ClientEventsStream, TClientEventsStreamData } from 'dequanto/clients/ClientEventsStream';
10
+ import { ContractBase } from 'dequanto/contracts/ContractBase';
11
+ import { ContractBaseUtils } from 'dequanto/contracts/utils/ContractBaseUtils';
12
+ import { ContractStorageReaderBase } from 'dequanto/contracts/ContractStorageReaderBase';
13
+ import { TxWriter } from 'dequanto/txs/TxWriter';
14
+ import { ITxLogItem } from 'dequanto/txs/receipt/ITxLogItem';
15
+ import { Web3Client } from 'dequanto/clients/Web3Client';
16
+ import { IBlockChainExplorer } from 'dequanto/explorer/IBlockChainExplorer';
17
+ import { SubjectStream } from 'dequanto/class/SubjectStream';
18
+
19
+
20
+ import type { ContractWriter } from 'dequanto/contracts/ContractWriter';
21
+ import type { TAbiItem } from 'dequanto/types/TAbi';
22
+ import type { TEth } from 'dequanto/models/TEth';
23
+ import type { TOverrideReturns } from 'dequanto/utils/types';
24
+
25
+
26
+ /* IMPORTS */
27
+
28
+ /* ERRORS */
29
+
30
+ export declare class $NAME$ extends ContractBase {
31
+
32
+
33
+ Types: T$NAME$Types;
34
+
35
+
36
+
37
+ /* METHODS */
38
+
39
+ $call (): I$NAME$TxCaller
40
+ $signed (): TOverrideReturns<I$NAME$TxCaller, Promise<{ signed: TEth.Hex, error?: Error & { data?: { type: string, params } } }>>
41
+ $data (): I$NAME$TxData
42
+ $gas (): TOverrideReturns<I$NAME$TxCaller, Promise<{ gas?: bigint, price?: bigint, error?: Error & { data?: { type: string, params } } }>>
43
+
44
+ onTransaction <TMethod extends keyof T$NAME$Types['Methods']> (method: TMethod, options: Parameters<ContractBase['$onTransaction']>[0]): SubjectStream<{
45
+ tx: TEth.Tx
46
+ block: TEth.Block<TEth.Hex>
47
+ calldata: {
48
+ method: TMethod
49
+ arguments: T$NAME$Types['Methods'][TMethod]['arguments']
50
+ }
51
+ }>
52
+
53
+ onLog (event: keyof TEvents, cb?: (event: TClientEventsStreamData) => void): ClientEventsStream<TClientEventsStreamData>
54
+
55
+
56
+ getPastLogs <TEventName extends keyof TEvents> (
57
+ events: TEventName[], options?: TEventLogOptions<TEventParams<TEventName>>
58
+ ): Promise<ITxLogItem<TEventParams<TEventName>, TEventName>[]>
59
+
60
+ getPastLogs <TEventName extends keyof TEvents> (
61
+ event: TEventName, options?: TEventLogOptions<TEventParams<TEventName>>
62
+ ): Promise<ITxLogItem<TEventParams<TEventName>, TEventName>[]>
63
+
64
+ getPastLogs (mix: any, options?): Promise<any>
65
+
66
+ /* EVENTS */
67
+
68
+ /* EVENTS_EXTRACTORS */
69
+
70
+ /* EVENTS_FETCHERS */
71
+
72
+ abi: TAbiItem[]
73
+
74
+ /* STORAGE_READER_PROPERTY */
75
+ }
76
+
77
+ type TSender = TAccount & {
78
+ value?: string | number | bigint
79
+ }
80
+
81
+ type TEventLogOptions<TParams> = {
82
+ fromBlock?: number | Date
83
+ toBlock?: number | Date
84
+ params?: TParams
85
+ }
86
+
87
+ export type T$NAME$Types = {
88
+ Events: {
89
+ /* $EVENT_TYPES$ */
90
+ },
91
+ Methods: {
92
+ /* $METHOD_TYPES$ */
93
+ }
94
+ }
95
+
96
+ /* STORAGE_READER_CLASS */
97
+
98
+ interface I$NAME$TxCaller {
99
+ /* TX_CALLER_METHODS */
100
+ }
101
+
102
+
103
+ interface I$NAME$TxData {
104
+ /* TX_DATA_METHODS */
105
+ }
106
+
107
+
108
+ type TEvents = T$NAME$Types['Events'];
109
+ type TEventParams<TEventName extends keyof TEvents> = Partial<TEvents[TEventName]['outputParams']>;
110
+ type TEventArguments<TEventName extends keyof TEvents> = Partial<TEvents[TEventName]['outputArgs']>;