diff --git a/darkside-test-lib/src/androidTest/java/cash/z/ecc/android/sdk/darkside/MultiRecipientIntegrationTest.kt b/darkside-test-lib/src/androidTest/java/cash/z/ecc/android/sdk/darkside/MultiRecipientIntegrationTest.kt index ea2474dd..ce730251 100644 --- a/darkside-test-lib/src/androidTest/java/cash/z/ecc/android/sdk/darkside/MultiRecipientIntegrationTest.kt +++ b/darkside-test-lib/src/androidTest/java/cash/z/ecc/android/sdk/darkside/MultiRecipientIntegrationTest.kt @@ -3,7 +3,7 @@ package cash.z.ecc.android.sdk.darkside // package cash.z.ecc.android.sdk.integr // import cash.z.ecc.android.sdk.test.ScopedTest // import cash.z.ecc.android.sdk.ext.twig // import cash.z.ecc.android.sdk.ext.twigTask -// import cash.z.ecc.android.sdk.service.LightWalletGrpcService +// import cash.z.ecc.android.sdk.internal.service.LightWalletGrpcService // import cash.z.ecc.android.sdk.darkside.test.DarksideTestCoordinator // import cash.z.ecc.android.sdk.util.SimpleMnemonics // import cash.z.wallet.sdk.rpc.CompactFormats diff --git a/darkside-test-lib/src/androidTest/java/cash/z/ecc/android/sdk/darkside/test/DarksideApi.kt b/darkside-test-lib/src/androidTest/java/cash/z/ecc/android/sdk/darkside/test/DarksideApi.kt index 61165c53..bcd3d4c8 100644 --- a/darkside-test-lib/src/androidTest/java/cash/z/ecc/android/sdk/darkside/test/DarksideApi.kt +++ b/darkside-test-lib/src/androidTest/java/cash/z/ecc/android/sdk/darkside/test/DarksideApi.kt @@ -3,7 +3,7 @@ package cash.z.ecc.android.sdk.darkside.test import android.content.Context import cash.z.ecc.android.sdk.R import cash.z.ecc.android.sdk.ext.twig -import cash.z.ecc.android.sdk.service.LightWalletGrpcService +import cash.z.ecc.android.sdk.internal.service.LightWalletGrpcService import cash.z.ecc.android.sdk.type.ZcashNetwork import cash.z.wallet.sdk.rpc.Darkside import cash.z.wallet.sdk.rpc.Darkside.DarksideTransactionsURL diff --git a/darkside-test-lib/src/androidTest/java/cash/z/ecc/android/sdk/darkside/test/TestWallet.kt b/darkside-test-lib/src/androidTest/java/cash/z/ecc/android/sdk/darkside/test/TestWallet.kt index 667251f1..c48ee311 100644 --- a/darkside-test-lib/src/androidTest/java/cash/z/ecc/android/sdk/darkside/test/TestWallet.kt +++ b/darkside-test-lib/src/androidTest/java/cash/z/ecc/android/sdk/darkside/test/TestWallet.kt @@ -9,7 +9,7 @@ import cash.z.ecc.android.sdk.Synchronizer import cash.z.ecc.android.sdk.db.entity.isPending import cash.z.ecc.android.sdk.ext.Twig import cash.z.ecc.android.sdk.ext.twig -import cash.z.ecc.android.sdk.service.LightWalletGrpcService +import cash.z.ecc.android.sdk.internal.service.LightWalletGrpcService import cash.z.ecc.android.sdk.tool.DerivationTool import cash.z.ecc.android.sdk.type.WalletBalance import cash.z.ecc.android.sdk.type.ZcashNetwork diff --git a/demo-app/src/androidTest/java/cash/z/wallet/sdk/sample/demoapp/SampleCodeTest.kt b/demo-app/src/androidTest/java/cash/z/wallet/sdk/sample/demoapp/SampleCodeTest.kt index 8c6ac63f..11ddb1d6 100644 --- a/demo-app/src/androidTest/java/cash/z/wallet/sdk/sample/demoapp/SampleCodeTest.kt +++ b/demo-app/src/androidTest/java/cash/z/wallet/sdk/sample/demoapp/SampleCodeTest.kt @@ -1,17 +1,26 @@ -package cash.z.ecc.android.sdk.sample.demoapp +package cash.z.wallet.sdk.sample.demoapp import androidx.test.platform.app.InstrumentationRegistry +import cash.z.ecc.android.sdk.Initializer import cash.z.ecc.android.sdk.Synchronizer -import cash.z.ecc.android.sdk.entity.isFailure +import cash.z.ecc.android.sdk.db.entity.isFailure import cash.z.ecc.android.sdk.ext.TroubleshootingTwig import cash.z.ecc.android.sdk.ext.Twig import cash.z.ecc.android.sdk.ext.ZcashSdk +import cash.z.ecc.android.sdk.ext.convertZecToZatoshi +import cash.z.ecc.android.sdk.ext.toHex +import cash.z.ecc.android.sdk.ext.twig import cash.z.ecc.android.sdk.jni.RustBackend -import cash.z.ecc.android.sdk.service.LightWalletGrpcService -import cash.z.ecc.android.sdk.transaction.PagedTransactionRepository -import cash.z.ecc.android.sdk.transaction.WalletTransactionEncoder +import cash.z.ecc.android.sdk.internal.service.LightWalletGrpcService +import cash.z.ecc.android.sdk.internal.transaction.PagedTransactionRepository +import cash.z.ecc.android.sdk.internal.transaction.WalletTransactionEncoder +import cash.z.ecc.android.sdk.tool.DerivationTool +import cash.z.ecc.android.sdk.type.ZcashNetwork import kotlinx.coroutines.flow.collect import kotlinx.coroutines.runBlocking +import org.junit.Assert.assertEquals +import org.junit.Assert.assertFalse +import org.junit.Assert.assertTrue import org.junit.BeforeClass import org.junit.Ignore import org.junit.Test @@ -47,7 +56,7 @@ class SampleCodeTest { // /////////////////////////////////////////////////// // Derive Extended Spending Key @Test fun deriveSpendingKey() { - val spendingKeys = RustBackend().deriveSpendingKeys(seed) + val spendingKeys = DerivationTool.deriveSpendingKeys(seed, ZcashNetwork.Mainnet) assertEquals(1, spendingKeys.size) log("Spending Key: ${spendingKeys?.get(0)}") } @@ -95,22 +104,22 @@ class SampleCodeTest { @Test fun queryIncomingTransactions() { } - // /////////////////////////////////////////////////// - // Create a signed transaction (with memo) - @Test fun createTransaction() = runBlocking { - val rustBackend = RustBackend().init(context) - val repository = PagedTransactionRepository(context) - val encoder = WalletTransactionEncoder(rustBackend, repository) - val spendingKey = rustBackend.deriveSpendingKeys(seed)[0] - - val amount = 0.123.convertZecToZatoshi() - val address = "ztestsapling1tklsjr0wyw0d58f3p7wufvrj2cyfv6q6caumyueadq8qvqt8lda6v6tpx474rfru9y6u75u7qnw" - val memo = "Test Transaction".toByteArray() - - val encodedTx = encoder.createTransaction(spendingKey, amount, address, memo) - assertTrue(encodedTx.raw.isNotEmpty()) - log("Transaction ID: ${encodedTx.txId.toHex()}") - } +// // /////////////////////////////////////////////////// +// // Create a signed transaction (with memo) +// @Test fun createTransaction() = runBlocking { +// val rustBackend = RustBackend.init(context) +// val repository = PagedTransactionRepository(context) +// val encoder = WalletTransactionEncoder(rustBackend, repository) +// val spendingKey = DerivationTool.deriveSpendingKeys(seed, ZcashNetwork.Mainnet)[0] +// +// val amount = 0.123.convertZecToZatoshi() +// val address = "ztestsapling1tklsjr0wyw0d58f3p7wufvrj2cyfv6q6caumyueadq8qvqt8lda6v6tpx474rfru9y6u75u7qnw" +// val memo = "Test Transaction".toByteArray() +// +// val encodedTx = encoder.createTransaction(spendingKey, amount, address, memo) +// assertTrue(encodedTx.raw.isNotEmpty()) +// log("Transaction ID: ${encodedTx.txId.toHex()}") +// } // /////////////////////////////////////////////////// // Create a signed transaction (with memo) and broadcast @@ -118,11 +127,11 @@ class SampleCodeTest { val amount = 0.123.convertZecToZatoshi() val address = "ztestsapling1tklsjr0wyw0d58f3p7wufvrj2cyfv6q6caumyueadq8qvqt8lda6v6tpx474rfru9y6u75u7qnw" val memo = "Test Transaction" - val spendingKey = RustBackend().deriveSpendingKeys(seed)[0] + val spendingKey = DerivationTool.deriveSpendingKeys(seed, ZcashNetwork.Mainnet)[0] val transactionFlow = synchronizer.sendToAddress(spendingKey, amount, address, memo) transactionFlow.collect { log("pending transaction updated $it") - assertTrue("Failed to send funds. See log for details.", it?.isFailure() == false) + assertTrue("Failed to send funds. See log for details.", !it?.isFailure()) } } @@ -132,10 +141,10 @@ class SampleCodeTest { companion object { private val seed = "Insert seed for testing".toByteArray() - private val lightwalletdHost: String = ZcashSdk.DEFAULT_LIGHTWALLETD_HOST + private val lightwalletdHost: String = ZcashNetwork.Mainnet.defaultHost private val context = InstrumentationRegistry.getInstrumentation().targetContext - private val synchronizer = Synchronizer(context, lightwalletdHost, seed) + private val synchronizer = Synchronizer(Initializer(context) {}) @BeforeClass @JvmStatic diff --git a/demo-app/src/main/java/cash/z/ecc/android/sdk/demoapp/MainActivity.kt b/demo-app/src/main/java/cash/z/ecc/android/sdk/demoapp/MainActivity.kt index 7c3630dd..61e6bc83 100644 --- a/demo-app/src/main/java/cash/z/ecc/android/sdk/demoapp/MainActivity.kt +++ b/demo-app/src/main/java/cash/z/ecc/android/sdk/demoapp/MainActivity.kt @@ -18,8 +18,8 @@ import androidx.navigation.ui.setupActionBarWithNavController import androidx.navigation.ui.setupWithNavController import androidx.viewbinding.ViewBinding import cash.z.ecc.android.sdk.demoapp.util.fromResources -import cash.z.ecc.android.sdk.service.LightWalletGrpcService -import cash.z.ecc.android.sdk.service.LightWalletService +import cash.z.ecc.android.sdk.internal.service.LightWalletGrpcService +import cash.z.ecc.android.sdk.internal.service.LightWalletService import cash.z.ecc.android.sdk.type.ZcashNetwork import com.google.android.material.floatingactionbutton.FloatingActionButton import com.google.android.material.navigation.NavigationView diff --git a/docs/tests/Public APIs.md b/docs/tests/Public APIs.md new file mode 100644 index 00000000..f84ba55d --- /dev/null +++ b/docs/tests/Public APIs.md @@ -0,0 +1,31 @@ +# Public APIs +The SDK has a variety of public APIs that should be kept stable for SDK consumers, unless an explicit decision is made to introduce a breaking API change. To reduce the introduction of incompatible changes, these test cases covers how to verify our own apps don't break. + +# Compile Compatibility +1. Publish the SDK to mavenLocal + 1. Bump the SDK version in [gradle.properties](../../gradle.properties) + 1. Navigate to the root of the SDK checkout + 1. Run the Gradle task `./gradlew publishToMavenLocal` +1. Modify the wallet app to build against the new SDK + 1. Check out the [Zcash Android Wallet](https://github.com/zcash/zcash-android-wallet) + 1. Modify settings.gradle to additionally include `mavenLocal()` in the `dependencyResolutionManagement` block + 1. Modify [Dependencies.kt](https://github.com/zcash/zcash-android-wallet/blob/master/buildSrc/src/main/java/cash/z/ecc/android/Dependencies.kt) to use the new SDK version defined in the first step +1. Navigate to the root of the wallet app checkout +1. Build the wallet app and unit tests with the task `./gradlew assembleAndroidTest` +1. Verify the build completes successfully + +# Upgrade Compatibility +1. Install the wallet app using the old SDK + 1. Ensure that no version of the Android wallet is currently installed on your test Android device or emulator + 1. Build the unmodified version of the wallet app + 1. Run the wallet app and create a new wallet +1. Publish the SDK to mavenLocal + 1. Bump the SDK version in [gradle.properties](../../gradle.properties) + 1. Navigate to the root of the SDK checkout + 1. Run the Gradle task `./gradlew publishToMavenLocal` +1. Modify the wallet app to build against the new SDK + 1. Check out the [Zcash Android Wallet](https://github.com/zcash/zcash-android-wallet) + 1. Modify settings.gradle to additionally include `mavenLocal()` in the `dependencyResolutionManagement` block + 1. Modify [Dependencies.kt](https://github.com/zcash/zcash-android-wallet/blob/master/buildSrc/src/main/java/cash/z/ecc/android/Dependencies.kt) to use the new SDK version defined in the first step +1. Install the wallet app using the new SDK +1. Verify that the wallet behaves correctly (it should not act as if it is starting fresh; user data persisted by the old version of the SDK should still be present after SDK upgrade) \ No newline at end of file diff --git a/sdk-lib/schemas/cash.z.ecc.android.sdk.db.CompactBlockDb/1.json b/sdk-lib/schemas/cash.z.ecc.android.sdk.internal.db.CompactBlockDb/1.json similarity index 100% rename from sdk-lib/schemas/cash.z.ecc.android.sdk.db.CompactBlockDb/1.json rename to sdk-lib/schemas/cash.z.ecc.android.sdk.internal.db.CompactBlockDb/1.json diff --git a/sdk-lib/schemas/cash.z.ecc.android.sdk.db.CompactBlockDb/2.json b/sdk-lib/schemas/cash.z.ecc.android.sdk.internal.db.CompactBlockDb/2.json similarity index 100% rename from sdk-lib/schemas/cash.z.ecc.android.sdk.db.CompactBlockDb/2.json rename to sdk-lib/schemas/cash.z.ecc.android.sdk.internal.db.CompactBlockDb/2.json diff --git a/sdk-lib/schemas/cash.z.wallet.sdk.db.DerivedDataDb/3.json b/sdk-lib/schemas/cash.z.ecc.android.sdk.internal.db.DerivedDataDb/3.json similarity index 100% rename from sdk-lib/schemas/cash.z.wallet.sdk.db.DerivedDataDb/3.json rename to sdk-lib/schemas/cash.z.ecc.android.sdk.internal.db.DerivedDataDb/3.json diff --git a/sdk-lib/schemas/cash.z.wallet.sdk.db.DerivedDataDb/4.json b/sdk-lib/schemas/cash.z.ecc.android.sdk.internal.db.DerivedDataDb/4.json similarity index 100% rename from sdk-lib/schemas/cash.z.wallet.sdk.db.DerivedDataDb/4.json rename to sdk-lib/schemas/cash.z.ecc.android.sdk.internal.db.DerivedDataDb/4.json diff --git a/sdk-lib/schemas/cash.z.ecc.android.sdk.db.DerivedDataDb/5.json b/sdk-lib/schemas/cash.z.ecc.android.sdk.internal.db.DerivedDataDb/5.json similarity index 100% rename from sdk-lib/schemas/cash.z.ecc.android.sdk.db.DerivedDataDb/5.json rename to sdk-lib/schemas/cash.z.ecc.android.sdk.internal.db.DerivedDataDb/5.json diff --git a/sdk-lib/schemas/cash.z.ecc.android.sdk.db.DerivedDataDb/6.json b/sdk-lib/schemas/cash.z.ecc.android.sdk.internal.db.DerivedDataDb/6.json similarity index 100% rename from sdk-lib/schemas/cash.z.ecc.android.sdk.db.DerivedDataDb/6.json rename to sdk-lib/schemas/cash.z.ecc.android.sdk.internal.db.DerivedDataDb/6.json diff --git a/sdk-lib/schemas/cash.z.ecc.android.sdk.db.DerivedDataDb/7.json b/sdk-lib/schemas/cash.z.ecc.android.sdk.internal.db.DerivedDataDb/7.json similarity index 100% rename from sdk-lib/schemas/cash.z.ecc.android.sdk.db.DerivedDataDb/7.json rename to sdk-lib/schemas/cash.z.ecc.android.sdk.internal.db.DerivedDataDb/7.json diff --git a/sdk-lib/schemas/cash.z.ecc.android.sdk.db.PendingTransactionDb/1.json b/sdk-lib/schemas/cash.z.ecc.android.sdk.internal.db.PendingTransactionDb/1.json similarity index 100% rename from sdk-lib/schemas/cash.z.ecc.android.sdk.db.PendingTransactionDb/1.json rename to sdk-lib/schemas/cash.z.ecc.android.sdk.internal.db.PendingTransactionDb/1.json diff --git a/sdk-lib/schemas/cash.z.wallet.sdk.db.CompactBlockDb/1.json b/sdk-lib/schemas/cash.z.wallet.sdk.db.CompactBlockDb/1.json deleted file mode 100644 index b971ce68..00000000 --- a/sdk-lib/schemas/cash.z.wallet.sdk.db.CompactBlockDb/1.json +++ /dev/null @@ -1,40 +0,0 @@ -{ - "formatVersion": 1, - "database": { - "version": 1, - "identityHash": "0ca7a6d68543409fd85d2f5bfe9b93c5", - "entities": [ - { - "tableName": "compactblocks", - "createSql": "CREATE TABLE IF NOT EXISTS `${TABLE_NAME}` (`height` INTEGER NOT NULL, `data` BLOB NOT NULL, PRIMARY KEY(`height`))", - "fields": [ - { - "fieldPath": "height", - "columnName": "height", - "affinity": "INTEGER", - "notNull": true - }, - { - "fieldPath": "data", - "columnName": "data", - "affinity": "BLOB", - "notNull": true - } - ], - "primaryKey": { - "columnNames": [ - "height" - ], - "autoGenerate": false - }, - "indices": [], - "foreignKeys": [] - } - ], - "views": [], - "setupQueries": [ - "CREATE TABLE IF NOT EXISTS room_master_table (id INTEGER PRIMARY KEY,identity_hash TEXT)", - "INSERT OR REPLACE INTO room_master_table (id,identity_hash) VALUES(42, '0ca7a6d68543409fd85d2f5bfe9b93c5')" - ] - } -} diff --git a/sdk-lib/schemas/cash.z.wallet.sdk.db.DerivedDataDb/5.json b/sdk-lib/schemas/cash.z.wallet.sdk.db.DerivedDataDb/5.json deleted file mode 100644 index fd7d6fcd..00000000 --- a/sdk-lib/schemas/cash.z.wallet.sdk.db.DerivedDataDb/5.json +++ /dev/null @@ -1,345 +0,0 @@ -{ - "formatVersion": 1, - "database": { - "version": 5, - "identityHash": "d6e9b05e0607d399f821058adb43dc15", - "entities": [ - { - "tableName": "transactions", - "createSql": "CREATE TABLE IF NOT EXISTS `${TABLE_NAME}` (`id_tx` INTEGER, `txid` BLOB NOT NULL, `tx_index` INTEGER, `created` TEXT, `expiry_height` INTEGER, `block` INTEGER, `raw` BLOB, PRIMARY KEY(`id_tx`), FOREIGN KEY(`block`) REFERENCES `blocks`(`height`) ON UPDATE NO ACTION ON DELETE NO ACTION )", - "fields": [ - { - "fieldPath": "id", - "columnName": "id_tx", - "affinity": "INTEGER", - "notNull": false - }, - { - "fieldPath": "transactionId", - "columnName": "txid", - "affinity": "BLOB", - "notNull": true - }, - { - "fieldPath": "transactionIndex", - "columnName": "tx_index", - "affinity": "INTEGER", - "notNull": false - }, - { - "fieldPath": "created", - "columnName": "created", - "affinity": "TEXT", - "notNull": false - }, - { - "fieldPath": "expiryHeight", - "columnName": "expiry_height", - "affinity": "INTEGER", - "notNull": false - }, - { - "fieldPath": "minedHeight", - "columnName": "block", - "affinity": "INTEGER", - "notNull": false - }, - { - "fieldPath": "raw", - "columnName": "raw", - "affinity": "BLOB", - "notNull": false - } - ], - "primaryKey": { - "columnNames": [ - "id_tx" - ], - "autoGenerate": false - }, - "indices": [], - "foreignKeys": [ - { - "table": "blocks", - "onDelete": "NO ACTION", - "onUpdate": "NO ACTION", - "columns": [ - "block" - ], - "referencedColumns": [ - "height" - ] - } - ] - }, - { - "tableName": "blocks", - "createSql": "CREATE TABLE IF NOT EXISTS `${TABLE_NAME}` (`height` INTEGER, `hash` BLOB NOT NULL, `time` INTEGER NOT NULL, `sapling_tree` BLOB NOT NULL, PRIMARY KEY(`height`))", - "fields": [ - { - "fieldPath": "height", - "columnName": "height", - "affinity": "INTEGER", - "notNull": false - }, - { - "fieldPath": "hash", - "columnName": "hash", - "affinity": "BLOB", - "notNull": true - }, - { - "fieldPath": "time", - "columnName": "time", - "affinity": "INTEGER", - "notNull": true - }, - { - "fieldPath": "saplingTree", - "columnName": "sapling_tree", - "affinity": "BLOB", - "notNull": true - } - ], - "primaryKey": { - "columnNames": [ - "height" - ], - "autoGenerate": false - }, - "indices": [], - "foreignKeys": [] - }, - { - "tableName": "received_notes", - "createSql": "CREATE TABLE IF NOT EXISTS `${TABLE_NAME}` (`id_note` INTEGER, `tx` INTEGER NOT NULL, `output_index` INTEGER NOT NULL, `account` INTEGER NOT NULL, `value` INTEGER NOT NULL, `spent` INTEGER, `diversifier` BLOB NOT NULL, `rcm` BLOB NOT NULL, `nf` BLOB NOT NULL, `is_change` INTEGER NOT NULL, `memo` BLOB, PRIMARY KEY(`id_note`), FOREIGN KEY(`tx`) REFERENCES `transactions`(`id_tx`) ON UPDATE NO ACTION ON DELETE NO ACTION , FOREIGN KEY(`account`) REFERENCES `accounts`(`account`) ON UPDATE NO ACTION ON DELETE NO ACTION , FOREIGN KEY(`spent`) REFERENCES `transactions`(`id_tx`) ON UPDATE NO ACTION ON DELETE NO ACTION )", - "fields": [ - { - "fieldPath": "id", - "columnName": "id_note", - "affinity": "INTEGER", - "notNull": false - }, - { - "fieldPath": "transactionId", - "columnName": "tx", - "affinity": "INTEGER", - "notNull": true - }, - { - "fieldPath": "outputIndex", - "columnName": "output_index", - "affinity": "INTEGER", - "notNull": true - }, - { - "fieldPath": "account", - "columnName": "account", - "affinity": "INTEGER", - "notNull": true - }, - { - "fieldPath": "value", - "columnName": "value", - "affinity": "INTEGER", - "notNull": true - }, - { - "fieldPath": "spent", - "columnName": "spent", - "affinity": "INTEGER", - "notNull": false - }, - { - "fieldPath": "diversifier", - "columnName": "diversifier", - "affinity": "BLOB", - "notNull": true - }, - { - "fieldPath": "rcm", - "columnName": "rcm", - "affinity": "BLOB", - "notNull": true - }, - { - "fieldPath": "nf", - "columnName": "nf", - "affinity": "BLOB", - "notNull": true - }, - { - "fieldPath": "isChange", - "columnName": "is_change", - "affinity": "INTEGER", - "notNull": true - }, - { - "fieldPath": "memo", - "columnName": "memo", - "affinity": "BLOB", - "notNull": false - } - ], - "primaryKey": { - "columnNames": [ - "id_note" - ], - "autoGenerate": false - }, - "indices": [], - "foreignKeys": [ - { - "table": "transactions", - "onDelete": "NO ACTION", - "onUpdate": "NO ACTION", - "columns": [ - "tx" - ], - "referencedColumns": [ - "id_tx" - ] - }, - { - "table": "accounts", - "onDelete": "NO ACTION", - "onUpdate": "NO ACTION", - "columns": [ - "account" - ], - "referencedColumns": [ - "account" - ] - }, - { - "table": "transactions", - "onDelete": "NO ACTION", - "onUpdate": "NO ACTION", - "columns": [ - "spent" - ], - "referencedColumns": [ - "id_tx" - ] - } - ] - }, - { - "tableName": "accounts", - "createSql": "CREATE TABLE IF NOT EXISTS `${TABLE_NAME}` (`account` INTEGER, `extfvk` TEXT NOT NULL, `address` TEXT NOT NULL, PRIMARY KEY(`account`))", - "fields": [ - { - "fieldPath": "account", - "columnName": "account", - "affinity": "INTEGER", - "notNull": false - }, - { - "fieldPath": "extendedFullViewingKey", - "columnName": "extfvk", - "affinity": "TEXT", - "notNull": true - }, - { - "fieldPath": "address", - "columnName": "address", - "affinity": "TEXT", - "notNull": true - } - ], - "primaryKey": { - "columnNames": [ - "account" - ], - "autoGenerate": false - }, - "indices": [], - "foreignKeys": [] - }, - { - "tableName": "sent_notes", - "createSql": "CREATE TABLE IF NOT EXISTS `${TABLE_NAME}` (`id_note` INTEGER, `tx` INTEGER NOT NULL, `output_index` INTEGER NOT NULL, `from_account` INTEGER NOT NULL, `address` TEXT NOT NULL, `value` INTEGER NOT NULL, `memo` BLOB, PRIMARY KEY(`id_note`), FOREIGN KEY(`tx`) REFERENCES `transactions`(`id_tx`) ON UPDATE NO ACTION ON DELETE NO ACTION , FOREIGN KEY(`from_account`) REFERENCES `accounts`(`account`) ON UPDATE NO ACTION ON DELETE NO ACTION )", - "fields": [ - { - "fieldPath": "id", - "columnName": "id_note", - "affinity": "INTEGER", - "notNull": false - }, - { - "fieldPath": "transactionId", - "columnName": "tx", - "affinity": "INTEGER", - "notNull": true - }, - { - "fieldPath": "outputIndex", - "columnName": "output_index", - "affinity": "INTEGER", - "notNull": true - }, - { - "fieldPath": "account", - "columnName": "from_account", - "affinity": "INTEGER", - "notNull": true - }, - { - "fieldPath": "address", - "columnName": "address", - "affinity": "TEXT", - "notNull": true - }, - { - "fieldPath": "value", - "columnName": "value", - "affinity": "INTEGER", - "notNull": true - }, - { - "fieldPath": "memo", - "columnName": "memo", - "affinity": "BLOB", - "notNull": false - } - ], - "primaryKey": { - "columnNames": [ - "id_note" - ], - "autoGenerate": false - }, - "indices": [], - "foreignKeys": [ - { - "table": "transactions", - "onDelete": "NO ACTION", - "onUpdate": "NO ACTION", - "columns": [ - "tx" - ], - "referencedColumns": [ - "id_tx" - ] - }, - { - "table": "accounts", - "onDelete": "NO ACTION", - "onUpdate": "NO ACTION", - "columns": [ - "from_account" - ], - "referencedColumns": [ - "account" - ] - } - ] - } - ], - "views": [], - "setupQueries": [ - "CREATE TABLE IF NOT EXISTS room_master_table (id INTEGER PRIMARY KEY,identity_hash TEXT)", - "INSERT OR REPLACE INTO room_master_table (id,identity_hash) VALUES(42, 'd6e9b05e0607d399f821058adb43dc15')" - ] - } -} diff --git a/sdk-lib/schemas/cash.z.wallet.sdk.db.PendingTransactionDb/1.json b/sdk-lib/schemas/cash.z.wallet.sdk.db.PendingTransactionDb/1.json deleted file mode 100644 index 7d2b305a..00000000 --- a/sdk-lib/schemas/cash.z.wallet.sdk.db.PendingTransactionDb/1.json +++ /dev/null @@ -1,118 +0,0 @@ -{ - "formatVersion": 1, - "database": { - "version": 1, - "identityHash": "ea8cbb874a6d62d7b17d7fd5ea82dc8d", - "entities": [ - { - "tableName": "pending_transactions", - "createSql": "CREATE TABLE IF NOT EXISTS `${TABLE_NAME}` (`id` INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, `toAddress` TEXT NOT NULL, `value` INTEGER NOT NULL, `memo` BLOB, `accountIndex` INTEGER NOT NULL, `minedHeight` INTEGER NOT NULL, `expiryHeight` INTEGER NOT NULL, `cancelled` INTEGER NOT NULL, `encodeAttempts` INTEGER NOT NULL, `submitAttempts` INTEGER NOT NULL, `errorMessage` TEXT, `errorCode` INTEGER, `createTime` INTEGER NOT NULL, `raw` BLOB NOT NULL, `rawTransactionId` BLOB)", - "fields": [ - { - "fieldPath": "id", - "columnName": "id", - "affinity": "INTEGER", - "notNull": true - }, - { - "fieldPath": "toAddress", - "columnName": "toAddress", - "affinity": "TEXT", - "notNull": true - }, - { - "fieldPath": "value", - "columnName": "value", - "affinity": "INTEGER", - "notNull": true - }, - { - "fieldPath": "memo", - "columnName": "memo", - "affinity": "BLOB", - "notNull": false - }, - { - "fieldPath": "accountIndex", - "columnName": "accountIndex", - "affinity": "INTEGER", - "notNull": true - }, - { - "fieldPath": "minedHeight", - "columnName": "minedHeight", - "affinity": "INTEGER", - "notNull": true - }, - { - "fieldPath": "expiryHeight", - "columnName": "expiryHeight", - "affinity": "INTEGER", - "notNull": true - }, - { - "fieldPath": "cancelled", - "columnName": "cancelled", - "affinity": "INTEGER", - "notNull": true - }, - { - "fieldPath": "encodeAttempts", - "columnName": "encodeAttempts", - "affinity": "INTEGER", - "notNull": true - }, - { - "fieldPath": "submitAttempts", - "columnName": "submitAttempts", - "affinity": "INTEGER", - "notNull": true - }, - { - "fieldPath": "errorMessage", - "columnName": "errorMessage", - "affinity": "TEXT", - "notNull": false - }, - { - "fieldPath": "errorCode", - "columnName": "errorCode", - "affinity": "INTEGER", - "notNull": false - }, - { - "fieldPath": "createTime", - "columnName": "createTime", - "affinity": "INTEGER", - "notNull": true - }, - { - "fieldPath": "raw", - "columnName": "raw", - "affinity": "BLOB", - "notNull": true - }, - { - "fieldPath": "rawTransactionId", - "columnName": "rawTransactionId", - "affinity": "BLOB", - "notNull": false - } - ], - "primaryKey": { - "columnNames": [ - "id" - ], - "autoGenerate": true - }, - "indices": [], - "foreignKeys": [] - } - ], - "views": [], - "setupQueries": [ - "CREATE TABLE IF NOT EXISTS room_master_table (id INTEGER PRIMARY KEY,identity_hash TEXT)", - "INSERT OR REPLACE INTO room_master_table (id,identity_hash) VALUES(42, 'ea8cbb874a6d62d7b17d7fd5ea82dc8d')" - ] - } -} diff --git a/sdk-lib/src/androidTest/java/cash/z/ecc/android/sdk/PullRequestSuite.kt b/sdk-lib/src/androidTest/java/cash/z/ecc/android/sdk/PullRequestSuite.kt index ccdf7370..57e1a7e8 100644 --- a/sdk-lib/src/androidTest/java/cash/z/ecc/android/sdk/PullRequestSuite.kt +++ b/sdk-lib/src/androidTest/java/cash/z/ecc/android/sdk/PullRequestSuite.kt @@ -5,7 +5,7 @@ import cash.z.ecc.android.sdk.integration.SmokeTest import cash.z.ecc.android.sdk.integration.service.ChangeServiceTest import cash.z.ecc.android.sdk.jni.BranchIdTest import cash.z.ecc.android.sdk.jni.TransparentTest -import cash.z.ecc.android.sdk.transaction.PersistentTransactionManagerTest +import cash.z.ecc.android.sdk.internal.transaction.PersistentTransactionManagerTest import org.junit.runner.RunWith import org.junit.runners.Suite diff --git a/sdk-lib/src/androidTest/java/cash/z/ecc/android/sdk/integration/SmokeTest.kt b/sdk-lib/src/androidTest/java/cash/z/ecc/android/sdk/integration/SmokeTest.kt index 8ec98155..670dc7be 100644 --- a/sdk-lib/src/androidTest/java/cash/z/ecc/android/sdk/integration/SmokeTest.kt +++ b/sdk-lib/src/androidTest/java/cash/z/ecc/android/sdk/integration/SmokeTest.kt @@ -4,7 +4,7 @@ import androidx.test.filters.LargeTest import androidx.test.filters.MediumTest import cash.z.ecc.android.sdk.annotation.MaintainedTest import cash.z.ecc.android.sdk.annotation.TestPurpose -import cash.z.ecc.android.sdk.service.LightWalletGrpcService +import cash.z.ecc.android.sdk.internal.service.LightWalletGrpcService import cash.z.ecc.android.sdk.util.TestWallet import kotlinx.coroutines.runBlocking import org.junit.Assert diff --git a/sdk-lib/src/androidTest/java/cash/z/ecc/android/sdk/integration/TestnetIntegrationTest.kt b/sdk-lib/src/androidTest/java/cash/z/ecc/android/sdk/integration/TestnetIntegrationTest.kt index a2e4354b..3bfbb7e2 100644 --- a/sdk-lib/src/androidTest/java/cash/z/ecc/android/sdk/integration/TestnetIntegrationTest.kt +++ b/sdk-lib/src/androidTest/java/cash/z/ecc/android/sdk/integration/TestnetIntegrationTest.kt @@ -11,7 +11,7 @@ import cash.z.ecc.android.sdk.ext.Twig import cash.z.ecc.android.sdk.ext.ZcashSdk import cash.z.ecc.android.sdk.ext.onFirst import cash.z.ecc.android.sdk.ext.twig -import cash.z.ecc.android.sdk.service.LightWalletGrpcService +import cash.z.ecc.android.sdk.internal.service.LightWalletGrpcService import cash.z.ecc.android.sdk.test.ScopedTest import cash.z.ecc.android.sdk.tool.DerivationTool import cash.z.ecc.android.sdk.tool.WalletBirthdayTool diff --git a/sdk-lib/src/androidTest/java/cash/z/ecc/android/sdk/integration/service/ChangeServiceTest.kt b/sdk-lib/src/androidTest/java/cash/z/ecc/android/sdk/integration/service/ChangeServiceTest.kt index 9d423de3..8755dc2f 100644 --- a/sdk-lib/src/androidTest/java/cash/z/ecc/android/sdk/integration/service/ChangeServiceTest.kt +++ b/sdk-lib/src/androidTest/java/cash/z/ecc/android/sdk/integration/service/ChangeServiceTest.kt @@ -4,13 +4,13 @@ import androidx.test.ext.junit.runners.AndroidJUnit4 import androidx.test.filters.SmallTest import cash.z.ecc.android.sdk.annotation.MaintainedTest import cash.z.ecc.android.sdk.annotation.TestPurpose -import cash.z.ecc.android.sdk.block.CompactBlockDownloader -import cash.z.ecc.android.sdk.block.CompactBlockStore +import cash.z.ecc.android.sdk.internal.block.CompactBlockDownloader +import cash.z.ecc.android.sdk.internal.block.CompactBlockStore import cash.z.ecc.android.sdk.exception.LightWalletException.ChangeServerException.ChainInfoNotMatching import cash.z.ecc.android.sdk.exception.LightWalletException.ChangeServerException.StatusException import cash.z.ecc.android.sdk.ext.twig -import cash.z.ecc.android.sdk.service.LightWalletGrpcService -import cash.z.ecc.android.sdk.service.LightWalletService +import cash.z.ecc.android.sdk.internal.service.LightWalletGrpcService +import cash.z.ecc.android.sdk.internal.service.LightWalletService import cash.z.ecc.android.sdk.test.ScopedTest import cash.z.ecc.android.sdk.type.ZcashNetwork import kotlinx.coroutines.delay diff --git a/sdk-lib/src/androidTest/java/cash/z/ecc/android/sdk/tool/SaplingParamToolTest.kt b/sdk-lib/src/androidTest/java/cash/z/ecc/android/sdk/internal/SaplingParamToolTest.kt similarity index 95% rename from sdk-lib/src/androidTest/java/cash/z/ecc/android/sdk/tool/SaplingParamToolTest.kt rename to sdk-lib/src/androidTest/java/cash/z/ecc/android/sdk/internal/SaplingParamToolTest.kt index 1318cbf0..1cac9b21 100644 --- a/sdk-lib/src/androidTest/java/cash/z/ecc/android/sdk/tool/SaplingParamToolTest.kt +++ b/sdk-lib/src/androidTest/java/cash/z/ecc/android/sdk/internal/SaplingParamToolTest.kt @@ -1,9 +1,10 @@ -package cash.z.ecc.android.sdk.tool +package cash.z.ecc.android.sdk.internal import android.content.Context import androidx.test.ext.junit.runners.AndroidJUnit4 import androidx.test.platform.app.InstrumentationRegistry import cash.z.ecc.android.sdk.ext.ZcashSdk +import cash.z.ecc.android.sdk.internal.SaplingParamTool import kotlinx.coroutines.runBlocking import org.junit.Assert import org.junit.Before diff --git a/sdk-lib/src/androidTest/java/cash/z/ecc/android/sdk/transaction/PersistentTransactionManagerTest.kt b/sdk-lib/src/androidTest/java/cash/z/ecc/android/sdk/internal/transaction/PersistentTransactionManagerTest.kt similarity index 97% rename from sdk-lib/src/androidTest/java/cash/z/ecc/android/sdk/transaction/PersistentTransactionManagerTest.kt rename to sdk-lib/src/androidTest/java/cash/z/ecc/android/sdk/internal/transaction/PersistentTransactionManagerTest.kt index f82aa773..b630788d 100644 --- a/sdk-lib/src/androidTest/java/cash/z/ecc/android/sdk/transaction/PersistentTransactionManagerTest.kt +++ b/sdk-lib/src/androidTest/java/cash/z/ecc/android/sdk/internal/transaction/PersistentTransactionManagerTest.kt @@ -1,4 +1,4 @@ -package cash.z.ecc.android.sdk.transaction +package cash.z.ecc.android.sdk.internal.transaction import androidx.test.ext.junit.runners.AndroidJUnit4 import androidx.test.filters.SmallTest @@ -10,7 +10,7 @@ import cash.z.ecc.android.sdk.db.entity.isCancelled import cash.z.ecc.android.sdk.ext.TroubleshootingTwig import cash.z.ecc.android.sdk.ext.Twig import cash.z.ecc.android.sdk.ext.twig -import cash.z.ecc.android.sdk.service.LightWalletService +import cash.z.ecc.android.sdk.internal.service.LightWalletService import cash.z.ecc.android.sdk.test.ScopedTest import com.nhaarman.mockitokotlin2.any import com.nhaarman.mockitokotlin2.stub diff --git a/sdk-lib/src/androidTest/java/cash/z/ecc/android/sdk/util/TestWallet.kt b/sdk-lib/src/androidTest/java/cash/z/ecc/android/sdk/util/TestWallet.kt index 20d7119b..1843aa06 100644 --- a/sdk-lib/src/androidTest/java/cash/z/ecc/android/sdk/util/TestWallet.kt +++ b/sdk-lib/src/androidTest/java/cash/z/ecc/android/sdk/util/TestWallet.kt @@ -9,7 +9,7 @@ import cash.z.ecc.android.sdk.Synchronizer import cash.z.ecc.android.sdk.db.entity.isPending import cash.z.ecc.android.sdk.ext.Twig import cash.z.ecc.android.sdk.ext.twig -import cash.z.ecc.android.sdk.service.LightWalletGrpcService +import cash.z.ecc.android.sdk.internal.service.LightWalletGrpcService import cash.z.ecc.android.sdk.tool.DerivationTool import cash.z.ecc.android.sdk.type.WalletBalance import cash.z.ecc.android.sdk.type.ZcashNetwork diff --git a/sdk-lib/src/androidTest/java/cash/z/ecc/android/sdk/util/TransactionCounterUtil.kt b/sdk-lib/src/androidTest/java/cash/z/ecc/android/sdk/util/TransactionCounterUtil.kt index 9367c1e2..9199dfbc 100644 --- a/sdk-lib/src/androidTest/java/cash/z/ecc/android/sdk/util/TransactionCounterUtil.kt +++ b/sdk-lib/src/androidTest/java/cash/z/ecc/android/sdk/util/TransactionCounterUtil.kt @@ -4,7 +4,7 @@ import androidx.test.platform.app.InstrumentationRegistry import cash.z.ecc.android.sdk.ext.TroubleshootingTwig import cash.z.ecc.android.sdk.ext.Twig import cash.z.ecc.android.sdk.ext.twig -import cash.z.ecc.android.sdk.service.LightWalletGrpcService +import cash.z.ecc.android.sdk.internal.service.LightWalletGrpcService import cash.z.ecc.android.sdk.type.ZcashNetwork import org.junit.Ignore import org.junit.Test diff --git a/sdk-lib/src/main/java/cash/z/ecc/android/sdk/SdkSynchronizer.kt b/sdk-lib/src/main/java/cash/z/ecc/android/sdk/SdkSynchronizer.kt index a0d2fb7e..c070faba 100644 --- a/sdk-lib/src/main/java/cash/z/ecc/android/sdk/SdkSynchronizer.kt +++ b/sdk-lib/src/main/java/cash/z/ecc/android/sdk/SdkSynchronizer.kt @@ -8,8 +8,8 @@ import cash.z.ecc.android.sdk.Synchronizer.Status.SCANNING import cash.z.ecc.android.sdk.Synchronizer.Status.STOPPED import cash.z.ecc.android.sdk.Synchronizer.Status.SYNCED import cash.z.ecc.android.sdk.Synchronizer.Status.VALIDATING -import cash.z.ecc.android.sdk.block.CompactBlockDbStore -import cash.z.ecc.android.sdk.block.CompactBlockDownloader +import cash.z.ecc.android.sdk.internal.block.CompactBlockDbStore +import cash.z.ecc.android.sdk.internal.block.CompactBlockDownloader import cash.z.ecc.android.sdk.block.CompactBlockProcessor import cash.z.ecc.android.sdk.block.CompactBlockProcessor.State.Disconnected import cash.z.ecc.android.sdk.block.CompactBlockProcessor.State.Downloading @@ -19,7 +19,7 @@ import cash.z.ecc.android.sdk.block.CompactBlockProcessor.State.Scanned import cash.z.ecc.android.sdk.block.CompactBlockProcessor.State.Scanning import cash.z.ecc.android.sdk.block.CompactBlockProcessor.State.Stopped import cash.z.ecc.android.sdk.block.CompactBlockProcessor.State.Validating -import cash.z.ecc.android.sdk.block.CompactBlockStore +import cash.z.ecc.android.sdk.internal.block.CompactBlockStore import cash.z.ecc.android.sdk.db.entity.PendingTransaction import cash.z.ecc.android.sdk.db.entity.hasRawTransactionId import cash.z.ecc.android.sdk.db.entity.isCancelled @@ -34,19 +34,19 @@ import cash.z.ecc.android.sdk.db.entity.isSubmitted import cash.z.ecc.android.sdk.exception.SynchronizerException import cash.z.ecc.android.sdk.ext.ConsensusBranchId import cash.z.ecc.android.sdk.ext.ZcashSdk -import cash.z.ecc.android.sdk.ext.toHexReversed -import cash.z.ecc.android.sdk.ext.tryNull +import cash.z.ecc.android.sdk.internal.ext.toHexReversed +import cash.z.ecc.android.sdk.internal.ext.tryNull import cash.z.ecc.android.sdk.ext.twig import cash.z.ecc.android.sdk.ext.twigTask -import cash.z.ecc.android.sdk.service.LightWalletGrpcService -import cash.z.ecc.android.sdk.service.LightWalletService +import cash.z.ecc.android.sdk.internal.service.LightWalletGrpcService +import cash.z.ecc.android.sdk.internal.service.LightWalletService import cash.z.ecc.android.sdk.tool.DerivationTool -import cash.z.ecc.android.sdk.transaction.OutboundTransactionManager -import cash.z.ecc.android.sdk.transaction.PagedTransactionRepository -import cash.z.ecc.android.sdk.transaction.PersistentTransactionManager -import cash.z.ecc.android.sdk.transaction.TransactionEncoder -import cash.z.ecc.android.sdk.transaction.TransactionRepository -import cash.z.ecc.android.sdk.transaction.WalletTransactionEncoder +import cash.z.ecc.android.sdk.internal.transaction.OutboundTransactionManager +import cash.z.ecc.android.sdk.internal.transaction.PagedTransactionRepository +import cash.z.ecc.android.sdk.internal.transaction.PersistentTransactionManager +import cash.z.ecc.android.sdk.internal.transaction.TransactionEncoder +import cash.z.ecc.android.sdk.internal.transaction.TransactionRepository +import cash.z.ecc.android.sdk.internal.transaction.WalletTransactionEncoder import cash.z.ecc.android.sdk.type.AddressType import cash.z.ecc.android.sdk.type.AddressType.Shielded import cash.z.ecc.android.sdk.type.AddressType.Transparent diff --git a/sdk-lib/src/main/java/cash/z/ecc/android/sdk/block/CompactBlockProcessor.kt b/sdk-lib/src/main/java/cash/z/ecc/android/sdk/block/CompactBlockProcessor.kt index 07f903d4..1a8f0325 100644 --- a/sdk-lib/src/main/java/cash/z/ecc/android/sdk/block/CompactBlockProcessor.kt +++ b/sdk-lib/src/main/java/cash/z/ecc/android/sdk/block/CompactBlockProcessor.kt @@ -29,15 +29,16 @@ import cash.z.ecc.android.sdk.ext.ZcashSdk.POLL_INTERVAL import cash.z.ecc.android.sdk.ext.ZcashSdk.RETRIES import cash.z.ecc.android.sdk.ext.ZcashSdk.REWIND_DISTANCE import cash.z.ecc.android.sdk.ext.ZcashSdk.SCAN_BATCH_SIZE -import cash.z.ecc.android.sdk.ext.retryUpTo -import cash.z.ecc.android.sdk.ext.retryWithBackoff -import cash.z.ecc.android.sdk.ext.toHexReversed +import cash.z.ecc.android.sdk.internal.ext.retryUpTo +import cash.z.ecc.android.sdk.internal.ext.retryWithBackoff +import cash.z.ecc.android.sdk.internal.ext.toHexReversed import cash.z.ecc.android.sdk.ext.twig import cash.z.ecc.android.sdk.ext.twigTask +import cash.z.ecc.android.sdk.internal.block.CompactBlockDownloader import cash.z.ecc.android.sdk.jni.RustBackend import cash.z.ecc.android.sdk.jni.RustBackendWelding -import cash.z.ecc.android.sdk.transaction.PagedTransactionRepository -import cash.z.ecc.android.sdk.transaction.TransactionRepository +import cash.z.ecc.android.sdk.internal.transaction.PagedTransactionRepository +import cash.z.ecc.android.sdk.internal.transaction.TransactionRepository import cash.z.ecc.android.sdk.type.WalletBalance import cash.z.wallet.sdk.rpc.Service import io.grpc.StatusRuntimeException diff --git a/sdk-lib/src/main/java/cash/z/ecc/android/sdk/ext/Metrics.kt b/sdk-lib/src/main/java/cash/z/ecc/android/sdk/ext/BatchMetrics.kt similarity index 55% rename from sdk-lib/src/main/java/cash/z/ecc/android/sdk/ext/Metrics.kt rename to sdk-lib/src/main/java/cash/z/ecc/android/sdk/ext/BatchMetrics.kt index 99b7669b..eb58ecda 100644 --- a/sdk-lib/src/main/java/cash/z/ecc/android/sdk/ext/Metrics.kt +++ b/sdk-lib/src/main/java/cash/z/ecc/android/sdk/ext/BatchMetrics.kt @@ -3,48 +3,6 @@ package cash.z.ecc.android.sdk.ext import kotlin.math.max import kotlin.math.min -/** - * Simple implementation of Simple moving average. - */ -class Sma(val window: Int = 3) { - private val values = Array(window) { 0.0 } - var average = 0.0 - private set - - var count: Int = 0 - var index: Int = 0 - - fun add(value: Number) = add(value.toDouble()) - - fun add(value: Double): Double { - when { - // full window - count == window -> { - index = (index + 1) % window - average += ((value - values[index]) / count.toFloat()) - values[index] = value - } - // partially-filled window - count != 0 -> { - index = (index + 1) % window - average = ((value + count.toFloat() * average) / (count + 1).toFloat()) - values[index] = value - count++ - } - // empty window - else -> { - // simply assign given value as current average: - average = value - values[0] = value - count = 1 - } - } - return average - } - - fun format(places: Int = 0) = "%.${places}f".format(average) -} - class BatchMetrics(val range: IntRange, val batchSize: Int, private val onMetricComplete: ((BatchMetrics, Boolean) -> Unit)? = null) { private var completedBatches = 0 private var rangeStartTime = 0L diff --git a/sdk-lib/src/main/java/cash/z/ecc/android/sdk/ext/BlockExt.kt b/sdk-lib/src/main/java/cash/z/ecc/android/sdk/ext/BlockExt.kt index da5f3c54..3f3523ee 100644 --- a/sdk-lib/src/main/java/cash/z/ecc/android/sdk/ext/BlockExt.kt +++ b/sdk-lib/src/main/java/cash/z/ecc/android/sdk/ext/BlockExt.kt @@ -7,14 +7,8 @@ fun ByteArray.toHex(): String { return sb.toString() } -fun ByteArray.toHexReversed(): String { - val sb = StringBuilder(size * 2) - var i = size - 1 - while (i >= 0) - sb.append(String.format("%02x", this[i--])) - return sb.toString() -} - +// Not used within the SDK, but is used by the Wallet app +@Suppress("unused") fun String.fromHex(): ByteArray { val len = length val data = ByteArray(len / 2) diff --git a/sdk-lib/src/main/java/cash/z/ecc/android/sdk/ext/Flow.kt b/sdk-lib/src/main/java/cash/z/ecc/android/sdk/ext/Flow.kt index e63fd1a1..e8e16969 100644 --- a/sdk-lib/src/main/java/cash/z/ecc/android/sdk/ext/Flow.kt +++ b/sdk-lib/src/main/java/cash/z/ecc/android/sdk/ext/Flow.kt @@ -42,6 +42,8 @@ fun Flow.collectWith(scope: CoroutineScope, block: (T) -> Unit) { * Utility for performing the given action on the first emission of a flow and running that action * in the given scope. */ +// Unused in the SDK but is used by the wallet app +@Suppress("unused") fun Flow.onFirstWith(scope: CoroutineScope, block: suspend (T) -> S) { scope.launch { onEach { diff --git a/sdk-lib/src/main/java/cash/z/ecc/android/sdk/tool/SaplingParamTool.kt b/sdk-lib/src/main/java/cash/z/ecc/android/sdk/internal/SaplingParamTool.kt similarity index 99% rename from sdk-lib/src/main/java/cash/z/ecc/android/sdk/tool/SaplingParamTool.kt rename to sdk-lib/src/main/java/cash/z/ecc/android/sdk/internal/SaplingParamTool.kt index 582fd0bd..8c3b99ed 100644 --- a/sdk-lib/src/main/java/cash/z/ecc/android/sdk/tool/SaplingParamTool.kt +++ b/sdk-lib/src/main/java/cash/z/ecc/android/sdk/internal/SaplingParamTool.kt @@ -1,4 +1,4 @@ -package cash.z.ecc.android.sdk.tool +package cash.z.ecc.android.sdk.internal import cash.z.ecc.android.sdk.exception.TransactionEncoderException import cash.z.ecc.android.sdk.ext.Bush diff --git a/sdk-lib/src/main/java/cash/z/ecc/android/sdk/internal/Sma.kt b/sdk-lib/src/main/java/cash/z/ecc/android/sdk/internal/Sma.kt new file mode 100644 index 00000000..30bb9607 --- /dev/null +++ b/sdk-lib/src/main/java/cash/z/ecc/android/sdk/internal/Sma.kt @@ -0,0 +1,43 @@ +package cash.z.ecc.android.sdk.internal + +/** + * Simple implementation of Simple moving average. + */ +class Sma(val window: Int = 3) { + private val values = Array(window) { 0.0 } + var average = 0.0 + private set + + var count: Int = 0 + var index: Int = 0 + + fun add(value: Number) = add(value.toDouble()) + + fun add(value: Double): Double { + when { + // full window + count == window -> { + index = (index + 1) % window + average += ((value - values[index]) / count.toFloat()) + values[index] = value + } + // partially-filled window + count != 0 -> { + index = (index + 1) % window + average = ((value + count.toFloat() * average) / (count + 1).toFloat()) + values[index] = value + count++ + } + // empty window + else -> { + // simply assign given value as current average: + average = value + values[0] = value + count = 1 + } + } + return average + } + + fun format(places: Int = 0) = "%.${places}f".format(average) +} \ No newline at end of file diff --git a/sdk-lib/src/main/java/cash/z/ecc/android/sdk/block/CompactBlockDbStore.kt b/sdk-lib/src/main/java/cash/z/ecc/android/sdk/internal/block/CompactBlockDbStore.kt similarity index 92% rename from sdk-lib/src/main/java/cash/z/ecc/android/sdk/block/CompactBlockDbStore.kt rename to sdk-lib/src/main/java/cash/z/ecc/android/sdk/internal/block/CompactBlockDbStore.kt index 21c25e41..0373d3a6 100644 --- a/sdk-lib/src/main/java/cash/z/ecc/android/sdk/block/CompactBlockDbStore.kt +++ b/sdk-lib/src/main/java/cash/z/ecc/android/sdk/internal/block/CompactBlockDbStore.kt @@ -1,10 +1,10 @@ -package cash.z.ecc.android.sdk.block +package cash.z.ecc.android.sdk.internal.block import android.content.Context import androidx.room.Room import androidx.room.RoomDatabase -import cash.z.ecc.android.sdk.db.CompactBlockDao -import cash.z.ecc.android.sdk.db.CompactBlockDb +import cash.z.ecc.android.sdk.internal.db.CompactBlockDao +import cash.z.ecc.android.sdk.internal.db.CompactBlockDb import cash.z.ecc.android.sdk.db.entity.CompactBlockEntity import cash.z.wallet.sdk.rpc.CompactFormats import kotlinx.coroutines.Dispatchers.IO diff --git a/sdk-lib/src/main/java/cash/z/ecc/android/sdk/block/CompactBlockDownloader.kt b/sdk-lib/src/main/java/cash/z/ecc/android/sdk/internal/block/CompactBlockDownloader.kt similarity index 95% rename from sdk-lib/src/main/java/cash/z/ecc/android/sdk/block/CompactBlockDownloader.kt rename to sdk-lib/src/main/java/cash/z/ecc/android/sdk/internal/block/CompactBlockDownloader.kt index 733eff92..df55902d 100644 --- a/sdk-lib/src/main/java/cash/z/ecc/android/sdk/block/CompactBlockDownloader.kt +++ b/sdk-lib/src/main/java/cash/z/ecc/android/sdk/internal/block/CompactBlockDownloader.kt @@ -1,9 +1,9 @@ -package cash.z.ecc.android.sdk.block // iimport cash.z.ecc.android.sdk.exception.LightWalletException +package cash.z.ecc.android.sdk.internal.block import cash.z.ecc.android.sdk.exception.LightWalletException -import cash.z.ecc.android.sdk.ext.retryUpTo -import cash.z.ecc.android.sdk.ext.tryWarn +import cash.z.ecc.android.sdk.internal.ext.retryUpTo +import cash.z.ecc.android.sdk.internal.ext.tryWarn import cash.z.ecc.android.sdk.ext.twig -import cash.z.ecc.android.sdk.service.LightWalletService +import cash.z.ecc.android.sdk.internal.service.LightWalletService import cash.z.wallet.sdk.rpc.Service import io.grpc.StatusRuntimeException import kotlinx.coroutines.CoroutineScope diff --git a/sdk-lib/src/main/java/cash/z/ecc/android/sdk/block/CompactBlockStore.kt b/sdk-lib/src/main/java/cash/z/ecc/android/sdk/internal/block/CompactBlockStore.kt similarity index 95% rename from sdk-lib/src/main/java/cash/z/ecc/android/sdk/block/CompactBlockStore.kt rename to sdk-lib/src/main/java/cash/z/ecc/android/sdk/internal/block/CompactBlockStore.kt index 057eefe8..dfdc7ed3 100644 --- a/sdk-lib/src/main/java/cash/z/ecc/android/sdk/block/CompactBlockStore.kt +++ b/sdk-lib/src/main/java/cash/z/ecc/android/sdk/internal/block/CompactBlockStore.kt @@ -1,4 +1,4 @@ -package cash.z.ecc.android.sdk.block +package cash.z.ecc.android.sdk.internal.block import cash.z.wallet.sdk.rpc.CompactFormats diff --git a/sdk-lib/src/main/java/cash/z/ecc/android/sdk/db/CompactBlockDb.kt b/sdk-lib/src/main/java/cash/z/ecc/android/sdk/internal/db/CompactBlockDb.kt similarity index 97% rename from sdk-lib/src/main/java/cash/z/ecc/android/sdk/db/CompactBlockDb.kt rename to sdk-lib/src/main/java/cash/z/ecc/android/sdk/internal/db/CompactBlockDb.kt index 4ee84d37..9ffcaa04 100644 --- a/sdk-lib/src/main/java/cash/z/ecc/android/sdk/db/CompactBlockDb.kt +++ b/sdk-lib/src/main/java/cash/z/ecc/android/sdk/internal/db/CompactBlockDb.kt @@ -1,4 +1,4 @@ -package cash.z.ecc.android.sdk.db +package cash.z.ecc.android.sdk.internal.db import androidx.room.Dao import androidx.room.Database diff --git a/sdk-lib/src/main/java/cash/z/ecc/android/sdk/db/DerivedDataDb.kt b/sdk-lib/src/main/java/cash/z/ecc/android/sdk/internal/db/DerivedDataDb.kt similarity index 99% rename from sdk-lib/src/main/java/cash/z/ecc/android/sdk/db/DerivedDataDb.kt rename to sdk-lib/src/main/java/cash/z/ecc/android/sdk/internal/db/DerivedDataDb.kt index 64b22f46..e9a96aa3 100644 --- a/sdk-lib/src/main/java/cash/z/ecc/android/sdk/db/DerivedDataDb.kt +++ b/sdk-lib/src/main/java/cash/z/ecc/android/sdk/internal/db/DerivedDataDb.kt @@ -1,4 +1,4 @@ -package cash.z.ecc.android.sdk.db +package cash.z.ecc.android.sdk.internal.db import androidx.paging.DataSource import androidx.room.Dao diff --git a/sdk-lib/src/main/java/cash/z/ecc/android/sdk/db/PendingTransactionDb.kt b/sdk-lib/src/main/java/cash/z/ecc/android/sdk/internal/db/PendingTransactionDb.kt similarity index 98% rename from sdk-lib/src/main/java/cash/z/ecc/android/sdk/db/PendingTransactionDb.kt rename to sdk-lib/src/main/java/cash/z/ecc/android/sdk/internal/db/PendingTransactionDb.kt index ccda3237..904040e1 100644 --- a/sdk-lib/src/main/java/cash/z/ecc/android/sdk/db/PendingTransactionDb.kt +++ b/sdk-lib/src/main/java/cash/z/ecc/android/sdk/internal/db/PendingTransactionDb.kt @@ -1,4 +1,4 @@ -package cash.z.ecc.android.sdk.db +package cash.z.ecc.android.sdk.internal.db import androidx.room.Dao import androidx.room.Database diff --git a/sdk-lib/src/main/java/cash/z/ecc/android/sdk/internal/ext/BlockExt.kt b/sdk-lib/src/main/java/cash/z/ecc/android/sdk/internal/ext/BlockExt.kt new file mode 100644 index 00000000..b63eb54e --- /dev/null +++ b/sdk-lib/src/main/java/cash/z/ecc/android/sdk/internal/ext/BlockExt.kt @@ -0,0 +1,9 @@ +package cash.z.ecc.android.sdk.internal.ext + +internal fun ByteArray.toHexReversed(): String { + val sb = StringBuilder(size * 2) + var i = size - 1 + while (i >= 0) + sb.append(String.format("%02x", this[i--])) + return sb.toString() +} \ No newline at end of file diff --git a/sdk-lib/src/main/java/cash/z/ecc/android/sdk/ext/Ext.kt b/sdk-lib/src/main/java/cash/z/ecc/android/sdk/internal/ext/Ext.kt similarity index 93% rename from sdk-lib/src/main/java/cash/z/ecc/android/sdk/ext/Ext.kt rename to sdk-lib/src/main/java/cash/z/ecc/android/sdk/internal/ext/Ext.kt index a74a5415..d7a660d8 100644 --- a/sdk-lib/src/main/java/cash/z/ecc/android/sdk/ext/Ext.kt +++ b/sdk-lib/src/main/java/cash/z/ecc/android/sdk/internal/ext/Ext.kt @@ -1,4 +1,6 @@ -package cash.z.ecc.android.sdk.ext +package cash.z.ecc.android.sdk.internal.ext + +import cash.z.ecc.android.sdk.ext.twig internal inline fun tryNull(block: () -> R): R? { return try { diff --git a/sdk-lib/src/main/java/cash/z/ecc/android/sdk/ext/Placeholders.kt b/sdk-lib/src/main/java/cash/z/ecc/android/sdk/internal/ext/Placeholders.kt similarity index 98% rename from sdk-lib/src/main/java/cash/z/ecc/android/sdk/ext/Placeholders.kt rename to sdk-lib/src/main/java/cash/z/ecc/android/sdk/internal/ext/Placeholders.kt index 53957962..4379890c 100644 --- a/sdk-lib/src/main/java/cash/z/ecc/android/sdk/ext/Placeholders.kt +++ b/sdk-lib/src/main/java/cash/z/ecc/android/sdk/internal/ext/Placeholders.kt @@ -1,4 +1,4 @@ -package cash.z.ecc.android.sdk.ext +package cash.z.ecc.android.sdk.internal.ext import android.annotation.SuppressLint import android.content.Context diff --git a/sdk-lib/src/main/java/cash/z/ecc/android/sdk/ext/WalletService.kt b/sdk-lib/src/main/java/cash/z/ecc/android/sdk/internal/ext/WalletService.kt similarity index 98% rename from sdk-lib/src/main/java/cash/z/ecc/android/sdk/ext/WalletService.kt rename to sdk-lib/src/main/java/cash/z/ecc/android/sdk/internal/ext/WalletService.kt index 2360a798..c75ecb0e 100644 --- a/sdk-lib/src/main/java/cash/z/ecc/android/sdk/ext/WalletService.kt +++ b/sdk-lib/src/main/java/cash/z/ecc/android/sdk/internal/ext/WalletService.kt @@ -1,7 +1,8 @@ -package cash.z.ecc.android.sdk.ext +package cash.z.ecc.android.sdk.internal.ext import android.content.Context import cash.z.ecc.android.sdk.ext.ZcashSdk.MAX_BACKOFF_INTERVAL +import cash.z.ecc.android.sdk.ext.twig import kotlinx.coroutines.delay import java.io.File import kotlin.random.Random diff --git a/sdk-lib/src/main/java/cash/z/ecc/android/sdk/ext/android/ComputableFlow.kt b/sdk-lib/src/main/java/cash/z/ecc/android/sdk/internal/ext/android/ComputableFlow.kt similarity index 95% rename from sdk-lib/src/main/java/cash/z/ecc/android/sdk/ext/android/ComputableFlow.kt rename to sdk-lib/src/main/java/cash/z/ecc/android/sdk/internal/ext/android/ComputableFlow.kt index 61801f51..fc15352d 100644 --- a/sdk-lib/src/main/java/cash/z/ecc/android/sdk/ext/android/ComputableFlow.kt +++ b/sdk-lib/src/main/java/cash/z/ecc/android/sdk/internal/ext/android/ComputableFlow.kt @@ -1,4 +1,4 @@ -package cash.z.ecc.android.sdk.ext.android +package cash.z.ecc.android.sdk.internal.ext.android import kotlinx.coroutines.CoroutineDispatcher import kotlinx.coroutines.CoroutineScope diff --git a/sdk-lib/src/main/java/cash/z/ecc/android/sdk/ext/android/FlowPagedList.kt b/sdk-lib/src/main/java/cash/z/ecc/android/sdk/internal/ext/android/FlowPagedList.kt similarity index 98% rename from sdk-lib/src/main/java/cash/z/ecc/android/sdk/ext/android/FlowPagedList.kt rename to sdk-lib/src/main/java/cash/z/ecc/android/sdk/internal/ext/android/FlowPagedList.kt index b45a730a..0b1cd374 100644 --- a/sdk-lib/src/main/java/cash/z/ecc/android/sdk/ext/android/FlowPagedList.kt +++ b/sdk-lib/src/main/java/cash/z/ecc/android/sdk/internal/ext/android/FlowPagedList.kt @@ -1,4 +1,4 @@ -package cash.z.ecc.android.sdk.ext.android +package cash.z.ecc.android.sdk.internal.ext.android import android.annotation.SuppressLint import androidx.paging.Config diff --git a/sdk-lib/src/main/java/cash/z/ecc/android/sdk/ext/android/FlowPagedListBuilder.kt b/sdk-lib/src/main/java/cash/z/ecc/android/sdk/internal/ext/android/FlowPagedListBuilder.kt similarity index 98% rename from sdk-lib/src/main/java/cash/z/ecc/android/sdk/ext/android/FlowPagedListBuilder.kt rename to sdk-lib/src/main/java/cash/z/ecc/android/sdk/internal/ext/android/FlowPagedListBuilder.kt index 27a93812..5f814b12 100644 --- a/sdk-lib/src/main/java/cash/z/ecc/android/sdk/ext/android/FlowPagedListBuilder.kt +++ b/sdk-lib/src/main/java/cash/z/ecc/android/sdk/internal/ext/android/FlowPagedListBuilder.kt @@ -1,4 +1,4 @@ -package cash.z.ecc.android.sdk.ext.android +package cash.z.ecc.android.sdk.internal.ext.android import android.annotation.SuppressLint import android.os.Handler diff --git a/sdk-lib/src/main/java/cash/z/ecc/android/sdk/ext/android/README.md b/sdk-lib/src/main/java/cash/z/ecc/android/sdk/internal/ext/android/README.md similarity index 100% rename from sdk-lib/src/main/java/cash/z/ecc/android/sdk/ext/android/README.md rename to sdk-lib/src/main/java/cash/z/ecc/android/sdk/internal/ext/android/README.md diff --git a/sdk-lib/src/main/java/cash/z/ecc/android/sdk/service/LightWalletGrpcService.kt b/sdk-lib/src/main/java/cash/z/ecc/android/sdk/internal/service/LightWalletGrpcService.kt similarity index 99% rename from sdk-lib/src/main/java/cash/z/ecc/android/sdk/service/LightWalletGrpcService.kt rename to sdk-lib/src/main/java/cash/z/ecc/android/sdk/internal/service/LightWalletGrpcService.kt index 4bb4574c..33081f2d 100644 --- a/sdk-lib/src/main/java/cash/z/ecc/android/sdk/service/LightWalletGrpcService.kt +++ b/sdk-lib/src/main/java/cash/z/ecc/android/sdk/internal/service/LightWalletGrpcService.kt @@ -1,4 +1,4 @@ -package cash.z.ecc.android.sdk.service +package cash.z.ecc.android.sdk.internal.service import android.content.Context import cash.z.ecc.android.sdk.R diff --git a/sdk-lib/src/main/java/cash/z/ecc/android/sdk/service/LightWalletService.kt b/sdk-lib/src/main/java/cash/z/ecc/android/sdk/internal/service/LightWalletService.kt similarity index 98% rename from sdk-lib/src/main/java/cash/z/ecc/android/sdk/service/LightWalletService.kt rename to sdk-lib/src/main/java/cash/z/ecc/android/sdk/internal/service/LightWalletService.kt index b78e3a60..f54def66 100644 --- a/sdk-lib/src/main/java/cash/z/ecc/android/sdk/service/LightWalletService.kt +++ b/sdk-lib/src/main/java/cash/z/ecc/android/sdk/internal/service/LightWalletService.kt @@ -1,4 +1,4 @@ -package cash.z.ecc.android.sdk.service +package cash.z.ecc.android.sdk.internal.service import cash.z.wallet.sdk.rpc.CompactFormats import cash.z.wallet.sdk.rpc.Service diff --git a/sdk-lib/src/main/java/cash/z/ecc/android/sdk/transaction/PagedTransactionRepository.kt b/sdk-lib/src/main/java/cash/z/ecc/android/sdk/internal/transaction/PagedTransactionRepository.kt similarity index 94% rename from sdk-lib/src/main/java/cash/z/ecc/android/sdk/transaction/PagedTransactionRepository.kt rename to sdk-lib/src/main/java/cash/z/ecc/android/sdk/internal/transaction/PagedTransactionRepository.kt index e2e7ad82..19002e45 100644 --- a/sdk-lib/src/main/java/cash/z/ecc/android/sdk/transaction/PagedTransactionRepository.kt +++ b/sdk-lib/src/main/java/cash/z/ecc/android/sdk/internal/transaction/PagedTransactionRepository.kt @@ -1,20 +1,20 @@ -package cash.z.ecc.android.sdk.transaction +package cash.z.ecc.android.sdk.internal.transaction import android.content.Context import androidx.paging.PagedList import androidx.room.Room import androidx.room.RoomDatabase -import cash.z.ecc.android.sdk.db.AccountDao -import cash.z.ecc.android.sdk.db.BlockDao -import cash.z.ecc.android.sdk.db.DerivedDataDb -import cash.z.ecc.android.sdk.db.TransactionDao +import cash.z.ecc.android.sdk.internal.db.AccountDao +import cash.z.ecc.android.sdk.internal.db.BlockDao +import cash.z.ecc.android.sdk.internal.db.DerivedDataDb +import cash.z.ecc.android.sdk.internal.db.TransactionDao import cash.z.ecc.android.sdk.db.entity.ConfirmedTransaction import cash.z.ecc.android.sdk.exception.RepositoryException import cash.z.ecc.android.sdk.ext.ZcashSdk -import cash.z.ecc.android.sdk.ext.android.RefreshableDataSourceFactory -import cash.z.ecc.android.sdk.ext.android.toFlowPagedList -import cash.z.ecc.android.sdk.ext.android.toRefreshable -import cash.z.ecc.android.sdk.ext.tryWarn +import cash.z.ecc.android.sdk.internal.ext.android.RefreshableDataSourceFactory +import cash.z.ecc.android.sdk.internal.ext.android.toFlowPagedList +import cash.z.ecc.android.sdk.internal.ext.android.toRefreshable +import cash.z.ecc.android.sdk.internal.ext.tryWarn import cash.z.ecc.android.sdk.ext.twig import cash.z.ecc.android.sdk.jni.RustBackend import cash.z.ecc.android.sdk.type.UnifiedAddressAccount diff --git a/sdk-lib/src/main/java/cash/z/ecc/android/sdk/transaction/PersistentTransactionManager.kt b/sdk-lib/src/main/java/cash/z/ecc/android/sdk/internal/transaction/PersistentTransactionManager.kt similarity index 97% rename from sdk-lib/src/main/java/cash/z/ecc/android/sdk/transaction/PersistentTransactionManager.kt rename to sdk-lib/src/main/java/cash/z/ecc/android/sdk/internal/transaction/PersistentTransactionManager.kt index 74fe43ed..f56333c4 100644 --- a/sdk-lib/src/main/java/cash/z/ecc/android/sdk/transaction/PersistentTransactionManager.kt +++ b/sdk-lib/src/main/java/cash/z/ecc/android/sdk/internal/transaction/PersistentTransactionManager.kt @@ -1,17 +1,17 @@ -package cash.z.ecc.android.sdk.transaction +package cash.z.ecc.android.sdk.internal.transaction import android.content.Context import androidx.room.Room import androidx.room.RoomDatabase -import cash.z.ecc.android.sdk.db.PendingTransactionDao -import cash.z.ecc.android.sdk.db.PendingTransactionDb +import cash.z.ecc.android.sdk.internal.db.PendingTransactionDao +import cash.z.ecc.android.sdk.internal.db.PendingTransactionDb import cash.z.ecc.android.sdk.db.entity.PendingTransaction import cash.z.ecc.android.sdk.db.entity.PendingTransactionEntity import cash.z.ecc.android.sdk.db.entity.isCancelled import cash.z.ecc.android.sdk.db.entity.isFailedEncoding import cash.z.ecc.android.sdk.db.entity.isSubmitted import cash.z.ecc.android.sdk.ext.twig -import cash.z.ecc.android.sdk.service.LightWalletService +import cash.z.ecc.android.sdk.internal.service.LightWalletService import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.Dispatchers.IO import kotlinx.coroutines.flow.Flow diff --git a/sdk-lib/src/main/java/cash/z/ecc/android/sdk/transaction/TransactionEncoder.kt b/sdk-lib/src/main/java/cash/z/ecc/android/sdk/internal/transaction/TransactionEncoder.kt similarity index 97% rename from sdk-lib/src/main/java/cash/z/ecc/android/sdk/transaction/TransactionEncoder.kt rename to sdk-lib/src/main/java/cash/z/ecc/android/sdk/internal/transaction/TransactionEncoder.kt index 1d0befac..e7c4d531 100644 --- a/sdk-lib/src/main/java/cash/z/ecc/android/sdk/transaction/TransactionEncoder.kt +++ b/sdk-lib/src/main/java/cash/z/ecc/android/sdk/internal/transaction/TransactionEncoder.kt @@ -1,4 +1,4 @@ -package cash.z.ecc.android.sdk.transaction +package cash.z.ecc.android.sdk.internal.transaction import cash.z.ecc.android.sdk.db.entity.EncodedTransaction diff --git a/sdk-lib/src/main/java/cash/z/ecc/android/sdk/transaction/TransactionManager.kt b/sdk-lib/src/main/java/cash/z/ecc/android/sdk/internal/transaction/TransactionManager.kt similarity index 98% rename from sdk-lib/src/main/java/cash/z/ecc/android/sdk/transaction/TransactionManager.kt rename to sdk-lib/src/main/java/cash/z/ecc/android/sdk/internal/transaction/TransactionManager.kt index c852b697..db555469 100644 --- a/sdk-lib/src/main/java/cash/z/ecc/android/sdk/transaction/TransactionManager.kt +++ b/sdk-lib/src/main/java/cash/z/ecc/android/sdk/internal/transaction/TransactionManager.kt @@ -1,4 +1,4 @@ -package cash.z.ecc.android.sdk.transaction +package cash.z.ecc.android.sdk.internal.transaction import cash.z.ecc.android.sdk.db.entity.PendingTransaction import kotlinx.coroutines.flow.Flow diff --git a/sdk-lib/src/main/java/cash/z/ecc/android/sdk/transaction/TransactionRepository.kt b/sdk-lib/src/main/java/cash/z/ecc/android/sdk/internal/transaction/TransactionRepository.kt similarity index 98% rename from sdk-lib/src/main/java/cash/z/ecc/android/sdk/transaction/TransactionRepository.kt rename to sdk-lib/src/main/java/cash/z/ecc/android/sdk/internal/transaction/TransactionRepository.kt index 21ce19e7..9b18113c 100644 --- a/sdk-lib/src/main/java/cash/z/ecc/android/sdk/transaction/TransactionRepository.kt +++ b/sdk-lib/src/main/java/cash/z/ecc/android/sdk/internal/transaction/TransactionRepository.kt @@ -1,4 +1,4 @@ -package cash.z.ecc.android.sdk.transaction +package cash.z.ecc.android.sdk.internal.transaction import cash.z.ecc.android.sdk.db.entity.ConfirmedTransaction import cash.z.ecc.android.sdk.db.entity.EncodedTransaction diff --git a/sdk-lib/src/main/java/cash/z/ecc/android/sdk/transaction/WalletTransactionEncoder.kt b/sdk-lib/src/main/java/cash/z/ecc/android/sdk/internal/transaction/WalletTransactionEncoder.kt similarity index 98% rename from sdk-lib/src/main/java/cash/z/ecc/android/sdk/transaction/WalletTransactionEncoder.kt rename to sdk-lib/src/main/java/cash/z/ecc/android/sdk/internal/transaction/WalletTransactionEncoder.kt index 80c084f5..083188b0 100644 --- a/sdk-lib/src/main/java/cash/z/ecc/android/sdk/transaction/WalletTransactionEncoder.kt +++ b/sdk-lib/src/main/java/cash/z/ecc/android/sdk/internal/transaction/WalletTransactionEncoder.kt @@ -1,4 +1,4 @@ -package cash.z.ecc.android.sdk.transaction +package cash.z.ecc.android.sdk.internal.transaction import cash.z.ecc.android.sdk.db.entity.EncodedTransaction import cash.z.ecc.android.sdk.exception.TransactionEncoderException @@ -7,7 +7,7 @@ import cash.z.ecc.android.sdk.ext.twig import cash.z.ecc.android.sdk.ext.twigTask import cash.z.ecc.android.sdk.jni.RustBackend import cash.z.ecc.android.sdk.jni.RustBackendWelding -import cash.z.ecc.android.sdk.tool.SaplingParamTool +import cash.z.ecc.android.sdk.internal.SaplingParamTool import kotlinx.coroutines.Dispatchers.IO import kotlinx.coroutines.withContext