Skip to main content

BreezSdk

Struct BreezSdk 

Source
pub struct BreezSdk { /* private fields */ }
Expand description

BreezSDK is a wrapper around SparkSDK that provides a more structured API with request/response objects and comprehensive error handling.

Implementations§

Source§

impl BreezSdk

Source

pub async fn add_event_listener( &self, listener: Box<dyn EventListener>, ) -> String

Registers a listener to receive SDK events

The SDK holds the listener until it is removed with remove_event_listener or until disconnect unregisters all listeners. A held listener that references the SDK instance keeps that instance alive.

§Arguments
  • listener - An implementation of the EventListener trait
§Returns

A unique identifier for the listener, which can be used to remove it later

Source

pub async fn remove_event_listener(&self, id: &str) -> bool

Removes a previously registered event listener

§Arguments
  • id - The listener ID returned from add_event_listener
§Returns

true if the listener was found and removed, false otherwise

Source

pub async fn disconnect(&self) -> Result<(), SdkError>

Stops the SDK’s background tasks

This method stops the background tasks started by the start() method. It should be called before your application terminates to ensure proper cleanup.

It also unregisters all event listeners, so listeners that reference the SDK no longer keep it alive after this call.

§Returns

Result containing either success or an SdkError if the background task couldn’t be stopped

Source

pub async fn parse(&self, input: &str) -> Result<InputType, SdkError>

Source

pub async fn get_cross_chain_routes( &self, filter: &CrossChainRouteFilter, ) -> Result<Vec<CrossChainRoutePair>, SdkError>

Returns the available cross-chain routes.

Use CrossChainRouteFilter::Send to get routes for sending from Spark (filtered by the parsed recipient address), or CrossChainRouteFilter::Receive to get routes for receiving into Spark (optionally filtered by a source contract address).

Source

pub async fn get_info( &self, request: GetInfoRequest, ) -> Result<GetInfoResponse, SdkError>

Returns the balance of the wallet in satoshis

Source

pub async fn list_fiat_currencies( &self, ) -> Result<ListFiatCurrenciesResponse, SdkError>

List fiat currencies for which there is a known exchange rate, sorted by the canonical name of the currency.

Source

pub async fn list_fiat_rates(&self) -> Result<ListFiatRatesResponse, SdkError>

List the latest rates of fiat currencies, sorted by name.

Source

pub async fn recommended_fees(&self) -> Result<RecommendedFees, SdkError>

Get the recommended BTC fees based on the configured chain service.

Source

pub async fn get_tokens_metadata( &self, request: GetTokensMetadataRequest, ) -> Result<GetTokensMetadataResponse, SdkError>

Returns the metadata for the given token identifiers.

Results are not guaranteed to be in the same order as the input token identifiers.

If the metadata is not found locally in cache, it will be queried from the Spark network and then cached.

Source

pub async fn sign_message( &self, request: SignMessageRequest, ) -> Result<SignMessageResponse, SdkError>

Signs a message with the wallet’s identity key. The message is SHA256 hashed before signing. The returned signature will be hex encoded in DER format by default, or compact format if specified.

Source

pub async fn check_message( &self, request: CheckMessageRequest, ) -> Result<CheckMessageResponse, SdkError>

Verifies a message signature against the provided public key. The message is SHA256 hashed before verification. The signature can be hex encoded in either DER or compact format.

Source

pub async fn get_user_settings(&self) -> Result<UserSettings, SdkError>

Returns the user settings for the wallet.

Some settings are fetched from the Spark network so network requests are performed.

Source

pub async fn update_user_settings( &self, request: UpdateUserSettingsRequest, ) -> Result<(), SdkError>

Updates the user settings for the wallet.

Some settings are updated on the Spark network so network requests may be performed.

Source

pub fn get_token_issuer(&self) -> TokenIssuer

Returns an instance of the TokenIssuer for managing token issuance.

Source

pub async fn optimize_leaves( &self, request: OptimizeLeavesRequest, ) -> Result<OptimizeLeavesResponse, SdkError>

Manually drives leaf optimization, blocking until the requested work is done.

With OptimizationMode::Full (the default) the call runs the entire optimization in a single invocation. With OptimizationMode::SingleRound it executes one round and returns — the caller drives the loop by inspecting the OptimizeLeavesResponse::outcome and calling again until InProgress no longer appears.

Returns an error if another optimization run (auto or manual) is already in flight (SdkError::OptimizationAlreadyRunning), or if the SDK preempted this run to free leaves for a payment (SdkError::OptimizationCancelled).

Manual runs do not emit events; events ([SdkEvent::AutoOptimization]) are reserved for the background auto-optimizer.

Source

pub async fn register_webhook( &self, request: RegisterWebhookRequest, ) -> Result<RegisterWebhookResponse, SdkError>

Registers a webhook to receive notifications for wallet events.

