Skip to main content
The SDK does not own a wallet. It defines a minimal contract and signs through whatever you hand it.
Three methods, one of them optional. Nothing derived from a signer is ever sent to the API except a signature.

The bundled adapters

ethers and viem are optional peers, imported only from their own subpath. A consumer using neither installs neither.

Why signTransaction is optional

A KMS, MPC, or browser-wallet signer can sign typed data but not a raw transaction. That is deliberately enough for:
  • the entire brickken-relayed path — your key signs only the x402 payment authorization, which is EIP-712 typed data;
  • every RAMS EIP-712 flow, including the four signature-authorized lifecycle operations.
Requiring signTransaction would exclude exactly the custody setups an institutional integrator uses. What it does exclude is client-signed and client-broadcast: those need a raw transaction signature, and the SDK throws ValidationError locally if the configured signer cannot produce one.

Bring your own

Implement the three methods against your provider. Nothing else is required.
Adapters must forward the TransactionRequest to the underlying library as-is, rather than rebuilding it field by field. Prepare may include fee or type fields the SDK does not model, and dropping them changes what gets signed.

Address checking

For client-signed and client-broadcast writes, the SDK compares the configured signer’s address against the signerAddress you passed and refuses a mismatch locally, case-insensitively — before any transaction is signed.
In brickken-relayed mode signerAddress must be omitted: Brickken supplies its relayer as the signer, and passing one raises ValidationError.

Authentication

Which credential the SDK derives from what you pass.