algonaut 0.8.0

A Rusty sdk for the Algorand blockchain.
Documentation
# Contributing to algonaut

**Note:** Any interaction with the project is subject to our [Code of Conduct](https://github.com/manuelmauro/algonaut/blob/main/CODE_OF_CONDUCT.md).

- [Contributing to algonaut]#contributing-to-algonaut
  - [Submitting Issues]#submitting-issues
  - [Pull Requests]#pull-requests
    - [Submission Checklist]#submission-checklist
  - [Running the test suite]#running-the-test-suite
  - [Writing Documentation]#writing-documentation
  - [Dependency Diagram]#dependency-diagram
  - [Useful Resources]#useful-resources

## Submitting Issues

One way you can help `algonaut` is to report bugs or request features on our GitHub issue tracker.

## Pull Requests

We are very happy to accept code contributions too! Please address issues in our tracker or if you have any idea how to improve the project open a pull request.

### Submission Checklist

Before submitting your pull request to the repository, please make sure you have done the following things first:

1. You have ensured the pull request is based on a recent version of your respective branch.
2. `make ci` completes without errors or warnings. It runs, in order:
   1. `make fmt-check``cargo fmt --all -- --check`
   2. `make clippy``cargo clippy --workspace --all-targets -- -D warnings`
   3. `make test``cargo test --workspace --lib --examples --tests`
   4. `make check-integration` — compile-checks the cucumber runner
   5. `make build``cargo build --workspace`

   The `lefthook` pre-commit hook runs `make ci` for you; install it with `make setup`.
3. If your change affects behaviour covered by the cucumber integration suite, you have run it against a local Algorand sandbox. See [Running the test suite]#running-the-test-suite below; `make docker-test` runs the whole flow in Docker.

## Running the test suite

```bash
make setup           # rustfmt + clippy + lefthook hooks
make ci              # fmt-check, clippy, unit tests, build, integration compile-check
./test-harness.sh up # boot a local algorand sandbox (ports 60000/60001/60002)
make integration     # run the cucumber suite against the sandbox
```

See `docs/adr/` for the architectural decisions behind the cross-SDK cucumber wiring, the simulate / dryrun builders, the V3 source-map decoder, and the dual-format (`JSON`/msgpack) domain-type serialization.

## Writing Documentation

Documentation improvements are always welcome! A solid SDK needs to have solid documentation to go with it.

## Dependency Diagram

```mermaid
stateDiagram-v2
    algod --> encoding
    core --> encoding
    crypto --> encoding
    indexer --> encoding
    kmd --> encoding
    model --> encoding
    transaction --> encoding
    algod --> crypto
    indexer --> crypto
    core --> crypto
    kmd --> crypto
    model --> crypto
    transaction --> crypto
    abi --> core
    kmd --> core
    model --> core
    transaction --> core
    algod --> model
    kmd --> model
    transaction --> model
    transaction --> abi
    algod --> transaction
```

## Useful Resources

- [Git Style Guide]https://github.com/agis/git-style-guide
- [How to write a Git commit message]https://chris.beams.io/posts/git-commit/