essential-eth 0.2.2 → 0.3.3

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 (114) hide show
  1. package/lib/cjs/classes/Contract.d.ts +69 -0
  2. package/lib/cjs/classes/Contract.js +122 -0
  3. package/lib/cjs/{rpc → classes}/get-block.test.d.ts +0 -0
  4. package/lib/cjs/{rpc → classes}/get-block.test.js +5 -5
  5. package/lib/cjs/classes/test/Contract/crv-abi.d.ts +2 -0
  6. package/lib/cjs/classes/test/Contract/crv-abi.js +488 -0
  7. package/lib/{esm/rpc/get-block.test.d.ts → cjs/classes/test/Contract/crv.test.d.ts} +0 -0
  8. package/lib/cjs/classes/test/Contract/crv.test.js +48 -0
  9. package/lib/cjs/classes/test/Contract/fei-abi.d.ts +2 -0
  10. package/lib/cjs/classes/test/Contract/fei-abi.js +526 -0
  11. package/lib/cjs/classes/test/Contract/fei.test.d.ts +1 -0
  12. package/lib/cjs/classes/test/Contract/fei.test.js +62 -0
  13. package/lib/cjs/classes/test/Contract/foo-abi.d.ts +2 -0
  14. package/lib/cjs/classes/test/Contract/foo-abi.js +42 -0
  15. package/lib/cjs/classes/test/Contract/foo.test.d.ts +1 -0
  16. package/lib/cjs/classes/test/Contract/foo.test.js +25 -0
  17. package/lib/cjs/classes/test/Contract/uni.test.d.ts +1 -0
  18. package/lib/cjs/classes/test/Contract/uni.test.js +67 -0
  19. package/lib/cjs/classes/test/Contract/uniswap-abi.d.ts +2 -0
  20. package/lib/cjs/classes/test/Contract/uniswap-abi.js +121 -0
  21. package/lib/cjs/{rpc → classes}/utils/clean-block.d.ts +0 -0
  22. package/lib/cjs/{rpc → classes}/utils/clean-block.js +0 -0
  23. package/lib/cjs/{rpc → classes}/utils/clean-transaction.d.ts +0 -0
  24. package/lib/cjs/{rpc → classes}/utils/clean-transaction.js +0 -0
  25. package/lib/cjs/classes/utils/encode-decode-transaction.d.ts +3 -0
  26. package/lib/cjs/classes/utils/encode-decode-transaction.js +100 -0
  27. package/lib/cjs/classes/utils/fetchers.d.ts +9 -0
  28. package/lib/cjs/{rpc → classes}/utils/fetchers.js +8 -1
  29. package/lib/cjs/{rpc → classes}/utils/hex-to-decimal.d.ts +0 -0
  30. package/lib/cjs/{rpc → classes}/utils/hex-to-decimal.js +0 -0
  31. package/lib/cjs/index.d.ts +10 -6
  32. package/lib/cjs/index.js +12 -9
  33. package/lib/cjs/{rpc/index.d.ts → providers/JsonRpcProvider.d.ts} +5 -1
  34. package/lib/cjs/{rpc/index.js → providers/JsonRpcProvider.js} +14 -7
  35. package/lib/cjs/shared/tiny-big/tiny-big.d.ts +2 -2
  36. package/lib/cjs/types/Contract.types.d.ts +22 -0
  37. package/lib/cjs/types/Contract.types.js +2 -0
  38. package/lib/cjs/{ether-to-wei.d.ts → utils/ether-to-wei.d.ts} +3 -2
  39. package/lib/cjs/{ether-to-wei.js → utils/ether-to-wei.js} +4 -8
  40. package/lib/cjs/{is-address.d.ts → utils/is-address.d.ts} +0 -0
  41. package/lib/cjs/{is-address.js → utils/is-address.js} +3 -3
  42. package/lib/cjs/utils/tests/ether-to-wei.test.d.ts +1 -0
  43. package/lib/cjs/utils/tests/ether-to-wei.test.js +66 -0
  44. package/lib/cjs/utils/tests/is-address.test.d.ts +1 -0
  45. package/lib/cjs/utils/tests/is-address.test.js +56 -0
  46. package/lib/cjs/utils/tests/to-checksum-address.test.d.ts +1 -0
  47. package/lib/cjs/utils/tests/to-checksum-address.test.js +43 -0
  48. package/lib/cjs/utils/tests/wei-to-ether.test.d.ts +1 -0
  49. package/lib/cjs/utils/tests/wei-to-ether.test.js +69 -0
  50. package/lib/cjs/{to-checksum-address.d.ts → utils/to-checksum-address.d.ts} +0 -0
  51. package/lib/cjs/{to-checksum-address.js → utils/to-checksum-address.js} +1 -1
  52. package/lib/cjs/{wei-to-ether.d.ts → utils/wei-to-ether.d.ts} +3 -1
  53. package/lib/cjs/{wei-to-ether.js → utils/wei-to-ether.js} +4 -8
  54. package/lib/esm/classes/Contract.d.ts +12 -0
  55. package/lib/esm/classes/Contract.js +63 -0
  56. package/lib/esm/classes/get-block.test.d.ts +1 -0
  57. package/lib/esm/{rpc → classes}/get-block.test.js +5 -5
  58. package/lib/esm/classes/test/Contract/crv-abi.d.ts +2 -0
  59. package/lib/esm/classes/test/Contract/crv-abi.js +470 -0
  60. package/lib/esm/classes/test/Contract/crv.test.d.ts +1 -0
  61. package/lib/esm/classes/test/Contract/crv.test.js +43 -0
  62. package/lib/esm/classes/test/Contract/fei-abi.d.ts +2 -0
  63. package/lib/esm/classes/test/Contract/fei-abi.js +521 -0
  64. package/lib/esm/classes/test/Contract/fei.test.d.ts +1 -0
  65. package/lib/esm/classes/test/Contract/fei.test.js +46 -0
  66. package/lib/esm/classes/test/Contract/foo-abi.d.ts +2 -0
  67. package/lib/esm/classes/test/Contract/foo-abi.js +33 -0
  68. package/lib/esm/classes/test/Contract/foo.test.d.ts +1 -0
  69. package/lib/esm/classes/test/Contract/foo.test.js +14 -0
  70. package/lib/esm/classes/test/Contract/uni.test.d.ts +1 -0
  71. package/lib/esm/classes/test/Contract/uni.test.js +59 -0
  72. package/lib/esm/classes/test/Contract/uniswap-abi.d.ts +2 -0
  73. package/lib/esm/classes/test/Contract/uniswap-abi.js +116 -0
  74. package/lib/esm/{rpc → classes}/utils/clean-block.d.ts +0 -0
  75. package/lib/esm/{rpc → classes}/utils/clean-block.js +0 -0
  76. package/lib/esm/{rpc → classes}/utils/clean-transaction.d.ts +0 -0
  77. package/lib/esm/{rpc → classes}/utils/clean-transaction.js +0 -0
  78. package/lib/esm/classes/utils/encode-decode-transaction.d.ts +3 -0
  79. package/lib/esm/classes/utils/encode-decode-transaction.js +85 -0
  80. package/lib/esm/classes/utils/fetchers.d.ts +9 -0
  81. package/lib/esm/{rpc → classes}/utils/fetchers.js +8 -1
  82. package/lib/esm/{rpc → classes}/utils/hex-to-decimal.d.ts +0 -0
  83. package/lib/esm/{rpc → classes}/utils/hex-to-decimal.js +0 -0
  84. package/lib/esm/index.d.ts +10 -6
  85. package/lib/esm/index.js +7 -6
  86. package/lib/esm/{rpc/index.d.ts → providers/JsonRpcProvider.d.ts} +2 -1
  87. package/lib/esm/{rpc/index.js → providers/JsonRpcProvider.js} +8 -5
  88. package/lib/esm/shared/tiny-big/tiny-big.d.ts +2 -2
  89. package/lib/esm/types/Contract.types.d.ts +22 -0
  90. package/lib/esm/types/Contract.types.js +1 -0
  91. package/lib/esm/utils/ether-to-wei.d.ts +3 -0
  92. package/lib/esm/utils/ether-to-wei.js +7 -0
  93. package/lib/esm/{is-address.d.ts → utils/is-address.d.ts} +0 -0
  94. package/lib/esm/{is-address.js → utils/is-address.js} +2 -2
  95. package/lib/esm/utils/tests/ether-to-wei.test.d.ts +1 -0
  96. package/lib/esm/utils/tests/ether-to-wei.test.js +36 -0
  97. package/lib/esm/utils/tests/is-address.test.d.ts +1 -0
  98. package/lib/esm/utils/tests/is-address.test.js +49 -0
  99. package/lib/esm/utils/tests/to-checksum-address.test.d.ts +1 -0
  100. package/lib/esm/utils/tests/to-checksum-address.test.js +36 -0
  101. package/lib/esm/utils/tests/wei-to-ether.test.d.ts +1 -0
  102. package/lib/esm/utils/tests/wei-to-ether.test.js +38 -0
  103. package/lib/esm/{to-checksum-address.d.ts → utils/to-checksum-address.d.ts} +0 -0
  104. package/lib/esm/{to-checksum-address.js → utils/to-checksum-address.js} +1 -1
  105. package/lib/esm/utils/wei-to-ether.d.ts +3 -0
  106. package/lib/esm/utils/wei-to-ether.js +7 -0
  107. package/package.json +11 -11
  108. package/readme.md +68 -5
  109. package/lib/cjs/rpc/utils/fetchers.d.ts +0 -7
  110. package/lib/esm/ether-to-wei.d.ts +0 -2
  111. package/lib/esm/ether-to-wei.js +0 -8
  112. package/lib/esm/rpc/utils/fetchers.d.ts +0 -7
  113. package/lib/esm/wei-to-ether.d.ts +0 -1
  114. package/lib/esm/wei-to-ether.js +0 -8
