Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
92 changes: 92 additions & 0 deletions AGENTS.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,92 @@
# Mintlayer Connect SDK — Development Guide

## Monorepo structure

```
packages/
sdk/ ← main SDK package (@mintlayer/sdk) — primary work target
react/ ← React wrapper (@mintlayer/react)
wasm-lib/ ← pre-built WASM bindings (@mintlayer/wasm-lib, not edited here)
examples/
```

Package manager: **pnpm** (workspace). Lock file: `pnpm-lock.yaml`.

---

## Running tests (SDK)

```bash
cd packages/sdk

pnpm test # run all tests once
pnpm test:watch # watch mode
pnpm test -- --testPathPattern=transfer # run a single suite
```

All 15 test suites must pass before merging. Tests run with Jest + ts-jest in a jsdom environment.

### How tests work

- `jest.config.js` maps `@mintlayer/wasm-lib` → `tests/__mocks__/@mintlayer/wasm-lib.ts`.
That shim re-exports from `tests/__mocks__/pkg-node/` which is a real compiled Node.js WASM build,
so tests exercise actual encoding logic — they're integration-style, not pure unit tests.
- `jest.setup.ts` replaces `fetch` with `jest-fetch-mock` so HTTP calls can be intercepted per-test.
- Snapshots live in `tests/__snapshots__/`. Regenerate with `pnpm test -- -u`.

When a new wasm-lib export is needed in tests, add it to the shim's re-export in
`tests/__mocks__/@mintlayer/wasm-lib.ts` (and update `pkg-node` if needed).

---

## Building

```bash
# from repo root
pnpm build:sdk # builds packages/sdk only (tsc → dist/)
pnpm build # builds all packages

# or from inside packages/sdk
pnpm build
```

Output lands in `packages/sdk/dist/`.

---

## SDK source layout (`packages/sdk/src/`)

| File | Purpose |
|------|---------|
| `mintlayer-connect-sdk.ts` | Main `Client` class — all public API, network calls, transaction orchestration |
| `transaction.ts` | `TransactionBuilder` — constructs raw transactions using wasm-lib primitives |
| `utils.ts` | Shared helpers (`mergeUint8Arrays`, `atomsToDecimal`, `stringToUint8Array`, …) |
| `types/transaction.ts` | All TypeScript types for UTXOs, inputs, outputs, amounts, etc. |
| `types/global.d.ts` | Global ambient declarations |

---

## Key architectural notes

- **WASM dependency**: All low-level encoding (inputs, outputs, signing, hashing) goes through `@mintlayer/wasm-lib`. Import from there; never re-implement encoding logic in TypeScript.
- **Atoms vs decimal**: The chain uses integer atoms internally. `atomsToDecimal()` converts for display; amounts passed to wasm functions must be atoms strings.
- **Networks**: `mainnet` / `testnet` — set at `Client.init()`. Network affects address encoding and fee logic.
- **Transaction flow**: `Client.buildTransaction()` → `TransactionBuilder` → wasm encode → signed tx bytes.

---

## Versioning & publishing

Version is in `packages/sdk/package.json`. Publishing is manual:

```bash
pnpm publish:sdk # from repo root
```

---

## TypeScript config

- Target: `es2020`, module: `esnext`, strict mode on.
- `skipLibCheck: true` (wasm-lib types ship pre-built).
- Source in `src/`, output in `dist/`.
162 changes: 81 additions & 81 deletions packages/sdk/docs/classes/Client.md

Large diffs are not rendered by default.

36 changes: 18 additions & 18 deletions packages/sdk/docs/classes/MintlayerApiProvider.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@

***

