https://github.com/nibiruchain/ts-sdk
TypeScript-based client for interacting with the Nibiru blockchain
https://github.com/nibiruchain/ts-sdk
blockchain cosmjs cosmos cosmos-sdk nibiru nibiru-chain sdk-ts typescript
Last synced: 6 months ago
JSON representation
TypeScript-based client for interacting with the Nibiru blockchain
- Host: GitHub
- URL: https://github.com/nibiruchain/ts-sdk
- Owner: NibiruChain
- License: mit
- Created: 2022-08-06T09:44:39.000Z (almost 4 years ago)
- Default Branch: develop
- Last Pushed: 2025-11-03T14:42:32.000Z (8 months ago)
- Last Synced: 2025-11-03T16:13:36.658Z (8 months ago)
- Topics: blockchain, cosmjs, cosmos, cosmos-sdk, nibiru, nibiru-chain, sdk-ts, typescript
- Language: TypeScript
- Homepage:
- Size: 6.8 MB
- Stars: 36
- Watchers: 3
- Forks: 8
- Open Issues: 8
-
Metadata Files:
- Readme: README.md
- Changelog: CHANGELOG.md
- License: LICENSE
- Codeowners: .github/CODEOWNERS
Awesome Lists containing this project
README
The official TypeScript SDK for the Nibiru blockchain!
The NibiJS (`@nibiruchain/nibijs`) package makes it possible to interact with Nibiru from a Node.js or browser environment. `nibijs` provides simple abstractions for core data structures, serialization, key management, API requests, and the submission of transactions.
The `nibijs` source code can be found in the `src` directory.
#### Table of Contents
- [Installation](#installation)
- [Usage](#usage)
- [Example: Creating a wallet](#example-creating-a-wallet)
- [Example: Querying](#example-querying)
- [Example: Sending funds](#example-sending-funds)
- [Codebase structure](#codebase-structure)
- [Development Quick Start](#development-quick-start)
- [🔓 License](#-license)
To learn more about Nibiru, see [nibiru.fi/docs](https://nibiru.fi/docs)
---
## Installation
[@nibiruchain/nibijs][npm-nibijs] is available on the npm registry.
[npm-nibijs]: https://www.npmjs.com/package/@nibiruchain/nibijs
```
npm install @nibiruchain/nibijs # or yarn add
```
## Usage
The entrypoint for `nibijs` is the `Sdk` object, which is meant to mimic the root of a command line interface. It can be used for both queries and transactions.
### Example: Creating a wallet
```js
import { newRandomWallet } from "@nibiruchain/nibijs"
// Create a new Nibiru wallet
const wallet = await newRandomWallet()
const [{ address }] = await wallet.getAccounts()
// Save the mnemonic somewhere to re-use the account
console.log("mnemonic: ", wallet.mnemonic)
console.log("address: ", address)
```
### Example: Querying
```js
import { NibiruQuerier, Testnet } from "@nibiruchain/nibijs"
export const CHAIN = Testnet(2)
const querier = await NibiruQuerier.connect(CHAIN.endptTm)
// Query balances
const exampleAddress = "nibi17dz4cdw5fmm2cxd4ht9xvjmpw3ycmpkpcc6js9"
const balances = await querier.getAllBalances(exampleAddress)
console.log("balances: %o", balances)
// Query block
const blockHeight = 200000
const block = await querier.getBlock(blockHeight)
console.log("block: %o", block)
```
### Example: Sending funds
```js
import {
NibiruTxClient,
newSignerFromMnemonic,
Testnet,
NibiruQuerier,
} from "@nibiruchain/nibijs"
import { coins } from "@cosmjs/proto-signing"
export const CHAIN = Testnet(2)
const mnemonic = "your mnemonic here..."
const signer = await newSignerFromMnemonic(mnemonic)
const querier = await NibiruQuerier.connect(CHAIN.endptTm)
const txClient = await NibiruTxClient.connectWithSigner(CHAIN.endptTm, signer)
const [{ address: fromAddr }] = await signer.getAccounts()
// Check balance before sending tokens
const exampleAddress = "nibi1mzjkw9z5ugajxchl884y0c28lk2627hpuljuw4"
let balances = await querier.getAllBalances(exampleAddress)
console.log("balances: %o", balances)
const tokens = coins(5, "unibi")
const txResp = await txClient.sendTokens(
fromAddr,
exampleAddress,
tokens,
5000 // gas fee 5000 unibi
)
console.log(txResp)
// Execution could take several seconds
const delay = (ms) => new Promise((res) => setTimeout(res, ms))
await delay(10000)
// Check balance after send tokens
balances = await querier.getAllBalances(exampleAddress)
console.log("balances: %o", balances)
```
## Codebase structure
| Directories of `@nibiruchain/nibijs` | Purpose/Utility |
| :----------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------- |
| `common` | home to several commonly needed types, constants and configurations such as Network. |
| `msg` | Implements functions for creating messages (`Msg`s). These are objects that trigger state-transitions and get wrapped into transactions. |
| `query` | For querying state via the consensus engine of a full-node and the application blockchain interface (ABCI). |
| `tx` | For signing and to submitting transactions given a set of `Msg` objects. |
| `wallet` | A simple wrapper around the Keplr wallet. This module will grow as support is added for other wallets (like MetaMask). |
`@nibiruchain/protojs` provides types generated from the protocol buffers of the Cosmos-SDK, Tendermint Core, and Nibiru Chain. For most use cases, it won't be necessary to interact with this layer.
---
## Development Quick Start
1. Install and use `nvm`.
```bash
wget -qO- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.6/install.sh | bash
nvm use
```
2. Install yarn.
```sh
npm install -g yarn
```
3. Then, install package dependencies. At the root of the repository, run
```sh
yarn
```
4. Initialize git submodules
```sh
git submodule init
git submodule update
```
5. Lastly, compile the code in each package.
```sh
yarn build
```
See [HACKING.md](https://github.com/NibiruChain/ts-sdk/blob/main/HACKING.md) for the full development guide. It includes instructions on:
1. Running tests
2. Generating code for the @nibiruchain/protojs package
3. Generating documentation in HTML or Markdown from the comments of @nibiruchain/nibijs
---
## 🔓 License
This software is licensed under the MIT license. See [LICENSE](https://github.com/NibiruChain/ts-sdk/blob/main/LICENSE) for full disclosure.
© 2023 Nibi, Inc.