pub struct CliClient(/* private fields */);Expand description
A Client configured using the CLI’s system user configuration.
This is a wrapper around Client<CliKeyStore> that provides convenient
initialization methods while maintaining full compatibility with the
underlying Client API through Deref.
§Examples
use miden_client_cli::transaction::TransactionRequestBuilder;
use miden_client_cli::{CliClient, DebugMode};
// Create a CLI-configured client
let mut client = CliClient::new(DebugMode::Disabled).await?;
// All Client methods work automatically via Deref
client.sync_state().await?;
// Build and submit transactions
let req = TransactionRequestBuilder::new()
// ... configure transaction
.build()?;
// client.submit_new_transaction(req, target_account_id)?;Implementations§
Source§impl CliClient
impl CliClient
Sourcepub async fn from_config(
config: CliConfig,
debug_mode: DebugMode,
) -> Result<Self, CliError>
pub async fn from_config( config: CliConfig, debug_mode: DebugMode, ) -> Result<Self, CliError>
Creates a new CliClient instance from an existing CliConfig.
⚠️ WARNING: This method bypasses the standard CLI configuration discovery logic and should only be used in specific scenarios such as testing or when you have explicit control requirements.
§When NOT to use this method
- DO NOT use this method if you want your application to behave like the CLI tool
- DO NOT use this for general-purpose client initialization
- DO NOT use this if you expect automatic local/global config resolution
§When to use this method
- Testing: When you need to test with a specific configuration
- Explicit Control: When you must load config from a non-standard location
- Programmatic Config: When you’re constructing configuration programmatically
§Recommended Alternative
For standard client initialization that matches CLI behavior, use:
CliClient::new(debug_mode).await?This method does not follow the CLI’s configuration priority logic (local → global). Instead, it uses exactly the configuration provided, which may not be what you expect.
§Arguments
config- The CLI configuration to use (bypasses standard config discovery)debug_mode- The debug mode setting (DebugMode::EnabledorDebugMode::Disabled)
§Returns
A configured CliClient instance.
§Errors
Returns a CliError if:
- Keystore initialization fails
- Client builder fails to construct the client
- Note transport connection fails (if configured)
§Examples
use std::path::PathBuf;
use miden_client_cli::{CliClient, CliConfig, DebugMode};
// BEWARE: This bypasses standard config discovery!
// Only use if you know what you're doing.
let config = CliConfig::from_dir(&PathBuf::from("/path/to/.miden"))?;
let client = CliClient::from_config(config, DebugMode::Disabled).await?;
// Prefer this for standard CLI-like behavior:
let client = CliClient::new(DebugMode::Disabled).await?;Sourcepub async fn new(debug_mode: DebugMode) -> Result<Self, CliError>
pub async fn new(debug_mode: DebugMode) -> Result<Self, CliError>
Creates a new CliClient instance configured using the system user configuration.
§✅ Recommended Constructor
This is the recommended way to create a CliClient instance.
This method implements the configuration logic used by the CLI tool, allowing external projects to create a Client instance with the same configuration. It searches for configuration files in the following order:
- Local
.miden/miden-client.tomlin the current working directory - Global
.miden/miden-client.tomlin the home directory
If no configuration file is found, it silently initializes a default configuration.
The client is initialized with:
SQLitestore from the configured pathgRPCclient connection to the configured RPC endpoint- Filesystem-based keystore authenticator
- Optional note transport client (if configured)
- Transaction graceful blocks delta
- Optional max block number delta
§Arguments
debug_mode- The debug mode setting (DebugMode::EnabledorDebugMode::Disabled).
§Returns
A configured CliClient instance.
§Errors
Returns a CliError if:
- No configuration file is found (local or global)
- Configuration file parsing fails
- Keystore initialization fails
- Client builder fails to construct the client
- Note transport connection fails (if configured)
§Examples
use miden_client_cli::transaction::TransactionRequestBuilder;
use miden_client_cli::{CliClient, DebugMode};
// Create a client with default settings (debug disabled)
let mut client = CliClient::new(DebugMode::Disabled).await?;
// Or with debug mode enabled
let mut client = CliClient::new(DebugMode::Enabled).await?;
// Use it like a regular Client
client.sync_state().await?;
// Build and submit transactions
let req = TransactionRequestBuilder::new()
// ... configure transaction
.build()?;
// client.submit_new_transaction(req, target_account_id)?;Sourcepub fn into_inner(self) -> Client<CliKeyStore>
pub fn into_inner(self) -> Client<CliKeyStore>
Unwraps the CliClient to get the inner Client<CliKeyStore>.
This consumes the CliClient and returns the underlying client.
§Examples
use miden_client_cli::{CliClient, DebugMode};
let cli_client = CliClient::new(DebugMode::Disabled).await?;
let inner_client = cli_client.into_inner();Methods from Deref<Target = Client<CliKeyStore>>§
Sourcepub async fn add_account(
&mut self,
account: &Account,
overwrite: bool,
) -> Result<(), ClientError>
pub async fn add_account( &mut self, account: &Account, overwrite: bool, ) -> Result<(), ClientError>
Adds the provided Account in the store so it can start being tracked by the client.
If the account is already being tracked and overwrite is set to true, the account will
be overwritten. Newly created accounts must embed their seed (account.seed() must return
Some(_)).
§Errors
- If the account is new but it does not contain the seed.
- If the account is already tracked and
overwriteis set tofalse. - If
overwriteis set totrueand theaccount_datanonce is lower than the one already being tracked. - If
overwriteis set totrueand theaccount_datacommitment doesn’t match the network’s account commitment. - If the client has reached the accounts limit.
- If the client has reached the note tags limit.
Sourcepub async fn import_account_by_id(
&mut self,
account_id: AccountId,
) -> Result<(), ClientError>
pub async fn import_account_by_id( &mut self, account_id: AccountId, ) -> Result<(), ClientError>
Imports an account from the network to the client’s store. The account needs to be public and be tracked by the network, it will be fetched by its ID. If the account was already being tracked by the client, it’s state will be overwritten.
§Errors
- If the account is not found on the network.
- If the account is private.
- There was an error sending the request to the network.
Sourcepub async fn add_address(
&mut self,
address: Address,
account_id: AccountId,
) -> Result<(), ClientError>
pub async fn add_address( &mut self, address: Address, account_id: AccountId, ) -> Result<(), ClientError>
Sourcepub async fn remove_address(
&mut self,
address: Address,
account_id: AccountId,
) -> Result<(), ClientError>
pub async fn remove_address( &mut self, address: Address, account_id: AccountId, ) -> Result<(), ClientError>
Sourcepub async fn get_account_vault(
&self,
account_id: AccountId,
) -> Result<AssetVault, ClientError>
pub async fn get_account_vault( &self, account_id: AccountId, ) -> Result<AssetVault, ClientError>
Retrieves the asset vault for a specific account.
To check the balance for a single asset, use Client::account_reader instead.
Sourcepub async fn get_account_storage(
&self,
account_id: AccountId,
) -> Result<AccountStorage, ClientError>
pub async fn get_account_storage( &self, account_id: AccountId, ) -> Result<AccountStorage, ClientError>
Retrieves the whole account storage for a specific account.
To only load a specific slot, use Client::account_reader instead.
Sourcepub async fn get_account_code(
&self,
account_id: AccountId,
) -> Result<Option<AccountCode>, ClientError>
pub async fn get_account_code( &self, account_id: AccountId, ) -> Result<Option<AccountCode>, ClientError>
Retrieves the account code for a specific account.
Returns None if the account is not found.
Sourcepub async fn get_account_headers(
&self,
) -> Result<Vec<(AccountHeader, AccountStatus)>, ClientError>
pub async fn get_account_headers( &self, ) -> Result<Vec<(AccountHeader, AccountStatus)>, ClientError>
Returns a list of AccountHeader of all accounts stored in the database along with their
statuses.
Said accounts’ state is the state after the last performed sync.
Sourcepub async fn get_account(
&self,
account_id: AccountId,
) -> Result<Option<Account>, ClientError>
pub async fn get_account( &self, account_id: AccountId, ) -> Result<Option<Account>, ClientError>
Retrieves the full Account object from the store, returning None if not found.
This method loads the complete account state including vault, storage, and code.
For lazy access that fetches only the data you need, use
Client::account_reader instead.
Use Client::try_get_account if you want to error when the account is not found.
Sourcepub async fn try_get_account(
&self,
account_id: AccountId,
) -> Result<Account, ClientError>
pub async fn try_get_account( &self, account_id: AccountId, ) -> Result<Account, ClientError>
Retrieves the full Account object from the store, erroring if not found.
This method loads the complete account state including vault, storage, and code.
Use Client::get_account if you want to handle missing accounts gracefully.
Sourcepub fn account_reader(&self, account_id: AccountId) -> AccountReader
pub fn account_reader(&self, account_id: AccountId) -> AccountReader
Creates an AccountReader for lazy access to account data.
The AccountReader provides lazy access to account state - each method call
fetches fresh data from storage, ensuring you always see the current state.
For loading the full Account object, use Client::get_account instead.
§Example
let reader = client.account_reader(account_id);
// Each call fetches fresh data
let nonce = reader.nonce().await?;
let balance = reader.get_balance(faucet_id).await?;
// Storage access is integrated
let value = reader.get_storage_item("my_slot").await?;
let (map_value, witness) = reader.get_storage_map_witness("balances", key).await?;Sourcepub async fn import_notes(
&mut self,
note_files: &[NoteFile],
) -> Result<Vec<NoteId>, ClientError>
pub async fn import_notes( &mut self, note_files: &[NoteFile], ) -> Result<Vec<NoteId>, ClientError>
Imports a batch of new input notes into the client’s store. The information stored depends
on the type of note files provided. If the notes existed previously, it will be updated
with the new information. The tags specified by the NoteFiles will start being
tracked. Returns the IDs of notes that were successfully imported or updated.
- If the note files are
NoteFile::NoteId, the notes are fetched from the node and stored in the client’s store. If the note is private or doesn’t exist, an error is returned. - If the note files are
NoteFile::NoteDetails, new notes are created with the provided details and tags. - If the note files are
NoteFile::NoteWithProof, the notes are stored with the provided inclusion proof and metadata. The block header data is only fetched from the node if the note is committed in the past relative to the client.
§Errors
- If an attempt is made to overwrite a note that is currently processing.
- If the client has reached the note tags limit.
Note: This operation is atomic. If any note file is invalid or any existing note is in the processing state, the entire operation fails and no notes are imported.
Sourcepub async fn get_input_notes(
&self,
filter: NoteFilter,
) -> Result<Vec<InputNoteRecord>, ClientError>
pub async fn get_input_notes( &self, filter: NoteFilter, ) -> Result<Vec<InputNoteRecord>, ClientError>
Retrieves the input notes managed by the client from the store.
§Errors
Returns a ClientError::StoreError if the filter is NoteFilter::Unique and there is
no Note with the provided ID.
Sourcepub async fn get_consumable_notes(
&self,
account_id: Option<AccountId>,
) -> Result<Vec<(InputNoteRecord, Vec<(AccountId, NoteConsumptionStatus)>)>, ClientError>
pub async fn get_consumable_notes( &self, account_id: Option<AccountId>, ) -> Result<Vec<(InputNoteRecord, Vec<(AccountId, NoteConsumptionStatus)>)>, ClientError>
Returns the input notes and their consumability. Assuming the notes will be consumed by a
normal consume transaction. If account_id is None then all consumable input notes are
returned.
The note screener runs a series of checks to determine whether the note can be executed as part of a transaction for a specific account. If the specific account ID can consume it (ie, if it’s compatible with the account), it will be returned as part of the result list.
Sourcepub async fn get_note_consumability(
&self,
note: InputNoteRecord,
) -> Result<Vec<(AccountId, NoteConsumptionStatus)>, ClientError>
pub async fn get_note_consumability( &self, note: InputNoteRecord, ) -> Result<Vec<(AccountId, NoteConsumptionStatus)>, ClientError>
Returns the consumability conditions for the provided note.
The note screener runs a series of checks to determine whether the note can be executed as part of a transaction for a specific account. If the specific account ID can consume it (ie, if it’s compatible with the account), it will be returned as part of the result list.
Sourcepub async fn get_input_note(
&self,
note_id: NoteId,
) -> Result<Option<InputNoteRecord>, ClientError>
pub async fn get_input_note( &self, note_id: NoteId, ) -> Result<Option<InputNoteRecord>, ClientError>
Retrieves the input note given a NoteId. Returns None if the note is not found.
Sourcepub async fn get_output_notes(
&self,
filter: NoteFilter,
) -> Result<Vec<OutputNoteRecord>, ClientError>
pub async fn get_output_notes( &self, filter: NoteFilter, ) -> Result<Vec<OutputNoteRecord>, ClientError>
Returns output notes managed by this client.
Sourcepub async fn get_output_note(
&self,
note_id: NoteId,
) -> Result<Option<OutputNoteRecord>, ClientError>
pub async fn get_output_note( &self, note_id: NoteId, ) -> Result<Option<OutputNoteRecord>, ClientError>
Retrieves the output note given a NoteId. Returns None if the note is not found.
Sourcepub fn is_note_transport_enabled(&self) -> bool
pub fn is_note_transport_enabled(&self) -> bool
Check if note transport connection is configured
Sourcepub async fn send_private_note(
&mut self,
note: Note,
_address: &Address,
) -> Result<(), ClientError>
pub async fn send_private_note( &mut self, note: Note, _address: &Address, ) -> Result<(), ClientError>
Send a note through the note transport network.
The note will be end-to-end encrypted (unimplemented, currently plaintext)
using the provided recipient’s address details.
The recipient will be able to retrieve this note through the note’s NoteTag.
Sourcepub async fn fetch_private_notes(&mut self) -> Result<(), ClientError>
pub async fn fetch_private_notes(&mut self) -> Result<(), ClientError>
Fetch notes for tracked note tags.
The client will query the configured note transport node for all tracked note tags.
To list tracked tags please use Client::get_note_tags. To add a new note tag please use
Client::add_note_tag.
Only notes directed at your addresses will be stored and readable given the use of
end-to-end encryption (unimplemented).
Fetched notes will be stored into the client’s store.
An internal pagination mechanism is employed to reduce the number of downloaded notes.
To fetch the full history of private notes for the tracked tags, use
Client::fetch_all_private_notes.
Sourcepub async fn fetch_all_private_notes(&mut self) -> Result<(), ClientError>
pub async fn fetch_all_private_notes(&mut self) -> Result<(), ClientError>
Fetches all notes for tracked note tags.
Similar to Client::fetch_private_notes however does not employ pagination,
fetching all notes stored in the note transport network for the tracked tags.
Please prefer using Client::fetch_private_notes to avoid downloading repeated notes.
Sourcepub async fn set_setting<T>(
&mut self,
key: String,
value: T,
) -> Result<(), ClientError>where
T: Serializable,
pub async fn set_setting<T>(
&mut self,
key: String,
value: T,
) -> Result<(), ClientError>where
T: Serializable,
Sets a setting value in the store. It can then be retrieved using get_setting.
Sourcepub async fn get_setting<T>(
&self,
key: String,
) -> Result<Option<T>, ClientError>where
T: Deserializable,
pub async fn get_setting<T>(
&self,
key: String,
) -> Result<Option<T>, ClientError>where
T: Deserializable,
Retrieves the value for key, or None if it hasn’t been set.
Sourcepub async fn remove_setting(&mut self, key: String) -> Result<(), ClientError>
pub async fn remove_setting(&mut self, key: String) -> Result<(), ClientError>
Deletes the setting value from the store.
Sourcepub async fn list_setting_keys(&self) -> Result<Vec<String>, ClientError>
pub async fn list_setting_keys(&self) -> Result<Vec<String>, ClientError>
Returns all the setting keys from the store.
Sourcepub async fn get_block_header_by_num(
&self,
block_num: BlockNumber,
) -> Result<Option<(BlockHeader, BlockRelevance)>, ClientError>
pub async fn get_block_header_by_num( &self, block_num: BlockNumber, ) -> Result<Option<(BlockHeader, BlockRelevance)>, ClientError>
Retrieves a block header by its block number from the store.
Returns None if the block header is not found in the store.
Sourcepub async fn ensure_genesis_in_place(&mut self) -> Result<(), ClientError>
pub async fn ensure_genesis_in_place(&mut self) -> Result<(), ClientError>
Ensures that the genesis block is available. If the genesis commitment is already cached in the RPC client, returns early. Otherwise, fetches the genesis block from the node, stores it, and sets the commitment in the RPC client.
Sourcepub async fn get_current_partial_mmr(&self) -> Result<PartialMmr, ClientError>
pub async fn get_current_partial_mmr(&self) -> Result<PartialMmr, ClientError>
Fetches from the store the current view of the chain’s PartialMmr.
Returns the list of note tags tracked by the client along with their source.
When syncing the state with the node, these tags will be added to the sync request and note-related information will be retrieved for notes that have matching tags. The source of the tag indicates its origin. It helps distinguish between:
- Tags added manually by the user.
- Tags automatically added by the client to track notes.
- Tags added for accounts tracked by the client.
Note: Tags for accounts that are being tracked by the client are managed automatically by the client and don’t need to be added here. That is, notes for managed accounts will be retrieved automatically by the client when syncing.
Sourcepub async fn add_note_tag(&mut self, tag: NoteTag) -> Result<(), ClientError>
pub async fn add_note_tag(&mut self, tag: NoteTag) -> Result<(), ClientError>
Adds a note tag for the client to track. This tag’s source will be marked as User.
Sourcepub async fn insert_note_tag(
&self,
tag_record: NoteTagRecord,
) -> Result<bool, ClientError>
pub async fn insert_note_tag( &self, tag_record: NoteTagRecord, ) -> Result<bool, ClientError>
Wrapper around the store’s add_note_tag method that checks the note tags limit before the
insert.
Sourcepub async fn remove_note_tag(&mut self, tag: NoteTag) -> Result<(), ClientError>
pub async fn remove_note_tag(&mut self, tag: NoteTag) -> Result<(), ClientError>
Removes a note tag for the client to track. Only tags added by the user can be removed.
Sourcepub async fn get_sync_height(&self) -> Result<BlockNumber, ClientError>
pub async fn get_sync_height(&self) -> Result<BlockNumber, ClientError>
Returns the block number of the last state sync block.
Sourcepub async fn sync_state(&mut self) -> Result<SyncSummary, ClientError>
pub async fn sync_state(&mut self) -> Result<SyncSummary, ClientError>
Syncs the client’s state with the current state of the Miden network and returns a
SyncSummary corresponding to the local state update.
The sync process is done in multiple steps:
- A request is sent to the node to get the state updates. This request includes tracked account IDs and the tags of notes that might have changed or that might be of interest to the client.
- A response is received with the current state of the network. The response includes information about new/committed/consumed notes, updated accounts, and committed transactions.
- Tracked notes are updated with their new states.
- New notes are checked, and only relevant ones are stored. Relevant notes are those that
can be consumed by accounts the client is tracking (this is checked by the
crate::note::NoteScreener) - Transactions are updated with their new states.
- Tracked public accounts are updated and private accounts are validated against the node state.
- The MMR is updated with the new peaks and authentication nodes.
- All updates are applied to the store to be persisted.
Sourcepub async fn build_sync_input(&self) -> Result<StateSyncInput, ClientError>
pub async fn build_sync_input(&self) -> Result<StateSyncInput, ClientError>
Builds a default StateSyncInput from the current client state.
This includes all tracked account headers, all unique note tags, all unspent input and output notes, and all uncommitted transactions.
Sourcepub async fn apply_state_sync(
&mut self,
update: StateSyncUpdate,
) -> Result<(), ClientError>
pub async fn apply_state_sync( &mut self, update: StateSyncUpdate, ) -> Result<(), ClientError>
Applies the state sync update to the store and prunes the irrelevant block headers.
See crate::Store::apply_state_sync() for what the update implies.
Sourcepub async fn ensure_rpc_limits_in_place(&mut self) -> Result<(), ClientError>
pub async fn ensure_rpc_limits_in_place(&mut self) -> Result<(), ClientError>
Ensures that the RPC limits are set in the RPC client. If not already cached, fetches them from the node and persists them in the store.
Sourcepub async fn get_transactions(
&self,
filter: TransactionFilter,
) -> Result<Vec<TransactionRecord>, ClientError>
pub async fn get_transactions( &self, filter: TransactionFilter, ) -> Result<Vec<TransactionRecord>, ClientError>
Retrieves tracked transactions, filtered by TransactionFilter.
Sourcepub async fn submit_new_transaction(
&mut self,
account_id: AccountId,
transaction_request: TransactionRequest,
) -> Result<TransactionId, ClientError>
pub async fn submit_new_transaction( &mut self, account_id: AccountId, transaction_request: TransactionRequest, ) -> Result<TransactionId, ClientError>
Executes a transaction specified by the request against the specified account, proves it, submits it to the network, and updates the local database.
Uses the client’s default prover (configured via
crate::builder::ClientBuilder::prover).
If the transaction utilizes foreign account data, there is a chance that the client doesn’t have the required block header in the local database. In these scenarios, a sync to the chain tip is performed, and the required block header is retrieved.
Sourcepub async fn submit_new_transaction_with_prover(
&mut self,
account_id: AccountId,
transaction_request: TransactionRequest,
tx_prover: Arc<dyn TransactionProver>,
) -> Result<TransactionId, ClientError>
pub async fn submit_new_transaction_with_prover( &mut self, account_id: AccountId, transaction_request: TransactionRequest, tx_prover: Arc<dyn TransactionProver>, ) -> Result<TransactionId, ClientError>
Executes a transaction specified by the request against the specified account, proves it with the provided prover, submits it to the network, and updates the local database.
This is useful for falling back to a different prover (e.g., local) when the default
prover (e.g., remote) fails with a ClientError::TransactionProvingError.
If the transaction utilizes foreign account data, there is a chance that the client doesn’t have the required block header in the local database. In these scenarios, a sync to the chain tip is performed, and the required block header is retrieved.
Sourcepub async fn execute_transaction(
&mut self,
account_id: AccountId,
transaction_request: TransactionRequest,
) -> Result<TransactionResult, ClientError>
pub async fn execute_transaction( &mut self, account_id: AccountId, transaction_request: TransactionRequest, ) -> Result<TransactionResult, ClientError>
Creates and executes a transaction specified by the request against the specified account, but doesn’t change the local database.
If the transaction utilizes foreign account data, there is a chance that the client doesn’t have the required block header in the local database. In these scenarios, a sync to the chain tip is performed, and the required block header is retrieved.
§Errors
- Returns
ClientError::MissingOutputRecipientsif theTransactionRequestoutput notes are not a subset of executor’s output notes. - Returns a
ClientError::TransactionExecutorErrorif the execution fails. - Returns a
ClientError::TransactionRequestErrorif the request is invalid.
Sourcepub async fn prove_transaction(
&mut self,
tx_result: &TransactionResult,
) -> Result<ProvenTransaction, ClientError>
pub async fn prove_transaction( &mut self, tx_result: &TransactionResult, ) -> Result<ProvenTransaction, ClientError>
Proves the specified transaction using the prover configured for this client.
Sourcepub async fn prove_transaction_with(
&mut self,
tx_result: &TransactionResult,
tx_prover: Arc<dyn TransactionProver>,
) -> Result<ProvenTransaction, ClientError>
pub async fn prove_transaction_with( &mut self, tx_result: &TransactionResult, tx_prover: Arc<dyn TransactionProver>, ) -> Result<ProvenTransaction, ClientError>
Proves the specified transaction using the provided prover.
Sourcepub async fn submit_proven_transaction(
&mut self,
proven_transaction: ProvenTransaction,
transaction_inputs: impl Into<TransactionInputs>,
) -> Result<BlockNumber, ClientError>
pub async fn submit_proven_transaction( &mut self, proven_transaction: ProvenTransaction, transaction_inputs: impl Into<TransactionInputs>, ) -> Result<BlockNumber, ClientError>
Submits a previously proven transaction to the RPC endpoint and returns the node’s chain tip upon mempool admission.
Sourcepub async fn get_transaction_store_update(
&self,
tx_result: &TransactionResult,
submission_height: BlockNumber,
) -> Result<TransactionStoreUpdate, ClientError>
pub async fn get_transaction_store_update( &self, tx_result: &TransactionResult, submission_height: BlockNumber, ) -> Result<TransactionStoreUpdate, ClientError>
Builds a TransactionStoreUpdate for the provided transaction result at the specified
submission height.
Sourcepub async fn apply_transaction(
&self,
tx_result: &TransactionResult,
submission_height: BlockNumber,
) -> Result<(), ClientError>
pub async fn apply_transaction( &self, tx_result: &TransactionResult, submission_height: BlockNumber, ) -> Result<(), ClientError>
Persists the effects of a submitted transaction into the local store, updating account data, note metadata, and future note tracking.
pub async fn apply_transaction_update( &self, tx_update: TransactionStoreUpdate, ) -> Result<(), ClientError>
Sourcepub async fn execute_program(
&mut self,
account_id: AccountId,
tx_script: TransactionScript,
advice_inputs: AdviceInputs,
foreign_accounts: BTreeSet<ForeignAccount>,
) -> Result<[BaseElement; 16], ClientError>
pub async fn execute_program( &mut self, account_id: AccountId, tx_script: TransactionScript, advice_inputs: AdviceInputs, foreign_accounts: BTreeSet<ForeignAccount>, ) -> Result<[BaseElement; 16], ClientError>
Executes the provided transaction script against the specified account, and returns the resulting stack. Advice inputs and foreign accounts can be provided for the execution.
The transaction will use the current sync height as the block reference.
Sourcepub async fn validate_request(
&mut self,
account_id: AccountId,
transaction_request: &TransactionRequest,
) -> Result<(), ClientError>
pub async fn validate_request( &mut self, account_id: AccountId, transaction_request: &TransactionRequest, ) -> Result<(), ClientError>
Validates that the specified transaction request can be executed by the specified account.
This does’t guarantee that the transaction will succeed, but it’s useful to avoid submitting transactions that are guaranteed to fail. Some of the validations include:
- That the account has enough balance to cover the outgoing assets.
- That the client is not too far behind the chain tip.
Sourcepub fn in_debug_mode(&self) -> bool
pub fn in_debug_mode(&self) -> bool
Returns true if the client is in debug mode.
Sourcepub fn code_builder(&self) -> CodeBuilder
pub fn code_builder(&self) -> CodeBuilder
Returns an instance of the CodeBuilder
Sourcepub fn note_screener(&self) -> NoteScreener<AUTH>where
AUTH: Sync,
pub fn note_screener(&self) -> NoteScreener<AUTH>where
AUTH: Sync,
Returns an instance of note::NoteScreener configured for this client.
Sourcepub fn rng(&mut self) -> &mut ClientRng
pub fn rng(&mut self) -> &mut ClientRng
Returns a reference to the client’s random number generator. This can be used to generate randomness for various purposes such as serial numbers, keys, etc.
pub fn prover(&self) -> Arc<dyn TransactionProver + Send + Sync>
Sourcepub async fn check_note_tag_limit(&self) -> Result<(), ClientError>
pub async fn check_note_tag_limit(&self) -> Result<(), ClientError>
Checks if the note tag limit has been exceeded.
Sourcepub async fn check_account_limit(&self) -> Result<(), ClientError>
pub async fn check_account_limit(&self) -> Result<(), ClientError>
Checks if the account limit has been exceeded.
Trait Implementations§
Auto Trait Implementations§
impl Freeze for CliClient
impl !RefUnwindSafe for CliClient
impl Send for CliClient
impl Sync for CliClient
impl Unpin for CliClient
impl UnsafeUnpin for CliClient
impl !UnwindSafe for CliClient
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> 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> 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::RequestSource§impl<D> OwoColorize for D
impl<D> OwoColorize for D
Source§fn fg<C>(&self) -> FgColorDisplay<'_, C, Self>where
C: Color,
fn fg<C>(&self) -> FgColorDisplay<'_, C, Self>where
C: Color,
Source§fn bg<C>(&self) -> BgColorDisplay<'_, C, Self>where
C: Color,
fn bg<C>(&self) -> BgColorDisplay<'_, C, Self>where
C: Color,
Source§fn black(&self) -> FgColorDisplay<'_, Black, Self>
fn black(&self) -> FgColorDisplay<'_, Black, Self>
Source§fn on_black(&self) -> BgColorDisplay<'_, Black, Self>
fn on_black(&self) -> BgColorDisplay<'_, Black, Self>
Source§fn red(&self) -> FgColorDisplay<'_, Red, Self>
fn red(&self) -> FgColorDisplay<'_, Red, Self>
Source§fn on_red(&self) -> BgColorDisplay<'_, Red, Self>
fn on_red(&self) -> BgColorDisplay<'_, Red, Self>
Source§fn green(&self) -> FgColorDisplay<'_, Green, Self>
fn green(&self) -> FgColorDisplay<'_, Green, Self>
Source§fn on_green(&self) -> BgColorDisplay<'_, Green, Self>
fn on_green(&self) -> BgColorDisplay<'_, Green, Self>
Source§fn yellow(&self) -> FgColorDisplay<'_, Yellow, Self>
fn yellow(&self) -> FgColorDisplay<'_, Yellow, Self>
Source§fn on_yellow(&self) -> BgColorDisplay<'_, Yellow, Self>
fn on_yellow(&self) -> BgColorDisplay<'_, Yellow, Self>
Source§fn blue(&self) -> FgColorDisplay<'_, Blue, Self>
fn blue(&self) -> FgColorDisplay<'_, Blue, Self>
Source§fn on_blue(&self) -> BgColorDisplay<'_, Blue, Self>
fn on_blue(&self) -> BgColorDisplay<'_, Blue, Self>
Source§fn magenta(&self) -> FgColorDisplay<'_, Magenta, Self>
fn magenta(&self) -> FgColorDisplay<'_, Magenta, Self>
Source§fn on_magenta(&self) -> BgColorDisplay<'_, Magenta, Self>
fn on_magenta(&self) -> BgColorDisplay<'_, Magenta, Self>
Source§fn purple(&self) -> FgColorDisplay<'_, Magenta, Self>
fn purple(&self) -> FgColorDisplay<'_, Magenta, Self>
Source§fn on_purple(&self) -> BgColorDisplay<'_, Magenta, Self>
fn on_purple(&self) -> BgColorDisplay<'_, Magenta, Self>
Source§fn cyan(&self) -> FgColorDisplay<'_, Cyan, Self>
fn cyan(&self) -> FgColorDisplay<'_, Cyan, Self>
Source§fn on_cyan(&self) -> BgColorDisplay<'_, Cyan, Self>
fn on_cyan(&self) -> BgColorDisplay<'_, Cyan, Self>
Source§fn white(&self) -> FgColorDisplay<'_, White, Self>
fn white(&self) -> FgColorDisplay<'_, White, Self>
Source§fn on_white(&self) -> BgColorDisplay<'_, White, Self>
fn on_white(&self) -> BgColorDisplay<'_, White, Self>
Source§fn default_color(&self) -> FgColorDisplay<'_, Default, Self>
fn default_color(&self) -> FgColorDisplay<'_, Default, Self>
Source§fn on_default_color(&self) -> BgColorDisplay<'_, Default, Self>
fn on_default_color(&self) -> BgColorDisplay<'_, Default, Self>
Source§fn bright_black(&self) -> FgColorDisplay<'_, BrightBlack, Self>
fn bright_black(&self) -> FgColorDisplay<'_, BrightBlack, Self>
Source§fn on_bright_black(&self) -> BgColorDisplay<'_, BrightBlack, Self>
fn on_bright_black(&self) -> BgColorDisplay<'_, BrightBlack, Self>
Source§fn bright_red(&self) -> FgColorDisplay<'_, BrightRed, Self>
fn bright_red(&self) -> FgColorDisplay<'_, BrightRed, Self>
Source§fn on_bright_red(&self) -> BgColorDisplay<'_, BrightRed, Self>
fn on_bright_red(&self) -> BgColorDisplay<'_, BrightRed, Self>
Source§fn bright_green(&self) -> FgColorDisplay<'_, BrightGreen, Self>
fn bright_green(&self) -> FgColorDisplay<'_, BrightGreen, Self>
Source§fn on_bright_green(&self) -> BgColorDisplay<'_, BrightGreen, Self>
fn on_bright_green(&self) -> BgColorDisplay<'_, BrightGreen, Self>
Source§fn bright_yellow(&self) -> FgColorDisplay<'_, BrightYellow, Self>
fn bright_yellow(&self) -> FgColorDisplay<'_, BrightYellow, Self>
Source§fn on_bright_yellow(&self) -> BgColorDisplay<'_, BrightYellow, Self>
fn on_bright_yellow(&self) -> BgColorDisplay<'_, BrightYellow, Self>
Source§fn bright_blue(&self) -> FgColorDisplay<'_, BrightBlue, Self>
fn bright_blue(&self) -> FgColorDisplay<'_, BrightBlue, Self>
Source§fn on_bright_blue(&self) -> BgColorDisplay<'_, BrightBlue, Self>
fn on_bright_blue(&self) -> BgColorDisplay<'_, BrightBlue, Self>
Source§fn bright_magenta(&self) -> FgColorDisplay<'_, BrightMagenta, Self>
fn bright_magenta(&self) -> FgColorDisplay<'_, BrightMagenta, Self>
Source§fn on_bright_magenta(&self) -> BgColorDisplay<'_, BrightMagenta, Self>
fn on_bright_magenta(&self) -> BgColorDisplay<'_, BrightMagenta, Self>
Source§fn bright_purple(&self) -> FgColorDisplay<'_, BrightMagenta, Self>
fn bright_purple(&self) -> FgColorDisplay<'_, BrightMagenta, Self>
Source§fn on_bright_purple(&self) -> BgColorDisplay<'_, BrightMagenta, Self>
fn on_bright_purple(&self) -> BgColorDisplay<'_, BrightMagenta, Self>
Source§fn bright_cyan(&self) -> FgColorDisplay<'_, BrightCyan, Self>
fn bright_cyan(&self) -> FgColorDisplay<'_, BrightCyan, Self>
Source§fn on_bright_cyan(&self) -> BgColorDisplay<'_, BrightCyan, Self>
fn on_bright_cyan(&self) -> BgColorDisplay<'_, BrightCyan, Self>
Source§fn bright_white(&self) -> FgColorDisplay<'_, BrightWhite, Self>
fn bright_white(&self) -> FgColorDisplay<'_, BrightWhite, Self>
Source§fn on_bright_white(&self) -> BgColorDisplay<'_, BrightWhite, Self>
fn on_bright_white(&self) -> BgColorDisplay<'_, BrightWhite, Self>
Source§fn bold(&self) -> BoldDisplay<'_, Self>
fn bold(&self) -> BoldDisplay<'_, Self>
Source§fn dimmed(&self) -> DimDisplay<'_, Self>
fn dimmed(&self) -> DimDisplay<'_, Self>
Source§fn italic(&self) -> ItalicDisplay<'_, Self>
fn italic(&self) -> ItalicDisplay<'_, Self>
Source§fn underline(&self) -> UnderlineDisplay<'_, Self>
fn underline(&self) -> UnderlineDisplay<'_, Self>
Source§fn blink(&self) -> BlinkDisplay<'_, Self>
fn blink(&self) -> BlinkDisplay<'_, Self>
Source§fn blink_fast(&self) -> BlinkFastDisplay<'_, Self>
fn blink_fast(&self) -> BlinkFastDisplay<'_, Self>
Source§fn reversed(&self) -> ReversedDisplay<'_, Self>
fn reversed(&self) -> ReversedDisplay<'_, Self>
Source§fn strikethrough(&self) -> StrikeThroughDisplay<'_, Self>
fn strikethrough(&self) -> StrikeThroughDisplay<'_, Self>
Source§fn color<Color>(&self, color: Color) -> FgDynColorDisplay<'_, Color, Self>where
Color: DynColor,
fn color<Color>(&self, color: Color) -> FgDynColorDisplay<'_, Color, Self>where
Color: DynColor,
OwoColorize::fg or
a color-specific method, such as OwoColorize::green, Read moreSource§fn on_color<Color>(&self, color: Color) -> BgDynColorDisplay<'_, Color, Self>where
Color: DynColor,
fn on_color<Color>(&self, color: Color) -> BgDynColorDisplay<'_, Color, Self>where
Color: DynColor,
OwoColorize::bg or
a color-specific method, such as OwoColorize::on_yellow, Read moreSource§fn fg_rgb<const R: u8, const G: u8, const B: u8>(
&self,
) -> FgColorDisplay<'_, CustomColor<R, G, B>, Self>
fn fg_rgb<const R: u8, const G: u8, const B: u8>( &self, ) -> FgColorDisplay<'_, CustomColor<R, G, B>, Self>
Source§fn bg_rgb<const R: u8, const G: u8, const B: u8>(
&self,
) -> BgColorDisplay<'_, CustomColor<R, G, B>, Self>
fn bg_rgb<const R: u8, const G: u8, const B: u8>( &self, ) -> BgColorDisplay<'_, CustomColor<R, G, B>, Self>
Source§fn truecolor(&self, r: u8, g: u8, b: u8) -> FgDynColorDisplay<'_, Rgb, Self>
fn truecolor(&self, r: u8, g: u8, b: u8) -> FgDynColorDisplay<'_, Rgb, Self>
Source§fn on_truecolor(&self, r: u8, g: u8, b: u8) -> BgDynColorDisplay<'_, Rgb, Self>
fn on_truecolor(&self, r: u8, g: u8, b: u8) -> BgDynColorDisplay<'_, Rgb, Self>
Source§impl<T> Paint for Twhere
T: ?Sized,
impl<T> Paint for Twhere
T: ?Sized,
Source§fn fg(&self, value: Color) -> Painted<&T>
fn fg(&self, value: Color) -> Painted<&T>
Returns a styled value derived from self with the foreground set to
value.
This method should be used rarely. Instead, prefer to use color-specific
builder methods like red() and
green(), which have the same functionality but are
pithier.
§Example
Set foreground color to white using fg():
use yansi::{Paint, Color};
painted.fg(Color::White);Set foreground color to white using white().
use yansi::Paint;
painted.white();Source§fn bright_black(&self) -> Painted<&T>
fn bright_black(&self) -> Painted<&T>
Source§fn bright_red(&self) -> Painted<&T>
fn bright_red(&self) -> Painted<&T>
Source§fn bright_green(&self) -> Painted<&T>
fn bright_green(&self) -> Painted<&T>
Source§fn bright_yellow(&self) -> Painted<&T>
fn bright_yellow(&self) -> Painted<&T>
Source§fn bright_blue(&self) -> Painted<&T>
fn bright_blue(&self) -> Painted<&T>
Source§fn bright_magenta(&self) -> Painted<&T>
fn bright_magenta(&self) -> Painted<&T>
Source§fn bright_cyan(&self) -> Painted<&T>
fn bright_cyan(&self) -> Painted<&T>
Source§fn bright_white(&self) -> Painted<&T>
fn bright_white(&self) -> Painted<&T>
Source§fn bg(&self, value: Color) -> Painted<&T>
fn bg(&self, value: Color) -> Painted<&T>
Returns a styled value derived from self with the background set to
value.
This method should be used rarely. Instead, prefer to use color-specific
builder methods like on_red() and
on_green(), which have the same functionality but
are pithier.
§Example
Set background color to red using fg():
use yansi::{Paint, Color};
painted.bg(Color::Red);Set background color to red using on_red().
use yansi::Paint;
painted.on_red();Source§fn on_primary(&self) -> Painted<&T>
fn on_primary(&self) -> Painted<&T>
Source§fn on_magenta(&self) -> Painted<&T>
fn on_magenta(&self) -> Painted<&T>
Source§fn on_bright_black(&self) -> Painted<&T>
fn on_bright_black(&self) -> Painted<&T>
Source§fn on_bright_red(&self) -> Painted<&T>
fn on_bright_red(&self) -> Painted<&T>
Source§fn on_bright_green(&self) -> Painted<&T>
fn on_bright_green(&self) -> Painted<&T>
Source§fn on_bright_yellow(&self) -> Painted<&T>
fn on_bright_yellow(&self) -> Painted<&T>
Source§fn on_bright_blue(&self) -> Painted<&T>
fn on_bright_blue(&self) -> Painted<&T>
Source§fn on_bright_magenta(&self) -> Painted<&T>
fn on_bright_magenta(&self) -> Painted<&T>
Source§fn on_bright_cyan(&self) -> Painted<&T>
fn on_bright_cyan(&self) -> Painted<&T>
Source§fn on_bright_white(&self) -> Painted<&T>
fn on_bright_white(&self) -> Painted<&T>
Source§fn attr(&self, value: Attribute) -> Painted<&T>
fn attr(&self, value: Attribute) -> Painted<&T>
Enables the styling Attribute value.
This method should be used rarely. Instead, prefer to use
attribute-specific builder methods like bold() and
underline(), which have the same functionality
but are pithier.
§Example
Make text bold using attr():
use yansi::{Paint, Attribute};
painted.attr(Attribute::Bold);Make text bold using using bold().
use yansi::Paint;
painted.bold();Source§fn rapid_blink(&self) -> Painted<&T>
fn rapid_blink(&self) -> Painted<&T>
Source§fn quirk(&self, value: Quirk) -> Painted<&T>
fn quirk(&self, value: Quirk) -> Painted<&T>
Enables the yansi Quirk value.
This method should be used rarely. Instead, prefer to use quirk-specific
builder methods like mask() and
wrap(), which have the same functionality but are
pithier.
§Example
Enable wrapping using .quirk():
use yansi::{Paint, Quirk};
painted.quirk(Quirk::Wrap);Enable wrapping using wrap().
use yansi::Paint;
painted.wrap();Source§fn clear(&self) -> Painted<&T>
👎Deprecated since 1.0.1: renamed to resetting() due to conflicts with Vec::clear().
The clear() method will be removed in a future release.
fn clear(&self) -> Painted<&T>
resetting() due to conflicts with Vec::clear().
The clear() method will be removed in a future release.Source§fn whenever(&self, value: Condition) -> Painted<&T>
fn whenever(&self, value: Condition) -> Painted<&T>
Conditionally enable styling based on whether the Condition value
applies. Replaces any previous condition.
See the crate level docs for more details.
§Example
Enable styling painted only when both stdout and stderr are TTYs:
use yansi::{Paint, Condition};
painted.red().on_yellow().whenever(Condition::STDOUTERR_ARE_TTY);