use lightning_signer::prelude::SendSync;
use vls_protocol_signer::approver::Approve;
pub struct ReportingApprover<A: Approve> {
inner: A,
}
impl<A: Approve> ReportingApprover<A> {
pub fn new(delegate: A) -> Self {
ReportingApprover { inner: delegate }
}
}
impl<A: Approve> Approve for ReportingApprover<A> {
fn approve_invoice(&self, inv: &lightning_signer::invoice::Invoice) -> bool {
log::warn!("unapproved invoice: {:?}", inv);
self.inner.approve_invoice(inv)
}
fn approve_keysend(
&self,
hash: lightning_signer::lightning::types::payment::PaymentHash,
amount_msat: u64,
) -> bool {
log::warn!("unapproved keysend {:?} {:?}", hash, amount_msat);
self.inner.approve_keysend(hash, amount_msat)
}
fn approve_onchain(
&self,
tx: &lightning_signer::bitcoin::Transaction,
values_sat: &[lightning_signer::bitcoin::TxOut],
unknown_indices: &[usize],
) -> bool {
log::warn!(
"unapproved onchain {:?} {:?} {:?}",
tx,
values_sat,
unknown_indices
);
self.inner.approve_onchain(tx, values_sat, unknown_indices)
}
}
impl<A: Approve> SendSync for ReportingApprover<A> {}