pub(crate) mod constants;
pub mod core;
#[cfg(any(feature = "stronghold", feature = "storage"))]
pub mod migration;
pub(crate) mod operations;
pub mod types;
pub(crate) mod update;
pub use crate::client::ClientBuilder as ClientOptions;
pub mod error;
#[cfg(feature = "events")]
#[cfg_attr(docsrs, doc(cfg(feature = "events")))]
pub mod events;
#[cfg(feature = "storage")]
#[cfg_attr(docsrs, doc(cfg(feature = "storage")))]
pub mod storage;
pub(crate) mod task;
use std::collections::HashSet;
use serde::{Deserialize, Serialize};
#[cfg(feature = "participation")]
pub use self::operations::participation::{ParticipationEventWithNodes, ParticipationOverview};
use self::types::TransactionWithMetadata;
pub use self::{
core::{Wallet, WalletBuilder},
error::WalletError,
operations::{
output_claiming::OutputsToClaim,
output_consolidation::ConsolidationParams,
syncing::{
options::{AccountSyncOptions, NftSyncOptions, WalletSyncOptions},
SyncOptions,
},
transaction::{
high_level::{
account_block_issuer_keys::ModifyAccountBlockIssuerKey,
create_account::CreateAccountParams,
delegation::create::{
CreateDelegationParams, CreateDelegationTransaction, PreparedCreateDelegationTransaction,
},
minting::{
create_native_token::{
CreateNativeTokenParams, CreateNativeTokenTransaction, PreparedCreateNativeTokenTransaction,
},
mint_nfts::MintNftParams,
},
send::SendParams,
send_mana::SendManaParams,
send_native_tokens::SendNativeTokenParams,
send_nft::SendNftParams,
staking::begin::BeginStakingParams,
},
prepare_output::{Assets, Features, OutputParams, ReturnStrategy, StorageDeposit, Unlocks},
},
},
types::OutputData,
};
use crate::{
types::{
api::core::OutputWithMetadataResponse,
block::{
output::{AccountId, AnchorId, DelegationId, FoundryId, NftId, OutputWithMetadata},
payload::signed_transaction::{SignedTransactionPayload, TransactionId},
slot::SlotIndex,
},
},
wallet::types::InclusionState,
};
#[derive(Debug, Default, Clone, Serialize, Deserialize, Eq, PartialEq)]
#[serde(rename_all = "camelCase")]
pub struct FilterOptions {
pub included_below_slot: Option<SlotIndex>,
pub included_above_slot: Option<SlotIndex>,
pub output_types: Option<Vec<u8>>,
pub account_ids: Option<HashSet<AccountId>>,
pub anchor_ids: Option<HashSet<AnchorId>>,
pub foundry_ids: Option<HashSet<FoundryId>>,
pub nft_ids: Option<HashSet<NftId>>,
pub delegation_ids: Option<HashSet<DelegationId>>,
}
pub(crate) fn build_transaction_from_payload_and_inputs(
tx_id: TransactionId,
tx_payload: SignedTransactionPayload,
inputs: Vec<OutputWithMetadataResponse>,
) -> Result<TransactionWithMetadata, WalletError> {
Ok(TransactionWithMetadata {
payload: tx_payload.clone(),
block_id: inputs.first().map(|i| *i.metadata.block_id()),
inclusion_state: InclusionState::Confirmed,
transaction_id: tx_id,
network_id: tx_payload.transaction().network_id(),
incoming: true,
note: None,
inputs: inputs
.into_iter()
.map(|input| OutputWithMetadata {
output: input.output,
metadata: input.metadata,
})
.collect(),
})
}