breez_sdk_spark/signer/
external_spark.rs1use crate::error::SignerError;
10
11use super::external_spark_types::{
12 ExternalFrostJob, ExternalFrostShareResult, ExternalPrepareClaimRequest,
13 ExternalPrepareLightningReceiveRequest, ExternalPrepareStaticDepositClaimRequest,
14 ExternalPrepareStaticDepositRequest, ExternalPrepareTokenTransactionRequest,
15 ExternalPrepareTransferRequest, ExternalPreparedClaim, ExternalPreparedLightningReceive,
16 ExternalPreparedStaticDeposit, ExternalPreparedStaticDepositClaim,
17 ExternalPreparedTokenTransaction, ExternalPreparedTransfer, ExternalSignSparkInvoiceRequest,
18 ExternalSignStaticDepositRefundRequest, ExternalSignWatchtowerExitRecoveryRequest,
19 ExternalSignedSparkInvoice, ExternalStartStaticDepositRefundRequest,
20 ExternalStartWatchtowerExitRecoveryRequest, ExternalStartedStaticDepositRefund,
21 ExternalStartedWatchtowerExitRecovery,
22};
23use super::external_types::{
24 EcdsaSignatureBytes, ExternalFrostSignature, ExternalTreeNodeId, PublicKeyBytes,
25 SchnorrSignatureBytes,
26};
27
28#[cfg_attr(
30 feature = "uniffi",
31 uniffi::export(with_foreign, async_runtime = "tokio")
32)]
33#[macros::async_trait]
34pub trait ExternalSparkSigner: Send + Sync {
35 async fn get_identity_public_key(&self) -> Result<PublicKeyBytes, SignerError>;
37
38 async fn get_public_key_for_leaf(
40 &self,
41 leaf_id: ExternalTreeNodeId,
42 ) -> Result<PublicKeyBytes, SignerError>;
43
44 fn is_remote(&self) -> bool {
50 false
51 }
52
53 async fn get_static_deposit_public_key(
55 &self,
56 index: u32,
57 ) -> Result<PublicKeyBytes, SignerError>;
58
59 async fn sign_authentication_challenge(
61 &self,
62 challenge: Vec<u8>,
63 ) -> Result<EcdsaSignatureBytes, SignerError>;
64
65 async fn sign_message(&self, message: Vec<u8>) -> Result<EcdsaSignatureBytes, SignerError>;
67
68 async fn sign_leaf_refund_spend(
72 &self,
73 leaf_id: ExternalTreeNodeId,
74 sighash: Vec<u8>,
75 ) -> Result<SchnorrSignatureBytes, SignerError>;
76
77 async fn sign_frost(
79 &self,
80 jobs: Vec<ExternalFrostJob>,
81 ) -> Result<Vec<ExternalFrostShareResult>, SignerError>;
82
83 async fn prepare_transfer(
85 &self,
86 request: ExternalPrepareTransferRequest,
87 ) -> Result<ExternalPreparedTransfer, SignerError>;
88
89 async fn prepare_claim(
91 &self,
92 request: ExternalPrepareClaimRequest,
93 ) -> Result<ExternalPreparedClaim, SignerError>;
94
95 async fn prepare_lightning_receive(
97 &self,
98 request: ExternalPrepareLightningReceiveRequest,
99 ) -> Result<ExternalPreparedLightningReceive, SignerError>;
100
101 async fn prepare_static_deposit(
103 &self,
104 request: ExternalPrepareStaticDepositRequest,
105 ) -> Result<ExternalPreparedStaticDeposit, SignerError>;
106
107 async fn start_static_deposit_refund(
114 &self,
115 request: ExternalStartStaticDepositRefundRequest,
116 ) -> Result<ExternalStartedStaticDepositRefund, SignerError>;
117
118 async fn sign_static_deposit_refund(
120 &self,
121 request: ExternalSignStaticDepositRefundRequest,
122 ) -> Result<ExternalFrostSignature, SignerError>;
123
124 async fn start_watchtower_exit_recovery(
134 &self,
135 request: ExternalStartWatchtowerExitRecoveryRequest,
136 ) -> Result<ExternalStartedWatchtowerExitRecovery, SignerError>;
137
138 async fn sign_watchtower_exit_recovery(
142 &self,
143 request: ExternalSignWatchtowerExitRecoveryRequest,
144 ) -> Result<ExternalFrostSignature, SignerError>;
145
146 async fn sign_spark_invoice(
148 &self,
149 request: ExternalSignSparkInvoiceRequest,
150 ) -> Result<ExternalSignedSparkInvoice, SignerError>;
151
152 async fn prepare_token_transaction(
154 &self,
155 request: ExternalPrepareTokenTransactionRequest,
156 ) -> Result<ExternalPreparedTokenTransaction, SignerError>;
157
158 async fn prepare_static_deposit_claim(
160 &self,
161 request: ExternalPrepareStaticDepositClaimRequest,
162 ) -> Result<ExternalPreparedStaticDepositClaim, SignerError>;
163}