pub struct WalletClientModule { /* private fields */ }
Implementations§
source§impl WalletClientModule
impl WalletClientModule
pub fn get_network(&self) -> Network
pub fn get_fee_consensus(&self) -> FeeConsensus
sourcepub async fn get_withdraw_fees(
&self,
address: Address<NetworkUnchecked>,
amount: Amount,
) -> Result<PegOutFees>
pub async fn get_withdraw_fees( &self, address: Address<NetworkUnchecked>, amount: Amount, ) -> Result<PegOutFees>
Fetches the fees that would need to be paid to make the withdraw request
using Self::withdraw
work right now.
Note that we do not receive a guarantee that these fees will be valid in the future, thus even the next second using these fees may fail. The caller should be prepared to retry with a new fee estimate.
pub fn create_withdraw_output( &self, operation_id: OperationId, address: Address<NetworkUnchecked>, amount: Amount, fees: PegOutFees, ) -> Result<ClientOutput<WalletOutput, WalletClientStates>>
pub fn create_rbf_withdraw_output( &self, operation_id: OperationId, rbf: &Rbf, ) -> Result<ClientOutput<WalletOutput, WalletClientStates>>
sourcepub async fn allocate_deposit_address_expert_only(
&self,
) -> Result<(OperationId, Address, TweakIdx)>
pub async fn allocate_deposit_address_expert_only( &self, ) -> Result<(OperationId, Address, TweakIdx)>
Allocates a deposit address that is controlled by the federation.
This is an EXPERT ONLY method intended for power users such as Lightning gateways allocating liquidity, and we discourage exposing peg-in functionality to everyday users of a Fedimint wallet due to the following two limitations:
The transaction sending to this address needs to be smaller than 40KB in order for the peg-in to be claimable. If the transaction is too large, funds will be lost.
In the future, federations will also enforce a minimum peg-in amount to prevent accumulation of dust UTXOs. Peg-ins under this minimum cannot be claimed and funds will be lost.
Everyday users should rely on Lightning to move funds into the federation.
pub async fn find_tweak_idx_by_operation_id( &self, operation_id: OperationId, ) -> Result<TweakIdx>
pub async fn get_pegin_tweak_idx( &self, tweak_idx: TweakIdx, ) -> Result<PegInTweakIndexData>
pub async fn get_claimed_pegins( &self, dbtx: &mut DatabaseTransaction<'_>, tweak_idx: TweakIdx, ) -> Vec<(OutPoint, TransactionId, Vec<OutPoint>)>
sourcepub async fn recheck_pegin_address_by_op_id(
&self,
operation_id: OperationId,
) -> Result<()>
pub async fn recheck_pegin_address_by_op_id( &self, operation_id: OperationId, ) -> Result<()>
Like Self::recheck_pegin_address
but by operation_id
sourcepub async fn recheck_pegin_address(&self, tweak_idx: TweakIdx) -> Result<()>
pub async fn recheck_pegin_address(&self, tweak_idx: TweakIdx) -> Result<()>
Schedule given address for immediate re-check for deposits
sourcepub async fn await_num_deposit_by_operation_id(
&self,
operation_id: OperationId,
num_deposits: usize,
) -> Result<()>
pub async fn await_num_deposit_by_operation_id( &self, operation_id: OperationId, num_deposits: usize, ) -> Result<()>
Await for num deposit by OperationId
pub async fn await_num_deposits( &self, tweak_idx: TweakIdx, num_deposits: usize, ) -> Result<()>
sourcepub async fn withdraw<M: Serialize + MaybeSend + MaybeSync>(
&self,
address: Address<NetworkUnchecked>,
amount: Amount,
fee: PegOutFees,
extra_meta: M,
) -> Result<OperationId>
pub async fn withdraw<M: Serialize + MaybeSend + MaybeSync>( &self, address: Address<NetworkUnchecked>, amount: Amount, fee: PegOutFees, extra_meta: M, ) -> Result<OperationId>
Attempt to withdraw a given amount
of Bitcoin to a destination
address
. The caller has to supply the fee rate to be used which can be
fetched using Self::get_withdraw_fees
and should be
acknowledged by the user since it can be unexpectedly high.
sourcepub async fn rbf_withdraw<M: Serialize + MaybeSync + MaybeSend>(
&self,
rbf: Rbf,
extra_meta: M,
) -> Result<OperationId>
👎Deprecated since 0.4.0: RBF withdrawals are rejected by the federation
pub async fn rbf_withdraw<M: Serialize + MaybeSync + MaybeSend>( &self, rbf: Rbf, extra_meta: M, ) -> Result<OperationId>
Attempt to increase the fee of a onchain withdraw transaction using replace by fee (RBF). This can prevent transactions from getting stuck in the mempool
pub async fn subscribe_withdraw_updates( &self, operation_id: OperationId, ) -> Result<UpdateStreamOrOutcome<WithdrawState>>
Trait Implementations§
source§impl ClientModule for WalletClientModule
impl ClientModule for WalletClientModule
type Init = WalletClientInit
§type Common = WalletModuleTypes
type Common = WalletModuleTypes
§type Backup = WalletModuleBackup
type Backup = WalletModuleBackup
§type ModuleStateMachineContext = WalletClientContext
type ModuleStateMachineContext = WalletClientContext
§type States = WalletClientStates
type States = WalletClientStates
fn context(&self) -> Self::ModuleStateMachineContext
source§fn start<'life0, 'async_trait>(
&'life0 self,
) -> Pin<Box<dyn Future<Output = ()> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
fn start<'life0, 'async_trait>(
&'life0 self,
) -> Pin<Box<dyn Future<Output = ()> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
fn supports_backup(&self) -> bool
fn backup<'life0, 'async_trait>(
&'life0 self,
) -> Pin<Box<dyn Future<Output = Result<WalletModuleBackup>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
source§fn input_fee(
&self,
_input: &<Self::Common as ModuleCommon>::Input,
) -> Option<Amount>
fn input_fee( &self, _input: &<Self::Common as ModuleCommon>::Input, ) -> Option<Amount>
source§fn output_fee(
&self,
_output: &<Self::Common as ModuleCommon>::Output,
) -> Option<Amount>
fn output_fee( &self, _output: &<Self::Common as ModuleCommon>::Output, ) -> Option<Amount>
fn decoder() -> Decoder
fn kind() -> ModuleKind
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,
Self: Sync + '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,
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<(Vec<ClientInput<<Self::Common as ModuleCommon>::Input, Self::States>>, Vec<ClientOutput<<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<(Vec<ClientInput<<Self::Common as ModuleCommon>::Input, Self::States>>, Vec<ClientOutput<<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 WalletClientModule
impl !RefUnwindSafe for WalletClientModule
impl Send for WalletClientModule
impl Sync for WalletClientModule
impl Unpin for WalletClientModule
impl !UnwindSafe for WalletClientModule
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
source§impl<T> FmtForward for T
impl<T> FmtForward for T
source§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.source§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.source§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.source§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.source§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.source§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.source§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.source§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.source§impl<T> IClientModule for Twhere
T: ClientModule,
impl<T> IClientModule for Twhere
T: ClientModule,
fn as_any(&self) -> &(dyn Any + Send + Sync + '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, input: &DynInput) -> Option<Amount>
fn output_fee(&self, 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<(Vec<ClientInput>, Vec<ClientOutput>), 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,
source§impl<T> Instrument for T
impl<T> Instrument for T
source§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
source§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
source§impl<T> IntoEither for T
impl<T> IntoEither for T
source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
self
into a Left
variant of Either<Self, Self>
if into_left
is true
.
Converts self
into a Right
variant of Either<Self, Self>
otherwise. Read moresource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
self
into a Left
variant of Either<Self, Self>
if into_left(&self)
returns true
.
Converts self
into a Right
variant of Either<Self, Self>
otherwise. Read moresource§impl<T> Pipe for Twhere
T: ?Sized,
impl<T> Pipe for Twhere
T: ?Sized,
source§fn pipe<R>(self, func: impl FnOnce(Self) -> R) -> Rwhere
Self: Sized,
fn pipe<R>(self, func: impl FnOnce(Self) -> R) -> Rwhere
Self: Sized,
source§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 moresource§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 moresource§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
source§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
source§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.source§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.source§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.source§impl<T> Tap for T
impl<T> Tap for T
source§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 moresource§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 moresource§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 moresource§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 moresource§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 moresource§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 moresource§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.source§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.source§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.source§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.source§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.source§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.source§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.