When registered events occur (e.g., a Lightning payment is received), the Spark service provider will send an HTTP POST to the specified URL with a payload signed using HMAC-SHA256 with the provided secret.

§Arguments
  • request - The webhook registration details including URL, secret, and event types
§Returns

A response containing the unique identifier of the registered webhook

Source

pub async fn unregister_webhook( &self, request: UnregisterWebhookRequest, ) -> Result<(), SdkError>

Unregisters a previously registered webhook.

After unregistering, the Spark service provider will no longer send notifications to the webhook URL.

§Arguments
  • request - The unregister request containing the webhook ID
Source

pub async fn list_webhooks(&self) -> Result<Vec<Webhook>, SdkError>

Lists all webhooks currently registered for this wallet.

§Returns

A list of registered webhooks with their IDs, URLs, and subscribed event types

Source

pub async fn buy_bitcoin( &self, request: BuyBitcoinRequest, ) -> Result<BuyBitcoinResponse, SdkError>

Initiates a Bitcoin purchase flow via an external provider.

Returns a URL the user should open to complete the purchase. The request variant determines the provider and its parameters:

Source§

impl BreezSdk

Source

pub async fn add_contact( &self, request: AddContactRequest, ) -> Result<Contact, SdkError>

Adds a new contact.

§Arguments
  • request - The request containing the contact details
§Returns

The created contact or an error

Source

pub async fn update_contact( &self, request: UpdateContactRequest, ) -> Result<Contact, SdkError>

Updates an existing contact.

§Arguments
  • request - The request containing the updated contact details
§Returns

The updated contact or an error

Source

pub async fn delete_contact(&self, id: String) -> Result<(), SdkError>

Deletes a contact by its ID.

§Arguments
  • id - The ID of the contact to delete
§Returns

Success or an error

Source

pub async fn list_contacts( &self, request: ListContactsRequest, ) -> Result<Vec<Contact>, SdkError>

Lists contacts with optional pagination.

§Arguments
  • request - The request containing optional pagination parameters
§Returns

A list of contacts or an error

Source§

impl BreezSdk

Source§

impl BreezSdk

Source

pub async fn check_lightning_address_available( &self, req: CheckLightningAddressRequest, ) -> Result<bool, SdkError>

Source

pub async fn get_lightning_address( &self, ) -> Result<Option<LightningAddressInfo>, SdkError>

Source

pub async fn register_lightning_address( &self, request: RegisterLightningAddressRequest, ) -> Result<LightningAddressInfo, SdkError>

Source

pub async fn authorize_lightning_address_transfer( &self, request: AuthorizeTransferRequest, ) -> Result<TransferAuthorization, SdkError>

Authorize transferring the current owner’s registered lightning address username to request.transferee_pubkey. Returns a TransferAuthorization to hand to the new owner, who claims it via BreezSdk::claim_lightning_address_transfer. Errors if the current owner has no lightning address registered.

Source

pub async fn claim_lightning_address_transfer( &self, request: ClaimTransferRequest, ) -> Result<LightningAddressInfo, SdkError>

Claim a lightning address username handed over by its current owner, using the TransferAuthorization from BreezSdk::authorize_lightning_address_transfer. Completes the takeover and returns the newly-owned address.

Source

pub async fn delete_lightning_address(&self) -> Result<(), SdkError>

Source§

impl BreezSdk

Source

pub async fn prepare_lnurl_pay( &self, request: PrepareLnurlPayRequest, ) -> Result<PrepareLnurlPayResponse, SdkError>

Source

pub async fn lnurl_pay( &self, request: LnurlPayRequest, ) -> Result<LnurlPayResponse, SdkError>

Source

pub async fn build_unsigned_lnurl_pay_package( &self, request: BuildUnsignedLnurlPayPackageRequest, ) -> Result<UnsignedTransferPackage, SdkError>

Source

pub async fn publish_signed_lnurl_pay_package( &self, request: PublishSignedLnurlPayPackageRequest, ) -> Result<PublishSignedLnurlPayResponse, SdkError>

Source

pub async fn lnurl_withdraw( &self, request: LnurlWithdrawRequest, ) -> Result<LnurlWithdrawResponse, SdkError>

Performs an LNURL withdraw operation for the amount of satoshis to withdraw and the LNURL withdraw request details. The LNURL withdraw request details can be obtained from calling BreezSdk::parse.

The method generates a Lightning invoice for the withdraw amount, stores the LNURL withdraw metadata, and performs the LNURL withdraw using the generated invoice.

If the completion_timeout_secs parameter is provided and greater than 0, the method will wait for the payment to be completed within that period. If the withdraw is completed within the timeout, the payment field in the response will be set with the payment details. If the completion_timeout_secs parameter is not provided or set to 0, the method will not wait for the payment to be completed. If the withdraw is not completed within the timeout, the payment field will be empty.

§Arguments
  • request - The LNURL withdraw request
§Returns

