essential-eth 0.5.4 → 0.5.9

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 (98) hide show
  1. package/lib/cjs/classes/Contract.d.ts +10 -4
  2. package/lib/cjs/classes/Contract.js +15 -4
  3. package/lib/cjs/classes/utils/clean-block.d.ts +115 -0
  4. package/lib/cjs/classes/utils/clean-block.js +122 -9
  5. package/lib/cjs/classes/utils/clean-log.d.ts +9 -0
  6. package/lib/cjs/classes/utils/clean-log.js +37 -0
  7. package/lib/cjs/classes/utils/clean-transaction-receipt.d.ts +9 -0
  8. package/lib/cjs/classes/utils/clean-transaction-receipt.js +11 -16
  9. package/lib/cjs/classes/utils/clean-transaction.d.ts +9 -0
  10. package/lib/cjs/classes/utils/clean-transaction.js +10 -1
  11. package/lib/cjs/classes/utils/encode-decode-transaction.d.ts +12 -0
  12. package/lib/cjs/classes/utils/encode-decode-transaction.js +24 -0
  13. package/lib/cjs/classes/utils/fetchers.d.ts +31 -1
  14. package/lib/cjs/classes/utils/fetchers.js +30 -0
  15. package/lib/cjs/classes/utils/hex-to-decimal.d.ts +14 -1
  16. package/lib/cjs/classes/utils/hex-to-decimal.js +14 -1
  17. package/lib/cjs/classes/utils/prepare-transaction.d.ts +6 -0
  18. package/lib/cjs/classes/utils/prepare-transaction.js +45 -0
  19. package/lib/cjs/index.d.ts +10 -5
  20. package/lib/cjs/index.js +10 -2
  21. package/lib/cjs/logger/package-version.d.ts +1 -1
  22. package/lib/cjs/logger/package-version.js +1 -1
  23. package/lib/cjs/providers/BaseProvider.d.ts +282 -199
  24. package/lib/cjs/providers/BaseProvider.js +365 -214
  25. package/lib/cjs/providers/FallthroughProvider.d.ts +1 -2
  26. package/lib/cjs/providers/JsonRpcProvider.d.ts +6 -0
  27. package/lib/cjs/providers/JsonRpcProvider.js +6 -0
  28. package/lib/cjs/providers/utils/chains-info.d.ts +27 -0
  29. package/lib/cjs/providers/utils/chains-info.js +84 -3
  30. package/lib/cjs/shared/tiny-big/helpers.d.ts +16 -0
  31. package/lib/cjs/shared/tiny-big/helpers.js +27 -1
  32. package/lib/cjs/shared/tiny-big/tiny-big.d.ts +30 -4
  33. package/lib/cjs/shared/tiny-big/tiny-big.js +34 -4
  34. package/lib/cjs/types/Block.types.d.ts +11 -7
  35. package/lib/cjs/types/Filter.types.d.ts +16 -0
  36. package/lib/cjs/types/Filter.types.js +2 -0
  37. package/lib/cjs/types/Transaction.types.d.ts +33 -6
  38. package/lib/cjs/utils/bytes.d.ts +150 -33
  39. package/lib/cjs/utils/bytes.js +179 -32
  40. package/lib/cjs/utils/compute-address.d.ts +17 -0
  41. package/lib/cjs/utils/compute-address.js +33 -0
  42. package/lib/cjs/utils/compute-public-key.d.ts +18 -0
  43. package/lib/cjs/utils/compute-public-key.js +26 -0
  44. package/lib/cjs/utils/ether-to-gwei.d.ts +2 -1
  45. package/lib/cjs/utils/ether-to-gwei.js +2 -1
  46. package/lib/cjs/utils/ether-to-wei.d.ts +2 -1
  47. package/lib/cjs/utils/ether-to-wei.js +2 -1
  48. package/lib/cjs/utils/gwei-to-ether.d.ts +2 -1
  49. package/lib/cjs/utils/gwei-to-ether.js +2 -1
  50. package/lib/cjs/utils/hash-message.d.ts +3 -1
  51. package/lib/cjs/utils/hash-message.js +3 -1
  52. package/lib/cjs/utils/is-address.d.ts +2 -2
  53. package/lib/cjs/utils/is-address.js +2 -2
  54. package/lib/cjs/utils/keccak256.d.ts +15 -1
  55. package/lib/cjs/utils/keccak256.js +16 -2
  56. package/lib/cjs/utils/solidity-keccak256.d.ts +17 -7
  57. package/lib/cjs/utils/solidity-keccak256.js +27 -7
  58. package/lib/cjs/utils/split-signature.d.ts +24 -0
  59. package/lib/cjs/utils/split-signature.js +163 -0
  60. package/lib/cjs/utils/to-checksum-address.d.ts +2 -2
  61. package/lib/cjs/utils/to-checksum-address.js +2 -2
  62. package/lib/cjs/utils/to-utf8-bytes.d.ts +14 -0
  63. package/lib/cjs/utils/to-utf8-bytes.js +14 -0
  64. package/lib/cjs/utils/wei-to-ether.d.ts +2 -1
  65. package/lib/cjs/utils/wei-to-ether.js +14 -3
  66. package/lib/esm/classes/utils/clean-block.js +7 -8
  67. package/lib/esm/classes/utils/clean-log.d.ts +2 -0
  68. package/lib/esm/classes/utils/clean-log.js +26 -0
  69. package/lib/esm/classes/utils/clean-transaction-receipt.js +2 -16
  70. package/lib/esm/classes/utils/clean-transaction.js +1 -1
  71. package/lib/esm/classes/utils/fetchers.d.ts +1 -1
  72. package/lib/esm/classes/utils/prepare-transaction.d.ts +2 -0
  73. package/lib/esm/classes/utils/prepare-transaction.js +34 -0
  74. package/lib/esm/index.d.ts +10 -5
  75. package/lib/esm/index.js +7 -3
  76. package/lib/esm/logger/package-version.d.ts +1 -1
  77. package/lib/esm/logger/package-version.js +1 -1
  78. package/lib/esm/providers/BaseProvider.d.ts +7 -1
  79. package/lib/esm/providers/BaseProvider.js +67 -11
  80. package/lib/esm/providers/FallthroughProvider.d.ts +1 -2
  81. package/lib/esm/providers/utils/chains-info.d.ts +27 -0
  82. package/lib/esm/providers/utils/chains-info.js +84 -3
  83. package/lib/esm/shared/tiny-big/tiny-big.js +4 -0
  84. package/lib/esm/types/Block.types.d.ts +11 -7
  85. package/lib/esm/types/Filter.types.d.ts +12 -0
  86. package/lib/esm/types/Filter.types.js +1 -0
  87. package/lib/esm/types/Transaction.types.d.ts +31 -5
  88. package/lib/esm/utils/compute-address.d.ts +1 -0
  89. package/lib/esm/utils/compute-address.js +11 -0
  90. package/lib/esm/utils/compute-public-key.d.ts +2 -0
  91. package/lib/esm/utils/compute-public-key.js +6 -0
  92. package/lib/esm/utils/keccak256.d.ts +1 -1
  93. package/lib/esm/utils/keccak256.js +2 -2
  94. package/lib/esm/utils/split-signature.d.ts +2 -0
  95. package/lib/esm/utils/split-signature.js +126 -0
  96. package/lib/esm/utils/wei-to-ether.js +11 -2
  97. package/package.json +38 -11
  98. package/readme.md +1209 -335
