All Types

cash.z.wallet.sdk.entity.Account
(extensions in package cash.z.wallet.sdk.ext)
java.math.BigDecimal
cash.z.wallet.sdk.exception.BirthdayException

Exceptions related to the wallet's birthday.

cash.z.wallet.sdk.entity.Block
cash.z.wallet.sdk.db.BlockDao

The data access object for blocks, used for determining the last scanned height.

cash.z.wallet.sdk.ext.BlockingProvider
cash.z.wallet.sdk.ext.BlockingSeedProvider
cash.z.wallet.sdk.ext.Bush

A collection of tiny logs (twigs) consisting of one trunk and maybe some leaves. There can only ever be one trunk. Trunks are created by planting a twig. Whenever a leaf sprouts, it will appear as a tag on every log message until clipped.

cash.z.wallet.sdk.db.CompactBlockDao

Data access object for compact blocks in the "Cache DB."

cash.z.wallet.sdk.db.CompactBlockDb

The "Cache DB", serving as a cache of compact blocks, waiting to be processed. This will contain the entire blockchain, from the birthdate of the wallet, forward. The CompactBlockProcessor will copy blocks from this database, as they are scanned. In the future, those blocks can be deleted because they are no longer needed. Currently, this efficiency has not been implemented.

cash.z.wallet.sdk.block.CompactBlockDbStore

An implementation of CompactBlockStore that persists information to a database in the given path. This represents the "cache db" or local cache of compact blocks waiting to be scanned.

cash.z.wallet.sdk.block.CompactBlockDownloader

Serves as a source of compact blocks received from the light wallet server. Once started, it will use the given lightwallet service to request all the appropriate blocks and compact block store to persist them. By delegating to these dependencies, the downloader remains agnostic to the particular implementation of how to retrieve and store data; although, by default the SDK uses gRPC and SQL.

cash.z.wallet.sdk.entity.CompactBlockEntity
cash.z.wallet.sdk.block.CompactBlockProcessor

Responsible for processing the compact blocks that are received from the lightwallet server. This class encapsulates all the business logic required to validate and scan the blockchain and is therefore tightly coupled with librustzcash.

cash.z.wallet.sdk.exception.CompactBlockProcessorException

Potentially user-facing exceptions that occur while processing compact blocks.

cash.z.wallet.sdk.block.CompactBlockStore

Interface for storing compact blocks.

cash.z.wallet.sdk.ext.CompositeTwig

Since there can only ever be one trunk on the bush of twigs, this class lets you cheat and make that trunk be a bundle of twigs.

cash.z.wallet.sdk.ext.android.ComputableFlow
cash.z.wallet.sdk.entity.ConfirmedTransaction

A mined, shielded transaction. Since this is a MinedTransaction, it represents data on the blockchain.

cash.z.wallet.sdk.ext.Conversions
cash.z.wallet.sdk.db.DerivedDataDb

The "Data DB," where all data derived from the compact blocks is stored. Most importantly, this database contains transaction information and can be queried for the current balance. The "blocks" table contains a copy of everything that has been scanned. In the future, that table can be truncated up to the last scanned block, for storage efficiency. Wallets should only read from, but never write to, this database.

(extensions in package cash.z.wallet.sdk.ext)
kotlin.Double
cash.z.wallet.sdk.entity.EncodedTransaction
(extensions in package cash.z.wallet.sdk.ext.android)
androidx.paging.DataSource.Factory
(extensions in package cash.z.wallet.sdk.ext)
kotlinx.coroutines.flow.Flow
cash.z.wallet.sdk.ext.android.FlowPagedListBuilder
cash.z.wallet.sdk.Initializer

Responsible for initialization, which can be considered as setup that must happen before synchronizing begins. This begins with one of three actions, a call to either new, import or open, where the last option is the most common case--when a user is opening a wallet they have used before on this device.

cash.z.wallet.sdk.exception.InitializerException

Exceptions thrown by the initializer.

cash.z.wallet.sdk.exception.LightwalletException

Exceptions thrown while interacting with lightwalletd.

cash.z.wallet.sdk.service.LightWalletGrpcService

Implementation of LightwalletService using gRPC for requests to lightwalletd.

cash.z.wallet.sdk.service.LightWalletService

Service for interacting with lightwalletd. Implementers of this service should make blocking calls because async concerns are handled at a higher level.

(extensions in package cash.z.wallet.sdk.ext)
kotlin.Long
cash.z.wallet.sdk.entity.MinedTransaction

Parent type for transactions that have been mined. This is useful for putting all transactions in one list for things like history. A mined tx should have all properties, except possibly a memo.

cash.z.wallet.sdk.annotation.OpenForTesting

Used in conjunction with the kotlin-allopen plugin to make any class with this annotation open for extension. Typically, we apply this to classes that we want to mock in androidTests because unit tests don't have this problem, it's only an issue with JUnit4 Instrumentation tests. This annotation is only leveraged in debug builds.

cash.z.wallet.sdk.transaction.OutboundTransactionManager

Manage outbound transactions with the main purpose of reporting which ones are still pending, particularly after failed attempts or dropped connectivity. The intent is to help see outbound transactions through to completion.

cash.z.wallet.sdk.transaction.PagedTransactionRepository

Example of a repository that leverages the Room paging library to return a PagedList of transactions. Consumers can register as a page listener and receive an interface that allows for efficiently paging data.

cash.z.wallet.sdk.entity.PendingTransaction
cash.z.wallet.sdk.db.PendingTransactionDao

