pub async fn send_file_dm(
receiver_npub: &str,
file_bytes: Arc<Vec<u8>>,
filename: &str,
extension: &str,
content: Option<&str>,
config: &SendConfig,
callback: Arc<dyn SendCallback>,
) -> Result<SendResult, String>Expand description
Send a NIP-17 gift-wrapped file attachment DM.
Flow: hash → save locally → encrypt → upload → build Kind 15 rumor → gift-wrap + send.