hermes-wrap-test
Version:
hermes protocol javascript sdk for client side
253 lines (223 loc) • 4.11 kB
Markdown
# hermes-js
hermes-wrap JS SDK to implement a client for Hermes protocol
## Installation
```console
$ npm install hermes-wrap-test
```
## Developing
### Build With
- [Stellar SDK](https://www.stellar.org/developers/js-stellar-sdk/reference/)
- [Ethereum JS](https://github.com/ethereumjs)
- [Web3](https://github.com/ethereum/web3.js/)
### Prerequisites
- Knowledge of Hermes Contract [here](https://gitlab.com/lightnet-cn/hermes-contract)
- Knowledge of EER-2 (Evrynet Enhancement Request) [here](https://gitlab.com/lightnet-cn/hermes-client)
- User needs to `setApprovalForAll(address _operator, bool _approved)` and let a custodian contract as an operator.
- For custom credit contract, user needs to `SetMinter(uint256 indexed _typeID, address _minter);` and let let a custodian contract as a minter.
### Building
For local development
```console
$ yarn run build:local
```
or
```console
$ yarn run build:development
```
For production use
```console
$ yarn run build:production
```
## Versioning
We use a [SemVer](https://semver.org/) for versioning. Please see the [release](https://gitlab.com/lightnet-cn/hermes-js/releases).
## Tests
For unit testing
```console
$ yarn run test
```
For unit testing with coverage
```console
$ yarn run test-coverage
```
Jest as well as Enzyme has been used for testing libraries.
## Style guide
Eslint has been used for linting as well as prettier
- For Lint check, run:
```console
$ yarn run lint
```
- For prettier format, run:
```console
$ yarn run format
```
## Api Reference
Please see [this link](https://gitlab.com/lightnet-cn/hermes-js)
## Function examples
You can find example at hermes-js example
#### Get available assets
- Request
```
evry.getWhitelistAssets()
```
- Response
```
assets: [
{
code: "XLM",
issuer: "",
decimal: 7,
typeID: "1"
}
]
```
#### Get user's Evrynet account balance
- Request
```
evry.getBalance({
address: "0x1234",
asset: {
code: "EVRY",
issuer: "issuer",
decimal: 18,
typeID: "2"
}
})
```
- Response
```
balance: 10
```
#### Get user's Evrynet account nonce
- Request
```
evry.getNonce({ address: "0x1234" })
```
- Response
```
nonce: "1234"
```
#### Get user's Stellar account balance
- Request
```
stellar.getBalance({
address: "stellar public key",
asset: {
code: "vTHB",
issuer: "issuer",
decimal: 2,
typeID: "3"
}
})
```
- Response
```
balance: "10"
```
#### Get user's Stellar account trustlines
- Request
```
stellar.getTrustlines({ address: "stellar public key" })
```
- Response
```
assets:[
{
code: "EVRY",
issuer: "issuer"
}
]
```
#### Get user's Stellar account sequence number
- Request
```
stellar.getSequenceNumber({ address: "stellar public key" })
```
- Response
```
sequenceNumber: "1234"
```
#### Generate stellar lock transaction
- Request
```
stellar.newLockTx({
secret: "stellar private key",
amount: "1234",
asset: {
code: "XLM",
issuer: ""
}
})
```
- Response
```
xdr: ""
```
#### Generate stellar unlock transaction
- Request
```
stellar.newUnlockTx({
secret: "stellar private key",
amount: "1234",
asset: {
code: "XLM",
issuer: ""
}
})
```
- Response
```
xdr: ""
```
#### Generate evrynet lock transaction
- Request
```
evry.newLockTx({
secret: "evrynet private key",
amount: "1234",
asset: {
code: "XLM",
issuer: "",
decimal: 7,
typeID: "1"
}
})
```
- Response
```
rawTx: "0xabcd"
```
#### Generate evrynet unlock transaction
- Request
```
evry.newUnlockTx({
secret: "evrynet private key",
amount: "1234",
asset: {
code: "XLM",
issuer: "",
decimal: 7,
typeID: "1"
}
})
```
- Response
```
rawTx: "0xabcd"
```
#### Transfer asset from stellar to evrynet
- Request
```
hermes.toEvrynet({ rawTx: "0xabcd", xdr: "", })
```
- Response
```
{ stellarTxHash: "0x1234", evrynetTxHash: "0x1234" }
```
#### Transfer asset from evrynet to stellar
- Request
```
hermes.toStellar({ rawTx: "0xabcd", xdr: "", })
```
- Response
```
{ stellarTxHash: "0x1234", evrynetTxHash: "0x1234" }
```