Result containing either:

  • LnurlWithdrawResponse - The payment details if the withdraw request was successful
  • SdkError - If there was an error during the withdraw process
Source

pub async fn lnurl_auth( &self, request_data: LnurlAuthRequestDetails, ) -> Result<LnurlCallbackStatus, SdkError>

Performs LNURL-auth with the service.

This method implements the LNURL-auth protocol as specified in LUD-04 and LUD-05. It derives a domain-specific linking key, signs the challenge, and sends the authentication request to the service.

Source§

impl BreezSdk

Source

pub async fn receive_payment( &self, request: ReceivePaymentRequest, ) -> Result<ReceivePaymentResponse, SdkError>

Source

pub async fn claim_htlc_payment( &self, request: ClaimHtlcPaymentRequest, ) -> Result<ClaimHtlcPaymentResponse, SdkError>

Source

pub async fn prepare_send_payment( &self, request: PrepareSendPaymentRequest, ) -> Result<PrepareSendPaymentResponse, SdkError>

Source

pub async fn send_payment( &self, request: SendPaymentRequest, ) -> Result<SendPaymentResponse, SdkError>

Source

pub async fn build_unsigned_transfer_package( &self, request: BuildUnsignedTransferPackageRequest, ) -> Result<UnsignedTransferPackage, SdkError>

Source

pub async fn publish_signed_transfer_package( &self, request: PublishSignedTransferPackageRequest, ) -> Result<PublishSignedTransferPackageResponse, SdkError>

Source

pub async fn fetch_conversion_limits( &self, request: FetchConversionLimitsRequest, ) -> Result<FetchConversionLimitsResponse, SdkError>

Source

pub async fn refund_pending_conversions(&self) -> Result<(), SdkError>

Runs one pass of the pending-conversion refunder.

Iterates over payments whose conversions failed and have a refund pending, then attempts to refund each one. This is the same logic the SDK runs internally on a periodic schedule when background_tasks_enabled is true. When background tasks are disabled the periodic refunder does not run, and this method is the explicit entry point for driving the pass; when background tasks are enabled, it can be called to force an immediate refund pass.

Source

pub async fn list_payments( &self, request: ListPaymentsRequest, ) -> Result<ListPaymentsResponse, SdkError>

Lists payments from the storage with pagination

This method provides direct access to the payment history stored in the database. It returns payments in reverse chronological order (newest first).

§Arguments
  • request - Contains pagination parameters (offset and limit)
§Returns
  • Ok(ListPaymentsResponse) - Contains the list of payments if successful
  • Err(SdkError) - If there was an error accessing the storage
Source

pub async fn get_payment( &self, request: GetPaymentRequest, ) -> Result<GetPaymentResponse, SdkError>

Source§

impl BreezSdk

Source

pub async fn sync_wallet( &self, request: SyncWalletRequest, ) -> Result<SyncWalletResponse, SdkError>

Synchronizes the wallet with the Spark network

Trait Implementations§

Source§

impl Clone for BreezSdk

Source§

fn clone(&self) -> BreezSdk

Returns a duplicate of the value. Read more
1.0.0 · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

§

impl<T> FromRef<T> for T
where T: Clone,

§

fn from_ref(input: &T) -> T

Converts to this type from a reference to the input type.
§

impl<T> Instrument for T

§

fn instrument(self, span: Span) -> Instrumented<Self>

Instruments this type with the provided [Span], returning an Instrumented wrapper. Read more
§

fn in_current_span(self) -> Instrumented<Self>

Instruments this type with the current Span, returning an Instrumented wrapper. Read more
Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> IntoEither for T

Source§

fn into_either(self, into_left: bool) -> Either<Self, Self>

Converts 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 more
Source§

fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
where F: FnOnce(&Self) -> bool,

Converts 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 more
Source§

impl<T> IntoRequest<T> for T

Source§

fn into_request(self) -> Request<T>

Wrap the input message T in a tonic::Request
§

impl<T> PolicyExt for T
where T: ?Sized,

§

fn and<P, B, E>(self, other: P) -> And<T, P>
where T: Policy<B, E>, P: Policy<B, E>,

Create a new Policy that returns [Action::Follow] only if self and other return Action::Follow. Read more
§

fn or<P, B, E>(self, other: P) -> Or<T, P>
where T: Policy<B, E>, P: Policy<B, E>,

Create a new Policy that returns [Action::Follow] if either self or other returns Action::Follow. Read more
Source§

impl<T> Same for T

Source§

type Output = T

Should always be Self
Source§

impl<T> ToOwned for T
where T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
§

impl<V, T> VZip<V> for T
where V: MultiLane<T>,

§

fn vzip(self) -> V

§

impl<T> WithSubscriber for T

§

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>
where S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a [WithDispatch] wrapper. Read more
§

fn with_current_subscriber(self) -> WithDispatch<Self>

Attaches the current default Subscriber to this type, returning a [WithDispatch] wrapper. Read more