spark_rust/wallet/internal_handlers/traits/
lightning.rs1use crate::error::SparkSdkError;
2use crate::signer::traits::SparkSigner;
3use crate::wallet::internal_handlers::traits::transfer::LeafKeyTweak;
4use bitcoin::{hashes::sha256, secp256k1::PublicKey};
5use lightning_invoice::Bolt11Invoice;
6use spark_protos::spark::{
7 InitiatePreimageSwapResponse, RequestedSigningCommitments, UserSignedRefund,
8};
9use tonic::async_trait;
10
11#[cfg(test)]
12use spark_protos::spark::Transfer;
13
14#[async_trait]
15pub(crate) trait LightningInternalHandlers<S: SparkSigner + Send + Sync> {
16 async fn swap_nodes_for_preimage(
17 &self,
18 leaves: Vec<LeafKeyTweak>,
19 receiver_identity_pubkey: &PublicKey,
20 payment_hash: &sha256::Hash,
21 invoice: &Bolt11Invoice,
22 invoice_amount_sats: u64,
23 fee_sats: u64,
24 is_inbound_payment: bool,
25 ) -> Result<InitiatePreimageSwapResponse, SparkSdkError>;
26
27 async fn sign_lightning_refunds(
28 &self,
29 leaves: Vec<LeafKeyTweak>,
30 spark_commitments: Vec<RequestedSigningCommitments>,
31 receiver_pubkey: &PublicKey,
32 ) -> Result<Vec<UserSignedRefund>, SparkSdkError>;
33
34 #[cfg(test)]
35 #[allow(dead_code)]
36 async fn provide_preimage(&self, preimage: Vec<u8>) -> Result<Transfer, SparkSdkError>;
37}