From e5db78d8910e385c9fde73eec959f78808268d0b Mon Sep 17 00:00:00 2001 From: Brandon McAnsh Date: Fri, 12 Jun 2026 13:21:17 -0400 Subject: [PATCH] chore(protos): update flipcash and opencode protobuf definitions MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - Fetch latest protos for both targets - Rename opencode proto files (account/currency/messaging/transaction_service → ocp_*) - Migrate all service layer references from *Service to Ocp*Service - Update flipcash domain models for activity feed renames (GaveCrypto → DirectlySentCrypto, SentCrypto → IndirectlySentCrypto) - Add new MessageContent.Cash variant with serialization support - Add NavigationTrigger.Chat for push notification navigation - Fix proto field rename is_remote_send → is_indirect_send --- .../app/core/feed/ActivityFeedMessage.kt | 12 +- .../app/core/feed/ActivityFeedMessageTest.kt | 8 +- .../screens/components/MessageBubble.kt | 1 + .../internal/TransactionHistoryViewModel.kt | 2 +- .../internal/components/FeedItem.kt | 2 +- .../converters/ChatTypeConverters.kt | 4 + .../sources/mapper/chat/ChatEntityMapper.kt | 13 ++ .../NotificationToEntityMapper.kt | 6 +- .../src/main/proto/activity/v1/model.proto | 25 ++-- .../src/main/proto/common/v1/common.proto | 7 + .../src/main/proto/contact/v1/model.proto | 5 + .../src/main/proto/intent/v1/model.proto | 39 ++++++ .../src/main/proto/messaging/v1/model.proto | 12 ++ .../protos/src/main/proto/push/v1/model.proto | 5 +- ...ervice.proto => ocp_account_service.proto} | 4 +- ...rvice.proto => ocp_currency_service.proto} | 0 ...vice.proto => ocp_messaging_service.proto} | 4 +- ...ce.proto => ocp_transaction_service.proto} | 25 +++- .../domain/ActivityFeedMessageMapper.kt | 14 +- .../network/extensions/LocalToProtobuf.kt | 10 ++ .../network/extensions/ProtobufToLocal.kt | 9 ++ .../models/ActivityFeedNotification.kt | 10 +- .../services/models/NotificationPayload.kt | 1 + .../services/models/chat/MessageContent.kt | 4 + .../domain/ActivityFeedMessageMapperTest.kt | 18 +-- .../controllers/MessagingController.kt | 18 +-- .../domain/mapping/BillCustomizationMapper.kt | 6 +- .../mapping/HistoricalMintDataMapper.kt | 6 +- .../domain/mapping/HolderMetricsMapper.kt | 18 +-- .../domain/mapping/LaunchpadMetadataMapper.kt | 6 +- .../domain/mapping/LiveMintDataMapper.kt | 12 +- .../internal/domain/mapping/MessageMapper.kt | 12 +- .../internal/domain/mapping/MintMapper.kt | 6 +- .../domain/mapping/SocialLinkMapper.kt | 16 +-- .../domain/mapping/SwapMetadataMapper.kt | 12 +- .../mapping/TransactionMetadataMapper.kt | 6 +- .../domain/mapping/VmMetadataMapper.kt | 6 +- .../InternalMessagingRepository.kt | 2 +- .../internal/manager/VerifiedProtoManager.kt | 22 ++-- .../internal/network/api/AccountApi.kt | 14 +- .../internal/network/api/CurrencyApi.kt | 64 ++++----- .../internal/network/api/MessagingApi.kt | 26 ++-- .../internal/network/api/TransactionApi.kt | 38 +++--- .../api/intents/IntentCreateAccount.kt | 4 +- .../network/api/intents/IntentDistribution.kt | 4 +- .../network/api/intents/IntentFundSwap.kt | 6 +- .../api/intents/IntentRemoteReceive.kt | 6 +- .../network/api/intents/IntentRemoteSend.kt | 7 +- .../network/api/intents/IntentStatefulSwap.kt | 14 +- .../api/intents/IntentStatelessSwap.kt | 16 +-- .../network/api/intents/IntentTransfer.kt | 8 +- .../network/api/intents/IntentWithdraw.kt | 6 +- .../api/intents/actions/ActionFeePayment.kt | 10 +- .../api/intents/actions/ActionOpenAccount.kt | 8 +- .../intents/actions/ActionPublicTransfer.kt | 8 +- .../intents/actions/ActionPublicWithdraw.kt | 8 +- .../network/executors/IntentExecutor.kt | 16 +-- .../network/executors/StatefulSwapExecutor.kt | 32 ++--- .../executors/StatelessSwapExecutor.kt | 28 ++-- .../network/extensions/LocalToProtobuf.kt | 124 +++++++++--------- .../network/extensions/ProtobufToLocal.kt | 94 ++++++------- .../network/services/AccountService.kt | 16 +-- .../network/services/CurrencyService.kt | 69 +++++----- .../network/services/MessagingService.kt | 43 +++--- .../internal/network/services/SwapService.kt | 21 ++- .../network/services/TransactionService.kt | 30 ++--- .../network/streamers/LiveMintDataStreamer.kt | 22 ++-- .../opencode/model/accounts/AccountInfo.kt | 56 ++++---- .../opencode/model/core/errors/Errors.kt | 36 ++--- .../opencode/model/financial/Limits.kt | 4 +- .../model/transactions/SwapMetadata.kt | 4 +- .../model/transactions/TransactionMetadata.kt | 26 ++-- .../repositories/MessagingRepository.kt | 10 +- .../opencode/solana/intents/IntentType.kt | 16 +-- .../solana/intents/ServerParameter.kt | 16 +-- .../solana/intents/actions/ActionType.kt | 4 +- .../RealVerifiedFiatCalculatorTest.kt | 4 +- .../manager/VerifiedProtoManagerTest.kt | 4 +- .../network/services/CurrencyServiceTest.kt | 2 +- .../core/errors/SubmitIntentErrorTest.kt | 2 +- .../model/core/errors/SwapErrorTest.kt | 2 +- .../opencode/model/financial/LimitsTest.kt | 2 +- 82 files changed, 723 insertions(+), 595 deletions(-) create mode 100644 definitions/flipcash/protos/src/main/proto/intent/v1/model.proto rename definitions/opencode/protos/src/main/proto/account/v1/{account_service.proto => ocp_account_service.proto} (96%) rename definitions/opencode/protos/src/main/proto/currency/v1/{currency_service.proto => ocp_currency_service.proto} (100%) rename definitions/opencode/protos/src/main/proto/messaging/v1/{messaging_service.proto => ocp_messaging_service.proto} (98%) rename definitions/opencode/protos/src/main/proto/transaction/v1/{transaction_service.proto => ocp_transaction_service.proto} (99%) diff --git a/apps/flipcash/core/src/main/kotlin/com/flipcash/app/core/feed/ActivityFeedMessage.kt b/apps/flipcash/core/src/main/kotlin/com/flipcash/app/core/feed/ActivityFeedMessage.kt index e0fc94d0d..9038dfb45 100644 --- a/apps/flipcash/core/src/main/kotlin/com/flipcash/app/core/feed/ActivityFeedMessage.kt +++ b/apps/flipcash/core/src/main/kotlin/com/flipcash/app/core/feed/ActivityFeedMessage.kt @@ -28,7 +28,7 @@ data class ActivityFeedMessage( get() { metadata ?: return false val metadata = - (metadata as? MessageMetadata.SentCrypto) ?: return false + (metadata as? MessageMetadata.IndirectlySentCrypto) ?: return false return metadata.canCancel } } @@ -53,16 +53,20 @@ sealed interface MessageMetadata { data object Unknown : MessageMetadata @Serializable - data object GaveCrypto : MessageMetadata + data class DirectlySentCrypto( + val phoneNumber: String? = null, + ) : MessageMetadata @Serializable - data class SentCrypto( + data class IndirectlySentCrypto( val creator: PublicKey, val canCancel: Boolean, ) : MessageMetadata @Serializable - data object ReceivedCrypto : MessageMetadata + data class ReceivedCrypto( + val phoneNumber: String? = null, + ) : MessageMetadata @Serializable data object WithdrewCrypto : MessageMetadata diff --git a/apps/flipcash/core/src/test/kotlin/com/flipcash/app/core/feed/ActivityFeedMessageTest.kt b/apps/flipcash/core/src/test/kotlin/com/flipcash/app/core/feed/ActivityFeedMessageTest.kt index d0221b0b1..bfc48d831 100644 --- a/apps/flipcash/core/src/test/kotlin/com/flipcash/app/core/feed/ActivityFeedMessageTest.kt +++ b/apps/flipcash/core/src/test/kotlin/com/flipcash/app/core/feed/ActivityFeedMessageTest.kt @@ -58,17 +58,17 @@ class ActivityFeedMessageTest { } @Test - fun metadataFromGaveCrypto() { - val json = """{"type":"com.flipcash.app.core.feed.MessageMetadata.GaveCrypto"}""" + fun metadataFromDirectlySentCrypto() { + val json = """{"type":"com.flipcash.app.core.feed.MessageMetadata.DirectlySentCrypto"}""" val result = MessageMetadata.from(json) - assertEquals(MessageMetadata.GaveCrypto, result) + assertEquals(MessageMetadata.DirectlySentCrypto(), result) } @Test fun metadataFromReceivedCrypto() { val json = """{"type":"com.flipcash.app.core.feed.MessageMetadata.ReceivedCrypto"}""" val result = MessageMetadata.from(json) - assertEquals(MessageMetadata.ReceivedCrypto, result) + assertEquals(MessageMetadata.ReceivedCrypto(), result) } @Test diff --git a/apps/flipcash/features/messenger/src/main/kotlin/com/flipcash/app/messenger/internal/screens/components/MessageBubble.kt b/apps/flipcash/features/messenger/src/main/kotlin/com/flipcash/app/messenger/internal/screens/components/MessageBubble.kt index 76bd22590..8e7a3871c 100644 --- a/apps/flipcash/features/messenger/src/main/kotlin/com/flipcash/app/messenger/internal/screens/components/MessageBubble.kt +++ b/apps/flipcash/features/messenger/src/main/kotlin/com/flipcash/app/messenger/internal/screens/components/MessageBubble.kt @@ -40,6 +40,7 @@ internal fun ContentBubble( isFromSelf = item.isFromSelf, position = position, ) + is MessageContent.Cash -> Unit // TODO } } } diff --git a/apps/flipcash/features/transactions/src/main/kotlin/com/flipcash/app/transactions/internal/TransactionHistoryViewModel.kt b/apps/flipcash/features/transactions/src/main/kotlin/com/flipcash/app/transactions/internal/TransactionHistoryViewModel.kt index ac1791226..b9be827a3 100644 --- a/apps/flipcash/features/transactions/src/main/kotlin/com/flipcash/app/transactions/internal/TransactionHistoryViewModel.kt +++ b/apps/flipcash/features/transactions/src/main/kotlin/com/flipcash/app/transactions/internal/TransactionHistoryViewModel.kt @@ -76,7 +76,7 @@ class TransactionHistoryViewModel @Inject constructor( .filterIsInstance() .map { it.message } .onEach { message -> - val metadata = message.metadata as? MessageMetadata.SentCrypto ?: return@onEach + val metadata = message.metadata as? MessageMetadata.IndirectlySentCrypto ?: return@onEach val formattedAmount = message.amount?.formatted() val title = formattedAmount?.let { resources.getString(R.string.prompt_title_cancelTransferWithAmount, it) diff --git a/apps/flipcash/features/transactions/src/main/kotlin/com/flipcash/app/transactions/internal/components/FeedItem.kt b/apps/flipcash/features/transactions/src/main/kotlin/com/flipcash/app/transactions/internal/components/FeedItem.kt index aae8535fa..9d4d8aa2e 100644 --- a/apps/flipcash/features/transactions/src/main/kotlin/com/flipcash/app/transactions/internal/components/FeedItem.kt +++ b/apps/flipcash/features/transactions/src/main/kotlin/com/flipcash/app/transactions/internal/components/FeedItem.kt @@ -100,7 +100,7 @@ private val sampleItem = ActivityFeedMessage( amount = oneDollarLocalized, timestamp = Instant.parse("2025-06-03T16:25:00-04:00"), state = MessageState.COMPLETED, - metadata = MessageMetadata.GaveCrypto + metadata = MessageMetadata.DirectlySentCrypto() ) private val sampleItemWithToken = ActivityFeedMessageWithToken( diff --git a/apps/flipcash/shared/persistence/db/src/main/kotlin/com/flipcash/app/persistence/converters/ChatTypeConverters.kt b/apps/flipcash/shared/persistence/db/src/main/kotlin/com/flipcash/app/persistence/converters/ChatTypeConverters.kt index dda15cd8c..e124e89a9 100644 --- a/apps/flipcash/shared/persistence/db/src/main/kotlin/com/flipcash/app/persistence/converters/ChatTypeConverters.kt +++ b/apps/flipcash/shared/persistence/db/src/main/kotlin/com/flipcash/app/persistence/converters/ChatTypeConverters.kt @@ -72,6 +72,10 @@ sealed interface MessageContentSerialized { @Serializable @SerialName("text") data class Text(val text: String) : MessageContentSerialized + + @Serializable + @SerialName("cash") + data class Cash(val intentId: String, val quarks: Long) : MessageContentSerialized } @Serializable diff --git a/apps/flipcash/shared/persistence/sources/src/main/kotlin/com/flipcash/app/persistence/sources/mapper/chat/ChatEntityMapper.kt b/apps/flipcash/shared/persistence/sources/src/main/kotlin/com/flipcash/app/persistence/sources/mapper/chat/ChatEntityMapper.kt index edbac5c56..aaf3403a3 100644 --- a/apps/flipcash/shared/persistence/sources/src/main/kotlin/com/flipcash/app/persistence/sources/mapper/chat/ChatEntityMapper.kt +++ b/apps/flipcash/shared/persistence/sources/src/main/kotlin/com/flipcash/app/persistence/sources/mapper/chat/ChatEntityMapper.kt @@ -20,6 +20,11 @@ import com.flipcash.services.models.chat.MessagePointer import com.flipcash.services.models.chat.PointerType import com.flipcash.services.models.chat.ClientMessageId import com.getcode.opencode.model.core.ID +import com.getcode.opencode.model.financial.Fiat +import com.getcode.utils.base58 +import com.getcode.utils.base64 +import com.getcode.utils.decodeBase58 +import com.getcode.utils.decodeBase64 import com.getcode.utils.hexEncodedString import javax.inject.Inject import javax.inject.Singleton @@ -163,10 +168,18 @@ class ChatEntityMapper @Inject constructor() { private fun MessageContent.toSerialized(): MessageContentSerialized = when (this) { is MessageContent.Text -> MessageContentSerialized.Text(text) + is MessageContent.Cash -> MessageContentSerialized.Cash( + intentId = intentId.base58, + quarks = amount.quarks, + ) } private fun MessageContentSerialized.toDomain(): MessageContent = when (this) { is MessageContentSerialized.Text -> MessageContent.Text(text) + is MessageContentSerialized.Cash -> MessageContent.Cash( + intentId = intentId.decodeBase58().toList(), + amount = Fiat(quarks = quarks), + ) } private fun MessagePointer.toSerialized(): MessagePointerSerialized = MessagePointerSerialized( diff --git a/apps/flipcash/shared/persistence/sources/src/main/kotlin/com/flipcash/app/persistence/sources/mapper/notifications/NotificationToEntityMapper.kt b/apps/flipcash/shared/persistence/sources/src/main/kotlin/com/flipcash/app/persistence/sources/mapper/notifications/NotificationToEntityMapper.kt index cbc661686..6268b55ce 100644 --- a/apps/flipcash/shared/persistence/sources/src/main/kotlin/com/flipcash/app/persistence/sources/mapper/notifications/NotificationToEntityMapper.kt +++ b/apps/flipcash/shared/persistence/sources/src/main/kotlin/com/flipcash/app/persistence/sources/mapper/notifications/NotificationToEntityMapper.kt @@ -55,9 +55,9 @@ class MetadataMapper @Inject constructor(): Mapper MessageMetadata.GaveCrypto - NotificationMetadata.ReceivedCrypto -> MessageMetadata.ReceivedCrypto - is NotificationMetadata.SentCrypto -> MessageMetadata.SentCrypto(from.creator, from.canCancel) + is NotificationMetadata.DirectlySentCrypto -> MessageMetadata.DirectlySentCrypto(from.phoneNumber) + is NotificationMetadata.ReceivedCrypto -> MessageMetadata.ReceivedCrypto(from.phoneNumber) + is NotificationMetadata.IndirectlySentCrypto -> MessageMetadata.IndirectlySentCrypto(from.creator, from.canCancel) NotificationMetadata.Unknown -> MessageMetadata.Unknown NotificationMetadata.WithdrewCrypto -> MessageMetadata.WithdrewCrypto NotificationMetadata.DepositedCrypto -> MessageMetadata.DepositedCrypto diff --git a/definitions/flipcash/protos/src/main/proto/activity/v1/model.proto b/definitions/flipcash/protos/src/main/proto/activity/v1/model.proto index 7ee6d80c2..1f1cfe525 100644 --- a/definitions/flipcash/protos/src/main/proto/activity/v1/model.proto +++ b/definitions/flipcash/protos/src/main/proto/activity/v1/model.proto @@ -7,6 +7,7 @@ option java_package = "com.codeinc.flipcash.gen.activity.v1"; option objc_class_prefix = "FCPBActivityV1"; import "common/v1/common.proto"; +import "phone/v1/model.proto"; import "google/protobuf/timestamp.proto"; import "validate/validate.proto"; @@ -40,29 +41,35 @@ message Notification { // Additional metadata for this notification specific to the notification oneof additional_metadata { - GaveCryptoNotificationMetadata gave_crypto = 7; - ReceivedCryptoNotificationMetadata received_crypto = 8; - WithdrewCryptoNotificationMetadata withdrew_crypto = 9; - SentCryptoNotificationMetadata sent_crypto = 10; - DepositedCryptoNotificationMetadata deposited_crypto = 11; - BoughtCryptoNotificationMetadata bought_crypto = 12; - SoldCryptoNotificationMetadata sold_crypto = 13; + DirectlySentCryptoNotificationMetadata directly_sent_crypto = 7; + ReceivedCryptoNotificationMetadata received_crypto = 8; + WithdrewCryptoNotificationMetadata withdrew_crypto = 9; + IndirectlySentCryptoNotificationMetadata indirectly_sent_crypto = 10; + DepositedCryptoNotificationMetadata deposited_crypto = 11; + BoughtCryptoNotificationMetadata bought_crypto = 12; + SoldCryptoNotificationMetadata sold_crypto = 13; } reserved 6; // Deprecated WelcomeBonusNotificationMetadata } -message GaveCryptoNotificationMetadata { +message DirectlySentCryptoNotificationMetadata { + oneof destination_identifier { + phone.v1.PhoneNumber phone = 1; + } } message ReceivedCryptoNotificationMetadata { + oneof source_identifier { + phone.v1.PhoneNumber phone = 1; + } } message WithdrewCryptoNotificationMetadata { SwapState swap_state = 1 [(validate.rules).enum.not_in = 0]; } -message SentCryptoNotificationMetadata { +message IndirectlySentCryptoNotificationMetadata { // The vault of the gift card account that was created for the cash link common.v1.PublicKey vault = 1 [(validate.rules).message.required = true]; diff --git a/definitions/flipcash/protos/src/main/proto/common/v1/common.proto b/definitions/flipcash/protos/src/main/proto/common/v1/common.proto index 6d42623c7..719adbe51 100644 --- a/definitions/flipcash/protos/src/main/proto/common/v1/common.proto +++ b/definitions/flipcash/protos/src/main/proto/common/v1/common.proto @@ -65,6 +65,13 @@ message ChatId { }]; } +message IntentId { + bytes value = 1 [(validate.rules).bytes = { + min_len: 32 + max_len: 32 + }]; +} + // AppInstallId is a unque ID tied to a client app installation. It does not // identify a device. Value should remain private and not be shared across // installs. diff --git a/definitions/flipcash/protos/src/main/proto/contact/v1/model.proto b/definitions/flipcash/protos/src/main/proto/contact/v1/model.proto index c6a62e8c0..ad8b621f4 100644 --- a/definitions/flipcash/protos/src/main/proto/contact/v1/model.proto +++ b/definitions/flipcash/protos/src/main/proto/contact/v1/model.proto @@ -2,6 +2,7 @@ syntax = "proto3"; package flipcash.contact.v1; +import "common/v1/common.proto"; import "phone/v1/model.proto"; import "validate/validate.proto"; @@ -11,4 +12,8 @@ option objc_class_prefix = "FPBContactV1"; message FlipcashContact { phone.v1.PhoneNumber phone = 1 [(validate.rules).message.required = true]; + + // The DM chat ID for the Flipcash contact. If the chat doesn't exist, it needs + // to be initiated with a cash send to initialize it + common.v1.ChatId dm_chat_id = 2 [(validate.rules).message.required = true]; } diff --git a/definitions/flipcash/protos/src/main/proto/intent/v1/model.proto b/definitions/flipcash/protos/src/main/proto/intent/v1/model.proto new file mode 100644 index 000000000..3b7bd3e5f --- /dev/null +++ b/definitions/flipcash/protos/src/main/proto/intent/v1/model.proto @@ -0,0 +1,39 @@ +syntax = "proto3"; + +package flipcash.intent.v1; + +option go_package = "github.com/code-payments/flipcash2-protobuf-api/generated/go/intent/v1;intentpb"; +option java_package = "com.codeinc.flipcash.gen.intent.v1"; +option objc_class_prefix = "FPBIntentV1"; + +import "common/v1/common.proto"; +import "phone/v1/model.proto"; +import "validate/validate.proto"; + +message AppMetadata { + oneof domain { + option (validate.required) = true; + + ChatMetadata chat = 1; + } +} + +// Additional metadata provided to SubmitIntent when doing payments in a chat +message ChatMetadata { + common.v1.ChatId chat_id = 1 [(validate.rules).message.required = true]; + + oneof type { + option (validate.required) = true; + + ContactDmPayment contact_dm_payment = 2; + } + + // For sending a payment to a contact in a DM + message ContactDmPayment { + // Source phone number that is paying. This is validated to be linked to the sender. + phone.v1.PhoneNumber source = 1 [(validate.rules).message.required = true]; + + // Destination phone number that is being paid. This is validated to be linked to the receiver. + phone.v1.PhoneNumber destination = 2 [(validate.rules).message.required = true]; + } +} diff --git a/definitions/flipcash/protos/src/main/proto/messaging/v1/model.proto b/definitions/flipcash/protos/src/main/proto/messaging/v1/model.proto index 10c7cf34f..e38ebb7e3 100644 --- a/definitions/flipcash/protos/src/main/proto/messaging/v1/model.proto +++ b/definitions/flipcash/protos/src/main/proto/messaging/v1/model.proto @@ -70,6 +70,7 @@ message Content { option (validate.required) = true; TextContent text = 1; + CashContent cash = 2; } } @@ -81,6 +82,17 @@ message TextContent { }]; } +message CashContent { + // Intent ID identifying the cash transaction at the OCP layer + common.v1.IntentId intent_id = 1 [(validate.rules).message.required = true]; + + // The amount of cash that was sent + common.v1.CryptoPaymentAmount amount = 2 [(validate.rules).message.required = true]; + + // Reserved for receiver, which will is required for group chats + reserved 3; +} + // Pointer in a chat indicating a user's message history state in a chat. message Pointer { // The type of pointer indicates which user's message history state can be diff --git a/definitions/flipcash/protos/src/main/proto/push/v1/model.proto b/definitions/flipcash/protos/src/main/proto/push/v1/model.proto index 41a8d35c5..7cf179b50 100644 --- a/definitions/flipcash/protos/src/main/proto/push/v1/model.proto +++ b/definitions/flipcash/protos/src/main/proto/push/v1/model.proto @@ -54,6 +54,9 @@ message Navigation { // Currency info page for the provided mint common.v1.PublicKey currency_info = 1; + + // Chat for the provided ID + common.v1.ChatId chat_id = 2; } } @@ -70,4 +73,4 @@ message Substitution { // Phone number -> contact name or formatted phone number phone.v1.PhoneNumber contact = 2; } -} \ No newline at end of file +} diff --git a/definitions/opencode/protos/src/main/proto/account/v1/account_service.proto b/definitions/opencode/protos/src/main/proto/account/v1/ocp_account_service.proto similarity index 96% rename from definitions/opencode/protos/src/main/proto/account/v1/account_service.proto rename to definitions/opencode/protos/src/main/proto/account/v1/ocp_account_service.proto index 4586e24a4..9a55dca6d 100644 --- a/definitions/opencode/protos/src/main/proto/account/v1/account_service.proto +++ b/definitions/opencode/protos/src/main/proto/account/v1/ocp_account_service.proto @@ -7,8 +7,8 @@ option java_package = "com.codeinc.opencode.gen.account.v1"; option objc_class_prefix = "CPBAccountV1"; import "common/v1/model.proto"; -import "currency/v1/currency_service.proto"; -import "transaction/v1/transaction_service.proto"; +import "currency/v1/ocp_currency_service.proto"; +import "transaction/v1/ocp_transaction_service.proto"; import "google/protobuf/timestamp.proto"; import "validate/validate.proto"; diff --git a/definitions/opencode/protos/src/main/proto/currency/v1/currency_service.proto b/definitions/opencode/protos/src/main/proto/currency/v1/ocp_currency_service.proto similarity index 100% rename from definitions/opencode/protos/src/main/proto/currency/v1/currency_service.proto rename to definitions/opencode/protos/src/main/proto/currency/v1/ocp_currency_service.proto diff --git a/definitions/opencode/protos/src/main/proto/messaging/v1/messaging_service.proto b/definitions/opencode/protos/src/main/proto/messaging/v1/ocp_messaging_service.proto similarity index 98% rename from definitions/opencode/protos/src/main/proto/messaging/v1/messaging_service.proto rename to definitions/opencode/protos/src/main/proto/messaging/v1/ocp_messaging_service.proto index 5d0158445..733c366bb 100644 --- a/definitions/opencode/protos/src/main/proto/messaging/v1/messaging_service.proto +++ b/definitions/opencode/protos/src/main/proto/messaging/v1/ocp_messaging_service.proto @@ -7,8 +7,8 @@ option java_package = "com.codeinc.opencode.gen.messaging.v1"; option objc_class_prefix = "CPBMessagingV1"; import "common/v1/model.proto"; -import "currency/v1/currency_service.proto"; -import "transaction/v1/transaction_service.proto"; +import "currency/v1/ocp_currency_service.proto"; +import "transaction/v1/ocp_transaction_service.proto"; import "validate/validate.proto"; service Messaging { diff --git a/definitions/opencode/protos/src/main/proto/transaction/v1/transaction_service.proto b/definitions/opencode/protos/src/main/proto/transaction/v1/ocp_transaction_service.proto similarity index 99% rename from definitions/opencode/protos/src/main/proto/transaction/v1/transaction_service.proto rename to definitions/opencode/protos/src/main/proto/transaction/v1/ocp_transaction_service.proto index c36ebccc8..67d7ac47c 100644 --- a/definitions/opencode/protos/src/main/proto/transaction/v1/transaction_service.proto +++ b/definitions/opencode/protos/src/main/proto/transaction/v1/ocp_transaction_service.proto @@ -7,7 +7,7 @@ option java_package = "com.codeinc.opencode.gen.transaction.v1"; option objc_class_prefix = "APBTransactionV1"; import "common/v1/model.proto"; -import "currency/v1/currency_service.proto"; +import "currency/v1/ocp_currency_service.proto"; import "google/protobuf/timestamp.proto"; import "validate/validate.proto"; @@ -1020,6 +1020,9 @@ message Metadata { ReceivePaymentsPubliclyMetadata receive_payments_publicly = 3; PublicDistributionMetadata public_distribution = 4; } + + // Optional app-level metadata + AppMetadata app_metadata = 10; } // Open a set of accounts @@ -1063,7 +1066,7 @@ message OpenAccountsMetadata { // actions.push_back(FeePaymentAction(PRIMARY, feeAccount, feeAmount)) // } // -// Action Spec (Remote Send): +// Action Spec (Indirect Send): // // actions = [ // OpenAccountAction(REMOTE_SEND_GIFT_CARD), @@ -1101,7 +1104,7 @@ message SendPublicPaymentMetadata { bool is_withdrawal = 5; // Is the payment going to a new gift card? Note is_withdrawal must be false. - bool is_remote_send = 6; + bool is_indirect_send = 6; // The mint that this intent will be operating against common.v1.SolanaAccountId mint = 7 [(validate.rules).message.required = true]; @@ -1112,7 +1115,7 @@ message SendPublicPaymentMetadata { // Receive funds into a user-owned account publicly. All use cases of this intent // close the account, so all funds must be moved. // -// Action Spec (Remote Send): +// Action Spec (Indirect Send): // // actions = [NoPrivacyWithdrawAction(REMOTE_SEND_GIFT_CARD, PRIMARY, quarks)] message ReceivePaymentsPubliclyMetadata { @@ -1128,11 +1131,11 @@ message ReceivePaymentsPubliclyMetadata { // Is the receipt of funds from a remote send gift card? Currently, this is // the only use case for this intent and validation enforces the flag to true. - bool is_remote_send = 3 [(validate.rules).bool.const = true]; + bool is_indirect_send = 3 [(validate.rules).bool.const = true]; - // If is_remote_send is true, the original exchange data that was provided as + // If is_indirect_send is true, the original exchange data that was provided as // part of creating the gift card account. This is purely a server-provided value. // SubmitIntent will disallow this being set. ExchangeData exchange_data = 4; @@ -1639,3 +1642,13 @@ enum FundingSource { FUNDING_SOURCE_EXTERNAL_WALLET = 2; FUNDING_SOURCE_COINBASE_ONRAMP = 3; } + +// AppMetadata is additional app-level metadata provided for an intent +message AppMetadata { + bytes value = 1 [(validate.rules).bytes = { + min_len: 1 + max_len: 4096 + }]; + + +} diff --git a/services/flipcash/src/main/kotlin/com/flipcash/services/internal/domain/ActivityFeedMessageMapper.kt b/services/flipcash/src/main/kotlin/com/flipcash/services/internal/domain/ActivityFeedMessageMapper.kt index 36022befd..ac343d258 100644 --- a/services/flipcash/src/main/kotlin/com/flipcash/services/internal/domain/ActivityFeedMessageMapper.kt +++ b/services/flipcash/src/main/kotlin/com/flipcash/services/internal/domain/ActivityFeedMessageMapper.kt @@ -60,12 +60,16 @@ internal class ActivityFeedMessageMapper @Inject constructor( null -> NotificationState.UNKNOWN }, metadata = when (from.additionalMetadataCase) { - Model.Notification.AdditionalMetadataCase.GAVE_CRYPTO -> NotificationMetadata.GaveCrypto - Model.Notification.AdditionalMetadataCase.RECEIVED_CRYPTO -> NotificationMetadata.ReceivedCrypto + Model.Notification.AdditionalMetadataCase.DIRECTLY_SENT_CRYPTO -> NotificationMetadata.DirectlySentCrypto( + phoneNumber = from.directlySentCrypto.takeIf { it.hasPhone() }?.phone?.value + ) + Model.Notification.AdditionalMetadataCase.RECEIVED_CRYPTO -> NotificationMetadata.ReceivedCrypto( + phoneNumber = from.receivedCrypto.takeIf { it.hasPhone() }?.phone?.value + ) Model.Notification.AdditionalMetadataCase.WITHDREW_CRYPTO -> NotificationMetadata.WithdrewCrypto - Model.Notification.AdditionalMetadataCase.SENT_CRYPTO -> NotificationMetadata.SentCrypto( - creator = from.sentCrypto.vault.value.toByteArray().toPublicKey(), - canCancel = from.sentCrypto.canInitiateCancelAction + Model.Notification.AdditionalMetadataCase.INDIRECTLY_SENT_CRYPTO -> NotificationMetadata.IndirectlySentCrypto( + creator = from.indirectlySentCrypto.vault.value.toByteArray().toPublicKey(), + canCancel = from.indirectlySentCrypto.canInitiateCancelAction ) Model.Notification.AdditionalMetadataCase.DEPOSITED_CRYPTO -> NotificationMetadata.DepositedCrypto Model.Notification.AdditionalMetadataCase.BOUGHT_CRYPTO -> NotificationMetadata.BoughtToken diff --git a/services/flipcash/src/main/kotlin/com/flipcash/services/internal/network/extensions/LocalToProtobuf.kt b/services/flipcash/src/main/kotlin/com/flipcash/services/internal/network/extensions/LocalToProtobuf.kt index e6af30b9f..42e9275c3 100644 --- a/services/flipcash/src/main/kotlin/com/flipcash/services/internal/network/extensions/LocalToProtobuf.kt +++ b/services/flipcash/src/main/kotlin/com/flipcash/services/internal/network/extensions/LocalToProtobuf.kt @@ -110,6 +110,16 @@ internal fun MessageContent.asContent(): MessagingModel.Content { is MessageContent.Text -> MessagingModel.Content.newBuilder() .setText(MessagingModel.TextContent.newBuilder().setText(text)) .build() + is MessageContent.Cash -> MessagingModel.Content.newBuilder() + .setCash( + MessagingModel.CashContent.newBuilder() + .setIntentId(Common.IntentId.newBuilder().setValue(intentId.toByteString())) + .setAmount( + Common.CryptoPaymentAmount.newBuilder() + .setQuarks(amount.quarks) + ) + ) + .build() } } diff --git a/services/flipcash/src/main/kotlin/com/flipcash/services/internal/network/extensions/ProtobufToLocal.kt b/services/flipcash/src/main/kotlin/com/flipcash/services/internal/network/extensions/ProtobufToLocal.kt index d4be371a1..0a2b5000b 100644 --- a/services/flipcash/src/main/kotlin/com/flipcash/services/internal/network/extensions/ProtobufToLocal.kt +++ b/services/flipcash/src/main/kotlin/com/flipcash/services/internal/network/extensions/ProtobufToLocal.kt @@ -25,6 +25,7 @@ import com.flipcash.services.models.chat.PointerType import com.flipcash.services.models.chat.TypingNotification import com.flipcash.services.models.chat.TypingState import com.getcode.opencode.model.core.ID +import com.getcode.opencode.model.financial.Fiat import com.getcode.solana.keys.Checksum import com.getcode.solana.keys.Mint import com.getcode.solana.keys.PublicKey @@ -48,6 +49,10 @@ internal fun PushModels.Payload.asPayload(): NotificationPayload { val mint = navigation.currencyInfo.toMint() NavigationTrigger.CurrencyInfo(mint) } + PushModels.Navigation.TypeCase.CHAT_ID -> { + val chatId = navigation.chatId.toChatId() + NavigationTrigger.Chat(chatId) + } PushModels.Navigation.TypeCase.TYPE_NOT_SET -> null } } @@ -101,6 +106,10 @@ internal fun Common.PagingToken.toPagingToken(): PagingToken = value.toByteArray internal fun MessagingModel.Content.toMessageContent(): MessageContent { return when (typeCase) { MessagingModel.Content.TypeCase.TEXT -> MessageContent.Text(text.text) + MessagingModel.Content.TypeCase.CASH -> MessageContent.Cash( + intentId = cash.intentId.value.toByteArray().toList(), + amount = Fiat(quarks = cash.amount.quarks), + ) else -> MessageContent.Text("") } } diff --git a/services/flipcash/src/main/kotlin/com/flipcash/services/models/ActivityFeedNotification.kt b/services/flipcash/src/main/kotlin/com/flipcash/services/models/ActivityFeedNotification.kt index fc72a860b..77d1b6a38 100644 --- a/services/flipcash/src/main/kotlin/com/flipcash/services/models/ActivityFeedNotification.kt +++ b/services/flipcash/src/main/kotlin/com/flipcash/services/models/ActivityFeedNotification.kt @@ -53,14 +53,16 @@ sealed interface NotificationMetadata { data object Unknown : NotificationMetadata @Serializable - data object GaveCrypto : NotificationMetadata + data class DirectlySentCrypto( + val phoneNumber: String? = null, + ) : NotificationMetadata /** * @param creator The vault of the gift card account that was created for the cash link * @param canCancel Whether the cancel action can be initiated by the user */ @Serializable - data class SentCrypto( + data class IndirectlySentCrypto( val creator: PublicKey, val canCancel: Boolean, ) : NotificationMetadata @@ -69,7 +71,9 @@ sealed interface NotificationMetadata { data object DepositedCrypto : NotificationMetadata @Serializable - data object ReceivedCrypto : NotificationMetadata + data class ReceivedCrypto( + val phoneNumber: String? = null, + ) : NotificationMetadata @Serializable data object WithdrewCrypto : NotificationMetadata diff --git a/services/flipcash/src/main/kotlin/com/flipcash/services/models/NotificationPayload.kt b/services/flipcash/src/main/kotlin/com/flipcash/services/models/NotificationPayload.kt index e8f8e50fb..df1a3a917 100644 --- a/services/flipcash/src/main/kotlin/com/flipcash/services/models/NotificationPayload.kt +++ b/services/flipcash/src/main/kotlin/com/flipcash/services/models/NotificationPayload.kt @@ -43,4 +43,5 @@ data class NotificationPayload( sealed interface NavigationTrigger { data class CurrencyInfo(val mint: Mint) : NavigationTrigger + data class Chat(val chatId: com.flipcash.services.models.chat.ChatId) : NavigationTrigger } \ No newline at end of file diff --git a/services/flipcash/src/main/kotlin/com/flipcash/services/models/chat/MessageContent.kt b/services/flipcash/src/main/kotlin/com/flipcash/services/models/chat/MessageContent.kt index 1b481b452..076b74c1f 100644 --- a/services/flipcash/src/main/kotlin/com/flipcash/services/models/chat/MessageContent.kt +++ b/services/flipcash/src/main/kotlin/com/flipcash/services/models/chat/MessageContent.kt @@ -1,5 +1,9 @@ package com.flipcash.services.models.chat +import com.getcode.opencode.model.core.ID +import com.getcode.opencode.model.financial.Fiat + sealed interface MessageContent { data class Text(val text: String) : MessageContent + data class Cash(val intentId: ID, val amount: Fiat) : MessageContent } diff --git a/services/flipcash/src/test/kotlin/com/flipcash/services/internal/domain/ActivityFeedMessageMapperTest.kt b/services/flipcash/src/test/kotlin/com/flipcash/services/internal/domain/ActivityFeedMessageMapperTest.kt index ca7dec784..1c9092728 100644 --- a/services/flipcash/src/test/kotlin/com/flipcash/services/internal/domain/ActivityFeedMessageMapperTest.kt +++ b/services/flipcash/src/test/kotlin/com/flipcash/services/internal/domain/ActivityFeedMessageMapperTest.kt @@ -1,11 +1,11 @@ package com.flipcash.services.internal.domain import com.codeinc.flipcash.gen.activity.v1.Model -import com.codeinc.flipcash.gen.activity.v1.gaveCryptoNotificationMetadata +import com.codeinc.flipcash.gen.activity.v1.directlySentCryptoNotificationMetadata import com.codeinc.flipcash.gen.activity.v1.notification import com.codeinc.flipcash.gen.activity.v1.notificationId import com.codeinc.flipcash.gen.activity.v1.receivedCryptoNotificationMetadata -import com.codeinc.flipcash.gen.activity.v1.sentCryptoNotificationMetadata +import com.codeinc.flipcash.gen.activity.v1.indirectlySentCryptoNotificationMetadata import com.codeinc.flipcash.gen.activity.v1.withdrewCryptoNotificationMetadata import com.codeinc.flipcash.gen.activity.v1.depositedCryptoNotificationMetadata import com.codeinc.flipcash.gen.activity.v1.boughtCryptoNotificationMetadata @@ -129,11 +129,11 @@ class ActivityFeedMessageMapperTest { // --- Metadata mapping --- @Test - fun `gave crypto metadata`() { + fun `directly sent crypto metadata`() { val proto = baseNotification { - gaveCrypto = gaveCryptoNotificationMetadata {} + directlySentCrypto = directlySentCryptoNotificationMetadata {} } - assertEquals(NotificationMetadata.GaveCrypto, mapper.map(proto).metadata) + assertEquals(NotificationMetadata.DirectlySentCrypto(), mapper.map(proto).metadata) } @Test @@ -141,7 +141,7 @@ class ActivityFeedMessageMapperTest { val proto = baseNotification { receivedCrypto = receivedCryptoNotificationMetadata {} } - assertEquals(NotificationMetadata.ReceivedCrypto, mapper.map(proto).metadata) + assertEquals(NotificationMetadata.ReceivedCrypto(), mapper.map(proto).metadata) } @Test @@ -177,17 +177,17 @@ class ActivityFeedMessageMapperTest { } @Test - fun `sent crypto metadata has creator and canCancel`() { + fun `indirectly sent crypto metadata has creator and canCancel`() { val vaultBytes = ByteArray(32) { 42 } val proto = baseNotification { - sentCrypto = sentCryptoNotificationMetadata { + indirectlySentCrypto = indirectlySentCryptoNotificationMetadata { vault = publicKey { value = ByteString.copyFrom(vaultBytes) } canInitiateCancelAction = true } } val metadata = mapper.map(proto).metadata - assertIs(metadata) + assertIs(metadata) assertTrue(metadata.canCancel) assertEquals(vaultBytes.toList(), metadata.creator.bytes) } diff --git a/services/opencode/src/main/kotlin/com/getcode/opencode/controllers/MessagingController.kt b/services/opencode/src/main/kotlin/com/getcode/opencode/controllers/MessagingController.kt index 6ca1fa5ca..4174c8aa6 100644 --- a/services/opencode/src/main/kotlin/com/getcode/opencode/controllers/MessagingController.kt +++ b/services/opencode/src/main/kotlin/com/getcode/opencode/controllers/MessagingController.kt @@ -1,6 +1,6 @@ package com.getcode.opencode.controllers -import com.codeinc.opencode.gen.messaging.v1.MessagingService +import com.codeinc.opencode.gen.messaging.v1.OcpMessagingService import com.getcode.ed25519.Ed25519.KeyPair import com.getcode.opencode.internal.domain.mapping.BillCustomizationMapper import com.getcode.opencode.internal.domain.mapping.HolderMetricsMapper @@ -60,8 +60,8 @@ class MessagingController @Inject constructor( cancelAwaitForBillGrab() delay(500) - fun extractRequestToGrabBill(messages: List): GrabRequest? { - val message = messages.firstOrNull { it.kindCase == MessagingService.Message.KindCase.REQUEST_TO_GRAB_BILL } ?: return null + fun extractRequestToGrabBill(messages: List): GrabRequest? { + val message = messages.firstOrNull { it.kindCase == OcpMessagingService.Message.KindCase.REQUEST_TO_GRAB_BILL } ?: return null val account = message.requestToGrabBill.requestorAccount.value.toByteArray().toPublicKey() val signature = @@ -83,7 +83,7 @@ class MessagingController @Inject constructor( ackFilter = { // do NOT ack the give requests as the sender // doing so will delete the messages before the recipient can get them - it.kindCase != MessagingService.Message.KindCase.REQUEST_TO_GIVE_BILL + it.kindCase != OcpMessagingService.Message.KindCase.REQUEST_TO_GIVE_BILL }, transformer = { extractRequestToGrabBill(it) } ) { result -> @@ -151,10 +151,10 @@ class MessagingController @Inject constructor( destination: PublicKey, payload: OpenCodePayload, ): Result { - val paymentRequest = MessagingService.RequestToGrabBill.newBuilder() + val paymentRequest = OcpMessagingService.RequestToGrabBill.newBuilder() .setRequestorAccount(destination.asSolanaAccountId()) - val message = MessagingService.Message.newBuilder() + val message = OcpMessagingService.Message.newBuilder() .setRequestToGrabBill(paymentRequest) return repository.sendMessage( @@ -171,7 +171,7 @@ class MessagingController @Inject constructor( .map { messages -> messages.filter { trace(message = "Polled message kind: ${it.kindCase}") - it.kindCase == MessagingService.Message.KindCase.REQUEST_TO_GIVE_BILL + it.kindCase == OcpMessagingService.Message.KindCase.REQUEST_TO_GIVE_BILL } }.mapCatching { messages -> val message = messages.firstOrNull() ?: throw IllegalStateException("No message found") @@ -193,12 +193,12 @@ class MessagingController @Inject constructor( rendezvous: KeyPair, exchangeRate: ExchangeData.Verified, ): Result { - val paymentRequest = MessagingService.RequestToGiveBill.newBuilder() + val paymentRequest = OcpMessagingService.RequestToGiveBill.newBuilder() .setMint(tokenMint.asSolanaAccountId()) .setExchangeData(exchangeRate.asProtobufExchangeData()) .build() - val message = MessagingService.Message.newBuilder() + val message = OcpMessagingService.Message.newBuilder() .setRequestToGiveBill(paymentRequest) return repository.sendMessage( diff --git a/services/opencode/src/main/kotlin/com/getcode/opencode/internal/domain/mapping/BillCustomizationMapper.kt b/services/opencode/src/main/kotlin/com/getcode/opencode/internal/domain/mapping/BillCustomizationMapper.kt index 0a0276963..90bd14127 100644 --- a/services/opencode/src/main/kotlin/com/getcode/opencode/internal/domain/mapping/BillCustomizationMapper.kt +++ b/services/opencode/src/main/kotlin/com/getcode/opencode/internal/domain/mapping/BillCustomizationMapper.kt @@ -1,13 +1,13 @@ package com.getcode.opencode.internal.domain.mapping -import com.codeinc.opencode.gen.currency.v1.CurrencyService +import com.codeinc.opencode.gen.currency.v1.OcpCurrencyService import com.getcode.opencode.mapper.Mapper import com.getcode.opencode.model.ui.BillBackground import com.getcode.opencode.model.ui.TokenBillCustomizations import javax.inject.Inject -internal class BillCustomizationMapper @Inject constructor(): Mapper { - override fun map(from: CurrencyService.BillCustomization?): TokenBillCustomizations? { +internal class BillCustomizationMapper @Inject constructor(): Mapper { + override fun map(from: OcpCurrencyService.BillCustomization?): TokenBillCustomizations? { if (from == null) return null val colors = from.colorsList.map { it.hex } val background = if (colors.count() == 1) { diff --git a/services/opencode/src/main/kotlin/com/getcode/opencode/internal/domain/mapping/HistoricalMintDataMapper.kt b/services/opencode/src/main/kotlin/com/getcode/opencode/internal/domain/mapping/HistoricalMintDataMapper.kt index 964228378..e1208cbfb 100644 --- a/services/opencode/src/main/kotlin/com/getcode/opencode/internal/domain/mapping/HistoricalMintDataMapper.kt +++ b/services/opencode/src/main/kotlin/com/getcode/opencode/internal/domain/mapping/HistoricalMintDataMapper.kt @@ -1,13 +1,13 @@ package com.getcode.opencode.internal.domain.mapping -import com.codeinc.opencode.gen.currency.v1.CurrencyService +import com.codeinc.opencode.gen.currency.v1.OcpCurrencyService import com.getcode.opencode.mapper.Mapper import com.getcode.opencode.model.financial.HistoricalMintData import com.getcode.util.toInstantFromMillis import javax.inject.Inject -internal class HistoricalMintDataMapper @Inject constructor(): Mapper { - override fun map(from: CurrencyService.HistoricalMintData): HistoricalMintData { +internal class HistoricalMintDataMapper @Inject constructor(): Mapper { + override fun map(from: OcpCurrencyService.HistoricalMintData): HistoricalMintData { return HistoricalMintData( snapshotAt = (from.timestamp.seconds * 1000L).toInstantFromMillis(), marketCap = from.marketCap, diff --git a/services/opencode/src/main/kotlin/com/getcode/opencode/internal/domain/mapping/HolderMetricsMapper.kt b/services/opencode/src/main/kotlin/com/getcode/opencode/internal/domain/mapping/HolderMetricsMapper.kt index a35a35da1..d0f69585e 100644 --- a/services/opencode/src/main/kotlin/com/getcode/opencode/internal/domain/mapping/HolderMetricsMapper.kt +++ b/services/opencode/src/main/kotlin/com/getcode/opencode/internal/domain/mapping/HolderMetricsMapper.kt @@ -1,25 +1,25 @@ package com.getcode.opencode.internal.domain.mapping -import com.codeinc.opencode.gen.currency.v1.CurrencyService +import com.codeinc.opencode.gen.currency.v1.OcpCurrencyService import com.getcode.opencode.model.ui.WindowedRange import com.getcode.opencode.mapper.Mapper import com.getcode.opencode.model.financial.HolderMetrics import javax.inject.Inject internal class HolderMetricsMapper @Inject constructor() : - Mapper { - override fun map(from: CurrencyService.HolderMetrics): HolderMetrics { + Mapper { + override fun map(from: OcpCurrencyService.HolderMetrics): HolderMetrics { return HolderMetrics( currentHolders = from.currentHolders, holderDeltas = from.holderDeltasList.mapNotNull { HolderMetrics.HolderDelta( range = when (it.range) { - CurrencyService.PredefinedRange.ALL_TIME -> WindowedRange.AllTime - CurrencyService.PredefinedRange.LAST_DAY -> WindowedRange.LastDay - CurrencyService.PredefinedRange.LAST_WEEK -> WindowedRange.LastWeek - CurrencyService.PredefinedRange.LAST_MONTH -> WindowedRange.LastMonth - CurrencyService.PredefinedRange.LAST_YEAR -> WindowedRange.LastYear - CurrencyService.PredefinedRange.UNRECOGNIZED -> return@mapNotNull null + OcpCurrencyService.PredefinedRange.ALL_TIME -> WindowedRange.AllTime + OcpCurrencyService.PredefinedRange.LAST_DAY -> WindowedRange.LastDay + OcpCurrencyService.PredefinedRange.LAST_WEEK -> WindowedRange.LastWeek + OcpCurrencyService.PredefinedRange.LAST_MONTH -> WindowedRange.LastMonth + OcpCurrencyService.PredefinedRange.LAST_YEAR -> WindowedRange.LastYear + OcpCurrencyService.PredefinedRange.UNRECOGNIZED -> return@mapNotNull null }, delta = it.delta ) diff --git a/services/opencode/src/main/kotlin/com/getcode/opencode/internal/domain/mapping/LaunchpadMetadataMapper.kt b/services/opencode/src/main/kotlin/com/getcode/opencode/internal/domain/mapping/LaunchpadMetadataMapper.kt index add77a23c..597ef0c8e 100644 --- a/services/opencode/src/main/kotlin/com/getcode/opencode/internal/domain/mapping/LaunchpadMetadataMapper.kt +++ b/services/opencode/src/main/kotlin/com/getcode/opencode/internal/domain/mapping/LaunchpadMetadataMapper.kt @@ -1,6 +1,6 @@ package com.getcode.opencode.internal.domain.mapping -import com.codeinc.opencode.gen.currency.v1.CurrencyService +import com.codeinc.opencode.gen.currency.v1.OcpCurrencyService import com.getcode.opencode.internal.network.extensions.toMetadata import com.getcode.opencode.mapper.Mapper import com.getcode.opencode.model.financial.LaunchpadMetadata @@ -8,8 +8,8 @@ import com.getcode.solana.keys.Mint import javax.inject.Inject class LaunchpadMetadataMapper @Inject constructor(): - Mapper { - override fun map(from: CurrencyService.LaunchpadMetadata): LaunchpadMetadata { + Mapper { + override fun map(from: OcpCurrencyService.LaunchpadMetadata): LaunchpadMetadata { return from.toMetadata() } } \ No newline at end of file diff --git a/services/opencode/src/main/kotlin/com/getcode/opencode/internal/domain/mapping/LiveMintDataMapper.kt b/services/opencode/src/main/kotlin/com/getcode/opencode/internal/domain/mapping/LiveMintDataMapper.kt index bdb95108e..030c41329 100644 --- a/services/opencode/src/main/kotlin/com/getcode/opencode/internal/domain/mapping/LiveMintDataMapper.kt +++ b/services/opencode/src/main/kotlin/com/getcode/opencode/internal/domain/mapping/LiveMintDataMapper.kt @@ -1,6 +1,6 @@ package com.getcode.opencode.internal.domain.mapping -import com.codeinc.opencode.gen.currency.v1.CurrencyService +import com.codeinc.opencode.gen.currency.v1.OcpCurrencyService import com.getcode.opencode.model.financial.LiveMintDataResponse import com.getcode.opencode.model.financial.VerifiedResponseData import com.getcode.opencode.internal.network.extensions.toMint @@ -12,10 +12,10 @@ import com.getcode.opencode.model.financial.Rate import com.getcode.util.toInstantFromMillis import javax.inject.Inject -internal class LiveMintDataMapper @Inject constructor(): Mapper { - override fun map(from: CurrencyService.StreamLiveMintDataResponse.LiveData): LiveMintDataResponse? { +internal class LiveMintDataMapper @Inject constructor(): Mapper { + override fun map(from: OcpCurrencyService.StreamLiveMintDataResponse.LiveData): LiveMintDataResponse? { return when (from.typeCase) { - CurrencyService.StreamLiveMintDataResponse.LiveData.TypeCase.CORE_MINT_FIAT_EXCHANGE_RATES -> { + OcpCurrencyService.StreamLiveMintDataResponse.LiveData.TypeCase.CORE_MINT_FIAT_EXCHANGE_RATES -> { val verifiedRates = from.coreMintFiatExchangeRates.exchangeRatesList.mapNotNull { verifiedData -> val fx = verifiedData.exchangeRate.exchangeRate val code = verifiedData.exchangeRate.currencyCode @@ -32,7 +32,7 @@ internal class LiveMintDataMapper @Inject constructor(): Mapper { + OcpCurrencyService.StreamLiveMintDataResponse.LiveData.TypeCase.LAUNCHPAD_CURRENCY_RESERVE_STATES -> { val verifiedStates = from.launchpadCurrencyReserveStates.reserveStatesList.map { verifiedData -> val mint = verifiedData.reserveState.mint.toMint() val supply = verifiedData.reserveState.supplyFromBonding @@ -50,7 +50,7 @@ internal class LiveMintDataMapper @Inject constructor(): Mapper null + OcpCurrencyService.StreamLiveMintDataResponse.LiveData.TypeCase.TYPE_NOT_SET -> null } } } \ No newline at end of file diff --git a/services/opencode/src/main/kotlin/com/getcode/opencode/internal/domain/mapping/MessageMapper.kt b/services/opencode/src/main/kotlin/com/getcode/opencode/internal/domain/mapping/MessageMapper.kt index 0fa755d36..a45e8a179 100644 --- a/services/opencode/src/main/kotlin/com/getcode/opencode/internal/domain/mapping/MessageMapper.kt +++ b/services/opencode/src/main/kotlin/com/getcode/opencode/internal/domain/mapping/MessageMapper.kt @@ -1,6 +1,6 @@ package com.getcode.opencode.internal.domain.mapping -import com.codeinc.opencode.gen.messaging.v1.MessagingService +import com.codeinc.opencode.gen.messaging.v1.OcpMessagingService import com.getcode.opencode.mapper.Mapper import com.getcode.opencode.internal.network.extensions.toMessageKind import com.getcode.opencode.model.messaging.MessageKind @@ -9,8 +9,8 @@ import com.getcode.opencode.model.messaging.Message as ProtocolMessage import com.getcode.solana.keys.Signature as SolanaSig internal class MessageMapper @Inject constructor(): - Mapper { - override fun map(from: MessagingService.Message): ProtocolMessage { + Mapper { + override fun map(from: OcpMessagingService.Message): ProtocolMessage { val signature = SolanaSig( from.sendMessageRequestSignature.value.toByteArray().toList() @@ -20,9 +20,9 @@ internal class MessageMapper @Inject constructor(): id = from.id.value.toByteArray().toList(), signature = signature, kind = when(from.kindCase) { - MessagingService.Message.KindCase.REQUEST_TO_GRAB_BILL -> from.requestToGrabBill.toMessageKind() - MessagingService.Message.KindCase.REQUEST_TO_GIVE_BILL -> from.requestToGiveBill.toMessageKind() - MessagingService.Message.KindCase.KIND_NOT_SET -> MessageKind.Unknown + OcpMessagingService.Message.KindCase.REQUEST_TO_GRAB_BILL -> from.requestToGrabBill.toMessageKind() + OcpMessagingService.Message.KindCase.REQUEST_TO_GIVE_BILL -> from.requestToGiveBill.toMessageKind() + OcpMessagingService.Message.KindCase.KIND_NOT_SET -> MessageKind.Unknown else -> MessageKind.Unknown } ) diff --git a/services/opencode/src/main/kotlin/com/getcode/opencode/internal/domain/mapping/MintMapper.kt b/services/opencode/src/main/kotlin/com/getcode/opencode/internal/domain/mapping/MintMapper.kt index 6cc8abd7e..54cc34908 100644 --- a/services/opencode/src/main/kotlin/com/getcode/opencode/internal/domain/mapping/MintMapper.kt +++ b/services/opencode/src/main/kotlin/com/getcode/opencode/internal/domain/mapping/MintMapper.kt @@ -1,6 +1,6 @@ package com.getcode.opencode.internal.domain.mapping -import com.codeinc.opencode.gen.currency.v1.CurrencyService +import com.codeinc.opencode.gen.currency.v1.OcpCurrencyService import com.codeinc.opencode.gen.currency.v1.billCustomizationOrNull import com.codeinc.opencode.gen.currency.v1.holderMetricsOrNull import com.codeinc.opencode.gen.currency.v1.launchpadMetadataOrNull @@ -22,8 +22,8 @@ internal class MintMapper @Inject constructor( private val socialLinkMapper: SocialLinkMapper, private val customizationMapper: BillCustomizationMapper, private val holderMetricsMapper: HolderMetricsMapper, -) : Mapper { - override fun map(from: CurrencyService.Mint): MintMetadata { +) : Mapper { + override fun map(from: OcpCurrencyService.Mint): MintMetadata { val mint = from.address.toMint() val vmMetadata = vmMetadataMapper.map(from.vmMetadata) val launchpadMetadata = from.launchpadMetadataOrNull?.let { diff --git a/services/opencode/src/main/kotlin/com/getcode/opencode/internal/domain/mapping/SocialLinkMapper.kt b/services/opencode/src/main/kotlin/com/getcode/opencode/internal/domain/mapping/SocialLinkMapper.kt index f9102c4e5..510fec911 100644 --- a/services/opencode/src/main/kotlin/com/getcode/opencode/internal/domain/mapping/SocialLinkMapper.kt +++ b/services/opencode/src/main/kotlin/com/getcode/opencode/internal/domain/mapping/SocialLinkMapper.kt @@ -1,21 +1,21 @@ package com.getcode.opencode.internal.domain.mapping -import com.codeinc.opencode.gen.currency.v1.CurrencyService +import com.codeinc.opencode.gen.currency.v1.OcpCurrencyService import com.getcode.opencode.mapper.Mapper import com.getcode.opencode.model.financial.SocialLink import com.getcode.opencode.model.financial.SocialLink.* import javax.inject.Inject -class SocialLinkMapper @Inject constructor(): Mapper { - override fun map(from: CurrencyService.SocialLink?): SocialLink? { +class SocialLinkMapper @Inject constructor(): Mapper { + override fun map(from: OcpCurrencyService.SocialLink?): SocialLink? { if (from == null) return null return when (from.typeCase) { - CurrencyService.SocialLink.TypeCase.WEBSITE -> Website(from.website.url) - CurrencyService.SocialLink.TypeCase.X -> X(from.x.username) - CurrencyService.SocialLink.TypeCase.TELEGRAM -> Telegram(from.telegram.username) - CurrencyService.SocialLink.TypeCase.DISCORD -> Discord(from.discord.inviteCode) + OcpCurrencyService.SocialLink.TypeCase.WEBSITE -> Website(from.website.url) + OcpCurrencyService.SocialLink.TypeCase.X -> X(from.x.username) + OcpCurrencyService.SocialLink.TypeCase.TELEGRAM -> Telegram(from.telegram.username) + OcpCurrencyService.SocialLink.TypeCase.DISCORD -> Discord(from.discord.inviteCode) - CurrencyService.SocialLink.TypeCase.TYPE_NOT_SET -> null + OcpCurrencyService.SocialLink.TypeCase.TYPE_NOT_SET -> null } } } \ No newline at end of file diff --git a/services/opencode/src/main/kotlin/com/getcode/opencode/internal/domain/mapping/SwapMetadataMapper.kt b/services/opencode/src/main/kotlin/com/getcode/opencode/internal/domain/mapping/SwapMetadataMapper.kt index 9b6fb3b2b..bcbfaa408 100644 --- a/services/opencode/src/main/kotlin/com/getcode/opencode/internal/domain/mapping/SwapMetadataMapper.kt +++ b/services/opencode/src/main/kotlin/com/getcode/opencode/internal/domain/mapping/SwapMetadataMapper.kt @@ -1,6 +1,6 @@ package com.getcode.opencode.internal.domain.mapping -import com.codeinc.opencode.gen.transaction.v1.TransactionService +import com.codeinc.opencode.gen.transaction.v1.OcpTransactionService import com.getcode.opencode.internal.network.extensions.toMetadata import com.getcode.opencode.mapper.Mapper import com.getcode.opencode.model.transactions.SwapMetadata @@ -8,16 +8,16 @@ import com.getcode.opencode.model.transactions.SwapState import com.getcode.opencode.model.transactions.VerifiedSwapMetadata import javax.inject.Inject -internal class SwapMetadataMapper @Inject constructor(): Mapper { - override fun map(from: TransactionService.SwapMetadata): SwapMetadata? { +internal class SwapMetadataMapper @Inject constructor(): Mapper { + override fun map(from: OcpTransactionService.SwapMetadata): SwapMetadata? { val verifiedMetadata = when (from.verifiedMetadata.kindCase) { - TransactionService.VerifiedSwapMetadata.KindCase.RESERVE -> { + OcpTransactionService.VerifiedSwapMetadata.KindCase.RESERVE -> { from.verifiedMetadata.reserve.clientParameters.toMetadata() } - TransactionService.VerifiedSwapMetadata.KindCase.STABLECOIN -> { + OcpTransactionService.VerifiedSwapMetadata.KindCase.STABLECOIN -> { from.verifiedMetadata.stablecoin.clientParameters.toMetadata() } - TransactionService.VerifiedSwapMetadata.KindCase.KIND_NOT_SET -> null + OcpTransactionService.VerifiedSwapMetadata.KindCase.KIND_NOT_SET -> null } if (verifiedMetadata == null) return null diff --git a/services/opencode/src/main/kotlin/com/getcode/opencode/internal/domain/mapping/TransactionMetadataMapper.kt b/services/opencode/src/main/kotlin/com/getcode/opencode/internal/domain/mapping/TransactionMetadataMapper.kt index db2396f1d..c5fbe6d8d 100644 --- a/services/opencode/src/main/kotlin/com/getcode/opencode/internal/domain/mapping/TransactionMetadataMapper.kt +++ b/services/opencode/src/main/kotlin/com/getcode/opencode/internal/domain/mapping/TransactionMetadataMapper.kt @@ -1,14 +1,14 @@ package com.getcode.opencode.internal.domain.mapping -import com.codeinc.opencode.gen.transaction.v1.TransactionService +import com.codeinc.opencode.gen.transaction.v1.OcpTransactionService import com.getcode.opencode.mapper.Mapper import com.getcode.opencode.internal.network.extensions.toMetadata import com.getcode.opencode.model.transactions.TransactionMetadata import javax.inject.Inject internal class TransactionMetadataMapper @Inject constructor(): - Mapper { - override fun map(from: TransactionService.Metadata): TransactionMetadata { + Mapper { + override fun map(from: OcpTransactionService.Metadata): TransactionMetadata { return from.toMetadata() } } \ No newline at end of file diff --git a/services/opencode/src/main/kotlin/com/getcode/opencode/internal/domain/mapping/VmMetadataMapper.kt b/services/opencode/src/main/kotlin/com/getcode/opencode/internal/domain/mapping/VmMetadataMapper.kt index 0aaa4dc10..8d62d6f19 100644 --- a/services/opencode/src/main/kotlin/com/getcode/opencode/internal/domain/mapping/VmMetadataMapper.kt +++ b/services/opencode/src/main/kotlin/com/getcode/opencode/internal/domain/mapping/VmMetadataMapper.kt @@ -1,14 +1,14 @@ package com.getcode.opencode.internal.domain.mapping -import com.codeinc.opencode.gen.currency.v1.CurrencyService +import com.codeinc.opencode.gen.currency.v1.OcpCurrencyService import com.getcode.opencode.internal.network.extensions.toMetadata import com.getcode.opencode.mapper.Mapper import com.getcode.opencode.model.financial.VmMetadata import jakarta.inject.Inject internal class VmMetadataMapper @Inject constructor( -): Mapper { - override fun map(from: CurrencyService.VmMetadata): VmMetadata { +): Mapper { + override fun map(from: OcpCurrencyService.VmMetadata): VmMetadata { return from.toMetadata() } } \ No newline at end of file diff --git a/services/opencode/src/main/kotlin/com/getcode/opencode/internal/domain/repositories/InternalMessagingRepository.kt b/services/opencode/src/main/kotlin/com/getcode/opencode/internal/domain/repositories/InternalMessagingRepository.kt index 61a8c1cde..040ff1f5e 100644 --- a/services/opencode/src/main/kotlin/com/getcode/opencode/internal/domain/repositories/InternalMessagingRepository.kt +++ b/services/opencode/src/main/kotlin/com/getcode/opencode/internal/domain/repositories/InternalMessagingRepository.kt @@ -14,7 +14,7 @@ import com.getcode.utils.trace import kotlinx.coroutines.CoroutineScope import kotlinx.coroutines.launch import javax.inject.Inject -import com.codeinc.opencode.gen.messaging.v1.MessagingService as RpcMessagingService +import com.codeinc.opencode.gen.messaging.v1.OcpMessagingService as RpcMessagingService internal class InternalMessagingRepository @Inject constructor( private val service: MessagingService, diff --git a/services/opencode/src/main/kotlin/com/getcode/opencode/internal/manager/VerifiedProtoManager.kt b/services/opencode/src/main/kotlin/com/getcode/opencode/internal/manager/VerifiedProtoManager.kt index 8831ff72b..ceb3565a5 100644 --- a/services/opencode/src/main/kotlin/com/getcode/opencode/internal/manager/VerifiedProtoManager.kt +++ b/services/opencode/src/main/kotlin/com/getcode/opencode/internal/manager/VerifiedProtoManager.kt @@ -1,6 +1,6 @@ package com.getcode.opencode.internal.manager -import com.codeinc.opencode.gen.currency.v1.CurrencyService +import com.codeinc.opencode.gen.currency.v1.OcpCurrencyService import com.getcode.opencode.internal.network.extensions.toMint import com.getcode.opencode.model.financial.CurrencyCode import com.getcode.opencode.model.financial.Rate @@ -35,7 +35,7 @@ class VerifiedProtoManager @Inject constructor() { * and the value is the corresponding [com.getcode.opencode.model.financial.VerifiedResponseData.ExchangeRate] object, * which includes the rate and the timestamp of when it was fetched. */ - private val exchangeData = MutableStateFlow>(emptyMap()) + private val exchangeData = MutableStateFlow>(emptyMap()) /** * A [MutableStateFlow] holding a map of launchpad reserve states, keyed by their respective [Mint] address. * @@ -43,16 +43,16 @@ class VerifiedProtoManager @Inject constructor() { * allowing observers to be notified of updates. The data originates from the OpenCodeProtocol and is * populated via the `save` method. */ - private val reserveStates = MutableStateFlow>(emptyMap()) + private val reserveStates = MutableStateFlow>(emptyMap()) - fun saveRates(exchangeData: List) { + fun saveRates(exchangeData: List) { val incoming = exchangeData.mapNotNull { data -> CurrencyCode.tryValueOf(data.exchangeRate.currencyCode)?.let { it to data } }.toMap() this.exchangeData.update { it + incoming } } - fun saveReserveStates(reserveStates: List) { + fun saveReserveStates(reserveStates: List) { val incoming = reserveStates.associateBy { it.reserveState.mint.toMint() } this.reserveStates.update { it + incoming } } @@ -100,11 +100,11 @@ class VerifiedProtoManager @Inject constructor() { reserveStates.value = emptyMap() } - private fun get(currencyCode: CurrencyCode): CurrencyService.VerifiedCoreMintFiatExchangeRate? { + private fun get(currencyCode: CurrencyCode): OcpCurrencyService.VerifiedCoreMintFiatExchangeRate? { return exchangeData.value[currencyCode] } - private fun getOrEvict(currencyCode: CurrencyCode): CurrencyService.VerifiedCoreMintFiatExchangeRate? { + private fun getOrEvict(currencyCode: CurrencyCode): OcpCurrencyService.VerifiedCoreMintFiatExchangeRate? { val now = Clock.System.now() val stored = get(currencyCode) ?: return null val ts = Instant.fromEpochSeconds(stored.exchangeRate.timestamp.seconds, stored.exchangeRate.timestamp.nanos) @@ -117,11 +117,11 @@ class VerifiedProtoManager @Inject constructor() { return stored } - private fun get(mint: Mint): CurrencyService.VerifiedLaunchpadCurrencyReserveState? { + private fun get(mint: Mint): OcpCurrencyService.VerifiedLaunchpadCurrencyReserveState? { return reserveStates.value[mint] } - private fun getOrEvict(mint: Mint): CurrencyService.VerifiedLaunchpadCurrencyReserveState? { + private fun getOrEvict(mint: Mint): OcpCurrencyService.VerifiedLaunchpadCurrencyReserveState? { val now = Clock.System.now() val stored = get(mint) ?: return null val ts = Instant.fromEpochSeconds(stored.reserveState.timestamp.seconds, stored.reserveState.timestamp.nanos) @@ -143,6 +143,6 @@ class VerifiedProtoManager @Inject constructor() { } data class VerifiedState( - val rateProto: CurrencyService.VerifiedCoreMintFiatExchangeRate, - val reserveProto: CurrencyService.VerifiedLaunchpadCurrencyReserveState?, + val rateProto: OcpCurrencyService.VerifiedCoreMintFiatExchangeRate, + val reserveProto: OcpCurrencyService.VerifiedLaunchpadCurrencyReserveState?, ) \ No newline at end of file diff --git a/services/opencode/src/main/kotlin/com/getcode/opencode/internal/network/api/AccountApi.kt b/services/opencode/src/main/kotlin/com/getcode/opencode/internal/network/api/AccountApi.kt index d6c362887..39f245770 100644 --- a/services/opencode/src/main/kotlin/com/getcode/opencode/internal/network/api/AccountApi.kt +++ b/services/opencode/src/main/kotlin/com/getcode/opencode/internal/network/api/AccountApi.kt @@ -1,7 +1,7 @@ package com.getcode.opencode.internal.network.api import com.codeinc.opencode.gen.account.v1.AccountGrpcKt -import com.codeinc.opencode.gen.account.v1.AccountService +import com.codeinc.opencode.gen.account.v1.OcpAccountService import com.codeinc.opencode.gen.account.v1.validate import com.getcode.ed25519.Ed25519.KeyPair import com.getcode.opencode.internal.annotations.OpenCodeManagedChannel @@ -31,12 +31,12 @@ internal class AccountApi @Inject constructor( * etc. * * @param owner The owner account to check against. - * @return The [AccountService.IsOcpAccountResponse] + * @return The [OcpAccountService.IsOcpAccountResponse] */ suspend fun isCodeAccount( owner: KeyPair, - ): AccountService.IsOcpAccountResponse { - val request = AccountService.IsOcpAccountRequest.newBuilder() + ): OcpAccountService.IsOcpAccountResponse { + val request = OcpAccountService.IsOcpAccountRequest.newBuilder() .setOwner(owner.asSolanaAccountId()) .apply { setSignature(sign(owner)) } .build() @@ -59,14 +59,14 @@ internal class AccountApi @Inject constructor( * use case includes a user owner account requesting account info for a gift card * owner account. * @param filter Filter to apply to limit response sizes - * @return The [AccountService.GetTokenAccountInfosResponse] for the owner account. + * @return The [OcpAccountService.GetTokenAccountInfosResponse] for the owner account. */ suspend fun getTokenAccounts( accountOwner: KeyPair, requestingOwner: KeyPair, filter: AccountFilter? = null, - ): AccountService.GetTokenAccountInfosResponse { - val request = AccountService.GetTokenAccountInfosRequest.newBuilder() + ): OcpAccountService.GetTokenAccountInfosResponse { + val request = OcpAccountService.GetTokenAccountInfosRequest.newBuilder() .setOwner(accountOwner.asSolanaAccountId()) .setRequestingOwner(requestingOwner.asSolanaAccountId()) .apply { diff --git a/services/opencode/src/main/kotlin/com/getcode/opencode/internal/network/api/CurrencyApi.kt b/services/opencode/src/main/kotlin/com/getcode/opencode/internal/network/api/CurrencyApi.kt index 96d28838d..95453a5f0 100644 --- a/services/opencode/src/main/kotlin/com/getcode/opencode/internal/network/api/CurrencyApi.kt +++ b/services/opencode/src/main/kotlin/com/getcode/opencode/internal/network/api/CurrencyApi.kt @@ -1,7 +1,7 @@ package com.getcode.opencode.internal.network.api import com.codeinc.opencode.gen.currency.v1.CurrencyGrpcKt -import com.codeinc.opencode.gen.currency.v1.CurrencyService +import com.codeinc.opencode.gen.currency.v1.OcpCurrencyService import com.codeinc.opencode.gen.currency.v1.validate import com.getcode.ed25519.Ed25519 import com.getcode.opencode.internal.annotations.OpenCodeManagedChannel @@ -48,12 +48,12 @@ internal class CurrencyApi @Inject constructor( * * @param mintAddresses The list of mint addresses to query * - * @return The [CurrencyService.GetMintsResponse] with mint account metadata by address + * @return The [OcpCurrencyService.GetMintsResponse] with mint account metadata by address */ suspend fun getMints( mintAddresses: List - ): CurrencyService.GetMintsResponse { - val request = CurrencyService.GetMintsRequest.newBuilder() + ): OcpCurrencyService.GetMintsResponse { + val request = OcpCurrencyService.GetMintsRequest.newBuilder() .apply { mintAddresses.forEachIndexed { index, address -> addAddresses(index, address.asSolanaAccountId()) @@ -71,17 +71,17 @@ internal class CurrencyApi @Inject constructor( mint: Mint, currencyCode: CurrencyCode, windowedRange: WindowedRange, - ): CurrencyService.GetHistoricalMintDataResponse { - val request = CurrencyService.GetHistoricalMintDataRequest.newBuilder() + ): OcpCurrencyService.GetHistoricalMintDataResponse { + val request = OcpCurrencyService.GetHistoricalMintDataRequest.newBuilder() .setAddress(mint.asSolanaAccountId()) .setCurrencyCode(currencyCode.name.lowercase()) .setPredefinedRange( when (windowedRange) { - WindowedRange.AllTime -> CurrencyService.PredefinedRange.ALL_TIME - WindowedRange.LastDay -> CurrencyService.PredefinedRange.LAST_DAY - WindowedRange.LastWeek -> CurrencyService.PredefinedRange.LAST_WEEK - WindowedRange.LastMonth -> CurrencyService.PredefinedRange.LAST_MONTH - WindowedRange.LastYear -> CurrencyService.PredefinedRange.LAST_YEAR + WindowedRange.AllTime -> OcpCurrencyService.PredefinedRange.ALL_TIME + WindowedRange.LastDay -> OcpCurrencyService.PredefinedRange.LAST_DAY + WindowedRange.LastWeek -> OcpCurrencyService.PredefinedRange.LAST_WEEK + WindowedRange.LastMonth -> OcpCurrencyService.PredefinedRange.LAST_MONTH + WindowedRange.LastYear -> OcpCurrencyService.PredefinedRange.LAST_YEAR } ).build() @@ -93,13 +93,13 @@ internal class CurrencyApi @Inject constructor( } fun streamLiveMintData( - requests: Flow - ): Flow { + requests: Flow + ): Flow { return streamingApi.streamLiveMintData(requests) } - suspend fun checkTokenAvailability(name: String): CurrencyService.CheckAvailabilityResponse { - val request = CurrencyService.CheckAvailabilityRequest.newBuilder() + suspend fun checkTokenAvailability(name: String): OcpCurrencyService.CheckAvailabilityResponse { + val request = OcpCurrencyService.CheckAvailabilityRequest.newBuilder() .setName(name.trim()) .build() @@ -113,9 +113,9 @@ internal class CurrencyApi @Inject constructor( suspend fun launchToken( request: TokenCreateRequest, owner: Ed25519.KeyPair - ): CurrencyService.LaunchResponse { + ): OcpCurrencyService.LaunchResponse { println(request) - val request = CurrencyService.LaunchRequest.newBuilder() + val request = OcpCurrencyService.LaunchRequest.newBuilder() .setName(request.name.text) .setNameModerationAttestation(request.name.asProto()) .apply apply@{ @@ -152,8 +152,8 @@ internal class CurrencyApi @Inject constructor( suspend fun updateIcon( update: TokenUpdateRequest.Icon, owner: Ed25519.KeyPair - ): CurrencyService.UpdateIconResponse { - val request = CurrencyService.UpdateIconRequest.newBuilder() + ): OcpCurrencyService.UpdateIconResponse { + val request = OcpCurrencyService.UpdateIconRequest.newBuilder() .setMint(update.token.address.asSolanaAccountId()) .setIcon(update.icon.imageBytes.toByteString()) .setModerationAttestation(update.icon.asProto()) @@ -171,14 +171,14 @@ internal class CurrencyApi @Inject constructor( suspend fun updateMetadata( update: TokenUpdateRequest.Metadata, owner: Ed25519.KeyPair - ): CurrencyService.UpdateMetadataResponse { - val request = CurrencyService.UpdateMetadataRequest.newBuilder() + ): OcpCurrencyService.UpdateMetadataResponse { + val request = OcpCurrencyService.UpdateMetadataRequest.newBuilder() .setMint(update.token.address.asSolanaAccountId()) .setOwner(owner.asSolanaAccountId()) .apply { if (update.billCustomization != null) { setNewBillCustomization( - CurrencyService.UpdateMetadataRequest.BillCustomizationUpdate.newBuilder() + OcpCurrencyService.UpdateMetadataRequest.BillCustomizationUpdate.newBuilder() .setValue(update.billCustomization.asProto()) .build() ) @@ -186,7 +186,7 @@ internal class CurrencyApi @Inject constructor( if (update.description != null) { setNewDescription( - CurrencyService.UpdateMetadataRequest.DescriptionUpdate.newBuilder() + OcpCurrencyService.UpdateMetadataRequest.DescriptionUpdate.newBuilder() .setValue(update.description.text) .setModerationAttestation(update.description.asProto()) ) @@ -194,10 +194,10 @@ internal class CurrencyApi @Inject constructor( if (update.socialLinks != null) { setNewSocialLinks( - CurrencyService.UpdateMetadataRequest.SocialLinksUpdate.newBuilder() + OcpCurrencyService.UpdateMetadataRequest.SocialLinksUpdate.newBuilder() .apply { val proto = - CurrencyService.UpdateMetadataRequest.SocialLinksUpdate.newBuilder() + OcpCurrencyService.UpdateMetadataRequest.SocialLinksUpdate.newBuilder() update.socialLinks.mapIndexed { index, socialLink -> proto.setValue(index, socialLink.asProto()) } @@ -218,27 +218,27 @@ internal class CurrencyApi @Inject constructor( suspend fun discoverTokens( category: DiscoverCategory - ): CurrencyService.DiscoverResponse { - val request = CurrencyService.DiscoverRequest.newBuilder() + ): OcpCurrencyService.DiscoverResponse { + val request = OcpCurrencyService.DiscoverRequest.newBuilder() .setCategory( when (category) { - DiscoverCategory.Popular -> CurrencyService.DiscoverRequest.Category.POPULAR - DiscoverCategory.New -> CurrencyService.DiscoverRequest.Category.NEW + DiscoverCategory.Popular -> OcpCurrencyService.DiscoverRequest.Category.POPULAR + DiscoverCategory.New -> OcpCurrencyService.DiscoverRequest.Category.NEW } ) .build() return withContext(Dispatchers.IO) { // Collect streamed responses into a single aggregated response - val allMints = mutableListOf() - var lastResult = CurrencyService.DiscoverResponse.Result.OK + val allMints = mutableListOf() + var lastResult = OcpCurrencyService.DiscoverResponse.Result.OK streamingApi.discover(request).collect { response -> lastResult = response.result allMints += response.mintsList } - CurrencyService.DiscoverResponse.newBuilder() + OcpCurrencyService.DiscoverResponse.newBuilder() .setResult(lastResult) .addAllMints(allMints) .build() diff --git a/services/opencode/src/main/kotlin/com/getcode/opencode/internal/network/api/MessagingApi.kt b/services/opencode/src/main/kotlin/com/getcode/opencode/internal/network/api/MessagingApi.kt index 053f84439..d925ca6ce 100644 --- a/services/opencode/src/main/kotlin/com/getcode/opencode/internal/network/api/MessagingApi.kt +++ b/services/opencode/src/main/kotlin/com/getcode/opencode/internal/network/api/MessagingApi.kt @@ -2,7 +2,7 @@ package com.getcode.opencode.internal.network.api import com.codeinc.opencode.gen.common.v1.Model import com.codeinc.opencode.gen.messaging.v1.MessagingGrpcKt -import com.codeinc.opencode.gen.messaging.v1.MessagingService +import com.codeinc.opencode.gen.messaging.v1.OcpMessagingService import com.codeinc.opencode.gen.messaging.v1.validate import com.getcode.ed25519.Ed25519 import com.getcode.ed25519.Ed25519.KeyPair @@ -56,8 +56,8 @@ internal class MessagingApi @Inject constructor( */ fun openMessageStream( rendezvous: KeyPair - ): Flow { - val request = MessagingService.OpenMessageStreamRequest.newBuilder() + ): Flow { + val request = OcpMessagingService.OpenMessageStreamRequest.newBuilder() .setRendezvousKey(rendezvous.asRendezvousKey()) .apply { setSignature(sign(rendezvous)) } .build() @@ -103,8 +103,8 @@ internal class MessagingApi @Inject constructor( * @see openMessageStream */ fun openMessageStreamWithKeepAlive( - requestFlow: Flow, - ): Flow { + requestFlow: Flow, + ): Flow { return api.openMessageStreamWithKeepAlive(requestFlow) } @@ -121,11 +121,11 @@ internal class MessagingApi @Inject constructor( */ suspend fun pollMessages( rendezvous: KeyPair - ): MessagingService.PollMessagesResponse { + ): OcpMessagingService.PollMessagesResponse { val channelState = managedChannels.first().getState(false) trace(tag = "gRPC", message = "pollMessages channel state: $channelState") - val request = MessagingService.PollMessagesRequest.newBuilder() + val request = OcpMessagingService.PollMessagesRequest.newBuilder() .setRendezvousKey(rendezvous.asRendezvousKey()) .apply { setSignature(sign(rendezvous)) } .build() @@ -140,9 +140,9 @@ internal class MessagingApi @Inject constructor( */ suspend fun ackMessages( rendezvous: KeyPair, - messageIds: List = emptyList() - ): MessagingService.AckMesssagesResponse { - val request = MessagingService.AckMessagesRequest.newBuilder() + messageIds: List = emptyList() + ): OcpMessagingService.AckMesssagesResponse { + val request = OcpMessagingService.AckMessagesRequest.newBuilder() .setRendezvousKey(rendezvous.asRendezvousKey()) .addAllMessageIds(messageIds) .build() @@ -156,16 +156,16 @@ internal class MessagingApi @Inject constructor( * Sends a message */ suspend fun sendMessage( - message: MessagingService.Message.Builder, + message: OcpMessagingService.Message.Builder, rendezvous: KeyPair, - ): MessagingService.SendMessageResponse { + ): OcpMessagingService.SendMessageResponse { val signature = ByteArrayOutputStream().let { message.buildPartial().writeTo(it) val signed = Ed25519.sign(it.toByteArray(), rendezvous) Model.Signature.newBuilder().setValue(ByteString.copyFrom(signed)) } - val request = MessagingService.SendMessageRequest.newBuilder() + val request = OcpMessagingService.SendMessageRequest.newBuilder() .setMessage(message) .setRendezvousKey(rendezvous.asRendezvousKey()) .setSignature(signature) diff --git a/services/opencode/src/main/kotlin/com/getcode/opencode/internal/network/api/TransactionApi.kt b/services/opencode/src/main/kotlin/com/getcode/opencode/internal/network/api/TransactionApi.kt index cf3101b53..b277484ae 100644 --- a/services/opencode/src/main/kotlin/com/getcode/opencode/internal/network/api/TransactionApi.kt +++ b/services/opencode/src/main/kotlin/com/getcode/opencode/internal/network/api/TransactionApi.kt @@ -1,19 +1,19 @@ package com.getcode.opencode.internal.network.api +import com.codeinc.opencode.gen.transaction.v1.OcpTransactionService +import com.codeinc.opencode.gen.transaction.v1.OcpTransactionService.CanWithdrawToAccountRequest +import com.codeinc.opencode.gen.transaction.v1.OcpTransactionService.CanWithdrawToAccountResponse +import com.codeinc.opencode.gen.transaction.v1.OcpTransactionService.GetIntentMetadataRequest +import com.codeinc.opencode.gen.transaction.v1.OcpTransactionService.GetIntentMetadataResponse +import com.codeinc.opencode.gen.transaction.v1.OcpTransactionService.GetLimitsRequest +import com.codeinc.opencode.gen.transaction.v1.OcpTransactionService.GetLimitsResponse +import com.codeinc.opencode.gen.transaction.v1.OcpTransactionService.GetSwapRequest +import com.codeinc.opencode.gen.transaction.v1.OcpTransactionService.GetSwapResponse +import com.codeinc.opencode.gen.transaction.v1.OcpTransactionService.SubmitIntentRequest +import com.codeinc.opencode.gen.transaction.v1.OcpTransactionService.SubmitIntentResponse +import com.codeinc.opencode.gen.transaction.v1.OcpTransactionService.VoidGiftCardRequest +import com.codeinc.opencode.gen.transaction.v1.OcpTransactionService.VoidGiftCardResponse import com.codeinc.opencode.gen.transaction.v1.TransactionGrpcKt -import com.codeinc.opencode.gen.transaction.v1.TransactionService -import com.codeinc.opencode.gen.transaction.v1.TransactionService.CanWithdrawToAccountRequest -import com.codeinc.opencode.gen.transaction.v1.TransactionService.CanWithdrawToAccountResponse -import com.codeinc.opencode.gen.transaction.v1.TransactionService.GetIntentMetadataRequest -import com.codeinc.opencode.gen.transaction.v1.TransactionService.GetIntentMetadataResponse -import com.codeinc.opencode.gen.transaction.v1.TransactionService.GetLimitsRequest -import com.codeinc.opencode.gen.transaction.v1.TransactionService.GetLimitsResponse -import com.codeinc.opencode.gen.transaction.v1.TransactionService.GetSwapRequest -import com.codeinc.opencode.gen.transaction.v1.TransactionService.GetSwapResponse -import com.codeinc.opencode.gen.transaction.v1.TransactionService.SubmitIntentRequest -import com.codeinc.opencode.gen.transaction.v1.TransactionService.SubmitIntentResponse -import com.codeinc.opencode.gen.transaction.v1.TransactionService.VoidGiftCardRequest -import com.codeinc.opencode.gen.transaction.v1.TransactionService.VoidGiftCardResponse import com.codeinc.opencode.gen.transaction.v1.validate import com.getcode.ed25519.Ed25519.KeyPair import com.getcode.opencode.internal.annotations.OpenCodeManagedChannel @@ -212,8 +212,8 @@ class TransactionApi @Inject constructor( */ suspend fun getPendingSwaps( owner: KeyPair, - ): TransactionService.GetPendingSwapsResponse { - val request = TransactionService.GetPendingSwapsRequest.newBuilder() + ): OcpTransactionService.GetPendingSwapsResponse { + val request = OcpTransactionService.GetPendingSwapsRequest.newBuilder() .setOwner(owner.asSolanaAccountId()) .apply { setSignature(sign(owner)) } .build() @@ -243,10 +243,10 @@ class TransactionApi @Inject constructor( * */ fun swap( - requestFlow: Flow - ): Flow = api.statefulSwap(requestFlow) + requestFlow: Flow + ): Flow = api.statefulSwap(requestFlow) fun statelessSwap( - requestFlow: Flow - ): Flow = api.statelessSwap(requestFlow) + requestFlow: Flow + ): Flow = api.statelessSwap(requestFlow) } \ No newline at end of file diff --git a/services/opencode/src/main/kotlin/com/getcode/opencode/internal/network/api/intents/IntentCreateAccount.kt b/services/opencode/src/main/kotlin/com/getcode/opencode/internal/network/api/intents/IntentCreateAccount.kt index 05b175ae7..e8e0106c7 100644 --- a/services/opencode/src/main/kotlin/com/getcode/opencode/internal/network/api/intents/IntentCreateAccount.kt +++ b/services/opencode/src/main/kotlin/com/getcode/opencode/internal/network/api/intents/IntentCreateAccount.kt @@ -1,6 +1,6 @@ package com.getcode.opencode.internal.network.api.intents -import com.codeinc.opencode.gen.transaction.v1.TransactionService +import com.codeinc.opencode.gen.transaction.v1.OcpTransactionService import com.getcode.opencode.internal.network.api.intents.actions.ActionOpenAccount import com.getcode.opencode.internal.network.extensions.asProtobufMetadata import com.getcode.opencode.model.accounts.AccountCluster @@ -19,7 +19,7 @@ internal class IntentCreateAccount( override val actionGroup: ActionGroup, ) : IntentType() { - override fun metadata(): TransactionService.Metadata { + override fun metadata(): OcpTransactionService.Metadata { return metadata.asProtobufMetadata() } diff --git a/services/opencode/src/main/kotlin/com/getcode/opencode/internal/network/api/intents/IntentDistribution.kt b/services/opencode/src/main/kotlin/com/getcode/opencode/internal/network/api/intents/IntentDistribution.kt index dc6d1481d..191201bf0 100644 --- a/services/opencode/src/main/kotlin/com/getcode/opencode/internal/network/api/intents/IntentDistribution.kt +++ b/services/opencode/src/main/kotlin/com/getcode/opencode/internal/network/api/intents/IntentDistribution.kt @@ -1,6 +1,6 @@ package com.getcode.opencode.internal.network.api.intents -import com.codeinc.opencode.gen.transaction.v1.TransactionService +import com.codeinc.opencode.gen.transaction.v1.OcpTransactionService import com.getcode.opencode.internal.network.api.intents.actions.ActionPublicTransfer import com.getcode.opencode.internal.network.api.intents.actions.ActionPublicWithdraw import com.getcode.opencode.internal.network.extensions.asProtobufMetadata @@ -19,7 +19,7 @@ internal class IntentDistribution( override val metadata: TransactionMetadata, override val actionGroup: ActionGroup, ) : IntentType() { - override fun metadata(): TransactionService.Metadata { + override fun metadata(): OcpTransactionService.Metadata { return metadata.asProtobufMetadata() } diff --git a/services/opencode/src/main/kotlin/com/getcode/opencode/internal/network/api/intents/IntentFundSwap.kt b/services/opencode/src/main/kotlin/com/getcode/opencode/internal/network/api/intents/IntentFundSwap.kt index b31cfcecf..64f7d4784 100644 --- a/services/opencode/src/main/kotlin/com/getcode/opencode/internal/network/api/intents/IntentFundSwap.kt +++ b/services/opencode/src/main/kotlin/com/getcode/opencode/internal/network/api/intents/IntentFundSwap.kt @@ -1,6 +1,6 @@ package com.getcode.opencode.internal.network.api.intents -import com.codeinc.opencode.gen.transaction.v1.TransactionService +import com.codeinc.opencode.gen.transaction.v1.OcpTransactionService import com.getcode.opencode.internal.manager.VerifiedState import com.getcode.opencode.internal.network.api.intents.actions.ActionPublicTransfer import com.getcode.opencode.internal.network.extensions.asProtobufMetadata @@ -20,7 +20,7 @@ internal class IntentFundSwap( override val actionGroup: ActionGroup, ) : IntentType() { - override fun metadata(): TransactionService.Metadata { + override fun metadata(): OcpTransactionService.Metadata { return metadata.asProtobufMetadata() } @@ -54,7 +54,7 @@ internal class IntentFundSwap( amount = amount, verifiedState = verifiedState, mint = fromMint.address, - isRemoteSend = false, + isIndirect = false, isWithdrawal = true, ), actionGroup = buildActionGroup { add(transfer) }, diff --git a/services/opencode/src/main/kotlin/com/getcode/opencode/internal/network/api/intents/IntentRemoteReceive.kt b/services/opencode/src/main/kotlin/com/getcode/opencode/internal/network/api/intents/IntentRemoteReceive.kt index ac8c43f7a..227ffbfc6 100644 --- a/services/opencode/src/main/kotlin/com/getcode/opencode/internal/network/api/intents/IntentRemoteReceive.kt +++ b/services/opencode/src/main/kotlin/com/getcode/opencode/internal/network/api/intents/IntentRemoteReceive.kt @@ -1,6 +1,6 @@ package com.getcode.opencode.internal.network.api.intents -import com.codeinc.opencode.gen.transaction.v1.TransactionService +import com.codeinc.opencode.gen.transaction.v1.OcpTransactionService import com.getcode.opencode.internal.network.api.intents.actions.ActionPublicWithdraw import com.getcode.opencode.internal.network.extensions.asProtobufMetadata import com.getcode.opencode.model.accounts.AccountCluster @@ -18,7 +18,7 @@ internal class IntentRemoteReceive( override val metadata: TransactionMetadata, override val actionGroup: ActionGroup ): IntentType() { - override fun metadata(): TransactionService.Metadata { + override fun metadata(): OcpTransactionService.Metadata { return metadata.asProtobufMetadata() } @@ -46,7 +46,7 @@ internal class IntentRemoteReceive( source = giftCard.cluster.vaultPublicKey, amount = amount, mint = mint, - isRemoteSend = true, + isIndirect = true, ), actionGroup = ActionGroup().apply { actions = listOf(withdrawFromGiftCard) diff --git a/services/opencode/src/main/kotlin/com/getcode/opencode/internal/network/api/intents/IntentRemoteSend.kt b/services/opencode/src/main/kotlin/com/getcode/opencode/internal/network/api/intents/IntentRemoteSend.kt index 9f826ad00..a67933a11 100644 --- a/services/opencode/src/main/kotlin/com/getcode/opencode/internal/network/api/intents/IntentRemoteSend.kt +++ b/services/opencode/src/main/kotlin/com/getcode/opencode/internal/network/api/intents/IntentRemoteSend.kt @@ -1,6 +1,6 @@ package com.getcode.opencode.internal.network.api.intents -import com.codeinc.opencode.gen.transaction.v1.TransactionService +import com.codeinc.opencode.gen.transaction.v1.OcpTransactionService import com.getcode.opencode.internal.manager.VerifiedState import com.getcode.opencode.internal.network.api.intents.actions.ActionOpenAccount import com.getcode.opencode.internal.network.api.intents.actions.ActionPublicTransfer @@ -13,7 +13,6 @@ import com.getcode.opencode.model.financial.Token import com.getcode.opencode.model.transactions.TransactionMetadata import com.getcode.opencode.solana.intents.ActionGroup import com.getcode.opencode.solana.intents.IntentType -import com.getcode.solana.keys.Mint import com.getcode.solana.keys.PublicKey internal class IntentRemoteSend( @@ -21,7 +20,7 @@ internal class IntentRemoteSend( override val metadata: TransactionMetadata, override val actionGroup: ActionGroup ): IntentType() { - override fun metadata(): TransactionService.Metadata { + override fun metadata(): OcpTransactionService.Metadata { return metadata.asProtobufMetadata() } @@ -72,7 +71,7 @@ internal class IntentRemoteSend( destination = giftCard.cluster.vaultPublicKey, amount = amount, mint = token.address, - isRemoteSend = true, + isIndirect = true, isWithdrawal = false, verifiedState = verifiedState, ), diff --git a/services/opencode/src/main/kotlin/com/getcode/opencode/internal/network/api/intents/IntentStatefulSwap.kt b/services/opencode/src/main/kotlin/com/getcode/opencode/internal/network/api/intents/IntentStatefulSwap.kt index a96e7bda4..99a461e46 100644 --- a/services/opencode/src/main/kotlin/com/getcode/opencode/internal/network/api/intents/IntentStatefulSwap.kt +++ b/services/opencode/src/main/kotlin/com/getcode/opencode/internal/network/api/intents/IntentStatefulSwap.kt @@ -1,6 +1,6 @@ package com.getcode.opencode.internal.network.api.intents -import com.codeinc.opencode.gen.transaction.v1.TransactionService +import com.codeinc.opencode.gen.transaction.v1.OcpTransactionService import com.getcode.opencode.internal.extensions.toPublicKey import com.getcode.opencode.internal.network.extensions.asSignature import com.getcode.opencode.internal.network.extensions.asSolanaAccountId @@ -72,11 +72,11 @@ internal class IntentStatefulSwap( } } - fun initiate(): TransactionService.StatefulSwapRequest { + fun initiate(): OcpTransactionService.StatefulSwapRequest { val signer = request.owner.authority.keyPair - return TransactionService.StatefulSwapRequest.newBuilder() + return OcpTransactionService.StatefulSwapRequest.newBuilder() .setInitiate( - TransactionService.StatefulSwapRequest.Initiate.newBuilder() + OcpTransactionService.StatefulSwapRequest.Initiate.newBuilder() .setOwner(request.owner.authorityPublicKey.asSolanaAccountId()) .setSwapAuthority(request.swapAuthority.toPublicKey().asSolanaAccountId()) .apply { @@ -92,12 +92,12 @@ internal class IntentStatefulSwap( } - fun requestToSubmitSignatures(): TransactionService.StatefulSwapRequest { + fun requestToSubmitSignatures(): OcpTransactionService.StatefulSwapRequest { val params = parameters ?: throw IllegalStateException("parameters not set") - return TransactionService.StatefulSwapRequest.newBuilder() + return OcpTransactionService.StatefulSwapRequest.newBuilder() .setSubmitSignatures( - TransactionService.StatefulSwapRequest.SubmitSignatures.newBuilder() + OcpTransactionService.StatefulSwapRequest.SubmitSignatures.newBuilder() .addAllTransactionSignatures( sign(params).map { key -> key.asSignature() } ) diff --git a/services/opencode/src/main/kotlin/com/getcode/opencode/internal/network/api/intents/IntentStatelessSwap.kt b/services/opencode/src/main/kotlin/com/getcode/opencode/internal/network/api/intents/IntentStatelessSwap.kt index 114fd56b0..f4219e2fd 100644 --- a/services/opencode/src/main/kotlin/com/getcode/opencode/internal/network/api/intents/IntentStatelessSwap.kt +++ b/services/opencode/src/main/kotlin/com/getcode/opencode/internal/network/api/intents/IntentStatelessSwap.kt @@ -1,6 +1,6 @@ package com.getcode.opencode.internal.network.api.intents -import com.codeinc.opencode.gen.transaction.v1.TransactionService +import com.codeinc.opencode.gen.transaction.v1.OcpTransactionService import com.getcode.opencode.internal.network.extensions.asSignature import com.getcode.opencode.internal.network.extensions.asSolanaAccountId import com.getcode.opencode.internal.network.extensions.sign @@ -33,12 +33,12 @@ internal class IntentStatelessSwap( ) } - fun initiate(): TransactionService.StatelessSwapRequest { + fun initiate(): OcpTransactionService.StatelessSwapRequest { val owner = request.owner.authority.keyPair - val initiate = TransactionService.StatelessSwapRequest.Initiate.newBuilder() + val initiate = OcpTransactionService.StatelessSwapRequest.Initiate.newBuilder() .setOwner(owner.asSolanaAccountId()) .setStablecoin( - TransactionService.StatelessSwapRequest.Initiate.CoinbaseStableSwapperClientParameters.newBuilder() + OcpTransactionService.StatelessSwapRequest.Initiate.CoinbaseStableSwapperClientParameters.newBuilder() .setFromMint(request.fromMint.asSolanaAccountId()) .setToMint(request.toMint.asSolanaAccountId()) .setSwapAmount(request.amount) @@ -48,17 +48,17 @@ internal class IntentStatelessSwap( .apply { setSignature(sign(owner)) } .build() - return TransactionService.StatelessSwapRequest.newBuilder() + return OcpTransactionService.StatelessSwapRequest.newBuilder() .setInitiate(initiate) .build() } - fun requestToSubmitSignatures(): TransactionService.StatelessSwapRequest { + fun requestToSubmitSignatures(): OcpTransactionService.StatelessSwapRequest { val params = parameters ?: throw IllegalStateException("parameters not set") - return TransactionService.StatelessSwapRequest.newBuilder() + return OcpTransactionService.StatelessSwapRequest.newBuilder() .setSubmitSignatures( - TransactionService.StatelessSwapRequest.SubmitSignatures.newBuilder() + OcpTransactionService.StatelessSwapRequest.SubmitSignatures.newBuilder() .addAllTransactionSignatures(sign(params).map { it.asSignature() }) .build() ) diff --git a/services/opencode/src/main/kotlin/com/getcode/opencode/internal/network/api/intents/IntentTransfer.kt b/services/opencode/src/main/kotlin/com/getcode/opencode/internal/network/api/intents/IntentTransfer.kt index 5cbbc6a98..d0ac15a21 100644 --- a/services/opencode/src/main/kotlin/com/getcode/opencode/internal/network/api/intents/IntentTransfer.kt +++ b/services/opencode/src/main/kotlin/com/getcode/opencode/internal/network/api/intents/IntentTransfer.kt @@ -1,6 +1,6 @@ package com.getcode.opencode.internal.network.api.intents -import com.codeinc.opencode.gen.transaction.v1.TransactionService +import com.codeinc.opencode.gen.transaction.v1.OcpTransactionService import com.getcode.opencode.internal.manager.VerifiedState import com.getcode.opencode.internal.network.api.intents.actions.ActionPublicTransfer import com.getcode.opencode.model.accounts.AccountCluster @@ -29,7 +29,7 @@ internal class IntentTransfer( override val metadata: TransactionMetadata, override val actionGroup: ActionGroup, ) : IntentType() { - override fun metadata(): TransactionService.Metadata { + override fun metadata(): OcpTransactionService.Metadata { return metadata.asProtobufMetadata() } @@ -58,7 +58,7 @@ internal class IntentTransfer( destination = destination, amount = amount, mint = mint, - isRemoteSend = false, + isIndirect = false, isWithdrawal = false, exchangeData = exchangeData, ), @@ -94,7 +94,7 @@ internal class IntentTransfer( amount = amount, verifiedState = verifiedState, mint = mint, - isRemoteSend = false, + isIndirect = false, isWithdrawal = false, ), actionGroup = ActionGroup().apply { diff --git a/services/opencode/src/main/kotlin/com/getcode/opencode/internal/network/api/intents/IntentWithdraw.kt b/services/opencode/src/main/kotlin/com/getcode/opencode/internal/network/api/intents/IntentWithdraw.kt index d38586db8..1da5b5e92 100644 --- a/services/opencode/src/main/kotlin/com/getcode/opencode/internal/network/api/intents/IntentWithdraw.kt +++ b/services/opencode/src/main/kotlin/com/getcode/opencode/internal/network/api/intents/IntentWithdraw.kt @@ -1,6 +1,6 @@ package com.getcode.opencode.internal.network.api.intents -import com.codeinc.opencode.gen.transaction.v1.TransactionService +import com.codeinc.opencode.gen.transaction.v1.OcpTransactionService import com.getcode.opencode.internal.manager.VerifiedState import com.getcode.opencode.internal.network.api.intents.actions.ActionFeePayment import com.getcode.opencode.internal.network.api.intents.actions.ActionPublicTransfer @@ -23,7 +23,7 @@ internal class IntentWithdraw( override val metadata: TransactionMetadata, override val actionGroup: ActionGroup, ) : IntentType() { - override fun metadata(): TransactionService.Metadata { + override fun metadata(): OcpTransactionService.Metadata { return metadata.asProtobufMetadata() } @@ -71,7 +71,7 @@ internal class IntentWithdraw( destinationOwner = destinationOwner, amount = amount, mint = mint, - isRemoteSend = false, + isIndirect = false, isWithdrawal = true, verifiedState = verifiedState, ), diff --git a/services/opencode/src/main/kotlin/com/getcode/opencode/internal/network/api/intents/actions/ActionFeePayment.kt b/services/opencode/src/main/kotlin/com/getcode/opencode/internal/network/api/intents/actions/ActionFeePayment.kt index ac275a284..2e079ba67 100644 --- a/services/opencode/src/main/kotlin/com/getcode/opencode/internal/network/api/intents/actions/ActionFeePayment.kt +++ b/services/opencode/src/main/kotlin/com/getcode/opencode/internal/network/api/intents/actions/ActionFeePayment.kt @@ -1,6 +1,6 @@ package com.getcode.opencode.internal.network.api.intents.actions -import com.codeinc.opencode.gen.transaction.v1.TransactionService +import com.codeinc.opencode.gen.transaction.v1.OcpTransactionService import com.getcode.ed25519.Ed25519 import com.getcode.opencode.internal.network.extensions.asSolanaAccountId import com.getcode.opencode.model.accounts.AccountCluster @@ -44,15 +44,15 @@ internal class ActionFeePayment( } } - override fun action(): TransactionService.Action { - return TransactionService.Action.newBuilder() + override fun action(): OcpTransactionService.Action { + return OcpTransactionService.Action.newBuilder() .setId(id) .setFeePayment( - TransactionService.FeePaymentAction.newBuilder() + OcpTransactionService.FeePaymentAction.newBuilder() .setSource(source.vaultPublicKey.asSolanaAccountId()) .setType( when (fee.type) { - FeeType.CreateOnSendWithdrawal -> TransactionService.FeePaymentAction.FeeType.CREATE_ON_SEND_WITHDRAWAL + FeeType.CreateOnSendWithdrawal -> OcpTransactionService.FeePaymentAction.FeeType.CREATE_ON_SEND_WITHDRAWAL } ) .setAuthority(source.authority.keyPair.asSolanaAccountId()) diff --git a/services/opencode/src/main/kotlin/com/getcode/opencode/internal/network/api/intents/actions/ActionOpenAccount.kt b/services/opencode/src/main/kotlin/com/getcode/opencode/internal/network/api/intents/actions/ActionOpenAccount.kt index 6ae1e5b78..780e36490 100644 --- a/services/opencode/src/main/kotlin/com/getcode/opencode/internal/network/api/intents/actions/ActionOpenAccount.kt +++ b/services/opencode/src/main/kotlin/com/getcode/opencode/internal/network/api/intents/actions/ActionOpenAccount.kt @@ -1,6 +1,6 @@ package com.getcode.opencode.internal.network.api.intents.actions -import com.codeinc.opencode.gen.transaction.v1.TransactionService +import com.codeinc.opencode.gen.transaction.v1.OcpTransactionService import com.getcode.ed25519.Ed25519 import com.getcode.opencode.solana.intents.ServerParameter import com.getcode.opencode.model.accounts.AccountCluster @@ -24,13 +24,13 @@ internal class ActionOpenAccount( ) : ActionType() { override fun transactions(): List = listOf() - override fun action(): TransactionService.Action { - return TransactionService.Action.newBuilder() + override fun action(): OcpTransactionService.Action { + return OcpTransactionService.Action.newBuilder() .apply trx@{ val index = this@ActionOpenAccount.index val owner = this@ActionOpenAccount.owner this.id = id - this.setOpenAccount(TransactionService.OpenAccountAction.newBuilder() + this.setOpenAccount(OcpTransactionService.OpenAccountAction.newBuilder() .setIndex(index) .setOwner(owner.authorityPublicKey.asSolanaAccountId()) .setAccountType(accountType.getAccountType()) diff --git a/services/opencode/src/main/kotlin/com/getcode/opencode/internal/network/api/intents/actions/ActionPublicTransfer.kt b/services/opencode/src/main/kotlin/com/getcode/opencode/internal/network/api/intents/actions/ActionPublicTransfer.kt index 0012691f3..2cc1150ea 100644 --- a/services/opencode/src/main/kotlin/com/getcode/opencode/internal/network/api/intents/actions/ActionPublicTransfer.kt +++ b/services/opencode/src/main/kotlin/com/getcode/opencode/internal/network/api/intents/actions/ActionPublicTransfer.kt @@ -1,6 +1,6 @@ package com.getcode.opencode.internal.network.api.intents.actions -import com.codeinc.opencode.gen.transaction.v1.TransactionService +import com.codeinc.opencode.gen.transaction.v1.OcpTransactionService import com.getcode.ed25519.Ed25519.KeyPair import com.getcode.opencode.internal.network.extensions.asSolanaAccountId import com.getcode.opencode.model.financial.Fiat @@ -42,11 +42,11 @@ internal class ActionPublicTransfer( } - override fun action(): TransactionService.Action { - return TransactionService.Action.newBuilder() + override fun action(): OcpTransactionService.Action { + return OcpTransactionService.Action.newBuilder() .setId(id) .setNoPrivacyTransfer( - TransactionService.NoPrivacyTransferAction.newBuilder() + OcpTransactionService.NoPrivacyTransferAction.newBuilder() .setSource(source.asSolanaAccountId()) .setDestination(destination.asSolanaAccountId()) .setAuthority(signer.asSolanaAccountId()) diff --git a/services/opencode/src/main/kotlin/com/getcode/opencode/internal/network/api/intents/actions/ActionPublicWithdraw.kt b/services/opencode/src/main/kotlin/com/getcode/opencode/internal/network/api/intents/actions/ActionPublicWithdraw.kt index c0962876e..7ed8af366 100644 --- a/services/opencode/src/main/kotlin/com/getcode/opencode/internal/network/api/intents/actions/ActionPublicWithdraw.kt +++ b/services/opencode/src/main/kotlin/com/getcode/opencode/internal/network/api/intents/actions/ActionPublicWithdraw.kt @@ -1,6 +1,6 @@ package com.getcode.opencode.internal.network.api.intents.actions -import com.codeinc.opencode.gen.transaction.v1.TransactionService +import com.codeinc.opencode.gen.transaction.v1.OcpTransactionService import com.getcode.ed25519.Ed25519 import com.getcode.opencode.internal.network.extensions.asSolanaAccountId import com.getcode.opencode.model.accounts.AccountCluster @@ -40,11 +40,11 @@ class ActionPublicWithdraw( } } - override fun action(): TransactionService.Action { - return TransactionService.Action.newBuilder() + override fun action(): OcpTransactionService.Action { + return OcpTransactionService.Action.newBuilder() .setId(id) .setNoPrivacyWithdraw( - TransactionService.NoPrivacyWithdrawAction.newBuilder() + OcpTransactionService.NoPrivacyWithdrawAction.newBuilder() .setSource(source.vaultPublicKey.asSolanaAccountId()) .setDestination(destination.asSolanaAccountId()) .setAuthority(signer.asSolanaAccountId()) diff --git a/services/opencode/src/main/kotlin/com/getcode/opencode/internal/network/executors/IntentExecutor.kt b/services/opencode/src/main/kotlin/com/getcode/opencode/internal/network/executors/IntentExecutor.kt index e05559473..6d9f07fbb 100644 --- a/services/opencode/src/main/kotlin/com/getcode/opencode/internal/network/executors/IntentExecutor.kt +++ b/services/opencode/src/main/kotlin/com/getcode/opencode/internal/network/executors/IntentExecutor.kt @@ -1,8 +1,8 @@ package com.getcode.opencode.internal.network.executors -import com.codeinc.opencode.gen.transaction.v1.TransactionService -import com.codeinc.opencode.gen.transaction.v1.TransactionService.SubmitIntentRequest -import com.codeinc.opencode.gen.transaction.v1.TransactionService.SubmitIntentResponse +import com.codeinc.opencode.gen.transaction.v1.OcpTransactionService +import com.codeinc.opencode.gen.transaction.v1.OcpTransactionService.SubmitIntentRequest +import com.codeinc.opencode.gen.transaction.v1.OcpTransactionService.SubmitIntentResponse import com.getcode.ed25519.Ed25519.KeyPair import com.getcode.opencode.internal.bidi.BidirectionalStreamReference import com.getcode.opencode.internal.bidi.openBidirectionalStreamForResult @@ -145,7 +145,7 @@ class IntentExecutor( private fun handleServerParameters( intent: IntentType, - serverParameters: List, + serverParameters: List, requestChannel: (SubmitIntentRequest) -> Unit, onResult: (Result) -> Unit, ) { @@ -175,17 +175,17 @@ class IntentExecutor( private fun handleErrors( intent: IntentType, - errorDetails: List + errorDetails: List ): List { val errors = mutableListOf() errorDetails.forEach { error -> when (error.typeCase) { - TransactionService.ErrorDetails.TypeCase.REASON_STRING -> { + OcpTransactionService.ErrorDetails.TypeCase.REASON_STRING -> { errors.add("Reason: ${error.reasonString.reason}") } - TransactionService.ErrorDetails.TypeCase.INVALID_SIGNATURE -> { + OcpTransactionService.ErrorDetails.TypeCase.INVALID_SIGNATURE -> { val expected = SolanaTransaction.fromList(error.invalidSignature.expectedTransaction.value.toByteArray().toList()) val produced = intent.transaction() errors.addAll( @@ -204,7 +204,7 @@ class IntentExecutor( expected?.diff(produced) } - TransactionService.ErrorDetails.TypeCase.DENIED -> { + OcpTransactionService.ErrorDetails.TypeCase.DENIED -> { errors.add("Denied: ${error.denied.reason}") } diff --git a/services/opencode/src/main/kotlin/com/getcode/opencode/internal/network/executors/StatefulSwapExecutor.kt b/services/opencode/src/main/kotlin/com/getcode/opencode/internal/network/executors/StatefulSwapExecutor.kt index a965da7d9..6ae20171f 100644 --- a/services/opencode/src/main/kotlin/com/getcode/opencode/internal/network/executors/StatefulSwapExecutor.kt +++ b/services/opencode/src/main/kotlin/com/getcode/opencode/internal/network/executors/StatefulSwapExecutor.kt @@ -1,6 +1,6 @@ package com.getcode.opencode.internal.network.executors -import com.codeinc.opencode.gen.transaction.v1.TransactionService +import com.codeinc.opencode.gen.transaction.v1.OcpTransactionService import com.getcode.opencode.internal.bidi.BidirectionalStreamReference import com.getcode.opencode.internal.bidi.openBidirectionalStreamForResult import com.getcode.opencode.internal.network.api.TransactionApi @@ -27,7 +27,7 @@ import kotlinx.coroutines.sync.Mutex import kotlinx.coroutines.sync.withLock import kotlin.coroutines.resume -typealias OcpSwapStreamReference = BidirectionalStreamReference +typealias OcpSwapStreamReference = BidirectionalStreamReference /** @@ -127,7 +127,7 @@ internal class SwapExecutor( initialRequest = { intent.initiate() }, responseHandler = { response, onResult, requestChannel -> when (val result = response.responseCase) { - TransactionService.StatefulSwapResponse.ResponseCase.SERVER_PARAMETERS -> { + OcpTransactionService.StatefulSwapResponse.ResponseCase.SERVER_PARAMETERS -> { handleServerParameters( intent = intent, onResult = onResult, @@ -136,7 +136,7 @@ internal class SwapExecutor( ) } - TransactionService.StatefulSwapResponse.ResponseCase.SUCCESS -> { + OcpTransactionService.StatefulSwapResponse.ResponseCase.SUCCESS -> { streamRef.complete() val result = response.success.toCode() if (result == null) { @@ -154,7 +154,7 @@ internal class SwapExecutor( } } - TransactionService.StatefulSwapResponse.ResponseCase.ERROR -> { + OcpTransactionService.StatefulSwapResponse.ResponseCase.ERROR -> { val errors = handleErrors(intent, response.error.errorDetailsList) trace( tag = "Swap", @@ -165,7 +165,7 @@ internal class SwapExecutor( onResult(Result.failure(SwapError.typed(response.error))) } - TransactionService.StatefulSwapResponse.ResponseCase.RESPONSE_NOT_SET -> Unit + OcpTransactionService.StatefulSwapResponse.ResponseCase.RESPONSE_NOT_SET -> Unit } } ) @@ -173,26 +173,26 @@ internal class SwapExecutor( private fun handleServerParameters( intent: IntentStatefulSwap, - serverParameters: TransactionService.StatefulSwapResponse.ServerParameters?, - requestChannel: (TransactionService.StatefulSwapRequest) -> Unit, + serverParameters: OcpTransactionService.StatefulSwapResponse.ServerParameters?, + requestChannel: (OcpTransactionService.StatefulSwapRequest) -> Unit, onResult: (SwapResult) -> Unit, ) { try { val params = when (serverParameters?.kindCase) { null -> null - TransactionService.StatefulSwapResponse.ServerParameters.KindCase.RESERVE_EXISTING_CURRENCY -> { + OcpTransactionService.StatefulSwapResponse.ServerParameters.KindCase.RESERVE_EXISTING_CURRENCY -> { serverParameters.reserveExistingCurrency.toProps() } - TransactionService.StatefulSwapResponse.ServerParameters.KindCase.RESERVE_NEW_CURRENCY -> { + OcpTransactionService.StatefulSwapResponse.ServerParameters.KindCase.RESERVE_NEW_CURRENCY -> { serverParameters.reserveNewCurrency.toProps() } - TransactionService.StatefulSwapResponse.ServerParameters.KindCase.STABLECOIN -> { + OcpTransactionService.StatefulSwapResponse.ServerParameters.KindCase.STABLECOIN -> { serverParameters.stablecoin.toProps() } - TransactionService.StatefulSwapResponse.ServerParameters.KindCase.KIND_NOT_SET -> null + OcpTransactionService.StatefulSwapResponse.ServerParameters.KindCase.KIND_NOT_SET -> null } if (params != null) { @@ -218,17 +218,17 @@ private fun handleServerParameters( private fun handleErrors( intent: IntentStatefulSwap, - errorDetails: List + errorDetails: List ): List { val errors = mutableListOf() errorDetails.forEach { error -> when (error.typeCase) { - TransactionService.ErrorDetails.TypeCase.REASON_STRING -> { + OcpTransactionService.ErrorDetails.TypeCase.REASON_STRING -> { errors.add("Reason: ${error.reasonString.reason}") } - TransactionService.ErrorDetails.TypeCase.INVALID_SIGNATURE -> { + OcpTransactionService.ErrorDetails.TypeCase.INVALID_SIGNATURE -> { val expected = SolanaTransaction.fromBytes( error.invalidSignature.expectedTransaction.value ) @@ -249,7 +249,7 @@ private fun handleErrors( ) } - TransactionService.ErrorDetails.TypeCase.DENIED -> { + OcpTransactionService.ErrorDetails.TypeCase.DENIED -> { errors.add("Denied: ${error.denied.reason}") } diff --git a/services/opencode/src/main/kotlin/com/getcode/opencode/internal/network/executors/StatelessSwapExecutor.kt b/services/opencode/src/main/kotlin/com/getcode/opencode/internal/network/executors/StatelessSwapExecutor.kt index 173cf06cc..a05c274d1 100644 --- a/services/opencode/src/main/kotlin/com/getcode/opencode/internal/network/executors/StatelessSwapExecutor.kt +++ b/services/opencode/src/main/kotlin/com/getcode/opencode/internal/network/executors/StatelessSwapExecutor.kt @@ -1,6 +1,6 @@ package com.getcode.opencode.internal.network.executors -import com.codeinc.opencode.gen.transaction.v1.TransactionService +import com.codeinc.opencode.gen.transaction.v1.OcpTransactionService import com.getcode.opencode.internal.bidi.BidirectionalStreamReference import com.getcode.opencode.internal.bidi.openBidirectionalStreamForResult import com.getcode.opencode.internal.network.api.TransactionApi @@ -24,7 +24,7 @@ import kotlinx.coroutines.sync.withLock import kotlin.coroutines.resume private typealias StatelessSwapStreamReference = - BidirectionalStreamReference + BidirectionalStreamReference internal class StatelessSwapExecutor( private val api: TransactionApi, @@ -78,7 +78,7 @@ internal class StatelessSwapExecutor( initialRequest = { intent.initiate() }, responseHandler = { response, onResult, requestChannel -> when (response.responseCase) { - TransactionService.StatelessSwapResponse.ResponseCase.SERVER_PARAMETERS -> { + OcpTransactionService.StatelessSwapResponse.ResponseCase.SERVER_PARAMETERS -> { handleServerParameters( intent = intent, serverParameters = response.serverParameters, @@ -87,7 +87,7 @@ internal class StatelessSwapExecutor( ) } - TransactionService.StatelessSwapResponse.ResponseCase.SUCCESS -> { + OcpTransactionService.StatelessSwapResponse.ResponseCase.SUCCESS -> { streamRef.complete() val code = response.success.toCode() val signature = runCatching { response.success.transactionSignature.toSignature() }.getOrNull() @@ -100,7 +100,7 @@ internal class StatelessSwapExecutor( } } - TransactionService.StatelessSwapResponse.ResponseCase.ERROR -> { + OcpTransactionService.StatelessSwapResponse.ResponseCase.ERROR -> { val errors = handleErrors(response.error.errorDetailsList) trace( tag = TAG, @@ -111,7 +111,7 @@ internal class StatelessSwapExecutor( onResult(Result.failure(SwapError.typed(response.error))) } - TransactionService.StatelessSwapResponse.ResponseCase.RESPONSE_NOT_SET -> Unit + OcpTransactionService.StatelessSwapResponse.ResponseCase.RESPONSE_NOT_SET -> Unit } } ) @@ -119,15 +119,15 @@ internal class StatelessSwapExecutor( private fun handleServerParameters( intent: IntentStatelessSwap, - serverParameters: TransactionService.StatelessSwapResponse.ServerParameters?, - requestChannel: (TransactionService.StatelessSwapRequest) -> Unit, + serverParameters: OcpTransactionService.StatelessSwapResponse.ServerParameters?, + requestChannel: (OcpTransactionService.StatelessSwapRequest) -> Unit, onResult: (StatelessSwapResult) -> Unit, ) { try { val params = when (serverParameters?.kindCase) { - TransactionService.StatelessSwapResponse.ServerParameters.KindCase.STABLECOIN -> + OcpTransactionService.StatelessSwapResponse.ServerParameters.KindCase.STABLECOIN -> serverParameters.stablecoin.toProps() - TransactionService.StatelessSwapResponse.ServerParameters.KindCase.KIND_NOT_SET, + OcpTransactionService.StatelessSwapResponse.ServerParameters.KindCase.KIND_NOT_SET, null -> null } @@ -147,16 +147,16 @@ private fun handleServerParameters( } private fun handleErrors( - errorDetails: List + errorDetails: List ): List { val errors = mutableListOf() errorDetails.forEach { error -> when (error.typeCase) { - TransactionService.ErrorDetails.TypeCase.REASON_STRING -> + OcpTransactionService.ErrorDetails.TypeCase.REASON_STRING -> errors.add("Reason: ${error.reasonString.reason}") - TransactionService.ErrorDetails.TypeCase.INVALID_SIGNATURE -> + OcpTransactionService.ErrorDetails.TypeCase.INVALID_SIGNATURE -> errors.add("Action index: ${error.invalidSignature.actionId}") - TransactionService.ErrorDetails.TypeCase.DENIED -> + OcpTransactionService.ErrorDetails.TypeCase.DENIED -> errors.add("Denied: ${error.denied.reason}") else -> Unit } diff --git a/services/opencode/src/main/kotlin/com/getcode/opencode/internal/network/extensions/LocalToProtobuf.kt b/services/opencode/src/main/kotlin/com/getcode/opencode/internal/network/extensions/LocalToProtobuf.kt index 804914184..06b87227a 100644 --- a/services/opencode/src/main/kotlin/com/getcode/opencode/internal/network/extensions/LocalToProtobuf.kt +++ b/services/opencode/src/main/kotlin/com/getcode/opencode/internal/network/extensions/LocalToProtobuf.kt @@ -1,12 +1,12 @@ package com.getcode.opencode.internal.network.extensions import com.codeinc.opencode.gen.common.v1.Model -import com.codeinc.opencode.gen.currency.v1.CurrencyService -import com.codeinc.opencode.gen.messaging.v1.MessagingService +import com.codeinc.opencode.gen.currency.v1.OcpCurrencyService +import com.codeinc.opencode.gen.messaging.v1.OcpMessagingService import com.codeinc.opencode.gen.messaging.v1.requestToGiveBill import com.codeinc.opencode.gen.messaging.v1.requestToGrabBill -import com.codeinc.opencode.gen.transaction.v1.TransactionService -import com.codeinc.opencode.gen.transaction.v1.TransactionService.OpenAccountsMetadata.AccountSet +import com.codeinc.opencode.gen.transaction.v1.OcpTransactionService +import com.codeinc.opencode.gen.transaction.v1.OcpTransactionService.OpenAccountsMetadata.AccountSet import com.getcode.ed25519.Ed25519.KeyPair import com.getcode.opencode.internal.solana.model.SwapId import com.getcode.opencode.model.accounts.AccountType @@ -61,8 +61,8 @@ internal fun Hash.asSolanaBlockHash(): Model.Blockhash { return Model.Blockhash.newBuilder().setValue(this.bytes.toByteString()).build() } -internal fun PublicKey.asMessageId(): MessagingService.MessageId { - return MessagingService.MessageId.newBuilder().setValue(this.byteArray.toByteString()).build() +internal fun PublicKey.asMessageId(): OcpMessagingService.MessageId { + return OcpMessagingService.MessageId.newBuilder().setValue(this.byteArray.toByteString()).build() } internal fun PublicKey.asIntentId(): Model.IntentId { @@ -73,19 +73,19 @@ internal fun SwapId.asSwapId(): Model.SwapId { return Model.SwapId.newBuilder().setValue(this.publicKey.bytes.toByteString()).build() } -internal fun PublicKey.asRendezvousKey(): MessagingService.RendezvousKey { - return MessagingService.RendezvousKey.newBuilder().setValue(this.bytes.toByteString()) +internal fun PublicKey.asRendezvousKey(): OcpMessagingService.RendezvousKey { + return OcpMessagingService.RendezvousKey.newBuilder().setValue(this.bytes.toByteString()) .build() } -internal fun KeyPair.asRendezvousKey(): MessagingService.RendezvousKey { - return MessagingService.RendezvousKey.newBuilder().setValue( +internal fun KeyPair.asRendezvousKey(): OcpMessagingService.RendezvousKey { + return OcpMessagingService.RendezvousKey.newBuilder().setValue( ByteString.copyFrom(publicKeyBytes) ).build() } -internal fun openMessageStreamRequest(rendezvous: KeyPair): MessagingService.OpenMessageStreamRequest { - return MessagingService.OpenMessageStreamRequest.newBuilder() +internal fun openMessageStreamRequest(rendezvous: KeyPair): OcpMessagingService.OpenMessageStreamRequest { + return OcpMessagingService.OpenMessageStreamRequest.newBuilder() .setRendezvousKey(rendezvous.asRendezvousKey()) .apply { setSignature(sign(rendezvous)) } .build() @@ -101,8 +101,8 @@ internal fun clientPongWith(timestampInMillis: Long): Model.ClientPong { internal fun Long.asProtobufTimestamp(): Timestamp = Timestamp.newBuilder().setSeconds(this / 1_000).build() -internal fun ID.asMessageId(): MessagingService.MessageId { - return MessagingService.MessageId.newBuilder().setValue(toByteString()).build() +internal fun ID.asMessageId(): OcpMessagingService.MessageId { + return OcpMessagingService.MessageId.newBuilder().setValue(toByteString()).build() } internal fun ID.asIntentId(): Model.IntentId { @@ -113,13 +113,13 @@ internal fun ID.asSwapId(): Model.SwapId { return Model.SwapId.newBuilder().setValue(toByteString()).build() } -internal fun TransactionMetadata.asProtobufMetadata(): TransactionService.Metadata { - val builder = TransactionService.Metadata.newBuilder() +internal fun TransactionMetadata.asProtobufMetadata(): OcpTransactionService.Metadata { + val builder = OcpTransactionService.Metadata.newBuilder() when (this) { is TransactionMetadata.OpenAccount -> { builder.setOpenAccounts( - TransactionService.OpenAccountsMetadata.newBuilder() + OcpTransactionService.OpenAccountsMetadata.newBuilder() .setMint(mint.asSolanaAccountId()) .setAccountSet( when (type) { @@ -134,11 +134,11 @@ internal fun TransactionMetadata.asProtobufMetadata(): TransactionService.Metada is TransactionMetadata.ReceivePublicPayment -> { builder.setReceivePaymentsPublicly( - TransactionService.ReceivePaymentsPubliclyMetadata.newBuilder() + OcpTransactionService.ReceivePaymentsPubliclyMetadata.newBuilder() .setSource(source.asSolanaAccountId()) .setMint(mint.asSolanaAccountId()) .setQuarks(quarks) - .setIsRemoteSend(isRemoteSend) + .setIsIndirectSend(isIndirect) // exchange data cannot be set on incoming transactions // .setExchangeData(exchangeData.asProtobufExchangeData()) .build() @@ -147,7 +147,7 @@ internal fun TransactionMetadata.asProtobufMetadata(): TransactionService.Metada is TransactionMetadata.SendPublicPayment -> { builder.setSendPublicPayment( - TransactionService.SendPublicPaymentMetadata.newBuilder() + OcpTransactionService.SendPublicPaymentMetadata.newBuilder() .setSource(source.asSolanaAccountId()) .setMint(exchangeData.mint.asSolanaAccountId()) .apply { @@ -161,7 +161,7 @@ internal fun TransactionMetadata.asProtobufMetadata(): TransactionService.Metada setDestinationOwner(this@asProtobufMetadata.destinationOwner.asSolanaAccountId()) } } - .setIsRemoteSend(isRemoteSend) + .setIsIndirectSend(isIndirect) .setIsWithdrawal(isWithdrawal) .build() ) @@ -169,14 +169,14 @@ internal fun TransactionMetadata.asProtobufMetadata(): TransactionService.Metada is TransactionMetadata.PublicDistribution -> { builder.setPublicDistribution( - TransactionService.PublicDistributionMetadata.newBuilder() + OcpTransactionService.PublicDistributionMetadata.newBuilder() .setSource(source.asSolanaAccountId()) .setMint(mint.asSolanaAccountId()) .apply { distributions.forEachIndexed { index, distribution -> addDistributions( index, - TransactionService.PublicDistributionMetadata.Distribution + OcpTransactionService.PublicDistributionMetadata.Distribution .newBuilder() .setQuarks(distribution.amount.quarks) .setDestination(distribution.destination.asSolanaAccountId()) @@ -192,8 +192,8 @@ internal fun TransactionMetadata.asProtobufMetadata(): TransactionService.Metada return builder.build() } -internal fun ExchangeData.WithRate.asProtobufExchangeData(): TransactionService.ExchangeData { - return TransactionService.ExchangeData.newBuilder() +internal fun ExchangeData.WithRate.asProtobufExchangeData(): OcpTransactionService.ExchangeData { + return OcpTransactionService.ExchangeData.newBuilder() .setCurrency(currencyCode.lowercase()) // ensure always lowercase .setExchangeRate(exchangeRate) .setNativeAmount(nativeAmount) @@ -202,8 +202,8 @@ internal fun ExchangeData.WithRate.asProtobufExchangeData(): TransactionService. .build() } -internal fun ExchangeData.Verified.asProtobufExchangeData(): TransactionService.VerifiedExchangeData { - return TransactionService.VerifiedExchangeData.newBuilder() +internal fun ExchangeData.Verified.asProtobufExchangeData(): OcpTransactionService.VerifiedExchangeData { + return OcpTransactionService.VerifiedExchangeData.newBuilder() .setMint(mint.asSolanaAccountId()) .setQuarks(quarks) .setNativeAmount(nativeAmount) @@ -215,36 +215,36 @@ internal fun ExchangeData.Verified.asProtobufExchangeData(): TransactionService. }.build() } -internal fun ExchangeData.WithoutRate.asProtobufExchangeData(): TransactionService.ExchangeDataWithoutRate { - return TransactionService.ExchangeDataWithoutRate.newBuilder() +internal fun ExchangeData.WithoutRate.asProtobufExchangeData(): OcpTransactionService.ExchangeDataWithoutRate { + return OcpTransactionService.ExchangeDataWithoutRate.newBuilder() .setCurrency(currencyCode.lowercase()) // ensure always lowercase .setNativeAmount(nativeAmount) .build() } -internal fun TransferRequest.asProtobufMessage(): MessagingService.Message { +internal fun TransferRequest.asProtobufMessage(): OcpMessagingService.Message { return when (this) { - is GiveRequest -> MessagingService.Message + is GiveRequest -> OcpMessagingService.Message .newBuilder() .setRequestToGiveBill( - MessagingService.RequestToGiveBill + OcpMessagingService.RequestToGiveBill .newBuilder() .setMint(mint.asSolanaAccountId()) .setExchangeData(exchangeData.asProtobufExchangeData()) ).build() - is GrabRequest -> MessagingService.Message + is GrabRequest -> OcpMessagingService.Message .newBuilder() .setRequestToGrabBill( - MessagingService.RequestToGrabBill + OcpMessagingService.RequestToGrabBill .newBuilder() .setRequestorAccount(account.asSolanaAccountId()) ).build() } } -internal fun Message.asProtobufMessage(): MessagingService.Message { - val builder = MessagingService.Message.newBuilder() +internal fun Message.asProtobufMessage(): OcpMessagingService.Message { + val builder = OcpMessagingService.Message.newBuilder() .setId(id.asMessageId()) when (kind) { @@ -266,8 +266,8 @@ internal fun Message.asProtobufMessage(): MessagingService.Message { return builder.build() } -internal fun LocalFiat.asExchangeData(): TransactionService.ExchangeData { - return TransactionService.ExchangeData.newBuilder() +internal fun LocalFiat.asExchangeData(): OcpTransactionService.ExchangeData { + return OcpTransactionService.ExchangeData.newBuilder() .setQuarks(underlyingTokenAmount.quarks) .setCurrency(rate.currency.name.lowercase()) .setExchangeRate(rate.fx) @@ -275,10 +275,10 @@ internal fun LocalFiat.asExchangeData(): TransactionService.ExchangeData { .build() } -internal fun StatefulSwapRequest.currencyCreatorParams(): TransactionService.StatefulSwapRequest.Initiate.ReserveSwapClientParameters.Builder { +internal fun StatefulSwapRequest.currencyCreatorParams(): OcpTransactionService.StatefulSwapRequest.Initiate.ReserveSwapClientParameters.Builder { return when (val details = kind) { is SwapStartKind.Reserve -> { - TransactionService.StatefulSwapRequest.Initiate.ReserveSwapClientParameters.newBuilder() + OcpTransactionService.StatefulSwapRequest.Initiate.ReserveSwapClientParameters.newBuilder() .setId(swapId.asSwapId()) .setFromMint(details.fromMint.asSolanaAccountId()) .setToMint(details.toMint.asSolanaAccountId()) @@ -287,17 +287,17 @@ internal fun StatefulSwapRequest.currencyCreatorParams(): TransactionService.Sta .apply { when (val source = details.fundingSource) { is SwapFundingSource.ExternalWallet -> { - setFundingSource(TransactionService.FundingSource.FUNDING_SOURCE_EXTERNAL_WALLET) + setFundingSource(OcpTransactionService.FundingSource.FUNDING_SOURCE_EXTERNAL_WALLET) setFundingId(source.transactionSignature.base58) } is SwapFundingSource.SubmitIntent -> { - setFundingSource(TransactionService.FundingSource.FUNDING_SOURCE_SUBMIT_INTENT) + setFundingSource(OcpTransactionService.FundingSource.FUNDING_SOURCE_SUBMIT_INTENT) setFundingId(source.id.base58) } is SwapFundingSource.CoinbaseOnramp -> { - setFundingSource(TransactionService.FundingSource.FUNDING_SOURCE_COINBASE_ONRAMP) + setFundingSource(OcpTransactionService.FundingSource.FUNDING_SOURCE_COINBASE_ONRAMP) setFundingId(source.orderId) } @@ -312,73 +312,73 @@ internal fun StatefulSwapRequest.currencyCreatorParams(): TransactionService.Sta } } -internal fun StatefulSwapRequest.stablecoinParams(): TransactionService.StatefulSwapRequest.Initiate.CoinbaseStableSwapperClientParameters.Builder { +internal fun StatefulSwapRequest.stablecoinParams(): OcpTransactionService.StatefulSwapRequest.Initiate.CoinbaseStableSwapperClientParameters.Builder { return when (val details = kind) { is SwapStartKind.Reserve -> { throw IllegalStateException("Reserve should not be used for stable swapper params") } is SwapStartKind.Stablecoin -> { - TransactionService.StatefulSwapRequest.Initiate.CoinbaseStableSwapperClientParameters.newBuilder() + OcpTransactionService.StatefulSwapRequest.Initiate.CoinbaseStableSwapperClientParameters.newBuilder() .setId(swapId.asSwapId()) .setFromMint(details.fromMint.asSolanaAccountId()) .setToMint(details.toMint.asSolanaAccountId()) .setSwapAmount(this@stablecoinParams.swapAmount.underlyingTokenAmount.quarks) .setDestinationOwner(this@stablecoinParams.kind.destinationOwner.asSolanaAccountId()) .setFeeAmount(this@stablecoinParams.feeAmount?.underlyingTokenAmount?.quarks ?: 0) - .setFundingSource(TransactionService.FundingSource.FUNDING_SOURCE_SUBMIT_INTENT) + .setFundingSource(OcpTransactionService.FundingSource.FUNDING_SOURCE_SUBMIT_INTENT) .setFundingId(details.fundingSource.id.base58) } } } -internal fun StatefulSwapRequest.verifiedMetadata(): TransactionService.VerifiedSwapMetadata.Builder { - return TransactionService.VerifiedSwapMetadata.newBuilder() +internal fun StatefulSwapRequest.verifiedMetadata(): OcpTransactionService.VerifiedSwapMetadata.Builder { + return OcpTransactionService.VerifiedSwapMetadata.newBuilder() .apply { when (kind) { is SwapStartKind.Reserve -> setReserve( - TransactionService.VerifiedReserveSwapMetadata.newBuilder() + OcpTransactionService.VerifiedReserveSwapMetadata.newBuilder() .setClientParameters(currencyCreatorParams()) ) is SwapStartKind.Stablecoin -> setStablecoin( - TransactionService.VerifiedCoinbaseStableSwapperSwapMetadata.newBuilder() + OcpTransactionService.VerifiedCoinbaseStableSwapperSwapMetadata.newBuilder() .setClientParameters(stablecoinParams()) ) } } } -internal fun TokenBillCustomizations.asProto(): CurrencyService.BillCustomization { - return CurrencyService.BillCustomization.newBuilder() +internal fun TokenBillCustomizations.asProto(): OcpCurrencyService.BillCustomization { + return OcpCurrencyService.BillCustomization.newBuilder() .apply { when (background) { is BillBackground.Gradient -> addAllColors( background.colors.map { color -> - CurrencyService.Color.newBuilder().setHex(color).build() + OcpCurrencyService.Color.newBuilder().setHex(color).build() } ) is BillBackground.Solid -> addColors( - CurrencyService.Color.newBuilder().setHex(background.colorHex) + OcpCurrencyService.Color.newBuilder().setHex(background.colorHex) ) } }.build() } -internal fun SocialLink.asProto(): CurrencyService.SocialLink { - return CurrencyService.SocialLink.newBuilder() +internal fun SocialLink.asProto(): OcpCurrencyService.SocialLink { + return OcpCurrencyService.SocialLink.newBuilder() .apply { when (this@asProto) { - is SocialLink.Discord -> setDiscord(CurrencyService.SocialLink.Discord.newBuilder().setInviteCode(inviteCode)) - is SocialLink.Telegram -> setTelegram(CurrencyService.SocialLink.Telegram.newBuilder().setUsername(username)) - is SocialLink.Website -> setWebsite(CurrencyService.SocialLink.Website.newBuilder().setUrl(url)) - is SocialLink.X -> setX(CurrencyService.SocialLink.X.newBuilder().setUsername(username)) + is SocialLink.Discord -> setDiscord(OcpCurrencyService.SocialLink.Discord.newBuilder().setInviteCode(inviteCode)) + is SocialLink.Telegram -> setTelegram(OcpCurrencyService.SocialLink.Telegram.newBuilder().setUsername(username)) + is SocialLink.Website -> setWebsite(OcpCurrencyService.SocialLink.Website.newBuilder().setUrl(url)) + is SocialLink.X -> setX(OcpCurrencyService.SocialLink.X.newBuilder().setUsername(username)) } }.build() } -internal fun ModerationAttestation.asProto(): CurrencyService.ModerationAttestation { - return CurrencyService.ModerationAttestation.newBuilder() +internal fun ModerationAttestation.asProto(): OcpCurrencyService.ModerationAttestation { + return OcpCurrencyService.ModerationAttestation.newBuilder() .setRawValue(attestation.toByteString()) .build() } \ No newline at end of file diff --git a/services/opencode/src/main/kotlin/com/getcode/opencode/internal/network/extensions/ProtobufToLocal.kt b/services/opencode/src/main/kotlin/com/getcode/opencode/internal/network/extensions/ProtobufToLocal.kt index 17e40faef..1f25f1a55 100644 --- a/services/opencode/src/main/kotlin/com/getcode/opencode/internal/network/extensions/ProtobufToLocal.kt +++ b/services/opencode/src/main/kotlin/com/getcode/opencode/internal/network/extensions/ProtobufToLocal.kt @@ -1,9 +1,9 @@ package com.getcode.opencode.internal.network.extensions import com.codeinc.opencode.gen.common.v1.Model -import com.codeinc.opencode.gen.currency.v1.CurrencyService -import com.codeinc.opencode.gen.messaging.v1.MessagingService -import com.codeinc.opencode.gen.transaction.v1.TransactionService +import com.codeinc.opencode.gen.currency.v1.OcpCurrencyService +import com.codeinc.opencode.gen.messaging.v1.OcpMessagingService +import com.codeinc.opencode.gen.transaction.v1.OcpTransactionService import com.codeinc.opencode.gen.transaction.v1.clientExchangeDataOrNull import com.codeinc.opencode.gen.transaction.v1.destinationOrNull import com.codeinc.opencode.gen.transaction.v1.launchpadCurrencyReserveStateOrNull @@ -43,17 +43,17 @@ internal fun Model.Blockhash.toPublicKey(): PublicKey = value.toByteArray().toPu internal fun Model.Blockhash.toHash(): Hash = value.toByteArray().toHash() internal fun Model.Signature.toPublicKey(): PublicKey = value.toByteArray().toPublicKey() internal fun Model.Signature.toSignature(): Signature = value.toByteArray().toSignature() -internal fun MessagingService.MessageId.toPublicKey(): PublicKey = value.toByteArray().toPublicKey() -internal fun MessagingService.RendezvousKey.toPublicKey(): PublicKey = +internal fun OcpMessagingService.MessageId.toPublicKey(): PublicKey = value.toByteArray().toPublicKey() +internal fun OcpMessagingService.RendezvousKey.toPublicKey(): PublicKey = value.toByteArray().toPublicKey() -internal fun TransactionService.OpenAccountsMetadata.AccountSet.toAccountType() = when (this) { - TransactionService.OpenAccountsMetadata.AccountSet.USER -> AccountType.Primary - TransactionService.OpenAccountsMetadata.AccountSet.POOL -> AccountType.Pool - TransactionService.OpenAccountsMetadata.AccountSet.UNRECOGNIZED -> AccountType.Unknown +internal fun OcpTransactionService.OpenAccountsMetadata.AccountSet.toAccountType() = when (this) { + OcpTransactionService.OpenAccountsMetadata.AccountSet.USER -> AccountType.Primary + OcpTransactionService.OpenAccountsMetadata.AccountSet.POOL -> AccountType.Pool + OcpTransactionService.OpenAccountsMetadata.AccountSet.UNRECOGNIZED -> AccountType.Unknown } -internal fun TransactionService.ExchangeData.toModel(): ExchangeData.WithRate { +internal fun OcpTransactionService.ExchangeData.toModel(): ExchangeData.WithRate { return ExchangeData.WithRate( currencyCode = this.currency, exchangeRate = this.exchangeRate, @@ -63,14 +63,14 @@ internal fun TransactionService.ExchangeData.toModel(): ExchangeData.WithRate { ) } -internal fun TransactionService.ExchangeDataWithoutRate.toModel(): ExchangeData.WithoutRate { +internal fun OcpTransactionService.ExchangeDataWithoutRate.toModel(): ExchangeData.WithoutRate { return ExchangeData.WithoutRate( currencyCode = this.currency, nativeAmount = this.nativeAmount, ) } -internal fun TransactionService.VerifiedExchangeData.toModel(): ExchangeData.Verified { +internal fun OcpTransactionService.VerifiedExchangeData.toModel(): ExchangeData.Verified { return ExchangeData.Verified( mint = this.mint.toMint(), quarks = this.quarks, @@ -82,44 +82,44 @@ internal fun TransactionService.VerifiedExchangeData.toModel(): ExchangeData.Ver ) } -internal fun MessagingService.RequestToGrabBill.toMessageKind(): MessageKind.RequestToGrabBill { +internal fun OcpMessagingService.RequestToGrabBill.toMessageKind(): MessageKind.RequestToGrabBill { return MessageKind.RequestToGrabBill( requestor = requestorAccount.toPublicKey() ) } -internal fun MessagingService.RequestToGiveBill.toMessageKind(): MessageKind.RequestToGiveBill { +internal fun OcpMessagingService.RequestToGiveBill.toMessageKind(): MessageKind.RequestToGiveBill { return MessageKind.RequestToGiveBill( mint = mint.toPublicKey() ) } -internal fun TransactionService.Metadata.toMetadata(): TransactionMetadata { +internal fun OcpTransactionService.Metadata.toMetadata(): TransactionMetadata { return when (val case = typeCase) { - TransactionService.Metadata.TypeCase.OPEN_ACCOUNTS -> TransactionMetadata.OpenAccount( + OcpTransactionService.Metadata.TypeCase.OPEN_ACCOUNTS -> TransactionMetadata.OpenAccount( type = openAccounts.accountSet.toAccountType(), mint = openAccounts.mint.toMint(), ) - TransactionService.Metadata.TypeCase.SEND_PUBLIC_PAYMENT -> TransactionMetadata.SendPublicPayment( + OcpTransactionService.Metadata.TypeCase.SEND_PUBLIC_PAYMENT -> TransactionMetadata.SendPublicPayment( source = sendPublicPayment.source.toPublicKey(), destination = sendPublicPayment.destination.toPublicKey(), destinationOwner = sendPublicPayment.destinationOrNull?.toPublicKey(), exchangeData = sendPublicPayment.serverExchangeData.toModel(), verifiedExchangeData = sendPublicPayment.clientExchangeDataOrNull?.toModel(), - isRemoteSend = sendPublicPayment.isRemoteSend, + isIndirect = sendPublicPayment.isIndirectSend, isWithdrawal = sendPublicPayment.isWithdrawal, ) - TransactionService.Metadata.TypeCase.RECEIVE_PAYMENTS_PUBLICLY -> TransactionMetadata.ReceivePublicPayment( + OcpTransactionService.Metadata.TypeCase.RECEIVE_PAYMENTS_PUBLICLY -> TransactionMetadata.ReceivePublicPayment( source = receivePaymentsPublicly.source.toPublicKey(), quarks = receivePaymentsPublicly.quarks, - isRemoteSend = receivePaymentsPublicly.isRemoteSend, + isIndirect = receivePaymentsPublicly.isIndirectSend, exchangeData = receivePaymentsPublicly.exchangeData.toModel(), mint = receivePaymentsPublicly.mint.toMint(), ) - TransactionService.Metadata.TypeCase.TYPE_NOT_SET -> TransactionMetadata.Unknown - TransactionService.Metadata.TypeCase.PUBLIC_DISTRIBUTION -> TransactionMetadata.PublicDistribution( + OcpTransactionService.Metadata.TypeCase.TYPE_NOT_SET -> TransactionMetadata.Unknown + OcpTransactionService.Metadata.TypeCase.PUBLIC_DISTRIBUTION -> TransactionMetadata.PublicDistribution( source = publicDistribution.source.toPublicKey(), distributions = publicDistribution.distributionsList.map { distribution -> Distribution( @@ -132,7 +132,7 @@ internal fun TransactionService.Metadata.toMetadata(): TransactionMetadata { } } -internal fun TransactionService.StatefulSwapResponse.ServerParameters.ReserveExistingCurrencyServerParameters.toProps(): StatefulSwapResponseServerParameters { +internal fun OcpTransactionService.StatefulSwapResponse.ServerParameters.ReserveExistingCurrencyServerParameters.toProps(): StatefulSwapResponseServerParameters { return StatefulSwapResponseServerParameters.ExistingCurrency( payer = payer.toPublicKey(), nonce = nonce.toPublicKey(), @@ -150,7 +150,7 @@ internal fun TransactionService.StatefulSwapResponse.ServerParameters.ReserveExi ) } -internal fun TransactionService.StatefulSwapResponse.ServerParameters.ReserveNewCurrencyServerParameter.toProps(): StatefulSwapResponseServerParameters { +internal fun OcpTransactionService.StatefulSwapResponse.ServerParameters.ReserveNewCurrencyServerParameter.toProps(): StatefulSwapResponseServerParameters { return StatefulSwapResponseServerParameters.NewCurrency( payer = payer.toPublicKey(), nonce = nonce.toPublicKey(), @@ -173,7 +173,7 @@ internal fun TransactionService.StatefulSwapResponse.ServerParameters.ReserveNew ) } -internal fun TransactionService.StatefulSwapResponse.ServerParameters.CoinbaseStableSwapperServerParameter.toProps(): StatefulSwapResponseServerParameters { +internal fun OcpTransactionService.StatefulSwapResponse.ServerParameters.CoinbaseStableSwapperServerParameter.toProps(): StatefulSwapResponseServerParameters { return StatefulSwapResponseServerParameters.Stablecoin( payer = payer.toPublicKey(), nonce = nonce.toPublicKey(), @@ -191,7 +191,7 @@ internal fun TransactionService.StatefulSwapResponse.ServerParameters.CoinbaseSt ) } -internal fun TransactionService.StatefulSwapRequest.Initiate.ReserveSwapClientParameters.toMetadata(): VerifiedSwapMetadata.Reserve { +internal fun OcpTransactionService.StatefulSwapRequest.Initiate.ReserveSwapClientParameters.toMetadata(): VerifiedSwapMetadata.Reserve { return VerifiedSwapMetadata.Reserve( id = id.toSwapId(), fromMint = fromMint.toPublicKey(), @@ -199,17 +199,17 @@ internal fun TransactionService.StatefulSwapRequest.Initiate.ReserveSwapClientPa swapAmount = Fiat(quarks = swapAmount), feeAmount = Fiat(quarks = feeAmount), fundingSource = when (fundingSource) { - TransactionService.FundingSource.FUNDING_SOURCE_UNKNOWN -> SwapFundingSource.Unknown - TransactionService.FundingSource.FUNDING_SOURCE_SUBMIT_INTENT -> SwapFundingSource.SubmitIntent(PublicKey(fundingId).bytes) - TransactionService.FundingSource.FUNDING_SOURCE_EXTERNAL_WALLET -> SwapFundingSource.ExternalWallet( + OcpTransactionService.FundingSource.FUNDING_SOURCE_UNKNOWN -> SwapFundingSource.Unknown + OcpTransactionService.FundingSource.FUNDING_SOURCE_SUBMIT_INTENT -> SwapFundingSource.SubmitIntent(PublicKey(fundingId).bytes) + OcpTransactionService.FundingSource.FUNDING_SOURCE_EXTERNAL_WALLET -> SwapFundingSource.ExternalWallet( fundingId.toByteArray().toList()) - TransactionService.FundingSource.FUNDING_SOURCE_COINBASE_ONRAMP -> SwapFundingSource.CoinbaseOnramp(fundingId) - TransactionService.FundingSource.UNRECOGNIZED -> SwapFundingSource.Unknown + OcpTransactionService.FundingSource.FUNDING_SOURCE_COINBASE_ONRAMP -> SwapFundingSource.CoinbaseOnramp(fundingId) + OcpTransactionService.FundingSource.UNRECOGNIZED -> SwapFundingSource.Unknown } ) } -internal fun TransactionService.StatefulSwapRequest.Initiate.CoinbaseStableSwapperClientParameters.toMetadata(): VerifiedSwapMetadata.StableCoin { +internal fun OcpTransactionService.StatefulSwapRequest.Initiate.CoinbaseStableSwapperClientParameters.toMetadata(): VerifiedSwapMetadata.StableCoin { return VerifiedSwapMetadata.StableCoin( id = id.toSwapId(), fromMint = fromMint.toPublicKey(), @@ -217,25 +217,25 @@ internal fun TransactionService.StatefulSwapRequest.Initiate.CoinbaseStableSwapp swapAmount = Fiat(quarks = swapAmount), feeAmount = Fiat(quarks = feeAmount), fundingSource = when (fundingSource) { - TransactionService.FundingSource.FUNDING_SOURCE_UNKNOWN -> SwapFundingSource.Unknown - TransactionService.FundingSource.FUNDING_SOURCE_SUBMIT_INTENT -> SwapFundingSource.SubmitIntent(PublicKey(fundingId).bytes) - TransactionService.FundingSource.FUNDING_SOURCE_EXTERNAL_WALLET -> SwapFundingSource.ExternalWallet( + OcpTransactionService.FundingSource.FUNDING_SOURCE_UNKNOWN -> SwapFundingSource.Unknown + OcpTransactionService.FundingSource.FUNDING_SOURCE_SUBMIT_INTENT -> SwapFundingSource.SubmitIntent(PublicKey(fundingId).bytes) + OcpTransactionService.FundingSource.FUNDING_SOURCE_EXTERNAL_WALLET -> SwapFundingSource.ExternalWallet( fundingId.toByteArray().toList()) - TransactionService.FundingSource.FUNDING_SOURCE_COINBASE_ONRAMP -> SwapFundingSource.CoinbaseOnramp(fundingId) - TransactionService.FundingSource.UNRECOGNIZED -> SwapFundingSource.Unknown + OcpTransactionService.FundingSource.FUNDING_SOURCE_COINBASE_ONRAMP -> SwapFundingSource.CoinbaseOnramp(fundingId) + OcpTransactionService.FundingSource.UNRECOGNIZED -> SwapFundingSource.Unknown }, destinationOwner = destinationOwner.toPublicKey(), ) } -internal fun TransactionService.StatefulSwapResponse.Success.toCode(): SwapSuccessCode? { +internal fun OcpTransactionService.StatefulSwapResponse.Success.toCode(): SwapSuccessCode? { return when (this.code) { - TransactionService.StatefulSwapResponse.Success.Code.OK -> SwapSuccessCode.Ok - TransactionService.StatefulSwapResponse.Success.Code.UNRECOGNIZED -> null + OcpTransactionService.StatefulSwapResponse.Success.Code.OK -> SwapSuccessCode.Ok + OcpTransactionService.StatefulSwapResponse.Success.Code.UNRECOGNIZED -> null } } -internal fun TransactionService.StatelessSwapResponse.ServerParameters.CoinbaseStableSwapperServerParameter.toProps(): StatelessSwapServerParameters { +internal fun OcpTransactionService.StatelessSwapResponse.ServerParameters.CoinbaseStableSwapperServerParameter.toProps(): StatelessSwapServerParameters { return StatelessSwapServerParameters( payer = payer.toPublicKey(), blockhash = blockhash.toHash(), @@ -251,15 +251,15 @@ internal fun TransactionService.StatelessSwapResponse.ServerParameters.CoinbaseS ) } -internal fun TransactionService.StatelessSwapResponse.Success.toCode(): StatelessSwapSuccessCode? { +internal fun OcpTransactionService.StatelessSwapResponse.Success.toCode(): StatelessSwapSuccessCode? { return when (this.code) { - TransactionService.StatelessSwapResponse.Success.Code.SUBMITTED -> StatelessSwapSuccessCode.Submitted - TransactionService.StatelessSwapResponse.Success.Code.FINALIZED -> StatelessSwapSuccessCode.Finalized - TransactionService.StatelessSwapResponse.Success.Code.UNRECOGNIZED -> null + OcpTransactionService.StatelessSwapResponse.Success.Code.SUBMITTED -> StatelessSwapSuccessCode.Submitted + OcpTransactionService.StatelessSwapResponse.Success.Code.FINALIZED -> StatelessSwapSuccessCode.Finalized + OcpTransactionService.StatelessSwapResponse.Success.Code.UNRECOGNIZED -> null } } -internal fun CurrencyService.VmMetadata.toMetadata(): VmMetadata { +internal fun OcpCurrencyService.VmMetadata.toMetadata(): VmMetadata { return VmMetadata( vm = vm.toPublicKey(), authority = authority.toPublicKey(), @@ -267,7 +267,7 @@ internal fun CurrencyService.VmMetadata.toMetadata(): VmMetadata { ) } -internal fun CurrencyService.LaunchpadMetadata.toMetadata(): LaunchpadMetadata { +internal fun OcpCurrencyService.LaunchpadMetadata.toMetadata(): LaunchpadMetadata { return LaunchpadMetadata( currencyConfig = currencyConfig.toPublicKey(), liquidityPool = liquidityPool.toPublicKey(), diff --git a/services/opencode/src/main/kotlin/com/getcode/opencode/internal/network/services/AccountService.kt b/services/opencode/src/main/kotlin/com/getcode/opencode/internal/network/services/AccountService.kt index b1acefdd1..4e6348afb 100644 --- a/services/opencode/src/main/kotlin/com/getcode/opencode/internal/network/services/AccountService.kt +++ b/services/opencode/src/main/kotlin/com/getcode/opencode/internal/network/services/AccountService.kt @@ -1,6 +1,6 @@ package com.getcode.opencode.internal.network.services -import com.codeinc.opencode.gen.account.v1.AccountService +import com.codeinc.opencode.gen.account.v1.OcpAccountService import com.getcode.ed25519.Ed25519.KeyPair import com.getcode.opencode.internal.network.api.AccountApi import com.getcode.opencode.internal.network.extensions.foldWithSuppression @@ -22,12 +22,12 @@ internal class AccountService @Inject constructor( }.fold( onSuccess = { response -> when (response.result) { - AccountService.IsOcpAccountResponse.Result.OK -> Result.success(true) - AccountService.IsOcpAccountResponse.Result.NOT_FOUND -> Result.failure( + OcpAccountService.IsOcpAccountResponse.Result.OK -> Result.success(true) + OcpAccountService.IsOcpAccountResponse.Result.NOT_FOUND -> Result.failure( CodeAccountCheckError.NotFound()) - AccountService.IsOcpAccountResponse.Result.UNLOCKED_TIMELOCK_ACCOUNT -> Result.failure( + OcpAccountService.IsOcpAccountResponse.Result.UNLOCKED_TIMELOCK_ACCOUNT -> Result.failure( CodeAccountCheckError.UnlockedTimelockAccount()) - AccountService.IsOcpAccountResponse.Result.UNRECOGNIZED -> Result.failure( + OcpAccountService.IsOcpAccountResponse.Result.UNRECOGNIZED -> Result.failure( CodeAccountCheckError.Unrecognized()) else -> Result.failure(CodeAccountCheckError.Other()) } @@ -48,7 +48,7 @@ internal class AccountService @Inject constructor( }.foldWithSuppression( onSuccess = { response -> when (response.result) { - AccountService.GetTokenAccountInfosResponse.Result.OK -> { + OcpAccountService.GetTokenAccountInfosResponse.Result.OK -> { val container = mutableMapOf() for ((base58, info) in response.tokenAccountInfosMap) { @@ -66,9 +66,9 @@ internal class AccountService @Inject constructor( ) ) } - AccountService.GetTokenAccountInfosResponse.Result.NOT_FOUND -> Result.failure( + OcpAccountService.GetTokenAccountInfosResponse.Result.NOT_FOUND -> Result.failure( GetAccountsError.NotFound()) - AccountService.GetTokenAccountInfosResponse.Result.UNRECOGNIZED -> Result.failure( + OcpAccountService.GetTokenAccountInfosResponse.Result.UNRECOGNIZED -> Result.failure( GetAccountsError.Unrecognized()) else -> Result.failure(GetAccountsError.Other()) } diff --git a/services/opencode/src/main/kotlin/com/getcode/opencode/internal/network/services/CurrencyService.kt b/services/opencode/src/main/kotlin/com/getcode/opencode/internal/network/services/CurrencyService.kt index 0e3094273..81287849a 100644 --- a/services/opencode/src/main/kotlin/com/getcode/opencode/internal/network/services/CurrencyService.kt +++ b/services/opencode/src/main/kotlin/com/getcode/opencode/internal/network/services/CurrencyService.kt @@ -1,14 +1,11 @@ package com.getcode.opencode.internal.network.services -import com.codeinc.opencode.gen.currency.v1.CurrencyService import com.getcode.ed25519.Ed25519 import com.getcode.opencode.internal.domain.mapping.HistoricalMintDataMapper import com.getcode.opencode.internal.domain.mapping.LiveMintDataMapper import com.getcode.opencode.internal.domain.mapping.MintMapper import com.getcode.opencode.internal.manager.VerifiedProtoManager -import com.getcode.opencode.model.ui.DiscoverCategory -import com.getcode.opencode.model.financial.LiveMintDataResponse -import com.getcode.opencode.model.ui.WindowedRange +import com.codeinc.opencode.gen.currency.v1.OcpCurrencyService import com.getcode.opencode.internal.network.api.CurrencyApi import com.getcode.opencode.internal.network.extensions.foldWithSuppression import com.getcode.opencode.internal.network.extensions.toMint @@ -16,7 +13,6 @@ import com.getcode.opencode.internal.network.streamers.LiveMintDataStreamer import com.getcode.opencode.internal.network.streamers.ManagedMintStream import com.getcode.opencode.model.core.errors.CheckTokenAvailabilityError import com.getcode.opencode.model.core.errors.DiscoverTokensError -import com.getcode.opencode.model.core.errors.GetAccountsError import com.getcode.opencode.model.core.errors.GetHistoricalMintDataError import com.getcode.opencode.model.core.errors.GetMintsError import com.getcode.opencode.model.core.errors.LaunchTokenError @@ -25,11 +21,12 @@ import com.getcode.opencode.model.core.errors.UpdateIconError import com.getcode.opencode.model.core.errors.UpdateMetadataError import com.getcode.opencode.model.financial.CurrencyCode import com.getcode.opencode.model.financial.HistoricalMintData +import com.getcode.opencode.model.financial.LiveMintDataResponse import com.getcode.opencode.model.financial.MintMetadata import com.getcode.opencode.model.financial.TokenCreateRequest import com.getcode.opencode.model.financial.TokenUpdateRequest -import com.getcode.opencode.model.moderation.ModerationAttestation -import com.getcode.opencode.model.ui.TokenBillCustomizations +import com.getcode.opencode.model.ui.DiscoverCategory +import com.getcode.opencode.model.ui.WindowedRange import com.getcode.opencode.utils.toValidationOrElse import com.getcode.solana.keys.Mint import com.getcode.solana.keys.PublicKey @@ -51,14 +48,14 @@ internal class CurrencyService @Inject constructor( }.foldWithSuppression( onSuccess = { response -> when (response.result) { - CurrencyService.GetMintsResponse.Result.OK -> { + OcpCurrencyService.GetMintsResponse.Result.OK -> { val mints = response.metadataByAddressMap.values.toList() .map { mintMapper.map(it) } Result.success(mints) } - CurrencyService.GetMintsResponse.Result.NOT_FOUND -> Result.failure(GetMintsError.NotFound()) - CurrencyService.GetMintsResponse.Result.UNRECOGNIZED -> Result.failure(GetMintsError.Unrecognized()) + OcpCurrencyService.GetMintsResponse.Result.NOT_FOUND -> Result.failure(GetMintsError.NotFound()) + OcpCurrencyService.GetMintsResponse.Result.UNRECOGNIZED -> Result.failure(GetMintsError.Unrecognized()) else -> Result.failure(GetMintsError.Other()) } }, @@ -82,13 +79,13 @@ internal class CurrencyService @Inject constructor( }.foldWithSuppression( onSuccess = { response -> when (val result = response.result) { - CurrencyService.GetHistoricalMintDataResponse.Result.OK -> { + OcpCurrencyService.GetHistoricalMintDataResponse.Result.OK -> { val data = response.dataList.map { historicalMintDataMapper.map(it) } Result.success(data) } - CurrencyService.GetHistoricalMintDataResponse.Result.NOT_FOUND -> Result.failure(GetHistoricalMintDataError.NotFound()) - CurrencyService.GetHistoricalMintDataResponse.Result.MISSING_DATA -> Result.failure(GetHistoricalMintDataError.MissingData()) - CurrencyService.GetHistoricalMintDataResponse.Result.UNRECOGNIZED -> Result.failure(GetHistoricalMintDataError.Unrecognized()) + OcpCurrencyService.GetHistoricalMintDataResponse.Result.NOT_FOUND -> Result.failure(GetHistoricalMintDataError.NotFound()) + OcpCurrencyService.GetHistoricalMintDataResponse.Result.MISSING_DATA -> Result.failure(GetHistoricalMintDataError.MissingData()) + OcpCurrencyService.GetHistoricalMintDataResponse.Result.UNRECOGNIZED -> Result.failure(GetHistoricalMintDataError.Unrecognized()) else -> Result.failure(GetHistoricalMintDataError.Other()) } @@ -109,9 +106,9 @@ internal class CurrencyService @Inject constructor( return streamer.stream(scope = scope, mints = mints, tag = tag) { update -> // save protos for later use when (update.typeCase) { - CurrencyService.StreamLiveMintDataResponse.LiveData.TypeCase.CORE_MINT_FIAT_EXCHANGE_RATES -> verifiedStateManager.saveRates(update.coreMintFiatExchangeRates.exchangeRatesList) - CurrencyService.StreamLiveMintDataResponse.LiveData.TypeCase.LAUNCHPAD_CURRENCY_RESERVE_STATES -> verifiedStateManager.saveReserveStates(update.launchpadCurrencyReserveStates.reserveStatesList) - CurrencyService.StreamLiveMintDataResponse.LiveData.TypeCase.TYPE_NOT_SET -> Unit + OcpCurrencyService.StreamLiveMintDataResponse.LiveData.TypeCase.CORE_MINT_FIAT_EXCHANGE_RATES -> verifiedStateManager.saveRates(update.coreMintFiatExchangeRates.exchangeRatesList) + OcpCurrencyService.StreamLiveMintDataResponse.LiveData.TypeCase.LAUNCHPAD_CURRENCY_RESERVE_STATES -> verifiedStateManager.saveReserveStates(update.launchpadCurrencyReserveStates.reserveStatesList) + OcpCurrencyService.StreamLiveMintDataResponse.LiveData.TypeCase.TYPE_NOT_SET -> Unit } // map to domain models for use throughout app (above server) @@ -128,8 +125,8 @@ internal class CurrencyService @Inject constructor( }.foldWithSuppression( onSuccess = { response -> when (response.result) { - CurrencyService.CheckAvailabilityResponse.Result.OK -> Result.success(response.isAvailable) - CurrencyService.CheckAvailabilityResponse.Result.UNRECOGNIZED -> Result.failure(CheckTokenAvailabilityError.Unrecognized()) + OcpCurrencyService.CheckAvailabilityResponse.Result.OK -> Result.success(response.isAvailable) + OcpCurrencyService.CheckAvailabilityResponse.Result.UNRECOGNIZED -> Result.failure(CheckTokenAvailabilityError.Unrecognized()) } }, onFailure = { cause -> @@ -147,11 +144,11 @@ internal class CurrencyService @Inject constructor( }.foldWithSuppression( onSuccess = { response -> when (response.result) { - CurrencyService.LaunchResponse.Result.OK -> Result.success(response.mint.toMint()) - CurrencyService.LaunchResponse.Result.DENIED -> Result.failure(LaunchTokenError.Denied()) - CurrencyService.LaunchResponse.Result.NAME_EXISTS -> Result.failure(LaunchTokenError.Exists()) - CurrencyService.LaunchResponse.Result.INVALID_ICON -> Result.failure(LaunchTokenError.InvalidIcon()) - CurrencyService.LaunchResponse.Result.UNRECOGNIZED -> Result.failure(LaunchTokenError.Unrecognized()) + OcpCurrencyService.LaunchResponse.Result.OK -> Result.success(response.mint.toMint()) + OcpCurrencyService.LaunchResponse.Result.DENIED -> Result.failure(LaunchTokenError.Denied()) + OcpCurrencyService.LaunchResponse.Result.NAME_EXISTS -> Result.failure(LaunchTokenError.Exists()) + OcpCurrencyService.LaunchResponse.Result.INVALID_ICON -> Result.failure(LaunchTokenError.InvalidIcon()) + OcpCurrencyService.LaunchResponse.Result.UNRECOGNIZED -> Result.failure(LaunchTokenError.Unrecognized()) } }, onFailure = { cause -> @@ -169,11 +166,11 @@ internal class CurrencyService @Inject constructor( }.foldWithSuppression( onSuccess = { response -> when (response.result) { - CurrencyService.UpdateIconResponse.Result.OK -> Result.success(Unit) - CurrencyService.UpdateIconResponse.Result.NOT_FOUND -> Result.failure(UpdateIconError.NotFound()) - CurrencyService.UpdateIconResponse.Result.DENIED -> Result.failure(UpdateIconError.Denied()) - CurrencyService.UpdateIconResponse.Result.INVALID_ICON -> Result.failure(UpdateIconError.InvalidIcon()) - CurrencyService.UpdateIconResponse.Result.UNRECOGNIZED -> Result.failure(UpdateIconError.Unrecognized()) + OcpCurrencyService.UpdateIconResponse.Result.OK -> Result.success(Unit) + OcpCurrencyService.UpdateIconResponse.Result.NOT_FOUND -> Result.failure(UpdateIconError.NotFound()) + OcpCurrencyService.UpdateIconResponse.Result.DENIED -> Result.failure(UpdateIconError.Denied()) + OcpCurrencyService.UpdateIconResponse.Result.INVALID_ICON -> Result.failure(UpdateIconError.InvalidIcon()) + OcpCurrencyService.UpdateIconResponse.Result.UNRECOGNIZED -> Result.failure(UpdateIconError.Unrecognized()) } }, onFailure = { cause -> @@ -191,10 +188,10 @@ internal class CurrencyService @Inject constructor( }.foldWithSuppression( onSuccess = { response -> when (response.result) { - CurrencyService.UpdateMetadataResponse.Result.OK -> Result.success(Unit) - CurrencyService.UpdateMetadataResponse.Result.NOT_FOUND -> Result.failure(UpdateMetadataError.NotFound()) - CurrencyService.UpdateMetadataResponse.Result.DENIED -> Result.failure(UpdateMetadataError.Denied()) - CurrencyService.UpdateMetadataResponse.Result.UNRECOGNIZED -> Result.failure(UpdateMetadataError.Unrecognized()) + OcpCurrencyService.UpdateMetadataResponse.Result.OK -> Result.success(Unit) + OcpCurrencyService.UpdateMetadataResponse.Result.NOT_FOUND -> Result.failure(UpdateMetadataError.NotFound()) + OcpCurrencyService.UpdateMetadataResponse.Result.DENIED -> Result.failure(UpdateMetadataError.Denied()) + OcpCurrencyService.UpdateMetadataResponse.Result.UNRECOGNIZED -> Result.failure(UpdateMetadataError.Unrecognized()) } }, onFailure = { cause -> @@ -211,12 +208,12 @@ internal class CurrencyService @Inject constructor( }.foldWithSuppression( onSuccess = { response -> when (response.result) { - CurrencyService.DiscoverResponse.Result.OK -> { + OcpCurrencyService.DiscoverResponse.Result.OK -> { val mints = response.mintsList.map(mintMapper::map) Result.success(mints) } - CurrencyService.DiscoverResponse.Result.NOT_FOUND -> Result.failure(DiscoverTokensError.NotFound()) - CurrencyService.DiscoverResponse.Result.UNRECOGNIZED -> Result.failure(DiscoverTokensError.Unrecognized()) + OcpCurrencyService.DiscoverResponse.Result.NOT_FOUND -> Result.failure(DiscoverTokensError.NotFound()) + OcpCurrencyService.DiscoverResponse.Result.UNRECOGNIZED -> Result.failure(DiscoverTokensError.Unrecognized()) } }, onFailure = { cause -> diff --git a/services/opencode/src/main/kotlin/com/getcode/opencode/internal/network/services/MessagingService.kt b/services/opencode/src/main/kotlin/com/getcode/opencode/internal/network/services/MessagingService.kt index 8dbd791db..723401630 100644 --- a/services/opencode/src/main/kotlin/com/getcode/opencode/internal/network/services/MessagingService.kt +++ b/services/opencode/src/main/kotlin/com/getcode/opencode/internal/network/services/MessagingService.kt @@ -1,9 +1,5 @@ package com.getcode.opencode.internal.network.services -import androidx.lifecycle.DefaultLifecycleObserver -import androidx.lifecycle.LifecycleOwner -import androidx.lifecycle.ProcessLifecycleOwner -import com.codeinc.opencode.gen.messaging.v1.MessagingService import com.getcode.ed25519.Ed25519.KeyPair import com.getcode.opencode.internal.bidi.BidirectionalStreamReference import com.getcode.opencode.internal.bidi.openBidirectionalStreamForResult @@ -13,7 +9,6 @@ import com.getcode.opencode.internal.network.extensions.foldWithSuppression import com.getcode.opencode.internal.network.extensions.openMessageStreamRequest import com.getcode.opencode.internal.network.extensions.toPublicKey import com.getcode.opencode.model.core.errors.AckMessagesError -import com.getcode.opencode.model.core.errors.DiscoverTokensError import com.getcode.opencode.model.core.errors.PollMessagesError import com.getcode.opencode.model.core.errors.SendMessageError import com.getcode.opencode.utils.toValidationOrElse @@ -23,9 +18,9 @@ import com.getcode.utils.trace import kotlinx.coroutines.CoroutineScope import kotlinx.coroutines.launch import javax.inject.Inject -import com.codeinc.opencode.gen.messaging.v1.MessagingService as RpcMessagingService +import com.codeinc.opencode.gen.messaging.v1.OcpMessagingService -typealias OcpMessageStreamReference = BidirectionalStreamReference +typealias OcpMessageStreamReference = BidirectionalStreamReference internal class MessagingService @Inject constructor( private val api: MessagingApi, @@ -33,8 +28,8 @@ internal class MessagingService @Inject constructor( fun openMessageStreamWithKeepAlive( scope: CoroutineScope, rendezvous: KeyPair, - messageFilter: (List) -> Boolean = { true }, - onEvent: (Result>) -> Unit, + messageFilter: (List) -> Boolean = { true }, + onEvent: (Result>) -> Unit, ): OcpMessageStreamReference { trace("Message Opening stream.") val streamReference = OcpMessageStreamReference(scope, "messaging") @@ -65,14 +60,14 @@ internal class MessagingService @Inject constructor( scope: CoroutineScope, rendezvous: KeyPair, streamRef: OcpMessageStreamReference, - messageFilter: (List) -> Boolean, - onEvent: (Result>) -> Unit + messageFilter: (List) -> Boolean, + onEvent: (Result>) -> Unit ) { openBidirectionalStreamForResult( streamRef = streamRef, apiCall = api::openMessageStreamWithKeepAlive, initialRequest = { - MessagingService.OpenMessageStreamWithKeepAliveRequest.newBuilder() + OcpMessagingService.OpenMessageStreamWithKeepAliveRequest.newBuilder() .setRequest(openMessageStreamRequest(rendezvous)) .build() }, @@ -85,16 +80,16 @@ internal class MessagingService @Inject constructor( }, responseHandler = { response, onResult, requestChannel -> when (response.responseOrPingCase) { - MessagingService.OpenMessageStreamWithKeepAliveResponse.ResponseOrPingCase.RESPONSE -> { + OcpMessagingService.OpenMessageStreamWithKeepAliveResponse.ResponseOrPingCase.RESPONSE -> { val messages = response.response.messagesList if (messageFilter(messages)) { onResult(Result.success(messages)) } } - MessagingService.OpenMessageStreamWithKeepAliveResponse.ResponseOrPingCase.PING -> { + OcpMessagingService.OpenMessageStreamWithKeepAliveResponse.ResponseOrPingCase.PING -> { val request = - MessagingService.OpenMessageStreamWithKeepAliveRequest.newBuilder() + OcpMessagingService.OpenMessageStreamWithKeepAliveRequest.newBuilder() .setPong(clientPongWith(System.currentTimeMillis())) .build() @@ -105,7 +100,7 @@ internal class MessagingService @Inject constructor( ) } - MessagingService.OpenMessageStreamWithKeepAliveResponse.ResponseOrPingCase.RESPONSEORPING_NOT_SET -> { + OcpMessagingService.OpenMessageStreamWithKeepAliveResponse.ResponseOrPingCase.RESPONSEORPING_NOT_SET -> { trace( message = "Message Stream Server sent empty message. This is unexpected.", type = TraceType.Error, @@ -127,7 +122,7 @@ internal class MessagingService @Inject constructor( suspend fun pollMessages( rendezvous: KeyPair, - ): Result> { + ): Result> { trace("Message polling.") return runCatching { api.pollMessages(rendezvous) } .foldWithSuppression( @@ -142,14 +137,14 @@ internal class MessagingService @Inject constructor( suspend fun ackMessages( rendezvous: KeyPair, - messageIds: List = emptyList(), + messageIds: List = emptyList(), ): Result { return runCatching { api.ackMessages(rendezvous, messageIds) } .foldWithSuppression( onSuccess = { response -> when (response.result) { - RpcMessagingService.AckMesssagesResponse.Result.OK -> Result.success(Unit) - RpcMessagingService.AckMesssagesResponse.Result.UNRECOGNIZED -> { + OcpMessagingService.AckMesssagesResponse.Result.OK -> Result.success(Unit) + OcpMessagingService.AckMesssagesResponse.Result.UNRECOGNIZED -> { Result.failure(AckMessagesError.Unrecognized()) } @@ -164,21 +159,21 @@ internal class MessagingService @Inject constructor( suspend fun sendMessage( rendezvous: KeyPair, - message: RpcMessagingService.Message.Builder, + message: OcpMessagingService.Message.Builder, ): Result { return runCatching { api.sendMessage(rendezvous = rendezvous, message = message) } .foldWithSuppression( onSuccess = { response -> when (response.result) { - RpcMessagingService.SendMessageResponse.Result.OK -> { + OcpMessagingService.SendMessageResponse.Result.OK -> { Result.success(response.messageId.toPublicKey()) } - RpcMessagingService.SendMessageResponse.Result.UNRECOGNIZED -> { + OcpMessagingService.SendMessageResponse.Result.UNRECOGNIZED -> { Result.failure(SendMessageError.Unrecognized()) } - RpcMessagingService.SendMessageResponse.Result.NO_ACTIVE_STREAM -> { + OcpMessagingService.SendMessageResponse.Result.NO_ACTIVE_STREAM -> { Result.failure(SendMessageError.NoActiveStream()) } diff --git a/services/opencode/src/main/kotlin/com/getcode/opencode/internal/network/services/SwapService.kt b/services/opencode/src/main/kotlin/com/getcode/opencode/internal/network/services/SwapService.kt index 16edb06a1..da68c8683 100644 --- a/services/opencode/src/main/kotlin/com/getcode/opencode/internal/network/services/SwapService.kt +++ b/services/opencode/src/main/kotlin/com/getcode/opencode/internal/network/services/SwapService.kt @@ -1,14 +1,13 @@ package com.getcode.opencode.internal.network.services -import com.codeinc.opencode.gen.transaction.v1.TransactionService import com.getcode.ed25519.Ed25519.KeyPair import com.getcode.opencode.internal.domain.mapping.SwapMetadataMapper +import com.codeinc.opencode.gen.transaction.v1.OcpTransactionService import com.getcode.opencode.internal.network.api.TransactionApi import com.getcode.opencode.internal.network.extensions.foldWithSuppression import com.getcode.opencode.internal.solana.model.SwapId import com.getcode.opencode.model.core.errors.GetPendingSwapsError import com.getcode.opencode.model.core.errors.GetSwapError -import com.getcode.opencode.model.core.errors.SendMessageError import com.getcode.opencode.model.transactions.Swap import com.getcode.opencode.utils.toValidationOrElse import javax.inject.Inject @@ -25,8 +24,8 @@ internal class SwapService @Inject constructor( api.getSwap(swapId, owner) }.foldWithSuppression( onSuccess = { response -> - when (response.result) { - TransactionService.GetSwapResponse.Result.OK -> { + when (val result = response.result) { + OcpTransactionService.GetSwapResponse.Result.OK -> { val swap = swapMetadataMapper.map(response.swap) if (swap == null) { Result.failure(GetSwapError.Unrecognized()) @@ -34,9 +33,9 @@ internal class SwapService @Inject constructor( Result.success(swap) } } - TransactionService.GetSwapResponse.Result.NOT_FOUND -> Result.failure(GetSwapError.NotFound()) - TransactionService.GetSwapResponse.Result.DENIED -> Result.failure(GetSwapError.Denied()) - TransactionService.GetSwapResponse.Result.UNRECOGNIZED -> Result.failure(GetSwapError.Unrecognized()) + OcpTransactionService.GetSwapResponse.Result.NOT_FOUND -> Result.failure(GetSwapError.NotFound()) + OcpTransactionService.GetSwapResponse.Result.DENIED -> Result.failure(GetSwapError.Denied()) + OcpTransactionService.GetSwapResponse.Result.UNRECOGNIZED -> Result.failure(GetSwapError.Unrecognized()) } }, onFailure = { cause -> @@ -51,12 +50,12 @@ internal class SwapService @Inject constructor( api.getPendingSwaps(owner) }.foldWithSuppression( onSuccess = { response -> - when (response.result) { - TransactionService.GetPendingSwapsResponse.Result.OK -> { + when (val result = response.result) { + OcpTransactionService.GetPendingSwapsResponse.Result.OK -> { Result.success(response.swapsList.mapNotNull { value -> swapMetadataMapper.map(value) }) } - TransactionService.GetPendingSwapsResponse.Result.NOT_FOUND -> Result.failure(GetPendingSwapsError.NotFound()) - TransactionService.GetPendingSwapsResponse.Result.UNRECOGNIZED -> Result.failure(GetPendingSwapsError.Unrecognized()) + OcpTransactionService.GetPendingSwapsResponse.Result.NOT_FOUND -> Result.failure(GetPendingSwapsError.NotFound()) + OcpTransactionService.GetPendingSwapsResponse.Result.UNRECOGNIZED -> Result.failure(GetPendingSwapsError.Unrecognized()) } }, onFailure = { cause -> diff --git a/services/opencode/src/main/kotlin/com/getcode/opencode/internal/network/services/TransactionService.kt b/services/opencode/src/main/kotlin/com/getcode/opencode/internal/network/services/TransactionService.kt index 02f1e9da6..1fe087f37 100644 --- a/services/opencode/src/main/kotlin/com/getcode/opencode/internal/network/services/TransactionService.kt +++ b/services/opencode/src/main/kotlin/com/getcode/opencode/internal/network/services/TransactionService.kt @@ -1,6 +1,6 @@ package com.getcode.opencode.internal.network.services -import com.codeinc.opencode.gen.transaction.v1.TransactionService +import com.codeinc.opencode.gen.transaction.v1.OcpTransactionService import com.codeinc.opencode.gen.transaction.v1.feeAmountOrNull import com.getcode.ed25519.Ed25519 import com.getcode.ed25519.Ed25519.KeyPair @@ -8,7 +8,6 @@ import com.getcode.opencode.internal.domain.mapping.TransactionMetadataMapper import com.getcode.opencode.internal.manager.VerifiedState import com.getcode.opencode.internal.network.api.TransactionApi import com.getcode.opencode.internal.network.executors.IntentExecutor -import com.getcode.opencode.internal.network.api.intents.IntentStatelessSwap import com.getcode.opencode.internal.network.executors.StatelessSwapExecutor import com.getcode.opencode.internal.network.executors.SwapExecutor import com.getcode.opencode.internal.network.extensions.foldWithSuppression @@ -24,11 +23,10 @@ import com.getcode.opencode.model.financial.Limits import com.getcode.opencode.model.financial.LocalFiat import com.getcode.opencode.model.financial.Token import com.getcode.opencode.model.financial.minus +import com.getcode.opencode.model.transactions.StatefulSwapRequest import com.getcode.opencode.model.transactions.StatelessSwapRequest -import com.getcode.opencode.model.transactions.StatelessSwapResult import com.getcode.opencode.model.transactions.SwapDirection import com.getcode.opencode.model.transactions.SwapFundingSource -import com.getcode.opencode.model.transactions.StatefulSwapRequest import com.getcode.opencode.model.transactions.SwapStartKind import com.getcode.opencode.model.transactions.TransactionMetadata import com.getcode.opencode.model.transactions.WithdrawalAvailability @@ -39,8 +37,8 @@ import com.getcode.solana.keys.PublicKey import com.getcode.solana.keys.base58 import com.getcode.utils.trace import kotlinx.coroutines.CoroutineScope -import kotlin.time.Instant import javax.inject.Inject +import kotlin.time.Instant internal class TransactionService @Inject constructor( @@ -66,19 +64,19 @@ internal class TransactionService @Inject constructor( }.foldWithSuppression( onSuccess = { response -> when (response.result) { - TransactionService.GetIntentMetadataResponse.Result.OK -> { + OcpTransactionService.GetIntentMetadataResponse.Result.OK -> { Result.success(transactionMetadataMapper.map(response.metadata)) } - TransactionService.GetIntentMetadataResponse.Result.NOT_FOUND -> Result.failure( + OcpTransactionService.GetIntentMetadataResponse.Result.NOT_FOUND -> Result.failure( GetIntentMetadataError.NotFound() ) - TransactionService.GetIntentMetadataResponse.Result.UNRECOGNIZED -> Result.failure( + OcpTransactionService.GetIntentMetadataResponse.Result.UNRECOGNIZED -> Result.failure( GetIntentMetadataError.Unrecognized() ) - TransactionService.GetIntentMetadataResponse.Result.DENIED -> Result.failure( + OcpTransactionService.GetIntentMetadataResponse.Result.DENIED -> Result.failure( GetIntentMetadataError.Denied() ) @@ -100,7 +98,7 @@ internal class TransactionService @Inject constructor( }.foldWithSuppression( onSuccess = { response -> when (response.result) { - TransactionService.GetLimitsResponse.Result.OK -> { + OcpTransactionService.GetLimitsResponse.Result.OK -> { val limits = Limits.newInstance( sinceDate = consumedSince.toEpochMilliseconds(), fetchDate = System.currentTimeMillis(), @@ -110,7 +108,7 @@ internal class TransactionService @Inject constructor( Result.success(limits) } - TransactionService.GetLimitsResponse.Result.UNRECOGNIZED -> Result.failure( + OcpTransactionService.GetLimitsResponse.Result.UNRECOGNIZED -> Result.failure( GetLimitsError.Unrecognized() ) @@ -158,11 +156,11 @@ internal class TransactionService @Inject constructor( }.foldWithSuppression( onSuccess = { response -> when (response.result) { - TransactionService.VoidGiftCardResponse.Result.OK -> Result.success(Unit) - TransactionService.VoidGiftCardResponse.Result.DENIED -> Result.failure(VoidGiftCardError.Denied()) - TransactionService.VoidGiftCardResponse.Result.CLAIMED_BY_OTHER_USER -> Result.failure(VoidGiftCardError.AlreadyClaimed()) - TransactionService.VoidGiftCardResponse.Result.NOT_FOUND -> Result.failure(VoidGiftCardError.NotFound()) - TransactionService.VoidGiftCardResponse.Result.UNRECOGNIZED -> Result.failure(VoidGiftCardError.Unrecognized()) + OcpTransactionService.VoidGiftCardResponse.Result.OK -> Result.success(Unit) + OcpTransactionService.VoidGiftCardResponse.Result.DENIED -> Result.failure(VoidGiftCardError.Denied()) + OcpTransactionService.VoidGiftCardResponse.Result.CLAIMED_BY_OTHER_USER -> Result.failure(VoidGiftCardError.AlreadyClaimed()) + OcpTransactionService.VoidGiftCardResponse.Result.NOT_FOUND -> Result.failure(VoidGiftCardError.NotFound()) + OcpTransactionService.VoidGiftCardResponse.Result.UNRECOGNIZED -> Result.failure(VoidGiftCardError.Unrecognized()) else -> Result.failure(VoidGiftCardError.Other()) } }, diff --git a/services/opencode/src/main/kotlin/com/getcode/opencode/internal/network/streamers/LiveMintDataStreamer.kt b/services/opencode/src/main/kotlin/com/getcode/opencode/internal/network/streamers/LiveMintDataStreamer.kt index 70373b34f..74c1aafb1 100644 --- a/services/opencode/src/main/kotlin/com/getcode/opencode/internal/network/streamers/LiveMintDataStreamer.kt +++ b/services/opencode/src/main/kotlin/com/getcode/opencode/internal/network/streamers/LiveMintDataStreamer.kt @@ -1,7 +1,7 @@ package com.getcode.opencode.internal.network.streamers import com.codeinc.opencode.gen.common.v1.Model -import com.codeinc.opencode.gen.currency.v1.CurrencyService +import com.codeinc.opencode.gen.currency.v1.OcpCurrencyService import com.getcode.opencode.internal.bidi.BidirectionalStreamReference import com.getcode.opencode.internal.bidi.openBidirectionalStream import com.getcode.opencode.internal.network.api.CurrencyApi @@ -14,7 +14,7 @@ import kotlinx.coroutines.CoroutineScope import kotlinx.coroutines.launch import javax.inject.Inject -typealias OcpMintStreamingReference = BidirectionalStreamReference +typealias OcpMintStreamingReference = BidirectionalStreamReference internal class LiveMintDataStreamer @Inject constructor( private val currencyApi: CurrencyApi, @@ -23,7 +23,7 @@ internal class LiveMintDataStreamer @Inject constructor( scope: CoroutineScope, mints: List, tag: String? = null, - onUpdate: (CurrencyService.StreamLiveMintDataResponse.LiveData) -> Unit, + onUpdate: (OcpCurrencyService.StreamLiveMintDataResponse.LiveData) -> Unit, ): ManagedMintStream { trace( tag = "Mint Streamer", @@ -48,7 +48,7 @@ class ManagedMintStream internal constructor( private val scope: CoroutineScope, private val tag: String?, private val mints: List, - private val onUpdate: (CurrencyService.StreamLiveMintDataResponse.LiveData) -> Unit, + private val onUpdate: (OcpCurrencyService.StreamLiveMintDataResponse.LiveData) -> Unit, private val api: CurrencyApi, ) { private var activeReference: OcpMintStreamingReference? = null @@ -101,7 +101,7 @@ class ManagedMintStream internal constructor( private fun openStream( reference: OcpMintStreamingReference, mints: List, - onUpdate: (CurrencyService.StreamLiveMintDataResponse.LiveData) -> Unit, + onUpdate: (OcpCurrencyService.StreamLiveMintDataResponse.LiveData) -> Unit, ) = openBidirectionalStream( streamRef = reference, apiCall = api::streamLiveMintData, @@ -109,20 +109,20 @@ class ManagedMintStream internal constructor( reconnectOnUnavailable = true, reconnectOnDeadlineExceeded = true, initialRequest = { - CurrencyService.StreamLiveMintDataRequest.newBuilder() + OcpCurrencyService.StreamLiveMintDataRequest.newBuilder() .setRequest( - CurrencyService.StreamLiveMintDataRequest.Request.newBuilder() + OcpCurrencyService.StreamLiveMintDataRequest.Request.newBuilder() .addAllMints(mints.map { it.asSolanaAccountId() }) .build() ).build() }, responseHandler = { response, requestChannel -> when (response.typeCase) { - CurrencyService.StreamLiveMintDataResponse.TypeCase.DATA -> { + OcpCurrencyService.StreamLiveMintDataResponse.TypeCase.DATA -> { onUpdate(response.data) } - CurrencyService.StreamLiveMintDataResponse.TypeCase.PING -> { - val pong = CurrencyService.StreamLiveMintDataRequest.newBuilder() + OcpCurrencyService.StreamLiveMintDataResponse.TypeCase.PING -> { + val pong = OcpCurrencyService.StreamLiveMintDataRequest.newBuilder() .setPong( Model.ClientPong.newBuilder() .setTimestamp( @@ -134,7 +134,7 @@ class ManagedMintStream internal constructor( reference.receivedPing(updatedTimeout = response.ping.pingDelay.seconds * 1_000L) requestChannel(pong) } - CurrencyService.StreamLiveMintDataResponse.TypeCase.TYPE_NOT_SET -> Unit + OcpCurrencyService.StreamLiveMintDataResponse.TypeCase.TYPE_NOT_SET -> Unit } } ) diff --git a/services/opencode/src/main/kotlin/com/getcode/opencode/model/accounts/AccountInfo.kt b/services/opencode/src/main/kotlin/com/getcode/opencode/model/accounts/AccountInfo.kt index e623d9b02..bfba7bde7 100644 --- a/services/opencode/src/main/kotlin/com/getcode/opencode/model/accounts/AccountInfo.kt +++ b/services/opencode/src/main/kotlin/com/getcode/opencode/model/accounts/AccountInfo.kt @@ -1,6 +1,6 @@ package com.getcode.opencode.model.accounts -import com.codeinc.opencode.gen.account.v1.AccountService +import com.codeinc.opencode.gen.account.v1.OcpAccountService import com.getcode.opencode.internal.network.extensions.toMint import com.getcode.opencode.internal.network.extensions.toModel import com.getcode.opencode.internal.network.extensions.toPublicKey @@ -103,7 +103,7 @@ data class AccountInfo( val usdCostBasis: Double, ) { companion object { - fun newInstance(info: AccountService.TokenAccountInfo): AccountInfo? { + fun newInstance(info: OcpAccountService.TokenAccountInfo): AccountInfo? { val accountType = AccountType.newInstance(info.accountType) ?: return null val address = PublicKey(info.address.value.toByteArray().toList()) @@ -186,17 +186,17 @@ data class AccountInfo( Closed; companion object { - fun getInstance(state: AccountService.TokenAccountInfo.ManagementState): ManagementState? { + fun getInstance(state: OcpAccountService.TokenAccountInfo.ManagementState): ManagementState? { return when (state) { - AccountService.TokenAccountInfo.ManagementState.MANAGEMENT_STATE_UNKNOWN -> Unknown - AccountService.TokenAccountInfo.ManagementState.MANAGEMENT_STATE_NONE -> None - AccountService.TokenAccountInfo.ManagementState.MANAGEMENT_STATE_LOCKING -> Locking - AccountService.TokenAccountInfo.ManagementState.MANAGEMENT_STATE_LOCKED -> Locked - AccountService.TokenAccountInfo.ManagementState.MANAGEMENT_STATE_UNLOCKING -> Unlocking - AccountService.TokenAccountInfo.ManagementState.MANAGEMENT_STATE_UNLOCKED -> Unlocked - AccountService.TokenAccountInfo.ManagementState.MANAGEMENT_STATE_CLOSING -> Closing - AccountService.TokenAccountInfo.ManagementState.MANAGEMENT_STATE_CLOSED -> Closed - AccountService.TokenAccountInfo.ManagementState.UNRECOGNIZED -> null + OcpAccountService.TokenAccountInfo.ManagementState.MANAGEMENT_STATE_UNKNOWN -> Unknown + OcpAccountService.TokenAccountInfo.ManagementState.MANAGEMENT_STATE_NONE -> None + OcpAccountService.TokenAccountInfo.ManagementState.MANAGEMENT_STATE_LOCKING -> Locking + OcpAccountService.TokenAccountInfo.ManagementState.MANAGEMENT_STATE_LOCKED -> Locked + OcpAccountService.TokenAccountInfo.ManagementState.MANAGEMENT_STATE_UNLOCKING -> Unlocking + OcpAccountService.TokenAccountInfo.ManagementState.MANAGEMENT_STATE_UNLOCKED -> Unlocked + OcpAccountService.TokenAccountInfo.ManagementState.MANAGEMENT_STATE_CLOSING -> Closing + OcpAccountService.TokenAccountInfo.ManagementState.MANAGEMENT_STATE_CLOSED -> Closed + OcpAccountService.TokenAccountInfo.ManagementState.UNRECOGNIZED -> null } } @@ -215,12 +215,12 @@ data class AccountInfo( Exists; companion object { - fun getInstance(state: AccountService.TokenAccountInfo.BlockchainState): BlockchainState? { + fun getInstance(state: OcpAccountService.TokenAccountInfo.BlockchainState): BlockchainState? { return when (state) { - AccountService.TokenAccountInfo.BlockchainState.BLOCKCHAIN_STATE_UNKNOWN -> Unknown - AccountService.TokenAccountInfo.BlockchainState.BLOCKCHAIN_STATE_DOES_NOT_EXIST -> DoesntExist - AccountService.TokenAccountInfo.BlockchainState.BLOCKCHAIN_STATE_EXISTS -> Exists - AccountService.TokenAccountInfo.BlockchainState.UNRECOGNIZED -> null + OcpAccountService.TokenAccountInfo.BlockchainState.BLOCKCHAIN_STATE_UNKNOWN -> Unknown + OcpAccountService.TokenAccountInfo.BlockchainState.BLOCKCHAIN_STATE_DOES_NOT_EXIST -> DoesntExist + OcpAccountService.TokenAccountInfo.BlockchainState.BLOCKCHAIN_STATE_EXISTS -> Exists + OcpAccountService.TokenAccountInfo.BlockchainState.UNRECOGNIZED -> null } } } @@ -250,13 +250,13 @@ data class AccountInfo( Expired; companion object { - fun getInstance(state: AccountService.TokenAccountInfo.ClaimState): ClaimState? { + fun getInstance(state: OcpAccountService.TokenAccountInfo.ClaimState): ClaimState? { return when (state) { - AccountService.TokenAccountInfo.ClaimState.CLAIM_STATE_UNKNOWN -> Unknown - AccountService.TokenAccountInfo.ClaimState.CLAIM_STATE_NOT_CLAIMED -> NotClaimed - AccountService.TokenAccountInfo.ClaimState.CLAIM_STATE_CLAIMED -> Claimed - AccountService.TokenAccountInfo.ClaimState.CLAIM_STATE_EXPIRED -> Expired - AccountService.TokenAccountInfo.ClaimState.UNRECOGNIZED -> null + OcpAccountService.TokenAccountInfo.ClaimState.CLAIM_STATE_UNKNOWN -> Unknown + OcpAccountService.TokenAccountInfo.ClaimState.CLAIM_STATE_NOT_CLAIMED -> NotClaimed + OcpAccountService.TokenAccountInfo.ClaimState.CLAIM_STATE_CLAIMED -> Claimed + OcpAccountService.TokenAccountInfo.ClaimState.CLAIM_STATE_EXPIRED -> Expired + OcpAccountService.TokenAccountInfo.ClaimState.UNRECOGNIZED -> null } } } @@ -282,12 +282,12 @@ data class AccountInfo( Cache; companion object { - fun getInstance(source: AccountService.TokenAccountInfo.BalanceSource): BalanceSource? { + fun getInstance(source: OcpAccountService.TokenAccountInfo.BalanceSource): BalanceSource? { return when (source) { - AccountService.TokenAccountInfo.BalanceSource.BALANCE_SOURCE_UNKNOWN -> Unknown - AccountService.TokenAccountInfo.BalanceSource.BALANCE_SOURCE_BLOCKCHAIN -> Blockchain - AccountService.TokenAccountInfo.BalanceSource.BALANCE_SOURCE_CACHE -> Cache - AccountService.TokenAccountInfo.BalanceSource.UNRECOGNIZED -> null + OcpAccountService.TokenAccountInfo.BalanceSource.BALANCE_SOURCE_UNKNOWN -> Unknown + OcpAccountService.TokenAccountInfo.BalanceSource.BALANCE_SOURCE_BLOCKCHAIN -> Blockchain + OcpAccountService.TokenAccountInfo.BalanceSource.BALANCE_SOURCE_CACHE -> Cache + OcpAccountService.TokenAccountInfo.BalanceSource.UNRECOGNIZED -> null } } diff --git a/services/opencode/src/main/kotlin/com/getcode/opencode/model/core/errors/Errors.kt b/services/opencode/src/main/kotlin/com/getcode/opencode/model/core/errors/Errors.kt index ae0bd6bef..cffdb56ac 100644 --- a/services/opencode/src/main/kotlin/com/getcode/opencode/model/core/errors/Errors.kt +++ b/services/opencode/src/main/kotlin/com/getcode/opencode/model/core/errors/Errors.kt @@ -1,7 +1,7 @@ package com.getcode.opencode.model.core.errors -import com.codeinc.opencode.gen.transaction.v1.TransactionService -import com.codeinc.opencode.gen.transaction.v1.TransactionService.SubmitIntentResponse +import com.codeinc.opencode.gen.transaction.v1.OcpTransactionService +import com.codeinc.opencode.gen.transaction.v1.OcpTransactionService.SubmitIntentResponse import com.getcode.opencode.model.core.errors.SubmitIntentError.Denied import com.getcode.opencode.model.core.errors.SubmitIntentError.InvalidIntent import com.getcode.opencode.model.core.errors.SubmitIntentError.Other @@ -171,7 +171,7 @@ sealed class SubmitIntentError( fun typed(proto: SubmitIntentResponse.Error): SubmitIntentError { val reasonStrings = proto.errorDetailsList.mapNotNull { when (it.typeCase) { - TransactionService.ErrorDetails.TypeCase.REASON_STRING -> + OcpTransactionService.ErrorDetails.TypeCase.REASON_STRING -> it.reasonString.reason.takeIf { reason -> reason.isNotEmpty() } else -> null @@ -191,9 +191,9 @@ sealed class SubmitIntentError( SubmitIntentResponse.Error.Code.SIGNATURE_ERROR -> { val details = proto.errorDetailsList.mapNotNull { when (it.typeCase) { - TransactionService.ErrorDetails.TypeCase.REASON_STRING -> + OcpTransactionService.ErrorDetails.TypeCase.REASON_STRING -> it.reasonString.reason.takeIf { reason -> reason.isNotEmpty() } - TransactionService.ErrorDetails.TypeCase.INVALID_SIGNATURE -> + OcpTransactionService.ErrorDetails.TypeCase.INVALID_SIGNATURE -> "action=${it.invalidSignature.actionId}" else -> null } @@ -281,10 +281,10 @@ sealed class SwapError( data class Other(override val cause: Throwable? = null) : SwapError(message = cause?.message, cause = cause), NotifiableError companion object { - fun typed(proto: TransactionService.StatefulSwapResponse.Error): SwapError { + fun typed(proto: OcpTransactionService.StatefulSwapResponse.Error): SwapError { val reasonStrings = proto.errorDetailsList.mapNotNull { when (it.typeCase) { - TransactionService.ErrorDetails.TypeCase.REASON_STRING -> + OcpTransactionService.ErrorDetails.TypeCase.REASON_STRING -> it.reasonString.reason.takeIf { reason -> reason.isNotEmpty() } else -> null @@ -292,7 +292,7 @@ sealed class SwapError( } return when (proto.code) { - TransactionService.StatefulSwapResponse.Error.Code.DENIED -> { + OcpTransactionService.StatefulSwapResponse.Error.Code.DENIED -> { val reasons = proto.errorDetailsList.mapNotNull { if (!it.hasDenied()) return@mapNotNull null it.denied.reason @@ -301,33 +301,33 @@ sealed class SwapError( Denied(reasons) } - TransactionService.StatefulSwapResponse.Error.Code.SIGNATURE_ERROR -> Signature() - TransactionService.StatefulSwapResponse.Error.Code.UNRECOGNIZED -> Unrecognized() - TransactionService.StatefulSwapResponse.Error.Code.INVALID_SWAP -> InvalidSwap(reasonStrings) + OcpTransactionService.StatefulSwapResponse.Error.Code.SIGNATURE_ERROR -> Signature() + OcpTransactionService.StatefulSwapResponse.Error.Code.UNRECOGNIZED -> Unrecognized() + OcpTransactionService.StatefulSwapResponse.Error.Code.INVALID_SWAP -> InvalidSwap(reasonStrings) } } - fun typed(proto: TransactionService.StatelessSwapResponse.Error): SwapError { + fun typed(proto: OcpTransactionService.StatelessSwapResponse.Error): SwapError { val reasonStrings = proto.errorDetailsList.mapNotNull { when (it.typeCase) { - TransactionService.ErrorDetails.TypeCase.REASON_STRING -> + OcpTransactionService.ErrorDetails.TypeCase.REASON_STRING -> it.reasonString.reason.takeIf { reason -> reason.isNotEmpty() } else -> null } } return when (proto.code) { - TransactionService.StatelessSwapResponse.Error.Code.DENIED -> { + OcpTransactionService.StatelessSwapResponse.Error.Code.DENIED -> { val reasons = proto.errorDetailsList.mapNotNull { if (!it.hasDenied()) return@mapNotNull null it.denied.reason } Denied(reasons) } - TransactionService.StatelessSwapResponse.Error.Code.SIGNATURE_ERROR -> Signature() - TransactionService.StatelessSwapResponse.Error.Code.INVALID_SWAP -> InvalidSwap(reasonStrings) - TransactionService.StatelessSwapResponse.Error.Code.TRANSACTION_FAILED -> TransactionFailed(reasonStrings) - TransactionService.StatelessSwapResponse.Error.Code.UNRECOGNIZED -> Unrecognized() + OcpTransactionService.StatelessSwapResponse.Error.Code.SIGNATURE_ERROR -> Signature() + OcpTransactionService.StatelessSwapResponse.Error.Code.INVALID_SWAP -> InvalidSwap(reasonStrings) + OcpTransactionService.StatelessSwapResponse.Error.Code.TRANSACTION_FAILED -> TransactionFailed(reasonStrings) + OcpTransactionService.StatelessSwapResponse.Error.Code.UNRECOGNIZED -> Unrecognized() } } } diff --git a/services/opencode/src/main/kotlin/com/getcode/opencode/model/financial/Limits.kt b/services/opencode/src/main/kotlin/com/getcode/opencode/model/financial/Limits.kt index 82cfc906f..5089bd126 100644 --- a/services/opencode/src/main/kotlin/com/getcode/opencode/model/financial/Limits.kt +++ b/services/opencode/src/main/kotlin/com/getcode/opencode/model/financial/Limits.kt @@ -1,6 +1,6 @@ package com.getcode.opencode.model.financial -import com.codeinc.opencode.gen.transaction.v1.TransactionService +import com.codeinc.opencode.gen.transaction.v1.OcpTransactionService import kotlin.time.Instant import kotlin.time.Duration.Companion.hours @@ -38,7 +38,7 @@ data class Limits( fun newInstance( sinceDate: Long, fetchDate: Long, - sendLimits: Map, + sendLimits: Map, usdTransactedSinceConsumption: Double ): Limits { val sends = sendLimits diff --git a/services/opencode/src/main/kotlin/com/getcode/opencode/model/transactions/SwapMetadata.kt b/services/opencode/src/main/kotlin/com/getcode/opencode/model/transactions/SwapMetadata.kt index fddd999d5..ffbe1673c 100644 --- a/services/opencode/src/main/kotlin/com/getcode/opencode/model/transactions/SwapMetadata.kt +++ b/services/opencode/src/main/kotlin/com/getcode/opencode/model/transactions/SwapMetadata.kt @@ -1,6 +1,6 @@ package com.getcode.opencode.model.transactions -import com.codeinc.opencode.gen.transaction.v1.TransactionService +import com.codeinc.opencode.gen.transaction.v1.OcpTransactionService import com.getcode.opencode.internal.solana.model.SwapId import com.getcode.opencode.model.financial.Fiat import com.getcode.opencode.utils.Base58String @@ -74,7 +74,7 @@ enum class SwapState { ; companion object { - fun tryValueOf(value: TransactionService.SwapMetadata): SwapState { + fun tryValueOf(value: OcpTransactionService.SwapMetadata): SwapState { return entries.getOrNull(value.stateValue) ?: UNKNOWN } } diff --git a/services/opencode/src/main/kotlin/com/getcode/opencode/model/transactions/TransactionMetadata.kt b/services/opencode/src/main/kotlin/com/getcode/opencode/model/transactions/TransactionMetadata.kt index e5792640c..0c2f77ab1 100644 --- a/services/opencode/src/main/kotlin/com/getcode/opencode/model/transactions/TransactionMetadata.kt +++ b/services/opencode/src/main/kotlin/com/getcode/opencode/model/transactions/TransactionMetadata.kt @@ -43,7 +43,7 @@ sealed interface TransactionMetadata { * @param destination The destination token account to send funds to. This cannot be a Code * temporary account. * @param exchangeData The exchange data of total funds being sent to the destination - * @param isRemoteSend Is the payment a remote send? + * @param isIndirect Is the payment a remote send? * @param isWithdrawal Is the payment a withdrawal? */ data class SendPublicPayment( @@ -52,7 +52,7 @@ sealed interface TransactionMetadata { val destinationOwner: PublicKey? = null, override val exchangeData: ExchangeData.WithRate, override val verifiedExchangeData: ExchangeData.Verified? = null, - val isRemoteSend: Boolean, + val isIndirect: Boolean, val isWithdrawal: Boolean, ): PublicPayment { constructor( @@ -61,7 +61,7 @@ sealed interface TransactionMetadata { destinationOwner: PublicKey? = null, amount: LocalFiat, mint: Mint, - isRemoteSend: Boolean, + isIndirect: Boolean, isWithdrawal: Boolean, ) : this( source = source, @@ -74,7 +74,7 @@ sealed interface TransactionMetadata { quarks = amount.underlyingTokenAmount.quarks, mint = mint, ), - isRemoteSend = isRemoteSend, + isIndirect = isIndirect, isWithdrawal = isWithdrawal, ) @@ -85,7 +85,7 @@ sealed interface TransactionMetadata { amount: LocalFiat, verifiedState: VerifiedState, mint: Mint, - isRemoteSend: Boolean, + isIndirect: Boolean, isWithdrawal: Boolean, ) : this( source = source, @@ -104,7 +104,7 @@ sealed interface TransactionMetadata { nativeAmount = amount.nativeAmount.decimalValue, verifiedState = verifiedState, ), - isRemoteSend = isRemoteSend, + isIndirect = isIndirect, isWithdrawal = isWithdrawal, ) @@ -115,7 +115,7 @@ sealed interface TransactionMetadata { amount: LocalFiat, exchangeData: ExchangeData.Verified, mint: Mint, - isRemoteSend: Boolean, + isIndirect: Boolean, isWithdrawal: Boolean, ) : this( source = source, @@ -129,7 +129,7 @@ sealed interface TransactionMetadata { mint = mint, ), verifiedExchangeData = exchangeData, - isRemoteSend = isRemoteSend, + isIndirect = isIndirect, isWithdrawal = isWithdrawal, ) } @@ -150,16 +150,16 @@ sealed interface TransactionMetadata { * * @param source The remote send gift card to receive funds from * @param quarks The exact amount of Kin in quarks being received - * @param isRemoteSend Is the receipt of funds from a remote send gift card? Currently, this is + * @param isIndirect Is the receipt of funds from a remote send gift card? Currently, this is * the only use case for this intent and validation enforces the flag to true. - * @param exchangeData If [isRemoteSend] is true, the original exchange data that was provided as + * @param exchangeData If [isIndirect] is true, the original exchange data that was provided as * part of creating the gift card account. This is purely a server-provided value. * SubmitIntent will disallow this being set. */ data class ReceivePublicPayment( override val source: PublicKey, val quarks: Long, - val isRemoteSend: Boolean, + val isIndirect: Boolean, override val exchangeData: ExchangeData.WithRate, override val verifiedExchangeData: ExchangeData.Verified? = null, val mint: Mint, @@ -168,11 +168,11 @@ sealed interface TransactionMetadata { source: PublicKey, amount: LocalFiat, mint: Mint, - isRemoteSend: Boolean, + isIndirect: Boolean, ) : this( source = source, quarks = amount.underlyingTokenAmount.quarks, - isRemoteSend = isRemoteSend, + isIndirect = isIndirect, exchangeData = ExchangeData.WithRate( currencyCode = amount.rate.currency.name, exchangeRate = amount.rate.fx, diff --git a/services/opencode/src/main/kotlin/com/getcode/opencode/repositories/MessagingRepository.kt b/services/opencode/src/main/kotlin/com/getcode/opencode/repositories/MessagingRepository.kt index 56d74b610..a625665ba 100644 --- a/services/opencode/src/main/kotlin/com/getcode/opencode/repositories/MessagingRepository.kt +++ b/services/opencode/src/main/kotlin/com/getcode/opencode/repositories/MessagingRepository.kt @@ -1,6 +1,6 @@ package com.getcode.opencode.repositories -import com.codeinc.opencode.gen.messaging.v1.MessagingService +import com.codeinc.opencode.gen.messaging.v1.OcpMessagingService import com.getcode.ed25519.Ed25519.KeyPair import com.getcode.opencode.internal.network.services.OcpMessageStreamReference import com.getcode.opencode.model.transactions.GrabRequest @@ -12,14 +12,14 @@ interface MessagingRepository { fun openMessageStreamWithKeepAlive( scope: CoroutineScope, rendezvous: KeyPair, - ackFilter: (MessagingService.Message) -> Boolean = { true }, - transformer: (List) -> R?, + ackFilter: (OcpMessagingService.Message) -> Boolean = { true }, + transformer: (List) -> R?, onEvent: (Result) -> Unit, ): OcpMessageStreamReference suspend fun pollMessages( rendezvous: KeyPair, - ): Result> + ): Result> suspend fun ackMessages( rendezvous: KeyPair, @@ -28,6 +28,6 @@ interface MessagingRepository { suspend fun sendMessage( rendezvous: KeyPair, - message: MessagingService.Message.Builder, + message: OcpMessagingService.Message.Builder, ): Result } \ No newline at end of file diff --git a/services/opencode/src/main/kotlin/com/getcode/opencode/solana/intents/IntentType.kt b/services/opencode/src/main/kotlin/com/getcode/opencode/solana/intents/IntentType.kt index 468e7115e..71bd5857c 100644 --- a/services/opencode/src/main/kotlin/com/getcode/opencode/solana/intents/IntentType.kt +++ b/services/opencode/src/main/kotlin/com/getcode/opencode/solana/intents/IntentType.kt @@ -1,6 +1,6 @@ package com.getcode.opencode.solana.intents -import com.codeinc.opencode.gen.transaction.v1.TransactionService +import com.codeinc.opencode.gen.transaction.v1.OcpTransactionService import com.getcode.ed25519.Ed25519 import com.getcode.opencode.solana.intents.actions.ActionType import com.getcode.opencode.internal.network.extensions.asIntentId @@ -52,19 +52,19 @@ abstract class IntentType { val signatures: List get() = actions.map { it.signatures().firstOrNull() }.mapNotNull { it } - abstract fun metadata(): TransactionService.Metadata + abstract fun metadata(): OcpTransactionService.Metadata - fun requestToSubmitSignatures(): TransactionService.SubmitIntentRequest { - return TransactionService.SubmitIntentRequest.newBuilder() + fun requestToSubmitSignatures(): OcpTransactionService.SubmitIntentRequest { + return OcpTransactionService.SubmitIntentRequest.newBuilder() .setSubmitSignatures( - TransactionService.SubmitIntentRequest.SubmitSignatures.newBuilder() + OcpTransactionService.SubmitIntentRequest.SubmitSignatures.newBuilder() .addAllSignatures(signatures.map { it.bytes.toByteArray().asSignature() }) ) .build() } - fun requestToSubmitActions(owner: Ed25519.KeyPair, deviceToken: String? = null): TransactionService.SubmitIntentRequest { - val submitActionsBuilder = TransactionService.SubmitIntentRequest.SubmitActions.newBuilder() + fun requestToSubmitActions(owner: Ed25519.KeyPair, deviceToken: String? = null): OcpTransactionService.SubmitIntentRequest { + val submitActionsBuilder = OcpTransactionService.SubmitIntentRequest.SubmitActions.newBuilder() submitActionsBuilder.owner = owner.asSolanaAccountId() submitActionsBuilder.id = id.asIntentId() submitActionsBuilder.metadata = metadata() @@ -72,7 +72,7 @@ abstract class IntentType { submitActionsBuilder.signature = submitActionsBuilder.sign(owner) - return TransactionService.SubmitIntentRequest.newBuilder() + return OcpTransactionService.SubmitIntentRequest.newBuilder() .setSubmitActions(submitActionsBuilder) .build() } diff --git a/services/opencode/src/main/kotlin/com/getcode/opencode/solana/intents/ServerParameter.kt b/services/opencode/src/main/kotlin/com/getcode/opencode/solana/intents/ServerParameter.kt index 883f30481..c4086b020 100644 --- a/services/opencode/src/main/kotlin/com/getcode/opencode/solana/intents/ServerParameter.kt +++ b/services/opencode/src/main/kotlin/com/getcode/opencode/solana/intents/ServerParameter.kt @@ -1,6 +1,6 @@ package com.getcode.opencode.solana.intents -import com.codeinc.opencode.gen.transaction.v1.TransactionService +import com.codeinc.opencode.gen.transaction.v1.OcpTransactionService import com.getcode.opencode.internal.extensions.toHash import com.getcode.opencode.internal.extensions.toPublicKey import com.getcode.solana.keys.Hash @@ -17,9 +17,9 @@ class ServerParameter( data class FeePayment(val publicKey: PublicKey): Parameter() companion object { - fun newInstance(proto: TransactionService.ServerParameter): Parameter? { + fun newInstance(proto: OcpTransactionService.ServerParameter): Parameter? { return when (proto.typeCase) { - TransactionService.ServerParameter.TypeCase.FEE_PAYMENT -> { + OcpTransactionService.ServerParameter.TypeCase.FEE_PAYMENT -> { val param = proto.feePayment // PublicKey will be `nil` for .thirdParty fee payments @@ -28,10 +28,10 @@ class ServerParameter( ) FeePayment(optionalDestination) } - TransactionService.ServerParameter.TypeCase.OPEN_ACCOUNT, - TransactionService.ServerParameter.TypeCase.NO_PRIVACY_WITHDRAW, - TransactionService.ServerParameter.TypeCase.TYPE_NOT_SET, - TransactionService.ServerParameter.TypeCase.NO_PRIVACY_TRANSFER -> null + OcpTransactionService.ServerParameter.TypeCase.OPEN_ACCOUNT, + OcpTransactionService.ServerParameter.TypeCase.NO_PRIVACY_WITHDRAW, + OcpTransactionService.ServerParameter.TypeCase.TYPE_NOT_SET, + OcpTransactionService.ServerParameter.TypeCase.NO_PRIVACY_TRANSFER -> null else -> null } } @@ -39,7 +39,7 @@ class ServerParameter( } companion object { - fun newInstance(proto: TransactionService.ServerParameter): ServerParameter { + fun newInstance(proto: OcpTransactionService.ServerParameter): ServerParameter { return ServerParameter( actionId = proto.actionId, parameter = Parameter.newInstance(proto), diff --git a/services/opencode/src/main/kotlin/com/getcode/opencode/solana/intents/actions/ActionType.kt b/services/opencode/src/main/kotlin/com/getcode/opencode/solana/intents/actions/ActionType.kt index b88e5ee58..4f6117522 100644 --- a/services/opencode/src/main/kotlin/com/getcode/opencode/solana/intents/actions/ActionType.kt +++ b/services/opencode/src/main/kotlin/com/getcode/opencode/solana/intents/actions/ActionType.kt @@ -1,6 +1,6 @@ package com.getcode.opencode.solana.intents.actions -import com.codeinc.opencode.gen.transaction.v1.TransactionService +import com.codeinc.opencode.gen.transaction.v1.OcpTransactionService import com.getcode.crypt.Sha256Hash import com.getcode.ed25519.Ed25519 import com.getcode.opencode.solana.intents.CompactMessage @@ -54,7 +54,7 @@ abstract class ActionType { }.orEmpty() } - abstract fun action(): TransactionService.Action + abstract fun action(): OcpTransactionService.Action companion object { const val kreIndex: Int = 268 diff --git a/services/opencode/src/test/kotlin/com/getcode/opencode/internal/exchange/RealVerifiedFiatCalculatorTest.kt b/services/opencode/src/test/kotlin/com/getcode/opencode/internal/exchange/RealVerifiedFiatCalculatorTest.kt index 88c4aff5a..12d473753 100644 --- a/services/opencode/src/test/kotlin/com/getcode/opencode/internal/exchange/RealVerifiedFiatCalculatorTest.kt +++ b/services/opencode/src/test/kotlin/com/getcode/opencode/internal/exchange/RealVerifiedFiatCalculatorTest.kt @@ -257,7 +257,7 @@ class RealVerifiedFiatCalculatorTest { @Test fun `USDF withdrawal with non-USD balance does not crash on fee subtraction`() = runTest { // End-to-end regression: reproduces the exact crash path in - // TransactionService.withdrawUsdf where amount - fee threw + // OcpTransactionService.withdrawUsdf where amount - fee threw // "Cannot subtract different currencies". val token = usdfToken() val gbpRate = Rate(fx = 0.79, currency = CurrencyCode.GBP) @@ -277,7 +277,7 @@ class RealVerifiedFiatCalculatorTest { rate = verifiedAmount.rate, ) - // This is the exact line that crashed in TransactionService.withdrawUsdf + // This is the exact line that crashed in OcpTransactionService.withdrawUsdf val netAmount = verifiedAmount - fee assertEquals(CurrencyCode.USD, netAmount.underlyingTokenAmount.currencyCode) assertEquals(CurrencyCode.GBP, netAmount.nativeAmount.currencyCode) diff --git a/services/opencode/src/test/kotlin/com/getcode/opencode/internal/manager/VerifiedProtoManagerTest.kt b/services/opencode/src/test/kotlin/com/getcode/opencode/internal/manager/VerifiedProtoManagerTest.kt index 0bbfe3cc9..6383ffb4c 100644 --- a/services/opencode/src/test/kotlin/com/getcode/opencode/internal/manager/VerifiedProtoManagerTest.kt +++ b/services/opencode/src/test/kotlin/com/getcode/opencode/internal/manager/VerifiedProtoManagerTest.kt @@ -1,7 +1,7 @@ package com.getcode.opencode.internal.manager import app.cash.turbine.test -import com.codeinc.opencode.gen.currency.v1.CurrencyService +import com.codeinc.opencode.gen.currency.v1.OcpCurrencyService import com.codeinc.opencode.gen.currency.v1.coreMintFiatExchangeRate import com.codeinc.opencode.gen.currency.v1.verifiedCoreMintFiatExchangeRate import com.getcode.opencode.model.financial.CurrencyCode @@ -178,7 +178,7 @@ class VerifiedProtoManagerTest { private fun rateProto( code: String, fx: Double = 0.0, - ): CurrencyService.VerifiedCoreMintFiatExchangeRate { + ): OcpCurrencyService.VerifiedCoreMintFiatExchangeRate { return verifiedCoreMintFiatExchangeRate { exchangeRate = coreMintFiatExchangeRate { currencyCode = code diff --git a/services/opencode/src/test/kotlin/com/getcode/opencode/internal/network/services/CurrencyServiceTest.kt b/services/opencode/src/test/kotlin/com/getcode/opencode/internal/network/services/CurrencyServiceTest.kt index 444379e97..0d285819e 100644 --- a/services/opencode/src/test/kotlin/com/getcode/opencode/internal/network/services/CurrencyServiceTest.kt +++ b/services/opencode/src/test/kotlin/com/getcode/opencode/internal/network/services/CurrencyServiceTest.kt @@ -1,7 +1,7 @@ package com.getcode.opencode.internal.network.services import com.codeinc.opencode.gen.common.v1.Model -import com.codeinc.opencode.gen.currency.v1.CurrencyService as CurrencyProto +import com.codeinc.opencode.gen.currency.v1.OcpCurrencyService as CurrencyProto import com.getcode.ed25519.Ed25519 import com.getcode.opencode.internal.domain.mapping.HistoricalMintDataMapper import com.getcode.opencode.internal.domain.mapping.LiveMintDataMapper diff --git a/services/opencode/src/test/kotlin/com/getcode/opencode/model/core/errors/SubmitIntentErrorTest.kt b/services/opencode/src/test/kotlin/com/getcode/opencode/model/core/errors/SubmitIntentErrorTest.kt index 1e9ce3cda..4b9077cf1 100644 --- a/services/opencode/src/test/kotlin/com/getcode/opencode/model/core/errors/SubmitIntentErrorTest.kt +++ b/services/opencode/src/test/kotlin/com/getcode/opencode/model/core/errors/SubmitIntentErrorTest.kt @@ -1,6 +1,6 @@ package com.getcode.opencode.model.core.errors -import com.codeinc.opencode.gen.transaction.v1.TransactionService.SubmitIntentResponse +import com.codeinc.opencode.gen.transaction.v1.OcpTransactionService.SubmitIntentResponse import com.codeinc.opencode.gen.transaction.v1.errorDetails import com.codeinc.opencode.gen.transaction.v1.reasonStringErrorDetails import com.codeinc.opencode.gen.transaction.v1.deniedErrorDetails diff --git a/services/opencode/src/test/kotlin/com/getcode/opencode/model/core/errors/SwapErrorTest.kt b/services/opencode/src/test/kotlin/com/getcode/opencode/model/core/errors/SwapErrorTest.kt index 35074d4ad..95d8971ca 100644 --- a/services/opencode/src/test/kotlin/com/getcode/opencode/model/core/errors/SwapErrorTest.kt +++ b/services/opencode/src/test/kotlin/com/getcode/opencode/model/core/errors/SwapErrorTest.kt @@ -1,6 +1,6 @@ package com.getcode.opencode.model.core.errors -import com.codeinc.opencode.gen.transaction.v1.TransactionService.StatefulSwapResponse +import com.codeinc.opencode.gen.transaction.v1.OcpTransactionService.StatefulSwapResponse import com.codeinc.opencode.gen.transaction.v1.errorDetails import com.codeinc.opencode.gen.transaction.v1.reasonStringErrorDetails import com.codeinc.opencode.gen.transaction.v1.deniedErrorDetails diff --git a/services/opencode/src/test/kotlin/com/getcode/opencode/model/financial/LimitsTest.kt b/services/opencode/src/test/kotlin/com/getcode/opencode/model/financial/LimitsTest.kt index 18546cd3f..aa4c72217 100644 --- a/services/opencode/src/test/kotlin/com/getcode/opencode/model/financial/LimitsTest.kt +++ b/services/opencode/src/test/kotlin/com/getcode/opencode/model/financial/LimitsTest.kt @@ -154,7 +154,7 @@ class LimitsTest { nextTransaction: Double, maxPerTransaction: Double, maxPerDay: Double, - ): com.codeinc.opencode.gen.transaction.v1.TransactionService.SendLimit { + ): com.codeinc.opencode.gen.transaction.v1.OcpTransactionService.SendLimit { return com.codeinc.opencode.gen.transaction.v1.sendLimit { this.nextTransaction = nextTransaction.toFloat() this.maxPerTransaction = maxPerTransaction.toFloat()