From 05a87194a56d48980297f7f038ae2c17ebe25c5e Mon Sep 17 00:00:00 2001 From: Vladimir Shchukin Date: Wed, 21 Jan 2026 14:02:27 -0500 Subject: [PATCH 01/12] add solana devnet to defaults --- pkg/settings/cresettings/defaults.toml | 1 + 1 file changed, 1 insertion(+) diff --git a/pkg/settings/cresettings/defaults.toml b/pkg/settings/cresettings/defaults.toml index 687bd74d8b..495db11379 100644 --- a/pkg/settings/cresettings/defaults.toml +++ b/pkg/settings/cresettings/defaults.toml @@ -41,6 +41,7 @@ Default = 'false' [PerWorkflow.ChainAllowed.Values] 12922642891491394802 = 'true' 3379446385462418246 = 'true' +16423721717087811551 = 'true' # solana_devnet [PerWorkflow.CRONTrigger] FastestScheduleInterval = '30s' From c7dd5bcaea657f107f13bdd2ce1896bf9554491a Mon Sep 17 00:00:00 2001 From: Vladimir Shchukin Date: Wed, 21 Jan 2026 14:24:09 -0500 Subject: [PATCH 02/12] add solana devnet to allowed chains --- pkg/settings/cresettings/settings.go | 2 ++ 1 file changed, 2 insertions(+) diff --git a/pkg/settings/cresettings/settings.go b/pkg/settings/cresettings/settings.go index 4cb2fe69d8..cb040462b0 100644 --- a/pkg/settings/cresettings/settings.go +++ b/pkg/settings/cresettings/settings.go @@ -103,6 +103,8 @@ var Default = Schema{ "3379446385462418246": true, // geth-devnet2 "12922642891491394802": true, + // solana-devnet + "16423721717087811551": true, }), CRONTrigger: cronTrigger{ From abda6ce8b01ff2c2987924a0f1db48c42f8118b5 Mon Sep 17 00:00:00 2001 From: Vladimir Shchukin Date: Fri, 23 Jan 2026 13:31:38 -0500 Subject: [PATCH 03/12] fix tests --- pkg/settings/cresettings/defaults.json | 1 + pkg/settings/cresettings/defaults.toml | 2 +- pkg/settings/cresettings/settings.go | 4 ++-- 3 files changed, 4 insertions(+), 3 deletions(-) diff --git a/pkg/settings/cresettings/defaults.json b/pkg/settings/cresettings/defaults.json index 654069ee99..7ce0717487 100644 --- a/pkg/settings/cresettings/defaults.json +++ b/pkg/settings/cresettings/defaults.json @@ -38,6 +38,7 @@ "Default": "false", "Values": { "12922642891491394802": "true", + "16423721717087811551": "true", "3379446385462418246": "true" } }, diff --git a/pkg/settings/cresettings/defaults.toml b/pkg/settings/cresettings/defaults.toml index 495db11379..1a27206caf 100644 --- a/pkg/settings/cresettings/defaults.toml +++ b/pkg/settings/cresettings/defaults.toml @@ -40,8 +40,8 @@ Default = 'false' [PerWorkflow.ChainAllowed.Values] 12922642891491394802 = 'true' +16423721717087811551 = 'true' 3379446385462418246 = 'true' -16423721717087811551 = 'true' # solana_devnet [PerWorkflow.CRONTrigger] FastestScheduleInterval = '30s' diff --git a/pkg/settings/cresettings/settings.go b/pkg/settings/cresettings/settings.go index cb040462b0..d7161fbd2d 100644 --- a/pkg/settings/cresettings/settings.go +++ b/pkg/settings/cresettings/settings.go @@ -99,10 +99,10 @@ var Default = Schema{ LogLineLimit: Size(config.KByte), LogEventLimit: Int(1_000), ChainAllowed: PerChainSelector(Bool(false), map[string]bool{ - // geth-testnet - "3379446385462418246": true, // geth-devnet2 "12922642891491394802": true, + // geth-testnet + "3379446385462418246": true, // solana-devnet "16423721717087811551": true, }), From 6c9ccc0e71cea3f6dc1b54be9a20472f8b78b30e Mon Sep 17 00:00:00 2001 From: Silas Lenihan Date: Wed, 28 Jan 2026 14:36:31 -0500 Subject: [PATCH 04/12] Bump solana capability logtrigger --- go.mod | 2 +- go.sum | 4 +- .../v2/chain-capabilities/evm/client.pb.go | 32 +- .../v2/chain-capabilities/solana/client.pb.go | 688 ++++++++++++++---- .../solana/proto_helpers.go | 173 +++++ 5 files changed, 751 insertions(+), 148 deletions(-) create mode 100644 pkg/capabilities/v2/chain-capabilities/solana/proto_helpers.go diff --git a/go.mod b/go.mod index c18f98adbe..4ec8251d91 100644 --- a/go.mod +++ b/go.mod @@ -43,7 +43,7 @@ require ( github.com/smartcontractkit/chain-selectors v1.0.67 github.com/smartcontractkit/chainlink-common/pkg/chipingress v0.0.10 github.com/smartcontractkit/chainlink-protos/billing/go v0.0.0-20251024234028-0988426d98f4 - github.com/smartcontractkit/chainlink-protos/cre/go v0.0.0-20251124151448-0448aefdaab9 + github.com/smartcontractkit/chainlink-protos/cre/go v0.0.0-20260128193424-4b6c859e4e0b github.com/smartcontractkit/chainlink-protos/linking-service/go v0.0.0-20251002192024-d2ad9222409b github.com/smartcontractkit/chainlink-protos/storage-service v0.3.0 github.com/smartcontractkit/chainlink-protos/workflows/go v0.0.0-20260106052706-6dd937cb5ec6 diff --git a/go.sum b/go.sum index 7de2285a3f..7801be878e 100644 --- a/go.sum +++ b/go.sum @@ -334,8 +334,8 @@ github.com/smartcontractkit/chainlink-common/pkg/chipingress v0.0.10 h1:FJAFgXS9 github.com/smartcontractkit/chainlink-common/pkg/chipingress v0.0.10/go.mod h1:oiDa54M0FwxevWwyAX773lwdWvFYYlYHHQV1LQ5HpWY= github.com/smartcontractkit/chainlink-protos/billing/go v0.0.0-20251024234028-0988426d98f4 h1:GCzrxDWn3b7jFfEA+WiYRi8CKoegsayiDoJBCjYkneE= github.com/smartcontractkit/chainlink-protos/billing/go v0.0.0-20251024234028-0988426d98f4/go.mod h1:HHGeDUpAsPa0pmOx7wrByCitjQ0mbUxf0R9v+g67uCA= -github.com/smartcontractkit/chainlink-protos/cre/go v0.0.0-20251124151448-0448aefdaab9 h1:QRWXJusIj/IRY5Pl3JclNvDre0cZPd/5NbILwc4RV2M= -github.com/smartcontractkit/chainlink-protos/cre/go v0.0.0-20251124151448-0448aefdaab9/go.mod h1:jUC52kZzEnWF9tddHh85zolKybmLpbQ1oNA4FjOHt1Q= +github.com/smartcontractkit/chainlink-protos/cre/go v0.0.0-20260128193424-4b6c859e4e0b h1:SFlS50BiFDtTqB/t3k4SQQXGkOVvwa217CnDRgt7elU= +github.com/smartcontractkit/chainlink-protos/cre/go v0.0.0-20260128193424-4b6c859e4e0b/go.mod h1:jUC52kZzEnWF9tddHh85zolKybmLpbQ1oNA4FjOHt1Q= github.com/smartcontractkit/chainlink-protos/linking-service/go v0.0.0-20251002192024-d2ad9222409b h1:QuI6SmQFK/zyUlVWEf0GMkiUYBPY4lssn26nKSd/bOM= github.com/smartcontractkit/chainlink-protos/linking-service/go v0.0.0-20251002192024-d2ad9222409b/go.mod h1:qSTSwX3cBP3FKQwQacdjArqv0g6QnukjV4XuzO6UyoY= github.com/smartcontractkit/chainlink-protos/storage-service v0.3.0 h1:B7itmjy+CMJ26elVw/cAJqqhBQ3Xa/mBYWK0/rQ5MuI= diff --git a/pkg/capabilities/v2/chain-capabilities/evm/client.pb.go b/pkg/capabilities/v2/chain-capabilities/evm/client.pb.go index 58b541fde4..5df100c295 100644 --- a/pkg/capabilities/v2/chain-capabilities/evm/client.pb.go +++ b/pkg/capabilities/v2/chain-capabilities/evm/client.pb.go @@ -1791,7 +1791,7 @@ const file_capabilities_blockchain_evm_v1alpha_client_proto_rawDesc = "" + "\bTxStatus\x12\x13\n" + "\x0fTX_STATUS_FATAL\x10\x00\x12\x16\n" + "\x12TX_STATUS_REVERTED\x10\x01\x12\x15\n" + - "\x11TX_STATUS_SUCCESS\x10\x022\x99\x0e\n" + + "\x11TX_STATUS_SUCCESS\x10\x022\xc5\x11\n" + "\x06Client\x12\x80\x01\n" + "\fCallContract\x128.capabilities.blockchain.evm.v1alpha.CallContractRequest\x1a6.capabilities.blockchain.evm.v1alpha.CallContractReply\x12z\n" + "\n" + @@ -1803,8 +1803,10 @@ const file_capabilities_blockchain_evm_v1alpha_client_proto_rawDesc = "" + "\x0eHeaderByNumber\x12:.capabilities.blockchain.evm.v1alpha.HeaderByNumberRequest\x1a8.capabilities.blockchain.evm.v1alpha.HeaderByNumberReply\x12v\n" + "\n" + "LogTrigger\x12<.capabilities.blockchain.evm.v1alpha.FilterLogTriggerRequest\x1a(.capabilities.blockchain.evm.v1alpha.Log0\x01\x12}\n" + - "\vWriteReport\x127.capabilities.blockchain.evm.v1alpha.WriteReportRequest\x1a5.capabilities.blockchain.evm.v1alpha.WriteReportReply\x1a\xde\x04\x82\xb5\x18\xd9\x04\b\x01\x12\tevm@1.0.0\x1a\xc9\x04\n" + - "\rChainSelector\x12\xb7\x04\x12\xb4\x04\n" + + "\vWriteReport\x127.capabilities.blockchain.evm.v1alpha.WriteReportRequest\x1a5.capabilities.blockchain.evm.v1alpha.WriteReportReply\x1a\x8a\b\x82\xb5\x18\x85\b\b\x01\x12\tevm@1.0.0\x1a\xf5\a\n" + + "\rChainSelector\x12\xe3\a\x12\xe0\a\n" + + "$\n" + + "\x17apechain-testnet-curtis\x10\xc1ô\xf8\x8dĒ\xb2\x89\x01\n" + "\x1d\n" + "\x11avalanche-mainnet\x10\xd5\xe7\x8a\xc0\xe1\u0558\xa4Y\n" + "#\n" + @@ -1827,12 +1829,34 @@ const file_capabilities_blockchain_evm_v1alpha_client_proto_rawDesc = "" + "#ethereum-testnet-sepolia-arbitrum-1\x10\xea\xce\xee\xff궄\xa30\n" + ",\n" + "\x1fethereum-testnet-sepolia-base-1\x10\xb8ʹ\xef\xf6\x90\xaeȏ\x01\n" + + ",\n" + + " ethereum-testnet-sepolia-linea-1\x10\xeb\xaa\xd4\xfe\x82\xf9\xe6\xafO\n" + "/\n" + "#ethereum-testnet-sepolia-optimism-1\x10\x9f\x86š\xbe\xd8\xc3\xc0H\n" + + "1\n" + + "%ethereum-testnet-sepolia-worldchain-1\x10\xba\xdf\xe0\xc5ǩ\xf3\xc5I\n" + + "-\n" + + "!ethereum-testnet-sepolia-zksync-1\x10\xb7\xc1\xfc\xfd\xf2Ā\xde_\n" + + "\x1d\n" + + "\x11etherlink-testnet\x10ϥ\xf1\xce\xfe\x90\xf0\xc0\x1a\n" + + "\x1f\n" + + "\x13hyperliquid-testnet\x10\x88\xce\xddȗ\xe0ɽ;\n" + + " \n" + + "\x13ink-testnet-sepolia\x10\xe8\xf4\xa7\xa5\xf3\xe6\x96\xc0\x87\x01\n" + + "\x19\n" + + "\rjovay-testnet\x10\xe4ϊ\x84\u07b2ގ\r\n" + + "\x1a\n" + + "\x0epharos-testnet\x10\x86\xb9\xe7\xdd\xe2\xbf\xd6\xd77\n" + + "\x1a\n" + + "\x0eplasma-testnet\x10՛\xbf\xa5ô\x99\x877\n" + "\x1b\n" + "\x0fpolygon-mainnet\x10\xb1\xab\xe4\U0001a486\x9d8\n" + "!\n" + - "\x14polygon-testnet-amoy\x10͏\xd6\xdf\xf1ǐ\xfa\xe1\x01b\x06proto3" + "\x14polygon-testnet-amoy\x10͏\xd6\xdf\xf1ǐ\xfa\xe1\x01\n" + + "$\n" + + "\x18private-testnet-andesite\x10Ԧ\x98\xa5\xc1\x8f\xdc\xfc_\n" + + "\x19\n" + + "\rtempo-testnet\x10\xba\xa8\xf7\xeb\xe9\xfdр7b\x06proto3" var ( file_capabilities_blockchain_evm_v1alpha_client_proto_rawDescOnce sync.Once diff --git a/pkg/capabilities/v2/chain-capabilities/solana/client.pb.go b/pkg/capabilities/v2/chain-capabilities/solana/client.pb.go index 261060de3c..7bdc50d4ac 100644 --- a/pkg/capabilities/v2/chain-capabilities/solana/client.pb.go +++ b/pkg/capabilities/v2/chain-capabilities/solana/client.pb.go @@ -239,6 +239,64 @@ func (TxStatus) EnumDescriptor() ([]byte, []int) { return file_capabilities_blockchain_solana_v1alpha_client_proto_rawDescGZIP(), []int{3} } +type ComparisonOperator int32 + +const ( + ComparisonOperator_EQ ComparisonOperator = 0 + ComparisonOperator_NEQ ComparisonOperator = 1 + ComparisonOperator_GT ComparisonOperator = 2 + ComparisonOperator_LT ComparisonOperator = 3 + ComparisonOperator_GTE ComparisonOperator = 4 + ComparisonOperator_LTE ComparisonOperator = 5 +) + +// Enum value maps for ComparisonOperator. +var ( + ComparisonOperator_name = map[int32]string{ + 0: "EQ", + 1: "NEQ", + 2: "GT", + 3: "LT", + 4: "GTE", + 5: "LTE", + } + ComparisonOperator_value = map[string]int32{ + "EQ": 0, + "NEQ": 1, + "GT": 2, + "LT": 3, + "GTE": 4, + "LTE": 5, + } +) + +func (x ComparisonOperator) Enum() *ComparisonOperator { + p := new(ComparisonOperator) + *p = x + return p +} + +func (x ComparisonOperator) String() string { + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) +} + +func (ComparisonOperator) Descriptor() protoreflect.EnumDescriptor { + return file_capabilities_blockchain_solana_v1alpha_client_proto_enumTypes[4].Descriptor() +} + +func (ComparisonOperator) Type() protoreflect.EnumType { + return &file_capabilities_blockchain_solana_v1alpha_client_proto_enumTypes[4] +} + +func (x ComparisonOperator) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) +} + +// Deprecated: Use ComparisonOperator.Descriptor instead. +func (ComparisonOperator) EnumDescriptor() ([]byte, []int) { + return file_capabilities_blockchain_solana_v1alpha_client_proto_rawDescGZIP(), []int{4} +} + type ReceiverContractExecutionStatus int32 const ( @@ -269,11 +327,11 @@ func (x ReceiverContractExecutionStatus) String() string { } func (ReceiverContractExecutionStatus) Descriptor() protoreflect.EnumDescriptor { - return file_capabilities_blockchain_solana_v1alpha_client_proto_enumTypes[4].Descriptor() + return file_capabilities_blockchain_solana_v1alpha_client_proto_enumTypes[5].Descriptor() } func (ReceiverContractExecutionStatus) Type() protoreflect.EnumType { - return &file_capabilities_blockchain_solana_v1alpha_client_proto_enumTypes[4] + return &file_capabilities_blockchain_solana_v1alpha_client_proto_enumTypes[5] } func (x ReceiverContractExecutionStatus) Number() protoreflect.EnumNumber { @@ -282,7 +340,7 @@ func (x ReceiverContractExecutionStatus) Number() protoreflect.EnumNumber { // Deprecated: Use ReceiverContractExecutionStatus.Descriptor instead. func (ReceiverContractExecutionStatus) EnumDescriptor() ([]byte, []int) { - return file_capabilities_blockchain_solana_v1alpha_client_proto_rawDescGZIP(), []int{4} + return file_capabilities_blockchain_solana_v1alpha_client_proto_rawDescGZIP(), []int{5} } // On-chain account state. @@ -2800,15 +2858,171 @@ func (x *SimulateTransactionAccountsOpts) GetAddresses() [][]byte { return nil } -type FilterLogTriggerRequest struct { +type ValueComparator struct { state protoimpl.MessageState `protogen:"open.v1"` + Value []byte `protobuf:"bytes,1,opt,name=value,proto3" json:"value,omitempty"` + Operator ComparisonOperator `protobuf:"varint,2,opt,name=operator,proto3,enum=capabilities.blockchain.solana.v1alpha.ComparisonOperator" json:"operator,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *ValueComparator) Reset() { + *x = ValueComparator{} + mi := &file_capabilities_blockchain_solana_v1alpha_client_proto_msgTypes[42] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *ValueComparator) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ValueComparator) ProtoMessage() {} + +func (x *ValueComparator) ProtoReflect() protoreflect.Message { + mi := &file_capabilities_blockchain_solana_v1alpha_client_proto_msgTypes[42] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use ValueComparator.ProtoReflect.Descriptor instead. +func (*ValueComparator) Descriptor() ([]byte, []int) { + return file_capabilities_blockchain_solana_v1alpha_client_proto_rawDescGZIP(), []int{42} +} + +func (x *ValueComparator) GetValue() []byte { + if x != nil { + return x.Value + } + return nil +} + +func (x *ValueComparator) GetOperator() ComparisonOperator { + if x != nil { + return x.Operator + } + return ComparisonOperator_EQ +} + +type SubkeyFilterCriteria struct { + state protoimpl.MessageState `protogen:"open.v1"` + SubkeyIndex uint64 `protobuf:"varint,1,opt,name=subkey_index,json=subkeyIndex,proto3" json:"subkey_index,omitempty"` + Comparers []*ValueComparator `protobuf:"bytes,2,rep,name=comparers,proto3" json:"comparers,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *SubkeyFilterCriteria) Reset() { + *x = SubkeyFilterCriteria{} + mi := &file_capabilities_blockchain_solana_v1alpha_client_proto_msgTypes[43] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *SubkeyFilterCriteria) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*SubkeyFilterCriteria) ProtoMessage() {} + +func (x *SubkeyFilterCriteria) ProtoReflect() protoreflect.Message { + mi := &file_capabilities_blockchain_solana_v1alpha_client_proto_msgTypes[43] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use SubkeyFilterCriteria.ProtoReflect.Descriptor instead. +func (*SubkeyFilterCriteria) Descriptor() ([]byte, []int) { + return file_capabilities_blockchain_solana_v1alpha_client_proto_rawDescGZIP(), []int{43} +} + +func (x *SubkeyFilterCriteria) GetSubkeyIndex() uint64 { + if x != nil { + return x.SubkeyIndex + } + return 0 +} + +func (x *SubkeyFilterCriteria) GetComparers() []*ValueComparator { + if x != nil { + return x.Comparers + } + return nil +} + +type SubkeyPath struct { + state protoimpl.MessageState `protogen:"open.v1"` + Path []string `protobuf:"bytes,1,rep,name=path,proto3" json:"path,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *SubkeyPath) Reset() { + *x = SubkeyPath{} + mi := &file_capabilities_blockchain_solana_v1alpha_client_proto_msgTypes[44] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *SubkeyPath) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*SubkeyPath) ProtoMessage() {} + +func (x *SubkeyPath) ProtoReflect() protoreflect.Message { + mi := &file_capabilities_blockchain_solana_v1alpha_client_proto_msgTypes[44] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use SubkeyPath.ProtoReflect.Descriptor instead. +func (*SubkeyPath) Descriptor() ([]byte, []int) { + return file_capabilities_blockchain_solana_v1alpha_client_proto_rawDescGZIP(), []int{44} +} + +func (x *SubkeyPath) GetPath() []string { + if x != nil { + return x.Path + } + return nil +} + +type FilterLogTriggerRequest struct { + state protoimpl.MessageState `protogen:"open.v1"` + Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` + Address []byte `protobuf:"bytes,2,opt,name=address,proto3" json:"address,omitempty"` // Solana PublicKey (32 bytes) + EventName string `protobuf:"bytes,3,opt,name=event_name,json=eventName,proto3" json:"event_name,omitempty"` + EventSig []byte `protobuf:"bytes,4,opt,name=event_sig,json=eventSig,proto3" json:"event_sig,omitempty"` // Event signature + EventIdlJson []byte `protobuf:"bytes,5,opt,name=event_idl_json,json=eventIdlJson,proto3" json:"event_idl_json,omitempty"` + SubkeyPaths []*SubkeyPath `protobuf:"bytes,6,rep,name=subkey_paths,json=subkeyPaths,proto3" json:"subkey_paths,omitempty"` + SubkeyFilters []*SubkeyFilterCriteria `protobuf:"bytes,7,rep,name=subkey_filters,json=subkeyFilters,proto3" json:"subkey_filters,omitempty"` + StartingBlock int64 `protobuf:"varint,8,opt,name=starting_block,json=startingBlock,proto3" json:"starting_block,omitempty"` unknownFields protoimpl.UnknownFields sizeCache protoimpl.SizeCache } func (x *FilterLogTriggerRequest) Reset() { *x = FilterLogTriggerRequest{} - mi := &file_capabilities_blockchain_solana_v1alpha_client_proto_msgTypes[42] + mi := &file_capabilities_blockchain_solana_v1alpha_client_proto_msgTypes[45] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2820,7 +3034,7 @@ func (x *FilterLogTriggerRequest) String() string { func (*FilterLogTriggerRequest) ProtoMessage() {} func (x *FilterLogTriggerRequest) ProtoReflect() protoreflect.Message { - mi := &file_capabilities_blockchain_solana_v1alpha_client_proto_msgTypes[42] + mi := &file_capabilities_blockchain_solana_v1alpha_client_proto_msgTypes[45] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2833,18 +3047,85 @@ func (x *FilterLogTriggerRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use FilterLogTriggerRequest.ProtoReflect.Descriptor instead. func (*FilterLogTriggerRequest) Descriptor() ([]byte, []int) { - return file_capabilities_blockchain_solana_v1alpha_client_proto_rawDescGZIP(), []int{42} + return file_capabilities_blockchain_solana_v1alpha_client_proto_rawDescGZIP(), []int{45} +} + +func (x *FilterLogTriggerRequest) GetName() string { + if x != nil { + return x.Name + } + return "" +} + +func (x *FilterLogTriggerRequest) GetAddress() []byte { + if x != nil { + return x.Address + } + return nil +} + +func (x *FilterLogTriggerRequest) GetEventName() string { + if x != nil { + return x.EventName + } + return "" +} + +func (x *FilterLogTriggerRequest) GetEventSig() []byte { + if x != nil { + return x.EventSig + } + return nil +} + +func (x *FilterLogTriggerRequest) GetEventIdlJson() []byte { + if x != nil { + return x.EventIdlJson + } + return nil +} + +func (x *FilterLogTriggerRequest) GetSubkeyPaths() []*SubkeyPath { + if x != nil { + return x.SubkeyPaths + } + return nil +} + +func (x *FilterLogTriggerRequest) GetSubkeyFilters() []*SubkeyFilterCriteria { + if x != nil { + return x.SubkeyFilters + } + return nil +} + +func (x *FilterLogTriggerRequest) GetStartingBlock() int64 { + if x != nil { + return x.StartingBlock + } + return 0 } type Log struct { - state protoimpl.MessageState `protogen:"open.v1"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + ChainId string `protobuf:"bytes,1,opt,name=chain_id,json=chainId,proto3" json:"chain_id,omitempty"` // Chain identifier + LogIndex int64 `protobuf:"varint,2,opt,name=log_index,json=logIndex,proto3" json:"log_index,omitempty"` // Index of the log within the block + BlockHash []byte `protobuf:"bytes,3,opt,name=block_hash,json=blockHash,proto3" json:"block_hash,omitempty"` // 32-byte block hash + BlockNumber int64 `protobuf:"varint,4,opt,name=block_number,json=blockNumber,proto3" json:"block_number,omitempty"` // Block/slot number + BlockTimestamp uint64 `protobuf:"varint,5,opt,name=block_timestamp,json=blockTimestamp,proto3" json:"block_timestamp,omitempty"` // Unix timestamp of the block + Address []byte `protobuf:"bytes,6,opt,name=address,proto3" json:"address,omitempty"` // 32-byte program PublicKey + EventSig []byte `protobuf:"bytes,7,opt,name=event_sig,json=eventSig,proto3" json:"event_sig,omitempty"` // 8-byte event signature + TxHash []byte `protobuf:"bytes,8,opt,name=tx_hash,json=txHash,proto3" json:"tx_hash,omitempty"` // 64-byte transaction signature + Data []byte `protobuf:"bytes,9,opt,name=data,proto3" json:"data,omitempty"` // Decoded event data + SequenceNum int64 `protobuf:"varint,10,opt,name=sequence_num,json=sequenceNum,proto3" json:"sequence_num,omitempty"` // Sequence number for ordering + Error *string `protobuf:"bytes,11,opt,name=error,proto3,oneof" json:"error,omitempty"` // Error message if log processing failed + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *Log) Reset() { *x = Log{} - mi := &file_capabilities_blockchain_solana_v1alpha_client_proto_msgTypes[43] + mi := &file_capabilities_blockchain_solana_v1alpha_client_proto_msgTypes[46] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2856,7 +3137,7 @@ func (x *Log) String() string { func (*Log) ProtoMessage() {} func (x *Log) ProtoReflect() protoreflect.Message { - mi := &file_capabilities_blockchain_solana_v1alpha_client_proto_msgTypes[43] + mi := &file_capabilities_blockchain_solana_v1alpha_client_proto_msgTypes[46] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2869,7 +3150,84 @@ func (x *Log) ProtoReflect() protoreflect.Message { // Deprecated: Use Log.ProtoReflect.Descriptor instead. func (*Log) Descriptor() ([]byte, []int) { - return file_capabilities_blockchain_solana_v1alpha_client_proto_rawDescGZIP(), []int{43} + return file_capabilities_blockchain_solana_v1alpha_client_proto_rawDescGZIP(), []int{46} +} + +func (x *Log) GetChainId() string { + if x != nil { + return x.ChainId + } + return "" +} + +func (x *Log) GetLogIndex() int64 { + if x != nil { + return x.LogIndex + } + return 0 +} + +func (x *Log) GetBlockHash() []byte { + if x != nil { + return x.BlockHash + } + return nil +} + +func (x *Log) GetBlockNumber() int64 { + if x != nil { + return x.BlockNumber + } + return 0 +} + +func (x *Log) GetBlockTimestamp() uint64 { + if x != nil { + return x.BlockTimestamp + } + return 0 +} + +func (x *Log) GetAddress() []byte { + if x != nil { + return x.Address + } + return nil +} + +func (x *Log) GetEventSig() []byte { + if x != nil { + return x.EventSig + } + return nil +} + +func (x *Log) GetTxHash() []byte { + if x != nil { + return x.TxHash + } + return nil +} + +func (x *Log) GetData() []byte { + if x != nil { + return x.Data + } + return nil +} + +func (x *Log) GetSequenceNum() int64 { + if x != nil { + return x.SequenceNum + } + return 0 +} + +func (x *Log) GetError() string { + if x != nil && x.Error != nil { + return *x.Error + } + return "" } // All metas are non-signers. @@ -2883,7 +3241,7 @@ type AccountMeta struct { func (x *AccountMeta) Reset() { *x = AccountMeta{} - mi := &file_capabilities_blockchain_solana_v1alpha_client_proto_msgTypes[44] + mi := &file_capabilities_blockchain_solana_v1alpha_client_proto_msgTypes[47] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2895,7 +3253,7 @@ func (x *AccountMeta) String() string { func (*AccountMeta) ProtoMessage() {} func (x *AccountMeta) ProtoReflect() protoreflect.Message { - mi := &file_capabilities_blockchain_solana_v1alpha_client_proto_msgTypes[44] + mi := &file_capabilities_blockchain_solana_v1alpha_client_proto_msgTypes[47] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2908,7 +3266,7 @@ func (x *AccountMeta) ProtoReflect() protoreflect.Message { // Deprecated: Use AccountMeta.ProtoReflect.Descriptor instead. func (*AccountMeta) Descriptor() ([]byte, []int) { - return file_capabilities_blockchain_solana_v1alpha_client_proto_rawDescGZIP(), []int{44} + return file_capabilities_blockchain_solana_v1alpha_client_proto_rawDescGZIP(), []int{47} } func (x *AccountMeta) GetPublicKey() []byte { @@ -2937,7 +3295,7 @@ type WriteReportRequest struct { func (x *WriteReportRequest) Reset() { *x = WriteReportRequest{} - mi := &file_capabilities_blockchain_solana_v1alpha_client_proto_msgTypes[45] + mi := &file_capabilities_blockchain_solana_v1alpha_client_proto_msgTypes[48] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2949,7 +3307,7 @@ func (x *WriteReportRequest) String() string { func (*WriteReportRequest) ProtoMessage() {} func (x *WriteReportRequest) ProtoReflect() protoreflect.Message { - mi := &file_capabilities_blockchain_solana_v1alpha_client_proto_msgTypes[45] + mi := &file_capabilities_blockchain_solana_v1alpha_client_proto_msgTypes[48] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2962,7 +3320,7 @@ func (x *WriteReportRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use WriteReportRequest.ProtoReflect.Descriptor instead. func (*WriteReportRequest) Descriptor() ([]byte, []int) { - return file_capabilities_blockchain_solana_v1alpha_client_proto_rawDescGZIP(), []int{45} + return file_capabilities_blockchain_solana_v1alpha_client_proto_rawDescGZIP(), []int{48} } func (x *WriteReportRequest) GetRemainingAccounts() []*AccountMeta { @@ -3006,7 +3364,7 @@ type WriteReportReply struct { func (x *WriteReportReply) Reset() { *x = WriteReportReply{} - mi := &file_capabilities_blockchain_solana_v1alpha_client_proto_msgTypes[46] + mi := &file_capabilities_blockchain_solana_v1alpha_client_proto_msgTypes[49] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3018,7 +3376,7 @@ func (x *WriteReportReply) String() string { func (*WriteReportReply) ProtoMessage() {} func (x *WriteReportReply) ProtoReflect() protoreflect.Message { - mi := &file_capabilities_blockchain_solana_v1alpha_client_proto_msgTypes[46] + mi := &file_capabilities_blockchain_solana_v1alpha_client_proto_msgTypes[49] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3031,7 +3389,7 @@ func (x *WriteReportReply) ProtoReflect() protoreflect.Message { // Deprecated: Use WriteReportReply.ProtoReflect.Descriptor instead. func (*WriteReportReply) Descriptor() ([]byte, []int) { - return file_capabilities_blockchain_solana_v1alpha_client_proto_rawDescGZIP(), []int{46} + return file_capabilities_blockchain_solana_v1alpha_client_proto_rawDescGZIP(), []int{49} } func (x *WriteReportReply) GetTxStatus() TxStatus { @@ -3274,9 +3632,41 @@ const file_capabilities_blockchain_solana_v1alpha_client_proto_rawDesc = "" + "\x04opts\x18\x03 \x01(\v26.capabilities.blockchain.solana.v1alpha.SimulateTXOptsR\x04opts\"\x91\x01\n" + "\x1fSimulateTransactionAccountsOpts\x12P\n" + "\bencoding\x18\x01 \x01(\x0e24.capabilities.blockchain.solana.v1alpha.EncodingTypeR\bencoding\x12\x1c\n" + - "\taddresses\x18\x02 \x03(\fR\taddresses\"\x19\n" + - "\x17FilterLogTriggerRequest\"\x05\n" + - "\x03Log\"M\n" + + "\taddresses\x18\x02 \x03(\fR\taddresses\"\x7f\n" + + "\x0fValueComparator\x12\x14\n" + + "\x05value\x18\x01 \x01(\fR\x05value\x12V\n" + + "\boperator\x18\x02 \x01(\x0e2:.capabilities.blockchain.solana.v1alpha.ComparisonOperatorR\boperator\"\x90\x01\n" + + "\x14SubkeyFilterCriteria\x12!\n" + + "\fsubkey_index\x18\x01 \x01(\x04R\vsubkeyIndex\x12U\n" + + "\tcomparers\x18\x02 \x03(\v27.capabilities.blockchain.solana.v1alpha.ValueComparatorR\tcomparers\" \n" + + "\n" + + "SubkeyPath\x12\x12\n" + + "\x04path\x18\x01 \x03(\tR\x04path\"\x8c\x03\n" + + "\x17FilterLogTriggerRequest\x12\x12\n" + + "\x04name\x18\x01 \x01(\tR\x04name\x12\x18\n" + + "\aaddress\x18\x02 \x01(\fR\aaddress\x12\x1d\n" + + "\n" + + "event_name\x18\x03 \x01(\tR\teventName\x12\x1b\n" + + "\tevent_sig\x18\x04 \x01(\fR\beventSig\x12$\n" + + "\x0eevent_idl_json\x18\x05 \x01(\fR\feventIdlJson\x12U\n" + + "\fsubkey_paths\x18\x06 \x03(\v22.capabilities.blockchain.solana.v1alpha.SubkeyPathR\vsubkeyPaths\x12c\n" + + "\x0esubkey_filters\x18\a \x03(\v2<.capabilities.blockchain.solana.v1alpha.SubkeyFilterCriteriaR\rsubkeyFilters\x12%\n" + + "\x0estarting_block\x18\b \x01(\x03R\rstartingBlock\"\xd4\x02\n" + + "\x03Log\x12\x19\n" + + "\bchain_id\x18\x01 \x01(\tR\achainId\x12\x1b\n" + + "\tlog_index\x18\x02 \x01(\x03R\blogIndex\x12\x1d\n" + + "\n" + + "block_hash\x18\x03 \x01(\fR\tblockHash\x12!\n" + + "\fblock_number\x18\x04 \x01(\x03R\vblockNumber\x12'\n" + + "\x0fblock_timestamp\x18\x05 \x01(\x04R\x0eblockTimestamp\x12\x18\n" + + "\aaddress\x18\x06 \x01(\fR\aaddress\x12\x1b\n" + + "\tevent_sig\x18\a \x01(\fR\beventSig\x12\x17\n" + + "\atx_hash\x18\b \x01(\fR\x06txHash\x12\x12\n" + + "\x04data\x18\t \x01(\fR\x04data\x12!\n" + + "\fsequence_num\x18\n" + + " \x01(\x03R\vsequenceNum\x12\x19\n" + + "\x05error\x18\v \x01(\tH\x00R\x05error\x88\x01\x01B\b\n" + + "\x06_error\"M\n" + "\vAccountMeta\x12\x1d\n" + "\n" + "public_key\x18\x01 \x01(\fR\tpublicKey\x12\x1f\n" + @@ -3318,7 +3708,14 @@ const file_capabilities_blockchain_solana_v1alpha_client_proto_rawDesc = "" + "\bTxStatus\x12\x13\n" + "\x0fTX_STATUS_FATAL\x10\x00\x12\x15\n" + "\x11TX_STATUS_ABORTED\x10\x01\x12\x15\n" + - "\x11TX_STATUS_SUCCESS\x10\x02*\x82\x01\n" + + "\x11TX_STATUS_SUCCESS\x10\x02*G\n" + + "\x12ComparisonOperator\x12\x06\n" + + "\x02EQ\x10\x00\x12\a\n" + + "\x03NEQ\x10\x01\x12\x06\n" + + "\x02GT\x10\x02\x12\x06\n" + + "\x02LT\x10\x03\x12\a\n" + + "\x03GTE\x10\x04\x12\a\n" + + "\x03LTE\x10\x05*\x82\x01\n" + "\x1fReceiverContractExecutionStatus\x12.\n" + "*RECEIVER_CONTRACT_EXECUTION_STATUS_SUCCESS\x10\x00\x12/\n" + "+RECEIVER_CONTRACT_EXECUTION_STATUS_REVERTED\x10\x012\xb8\f\n" + @@ -3355,138 +3752,146 @@ func file_capabilities_blockchain_solana_v1alpha_client_proto_rawDescGZIP() []by return file_capabilities_blockchain_solana_v1alpha_client_proto_rawDescData } -var file_capabilities_blockchain_solana_v1alpha_client_proto_enumTypes = make([]protoimpl.EnumInfo, 5) -var file_capabilities_blockchain_solana_v1alpha_client_proto_msgTypes = make([]protoimpl.MessageInfo, 47) +var file_capabilities_blockchain_solana_v1alpha_client_proto_enumTypes = make([]protoimpl.EnumInfo, 6) +var file_capabilities_blockchain_solana_v1alpha_client_proto_msgTypes = make([]protoimpl.MessageInfo, 50) var file_capabilities_blockchain_solana_v1alpha_client_proto_goTypes = []any{ (EncodingType)(0), // 0: capabilities.blockchain.solana.v1alpha.EncodingType (CommitmentType)(0), // 1: capabilities.blockchain.solana.v1alpha.CommitmentType (ConfirmationStatusType)(0), // 2: capabilities.blockchain.solana.v1alpha.ConfirmationStatusType (TxStatus)(0), // 3: capabilities.blockchain.solana.v1alpha.TxStatus - (ReceiverContractExecutionStatus)(0), // 4: capabilities.blockchain.solana.v1alpha.ReceiverContractExecutionStatus - (*Account)(nil), // 5: capabilities.blockchain.solana.v1alpha.Account - (*ComputeConfig)(nil), // 6: capabilities.blockchain.solana.v1alpha.ComputeConfig - (*DataBytesOrJSON)(nil), // 7: capabilities.blockchain.solana.v1alpha.DataBytesOrJSON - (*DataSlice)(nil), // 8: capabilities.blockchain.solana.v1alpha.DataSlice - (*GetAccountInfoOpts)(nil), // 9: capabilities.blockchain.solana.v1alpha.GetAccountInfoOpts - (*GetAccountInfoWithOptsReply)(nil), // 10: capabilities.blockchain.solana.v1alpha.GetAccountInfoWithOptsReply - (*GetAccountInfoWithOptsRequest)(nil), // 11: capabilities.blockchain.solana.v1alpha.GetAccountInfoWithOptsRequest - (*GetBalanceReply)(nil), // 12: capabilities.blockchain.solana.v1alpha.GetBalanceReply - (*GetBalanceRequest)(nil), // 13: capabilities.blockchain.solana.v1alpha.GetBalanceRequest - (*GetBlockOpts)(nil), // 14: capabilities.blockchain.solana.v1alpha.GetBlockOpts - (*GetBlockReply)(nil), // 15: capabilities.blockchain.solana.v1alpha.GetBlockReply - (*GetBlockRequest)(nil), // 16: capabilities.blockchain.solana.v1alpha.GetBlockRequest - (*GetFeeForMessageReply)(nil), // 17: capabilities.blockchain.solana.v1alpha.GetFeeForMessageReply - (*GetFeeForMessageRequest)(nil), // 18: capabilities.blockchain.solana.v1alpha.GetFeeForMessageRequest - (*GetMultipleAccountsOpts)(nil), // 19: capabilities.blockchain.solana.v1alpha.GetMultipleAccountsOpts - (*OptionalAccountWrapper)(nil), // 20: capabilities.blockchain.solana.v1alpha.OptionalAccountWrapper - (*GetMultipleAccountsWithOptsReply)(nil), // 21: capabilities.blockchain.solana.v1alpha.GetMultipleAccountsWithOptsReply - (*GetMultipleAccountsWithOptsRequest)(nil), // 22: capabilities.blockchain.solana.v1alpha.GetMultipleAccountsWithOptsRequest - (*GetSignatureStatusesReply)(nil), // 23: capabilities.blockchain.solana.v1alpha.GetSignatureStatusesReply - (*GetSignatureStatusesRequest)(nil), // 24: capabilities.blockchain.solana.v1alpha.GetSignatureStatusesRequest - (*GetSignatureStatusesResult)(nil), // 25: capabilities.blockchain.solana.v1alpha.GetSignatureStatusesResult - (*GetSlotHeightReply)(nil), // 26: capabilities.blockchain.solana.v1alpha.GetSlotHeightReply - (*GetSlotHeightRequest)(nil), // 27: capabilities.blockchain.solana.v1alpha.GetSlotHeightRequest - (*MessageHeader)(nil), // 28: capabilities.blockchain.solana.v1alpha.MessageHeader - (*ParsedMessage)(nil), // 29: capabilities.blockchain.solana.v1alpha.ParsedMessage - (*ParsedTransaction)(nil), // 30: capabilities.blockchain.solana.v1alpha.ParsedTransaction - (*UiTokenAmount)(nil), // 31: capabilities.blockchain.solana.v1alpha.UiTokenAmount - (*TokenBalance)(nil), // 32: capabilities.blockchain.solana.v1alpha.TokenBalance - (*InnerInstruction)(nil), // 33: capabilities.blockchain.solana.v1alpha.InnerInstruction - (*LoadedAddresses)(nil), // 34: capabilities.blockchain.solana.v1alpha.LoadedAddresses - (*CompiledInstruction)(nil), // 35: capabilities.blockchain.solana.v1alpha.CompiledInstruction - (*Data)(nil), // 36: capabilities.blockchain.solana.v1alpha.Data - (*ReturnData)(nil), // 37: capabilities.blockchain.solana.v1alpha.ReturnData - (*TransactionMeta)(nil), // 38: capabilities.blockchain.solana.v1alpha.TransactionMeta - (*TransactionEnvelope)(nil), // 39: capabilities.blockchain.solana.v1alpha.TransactionEnvelope - (*GetTransactionReply)(nil), // 40: capabilities.blockchain.solana.v1alpha.GetTransactionReply - (*GetTransactionRequest)(nil), // 41: capabilities.blockchain.solana.v1alpha.GetTransactionRequest - (*RPCContext)(nil), // 42: capabilities.blockchain.solana.v1alpha.RPCContext - (*SimulateTXOpts)(nil), // 43: capabilities.blockchain.solana.v1alpha.SimulateTXOpts - (*SimulateTXReply)(nil), // 44: capabilities.blockchain.solana.v1alpha.SimulateTXReply - (*SimulateTXRequest)(nil), // 45: capabilities.blockchain.solana.v1alpha.SimulateTXRequest - (*SimulateTransactionAccountsOpts)(nil), // 46: capabilities.blockchain.solana.v1alpha.SimulateTransactionAccountsOpts - (*FilterLogTriggerRequest)(nil), // 47: capabilities.blockchain.solana.v1alpha.FilterLogTriggerRequest - (*Log)(nil), // 48: capabilities.blockchain.solana.v1alpha.Log - (*AccountMeta)(nil), // 49: capabilities.blockchain.solana.v1alpha.AccountMeta - (*WriteReportRequest)(nil), // 50: capabilities.blockchain.solana.v1alpha.WriteReportRequest - (*WriteReportReply)(nil), // 51: capabilities.blockchain.solana.v1alpha.WriteReportReply - (*pb.BigInt)(nil), // 52: values.v1.BigInt - (*sdk.ReportResponse)(nil), // 53: sdk.v1alpha.ReportResponse + (ComparisonOperator)(0), // 4: capabilities.blockchain.solana.v1alpha.ComparisonOperator + (ReceiverContractExecutionStatus)(0), // 5: capabilities.blockchain.solana.v1alpha.ReceiverContractExecutionStatus + (*Account)(nil), // 6: capabilities.blockchain.solana.v1alpha.Account + (*ComputeConfig)(nil), // 7: capabilities.blockchain.solana.v1alpha.ComputeConfig + (*DataBytesOrJSON)(nil), // 8: capabilities.blockchain.solana.v1alpha.DataBytesOrJSON + (*DataSlice)(nil), // 9: capabilities.blockchain.solana.v1alpha.DataSlice + (*GetAccountInfoOpts)(nil), // 10: capabilities.blockchain.solana.v1alpha.GetAccountInfoOpts + (*GetAccountInfoWithOptsReply)(nil), // 11: capabilities.blockchain.solana.v1alpha.GetAccountInfoWithOptsReply + (*GetAccountInfoWithOptsRequest)(nil), // 12: capabilities.blockchain.solana.v1alpha.GetAccountInfoWithOptsRequest + (*GetBalanceReply)(nil), // 13: capabilities.blockchain.solana.v1alpha.GetBalanceReply + (*GetBalanceRequest)(nil), // 14: capabilities.blockchain.solana.v1alpha.GetBalanceRequest + (*GetBlockOpts)(nil), // 15: capabilities.blockchain.solana.v1alpha.GetBlockOpts + (*GetBlockReply)(nil), // 16: capabilities.blockchain.solana.v1alpha.GetBlockReply + (*GetBlockRequest)(nil), // 17: capabilities.blockchain.solana.v1alpha.GetBlockRequest + (*GetFeeForMessageReply)(nil), // 18: capabilities.blockchain.solana.v1alpha.GetFeeForMessageReply + (*GetFeeForMessageRequest)(nil), // 19: capabilities.blockchain.solana.v1alpha.GetFeeForMessageRequest + (*GetMultipleAccountsOpts)(nil), // 20: capabilities.blockchain.solana.v1alpha.GetMultipleAccountsOpts + (*OptionalAccountWrapper)(nil), // 21: capabilities.blockchain.solana.v1alpha.OptionalAccountWrapper + (*GetMultipleAccountsWithOptsReply)(nil), // 22: capabilities.blockchain.solana.v1alpha.GetMultipleAccountsWithOptsReply + (*GetMultipleAccountsWithOptsRequest)(nil), // 23: capabilities.blockchain.solana.v1alpha.GetMultipleAccountsWithOptsRequest + (*GetSignatureStatusesReply)(nil), // 24: capabilities.blockchain.solana.v1alpha.GetSignatureStatusesReply + (*GetSignatureStatusesRequest)(nil), // 25: capabilities.blockchain.solana.v1alpha.GetSignatureStatusesRequest + (*GetSignatureStatusesResult)(nil), // 26: capabilities.blockchain.solana.v1alpha.GetSignatureStatusesResult + (*GetSlotHeightReply)(nil), // 27: capabilities.blockchain.solana.v1alpha.GetSlotHeightReply + (*GetSlotHeightRequest)(nil), // 28: capabilities.blockchain.solana.v1alpha.GetSlotHeightRequest + (*MessageHeader)(nil), // 29: capabilities.blockchain.solana.v1alpha.MessageHeader + (*ParsedMessage)(nil), // 30: capabilities.blockchain.solana.v1alpha.ParsedMessage + (*ParsedTransaction)(nil), // 31: capabilities.blockchain.solana.v1alpha.ParsedTransaction + (*UiTokenAmount)(nil), // 32: capabilities.blockchain.solana.v1alpha.UiTokenAmount + (*TokenBalance)(nil), // 33: capabilities.blockchain.solana.v1alpha.TokenBalance + (*InnerInstruction)(nil), // 34: capabilities.blockchain.solana.v1alpha.InnerInstruction + (*LoadedAddresses)(nil), // 35: capabilities.blockchain.solana.v1alpha.LoadedAddresses + (*CompiledInstruction)(nil), // 36: capabilities.blockchain.solana.v1alpha.CompiledInstruction + (*Data)(nil), // 37: capabilities.blockchain.solana.v1alpha.Data + (*ReturnData)(nil), // 38: capabilities.blockchain.solana.v1alpha.ReturnData + (*TransactionMeta)(nil), // 39: capabilities.blockchain.solana.v1alpha.TransactionMeta + (*TransactionEnvelope)(nil), // 40: capabilities.blockchain.solana.v1alpha.TransactionEnvelope + (*GetTransactionReply)(nil), // 41: capabilities.blockchain.solana.v1alpha.GetTransactionReply + (*GetTransactionRequest)(nil), // 42: capabilities.blockchain.solana.v1alpha.GetTransactionRequest + (*RPCContext)(nil), // 43: capabilities.blockchain.solana.v1alpha.RPCContext + (*SimulateTXOpts)(nil), // 44: capabilities.blockchain.solana.v1alpha.SimulateTXOpts + (*SimulateTXReply)(nil), // 45: capabilities.blockchain.solana.v1alpha.SimulateTXReply + (*SimulateTXRequest)(nil), // 46: capabilities.blockchain.solana.v1alpha.SimulateTXRequest + (*SimulateTransactionAccountsOpts)(nil), // 47: capabilities.blockchain.solana.v1alpha.SimulateTransactionAccountsOpts + (*ValueComparator)(nil), // 48: capabilities.blockchain.solana.v1alpha.ValueComparator + (*SubkeyFilterCriteria)(nil), // 49: capabilities.blockchain.solana.v1alpha.SubkeyFilterCriteria + (*SubkeyPath)(nil), // 50: capabilities.blockchain.solana.v1alpha.SubkeyPath + (*FilterLogTriggerRequest)(nil), // 51: capabilities.blockchain.solana.v1alpha.FilterLogTriggerRequest + (*Log)(nil), // 52: capabilities.blockchain.solana.v1alpha.Log + (*AccountMeta)(nil), // 53: capabilities.blockchain.solana.v1alpha.AccountMeta + (*WriteReportRequest)(nil), // 54: capabilities.blockchain.solana.v1alpha.WriteReportRequest + (*WriteReportReply)(nil), // 55: capabilities.blockchain.solana.v1alpha.WriteReportReply + (*pb.BigInt)(nil), // 56: values.v1.BigInt + (*sdk.ReportResponse)(nil), // 57: sdk.v1alpha.ReportResponse } var file_capabilities_blockchain_solana_v1alpha_client_proto_depIdxs = []int32{ - 7, // 0: capabilities.blockchain.solana.v1alpha.Account.data:type_name -> capabilities.blockchain.solana.v1alpha.DataBytesOrJSON - 52, // 1: capabilities.blockchain.solana.v1alpha.Account.rent_epoch:type_name -> values.v1.BigInt + 8, // 0: capabilities.blockchain.solana.v1alpha.Account.data:type_name -> capabilities.blockchain.solana.v1alpha.DataBytesOrJSON + 56, // 1: capabilities.blockchain.solana.v1alpha.Account.rent_epoch:type_name -> values.v1.BigInt 0, // 2: capabilities.blockchain.solana.v1alpha.DataBytesOrJSON.encoding:type_name -> capabilities.blockchain.solana.v1alpha.EncodingType 0, // 3: capabilities.blockchain.solana.v1alpha.GetAccountInfoOpts.encoding:type_name -> capabilities.blockchain.solana.v1alpha.EncodingType 1, // 4: capabilities.blockchain.solana.v1alpha.GetAccountInfoOpts.commitment:type_name -> capabilities.blockchain.solana.v1alpha.CommitmentType - 8, // 5: capabilities.blockchain.solana.v1alpha.GetAccountInfoOpts.data_slice:type_name -> capabilities.blockchain.solana.v1alpha.DataSlice - 42, // 6: capabilities.blockchain.solana.v1alpha.GetAccountInfoWithOptsReply.rpc_context:type_name -> capabilities.blockchain.solana.v1alpha.RPCContext - 5, // 7: capabilities.blockchain.solana.v1alpha.GetAccountInfoWithOptsReply.value:type_name -> capabilities.blockchain.solana.v1alpha.Account - 9, // 8: capabilities.blockchain.solana.v1alpha.GetAccountInfoWithOptsRequest.opts:type_name -> capabilities.blockchain.solana.v1alpha.GetAccountInfoOpts + 9, // 5: capabilities.blockchain.solana.v1alpha.GetAccountInfoOpts.data_slice:type_name -> capabilities.blockchain.solana.v1alpha.DataSlice + 43, // 6: capabilities.blockchain.solana.v1alpha.GetAccountInfoWithOptsReply.rpc_context:type_name -> capabilities.blockchain.solana.v1alpha.RPCContext + 6, // 7: capabilities.blockchain.solana.v1alpha.GetAccountInfoWithOptsReply.value:type_name -> capabilities.blockchain.solana.v1alpha.Account + 10, // 8: capabilities.blockchain.solana.v1alpha.GetAccountInfoWithOptsRequest.opts:type_name -> capabilities.blockchain.solana.v1alpha.GetAccountInfoOpts 1, // 9: capabilities.blockchain.solana.v1alpha.GetBalanceRequest.commitment:type_name -> capabilities.blockchain.solana.v1alpha.CommitmentType 1, // 10: capabilities.blockchain.solana.v1alpha.GetBlockOpts.commitment:type_name -> capabilities.blockchain.solana.v1alpha.CommitmentType - 14, // 11: capabilities.blockchain.solana.v1alpha.GetBlockRequest.opts:type_name -> capabilities.blockchain.solana.v1alpha.GetBlockOpts + 15, // 11: capabilities.blockchain.solana.v1alpha.GetBlockRequest.opts:type_name -> capabilities.blockchain.solana.v1alpha.GetBlockOpts 1, // 12: capabilities.blockchain.solana.v1alpha.GetFeeForMessageRequest.commitment:type_name -> capabilities.blockchain.solana.v1alpha.CommitmentType 0, // 13: capabilities.blockchain.solana.v1alpha.GetMultipleAccountsOpts.encoding:type_name -> capabilities.blockchain.solana.v1alpha.EncodingType 1, // 14: capabilities.blockchain.solana.v1alpha.GetMultipleAccountsOpts.commitment:type_name -> capabilities.blockchain.solana.v1alpha.CommitmentType - 8, // 15: capabilities.blockchain.solana.v1alpha.GetMultipleAccountsOpts.data_slice:type_name -> capabilities.blockchain.solana.v1alpha.DataSlice - 5, // 16: capabilities.blockchain.solana.v1alpha.OptionalAccountWrapper.account:type_name -> capabilities.blockchain.solana.v1alpha.Account - 42, // 17: capabilities.blockchain.solana.v1alpha.GetMultipleAccountsWithOptsReply.rpc_context:type_name -> capabilities.blockchain.solana.v1alpha.RPCContext - 20, // 18: capabilities.blockchain.solana.v1alpha.GetMultipleAccountsWithOptsReply.value:type_name -> capabilities.blockchain.solana.v1alpha.OptionalAccountWrapper - 19, // 19: capabilities.blockchain.solana.v1alpha.GetMultipleAccountsWithOptsRequest.opts:type_name -> capabilities.blockchain.solana.v1alpha.GetMultipleAccountsOpts - 25, // 20: capabilities.blockchain.solana.v1alpha.GetSignatureStatusesReply.results:type_name -> capabilities.blockchain.solana.v1alpha.GetSignatureStatusesResult + 9, // 15: capabilities.blockchain.solana.v1alpha.GetMultipleAccountsOpts.data_slice:type_name -> capabilities.blockchain.solana.v1alpha.DataSlice + 6, // 16: capabilities.blockchain.solana.v1alpha.OptionalAccountWrapper.account:type_name -> capabilities.blockchain.solana.v1alpha.Account + 43, // 17: capabilities.blockchain.solana.v1alpha.GetMultipleAccountsWithOptsReply.rpc_context:type_name -> capabilities.blockchain.solana.v1alpha.RPCContext + 21, // 18: capabilities.blockchain.solana.v1alpha.GetMultipleAccountsWithOptsReply.value:type_name -> capabilities.blockchain.solana.v1alpha.OptionalAccountWrapper + 20, // 19: capabilities.blockchain.solana.v1alpha.GetMultipleAccountsWithOptsRequest.opts:type_name -> capabilities.blockchain.solana.v1alpha.GetMultipleAccountsOpts + 26, // 20: capabilities.blockchain.solana.v1alpha.GetSignatureStatusesReply.results:type_name -> capabilities.blockchain.solana.v1alpha.GetSignatureStatusesResult 2, // 21: capabilities.blockchain.solana.v1alpha.GetSignatureStatusesResult.confirmation_status:type_name -> capabilities.blockchain.solana.v1alpha.ConfirmationStatusType 1, // 22: capabilities.blockchain.solana.v1alpha.GetSlotHeightRequest.commitment:type_name -> capabilities.blockchain.solana.v1alpha.CommitmentType - 28, // 23: capabilities.blockchain.solana.v1alpha.ParsedMessage.header:type_name -> capabilities.blockchain.solana.v1alpha.MessageHeader - 35, // 24: capabilities.blockchain.solana.v1alpha.ParsedMessage.instructions:type_name -> capabilities.blockchain.solana.v1alpha.CompiledInstruction - 29, // 25: capabilities.blockchain.solana.v1alpha.ParsedTransaction.message:type_name -> capabilities.blockchain.solana.v1alpha.ParsedMessage - 31, // 26: capabilities.blockchain.solana.v1alpha.TokenBalance.ui:type_name -> capabilities.blockchain.solana.v1alpha.UiTokenAmount - 35, // 27: capabilities.blockchain.solana.v1alpha.InnerInstruction.instructions:type_name -> capabilities.blockchain.solana.v1alpha.CompiledInstruction + 29, // 23: capabilities.blockchain.solana.v1alpha.ParsedMessage.header:type_name -> capabilities.blockchain.solana.v1alpha.MessageHeader + 36, // 24: capabilities.blockchain.solana.v1alpha.ParsedMessage.instructions:type_name -> capabilities.blockchain.solana.v1alpha.CompiledInstruction + 30, // 25: capabilities.blockchain.solana.v1alpha.ParsedTransaction.message:type_name -> capabilities.blockchain.solana.v1alpha.ParsedMessage + 32, // 26: capabilities.blockchain.solana.v1alpha.TokenBalance.ui:type_name -> capabilities.blockchain.solana.v1alpha.UiTokenAmount + 36, // 27: capabilities.blockchain.solana.v1alpha.InnerInstruction.instructions:type_name -> capabilities.blockchain.solana.v1alpha.CompiledInstruction 0, // 28: capabilities.blockchain.solana.v1alpha.Data.encoding:type_name -> capabilities.blockchain.solana.v1alpha.EncodingType - 36, // 29: capabilities.blockchain.solana.v1alpha.ReturnData.data:type_name -> capabilities.blockchain.solana.v1alpha.Data - 32, // 30: capabilities.blockchain.solana.v1alpha.TransactionMeta.pre_token_balances:type_name -> capabilities.blockchain.solana.v1alpha.TokenBalance - 32, // 31: capabilities.blockchain.solana.v1alpha.TransactionMeta.post_token_balances:type_name -> capabilities.blockchain.solana.v1alpha.TokenBalance - 33, // 32: capabilities.blockchain.solana.v1alpha.TransactionMeta.inner_instructions:type_name -> capabilities.blockchain.solana.v1alpha.InnerInstruction - 34, // 33: capabilities.blockchain.solana.v1alpha.TransactionMeta.loaded_addresses:type_name -> capabilities.blockchain.solana.v1alpha.LoadedAddresses - 37, // 34: capabilities.blockchain.solana.v1alpha.TransactionMeta.return_data:type_name -> capabilities.blockchain.solana.v1alpha.ReturnData - 30, // 35: capabilities.blockchain.solana.v1alpha.TransactionEnvelope.parsed:type_name -> capabilities.blockchain.solana.v1alpha.ParsedTransaction - 39, // 36: capabilities.blockchain.solana.v1alpha.GetTransactionReply.transaction:type_name -> capabilities.blockchain.solana.v1alpha.TransactionEnvelope - 38, // 37: capabilities.blockchain.solana.v1alpha.GetTransactionReply.meta:type_name -> capabilities.blockchain.solana.v1alpha.TransactionMeta + 37, // 29: capabilities.blockchain.solana.v1alpha.ReturnData.data:type_name -> capabilities.blockchain.solana.v1alpha.Data + 33, // 30: capabilities.blockchain.solana.v1alpha.TransactionMeta.pre_token_balances:type_name -> capabilities.blockchain.solana.v1alpha.TokenBalance + 33, // 31: capabilities.blockchain.solana.v1alpha.TransactionMeta.post_token_balances:type_name -> capabilities.blockchain.solana.v1alpha.TokenBalance + 34, // 32: capabilities.blockchain.solana.v1alpha.TransactionMeta.inner_instructions:type_name -> capabilities.blockchain.solana.v1alpha.InnerInstruction + 35, // 33: capabilities.blockchain.solana.v1alpha.TransactionMeta.loaded_addresses:type_name -> capabilities.blockchain.solana.v1alpha.LoadedAddresses + 38, // 34: capabilities.blockchain.solana.v1alpha.TransactionMeta.return_data:type_name -> capabilities.blockchain.solana.v1alpha.ReturnData + 31, // 35: capabilities.blockchain.solana.v1alpha.TransactionEnvelope.parsed:type_name -> capabilities.blockchain.solana.v1alpha.ParsedTransaction + 40, // 36: capabilities.blockchain.solana.v1alpha.GetTransactionReply.transaction:type_name -> capabilities.blockchain.solana.v1alpha.TransactionEnvelope + 39, // 37: capabilities.blockchain.solana.v1alpha.GetTransactionReply.meta:type_name -> capabilities.blockchain.solana.v1alpha.TransactionMeta 1, // 38: capabilities.blockchain.solana.v1alpha.SimulateTXOpts.commitment:type_name -> capabilities.blockchain.solana.v1alpha.CommitmentType - 46, // 39: capabilities.blockchain.solana.v1alpha.SimulateTXOpts.accounts:type_name -> capabilities.blockchain.solana.v1alpha.SimulateTransactionAccountsOpts - 5, // 40: capabilities.blockchain.solana.v1alpha.SimulateTXReply.accounts:type_name -> capabilities.blockchain.solana.v1alpha.Account - 43, // 41: capabilities.blockchain.solana.v1alpha.SimulateTXRequest.opts:type_name -> capabilities.blockchain.solana.v1alpha.SimulateTXOpts + 47, // 39: capabilities.blockchain.solana.v1alpha.SimulateTXOpts.accounts:type_name -> capabilities.blockchain.solana.v1alpha.SimulateTransactionAccountsOpts + 6, // 40: capabilities.blockchain.solana.v1alpha.SimulateTXReply.accounts:type_name -> capabilities.blockchain.solana.v1alpha.Account + 44, // 41: capabilities.blockchain.solana.v1alpha.SimulateTXRequest.opts:type_name -> capabilities.blockchain.solana.v1alpha.SimulateTXOpts 0, // 42: capabilities.blockchain.solana.v1alpha.SimulateTransactionAccountsOpts.encoding:type_name -> capabilities.blockchain.solana.v1alpha.EncodingType - 49, // 43: capabilities.blockchain.solana.v1alpha.WriteReportRequest.remaining_accounts:type_name -> capabilities.blockchain.solana.v1alpha.AccountMeta - 6, // 44: capabilities.blockchain.solana.v1alpha.WriteReportRequest.compute_config:type_name -> capabilities.blockchain.solana.v1alpha.ComputeConfig - 53, // 45: capabilities.blockchain.solana.v1alpha.WriteReportRequest.report:type_name -> sdk.v1alpha.ReportResponse - 3, // 46: capabilities.blockchain.solana.v1alpha.WriteReportReply.tx_status:type_name -> capabilities.blockchain.solana.v1alpha.TxStatus - 4, // 47: capabilities.blockchain.solana.v1alpha.WriteReportReply.receiver_contract_execution_status:type_name -> capabilities.blockchain.solana.v1alpha.ReceiverContractExecutionStatus - 11, // 48: capabilities.blockchain.solana.v1alpha.Client.GetAccountInfoWithOpts:input_type -> capabilities.blockchain.solana.v1alpha.GetAccountInfoWithOptsRequest - 13, // 49: capabilities.blockchain.solana.v1alpha.Client.GetBalance:input_type -> capabilities.blockchain.solana.v1alpha.GetBalanceRequest - 16, // 50: capabilities.blockchain.solana.v1alpha.Client.GetBlock:input_type -> capabilities.blockchain.solana.v1alpha.GetBlockRequest - 18, // 51: capabilities.blockchain.solana.v1alpha.Client.GetFeeForMessage:input_type -> capabilities.blockchain.solana.v1alpha.GetFeeForMessageRequest - 22, // 52: capabilities.blockchain.solana.v1alpha.Client.GetMultipleAccountsWithOpts:input_type -> capabilities.blockchain.solana.v1alpha.GetMultipleAccountsWithOptsRequest - 24, // 53: capabilities.blockchain.solana.v1alpha.Client.GetSignatureStatuses:input_type -> capabilities.blockchain.solana.v1alpha.GetSignatureStatusesRequest - 27, // 54: capabilities.blockchain.solana.v1alpha.Client.GetSlotHeight:input_type -> capabilities.blockchain.solana.v1alpha.GetSlotHeightRequest - 41, // 55: capabilities.blockchain.solana.v1alpha.Client.GetTransaction:input_type -> capabilities.blockchain.solana.v1alpha.GetTransactionRequest - 47, // 56: capabilities.blockchain.solana.v1alpha.Client.LogTrigger:input_type -> capabilities.blockchain.solana.v1alpha.FilterLogTriggerRequest - 50, // 57: capabilities.blockchain.solana.v1alpha.Client.WriteReport:input_type -> capabilities.blockchain.solana.v1alpha.WriteReportRequest - 10, // 58: capabilities.blockchain.solana.v1alpha.Client.GetAccountInfoWithOpts:output_type -> capabilities.blockchain.solana.v1alpha.GetAccountInfoWithOptsReply - 12, // 59: capabilities.blockchain.solana.v1alpha.Client.GetBalance:output_type -> capabilities.blockchain.solana.v1alpha.GetBalanceReply - 15, // 60: capabilities.blockchain.solana.v1alpha.Client.GetBlock:output_type -> capabilities.blockchain.solana.v1alpha.GetBlockReply - 17, // 61: capabilities.blockchain.solana.v1alpha.Client.GetFeeForMessage:output_type -> capabilities.blockchain.solana.v1alpha.GetFeeForMessageReply - 21, // 62: capabilities.blockchain.solana.v1alpha.Client.GetMultipleAccountsWithOpts:output_type -> capabilities.blockchain.solana.v1alpha.GetMultipleAccountsWithOptsReply - 23, // 63: capabilities.blockchain.solana.v1alpha.Client.GetSignatureStatuses:output_type -> capabilities.blockchain.solana.v1alpha.GetSignatureStatusesReply - 26, // 64: capabilities.blockchain.solana.v1alpha.Client.GetSlotHeight:output_type -> capabilities.blockchain.solana.v1alpha.GetSlotHeightReply - 40, // 65: capabilities.blockchain.solana.v1alpha.Client.GetTransaction:output_type -> capabilities.blockchain.solana.v1alpha.GetTransactionReply - 48, // 66: capabilities.blockchain.solana.v1alpha.Client.LogTrigger:output_type -> capabilities.blockchain.solana.v1alpha.Log - 51, // 67: capabilities.blockchain.solana.v1alpha.Client.WriteReport:output_type -> capabilities.blockchain.solana.v1alpha.WriteReportReply - 58, // [58:68] is the sub-list for method output_type - 48, // [48:58] is the sub-list for method input_type - 48, // [48:48] is the sub-list for extension type_name - 48, // [48:48] is the sub-list for extension extendee - 0, // [0:48] is the sub-list for field type_name + 4, // 43: capabilities.blockchain.solana.v1alpha.ValueComparator.operator:type_name -> capabilities.blockchain.solana.v1alpha.ComparisonOperator + 48, // 44: capabilities.blockchain.solana.v1alpha.SubkeyFilterCriteria.comparers:type_name -> capabilities.blockchain.solana.v1alpha.ValueComparator + 50, // 45: capabilities.blockchain.solana.v1alpha.FilterLogTriggerRequest.subkey_paths:type_name -> capabilities.blockchain.solana.v1alpha.SubkeyPath + 49, // 46: capabilities.blockchain.solana.v1alpha.FilterLogTriggerRequest.subkey_filters:type_name -> capabilities.blockchain.solana.v1alpha.SubkeyFilterCriteria + 53, // 47: capabilities.blockchain.solana.v1alpha.WriteReportRequest.remaining_accounts:type_name -> capabilities.blockchain.solana.v1alpha.AccountMeta + 7, // 48: capabilities.blockchain.solana.v1alpha.WriteReportRequest.compute_config:type_name -> capabilities.blockchain.solana.v1alpha.ComputeConfig + 57, // 49: capabilities.blockchain.solana.v1alpha.WriteReportRequest.report:type_name -> sdk.v1alpha.ReportResponse + 3, // 50: capabilities.blockchain.solana.v1alpha.WriteReportReply.tx_status:type_name -> capabilities.blockchain.solana.v1alpha.TxStatus + 5, // 51: capabilities.blockchain.solana.v1alpha.WriteReportReply.receiver_contract_execution_status:type_name -> capabilities.blockchain.solana.v1alpha.ReceiverContractExecutionStatus + 12, // 52: capabilities.blockchain.solana.v1alpha.Client.GetAccountInfoWithOpts:input_type -> capabilities.blockchain.solana.v1alpha.GetAccountInfoWithOptsRequest + 14, // 53: capabilities.blockchain.solana.v1alpha.Client.GetBalance:input_type -> capabilities.blockchain.solana.v1alpha.GetBalanceRequest + 17, // 54: capabilities.blockchain.solana.v1alpha.Client.GetBlock:input_type -> capabilities.blockchain.solana.v1alpha.GetBlockRequest + 19, // 55: capabilities.blockchain.solana.v1alpha.Client.GetFeeForMessage:input_type -> capabilities.blockchain.solana.v1alpha.GetFeeForMessageRequest + 23, // 56: capabilities.blockchain.solana.v1alpha.Client.GetMultipleAccountsWithOpts:input_type -> capabilities.blockchain.solana.v1alpha.GetMultipleAccountsWithOptsRequest + 25, // 57: capabilities.blockchain.solana.v1alpha.Client.GetSignatureStatuses:input_type -> capabilities.blockchain.solana.v1alpha.GetSignatureStatusesRequest + 28, // 58: capabilities.blockchain.solana.v1alpha.Client.GetSlotHeight:input_type -> capabilities.blockchain.solana.v1alpha.GetSlotHeightRequest + 42, // 59: capabilities.blockchain.solana.v1alpha.Client.GetTransaction:input_type -> capabilities.blockchain.solana.v1alpha.GetTransactionRequest + 51, // 60: capabilities.blockchain.solana.v1alpha.Client.LogTrigger:input_type -> capabilities.blockchain.solana.v1alpha.FilterLogTriggerRequest + 54, // 61: capabilities.blockchain.solana.v1alpha.Client.WriteReport:input_type -> capabilities.blockchain.solana.v1alpha.WriteReportRequest + 11, // 62: capabilities.blockchain.solana.v1alpha.Client.GetAccountInfoWithOpts:output_type -> capabilities.blockchain.solana.v1alpha.GetAccountInfoWithOptsReply + 13, // 63: capabilities.blockchain.solana.v1alpha.Client.GetBalance:output_type -> capabilities.blockchain.solana.v1alpha.GetBalanceReply + 16, // 64: capabilities.blockchain.solana.v1alpha.Client.GetBlock:output_type -> capabilities.blockchain.solana.v1alpha.GetBlockReply + 18, // 65: capabilities.blockchain.solana.v1alpha.Client.GetFeeForMessage:output_type -> capabilities.blockchain.solana.v1alpha.GetFeeForMessageReply + 22, // 66: capabilities.blockchain.solana.v1alpha.Client.GetMultipleAccountsWithOpts:output_type -> capabilities.blockchain.solana.v1alpha.GetMultipleAccountsWithOptsReply + 24, // 67: capabilities.blockchain.solana.v1alpha.Client.GetSignatureStatuses:output_type -> capabilities.blockchain.solana.v1alpha.GetSignatureStatusesReply + 27, // 68: capabilities.blockchain.solana.v1alpha.Client.GetSlotHeight:output_type -> capabilities.blockchain.solana.v1alpha.GetSlotHeightReply + 41, // 69: capabilities.blockchain.solana.v1alpha.Client.GetTransaction:output_type -> capabilities.blockchain.solana.v1alpha.GetTransactionReply + 52, // 70: capabilities.blockchain.solana.v1alpha.Client.LogTrigger:output_type -> capabilities.blockchain.solana.v1alpha.Log + 55, // 71: capabilities.blockchain.solana.v1alpha.Client.WriteReport:output_type -> capabilities.blockchain.solana.v1alpha.WriteReportReply + 62, // [62:72] is the sub-list for method output_type + 52, // [52:62] is the sub-list for method input_type + 52, // [52:52] is the sub-list for extension type_name + 52, // [52:52] is the sub-list for extension extendee + 0, // [0:52] is the sub-list for field type_name } func init() { file_capabilities_blockchain_solana_v1alpha_client_proto_init() } @@ -3509,15 +3914,16 @@ func file_capabilities_blockchain_solana_v1alpha_client_proto_init() { (*TransactionEnvelope_Parsed)(nil), } file_capabilities_blockchain_solana_v1alpha_client_proto_msgTypes[35].OneofWrappers = []any{} - file_capabilities_blockchain_solana_v1alpha_client_proto_msgTypes[45].OneofWrappers = []any{} file_capabilities_blockchain_solana_v1alpha_client_proto_msgTypes[46].OneofWrappers = []any{} + file_capabilities_blockchain_solana_v1alpha_client_proto_msgTypes[48].OneofWrappers = []any{} + file_capabilities_blockchain_solana_v1alpha_client_proto_msgTypes[49].OneofWrappers = []any{} type x struct{} out := protoimpl.TypeBuilder{ File: protoimpl.DescBuilder{ GoPackagePath: reflect.TypeOf(x{}).PkgPath(), RawDescriptor: unsafe.Slice(unsafe.StringData(file_capabilities_blockchain_solana_v1alpha_client_proto_rawDesc), len(file_capabilities_blockchain_solana_v1alpha_client_proto_rawDesc)), - NumEnums: 5, - NumMessages: 47, + NumEnums: 6, + NumMessages: 50, NumExtensions: 0, NumServices: 1, }, diff --git a/pkg/capabilities/v2/chain-capabilities/solana/proto_helpers.go b/pkg/capabilities/v2/chain-capabilities/solana/proto_helpers.go new file mode 100644 index 0000000000..afbaf5a1d3 --- /dev/null +++ b/pkg/capabilities/v2/chain-capabilities/solana/proto_helpers.go @@ -0,0 +1,173 @@ +package solana + +import ( + "fmt" + + chainsolana "github.com/smartcontractkit/chainlink-common/pkg/chains/solana" + typesolana "github.com/smartcontractkit/chainlink-common/pkg/types/chains/solana" + "github.com/smartcontractkit/chainlink-common/pkg/types/query/primitives" +) + +// ConvertComparisonOperatorFromProto converts a proto ComparisonOperator to primitives.ComparisonOperator +func ConvertComparisonOperatorFromProto(op ComparisonOperator) primitives.ComparisonOperator { + switch op { + case ComparisonOperator_EQ: + return primitives.Eq + case ComparisonOperator_NEQ: + return primitives.Neq + case ComparisonOperator_GT: + return primitives.Gt + case ComparisonOperator_LT: + return primitives.Lt + case ComparisonOperator_GTE: + return primitives.Gte + case ComparisonOperator_LTE: + return primitives.Lte + default: + return primitives.Eq + } +} + +// ConvertComparisonOperatorToProto converts a primitives.ComparisonOperator to proto ComparisonOperator +func ConvertComparisonOperatorToProto(op primitives.ComparisonOperator) ComparisonOperator { + switch op { + case primitives.Eq: + return ComparisonOperator_EQ + case primitives.Neq: + return ComparisonOperator_NEQ + case primitives.Gt: + return ComparisonOperator_GT + case primitives.Lt: + return ComparisonOperator_LT + case primitives.Gte: + return ComparisonOperator_GTE + case primitives.Lte: + return ComparisonOperator_LTE + default: + return ComparisonOperator_EQ + } +} + +// ConvertSubkeyPathsFromProto converts proto SubkeyPath slice to [][]string +func ConvertSubkeyPathsFromProto(paths []*SubkeyPath) [][]string { + if paths == nil { + return nil + } + result := make([][]string, len(paths)) + for i, p := range paths { + if p != nil { + result[i] = p.Path + } + } + return result +} + +// ConvertSubkeyPathsToProto converts [][]string to proto SubkeyPath slice +func ConvertSubkeyPathsToProto(paths [][]string) []*SubkeyPath { + if paths == nil { + return nil + } + result := make([]*SubkeyPath, len(paths)) + for i, p := range paths { + result[i] = &SubkeyPath{Path: p} + } + return result +} + +// ConvertValueComparatorsFromProto converts proto ValueComparator slice to primitives.ValueComparator slice +func ConvertValueComparatorsFromProto(comparers []*ValueComparator) []primitives.ValueComparator { + if comparers == nil { + return nil + } + result := make([]primitives.ValueComparator, len(comparers)) + for i, c := range comparers { + if c != nil { + result[i] = primitives.ValueComparator{ + Value: c.Value, // []byte is compatible with any + Operator: ConvertComparisonOperatorFromProto(c.Operator), + } + } + } + return result +} + +// ConvertValueComparatorsToProto converts primitives.ValueComparator slice to proto ValueComparator slice +func ConvertValueComparatorsToProto(comparers []primitives.ValueComparator) []*ValueComparator { + if comparers == nil { + return nil + } + result := make([]*ValueComparator, len(comparers)) + for i, c := range comparers { + // Handle the Value field which could be any type, convert to []byte if possible + var valueBytes []byte + if b, ok := c.Value.([]byte); ok { + valueBytes = b + } + result[i] = &ValueComparator{ + Value: valueBytes, + Operator: ConvertComparisonOperatorToProto(c.Operator), + } + } + return result +} + +// ConvertLogFromProto converts a proto Log to typesolana.Log +func ConvertLogFromProto(p *Log) (*typesolana.Log, error) { + if p == nil { + return nil, nil + } + + blockHash, err := chainsolana.ConvertHashFromProto(p.BlockHash) + if err != nil { + return nil, fmt.Errorf("failed to convert block hash: %w", err) + } + + address, err := chainsolana.ConvertPublicKeyFromProto(p.Address) + if err != nil { + return nil, fmt.Errorf("failed to convert address: %w", err) + } + + eventSig, err := chainsolana.ConvertEventSigFromProto(p.EventSig) + if err != nil { + return nil, fmt.Errorf("failed to convert event sig: %w", err) + } + + txHash, err := chainsolana.ConvertSignatureFromProto(p.TxHash) + if err != nil { + return nil, fmt.Errorf("failed to convert tx hash: %w", err) + } + + return &typesolana.Log{ + ChainID: p.ChainId, + LogIndex: p.LogIndex, + BlockHash: blockHash, + BlockNumber: p.BlockNumber, + BlockTimestamp: p.BlockTimestamp, + Address: address, + EventSig: eventSig, + TxHash: txHash, + Data: p.Data, + SequenceNum: p.SequenceNum, + Error: p.Error, + }, nil +} + +// ConvertLogToProto converts a typesolana.Log to proto Log +func ConvertLogToProto(l *typesolana.Log) *Log { + if l == nil { + return nil + } + return &Log{ + ChainId: l.ChainID, + LogIndex: l.LogIndex, + BlockHash: l.BlockHash[:], + BlockNumber: l.BlockNumber, + BlockTimestamp: l.BlockTimestamp, + Address: l.Address[:], + EventSig: l.EventSig[:], + TxHash: l.TxHash[:], + Data: l.Data, + SequenceNum: l.SequenceNum, + Error: l.Error, + } +} From bdc12eacfc00c561871360f968c9443c6a06fbcb Mon Sep 17 00:00:00 2001 From: Vladimir Shchukin Date: Thu, 29 Jan 2026 08:07:44 -0500 Subject: [PATCH 05/12] replace devnet with testnet selector --- pkg/settings/cresettings/defaults.json | 4 ++-- pkg/settings/cresettings/defaults.toml | 2 +- pkg/settings/cresettings/settings.go | 4 ++-- 3 files changed, 5 insertions(+), 5 deletions(-) diff --git a/pkg/settings/cresettings/defaults.json b/pkg/settings/cresettings/defaults.json index 7ce0717487..df8803f894 100644 --- a/pkg/settings/cresettings/defaults.json +++ b/pkg/settings/cresettings/defaults.json @@ -38,7 +38,7 @@ "Default": "false", "Values": { "12922642891491394802": "true", - "16423721717087811551": "true", + "12463857294658392847": "true", "3379446385462418246": "true" } }, @@ -85,4 +85,4 @@ "ResponseSizeLimit": "100kb" } } -} \ No newline at end of file +} diff --git a/pkg/settings/cresettings/defaults.toml b/pkg/settings/cresettings/defaults.toml index 1a27206caf..d2c57be37d 100644 --- a/pkg/settings/cresettings/defaults.toml +++ b/pkg/settings/cresettings/defaults.toml @@ -40,7 +40,7 @@ Default = 'false' [PerWorkflow.ChainAllowed.Values] 12922642891491394802 = 'true' -16423721717087811551 = 'true' +12463857294658392847 = 'true' 3379446385462418246 = 'true' [PerWorkflow.CRONTrigger] diff --git a/pkg/settings/cresettings/settings.go b/pkg/settings/cresettings/settings.go index d7161fbd2d..68e3194eca 100644 --- a/pkg/settings/cresettings/settings.go +++ b/pkg/settings/cresettings/settings.go @@ -103,8 +103,8 @@ var Default = Schema{ "12922642891491394802": true, // geth-testnet "3379446385462418246": true, - // solana-devnet - "16423721717087811551": true, + // solana-testnet + "12463857294658392847": true, }), CRONTrigger: cronTrigger{ From fc05c520ac18446de65ac79753cdbeaf72f007e0 Mon Sep 17 00:00:00 2001 From: Vladimir Shchukin Date: Thu, 29 Jan 2026 09:35:16 -0500 Subject: [PATCH 06/12] run tests --- pkg/settings/cresettings/defaults.json | 4 ++-- pkg/settings/cresettings/defaults.toml | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/pkg/settings/cresettings/defaults.json b/pkg/settings/cresettings/defaults.json index df8803f894..a606f5ad15 100644 --- a/pkg/settings/cresettings/defaults.json +++ b/pkg/settings/cresettings/defaults.json @@ -37,8 +37,8 @@ "ChainAllowed": { "Default": "false", "Values": { - "12922642891491394802": "true", "12463857294658392847": "true", + "12922642891491394802": "true", "3379446385462418246": "true" } }, @@ -85,4 +85,4 @@ "ResponseSizeLimit": "100kb" } } -} +} \ No newline at end of file diff --git a/pkg/settings/cresettings/defaults.toml b/pkg/settings/cresettings/defaults.toml index d2c57be37d..d509c6f62f 100644 --- a/pkg/settings/cresettings/defaults.toml +++ b/pkg/settings/cresettings/defaults.toml @@ -39,8 +39,8 @@ LogEventLimit = '1000' Default = 'false' [PerWorkflow.ChainAllowed.Values] -12922642891491394802 = 'true' 12463857294658392847 = 'true' +12922642891491394802 = 'true' 3379446385462418246 = 'true' [PerWorkflow.CRONTrigger] From 5100fdf9db0fdc7617947b897707aff0309bf9bf Mon Sep 17 00:00:00 2001 From: Silas Lenihan Date: Thu, 29 Jan 2026 14:35:25 -0500 Subject: [PATCH 07/12] added solana-devnet to allowlist --- pkg/settings/cresettings/settings.go | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/pkg/settings/cresettings/settings.go b/pkg/settings/cresettings/settings.go index 78ac31885d..79b3520085 100644 --- a/pkg/settings/cresettings/settings.go +++ b/pkg/settings/cresettings/settings.go @@ -104,6 +104,10 @@ var Default = Schema{ "3379446385462418246": true, // geth-devnet2 "12922642891491394802": true, + // solana-devnet + "16423721717087811551": true, + // solana-test (TEST_22222222222222222222222222222222222222222222) + "12463857294658392847": true, }), CRONTrigger: cronTrigger{ From 2b52746975d3543796b0bd06c71da1ae4561eb1e Mon Sep 17 00:00:00 2001 From: Vladimir Shchukin Date: Fri, 30 Jan 2026 09:28:30 -0500 Subject: [PATCH 08/12] fix converters --- pkg/chains/solana/proto_helpers.go | 4 ++-- pkg/chains/solana/proto_helpers_test.go | 10 +++++----- 2 files changed, 7 insertions(+), 7 deletions(-) diff --git a/pkg/chains/solana/proto_helpers.go b/pkg/chains/solana/proto_helpers.go index 10a392c634..f9a59b8bd6 100644 --- a/pkg/chains/solana/proto_helpers.go +++ b/pkg/chains/solana/proto_helpers.go @@ -1419,7 +1419,7 @@ func ConvertValueComparatorsToProto(comparators []solprimitives.IndexedValueComp return nil } - out := make([]*IndexedValueComparator, len(comparators)) + out := make([]*IndexedValueComparator, 0) for _, c := range comparators { out = append(out, &IndexedValueComparator{ Value: c.Value, @@ -1427,7 +1427,7 @@ func ConvertValueComparatorsToProto(comparators []solprimitives.IndexedValueComp }) } - return nil + return out } func ConvertValueCompraratorsFromProto(comparators []*IndexedValueComparator) []solprimitives.IndexedValueComparator { diff --git a/pkg/chains/solana/proto_helpers_test.go b/pkg/chains/solana/proto_helpers_test.go index 22a4e42c16..30d7d4acb7 100644 --- a/pkg/chains/solana/proto_helpers_test.go +++ b/pkg/chains/solana/proto_helpers_test.go @@ -291,17 +291,17 @@ func TestExpressions_Roundtrip_SolanaPrimitives(t *testing.T) { {Value: typesolana.IndexedValue{1, 2, 3}, Operator: 0}, }) - root := query.Or(query.And(a, e), evBy) - + expressions := []query.Expression{a, e, evBy} // to proto - pb, err := conv.ConvertExpressionsToProto([]query.Expression{root}) + pb, err := conv.ConvertExpressionsToProto(expressions) require.NoError(t, err) - require.Len(t, pb, 1) + require.Len(t, pb, 3) // from proto round, err := conv.ConvertExpressionsFromProto(pb) require.NoError(t, err) - require.Len(t, round, 1) + require.Len(t, round, 3) + require.Equal(t, expressions, round) } func TestLPFilterAndSubkeysConverters(t *testing.T) { From 1ef6688bd77bf0f8065187ab9cb5cb153fa83eef Mon Sep 17 00:00:00 2001 From: Silas Lenihan Date: Wed, 4 Feb 2026 10:14:42 -0500 Subject: [PATCH 09/12] bump protos and generate --- go.md | 3 +- go.mod | 2 +- go.sum | 4 +- .../v2/chain-capabilities/evm/client.pb.go | 26 +- .../v2/chain-capabilities/solana/client.pb.go | 306 +++++++----------- .../solana/proto_helpers.go | 52 +-- pkg/settings/cresettings/settings.go | 2 - 7 files changed, 144 insertions(+), 251 deletions(-) diff --git a/go.md b/go.md index fd77fe4665..2ff15f0d25 100644 --- a/go.md +++ b/go.md @@ -4,7 +4,6 @@ flowchart LR chain-selectors click chain-selectors href "https://github.com/smartcontractkit/chain-selectors" - chainlink-common --> chain-selectors chainlink-common --> chainlink-common/pkg/chipingress chainlink-common --> chainlink-common/pkg/values chainlink-common --> chainlink-protos/billing/go @@ -25,7 +24,7 @@ flowchart LR click chainlink-common/pkg/values href "https://github.com/smartcontractkit/chainlink-common" chainlink-protos/billing/go --> chainlink-protos/workflows/go click chainlink-protos/billing/go href "https://github.com/smartcontractkit/chainlink-protos" - chainlink-protos/cre/go + chainlink-protos/cre/go --> chain-selectors click chainlink-protos/cre/go href "https://github.com/smartcontractkit/chainlink-protos" chainlink-protos/linking-service/go click chainlink-protos/linking-service/go href "https://github.com/smartcontractkit/chainlink-protos" diff --git a/go.mod b/go.mod index ba929ecfdc..2d9809505e 100644 --- a/go.mod +++ b/go.mod @@ -41,7 +41,7 @@ require ( github.com/smartcontractkit/chain-selectors v1.0.89 github.com/smartcontractkit/chainlink-common/pkg/chipingress v0.0.10 github.com/smartcontractkit/chainlink-protos/billing/go v0.0.0-20251024234028-0988426d98f4 - github.com/smartcontractkit/chainlink-protos/cre/go v0.0.0-20260202141300-eb2d1a0d35ae + github.com/smartcontractkit/chainlink-protos/cre/go v0.0.0-20260204175031-46111c076cb8 github.com/smartcontractkit/chainlink-protos/linking-service/go v0.0.0-20251002192024-d2ad9222409b github.com/smartcontractkit/chainlink-protos/storage-service v0.3.0 github.com/smartcontractkit/chainlink-protos/workflows/go v0.0.0-20260106052706-6dd937cb5ec6 diff --git a/go.sum b/go.sum index 38d95577fb..75abadd016 100644 --- a/go.sum +++ b/go.sum @@ -332,8 +332,8 @@ github.com/smartcontractkit/chainlink-common/pkg/chipingress v0.0.10 h1:FJAFgXS9 github.com/smartcontractkit/chainlink-common/pkg/chipingress v0.0.10/go.mod h1:oiDa54M0FwxevWwyAX773lwdWvFYYlYHHQV1LQ5HpWY= github.com/smartcontractkit/chainlink-protos/billing/go v0.0.0-20251024234028-0988426d98f4 h1:GCzrxDWn3b7jFfEA+WiYRi8CKoegsayiDoJBCjYkneE= github.com/smartcontractkit/chainlink-protos/billing/go v0.0.0-20251024234028-0988426d98f4/go.mod h1:HHGeDUpAsPa0pmOx7wrByCitjQ0mbUxf0R9v+g67uCA= -github.com/smartcontractkit/chainlink-protos/cre/go v0.0.0-20260202141300-eb2d1a0d35ae h1:FCNGzGp3cSUdoOyg9KLkaWFT3t2I+HPnbuWlMWpBAcg= -github.com/smartcontractkit/chainlink-protos/cre/go v0.0.0-20260202141300-eb2d1a0d35ae/go.mod h1:Jqt53s27Tr0jDl8mdBXg1xhu6F8Fci8JOuq43tgHOM8= +github.com/smartcontractkit/chainlink-protos/cre/go v0.0.0-20260204175031-46111c076cb8 h1:vnHFTEpENktjCBm31GKTbDI8BBfX9VKGQ9H0IUBHFRo= +github.com/smartcontractkit/chainlink-protos/cre/go v0.0.0-20260204175031-46111c076cb8/go.mod h1:Jqt53s27Tr0jDl8mdBXg1xhu6F8Fci8JOuq43tgHOM8= github.com/smartcontractkit/chainlink-protos/linking-service/go v0.0.0-20251002192024-d2ad9222409b h1:QuI6SmQFK/zyUlVWEf0GMkiUYBPY4lssn26nKSd/bOM= github.com/smartcontractkit/chainlink-protos/linking-service/go v0.0.0-20251002192024-d2ad9222409b/go.mod h1:qSTSwX3cBP3FKQwQacdjArqv0g6QnukjV4XuzO6UyoY= github.com/smartcontractkit/chainlink-protos/storage-service v0.3.0 h1:B7itmjy+CMJ26elVw/cAJqqhBQ3Xa/mBYWK0/rQ5MuI= diff --git a/pkg/capabilities/v2/chain-capabilities/evm/client.pb.go b/pkg/capabilities/v2/chain-capabilities/evm/client.pb.go index 5df100c295..dc25efe38d 100644 --- a/pkg/capabilities/v2/chain-capabilities/evm/client.pb.go +++ b/pkg/capabilities/v2/chain-capabilities/evm/client.pb.go @@ -1791,7 +1791,7 @@ const file_capabilities_blockchain_evm_v1alpha_client_proto_rawDesc = "" + "\bTxStatus\x12\x13\n" + "\x0fTX_STATUS_FATAL\x10\x00\x12\x16\n" + "\x12TX_STATUS_REVERTED\x10\x01\x12\x15\n" + - "\x11TX_STATUS_SUCCESS\x10\x022\xc5\x11\n" + + "\x11TX_STATUS_SUCCESS\x10\x022\xa0\x11\n" + "\x06Client\x12\x80\x01\n" + "\fCallContract\x128.capabilities.blockchain.evm.v1alpha.CallContractRequest\x1a6.capabilities.blockchain.evm.v1alpha.CallContractReply\x12z\n" + "\n" + @@ -1803,18 +1803,20 @@ const file_capabilities_blockchain_evm_v1alpha_client_proto_rawDesc = "" + "\x0eHeaderByNumber\x12:.capabilities.blockchain.evm.v1alpha.HeaderByNumberRequest\x1a8.capabilities.blockchain.evm.v1alpha.HeaderByNumberReply\x12v\n" + "\n" + "LogTrigger\x12<.capabilities.blockchain.evm.v1alpha.FilterLogTriggerRequest\x1a(.capabilities.blockchain.evm.v1alpha.Log0\x01\x12}\n" + - "\vWriteReport\x127.capabilities.blockchain.evm.v1alpha.WriteReportRequest\x1a5.capabilities.blockchain.evm.v1alpha.WriteReportReply\x1a\x8a\b\x82\xb5\x18\x85\b\b\x01\x12\tevm@1.0.0\x1a\xf5\a\n" + - "\rChainSelector\x12\xe3\a\x12\xe0\a\n" + + "\vWriteReport\x127.capabilities.blockchain.evm.v1alpha.WriteReportRequest\x1a5.capabilities.blockchain.evm.v1alpha.WriteReportReply\x1a\xe5\a\x82\xb5\x18\xe0\a\b\x01\x12\tevm@1.0.0\x1a\xd0\a\n" + + "\rChainSelector\x12\xbe\a\x12\xbb\a\n" + "$\n" + "\x17apechain-testnet-curtis\x10\xc1ô\xf8\x8dĒ\xb2\x89\x01\n" + + "\x17\n" + + "\varc-testnet\x10\xe7ƌ\x9e\xd7\xd7Ѝ*\n" + "\x1d\n" + "\x11avalanche-mainnet\x10\xd5\xe7\x8a\xc0\xe1\u0558\xa4Y\n" + "#\n" + "\x16avalanche-testnet-fuji\x10\x9b\xf9\xfc\x90\xa2\xe3\xa8\xf8\xcc\x01\n" + - "/\n" + - "#binance_smart_chain-mainnet-opbnb-1\x10\x89\xad\x8f\xef\x93\xc6\u05fb\x06\n" + - "0\n" + - "#binance_smart_chain-testnet-opbnb-1\x10\x8e\xf5\x85\x91\xc1\x83\x8f\x9c\xb8\x01\n" + + "(\n" + + "\x1bbinance_smart_chain-mainnet\x10\xcf\xf7\x94\xf1\xd8핸\x9d\x01\n" + + "(\n" + + "\x1bbinance_smart_chain-testnet\x10\xfb\xad\xbe\x9c\x80\xae䊸\x01\n" + "\x1c\n" + "\x10ethereum-mainnet\x10\x95\xf6\xf1\xe4ϲ\xa6\xc2E\n" + "'\n" + @@ -1824,6 +1826,8 @@ const file_capabilities_blockchain_evm_v1alpha_client_proto_rawDesc = "" + "'\n" + "\x1bethereum-mainnet-optimism-1\x10\xb8\x95\x8f\xc3\xf7\xfe\xd0\xe93\n" + "%\n" + + "\x19ethereum-mainnet-zksync-1\x10\x94\xee\x97\xd9\xed\xb4\xb1\xd7\x15\n" + + "%\n" + "\x18ethereum-testnet-sepolia\x10ٵ\xe4\xce\xfc\xc9\xee\xa0\xde\x01\n" + "/\n" + "#ethereum-testnet-sepolia-arbitrum-1\x10\xea\xce\xee\xff궄\xa30\n" + @@ -1837,8 +1841,6 @@ const file_capabilities_blockchain_evm_v1alpha_client_proto_rawDesc = "" + "%ethereum-testnet-sepolia-worldchain-1\x10\xba\xdf\xe0\xc5ǩ\xf3\xc5I\n" + "-\n" + "!ethereum-testnet-sepolia-zksync-1\x10\xb7\xc1\xfc\xfd\xf2Ā\xde_\n" + - "\x1d\n" + - "\x11etherlink-testnet\x10ϥ\xf1\xce\xfe\x90\xf0\xc0\x1a\n" + "\x1f\n" + "\x13hyperliquid-testnet\x10\x88\xce\xddȗ\xe0ɽ;\n" + " \n" + @@ -1846,17 +1848,13 @@ const file_capabilities_blockchain_evm_v1alpha_client_proto_rawDesc = "" + "\x19\n" + "\rjovay-testnet\x10\xe4ϊ\x84\u07b2ގ\r\n" + "\x1a\n" + - "\x0epharos-testnet\x10\x86\xb9\xe7\xdd\xe2\xbf\xd6\xd77\n" + - "\x1a\n" + "\x0eplasma-testnet\x10՛\xbf\xa5ô\x99\x877\n" + "\x1b\n" + "\x0fpolygon-mainnet\x10\xb1\xab\xe4\U0001a486\x9d8\n" + "!\n" + "\x14polygon-testnet-amoy\x10͏\xd6\xdf\xf1ǐ\xfa\xe1\x01\n" + "$\n" + - "\x18private-testnet-andesite\x10Ԧ\x98\xa5\xc1\x8f\xdc\xfc_\n" + - "\x19\n" + - "\rtempo-testnet\x10\xba\xa8\xf7\xeb\xe9\xfdр7b\x06proto3" + "\x18private-testnet-andesite\x10Ԧ\x98\xa5\xc1\x8f\xdc\xfc_b\x06proto3" var ( file_capabilities_blockchain_evm_v1alpha_client_proto_rawDescOnce sync.Once diff --git a/pkg/capabilities/v2/chain-capabilities/solana/client.pb.go b/pkg/capabilities/v2/chain-capabilities/solana/client.pb.go index 7bdc50d4ac..372b061ed3 100644 --- a/pkg/capabilities/v2/chain-capabilities/solana/client.pb.go +++ b/pkg/capabilities/v2/chain-capabilities/solana/client.pb.go @@ -242,31 +242,31 @@ func (TxStatus) EnumDescriptor() ([]byte, []int) { type ComparisonOperator int32 const ( - ComparisonOperator_EQ ComparisonOperator = 0 - ComparisonOperator_NEQ ComparisonOperator = 1 - ComparisonOperator_GT ComparisonOperator = 2 - ComparisonOperator_LT ComparisonOperator = 3 - ComparisonOperator_GTE ComparisonOperator = 4 - ComparisonOperator_LTE ComparisonOperator = 5 + ComparisonOperator_COMPARISON_OPERATOR_EQ ComparisonOperator = 0 + ComparisonOperator_COMPARISON_OPERATOR_NEQ ComparisonOperator = 1 + ComparisonOperator_COMPARISON_OPERATOR_GT ComparisonOperator = 2 + ComparisonOperator_COMPARISON_OPERATOR_LT ComparisonOperator = 3 + ComparisonOperator_COMPARISON_OPERATOR_GTE ComparisonOperator = 4 + ComparisonOperator_COMPARISON_OPERATOR_LTE ComparisonOperator = 5 ) // Enum value maps for ComparisonOperator. var ( ComparisonOperator_name = map[int32]string{ - 0: "EQ", - 1: "NEQ", - 2: "GT", - 3: "LT", - 4: "GTE", - 5: "LTE", + 0: "COMPARISON_OPERATOR_EQ", + 1: "COMPARISON_OPERATOR_NEQ", + 2: "COMPARISON_OPERATOR_GT", + 3: "COMPARISON_OPERATOR_LT", + 4: "COMPARISON_OPERATOR_GTE", + 5: "COMPARISON_OPERATOR_LTE", } ComparisonOperator_value = map[string]int32{ - "EQ": 0, - "NEQ": 1, - "GT": 2, - "LT": 3, - "GTE": 4, - "LTE": 5, + "COMPARISON_OPERATOR_EQ": 0, + "COMPARISON_OPERATOR_NEQ": 1, + "COMPARISON_OPERATOR_GT": 2, + "COMPARISON_OPERATOR_LT": 3, + "COMPARISON_OPERATOR_GTE": 4, + "COMPARISON_OPERATOR_LTE": 5, } ) @@ -2907,31 +2907,31 @@ func (x *ValueComparator) GetOperator() ComparisonOperator { if x != nil { return x.Operator } - return ComparisonOperator_EQ + return ComparisonOperator_COMPARISON_OPERATOR_EQ } -type SubkeyFilterCriteria struct { +type SubkeyConfig struct { state protoimpl.MessageState `protogen:"open.v1"` - SubkeyIndex uint64 `protobuf:"varint,1,opt,name=subkey_index,json=subkeyIndex,proto3" json:"subkey_index,omitempty"` + Path []string `protobuf:"bytes,1,rep,name=path,proto3" json:"path,omitempty"` Comparers []*ValueComparator `protobuf:"bytes,2,rep,name=comparers,proto3" json:"comparers,omitempty"` unknownFields protoimpl.UnknownFields sizeCache protoimpl.SizeCache } -func (x *SubkeyFilterCriteria) Reset() { - *x = SubkeyFilterCriteria{} +func (x *SubkeyConfig) Reset() { + *x = SubkeyConfig{} mi := &file_capabilities_blockchain_solana_v1alpha_client_proto_msgTypes[43] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } -func (x *SubkeyFilterCriteria) String() string { +func (x *SubkeyConfig) String() string { return protoimpl.X.MessageStringOf(x) } -func (*SubkeyFilterCriteria) ProtoMessage() {} +func (*SubkeyConfig) ProtoMessage() {} -func (x *SubkeyFilterCriteria) ProtoReflect() protoreflect.Message { +func (x *SubkeyConfig) ProtoReflect() protoreflect.Message { mi := &file_capabilities_blockchain_solana_v1alpha_client_proto_msgTypes[43] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -2943,86 +2943,39 @@ func (x *SubkeyFilterCriteria) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use SubkeyFilterCriteria.ProtoReflect.Descriptor instead. -func (*SubkeyFilterCriteria) Descriptor() ([]byte, []int) { +// Deprecated: Use SubkeyConfig.ProtoReflect.Descriptor instead. +func (*SubkeyConfig) Descriptor() ([]byte, []int) { return file_capabilities_blockchain_solana_v1alpha_client_proto_rawDescGZIP(), []int{43} } -func (x *SubkeyFilterCriteria) GetSubkeyIndex() uint64 { - if x != nil { - return x.SubkeyIndex - } - return 0 -} - -func (x *SubkeyFilterCriteria) GetComparers() []*ValueComparator { +func (x *SubkeyConfig) GetPath() []string { if x != nil { - return x.Comparers + return x.Path } return nil } -type SubkeyPath struct { - state protoimpl.MessageState `protogen:"open.v1"` - Path []string `protobuf:"bytes,1,rep,name=path,proto3" json:"path,omitempty"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache -} - -func (x *SubkeyPath) Reset() { - *x = SubkeyPath{} - mi := &file_capabilities_blockchain_solana_v1alpha_client_proto_msgTypes[44] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *SubkeyPath) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*SubkeyPath) ProtoMessage() {} - -func (x *SubkeyPath) ProtoReflect() protoreflect.Message { - mi := &file_capabilities_blockchain_solana_v1alpha_client_proto_msgTypes[44] +func (x *SubkeyConfig) GetComparers() []*ValueComparator { if x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use SubkeyPath.ProtoReflect.Descriptor instead. -func (*SubkeyPath) Descriptor() ([]byte, []int) { - return file_capabilities_blockchain_solana_v1alpha_client_proto_rawDescGZIP(), []int{44} -} - -func (x *SubkeyPath) GetPath() []string { - if x != nil { - return x.Path + return x.Comparers } return nil } type FilterLogTriggerRequest struct { - state protoimpl.MessageState `protogen:"open.v1"` - Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` - Address []byte `protobuf:"bytes,2,opt,name=address,proto3" json:"address,omitempty"` // Solana PublicKey (32 bytes) - EventName string `protobuf:"bytes,3,opt,name=event_name,json=eventName,proto3" json:"event_name,omitempty"` - EventSig []byte `protobuf:"bytes,4,opt,name=event_sig,json=eventSig,proto3" json:"event_sig,omitempty"` // Event signature - EventIdlJson []byte `protobuf:"bytes,5,opt,name=event_idl_json,json=eventIdlJson,proto3" json:"event_idl_json,omitempty"` - SubkeyPaths []*SubkeyPath `protobuf:"bytes,6,rep,name=subkey_paths,json=subkeyPaths,proto3" json:"subkey_paths,omitempty"` - SubkeyFilters []*SubkeyFilterCriteria `protobuf:"bytes,7,rep,name=subkey_filters,json=subkeyFilters,proto3" json:"subkey_filters,omitempty"` - StartingBlock int64 `protobuf:"varint,8,opt,name=starting_block,json=startingBlock,proto3" json:"starting_block,omitempty"` + state protoimpl.MessageState `protogen:"open.v1"` + Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` + Address []byte `protobuf:"bytes,2,opt,name=address,proto3" json:"address,omitempty"` // Solana PublicKey (32 bytes) + EventName string `protobuf:"bytes,3,opt,name=event_name,json=eventName,proto3" json:"event_name,omitempty"` + EventIdlJson []byte `protobuf:"bytes,4,opt,name=event_idl_json,json=eventIdlJson,proto3" json:"event_idl_json,omitempty"` + Subkeys []*SubkeyConfig `protobuf:"bytes,5,rep,name=subkeys,proto3" json:"subkeys,omitempty"` unknownFields protoimpl.UnknownFields sizeCache protoimpl.SizeCache } func (x *FilterLogTriggerRequest) Reset() { *x = FilterLogTriggerRequest{} - mi := &file_capabilities_blockchain_solana_v1alpha_client_proto_msgTypes[45] + mi := &file_capabilities_blockchain_solana_v1alpha_client_proto_msgTypes[44] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3034,7 +2987,7 @@ func (x *FilterLogTriggerRequest) String() string { func (*FilterLogTriggerRequest) ProtoMessage() {} func (x *FilterLogTriggerRequest) ProtoReflect() protoreflect.Message { - mi := &file_capabilities_blockchain_solana_v1alpha_client_proto_msgTypes[45] + mi := &file_capabilities_blockchain_solana_v1alpha_client_proto_msgTypes[44] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3047,7 +3000,7 @@ func (x *FilterLogTriggerRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use FilterLogTriggerRequest.ProtoReflect.Descriptor instead. func (*FilterLogTriggerRequest) Descriptor() ([]byte, []int) { - return file_capabilities_blockchain_solana_v1alpha_client_proto_rawDescGZIP(), []int{45} + return file_capabilities_blockchain_solana_v1alpha_client_proto_rawDescGZIP(), []int{44} } func (x *FilterLogTriggerRequest) GetName() string { @@ -3071,13 +3024,6 @@ func (x *FilterLogTriggerRequest) GetEventName() string { return "" } -func (x *FilterLogTriggerRequest) GetEventSig() []byte { - if x != nil { - return x.EventSig - } - return nil -} - func (x *FilterLogTriggerRequest) GetEventIdlJson() []byte { if x != nil { return x.EventIdlJson @@ -3085,27 +3031,13 @@ func (x *FilterLogTriggerRequest) GetEventIdlJson() []byte { return nil } -func (x *FilterLogTriggerRequest) GetSubkeyPaths() []*SubkeyPath { +func (x *FilterLogTriggerRequest) GetSubkeys() []*SubkeyConfig { if x != nil { - return x.SubkeyPaths + return x.Subkeys } return nil } -func (x *FilterLogTriggerRequest) GetSubkeyFilters() []*SubkeyFilterCriteria { - if x != nil { - return x.SubkeyFilters - } - return nil -} - -func (x *FilterLogTriggerRequest) GetStartingBlock() int64 { - if x != nil { - return x.StartingBlock - } - return 0 -} - type Log struct { state protoimpl.MessageState `protogen:"open.v1"` ChainId string `protobuf:"bytes,1,opt,name=chain_id,json=chainId,proto3" json:"chain_id,omitempty"` // Chain identifier @@ -3125,7 +3057,7 @@ type Log struct { func (x *Log) Reset() { *x = Log{} - mi := &file_capabilities_blockchain_solana_v1alpha_client_proto_msgTypes[46] + mi := &file_capabilities_blockchain_solana_v1alpha_client_proto_msgTypes[45] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3137,7 +3069,7 @@ func (x *Log) String() string { func (*Log) ProtoMessage() {} func (x *Log) ProtoReflect() protoreflect.Message { - mi := &file_capabilities_blockchain_solana_v1alpha_client_proto_msgTypes[46] + mi := &file_capabilities_blockchain_solana_v1alpha_client_proto_msgTypes[45] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3150,7 +3082,7 @@ func (x *Log) ProtoReflect() protoreflect.Message { // Deprecated: Use Log.ProtoReflect.Descriptor instead. func (*Log) Descriptor() ([]byte, []int) { - return file_capabilities_blockchain_solana_v1alpha_client_proto_rawDescGZIP(), []int{46} + return file_capabilities_blockchain_solana_v1alpha_client_proto_rawDescGZIP(), []int{45} } func (x *Log) GetChainId() string { @@ -3241,7 +3173,7 @@ type AccountMeta struct { func (x *AccountMeta) Reset() { *x = AccountMeta{} - mi := &file_capabilities_blockchain_solana_v1alpha_client_proto_msgTypes[47] + mi := &file_capabilities_blockchain_solana_v1alpha_client_proto_msgTypes[46] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3253,7 +3185,7 @@ func (x *AccountMeta) String() string { func (*AccountMeta) ProtoMessage() {} func (x *AccountMeta) ProtoReflect() protoreflect.Message { - mi := &file_capabilities_blockchain_solana_v1alpha_client_proto_msgTypes[47] + mi := &file_capabilities_blockchain_solana_v1alpha_client_proto_msgTypes[46] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3266,7 +3198,7 @@ func (x *AccountMeta) ProtoReflect() protoreflect.Message { // Deprecated: Use AccountMeta.ProtoReflect.Descriptor instead. func (*AccountMeta) Descriptor() ([]byte, []int) { - return file_capabilities_blockchain_solana_v1alpha_client_proto_rawDescGZIP(), []int{47} + return file_capabilities_blockchain_solana_v1alpha_client_proto_rawDescGZIP(), []int{46} } func (x *AccountMeta) GetPublicKey() []byte { @@ -3295,7 +3227,7 @@ type WriteReportRequest struct { func (x *WriteReportRequest) Reset() { *x = WriteReportRequest{} - mi := &file_capabilities_blockchain_solana_v1alpha_client_proto_msgTypes[48] + mi := &file_capabilities_blockchain_solana_v1alpha_client_proto_msgTypes[47] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3307,7 +3239,7 @@ func (x *WriteReportRequest) String() string { func (*WriteReportRequest) ProtoMessage() {} func (x *WriteReportRequest) ProtoReflect() protoreflect.Message { - mi := &file_capabilities_blockchain_solana_v1alpha_client_proto_msgTypes[48] + mi := &file_capabilities_blockchain_solana_v1alpha_client_proto_msgTypes[47] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3320,7 +3252,7 @@ func (x *WriteReportRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use WriteReportRequest.ProtoReflect.Descriptor instead. func (*WriteReportRequest) Descriptor() ([]byte, []int) { - return file_capabilities_blockchain_solana_v1alpha_client_proto_rawDescGZIP(), []int{48} + return file_capabilities_blockchain_solana_v1alpha_client_proto_rawDescGZIP(), []int{47} } func (x *WriteReportRequest) GetRemainingAccounts() []*AccountMeta { @@ -3364,7 +3296,7 @@ type WriteReportReply struct { func (x *WriteReportReply) Reset() { *x = WriteReportReply{} - mi := &file_capabilities_blockchain_solana_v1alpha_client_proto_msgTypes[49] + mi := &file_capabilities_blockchain_solana_v1alpha_client_proto_msgTypes[48] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3376,7 +3308,7 @@ func (x *WriteReportReply) String() string { func (*WriteReportReply) ProtoMessage() {} func (x *WriteReportReply) ProtoReflect() protoreflect.Message { - mi := &file_capabilities_blockchain_solana_v1alpha_client_proto_msgTypes[49] + mi := &file_capabilities_blockchain_solana_v1alpha_client_proto_msgTypes[48] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3389,7 +3321,7 @@ func (x *WriteReportReply) ProtoReflect() protoreflect.Message { // Deprecated: Use WriteReportReply.ProtoReflect.Descriptor instead. func (*WriteReportReply) Descriptor() ([]byte, []int) { - return file_capabilities_blockchain_solana_v1alpha_client_proto_rawDescGZIP(), []int{49} + return file_capabilities_blockchain_solana_v1alpha_client_proto_rawDescGZIP(), []int{48} } func (x *WriteReportReply) GetTxStatus() TxStatus { @@ -3635,23 +3567,17 @@ const file_capabilities_blockchain_solana_v1alpha_client_proto_rawDesc = "" + "\taddresses\x18\x02 \x03(\fR\taddresses\"\x7f\n" + "\x0fValueComparator\x12\x14\n" + "\x05value\x18\x01 \x01(\fR\x05value\x12V\n" + - "\boperator\x18\x02 \x01(\x0e2:.capabilities.blockchain.solana.v1alpha.ComparisonOperatorR\boperator\"\x90\x01\n" + - "\x14SubkeyFilterCriteria\x12!\n" + - "\fsubkey_index\x18\x01 \x01(\x04R\vsubkeyIndex\x12U\n" + - "\tcomparers\x18\x02 \x03(\v27.capabilities.blockchain.solana.v1alpha.ValueComparatorR\tcomparers\" \n" + - "\n" + - "SubkeyPath\x12\x12\n" + - "\x04path\x18\x01 \x03(\tR\x04path\"\x8c\x03\n" + + "\boperator\x18\x02 \x01(\x0e2:.capabilities.blockchain.solana.v1alpha.ComparisonOperatorR\boperator\"y\n" + + "\fSubkeyConfig\x12\x12\n" + + "\x04path\x18\x01 \x03(\tR\x04path\x12U\n" + + "\tcomparers\x18\x02 \x03(\v27.capabilities.blockchain.solana.v1alpha.ValueComparatorR\tcomparers\"\xdc\x01\n" + "\x17FilterLogTriggerRequest\x12\x12\n" + "\x04name\x18\x01 \x01(\tR\x04name\x12\x18\n" + "\aaddress\x18\x02 \x01(\fR\aaddress\x12\x1d\n" + "\n" + - "event_name\x18\x03 \x01(\tR\teventName\x12\x1b\n" + - "\tevent_sig\x18\x04 \x01(\fR\beventSig\x12$\n" + - "\x0eevent_idl_json\x18\x05 \x01(\fR\feventIdlJson\x12U\n" + - "\fsubkey_paths\x18\x06 \x03(\v22.capabilities.blockchain.solana.v1alpha.SubkeyPathR\vsubkeyPaths\x12c\n" + - "\x0esubkey_filters\x18\a \x03(\v2<.capabilities.blockchain.solana.v1alpha.SubkeyFilterCriteriaR\rsubkeyFilters\x12%\n" + - "\x0estarting_block\x18\b \x01(\x03R\rstartingBlock\"\xd4\x02\n" + + "event_name\x18\x03 \x01(\tR\teventName\x12$\n" + + "\x0eevent_idl_json\x18\x04 \x01(\fR\feventIdlJson\x12N\n" + + "\asubkeys\x18\x05 \x03(\v24.capabilities.blockchain.solana.v1alpha.SubkeyConfigR\asubkeys\"\xd4\x02\n" + "\x03Log\x12\x19\n" + "\bchain_id\x18\x01 \x01(\tR\achainId\x12\x1b\n" + "\tlog_index\x18\x02 \x01(\x03R\blogIndex\x12\x1d\n" + @@ -3708,14 +3634,14 @@ const file_capabilities_blockchain_solana_v1alpha_client_proto_rawDesc = "" + "\bTxStatus\x12\x13\n" + "\x0fTX_STATUS_FATAL\x10\x00\x12\x15\n" + "\x11TX_STATUS_ABORTED\x10\x01\x12\x15\n" + - "\x11TX_STATUS_SUCCESS\x10\x02*G\n" + - "\x12ComparisonOperator\x12\x06\n" + - "\x02EQ\x10\x00\x12\a\n" + - "\x03NEQ\x10\x01\x12\x06\n" + - "\x02GT\x10\x02\x12\x06\n" + - "\x02LT\x10\x03\x12\a\n" + - "\x03GTE\x10\x04\x12\a\n" + - "\x03LTE\x10\x05*\x82\x01\n" + + "\x11TX_STATUS_SUCCESS\x10\x02*\xbf\x01\n" + + "\x12ComparisonOperator\x12\x1a\n" + + "\x16COMPARISON_OPERATOR_EQ\x10\x00\x12\x1b\n" + + "\x17COMPARISON_OPERATOR_NEQ\x10\x01\x12\x1a\n" + + "\x16COMPARISON_OPERATOR_GT\x10\x02\x12\x1a\n" + + "\x16COMPARISON_OPERATOR_LT\x10\x03\x12\x1b\n" + + "\x17COMPARISON_OPERATOR_GTE\x10\x04\x12\x1b\n" + + "\x17COMPARISON_OPERATOR_LTE\x10\x05*\x82\x01\n" + "\x1fReceiverContractExecutionStatus\x12.\n" + "*RECEIVER_CONTRACT_EXECUTION_STATUS_SUCCESS\x10\x00\x12/\n" + "+RECEIVER_CONTRACT_EXECUTION_STATUS_REVERTED\x10\x012\xb8\f\n" + @@ -3753,7 +3679,7 @@ func file_capabilities_blockchain_solana_v1alpha_client_proto_rawDescGZIP() []by } var file_capabilities_blockchain_solana_v1alpha_client_proto_enumTypes = make([]protoimpl.EnumInfo, 6) -var file_capabilities_blockchain_solana_v1alpha_client_proto_msgTypes = make([]protoimpl.MessageInfo, 50) +var file_capabilities_blockchain_solana_v1alpha_client_proto_msgTypes = make([]protoimpl.MessageInfo, 49) var file_capabilities_blockchain_solana_v1alpha_client_proto_goTypes = []any{ (EncodingType)(0), // 0: capabilities.blockchain.solana.v1alpha.EncodingType (CommitmentType)(0), // 1: capabilities.blockchain.solana.v1alpha.CommitmentType @@ -3804,19 +3730,18 @@ var file_capabilities_blockchain_solana_v1alpha_client_proto_goTypes = []any{ (*SimulateTXRequest)(nil), // 46: capabilities.blockchain.solana.v1alpha.SimulateTXRequest (*SimulateTransactionAccountsOpts)(nil), // 47: capabilities.blockchain.solana.v1alpha.SimulateTransactionAccountsOpts (*ValueComparator)(nil), // 48: capabilities.blockchain.solana.v1alpha.ValueComparator - (*SubkeyFilterCriteria)(nil), // 49: capabilities.blockchain.solana.v1alpha.SubkeyFilterCriteria - (*SubkeyPath)(nil), // 50: capabilities.blockchain.solana.v1alpha.SubkeyPath - (*FilterLogTriggerRequest)(nil), // 51: capabilities.blockchain.solana.v1alpha.FilterLogTriggerRequest - (*Log)(nil), // 52: capabilities.blockchain.solana.v1alpha.Log - (*AccountMeta)(nil), // 53: capabilities.blockchain.solana.v1alpha.AccountMeta - (*WriteReportRequest)(nil), // 54: capabilities.blockchain.solana.v1alpha.WriteReportRequest - (*WriteReportReply)(nil), // 55: capabilities.blockchain.solana.v1alpha.WriteReportReply - (*pb.BigInt)(nil), // 56: values.v1.BigInt - (*sdk.ReportResponse)(nil), // 57: sdk.v1alpha.ReportResponse + (*SubkeyConfig)(nil), // 49: capabilities.blockchain.solana.v1alpha.SubkeyConfig + (*FilterLogTriggerRequest)(nil), // 50: capabilities.blockchain.solana.v1alpha.FilterLogTriggerRequest + (*Log)(nil), // 51: capabilities.blockchain.solana.v1alpha.Log + (*AccountMeta)(nil), // 52: capabilities.blockchain.solana.v1alpha.AccountMeta + (*WriteReportRequest)(nil), // 53: capabilities.blockchain.solana.v1alpha.WriteReportRequest + (*WriteReportReply)(nil), // 54: capabilities.blockchain.solana.v1alpha.WriteReportReply + (*pb.BigInt)(nil), // 55: values.v1.BigInt + (*sdk.ReportResponse)(nil), // 56: sdk.v1alpha.ReportResponse } var file_capabilities_blockchain_solana_v1alpha_client_proto_depIdxs = []int32{ 8, // 0: capabilities.blockchain.solana.v1alpha.Account.data:type_name -> capabilities.blockchain.solana.v1alpha.DataBytesOrJSON - 56, // 1: capabilities.blockchain.solana.v1alpha.Account.rent_epoch:type_name -> values.v1.BigInt + 55, // 1: capabilities.blockchain.solana.v1alpha.Account.rent_epoch:type_name -> values.v1.BigInt 0, // 2: capabilities.blockchain.solana.v1alpha.DataBytesOrJSON.encoding:type_name -> capabilities.blockchain.solana.v1alpha.EncodingType 0, // 3: capabilities.blockchain.solana.v1alpha.GetAccountInfoOpts.encoding:type_name -> capabilities.blockchain.solana.v1alpha.EncodingType 1, // 4: capabilities.blockchain.solana.v1alpha.GetAccountInfoOpts.commitment:type_name -> capabilities.blockchain.solana.v1alpha.CommitmentType @@ -3859,39 +3784,38 @@ var file_capabilities_blockchain_solana_v1alpha_client_proto_depIdxs = []int32{ 44, // 41: capabilities.blockchain.solana.v1alpha.SimulateTXRequest.opts:type_name -> capabilities.blockchain.solana.v1alpha.SimulateTXOpts 0, // 42: capabilities.blockchain.solana.v1alpha.SimulateTransactionAccountsOpts.encoding:type_name -> capabilities.blockchain.solana.v1alpha.EncodingType 4, // 43: capabilities.blockchain.solana.v1alpha.ValueComparator.operator:type_name -> capabilities.blockchain.solana.v1alpha.ComparisonOperator - 48, // 44: capabilities.blockchain.solana.v1alpha.SubkeyFilterCriteria.comparers:type_name -> capabilities.blockchain.solana.v1alpha.ValueComparator - 50, // 45: capabilities.blockchain.solana.v1alpha.FilterLogTriggerRequest.subkey_paths:type_name -> capabilities.blockchain.solana.v1alpha.SubkeyPath - 49, // 46: capabilities.blockchain.solana.v1alpha.FilterLogTriggerRequest.subkey_filters:type_name -> capabilities.blockchain.solana.v1alpha.SubkeyFilterCriteria - 53, // 47: capabilities.blockchain.solana.v1alpha.WriteReportRequest.remaining_accounts:type_name -> capabilities.blockchain.solana.v1alpha.AccountMeta - 7, // 48: capabilities.blockchain.solana.v1alpha.WriteReportRequest.compute_config:type_name -> capabilities.blockchain.solana.v1alpha.ComputeConfig - 57, // 49: capabilities.blockchain.solana.v1alpha.WriteReportRequest.report:type_name -> sdk.v1alpha.ReportResponse - 3, // 50: capabilities.blockchain.solana.v1alpha.WriteReportReply.tx_status:type_name -> capabilities.blockchain.solana.v1alpha.TxStatus - 5, // 51: capabilities.blockchain.solana.v1alpha.WriteReportReply.receiver_contract_execution_status:type_name -> capabilities.blockchain.solana.v1alpha.ReceiverContractExecutionStatus - 12, // 52: capabilities.blockchain.solana.v1alpha.Client.GetAccountInfoWithOpts:input_type -> capabilities.blockchain.solana.v1alpha.GetAccountInfoWithOptsRequest - 14, // 53: capabilities.blockchain.solana.v1alpha.Client.GetBalance:input_type -> capabilities.blockchain.solana.v1alpha.GetBalanceRequest - 17, // 54: capabilities.blockchain.solana.v1alpha.Client.GetBlock:input_type -> capabilities.blockchain.solana.v1alpha.GetBlockRequest - 19, // 55: capabilities.blockchain.solana.v1alpha.Client.GetFeeForMessage:input_type -> capabilities.blockchain.solana.v1alpha.GetFeeForMessageRequest - 23, // 56: capabilities.blockchain.solana.v1alpha.Client.GetMultipleAccountsWithOpts:input_type -> capabilities.blockchain.solana.v1alpha.GetMultipleAccountsWithOptsRequest - 25, // 57: capabilities.blockchain.solana.v1alpha.Client.GetSignatureStatuses:input_type -> capabilities.blockchain.solana.v1alpha.GetSignatureStatusesRequest - 28, // 58: capabilities.blockchain.solana.v1alpha.Client.GetSlotHeight:input_type -> capabilities.blockchain.solana.v1alpha.GetSlotHeightRequest - 42, // 59: capabilities.blockchain.solana.v1alpha.Client.GetTransaction:input_type -> capabilities.blockchain.solana.v1alpha.GetTransactionRequest - 51, // 60: capabilities.blockchain.solana.v1alpha.Client.LogTrigger:input_type -> capabilities.blockchain.solana.v1alpha.FilterLogTriggerRequest - 54, // 61: capabilities.blockchain.solana.v1alpha.Client.WriteReport:input_type -> capabilities.blockchain.solana.v1alpha.WriteReportRequest - 11, // 62: capabilities.blockchain.solana.v1alpha.Client.GetAccountInfoWithOpts:output_type -> capabilities.blockchain.solana.v1alpha.GetAccountInfoWithOptsReply - 13, // 63: capabilities.blockchain.solana.v1alpha.Client.GetBalance:output_type -> capabilities.blockchain.solana.v1alpha.GetBalanceReply - 16, // 64: capabilities.blockchain.solana.v1alpha.Client.GetBlock:output_type -> capabilities.blockchain.solana.v1alpha.GetBlockReply - 18, // 65: capabilities.blockchain.solana.v1alpha.Client.GetFeeForMessage:output_type -> capabilities.blockchain.solana.v1alpha.GetFeeForMessageReply - 22, // 66: capabilities.blockchain.solana.v1alpha.Client.GetMultipleAccountsWithOpts:output_type -> capabilities.blockchain.solana.v1alpha.GetMultipleAccountsWithOptsReply - 24, // 67: capabilities.blockchain.solana.v1alpha.Client.GetSignatureStatuses:output_type -> capabilities.blockchain.solana.v1alpha.GetSignatureStatusesReply - 27, // 68: capabilities.blockchain.solana.v1alpha.Client.GetSlotHeight:output_type -> capabilities.blockchain.solana.v1alpha.GetSlotHeightReply - 41, // 69: capabilities.blockchain.solana.v1alpha.Client.GetTransaction:output_type -> capabilities.blockchain.solana.v1alpha.GetTransactionReply - 52, // 70: capabilities.blockchain.solana.v1alpha.Client.LogTrigger:output_type -> capabilities.blockchain.solana.v1alpha.Log - 55, // 71: capabilities.blockchain.solana.v1alpha.Client.WriteReport:output_type -> capabilities.blockchain.solana.v1alpha.WriteReportReply - 62, // [62:72] is the sub-list for method output_type - 52, // [52:62] is the sub-list for method input_type - 52, // [52:52] is the sub-list for extension type_name - 52, // [52:52] is the sub-list for extension extendee - 0, // [0:52] is the sub-list for field type_name + 48, // 44: capabilities.blockchain.solana.v1alpha.SubkeyConfig.comparers:type_name -> capabilities.blockchain.solana.v1alpha.ValueComparator + 49, // 45: capabilities.blockchain.solana.v1alpha.FilterLogTriggerRequest.subkeys:type_name -> capabilities.blockchain.solana.v1alpha.SubkeyConfig + 52, // 46: capabilities.blockchain.solana.v1alpha.WriteReportRequest.remaining_accounts:type_name -> capabilities.blockchain.solana.v1alpha.AccountMeta + 7, // 47: capabilities.blockchain.solana.v1alpha.WriteReportRequest.compute_config:type_name -> capabilities.blockchain.solana.v1alpha.ComputeConfig + 56, // 48: capabilities.blockchain.solana.v1alpha.WriteReportRequest.report:type_name -> sdk.v1alpha.ReportResponse + 3, // 49: capabilities.blockchain.solana.v1alpha.WriteReportReply.tx_status:type_name -> capabilities.blockchain.solana.v1alpha.TxStatus + 5, // 50: capabilities.blockchain.solana.v1alpha.WriteReportReply.receiver_contract_execution_status:type_name -> capabilities.blockchain.solana.v1alpha.ReceiverContractExecutionStatus + 12, // 51: capabilities.blockchain.solana.v1alpha.Client.GetAccountInfoWithOpts:input_type -> capabilities.blockchain.solana.v1alpha.GetAccountInfoWithOptsRequest + 14, // 52: capabilities.blockchain.solana.v1alpha.Client.GetBalance:input_type -> capabilities.blockchain.solana.v1alpha.GetBalanceRequest + 17, // 53: capabilities.blockchain.solana.v1alpha.Client.GetBlock:input_type -> capabilities.blockchain.solana.v1alpha.GetBlockRequest + 19, // 54: capabilities.blockchain.solana.v1alpha.Client.GetFeeForMessage:input_type -> capabilities.blockchain.solana.v1alpha.GetFeeForMessageRequest + 23, // 55: capabilities.blockchain.solana.v1alpha.Client.GetMultipleAccountsWithOpts:input_type -> capabilities.blockchain.solana.v1alpha.GetMultipleAccountsWithOptsRequest + 25, // 56: capabilities.blockchain.solana.v1alpha.Client.GetSignatureStatuses:input_type -> capabilities.blockchain.solana.v1alpha.GetSignatureStatusesRequest + 28, // 57: capabilities.blockchain.solana.v1alpha.Client.GetSlotHeight:input_type -> capabilities.blockchain.solana.v1alpha.GetSlotHeightRequest + 42, // 58: capabilities.blockchain.solana.v1alpha.Client.GetTransaction:input_type -> capabilities.blockchain.solana.v1alpha.GetTransactionRequest + 50, // 59: capabilities.blockchain.solana.v1alpha.Client.LogTrigger:input_type -> capabilities.blockchain.solana.v1alpha.FilterLogTriggerRequest + 53, // 60: capabilities.blockchain.solana.v1alpha.Client.WriteReport:input_type -> capabilities.blockchain.solana.v1alpha.WriteReportRequest + 11, // 61: capabilities.blockchain.solana.v1alpha.Client.GetAccountInfoWithOpts:output_type -> capabilities.blockchain.solana.v1alpha.GetAccountInfoWithOptsReply + 13, // 62: capabilities.blockchain.solana.v1alpha.Client.GetBalance:output_type -> capabilities.blockchain.solana.v1alpha.GetBalanceReply + 16, // 63: capabilities.blockchain.solana.v1alpha.Client.GetBlock:output_type -> capabilities.blockchain.solana.v1alpha.GetBlockReply + 18, // 64: capabilities.blockchain.solana.v1alpha.Client.GetFeeForMessage:output_type -> capabilities.blockchain.solana.v1alpha.GetFeeForMessageReply + 22, // 65: capabilities.blockchain.solana.v1alpha.Client.GetMultipleAccountsWithOpts:output_type -> capabilities.blockchain.solana.v1alpha.GetMultipleAccountsWithOptsReply + 24, // 66: capabilities.blockchain.solana.v1alpha.Client.GetSignatureStatuses:output_type -> capabilities.blockchain.solana.v1alpha.GetSignatureStatusesReply + 27, // 67: capabilities.blockchain.solana.v1alpha.Client.GetSlotHeight:output_type -> capabilities.blockchain.solana.v1alpha.GetSlotHeightReply + 41, // 68: capabilities.blockchain.solana.v1alpha.Client.GetTransaction:output_type -> capabilities.blockchain.solana.v1alpha.GetTransactionReply + 51, // 69: capabilities.blockchain.solana.v1alpha.Client.LogTrigger:output_type -> capabilities.blockchain.solana.v1alpha.Log + 54, // 70: capabilities.blockchain.solana.v1alpha.Client.WriteReport:output_type -> capabilities.blockchain.solana.v1alpha.WriteReportReply + 61, // [61:71] is the sub-list for method output_type + 51, // [51:61] is the sub-list for method input_type + 51, // [51:51] is the sub-list for extension type_name + 51, // [51:51] is the sub-list for extension extendee + 0, // [0:51] is the sub-list for field type_name } func init() { file_capabilities_blockchain_solana_v1alpha_client_proto_init() } @@ -3914,16 +3838,16 @@ func file_capabilities_blockchain_solana_v1alpha_client_proto_init() { (*TransactionEnvelope_Parsed)(nil), } file_capabilities_blockchain_solana_v1alpha_client_proto_msgTypes[35].OneofWrappers = []any{} - file_capabilities_blockchain_solana_v1alpha_client_proto_msgTypes[46].OneofWrappers = []any{} + file_capabilities_blockchain_solana_v1alpha_client_proto_msgTypes[45].OneofWrappers = []any{} + file_capabilities_blockchain_solana_v1alpha_client_proto_msgTypes[47].OneofWrappers = []any{} file_capabilities_blockchain_solana_v1alpha_client_proto_msgTypes[48].OneofWrappers = []any{} - file_capabilities_blockchain_solana_v1alpha_client_proto_msgTypes[49].OneofWrappers = []any{} type x struct{} out := protoimpl.TypeBuilder{ File: protoimpl.DescBuilder{ GoPackagePath: reflect.TypeOf(x{}).PkgPath(), RawDescriptor: unsafe.Slice(unsafe.StringData(file_capabilities_blockchain_solana_v1alpha_client_proto_rawDesc), len(file_capabilities_blockchain_solana_v1alpha_client_proto_rawDesc)), NumEnums: 6, - NumMessages: 50, + NumMessages: 49, NumExtensions: 0, NumServices: 1, }, diff --git a/pkg/capabilities/v2/chain-capabilities/solana/proto_helpers.go b/pkg/capabilities/v2/chain-capabilities/solana/proto_helpers.go index afbaf5a1d3..ec69fd4423 100644 --- a/pkg/capabilities/v2/chain-capabilities/solana/proto_helpers.go +++ b/pkg/capabilities/v2/chain-capabilities/solana/proto_helpers.go @@ -11,17 +11,17 @@ import ( // ConvertComparisonOperatorFromProto converts a proto ComparisonOperator to primitives.ComparisonOperator func ConvertComparisonOperatorFromProto(op ComparisonOperator) primitives.ComparisonOperator { switch op { - case ComparisonOperator_EQ: + case ComparisonOperator_COMPARISON_OPERATOR_EQ: return primitives.Eq - case ComparisonOperator_NEQ: + case ComparisonOperator_COMPARISON_OPERATOR_NEQ: return primitives.Neq - case ComparisonOperator_GT: + case ComparisonOperator_COMPARISON_OPERATOR_GT: return primitives.Gt - case ComparisonOperator_LT: + case ComparisonOperator_COMPARISON_OPERATOR_LT: return primitives.Lt - case ComparisonOperator_GTE: + case ComparisonOperator_COMPARISON_OPERATOR_GTE: return primitives.Gte - case ComparisonOperator_LTE: + case ComparisonOperator_COMPARISON_OPERATOR_LTE: return primitives.Lte default: return primitives.Eq @@ -32,48 +32,22 @@ func ConvertComparisonOperatorFromProto(op ComparisonOperator) primitives.Compar func ConvertComparisonOperatorToProto(op primitives.ComparisonOperator) ComparisonOperator { switch op { case primitives.Eq: - return ComparisonOperator_EQ + return ComparisonOperator_COMPARISON_OPERATOR_EQ case primitives.Neq: - return ComparisonOperator_NEQ + return ComparisonOperator_COMPARISON_OPERATOR_NEQ case primitives.Gt: - return ComparisonOperator_GT + return ComparisonOperator_COMPARISON_OPERATOR_GT case primitives.Lt: - return ComparisonOperator_LT + return ComparisonOperator_COMPARISON_OPERATOR_LT case primitives.Gte: - return ComparisonOperator_GTE + return ComparisonOperator_COMPARISON_OPERATOR_GTE case primitives.Lte: - return ComparisonOperator_LTE + return ComparisonOperator_COMPARISON_OPERATOR_LTE default: - return ComparisonOperator_EQ + return ComparisonOperator_COMPARISON_OPERATOR_EQ } } -// ConvertSubkeyPathsFromProto converts proto SubkeyPath slice to [][]string -func ConvertSubkeyPathsFromProto(paths []*SubkeyPath) [][]string { - if paths == nil { - return nil - } - result := make([][]string, len(paths)) - for i, p := range paths { - if p != nil { - result[i] = p.Path - } - } - return result -} - -// ConvertSubkeyPathsToProto converts [][]string to proto SubkeyPath slice -func ConvertSubkeyPathsToProto(paths [][]string) []*SubkeyPath { - if paths == nil { - return nil - } - result := make([]*SubkeyPath, len(paths)) - for i, p := range paths { - result[i] = &SubkeyPath{Path: p} - } - return result -} - // ConvertValueComparatorsFromProto converts proto ValueComparator slice to primitives.ValueComparator slice func ConvertValueComparatorsFromProto(comparers []*ValueComparator) []primitives.ValueComparator { if comparers == nil { diff --git a/pkg/settings/cresettings/settings.go b/pkg/settings/cresettings/settings.go index 9232e09a5b..1a3d0b88ec 100644 --- a/pkg/settings/cresettings/settings.go +++ b/pkg/settings/cresettings/settings.go @@ -102,8 +102,6 @@ var Default = Schema{ ChainAllowed: PerChainSelector(Bool(false), map[string]bool{ // geth-devnet2 "12922642891491394802": true, - // solana-devnet - "16423721717087811551": true, // geth-testnet "3379446385462418246": true, // solana-testnet From 03a5a6df24ff22a8e6a4a1957d346c68ff54f62e Mon Sep 17 00:00:00 2001 From: Silas Lenihan Date: Wed, 4 Feb 2026 18:31:32 -0500 Subject: [PATCH 10/12] Added GetFiltersNames to solService --- pkg/chains/solana/solana.pb.go | 117 ++++++++++++++++++------- pkg/chains/solana/solana.proto | 6 ++ pkg/chains/solana/solana_grpc.pb.go | 38 ++++++++ pkg/loop/internal/relayer/solana.go | 20 +++++ pkg/loop/internal/relayerset/solana.go | 20 +++++ pkg/types/mocks/solana_service.go | 58 ++++++++++++ pkg/types/relayer.go | 6 ++ 7 files changed, 232 insertions(+), 33 deletions(-) diff --git a/pkg/chains/solana/solana.pb.go b/pkg/chains/solana/solana.pb.go index c692ede3ef..654b3c91e1 100644 --- a/pkg/chains/solana/solana.pb.go +++ b/pkg/chains/solana/solana.pb.go @@ -3940,6 +3940,51 @@ func (x *GetLatestLPBlockReply) GetSlot() uint64 { return 0 } +// GetFiltersNames returns all registered filter names +type GetFiltersNamesReply struct { + state protoimpl.MessageState `protogen:"open.v1"` + Items []string `protobuf:"bytes,1,rep,name=items,proto3" json:"items,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *GetFiltersNamesReply) Reset() { + *x = GetFiltersNamesReply{} + mi := &file_solana_proto_msgTypes[61] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *GetFiltersNamesReply) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*GetFiltersNamesReply) ProtoMessage() {} + +func (x *GetFiltersNamesReply) ProtoReflect() protoreflect.Message { + mi := &file_solana_proto_msgTypes[61] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use GetFiltersNamesReply.ProtoReflect.Descriptor instead. +func (*GetFiltersNamesReply) Descriptor() ([]byte, []int) { + return file_solana_proto_rawDescGZIP(), []int{61} +} + +func (x *GetFiltersNamesReply) GetItems() []string { + if x != nil { + return x.Items + } + return nil +} + var File_solana_proto protoreflect.FileDescriptor const file_solana_proto_rawDesc = "" + @@ -4226,7 +4271,9 @@ const file_solana_proto_rawDesc = "" + "filterName\"\x1c\n" + "\x1aUnregisterLogTrackingReply\"+\n" + "\x15GetLatestLPBlockReply\x12\x12\n" + - "\x04slot\x18\x01 \x01(\x04R\x04slot*\xb0\x01\n" + + "\x04slot\x18\x01 \x01(\x04R\x04slot\",\n" + + "\x14GetFiltersNamesReply\x12\x14\n" + + "\x05items\x18\x01 \x03(\tR\x05items*\xb0\x01\n" + "\fEncodingType\x12\x16\n" + "\x12ENCODING_TYPE_NONE\x10\x00\x12\x18\n" + "\x14ENCODING_TYPE_BASE58\x10\x01\x12\x18\n" + @@ -4247,7 +4294,7 @@ const file_solana_proto_rawDesc = "" + "\bTxStatus\x12\x13\n" + "\x0fTX_STATUS_FATAL\x10\x00\x12\x15\n" + "\x11TX_STATUS_ABORTED\x10\x01\x12\x15\n" + - "\x11TX_STATUS_SUCCESS\x10\x022\xad\n" + + "\x11TX_STATUS_SUCCESS\x10\x022\xfb\n" + "\n" + "\x06Solana\x12n\n" + "\x16GetAccountInfoWithOpts\x12*.loop.solana.GetAccountInfoWithOptsRequest\x1a(.loop.solana.GetAccountInfoWithOptsReply\x12J\n" + @@ -4265,7 +4312,8 @@ const file_solana_proto_rawDesc = "" + "SimulateTX\x12\x1e.loop.solana.SimulateTXRequest\x1a\x1c.loop.solana.SimulateTXReply\x12_\n" + "\x11SubmitTransaction\x12%.loop.solana.SubmitTransactionRequest\x1a#.loop.solana.SubmitTransactionReply\x12k\n" + "\x15UnregisterLogTracking\x12).loop.solana.UnregisterLogTrackingRequest\x1a'.loop.solana.UnregisterLogTrackingReply\x12N\n" + - "\x10GetLatestLPBlock\x12\x16.google.protobuf.Empty\x1a\".loop.solana.GetLatestLPBlockReplyB@Z>github.com/smartcontractkit/chainlink-common/pkg/chains/solanab\x06proto3" + "\x10GetLatestLPBlock\x12\x16.google.protobuf.Empty\x1a\".loop.solana.GetLatestLPBlockReply\x12L\n" + + "\x0fGetFiltersNames\x12\x16.google.protobuf.Empty\x1a!.loop.solana.GetFiltersNamesReplyB@Z>github.com/smartcontractkit/chainlink-common/pkg/chains/solanab\x06proto3" var ( file_solana_proto_rawDescOnce sync.Once @@ -4280,7 +4328,7 @@ func file_solana_proto_rawDescGZIP() []byte { } var file_solana_proto_enumTypes = make([]protoimpl.EnumInfo, 4) -var file_solana_proto_msgTypes = make([]protoimpl.MessageInfo, 61) +var file_solana_proto_msgTypes = make([]protoimpl.MessageInfo, 62) var file_solana_proto_goTypes = []any{ (EncodingType)(0), // 0: loop.solana.EncodingType (CommitmentType)(0), // 1: loop.solana.CommitmentType @@ -4347,16 +4395,17 @@ var file_solana_proto_goTypes = []any{ (*UnregisterLogTrackingRequest)(nil), // 62: loop.solana.UnregisterLogTrackingRequest (*UnregisterLogTrackingReply)(nil), // 63: loop.solana.UnregisterLogTrackingReply (*GetLatestLPBlockReply)(nil), // 64: loop.solana.GetLatestLPBlockReply - (*pb.BigInt)(nil), // 65: values.v1.BigInt - (chain_common.ComparisonOperator)(0), // 66: loop.chain.common.ComparisonOperator - (chain_common.BooleanOperator)(0), // 67: loop.chain.common.BooleanOperator - (*chain_common.Primitive)(nil), // 68: loop.chain.common.Primitive - (*chain_common.LimitAndSort)(nil), // 69: loop.chain.common.LimitAndSort - (*emptypb.Empty)(nil), // 70: google.protobuf.Empty + (*GetFiltersNamesReply)(nil), // 65: loop.solana.GetFiltersNamesReply + (*pb.BigInt)(nil), // 66: values.v1.BigInt + (chain_common.ComparisonOperator)(0), // 67: loop.chain.common.ComparisonOperator + (chain_common.BooleanOperator)(0), // 68: loop.chain.common.BooleanOperator + (*chain_common.Primitive)(nil), // 69: loop.chain.common.Primitive + (*chain_common.LimitAndSort)(nil), // 70: loop.chain.common.LimitAndSort + (*emptypb.Empty)(nil), // 71: google.protobuf.Empty } var file_solana_proto_depIdxs = []int32{ 6, // 0: loop.solana.Account.data:type_name -> loop.solana.DataBytesOrJSON - 65, // 1: loop.solana.Account.rent_epoch:type_name -> values.v1.BigInt + 66, // 1: loop.solana.Account.rent_epoch:type_name -> values.v1.BigInt 0, // 2: loop.solana.DataBytesOrJSON.encoding:type_name -> loop.solana.EncodingType 0, // 3: loop.solana.GetAccountInfoOpts.encoding:type_name -> loop.solana.EncodingType 1, // 4: loop.solana.GetAccountInfoOpts.commitment:type_name -> loop.solana.CommitmentType @@ -4401,17 +4450,17 @@ var file_solana_proto_depIdxs = []int32{ 3, // 43: loop.solana.SubmitTransactionReply.status:type_name -> loop.solana.TxStatus 5, // 44: loop.solana.SubmitTransactionRequest.cfg:type_name -> loop.solana.ComputeConfig 54, // 45: loop.solana.EventSig.hashed_value_comparers:type_name -> loop.solana.HashedValueComparator - 66, // 46: loop.solana.IndexedValueComparator.operator:type_name -> loop.chain.common.ComparisonOperator + 67, // 46: loop.solana.IndexedValueComparator.operator:type_name -> loop.chain.common.ComparisonOperator 49, // 47: loop.solana.EventBySubkey.value_comparers:type_name -> loop.solana.IndexedValueComparator 53, // 48: loop.solana.Expression.primitive:type_name -> loop.solana.Primitive 52, // 49: loop.solana.Expression.boolean_expression:type_name -> loop.solana.BooleanExpression - 67, // 50: loop.solana.BooleanExpression.boolean_operator:type_name -> loop.chain.common.BooleanOperator + 68, // 50: loop.solana.BooleanExpression.boolean_operator:type_name -> loop.chain.common.BooleanOperator 51, // 51: loop.solana.BooleanExpression.expression:type_name -> loop.solana.Expression - 68, // 52: loop.solana.Primitive.general_primitive:type_name -> loop.chain.common.Primitive + 69, // 52: loop.solana.Primitive.general_primitive:type_name -> loop.chain.common.Primitive 50, // 53: loop.solana.Primitive.event_by_subkey:type_name -> loop.solana.EventBySubkey 55, // 54: loop.solana.LPFilterQuery.subkey_paths:type_name -> loop.solana.Subkeys 51, // 55: loop.solana.QueryTrackedLogsRequest.filterQuery:type_name -> loop.solana.Expression - 69, // 56: loop.solana.QueryTrackedLogsRequest.limit_and_sort:type_name -> loop.chain.common.LimitAndSort + 70, // 56: loop.solana.QueryTrackedLogsRequest.limit_and_sort:type_name -> loop.chain.common.LimitAndSort 57, // 57: loop.solana.QueryTrackedLogsReply.logs:type_name -> loop.solana.Log 56, // 58: loop.solana.RegisterLogTrackingRequest.filter:type_name -> loop.solana.LPFilterQuery 10, // 59: loop.solana.Solana.GetAccountInfoWithOpts:input_type -> loop.solana.GetAccountInfoWithOptsRequest @@ -4427,23 +4476,25 @@ var file_solana_proto_depIdxs = []int32{ 44, // 69: loop.solana.Solana.SimulateTX:input_type -> loop.solana.SimulateTXRequest 47, // 70: loop.solana.Solana.SubmitTransaction:input_type -> loop.solana.SubmitTransactionRequest 62, // 71: loop.solana.Solana.UnregisterLogTracking:input_type -> loop.solana.UnregisterLogTrackingRequest - 70, // 72: loop.solana.Solana.GetLatestLPBlock:input_type -> google.protobuf.Empty - 9, // 73: loop.solana.Solana.GetAccountInfoWithOpts:output_type -> loop.solana.GetAccountInfoWithOptsReply - 11, // 74: loop.solana.Solana.GetBalance:output_type -> loop.solana.GetBalanceReply - 14, // 75: loop.solana.Solana.GetBlock:output_type -> loop.solana.GetBlockReply - 16, // 76: loop.solana.Solana.GetFeeForMessage:output_type -> loop.solana.GetFeeForMessageReply - 20, // 77: loop.solana.Solana.GetMultipleAccountsWithOpts:output_type -> loop.solana.GetMultipleAccountsWithOptsReply - 22, // 78: loop.solana.Solana.GetSignatureStatuses:output_type -> loop.solana.GetSignatureStatusesReply - 25, // 79: loop.solana.Solana.GetSlotHeight:output_type -> loop.solana.GetSlotHeightReply - 39, // 80: loop.solana.Solana.GetTransaction:output_type -> loop.solana.GetTransactionReply - 59, // 81: loop.solana.Solana.QueryTrackedLogs:output_type -> loop.solana.QueryTrackedLogsReply - 61, // 82: loop.solana.Solana.RegisterLogTracking:output_type -> loop.solana.RegisterLogTrackingReply - 43, // 83: loop.solana.Solana.SimulateTX:output_type -> loop.solana.SimulateTXReply - 46, // 84: loop.solana.Solana.SubmitTransaction:output_type -> loop.solana.SubmitTransactionReply - 63, // 85: loop.solana.Solana.UnregisterLogTracking:output_type -> loop.solana.UnregisterLogTrackingReply - 64, // 86: loop.solana.Solana.GetLatestLPBlock:output_type -> loop.solana.GetLatestLPBlockReply - 73, // [73:87] is the sub-list for method output_type - 59, // [59:73] is the sub-list for method input_type + 71, // 72: loop.solana.Solana.GetLatestLPBlock:input_type -> google.protobuf.Empty + 71, // 73: loop.solana.Solana.GetFiltersNames:input_type -> google.protobuf.Empty + 9, // 74: loop.solana.Solana.GetAccountInfoWithOpts:output_type -> loop.solana.GetAccountInfoWithOptsReply + 11, // 75: loop.solana.Solana.GetBalance:output_type -> loop.solana.GetBalanceReply + 14, // 76: loop.solana.Solana.GetBlock:output_type -> loop.solana.GetBlockReply + 16, // 77: loop.solana.Solana.GetFeeForMessage:output_type -> loop.solana.GetFeeForMessageReply + 20, // 78: loop.solana.Solana.GetMultipleAccountsWithOpts:output_type -> loop.solana.GetMultipleAccountsWithOptsReply + 22, // 79: loop.solana.Solana.GetSignatureStatuses:output_type -> loop.solana.GetSignatureStatusesReply + 25, // 80: loop.solana.Solana.GetSlotHeight:output_type -> loop.solana.GetSlotHeightReply + 39, // 81: loop.solana.Solana.GetTransaction:output_type -> loop.solana.GetTransactionReply + 59, // 82: loop.solana.Solana.QueryTrackedLogs:output_type -> loop.solana.QueryTrackedLogsReply + 61, // 83: loop.solana.Solana.RegisterLogTracking:output_type -> loop.solana.RegisterLogTrackingReply + 43, // 84: loop.solana.Solana.SimulateTX:output_type -> loop.solana.SimulateTXReply + 46, // 85: loop.solana.Solana.SubmitTransaction:output_type -> loop.solana.SubmitTransactionReply + 63, // 86: loop.solana.Solana.UnregisterLogTracking:output_type -> loop.solana.UnregisterLogTrackingReply + 64, // 87: loop.solana.Solana.GetLatestLPBlock:output_type -> loop.solana.GetLatestLPBlockReply + 65, // 88: loop.solana.Solana.GetFiltersNames:output_type -> loop.solana.GetFiltersNamesReply + 74, // [74:89] is the sub-list for method output_type + 59, // [59:74] is the sub-list for method input_type 59, // [59:59] is the sub-list for extension type_name 59, // [59:59] is the sub-list for extension extendee 0, // [0:59] is the sub-list for field type_name @@ -4485,7 +4536,7 @@ func file_solana_proto_init() { GoPackagePath: reflect.TypeOf(x{}).PkgPath(), RawDescriptor: unsafe.Slice(unsafe.StringData(file_solana_proto_rawDesc), len(file_solana_proto_rawDesc)), NumEnums: 4, - NumMessages: 61, + NumMessages: 62, NumExtensions: 0, NumServices: 1, }, diff --git a/pkg/chains/solana/solana.proto b/pkg/chains/solana/solana.proto index c1f532f69b..f777780a07 100644 --- a/pkg/chains/solana/solana.proto +++ b/pkg/chains/solana/solana.proto @@ -22,6 +22,7 @@ service Solana { rpc SubmitTransaction(SubmitTransactionRequest) returns (SubmitTransactionReply); rpc UnregisterLogTracking(UnregisterLogTrackingRequest) returns (UnregisterLogTrackingReply); rpc GetLatestLPBlock(google.protobuf.Empty) returns (GetLatestLPBlockReply); + rpc GetFiltersNames(google.protobuf.Empty) returns (GetFiltersNamesReply); } // Account/tx data encodings. @@ -464,3 +465,8 @@ message UnregisterLogTrackingReply {} message GetLatestLPBlockReply { uint64 slot = 1; // block slot } + +// GetFiltersNames returns all registered filter names +message GetFiltersNamesReply { + repeated string items = 1; +} diff --git a/pkg/chains/solana/solana_grpc.pb.go b/pkg/chains/solana/solana_grpc.pb.go index 0ba218f75a..e86cee5bca 100644 --- a/pkg/chains/solana/solana_grpc.pb.go +++ b/pkg/chains/solana/solana_grpc.pb.go @@ -34,6 +34,7 @@ const ( Solana_SubmitTransaction_FullMethodName = "/loop.solana.Solana/SubmitTransaction" Solana_UnregisterLogTracking_FullMethodName = "/loop.solana.Solana/UnregisterLogTracking" Solana_GetLatestLPBlock_FullMethodName = "/loop.solana.Solana/GetLatestLPBlock" + Solana_GetFiltersNames_FullMethodName = "/loop.solana.Solana/GetFiltersNames" ) // SolanaClient is the client API for Solana service. @@ -54,6 +55,7 @@ type SolanaClient interface { SubmitTransaction(ctx context.Context, in *SubmitTransactionRequest, opts ...grpc.CallOption) (*SubmitTransactionReply, error) UnregisterLogTracking(ctx context.Context, in *UnregisterLogTrackingRequest, opts ...grpc.CallOption) (*UnregisterLogTrackingReply, error) GetLatestLPBlock(ctx context.Context, in *emptypb.Empty, opts ...grpc.CallOption) (*GetLatestLPBlockReply, error) + GetFiltersNames(ctx context.Context, in *emptypb.Empty, opts ...grpc.CallOption) (*GetFiltersNamesReply, error) } type solanaClient struct { @@ -204,6 +206,16 @@ func (c *solanaClient) GetLatestLPBlock(ctx context.Context, in *emptypb.Empty, return out, nil } +func (c *solanaClient) GetFiltersNames(ctx context.Context, in *emptypb.Empty, opts ...grpc.CallOption) (*GetFiltersNamesReply, error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) + out := new(GetFiltersNamesReply) + err := c.cc.Invoke(ctx, Solana_GetFiltersNames_FullMethodName, in, out, cOpts...) + if err != nil { + return nil, err + } + return out, nil +} + // SolanaServer is the server API for Solana service. // All implementations must embed UnimplementedSolanaServer // for forward compatibility. @@ -222,6 +234,7 @@ type SolanaServer interface { SubmitTransaction(context.Context, *SubmitTransactionRequest) (*SubmitTransactionReply, error) UnregisterLogTracking(context.Context, *UnregisterLogTrackingRequest) (*UnregisterLogTrackingReply, error) GetLatestLPBlock(context.Context, *emptypb.Empty) (*GetLatestLPBlockReply, error) + GetFiltersNames(context.Context, *emptypb.Empty) (*GetFiltersNamesReply, error) mustEmbedUnimplementedSolanaServer() } @@ -274,6 +287,9 @@ func (UnimplementedSolanaServer) UnregisterLogTracking(context.Context, *Unregis func (UnimplementedSolanaServer) GetLatestLPBlock(context.Context, *emptypb.Empty) (*GetLatestLPBlockReply, error) { return nil, status.Errorf(codes.Unimplemented, "method GetLatestLPBlock not implemented") } +func (UnimplementedSolanaServer) GetFiltersNames(context.Context, *emptypb.Empty) (*GetFiltersNamesReply, error) { + return nil, status.Errorf(codes.Unimplemented, "method GetFiltersNames not implemented") +} func (UnimplementedSolanaServer) mustEmbedUnimplementedSolanaServer() {} func (UnimplementedSolanaServer) testEmbeddedByValue() {} @@ -547,6 +563,24 @@ func _Solana_GetLatestLPBlock_Handler(srv interface{}, ctx context.Context, dec return interceptor(ctx, in, info, handler) } +func _Solana_GetFiltersNames_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(emptypb.Empty) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(SolanaServer).GetFiltersNames(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: Solana_GetFiltersNames_FullMethodName, + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(SolanaServer).GetFiltersNames(ctx, req.(*emptypb.Empty)) + } + return interceptor(ctx, in, info, handler) +} + // Solana_ServiceDesc is the grpc.ServiceDesc for Solana service. // It's only intended for direct use with grpc.RegisterService, // and not to be introspected or modified (even as a copy) @@ -610,6 +644,10 @@ var Solana_ServiceDesc = grpc.ServiceDesc{ MethodName: "GetLatestLPBlock", Handler: _Solana_GetLatestLPBlock_Handler, }, + { + MethodName: "GetFiltersNames", + Handler: _Solana_GetFiltersNames_Handler, + }, }, Streams: []grpc.StreamDesc{}, Metadata: "solana.proto", diff --git a/pkg/loop/internal/relayer/solana.go b/pkg/loop/internal/relayer/solana.go index 491a4935ba..5d5c9ec302 100644 --- a/pkg/loop/internal/relayer/solana.go +++ b/pkg/loop/internal/relayer/solana.go @@ -36,6 +36,15 @@ func (sc *SolClient) GetLatestLPBlock(ctx context.Context) (*solana.LPBlock, err }, nil } +func (sc *SolClient) GetFiltersNames(ctx context.Context) ([]string, error) { + resp, err := sc.grpcClient.GetFiltersNames(ctx, &emptypb.Empty{}) + if err != nil { + return nil, net.WrapRPCErr(err) + } + + return resp.GetItems(), nil +} + func (sc *SolClient) SubmitTransaction(ctx context.Context, req solana.SubmitTransactionRequest) (*solana.SubmitTransactionReply, error) { pReq := solpb.ConvertSubmitTransactionRequestToProto(req) @@ -240,6 +249,17 @@ func (s *solServer) GetLatestLPBlock(ctx context.Context, _ *emptypb.Empty) (*so }, nil } +func (s *solServer) GetFiltersNames(ctx context.Context, _ *emptypb.Empty) (*solpb.GetFiltersNamesReply, error) { + names, err := s.impl.GetFiltersNames(ctx) + if err != nil { + return nil, net.WrapRPCErr(err) + } + + return &solpb.GetFiltersNamesReply{ + Items: names, + }, nil +} + func (s *solServer) SubmitTransaction(ctx context.Context, req *solpb.SubmitTransactionRequest) (*solpb.SubmitTransactionReply, error) { dReq, err := solpb.ConvertSubmitTransactionRequestFromProto(req) if err != nil { diff --git a/pkg/loop/internal/relayerset/solana.go b/pkg/loop/internal/relayerset/solana.go index 563ee8ff92..30e638e2a1 100644 --- a/pkg/loop/internal/relayerset/solana.go +++ b/pkg/loop/internal/relayerset/solana.go @@ -79,6 +79,10 @@ func (sc *solClient) UnregisterLogTracking(ctx context.Context, in *solpb.Unregi return sc.client.UnregisterLogTracking(appendRelayID(ctx, sc.relayID), in, opts...) } +func (sc *solClient) GetFiltersNames(ctx context.Context, in *emptypb.Empty, opts ...grpc.CallOption) (*solpb.GetFiltersNamesReply, error) { + return sc.client.GetFiltersNames(appendRelayID(ctx, sc.relayID), in, opts...) +} + type solServer struct { solpb.UnimplementedSolanaServer parent *Server @@ -344,6 +348,22 @@ func (ss *solServer) SimulateTX(ctx context.Context, req *solpb.SimulateTXReques return solpb.ConvertSimulateTXReplyToProto(dResp), nil } +func (ss *solServer) GetFiltersNames(ctx context.Context, _ *emptypb.Empty) (*solpb.GetFiltersNamesReply, error) { + solService, err := ss.parent.getSolService(ctx) + if err != nil { + return nil, err + } + + names, err := solService.GetFiltersNames(ctx) + if err != nil { + return nil, net.WrapRPCErr(err) + } + + return &solpb.GetFiltersNamesReply{ + Items: names, + }, nil +} + func (s *Server) getSolService(ctx context.Context) (types.SolanaService, error) { id, err := readRelayID(ctx) if err != nil { diff --git a/pkg/types/mocks/solana_service.go b/pkg/types/mocks/solana_service.go index 5ece5720f4..51310cccfc 100644 --- a/pkg/types/mocks/solana_service.go +++ b/pkg/types/mocks/solana_service.go @@ -260,6 +260,64 @@ func (_c *SolanaService_GetFeeForMessage_Call) RunAndReturn(run func(context.Con return _c } +// GetFiltersNames provides a mock function with given fields: ctx +func (_m *SolanaService) GetFiltersNames(ctx context.Context) ([]string, error) { + ret := _m.Called(ctx) + + if len(ret) == 0 { + panic("no return value specified for GetFiltersNames") + } + + var r0 []string + var r1 error + if rf, ok := ret.Get(0).(func(context.Context) ([]string, error)); ok { + return rf(ctx) + } + if rf, ok := ret.Get(0).(func(context.Context) []string); ok { + r0 = rf(ctx) + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).([]string) + } + } + + if rf, ok := ret.Get(1).(func(context.Context) error); ok { + r1 = rf(ctx) + } else { + r1 = ret.Error(1) + } + + return r0, r1 +} + +// SolanaService_GetFiltersNames_Call is a *mock.Call that shadows Run/Return methods with type explicit version for method 'GetFiltersNames' +type SolanaService_GetFiltersNames_Call struct { + *mock.Call +} + +// GetFiltersNames is a helper method to define mock.On call +// - ctx context.Context +func (_e *SolanaService_Expecter) GetFiltersNames(ctx interface{}) *SolanaService_GetFiltersNames_Call { + return &SolanaService_GetFiltersNames_Call{Call: _e.mock.On("GetFiltersNames", ctx)} +} + +func (_c *SolanaService_GetFiltersNames_Call) Run(run func(ctx context.Context)) *SolanaService_GetFiltersNames_Call { + _c.Call.Run(func(args mock.Arguments) { + run(args[0].(context.Context)) + }) + return _c +} + +func (_c *SolanaService_GetFiltersNames_Call) Return(_a0 []string, _a1 error) *SolanaService_GetFiltersNames_Call { + _c.Call.Return(_a0, _a1) + return _c +} + +func (_c *SolanaService_GetFiltersNames_Call) RunAndReturn(run func(context.Context) ([]string, error)) *SolanaService_GetFiltersNames_Call { + _c.Call.Return(run) + return _c +} + // GetLatestLPBlock provides a mock function with given fields: ctx func (_m *SolanaService) GetLatestLPBlock(ctx context.Context) (*solana.LPBlock, error) { ret := _m.Called(ctx) diff --git a/pkg/types/relayer.go b/pkg/types/relayer.go index f848834c8b..3e3da08d2f 100644 --- a/pkg/types/relayer.go +++ b/pkg/types/relayer.go @@ -253,6 +253,9 @@ type SolanaService interface { // GetLatestLPBlock retrieves current LatestBlock from cache perspective GetLatestLPBlock(ctx context.Context) (*solana.LPBlock, error) + + // GetFiltersNames returns all registered filters' names for later pruning + GetFiltersNames(ctx context.Context) ([]string, error) } // Relayer extends ChainService with providers for each product. @@ -537,3 +540,6 @@ func (uss *UnimplementedSolanaService) SimulateTX(ctx context.Context, req solan func (uss *UnimplementedSolanaService) GetLatestLPBlock(ctx context.Context) (*solana.LPBlock, error) { return nil, status.Errorf(codes.Unimplemented, "method GetLatestLPBlock not implemented") } +func (uss *UnimplementedSolanaService) GetFiltersNames(ctx context.Context) ([]string, error) { + return nil, status.Errorf(codes.Unimplemented, "method GetFiltersNames not implemented") +} From 622393316e294a9096b496bca3250f9db6f5f8eb Mon Sep 17 00:00:00 2001 From: Silas Lenihan Date: Fri, 6 Feb 2026 09:08:28 -0500 Subject: [PATCH 11/12] return error on comparator conversion --- .../solana/proto_helpers.go | 56 +++++++++++-------- 1 file changed, 32 insertions(+), 24 deletions(-) diff --git a/pkg/capabilities/v2/chain-capabilities/solana/proto_helpers.go b/pkg/capabilities/v2/chain-capabilities/solana/proto_helpers.go index ec69fd4423..767173b57b 100644 --- a/pkg/capabilities/v2/chain-capabilities/solana/proto_helpers.go +++ b/pkg/capabilities/v2/chain-capabilities/solana/proto_helpers.go @@ -9,66 +9,70 @@ import ( ) // ConvertComparisonOperatorFromProto converts a proto ComparisonOperator to primitives.ComparisonOperator -func ConvertComparisonOperatorFromProto(op ComparisonOperator) primitives.ComparisonOperator { +func ConvertComparisonOperatorFromProto(op ComparisonOperator) (primitives.ComparisonOperator, error) { switch op { case ComparisonOperator_COMPARISON_OPERATOR_EQ: - return primitives.Eq + return primitives.Eq, nil case ComparisonOperator_COMPARISON_OPERATOR_NEQ: - return primitives.Neq + return primitives.Neq, nil case ComparisonOperator_COMPARISON_OPERATOR_GT: - return primitives.Gt + return primitives.Gt, nil case ComparisonOperator_COMPARISON_OPERATOR_LT: - return primitives.Lt + return primitives.Lt, nil case ComparisonOperator_COMPARISON_OPERATOR_GTE: - return primitives.Gte + return primitives.Gte, nil case ComparisonOperator_COMPARISON_OPERATOR_LTE: - return primitives.Lte + return primitives.Lte, nil default: - return primitives.Eq + return 0, fmt.Errorf("unknown comparison operator: %s", op) } } // ConvertComparisonOperatorToProto converts a primitives.ComparisonOperator to proto ComparisonOperator -func ConvertComparisonOperatorToProto(op primitives.ComparisonOperator) ComparisonOperator { +func ConvertComparisonOperatorToProto(op primitives.ComparisonOperator) (ComparisonOperator, error) { switch op { case primitives.Eq: - return ComparisonOperator_COMPARISON_OPERATOR_EQ + return ComparisonOperator_COMPARISON_OPERATOR_EQ, nil case primitives.Neq: - return ComparisonOperator_COMPARISON_OPERATOR_NEQ + return ComparisonOperator_COMPARISON_OPERATOR_NEQ, nil case primitives.Gt: - return ComparisonOperator_COMPARISON_OPERATOR_GT + return ComparisonOperator_COMPARISON_OPERATOR_GT, nil case primitives.Lt: - return ComparisonOperator_COMPARISON_OPERATOR_LT + return ComparisonOperator_COMPARISON_OPERATOR_LT, nil case primitives.Gte: - return ComparisonOperator_COMPARISON_OPERATOR_GTE + return ComparisonOperator_COMPARISON_OPERATOR_GTE, nil case primitives.Lte: - return ComparisonOperator_COMPARISON_OPERATOR_LTE + return ComparisonOperator_COMPARISON_OPERATOR_LTE, nil default: - return ComparisonOperator_COMPARISON_OPERATOR_EQ + return 0, fmt.Errorf("unknown comparison operator: %s", op) } } // ConvertValueComparatorsFromProto converts proto ValueComparator slice to primitives.ValueComparator slice -func ConvertValueComparatorsFromProto(comparers []*ValueComparator) []primitives.ValueComparator { +func ConvertValueComparatorsFromProto(comparers []*ValueComparator) ([]primitives.ValueComparator, error) { if comparers == nil { - return nil + return nil, nil } result := make([]primitives.ValueComparator, len(comparers)) for i, c := range comparers { if c != nil { + operator, err := ConvertComparisonOperatorFromProto(c.Operator) + if err != nil { + return nil, fmt.Errorf("failed to convert comparison operator: %w", err) + } result[i] = primitives.ValueComparator{ Value: c.Value, // []byte is compatible with any - Operator: ConvertComparisonOperatorFromProto(c.Operator), + Operator: operator, } } } - return result + return result, nil } // ConvertValueComparatorsToProto converts primitives.ValueComparator slice to proto ValueComparator slice -func ConvertValueComparatorsToProto(comparers []primitives.ValueComparator) []*ValueComparator { +func ConvertValueComparatorsToProto(comparers []primitives.ValueComparator) ([]*ValueComparator, error) { if comparers == nil { - return nil + return nil, nil } result := make([]*ValueComparator, len(comparers)) for i, c := range comparers { @@ -77,12 +81,16 @@ func ConvertValueComparatorsToProto(comparers []primitives.ValueComparator) []*V if b, ok := c.Value.([]byte); ok { valueBytes = b } + operator, err := ConvertComparisonOperatorToProto(c.Operator) + if err != nil { + return nil, fmt.Errorf("failed to convert comparison operator: %w", err) + } result[i] = &ValueComparator{ Value: valueBytes, - Operator: ConvertComparisonOperatorToProto(c.Operator), + Operator: operator, } } - return result + return result, nil } // ConvertLogFromProto converts a proto Log to typesolana.Log From 450c52e287aa25d243db706ba54ebb87318e6f31 Mon Sep 17 00:00:00 2001 From: Silas Lenihan Date: Tue, 24 Feb 2026 22:12:46 -0500 Subject: [PATCH 12/12] throw error on failed cast --- pkg/capabilities/v2/chain-capabilities/solana/proto_helpers.go | 2 ++ 1 file changed, 2 insertions(+) diff --git a/pkg/capabilities/v2/chain-capabilities/solana/proto_helpers.go b/pkg/capabilities/v2/chain-capabilities/solana/proto_helpers.go index 767173b57b..b4eb8a52a4 100644 --- a/pkg/capabilities/v2/chain-capabilities/solana/proto_helpers.go +++ b/pkg/capabilities/v2/chain-capabilities/solana/proto_helpers.go @@ -80,6 +80,8 @@ func ConvertValueComparatorsToProto(comparers []primitives.ValueComparator) ([]* var valueBytes []byte if b, ok := c.Value.([]byte); ok { valueBytes = b + } else { + return nil, fmt.Errorf("value is not a []byte: %T", c.Value) } operator, err := ConvertComparisonOperatorToProto(c.Operator) if err != nil {