The Rust crate is loyal-smart-accounts-rs, imported in code as loyal_smart_accounts_rs.
Scope
This crate is parity-first, but intentionally narrower than the TypeScript SDK today.
The stable public flow to rely on right now is:
smart_accounts::instructions::create
smart_accounts::prepare::create
client.smart_accounts().create(...)
Do not assume the Rust crate currently matches the full TS feature surface. Today the documented, trustworthy path is the smart-account create flow.
Create A Client
use std::sync::Arc;
use loyal_smart_accounts_rs::{
create_loyal_smart_accounts_client,
LoyalSmartAccountsClientConfig,
};
use solana_client::nonblocking::rpc_client::RpcClient;
let rpc = Arc::new(RpcClient::new("https://api.devnet.solana.com".into()));
let client = create_loyal_smart_accounts_client(LoyalSmartAccountsClientConfig {
rpc,
program_id: None,
default_commitment: None,
sender: None,
confirmer: None,
});
Build The Request
use loyal_smart_accounts_rs::smart_accounts::CreateSmartAccountRequest;
use loyal_smart_accounts_rs::types::{Permissions, SmartAccountSigner};
use solana_sdk::{pubkey::Pubkey, signature::Keypair, signer::Signer};
let creator = Keypair::new();
let request = CreateSmartAccountRequest {
treasury: Pubkey::new_unique(),
creator: creator.pubkey(),
settings: None,
settings_authority: None,
threshold: 1,
signers: vec![SmartAccountSigner {
key: creator.pubkey(),
permissions: Permissions::all(),
}],
time_lock: 0,
rent_collector: None,
memo: None,
program_id: None,
remaining_accounts: vec![],
};
Two Useful Entry Points
Raw Instruction
Use smart_accounts::instructions::create(...) when you want to assemble and send the transaction yourself.
use loyal_smart_accounts_rs::{smart_accounts, PROGRAM_ID};
let instruction = smart_accounts::instructions::create(&request, PROGRAM_ID)?;
Prepare First
Use smart_accounts::prepare::create(...) when you want a prepared operation before send.
use loyal_smart_accounts_rs::{smart_accounts, PROGRAM_ID};
let prepared = smart_accounts::prepare::create(&request, PROGRAM_ID)?;
Send Through The Client
Use client.smart_accounts().create(...) for the direct path.
let signature = client.smart_accounts().create(request, &creator).await?;
What This Means In Practice
- Rust is already useful for creation workflows
- The TS SDK is still the broader integration surface today
- If you need the fullest feature coverage right now, start from TypeScript SDK