# Wormhole Software Development Kit

This directory contains libraries in various languages for developing software that interacts with
wormhole.

## Adding a New ChainID

To add a new ChainID to Wormhole:

1. **Add the constant** in `vaa/structs.go`:
   ```go
   // ChainIDNewChain is the ChainID of NewChain
   ChainIDNewChain ChainID = 99
   ```
   Keep constants in numerical order and follow the naming convention.

2. **Regenerate methods** by running:
   ```bash
   make go-generate
   ```
   This runs `chainid_generator.go` which auto-generates `String()`, `ChainIDFromString()`, and `GetAllNetworkIDs()` methods.

3. **Update other components** as needed:
   - Add to governor chain lists (`node/pkg/governor/mainnet_chains.go`)
   - Add manual tokens if required (`node/pkg/governor/manual_tokens.go`)
   - Update any chain-specific configuration files
   - Add the ChainID in `proto/publicrpc/v1/publicrpc.proto`.
   - If watcher support is necessary, update the guardian code.

# Directory Structure

 * [sdk/](./): Go SDK.  This package must live in this directory so that clients can use the
   `github.com/wormhole-foundation/wormhole/sdk` import path.
 * [vaa/](./vaa/): Go package for using VAAs (Verifiable Action Approval).
 * [js/](./js/README.md): Legacy JavaScript SDK (**Deprecated and Unsupported**)
   * Please use the new Wormhole TypeScript SDK instead: [`@wormhole-foundation/sdk`](https://github.com/wormhole-foundation/wormhole-sdk-ts)
 * [js-proto-node/](./js-proto-node/README.md): NodeJS client protobuf.
 * [js-proto-web/](./js-proto-web/README.md): Web client protobuf.
 * [js-wasm/](./js-wasm/README.md): WebAssembly libraries.
 * [rust/](./rust/): Rust SDK.
