v0.1.0 - Initial release
First publishable release of `solana-token-toolkit`.
What's in v0.1
- Tier 1 (state): `fetch_token_account_state`, `assemble_token_account_state`
- Tier 2 (mint extensions): `get_token_mint_and_transfer_fee`, `detect_transfer_hooks`, `reject_transfer_hook_mints` (Token-2022 `TransferFeeConfig` + `TransferHook` parsing)
- Tier 3 (ATA workflow): `prepare_token_accounts` with `WrapSolStrategy::{Ata, Keypair, None}` and full ephemeral-keypair wSOL wrapping path
Key design decisions
- No global mutable state — `WrapSolStrategy` is per-call
- Caller-provided rent — Tier 3 stays synchronous
- Deterministic instruction order — `prepare_token_accounts` sorts by mint pubkey
- Typed errors throughout — no `anyhow` in public API
- `WrapSolStrategy::Seed` intentionally NOT supported (protocol-specific to certain DEX implementations, not portable)
Testing
30 tests passing:
- 15 unit tests
- 9 integration tests (3 LiteSVM-backed verifying Token-2022 mint extension parsing against real on-chain bytes)
- 6 doc tests
Compatibility
- Rust 1.81+ (MSRV 1.89 in Cargo.toml due to current solana-client 3.x requirement)
- Solana SDK 3.x split crates
- `spl-token-2022-interface` 2.x
v0.2 deferred items
- Caller-controlled `Keypair` signer for `WrapSolStrategy::Keypair` (e.g. multisig)
- `TransferHookInfo.authority` field
- `close_atas` / `sync_native_only` standalone helpers (only if external feedback warrants)