spark_rust/wallet/internal_handlers/traits/
lightning.rs

1use 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}