haveno-ts Library
haveno-ts is a library users and programs can use to interact with Haveno without necessarily needing a user interface. It's a set of API calls that can be integrated on any platform, wallet or application:
The new user interface will use haveno-ts to communicate with the Haveno core.
If you are interested in integrating Haveno into your app, let us know and we'll be happy to help you out.
Documented API calls
Documentation is automatically generate using Typedoc:
Run API tests
Running the API tests is the best way to develop and test Haveno end-to-end.
HavenoClient.ts
provides the client interface to Haveno's backend daemon.
- Run a local Haveno test network and then shut down the arbitrator, Alice, and Bob or run them as daemons, e.g.
make alice-daemon
. You may omit the arbitrator registration steps since it is done automatically in the tests. - Clone this project to the same parent directory as the haveno project:
git clone https://github.com/haveno-dex/haveno-ts
- In a new terminal, start envoy with the config in haveno-ts/config/envoy.test.yaml (change absolute path for your system):
docker run --rm --add-host host.docker.internal:host-gateway -it -v ~/git/haveno-ts/config/envoy.test.yaml:/envoy.test.yaml -p 8079:8079 -p 8080:8080 -p 8081:8081 -p 8082:8082 -p 8083:8083 -p 8084:8084 -p 8085:8085 -p 8086:8086 envoyproxy/envoy-dev:8a2143613d43d17d1eb35a24b4a4a4c432215606 -c /envoy.test.yaml
- In a new terminal, start the funding wallet. This wallet will be automatically funded in order to fund Alice and Bob during the tests.
For example:cd ~/git/haveno && make funding-wallet
. - Install protobuf compiler v3.19.1 or later for your system:
mac:brew install protobuf
linux:apt install protobuf-compiler
NOTE: You may need to upgrade to v3.19.1 manually if your package manager installs an older version. - Download
protoc-gen-grpc-web
plugin and make executable as shown here. cd haveno-ts
npm install
npm test
to run all tests ornpm run test -- -t 'my test'
to run tests by name.
Adding new API functions and tests
- Follow instructions to run Haveno's existing API tests successfully.
- Define the new service or message in Haveno's protobuf definition.
- Clean and build Haveno after modifying the protobuf definition:
make clean && make
- Implement the new service in Haveno's backend, following existing patterns.
For example, the gRPC function to get offers is implemented byGrpcServer
>GrpcOffersService.getOffers(...)
>CoreApi.getOffers(...)
>CoreOffersService.getOffers(...)
>OfferBookService.getOffers()
. - Build Haveno:
make
- Update the gRPC client in haveno-ts:
npm install
- Add the corresponding typescript method(s) to haveno.ts with clear and concise documentation.
- Add clean and comprehensive tests to haveno.test.ts, following existing patterns.
- Run the tests with
npm run test -- -t 'my test'
to run tests by name andnpm test
to run all tests together. Ensure all tests pass and there are no exception stacktraces in the terminals of Alice, Bob, or the arbitrator. - Open pull requests to the haveno and haveno-ts projects for the backend and frontend implementations.