pub struct TransactOptions {
// Params
pub inputs: Vec<Utxo>,
pub outputs: Vec<Utxo>,
pub external_amount: i64,
pub mint: Option<Pubkey>,
pub recipient: Option<Pubkey>,
// Relay + submission
pub relay_url: Option<String>,
pub max_root_retries: Option<u32>,
pub relayer: Option<Pubkey>,
pub relayer_fee: u64,
// Risk oracle
pub enable_risk_check: bool,
pub risk_quote_url: Option<String>,
// Viewing key
pub require_viewing_key: bool,
pub chain_note_nk: Option<[u8; 32]>,
// Caching / chaining
pub cached_merkle_tree: Option<MerkleTree>,
pub address_lookup_table_accounts: Vec<AddressLookupTableAccount>,
// ALT + retry tuning
pub alt_warmup_ms: Option<u64>,
pub transport_backoff_base_ms: Option<u64>,
// Swap-specific
pub swap: Option<SwapOptions>,
pub swap_status_max_attempts: Option<u32>,
pub swap_status_delay_ms: Option<u64>,
// Handles
pub rpc: Option<Arc<dyn RpcProvider>>,
pub payer: Option<Arc<Keypair>>,
}