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.
- package/lib/cjs/abi/coders/array.js +1 -1
- package/lib/cjs/abi/coders/array.js.map +1 -1
- package/lib/cjs/chains/arbitrum/Arbiscan.d.ts +1 -1
- package/lib/cjs/chains/arbitrum/TokensServiceArbitrum.d.ts +1 -1
- package/lib/cjs/chains/boba/Bobascan.d.ts +1 -1
- package/lib/cjs/chains/xdai/XDaiscan.d.ts +1 -1
- package/lib/cjs/clients/EvmWeb3Client.d.ts +3 -0
- package/lib/cjs/clients/EvmWeb3Client.js +23 -4
- package/lib/cjs/clients/EvmWeb3Client.js.map +1 -1
- package/lib/cjs/clients/Web3Client.d.ts +2 -2
- package/lib/cjs/clients/Web3ClientFactory.js +1 -1
- package/lib/cjs/clients/Web3ClientFactory.js.map +1 -1
- package/lib/cjs/config/ConfigDefaults.js +14 -0
- package/lib/cjs/config/ConfigDefaults.js.map +1 -1
- package/lib/cjs/contracts/ContractBase.d.ts +1 -0
- package/lib/cjs/contracts/ContractBase.js.map +1 -1
- package/lib/cjs/contracts/ContractClassFactory.d.ts +2 -1
- package/lib/cjs/contracts/ContractClassFactory.js +5 -1
- package/lib/cjs/contracts/ContractClassFactory.js.map +1 -1
- package/lib/cjs/contracts/deploy/ContractDeployer.d.ts +1 -1
- package/lib/cjs/contracts/deploy/Deployments.d.ts +1 -1
- package/lib/cjs/contracts/deploy/proxy/ProxyDeployment.d.ts +1 -1
- package/lib/cjs/contracts/deploy/storage/DeploymentsStorage.d.ts +1 -1
- package/lib/cjs/contracts/deploy/storage/DeploymentsStorage.js +3 -3
- package/lib/cjs/contracts/deploy/storage/DeploymentsStorage.js.map +1 -1
- package/lib/cjs/erc4337/models/UserOperation.d.ts +1 -1
- package/lib/cjs/explorer/BlockChainExplorerFactory.d.ts +1 -1
- package/lib/cjs/explorer/BlockChainExplorerProvider.d.ts +1 -1
- package/lib/cjs/explorer/Bscscan.d.ts +1 -1
- package/lib/cjs/explorer/ContractVerifier.d.ts +1 -1
- package/lib/cjs/explorer/ContractVerifier.js.map +1 -1
- package/lib/cjs/explorer/Etherscan.d.ts +1 -1
- package/lib/cjs/explorer/Polyscan.d.ts +1 -1
- package/lib/cjs/gen/GeneratorFromAbi.d.ts +6 -1
- package/lib/cjs/gen/GeneratorFromAbi.js +107 -60
- package/lib/cjs/gen/GeneratorFromAbi.js.map +1 -1
- package/lib/cjs/gen/GeneratorStorageReader.d.ts +1 -0
- package/lib/cjs/gen/GeneratorStorageReader.js +13 -1
- package/lib/cjs/gen/GeneratorStorageReader.js.map +1 -1
- package/lib/cjs/hardhat/HardhatProvider.d.ts +47 -2
- package/lib/cjs/hardhat/HardhatProvider.js +169 -92
- package/lib/cjs/hardhat/HardhatProvider.js.map +1 -1
- package/lib/cjs/json/JsonArrayMultiStore.js +4 -2
- package/lib/cjs/json/JsonArrayMultiStore.js.map +1 -1
- package/lib/cjs/json/JsonArrayStore.d.ts +2 -2
- package/lib/cjs/models/TEth.d.ts +2 -2
- package/lib/cjs/ns/providers/EnsProvider.d.ts +2 -2
- package/lib/cjs/safe/GnosisSafeFactory.js.map +1 -1
- package/lib/cjs/safe/GnosisSafeService.js.map +1 -1
- package/lib/cjs/safe/SafeTx.js.map +1 -1
- package/lib/cjs/safe/transport/FileServiceTransport.js.map +1 -1
- package/lib/cjs/safe/transport/InMemoryServiceTransport.js.map +1 -1
- package/lib/cjs/services/TimelockService/TimelockService.d.ts +1 -1
- package/lib/cjs/solidity/SlotsStorage.js.map +1 -1
- package/lib/cjs/tokens/TokenExchanges/AmmV2ExchangeBase.d.ts +4 -4
- package/lib/cjs/tokens/TokenExchanges/AmmV2ExchangeBase.js.map +1 -1
- package/lib/cjs/tokens/TokenExchanges/OneInchExchange.js.map +1 -1
- package/lib/cjs/tokens/TokenOracles/amm/AmmV1Oracle.js.map +1 -1
- package/lib/cjs/tokens/TokenService.js.map +1 -1
- package/lib/cjs/tokens/TokensService.d.ts +1 -1
- package/lib/cjs/tokens/TokensService.js.map +1 -1
- package/lib/cjs/tokens/TokensServiceBsc.d.ts +1 -1
- package/lib/cjs/tokens/TokensServicePolygon.d.ts +1 -1
- package/lib/cjs/tokens/TokensServiceXDai.d.ts +1 -1
- package/lib/cjs/utils/$abiParser.js +8 -1
- package/lib/cjs/utils/$abiParser.js.map +1 -1
- package/lib/cjs/utils/$bigint.d.ts +4 -0
- package/lib/cjs/utils/$bigint.js +40 -0
- package/lib/cjs/utils/$bigint.js.map +1 -1
- package/lib/cjs/utils/$contract.js +6 -0
- package/lib/cjs/utils/$contract.js.map +1 -1
- package/lib/cjs/utils/$logger.js +4 -0
- package/lib/cjs/utils/$logger.js.map +1 -1
- package/lib/cjs/utils/$path.d.ts +6 -0
- package/lib/cjs/utils/$path.js +21 -0
- package/lib/cjs/utils/$path.js.map +1 -1
- package/lib/cjs/utils/$sig.d.ts +3 -0
- package/lib/cjs/utils/$sig.js +2 -2
- package/lib/cjs/utils/$sig.js.map +1 -1
- package/lib/cjs/utils/types.d.ts +3 -0
- package/lib/cjs/wallets/Wallet.js.map +1 -1
- package/lib/esm/abi/coders/array.js.map +1 -1
- package/lib/esm/abi/coders/array.mjs +1 -1
- package/lib/esm/chains/arbitrum/Arbiscan.d.ts +1 -1
- package/lib/esm/chains/arbitrum/TokensServiceArbitrum.d.ts +1 -1
- package/lib/esm/chains/boba/Bobascan.d.ts +1 -1
- package/lib/esm/chains/xdai/XDaiscan.d.ts +1 -1
- package/lib/esm/clients/EvmWeb3Client.d.ts +3 -0
- package/lib/esm/clients/EvmWeb3Client.js.map +1 -1
- package/lib/esm/clients/EvmWeb3Client.mjs +21 -3
- package/lib/esm/clients/Web3Client.d.ts +2 -2
- package/lib/esm/clients/Web3ClientFactory.js.map +1 -1
- package/lib/esm/clients/Web3ClientFactory.mjs +1 -1
- package/lib/esm/config/ConfigDefaults.js.map +1 -1
- package/lib/esm/config/ConfigDefaults.mjs +14 -0
- package/lib/esm/contracts/ContractBase.d.ts +1 -0
- package/lib/esm/contracts/ContractBase.js.map +1 -1
- package/lib/esm/contracts/ContractClassFactory.d.ts +2 -1
- package/lib/esm/contracts/ContractClassFactory.js.map +1 -1
- package/lib/esm/contracts/ContractClassFactory.mjs +5 -1
- package/lib/esm/contracts/deploy/ContractDeployer.d.ts +1 -1
- package/lib/esm/contracts/deploy/Deployments.d.ts +1 -1
- package/lib/esm/contracts/deploy/proxy/ProxyDeployment.d.ts +1 -1
- package/lib/esm/contracts/deploy/storage/DeploymentsStorage.d.ts +1 -1
- package/lib/esm/contracts/deploy/storage/DeploymentsStorage.js.map +1 -1
- package/lib/esm/contracts/deploy/storage/DeploymentsStorage.mjs +3 -3
- package/lib/esm/erc4337/models/UserOperation.d.ts +1 -1
- package/lib/esm/explorer/BlockChainExplorerFactory.d.ts +1 -1
- package/lib/esm/explorer/BlockChainExplorerProvider.d.ts +1 -1
- package/lib/esm/explorer/Bscscan.d.ts +1 -1
- package/lib/esm/explorer/ContractVerifier.d.ts +1 -1
- package/lib/esm/explorer/ContractVerifier.js.map +1 -1
- package/lib/esm/explorer/Etherscan.d.ts +1 -1
- package/lib/esm/explorer/Polyscan.d.ts +1 -1
- package/lib/esm/gen/GeneratorFromAbi.d.ts +6 -1
- package/lib/esm/gen/GeneratorFromAbi.js.map +1 -1
- package/lib/esm/gen/GeneratorFromAbi.mjs +107 -60
- package/lib/esm/gen/GeneratorStorageReader.d.ts +1 -0
- package/lib/esm/gen/GeneratorStorageReader.js.map +1 -1
- package/lib/esm/gen/GeneratorStorageReader.mjs +13 -1
- package/lib/esm/hardhat/HardhatProvider.d.ts +47 -2
- package/lib/esm/hardhat/HardhatProvider.js.map +1 -1
- package/lib/esm/hardhat/HardhatProvider.mjs +169 -92
- package/lib/esm/json/JsonArrayMultiStore.js.map +1 -1
- package/lib/esm/json/JsonArrayMultiStore.mjs +4 -2
- package/lib/esm/json/JsonArrayStore.d.ts +2 -2
- package/lib/esm/models/TEth.d.ts +2 -2
- package/lib/esm/ns/providers/EnsProvider.d.ts +2 -2
- package/lib/esm/safe/GnosisSafeFactory.js.map +1 -1
- package/lib/esm/safe/GnosisSafeService.js.map +1 -1
- package/lib/esm/safe/SafeTx.js.map +1 -1
- package/lib/esm/safe/transport/FileServiceTransport.js.map +1 -1
- package/lib/esm/safe/transport/InMemoryServiceTransport.js.map +1 -1
- package/lib/esm/services/TimelockService/TimelockService.d.ts +1 -1
- package/lib/esm/solidity/SlotsStorage.js.map +1 -1
- package/lib/esm/tokens/TokenExchanges/AmmV2ExchangeBase.d.ts +4 -4
- package/lib/esm/tokens/TokenExchanges/AmmV2ExchangeBase.js.map +1 -1
- package/lib/esm/tokens/TokenExchanges/OneInchExchange.js.map +1 -1
- package/lib/esm/tokens/TokenOracles/amm/AmmV1Oracle.js.map +1 -1
- package/lib/esm/tokens/TokenService.js.map +1 -1
- package/lib/esm/tokens/TokensService.d.ts +1 -1
- package/lib/esm/tokens/TokensService.js.map +1 -1
- package/lib/esm/tokens/TokensServiceBsc.d.ts +1 -1
- package/lib/esm/tokens/TokensServicePolygon.d.ts +1 -1
- package/lib/esm/tokens/TokensServiceXDai.d.ts +1 -1
- package/lib/esm/utils/$abiParser.js.map +1 -1
- package/lib/esm/utils/$abiParser.mjs +8 -1
- package/lib/esm/utils/$bigint.d.ts +4 -0
- package/lib/esm/utils/$bigint.js.map +1 -1
- package/lib/esm/utils/$bigint.mjs +40 -0
- package/lib/esm/utils/$contract.js.map +1 -1
- package/lib/esm/utils/$contract.mjs +6 -0
- package/lib/esm/utils/$logger.js.map +1 -1
- package/lib/esm/utils/$logger.mjs +4 -0
- package/lib/esm/utils/$path.d.ts +6 -0
- package/lib/esm/utils/$path.js.map +1 -1
- package/lib/esm/utils/$path.mjs +21 -0
- package/lib/esm/utils/$sig.d.ts +3 -0
- package/lib/esm/utils/$sig.js.map +1 -1
- package/lib/esm/utils/$sig.mjs +1 -1
- package/lib/esm/utils/types.d.ts +3 -0
- package/lib/esm/wallets/Wallet.js.map +1 -1
- package/package.json +4 -3
- package/src/abi/coders/array.ts +1 -1
- package/src/chains/arbitrum/TokensServiceArbitrum.ts +1 -1
- package/src/clients/EvmWeb3Client.ts +23 -2
- package/src/clients/Web3Client.ts +2 -2
- package/src/clients/Web3ClientFactory.ts +1 -1
- package/src/config/ConfigDefaults.ts +14 -0
- package/src/contracts/ContractBase.ts +2 -0
- package/src/contracts/ContractClassFactory.ts +8 -2
- package/src/contracts/deploy/ContractDeployer.ts +1 -1
- package/src/contracts/deploy/Deployments.ts +1 -1
- package/src/contracts/deploy/proxy/ProxyDeployment.ts +1 -1
- package/src/contracts/deploy/storage/DeploymentsStorage.ts +5 -5
- package/src/contracts/wrappers/FnSignedWrapper.ts +1 -1
- package/src/erc4337/models/UserOperation.ts +1 -1
- package/src/explorer/BlockChainExplorerFactory.ts +1 -1
- package/src/explorer/BlockChainExplorerProvider.ts +1 -1
- package/src/explorer/ContractVerifier.ts +2 -1
- package/src/gen/GeneratorFromAbi.ts +114 -60
- package/src/gen/GeneratorStorageReader.ts +16 -2
- package/src/gen/templates/ContractStorageReaderTemplate.d.ts.tmpl +7 -0
- package/src/gen/templates/ContractTemplate.d.ts.tmpl +110 -0
- package/src/hardhat/HardhatProvider.ts +239 -106
- package/src/json/JsonArrayMultiStore.ts +4 -2
- package/src/json/JsonArrayStore.ts +1 -1
- package/src/models/TEth.ts +2 -2
- package/src/ns/providers/EnsProvider.ts +2 -2
- package/src/safe/GnosisSafeFactory.ts +2 -2
- package/src/safe/GnosisSafeService.ts +1 -1
- package/src/safe/SafeTx.ts +1 -1
- package/src/safe/transport/FileServiceTransport.ts +1 -1
- package/src/safe/transport/InMemoryServiceTransport.ts +1 -1
- package/src/services/TimelockService/TimelockService.ts +1 -1
- package/src/services/TimelockService/TimelockServiceFallbackSafe.ts +1 -1
- package/src/solidity/SlotsStorage.ts +2 -1
- package/src/tokens/TokenExchanges/AmmV2ExchangeBase.ts +4 -4
- package/src/tokens/TokenExchanges/OneInchExchange.ts +1 -1
- package/src/tokens/TokenOracles/amm/AmmV1Oracle.ts +1 -1
- package/src/tokens/TokenService.ts +1 -1
- package/src/tokens/TokensService.ts +1 -1
- package/src/tokens/TokensServiceBsc.ts +1 -1
- package/src/tokens/TokensServicePolygon.ts +1 -1
- package/src/tokens/TokensServiceXDai.ts +1 -1
- package/src/types/TAbi.ts +2 -2
- package/src/utils/$abiParser.ts +8 -1
- package/src/utils/$bigint.ts +41 -0
- package/src/utils/$contract.ts +6 -1
- package/src/utils/$logger.ts +4 -0
- package/src/utils/$path.ts +20 -0
- package/src/utils/$sig.ts +1 -1
- package/src/utils/types.ts +3 -0
- package/src/wallets/Wallet.ts +1 -1
- package/tsconfig.json +1 -0
- package/lib/cjs/gen/ContractStorageReaderTemplate.js +0 -13
- package/lib/cjs/gen/ContractStorageReaderTemplate.js.map +0 -1
- package/lib/cjs/gen/ContractTemplate.js +0 -56
- package/lib/cjs/gen/ContractTemplate.js.map +0 -1
- package/lib/esm/gen/ContractStorageReaderTemplate.js.map +0 -1
- package/lib/esm/gen/ContractStorageReaderTemplate.mjs +0 -13
- package/lib/esm/gen/ContractTemplate.js.map +0 -1
- package/lib/esm/gen/ContractTemplate.mjs +0 -49
- /package/src/gen/{ContractStorageReaderTemplate.js → templates/ContractStorageReaderTemplate.js.tmpl} +0 -0
- /package/src/gen/{ContractStorageReaderTemplate.ts → templates/ContractStorageReaderTemplate.ts.tmpl} +0 -0
- /package/src/gen/{ContractTemplate.js → templates/ContractTemplate.js.tmpl} +0 -0
- /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
|
-
.
|
|
63
|
-
|
|
64
|
-
|
|
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
|
|
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.
|
|
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
|
-
.
|
|
82
|
-
|
|
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
|
-
.
|
|
102
|
-
|
|
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
|
-
.
|
|
109
|
-
|
|
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
|
|
119
|
-
let
|
|
120
|
-
let
|
|
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 =
|
|
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(
|
|
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
|
|
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,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']>;
|