hermes-wrap

hermes protocol javascript sdk for client side

Usage no npm install needed!

<script type="module">
  import hermesWrap from 'https://cdn.skypack.dev/hermes-wrap';
</script>

README

hermes-js

hermes-wrap JS SDK to implement a client for Hermes protocol

Installation

$ npm install hermes-wrap

Developing

Build With

Prerequisites

  • Knowledge of Hermes Contract here
  • Knowledge of EER-2 (Evrynet Enhancement Request) here
    • 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

$ yarn run build:local

or

$ yarn run build:development

For production use

$ yarn run build:production

Versioning

We use a SemVer for versioning. Please see the release.

Tests

For unit testing

$ yarn run test

For unit testing with coverage

$ 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:
$ yarn run lint
  • For prettier format, run:
$ yarn run format

Api Reference

Please see this link

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" }