pub struct LightningClientModule {
pub cfg: LightningClientConfig,
pub(crate) notifier: ModuleNotifier<LightningClientStateMachines>,
pub(crate) redeem_key: Keypair,
pub(crate) secp: Secp256k1<All>,
pub(crate) module_api: DynModuleApi,
pub(crate) preimage_auth: Keypair,
pub(crate) client_ctx: ClientContext<Self>,
pub(crate) update_gateway_cache_merge: UpdateMerge,
pub(crate) gateway_conn: Arc<dyn GatewayConnection + Send + Sync>,
}
Expand description
Client side lightning module
Note that lightning gateways use a different version of client side module.
Fields§
§cfg: LightningClientConfig
§notifier: ModuleNotifier<LightningClientStateMachines>
§redeem_key: Keypair
§secp: Secp256k1<All>
§module_api: DynModuleApi
§preimage_auth: Keypair
§client_ctx: ClientContext<Self>
§update_gateway_cache_merge: UpdateMerge
§gateway_conn: Arc<dyn GatewayConnection + Send + Sync>
Implementations§
Source§impl LightningClientModule
impl LightningClientModule
pub(crate) fn new( args: &ClientModuleInitArgs<LightningClientInit>, gateway_conn: Arc<dyn GatewayConnection + Send + Sync>, ) -> Self
pub(crate) async fn get_prev_payment_result( &self, payment_hash: &Hash, dbtx: &mut DatabaseTransaction<'_>, ) -> PaymentResult
pub(crate) fn get_payment_operation_id( payment_hash: &Hash, index: u16, ) -> OperationId
Sourcepub(crate) fn get_preimage_authentication(&self, payment_hash: &Hash) -> Hash
pub(crate) fn get_preimage_authentication(&self, payment_hash: &Hash) -> Hash
Hashes the client’s preimage authentication secret with the provided
payment_hash
. The resulting hash is used when contacting the
gateway to determine if this client is allowed to be shown the
preimage.
Sourcepub(crate) async fn create_outgoing_output<'a, 'b>(
&'a self,
operation_id: OperationId,
invoice: Bolt11Invoice,
gateway: LightningGateway,
fed_id: FederationId,
rng: impl RngCore + CryptoRng + 'a,
) -> Result<(ClientOutput<LightningOutputV0>, ClientOutputSM<LightningClientStateMachines>, ContractId)>
pub(crate) async fn create_outgoing_output<'a, 'b>( &'a self, operation_id: OperationId, invoice: Bolt11Invoice, gateway: LightningGateway, fed_id: FederationId, rng: impl RngCore + CryptoRng + 'a, ) -> Result<(ClientOutput<LightningOutputV0>, ClientOutputSM<LightningClientStateMachines>, ContractId)>
Create an output that incentivizes a Lightning gateway to pay an invoice
for us. It has time till the block height defined by timelock
,
after that we can claim our money back.
Sourcepub(crate) async fn create_incoming_output(
&self,
operation_id: OperationId,
invoice: Bolt11Invoice,
) -> Result<(ClientOutput<LightningOutputV0>, ClientOutputSM<LightningClientStateMachines>, ContractId)>
pub(crate) async fn create_incoming_output( &self, operation_id: OperationId, invoice: Bolt11Invoice, ) -> Result<(ClientOutput<LightningOutputV0>, ClientOutputSM<LightningClientStateMachines>, ContractId)>
Create an output that funds an incoming contract within the federation This directly completes a transaction between users, without involving a gateway
Sourcepub(crate) async fn await_receive_success(
&self,
operation_id: OperationId,
) -> Result<bool, LightningReceiveError>
pub(crate) async fn await_receive_success( &self, operation_id: OperationId, ) -> Result<bool, LightningReceiveError>
Returns a bool indicating if it was an external receive
pub(crate) async fn await_claim_acceptance( &self, operation_id: OperationId, ) -> Result<Vec<OutPoint>, LightningReceiveError>
pub(crate) fn create_lightning_receive_output<'a>( &'a self, amount: Amount, description: Bolt11InvoiceDescription<'a>, receiving_key: ReceivingKey, rng: impl RngCore + CryptoRng + 'a, expiry_time: Option<u64>, src_node_id: PublicKey, short_channel_id: u64, route_hints: &[RouteHint], network: Network, ) -> Result<(OperationId, Bolt11Invoice, ClientOutputBundle<LightningOutput, LightningClientStateMachines>, [u8; 32])>
Sourcepub async fn select_gateway(
&self,
gateway_id: &PublicKey,
) -> Option<LightningGateway>
pub async fn select_gateway( &self, gateway_id: &PublicKey, ) -> Option<LightningGateway>
Selects a Lightning Gateway from a given gateway_id
from the gateway
cache.
Sourcepub async fn update_gateway_cache(&self) -> Result<()>
pub async fn update_gateway_cache(&self) -> Result<()>
Updates the gateway cache by fetching the latest registered gateways from the federation.
See also Self::update_gateway_cache_continuously
.
Sourcepub async fn update_gateway_cache_continuously<Fut>(
&self,
gateways_filter: impl Fn(Vec<LightningGatewayAnnouncement>) -> Fut,
) -> !
pub async fn update_gateway_cache_continuously<Fut>( &self, gateways_filter: impl Fn(Vec<LightningGatewayAnnouncement>) -> Fut, ) -> !
Continuously update the gateway cache whenever a gateway expires.
The gateways returned by gateway_filters
are checked for expiry.
Client integrators are expected to call this function in a spawned task.
Sourcepub async fn list_gateways(&self) -> Vec<LightningGatewayAnnouncement>
pub async fn list_gateways(&self) -> Vec<LightningGatewayAnnouncement>
Returns all gateways that are currently in the gateway cache.
Sourcepub async fn pay_bolt11_invoice<M: Serialize + MaybeSend + MaybeSync>(
&self,
maybe_gateway: Option<LightningGateway>,
invoice: Bolt11Invoice,
extra_meta: M,
) -> Result<OutgoingLightningPayment>
pub async fn pay_bolt11_invoice<M: Serialize + MaybeSend + MaybeSync>( &self, maybe_gateway: Option<LightningGateway>, invoice: Bolt11Invoice, extra_meta: M, ) -> Result<OutgoingLightningPayment>
Pays a LN invoice with our available funds using the supplied gateway
if one was provided and the invoice is not an internal one. If none is
supplied only internal payments are possible.
The gateway
can be acquired by calling
LightningClientModule::select_gateway
.
Can return error of type PayBolt11InvoiceError
pub async fn get_ln_pay_details_for( &self, operation_id: OperationId, ) -> Result<LightningOperationMetaPay>
pub async fn subscribe_internal_pay( &self, operation_id: OperationId, ) -> Result<UpdateStreamOrOutcome<InternalPayState>>
Sourcepub async fn subscribe_ln_pay(
&self,
operation_id: OperationId,
) -> Result<UpdateStreamOrOutcome<LnPayState>>
pub async fn subscribe_ln_pay( &self, operation_id: OperationId, ) -> Result<UpdateStreamOrOutcome<LnPayState>>
Subscribes to a stream of updates about a particular external Lightning
payment operation specified by the operation_id
.
Sourcepub async fn scan_receive_for_user_tweaked<M: Serialize + Send + Sync + Clone>(
&self,
key_pair: Keypair,
indices: Vec<u64>,
extra_meta: M,
) -> Vec<OperationId>
pub async fn scan_receive_for_user_tweaked<M: Serialize + Send + Sync + Clone>( &self, key_pair: Keypair, indices: Vec<u64>, extra_meta: M, ) -> Vec<OperationId>
Scan unspent incoming contracts for a payment hash that matches a
tweaked keys in the indices
vector
Sourcepub async fn scan_receive_for_user<M: Serialize + Send + Sync>(
&self,
key_pair: Keypair,
extra_meta: M,
) -> Result<OperationId>
pub async fn scan_receive_for_user<M: Serialize + Send + Sync>( &self, key_pair: Keypair, extra_meta: M, ) -> Result<OperationId>
Scan unspent incoming contracts for a payment hash that matches a public key and claim the incoming contract
Sourcepub async fn claim_funded_incoming_contract<M: Serialize + Send + Sync>(
&self,
key_pair: Keypair,
contract_id: ContractId,
extra_meta: M,
) -> Result<OperationId>
pub async fn claim_funded_incoming_contract<M: Serialize + Send + Sync>( &self, key_pair: Keypair, contract_id: ContractId, extra_meta: M, ) -> Result<OperationId>
Claim the funded, unspent incoming contract by submitting a transaction to the federation and awaiting the primary module’s outputs
Sourcepub async fn create_bolt11_invoice<M: Serialize + Send + Sync>(
&self,
amount: Amount,
description: Bolt11InvoiceDescription<'_>,
expiry_time: Option<u64>,
extra_meta: M,
gateway: Option<LightningGateway>,
) -> Result<(OperationId, Bolt11Invoice, [u8; 32])>
pub async fn create_bolt11_invoice<M: Serialize + Send + Sync>( &self, amount: Amount, description: Bolt11InvoiceDescription<'_>, expiry_time: Option<u64>, extra_meta: M, gateway: Option<LightningGateway>, ) -> Result<(OperationId, Bolt11Invoice, [u8; 32])>
Receive over LN with a new invoice
Sourcepub async fn create_bolt11_invoice_for_user_tweaked<M: Serialize + Send + Sync>(
&self,
amount: Amount,
description: Bolt11InvoiceDescription<'_>,
expiry_time: Option<u64>,
user_key: PublicKey,
index: u64,
extra_meta: M,
gateway: Option<LightningGateway>,
) -> Result<(OperationId, Bolt11Invoice, [u8; 32])>
pub async fn create_bolt11_invoice_for_user_tweaked<M: Serialize + Send + Sync>( &self, amount: Amount, description: Bolt11InvoiceDescription<'_>, expiry_time: Option<u64>, user_key: PublicKey, index: u64, extra_meta: M, gateway: Option<LightningGateway>, ) -> Result<(OperationId, Bolt11Invoice, [u8; 32])>
Receive over LN with a new invoice for another user, tweaking their key by the given index
Sourcepub async fn create_bolt11_invoice_for_user<M: Serialize + Send + Sync>(
&self,
amount: Amount,
description: Bolt11InvoiceDescription<'_>,
expiry_time: Option<u64>,
user_key: PublicKey,
extra_meta: M,
gateway: Option<LightningGateway>,
) -> Result<(OperationId, Bolt11Invoice, [u8; 32])>
pub async fn create_bolt11_invoice_for_user<M: Serialize + Send + Sync>( &self, amount: Amount, description: Bolt11InvoiceDescription<'_>, expiry_time: Option<u64>, user_key: PublicKey, extra_meta: M, gateway: Option<LightningGateway>, ) -> Result<(OperationId, Bolt11Invoice, [u8; 32])>
Receive over LN with a new invoice for another user
Sourcepub(crate) async fn create_bolt11_invoice_internal<M: Serialize + Send + Sync>(
&self,
amount: Amount,
description: Bolt11InvoiceDescription<'_>,
expiry_time: Option<u64>,
receiving_key: ReceivingKey,
extra_meta: M,
gateway: Option<LightningGateway>,
) -> Result<(OperationId, Bolt11Invoice, [u8; 32])>
pub(crate) async fn create_bolt11_invoice_internal<M: Serialize + Send + Sync>( &self, amount: Amount, description: Bolt11InvoiceDescription<'_>, expiry_time: Option<u64>, receiving_key: ReceivingKey, extra_meta: M, gateway: Option<LightningGateway>, ) -> Result<(OperationId, Bolt11Invoice, [u8; 32])>
Receive over LN with a new invoice
pub async fn subscribe_ln_claim( &self, operation_id: OperationId, ) -> Result<UpdateStreamOrOutcome<LnReceiveState>>
pub async fn subscribe_ln_receive( &self, operation_id: OperationId, ) -> Result<UpdateStreamOrOutcome<LnReceiveState>>
Sourcepub async fn get_gateway(
&self,
gateway_id: Option<PublicKey>,
force_internal: bool,
) -> Result<Option<LightningGateway>>
pub async fn get_gateway( &self, gateway_id: Option<PublicKey>, force_internal: bool, ) -> Result<Option<LightningGateway>>
Returns a gateway to be used for a lightning operation. If
force_internal
is true and no gateway_id
is specified, no
gateway will be selected.
pub async fn wait_for_ln_payment( &self, payment_type: PayType, contract_id: ContractId, return_on_funding: bool, ) -> Result<Option<Value>>
Trait Implementations§
Source§impl ClientModule for LightningClientModule
impl ClientModule for LightningClientModule
type Init = LightningClientInit
Source§type Common = LightningModuleTypes
type Common = LightningModuleTypes
Source§type Backup = NoModuleBackup
type Backup = NoModuleBackup
Source§type ModuleStateMachineContext = LightningClientContext
type ModuleStateMachineContext = LightningClientContext
Source§type States = LightningClientStateMachines
type States = LightningClientStateMachines
fn context(&self) -> Self::ModuleStateMachineContext
Source§fn input_fee(
&self,
_amount: Amount,
_input: &<Self::Common as ModuleCommon>::Input,
) -> Option<Amount>
fn input_fee( &self, _amount: Amount, _input: &<Self::Common as ModuleCommon>::Input, ) -> Option<Amount>
Source§fn output_fee(
&self,
_amount: Amount,
output: &<Self::Common as ModuleCommon>::Output,
) -> Option<Amount>
fn output_fee( &self, _amount: Amount, output: &<Self::Common as ModuleCommon>::Output, ) -> Option<Amount>
fn handle_cli_command<'life0, 'life1, 'async_trait>(
&'life0 self,
args: &'life1 [OsString],
) -> Pin<Box<dyn Future<Output = Result<Value>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
fn handle_rpc<'life0, 'async_trait>(
&'life0 self,
method: String,
payload: Value,
) -> Pin<Box<dyn Future<Output = BoxStream<'_, Result<Value>>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
fn decoder() -> Decoder
fn kind() -> ModuleKind
Source§fn start<'life0, 'async_trait>(
&'life0 self,
) -> Pin<Box<dyn Future<Output = ()> + Send + 'async_trait>>where
'life0: 'async_trait,
Self: Sync + 'async_trait,
fn start<'life0, 'async_trait>(
&'life0 self,
) -> Pin<Box<dyn Future<Output = ()> + Send + 'async_trait>>where
'life0: 'async_trait,
Self: Sync + 'async_trait,
fn supports_backup(&self) -> bool
fn backup<'life0, 'async_trait>(
&'life0 self,
) -> Pin<Box<dyn Future<Output = Result<Self::Backup, Error>> + Send + 'async_trait>>where
'life0: 'async_trait,
Self: Sync + 'async_trait,
Source§fn supports_being_primary(&self) -> bool
fn supports_being_primary(&self) -> bool
Source§fn create_final_inputs_and_outputs<'life0, 'life1, 'life2, 'async_trait>(
&'life0 self,
_dbtx: &'life1 mut DatabaseTransaction<'life2>,
_operation_id: OperationId,
_input_amount: Amount,
_output_amount: Amount,
) -> Pin<Box<dyn Future<Output = Result<(ClientInputBundle<<Self::Common as ModuleCommon>::Input, Self::States>, ClientOutputBundle<<Self::Common as ModuleCommon>::Output, Self::States>), Error>> + Send + 'async_trait>>where
'life0: 'async_trait,
'life1: 'async_trait,
'life2: 'async_trait,
Self: Sync + 'async_trait,
fn create_final_inputs_and_outputs<'life0, 'life1, 'life2, 'async_trait>(
&'life0 self,
_dbtx: &'life1 mut DatabaseTransaction<'life2>,
_operation_id: OperationId,
_input_amount: Amount,
_output_amount: Amount,
) -> Pin<Box<dyn Future<Output = Result<(ClientInputBundle<<Self::Common as ModuleCommon>::Input, Self::States>, ClientOutputBundle<<Self::Common as ModuleCommon>::Output, Self::States>), Error>> + Send + 'async_trait>>where
'life0: 'async_trait,
'life1: 'async_trait,
'life2: 'async_trait,
Self: Sync + 'async_trait,
Source§fn await_primary_module_output<'life0, 'async_trait>(
&'life0 self,
_operation_id: OperationId,
_out_point: OutPoint,
) -> Pin<Box<dyn Future<Output = Result<Amount, Error>> + Send + 'async_trait>>where
'life0: 'async_trait,
Self: Sync + 'async_trait,
fn await_primary_module_output<'life0, 'async_trait>(
&'life0 self,
_operation_id: OperationId,
_out_point: OutPoint,
) -> Pin<Box<dyn Future<Output = Result<Amount, Error>> + Send + 'async_trait>>where
'life0: 'async_trait,
Self: Sync + 'async_trait,
Self::create_final_inputs_and_outputs
to become available. This
function returning typically implies a change in the output of
Self::get_balance
.Source§fn get_balance<'life0, 'life1, 'life2, 'async_trait>(
&'life0 self,
_dbtx: &'life1 mut DatabaseTransaction<'life2>,
) -> Pin<Box<dyn Future<Output = Amount> + Send + 'async_trait>>where
'life0: 'async_trait,
'life1: 'async_trait,
'life2: 'async_trait,
Self: Sync + 'async_trait,
fn get_balance<'life0, 'life1, 'life2, 'async_trait>(
&'life0 self,
_dbtx: &'life1 mut DatabaseTransaction<'life2>,
) -> Pin<Box<dyn Future<Output = Amount> + Send + 'async_trait>>where
'life0: 'async_trait,
'life1: 'async_trait,
'life2: 'async_trait,
Self: Sync + 'async_trait,
Source§fn subscribe_balance_changes<'life0, 'async_trait>(
&'life0 self,
) -> Pin<Box<dyn Future<Output = Pin<Box<dyn Stream<Item = ()> + Send>>> + Send + 'async_trait>>where
'life0: 'async_trait,
Self: Sync + 'async_trait,
fn subscribe_balance_changes<'life0, 'async_trait>(
&'life0 self,
) -> Pin<Box<dyn Future<Output = Pin<Box<dyn Stream<Item = ()> + Send>>> + Send + 'async_trait>>where
'life0: 'async_trait,
Self: Sync + 'async_trait,
Source§fn leave<'life0, 'life1, 'life2, 'async_trait>(
&'life0 self,
_dbtx: &'life1 mut DatabaseTransaction<'life2>,
) -> Pin<Box<dyn Future<Output = Result<(), Error>> + Send + 'async_trait>>where
'life0: 'async_trait,
'life1: 'async_trait,
'life2: 'async_trait,
Self: Sync + 'async_trait,
fn leave<'life0, 'life1, 'life2, 'async_trait>(
&'life0 self,
_dbtx: &'life1 mut DatabaseTransaction<'life2>,
) -> Pin<Box<dyn Future<Output = Result<(), Error>> + Send + 'async_trait>>where
'life0: 'async_trait,
'life1: 'async_trait,
'life2: 'async_trait,
Self: Sync + 'async_trait,
Auto Trait Implementations§
impl !Freeze for LightningClientModule
impl !RefUnwindSafe for LightningClientModule
impl Send for LightningClientModule
impl Sync for LightningClientModule
impl Unpin for LightningClientModule
impl !UnwindSafe for LightningClientModule
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
§impl<T> Conv for T
impl<T> Conv for T
§impl<T> Downcast for Twhere
T: Any,
impl<T> Downcast for Twhere
T: Any,
§fn into_any(self: Box<T>) -> Box<dyn Any>
fn into_any(self: Box<T>) -> Box<dyn Any>
Box<dyn Trait>
(where Trait: Downcast
) to Box<dyn Any>
. Box<dyn Any>
can
then be further downcast
into Box<ConcreteType>
where ConcreteType
implements Trait
.§fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
Rc<Trait>
(where Trait: Downcast
) to Rc<Any>
. Rc<Any>
can then be
further downcast
into Rc<ConcreteType>
where ConcreteType
implements Trait
.§fn as_any(&self) -> &(dyn Any + 'static)
fn as_any(&self) -> &(dyn Any + 'static)
&Trait
(where Trait: Downcast
) to &Any
. This is needed since Rust cannot
generate &Any
’s vtable from &Trait
’s.§fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
&mut Trait
(where Trait: Downcast
) to &Any
. This is needed since Rust cannot
generate &mut Any
’s vtable from &mut Trait
’s.§impl<T> DowncastSync for T
impl<T> DowncastSync for T
§impl<T> FmtForward for T
impl<T> FmtForward for T
§fn fmt_binary(self) -> FmtBinary<Self>where
Self: Binary,
fn fmt_binary(self) -> FmtBinary<Self>where
Self: Binary,
self
to use its Binary
implementation when Debug
-formatted.§fn fmt_display(self) -> FmtDisplay<Self>where
Self: Display,
fn fmt_display(self) -> FmtDisplay<Self>where
Self: Display,
self
to use its Display
implementation when
Debug
-formatted.§fn fmt_lower_exp(self) -> FmtLowerExp<Self>where
Self: LowerExp,
fn fmt_lower_exp(self) -> FmtLowerExp<Self>where
Self: LowerExp,
self
to use its LowerExp
implementation when
Debug
-formatted.§fn fmt_lower_hex(self) -> FmtLowerHex<Self>where
Self: LowerHex,
fn fmt_lower_hex(self) -> FmtLowerHex<Self>where
Self: LowerHex,
self
to use its LowerHex
implementation when
Debug
-formatted.§fn fmt_octal(self) -> FmtOctal<Self>where
Self: Octal,
fn fmt_octal(self) -> FmtOctal<Self>where
Self: Octal,
self
to use its Octal
implementation when Debug
-formatted.§fn fmt_pointer(self) -> FmtPointer<Self>where
Self: Pointer,
fn fmt_pointer(self) -> FmtPointer<Self>where
Self: Pointer,
self
to use its Pointer
implementation when
Debug
-formatted.§fn fmt_upper_exp(self) -> FmtUpperExp<Self>where
Self: UpperExp,
fn fmt_upper_exp(self) -> FmtUpperExp<Self>where
Self: UpperExp,
self
to use its UpperExp
implementation when
Debug
-formatted.§fn fmt_upper_hex(self) -> FmtUpperHex<Self>where
Self: UpperHex,
fn fmt_upper_hex(self) -> FmtUpperHex<Self>where
Self: UpperHex,
self
to use its UpperHex
implementation when
Debug
-formatted.§fn fmt_list(self) -> FmtList<Self>where
&'a Self: for<'a> IntoIterator,
fn fmt_list(self) -> FmtList<Self>where
&'a Self: for<'a> IntoIterator,
§impl<T> FutureExt for T
impl<T> FutureExt for T
§fn with_context(self, otel_cx: Context) -> WithContext<Self>
fn with_context(self, otel_cx: Context) -> WithContext<Self>
§fn with_current_context(self) -> WithContext<Self>
fn with_current_context(self) -> WithContext<Self>
§impl<T> FutureExt for T
impl<T> FutureExt for T
§fn with_context(self, otel_cx: Context) -> WithContext<Self>
fn with_context(self, otel_cx: Context) -> WithContext<Self>
§fn with_current_context(self) -> WithContext<Self>
fn with_current_context(self) -> WithContext<Self>
Source§impl<T> IClientModule for Twhere
T: ClientModule,
impl<T> IClientModule for Twhere
T: ClientModule,
fn as_any(&self) -> &(dyn Any + Sync + Send + 'static)
fn decoder(&self) -> Decoder
fn context(&self, instance: u16) -> DynContext
fn start<'life0, 'async_trait>(
&'life0 self,
) -> Pin<Box<dyn Future<Output = ()> + Send + 'async_trait>>where
'life0: 'async_trait,
T: 'async_trait,
fn handle_cli_command<'life0, 'life1, 'async_trait>(
&'life0 self,
args: &'life1 [OsString],
) -> Pin<Box<dyn Future<Output = Result<Value, Error>> + Send + 'async_trait>>where
'life0: 'async_trait,
'life1: 'async_trait,
T: 'async_trait,
fn handle_rpc<'life0, 'async_trait>(
&'life0 self,
method: String,
request: Value,
) -> Pin<Box<dyn Future<Output = Pin<Box<dyn Stream<Item = Result<Value, Error>> + Send + 'life0>>> + Send + 'async_trait>>where
'life0: 'async_trait,
T: 'async_trait,
fn input_fee(&self, amount: Amount, input: &DynInput) -> Option<Amount>
fn output_fee(&self, amount: Amount, output: &DynOutput) -> Option<Amount>
fn supports_backup(&self) -> bool
fn backup<'life0, 'async_trait>(
&'life0 self,
module_instance_id: u16,
) -> Pin<Box<dyn Future<Output = Result<DynModuleBackup, Error>> + Send + 'async_trait>>where
'life0: 'async_trait,
T: 'async_trait,
fn supports_being_primary(&self) -> bool
fn create_final_inputs_and_outputs<'life0, 'life1, 'life2, 'async_trait>(
&'life0 self,
module_instance: u16,
dbtx: &'life1 mut DatabaseTransaction<'life2>,
operation_id: OperationId,
input_amount: Amount,
output_amount: Amount,
) -> Pin<Box<dyn Future<Output = Result<(ClientInputBundle, ClientOutputBundle), Error>> + Send + 'async_trait>>where
'life0: 'async_trait,
'life1: 'async_trait,
'life2: 'async_trait,
T: 'async_trait,
fn await_primary_module_output<'life0, 'async_trait>(
&'life0 self,
operation_id: OperationId,
out_point: OutPoint,
) -> Pin<Box<dyn Future<Output = Result<Amount, Error>> + Send + 'async_trait>>where
'life0: 'async_trait,
T: 'async_trait,
fn get_balance<'life0, 'life1, 'life2, 'async_trait>(
&'life0 self,
module_instance: u16,
dbtx: &'life1 mut DatabaseTransaction<'life2>,
) -> Pin<Box<dyn Future<Output = Amount> + Send + 'async_trait>>where
'life0: 'async_trait,
'life1: 'async_trait,
'life2: 'async_trait,
T: 'async_trait,
fn subscribe_balance_changes<'life0, 'async_trait>(
&'life0 self,
) -> Pin<Box<dyn Future<Output = Pin<Box<dyn Stream<Item = ()> + Send>>> + Send + 'async_trait>>where
'life0: 'async_trait,
T: 'async_trait,
§impl<T> Instrument for T
impl<T> Instrument for T
§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
Source§impl<T> IntoRequest<T> for T
impl<T> IntoRequest<T> for T
Source§fn into_request(self) -> Request<T>
fn into_request(self) -> Request<T>
T
in a tonic::Request
§impl<T> Pipe for Twhere
T: ?Sized,
impl<T> Pipe for Twhere
T: ?Sized,
§fn pipe<R>(self, func: impl FnOnce(Self) -> R) -> Rwhere
Self: Sized,
fn pipe<R>(self, func: impl FnOnce(Self) -> R) -> Rwhere
Self: Sized,
§fn pipe_ref<'a, R>(&'a self, func: impl FnOnce(&'a Self) -> R) -> Rwhere
R: 'a,
fn pipe_ref<'a, R>(&'a self, func: impl FnOnce(&'a Self) -> R) -> Rwhere
R: 'a,
self
and passes that borrow into the pipe function. Read more§fn pipe_ref_mut<'a, R>(&'a mut self, func: impl FnOnce(&'a mut Self) -> R) -> Rwhere
R: 'a,
fn pipe_ref_mut<'a, R>(&'a mut self, func: impl FnOnce(&'a mut Self) -> R) -> Rwhere
R: 'a,
self
and passes that borrow into the pipe function. Read more§fn pipe_borrow<'a, B, R>(&'a self, func: impl FnOnce(&'a B) -> R) -> R
fn pipe_borrow<'a, B, R>(&'a self, func: impl FnOnce(&'a B) -> R) -> R
§fn pipe_borrow_mut<'a, B, R>(
&'a mut self,
func: impl FnOnce(&'a mut B) -> R,
) -> R
fn pipe_borrow_mut<'a, B, R>( &'a mut self, func: impl FnOnce(&'a mut B) -> R, ) -> R
§fn pipe_as_ref<'a, U, R>(&'a self, func: impl FnOnce(&'a U) -> R) -> R
fn pipe_as_ref<'a, U, R>(&'a self, func: impl FnOnce(&'a U) -> R) -> R
self
, then passes self.as_ref()
into the pipe function.§fn pipe_as_mut<'a, U, R>(&'a mut self, func: impl FnOnce(&'a mut U) -> R) -> R
fn pipe_as_mut<'a, U, R>(&'a mut self, func: impl FnOnce(&'a mut U) -> R) -> R
self
, then passes self.as_mut()
into the pipe
function.§fn pipe_deref<'a, T, R>(&'a self, func: impl FnOnce(&'a T) -> R) -> R
fn pipe_deref<'a, T, R>(&'a self, func: impl FnOnce(&'a T) -> R) -> R
self
, then passes self.deref()
into the pipe function.§impl<T> Tap for T
impl<T> Tap for T
§fn tap_borrow<B>(self, func: impl FnOnce(&B)) -> Self
fn tap_borrow<B>(self, func: impl FnOnce(&B)) -> Self
Borrow<B>
of a value. Read more§fn tap_borrow_mut<B>(self, func: impl FnOnce(&mut B)) -> Self
fn tap_borrow_mut<B>(self, func: impl FnOnce(&mut B)) -> Self
BorrowMut<B>
of a value. Read more§fn tap_ref<R>(self, func: impl FnOnce(&R)) -> Self
fn tap_ref<R>(self, func: impl FnOnce(&R)) -> Self
AsRef<R>
view of a value. Read more§fn tap_ref_mut<R>(self, func: impl FnOnce(&mut R)) -> Self
fn tap_ref_mut<R>(self, func: impl FnOnce(&mut R)) -> Self
AsMut<R>
view of a value. Read more§fn tap_deref<T>(self, func: impl FnOnce(&T)) -> Self
fn tap_deref<T>(self, func: impl FnOnce(&T)) -> Self
Deref::Target
of a value. Read more§fn tap_deref_mut<T>(self, func: impl FnOnce(&mut T)) -> Self
fn tap_deref_mut<T>(self, func: impl FnOnce(&mut T)) -> Self
Deref::Target
of a value. Read more§fn tap_dbg(self, func: impl FnOnce(&Self)) -> Self
fn tap_dbg(self, func: impl FnOnce(&Self)) -> Self
.tap()
only in debug builds, and is erased in release builds.§fn tap_mut_dbg(self, func: impl FnOnce(&mut Self)) -> Self
fn tap_mut_dbg(self, func: impl FnOnce(&mut Self)) -> Self
.tap_mut()
only in debug builds, and is erased in release
builds.§fn tap_borrow_dbg<B>(self, func: impl FnOnce(&B)) -> Self
fn tap_borrow_dbg<B>(self, func: impl FnOnce(&B)) -> Self
.tap_borrow()
only in debug builds, and is erased in release
builds.§fn tap_borrow_mut_dbg<B>(self, func: impl FnOnce(&mut B)) -> Self
fn tap_borrow_mut_dbg<B>(self, func: impl FnOnce(&mut B)) -> Self
.tap_borrow_mut()
only in debug builds, and is erased in release
builds.§fn tap_ref_dbg<R>(self, func: impl FnOnce(&R)) -> Self
fn tap_ref_dbg<R>(self, func: impl FnOnce(&R)) -> Self
.tap_ref()
only in debug builds, and is erased in release
builds.§fn tap_ref_mut_dbg<R>(self, func: impl FnOnce(&mut R)) -> Self
fn tap_ref_mut_dbg<R>(self, func: impl FnOnce(&mut R)) -> Self
.tap_ref_mut()
only in debug builds, and is erased in release
builds.§fn tap_deref_dbg<T>(self, func: impl FnOnce(&T)) -> Self
fn tap_deref_dbg<T>(self, func: impl FnOnce(&T)) -> Self
.tap_deref()
only in debug builds, and is erased in release
builds.