package/readme.md CHANGED
@@ -51,6 +51,8 @@ npm install --save essential-eth # TypeScript types load automatically
51
51
  yarn add essential-eth # TypeScript types load automatically
52
52
  ```
53
53
 
54
+ <br/>
55
+
54
56
  ## Utils (do not require connecting to an Eth node)
55
57
 
56
58
  ```typescript
@@ -64,30 +66,43 @@ const { etherToWei } = require('essential-eth');
64
66
 
65
67
  ```typescript
66
68
  // convert ether to wei
67
- etherToWei(etherQuantity: string | number): TinyBig
69
+ etherToWei(etherQuantity: string | number | TinyBig | Big): TinyBig
68
70
  ```
69
71
 
70
72
  #### `weiToEther`
71
73
 
72
74
  ```typescript
73
75
  // convert wei to ether
74
- weiToEther(weiQuantity: string | number): TinyBig
76
+ weiToEther(weiQuantity: string | number | TinyBig | Big): TinyBig
75
77
  ```
76
78
 
77
79
  #### `toChecksumAddress`
78
80
 
79
81
  ```typescript
80
82
  // return proper mixed-case address
83
+ // does not support ICAP addresses
81
84
  toChecksumAddress(address: string): string
82
85
  ```
83
86
 
87
+ #### `isAddress`
88
+
89
+ ```typescript
90
+ // returns boolean as to whether input is a valid address
91
+ // does not support ENS nor ICAP
92
+ isAddress(address: string): boolean
93
+ ```
94
+
95
+ <br/>
96
+
84
97
  ## RPC