Defined in: [mintlayer-connect-sdk.ts:162](https://github.com/mintlayer/mintlayer-connect-sdk/blob/c2e3af8c362a53736f94c0d91571f12868b57f86/packages/sdk/src/mintlayer-connect-sdk.ts#L162)
Defined in: [mintlayer-connect-sdk.ts:162](https://github.com/mintlayer/mintlayer-connect-sdk/blob/e5da6dd553558de82047535da674569c83acf075/packages/sdk/src/mintlayer-connect-sdk.ts#L162)

## Implements

Expand All @@ -12,19 +12,19 @@ Defined in: [mintlayer-connect-sdk.ts:162](https://github.com/mintlayer/mintlaye

### Constructor

> **new MintlayerApiProvider**(`baseUrl`, `utxoUrl`): `MintlayerApiProvider`
> **new MintlayerApiProvider**(`baseUrl`, `batchUrl`): `MintlayerApiProvider`

Defined in: [mintlayer-connect-sdk.ts:166](https://github.com/mintlayer/mintlayer-connect-sdk/blob/c2e3af8c362a53736f94c0d91571f12868b57f86/packages/sdk/src/mintlayer-connect-sdk.ts#L166)
Defined in: [mintlayer-connect-sdk.ts:166](https://github.com/mintlayer/mintlayer-connect-sdk/blob/e5da6dd553558de82047535da674569c83acf075/packages/sdk/src/mintlayer-connect-sdk.ts#L166)

#### Parameters

##### baseUrl

`string`

##### utxoUrl
##### batchUrl

`string` = `'https://api.mintini.app'`
`string`

#### Returns

Expand All @@ -36,7 +36,7 @@ Defined in: [mintlayer-connect-sdk.ts:166](https://github.com/mintlayer/mintlaye

> **broadcastTransaction**(`tx`): `Promise`\<`any`\>

Defined in: [mintlayer-connect-sdk.ts:226](https://github.com/mintlayer/mintlayer-connect-sdk/blob/c2e3af8c362a53736f94c0d91571f12868b57f86/packages/sdk/src/mintlayer-connect-sdk.ts#L226)
Defined in: [mintlayer-connect-sdk.ts:226](https://github.com/mintlayer/mintlayer-connect-sdk/blob/e5da6dd553558de82047535da674569c83acf075/packages/sdk/src/mintlayer-connect-sdk.ts#L226)

#### Parameters

Expand All @@ -58,7 +58,7 @@ Defined in: [mintlayer-connect-sdk.ts:226](https://github.com/mintlayer/mintlaye

> **getAccountUtxos**(`addresses`, `network`): `Promise`\<`any`\>

Defined in: [mintlayer-connect-sdk.ts:241](https://github.com/mintlayer/mintlayer-connect-sdk/blob/c2e3af8c362a53736f94c0d91571f12868b57f86/packages/sdk/src/mintlayer-connect-sdk.ts#L241)
Defined in: [mintlayer-connect-sdk.ts:241](https://github.com/mintlayer/mintlayer-connect-sdk/blob/e5da6dd553558de82047535da674569c83acf075/packages/sdk/src/mintlayer-connect-sdk.ts#L241)

#### Parameters

Expand All @@ -84,7 +84,7 @@ Defined in: [mintlayer-connect-sdk.ts:241](https://github.com/mintlayer/mintlaye

> **getAddress**(`addr`): `Promise`\<`any`\>

Defined in: [mintlayer-connect-sdk.ts:186](https://github.com/mintlayer/mintlayer-connect-sdk/blob/c2e3af8c362a53736f94c0d91571f12868b57f86/packages/sdk/src/mintlayer-connect-sdk.ts#L186)
Defined in: [mintlayer-connect-sdk.ts:186](https://github.com/mintlayer/mintlayer-connect-sdk/blob/e5da6dd553558de82047535da674569c83acf075/packages/sdk/src/mintlayer-connect-sdk.ts#L186)

#### Parameters

Expand All @@ -106,7 +106,7 @@ Defined in: [mintlayer-connect-sdk.ts:186](https://github.com/mintlayer/mintlaye

> **getAddressDelegations**(`addr`): `Promise`\<`any`\>

Defined in: [mintlayer-connect-sdk.ts:190](https://github.com/mintlayer/mintlayer-connect-sdk/blob/c2e3af8c362a53736f94c0d91571f12868b57f86/packages/sdk/src/mintlayer-connect-sdk.ts#L190)
Defined in: [mintlayer-connect-sdk.ts:190](https://github.com/mintlayer/mintlayer-connect-sdk/blob/e5da6dd553558de82047535da674569c83acf075/packages/sdk/src/mintlayer-connect-sdk.ts#L190)

#### Parameters

Expand All @@ -128,7 +128,7 @@ Defined in: [mintlayer-connect-sdk.ts:190](https://github.com/mintlayer/mintlaye

> **getAddressTokenAuthority**(`addr`): `Promise`\<`any`\>

Defined in: [mintlayer-connect-sdk.ts:194](https://github.com/mintlayer/mintlayer-connect-sdk/blob/c2e3af8c362a53736f94c0d91571f12868b57f86/packages/sdk/src/mintlayer-connect-sdk.ts#L194)
Defined in: [mintlayer-connect-sdk.ts:194](https://github.com/mintlayer/mintlayer-connect-sdk/blob/e5da6dd553558de82047535da674569c83acf075/packages/sdk/src/mintlayer-connect-sdk.ts#L194)

#### Parameters

Expand All @@ -150,7 +150,7 @@ Defined in: [mintlayer-connect-sdk.ts:194](https://github.com/mintlayer/mintlaye

> **getChainTip**(): `Promise`\<`any`\>

Defined in: [mintlayer-connect-sdk.ts:182](https://github.com/mintlayer/mintlayer-connect-sdk/blob/c2e3af8c362a53736f94c0d91571f12868b57f86/packages/sdk/src/mintlayer-connect-sdk.ts#L182)
Defined in: [mintlayer-connect-sdk.ts:182](https://github.com/mintlayer/mintlayer-connect-sdk/blob/e5da6dd553558de82047535da674569c83acf075/packages/sdk/src/mintlayer-connect-sdk.ts#L182)

#### Returns

Expand All @@ -166,7 +166,7 @@ Defined in: [mintlayer-connect-sdk.ts:182](https://github.com/mintlayer/mintlaye

> **getDelegation**(`delegation_id`): `Promise`\<`any`\>

Defined in: [mintlayer-connect-sdk.ts:218](https://github.com/mintlayer/mintlayer-connect-sdk/blob/c2e3af8c362a53736f94c0d91571f12868b57f86/packages/sdk/src/mintlayer-connect-sdk.ts#L218)
Defined in: [mintlayer-connect-sdk.ts:218](https://github.com/mintlayer/mintlayer-connect-sdk/blob/e5da6dd553558de82047535da674569c83acf075/packages/sdk/src/mintlayer-connect-sdk.ts#L218)

#### Parameters

Expand All @@ -188,7 +188,7 @@ Defined in: [mintlayer-connect-sdk.ts:218](https://github.com/mintlayer/mintlaye

> **getNft**(`token_id`): `Promise`\<`any`\>

Defined in: [mintlayer-connect-sdk.ts:202](https://github.com/mintlayer/mintlayer-connect-sdk/blob/c2e3af8c362a53736f94c0d91571f12868b57f86/packages/sdk/src/mintlayer-connect-sdk.ts#L202)
Defined in: [mintlayer-connect-sdk.ts:202](https://github.com/mintlayer/mintlayer-connect-sdk/blob/e5da6dd553558de82047535da674569c83acf075/packages/sdk/src/mintlayer-connect-sdk.ts#L202)

#### Parameters

Expand All @@ -210,7 +210,7 @@ Defined in: [mintlayer-connect-sdk.ts:202](https://github.com/mintlayer/mintlaye

> **getOrder**(`order_id`): `Promise`\<`any`\>

Defined in: [mintlayer-connect-sdk.ts:206](https://github.com/mintlayer/mintlayer-connect-sdk/blob/c2e3af8c362a53736f94c0d91571f12868b57f86/packages/sdk/src/mintlayer-connect-sdk.ts#L206)
Defined in: [mintlayer-connect-sdk.ts:206](https://github.com/mintlayer/mintlayer-connect-sdk/blob/e5da6dd553558de82047535da674569c83acf075/packages/sdk/src/mintlayer-connect-sdk.ts#L206)

#### Parameters

Expand All @@ -232,7 +232,7 @@ Defined in: [mintlayer-connect-sdk.ts:206](https://github.com/mintlayer/mintlaye

> **getOrders**(): `Promise`\<`any`\>

Defined in: [mintlayer-connect-sdk.ts:210](https://github.com/mintlayer/mintlayer-connect-sdk/blob/c2e3af8c362a53736f94c0d91571f12868b57f86/packages/sdk/src/mintlayer-connect-sdk.ts#L210)
Defined in: [mintlayer-connect-sdk.ts:210](https://github.com/mintlayer/mintlayer-connect-sdk/blob/e5da6dd553558de82047535da674569c83acf075/packages/sdk/src/mintlayer-connect-sdk.ts#L210)

#### Returns

Expand All @@ -248,7 +248,7 @@ Defined in: [mintlayer-connect-sdk.ts:210](https://github.com/mintlayer/mintlaye

> **getPoolDelegations**(`pool_id`): `Promise`\<`any`\>

Defined in: [mintlayer-connect-sdk.ts:214](https://github.com/mintlayer/mintlayer-connect-sdk/blob/c2e3af8c362a53736f94c0d91571f12868b57f86/packages/sdk/src/mintlayer-connect-sdk.ts#L214)
Defined in: [mintlayer-connect-sdk.ts:214](https://github.com/mintlayer/mintlayer-connect-sdk/blob/e5da6dd553558de82047535da674569c83acf075/packages/sdk/src/mintlayer-connect-sdk.ts#L214)

#### Parameters

Expand All @@ -270,7 +270,7 @@ Defined in: [mintlayer-connect-sdk.ts:214](https://github.com/mintlayer/mintlaye

> **getToken**(`token_id`): `Promise`\<`any`\>

Defined in: [mintlayer-connect-sdk.ts:198](https://github.com/mintlayer/mintlayer-connect-sdk/blob/c2e3af8c362a53736f94c0d91571f12868b57f86/packages/sdk/src/mintlayer-connect-sdk.ts#L198)
Defined in: [mintlayer-connect-sdk.ts:198](https://github.com/mintlayer/mintlayer-connect-sdk/blob/e5da6dd553558de82047535da674569c83acf075/packages/sdk/src/mintlayer-connect-sdk.ts#L198)

#### Parameters

Expand All @@ -292,7 +292,7 @@ Defined in: [mintlayer-connect-sdk.ts:198](https://github.com/mintlayer/mintlaye

> **getTransaction**(`transaction_id`): `Promise`\<`any`\>

Defined in: [mintlayer-connect-sdk.ts:222](https://github.com/mintlayer/mintlayer-connect-sdk/blob/c2e3af8c362a53736f94c0d91571f12868b57f86/packages/sdk/src/mintlayer-connect-sdk.ts#L222)
Defined in: [mintlayer-connect-sdk.ts:222](https://github.com/mintlayer/mintlayer-connect-sdk/blob/e5da6dd553558de82047535da674569c83acf075/packages/sdk/src/mintlayer-connect-sdk.ts#L222)

#### Parameters

Expand Down
12 changes: 6 additions & 6 deletions packages/sdk/docs/classes/MnemonicAccountProvider.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@

***

Defined in: [mintlayer-connect-sdk.ts:419](https://github.com/mintlayer/mintlayer-connect-sdk/blob/c2e3af8c362a53736f94c0d91571f12868b57f86/packages/sdk/src/mintlayer-connect-sdk.ts#L419)
Defined in: [mintlayer-connect-sdk.ts:424](https://github.com/mintlayer/mintlayer-connect-sdk/blob/e5da6dd553558de82047535da674569c83acf075/packages/sdk/src/mintlayer-connect-sdk.ts#L424)

A standalone account provider that derives addresses and private keys from a
BIP39 mnemonic seed phrase.
Expand Down Expand Up @@ -35,7 +35,7 @@ const client = await Client.create({ network: 'testnet', accountProvider: provid

> **new MnemonicAccountProvider**(`mnemonic`, `network`, `options`): `MnemonicAccountProvider`

Defined in: [mintlayer-connect-sdk.ts:424](https://github.com/mintlayer/mintlayer-connect-sdk/blob/c2e3af8c362a53736f94c0d91571f12868b57f86/packages/sdk/src/mintlayer-connect-sdk.ts#L424)
Defined in: [mintlayer-connect-sdk.ts:429](https://github.com/mintlayer/mintlayer-connect-sdk/blob/e5da6dd553558de82047535da674569c83acf075/packages/sdk/src/mintlayer-connect-sdk.ts#L429)

#### Parameters

Expand All @@ -61,7 +61,7 @@ Defined in: [mintlayer-connect-sdk.ts:424](https://github.com/mintlayer/mintlaye

> **connect**(): `Promise`\<`Address`\>

Defined in: [mintlayer-connect-sdk.ts:461](https://github.com/mintlayer/mintlayer-connect-sdk/blob/c2e3af8c362a53736f94c0d91571f12868b57f86/packages/sdk/src/mintlayer-connect-sdk.ts#L461)
Defined in: [mintlayer-connect-sdk.ts:466](https://github.com/mintlayer/mintlayer-connect-sdk/blob/e5da6dd553558de82047535da674569c83acf075/packages/sdk/src/mintlayer-connect-sdk.ts#L466)

#### Returns

Expand All @@ -77,7 +77,7 @@ Defined in: [mintlayer-connect-sdk.ts:461](https://github.com/mintlayer/mintlaye

> **disconnect**(): `Promise`\<`void`\>

Defined in: [mintlayer-connect-sdk.ts:469](https://github.com/mintlayer/mintlayer-connect-sdk/blob/c2e3af8c362a53736f94c0d91571f12868b57f86/packages/sdk/src/mintlayer-connect-sdk.ts#L469)
Defined in: [mintlayer-connect-sdk.ts:474](https://github.com/mintlayer/mintlayer-connect-sdk/blob/e5da6dd553558de82047535da674569c83acf075/packages/sdk/src/mintlayer-connect-sdk.ts#L474)

#### Returns

Expand All @@ -93,7 +93,7 @@ Defined in: [mintlayer-connect-sdk.ts:469](https://github.com/mintlayer/mintlaye

> **request**(`method`, `params`): `Promise`\<`any`\>

Defined in: [mintlayer-connect-sdk.ts:471](https://github.com/mintlayer/mintlayer-connect-sdk/blob/c2e3af8c362a53736f94c0d91571f12868b57f86/packages/sdk/src/mintlayer-connect-sdk.ts#L471)
Defined in: [mintlayer-connect-sdk.ts:476](https://github.com/mintlayer/mintlayer-connect-sdk/blob/e5da6dd553558de82047535da674569c83acf075/packages/sdk/src/mintlayer-connect-sdk.ts#L476)

#### Parameters

Expand All @@ -119,7 +119,7 @@ Defined in: [mintlayer-connect-sdk.ts:471](https://github.com/mintlayer/mintlaye

> **restore**(): `Promise`\<`Address`\>

Defined in: [mintlayer-connect-sdk.ts:465](https://github.com/mintlayer/mintlayer-connect-sdk/blob/c2e3af8c362a53736f94c0d91571f12868b57f86/packages/sdk/src/mintlayer-connect-sdk.ts#L465)
Defined in: [mintlayer-connect-sdk.ts:470](https://github.com/mintlayer/mintlayer-connect-sdk/blob/e5da6dd553558de82047535da674569c83acf075/packages/sdk/src/mintlayer-connect-sdk.ts#L470)

#### Returns

Expand Down
10 changes: 5 additions & 5 deletions packages/sdk/docs/classes/MojitoAccountProvider.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@

***

Defined in: [mintlayer-connect-sdk.ts:261](https://github.com/mintlayer/mintlayer-connect-sdk/blob/c2e3af8c362a53736f94c0d91571f12868b57f86/packages/sdk/src/mintlayer-connect-sdk.ts#L261)
Defined in: [mintlayer-connect-sdk.ts:266](https://github.com/mintlayer/mintlayer-connect-sdk/blob/e5da6dd553558de82047535da674569c83acf075/packages/sdk/src/mintlayer-connect-sdk.ts#L266)

## Implements

Expand All @@ -24,7 +24,7 @@ Defined in: [mintlayer-connect-sdk.ts:261](https://github.com/mintlayer/mintlaye

> **connect**(): `Promise`\<`any`\>

Defined in: [mintlayer-connect-sdk.ts:266](https://github.com/mintlayer/mintlayer-connect-sdk/blob/c2e3af8c362a53736f94c0d91571f12868b57f86/packages/sdk/src/mintlayer-connect-sdk.ts#L266)
Defined in: [mintlayer-connect-sdk.ts:271](https://github.com/mintlayer/mintlayer-connect-sdk/blob/e5da6dd553558de82047535da674569c83acf075/packages/sdk/src/mintlayer-connect-sdk.ts#L271)

Connects to the Mojito wallet extension.

Expand All @@ -44,7 +44,7 @@ Promise that resolves to the connected addresses

> **disconnect**(): `Promise`\<`void`\>

Defined in: [mintlayer-connect-sdk.ts:290](https://github.com/mintlayer/mintlayer-connect-sdk/blob/c2e3af8c362a53736f94c0d91571f12868b57f86/packages/sdk/src/mintlayer-connect-sdk.ts#L290)
Defined in: [mintlayer-connect-sdk.ts:295](https://github.com/mintlayer/mintlayer-connect-sdk/blob/e5da6dd553558de82047535da674569c83acf075/packages/sdk/src/mintlayer-connect-sdk.ts#L295)

Disconnects from the Mojito wallet extension.

Expand All @@ -64,7 +64,7 @@ Promise that resolves when disconnection is complete

> **request**(`method`, `params`): `Promise`\<`any`\>

Defined in: [mintlayer-connect-sdk.ts:304](https://github.com/mintlayer/mintlayer-connect-sdk/blob/c2e3af8c362a53736f94c0d91571f12868b57f86/packages/sdk/src/mintlayer-connect-sdk.ts#L304)
Defined in: [mintlayer-connect-sdk.ts:309](https://github.com/mintlayer/mintlayer-connect-sdk/blob/e5da6dd553558de82047535da674569c83acf075/packages/sdk/src/mintlayer-connect-sdk.ts#L309)

Makes a request to the Mojito wallet extension.

Expand Down Expand Up @@ -98,7 +98,7 @@ Promise that resolves to the response from the wallet

> **restore**(): `Promise`\<`any`\>

Defined in: [mintlayer-connect-sdk.ts:278](https://github.com/mintlayer/mintlayer-connect-sdk/blob/c2e3af8c362a53736f94c0d91571f12868b57f86/packages/sdk/src/mintlayer-connect-sdk.ts#L278)
Defined in: [mintlayer-connect-sdk.ts:283](https://github.com/mintlayer/mintlayer-connect-sdk/blob/e5da6dd553558de82047535da674569c83acf075/packages/sdk/src/mintlayer-connect-sdk.ts#L283)

Restores the session from the Mojito wallet extension.

Expand Down
Loading
Loading