https://github.com/kaonone/typechain-target-web3-rxjs
Custom TypeChain target, allows you to get reactive RxJS observables from Contract methods
https://github.com/kaonone/typechain-target-web3-rxjs
Last synced: 2 months ago
JSON representation
Custom TypeChain target, allows you to get reactive RxJS observables from Contract methods
- Host: GitHub
- URL: https://github.com/kaonone/typechain-target-web3-rxjs
- Owner: kaonone
- License: mit
- Created: 2019-11-26T15:28:20.000Z (over 5 years ago)
- Default Branch: master
- Last Pushed: 2023-03-30T14:51:41.000Z (about 2 years ago)
- Last Synced: 2024-11-09T10:48:17.372Z (7 months ago)
- Language: TypeScript
- Homepage:
- Size: 2.05 MB
- Stars: 1
- Watchers: 3
- Forks: 0
- Open Issues: 15
-
Metadata Files:
- Readme: README.md
- Changelog: CHANGELOG.md
- Contributing: CONTRIBUTING.md
- License: LICENSE
Awesome Lists containing this project
README
# Typechain Target Web3-RxJS [](http://commitizen.github.io/cz-cli/)
The custom target for [Typechain](https://github.com/ethereum-ts/TypeChain). Generates Factory for Web3 contracts using ABI. Factory returns typed wrapper for `Web3.eth.Contract`. Factory allows subscribing to contract using RxJS streams.
## Installation
```
npm install --save-dev typechain typechain-target-web3-rxjs
```## How to use it
```
npx typechain --target web3-rxjs --out-dir src/generated/contracts **/*.abi.json
```After calling this command you can get access to all factories from `src/generated/contracts/index.ts`
## Examples
```typescript
import Web3 from 'web3';
import { createErc20 } from 'src/generated/contracts';const web3 = new Web3(PROVIDER);
const dai = createErc20(web3, '0x5592ec0cfb4dbc12d3ab100b257153436a1f0fea');
const anotherContract = createAnotherContract(web3, '0x0000000000000000000000000000000000000000');// read and don’t update. By default behavior
dai.methods.totalSupply();// read and update on one events
dai.methods.totalSupply(undefined, dai.events.Transfer());// read and update on all events
dai.methods.totalSupply(undefined, dai.events.allEvents());// read and update on multiple events with filters
dai.methods.balanceOf(
{ _owner: MY_ADDRESS },
[
dai.events.Transfer({ filter: { _from: MY_ADDRESS } }),
dai.events.Transfer({ filter: { _to: MY_ADDRESS } }),
],
);// read and update on some event from another contract
dai.methods.balanceOf(
{ _owner: MY_ADDRESS },
anotherContract.events.SomeEvent(),
);// call method (send transaction)
dai.methods.transfer(
{ _to: '0x00...0000', _value: new BN('100000000000') },
{ from: MY_ADDRESS },
);
```