@@ -1,7 +1,8 @@
1
1
  import { TinyBig } from '../shared/tiny-big/tiny-big';
2
2
  import { BlockResponse, BlockTag } from '../types/Block.types';
3
+ import { Filter, FilterByBlockHash } from '../types/Filter.types';
3
4
  import { Network } from '../types/Network.types';
4
- import { TransactionReceipt, TransactionResponse } from '../types/Transaction.types';
5
+ import { Log, TransactionReceipt, TransactionRequest, TransactionResponse } from '../types/Transaction.types';
5
6
  export declare abstract class BaseProvider {
6
7
  /**
7
8
  * ignore
@@ -17,254 +18,336 @@ export declare abstract class BaseProvider {
17
18
  */
18
19
  protected _post: (body: Record<string, unknown>) => Promise<any>;
19
20
  /**
20
- * @param rpcUrl The URL to your Eth node. Consider POKT or Infura
21
+ * @param rpcUrls The URL(s) to your Eth node(s). Consider POKT or Infura
22
+ * @example
23
+ * `https://free-eth-node.com/api/eth`
24
+ * @example
25
+ * `https://mainnet.infura.io/v3/YOUR-PROJECT-ID`
21
26
  */
22
27
  constructor(rpcUrls: string[]);
23
28
  /**
24
- * Returns the network this provider is connected to
29
+ * Gets information (name, chainId, and ensAddress when applicable) about the network the provider is connected to.
30
+ *
31
+ * * [Identical](/docs/api#isd) to [`ethers.provider.getNetwork`](https://docs.ethers.io/v5/api/providers/provider/#Provider-getNetwork) in ethers.js
32
+ * * [Similar](/docs/api#isd) to [`web3.eth.getChainId`](https://web3js.readthedocs.io/en/v1.7.3/web3-eth.html#getchainid) in web3.js, returns more than just the `chainId`
33
+ *
34
+ * @returns information about the network this provider is currently connected to
35
+ * @example
36
+ * ```javascript
37
+ * jsonRpcProvider('https://free-eth-node.com/api/eth').getNetwork();
38
+ * // { chainId: 1, name: 'eth', ensAddress: '0x00000000000C2E074eC69A0dFb2997BA6C7d2e1e' }
39
+ * ```
40
+ * @example
41
+ * ```javascript
42
+ * jsonRpcProvider('https://free-eth-node.com/api/MATIC').getNetwork();
43
+ * // { chainId: 137, name: 'MATIC', ensAddress: null }
44
+ * ```
25
45
  */
26
46
  getNetwork(): Promise<Network>;
27
47
  /**
28
- * * Similar to [`ethers.provider.getTransaction`](https://docs.ethers.io/v5/api/providers/provider/#Provider-getTransaction), some information not included
48
+ * Gets the number of the most recently mined block on the network the provider is connected to.
29
49
  *
30
- * @returns information about one transaction
50
+ * * [Identical](/docs/api#isd) to [`ethers.provider.getBlockNumber`](https://docs.ethers.io/v5/api/providers/provider/#Provider-getBlockNumber) in ethers.js
51
+ * * [Identical](/docs/api#isd) to [`web3.eth.getBlockNumber`](https://web3js.readthedocs.io/en/v1.7.3/web3-eth.html#getblocknumber) in web3.js
52
+ *
53
+ * @returns the number of the most recently mined block
31
54
  * @example
32
- * ```js
55
+ * ```javascript
56
+ * await provider.getBlockNumber();
57
+ * // 1053312
58
+ * ```
59
+ */
60
+ getBlockNumber(): Promise<number>;
61
+ /**
62
+ * Gets information about a specified transaction, even if it hasn't been mined yet.
63
+ *
64
+ * * [Similar](/docs/api#isd) to [`ethers.provider.getTransaction`](https://docs.ethers.io/v5/api/providers/provider/#Provider-getTransaction) in ethers.js, does not have `wait` method that waits until the transaction has been mined
65
+ * * [Similar](/docs/api#isd) to [`web3.eth.getTransaction`](https://web3js.readthedocs.io/en/v1.7.3/web3-eth.html#gettransaction) in web3.js, some information returned using different types
66
+ *
67
+ * @param transactionHash the hash of the transaction to get information about
68
+ * @returns information about the specified transaction
69
+ * @example
70
+ * ```javascript
33
71
  * await provider.getTransaction('0x9014ae6ef92464338355a79e5150e542ff9a83e2323318b21f40d6a3e65b4789');
34
- * {
35
- * accessList: [],
36
- * blockHash: '0x876810a013dbcd140f6fd6048c1dc33abbb901f1f96b394c2fa63aef3cb40b5d',
37
- * blockNumber: 14578286,
38
- * chainId: 1,
39
- * from: '0xdfD9dE5f6FA60BD70636c0900752E93a6144AEd4',
40
- * gas: Big {
41
- * s: 1,
42
- * e: 5,
43
- * c: [ 1, 1, 2, 1, 6, 3 ],
44
- * constructor: <ref *1> [Function: Big] {
45
- * DP: 20,
46
- * RM: 1,
47
- * NE: -7,
48
- * PE: 21,
49
- * strict: false,
50
- * roundDown: 0,
51
- * roundHalfUp: 1,
52
- * roundHalfEven: 2,
53
- * roundUp: 3,
54
- * Big: [Circular *1],
55
- * default: [Circular *1]
56
- * }
57
- * },
58
- * gasPrice: Big {
59
- * s: 1,
60
- * e: 10,
61
- * c: [
62
- * 4, 8, 5, 9, 2,
63
- * 4, 2, 6, 8, 5,
64
- * 8
65
- * ],
66
- * constructor: <ref *1> [Function: Big] {
67
- * DP: 20,
68
- * RM: 1,
69
- * NE: -7,
70
- * PE: 21,
71
- * strict: false,
72
- * roundDown: 0,
73
- * roundHalfUp: 1,
74
- * roundHalfEven: 2,
75
- * roundUp: 3,
76
- * Big: [Circular *1],
77
- * default: [Circular *1]
78
- * }
79
- * },
80
- * hash: '0x9014ae6ef92464338355a79e5150e542ff9a83e2323318b21f40d6a3e65b4789',
81
- * input: '0x83259f170000000000000000000000000000000000000000000000000000000000000080000000000000000000000000dfd9de5f6fa60bd70636c0900752e93a6144aed400000000000000000000000000000000000000000000000000000000000000c0000000000000000000000000000000000000000000000000000000000000024000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000003000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000009e99ad11a214fd016b19dc3648678c5944859ae292b21c24ca94f857836c4596f1950c82dd0c23dd621af4763edc2f66466e63c5df9de0c1107b1cd16bf460fe93e43fd308e3444bc79c3d88a4cb961dc8367ab6ad048867afc76d193bca99cf3a068864ed4a7df1dbf1d4c52238eced3e5e05644b4040fc2b3ccb8557b0e99fff6131305a0ea2b8061b90bd418db5bbdd2e92129f52d93f90531465e309c4caec5b85285822b6196398d36f16f511811b61bbda6461e80e29210cd303118bdcee8df6fa0505ffbe8642094fd2ba4dd458496fe3b459ac880bbf71877c713e969ccf5ed7efab8a84ebc07e3939901371ca427e1192e455a8f35a6a1d7ad09e1475dd1758b36fa631dab5d70e99316b23c4c43094188d360cd9c3457355904e07c00000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000162074a7047f',
82
- * maxFeePerGas: Big {
83
- * s: 1,
84
- * e: 10,
85
- * c: [
86
- * 6, 7, 6, 8, 1,
87
- * 2, 6, 1, 6, 1,
88
- * 8
89
- * ],
90
- * constructor: <ref *1> [Function: Big] {
91
- * DP: 20,
92
- * RM: 1,
93
- * NE: -7,
94
- * PE: 21,
95
- * strict: false,
96
- * roundDown: 0,
97
- * roundHalfUp: 1,
98
- * roundHalfEven: 2,
99
- * roundUp: 3,
100
- * Big: [Circular *1],
101
- * default: [Circular *1]
102
- * }
103
- * },
104
- * maxPriorityFeePerGas: Big {
105
- * s: 1,
106
- * e: 9,
107
- * c: [ 1, 5 ],
108
- * constructor: <ref *1> [Function: Big] {
109
- * DP: 20,
110
- * RM: 1,
111
- * NE: -7,
112
- * PE: 21,
113
- * strict: false,
114
- * roundDown: 0,
115
- * roundHalfUp: 1,
116
- * roundHalfEven: 2,
117
- * roundUp: 3,
118
- * Big: [Circular *1],
119
- * default: [Circular *1]
120
- * }
121
- * },
122
- * nonce: 129,
123
- * r: '0x59a7c15b12c18cd68d6c440963d959bff3e73831ffc938e75ecad07f7ee43fbc',
124
- * s: '0x1ebaf05f0d9273b16c2a7748b150a79d22533a8cd74552611cbe620fee3dcf1c',
125
- * to: '0x39B72d136ba3e4ceF35F48CD09587ffaB754DD8B',
126
- * transactionIndex: 29,
127
- * type: 2,
128
- * v: 0,
129
- * value: Big {
130
- * s: 1,
131
- * e: 0,
132
- * c: [ 0 ],
133
- * constructor: <ref *1> [Function: Big] {
134
- * DP: 20,
135
- * RM: 1,
136
- * NE: -7,
137
- * PE: 21,
138
- * strict: false,
139
- * roundDown: 0,
140
- * roundHalfUp: 1,
141
- * roundHalfEven: 2,
142
- * roundUp: 3,
143
- * Big: [Circular *1],
144
- * default: [Circular *1]
145
- * }
146
- * },
147
- * confirmations: 1210
148
- * }
72
+ * // {
73
+ * // accessList: [],
74
+ * // blockHash: "0x876810a013dbcd140f6fd6048c1dc33abbb901f1f96b394c2fa63aef3cb40b5d",
75
+ * // blockNumber: 14578286,
76
+ * // chainId: 1,
77
+ * // from: "0xdfD9dE5f6FA60BD70636c0900752E93a6144AEd4",
78
+ * // gas: { TinyBig: 112163 },
79
+ * // gasPrice: { TinyBig: 48592426858 },
80
+ * // hash: "0x9014ae6ef92464338355a79e5150e542ff9a83e2323318b21f40d6a3e65b4789",
81
+ * // input: "0x83259f17000000000000000000000000000000000000000000...",
82
+ * // maxFeePerGas: { TinyBig: 67681261618 },
83
+ * // maxPriorityFeePerGas: { TinyBig: 1500000000 },
84
+ * // nonce: { TinyBig: 129 },
85
+ * // r: "0x59a7c15b12c18cd68d6c440963d959bff3e73831ffc938e75ecad07f7ee43fbc",
86
+ * // s: "0x1ebaf05f0d9273b16c2a7748b150a79d22533a8cd74552611cbe620fee3dcf1c",
87
+ * // to: "0x39B72d136ba3e4ceF35F48CD09587ffaB754DD8B",
88
+ * // transactionIndex: 29,
89
+ * // type: 2,
90
+ * // v: 0,
91
+ * // value: { TinyBig: 0 },
92
+ * // confirmations: 298140,
93
+ * // }
149
94
  * ```
150
95
  */
151
96
  getTransaction(transactionHash: string): Promise<TransactionResponse>;
152
97
  /**
153
- * Gives information about a transaction that has already been mined. Includes additional information beyond what's provided by `getTransaction()`
98
+ * Gives information about a transaction that has already been mined. Includes additional information beyond what's provided by [`getTransaction`](/docs/api/modules#gettransaction).
154
99
  *
155
- * * Similar to [`ethers.provider.getTransactionReceipt`](https://docs.ethers.io/v5/api/providers/provider/#Provider-getTransactionReceipt), some information not included
100
+ * * [Identical](/docs/api#isd) to [`ethers.provider.getTransactionReceipt`](https://docs.ethers.io/v5/api/providers/provider/#Provider-getTransactionReceipt) in ethers.js
101
+ * * [Similar](/docs/api#isd) to [`web3.eth.getTransactionReceipt`](https://web3js.readthedocs.io/en/v1.7.3/web3-eth.html#gettransactionreceipt) in web3.js, some information returned using different types
156
102
  *
157
103
  * @param transactionHash the hash of the transaction to get information about
158
- *
104
+ * @returns information about the specified transaction that has already been mined
105
+ * @example
106
+ * ```javascript
107
+ * await provider.getTransactionReceipt('0x9014ae6ef92464338355a79e5150e542ff9a83e2323318b21f40d6a3e65b4789');
108
+ * // {
109
+ * // blockHash: "0x876810a013dbcd140f6fd6048c1dc33abbb901f1f96b394c2fa63aef3cb40b5d",
110
+ * // blockNumber: 14578286,
111
+ * // contractAddress: null,
112
+ * // cumulativeGasUsed: { TinyBig: 3067973 },
113
+ * // effectiveGasPrice: { TinyBig: 48592426858 },
114
+ * // from: "0xdfD9dE5f6FA60BD70636c0900752E93a6144AEd4",
115
+ * // gasUsed: { TinyBig: 112163 },
116
+ * // logs: [
117
+ * // {
118
+ * // address: "0x0eDF9bc41Bbc1354c70e2107F80C42caE7FBBcA8",
119
+ * // blockHash: "0x876810a013dbcd140f6fd6048c1dc33abbb901f1f96b394c2fa63aef3cb40b5d",
120
+ * // blockNumber: 14578286,
121
+ * // data: "0x0000000000000000000000000000000000000000000003a12ec797b5484968c1",
122
+ * // logIndex: 42,
123
+ * // topics: [
124
+ * // "0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef",
125
+ * // "0x00000000000000000000000039b72d136ba3e4cef35f48cd09587ffab754dd8b",
126
+ * // "0x000000000000000000000000dfd9de5f6fa60bd70636c0900752e93a6144aed4",
127
+ * // ],
128
+ * // transactionHash: "0x9014ae6ef92464338355a79e5150e542ff9a83e2323318b21f40d6a3e65b4789",
129
+ * // transactionIndex: 29,
130
+ * // },
131
+ * // {
132
+ * // address: "0x39B72d136ba3e4ceF35F48CD09587ffaB754DD8B",
133
+ * // blockHash: "0x876810a013dbcd140f6fd6048c1dc33abbb901f1f96b394c2fa63aef3cb40b5d",
134
+ * // blockNumber: 14578286,
135
+ * // data: "0x0000000000000000000000000000000000000000000003a12ec797b5484968c1",
136
+ * // logIndex: 43,
137
+ * // topics: [
138
+ * // "0x34fcbac0073d7c3d388e51312faf357774904998eeb8fca628b9e6f65ee1cbf7",
139
+ * // "0x000000000000000000000000dfd9de5f6fa60bd70636c0900752e93a6144aed4",
140
+ * // "0x0000000000000000000000000000000000000000000000000000000000000003",
141
+ * // ],
142
+ * // transactionHash: "0x9014ae6ef92464338355a79e5150e542ff9a83e2323318b21f40d6a3e65b4789",
143
+ * // transactionIndex: 29,
144
+ * // },
145
+ * // ],
146
+ * // logsBloom: "0x00000000000000000000000000000...",
147
+ * // status: 1,
148
+ * // to: "0x39B72d136ba3e4ceF35F48CD09587ffaB754DD8B",
149
+ * // transactionHash: "0x9014ae6ef92464338355a79e5150e542ff9a83e2323318b21f40d6a3e65b4789",
150
+ * // transactionIndex: 29,
151
+ * // type: 2,
152
+ * // byzantium: true,
153
+ * // confirmations: 298171,
154
+ * // }
155
+ * ```
159
156
  */
160
157
  getTransactionReceipt(transactionHash: string): Promise<TransactionReceipt>;
161
158
  /**
162
- * Returns the transaction count from genesis up to specified blockTag
159
+ * Returns the number of sent transactions by an address, from genesis (or as far back as a provider looks) up to specified block.
163
160
  *
164
- * * Same as `ethers.provider.getTransactionCount`
165
- * * Same as `web3.eth.getTransactionCount`
161
+ * * [Identical](/docs/api#isd) to [`ethers.provider.getTransactionCount`](https://docs.ethers.io/v5/api/providers/provider/#Provider-getTransactionCount) in ethers.js
162
+ * * [Identical](/docs/api#isd) to [`web3.eth.getTransactionCount`](https://web3js.readthedocs.io/en/v1.7.3/web3-eth.html#gettransactioncount) in web3.js
166
163
  *
164
+ * @param address the address to count number of sent transactions
165
+ * @param blockTag the block to count transactions up to, inclusive
166
+ * @returns the number of transactions sent by the specified address
167
167
  * @example
168
- * ```js
169
- * const address = '0x71660c4005ba85c37ccec55d0c4493e66fe775d3';
170
- * await provider
171
- * .getTransactionCount(address, 'latest')
168
+ * ```javascript
169
+ * await provider.getTransactionCount('0x71660c4005ba85c37ccec55d0c4493e66fe775d3');
172
170
  * // 1060000
173
171
  * ```
174
- *
175
172
  * @example
176
- * ```js
177
- * await provider
178
- * .getTransactionCount(address)
179
- * // 1053312
173
+ * ```javascript
174
+ * await provider.getTransactionCount('0x71660c4005ba85c37ccec55d0c4493e66fe775d3', 'latest');
175
+ * // 1060000
180
176
  * ```
181
- *
182
177
  * @example
183
- * ```js
184
- * await provider
185
- * .getTransactionCount(address, 14649390)
178
+ * ```javascript
179
+ * await provider.getTransactionCount('0x71660c4005ba85c37ccec55d0c4493e66fe775d3', 14649390);
186
180
  * // 1053312
187
181
  * ```
188
182
  */
189
183
  getTransactionCount(address: string, blockTag?: BlockTag): Promise<number>;
190
184
  /**
191
- * Gets information about a certain block.
192
- * Same as `web3.eth.getBlock` and `ethers.providers.getBlock`
185
+ * Gets information about a certain block, optionally with full transaction objects.
193
186
  *
194
- * @param timeFrame The number, hash, or text-based description ('latest', 'earliest', or 'pending') of the block to collect information on.
187
+ * * [Similar](/docs/api#isd) to [`ethers.provider.getBlock`](https://docs.ethers.io/v5/api/providers/provider/#Provider-getLogs) in ethers.js, includes some additional information. Can also return block with full transaction objects, similar to [`ethers.providers.getBlockWithTransactions`]
188
+ * * [Identical](/docs/api#isd) to [`web3.eth.getBlock`](https://web3js.readthedocs.io/en/v1.7.3/web3-eth.html#getpastlogs) in web3.js
195
189
  *
190
+ * @param timeFrame The number, hash, or text-based description ('latest', 'earliest', or 'pending') of the block to collect information on.
196
191
  * @param returnTransactionObjects Whether to also return data about the transactions on the block.
197
- *
198
192
  * @returns A BlockResponse object with information about the specified block
193
+ * @example
194
+ * ```javascript
195
+ * await provider.getBlock(14879862);
196
+ * // {
197
+ * // baseFeePerGas: { TinyBig: 39095728776 },
198
+ * // difficulty: { TinyBig: 14321294455359973 },
199
+ * // extraData: "0x486976656f6e2073672d6865617679",
200
+ * // gasLimit: { TinyBig: 29970620 },
201
+ * // gasUsed: { TinyBig: 20951384 },
202
+ * // hash: "0x563b458ec3c4f87393b53f70bdddc0058497109b784d8cacd9247ddf267049ab",
203
+ * // logsBloom:
204
+ * // "0x9f38794fe80b521794df6efad8b0d2e9582f9ec3959a3f9384bda0fa371cfa5fac5af9d515c6bdf1ec325f5b5f7ebdd6a3a9fae17b38a86d4dc4b0971afc68d8086640550f4c156e6f923f4a1bb94fb0bed6cdcc474c5c64bfeff7a4a906f72b9a7b94004ee58efc53d63ac66961acd3a431b2d896cc9fd75f6072960bced45f770587caf130f57504decfcb63c6ca8fbc5bdbd749edd5a99a7375d2b81872289adb775fb3c928259f4be39c6d3f4d5b6217822979bb88c1f1fb62429b1b6d41cf4e3f77f9e1db3f5723108f1e5b1255dd734ad8cdb11e7ea22487c788e67c83777b6f395e504ca59c64f52245ee6de3804cf809e5caa4f0ea6a9aa9eb6ed801",
205
+ * // miner: "0x1aD91ee08f21bE3dE0BA2ba6918E714dA6B45836",
206
+ * // mixHash: "0x73cc9419bfb89c9d41c3a8c34ce56b5ebe468bdcf870258d2e77262275d580ec",
207
+ * // nonce: "0x976f3f5d596ffb08",
208
+ * // number: 14879862,
209
+ * // parentHash: "0x95986ae14a71face8d9a6a379edd875b2e8bc73e4de0d9d460e7752bddb0f579",
210
+ * // receiptsRoot: "0x8e6ba2fd9bee602b653dae6e3132f16538c2c5df24f1df8c000392053f73defa",
211
+ * // sha3Uncles: "0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347",
212
+ * // size: { TinyBig: 134483 },
213
+ * // stateRoot: "0xbf2bb67bd1c741f3d00904b8451d7c2cf4e3a2726f5a5884792ede2074747b85",
214
+ * // timestamp: { TinyBig: 1654016186 },
215
+ * // totalDifficulty: { TinyBig: 50478104614257705213748 },
216
+ * // transactions: [
217
+ * // "0xb3326a9149809603a2c28545e50e4f7d16e194bf5ee9764e0544603854c4a8d2",
218
+ * // "0x8b42095f8d335404a4896b2817b8e5e3d86a5a87cb434a8eec295d5280a7f48e",
219
+ * // "0x882f78fcb73f0f7ad0700bb0424a8b4beb366aaa93b88a3562c49a8d0ce4dcff",
220
+ * // ...
221
+ * // ],
222
+ * // transactionsRoot: "0x5934902f3dcc263ec34f24318179bf6301f53f4834685792066026f3a4849d72",
223
+ * // uncles: [],
224
+ * // }
225
+ * ```
226
+ */
227
+ getBlock(timeFrame?: BlockTag, returnTransactionObjects?: boolean): Promise<BlockResponse>;
228
+ /**
229
+ * Gives an estimate of the current gas price in wei.
230
+ *
231
+ * * [Similar](/docs/api#isd) to [`ethers.provider.getGasPrice`](https://docs.ethers.io/v5/api/providers/provider/#Provider-getGasPrice) in ethers.js, does not have a parameter specifying what unit you'd like to return. See also [`weiToEther`](/docs/api/modules#weitoether) and [`etherToGwei`](/docs/api/modules#ethertogwei)
232
+ * * [Identical](/docs/api#isd) to [`web3.eth.getGasPrice`](https://web3js.readthedocs.io/en/v1.7.3/web3-eth.html#getgasprice) in web3.js, returns a number (TinyBig) instead of a string
199
233
  *
234
+ * @returns an estimate of the current gas price in wei
200
235
  * @example
201
- * ```js
202
- * await provider.getBlock(14645431);
236
+ * ```javascript
237
+ * await provider.getGasPrice();
238
+ * // 52493941856
203
239
  * ```
240
+ */
241
+ getGasPrice(): Promise<TinyBig>;
242
+ /**
243
+ * Returns the balance of the account in wei.
244
+ *
245
+ * * [Identical](/docs/api#isd) to [`ethers.provider.getBalance`](https://docs.ethers.io/v5/api/providers/provider/#Provider-getBalance) in ethers.js
246
+ * * [Identical](/docs/api#isd) to [`web3.eth.getBalance`](https://web3js.readthedocs.io/en/v1.7.3/web3-eth.html#getbalance) in web3.js, returns a number (TinyBig) instead of a string
204
247
  *
248
+ * @param address the address to check the balance of
249
+ * @param blockTag the block to check the specified address' balance on
250
+ * @returns the balance of the network's native token for the specified address on the specified block
205
251
  * @example
206
- * ```js
207
- * await provider.getBlock('0x3e5cea9c2be7e0ab4b0aa04c24dafddc37571db2d2d345caf7f88b3366ece0cf');
252
+ * ```javascript
253
+ * await provider.getBalance('0x7cB57B5A97eAbe94205C07890BE4c1aD31E486A8');
254
+ * // 28798127851528138
208
255
  * ```
256
+ */
257
+ getBalance(address: string, blockTag?: BlockTag): Promise<TinyBig>;
258
+ /**
259
+ * Gets the code of a contract on a specified block.
260
+ *
261
+ * * [Identical](/docs/api#isd) to [`ethers.provider.getCode`](https://docs.ethers.io/v5/api/providers/provider/#Provider-getCode) in ethers.js
262
+ * * [Identical](/docs/api#isd) to [`web3.eth.getCode`](https://web3js.readthedocs.io/en/v1.7.3/web3-eth.html#getcode) in web3.js
209
263
  *
264
+ * @param address the contract address to get the contract code from
265
+ * @param blockTag the block height to search for the contract code from. Contract code can change, so this allows for checking a specific block
266
+ * @returns the contract creation code for the specified address at the specified block height
210
267
  * @example
211
- * ```js
212
- * await provider.getBlock('latest');
213
- * {
214
- * number: 4232826,
215
- * hash: '0x93211a1cd17e154b183565ec685254a03f844a8e34824a46ce1bdd6753dcb669',
216
- * parentHash: '0x1b32bfcba1bb2a57f56e166a3bb06875a1978992999dfc8828397b4c1526f472',
217
- * sha3Uncles: '0x0fb399c67bb5a071ec8a22549223215ab76b7d4009941c9c37aa3c3936010463',
218
- * logsBloom: '0x00000000000000000000101000000000020000000000000000000000000000000000400000010000000000000000000000000000010000000008800000000800000000200000000000000000000000000000000000000000000002000000000000000000000000000040000000000040000000000000000000000000000000000000000000000001000000000004000000000010000000000000000020000000000000000200100020000000000000000080000000000080001000000000000000000001040000000000000000008000000020010100000000200000100000000000000000000000002000000080000000020400000000002000200000000000',
219
- * transactionsRoot: '0xc43b3f13e1fe810e34d3a26ffe465b72c7063a5c70a02de2c78e91e4d10bd9fb',
220
- * stateRoot: '0x04d7bc816537ea7ef3a16e76c9879d29f34f99d4154273c2e98e012a31bad745',
221
- * receiptsRoot: '0x89c6f781ceac0bd49c4d9aa9115df4a5d4dd0e0220ff7668012f15bc04222c6b',
222
- * miner: '0x31fe561eb2c628cD32Ec52573D7c4b7E4C278Bfa',
223
- * difficulty: '1300907486001755331049',
224
- * totalDifficulty: '5989929395521171616186006183',
225
- * extraData: '0xce018c495249532d62613031656132',
226
- * size: 5416,
227
- * gasLimit: 6800000,
228
- * gasUsed: 202955,
229
- * timestamp: 1649884910,
230
- * transactions: [
231
- * '0x6b34a59c7b9aead24fa6dad782f8a3ad84ed4a23ee09bcbf0bcf880840fbbe20',
232
- * '0x9a3851ca24d5336c6a0d48aba2c4b4769d7a672c9b01729c5eb9924efd1b19a7',
233
- * '0xc3ed3d198b62f2f3427ebfa3bbd0fcada4e3c0c189e4464e7eeceb403c75981e'
234
- * ],
235
- * uncles: [
236
- * '0x0c567c054e98153f10d651fbbc018891c1dd9d62a9ffd998e87678803e95b6ed',
237
- * '0xb7d69389dbfb057c6fcb4bc0582d46a2ba01170703f0dadf8cd1462b83e88753',
238
- * '0xd5f74ccd0ad4c58b3161e8c2c507c264231e5f28925061b809c02e5e4bb6db28'
239
- * ],
240
- * minimumGasPrice: '0x387ee40',
241
- * bitcoinMergedMiningHeader: '0x04000020e8567ed3d2480e15a1dd1b4335e4732ae343c037e4fd03000000000000000000ed10a8340d163d3e813bdd430f902f4e5a56828dc62313b2e23797c0be6b8516eb3e576297d8091735884f42',
242
- * bitcoinMergedMiningCoinbaseTransaction: '0x0000000000000140e910128fda7bac502dc5e0573bbaf12de8e2524f70c22f7bd160dedcb19a2521002b6a2952534b424c4f434b3ae493303f597fa368c0ccc4f8aceabf1c315bb7c9a07605c073a89f260040967aace6a7d9',
243
- * bitcoinMergedMiningMerkleProof: '0xdf63a3d7eb6fbcfb301311faa46e9a15b0408bb1a04e284daee86c273c1dfd65ede23f3170f806e9e0f4cef7ba6b56aa37470d9c23f96ec8e43d08b58645919c5e10bcb892897a731f8f9ce79c72dc0e390896bcd6c67bb38c0bdb72982b6cf05519968d76673572c3f3ef3a08b0ddb464863f1788f7cdbaad3fe44a8a8af576d430ac282fe28852c16df198ca96cc5f71a50695912efe1a836e8442be69e31b6d6f973da2818bce9a3a1c2d9be0671aee9a7776e398d6a03d1e178e20d84646004a3d03c0501334e629d9146aa6a01316dcbaa289df6e6c5e3090cadaddff22699cfc7ff09512fc0d65c5062f17c98561ce3c9510de210d9d654cf99f8d756ff37c9fa21e7122ee8cadb923341690845d572921425f2bd7e044558b7e07983ac4df28928028b0c13c3624dc7a965af8091b0cecc845bf7da5308c03b2c97d607f6706a599f802025894435f1d76ea4e67cc2fc4e1559f1206f559a24633de0f',
244
- * hashForMergedMining: '0xe493303f597fa368c0ccc4f8aceabf1c315bb7c9a07605c073a89f260040967a',
245
- * paidFees: '0xc0744dcb7a0',
246
- * cumulativeDifficulty: '0x1190930db285269e582'
247
- * }
248
- *```
268
+ * ```javascript
269
+ * await jsonRpcProvider().getCode('0xaC6095720221C79C6E7C638d260A2eFBC5D8d880', 'latest');
270
+ * // '0x608060405234801561001057600080fd5b506004361061...'
271
+ * ```
249
272
  */
250
- getBlock(timeFrame?: BlockTag, returnTransactionObjects?: boolean): Promise<BlockResponse>;
273
+ getCode(address: string, blockTag?: BlockTag): Promise<string>;
251
274
  /**
252
- * Returns the current gas price in wei as TinyBig
253
- * Same as `ethers.provider.getGasPrice`
275
+ * Returns an estimate of the amount of gas that would be required to submit transaction to the network.
276
+ * An estimate may not be accurate since there could be another transaction on the network that was not accounted for.
277
+ *
278
+ * * [Identical](/docs/api#isd) to [`ethers.provider.estimateGas`](https://docs.ethers.io/v5/api/providers/provider/#Provider-estimateGas) in ethers.js
279
+ * * [Identical](/docs/api#isd) to [`web3.eth.estimateGas`](https://web3js.readthedocs.io/en/v1.7.3/web3-eth.html#estimateGas) in web3.js
280
+ *
281
+ * @param transaction the transaction to check the estimated gas cost for
282
+ * @returns the estimated amount of gas charged for submitting the specified transaction to the blockchain
283
+ * @example
284
+ * ```javascript
285
+ * await provider.estimateGas({
286
+ * // Wrapped ETH address
287
+ * to: "0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2",
288
+ * data: "0xd0e30db0",
289
+ * value: etherToWei('1.0').toHexString(),
290
+ * });
291
+ * // { TinyBig: "27938" }
292
+ * ```
254
293
  */
255
- getGasPrice(): Promise<TinyBig>;
294
+ estimateGas(transaction: TransactionRequest): Promise<TinyBig>;
256
295
  /**
257
- * Returns the balance of the account in wei as TinyBig
258
- * * Same as [`ethers.provider.getBalance`](https://docs.ethers.io/v5/api/providers/provider/#Provider-getBalance)
259
- * * Same as `web3.eth.getBalance`
296
+ * Returns transaction receipt event logs that match a specified filter.
297
+ * May return `[]` if parameters are too broad, even if logs exist.
260
298
  *
299
+ * * [Identical](/docs/api#isd) to [`ethers.provider.getLogs`](https://docs.ethers.io/v5/api/providers/provider/#Provider-getLogs) in ethers.js
300
+ * * [Identical](/docs/api#isd) to [`web3.eth.getPastLogs`](https://web3js.readthedocs.io/en/v1.7.3/web3-eth.html#getpastlogs) in web3.js
301
+ *
302
+ * @param filter parameters to filter the logs by
303
+ * @returns an array of logs matching the specified filter
261
304
  * @example
262
- * ```js
263
- * await provider
264
- * .getBalance('0x7cB57B5A97eAbe94205C07890BE4c1aD31E486A8')
265
- * .then((balance) => console.log(balance.toString()));
266
- * // "28798127851528138"
305
+ * ```javascript
306
+ * provider.getLogs({
307
+ * address: "0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2",
308
+ * topics: [
309
+ * "0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef",
310
+ * "0x00000000000000000000000021b8065d10f73ee2e260e5b47d3344d3ced7596e",
311
+ * ],
312
+ * fromBlock: 14825027,
313
+ * toBlock: 14825039,
314
+ * });
315
+ *
316
+ * [
317
+ * {
318
+ * address: '0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2',
319
+ * blockHash: '0x8e0dfac2f704851960f866c8708b3bef2f66c0fee0329cf25ff0261b264ca6bc',
320
+ * blockNumber: 14825029,
321
+ * data: '0x000000000000000000000000000000000000000000000000005f862ee352a38a',
322
+ * logIndex: 384,
323
+ * removed: false,
324
+ * topics: [
325
+ * '0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef',
326
+ * '0x00000000000000000000000021b8065d10f73ee2e260e5b47d3344d3ced7596e',
327
+ * '0x00000000000000000000000068b3465833fb72a70ecdf485e0e4c7bd8665fc45'
328
+ * ],
329
+ * transactionHash: '0xbd49031be16f8fd1775f4e0fe79b408ffd8ae9c65b2827ee47e3238e3f51f4c0',
330
+ * transactionIndex: 226
331
+ * }
332
+ * ]
267
333
  * ```
268
334
  */
269
- getBalance(address: string, blockTag?: BlockTag): Promise<TinyBig>;
335
+ getLogs(filter: Filter | FilterByBlockHash): Promise<Array<Log>>;
336
+ /**
337
+ * Returns the result of adding a transaction to the blockchain without actually adding that transaction to the blockchain.
338
+ * Does not require any ether as gas.
339
+ *
340
+ * * [Identical](/docs/api#isd) to [`ethers.provider.call`](https://docs.ethers.io/v5/api/providers/provider/#Provider-call) in ethers.js
341
+ * * [Identical](/docs/api#isd) to [`web3.eth.call`](https://web3js.readthedocs.io/en/v1.7.3/web3-eth.html#call) in web3.js
342
+ *
343
+ * @param transaction the transaction object to, in theory, execute. Doesn't actually get added to the blockchain.
344
+ * @param blockTag the block to execute this transaction on
345
+ * @returns the result of executing the transaction on the specified block
346
+ * @example
347
+ * ```javascript
348
+ * await provider.call({ to: "0x6b175474e89094c44da98b954eedeac495271d0f", data: "0x70a082310000000000000000000000006E0d01A76C3Cf4288372a29124A26D4353EE51BE" });
349
+ * // '0x0000000000000000000000000000000000000000000000000858898f93629000'
350
+ * ```
351
+ */
352
+ call(transaction: TransactionRequest, blockTag?: BlockTag): Promise<string>;
270
353
  }