A TypeScript SDK for interacting with Canton blockchain nodes.
For complete documentation, examples, and API references, visit: https://sdk.canton.fairmint.com/
- 🔐 External Signing Guide - Create and manage external parties with user-controlled private keys
npm install @fairmint/canton-node-sdkimport { LedgerJsonApiClient } from '@fairmint/canton-node-sdk';
const client = new LedgerJsonApiClient(config);
const version = await client.getVersion();See CONTRIBUTING.md for information about setting up the development environment.
The SDK integration suite targets a local cn-quickstart network. For full setup and troubleshooting, see docs/LOCALNET_TESTING.md.
# One-time setup (submodules, Docker prerequisites, quickstart config, Daml SDK)
npm run localnet:quickstart
# Start localnet and wait for ready endpoints
npm run localnet:start
# Run a fast localnet endpoint smoke check
npm run localnet:smoke
# Run integration tests
npm run test:integration
# Stop localnet
npm run localnet:stoplocalnet:start uses a fast startup path when quickstart build artifacts already exist. To force a
full rebuild start, run CANTON_LOCALNET_FORCE_FULL_START=true npm run localnet:start.
You can reuse this LocalNet workflow from another repository by installing this package and calling the bundled shell scripts.
# In your other repo
npm install --save-dev @fairmint/canton-node-sdk
# Run bundled localnet script directly
bash ./node_modules/@fairmint/canton-node-sdk/scripts/localnet/localnet-cloud.sh verifyOr wire it into your other repo's package.json:
{
"scripts": {
"localnet:setup": "bash ./node_modules/@fairmint/canton-node-sdk/scripts/localnet/setup-localnet.sh",
"localnet:start": "bash ./node_modules/@fairmint/canton-node-sdk/scripts/localnet/start-localnet.sh",
"localnet:status": "bash ./node_modules/@fairmint/canton-node-sdk/scripts/localnet/localnet-status.sh",
"localnet:smoke": "bash ./node_modules/@fairmint/canton-node-sdk/scripts/localnet/localnet-cloud.sh smoke",
"localnet:test": "bash ./node_modules/@fairmint/canton-node-sdk/scripts/localnet/localnet-cloud.sh test",
"localnet:stop": "bash ./node_modules/@fairmint/canton-node-sdk/scripts/localnet/stop-localnet.sh"
}
}The npm package includes the LocalNet helper scripts and required cn-quickstart resources so other repos can use the same setup without copying files.
localnet-cloud.sh test runs test:integration or test:localnet from your repo when those
scripts exist. If no integration test script is configured, it skips that step.
npm run localnet:quickstart- One-time localnet setup for this machinenpm run localnet:setup- Alias forlocalnet:quickstartnpm run localnet:start- Start localnet and wait for readinessnpm run localnet:status- Show container and endpoint statusnpm run localnet:smoke- Run localnet endpoint smoke checksnpm run localnet:stop- Stop localnet servicesnpm run localnet:verify- Setup + start + smoke + integration testsnpm run test:integration- Run localnet integration testsnpm run test:localnet- Alias fortest:integrationnpm run test:regression- Alias fortest:integration
The project uses GitHub Actions for continuous integration:
- Unit Tests: Run on every commit
- Linting: Code quality checks on every commit
- Integration Tests: LocalNet regression tests (cn-quickstart)
- Publish: Automatic NPM publishing on merge to main
See .github/workflows/ for CI configurations.