@layerzerolabs/hardhat-tron 2.1.12

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 (69) hide show
  1. package/README.md +78 -0
  2. package/dist/DeploymentFactory.d.ts +13 -0
  3. package/dist/DeploymentFactory.d.ts.map +1 -0
  4. package/dist/DeploymentFactory.js +46 -0
  5. package/dist/DeploymentFactory.js.map +1 -0
  6. package/dist/DeploymentsManager.d.ts +10 -0
  7. package/dist/DeploymentsManager.d.ts.map +1 -0
  8. package/dist/DeploymentsManager.js +78 -0
  9. package/dist/DeploymentsManager.js.map +1 -0
  10. package/dist/constants.d.ts +10 -0
  11. package/dist/constants.d.ts.map +1 -0
  12. package/dist/constants.js +70 -0
  13. package/dist/constants.js.map +1 -0
  14. package/dist/downloader.d.ts +14 -0
  15. package/dist/downloader.d.ts.map +1 -0
  16. package/dist/downloader.js +107 -0
  17. package/dist/downloader.js.map +1 -0
  18. package/dist/extendedArtifactsTron/Diamond.json +17557 -0
  19. package/dist/extendedArtifactsTron/DiamondCutFacet.json +10112 -0
  20. package/dist/extendedArtifactsTron/DiamondERC165Init.json +1549 -0
  21. package/dist/extendedArtifactsTron/DiamondLoupeFacet.json +3194 -0
  22. package/dist/extendedArtifactsTron/EIP173Proxy.json +4707 -0
  23. package/dist/extendedArtifactsTron/EIP173ProxyWithReceive.json +4524 -0
  24. package/dist/extendedArtifactsTron/ERC1967Proxy.json +4039 -0
  25. package/dist/extendedArtifactsTron/OptimizedTransparentUpgradeableProxy.json +6143 -0
  26. package/dist/extendedArtifactsTron/OwnershipFacet.json +793 -0
  27. package/dist/extendedArtifactsTron/ProxyAdmin.json +4339 -0
  28. package/dist/extendedArtifactsTron/TransparentUpgradeableProxy.json +6829 -0
  29. package/dist/helper.d.ts +39 -0
  30. package/dist/helper.d.ts.map +1 -0
  31. package/dist/helper.js +2484 -0
  32. package/dist/helper.js.map +1 -0
  33. package/dist/index.d.ts +3 -0
  34. package/dist/index.d.ts.map +1 -0
  35. package/dist/index.js +159 -0
  36. package/dist/index.js.map +1 -0
  37. package/dist/tron/contract.d.ts +12 -0
  38. package/dist/tron/contract.d.ts.map +1 -0
  39. package/dist/tron/contract.js +38 -0
  40. package/dist/tron/contract.js.map +1 -0
  41. package/dist/tron/provider.d.ts +41 -0
  42. package/dist/tron/provider.d.ts.map +1 -0
  43. package/dist/tron/provider.js +165 -0
  44. package/dist/tron/provider.js.map +1 -0
  45. package/dist/tron/signer.d.ts +31 -0
  46. package/dist/tron/signer.d.ts.map +1 -0
  47. package/dist/tron/signer.js +102 -0
  48. package/dist/tron/signer.js.map +1 -0
  49. package/dist/tron/types.d.ts +10 -0
  50. package/dist/tron/types.d.ts.map +1 -0
  51. package/dist/tron/types.js +9 -0
  52. package/dist/tron/types.js.map +1 -0
  53. package/dist/tron/utils.d.ts +26 -0
  54. package/dist/tron/utils.d.ts.map +1 -0
  55. package/dist/tron/utils.js +64 -0
  56. package/dist/tron/utils.js.map +1 -0
  57. package/dist/type-extensions.d.ts +34 -0
  58. package/dist/type-extensions.d.ts.map +1 -0
  59. package/dist/type-extensions.js +4 -0
  60. package/dist/type-extensions.js.map +1 -0
  61. package/dist/types.d.ts +30 -0
  62. package/dist/types.d.ts.map +1 -0
  63. package/dist/types.js +3 -0
  64. package/dist/types.js.map +1 -0
  65. package/dist/utils.d.ts +19 -0
  66. package/dist/utils.d.ts.map +1 -0
  67. package/dist/utils.js +118 -0
  68. package/dist/utils.js.map +1 -0
  69. package/package.json +114 -0
