> ## Documentation Index
> Fetch the complete documentation index at: https://docs.nullark.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Build with Nullark

Choose a supported Nullark integration path without mixing runtimes or exposing recovery material.

Start from the working flow. Use the browser to understand the product, then use the SDK when your app needs the same deposit, recovery, and withdrawal checks.

Install the TypeScript SDK from npm. The CLI remains a repository-only tool.

## Start with one complete flow

### Run the browser quickstart

[Deposit one note, restore it, and withdraw it](/use/quickstart.md) before integrating any individual layer.

### Choose one boundary

Start with one path: the [TypeScript SDK](/developers/sdk.md), [deposit](/developers/deposit-integration.md), or [withdrawal](/developers/withdrawal-integration.md) guide.

### Verify the exact runtime

Match the network, pool, verifier, proving files, public-input order, fee, and submission path before handling value.

## Choose a surface

| Surface | Public status | Use it for | Important boundary |
| --- | --- | --- | --- |
| Browser app | Chromium tested | Learning and using the complete flow | Recovery and proof material stay in the trusted browser session |
| TypeScript SDK | `@nullark/sdk@0.2.0` | Preparing and validating deposit, private balance, recovery, and withdrawal data | Your app still owns proving, chain reads, wallet review, and submission |
| CLI workspace package | Source distribution | Inspecting runtime and proving-file bindings | It intentionally rejects recovery keys, witnesses, signing, and submission |
| Direct contract calls | Advanced | Specialized, reviewed integrations | Your application owns calldata, signer, gas, retries, and receipt checks |

## Follow a build path

| Goal | Start here | Completion signal |
| --- | --- | --- |
| Wire the package | [TypeScript SDK](/developers/sdk.md) | Clean consumer build plus one restored test deposit |
| Accept one deposit | [Deposit integration](/developers/deposit-integration.md) | Matching pool event and saved recovery authority |
| Submit one withdrawal | [Withdrawal integration](/developers/withdrawal-integration.md) | Matching pool event and spent nullifier read |
| Review relayer boundaries | [Relayer integration](/developers/relayer-integration.md) | No service is treated as active without a deployment-specific authorization |

## How the pieces stay consistent

```mermaid
flowchart TB
  subgraph Client["Trusted client"]
    direction TB
    SELECT["Select one complete runtime"] -->|load matching proving files| PROVE["Restore and prove locally"]
    PROVE -->|review public statement| CHECK{"Network, recipient, amount, and fee correct?"}
    CHECK -->|no| STOP["Stop and rebuild"]
  end

  subgraph Chain["MegaETH settlement"]
    direction TB
    SEND["Relayer or wallet submits once"] -->|call selected pool| POOL["Pool verifies and settles"]
    POOL -->|match event and nullifier| DONE["Withdrawal complete"]
  end

  CHECK -->|yes| SEND
```

| Stage | Required check |
| --- | --- |
| Network | Use one supported runtime from recovery through settlement |
| Recovery | Keep recovery data out of logs, URLs, analytics, flags, and remote services |
| Proof | Use proving files and public-input order published for that runtime |
| Review | Recheck recipient, amount, fee, pool, and chain before submission |
| Submission | Allow only the intended pool, function, value, and deadline |
| Completion | Confirm the pool event and nullifier state, not only a transport response |

## Before submitting value

- [Choose one complete network setup](/developers/runtime-selection.md).
- [Check proving files](/developers/proving-artifacts.md) before building a witness or proof.
- [Validate recovery data](/developers/recovery-format.md) before accepting secret-bearing input.
- [Read the public-input order](/reference/public-inputs.md) before encoding withdrawal calldata.

**Keep secrets in the trusted client.** Never send note secrets, recovery exports, wallet unlock signatures, Merkle witnesses, or proof witnesses to an RPC, relayer, analytics service, or support channel.
