essential-eth 0.10.3 → 0.11.1
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/dist/index.cjs +2024 -0
- package/dist/index.d.cts +330 -0
- package/dist/index.d.ts +330 -0
- package/dist/index.js +1952 -0
- package/package.json +14 -15
- package/readme.md +2 -2
- package/dist/cjs/classes/Contract.d.ts +0 -81
- package/dist/cjs/classes/Contract.js +0 -139
- package/dist/cjs/classes/test/Contract/crv-abi.d.ts +0 -2
- package/dist/cjs/classes/test/Contract/crv-abi.js +0 -413
- package/dist/cjs/classes/test/Contract/ens-abi.d.ts +0 -2
- package/dist/cjs/classes/test/Contract/ens-abi.js +0 -453
- package/dist/cjs/classes/test/Contract/fei-abi.d.ts +0 -2
- package/dist/cjs/classes/test/Contract/fei-abi.js +0 -526
- package/dist/cjs/classes/test/Contract/foo-abi.d.ts +0 -2
- package/dist/cjs/classes/test/Contract/foo-abi.js +0 -42
- package/dist/cjs/classes/test/Contract/jokerrace-abi.d.ts +0 -2
- package/dist/cjs/classes/test/Contract/jokerrace-abi.js +0 -22
- package/dist/cjs/classes/test/Contract/uniswap-abi.d.ts +0 -2
- package/dist/cjs/classes/test/Contract/uniswap-abi.js +0 -121
- package/dist/cjs/classes/utils/clean-block.d.ts +0 -120
- package/dist/cjs/classes/utils/clean-block.js +0 -160
- package/dist/cjs/classes/utils/clean-log.d.ts +0 -9
- package/dist/cjs/classes/utils/clean-log.js +0 -39
- package/dist/cjs/classes/utils/clean-transaction-receipt.d.ts +0 -14
- package/dist/cjs/classes/utils/clean-transaction-receipt.js +0 -53
- package/dist/cjs/classes/utils/clean-transaction.d.ts +0 -14
- package/dist/cjs/classes/utils/clean-transaction.js +0 -54
- package/dist/cjs/classes/utils/encode-decode-transaction.d.ts +0 -16
- package/dist/cjs/classes/utils/encode-decode-transaction.js +0 -185
- package/dist/cjs/classes/utils/fetchers.d.ts +0 -53
- package/dist/cjs/classes/utils/fetchers.js +0 -85
- package/dist/cjs/classes/utils/hex-to-decimal.d.ts +0 -18
- package/dist/cjs/classes/utils/hex-to-decimal.js +0 -24
- package/dist/cjs/classes/utils/prepare-transaction.d.ts +0 -6
- package/dist/cjs/classes/utils/prepare-transaction.js +0 -47
- package/dist/cjs/index.d.ts +0 -24
- package/dist/cjs/index.js +0 -58
- package/dist/cjs/index.umd.js +0 -2
- package/dist/cjs/index.umd.js.map +0 -1
- package/dist/cjs/logger/logger.d.ts +0 -11
- package/dist/cjs/logger/logger.js +0 -37
- package/dist/cjs/logger/package-version.d.ts +0 -1
- package/dist/cjs/logger/package-version.js +0 -5
- package/dist/cjs/package.json +0 -1
- package/dist/cjs/providers/AlchemyProvider.d.ts +0 -4
- package/dist/cjs/providers/AlchemyProvider.js +0 -11
- package/dist/cjs/providers/BaseProvider.d.ts +0 -374
- package/dist/cjs/providers/BaseProvider.js +0 -514
- package/dist/cjs/providers/FallthroughProvider.d.ts +0 -24
- package/dist/cjs/providers/FallthroughProvider.js +0 -74
- package/dist/cjs/providers/JsonRpcProvider.d.ts +0 -33
- package/dist/cjs/providers/JsonRpcProvider.js +0 -46
- package/dist/cjs/providers/test/json-rpc-provider/get-logs/mocks.d.ts +0 -14
- package/dist/cjs/providers/test/json-rpc-provider/get-logs/mocks.js +0 -152
- package/dist/cjs/providers/test/mock-of.d.ts +0 -8
- package/dist/cjs/providers/test/mock-of.js +0 -12
- package/dist/cjs/providers/test/rpc-urls.d.ts +0 -12
- package/dist/cjs/providers/test/rpc-urls.js +0 -27
- package/dist/cjs/providers/utils/chains-info.d.ts +0 -24
- package/dist/cjs/providers/utils/chains-info.js +0 -71
- package/dist/cjs/shared/tiny-big/helpers.d.ts +0 -17
- package/dist/cjs/shared/tiny-big/helpers.js +0 -97
- package/dist/cjs/shared/tiny-big/tiny-big.d.ts +0 -58
- package/dist/cjs/shared/tiny-big/tiny-big.js +0 -101
- package/dist/cjs/shared/validate-type.d.ts +0 -3
- package/dist/cjs/shared/validate-type.js +0 -9
- package/dist/cjs/types/Block.types.d.ts +0 -41
- package/dist/cjs/types/Block.types.js +0 -2
- package/dist/cjs/types/Contract.types.d.ts +0 -24
- package/dist/cjs/types/Contract.types.js +0 -2
- package/dist/cjs/types/FeeData.types.d.ts +0 -7
- package/dist/cjs/types/FeeData.types.js +0 -2
- package/dist/cjs/types/Filter.types.d.ts +0 -16
- package/dist/cjs/types/Filter.types.js +0 -2
- package/dist/cjs/types/Network.types.d.ts +0 -8
- package/dist/cjs/types/Network.types.js +0 -2
- package/dist/cjs/types/Transaction.types.d.ts +0 -123
- package/dist/cjs/types/Transaction.types.js +0 -2
- package/dist/cjs/utils/bytes.d.ts +0 -289
- package/dist/cjs/utils/bytes.js +0 -711
- package/dist/cjs/utils/compute-address.d.ts +0 -17
- package/dist/cjs/utils/compute-address.js +0 -34
- package/dist/cjs/utils/compute-public-key.d.ts +0 -18
- package/dist/cjs/utils/compute-public-key.js +0 -26
- package/dist/cjs/utils/ether-to-gwei.d.ts +0 -27
- package/dist/cjs/utils/ether-to-gwei.js +0 -35
- package/dist/cjs/utils/ether-to-wei.d.ts +0 -27
- package/dist/cjs/utils/ether-to-wei.js +0 -35
- package/dist/cjs/utils/gwei-to-ether.d.ts +0 -27
- package/dist/cjs/utils/gwei-to-ether.js +0 -35
- package/dist/cjs/utils/hash-message.d.ts +0 -14
- package/dist/cjs/utils/hash-message.js +0 -30
- package/dist/cjs/utils/is-address.d.ts +0 -24
- package/dist/cjs/utils/is-address.js +0 -39
- package/dist/cjs/utils/keccak256.d.ts +0 -16
- package/dist/cjs/utils/keccak256.js +0 -31
- package/dist/cjs/utils/solidity-keccak256.d.ts +0 -39
- package/dist/cjs/utils/solidity-keccak256.js +0 -138
- package/dist/cjs/utils/split-signature.d.ts +0 -24
- package/dist/cjs/utils/split-signature.js +0 -163
- package/dist/cjs/utils/to-checksum-address.d.ts +0 -17
- package/dist/cjs/utils/to-checksum-address.js +0 -46
- package/dist/cjs/utils/to-utf8-bytes.d.ts +0 -15
- package/dist/cjs/utils/to-utf8-bytes.js +0 -21
- package/dist/cjs/utils/wei-to-ether.d.ts +0 -27
- package/dist/cjs/utils/wei-to-ether.js +0 -45
- package/dist/esm/classes/Contract.d.ts +0 -11
- package/dist/esm/classes/Contract.js +0 -58
- package/dist/esm/classes/test/Contract/crv-abi.d.ts +0 -2
- package/dist/esm/classes/test/Contract/crv-abi.js +0 -395
- package/dist/esm/classes/test/Contract/ens-abi.d.ts +0 -2
- package/dist/esm/classes/test/Contract/ens-abi.js +0 -435
- package/dist/esm/classes/test/Contract/fei-abi.d.ts +0 -2
- package/dist/esm/classes/test/Contract/fei-abi.js +0 -521
- package/dist/esm/classes/test/Contract/foo-abi.d.ts +0 -2
- package/dist/esm/classes/test/Contract/foo-abi.js +0 -33
- package/dist/esm/classes/test/Contract/jokerrace-abi.d.ts +0 -2
- package/dist/esm/classes/test/Contract/jokerrace-abi.js +0 -18
- package/dist/esm/classes/test/Contract/uniswap-abi.d.ts +0 -2
- package/dist/esm/classes/test/Contract/uniswap-abi.js +0 -116
- package/dist/esm/classes/utils/clean-block.d.ts +0 -2
- package/dist/esm/classes/utils/clean-block.js +0 -35
- package/dist/esm/classes/utils/clean-log.d.ts +0 -2
- package/dist/esm/classes/utils/clean-log.js +0 -28
- package/dist/esm/classes/utils/clean-transaction-receipt.d.ts +0 -2
- package/dist/esm/classes/utils/clean-transaction-receipt.js +0 -37
- package/dist/esm/classes/utils/clean-transaction.d.ts +0 -2
- package/dist/esm/classes/utils/clean-transaction.js +0 -36
- package/dist/esm/classes/utils/encode-decode-transaction.d.ts +0 -4
- package/dist/esm/classes/utils/encode-decode-transaction.js +0 -143
- package/dist/esm/classes/utils/fetchers.d.ts +0 -15
- package/dist/esm/classes/utils/fetchers.js +0 -37
- package/dist/esm/classes/utils/hex-to-decimal.d.ts +0 -1
- package/dist/esm/classes/utils/hex-to-decimal.js +0 -3
- package/dist/esm/classes/utils/prepare-transaction.d.ts +0 -2
- package/dist/esm/classes/utils/prepare-transaction.js +0 -36
- package/dist/esm/index.d.ts +0 -24
- package/dist/esm/index.js +0 -19
- package/dist/esm/logger/logger.d.ts +0 -11
- package/dist/esm/logger/logger.js +0 -34
- package/dist/esm/logger/package-version.d.ts +0 -1
- package/dist/esm/logger/package-version.js +0 -1
- package/dist/esm/providers/AlchemyProvider.d.ts +0 -4
- package/dist/esm/providers/AlchemyProvider.js +0 -7
- package/dist/esm/providers/BaseProvider.d.ts +0 -26
- package/dist/esm/providers/BaseProvider.js +0 -137
- package/dist/esm/providers/FallthroughProvider.d.ts +0 -11
- package/dist/esm/providers/FallthroughProvider.js +0 -50
- package/dist/esm/providers/JsonRpcProvider.d.ts +0 -7
- package/dist/esm/providers/JsonRpcProvider.js +0 -15
- package/dist/esm/providers/test/json-rpc-provider/get-logs/mocks.d.ts +0 -14
- package/dist/esm/providers/test/json-rpc-provider/get-logs/mocks.js +0 -142
- package/dist/esm/providers/test/mock-of.d.ts +0 -1
- package/dist/esm/providers/test/mock-of.js +0 -1
- package/dist/esm/providers/test/rpc-urls.d.ts +0 -12
- package/dist/esm/providers/test/rpc-urls.js +0 -21
- package/dist/esm/providers/utils/chains-info.d.ts +0 -24
- package/dist/esm/providers/utils/chains-info.js +0 -67
- package/dist/esm/shared/tiny-big/helpers.d.ts +0 -1
- package/dist/esm/shared/tiny-big/helpers.js +0 -58
- package/dist/esm/shared/tiny-big/tiny-big.d.ts +0 -10
- package/dist/esm/shared/tiny-big/tiny-big.js +0 -45
- package/dist/esm/shared/validate-type.d.ts +0 -3
- package/dist/esm/shared/validate-type.js +0 -5
- package/dist/esm/types/Block.types.d.ts +0 -40
- package/dist/esm/types/Block.types.js +0 -1
- package/dist/esm/types/Contract.types.d.ts +0 -24
- package/dist/esm/types/Contract.types.js +0 -1
- package/dist/esm/types/FeeData.types.d.ts +0 -7
- package/dist/esm/types/FeeData.types.js +0 -1
- package/dist/esm/types/Filter.types.d.ts +0 -12
- package/dist/esm/types/Filter.types.js +0 -1
- package/dist/esm/types/Network.types.d.ts +0 -5
- package/dist/esm/types/Network.types.js +0 -1
- package/dist/esm/types/Transaction.types.d.ts +0 -113
- package/dist/esm/types/Transaction.types.js +0 -1
- package/dist/esm/utils/bytes.d.ts +0 -40
- package/dist/esm/utils/bytes.js +0 -245
- package/dist/esm/utils/compute-address.d.ts +0 -1
- package/dist/esm/utils/compute-address.js +0 -12
- package/dist/esm/utils/compute-public-key.d.ts +0 -2
- package/dist/esm/utils/compute-public-key.js +0 -6
- package/dist/esm/utils/ether-to-gwei.d.ts +0 -3
- package/dist/esm/utils/ether-to-gwei.js +0 -7
- package/dist/esm/utils/ether-to-wei.d.ts +0 -3
- package/dist/esm/utils/ether-to-wei.js +0 -7
- package/dist/esm/utils/gwei-to-ether.d.ts +0 -3
- package/dist/esm/utils/gwei-to-ether.js +0 -7
- package/dist/esm/utils/hash-message.d.ts +0 -2
- package/dist/esm/utils/hash-message.js +0 -14
- package/dist/esm/utils/is-address.d.ts +0 -1
- package/dist/esm/utils/is-address.js +0 -12
- package/dist/esm/utils/keccak256.d.ts +0 -2
- package/dist/esm/utils/keccak256.js +0 -13
- package/dist/esm/utils/solidity-keccak256.d.ts +0 -2
- package/dist/esm/utils/solidity-keccak256.js +0 -85
- package/dist/esm/utils/split-signature.d.ts +0 -2
- package/dist/esm/utils/split-signature.js +0 -126
- package/dist/esm/utils/to-checksum-address.d.ts +0 -1
- package/dist/esm/utils/to-checksum-address.js +0 -25
- package/dist/esm/utils/to-utf8-bytes.d.ts +0 -1
- package/dist/esm/utils/to-utf8-bytes.js +0 -3
- package/dist/esm/utils/wei-to-ether.d.ts +0 -3
- package/dist/esm/utils/wei-to-ether.js +0 -16
package/package.json
CHANGED
|
@@ -1,22 +1,26 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "essential-eth",
|
|
3
3
|
"description": "Ultralight JS for Ethereum",
|
|
4
|
-
"version": "0.
|
|
4
|
+
"version": "0.11.1",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"sideEffects": false,
|
|
7
7
|
"type": "module",
|
|
8
8
|
"private": false,
|
|
9
|
-
"main": "./dist/
|
|
9
|
+
"main": "./dist/index.cjs",
|
|
10
|
+
"module": "./dist/index.js",
|
|
10
11
|
"exports": {
|
|
11
12
|
".": {
|
|
12
|
-
"types":
|
|
13
|
-
|
|
14
|
-
|
|
13
|
+
"types": {
|
|
14
|
+
"import": "./dist/index.d.ts",
|
|
15
|
+
"require": "./dist/index.d.cts"
|
|
16
|
+
},
|
|
17
|
+
"import": "./dist/index.js",
|
|
18
|
+
"require": "./dist/index.cjs"
|
|
15
19
|
}
|
|
16
20
|
},
|
|
17
|
-
"types": "./dist/
|
|
21
|
+
"types": "./dist/index.d.ts",
|
|
18
22
|
"engines": {
|
|
19
|
-
"node": ">=
|
|
23
|
+
"node": ">=18"
|
|
20
24
|
},
|
|
21
25
|
"files": [
|
|
22
26
|
"dist/"
|
|
@@ -27,14 +31,10 @@
|
|
|
27
31
|
"repository": "https://github.com/dawsbot/essential-eth.git",
|
|
28
32
|
"author": "@dawsbot",
|
|
29
33
|
"scripts": {
|
|
30
|
-
"test": "
|
|
34
|
+
"test": "vitest run && tsup && eslint --cache . --config .eslintrc.cjs",
|
|
31
35
|
"test:all-node-versions": "npx trevor",
|
|
32
36
|
"lint": "eslint --cache --fix . --config .eslintrc.cjs",
|
|
33
|
-
"
|
|
34
|
-
"build": "rm -rf dist && npm run compile",
|
|
35
|
-
"build:esm": "tsc -p tsconfig.json",
|
|
36
|
-
"build:cjs": "tsc -p tsconfig-cjs.json && printf '{\"type\":\"commonjs\"}' > ./dist/cjs/package.json",
|
|
37
|
-
"build:umd": "microbundle --external none --format umd",
|
|
37
|
+
"build": "tsup",
|
|
38
38
|
"build:readme": "bash ./scripts/markdown-magic/build-readme.sh",
|
|
39
39
|
"vitest": "vitest run",
|
|
40
40
|
"build:chains-info": "npx tsx scripts/update-chains-info/index.ts # used in getNetwork()",
|
|
@@ -62,11 +62,10 @@
|
|
|
62
62
|
"husky": "^7.0.4",
|
|
63
63
|
"lint-staged": "^13.2.1",
|
|
64
64
|
"markdown-magic": "^2.6.1",
|
|
65
|
-
"microbundle": "^0.15.1",
|
|
66
|
-
"npm-run-all": "^4.1.5",
|
|
67
65
|
"perf_hooks": "^0.0.1",
|
|
68
66
|
"prettier": "^3.2.5",
|
|
69
67
|
"prettier-plugin-organize-imports": "^3.2.4",
|
|
68
|
+
"tsup": "^8.5.1",
|
|
70
69
|
"typedoc": "^0.24.5",
|
|
71
70
|
"typescript": "^4.9.4",
|
|
72
71
|
"vitest": "^0.34.6",
|
package/readme.md
CHANGED
|
@@ -40,7 +40,7 @@
|
|
|
40
40
|
- 🧪 Strongly tested
|
|
41
41
|
- 🌲 Tree-shaking and no side-effects
|
|
42
42
|
- 🙌 All common JS versions (CommonJS, ESM, & UMD)
|
|
43
|
-
- ✅ Node
|
|
43
|
+
- ✅ Node 24, 22, 20, & 18
|
|
44
44
|
- ✅ Web
|
|
45
45
|
|
|
46
46
|
<br/>
|
|
@@ -126,7 +126,7 @@ Browsers:
|
|
|
126
126
|
|
|
127
127
|
```html
|
|
128
128
|
<!-- index.html -->
|
|
129
|
-
<script src="https://unpkg.com/essential-eth@0.
|
|
129
|
+
<script src="https://unpkg.com/essential-eth@0.11.1"></script>
|
|
130
130
|
```
|
|
131
131
|
|
|
132
132
|
<!-- ⛔️ AUTO-GENERATED-CONTENT:END (UNPKG_SCRIPT_TAG) -->
|
|
@@ -1,81 +0,0 @@
|
|
|
1
|
-
import type { JsonRpcProvider } from '../providers/JsonRpcProvider';
|
|
2
|
-
import type { ContractInterface } from '../types/Contract.types';
|
|
3
|
-
export declare class BaseContract {
|
|
4
|
-
/**
|
|
5
|
-
* The URL to your Eth node. Consider POKT or Infura
|
|
6
|
-
*/
|
|
7
|
-
private readonly _address;
|
|
8
|
-
private readonly _provider;
|
|
9
|
-
/**
|
|
10
|
-
* @param addressOrName The ethereum address of the smart-contract
|
|
11
|
-
* @param contractInterface The JSON ABI of the smart-contract (like http://api.etherscan.io/api?module=contract&action=getabi&address=0x090d4613473dee047c3f2706764f49e0821d256e&format=raw)
|
|
12
|
-
* @param signerOrProvider An instantiated essential-eth provider
|
|
13
|
-
* @example
|
|
14
|
-
*/
|
|
15
|
-
constructor(addressOrName: string, contractInterface: ContractInterface, signerOrProvider: JsonRpcProvider);
|
|
16
|
-
}
|
|
17
|
-
/**
|
|
18
|
-
* Applies the unique contract's methods to the instantiated Contract in the constructor based-upon the provided ABI
|
|
19
|
-
*
|
|
20
|
-
* @param object
|
|
21
|
-
* @param name
|
|
22
|
-
* @param value
|
|
23
|
-
* @internal
|
|
24
|
-
* @example
|
|
25
|
-
*/
|
|
26
|
-
export declare function defineReadOnly<T>(object: T, name: string, value: any): void;
|
|
27
|
-
/**
|
|
28
|
-
* @alpha
|
|
29
|
-
* Only accepts ABIS in JSON format. This allows for stronger typing and assurances of data-types
|
|
30
|
-
* Only read-only function calls currently supported.
|
|
31
|
-
* @example
|
|
32
|
-
* ```typescript
|
|
33
|
-
* import { Contract, JsonRpcProvider } from 'essential-eth';
|
|
34
|
-
* // UNI airdrop contract
|
|
35
|
-
* const contractAddress = '0x090D4613473dEE047c3f2706764f49E0821D256e';
|
|
36
|
-
* const provider = new JsonRpcProvider();
|
|
37
|
-
* // for more robust contract calls, provide a fallback:
|
|
38
|
-
* // const provider = new FallthroughProvider(['bad', 'https://free-eth-node.com/api/eth']);
|
|
39
|
-
*
|
|
40
|
-
* const JSONABI = [
|
|
41
|
-
* {
|
|
42
|
-
* inputs: [
|
|
43
|
-
* {
|
|
44
|
-
* internalType: 'uint256',
|
|
45
|
-
* name: 'index',
|
|
46
|
-
* type: 'uint256',
|
|
47
|
-
* },
|
|
48
|
-
* ],
|
|
49
|
-
* name: 'isClaimed',
|
|
50
|
-
* outputs: [
|
|
51
|
-
* {
|
|
52
|
-
* internalType: 'bool',
|
|
53
|
-
* name: '',
|
|
54
|
-
* type: 'bool',
|
|
55
|
-
* },
|
|
56
|
-
* ],
|
|
57
|
-
* stateMutability: 'view',
|
|
58
|
-
* type: 'function',
|
|
59
|
-
* },
|
|
60
|
-
* ]
|
|
61
|
-
*
|
|
62
|
-
* const contract = new Contract(
|
|
63
|
-
* contractAddress,
|
|
64
|
-
* JSONABI,
|
|
65
|
-
* provider,
|
|
66
|
-
* );
|
|
67
|
-
*
|
|
68
|
-
* (async () => {
|
|
69
|
-
* // prints boolean as to whether index 0 has claimed airdrop or not
|
|
70
|
-
* console.log(await contract.isClaimed(0));
|
|
71
|
-
* })()
|
|
72
|
-
*
|
|
73
|
-
*
|
|
74
|
-
* ```
|
|
75
|
-
*/
|
|
76
|
-
export declare class Contract extends BaseContract {
|
|
77
|
-
/**
|
|
78
|
-
* The function names on any given contract. Like "isClaimed", "merkleRoot", etc.
|
|
79
|
-
*/
|
|
80
|
-
readonly [key: string]: any;
|
|
81
|
-
}
|
|
@@ -1,139 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.Contract = exports.defineReadOnly = exports.BaseContract = void 0;
|
|
4
|
-
const encode_decode_transaction_1 = require("./utils/encode-decode-transaction");
|
|
5
|
-
/**
|
|
6
|
-
* @param txnData
|
|
7
|
-
* @example
|
|
8
|
-
*/
|
|
9
|
-
function estimateGas(txnData) {
|
|
10
|
-
// https://ethereum.stackexchange.com/questions/1570/what-does-intrinsic-gas-too-low-mean/1694
|
|
11
|
-
txnData.split('').reduce((previousValue, currentValue) => {
|
|
12
|
-
// 0 characters are 4 gwei, all others are 48 gwei
|
|
13
|
-
const characterCost = currentValue === '0' ? 4 : 68;
|
|
14
|
-
return previousValue + characterCost;
|
|
15
|
-
}, 0);
|
|
16
|
-
}
|
|
17
|
-
class BaseContract {
|
|
18
|
-
/**
|
|
19
|
-
* The URL to your Eth node. Consider POKT or Infura
|
|
20
|
-
*/
|
|
21
|
-
_address;
|
|
22
|
-
_provider;
|
|
23
|
-
/**
|
|
24
|
-
* @param addressOrName The ethereum address of the smart-contract
|
|
25
|
-
* @param contractInterface The JSON ABI of the smart-contract (like http://api.etherscan.io/api?module=contract&action=getabi&address=0x090d4613473dee047c3f2706764f49e0821d256e&format=raw)
|
|
26
|
-
* @param signerOrProvider An instantiated essential-eth provider
|
|
27
|
-
* @example
|
|
28
|
-
*/
|
|
29
|
-
constructor(addressOrName, contractInterface, signerOrProvider) {
|
|
30
|
-
this._address = addressOrName;
|
|
31
|
-
this._provider = signerOrProvider;
|
|
32
|
-
contractInterface
|
|
33
|
-
.filter((jsonABIArgument) => jsonABIArgument.type === 'function')
|
|
34
|
-
.forEach((jsonABIArgument) => {
|
|
35
|
-
if ('name' in jsonABIArgument &&
|
|
36
|
-
typeof jsonABIArgument.name === 'string') {
|
|
37
|
-
defineReadOnly(this, jsonABIArgument.name, async (..._args) => {
|
|
38
|
-
let functionArguments = _args;
|
|
39
|
-
let options = {};
|
|
40
|
-
// remove options from encoding
|
|
41
|
-
const lastArg = _args[_args.length - 1];
|
|
42
|
-
if (!Array.isArray(lastArg) && typeof lastArg === 'object') {
|
|
43
|
-
options = lastArg;
|
|
44
|
-
functionArguments = _args.slice(0, _args.length - 1);
|
|
45
|
-
}
|
|
46
|
-
const data = (0, encode_decode_transaction_1.encodeData)(jsonABIArgument, functionArguments);
|
|
47
|
-
const decimalGas = typeof options.gasLimit === 'number'
|
|
48
|
-
? options.gasLimit /* user passed in "gasLimit" directly */
|
|
49
|
-
: typeof jsonABIArgument?.gas ===
|
|
50
|
-
'number' /* ABI specified "gas". */
|
|
51
|
-
? estimateGas(data)
|
|
52
|
-
: null;
|
|
53
|
-
const req = async () => {
|
|
54
|
-
return await this._provider.call({
|
|
55
|
-
to: this._address.toLowerCase(),
|
|
56
|
-
data,
|
|
57
|
-
// sometimes gas is defined in the ABI
|
|
58
|
-
...(decimalGas
|
|
59
|
-
? { gas: `0x${decimalGas.toString(16)}` }
|
|
60
|
-
: {}),
|
|
61
|
-
}, 'latest');
|
|
62
|
-
};
|
|
63
|
-
const nodeResponse = await req();
|
|
64
|
-
return (0, encode_decode_transaction_1.decodeRPCResponse)(jsonABIArgument, nodeResponse);
|
|
65
|
-
});
|
|
66
|
-
}
|
|
67
|
-
});
|
|
68
|
-
}
|
|
69
|
-
}
|
|
70
|
-
exports.BaseContract = BaseContract;
|
|
71
|
-
/**
|
|
72
|
-
* Applies the unique contract's methods to the instantiated Contract in the constructor based-upon the provided ABI
|
|
73
|
-
*
|
|
74
|
-
* @param object
|
|
75
|
-
* @param name
|
|
76
|
-
* @param value
|
|
77
|
-
* @internal
|
|
78
|
-
* @example
|
|
79
|
-
*/
|
|
80
|
-
function defineReadOnly(object, name, value) {
|
|
81
|
-
Object.defineProperty(object, name, {
|
|
82
|
-
enumerable: true,
|
|
83
|
-
value: value,
|
|
84
|
-
writable: false,
|
|
85
|
-
});
|
|
86
|
-
}
|
|
87
|
-
exports.defineReadOnly = defineReadOnly;
|
|
88
|
-
/**
|
|
89
|
-
* @alpha
|
|
90
|
-
* Only accepts ABIS in JSON format. This allows for stronger typing and assurances of data-types
|
|
91
|
-
* Only read-only function calls currently supported.
|
|
92
|
-
* @example
|
|
93
|
-
* ```typescript
|
|
94
|
-
* import { Contract, JsonRpcProvider } from 'essential-eth';
|
|
95
|
-
* // UNI airdrop contract
|
|
96
|
-
* const contractAddress = '0x090D4613473dEE047c3f2706764f49E0821D256e';
|
|
97
|
-
* const provider = new JsonRpcProvider();
|
|
98
|
-
* // for more robust contract calls, provide a fallback:
|
|
99
|
-
* // const provider = new FallthroughProvider(['bad', 'https://free-eth-node.com/api/eth']);
|
|
100
|
-
*
|
|
101
|
-
* const JSONABI = [
|
|
102
|
-
* {
|
|
103
|
-
* inputs: [
|
|
104
|
-
* {
|
|
105
|
-
* internalType: 'uint256',
|
|
106
|
-
* name: 'index',
|
|
107
|
-
* type: 'uint256',
|
|
108
|
-
* },
|
|
109
|
-
* ],
|
|
110
|
-
* name: 'isClaimed',
|
|
111
|
-
* outputs: [
|
|
112
|
-
* {
|
|
113
|
-
* internalType: 'bool',
|
|
114
|
-
* name: '',
|
|
115
|
-
* type: 'bool',
|
|
116
|
-
* },
|
|
117
|
-
* ],
|
|
118
|
-
* stateMutability: 'view',
|
|
119
|
-
* type: 'function',
|
|
120
|
-
* },
|
|
121
|
-
* ]
|
|
122
|
-
*
|
|
123
|
-
* const contract = new Contract(
|
|
124
|
-
* contractAddress,
|
|
125
|
-
* JSONABI,
|
|
126
|
-
* provider,
|
|
127
|
-
* );
|
|
128
|
-
*
|
|
129
|
-
* (async () => {
|
|
130
|
-
* // prints boolean as to whether index 0 has claimed airdrop or not
|
|
131
|
-
* console.log(await contract.isClaimed(0));
|
|
132
|
-
* })()
|
|
133
|
-
*
|
|
134
|
-
*
|
|
135
|
-
* ```
|
|
136
|
-
*/
|
|
137
|
-
class Contract extends BaseContract {
|
|
138
|
-
}
|
|
139
|
-
exports.Contract = Contract;
|