Data access object providing crud for pending transactions.

cash.z.wallet.sdk.db.PendingTransactionDb

Database for pending transaction information. Unlike with the "Data DB," the wallet is free to write to this database. In a way, this almost serves as a local mempool for all transactions initiated by this wallet. Currently, the data necessary to support expired transactions is there but it is not being leveraged.

cash.z.wallet.sdk.entity.PendingTransactionEntity
cash.z.wallet.sdk.transaction.PersistentTransactionManager

Facilitates persistent attempts to ensure that an outbound transaction is completed.

cash.z.wallet.sdk.entity.Received
cash.z.wallet.sdk.db.ReceivedDao

The data access object for notes, used for determining whether transactions exist.

cash.z.wallet.sdk.ext.android.RefreshableDataSourceFactory
cash.z.wallet.sdk.exception.RepositoryException

User-facing exceptions thrown by the transaction repository.

cash.z.wallet.sdk.jni.RustBackend

Serves as the JNI boundary between the Kotlin and Rust layers. Functions in this class should not be called directly by code outside of the SDK. Instead, one of the higher-level components should be used such as Wallet.kt or CompactBlockProcessor.kt.

cash.z.wallet.sdk.jni.RustBackendWelding

Contract defining the exposed capabilities of the Rust backend. This is what welds the SDK to the Rust layer. It is not documented because it is not intended to be used, directly. Instead, use the synchronizer or one of its subcomponents.

cash.z.wallet.sdk.exception.RustLayerException

Exceptions thrown in the Rust layer of the SDK. We may not always be able to surface details about this exception so it's important for the SDK to provide helpful messages whenever these errors are encountered.

cash.z.wallet.sdk.ext.SampleSeedProvider
cash.z.wallet.sdk.ext.SampleSpendingKeyProvider
cash.z.wallet.sdk.exception.SdkException

Marker for all custom exceptions from the SDK. Making it an interface would result in more typing so its a supertype, instead.

cash.z.wallet.sdk.SdkSynchronizer

A Synchronizer that attempts to remain operational, despite any number of errors that can occur. It acts as the glue that ties all the pieces of the SDK together. Each component of the SDK is designed for the potential of stand-alone usage but coordinating all the interactions is non- trivial. So the Synchronizer facilitates this, acting as reference that demonstrates how all the pieces can be tied together. Its goal is to allow a developer to focus on their app rather than the nuances of how Zcash works.

cash.z.wallet.sdk.ext.SeedGenerator

This is intentionally insecure. Wallet makers have told us storing keys is their specialty so we don't put a lot of energy here. A true implementation would create a key using user interaction, perhaps with a password they know that is never stored, along with requiring user authentication for key use (i.e. fingerprint/PIN/pattern/etc). From there, one of these approaches might be helpful to store the key securely:

cash.z.wallet.sdk.entity.Sent
cash.z.wallet.sdk.db.SentDao

The data access object for sent notes, used for determining whether outbound transactions exist.

cash.z.wallet.sdk.entity.SignedTransaction

Interface for anything that's able to provide signed transaction bytes.

cash.z.wallet.sdk.ext.SilentTwig

A tiny log that does nothing. No one hears this twig fall in the woods.

cash.z.wallet.sdk.ext.SimpleProvider
(extensions in package cash.z.wallet.sdk.ext)
kotlin.String
cash.z.wallet.sdk.Synchronizer

Primary interface for interacting with the SDK. Defines the contract that specific implementations like MockSynchronizer and SdkSynchronizer fulfill. Given the language-level support for coroutines, we favor their use in the SDK and incorporate that choice into this contract.

cash.z.wallet.sdk.exception.SynchronizerException

High-level exceptions thrown by the synchronizer, which do not fall within the umbrealla of a child component.

cash.z.wallet.sdk.entity.Transaction

Common interface between confirmed transactions on the blockchain and pending transactions being constructed.

cash.z.wallet.sdk.db.TransactionDao

The data access object for transactions, used for querying all transaction information, including whether transactions are mined.

cash.z.wallet.sdk.transaction.TransactionEncoder
cash.z.wallet.sdk.exception.TransactionEncoderException

Potentially user-facing exceptions thrown while encoding transactions.

cash.z.wallet.sdk.entity.TransactionEntity
cash.z.wallet.sdk.transaction.TransactionError

Interface for transaction errors.

cash.z.wallet.sdk.transaction.TransactionRepository

Repository of wallet transactions, providing an agnostic interface to the underlying information.

cash.z.wallet.sdk.ext.TroubleshootingTwig

A tiny log for detecting troubles. Aim at your troubles and pull the twigger.

cash.z.wallet.sdk.ext.Twig

A tiny log.

cash.z.wallet.sdk.transaction.WalletTransactionEncoder

Class responsible for encoding a transaction in a consistent way. This bridges the gap by behaving like a stateless API so that callers can request createTransaction and receive a result, even though there are intermediate database interactions.

cash.z.wallet.sdk.ext.ZcashSdk

Wrapper for all the constant values in the SDK. It is important that these values stay fixed for all users of the SDK. Otherwise, if individual wallet makers are using different values, it becomes easier to reduce privacy by segmenting the anonymity set of users, particularly as it relates to network requests.

cash.z.wallet.sdk.ext.ZcashSdkCommon

Wrapper for all the constant values in the SDK. It is important that these values stay fixed for all users of the SDK. Otherwise, if individual wallet makers are using different values, it becomes easier to reduce privacy by segmenting the anonymity set of users, particularly as it relates to network requests.