A token account the call needs does not exist.
The token account has no confidential-transfer extension; run configureAccount first.
configureAccount on an account that is already configured.
The account is configured but not approved by the mint's confidential-transfer authority.
The recipient's account does not accept confidential transfers (allowConfidentialCredits off).
The account has taken as many incoming deposits and transfers as it allows before applyPendingBalance. The owner must apply the pending balance first.
More than the available (or public, for a deposit) balance.
Above what one deposit or transfer can carry: 2^48 - 1 base units.
The keys passed are not the keys the account is configured with.
The recipient's ElGamal key, as the RPC returned it, is not the one the caller pinned with
destinationElgamalPubkey. Nothing was encrypted to it or signed.
A balance could not be decrypted (wrong keys, or a pending total beyond what can be decrypted).
The AES copy of the available balance has fallen behind the encrypted balance by more than the SDK can recover (2^32 base units or more). Happens when credits arrive during an apply.
Data in a format or version this release does not know, refused rather than misread: an
auditor report written by a newer release, or a cryptography library that would derive keys
from a message other than solana-conf-bal/v1. See docs/formats.md.
The signer cannot sign messages, which the confidential keys come from.
The wallet changed the message it was asked to sign, or returned a signature that does not verify.
The zk-sdk WebAssembly could not be loaded (browser).
A transaction failed in simulation or on chain, or the RPC node refused it; logs has the
program logs.
A transaction was not confirmed before its blockhash expired, and the RPC confirms it did not land. Safe to retry.
A transaction was sent, but whether it landed could not be found out: no confirmation arrived
and its status could not be read, even after its blockhash expired. It may have landed. Look
up signature before running the call again. Never retried.
The RPC node did not serve something the call needs, for example a transaction that its own
history lists. Use an RPC that keeps the full history. (Other failed requests reach the caller
as @solana/kit errors.)
An argument is invalid (zero amount, missing destination, malformed address).