PrivatarSDK preview

Sync quietly. Send when ready.

Background sync progress and readiness for a particular transfer are separate wallet states.

A compact view at the top

The Android app and Chrome wallet show one discreet global progress bar at the top while synchronization is incomplete. It starts collapsed. Tap or click it to inspect Shielded, Unshielded and DUST percentages and applied/total positions. It disappears when every stream is complete.

The global percentage is the lowest of the three connected stream percentages. It is a summary of SDK progress, not an estimate of downloaded bytes or time remaining. If a stream has no known percentage or is disconnected, the summary does not invent a percentage. A connection error shows Connection paused. Totals can increase, so progress can move backwards as the network advances.

Why three streams?

StreamWhat it updates
ShieldedPrivate asset notes, spendable inputs and proof state.
UnshieldedPublic token outputs, including NIGHT, and their spendable state.
DUSTThe private resource state used to construct and pay transaction fees.

These streams advance independently. The separate DUST current/capacity rail describes generation and decay; it is not synchronization progress. Sync is not downloading your recovery phrase or transferring custody to a server. Public proof material is bundled with the wallet.

Send before full sync

Send is accessible as soon as the wallet is open. You can enter details while it connects. Review becomes available when the selected asset stream and DUST stream are connected and the wallet has balance state. Ordinary shielded and unshielded transfers do not require all stream percentages to reach 100%.

The engine checks the actual SDK available balance and recipient network, selects and reserves inputs, builds the transfer and DUST fee, and creates a short-lived review. The owner still approves the exact recipient, asset, amount, network and fee. The engine signs, produces the required proof and checks the fee again before submitting. A disconnected required stream, missing funds, unusable DUST, expired review, failed proof or increased fee prevents completion.

A newly created or restored wallet may still need more state before it has usable inputs. Early sending is an opportunity when the transaction can be built, not a guarantee that every wallet can send immediately. Submitted remains pending until the network confirms it. Check Activity before retrying after an interrupted submission.

Partial balances and history

Balances and Activity can appear while synchronization continues. They may be incomplete and can change as more state arrives. Available funds exclude reserved inputs; a pending review can therefore reduce the spendable amount before submission. A partial or unavailable balance must not be presented as a final zero. The SDK reports syncStatus and observedAt with balance reads.

A dApp connection approves scoped access independently of network synchronization. It does not mean the wallet is fully caught up. Keep Connected, authentication verified, syncing and transaction confirmed distinct.

Reconnect and resume

Privatar saves encrypted sync checkpoints locally to reduce work on the next unlock. Checkpoints are a cache, not a replacement for live network verification; an unusable cache falls back to fresh synchronization. Wallet lock and network switches invalidate in-flight operations and reviews. Retry a paused connection before submitting. Never restore a wallet or disclose recovery words merely to finish sync.

Privatar · Midnight wallet & connection SDKPreview documentation · October 2026