@@ -0,0 +1,165 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.TronWeb3Provider = void 0;
7
+ const providers_1 = require("@ethersproject/providers");
8
+ const ethers_1 = require("ethers");
9
+ const utils_1 = require("ethers/lib/utils");
10
+ const tronweb_1 = __importDefault(require("tronweb"));
11
+ const signer_1 = require("./signer");
12
+ const utils_2 = require("./utils");
13
+ class TronWeb3Provider extends providers_1.Web3Provider {
14
+ constructor(provider, config, network) {
15
+ super(provider, network);
16
+ this.signers = new Map();
17
+ this.gasPrice = { time: utils_2.Time.NOW };
18
+ this.FALLBACK_MAX_FEE_LIMIT = 15e9;
19
+ const { httpHeaders: headers, url, accounts } = config;
20
+ let fullHost = url;
21
+ fullHost = fullHost.replace(/\/jsonrpc\/?$/, '');
22
+ this.fullHost = fullHost;
23
+ this.headers = headers;
24
+ this.ro_tronweb = new tronweb_1.default({ fullHost, headers });
25
+ if (Array.isArray(accounts)) {
26
+ for (const pk of accounts) {
27
+ const addr = new ethers_1.Wallet(pk).address;
28
+ this.signers.set(addr, new signer_1.TronSigner(fullHost, headers, pk, this));
29
+ }
30
+ }
31
+ else if (typeof accounts !== 'string' && 'mnemonic' in accounts) {
32
+ const hdNode = utils_1.HDNode.fromMnemonic(accounts.mnemonic, accounts.passphrase);
33
+ const derivedNode = hdNode.derivePath(`${accounts.path}/${accounts.initialIndex}`);
34
+ this.signers.set(derivedNode.address, new signer_1.TronSigner(fullHost, headers, derivedNode.privateKey, this));
35
+ }
36
+ else {
37
+ throw new Error('unable to instantiate Tron Signer, unrecognized private key');
38
+ }
39
+ }
40
+ addSigner(pk) {
41
+ const addr = new ethers_1.Wallet(pk).address;
42
+ if (this.signers.has(addr))
43
+ return this.signers.get(addr);
44
+ const signer = new signer_1.TronSigner(this.fullHost, this.headers, pk, this);
45
+ this.signers.set(addr, signer);
46
+ return signer;
47
+ }
48
+ async getTransactionCount() {
49
+ console.log('getTransactionCount is not available in the Tron protocol, returning dummy value 1 ...');
50
+ return 1;
51
+ }
52
+ getSigner(address) {
53
+ const signer = this.signers.get(address);
54
+ if (!signer) {
55
+ throw new Error(`No Tron signer exists for this address ${address}`);
56
+ }
57
+ return signer;
58
+ }
59
+ async getGasPrice() {
60
+ const DEFAULT_ENERGY_PRICE = ethers_1.BigNumber.from('1000');
61
+ const { time, value } = this.gasPrice;
62
+ if (time > utils_2.Time.NOW - 15 * utils_2.Time.SECOND && value)
63
+ return value;
64
+ const gasPrice = (await super.getGasPrice()) ?? DEFAULT_ENERGY_PRICE;
65
+ this.gasPrice = { time: utils_2.Time.NOW, value: gasPrice };
66
+ return gasPrice;
67
+ }
68
+ async sendTransaction(signedTransaction) {
69
+ signedTransaction = await signedTransaction;
70
+ const deser = (0, utils_1.parseTransaction)(signedTransaction);
71
+ const { to, data, from, value } = deser;
72
+ if (this.isSendTRX(to, from, data)) {
73
+ return this.sendTrx(from, to, value);
74
+ }
75
+ if (await this.isSmartContractCall(to, from, data)) {
76
+ throw new Error('direct smart contract call not yet implemented for Tron');
77
+ }
78
+ return super.sendTransaction(signedTransaction);
79
+ }
80
+ async sendTrx(from, to, value) {
81
+ if (value.gt(10 ** 9))
82
+ value = value.div(10 ** 12);
83
+ const unsignedTx = await this.ro_tronweb.transactionBuilder.sendTrx(this.ro_tronweb.address.toHex(to), Math.floor(value.toNumber()), this.ro_tronweb.address.toHex(from));
84
+ const signedTx = await this.getSigner(from).sign(unsignedTx);
85
+ return this.sendRawTransaction(signedTx);
86
+ }
87
+ async triggerSmartContract(from, contract, funcSig, params, options) {
88
+ const feeLimit = await this.getSigner(from).getFeeLimit({ to: contract }, options);
89
+ const { transaction } = await this.ro_tronweb.transactionBuilder.triggerSmartContract(this.ro_tronweb.address.toHex(contract), funcSig, { feeLimit, callValue: options.value?.toString() ?? 0 }, params, this.ro_tronweb.address.toHex(from));
90
+ const signedTx = await this.getSigner(from).sign(transaction);
91
+ return this.sendRawTransaction(signedTx);
92
+ }
93
+ async sendRawTransaction(transaction) {
94
+ const response = await this.ro_tronweb.trx.sendRawTransaction(transaction);
95
+ if (!('result' in response) || !response.result) {
96
+ throw new utils_2.TronWebError(response);
97
+ }
98
+ console.log('\nTron transaction broadcast, waiting for response...');
99
+ const txRes = await this.getTransactionWithRetry(response.txid);
100
+ txRes.wait = this._buildWait(txRes.confirmations, response.txid);
101
+ return txRes;
102
+ }
103
+ _buildWait(initialConfirmations, hash) {
104
+ return async (targetConfirmations) => {
105
+ let curr_conf = initialConfirmations;
106
+ while (targetConfirmations && curr_conf < targetConfirmations) {
107
+ await utils_2.Time.sleep(utils_2.Time.SECOND);
108
+ const { confirmations: latest_conf } = await this.getTransactionWithRetry(hash, 3);
109
+ curr_conf = latest_conf;
110
+ }
111
+ const receipt = await this.getTransactionReceipt((0, utils_2.ensure0x)(hash));
112
+ const { status } = receipt;
113
+ if (status === 0) {
114
+ throw new utils_2.TronTransactionFailedError(receipt);
115
+ }
116
+ return receipt;
117
+ };
118
+ }
119
+ async getTransactionWithRetry(hash, retries = 10) {
120
+ for (let i = 1; i < retries; i++) {
121
+ try {
122
+ const response = await this.getTransaction((0, utils_2.ensure0x)(hash));
123
+ if (response == null)
124
+ throw '';
125
+ return response;
126
+ }
127
+ catch (error) { }
128
+ const jitter = Math.floor(Math.random() * 300);
129
+ await utils_2.Time.sleep(utils_2.Time.SECOND + jitter);
130
+ }
131
+ return await this.getTransaction((0, utils_2.ensure0x)(hash));
132
+ }
133
+ async estimateGas(transaction) {
134
+ const toDel = ['type', 'maxFeePerGas', 'maxPriorityFeePerGas', 'nonce'];
135
+ for (const field of toDel) {
136
+ delete transaction[field];
137
+ }
138
+ return super.estimateGas(transaction);
139
+ }
140
+ async isSmartContractCall(to, from, data) {
141
+ if ([to, from, data].some((f) => f == undefined))
142
+ return false;
143
+ if ([to, from].some((f) => (0, utils_1.isAddress)(f) == false))
144
+ return false;
145
+ if (data.length <= 2)
146
+ return false;
147
+ const contractCode = await this.getCode(to);
148
+ return contractCode != undefined && (0, utils_2.strip0x)(contractCode).length > 0;
149
+ }
150
+ isSendTRX(to, from, data) {
151
+ if ([to, from].some((f) => f == undefined))
152
+ return false;
153
+ return !data || data == '0x';
154
+ }
155
+ async getMaxFeeLimit() {
156
+ if (this.maxFeeLimit == undefined) {
157
+ const params = await this.ro_tronweb.trx.getChainParameters();
158
+ const param = params.find(({ key }) => key === 'getMaxFeeLimit');
159
+ this.maxFeeLimit = param?.value ?? this.FALLBACK_MAX_FEE_LIMIT;
160
+ }
161
+ return this.maxFeeLimit;
162
+ }
163
+ }
164
+ exports.TronWeb3Provider = TronWeb3Provider;
165
+ //# sourceMappingURL=provider.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"provider.js","sourceRoot":"","sources":["../../src/tron/provider.ts"],"names":[],"mappings":";;;;;;AAAA,wDASiC;AACjC,mCAA0C;AAC1C,4CAAkF;AAElF,sDAA6B;AAG7B,qCAAqC;AACrC,mCAA2F;AAwB3F,MAAa,gBAAiB,SAAQ,wBAAY;IAS9C,YACI,QAA6C,EAC7C,MAAyB,EACzB,OAAgC;QAEhC,KAAK,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAA;QAblB,YAAO,GAAG,IAAI,GAAG,EAAsB,CAAA;QAE1C,aAAQ,GAAwC,EAAE,IAAI,EAAE,YAAI,CAAC,GAAG,EAAE,CAAA;QAElE,2BAAsB,GAAG,IAAI,CAAA;QAUhC,MAAM,EAAE,WAAW,EAAE,OAAO,EAAE,GAAG,EAAE,QAAQ,EAAE,GAAG,MAAM,CAAA;QACtD,IAAI,QAAQ,GAAG,GAAG,CAAA;QAElB,QAAQ,GAAG,QAAQ,CAAC,OAAO,CAAC,eAAe,EAAE,EAAE,CAAC,CAAA;QAChD,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAA;QACxB,IAAI,CAAC,OAAO,GAAG,OAAO,CAAA;QACtB,IAAI,CAAC,UAAU,GAAG,IAAI,iBAAO,CAAC,EAAE,QAAQ,EAAE,OAAO,EAAE,CAAC,CAAA;QAEpD,IAAI,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE;YACzB,KAAK,MAAM,EAAE,IAAI,QAAQ,EAAE;gBACvB,MAAM,IAAI,GAAG,IAAI,eAAM,CAAC,EAAE,CAAC,CAAC,OAAO,CAAA;gBACnC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,EAAE,IAAI,mBAAU,CAAC,QAAQ,EAAE,OAAO,EAAE,EAAE,EAAE,IAAI,CAAC,CAAC,CAAA;aACtE;SACJ;aAAM,IAAI,OAAO,QAAQ,KAAK,QAAQ,IAAI,UAAU,IAAI,QAAQ,EAAE;YAC/D,MAAM,MAAM,GAAG,cAAM,CAAC,YAAY,CAAC,QAAQ,CAAC,QAAQ,EAAE,QAAQ,CAAC,UAAU,CAAC,CAAA;YAC1E,MAAM,WAAW,GAAG,MAAM,CAAC,UAAU,CAAC,GAAG,QAAQ,CAAC,IAAI,IAAI,QAAQ,CAAC,YAAY,EAAE,CAAC,CAAA;YAClF,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,WAAW,CAAC,OAAO,EAAE,IAAI,mBAAU,CAAC,QAAQ,EAAE,OAAO,EAAE,WAAW,CAAC,UAAU,EAAE,IAAI,CAAC,CAAC,CAAA;SACzG;aAAM;YACH,MAAM,IAAI,KAAK,CAAC,6DAA6D,CAAC,CAAA;SACjF;IACL,CAAC;IAYD,SAAS,CAAC,EAAU;QAChB,MAAM,IAAI,GAAG,IAAI,eAAM,CAAC,EAAE,CAAC,CAAC,OAAO,CAAA;QACnC,IAAI,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC;YAAE,OAAO,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAE,CAAA;QAC1D,MAAM,MAAM,GAAG,IAAI,mBAAU,CAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,OAAO,EAAE,EAAE,EAAE,IAAI,CAAC,CAAA;QACpE,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,EAAE,MAAM,CAAC,CAAA;QAC9B,OAAO,MAAM,CAAA;IACjB,CAAC;IAUQ,KAAK,CAAC,mBAAmB;QAC9B,OAAO,CAAC,GAAG,CAAC,wFAAwF,CAAC,CAAA;QACrG,OAAO,CAAC,CAAA;IACZ,CAAC;IAaQ,SAAS,CAAuD,OAAe;QACpF,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,CAAA;QACxC,IAAI,CAAC,MAAM,EAAE;YACT,MAAM,IAAI,KAAK,CAAC,0CAA0C,OAAO,EAAE,CAAC,CAAA;SACvE;QACD,OAAO,MAAW,CAAA;IACtB,CAAC;IAWQ,KAAK,CAAC,WAAW;QACtB,MAAM,oBAAoB,GAAG,kBAAS,CAAC,IAAI,CAAC,MAAM,CAAC,CAAA;QACnD,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,IAAI,CAAC,QAAQ,CAAA;QACrC,IAAI,IAAI,GAAG,YAAI,CAAC,GAAG,GAAG,EAAE,GAAG,YAAI,CAAC,MAAM,IAAI,KAAK;YAAE,OAAO,KAAK,CAAA;QAC7D,MAAM,QAAQ,GAAG,CAAC,MAAM,KAAK,CAAC,WAAW,EAAE,CAAC,IAAI,oBAAoB,CAAA;QACpE,IAAI,CAAC,QAAQ,GAAG,EAAE,IAAI,EAAE,YAAI,CAAC,GAAG,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAA;QACnD,OAAO,QAAQ,CAAA;IACnB,CAAC;IAWQ,KAAK,CAAC,eAAe,CAAC,iBAA2C;QACtE,iBAAiB,GAAG,MAAM,iBAAiB,CAAA;QAC3C,MAAM,KAAK,GAAG,IAAA,wBAAgB,EAAC,iBAAiB,CAAC,CAAA;QACjD,MAAM,EAAE,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,KAAK,CAAA;QAGvC,IAAI,IAAI,CAAC,SAAS,CAAC,EAAE,EAAE,IAAI,EAAE,IAAI,CAAC,EAAE;YAChC,OAAO,IAAI,CAAC,OAAO,CAAC,IAAK,EAAE,EAAG,EAAE,KAAK,CAAC,CAAA;SACzC;QAED,IAAI,MAAM,IAAI,CAAC,mBAAmB,CAAC,EAAE,EAAE,IAAI,EAAE,IAAI,CAAC,EAAE;YAChD,MAAM,IAAI,KAAK,CAAC,yDAAyD,CAAC,CAAA;SAC7E;QAGD,OAAO,KAAK,CAAC,eAAe,CAAC,iBAAiB,CAAC,CAAA;IACnD,CAAC;IAgBD,KAAK,CAAC,OAAO,CAAC,IAAY,EAAE,EAAU,EAAE,KAAgB;QACpD,IAAI,KAAK,CAAC,EAAE,CAAC,EAAE,IAAI,CAAC,CAAC;YAAE,KAAK,GAAG,KAAK,CAAC,GAAG,CAAC,EAAE,IAAI,EAAE,CAAC,CAAA;QAClD,MAAM,UAAU,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,kBAAkB,CAAC,OAAO,CAC/D,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC,EACjC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC,EAC5B,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,CACtC,CAAA;QACD,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,SAAS,CAAa,IAAI,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,CAAA;QACxE,OAAO,IAAI,CAAC,kBAAkB,CAAC,QAAQ,CAAC,CAAA;IAC5C,CAAC;IAkBD,KAAK,CAAC,oBAAoB,CACtB,IAAY,EACZ,QAAgB,EAChB,OAAe,EACf,MAAkD,EAClD,OAGC;QAED,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,SAAS,CAAa,IAAI,CAAC,CAAC,WAAW,CAAC,EAAE,EAAE,EAAE,QAAQ,EAAE,EAAE,OAAO,CAAC,CAAA;QAC9F,MAAM,EAAE,WAAW,EAAE,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,kBAAkB,CAAC,oBAAoB,CACjF,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,KAAK,CAAC,QAAQ,CAAC,EACvC,OAAO,EACP,EAAE,QAAQ,EAAE,SAAS,EAAE,OAAO,CAAC,KAAK,EAAE,QAAQ,EAAE,IAAI,CAAC,EAAE,EACvD,MAAM,EACN,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,CACtC,CAAA;QACD,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,SAAS,CAAa,IAAI,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,CAAA;QACzE,OAAO,IAAI,CAAC,kBAAkB,CAAC,QAAQ,CAAC,CAAA;IAC5C,CAAC;IAeD,KAAK,CAAC,kBAAkB,CAAC,WAAwB;QAC7C,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,kBAAkB,CAAC,WAAW,CAAC,CAAA;QAC1E,IAAI,CAAC,CAAC,QAAQ,IAAI,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE;YAC7C,MAAM,IAAI,oBAAY,CAAC,QAAyB,CAAC,CAAA;SACpD;QACD,OAAO,CAAC,GAAG,CAAC,uDAAuD,CAAC,CAAA;QACpE,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,uBAAuB,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAA;QAC/D,KAAK,CAAC,IAAI,GAAG,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,aAAa,EAAE,QAAQ,CAAC,IAAI,CAAC,CAAA;QAChE,OAAO,KAAK,CAAA;IAChB,CAAC;IAaO,UAAU,CAAC,oBAA4B,EAAE,IAAY;QACzD,OAAO,KAAK,EAAE,mBAA4B,EAA+B,EAAE;YACvE,IAAI,SAAS,GAAG,oBAAoB,CAAA;YACpC,OAAO,mBAAmB,IAAI,SAAS,GAAG,mBAAmB,EAAE;gBAC3D,MAAM,YAAI,CAAC,KAAK,CAAC,YAAI,CAAC,MAAM,CAAC,CAAA;gBAC7B,MAAM,EAAE,aAAa,EAAE,WAAW,EAAE,GAAG,MAAM,IAAI,CAAC,uBAAuB,CAAC,IAAI,EAAE,CAAC,CAAC,CAAA;gBAClF,SAAS,GAAG,WAAW,CAAA;aAC1B;YACD,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,qBAAqB,CAAC,IAAA,gBAAQ,EAAC,IAAI,CAAC,CAAC,CAAA;YAChE,MAAM,EAAE,MAAM,EAAE,GAAG,OAAO,CAAA;YAC1B,IAAI,MAAM,KAAK,CAAC,EAAE;gBACd,MAAM,IAAI,kCAA0B,CAAC,OAAO,CAAC,CAAA;aAChD;YACD,OAAO,OAAO,CAAA;QAClB,CAAC,CAAA;IACL,CAAC;IAeM,KAAK,CAAC,uBAAuB,CAAC,IAAY,EAAE,OAAO,GAAG,EAAE;QAC3D,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,OAAO,EAAE,CAAC,EAAE,EAAE;YAC9B,IAAI;gBACA,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,cAAc,CAAC,IAAA,gBAAQ,EAAC,IAAI,CAAC,CAAC,CAAA;gBAC1D,IAAI,QAAQ,IAAI,IAAI;oBAAE,MAAM,EAAE,CAAA;gBAC9B,OAAO,QAAQ,CAAA;aAClB;YAAC,OAAO,KAAK,EAAE,GAAE;YAElB,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,GAAG,CAAC,CAAA;YAC9C,MAAM,YAAI,CAAC,KAAK,CAAC,YAAI,CAAC,MAAM,GAAG,MAAM,CAAC,CAAA;SACzC;QACD,OAAO,MAAM,IAAI,CAAC,cAAc,CAAC,IAAA,gBAAQ,EAAC,IAAI,CAAC,CAAC,CAAA;IACpD,CAAC;IAYQ,KAAK,CAAC,WAAW,CAAC,WAA2C;QAClE,MAAM,KAAK,GAAG,CAAC,MAAM,EAAE,cAAc,EAAE,sBAAsB,EAAE,OAAO,CAAC,CAAA;QACvE,KAAK,MAAM,KAAK,IAAI,KAAK,EAAE;YACvB,OAAQ,WAAsC,CAAC,KAAK,CAAC,CAAA;SACxD;QACD,OAAO,KAAK,CAAC,WAAW,CAAC,WAAW,CAAC,CAAA;IACzC,CAAC;IAeD,KAAK,CAAC,mBAAmB,CAAC,EAAW,EAAE,IAAa,EAAE,IAAa;QAC/D,IAAI,CAAC,EAAE,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,IAAI,SAAS,CAAC;YAAE,OAAO,KAAK,CAAA;QAC9D,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAA,iBAAS,EAAC,CAAE,CAAC,IAAI,KAAK,CAAC;YAAE,OAAO,KAAK,CAAA;QAChE,IAAI,IAAK,CAAC,MAAM,IAAI,CAAC;YAAE,OAAO,KAAK,CAAA;QACnC,MAAM,YAAY,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,EAAG,CAAC,CAAA;QAC5C,OAAO,YAAY,IAAI,SAAS,IAAI,IAAA,eAAO,EAAC,YAAY,CAAC,CAAC,MAAM,GAAG,CAAC,CAAA;IACxE,CAAC;IAeD,SAAS,CAAC,EAAW,EAAE,IAAa,EAAE,IAAa;QAC/C,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,IAAI,SAAS,CAAC;YAAE,OAAO,KAAK,CAAA;QACxD,OAAO,CAAC,IAAI,IAAI,IAAI,IAAI,IAAI,CAAA;IAChC,CAAC;IASD,KAAK,CAAC,cAAc;QAChB,IAAI,IAAI,CAAC,WAAW,IAAI,SAAS,EAAE;YAC/B,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,kBAAkB,EAAE,CAAA;YAC7D,MAAM,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,EAAE,GAAG,EAAE,EAAE,EAAE,CAAC,GAAG,KAAK,gBAAgB,CAAC,CAAA;YAChE,IAAI,CAAC,WAAW,GAAG,KAAK,EAAE,KAAK,IAAI,IAAI,CAAC,sBAAsB,CAAA;SACjE;QACD,OAAO,IAAI,CAAC,WAAW,CAAA;IAC3B,CAAC;CACJ;AA1VD,4CA0VC"}
@@ -0,0 +1,31 @@
1
+ import { TransactionRequest, TransactionResponse } from '@ethersproject/providers';
2
+ import { BigNumber, Wallet } from 'ethers';
3
+ import { Deferrable } from 'ethers/lib/utils';
4
+ import TronWeb from 'tronweb';
5
+ import { BlockTransaction, ContractExecutionParams, Transaction } from 'tronweb/interfaces';
6
+ import { TronWeb3Provider } from './provider';
7
+ import { CreateSmartContract } from './types';
8
+ export declare class TronSigner extends Wallet {
9
+ protected tronweb: TronWeb;
10
+ gasPrice: {
11
+ time: number;
12
+ value?: BigNumber;
13
+ };
14
+ energyFactors: Map<string, {
15
+ time: number;
16
+ value: number;
17
+ }>;
18
+ MAX_ENERGY_FACTOR: number;
19
+ MAX_ENERGY_DIVISOR: number;
20
+ constructor(fullHost: string, headers: Record<string, string>, privateKey: string, provider: TronWeb3Provider);
21
+ sign(unsignedTx: Record<string, unknown> | Transaction, privateKey?: string): Promise<Transaction>;
22
+ sendTransaction(transaction: CreateSmartContract | Deferrable<TransactionRequest>): Promise<TransactionResponse>;
23
+ create(transaction: ContractExecutionParams & Partial<CreateSmartContract>): Promise<TransactionResponse>;
24
+ getFeeLimit(unsignedTx: Record<string, any>, overrides?: Record<string, any>): Promise<number>;
25
+ getEnergyPrice: () => Promise<BigNumber>;
26
+ getGasPrice(): Promise<BigNumber>;
27
+ getEnergyConsumption(contract_address: string, data: string): Promise<BigNumber>;
28
+ getEnergyFactor(contract_address: string): Promise<number>;
29
+ getTronWebTransaction(hash: string): Promise<BlockTransaction>;
30
+ }
31
+ //# sourceMappingURL=signer.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"signer.d.ts","sourceRoot":"","sources":["../../src/tron/signer.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,kBAAkB,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAA;AAClF,OAAO,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAA;AAC1C,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAA;AAC7C,OAAO,OAAO,MAAM,SAAS,CAAA;AAC7B,OAAO,EAAE,gBAAgB,EAAE,uBAAuB,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAA;AAE3F,OAAO,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAA;AAC7C,OAAO,EAAE,mBAAmB,EAA+B,MAAM,SAAS,CAAA;AAyB1E,qBAAa,UAAW,SAAQ,MAAM;IAClC,SAAS,CAAC,OAAO,EAAE,OAAO,CAAA;IACnB,QAAQ,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,KAAK,CAAC,EAAE,SAAS,CAAA;KAAE,CAAqB;IAClE,aAAa;cAA2B,MAAM;eAAS,MAAM;OAAK;IAClE,iBAAiB,SAAM;IACvB,kBAAkB,SAAO;gBAEpB,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,EAAE,UAAU,EAAE,MAAM,EAAE,QAAQ,EAAE,gBAAgB;IAoBvG,IAAI,CAAC,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,WAAW,EAAE,UAAU,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC;IAgBzF,eAAe,CAC1B,WAAW,EAAE,mBAAmB,GAAG,UAAU,CAAC,kBAAkB,CAAC,GAClE,OAAO,CAAC,mBAAmB,CAAC;IAwBzB,MAAM,CAAC,WAAW,EAAE,uBAAuB,GAAG,OAAO,CAAC,mBAAmB,CAAC,GAAG,OAAO,CAAC,mBAAmB,CAAC;IAiCzG,WAAW,CAAC,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EAAE,SAAS,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,OAAO,CAAC,MAAM,CAAC;IA6BpG,cAAc,QAAO,QAAQ,SAAS,CAAC,CAAsB;IAS9C,WAAW,IAAI,OAAO,CAAC,SAAS,CAAC;IAe1C,oBAAoB,CAAC,gBAAgB,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,SAAS,CAAC;IAkBhF,eAAe,CAAC,gBAAgB,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAmC1D,qBAAqB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,gBAAgB,CAAC;CAKvE"}
@@ -0,0 +1,102 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.TronSigner = void 0;
7
+ const ethers_1 = require("ethers");
8
+ const tronweb_1 = __importDefault(require("tronweb"));
9
+ const types_1 = require("./types");
10
+ const utils_1 = require("./utils");
11
+ class TronSigner extends ethers_1.Wallet {
12
+ constructor(fullHost, headers, privateKey, provider) {
13
+ super(privateKey, provider);
14
+ this.gasPrice = { time: utils_1.Time.NOW };
15
+ this.energyFactors = new Map();
16
+ this.MAX_ENERGY_FACTOR = 1.2;
17
+ this.MAX_ENERGY_DIVISOR = 1000;
18
+ this.getEnergyPrice = () => this.getGasPrice();
19
+ this.tronweb = new tronweb_1.default({
20
+ fullHost,
21
+ headers,
22
+ privateKey: (0, utils_1.strip0x)(privateKey),
23
+ });
24
+ }
25
+ async sign(unsignedTx, privateKey) {
26
+ return this.tronweb.trx.sign(unsignedTx, privateKey);
27
+ }
28
+ async sendTransaction(transaction) {
29
+ if (!(types_1.MethodSymbol in transaction)) {
30
+ return super.sendTransaction(transaction);
31
+ }
32
+ switch (transaction[types_1.MethodSymbol]) {
33
+ case types_1.TronTxMethods.CREATE:
34
+ return this.create(transaction);
35
+ default:
36
+ throw new Error('sendTransaction method not implemented');
37
+ }
38
+ }
39
+ async create(transaction) {
40
+ delete transaction[types_1.MethodSymbol];
41
+ delete transaction.data;
42
+ const unsignedTx = await this.tronweb.transactionBuilder.createSmartContract(transaction, this.tronweb.address.toHex(this.address));
43
+ const signedTx = await this.sign(unsignedTx);
44
+ return this.provider.sendRawTransaction(signedTx);
45
+ }
46
+ async getFeeLimit(unsignedTx, overrides) {
47
+ const contract_address = unsignedTx.to ?? '';
48
+ const data = unsignedTx.data;
49
+ const factor = 1 + (await this.getEnergyFactor(contract_address));
50
+ const factor_adj = ethers_1.BigNumber.from(Math.floor(factor * this.MAX_ENERGY_DIVISOR));
51
+ let energy_consumption;
52
+ if (overrides?.gasLimit) {
53
+ energy_consumption = ethers_1.BigNumber.from(overrides?.gasLimit.toString());
54
+ }
55
+ else {
56
+ energy_consumption = await this.getEnergyConsumption(contract_address, data);
57
+ }
58
+ const enegyPrice = await this.getEnergyPrice();
59
+ const feeLimit = energy_consumption.mul(enegyPrice).mul(factor_adj).div(this.MAX_ENERGY_DIVISOR);
60
+ const maxFeeLimit = await this.provider.getMaxFeeLimit();
61
+ if (feeLimit.gt(ethers_1.BigNumber.from(maxFeeLimit))) {
62
+ return maxFeeLimit;
63
+ }
64
+ return feeLimit.toNumber();
65
+ }
66
+ async getGasPrice() {
67
+ return this.provider.getGasPrice();
68
+ }
69
+ async getEnergyConsumption(contract_address, data) {
70
+ const gasLimit = await this.estimateGas({
71
+ to: contract_address,
72
+ data,
73
+ });
74
+ return gasLimit;
75
+ }
76
+ async getEnergyFactor(contract_address) {
77
+ const cached = this.energyFactors.get(contract_address);
78
+ if (cached && cached.time > utils_1.Time.NOW - 10 * utils_1.Time.MINUTE) {
79
+ return cached.value;
80
+ }
81
+ let energy_factor = this.MAX_ENERGY_FACTOR;
82
+ if (contract_address == '')
83
+ return energy_factor;
84
+ const res = await this.tronweb.fullNode.request('wallet/getcontractinfo', { value: contract_address, visible: false }, 'post');
85
+ if (res?.contract_state?.energy_factor < this.MAX_ENERGY_FACTOR) {
86
+ energy_factor = Number(res?.contract_state?.energy_factor);
87
+ }
88
+ this.energyFactors.set(contract_address, {
89
+ time: utils_1.Time.NOW,
90
+ value: energy_factor,
91
+ });
92
+ return energy_factor;
93
+ }
94
+ async getTronWebTransaction(hash) {
95
+ const res = await this.tronweb.trx.getTransaction(hash);
96
+ if ('Error' in res)
97
+ throw new utils_1.TronWebGetTransactionError(res);
98
+ return res;
99
+ }
100
+ }
101
+ exports.TronSigner = TronSigner;
102
+ //# sourceMappingURL=signer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"signer.js","sourceRoot":"","sources":["../../src/tron/signer.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,10 @@
1
+ import { ContractExecutionParams } from 'tronweb/interfaces';
2
+ export declare const MethodSymbol: unique symbol;
3
+ export interface CreateSmartContract extends ContractExecutionParams {
4
+ data: string;
5
+ [MethodSymbol]: TronTxMethods.CREATE;
6
+ }
7
+ export declare enum TronTxMethods {
8
+ CREATE = "create"
9
+ }
10
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/tron/types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,uBAAuB,EAAE,MAAM,oBAAoB,CAAA;AAE5D,eAAO,MAAM,YAAY,eAAmB,CAAA;AAE5C,MAAM,WAAW,mBAAoB,SAAQ,uBAAuB;IAChE,IAAI,EAAE,MAAM,CAAA;IACZ,CAAC,YAAY,CAAC,EAAE,aAAa,CAAC,MAAM,CAAA;CACvC;AAED,oBAAY,aAAa;IACrB,MAAM,WAAW;CACpB"}
@@ -0,0 +1,9 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.TronTxMethods = exports.MethodSymbol = void 0;
4
+ exports.MethodSymbol = Symbol('method');
5
+ var TronTxMethods;
6
+ (function (TronTxMethods) {
7
+ TronTxMethods["CREATE"] = "create";
8
+ })(TronTxMethods || (exports.TronTxMethods = TronTxMethods = {}));
9
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/tron/types.ts"],"names":[],"mappings":";;;AAEa,QAAA,YAAY,GAAG,MAAM,CAAC,QAAQ,CAAC,CAAA;AAO5C,IAAY,aAEX;AAFD,WAAY,aAAa;IACrB,kCAAiB,CAAA;AACrB,CAAC,EAFW,aAAa,6BAAb,aAAa,QAExB"}
@@ -0,0 +1,26 @@
1
+ import { TronWebError1, TronWebError2 } from 'tronweb/interfaces';
2
+ export declare const isArrayofBytes: (data: any) => boolean;
3
+ export declare class TronWebError extends Error {
4
+ readonly code: string;
5
+ readonly hash: string;
6
+ constructor({ code, message, txid }: TronWebError1);
7
+ }
8
+ export declare class TronWebGetTransactionError extends Error {
9
+ constructor({ Error }: TronWebError2);
10
+ }
11
+ export declare class TronTransactionFailedError extends Error {
12
+ readonly receipt: Record<string, any>;
13
+ constructor(receipt: Record<string, any>);
14
+ }
15
+ export declare const Time: {
16
+ readonly MILLISECOND: 1;
17
+ readonly SECOND: number;
18
+ readonly MINUTE: number;
19
+ readonly HOUR: number;
20
+ readonly DAY: number;
21
+ readonly NOW: number;
22
+ readonly sleep: (ms: number) => Promise<void>;
23
+ };
24
+ export declare const ensure0x: (str: string) => string;
25
+ export declare const strip0x: (str: string) => string;
26
+ //# sourceMappingURL=utils.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../src/tron/utils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAA;AAEjE,eAAO,MAAM,cAAc,SAAU,GAAG,KAAG,OAK1C,CAAA;AAED,qBAAa,YAAa,SAAQ,KAAK;IACnC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;IACrB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;gBACT,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,EAAE,aAAa;CAQrD;AAED,qBAAa,0BAA2B,SAAQ,KAAK;gBACrC,EAAE,KAAK,EAAE,EAAE,aAAa;CAIvC;AAED,qBAAa,0BAA2B,SAAQ,KAAK;IACrC,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC;gBAA5B,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC;CAIpD;AASD,eAAO,MAAM,IAAI;;;;;;;yBASH,MAAM,KAAG,QAAQ,IAAI,CAAC;CAG1B,CAAA;AAEV,eAAO,MAAM,QAAQ,QAAS,MAAM,KAAG,MAGtC,CAAA;AAED,eAAO,MAAM,OAAO,QAAS,MAAM,KAAG,MAGrC,CAAA"}
@@ -0,0 +1,64 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.strip0x = exports.ensure0x = exports.Time = exports.TronTransactionFailedError = exports.TronWebGetTransactionError = exports.TronWebError = exports.isArrayofBytes = void 0;
4
+ const isArrayofBytes = (data) => {
5
+ return (Buffer.isBuffer(data) ||
6
+ (Array.isArray(data) && data.every((num) => typeof num === 'number' && num >= 0 && num <= 255)));
7
+ };
8
+ exports.isArrayofBytes = isArrayofBytes;
9
+ class TronWebError extends Error {
10
+ constructor({ code, message, txid }) {
11
+ message = Buffer.from(message, 'hex').toString();
12
+ super(message);
13
+ this.code = code;
14
+ this.name = this.constructor.name;
15
+ this.hash = txid;
16
+ }
17
+ }
18
+ exports.TronWebError = TronWebError;
19
+ class TronWebGetTransactionError extends Error {
20
+ constructor({ Error }) {
21
+ super(Error);
22
+ this.name = this.constructor.name;
23
+ }
24
+ }
25
+ exports.TronWebGetTransactionError = TronWebGetTransactionError;
26
+ class TronTransactionFailedError extends Error {
27
+ constructor(receipt) {
28
+ super(`failed execution\n${JSON.stringify(receipt, null, 2)}`);
29
+ this.receipt = receipt;
30
+ this.name = this.constructor.name;
31
+ }
32
+ }
33
+ exports.TronTransactionFailedError = TronTransactionFailedError;
34
+ const MILLISECOND = 1;
35
+ const SECOND = 1000 * MILLISECOND;
36
+ const MINUTE = 60 * SECOND;
37
+ const HOUR = 60 * MINUTE;
38
+ const DAY = 24 * HOUR;
39
+ exports.Time = {
40
+ MILLISECOND,
41
+ SECOND,
42
+ MINUTE,
43
+ HOUR,
44
+ DAY,
45
+ get NOW() {
46
+ return Date.now();
47
+ },
48
+ sleep(ms) {
49
+ return new Promise((res) => setTimeout(res, ms));
50
+ },
51
+ };
52
+ const ensure0x = (str) => {
53
+ if (str.startsWith('0x'))
54
+ return str;
55
+ return '0x' + str;
56
+ };
57
+ exports.ensure0x = ensure0x;
58
+ const strip0x = (str) => {
59
+ if (str.startsWith('0x'))
60
+ return str.slice(2);
61
+ return str;
62
+ };
63
+ exports.strip0x = strip0x;
64
+ //# sourceMappingURL=utils.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"utils.js","sourceRoot":"","sources":["../../src/tron/utils.ts"],"names":[],"mappings":";;;AAEO,MAAM,cAAc,GAAG,CAAC,IAAS,EAAW,EAAE;IACjD,OAAO,CACH,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC;QACrB,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,OAAO,GAAG,KAAK,QAAQ,IAAI,GAAG,IAAI,CAAC,IAAI,GAAG,IAAI,GAAG,CAAC,CAAC,CAClG,CAAA;AACL,CAAC,CAAA;AALY,QAAA,cAAc,kBAK1B;AAED,MAAa,YAAa,SAAQ,KAAK;IAGnC,YAAY,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAiB;QAE9C,OAAO,GAAG,MAAM,CAAC,IAAI,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC,QAAQ,EAAE,CAAA;QAChD,KAAK,CAAC,OAAO,CAAC,CAAA;QACd,IAAI,CAAC,IAAI,GAAG,IAAI,CAAA;QAChB,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,WAAW,CAAC,IAAI,CAAA;QACjC,IAAI,CAAC,IAAI,GAAG,IAAI,CAAA;IACpB,CAAC;CACJ;AAXD,oCAWC;AAED,MAAa,0BAA2B,SAAQ,KAAK;IACjD,YAAY,EAAE,KAAK,EAAiB;QAChC,KAAK,CAAC,KAAK,CAAC,CAAA;QACZ,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,WAAW,CAAC,IAAI,CAAA;IACrC,CAAC;CACJ;AALD,gEAKC;AAED,MAAa,0BAA2B,SAAQ,KAAK;IACjD,YAAqB,OAA4B;QAC7C,KAAK,CAAC,qBAAqB,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC,CAAA;QAD7C,YAAO,GAAP,OAAO,CAAqB;QAE7C,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,WAAW,CAAC,IAAI,CAAA;IACrC,CAAC;CACJ;AALD,gEAKC;AAGD,MAAM,WAAW,GAAG,CAAC,CAAA;AACrB,MAAM,MAAM,GAAG,IAAI,GAAG,WAAW,CAAA;AACjC,MAAM,MAAM,GAAG,EAAE,GAAG,MAAM,CAAA;AAC1B,MAAM,IAAI,GAAG,EAAE,GAAG,MAAM,CAAA;AACxB,MAAM,GAAG,GAAG,EAAE,GAAG,IAAI,CAAA;AAER,QAAA,IAAI,GAAG;IAChB,WAAW;IACX,MAAM;IACN,MAAM;IACN,IAAI;IACJ,GAAG;IACH,IAAI,GAAG;QACH,OAAO,IAAI,CAAC,GAAG,EAAE,CAAA;IACrB,CAAC;IACD,KAAK,CAAC,EAAU;QACZ,OAAO,IAAI,OAAO,CAAO,CAAC,GAAG,EAAE,EAAE,CAAC,UAAU,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,CAAA;IAC1D,CAAC;CACK,CAAA;AAEH,MAAM,QAAQ,GAAG,CAAC,GAAW,EAAU,EAAE;IAC5C,IAAI,GAAG,CAAC,UAAU,CAAC,IAAI,CAAC;QAAE,OAAO,GAAG,CAAA;IACpC,OAAO,IAAI,GAAG,GAAG,CAAA;AACrB,CAAC,CAAA;AAHY,QAAA,QAAQ,YAGpB;AAEM,MAAM,OAAO,GAAG,CAAC,GAAW,EAAU,EAAE;IAC3C,IAAI,GAAG,CAAC,UAAU,CAAC,IAAI,CAAC;QAAE,OAAO,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAA;IAC7C,OAAO,GAAG,CAAA;AACd,CAAC,CAAA;AAHY,QAAA,OAAO,WAGnB"}
@@ -0,0 +1,34 @@
1
+ import { SolcConfig } from 'hardhat/types/config';
2
+ import 'hardhat/types/runtime';
3
+ import { TronSolcConfig } from './types';
4
+ declare module 'hardhat/types/runtime' {
5
+ interface Network {
6
+ tron?: boolean;
7
+ }
8
+ }
9
+ declare module 'hardhat/types/config' {
10
+ interface HttpNetworkConfig {
11
+ tron?: boolean;
12
+ }
13
+ interface HardhatNetworkConfig {
14
+ tron?: boolean;
15
+ }
16
+ interface HardhatNetworkUserConfig {
17
+ tron?: boolean;
18
+ }
19
+ interface HardhatUserConfig {
20
+ tronSolc?: Partial<Omit<TronSolcConfig, 'filter' | 'versionRemapping'> & {
21
+ filter: string[];
22
+ versionRemapping: [string, string][];
23
+ }>;
24
+ }
25
+ interface HardhatConfig {
26
+ tronSolc: TronSolcConfig;
27
+ }
28
+ }
29
+ declare module 'hardhat/types/builtin-tasks/compile' {
30
+ interface CompilationJob {
31
+ solidityConfig: SolcConfig;
32
+ }
33
+ }
34
+ //# sourceMappingURL=type-extensions.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"type-extensions.d.ts","sourceRoot":"","sources":["../src/type-extensions.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAA;AACjD,OAAO,uBAAuB,CAAA;AAE9B,OAAO,EAAE,cAAc,EAAE,MAAM,SAAS,CAAA;AAExC,OAAO,QAAQ,uBAAuB,CAAC;IACnC,UAAU,OAAO;QACb,IAAI,CAAC,EAAE,OAAO,CAAA;KACjB;CACJ;AAED,OAAO,QAAQ,sBAAsB,CAAC;IAClC,UAAU,iBAAiB;QACvB,IAAI,CAAC,EAAE,OAAO,CAAA;KACjB;IAED,UAAU,oBAAoB;QAC1B,IAAI,CAAC,EAAE,OAAO,CAAA;KACjB;IAED,UAAU,wBAAwB;QAC9B,IAAI,CAAC,EAAE,OAAO,CAAA;KACjB;IAED,UAAiB,iBAAiB;QAC9B,QAAQ,CAAC,EAAE,OAAO,CACd,IAAI,CAAC,cAAc,EAAE,QAAQ,GAAG,kBAAkB,CAAC,GAAG;YAClD,MAAM,EAAE,MAAM,EAAE,CAAA;YAChB,gBAAgB,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,EAAE,CAAA;SACvC,CACJ,CAAA;KACJ;IAED,UAAiB,aAAa;QAC1B,QAAQ,EAAE,cAAc,CAAA;KAC3B;CACJ;AAED,OAAO,QAAQ,qCAAqC,CAAC;IACjD,UAAU,cAAc;QACpB,cAAc,EAAE,UAAU,CAAA;KAC7B;CACJ"}
@@ -0,0 +1,4 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ require("hardhat/types/runtime");
4
+ //# sourceMappingURL=type-extensions.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"type-extensions.js","sourceRoot":"","sources":["../src/type-extensions.ts"],"names":[],"mappings":";;AACA,iCAA8B"}
@@ -0,0 +1,30 @@
1
+ import { HardhatRuntimeEnvironment } from 'hardhat/types';
2
+ import { TronSolcVersion } from './constants';
3
+ export interface TronSolcCompilers {
4
+ version: TronSolcVersion | string;
5
+ settings?: {
6
+ compilerPath?: string;
7
+ optimizer?: {
8
+ enabled?: boolean;
9
+ [key: string]: any;
10
+ };
11
+ metadata?: {
12
+ bytecodeHash?: 'none';
13
+ };
14
+ };
15
+ }
16
+ export interface TronSolcConfig {
17
+ enable: boolean;
18
+ compilers: TronSolcCompilers[];
19
+ filter: Set<string>;
20
+ versionRemapping: Map<string, string>;
21
+ }
22
+ export interface CompilerOutputSelection {
23
+ [file: string]: {
24
+ [contract: string]: string[];
25
+ };
26
+ }
27
+ export type MUTABLE_HRE = {
28
+ -readonly [K in keyof HardhatRuntimeEnvironment]: HardhatRuntimeEnvironment[K];
29
+ };
30
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,yBAAyB,EAAE,MAAM,eAAe,CAAA;AAEzD,OAAO,EAAE,eAAe,EAAE,MAAM,aAAa,CAAA;AAC7C,MAAM,WAAW,iBAAiB;IAC9B,OAAO,EAAE,eAAe,GAAG,MAAM,CAAA;IACjC,QAAQ,CAAC,EAAE;QACP,YAAY,CAAC,EAAE,MAAM,CAAA;QACrB,SAAS,CAAC,EAAE;YACR,OAAO,CAAC,EAAE,OAAO,CAAA;YACjB,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAA;SACrB,CAAA;QAED,QAAQ,CAAC,EAAE;YACP,YAAY,CAAC,EAAE,MAAM,CAAA;SACxB,CAAA;KACJ,CAAA;CACJ;AAED,MAAM,WAAW,cAAc;IAC3B,MAAM,EAAE,OAAO,CAAA;IACf,SAAS,EAAE,iBAAiB,EAAE,CAAA;IAC9B,MAAM,EAAE,GAAG,CAAC,MAAM,CAAC,CAAA;IACnB,gBAAgB,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;CACxC;AAED,MAAM,WAAW,uBAAuB;IACpC,CAAC,IAAI,EAAE,MAAM,GAAG;QAAE,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,EAAE,CAAA;KAAE,CAAA;CACnD;AAED,MAAM,MAAM,WAAW,GAAG;IAAE,CAAC,UAAU,CAAC,IAAI,MAAM,yBAAyB,GAAG,yBAAyB,CAAC,CAAC,CAAC;CAAE,CAAA"}
package/dist/types.js ADDED
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":""}
@@ -0,0 +1,19 @@
1
+ import { Stats } from 'fs-extra';
2
+ import { Mutex } from 'hardhat/internal/vendor/await-semaphore';
3
+ import { HardhatPluginError } from 'hardhat/plugins';
4
+ import { SolcConfig } from 'hardhat/types';
5
+ import { TronSolcCompilers } from './types';
6
+ export declare class TronSolcPluginError extends HardhatPluginError {
7
+ constructor(message: string, parentError?: Error);
8
+ }
9
+ export declare const _mutex: Mutex;
10
+ export declare function updateCompilerConf(solcConfig: SolcConfig, tronConfig: TronSolcCompilers): void;
11
+ export declare const buildPaths: (artifactsPath: string, cachePath: string) => [string, string];
12
+ export declare const reversePaths: (artifactsPath: string, cachePath: string) => [string, string];
13
+ export declare const clearAndPrint: (message: string) => void;
14
+ export declare const fetchStats: (filePath: string) => Promise<Stats | undefined>;
15
+ export declare const bytesToKb: (bytes: number) => string;
16
+ export declare const getVersionComponents: (version: string) => number[];
17
+ export declare const validateTronSolcVersion: (version: string) => version is "0.4.24" | "0.4.25" | "0.5.4" | "0.5.8" | "0.5.10" | "0.5.12" | "0.5.13" | "0.5.14" | "0.5.15" | "0.5.16" | "0.5.17" | "0.5.18" | "0.6.0" | "0.6.2" | "0.6.8" | "0.6.12" | "0.6.13" | "0.7.0" | "0.7.6" | "0.7.7" | "0.8.0" | "0.8.6" | "0.8.7" | "0.8.11" | "0.8.18" | "0.8.20";
18
+ export declare const replaceSolidityVersion: (line: string, versionRemapping: Map<string, string>) => string;
19
+ //# sourceMappingURL=utils.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../src/utils.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,KAAK,EAAQ,MAAM,UAAU,CAAA;AACtC,OAAO,EAAE,KAAK,EAAE,MAAM,yCAAyC,CAAA;AAC/D,OAAO,EAAE,kBAAkB,EAAE,MAAM,iBAAiB,CAAA;AACpD,OAAO,EAAE,UAAU,EAAE,MAAM,eAAe,CAAA;AAG1C,OAAO,EAAE,iBAAiB,EAAE,MAAM,SAAS,CAAA;AAE3C,qBAAa,mBAAoB,SAAQ,kBAAkB;gBAC3C,OAAO,EAAE,MAAM,EAAE,WAAW,CAAC,EAAE,KAAK;CAGnD;AAED,eAAO,MAAM,MAAM,OAAc,CAAA;AAEjC,wBAAgB,kBAAkB,CAAC,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,iBAAiB,GAAG,IAAI,CAW9F;AAkBD,eAAO,MAAM,UAAU,kBAAmB,MAAM,aAAa,MAAM,KAAG,CAAC,MAAM,EAAE,MAAM,CAIpF,CAAA;AAED,eAAO,MAAM,YAAY,kBAAmB,MAAM,aAAa,MAAM,KAAG,CAAC,MAAM,EAAE,MAAM,CAItF,CAAA;AAED,eAAO,MAAM,aAAa,YAAa,MAAM,KAAG,IAI/C,CAAA;AAED,eAAO,MAAM,UAAU,aAAoB,MAAM,KAAG,QAAQ,KAAK,GAAG,SAAS,CAM5E,CAAA;AAED,eAAO,MAAM,SAAS,UAAW,MAAM,KAAG,MAAmC,CAAA;AAE7E,eAAO,MAAM,oBAAoB,YAAa,MAAM,KAAG,MAAM,EAG5D,CAAA;AAeD,eAAO,MAAM,uBAAuB,YAAa,MAAM,gSAYtD,CAAA;AAYD,eAAO,MAAM,sBAAsB,SAAU,MAAM,oBAAoB,IAAI,MAAM,EAAE,MAAM,CAAC,WAqBzF,CAAA"}