85
98
 
86
99
  ```typescript
87
- import { EssentialEth } from 'essential-eth';
88
- const essentialEth = new EssentialEth('RPC URL HERE' /* Try POKT or Infura */);
100
+ import { JsonRpcProvider } from 'essential-eth';
101
+ const essentialEth = new JsonRpcProvider(
102
+ 'RPC URL HERE' /* Try POKT or Infura */,
103
+ );
89
104
  // OR for very quick testing (limited to 500 requests)
90
- const essentialEth = new EssentialEth();
105
+ const essentialEth = new JsonRpcProvider();
91
106
  ```
92
107
 
93
108
  #### `getBlock`
@@ -99,6 +114,54 @@ Returns a [Block](src/types/block.types.ts)
99
114
  getBlock(timeFrame: number | "latest" | "earliest" | "pending", returnTransactionObjects?: boolean): Promise<Block>
100
115
  ```
101
116
 
117
+ <br/>
118
+
119
+ ## Contract
120
+
121
+ ⚠️ Only read functions are currently supported. ⚠️
122
+
123
+ - This is highly experimental, do not use this in production yet.
124
+
125
+ ```typescript
126
+ import { Contract, jsonRpcProvider, JSONABI } from 'essential-eth';
127
+ // UNI airdrop contract
128
+ const contractAddress = '0x090D4613473dEE047c3f2706764f49E0821D256e';
129
+ const provider = jsonRpcProvider(/* RPC URL optional */);
130
+
131
+ const abi: JSONABI = [
132
+ {
133
+ inputs: [
134
+ {
135
+ internalType: 'uint256',
136
+ name: 'index',
137
+ type: 'uint256',
138
+ },
139
+ ],
140
+ name: 'isClaimed',
141
+ outputs: [
142
+ {
143
+ internalType: 'bool',
144
+ name: '',
145
+ type: 'bool',
146
+ },
147
+ ],
148
+ stateMutability: 'view',
149
+ type: 'function',
150
+ },
151
+ ];
152
+
153
+ const contract = new Contract(contractAddress, abi, provider);
154
+
155
+ (async () => {
156
+ // prints boolean as to whether index 0 has claimed airdrop or not
157
+ console.log(await contract.isClaimed(0));
158
+ })();
159
+ ```
160
+
161
+ #### `contractFunctionName(args)`
162
+
163
+ Any function on a contract. Returns are the same as `ethers.js`, except that instead of BigNumber, `essential-eth` always returns a [`TinyBig`](https://essential-eth.vercel.app/classes/TinyBig.html)
164
+
102
165
  <br/>
103
166
  <br/>
104
167
 
@@ -1,7 +0,0 @@
1
- export declare function post(url: string, body: Record<string, unknown>): Promise<any>;
2
- export declare function buildRPCPostBody(method: 'eth_getBlockByNumber', params: any[]): {
3
- jsonrpc: string;
4
- id: number;
5
- method: "eth_getBlockByNumber";
6
- params: any[];
7
- };
@@ -1,2 +0,0 @@
1
- import { TinyBig } from './shared/tiny-big/tiny-big';
2
- export declare function etherToWei(etherQuantity: string | number): TinyBig;
@@ -1,8 +0,0 @@
1
- import Big from 'big.js';
2
- import { tinyBig } from './shared/tiny-big/tiny-big';
3
- import { validateType } from './shared/validate-type';
4
- export function etherToWei(etherQuantity) {
5
- validateType(etherQuantity, ['string', 'number']);
6
- const result = Big(etherQuantity).times('1000000000000000000').toString();
7
- return tinyBig(result);
8
- }
@@ -1,7 +0,0 @@
1
- export declare function post(url: string, body: Record<string, unknown>): Promise<any>;
2
- export declare function buildRPCPostBody(method: 'eth_getBlockByNumber', params: any[]): {
3
- jsonrpc: string;
4
- id: number;
5
- method: "eth_getBlockByNumber";
6
- params: any[];
7
- };
@@ -1 +0,0 @@
1
- export declare function weiToEther(weiQuantity: string | number): import("./shared/tiny-big/tiny-big").TinyBig;
@@ -1,8 +0,0 @@
1
- import Big from 'big.js';
2
- import { tinyBig } from './shared/tiny-big/tiny-big';
3
- import { validateType } from './shared/validate-type';
4
- export function weiToEther(weiQuantity) {
5
- validateType(weiQuantity, ['string', 'number']);
6
- const result = Big(weiQuantity).div('1000000000000000000').toString();
7
- return tinyBig(result);
8
- }