spark_sdk/signer/traits/
frost_signing.rs1use std::collections::HashMap;
3use std::sync::Arc;
4
5use bitcoin::secp256k1::PublicKey;
6use parking_lot::RwLock;
7use spark_protos::common::SigningCommitment;
8use spark_protos::frost::AggregateFrostRequest;
9use spark_protos::frost::AggregateFrostResponse;
10use spark_protos::frost::FrostSigningJob;
11use spark_protos::frost::SignFrostResponse;
12use spark_protos::spark::LeafRefundTxSigningResult;
13use spark_protos::spark::NodeSignatures;
14use spark_protos::spark::RequestedSigningCommitments;
15
16use crate::error::SparkSdkError;
17use crate::wallet::internal_handlers::traits::create_tree::DepositAddressTree;
18use crate::wallet::internal_handlers::traits::transfer::LeafKeyTweak;
19use crate::wallet::internal_handlers::traits::transfer::LeafRefundSigningData;
20
21pub trait SparkSignerFrostSigning {
22 fn sign_frost(
30 &self,
31 signing_jobs: Vec<FrostSigningJob>,
32 ) -> Result<SignFrostResponse, SparkSdkError>;
33
34 fn aggregate_frost(
42 &self,
43 request: AggregateFrostRequest,
44 ) -> Result<AggregateFrostResponse, SparkSdkError>;
45
46 fn sign_created_tree_in_bfs_order(
47 &self,
48 tx: bitcoin::Transaction,
49 vout: u32,
50 internal_tree_root: Arc<RwLock<DepositAddressTree>>,
51 request_tree_root: spark_protos::spark::CreationNode,
52 creation_result_tree_root: spark_protos::spark::CreationResponseNode,
53 ) -> Result<(Vec<NodeSignatures>, Vec<Vec<u8>>), SparkSdkError>;
54
55 fn sign_transfer_refunds(
56 &self,
57 leaf_data_map: &HashMap<String, LeafRefundSigningData>,
58 operator_signing_results: &Vec<LeafRefundTxSigningResult>,
59 adaptor_public_key: Vec<u8>,
60 ) -> Result<Vec<NodeSignatures>, SparkSdkError>;
61
62 fn sign_for_lightning_swap(
63 &self,
64 leaves: &Vec<LeafKeyTweak>,
65 signing_commitments: &Vec<RequestedSigningCommitments>,
66 receiver_identity_pubkey: PublicKey,
67 ) -> Result<(SignFrostResponse, Vec<Vec<u8>>, Vec<SigningCommitment>), SparkSdkError>;
68}