From fb1c0ec1308a09fc8df9aa2a748296f9ea591026 Mon Sep 17 00:00:00 2001 From: hdbg Date: Sat, 28 Mar 2026 12:49:47 +0100 Subject: [PATCH] refactor(proto): restructure wallet access messages for improved data organization --- protobufs/user_agent.proto | 13 +- .../src/actors/user_agent/mod.rs | 5 - .../actors/user_agent/session/connection.rs | 39 ++---- server/crates/arbiter-server/src/db/models.rs | 6 + .../arbiter-server/src/grpc/user_agent.rs | 14 ++- .../src/grpc/user_agent/inbound.rs | 64 ++++++---- .../src/grpc/user_agent/outbound.rs | 15 ++- .../connection/evm/wallet_access.dart | 8 +- useragent/lib/proto/user_agent.pb.dart | 113 ++++++++++++++---- useragent/lib/proto/user_agent.pbjson.dart | 48 +++++--- 10 files changed, 212 insertions(+), 113 deletions(-) diff --git a/protobufs/user_agent.proto b/protobufs/user_agent.proto index edcbbbf..79e0f2c 100644 --- a/protobufs/user_agent.proto +++ b/protobufs/user_agent.proto @@ -132,17 +132,22 @@ message SdkClientConnectionCancel { bytes pubkey = 1; } +message WalletAccess { + int32 wallet_id = 1; + int32 sdk_client_id = 2; +} + message SdkClientWalletAccess { - int32 client_id = 1; - int32 wallet_id = 2; + int32 id = 1; + WalletAccess access = 2; } message SdkClientGrantWalletAccess { - repeated SdkClientWalletAccess accesses = 1; + repeated WalletAccess accesses = 1; } message SdkClientRevokeWalletAccess { - repeated SdkClientWalletAccess accesses = 1; + repeated int32 accesses = 1; } message ListWalletAccessResponse { diff --git a/server/crates/arbiter-server/src/actors/user_agent/mod.rs b/server/crates/arbiter-server/src/actors/user_agent/mod.rs index 33ea98d..3a45cc5 100644 --- a/server/crates/arbiter-server/src/actors/user_agent/mod.rs +++ b/server/crates/arbiter-server/src/actors/user_agent/mod.rs @@ -3,11 +3,6 @@ use crate::{ db::{self, models::KeyType}, }; -pub struct EvmAccessEntry { - pub wallet_id: i32, - pub sdk_client_id: i32, -} - /// Abstraction over Ed25519 / ECDSA-secp256k1 / RSA public keys used during the auth handshake. #[derive(Clone, Debug)] pub enum AuthPublicKey { diff --git a/server/crates/arbiter-server/src/actors/user_agent/session/connection.rs b/server/crates/arbiter-server/src/actors/user_agent/session/connection.rs index ac63c87..30b10ae 100644 --- a/server/crates/arbiter-server/src/actors/user_agent/session/connection.rs +++ b/server/crates/arbiter-server/src/actors/user_agent/session/connection.rs @@ -13,9 +13,10 @@ use x25519_dalek::{EphemeralSecret, PublicKey}; use crate::actors::flow_coordinator::client_connect_approval::ClientApprovalAnswer; use crate::actors::keyholder::KeyHolderState; -use crate::actors::user_agent::EvmAccessEntry; use crate::actors::user_agent::session::Error; -use crate::db::models::{ProgramClient, ProgramClientMetadata}; +use crate::db::models::{ + CoreEvmWalletAccess, EvmWalletAccess, NewEvmWalletAccess, ProgramClient, ProgramClientMetadata, +}; use crate::db::schema::evm_wallet_access; use crate::evm::policies::{Grant, SpecificGrant}; use crate::safe_cell::SafeCell; @@ -304,8 +305,6 @@ impl UserAgentSession { } } - - #[messages] impl UserAgentSession { #[message] @@ -360,20 +359,16 @@ impl UserAgentSession { #[message] pub(crate) async fn handle_grant_evm_wallet_access( &mut self, - entries: Vec, + entries: Vec, ) -> Result<(), Error> { let mut conn = self.props.db.get().await?; conn.transaction(|conn| { Box::pin(async move { - use crate::db::models::NewEvmWalletAccess; use crate::db::schema::evm_wallet_access; for entry in entries { diesel::insert_into(evm_wallet_access::table) - .values(&NewEvmWalletAccess { - wallet_id: entry.wallet_id, - client_id: entry.sdk_client_id, - }) + .values(&entry) .on_conflict_do_nothing() .execute(conn) .await?; @@ -389,7 +384,7 @@ impl UserAgentSession { #[message] pub(crate) async fn handle_revoke_evm_wallet_access( &mut self, - entries: Vec, + entries: Vec, ) -> Result<(), Error> { let mut conn = self.props.db.get().await?; conn.transaction(|conn| { @@ -397,11 +392,7 @@ impl UserAgentSession { use crate::db::schema::evm_wallet_access; for entry in entries { diesel::delete(evm_wallet_access::table) - .filter( - evm_wallet_access::wallet_id - .eq(entry.wallet_id) - .and(evm_wallet_access::client_id.eq(entry.sdk_client_id)), - ) + .filter(evm_wallet_access::wallet_id.eq(entry)) .execute(conn) .await?; } @@ -414,19 +405,15 @@ impl UserAgentSession { } #[message] - pub(crate) async fn handle_list_wallet_access(&mut self) -> Result, Error> { + pub(crate) async fn handle_list_wallet_access( + &mut self, + ) -> Result, Error> { let mut conn = self.props.db.get().await?; use crate::db::schema::evm_wallet_access; let access_entries = evm_wallet_access::table - .select((evm_wallet_access::wallet_id, evm_wallet_access::client_id)) - .load::<(i32, i32)>(&mut conn) - .await? - .into_iter() - .map(|(wallet_id, sdk_client_id)| EvmAccessEntry { - wallet_id, - sdk_client_id, - }) - .collect(); + .select(EvmWalletAccess::as_select()) + .load::<_>(&mut conn) + .await?; Ok(access_entries) } } diff --git a/server/crates/arbiter-server/src/db/models.rs b/server/crates/arbiter-server/src/db/models.rs index 2925039..48d2c22 100644 --- a/server/crates/arbiter-server/src/db/models.rs +++ b/server/crates/arbiter-server/src/db/models.rs @@ -193,6 +193,12 @@ pub struct EvmWallet { omit(id, created_at), attributes_with = "deriveless" )] +#[view( + CoreEvmWalletAccess, + derive(Insertable), + omit(created_at), + attributes_with = "deriveless" +)] pub struct EvmWalletAccess { pub id: i32, pub wallet_id: i32, diff --git a/server/crates/arbiter-server/src/grpc/user_agent.rs b/server/crates/arbiter-server/src/grpc/user_agent.rs index 7ad74c1..832c468 100644 --- a/server/crates/arbiter-server/src/grpc/user_agent.rs +++ b/server/crates/arbiter-server/src/grpc/user_agent.rs @@ -45,10 +45,15 @@ use crate::{ user_agent::{ OutOfBand, UserAgentConnection, UserAgentSession, session::connection::{ - BootstrapError, HandleBootstrapEncryptedKey, HandleEvmWalletCreate, HandleEvmWalletList, HandleGrantCreate, HandleGrantDelete, HandleGrantEvmWalletAccess, HandleGrantList, HandleListWalletAccess, HandleNewClientApprove, HandleQueryVaultState, HandleRevokeEvmWalletAccess, HandleSdkClientList, HandleUnsealEncryptedKey, HandleUnsealRequest, UnsealError + BootstrapError, HandleBootstrapEncryptedKey, HandleEvmWalletCreate, + HandleEvmWalletList, HandleGrantCreate, HandleGrantDelete, + HandleGrantEvmWalletAccess, HandleGrantList, HandleListWalletAccess, + HandleNewClientApprove, HandleQueryVaultState, HandleRevokeEvmWalletAccess, + HandleSdkClientList, HandleUnsealEncryptedKey, HandleUnsealRequest, UnsealError, }, }, }, + db::models::{CoreEvmWalletAccess, NewEvmWalletAccess}, grpc::{Convert, TryConvert, request_tracker::RequestTracker}, }; mod auth; @@ -383,7 +388,8 @@ async fn dispatch_inner( } UserAgentRequestPayload::GrantWalletAccess(SdkClientGrantWalletAccess { accesses }) => { - let entries = accesses.try_convert()?; + let entries: Vec = + accesses.into_iter().map(|a| a.convert()).collect(); match actor.ask(HandleGrantEvmWalletAccess { entries }).await { Ok(()) => { @@ -398,9 +404,7 @@ async fn dispatch_inner( } UserAgentRequestPayload::RevokeWalletAccess(SdkClientRevokeWalletAccess { accesses }) => { - let entries = accesses.try_convert()?; - - match actor.ask(HandleRevokeEvmWalletAccess { entries }).await { + match actor.ask(HandleRevokeEvmWalletAccess { entries: accesses }).await { Ok(()) => { info!("Successfully revoked wallet access"); return Ok(None); diff --git a/server/crates/arbiter-server/src/grpc/user_agent/inbound.rs b/server/crates/arbiter-server/src/grpc/user_agent/inbound.rs index 6c6572f..769b7d8 100644 --- a/server/crates/arbiter-server/src/grpc/user_agent/inbound.rs +++ b/server/crates/arbiter-server/src/grpc/user_agent/inbound.rs @@ -1,23 +1,21 @@ +use alloy::primitives::{Address, U256}; use arbiter_proto::proto::evm::{ - EtherTransferSettings as ProtoEtherTransferSettings, - SharedSettings as ProtoSharedSettings, - SpecificGrant as ProtoSpecificGrant, - TokenTransferSettings as ProtoTokenTransferSettings, - TransactionRateLimit as ProtoTransactionRateLimit, - VolumeRateLimit as ProtoVolumeRateLimit, + EtherTransferSettings as ProtoEtherTransferSettings, SharedSettings as ProtoSharedSettings, + SpecificGrant as ProtoSpecificGrant, TokenTransferSettings as ProtoTokenTransferSettings, + TransactionRateLimit as ProtoTransactionRateLimit, VolumeRateLimit as ProtoVolumeRateLimit, specific_grant::Grant as ProtoSpecificGrantType, }; -use arbiter_proto::proto::user_agent::SdkClientWalletAccess; -use alloy::primitives::{Address, U256}; +use arbiter_proto::proto::user_agent::{SdkClientWalletAccess, WalletAccess}; use chrono::{DateTime, TimeZone, Utc}; use prost_types::Timestamp as ProtoTimestamp; use tonic::Status; -use crate::actors::user_agent::EvmAccessEntry; +use crate::db::models::{CoreEvmWalletAccess, NewEvmWallet, NewEvmWalletAccess}; +use crate::grpc::Convert; use crate::{ evm::policies::{ - SharedGrantSettings, SpecificGrant, TransactionRateLimit, VolumeRateLimit, - ether_transfer, token_transfers, + SharedGrantSettings, SpecificGrant, TransactionRateLimit, VolumeRateLimit, ether_transfer, + token_transfers, }, grpc::TryConvert, }; @@ -79,8 +77,14 @@ impl TryConvert for ProtoSharedSettings { Ok(SharedGrantSettings { wallet_access_id: self.wallet_access_id, chain: self.chain_id, - valid_from: self.valid_from.map(ProtoTimestamp::try_convert).transpose()?, - valid_until: self.valid_until.map(ProtoTimestamp::try_convert).transpose()?, + valid_from: self + .valid_from + .map(ProtoTimestamp::try_convert) + .transpose()?, + valid_until: self + .valid_until + .map(ProtoTimestamp::try_convert) + .transpose()?, max_gas_fee_per_gas: self .max_gas_fee_per_gas .as_deref() @@ -136,17 +140,29 @@ impl TryConvert for ProtoSpecificGrant { } } -impl TryConvert for Vec { - type Output = Vec; - type Error = Status; +impl Convert for WalletAccess { + type Output = NewEvmWalletAccess; - fn try_convert(self) -> Result, Status> { - Ok(self - .into_iter() - .map(|SdkClientWalletAccess { client_id, wallet_id }| EvmAccessEntry { - wallet_id, - sdk_client_id: client_id, - }) - .collect()) + fn convert(self) -> Self::Output { + NewEvmWalletAccess { + wallet_id: self.wallet_id, + client_id: self.sdk_client_id, + } + } +} + +impl TryConvert for SdkClientWalletAccess { + type Output = CoreEvmWalletAccess; + type Error = Status; + + fn try_convert(self) -> Result { + let Some(access) = self.access else { + return Err(Status::invalid_argument("Missing wallet access entry")); + }; + Ok(CoreEvmWalletAccess { + wallet_id: access.wallet_id, + client_id: access.sdk_client_id, + id: self.id, + }) } } diff --git a/server/crates/arbiter-server/src/grpc/user_agent/outbound.rs b/server/crates/arbiter-server/src/grpc/user_agent/outbound.rs index af93635..7d490b7 100644 --- a/server/crates/arbiter-server/src/grpc/user_agent/outbound.rs +++ b/server/crates/arbiter-server/src/grpc/user_agent/outbound.rs @@ -5,13 +5,13 @@ use arbiter_proto::proto::{ TransactionRateLimit as ProtoTransactionRateLimit, VolumeRateLimit as ProtoVolumeRateLimit, specific_grant::Grant as ProtoSpecificGrantType, }, - user_agent::SdkClientWalletAccess as ProtoSdkClientWalletAccess, + user_agent::{SdkClientWalletAccess as ProtoSdkClientWalletAccess, WalletAccess}, }; use chrono::{DateTime, Utc}; use prost_types::Timestamp as ProtoTimestamp; use crate::{ - actors::user_agent::EvmAccessEntry, + db::models::EvmWalletAccess, evm::policies::{SharedGrantSettings, SpecificGrant, TransactionRateLimit, VolumeRateLimit}, grpc::Convert, }; @@ -96,13 +96,16 @@ impl Convert for SpecificGrant { } } -impl Convert for EvmAccessEntry { +impl Convert for EvmWalletAccess { type Output = ProtoSdkClientWalletAccess; fn convert(self) -> Self::Output { - ProtoSdkClientWalletAccess { - client_id: self.sdk_client_id, - wallet_id: self.wallet_id, + Self::Output { + id: self.id, + access: Some(WalletAccess { + wallet_id: self.wallet_id, + sdk_client_id: self.client_id, + }), } } } diff --git a/useragent/lib/features/connection/evm/wallet_access.dart b/useragent/lib/features/connection/evm/wallet_access.dart index 1876fbd..66dbb56 100644 --- a/useragent/lib/features/connection/evm/wallet_access.dart +++ b/useragent/lib/features/connection/evm/wallet_access.dart @@ -15,8 +15,8 @@ Future> readClientWalletAccess( ); } return { - for (final access in response.listWalletAccessResponse.accesses) - if (access.clientId == clientId) access.walletId, + for (final entry in response.listWalletAccessResponse.accesses) + if (entry.access != null && entry.access.sdkClientId == clientId) entry.access.walletId, }; } @@ -36,7 +36,7 @@ Future writeClientWalletAccess( grantWalletAccess: SdkClientGrantWalletAccess( accesses: [ for (final walletId in toGrant) - SdkClientWalletAccess(clientId: clientId, walletId: walletId), + WalletAccess(sdkClientId: clientId, walletId: walletId), ], ), ), @@ -49,7 +49,7 @@ Future writeClientWalletAccess( revokeWalletAccess: SdkClientRevokeWalletAccess( accesses: [ for (final walletId in toRevoke) - SdkClientWalletAccess(clientId: clientId, walletId: walletId), + walletId ], ), ), diff --git a/useragent/lib/proto/user_agent.pb.dart b/useragent/lib/proto/user_agent.pb.dart index 51195bb..f327b40 100644 --- a/useragent/lib/proto/user_agent.pb.dart +++ b/useragent/lib/proto/user_agent.pb.dart @@ -1072,14 +1072,81 @@ class SdkClientConnectionCancel extends $pb.GeneratedMessage { void clearPubkey() => $_clearField(1); } -class SdkClientWalletAccess extends $pb.GeneratedMessage { - factory SdkClientWalletAccess({ - $core.int? clientId, +class WalletAccess extends $pb.GeneratedMessage { + factory WalletAccess({ $core.int? walletId, + $core.int? sdkClientId, }) { final result = create(); - if (clientId != null) result.clientId = clientId; if (walletId != null) result.walletId = walletId; + if (sdkClientId != null) result.sdkClientId = sdkClientId; + return result; + } + + WalletAccess._(); + + factory WalletAccess.fromBuffer($core.List<$core.int> data, + [$pb.ExtensionRegistry registry = $pb.ExtensionRegistry.EMPTY]) => + create()..mergeFromBuffer(data, registry); + factory WalletAccess.fromJson($core.String json, + [$pb.ExtensionRegistry registry = $pb.ExtensionRegistry.EMPTY]) => + create()..mergeFromJson(json, registry); + + static final $pb.BuilderInfo _i = $pb.BuilderInfo( + _omitMessageNames ? '' : 'WalletAccess', + package: + const $pb.PackageName(_omitMessageNames ? '' : 'arbiter.user_agent'), + createEmptyInstance: create) + ..aI(1, _omitFieldNames ? '' : 'walletId') + ..aI(2, _omitFieldNames ? '' : 'sdkClientId') + ..hasRequiredFields = false; + + @$core.Deprecated('See https://github.com/google/protobuf.dart/issues/998.') + WalletAccess clone() => deepCopy(); + @$core.Deprecated('See https://github.com/google/protobuf.dart/issues/998.') + WalletAccess copyWith(void Function(WalletAccess) updates) => + super.copyWith((message) => updates(message as WalletAccess)) + as WalletAccess; + + @$core.override + $pb.BuilderInfo get info_ => _i; + + @$core.pragma('dart2js:noInline') + static WalletAccess create() => WalletAccess._(); + @$core.override + WalletAccess createEmptyInstance() => create(); + @$core.pragma('dart2js:noInline') + static WalletAccess getDefault() => _defaultInstance ??= + $pb.GeneratedMessage.$_defaultFor(create); + static WalletAccess? _defaultInstance; + + @$pb.TagNumber(1) + $core.int get walletId => $_getIZ(0); + @$pb.TagNumber(1) + set walletId($core.int value) => $_setSignedInt32(0, value); + @$pb.TagNumber(1) + $core.bool hasWalletId() => $_has(0); + @$pb.TagNumber(1) + void clearWalletId() => $_clearField(1); + + @$pb.TagNumber(2) + $core.int get sdkClientId => $_getIZ(1); + @$pb.TagNumber(2) + set sdkClientId($core.int value) => $_setSignedInt32(1, value); + @$pb.TagNumber(2) + $core.bool hasSdkClientId() => $_has(1); + @$pb.TagNumber(2) + void clearSdkClientId() => $_clearField(2); +} + +class SdkClientWalletAccess extends $pb.GeneratedMessage { + factory SdkClientWalletAccess({ + $core.int? id, + WalletAccess? access, + }) { + final result = create(); + if (id != null) result.id = id; + if (access != null) result.access = access; return result; } @@ -1097,8 +1164,9 @@ class SdkClientWalletAccess extends $pb.GeneratedMessage { package: const $pb.PackageName(_omitMessageNames ? '' : 'arbiter.user_agent'), createEmptyInstance: create) - ..aI(1, _omitFieldNames ? '' : 'clientId') - ..aI(2, _omitFieldNames ? '' : 'walletId') + ..aI(1, _omitFieldNames ? '' : 'id') + ..aOM(2, _omitFieldNames ? '' : 'access', + subBuilder: WalletAccess.create) ..hasRequiredFields = false; @$core.Deprecated('See https://github.com/google/protobuf.dart/issues/998.') @@ -1122,27 +1190,29 @@ class SdkClientWalletAccess extends $pb.GeneratedMessage { static SdkClientWalletAccess? _defaultInstance; @$pb.TagNumber(1) - $core.int get clientId => $_getIZ(0); + $core.int get id => $_getIZ(0); @$pb.TagNumber(1) - set clientId($core.int value) => $_setSignedInt32(0, value); + set id($core.int value) => $_setSignedInt32(0, value); @$pb.TagNumber(1) - $core.bool hasClientId() => $_has(0); + $core.bool hasId() => $_has(0); @$pb.TagNumber(1) - void clearClientId() => $_clearField(1); + void clearId() => $_clearField(1); @$pb.TagNumber(2) - $core.int get walletId => $_getIZ(1); + WalletAccess get access => $_getN(1); @$pb.TagNumber(2) - set walletId($core.int value) => $_setSignedInt32(1, value); + set access(WalletAccess value) => $_setField(2, value); @$pb.TagNumber(2) - $core.bool hasWalletId() => $_has(1); + $core.bool hasAccess() => $_has(1); @$pb.TagNumber(2) - void clearWalletId() => $_clearField(2); + void clearAccess() => $_clearField(2); + @$pb.TagNumber(2) + WalletAccess ensureAccess() => $_ensure(1); } class SdkClientGrantWalletAccess extends $pb.GeneratedMessage { factory SdkClientGrantWalletAccess({ - $core.Iterable? accesses, + $core.Iterable? accesses, }) { final result = create(); if (accesses != null) result.accesses.addAll(accesses); @@ -1163,8 +1233,8 @@ class SdkClientGrantWalletAccess extends $pb.GeneratedMessage { package: const $pb.PackageName(_omitMessageNames ? '' : 'arbiter.user_agent'), createEmptyInstance: create) - ..pPM(1, _omitFieldNames ? '' : 'accesses', - subBuilder: SdkClientWalletAccess.create) + ..pPM(1, _omitFieldNames ? '' : 'accesses', + subBuilder: WalletAccess.create) ..hasRequiredFields = false; @$core.Deprecated('See https://github.com/google/protobuf.dart/issues/998.') @@ -1189,12 +1259,12 @@ class SdkClientGrantWalletAccess extends $pb.GeneratedMessage { static SdkClientGrantWalletAccess? _defaultInstance; @$pb.TagNumber(1) - $pb.PbList get accesses => $_getList(0); + $pb.PbList get accesses => $_getList(0); } class SdkClientRevokeWalletAccess extends $pb.GeneratedMessage { factory SdkClientRevokeWalletAccess({ - $core.Iterable? accesses, + $core.Iterable<$core.int>? accesses, }) { final result = create(); if (accesses != null) result.accesses.addAll(accesses); @@ -1215,8 +1285,7 @@ class SdkClientRevokeWalletAccess extends $pb.GeneratedMessage { package: const $pb.PackageName(_omitMessageNames ? '' : 'arbiter.user_agent'), createEmptyInstance: create) - ..pPM(1, _omitFieldNames ? '' : 'accesses', - subBuilder: SdkClientWalletAccess.create) + ..p<$core.int>(1, _omitFieldNames ? '' : 'accesses', $pb.PbFieldType.K3) ..hasRequiredFields = false; @$core.Deprecated('See https://github.com/google/protobuf.dart/issues/998.') @@ -1242,7 +1311,7 @@ class SdkClientRevokeWalletAccess extends $pb.GeneratedMessage { static SdkClientRevokeWalletAccess? _defaultInstance; @$pb.TagNumber(1) - $pb.PbList get accesses => $_getList(0); + $pb.PbList<$core.int> get accesses => $_getList(0); } class ListWalletAccessResponse extends $pb.GeneratedMessage { diff --git a/useragent/lib/proto/user_agent.pbjson.dart b/useragent/lib/proto/user_agent.pbjson.dart index cb98a21..c5bd9bb 100644 --- a/useragent/lib/proto/user_agent.pbjson.dart +++ b/useragent/lib/proto/user_agent.pbjson.dart @@ -418,19 +418,40 @@ final $typed_data.Uint8List sdkClientConnectionCancelDescriptor = $convert.base64Decode( 'ChlTZGtDbGllbnRDb25uZWN0aW9uQ2FuY2VsEhYKBnB1YmtleRgBIAEoDFIGcHVia2V5'); +@$core.Deprecated('Use walletAccessDescriptor instead') +const WalletAccess$json = { + '1': 'WalletAccess', + '2': [ + {'1': 'wallet_id', '3': 1, '4': 1, '5': 5, '10': 'walletId'}, + {'1': 'sdk_client_id', '3': 2, '4': 1, '5': 5, '10': 'sdkClientId'}, + ], +}; + +/// Descriptor for `WalletAccess`. Decode as a `google.protobuf.DescriptorProto`. +final $typed_data.Uint8List walletAccessDescriptor = $convert.base64Decode( + 'CgxXYWxsZXRBY2Nlc3MSGwoJd2FsbGV0X2lkGAEgASgFUgh3YWxsZXRJZBIiCg1zZGtfY2xpZW' + '50X2lkGAIgASgFUgtzZGtDbGllbnRJZA=='); + @$core.Deprecated('Use sdkClientWalletAccessDescriptor instead') const SdkClientWalletAccess$json = { '1': 'SdkClientWalletAccess', '2': [ - {'1': 'client_id', '3': 1, '4': 1, '5': 5, '10': 'clientId'}, - {'1': 'wallet_id', '3': 2, '4': 1, '5': 5, '10': 'walletId'}, + {'1': 'id', '3': 1, '4': 1, '5': 5, '10': 'id'}, + { + '1': 'access', + '3': 2, + '4': 1, + '5': 11, + '6': '.arbiter.user_agent.WalletAccess', + '10': 'access' + }, ], }; /// Descriptor for `SdkClientWalletAccess`. Decode as a `google.protobuf.DescriptorProto`. final $typed_data.Uint8List sdkClientWalletAccessDescriptor = $convert.base64Decode( - 'ChVTZGtDbGllbnRXYWxsZXRBY2Nlc3MSGwoJY2xpZW50X2lkGAEgASgFUghjbGllbnRJZBIbCg' - 'l3YWxsZXRfaWQYAiABKAVSCHdhbGxldElk'); + 'ChVTZGtDbGllbnRXYWxsZXRBY2Nlc3MSDgoCaWQYASABKAVSAmlkEjgKBmFjY2VzcxgCIAEoCz' + 'IgLmFyYml0ZXIudXNlcl9hZ2VudC5XYWxsZXRBY2Nlc3NSBmFjY2Vzcw=='); @$core.Deprecated('Use sdkClientGrantWalletAccessDescriptor instead') const SdkClientGrantWalletAccess$json = { @@ -441,7 +462,7 @@ const SdkClientGrantWalletAccess$json = { '3': 1, '4': 3, '5': 11, - '6': '.arbiter.user_agent.SdkClientWalletAccess', + '6': '.arbiter.user_agent.WalletAccess', '10': 'accesses' }, ], @@ -450,29 +471,22 @@ const SdkClientGrantWalletAccess$json = { /// Descriptor for `SdkClientGrantWalletAccess`. Decode as a `google.protobuf.DescriptorProto`. final $typed_data.Uint8List sdkClientGrantWalletAccessDescriptor = $convert.base64Decode( - 'ChpTZGtDbGllbnRHcmFudFdhbGxldEFjY2VzcxJFCghhY2Nlc3NlcxgBIAMoCzIpLmFyYml0ZX' - 'IudXNlcl9hZ2VudC5TZGtDbGllbnRXYWxsZXRBY2Nlc3NSCGFjY2Vzc2Vz'); + 'ChpTZGtDbGllbnRHcmFudFdhbGxldEFjY2VzcxI8CghhY2Nlc3NlcxgBIAMoCzIgLmFyYml0ZX' + 'IudXNlcl9hZ2VudC5XYWxsZXRBY2Nlc3NSCGFjY2Vzc2Vz'); @$core.Deprecated('Use sdkClientRevokeWalletAccessDescriptor instead') const SdkClientRevokeWalletAccess$json = { '1': 'SdkClientRevokeWalletAccess', '2': [ - { - '1': 'accesses', - '3': 1, - '4': 3, - '5': 11, - '6': '.arbiter.user_agent.SdkClientWalletAccess', - '10': 'accesses' - }, + {'1': 'accesses', '3': 1, '4': 3, '5': 5, '10': 'accesses'}, ], }; /// Descriptor for `SdkClientRevokeWalletAccess`. Decode as a `google.protobuf.DescriptorProto`. final $typed_data.Uint8List sdkClientRevokeWalletAccessDescriptor = $convert.base64Decode( - 'ChtTZGtDbGllbnRSZXZva2VXYWxsZXRBY2Nlc3MSRQoIYWNjZXNzZXMYASADKAsyKS5hcmJpdG' - 'VyLnVzZXJfYWdlbnQuU2RrQ2xpZW50V2FsbGV0QWNjZXNzUghhY2Nlc3Nlcw=='); + 'ChtTZGtDbGllbnRSZXZva2VXYWxsZXRBY2Nlc3MSGgoIYWNjZXNzZXMYASADKAVSCGFjY2Vzc2' + 'Vz'); @$core.Deprecated('Use listWalletAccessResponseDescriptor instead') const ListWalletAccessResponse$json = {