// Code generated by protoc-gen-go. DO NOT EDIT.
// versions:
// 	protoc-gen-go v1.36.6
// 	protoc        v5.29.2
// source: avs.proto

package avsproto

import (
	protoreflect "google.golang.org/protobuf/reflect/protoreflect"
	protoimpl "google.golang.org/protobuf/runtime/protoimpl"
	structpb "google.golang.org/protobuf/types/known/structpb"
	reflect "reflect"
	sync "sync"
	unsafe "unsafe"
)

const (
	// Verify that this generated code is sufficiently up-to-date.
	_ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion)
	// Verify that runtime/protoimpl is sufficiently up-to-date.
	_ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20)
)

// TriggerType defines all supported trigger types
// This enum provides a single source of truth for trigger types used across the system
type TriggerType int32

const (
	TriggerType_TRIGGER_TYPE_UNSPECIFIED TriggerType = 0 // Default unspecified value
	TriggerType_TRIGGER_TYPE_MANUAL      TriggerType = 1 // Manual trigger
	TriggerType_TRIGGER_TYPE_FIXED_TIME  TriggerType = 2 // Fixed time trigger
	TriggerType_TRIGGER_TYPE_CRON        TriggerType = 3 // Cron-based trigger
	TriggerType_TRIGGER_TYPE_BLOCK       TriggerType = 4 // Block-based trigger
	TriggerType_TRIGGER_TYPE_EVENT       TriggerType = 5 // Event-based trigger
)

// Enum value maps for TriggerType.
var (
	TriggerType_name = map[int32]string{
		0: "TRIGGER_TYPE_UNSPECIFIED",
		1: "TRIGGER_TYPE_MANUAL",
		2: "TRIGGER_TYPE_FIXED_TIME",
		3: "TRIGGER_TYPE_CRON",
		4: "TRIGGER_TYPE_BLOCK",
		5: "TRIGGER_TYPE_EVENT",
	}
	TriggerType_value = map[string]int32{
		"TRIGGER_TYPE_UNSPECIFIED": 0,
		"TRIGGER_TYPE_MANUAL":      1,
		"TRIGGER_TYPE_FIXED_TIME":  2,
		"TRIGGER_TYPE_CRON":        3,
		"TRIGGER_TYPE_BLOCK":       4,
		"TRIGGER_TYPE_EVENT":       5,
	}
)

func (x TriggerType) Enum() *TriggerType {
	p := new(TriggerType)
	*p = x
	return p
}

func (x TriggerType) String() string {
	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
}

func (TriggerType) Descriptor() protoreflect.EnumDescriptor {
	return file_avs_proto_enumTypes[0].Descriptor()
}

func (TriggerType) Type() protoreflect.EnumType {
	return &file_avs_proto_enumTypes[0]
}

func (x TriggerType) Number() protoreflect.EnumNumber {
	return protoreflect.EnumNumber(x)
}

// Deprecated: Use TriggerType.Descriptor instead.
func (TriggerType) EnumDescriptor() ([]byte, []int) {
	return file_avs_proto_rawDescGZIP(), []int{0}
}

// NodeType defines all supported node types
// This enum provides a single source of truth for node types used across the system
type NodeType int32

const (
	NodeType_NODE_TYPE_UNSPECIFIED    NodeType = 0 // Default unspecified value
	NodeType_NODE_TYPE_ETH_TRANSFER   NodeType = 1 // Ethereum transfer node
	NodeType_NODE_TYPE_CONTRACT_WRITE NodeType = 2 // Contract write node
	NodeType_NODE_TYPE_CONTRACT_READ  NodeType = 3 // Contract read node
	NodeType_NODE_TYPE_GRAPHQL_QUERY  NodeType = 4 // GraphQL query node
	NodeType_NODE_TYPE_REST_API       NodeType = 5 // REST API node
	NodeType_NODE_TYPE_CUSTOM_CODE    NodeType = 6 // Custom code node
	NodeType_NODE_TYPE_BRANCH         NodeType = 7 // Branch node
	NodeType_NODE_TYPE_FILTER         NodeType = 8 // Filter node
	NodeType_NODE_TYPE_LOOP           NodeType = 9 // Loop node
)

// Enum value maps for NodeType.
var (
	NodeType_name = map[int32]string{
		0: "NODE_TYPE_UNSPECIFIED",
		1: "NODE_TYPE_ETH_TRANSFER",
		2: "NODE_TYPE_CONTRACT_WRITE",
		3: "NODE_TYPE_CONTRACT_READ",
		4: "NODE_TYPE_GRAPHQL_QUERY",
		5: "NODE_TYPE_REST_API",
		6: "NODE_TYPE_CUSTOM_CODE",
		7: "NODE_TYPE_BRANCH",
		8: "NODE_TYPE_FILTER",
		9: "NODE_TYPE_LOOP",
	}
	NodeType_value = map[string]int32{
		"NODE_TYPE_UNSPECIFIED":    0,
		"NODE_TYPE_ETH_TRANSFER":   1,
		"NODE_TYPE_CONTRACT_WRITE": 2,
		"NODE_TYPE_CONTRACT_READ":  3,
		"NODE_TYPE_GRAPHQL_QUERY":  4,
		"NODE_TYPE_REST_API":       5,
		"NODE_TYPE_CUSTOM_CODE":    6,
		"NODE_TYPE_BRANCH":         7,
		"NODE_TYPE_FILTER":         8,
		"NODE_TYPE_LOOP":           9,
	}
)

func (x NodeType) Enum() *NodeType {
	p := new(NodeType)
	*p = x
	return p
}

func (x NodeType) String() string {
	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
}

func (NodeType) Descriptor() protoreflect.EnumDescriptor {
	return file_avs_proto_enumTypes[1].Descriptor()
}

func (NodeType) Type() protoreflect.EnumType {
	return &file_avs_proto_enumTypes[1]
}

func (x NodeType) Number() protoreflect.EnumNumber {
	return protoreflect.EnumNumber(x)
}

// Deprecated: Use NodeType.Descriptor instead.
func (NodeType) EnumDescriptor() ([]byte, []int) {
	return file_avs_proto_rawDescGZIP(), []int{1}
}

type ExecutionMode int32

const (
	ExecutionMode_EXECUTION_MODE_SEQUENTIAL ExecutionMode = 0 // Run iterations sequentially (default for safety)
	ExecutionMode_EXECUTION_MODE_PARALLEL   ExecutionMode = 1 // Run iterations in parallel
)

// Enum value maps for ExecutionMode.
var (
	ExecutionMode_name = map[int32]string{
		0: "EXECUTION_MODE_SEQUENTIAL",
		1: "EXECUTION_MODE_PARALLEL",
	}
	ExecutionMode_value = map[string]int32{
		"EXECUTION_MODE_SEQUENTIAL": 0,
		"EXECUTION_MODE_PARALLEL":   1,
	}
)

func (x ExecutionMode) Enum() *ExecutionMode {
	p := new(ExecutionMode)
	*p = x
	return p
}

func (x ExecutionMode) String() string {
	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
}

func (ExecutionMode) Descriptor() protoreflect.EnumDescriptor {
	return file_avs_proto_enumTypes[2].Descriptor()
}

func (ExecutionMode) Type() protoreflect.EnumType {
	return &file_avs_proto_enumTypes[2]
}

func (x ExecutionMode) Number() protoreflect.EnumNumber {
	return protoreflect.EnumNumber(x)
}

// Deprecated: Use ExecutionMode.Descriptor instead.
func (ExecutionMode) EnumDescriptor() ([]byte, []int) {
	return file_avs_proto_rawDescGZIP(), []int{2}
}

type Lang int32

const (
	Lang_JavaScript Lang = 0
)

// Enum value maps for Lang.
var (
	Lang_name = map[int32]string{
		0: "JavaScript",
	}
	Lang_value = map[string]int32{
		"JavaScript": 0,
	}
)

func (x Lang) Enum() *Lang {
	p := new(Lang)
	*p = x
	return p
}

func (x Lang) String() string {
	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
}

func (Lang) Descriptor() protoreflect.EnumDescriptor {
	return file_avs_proto_enumTypes[3].Descriptor()
}

func (Lang) Type() protoreflect.EnumType {
	return &file_avs_proto_enumTypes[3]
}

func (x Lang) Number() protoreflect.EnumNumber {
	return protoreflect.EnumNumber(x)
}

// Deprecated: Use Lang.Descriptor instead.
func (Lang) EnumDescriptor() ([]byte, []int) {
	return file_avs_proto_rawDescGZIP(), []int{3}
}

// gRPC internal error code use up to 17, we extend and start from 1000 to avoid any conflict
// Guide: https://grpc.io/docs/guides/error/
// Go: https://github.com/grpc/grpc-go/blob/master/codes/codes.go#L199
// Unified error codes for client-server communication
// Maps to standard gRPC status codes where applicable, but provides domain-specific error details
type ErrorCode int32

const (
	// Standard success - no error
	ErrorCode_ERROR_CODE_UNSPECIFIED ErrorCode = 0
	// 1000-1999: Authentication and Authorization errors
	ErrorCode_UNAUTHORIZED      ErrorCode = 1000 // Invalid or missing authentication
	ErrorCode_FORBIDDEN         ErrorCode = 1001 // Insufficient permissions
	ErrorCode_INVALID_SIGNATURE ErrorCode = 1002 // Signature verification failed
	ErrorCode_EXPIRED_TOKEN     ErrorCode = 1003 // Auth token has expired
	// 2000-2999: Resource Not Found errors
	ErrorCode_TASK_NOT_FOUND           ErrorCode = 2000 // Task/workflow not found
	ErrorCode_EXECUTION_NOT_FOUND      ErrorCode = 2001 // Execution not found
	ErrorCode_WALLET_NOT_FOUND         ErrorCode = 2002 // Smart wallet not found
	ErrorCode_SECRET_NOT_FOUND         ErrorCode = 2003 // Secret not found
	ErrorCode_TOKEN_METADATA_NOT_FOUND ErrorCode = 2004 // Token metadata not found
	// 3000-3999: Validation and Bad Request errors
	ErrorCode_INVALID_REQUEST          ErrorCode = 3000 // General request validation failed
	ErrorCode_INVALID_TRIGGER_CONFIG   ErrorCode = 3001 // Trigger configuration is invalid
	ErrorCode_INVALID_NODE_CONFIG      ErrorCode = 3002 // Node configuration is invalid
	ErrorCode_INVALID_WORKFLOW         ErrorCode = 3003 // Workflow structure is invalid
	ErrorCode_INVALID_ADDRESS          ErrorCode = 3004 // Blockchain address format invalid
	ErrorCode_INVALID_SIGNATURE_FORMAT ErrorCode = 3005 // Signature format invalid
	ErrorCode_MISSING_REQUIRED_FIELD   ErrorCode = 3006 // Required field is missing
	// 4000-4999: Resource State errors
	ErrorCode_TASK_ALREADY_EXISTS    ErrorCode = 4000 // Task with same ID already exists
	ErrorCode_TASK_ALREADY_COMPLETED ErrorCode = 4001 // Cannot modify completed task
	ErrorCode_TASK_ALREADY_CANCELLED ErrorCode = 4002 // Cannot modify cancelled task
	ErrorCode_EXECUTION_IN_PROGRESS  ErrorCode = 4003 // Operation not allowed during execution
	ErrorCode_WALLET_ALREADY_EXISTS  ErrorCode = 4004 // Wallet already exists for salt
	ErrorCode_SECRET_ALREADY_EXISTS  ErrorCode = 4005 // Secret with same name exists
	// 5000-5999: External Service errors
	ErrorCode_RPC_NODE_ERROR     ErrorCode = 5000 // Blockchain RPC node error
	ErrorCode_TENDERLY_API_ERROR ErrorCode = 5001 // Tenderly simulation error
	ErrorCode_TOKEN_LOOKUP_ERROR ErrorCode = 5002 // Token metadata lookup failed
	ErrorCode_SIMULATION_ERROR   ErrorCode = 5003 // Workflow simulation failed
	// 6000-6999: Internal System errors
	ErrorCode_STORAGE_UNAVAILABLE    ErrorCode = 6000 // Database/storage system unavailable
	ErrorCode_STORAGE_WRITE_ERROR    ErrorCode = 6001 // Failed to write to storage
	ErrorCode_STORAGE_READ_ERROR     ErrorCode = 6002 // Failed to read from storage
	ErrorCode_TASK_DATA_CORRUPTED    ErrorCode = 6003 // Task data cannot be decoded
	ErrorCode_EXECUTION_ENGINE_ERROR ErrorCode = 6004 // Task execution engine error
	// 7000-7999: Rate Limiting and Quota errors
	ErrorCode_RATE_LIMIT_EXCEEDED ErrorCode = 7000 // API rate limit exceeded
	ErrorCode_QUOTA_EXCEEDED      ErrorCode = 7001 // User quota exceeded
	ErrorCode_TOO_MANY_REQUESTS   ErrorCode = 7002 // Too many concurrent requests
	// 8000-8999: Smart Wallet specific errors
	ErrorCode_SMART_WALLET_RPC_ERROR        ErrorCode = 8000 // Smart wallet RPC call failed
	ErrorCode_SMART_WALLET_NOT_FOUND        ErrorCode = 8001 // Smart wallet address not found
	ErrorCode_SMART_WALLET_DEPLOYMENT_ERROR ErrorCode = 8002 // Failed to deploy smart wallet
	ErrorCode_INSUFFICIENT_BALANCE          ErrorCode = 8003 // Insufficient balance for operation
)

// Enum value maps for ErrorCode.
var (
	ErrorCode_name = map[int32]string{
		0:    "ERROR_CODE_UNSPECIFIED",
		1000: "UNAUTHORIZED",
		1001: "FORBIDDEN",
		1002: "INVALID_SIGNATURE",
		1003: "EXPIRED_TOKEN",
		2000: "TASK_NOT_FOUND",
		2001: "EXECUTION_NOT_FOUND",
		2002: "WALLET_NOT_FOUND",
		2003: "SECRET_NOT_FOUND",
		2004: "TOKEN_METADATA_NOT_FOUND",
		3000: "INVALID_REQUEST",
		3001: "INVALID_TRIGGER_CONFIG",
		3002: "INVALID_NODE_CONFIG",
		3003: "INVALID_WORKFLOW",
		3004: "INVALID_ADDRESS",
		3005: "INVALID_SIGNATURE_FORMAT",
		3006: "MISSING_REQUIRED_FIELD",
		4000: "TASK_ALREADY_EXISTS",
		4001: "TASK_ALREADY_COMPLETED",
		4002: "TASK_ALREADY_CANCELLED",
		4003: "EXECUTION_IN_PROGRESS",
		4004: "WALLET_ALREADY_EXISTS",
		4005: "SECRET_ALREADY_EXISTS",
		5000: "RPC_NODE_ERROR",
		5001: "TENDERLY_API_ERROR",
		5002: "TOKEN_LOOKUP_ERROR",
		5003: "SIMULATION_ERROR",
		6000: "STORAGE_UNAVAILABLE",
		6001: "STORAGE_WRITE_ERROR",
		6002: "STORAGE_READ_ERROR",
		6003: "TASK_DATA_CORRUPTED",
		6004: "EXECUTION_ENGINE_ERROR",
		7000: "RATE_LIMIT_EXCEEDED",
		7001: "QUOTA_EXCEEDED",
		7002: "TOO_MANY_REQUESTS",
		8000: "SMART_WALLET_RPC_ERROR",
		8001: "SMART_WALLET_NOT_FOUND",
		8002: "SMART_WALLET_DEPLOYMENT_ERROR",
		8003: "INSUFFICIENT_BALANCE",
	}
	ErrorCode_value = map[string]int32{
		"ERROR_CODE_UNSPECIFIED":        0,
		"UNAUTHORIZED":                  1000,
		"FORBIDDEN":                     1001,
		"INVALID_SIGNATURE":             1002,
		"EXPIRED_TOKEN":                 1003,
		"TASK_NOT_FOUND":                2000,
		"EXECUTION_NOT_FOUND":           2001,
		"WALLET_NOT_FOUND":              2002,
		"SECRET_NOT_FOUND":              2003,
		"TOKEN_METADATA_NOT_FOUND":      2004,
		"INVALID_REQUEST":               3000,
		"INVALID_TRIGGER_CONFIG":        3001,
		"INVALID_NODE_CONFIG":           3002,
		"INVALID_WORKFLOW":              3003,
		"INVALID_ADDRESS":               3004,
		"INVALID_SIGNATURE_FORMAT":      3005,
		"MISSING_REQUIRED_FIELD":        3006,
		"TASK_ALREADY_EXISTS":           4000,
		"TASK_ALREADY_COMPLETED":        4001,
		"TASK_ALREADY_CANCELLED":        4002,
		"EXECUTION_IN_PROGRESS":         4003,
		"WALLET_ALREADY_EXISTS":         4004,
		"SECRET_ALREADY_EXISTS":         4005,
		"RPC_NODE_ERROR":                5000,
		"TENDERLY_API_ERROR":            5001,
		"TOKEN_LOOKUP_ERROR":            5002,
		"SIMULATION_ERROR":              5003,
		"STORAGE_UNAVAILABLE":           6000,
		"STORAGE_WRITE_ERROR":           6001,
		"STORAGE_READ_ERROR":            6002,
		"TASK_DATA_CORRUPTED":           6003,
		"EXECUTION_ENGINE_ERROR":        6004,
		"RATE_LIMIT_EXCEEDED":           7000,
		"QUOTA_EXCEEDED":                7001,
		"TOO_MANY_REQUESTS":             7002,
		"SMART_WALLET_RPC_ERROR":        8000,
		"SMART_WALLET_NOT_FOUND":        8001,
		"SMART_WALLET_DEPLOYMENT_ERROR": 8002,
		"INSUFFICIENT_BALANCE":          8003,
	}
)

func (x ErrorCode) Enum() *ErrorCode {
	p := new(ErrorCode)
	*p = x
	return p
}

func (x ErrorCode) String() string {
	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
}

func (ErrorCode) Descriptor() protoreflect.EnumDescriptor {
	return file_avs_proto_enumTypes[4].Descriptor()
}

func (ErrorCode) Type() protoreflect.EnumType {
	return &file_avs_proto_enumTypes[4]
}

func (x ErrorCode) Number() protoreflect.EnumNumber {
	return protoreflect.EnumNumber(x)
}

// Deprecated: Use ErrorCode.Descriptor instead.
func (ErrorCode) EnumDescriptor() ([]byte, []int) {
	return file_avs_proto_rawDescGZIP(), []int{4}
}

// TaskStatus represents status of the task. The transition is as follow
type TaskStatus int32

const (
	TaskStatus_Active TaskStatus = 0
	// Task is completed when it reaches its max_execution count or its expiration time
	TaskStatus_Completed TaskStatus = 1
	TaskStatus_Failed    TaskStatus = 2
	TaskStatus_Canceled  TaskStatus = 3
	TaskStatus_Executing TaskStatus = 4
)

// Enum value maps for TaskStatus.
var (
	TaskStatus_name = map[int32]string{
		0: "Active",
		1: "Completed",
		2: "Failed",
		3: "Canceled",
		4: "Executing",
	}
	TaskStatus_value = map[string]int32{
		"Active":    0,
		"Completed": 1,
		"Failed":    2,
		"Canceled":  3,
		"Executing": 4,
	}
)

func (x TaskStatus) Enum() *TaskStatus {
	p := new(TaskStatus)
	*p = x
	return p
}

func (x TaskStatus) String() string {
	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
}

func (TaskStatus) Descriptor() protoreflect.EnumDescriptor {
	return file_avs_proto_enumTypes[5].Descriptor()
}

func (TaskStatus) Type() protoreflect.EnumType {
	return &file_avs_proto_enumTypes[5]
}

func (x TaskStatus) Number() protoreflect.EnumNumber {
	return protoreflect.EnumNumber(x)
}

// Deprecated: Use TaskStatus.Descriptor instead.
func (TaskStatus) EnumDescriptor() ([]byte, []int) {
	return file_avs_proto_rawDescGZIP(), []int{5}
}

// Execution Status re-present a run of the task
type ExecutionStatus int32

const (
	ExecutionStatus_EXECUTION_STATUS_UNSPECIFIED     ExecutionStatus = 0
	ExecutionStatus_EXECUTION_STATUS_PENDING         ExecutionStatus = 1
	ExecutionStatus_EXECUTION_STATUS_SUCCESS         ExecutionStatus = 2
	ExecutionStatus_EXECUTION_STATUS_FAILED          ExecutionStatus = 3
	ExecutionStatus_EXECUTION_STATUS_PARTIAL_SUCCESS ExecutionStatus = 4
)

// Enum value maps for ExecutionStatus.
var (
	ExecutionStatus_name = map[int32]string{
		0: "EXECUTION_STATUS_UNSPECIFIED",
		1: "EXECUTION_STATUS_PENDING",
		2: "EXECUTION_STATUS_SUCCESS",
		3: "EXECUTION_STATUS_FAILED",
		4: "EXECUTION_STATUS_PARTIAL_SUCCESS",
	}
	ExecutionStatus_value = map[string]int32{
		"EXECUTION_STATUS_UNSPECIFIED":     0,
		"EXECUTION_STATUS_PENDING":         1,
		"EXECUTION_STATUS_SUCCESS":         2,
		"EXECUTION_STATUS_FAILED":          3,
		"EXECUTION_STATUS_PARTIAL_SUCCESS": 4,
	}
)

func (x ExecutionStatus) Enum() *ExecutionStatus {
	p := new(ExecutionStatus)
	*p = x
	return p
}

func (x ExecutionStatus) String() string {
	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
}

func (ExecutionStatus) Descriptor() protoreflect.EnumDescriptor {
	return file_avs_proto_enumTypes[6].Descriptor()
}

func (ExecutionStatus) Type() protoreflect.EnumType {
	return &file_avs_proto_enumTypes[6]
}

func (x ExecutionStatus) Number() protoreflect.EnumNumber {
	return protoreflect.EnumNumber(x)
}

// Deprecated: Use ExecutionStatus.Descriptor instead.
func (ExecutionStatus) EnumDescriptor() ([]byte, []int) {
	return file_avs_proto_rawDescGZIP(), []int{6}
}

// TokenMetadata represents ERC20 token information
type TokenMetadata struct {
	state         protoimpl.MessageState `protogen:"open.v1"`
	Address       string                 `protobuf:"bytes,1,opt,name=address,proto3" json:"address,omitempty"`    // Contract address (lowercase, normalized)
	Name          string                 `protobuf:"bytes,2,opt,name=name,proto3" json:"name,omitempty"`          // Token name (e.g., "USD Coin")
	Symbol        string                 `protobuf:"bytes,3,opt,name=symbol,proto3" json:"symbol,omitempty"`      // Token symbol (e.g., "USDC")
	Decimals      uint32                 `protobuf:"varint,4,opt,name=decimals,proto3" json:"decimals,omitempty"` // Number of decimal places
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *TokenMetadata) Reset() {
	*x = TokenMetadata{}
	mi := &file_avs_proto_msgTypes[0]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *TokenMetadata) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*TokenMetadata) ProtoMessage() {}

func (x *TokenMetadata) ProtoReflect() protoreflect.Message {
	mi := &file_avs_proto_msgTypes[0]
	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 TokenMetadata.ProtoReflect.Descriptor instead.
func (*TokenMetadata) Descriptor() ([]byte, []int) {
	return file_avs_proto_rawDescGZIP(), []int{0}
}

func (x *TokenMetadata) GetAddress() string {
	if x != nil {
		return x.Address
	}
	return ""
}

func (x *TokenMetadata) GetName() string {
	if x != nil {
		return x.Name
	}
	return ""
}

func (x *TokenMetadata) GetSymbol() string {
	if x != nil {
		return x.Symbol
	}
	return ""
}

func (x *TokenMetadata) GetDecimals() uint32 {
	if x != nil {
		return x.Decimals
	}
	return 0
}

// GetTokenMetadataReq is the request for token metadata lookup
type GetTokenMetadataReq struct {
	state         protoimpl.MessageState `protogen:"open.v1"`
	Address       string                 `protobuf:"bytes,1,opt,name=address,proto3" json:"address,omitempty"` // Contract address to look up
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *GetTokenMetadataReq) Reset() {
	*x = GetTokenMetadataReq{}
	mi := &file_avs_proto_msgTypes[1]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *GetTokenMetadataReq) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*GetTokenMetadataReq) ProtoMessage() {}

func (x *GetTokenMetadataReq) ProtoReflect() protoreflect.Message {
	mi := &file_avs_proto_msgTypes[1]
	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 GetTokenMetadataReq.ProtoReflect.Descriptor instead.
func (*GetTokenMetadataReq) Descriptor() ([]byte, []int) {
	return file_avs_proto_rawDescGZIP(), []int{1}
}

func (x *GetTokenMetadataReq) GetAddress() string {
	if x != nil {
		return x.Address
	}
	return ""
}

// GetTokenMetadataResp is the response containing token metadata
type GetTokenMetadataResp struct {
	state         protoimpl.MessageState `protogen:"open.v1"`
	Token         *TokenMetadata         `protobuf:"bytes,1,opt,name=token,proto3" json:"token,omitempty"`   // Token metadata information
	Found         bool                   `protobuf:"varint,2,opt,name=found,proto3" json:"found,omitempty"`  // Whether the token was found
	Source        string                 `protobuf:"bytes,3,opt,name=source,proto3" json:"source,omitempty"` // Source of data: "whitelist", "rpc", or "cache"
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *GetTokenMetadataResp) Reset() {
	*x = GetTokenMetadataResp{}
	mi := &file_avs_proto_msgTypes[2]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *GetTokenMetadataResp) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*GetTokenMetadataResp) ProtoMessage() {}

func (x *GetTokenMetadataResp) ProtoReflect() protoreflect.Message {
	mi := &file_avs_proto_msgTypes[2]
	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 GetTokenMetadataResp.ProtoReflect.Descriptor instead.
func (*GetTokenMetadataResp) Descriptor() ([]byte, []int) {
	return file_avs_proto_rawDescGZIP(), []int{2}
}

func (x *GetTokenMetadataResp) GetToken() *TokenMetadata {
	if x != nil {
		return x.Token
	}
	return nil
}

func (x *GetTokenMetadataResp) GetFound() bool {
	if x != nil {
		return x.Found
	}
	return false
}

func (x *GetTokenMetadataResp) GetSource() string {
	if x != nil {
		return x.Source
	}
	return ""
}

type IdReq struct {
	state         protoimpl.MessageState `protogen:"open.v1"`
	Id            string                 `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *IdReq) Reset() {
	*x = IdReq{}
	mi := &file_avs_proto_msgTypes[3]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *IdReq) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*IdReq) ProtoMessage() {}

func (x *IdReq) ProtoReflect() protoreflect.Message {
	mi := &file_avs_proto_msgTypes[3]
	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 IdReq.ProtoReflect.Descriptor instead.
func (*IdReq) Descriptor() ([]byte, []int) {
	return file_avs_proto_rawDescGZIP(), []int{3}
}

func (x *IdReq) GetId() string {
	if x != nil {
		return x.Id
	}
	return ""
}

type FixedTimeTrigger struct {
	state protoimpl.MessageState `protogen:"open.v1"`
	// Include Config as field so it is generated in Go
	Config        *FixedTimeTrigger_Config `protobuf:"bytes,1,opt,name=config,proto3" json:"config,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *FixedTimeTrigger) Reset() {
	*x = FixedTimeTrigger{}
	mi := &file_avs_proto_msgTypes[4]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *FixedTimeTrigger) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*FixedTimeTrigger) ProtoMessage() {}

func (x *FixedTimeTrigger) ProtoReflect() protoreflect.Message {
	mi := &file_avs_proto_msgTypes[4]
	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 FixedTimeTrigger.ProtoReflect.Descriptor instead.
func (*FixedTimeTrigger) Descriptor() ([]byte, []int) {
	return file_avs_proto_rawDescGZIP(), []int{4}
}

func (x *FixedTimeTrigger) GetConfig() *FixedTimeTrigger_Config {
	if x != nil {
		return x.Config
	}
	return nil
}

// Simple timebase or cron syntax.
type CronTrigger struct {
	state protoimpl.MessageState `protogen:"open.v1"`
	// Include Config as field so it is generated in Go
	Config        *CronTrigger_Config `protobuf:"bytes,1,opt,name=config,proto3" json:"config,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *CronTrigger) Reset() {
	*x = CronTrigger{}
	mi := &file_avs_proto_msgTypes[5]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *CronTrigger) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*CronTrigger) ProtoMessage() {}

func (x *CronTrigger) ProtoReflect() protoreflect.Message {
	mi := &file_avs_proto_msgTypes[5]
	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 CronTrigger.ProtoReflect.Descriptor instead.
func (*CronTrigger) Descriptor() ([]byte, []int) {
	return file_avs_proto_rawDescGZIP(), []int{5}
}

func (x *CronTrigger) GetConfig() *CronTrigger_Config {
	if x != nil {
		return x.Config
	}
	return nil
}

type BlockTrigger struct {
	state protoimpl.MessageState `protogen:"open.v1"`
	// Include Config as field so it is generated in Go
	Config        *BlockTrigger_Config `protobuf:"bytes,1,opt,name=config,proto3" json:"config,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *BlockTrigger) Reset() {
	*x = BlockTrigger{}
	mi := &file_avs_proto_msgTypes[6]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *BlockTrigger) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*BlockTrigger) ProtoMessage() {}

func (x *BlockTrigger) ProtoReflect() protoreflect.Message {
	mi := &file_avs_proto_msgTypes[6]
	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 BlockTrigger.ProtoReflect.Descriptor instead.
func (*BlockTrigger) Descriptor() ([]byte, []int) {
	return file_avs_proto_rawDescGZIP(), []int{6}
}

func (x *BlockTrigger) GetConfig() *BlockTrigger_Config {
	if x != nil {
		return x.Config
	}
	return nil
}

// EventTrigger monitors blockchain events using direct RPC filter queries.
// Clients provide an array of ethereum.FilterQuery structures that map directly to RPC calls.
// This approach eliminates parsing overhead and provides maximum flexibility and performance.
type EventTrigger struct {
	state protoimpl.MessageState `protogen:"open.v1"`
	// Include Config as field so it is generated in Go
	Config        *EventTrigger_Config `protobuf:"bytes,1,opt,name=config,proto3" json:"config,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *EventTrigger) Reset() {
	*x = EventTrigger{}
	mi := &file_avs_proto_msgTypes[7]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *EventTrigger) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*EventTrigger) ProtoMessage() {}

func (x *EventTrigger) ProtoReflect() protoreflect.Message {
	mi := &file_avs_proto_msgTypes[7]
	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 EventTrigger.ProtoReflect.Descriptor instead.
func (*EventTrigger) Descriptor() ([]byte, []int) {
	return file_avs_proto_rawDescGZIP(), []int{7}
}

func (x *EventTrigger) GetConfig() *EventTrigger_Config {
	if x != nil {
		return x.Config
	}
	return nil
}

type ManualTrigger struct {
	state protoimpl.MessageState `protogen:"open.v1"`
	// Include Config as field so it is generated in Go
	Config        *ManualTrigger_Config `protobuf:"bytes,1,opt,name=config,proto3" json:"config,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *ManualTrigger) Reset() {
	*x = ManualTrigger{}
	mi := &file_avs_proto_msgTypes[8]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *ManualTrigger) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*ManualTrigger) ProtoMessage() {}

func (x *ManualTrigger) ProtoReflect() protoreflect.Message {
	mi := &file_avs_proto_msgTypes[8]
	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 ManualTrigger.ProtoReflect.Descriptor instead.
func (*ManualTrigger) Descriptor() ([]byte, []int) {
	return file_avs_proto_rawDescGZIP(), []int{8}
}

func (x *ManualTrigger) GetConfig() *ManualTrigger_Config {
	if x != nil {
		return x.Config
	}
	return nil
}

type TaskTrigger struct {
	state protoimpl.MessageState `protogen:"open.v1"`
	Name  string                 `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"`
	// NEW: Use the enum for type identification (Phase 1: add alongside existing)
	Type TriggerType `protobuf:"varint,8,opt,name=type,proto3,enum=aggregator.TriggerType" json:"type,omitempty"`
	// Types that are valid to be assigned to TriggerType:
	//
	//	*TaskTrigger_Manual
	//	*TaskTrigger_FixedTime
	//	*TaskTrigger_Cron
	//	*TaskTrigger_Block
	//	*TaskTrigger_Event
	TriggerType   isTaskTrigger_TriggerType `protobuf_oneof:"trigger_type"`
	Id            string                    `protobuf:"bytes,7,opt,name=id,proto3" json:"id,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *TaskTrigger) Reset() {
	*x = TaskTrigger{}
	mi := &file_avs_proto_msgTypes[9]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *TaskTrigger) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*TaskTrigger) ProtoMessage() {}

func (x *TaskTrigger) ProtoReflect() protoreflect.Message {
	mi := &file_avs_proto_msgTypes[9]
	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 TaskTrigger.ProtoReflect.Descriptor instead.
func (*TaskTrigger) Descriptor() ([]byte, []int) {
	return file_avs_proto_rawDescGZIP(), []int{9}
}

func (x *TaskTrigger) GetName() string {
	if x != nil {
		return x.Name
	}
	return ""
}

func (x *TaskTrigger) GetType() TriggerType {
	if x != nil {
		return x.Type
	}
	return TriggerType_TRIGGER_TYPE_UNSPECIFIED
}

func (x *TaskTrigger) GetTriggerType() isTaskTrigger_TriggerType {
	if x != nil {
		return x.TriggerType
	}
	return nil
}

func (x *TaskTrigger) GetManual() *ManualTrigger {
	if x != nil {
		if x, ok := x.TriggerType.(*TaskTrigger_Manual); ok {
			return x.Manual
		}
	}
	return nil
}

func (x *TaskTrigger) GetFixedTime() *FixedTimeTrigger {
	if x != nil {
		if x, ok := x.TriggerType.(*TaskTrigger_FixedTime); ok {
			return x.FixedTime
		}
	}
	return nil
}

func (x *TaskTrigger) GetCron() *CronTrigger {
	if x != nil {
		if x, ok := x.TriggerType.(*TaskTrigger_Cron); ok {
			return x.Cron
		}
	}
	return nil
}

func (x *TaskTrigger) GetBlock() *BlockTrigger {
	if x != nil {
		if x, ok := x.TriggerType.(*TaskTrigger_Block); ok {
			return x.Block
		}
	}
	return nil
}

func (x *TaskTrigger) GetEvent() *EventTrigger {
	if x != nil {
		if x, ok := x.TriggerType.(*TaskTrigger_Event); ok {
			return x.Event
		}
	}
	return nil
}

func (x *TaskTrigger) GetId() string {
	if x != nil {
		return x.Id
	}
	return ""
}

type isTaskTrigger_TriggerType interface {
	isTaskTrigger_TriggerType()
}

type TaskTrigger_Manual struct {
	// manual task with proper ManualTrigger structure for webhook testing
	Manual *ManualTrigger `protobuf:"bytes,2,opt,name=manual,proto3,oneof"`
}

type TaskTrigger_FixedTime struct {
	// run at a specific epoch, name inspired by unix `at` utility
	FixedTime *FixedTimeTrigger `protobuf:"bytes,3,opt,name=fixed_time,json=fixedTime,proto3,oneof"`
}

type TaskTrigger_Cron struct {
	// interval such as every hour/day/ etc can be converted to cronsyntax by the sdk/studio
	Cron *CronTrigger `protobuf:"bytes,4,opt,name=cron,proto3,oneof"`
}

type TaskTrigger_Block struct {
	// currently the only support syntax is every <x> blocks
	Block *BlockTrigger `protobuf:"bytes,5,opt,name=block,proto3,oneof"`
}

type TaskTrigger_Event struct {
	// support filter by event expression such as topic0, topic1, topoc2 and event_data and contract_address
	Event *EventTrigger `protobuf:"bytes,6,opt,name=event,proto3,oneof"`
}

func (*TaskTrigger_Manual) isTaskTrigger_TriggerType() {}

func (*TaskTrigger_FixedTime) isTaskTrigger_TriggerType() {}

func (*TaskTrigger_Cron) isTaskTrigger_TriggerType() {}

func (*TaskTrigger_Block) isTaskTrigger_TriggerType() {}

func (*TaskTrigger_Event) isTaskTrigger_TriggerType() {}

type ETHTransferNode struct {
	state protoimpl.MessageState `protogen:"open.v1"`
	// Include Config as field
	Config        *ETHTransferNode_Config `protobuf:"bytes,1,opt,name=config,proto3" json:"config,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *ETHTransferNode) Reset() {
	*x = ETHTransferNode{}
	mi := &file_avs_proto_msgTypes[10]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *ETHTransferNode) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*ETHTransferNode) ProtoMessage() {}

func (x *ETHTransferNode) ProtoReflect() protoreflect.Message {
	mi := &file_avs_proto_msgTypes[10]
	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 ETHTransferNode.ProtoReflect.Descriptor instead.
func (*ETHTransferNode) Descriptor() ([]byte, []int) {
	return file_avs_proto_rawDescGZIP(), []int{10}
}

func (x *ETHTransferNode) GetConfig() *ETHTransferNode_Config {
	if x != nil {
		return x.Config
	}
	return nil
}

type ContractWriteNode struct {
	state protoimpl.MessageState `protogen:"open.v1"`
	// Include Config as field
	Config        *ContractWriteNode_Config `protobuf:"bytes,1,opt,name=config,proto3" json:"config,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *ContractWriteNode) Reset() {
	*x = ContractWriteNode{}
	mi := &file_avs_proto_msgTypes[11]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *ContractWriteNode) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*ContractWriteNode) ProtoMessage() {}

func (x *ContractWriteNode) ProtoReflect() protoreflect.Message {
	mi := &file_avs_proto_msgTypes[11]
	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 ContractWriteNode.ProtoReflect.Descriptor instead.
func (*ContractWriteNode) Descriptor() ([]byte, []int) {
	return file_avs_proto_rawDescGZIP(), []int{11}
}

func (x *ContractWriteNode) GetConfig() *ContractWriteNode_Config {
	if x != nil {
		return x.Config
	}
	return nil
}

type ContractReadNode struct {
	state protoimpl.MessageState `protogen:"open.v1"`
	// Include Config as field
	Config        *ContractReadNode_Config `protobuf:"bytes,1,opt,name=config,proto3" json:"config,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *ContractReadNode) Reset() {
	*x = ContractReadNode{}
	mi := &file_avs_proto_msgTypes[12]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *ContractReadNode) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*ContractReadNode) ProtoMessage() {}

func (x *ContractReadNode) ProtoReflect() protoreflect.Message {
	mi := &file_avs_proto_msgTypes[12]
	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 ContractReadNode.ProtoReflect.Descriptor instead.
func (*ContractReadNode) Descriptor() ([]byte, []int) {
	return file_avs_proto_rawDescGZIP(), []int{12}
}

func (x *ContractReadNode) GetConfig() *ContractReadNode_Config {
	if x != nil {
		return x.Config
	}
	return nil
}

type GraphQLQueryNode struct {
	state protoimpl.MessageState `protogen:"open.v1"`
	// Include Config as field
	Config        *GraphQLQueryNode_Config `protobuf:"bytes,1,opt,name=config,proto3" json:"config,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *GraphQLQueryNode) Reset() {
	*x = GraphQLQueryNode{}
	mi := &file_avs_proto_msgTypes[13]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *GraphQLQueryNode) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*GraphQLQueryNode) ProtoMessage() {}

func (x *GraphQLQueryNode) ProtoReflect() protoreflect.Message {
	mi := &file_avs_proto_msgTypes[13]
	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 GraphQLQueryNode.ProtoReflect.Descriptor instead.
func (*GraphQLQueryNode) Descriptor() ([]byte, []int) {
	return file_avs_proto_rawDescGZIP(), []int{13}
}

func (x *GraphQLQueryNode) GetConfig() *GraphQLQueryNode_Config {
	if x != nil {
		return x.Config
	}
	return nil
}

type RestAPINode struct {
	state protoimpl.MessageState `protogen:"open.v1"`
	// Include Config as field
	Config        *RestAPINode_Config `protobuf:"bytes,1,opt,name=config,proto3" json:"config,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *RestAPINode) Reset() {
	*x = RestAPINode{}
	mi := &file_avs_proto_msgTypes[14]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *RestAPINode) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*RestAPINode) ProtoMessage() {}

func (x *RestAPINode) ProtoReflect() protoreflect.Message {
	mi := &file_avs_proto_msgTypes[14]
	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 RestAPINode.ProtoReflect.Descriptor instead.
func (*RestAPINode) Descriptor() ([]byte, []int) {
	return file_avs_proto_rawDescGZIP(), []int{14}
}

func (x *RestAPINode) GetConfig() *RestAPINode_Config {
	if x != nil {
		return x.Config
	}
	return nil
}

type CustomCodeNode struct {
	state protoimpl.MessageState `protogen:"open.v1"`
	// Include Config as field
	Config        *CustomCodeNode_Config `protobuf:"bytes,1,opt,name=config,proto3" json:"config,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *CustomCodeNode) Reset() {
	*x = CustomCodeNode{}
	mi := &file_avs_proto_msgTypes[15]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *CustomCodeNode) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*CustomCodeNode) ProtoMessage() {}

func (x *CustomCodeNode) ProtoReflect() protoreflect.Message {
	mi := &file_avs_proto_msgTypes[15]
	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 CustomCodeNode.ProtoReflect.Descriptor instead.
func (*CustomCodeNode) Descriptor() ([]byte, []int) {
	return file_avs_proto_rawDescGZIP(), []int{15}
}

func (x *CustomCodeNode) GetConfig() *CustomCodeNode_Config {
	if x != nil {
		return x.Config
	}
	return nil
}

type BranchNode struct {
	state protoimpl.MessageState `protogen:"open.v1"`
	// Include Config as field
	Config        *BranchNode_Config `protobuf:"bytes,1,opt,name=config,proto3" json:"config,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *BranchNode) Reset() {
	*x = BranchNode{}
	mi := &file_avs_proto_msgTypes[16]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *BranchNode) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*BranchNode) ProtoMessage() {}

func (x *BranchNode) ProtoReflect() protoreflect.Message {
	mi := &file_avs_proto_msgTypes[16]
	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 BranchNode.ProtoReflect.Descriptor instead.
func (*BranchNode) Descriptor() ([]byte, []int) {
	return file_avs_proto_rawDescGZIP(), []int{16}
}

func (x *BranchNode) GetConfig() *BranchNode_Config {
	if x != nil {
		return x.Config
	}
	return nil
}

type FilterNode struct {
	state protoimpl.MessageState `protogen:"open.v1"`
	// Include Config as field
	Config        *FilterNode_Config `protobuf:"bytes,1,opt,name=config,proto3" json:"config,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *FilterNode) Reset() {
	*x = FilterNode{}
	mi := &file_avs_proto_msgTypes[17]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *FilterNode) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*FilterNode) ProtoMessage() {}

func (x *FilterNode) ProtoReflect() protoreflect.Message {
	mi := &file_avs_proto_msgTypes[17]
	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 FilterNode.ProtoReflect.Descriptor instead.
func (*FilterNode) Descriptor() ([]byte, []int) {
	return file_avs_proto_rawDescGZIP(), []int{17}
}

func (x *FilterNode) GetConfig() *FilterNode_Config {
	if x != nil {
		return x.Config
	}
	return nil
}

// LoopNode currently not support, but we pre-defined to reverse the field id
type LoopNode struct {
	state protoimpl.MessageState `protogen:"open.v1"`
	// inside the runner, it can access to the current value of the loop iteration through the iter_val/iter_key above
	//
	// Types that are valid to be assigned to Runner:
	//
	//	*LoopNode_EthTransfer
	//	*LoopNode_ContractWrite
	//	*LoopNode_ContractRead
	//	*LoopNode_GraphqlDataQuery
	//	*LoopNode_RestApi
	//	*LoopNode_CustomCode
	Runner isLoopNode_Runner `protobuf_oneof:"runner"`
	// Include Config as field
	Config        *LoopNode_Config `protobuf:"bytes,1,opt,name=config,proto3" json:"config,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *LoopNode) Reset() {
	*x = LoopNode{}
	mi := &file_avs_proto_msgTypes[18]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *LoopNode) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*LoopNode) ProtoMessage() {}

func (x *LoopNode) ProtoReflect() protoreflect.Message {
	mi := &file_avs_proto_msgTypes[18]
	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 LoopNode.ProtoReflect.Descriptor instead.
func (*LoopNode) Descriptor() ([]byte, []int) {
	return file_avs_proto_rawDescGZIP(), []int{18}
}

func (x *LoopNode) GetRunner() isLoopNode_Runner {
	if x != nil {
		return x.Runner
	}
	return nil
}

func (x *LoopNode) GetEthTransfer() *ETHTransferNode {
	if x != nil {
		if x, ok := x.Runner.(*LoopNode_EthTransfer); ok {
			return x.EthTransfer
		}
	}
	return nil
}

func (x *LoopNode) GetContractWrite() *ContractWriteNode {
	if x != nil {
		if x, ok := x.Runner.(*LoopNode_ContractWrite); ok {
			return x.ContractWrite
		}
	}
	return nil
}

func (x *LoopNode) GetContractRead() *ContractReadNode {
	if x != nil {
		if x, ok := x.Runner.(*LoopNode_ContractRead); ok {
			return x.ContractRead
		}
	}
	return nil
}

func (x *LoopNode) GetGraphqlDataQuery() *GraphQLQueryNode {
	if x != nil {
		if x, ok := x.Runner.(*LoopNode_GraphqlDataQuery); ok {
			return x.GraphqlDataQuery
		}
	}
	return nil
}

func (x *LoopNode) GetRestApi() *RestAPINode {
	if x != nil {
		if x, ok := x.Runner.(*LoopNode_RestApi); ok {
			return x.RestApi
		}
	}
	return nil
}

func (x *LoopNode) GetCustomCode() *CustomCodeNode {
	if x != nil {
		if x, ok := x.Runner.(*LoopNode_CustomCode); ok {
			return x.CustomCode
		}
	}
	return nil
}

func (x *LoopNode) GetConfig() *LoopNode_Config {
	if x != nil {
		return x.Config
	}
	return nil
}

type isLoopNode_Runner interface {
	isLoopNode_Runner()
}

type LoopNode_EthTransfer struct {
	// Transfer eth require no calldata etc, just a destination address and an eth amount to be sent
	EthTransfer *ETHTransferNode `protobuf:"bytes,10,opt,name=eth_transfer,json=ethTransfer,proto3,oneof"`
}

type LoopNode_ContractWrite struct {
	// Run one ore more contracts. The call call also be batched with tool like
	// multicall to wrap many calls. in a contract write, we need to generate signature and send as userops.
	ContractWrite *ContractWriteNode `protobuf:"bytes,11,opt,name=contract_write,json=contractWrite,proto3,oneof"`
}

type LoopNode_ContractRead struct {
	// read data fron a target contract
	ContractRead *ContractReadNode `protobuf:"bytes,12,opt,name=contract_read,json=contractRead,proto3,oneof"`
}

type LoopNode_GraphqlDataQuery struct {
	// Make call to a graphql endpoint
	GraphqlDataQuery *GraphQLQueryNode `protobuf:"bytes,13,opt,name=graphql_data_query,json=graphqlDataQuery,proto3,oneof"`
}

type LoopNode_RestApi struct {
	// Make call to a HTTP endpoint
	RestApi *RestAPINode `protobuf:"bytes,14,opt,name=rest_api,json=restApi,proto3,oneof"`
}

type LoopNode_CustomCode struct {
	CustomCode *CustomCodeNode `protobuf:"bytes,15,opt,name=custom_code,json=customCode,proto3,oneof"`
}

func (*LoopNode_EthTransfer) isLoopNode_Runner() {}

func (*LoopNode_ContractWrite) isLoopNode_Runner() {}

func (*LoopNode_ContractRead) isLoopNode_Runner() {}

func (*LoopNode_GraphqlDataQuery) isLoopNode_Runner() {}

func (*LoopNode_RestApi) isLoopNode_Runner() {}

func (*LoopNode_CustomCode) isLoopNode_Runner() {}

// The edge is relationship or direct between node
type TaskEdge struct {
	state         protoimpl.MessageState `protogen:"open.v1"`
	Id            string                 `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"`
	Source        string                 `protobuf:"bytes,2,opt,name=source,proto3" json:"source,omitempty"`
	Target        string                 `protobuf:"bytes,3,opt,name=target,proto3" json:"target,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *TaskEdge) Reset() {
	*x = TaskEdge{}
	mi := &file_avs_proto_msgTypes[19]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *TaskEdge) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*TaskEdge) ProtoMessage() {}

func (x *TaskEdge) ProtoReflect() protoreflect.Message {
	mi := &file_avs_proto_msgTypes[19]
	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 TaskEdge.ProtoReflect.Descriptor instead.
func (*TaskEdge) Descriptor() ([]byte, []int) {
	return file_avs_proto_rawDescGZIP(), []int{19}
}

func (x *TaskEdge) GetId() string {
	if x != nil {
		return x.Id
	}
	return ""
}

func (x *TaskEdge) GetSource() string {
	if x != nil {
		return x.Source
	}
	return ""
}

func (x *TaskEdge) GetTarget() string {
	if x != nil {
		return x.Target
	}
	return ""
}

type TaskNode struct {
	state protoimpl.MessageState `protogen:"open.v1"`
	Id    string                 `protobuf:"bytes,2,opt,name=id,proto3" json:"id,omitempty"`
	Name  string                 `protobuf:"bytes,3,opt,name=name,proto3" json:"name,omitempty"`
	// NEW: Use the enum for type identification (Phase 1: add alongside existing)
	Type NodeType `protobuf:"varint,1,opt,name=type,proto3,enum=aggregator.NodeType" json:"type,omitempty"`
	// based on node_type one and only one of these field are set
	//
	// Types that are valid to be assigned to TaskType:
	//
	//	*TaskNode_EthTransfer
	//	*TaskNode_ContractWrite
	//	*TaskNode_ContractRead
	//	*TaskNode_GraphqlQuery
	//	*TaskNode_RestApi
	//	*TaskNode_Branch
	//	*TaskNode_Filter
	//	*TaskNode_Loop
	//	*TaskNode_CustomCode
	TaskType      isTaskNode_TaskType `protobuf_oneof:"task_type"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *TaskNode) Reset() {
	*x = TaskNode{}
	mi := &file_avs_proto_msgTypes[20]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *TaskNode) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*TaskNode) ProtoMessage() {}

func (x *TaskNode) ProtoReflect() protoreflect.Message {
	mi := &file_avs_proto_msgTypes[20]
	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 TaskNode.ProtoReflect.Descriptor instead.
func (*TaskNode) Descriptor() ([]byte, []int) {
	return file_avs_proto_rawDescGZIP(), []int{20}
}

func (x *TaskNode) GetId() string {
	if x != nil {
		return x.Id
	}
	return ""
}

func (x *TaskNode) GetName() string {
	if x != nil {
		return x.Name
	}
	return ""
}

func (x *TaskNode) GetType() NodeType {
	if x != nil {
		return x.Type
	}
	return NodeType_NODE_TYPE_UNSPECIFIED
}

func (x *TaskNode) GetTaskType() isTaskNode_TaskType {
	if x != nil {
		return x.TaskType
	}
	return nil
}

func (x *TaskNode) GetEthTransfer() *ETHTransferNode {
	if x != nil {
		if x, ok := x.TaskType.(*TaskNode_EthTransfer); ok {
			return x.EthTransfer
		}
	}
	return nil
}

func (x *TaskNode) GetContractWrite() *ContractWriteNode {
	if x != nil {
		if x, ok := x.TaskType.(*TaskNode_ContractWrite); ok {
			return x.ContractWrite
		}
	}
	return nil
}

func (x *TaskNode) GetContractRead() *ContractReadNode {
	if x != nil {
		if x, ok := x.TaskType.(*TaskNode_ContractRead); ok {
			return x.ContractRead
		}
	}
	return nil
}

func (x *TaskNode) GetGraphqlQuery() *GraphQLQueryNode {
	if x != nil {
		if x, ok := x.TaskType.(*TaskNode_GraphqlQuery); ok {
			return x.GraphqlQuery
		}
	}
	return nil
}

func (x *TaskNode) GetRestApi() *RestAPINode {
	if x != nil {
		if x, ok := x.TaskType.(*TaskNode_RestApi); ok {
			return x.RestApi
		}
	}
	return nil
}

func (x *TaskNode) GetBranch() *BranchNode {
	if x != nil {
		if x, ok := x.TaskType.(*TaskNode_Branch); ok {
			return x.Branch
		}
	}
	return nil
}

func (x *TaskNode) GetFilter() *FilterNode {
	if x != nil {
		if x, ok := x.TaskType.(*TaskNode_Filter); ok {
			return x.Filter
		}
	}
	return nil
}

func (x *TaskNode) GetLoop() *LoopNode {
	if x != nil {
		if x, ok := x.TaskType.(*TaskNode_Loop); ok {
			return x.Loop
		}
	}
	return nil
}

func (x *TaskNode) GetCustomCode() *CustomCodeNode {
	if x != nil {
		if x, ok := x.TaskType.(*TaskNode_CustomCode); ok {
			return x.CustomCode
		}
	}
	return nil
}

type isTaskNode_TaskType interface {
	isTaskNode_TaskType()
}

type TaskNode_EthTransfer struct {
	// Transfer eth require no calldata etc, just a destination address and an eth amount to be sent
	EthTransfer *ETHTransferNode `protobuf:"bytes,10,opt,name=eth_transfer,json=ethTransfer,proto3,oneof"`
}

type TaskNode_ContractWrite struct {
	// Run one ore more contracts. The call call also be batched with tool like
	// multicall to wrap many calls. in a contract write, we need to generate signature and send as userops.
	ContractWrite *ContractWriteNode `protobuf:"bytes,11,opt,name=contract_write,json=contractWrite,proto3,oneof"`
}

type TaskNode_ContractRead struct {
	// read data fron a target contract
	ContractRead *ContractReadNode `protobuf:"bytes,12,opt,name=contract_read,json=contractRead,proto3,oneof"`
}

type TaskNode_GraphqlQuery struct {
	// Make call to a graphql endpoint
	GraphqlQuery *GraphQLQueryNode `protobuf:"bytes,13,opt,name=graphql_query,json=graphqlQuery,proto3,oneof"`
}

type TaskNode_RestApi struct {
	// Make call to a HTTP endpoint
	RestApi *RestAPINode `protobuf:"bytes,14,opt,name=rest_api,json=restApi,proto3,oneof"`
}

type TaskNode_Branch struct {
	// CustomCode allow to run arbitraty JavaScript.
	Branch *BranchNode `protobuf:"bytes,15,opt,name=branch,proto3,oneof"`
}

type TaskNode_Filter struct {
	Filter *FilterNode `protobuf:"bytes,16,opt,name=filter,proto3,oneof"`
}

type TaskNode_Loop struct {
	Loop *LoopNode `protobuf:"bytes,17,opt,name=loop,proto3,oneof"`
}

type TaskNode_CustomCode struct {
	CustomCode *CustomCodeNode `protobuf:"bytes,18,opt,name=custom_code,json=customCode,proto3,oneof"`
}

func (*TaskNode_EthTransfer) isTaskNode_TaskType() {}

func (*TaskNode_ContractWrite) isTaskNode_TaskType() {}

func (*TaskNode_ContractRead) isTaskNode_TaskType() {}

func (*TaskNode_GraphqlQuery) isTaskNode_TaskType() {}

func (*TaskNode_RestApi) isTaskNode_TaskType() {}

func (*TaskNode_Branch) isTaskNode_TaskType() {}

func (*TaskNode_Filter) isTaskNode_TaskType() {}

func (*TaskNode_Loop) isTaskNode_TaskType() {}

func (*TaskNode_CustomCode) isTaskNode_TaskType() {}

type Execution struct {
	state   protoimpl.MessageState `protogen:"open.v1"`
	Id      string                 `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"`
	StartAt int64                  `protobuf:"varint,2,opt,name=start_at,json=startAt,proto3" json:"start_at,omitempty"`                // timestamp when execution started (in milliseconds)
	EndAt   int64                  `protobuf:"varint,3,opt,name=end_at,json=endAt,proto3" json:"end_at,omitempty"`                      // timestamp when execution ended (in milliseconds)
	Status  ExecutionStatus        `protobuf:"varint,4,opt,name=status,proto3,enum=aggregator.ExecutionStatus" json:"status,omitempty"` // detailed execution status (success, failed, partial_success, etc.)
	Error   string                 `protobuf:"bytes,5,opt,name=error,proto3" json:"error,omitempty"`
	// index indicates which run this is for the workflow (0-based: 0=1st run, 1=2nd run, etc.)
	// This helps clients understand execution order without calculating based on timestamps
	Index int64 `protobuf:"varint,6,opt,name=index,proto3" json:"index,omitempty"`
	// Total gas cost for the entire workflow execution (sum of all blockchain operations)
	// Units are in wei. Use string for large numbers to avoid overflow.
	TotalGasCost  string            `protobuf:"bytes,7,opt,name=total_gas_cost,json=totalGasCost,proto3" json:"total_gas_cost,omitempty"`
	Steps         []*Execution_Step `protobuf:"bytes,8,rep,name=steps,proto3" json:"steps,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *Execution) Reset() {
	*x = Execution{}
	mi := &file_avs_proto_msgTypes[21]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *Execution) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*Execution) ProtoMessage() {}

func (x *Execution) ProtoReflect() protoreflect.Message {
	mi := &file_avs_proto_msgTypes[21]
	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 Execution.ProtoReflect.Descriptor instead.
func (*Execution) Descriptor() ([]byte, []int) {
	return file_avs_proto_rawDescGZIP(), []int{21}
}

func (x *Execution) GetId() string {
	if x != nil {
		return x.Id
	}
	return ""
}

func (x *Execution) GetStartAt() int64 {
	if x != nil {
		return x.StartAt
	}
	return 0
}

func (x *Execution) GetEndAt() int64 {
	if x != nil {
		return x.EndAt
	}
	return 0
}

func (x *Execution) GetStatus() ExecutionStatus {
	if x != nil {
		return x.Status
	}
	return ExecutionStatus_EXECUTION_STATUS_UNSPECIFIED
}

func (x *Execution) GetError() string {
	if x != nil {
		return x.Error
	}
	return ""
}

func (x *Execution) GetIndex() int64 {
	if x != nil {
		return x.Index
	}
	return 0
}

func (x *Execution) GetTotalGasCost() string {
	if x != nil {
		return x.TotalGasCost
	}
	return ""
}

func (x *Execution) GetSteps() []*Execution_Step {
	if x != nil {
		return x.Steps
	}
	return nil
}

type Task struct {
	state              protoimpl.MessageState `protogen:"open.v1"`
	Id                 string                 `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"`
	Owner              string                 `protobuf:"bytes,2,opt,name=owner,proto3" json:"owner,omitempty"`
	SmartWalletAddress string                 `protobuf:"bytes,3,opt,name=smart_wallet_address,json=smartWalletAddress,proto3" json:"smart_wallet_address,omitempty"`
	// task won't be check before this (timestamp in milliseconds)
	StartAt int64 `protobuf:"varint,4,opt,name=start_at,json=startAt,proto3" json:"start_at,omitempty"`
	// task won't be run/check after this (timestamp in milliseconds)
	ExpiredAt int64 `protobuf:"varint,5,opt,name=expired_at,json=expiredAt,proto3" json:"expired_at,omitempty"`
	// arbitrary data about this task. has a limit of 255 character
	Name string `protobuf:"bytes,6,opt,name=name,proto3" json:"name,omitempty"`
	// timestamp when task was completed (in milliseconds)
	CompletedAt int64 `protobuf:"varint,7,opt,name=completed_at,json=completedAt,proto3" json:"completed_at,omitempty"`
	// limit on how many time this task can run. Set to 0 will make it run unlimited until cancelling or reaching its expired time
	MaxExecution int64 `protobuf:"varint,8,opt,name=max_execution,json=maxExecution,proto3" json:"max_execution,omitempty"`
	// return how many time this task has run
	ExecutionCount int64 `protobuf:"varint,9,opt,name=execution_count,json=executionCount,proto3" json:"execution_count,omitempty"`
	// timestamp when task was last executed (in milliseconds)
	LastRanAt int64        `protobuf:"varint,10,opt,name=last_ran_at,json=lastRanAt,proto3" json:"last_ran_at,omitempty"`
	Status    TaskStatus   `protobuf:"varint,11,opt,name=status,proto3,enum=aggregator.TaskStatus" json:"status,omitempty"`
	Trigger   *TaskTrigger `protobuf:"bytes,12,opt,name=trigger,proto3" json:"trigger,omitempty"`
	Nodes     []*TaskNode  `protobuf:"bytes,13,rep,name=nodes,proto3" json:"nodes,omitempty"`
	Edges     []*TaskEdge  `protobuf:"bytes,14,rep,name=edges,proto3" json:"edges,omitempty"`
	// Input variables defined at workflow creation time
	// These variables are available globally to all nodes during execution
	// and can be referenced using JavaScript template syntax like ${variableName}
	InputVariables map[string]*structpb.Value `protobuf:"bytes,15,rep,name=input_variables,json=inputVariables,proto3" json:"input_variables,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"`
	unknownFields  protoimpl.UnknownFields
	sizeCache      protoimpl.SizeCache
}

func (x *Task) Reset() {
	*x = Task{}
	mi := &file_avs_proto_msgTypes[22]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *Task) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*Task) ProtoMessage() {}

func (x *Task) ProtoReflect() protoreflect.Message {
	mi := &file_avs_proto_msgTypes[22]
	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 Task.ProtoReflect.Descriptor instead.
func (*Task) Descriptor() ([]byte, []int) {
	return file_avs_proto_rawDescGZIP(), []int{22}
}

func (x *Task) GetId() string {
	if x != nil {
		return x.Id
	}
	return ""
}

func (x *Task) GetOwner() string {
	if x != nil {
		return x.Owner
	}
	return ""
}

func (x *Task) GetSmartWalletAddress() string {
	if x != nil {
		return x.SmartWalletAddress
	}
	return ""
}

func (x *Task) GetStartAt() int64 {
	if x != nil {
		return x.StartAt
	}
	return 0
}

func (x *Task) GetExpiredAt() int64 {
	if x != nil {
		return x.ExpiredAt
	}
	return 0
}

func (x *Task) GetName() string {
	if x != nil {
		return x.Name
	}
	return ""
}

func (x *Task) GetCompletedAt() int64 {
	if x != nil {
		return x.CompletedAt
	}
	return 0
}

func (x *Task) GetMaxExecution() int64 {
	if x != nil {
		return x.MaxExecution
	}
	return 0
}

func (x *Task) GetExecutionCount() int64 {
	if x != nil {
		return x.ExecutionCount
	}
	return 0
}

func (x *Task) GetLastRanAt() int64 {
	if x != nil {
		return x.LastRanAt
	}
	return 0
}

func (x *Task) GetStatus() TaskStatus {
	if x != nil {
		return x.Status
	}
	return TaskStatus_Active
}

func (x *Task) GetTrigger() *TaskTrigger {
	if x != nil {
		return x.Trigger
	}
	return nil
}

func (x *Task) GetNodes() []*TaskNode {
	if x != nil {
		return x.Nodes
	}
	return nil
}

func (x *Task) GetEdges() []*TaskEdge {
	if x != nil {
		return x.Edges
	}
	return nil
}

func (x *Task) GetInputVariables() map[string]*structpb.Value {
	if x != nil {
		return x.InputVariables
	}
	return nil
}

type CreateTaskReq struct {
	state        protoimpl.MessageState `protogen:"open.v1"`
	Trigger      *TaskTrigger           `protobuf:"bytes,1,opt,name=trigger,proto3" json:"trigger,omitempty"`
	StartAt      int64                  `protobuf:"varint,2,opt,name=start_at,json=startAt,proto3" json:"start_at,omitempty"`
	ExpiredAt    int64                  `protobuf:"varint,3,opt,name=expired_at,json=expiredAt,proto3" json:"expired_at,omitempty"`
	MaxExecution int64                  `protobuf:"varint,4,opt,name=max_execution,json=maxExecution,proto3" json:"max_execution,omitempty"`
	// the smart wallet address that will be used to run this task
	// When leaving out, we will use the default(salt=0) wallet
	SmartWalletAddress string      `protobuf:"bytes,5,opt,name=smart_wallet_address,json=smartWalletAddress,proto3" json:"smart_wallet_address,omitempty"`
	Name               string      `protobuf:"bytes,6,opt,name=name,proto3" json:"name,omitempty"`
	Nodes              []*TaskNode `protobuf:"bytes,7,rep,name=nodes,proto3" json:"nodes,omitempty"`
	Edges              []*TaskEdge `protobuf:"bytes,8,rep,name=edges,proto3" json:"edges,omitempty"`
	// Input variables to be stored with the workflow definition
	// These variables will be available globally to all nodes during execution
	// and can be referenced using JavaScript template syntax like ${variableName}
	InputVariables map[string]*structpb.Value `protobuf:"bytes,9,rep,name=input_variables,json=inputVariables,proto3" json:"input_variables,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"`
	unknownFields  protoimpl.UnknownFields
	sizeCache      protoimpl.SizeCache
}

func (x *CreateTaskReq) Reset() {
	*x = CreateTaskReq{}
	mi := &file_avs_proto_msgTypes[23]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *CreateTaskReq) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*CreateTaskReq) ProtoMessage() {}

func (x *CreateTaskReq) ProtoReflect() protoreflect.Message {
	mi := &file_avs_proto_msgTypes[23]
	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 CreateTaskReq.ProtoReflect.Descriptor instead.
func (*CreateTaskReq) Descriptor() ([]byte, []int) {
	return file_avs_proto_rawDescGZIP(), []int{23}
}

func (x *CreateTaskReq) GetTrigger() *TaskTrigger {
	if x != nil {
		return x.Trigger
	}
	return nil
}

func (x *CreateTaskReq) GetStartAt() int64 {
	if x != nil {
		return x.StartAt
	}
	return 0
}

func (x *CreateTaskReq) GetExpiredAt() int64 {
	if x != nil {
		return x.ExpiredAt
	}
	return 0
}

func (x *CreateTaskReq) GetMaxExecution() int64 {
	if x != nil {
		return x.MaxExecution
	}
	return 0
}

func (x *CreateTaskReq) GetSmartWalletAddress() string {
	if x != nil {
		return x.SmartWalletAddress
	}
	return ""
}

func (x *CreateTaskReq) GetName() string {
	if x != nil {
		return x.Name
	}
	return ""
}

func (x *CreateTaskReq) GetNodes() []*TaskNode {
	if x != nil {
		return x.Nodes
	}
	return nil
}

func (x *CreateTaskReq) GetEdges() []*TaskEdge {
	if x != nil {
		return x.Edges
	}
	return nil
}

func (x *CreateTaskReq) GetInputVariables() map[string]*structpb.Value {
	if x != nil {
		return x.InputVariables
	}
	return nil
}

type CreateTaskResp struct {
	state         protoimpl.MessageState `protogen:"open.v1"`
	Id            string                 `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *CreateTaskResp) Reset() {
	*x = CreateTaskResp{}
	mi := &file_avs_proto_msgTypes[24]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *CreateTaskResp) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*CreateTaskResp) ProtoMessage() {}

func (x *CreateTaskResp) ProtoReflect() protoreflect.Message {
	mi := &file_avs_proto_msgTypes[24]
	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 CreateTaskResp.ProtoReflect.Descriptor instead.
func (*CreateTaskResp) Descriptor() ([]byte, []int) {
	return file_avs_proto_rawDescGZIP(), []int{24}
}

func (x *CreateTaskResp) GetId() string {
	if x != nil {
		return x.Id
	}
	return ""
}

type NonceRequest struct {
	state         protoimpl.MessageState `protogen:"open.v1"`
	Owner         string                 `protobuf:"bytes,1,opt,name=owner,proto3" json:"owner,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *NonceRequest) Reset() {
	*x = NonceRequest{}
	mi := &file_avs_proto_msgTypes[25]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *NonceRequest) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*NonceRequest) ProtoMessage() {}

func (x *NonceRequest) ProtoReflect() protoreflect.Message {
	mi := &file_avs_proto_msgTypes[25]
	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 NonceRequest.ProtoReflect.Descriptor instead.
func (*NonceRequest) Descriptor() ([]byte, []int) {
	return file_avs_proto_rawDescGZIP(), []int{25}
}

func (x *NonceRequest) GetOwner() string {
	if x != nil {
		return x.Owner
	}
	return ""
}

type NonceResp struct {
	state         protoimpl.MessageState `protogen:"open.v1"`
	Nonce         string                 `protobuf:"bytes,1,opt,name=nonce,proto3" json:"nonce,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *NonceResp) Reset() {
	*x = NonceResp{}
	mi := &file_avs_proto_msgTypes[26]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *NonceResp) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*NonceResp) ProtoMessage() {}

func (x *NonceResp) ProtoReflect() protoreflect.Message {
	mi := &file_avs_proto_msgTypes[26]
	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 NonceResp.ProtoReflect.Descriptor instead.
func (*NonceResp) Descriptor() ([]byte, []int) {
	return file_avs_proto_rawDescGZIP(), []int{26}
}

func (x *NonceResp) GetNonce() string {
	if x != nil {
		return x.Nonce
	}
	return ""
}

type ListWalletReq struct {
	state protoimpl.MessageState `protogen:"open.v1"`
	// filter out by factory address or salt
	// otherwise return all the wallet
	FactoryAddress string `protobuf:"bytes,1,opt,name=factory_address,json=factoryAddress,proto3" json:"factory_address,omitempty"` // TODO: Consider renaming to factoryAddress for consistency if this is used as a filter key matching SmartWallet.factoryAddress
	Salt           string `protobuf:"bytes,2,opt,name=salt,proto3" json:"salt,omitempty"`
	unknownFields  protoimpl.UnknownFields
	sizeCache      protoimpl.SizeCache
}

func (x *ListWalletReq) Reset() {
	*x = ListWalletReq{}
	mi := &file_avs_proto_msgTypes[27]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *ListWalletReq) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*ListWalletReq) ProtoMessage() {}

func (x *ListWalletReq) ProtoReflect() protoreflect.Message {
	mi := &file_avs_proto_msgTypes[27]
	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 ListWalletReq.ProtoReflect.Descriptor instead.
func (*ListWalletReq) Descriptor() ([]byte, []int) {
	return file_avs_proto_rawDescGZIP(), []int{27}
}

func (x *ListWalletReq) GetFactoryAddress() string {
	if x != nil {
		return x.FactoryAddress
	}
	return ""
}

func (x *ListWalletReq) GetSalt() string {
	if x != nil {
		return x.Salt
	}
	return ""
}

type SmartWallet struct {
	state         protoimpl.MessageState `protogen:"open.v1"`
	Address       string                 `protobuf:"bytes,1,opt,name=address,proto3" json:"address,omitempty"`
	Salt          string                 `protobuf:"bytes,2,opt,name=salt,proto3" json:"salt,omitempty"`
	Factory       string                 `protobuf:"bytes,3,opt,name=factory,proto3" json:"factory,omitempty"`
	IsHidden      bool                   `protobuf:"varint,4,opt,name=is_hidden,json=isHidden,proto3" json:"is_hidden,omitempty"` // Whether the wallet is hidden
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *SmartWallet) Reset() {
	*x = SmartWallet{}
	mi := &file_avs_proto_msgTypes[28]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *SmartWallet) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*SmartWallet) ProtoMessage() {}

func (x *SmartWallet) ProtoReflect() protoreflect.Message {
	mi := &file_avs_proto_msgTypes[28]
	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 SmartWallet.ProtoReflect.Descriptor instead.
func (*SmartWallet) Descriptor() ([]byte, []int) {
	return file_avs_proto_rawDescGZIP(), []int{28}
}

func (x *SmartWallet) GetAddress() string {
	if x != nil {
		return x.Address
	}
	return ""
}

func (x *SmartWallet) GetSalt() string {
	if x != nil {
		return x.Salt
	}
	return ""
}

func (x *SmartWallet) GetFactory() string {
	if x != nil {
		return x.Factory
	}
	return ""
}

func (x *SmartWallet) GetIsHidden() bool {
	if x != nil {
		return x.IsHidden
	}
	return false
}

type ListWalletResp struct {
	state         protoimpl.MessageState `protogen:"open.v1"`
	Items         []*SmartWallet         `protobuf:"bytes,1,rep,name=items,proto3" json:"items,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *ListWalletResp) Reset() {
	*x = ListWalletResp{}
	mi := &file_avs_proto_msgTypes[29]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *ListWalletResp) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*ListWalletResp) ProtoMessage() {}

func (x *ListWalletResp) ProtoReflect() protoreflect.Message {
	mi := &file_avs_proto_msgTypes[29]
	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 ListWalletResp.ProtoReflect.Descriptor instead.
func (*ListWalletResp) Descriptor() ([]byte, []int) {
	return file_avs_proto_rawDescGZIP(), []int{29}
}

func (x *ListWalletResp) GetItems() []*SmartWallet {
	if x != nil {
		return x.Items
	}
	return nil
}

type ListTasksReq struct {
	state protoimpl.MessageState `protogen:"open.v1"`
	// Filter out by the smart_wallet_address
	SmartWalletAddress []string `protobuf:"bytes,1,rep,name=smart_wallet_address,json=smartWalletAddress,proto3" json:"smart_wallet_address,omitempty"`
	// Get items before this cursor value (for backward pagination)
	Before string `protobuf:"bytes,2,opt,name=before,proto3" json:"before,omitempty"`
	// Get items after this cursor value (for forward pagination)
	After string `protobuf:"bytes,3,opt,name=after,proto3" json:"after,omitempty"`
	Limit int64  `protobuf:"varint,4,opt,name=limit,proto3" json:"limit,omitempty"`
	// Field control options for flexible response content
	IncludeNodes  bool `protobuf:"varint,5,opt,name=include_nodes,json=includeNodes,proto3" json:"include_nodes,omitempty"` // Include task nodes (expensive field)
	IncludeEdges  bool `protobuf:"varint,6,opt,name=include_edges,json=includeEdges,proto3" json:"include_edges,omitempty"` // Include task edges (expensive field)
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *ListTasksReq) Reset() {
	*x = ListTasksReq{}
	mi := &file_avs_proto_msgTypes[30]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *ListTasksReq) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*ListTasksReq) ProtoMessage() {}

func (x *ListTasksReq) ProtoReflect() protoreflect.Message {
	mi := &file_avs_proto_msgTypes[30]
	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 ListTasksReq.ProtoReflect.Descriptor instead.
func (*ListTasksReq) Descriptor() ([]byte, []int) {
	return file_avs_proto_rawDescGZIP(), []int{30}
}

func (x *ListTasksReq) GetSmartWalletAddress() []string {
	if x != nil {
		return x.SmartWalletAddress
	}
	return nil
}

func (x *ListTasksReq) GetBefore() string {
	if x != nil {
		return x.Before
	}
	return ""
}

func (x *ListTasksReq) GetAfter() string {
	if x != nil {
		return x.After
	}
	return ""
}

func (x *ListTasksReq) GetLimit() int64 {
	if x != nil {
		return x.Limit
	}
	return 0
}

func (x *ListTasksReq) GetIncludeNodes() bool {
	if x != nil {
		return x.IncludeNodes
	}
	return false
}

func (x *ListTasksReq) GetIncludeEdges() bool {
	if x != nil {
		return x.IncludeEdges
	}
	return false
}

type ListTasksResp struct {
	state         protoimpl.MessageState `protogen:"open.v1"`
	Items         []*Task                `protobuf:"bytes,1,rep,name=items,proto3" json:"items,omitempty"`
	PageInfo      *PageInfo              `protobuf:"bytes,2,opt,name=page_info,json=pageInfo,proto3" json:"page_info,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *ListTasksResp) Reset() {
	*x = ListTasksResp{}
	mi := &file_avs_proto_msgTypes[31]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *ListTasksResp) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*ListTasksResp) ProtoMessage() {}

func (x *ListTasksResp) ProtoReflect() protoreflect.Message {
	mi := &file_avs_proto_msgTypes[31]
	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 ListTasksResp.ProtoReflect.Descriptor instead.
func (*ListTasksResp) Descriptor() ([]byte, []int) {
	return file_avs_proto_rawDescGZIP(), []int{31}
}

func (x *ListTasksResp) GetItems() []*Task {
	if x != nil {
		return x.Items
	}
	return nil
}

func (x *ListTasksResp) GetPageInfo() *PageInfo {
	if x != nil {
		return x.PageInfo
	}
	return nil
}

type ListExecutionsReq struct {
	state   protoimpl.MessageState `protogen:"open.v1"`
	TaskIds []string               `protobuf:"bytes,1,rep,name=task_ids,json=taskIds,proto3" json:"task_ids,omitempty"`
	// Get items before this cursor value (for backward pagination)
	Before string `protobuf:"bytes,2,opt,name=before,proto3" json:"before,omitempty"`
	// Get items after this cursor value (for forward pagination)
	After         string `protobuf:"bytes,3,opt,name=after,proto3" json:"after,omitempty"`
	Limit         int64  `protobuf:"varint,4,opt,name=limit,proto3" json:"limit,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *ListExecutionsReq) Reset() {
	*x = ListExecutionsReq{}
	mi := &file_avs_proto_msgTypes[32]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *ListExecutionsReq) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*ListExecutionsReq) ProtoMessage() {}

func (x *ListExecutionsReq) ProtoReflect() protoreflect.Message {
	mi := &file_avs_proto_msgTypes[32]
	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 ListExecutionsReq.ProtoReflect.Descriptor instead.
func (*ListExecutionsReq) Descriptor() ([]byte, []int) {
	return file_avs_proto_rawDescGZIP(), []int{32}
}

func (x *ListExecutionsReq) GetTaskIds() []string {
	if x != nil {
		return x.TaskIds
	}
	return nil
}

func (x *ListExecutionsReq) GetBefore() string {
	if x != nil {
		return x.Before
	}
	return ""
}

func (x *ListExecutionsReq) GetAfter() string {
	if x != nil {
		return x.After
	}
	return ""
}

func (x *ListExecutionsReq) GetLimit() int64 {
	if x != nil {
		return x.Limit
	}
	return 0
}

type ListExecutionsResp struct {
	state         protoimpl.MessageState `protogen:"open.v1"`
	Items         []*Execution           `protobuf:"bytes,1,rep,name=items,proto3" json:"items,omitempty"`
	PageInfo      *PageInfo              `protobuf:"bytes,2,opt,name=page_info,json=pageInfo,proto3" json:"page_info,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *ListExecutionsResp) Reset() {
	*x = ListExecutionsResp{}
	mi := &file_avs_proto_msgTypes[33]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *ListExecutionsResp) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*ListExecutionsResp) ProtoMessage() {}

func (x *ListExecutionsResp) ProtoReflect() protoreflect.Message {
	mi := &file_avs_proto_msgTypes[33]
	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 ListExecutionsResp.ProtoReflect.Descriptor instead.
func (*ListExecutionsResp) Descriptor() ([]byte, []int) {
	return file_avs_proto_rawDescGZIP(), []int{33}
}

func (x *ListExecutionsResp) GetItems() []*Execution {
	if x != nil {
		return x.Items
	}
	return nil
}

func (x *ListExecutionsResp) GetPageInfo() *PageInfo {
	if x != nil {
		return x.PageInfo
	}
	return nil
}

type ExecutionReq struct {
	state         protoimpl.MessageState `protogen:"open.v1"`
	TaskId        string                 `protobuf:"bytes,1,opt,name=task_id,json=taskId,proto3" json:"task_id,omitempty"`
	ExecutionId   string                 `protobuf:"bytes,2,opt,name=execution_id,json=executionId,proto3" json:"execution_id,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *ExecutionReq) Reset() {
	*x = ExecutionReq{}
	mi := &file_avs_proto_msgTypes[34]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *ExecutionReq) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*ExecutionReq) ProtoMessage() {}

func (x *ExecutionReq) ProtoReflect() protoreflect.Message {
	mi := &file_avs_proto_msgTypes[34]
	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 ExecutionReq.ProtoReflect.Descriptor instead.
func (*ExecutionReq) Descriptor() ([]byte, []int) {
	return file_avs_proto_rawDescGZIP(), []int{34}
}

func (x *ExecutionReq) GetTaskId() string {
	if x != nil {
		return x.TaskId
	}
	return ""
}

func (x *ExecutionReq) GetExecutionId() string {
	if x != nil {
		return x.ExecutionId
	}
	return ""
}

type ExecutionStatusResp struct {
	state         protoimpl.MessageState `protogen:"open.v1"`
	Status        ExecutionStatus        `protobuf:"varint,1,opt,name=status,proto3,enum=aggregator.ExecutionStatus" json:"status,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *ExecutionStatusResp) Reset() {
	*x = ExecutionStatusResp{}
	mi := &file_avs_proto_msgTypes[35]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *ExecutionStatusResp) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*ExecutionStatusResp) ProtoMessage() {}

func (x *ExecutionStatusResp) ProtoReflect() protoreflect.Message {
	mi := &file_avs_proto_msgTypes[35]
	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 ExecutionStatusResp.ProtoReflect.Descriptor instead.
func (*ExecutionStatusResp) Descriptor() ([]byte, []int) {
	return file_avs_proto_rawDescGZIP(), []int{35}
}

func (x *ExecutionStatusResp) GetStatus() ExecutionStatus {
	if x != nil {
		return x.Status
	}
	return ExecutionStatus_EXECUTION_STATUS_UNSPECIFIED
}

type GetKeyReq struct {
	state protoimpl.MessageState `protogen:"open.v1"`
	// The message to sign, provided by GetSignatureFormat
	Message string `protobuf:"bytes,1,opt,name=message,proto3" json:"message,omitempty"`
	// The signature of the message
	Signature     string `protobuf:"bytes,2,opt,name=signature,proto3" json:"signature,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *GetKeyReq) Reset() {
	*x = GetKeyReq{}
	mi := &file_avs_proto_msgTypes[36]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *GetKeyReq) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*GetKeyReq) ProtoMessage() {}

func (x *GetKeyReq) ProtoReflect() protoreflect.Message {
	mi := &file_avs_proto_msgTypes[36]
	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 GetKeyReq.ProtoReflect.Descriptor instead.
func (*GetKeyReq) Descriptor() ([]byte, []int) {
	return file_avs_proto_rawDescGZIP(), []int{36}
}

func (x *GetKeyReq) GetMessage() string {
	if x != nil {
		return x.Message
	}
	return ""
}

func (x *GetKeyReq) GetSignature() string {
	if x != nil {
		return x.Signature
	}
	return ""
}

type KeyResp struct {
	state protoimpl.MessageState `protogen:"open.v1"`
	// The user's address derived from the signature
	Address string `protobuf:"bytes,1,opt,name=address,proto3" json:"address,omitempty"`
	// The auth key to include in all future requests
	Key string `protobuf:"bytes,2,opt,name=key,proto3" json:"key,omitempty"`
	// The message that was signed to produce the signature
	Message string `protobuf:"bytes,3,opt,name=message,proto3" json:"message,omitempty"`
	// Expiry of the auth key in seconds since epoch
	Expiry        uint64 `protobuf:"varint,4,opt,name=expiry,proto3" json:"expiry,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *KeyResp) Reset() {
	*x = KeyResp{}
	mi := &file_avs_proto_msgTypes[37]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *KeyResp) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*KeyResp) ProtoMessage() {}

func (x *KeyResp) ProtoReflect() protoreflect.Message {
	mi := &file_avs_proto_msgTypes[37]
	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 KeyResp.ProtoReflect.Descriptor instead.
func (*KeyResp) Descriptor() ([]byte, []int) {
	return file_avs_proto_rawDescGZIP(), []int{37}
}

func (x *KeyResp) GetAddress() string {
	if x != nil {
		return x.Address
	}
	return ""
}

func (x *KeyResp) GetKey() string {
	if x != nil {
		return x.Key
	}
	return ""
}

func (x *KeyResp) GetMessage() string {
	if x != nil {
		return x.Message
	}
	return ""
}

func (x *KeyResp) GetExpiry() uint64 {
	if x != nil {
		return x.Expiry
	}
	return 0
}

type GetWalletReq struct {
	state protoimpl.MessageState `protogen:"open.v1"`
	Salt  string                 `protobuf:"bytes,1,opt,name=salt,proto3" json:"salt,omitempty"`
	// this is the factory address for the wallet, when leaving its empty, we will use our default factory address
	FactoryAddress string `protobuf:"bytes,2,opt,name=factory_address,json=factoryAddress,proto3" json:"factory_address,omitempty"`
	unknownFields  protoimpl.UnknownFields
	sizeCache      protoimpl.SizeCache
}

func (x *GetWalletReq) Reset() {
	*x = GetWalletReq{}
	mi := &file_avs_proto_msgTypes[38]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *GetWalletReq) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*GetWalletReq) ProtoMessage() {}

func (x *GetWalletReq) ProtoReflect() protoreflect.Message {
	mi := &file_avs_proto_msgTypes[38]
	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 GetWalletReq.ProtoReflect.Descriptor instead.
func (*GetWalletReq) Descriptor() ([]byte, []int) {
	return file_avs_proto_rawDescGZIP(), []int{38}
}

func (x *GetWalletReq) GetSalt() string {
	if x != nil {
		return x.Salt
	}
	return ""
}

func (x *GetWalletReq) GetFactoryAddress() string {
	if x != nil {
		return x.FactoryAddress
	}
	return ""
}

type GetWalletResp struct {
	state              protoimpl.MessageState `protogen:"open.v1"`
	Address            string                 `protobuf:"bytes,1,opt,name=address,proto3" json:"address,omitempty"`
	Salt               string                 `protobuf:"bytes,2,opt,name=salt,proto3" json:"salt,omitempty"`
	FactoryAddress     string                 `protobuf:"bytes,3,opt,name=factory_address,json=factoryAddress,proto3" json:"factory_address,omitempty"`
	IsHidden           bool                   `protobuf:"varint,4,opt,name=is_hidden,json=isHidden,proto3" json:"is_hidden,omitempty"`
	TotalTaskCount     uint64                 `protobuf:"varint,5,opt,name=total_task_count,json=totalTaskCount,proto3" json:"total_task_count,omitempty"`
	ActiveTaskCount    uint64                 `protobuf:"varint,6,opt,name=active_task_count,json=activeTaskCount,proto3" json:"active_task_count,omitempty"`
	CompletedTaskCount uint64                 `protobuf:"varint,7,opt,name=completed_task_count,json=completedTaskCount,proto3" json:"completed_task_count,omitempty"`
	FailedTaskCount    uint64                 `protobuf:"varint,8,opt,name=failed_task_count,json=failedTaskCount,proto3" json:"failed_task_count,omitempty"`
	CanceledTaskCount  uint64                 `protobuf:"varint,9,opt,name=canceled_task_count,json=canceledTaskCount,proto3" json:"canceled_task_count,omitempty"`
	unknownFields      protoimpl.UnknownFields
	sizeCache          protoimpl.SizeCache
}

func (x *GetWalletResp) Reset() {
	*x = GetWalletResp{}
	mi := &file_avs_proto_msgTypes[39]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *GetWalletResp) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*GetWalletResp) ProtoMessage() {}

func (x *GetWalletResp) ProtoReflect() protoreflect.Message {
	mi := &file_avs_proto_msgTypes[39]
	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 GetWalletResp.ProtoReflect.Descriptor instead.
func (*GetWalletResp) Descriptor() ([]byte, []int) {
	return file_avs_proto_rawDescGZIP(), []int{39}
}

func (x *GetWalletResp) GetAddress() string {
	if x != nil {
		return x.Address
	}
	return ""
}

func (x *GetWalletResp) GetSalt() string {
	if x != nil {
		return x.Salt
	}
	return ""
}

func (x *GetWalletResp) GetFactoryAddress() string {
	if x != nil {
		return x.FactoryAddress
	}
	return ""
}

func (x *GetWalletResp) GetIsHidden() bool {
	if x != nil {
		return x.IsHidden
	}
	return false
}

func (x *GetWalletResp) GetTotalTaskCount() uint64 {
	if x != nil {
		return x.TotalTaskCount
	}
	return 0
}

func (x *GetWalletResp) GetActiveTaskCount() uint64 {
	if x != nil {
		return x.ActiveTaskCount
	}
	return 0
}

func (x *GetWalletResp) GetCompletedTaskCount() uint64 {
	if x != nil {
		return x.CompletedTaskCount
	}
	return 0
}

func (x *GetWalletResp) GetFailedTaskCount() uint64 {
	if x != nil {
		return x.FailedTaskCount
	}
	return 0
}

func (x *GetWalletResp) GetCanceledTaskCount() uint64 {
	if x != nil {
		return x.CanceledTaskCount
	}
	return 0
}

type SetWalletReq struct {
	state protoimpl.MessageState `protogen:"open.v1"`
	Salt  string                 `protobuf:"bytes,1,opt,name=salt,proto3" json:"salt,omitempty"`
	// this is the factory address for the wallet, when leaving its empty, we will use our default factory address
	FactoryAddress string `protobuf:"bytes,2,opt,name=factory_address,json=factoryAddress,proto3" json:"factory_address,omitempty"`
	// whether the wallet should be hidden in getWallets results
	IsHidden      bool `protobuf:"varint,3,opt,name=is_hidden,json=isHidden,proto3" json:"is_hidden,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *SetWalletReq) Reset() {
	*x = SetWalletReq{}
	mi := &file_avs_proto_msgTypes[40]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *SetWalletReq) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*SetWalletReq) ProtoMessage() {}

func (x *SetWalletReq) ProtoReflect() protoreflect.Message {
	mi := &file_avs_proto_msgTypes[40]
	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 SetWalletReq.ProtoReflect.Descriptor instead.
func (*SetWalletReq) Descriptor() ([]byte, []int) {
	return file_avs_proto_rawDescGZIP(), []int{40}
}

func (x *SetWalletReq) GetSalt() string {
	if x != nil {
		return x.Salt
	}
	return ""
}

func (x *SetWalletReq) GetFactoryAddress() string {
	if x != nil {
		return x.FactoryAddress
	}
	return ""
}

func (x *SetWalletReq) GetIsHidden() bool {
	if x != nil {
		return x.IsHidden
	}
	return false
}

// Request message for WithdrawFunds operation
type WithdrawFundsReq struct {
	state protoimpl.MessageState `protogen:"open.v1"`
	// The recipient address to send funds to
	RecipientAddress string `protobuf:"bytes,1,opt,name=recipient_address,json=recipientAddress,proto3" json:"recipient_address,omitempty"`
	// The amount to withdraw in wei for ETH or smallest token unit for ERC20
	Amount string `protobuf:"bytes,2,opt,name=amount,proto3" json:"amount,omitempty"`
	// Token type: "ETH" for native ETH, or contract address for ERC20 tokens
	Token string `protobuf:"bytes,3,opt,name=token,proto3" json:"token,omitempty"`
	// Required: Smart wallet address to withdraw from (must be from user's getWallet() call)
	SmartWalletAddress string `protobuf:"bytes,4,opt,name=smart_wallet_address,json=smartWalletAddress,proto3" json:"smart_wallet_address,omitempty"`
	unknownFields      protoimpl.UnknownFields
	sizeCache          protoimpl.SizeCache
}

func (x *WithdrawFundsReq) Reset() {
	*x = WithdrawFundsReq{}
	mi := &file_avs_proto_msgTypes[41]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *WithdrawFundsReq) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*WithdrawFundsReq) ProtoMessage() {}

func (x *WithdrawFundsReq) ProtoReflect() protoreflect.Message {
	mi := &file_avs_proto_msgTypes[41]
	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 WithdrawFundsReq.ProtoReflect.Descriptor instead.
func (*WithdrawFundsReq) Descriptor() ([]byte, []int) {
	return file_avs_proto_rawDescGZIP(), []int{41}
}

func (x *WithdrawFundsReq) GetRecipientAddress() string {
	if x != nil {
		return x.RecipientAddress
	}
	return ""
}

func (x *WithdrawFundsReq) GetAmount() string {
	if x != nil {
		return x.Amount
	}
	return ""
}

func (x *WithdrawFundsReq) GetToken() string {
	if x != nil {
		return x.Token
	}
	return ""
}

func (x *WithdrawFundsReq) GetSmartWalletAddress() string {
	if x != nil {
		return x.SmartWalletAddress
	}
	return ""
}

// Response message for WithdrawFunds operation
type WithdrawFundsResp struct {
	state              protoimpl.MessageState `protogen:"open.v1"`
	Success            bool                   `protobuf:"varint,1,opt,name=success,proto3" json:"success,omitempty"`                                                  // Whether the operation completed successfully
	Status             string                 `protobuf:"bytes,2,opt,name=status,proto3" json:"status,omitempty"`                                                     // Status description: "pending", "submitted", "failed"
	Message            string                 `protobuf:"bytes,3,opt,name=message,proto3" json:"message,omitempty"`                                                   // Human-readable message about what happened
	UserOpHash         string                 `protobuf:"bytes,4,opt,name=user_op_hash,json=userOpHash,proto3" json:"user_op_hash,omitempty"`                         // UserOperation hash from bundler
	TransactionHash    string                 `protobuf:"bytes,5,opt,name=transaction_hash,json=transactionHash,proto3" json:"transaction_hash,omitempty"`            // Blockchain transaction hash (if available)
	SubmittedAt        int64                  `protobuf:"varint,6,opt,name=submitted_at,json=submittedAt,proto3" json:"submitted_at,omitempty"`                       // Unix timestamp when UserOp was submitted
	SmartWalletAddress string                 `protobuf:"bytes,7,opt,name=smart_wallet_address,json=smartWalletAddress,proto3" json:"smart_wallet_address,omitempty"` // Smart wallet address used for withdrawal
	RecipientAddress   string                 `protobuf:"bytes,8,opt,name=recipient_address,json=recipientAddress,proto3" json:"recipient_address,omitempty"`         // Recipient address
	Amount             string                 `protobuf:"bytes,9,opt,name=amount,proto3" json:"amount,omitempty"`                                                     // Amount withdrawn
	Token              string                 `protobuf:"bytes,10,opt,name=token,proto3" json:"token,omitempty"`                                                      // Token type (ETH or contract address)
	unknownFields      protoimpl.UnknownFields
	sizeCache          protoimpl.SizeCache
}

func (x *WithdrawFundsResp) Reset() {
	*x = WithdrawFundsResp{}
	mi := &file_avs_proto_msgTypes[42]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *WithdrawFundsResp) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*WithdrawFundsResp) ProtoMessage() {}

func (x *WithdrawFundsResp) ProtoReflect() protoreflect.Message {
	mi := &file_avs_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 WithdrawFundsResp.ProtoReflect.Descriptor instead.
func (*WithdrawFundsResp) Descriptor() ([]byte, []int) {
	return file_avs_proto_rawDescGZIP(), []int{42}
}

func (x *WithdrawFundsResp) GetSuccess() bool {
	if x != nil {
		return x.Success
	}
	return false
}

func (x *WithdrawFundsResp) GetStatus() string {
	if x != nil {
		return x.Status
	}
	return ""
}

func (x *WithdrawFundsResp) GetMessage() string {
	if x != nil {
		return x.Message
	}
	return ""
}

func (x *WithdrawFundsResp) GetUserOpHash() string {
	if x != nil {
		return x.UserOpHash
	}
	return ""
}

func (x *WithdrawFundsResp) GetTransactionHash() string {
	if x != nil {
		return x.TransactionHash
	}
	return ""
}

func (x *WithdrawFundsResp) GetSubmittedAt() int64 {
	if x != nil {
		return x.SubmittedAt
	}
	return 0
}

func (x *WithdrawFundsResp) GetSmartWalletAddress() string {
	if x != nil {
		return x.SmartWalletAddress
	}
	return ""
}

func (x *WithdrawFundsResp) GetRecipientAddress() string {
	if x != nil {
		return x.RecipientAddress
	}
	return ""
}

func (x *WithdrawFundsResp) GetAmount() string {
	if x != nil {
		return x.Amount
	}
	return ""
}

func (x *WithdrawFundsResp) GetToken() string {
	if x != nil {
		return x.Token
	}
	return ""
}

type TriggerTaskReq struct {
	state  protoimpl.MessageState `protogen:"open.v1"`
	TaskId string                 `protobuf:"bytes,1,opt,name=task_id,json=taskId,proto3" json:"task_id,omitempty"`
	// Flattened from TriggerReason: Use the top-level TriggerType enum for consistency
	TriggerType TriggerType `protobuf:"varint,2,opt,name=trigger_type,json=triggerType,proto3,enum=aggregator.TriggerType" json:"trigger_type,omitempty"`
	// Flattened from TriggerReason: trigger output data based on type
	//
	// Types that are valid to be assigned to TriggerOutput:
	//
	//	*TriggerTaskReq_BlockTrigger
	//	*TriggerTaskReq_FixedTimeTrigger
	//	*TriggerTaskReq_CronTrigger
	//	*TriggerTaskReq_EventTrigger
	//	*TriggerTaskReq_ManualTrigger
	TriggerOutput isTriggerTaskReq_TriggerOutput `protobuf_oneof:"trigger_output"`
	// when setting is_blocking=true, the execution run in the same request. the request is blocked until the execution is done
	// setting to false, the task will be execute in our normal queueu system, and the request won't block.
	// default value is false, for interact testing, set this to true
	IsBlocking    bool `protobuf:"varint,8,opt,name=is_blocking,json=isBlocking,proto3" json:"is_blocking,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *TriggerTaskReq) Reset() {
	*x = TriggerTaskReq{}
	mi := &file_avs_proto_msgTypes[43]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *TriggerTaskReq) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*TriggerTaskReq) ProtoMessage() {}

func (x *TriggerTaskReq) ProtoReflect() protoreflect.Message {
	mi := &file_avs_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 TriggerTaskReq.ProtoReflect.Descriptor instead.
func (*TriggerTaskReq) Descriptor() ([]byte, []int) {
	return file_avs_proto_rawDescGZIP(), []int{43}
}

func (x *TriggerTaskReq) GetTaskId() string {
	if x != nil {
		return x.TaskId
	}
	return ""
}

func (x *TriggerTaskReq) GetTriggerType() TriggerType {
	if x != nil {
		return x.TriggerType
	}
	return TriggerType_TRIGGER_TYPE_UNSPECIFIED
}

func (x *TriggerTaskReq) GetTriggerOutput() isTriggerTaskReq_TriggerOutput {
	if x != nil {
		return x.TriggerOutput
	}
	return nil
}

func (x *TriggerTaskReq) GetBlockTrigger() *BlockTrigger_Output {
	if x != nil {
		if x, ok := x.TriggerOutput.(*TriggerTaskReq_BlockTrigger); ok {
			return x.BlockTrigger
		}
	}
	return nil
}

func (x *TriggerTaskReq) GetFixedTimeTrigger() *FixedTimeTrigger_Output {
	if x != nil {
		if x, ok := x.TriggerOutput.(*TriggerTaskReq_FixedTimeTrigger); ok {
			return x.FixedTimeTrigger
		}
	}
	return nil
}

func (x *TriggerTaskReq) GetCronTrigger() *CronTrigger_Output {
	if x != nil {
		if x, ok := x.TriggerOutput.(*TriggerTaskReq_CronTrigger); ok {
			return x.CronTrigger
		}
	}
	return nil
}

func (x *TriggerTaskReq) GetEventTrigger() *EventTrigger_Output {
	if x != nil {
		if x, ok := x.TriggerOutput.(*TriggerTaskReq_EventTrigger); ok {
			return x.EventTrigger
		}
	}
	return nil
}

func (x *TriggerTaskReq) GetManualTrigger() *ManualTrigger_Output {
	if x != nil {
		if x, ok := x.TriggerOutput.(*TriggerTaskReq_ManualTrigger); ok {
			return x.ManualTrigger
		}
	}
	return nil
}

func (x *TriggerTaskReq) GetIsBlocking() bool {
	if x != nil {
		return x.IsBlocking
	}
	return false
}

type isTriggerTaskReq_TriggerOutput interface {
	isTriggerTaskReq_TriggerOutput()
}

type TriggerTaskReq_BlockTrigger struct {
	BlockTrigger *BlockTrigger_Output `protobuf:"bytes,3,opt,name=block_trigger,json=blockTrigger,proto3,oneof"`
}

type TriggerTaskReq_FixedTimeTrigger struct {
	FixedTimeTrigger *FixedTimeTrigger_Output `protobuf:"bytes,4,opt,name=fixed_time_trigger,json=fixedTimeTrigger,proto3,oneof"`
}

type TriggerTaskReq_CronTrigger struct {
	CronTrigger *CronTrigger_Output `protobuf:"bytes,5,opt,name=cron_trigger,json=cronTrigger,proto3,oneof"`
}

type TriggerTaskReq_EventTrigger struct {
	EventTrigger *EventTrigger_Output `protobuf:"bytes,6,opt,name=event_trigger,json=eventTrigger,proto3,oneof"`
}

type TriggerTaskReq_ManualTrigger struct {
	ManualTrigger *ManualTrigger_Output `protobuf:"bytes,7,opt,name=manual_trigger,json=manualTrigger,proto3,oneof"`
}

func (*TriggerTaskReq_BlockTrigger) isTriggerTaskReq_TriggerOutput() {}

func (*TriggerTaskReq_FixedTimeTrigger) isTriggerTaskReq_TriggerOutput() {}

func (*TriggerTaskReq_CronTrigger) isTriggerTaskReq_TriggerOutput() {}

func (*TriggerTaskReq_EventTrigger) isTriggerTaskReq_TriggerOutput() {}

func (*TriggerTaskReq_ManualTrigger) isTriggerTaskReq_TriggerOutput() {}

type TriggerTaskResp struct {
	state protoimpl.MessageState `protogen:"open.v1"`
	// Regardless whether it is a block or async, we always get back the same kind of id for this trigger.
	// The caller then make a second request to GetExecution to check for the execution status and data.
	// In the blocking mode, the execution_id is materialized and has been created, we can then call GetExecution on it immediately to receive result
	// In async mode, the execution_id is created ahead of time and not materialized, calling GetExecutionStatus on it will return Status=Pending for example. Once Status=Completed you can call GetExecution to get all log and detail. Call GetExecution before it is completed will result in "Execution Not Found"
	ExecutionId string          `protobuf:"bytes,1,opt,name=execution_id,json=executionId,proto3" json:"execution_id,omitempty"`
	Status      ExecutionStatus `protobuf:"varint,2,opt,name=status,proto3,enum=aggregator.ExecutionStatus" json:"status,omitempty"`
	// Always return the workflow ID
	WorkflowId string `protobuf:"bytes,3,opt,name=workflow_id,json=workflowId,proto3" json:"workflow_id,omitempty"`
	// Optional execution fields - populated when isBlocking=true or when execution is complete
	StartAt *int64 `protobuf:"varint,4,opt,name=start_at,json=startAt,proto3,oneof" json:"start_at,omitempty"` // timestamp when execution started (in milliseconds) - populated when isBlocking=true or when execution is complete, making it available for both blocking and non-blocking modes
	EndAt   *int64 `protobuf:"varint,5,opt,name=end_at,json=endAt,proto3,oneof" json:"end_at,omitempty"`       // timestamp when execution ended (in milliseconds) - only available for blocking
	// Field 6 (success) was removed - do not reuse this field number
	Error         *string           `protobuf:"bytes,7,opt,name=error,proto3,oneof" json:"error,omitempty"` // error message if execution failed - only available for blocking
	Steps         []*Execution_Step `protobuf:"bytes,8,rep,name=steps,proto3" json:"steps,omitempty"`       // execution steps - only available for blocking
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *TriggerTaskResp) Reset() {
	*x = TriggerTaskResp{}
	mi := &file_avs_proto_msgTypes[44]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *TriggerTaskResp) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*TriggerTaskResp) ProtoMessage() {}

func (x *TriggerTaskResp) ProtoReflect() protoreflect.Message {
	mi := &file_avs_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 TriggerTaskResp.ProtoReflect.Descriptor instead.
func (*TriggerTaskResp) Descriptor() ([]byte, []int) {
	return file_avs_proto_rawDescGZIP(), []int{44}
}

func (x *TriggerTaskResp) GetExecutionId() string {
	if x != nil {
		return x.ExecutionId
	}
	return ""
}

func (x *TriggerTaskResp) GetStatus() ExecutionStatus {
	if x != nil {
		return x.Status
	}
	return ExecutionStatus_EXECUTION_STATUS_UNSPECIFIED
}

func (x *TriggerTaskResp) GetWorkflowId() string {
	if x != nil {
		return x.WorkflowId
	}
	return ""
}

func (x *TriggerTaskResp) GetStartAt() int64 {
	if x != nil && x.StartAt != nil {
		return *x.StartAt
	}
	return 0
}

func (x *TriggerTaskResp) GetEndAt() int64 {
	if x != nil && x.EndAt != nil {
		return *x.EndAt
	}
	return 0
}

func (x *TriggerTaskResp) GetError() string {
	if x != nil && x.Error != nil {
		return *x.Error
	}
	return ""
}

func (x *TriggerTaskResp) GetSteps() []*Execution_Step {
	if x != nil {
		return x.Steps
	}
	return nil
}

type CreateOrUpdateSecretReq struct {
	state protoimpl.MessageState `protogen:"open.v1"`
	// name of the secret. it should be [a-zA-Z0-9_]+
	Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"`
	// value can be any valid unicode string
	// Secret is the only thing we can change in an update. workflow and org id cannot be change
	Secret string `protobuf:"bytes,2,opt,name=secret,proto3" json:"secret,omitempty"`
	// A secret when define can be at these level
	// - org: available to everything in the org. Currently this isn't supported yet. reserve for future use
	// - user: available to all workflow of an user. This is the default level
	// - workflow: available to a single workflow. To make a secret available to multiple workflow, either use org/user level or define them on other workflow.
	WorkflowId    string `protobuf:"bytes,3,opt,name=workflow_id,json=workflowId,proto3" json:"workflow_id,omitempty"`
	OrgId         string `protobuf:"bytes,4,opt,name=org_id,json=orgId,proto3" json:"org_id,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *CreateOrUpdateSecretReq) Reset() {
	*x = CreateOrUpdateSecretReq{}
	mi := &file_avs_proto_msgTypes[45]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *CreateOrUpdateSecretReq) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*CreateOrUpdateSecretReq) ProtoMessage() {}

func (x *CreateOrUpdateSecretReq) ProtoReflect() protoreflect.Message {
	mi := &file_avs_proto_msgTypes[45]
	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 CreateOrUpdateSecretReq.ProtoReflect.Descriptor instead.
func (*CreateOrUpdateSecretReq) Descriptor() ([]byte, []int) {
	return file_avs_proto_rawDescGZIP(), []int{45}
}

func (x *CreateOrUpdateSecretReq) GetName() string {
	if x != nil {
		return x.Name
	}
	return ""
}

func (x *CreateOrUpdateSecretReq) GetSecret() string {
	if x != nil {
		return x.Secret
	}
	return ""
}

func (x *CreateOrUpdateSecretReq) GetWorkflowId() string {
	if x != nil {
		return x.WorkflowId
	}
	return ""
}

func (x *CreateOrUpdateSecretReq) GetOrgId() string {
	if x != nil {
		return x.OrgId
	}
	return ""
}

type ListSecretsReq struct {
	state      protoimpl.MessageState `protogen:"open.v1"`
	WorkflowId string                 `protobuf:"bytes,1,opt,name=workflow_id,json=workflowId,proto3" json:"workflow_id,omitempty"`
	// Get items before this cursor value (for backward pagination)
	Before string `protobuf:"bytes,2,opt,name=before,proto3" json:"before,omitempty"`
	// Get items after this cursor value (for forward pagination)
	After string `protobuf:"bytes,3,opt,name=after,proto3" json:"after,omitempty"`
	Limit int64  `protobuf:"varint,4,opt,name=limit,proto3" json:"limit,omitempty"`
	// Field control options for flexible response content
	IncludeTimestamps  bool `protobuf:"varint,5,opt,name=include_timestamps,json=includeTimestamps,proto3" json:"include_timestamps,omitempty"`    // Include created_at and updated_at fields
	IncludeCreatedBy   bool `protobuf:"varint,6,opt,name=include_created_by,json=includeCreatedBy,proto3" json:"include_created_by,omitempty"`     // Include created_by field
	IncludeDescription bool `protobuf:"varint,7,opt,name=include_description,json=includeDescription,proto3" json:"include_description,omitempty"` // Include description field
	unknownFields      protoimpl.UnknownFields
	sizeCache          protoimpl.SizeCache
}

func (x *ListSecretsReq) Reset() {
	*x = ListSecretsReq{}
	mi := &file_avs_proto_msgTypes[46]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *ListSecretsReq) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*ListSecretsReq) ProtoMessage() {}

func (x *ListSecretsReq) ProtoReflect() protoreflect.Message {
	mi := &file_avs_proto_msgTypes[46]
	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 ListSecretsReq.ProtoReflect.Descriptor instead.
func (*ListSecretsReq) Descriptor() ([]byte, []int) {
	return file_avs_proto_rawDescGZIP(), []int{46}
}

func (x *ListSecretsReq) GetWorkflowId() string {
	if x != nil {
		return x.WorkflowId
	}
	return ""
}

func (x *ListSecretsReq) GetBefore() string {
	if x != nil {
		return x.Before
	}
	return ""
}

func (x *ListSecretsReq) GetAfter() string {
	if x != nil {
		return x.After
	}
	return ""
}

func (x *ListSecretsReq) GetLimit() int64 {
	if x != nil {
		return x.Limit
	}
	return 0
}

func (x *ListSecretsReq) GetIncludeTimestamps() bool {
	if x != nil {
		return x.IncludeTimestamps
	}
	return false
}

func (x *ListSecretsReq) GetIncludeCreatedBy() bool {
	if x != nil {
		return x.IncludeCreatedBy
	}
	return false
}

func (x *ListSecretsReq) GetIncludeDescription() bool {
	if x != nil {
		return x.IncludeDescription
	}
	return false
}

// Standard pagination info following GraphQL cursor-based pagination
type PageInfo struct {
	state           protoimpl.MessageState `protogen:"open.v1"`
	StartCursor     string                 `protobuf:"bytes,1,opt,name=start_cursor,json=startCursor,proto3" json:"start_cursor,omitempty"`                // Cursor pointing to the first item in the current page
	EndCursor       string                 `protobuf:"bytes,2,opt,name=end_cursor,json=endCursor,proto3" json:"end_cursor,omitempty"`                      // Cursor pointing to the last item in the current page
	HasPreviousPage bool                   `protobuf:"varint,3,opt,name=has_previous_page,json=hasPreviousPage,proto3" json:"has_previous_page,omitempty"` // Whether there are more items before the current page
	HasNextPage     bool                   `protobuf:"varint,4,opt,name=has_next_page,json=hasNextPage,proto3" json:"has_next_page,omitempty"`             // Whether there are more items after the current page
	unknownFields   protoimpl.UnknownFields
	sizeCache       protoimpl.SizeCache
}

func (x *PageInfo) Reset() {
	*x = PageInfo{}
	mi := &file_avs_proto_msgTypes[47]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *PageInfo) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*PageInfo) ProtoMessage() {}

func (x *PageInfo) ProtoReflect() protoreflect.Message {
	mi := &file_avs_proto_msgTypes[47]
	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 PageInfo.ProtoReflect.Descriptor instead.
func (*PageInfo) Descriptor() ([]byte, []int) {
	return file_avs_proto_rawDescGZIP(), []int{47}
}

func (x *PageInfo) GetStartCursor() string {
	if x != nil {
		return x.StartCursor
	}
	return ""
}

func (x *PageInfo) GetEndCursor() string {
	if x != nil {
		return x.EndCursor
	}
	return ""
}

func (x *PageInfo) GetHasPreviousPage() bool {
	if x != nil {
		return x.HasPreviousPage
	}
	return false
}

func (x *PageInfo) GetHasNextPage() bool {
	if x != nil {
		return x.HasNextPage
	}
	return false
}

// Secret represents a secret configuration without the actual secret value
type Secret struct {
	state protoimpl.MessageState `protogen:"open.v1"`
	// when listing secret, we don't return its value, just secret and last update
	Name       string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"`
	Scope      string `protobuf:"bytes,2,opt,name=scope,proto3" json:"scope,omitempty"`
	WorkflowId string `protobuf:"bytes,3,opt,name=workflow_id,json=workflowId,proto3" json:"workflow_id,omitempty"`
	OrgId      string `protobuf:"bytes,4,opt,name=org_id,json=orgId,proto3" json:"org_id,omitempty"`
	// Additional fields that can be controlled via field masks
	CreatedAt     int64  `protobuf:"varint,5,opt,name=created_at,json=createdAt,proto3" json:"created_at,omitempty"` // Unix timestamp when secret was created
	UpdatedAt     int64  `protobuf:"varint,6,opt,name=updated_at,json=updatedAt,proto3" json:"updated_at,omitempty"` // Unix timestamp when secret was last updated
	CreatedBy     string `protobuf:"bytes,7,opt,name=created_by,json=createdBy,proto3" json:"created_by,omitempty"`  // User ID who created the secret
	Description   string `protobuf:"bytes,8,opt,name=description,proto3" json:"description,omitempty"`               // Optional description of the secret
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *Secret) Reset() {
	*x = Secret{}
	mi := &file_avs_proto_msgTypes[48]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *Secret) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*Secret) ProtoMessage() {}

func (x *Secret) ProtoReflect() protoreflect.Message {
	mi := &file_avs_proto_msgTypes[48]
	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 Secret.ProtoReflect.Descriptor instead.
func (*Secret) Descriptor() ([]byte, []int) {
	return file_avs_proto_rawDescGZIP(), []int{48}
}

func (x *Secret) GetName() string {
	if x != nil {
		return x.Name
	}
	return ""
}

func (x *Secret) GetScope() string {
	if x != nil {
		return x.Scope
	}
	return ""
}

func (x *Secret) GetWorkflowId() string {
	if x != nil {
		return x.WorkflowId
	}
	return ""
}

func (x *Secret) GetOrgId() string {
	if x != nil {
		return x.OrgId
	}
	return ""
}

func (x *Secret) GetCreatedAt() int64 {
	if x != nil {
		return x.CreatedAt
	}
	return 0
}

func (x *Secret) GetUpdatedAt() int64 {
	if x != nil {
		return x.UpdatedAt
	}
	return 0
}

func (x *Secret) GetCreatedBy() string {
	if x != nil {
		return x.CreatedBy
	}
	return ""
}

func (x *Secret) GetDescription() string {
	if x != nil {
		return x.Description
	}
	return ""
}

type ListSecretsResp struct {
	state         protoimpl.MessageState `protogen:"open.v1"`
	Items         []*Secret              `protobuf:"bytes,1,rep,name=items,proto3" json:"items,omitempty"`
	PageInfo      *PageInfo              `protobuf:"bytes,2,opt,name=page_info,json=pageInfo,proto3" json:"page_info,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *ListSecretsResp) Reset() {
	*x = ListSecretsResp{}
	mi := &file_avs_proto_msgTypes[49]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *ListSecretsResp) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*ListSecretsResp) ProtoMessage() {}

func (x *ListSecretsResp) ProtoReflect() protoreflect.Message {
	mi := &file_avs_proto_msgTypes[49]
	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 ListSecretsResp.ProtoReflect.Descriptor instead.
func (*ListSecretsResp) Descriptor() ([]byte, []int) {
	return file_avs_proto_rawDescGZIP(), []int{49}
}

func (x *ListSecretsResp) GetItems() []*Secret {
	if x != nil {
		return x.Items
	}
	return nil
}

func (x *ListSecretsResp) GetPageInfo() *PageInfo {
	if x != nil {
		return x.PageInfo
	}
	return nil
}

type DeleteSecretReq struct {
	state protoimpl.MessageState `protogen:"open.v1"`
	Name  string                 `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"`
	// Delete the secret belong to the specific workflow. Without its, we delete the one belong to user
	WorkflowId string `protobuf:"bytes,2,opt,name=workflow_id,json=workflowId,proto3" json:"workflow_id,omitempty"`
	// Delete the secret belong to the specific prg. Without its, we delete the one belong to user
	OrgId         string `protobuf:"bytes,3,opt,name=org_id,json=orgId,proto3" json:"org_id,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *DeleteSecretReq) Reset() {
	*x = DeleteSecretReq{}
	mi := &file_avs_proto_msgTypes[50]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *DeleteSecretReq) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*DeleteSecretReq) ProtoMessage() {}

func (x *DeleteSecretReq) ProtoReflect() protoreflect.Message {
	mi := &file_avs_proto_msgTypes[50]
	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 DeleteSecretReq.ProtoReflect.Descriptor instead.
func (*DeleteSecretReq) Descriptor() ([]byte, []int) {
	return file_avs_proto_rawDescGZIP(), []int{50}
}

func (x *DeleteSecretReq) GetName() string {
	if x != nil {
		return x.Name
	}
	return ""
}

func (x *DeleteSecretReq) GetWorkflowId() string {
	if x != nil {
		return x.WorkflowId
	}
	return ""
}

func (x *DeleteSecretReq) GetOrgId() string {
	if x != nil {
		return x.OrgId
	}
	return ""
}

// Response message for DeleteSecret operation
type DeleteSecretResp struct {
	state         protoimpl.MessageState `protogen:"open.v1"`
	Success       bool                   `protobuf:"varint,1,opt,name=success,proto3" json:"success,omitempty"`                        // Whether the operation completed successfully
	Status        string                 `protobuf:"bytes,2,opt,name=status,proto3" json:"status,omitempty"`                           // Status description: "deleted", "not_found", "already_deleted"
	Message       string                 `protobuf:"bytes,3,opt,name=message,proto3" json:"message,omitempty"`                         // Human-readable message about what happened
	DeletedAt     int64                  `protobuf:"varint,4,opt,name=deleted_at,json=deletedAt,proto3" json:"deleted_at,omitempty"`   // Unix timestamp when the secret was deleted (if applicable)
	SecretName    string                 `protobuf:"bytes,5,opt,name=secret_name,json=secretName,proto3" json:"secret_name,omitempty"` // Name of the secret that was affected
	Scope         string                 `protobuf:"bytes,6,opt,name=scope,proto3" json:"scope,omitempty"`                             // Scope of the deleted secret: "user", "workflow", "org"
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *DeleteSecretResp) Reset() {
	*x = DeleteSecretResp{}
	mi := &file_avs_proto_msgTypes[51]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *DeleteSecretResp) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*DeleteSecretResp) ProtoMessage() {}

func (x *DeleteSecretResp) ProtoReflect() protoreflect.Message {
	mi := &file_avs_proto_msgTypes[51]
	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 DeleteSecretResp.ProtoReflect.Descriptor instead.
func (*DeleteSecretResp) Descriptor() ([]byte, []int) {
	return file_avs_proto_rawDescGZIP(), []int{51}
}

func (x *DeleteSecretResp) GetSuccess() bool {
	if x != nil {
		return x.Success
	}
	return false
}

func (x *DeleteSecretResp) GetStatus() string {
	if x != nil {
		return x.Status
	}
	return ""
}

func (x *DeleteSecretResp) GetMessage() string {
	if x != nil {
		return x.Message
	}
	return ""
}

func (x *DeleteSecretResp) GetDeletedAt() int64 {
	if x != nil {
		return x.DeletedAt
	}
	return 0
}

func (x *DeleteSecretResp) GetSecretName() string {
	if x != nil {
		return x.SecretName
	}
	return ""
}

func (x *DeleteSecretResp) GetScope() string {
	if x != nil {
		return x.Scope
	}
	return ""
}

type GetSignatureFormatReq struct {
	state protoimpl.MessageState `protogen:"open.v1"`
	// The wallet address to include in the signature format
	Wallet        string `protobuf:"bytes,1,opt,name=wallet,proto3" json:"wallet,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *GetSignatureFormatReq) Reset() {
	*x = GetSignatureFormatReq{}
	mi := &file_avs_proto_msgTypes[52]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *GetSignatureFormatReq) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*GetSignatureFormatReq) ProtoMessage() {}

func (x *GetSignatureFormatReq) ProtoReflect() protoreflect.Message {
	mi := &file_avs_proto_msgTypes[52]
	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 GetSignatureFormatReq.ProtoReflect.Descriptor instead.
func (*GetSignatureFormatReq) Descriptor() ([]byte, []int) {
	return file_avs_proto_rawDescGZIP(), []int{52}
}

func (x *GetSignatureFormatReq) GetWallet() string {
	if x != nil {
		return x.Wallet
	}
	return ""
}

type GetSignatureFormatResp struct {
	state protoimpl.MessageState `protogen:"open.v1"`
	// The formatted signature message with server-side values filled in
	Message       string `protobuf:"bytes,1,opt,name=message,proto3" json:"message,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *GetSignatureFormatResp) Reset() {
	*x = GetSignatureFormatResp{}
	mi := &file_avs_proto_msgTypes[53]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *GetSignatureFormatResp) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*GetSignatureFormatResp) ProtoMessage() {}

func (x *GetSignatureFormatResp) ProtoReflect() protoreflect.Message {
	mi := &file_avs_proto_msgTypes[53]
	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 GetSignatureFormatResp.ProtoReflect.Descriptor instead.
func (*GetSignatureFormatResp) Descriptor() ([]byte, []int) {
	return file_avs_proto_rawDescGZIP(), []int{53}
}

func (x *GetSignatureFormatResp) GetMessage() string {
	if x != nil {
		return x.Message
	}
	return ""
}

// Response message for CreateSecret operation
type CreateSecretResp struct {
	state         protoimpl.MessageState `protogen:"open.v1"`
	Success       bool                   `protobuf:"varint,1,opt,name=success,proto3" json:"success,omitempty"`                        // Whether the operation completed successfully
	Status        string                 `protobuf:"bytes,2,opt,name=status,proto3" json:"status,omitempty"`                           // Status description: "created", "already_exists", "error"
	Message       string                 `protobuf:"bytes,3,opt,name=message,proto3" json:"message,omitempty"`                         // Human-readable message about what happened
	CreatedAt     int64                  `protobuf:"varint,4,opt,name=created_at,json=createdAt,proto3" json:"created_at,omitempty"`   // Unix timestamp when the secret was created (if applicable)
	SecretName    string                 `protobuf:"bytes,5,opt,name=secret_name,json=secretName,proto3" json:"secret_name,omitempty"` // Name of the secret that was affected
	Scope         string                 `protobuf:"bytes,6,opt,name=scope,proto3" json:"scope,omitempty"`                             // Scope of the created secret: "user", "workflow", "org"
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *CreateSecretResp) Reset() {
	*x = CreateSecretResp{}
	mi := &file_avs_proto_msgTypes[54]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *CreateSecretResp) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*CreateSecretResp) ProtoMessage() {}

func (x *CreateSecretResp) ProtoReflect() protoreflect.Message {
	mi := &file_avs_proto_msgTypes[54]
	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 CreateSecretResp.ProtoReflect.Descriptor instead.
func (*CreateSecretResp) Descriptor() ([]byte, []int) {
	return file_avs_proto_rawDescGZIP(), []int{54}
}

func (x *CreateSecretResp) GetSuccess() bool {
	if x != nil {
		return x.Success
	}
	return false
}

func (x *CreateSecretResp) GetStatus() string {
	if x != nil {
		return x.Status
	}
	return ""
}

func (x *CreateSecretResp) GetMessage() string {
	if x != nil {
		return x.Message
	}
	return ""
}

func (x *CreateSecretResp) GetCreatedAt() int64 {
	if x != nil {
		return x.CreatedAt
	}
	return 0
}

func (x *CreateSecretResp) GetSecretName() string {
	if x != nil {
		return x.SecretName
	}
	return ""
}

func (x *CreateSecretResp) GetScope() string {
	if x != nil {
		return x.Scope
	}
	return ""
}

// Response message for UpdateSecret operation
type UpdateSecretResp struct {
	state         protoimpl.MessageState `protogen:"open.v1"`
	Success       bool                   `protobuf:"varint,1,opt,name=success,proto3" json:"success,omitempty"`                        // Whether the operation completed successfully
	Status        string                 `protobuf:"bytes,2,opt,name=status,proto3" json:"status,omitempty"`                           // Status description: "updated", "not_found", "error"
	Message       string                 `protobuf:"bytes,3,opt,name=message,proto3" json:"message,omitempty"`                         // Human-readable message about what happened
	UpdatedAt     int64                  `protobuf:"varint,4,opt,name=updated_at,json=updatedAt,proto3" json:"updated_at,omitempty"`   // Unix timestamp when the secret was updated (if applicable)
	SecretName    string                 `protobuf:"bytes,5,opt,name=secret_name,json=secretName,proto3" json:"secret_name,omitempty"` // Name of the secret that was affected
	Scope         string                 `protobuf:"bytes,6,opt,name=scope,proto3" json:"scope,omitempty"`                             // Scope of the updated secret: "user", "workflow", "org"
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *UpdateSecretResp) Reset() {
	*x = UpdateSecretResp{}
	mi := &file_avs_proto_msgTypes[55]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *UpdateSecretResp) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*UpdateSecretResp) ProtoMessage() {}

func (x *UpdateSecretResp) ProtoReflect() protoreflect.Message {
	mi := &file_avs_proto_msgTypes[55]
	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 UpdateSecretResp.ProtoReflect.Descriptor instead.
func (*UpdateSecretResp) Descriptor() ([]byte, []int) {
	return file_avs_proto_rawDescGZIP(), []int{55}
}

func (x *UpdateSecretResp) GetSuccess() bool {
	if x != nil {
		return x.Success
	}
	return false
}

func (x *UpdateSecretResp) GetStatus() string {
	if x != nil {
		return x.Status
	}
	return ""
}

func (x *UpdateSecretResp) GetMessage() string {
	if x != nil {
		return x.Message
	}
	return ""
}

func (x *UpdateSecretResp) GetUpdatedAt() int64 {
	if x != nil {
		return x.UpdatedAt
	}
	return 0
}

func (x *UpdateSecretResp) GetSecretName() string {
	if x != nil {
		return x.SecretName
	}
	return ""
}

func (x *UpdateSecretResp) GetScope() string {
	if x != nil {
		return x.Scope
	}
	return ""
}

// Response message for DeleteTask operation
type DeleteTaskResp struct {
	state          protoimpl.MessageState `protogen:"open.v1"`
	Success        bool                   `protobuf:"varint,1,opt,name=success,proto3" json:"success,omitempty"`                                    // Whether the operation completed successfully
	Status         string                 `protobuf:"bytes,2,opt,name=status,proto3" json:"status,omitempty"`                                       // Status description: "deleted", "not_found", "cannot_delete"
	Message        string                 `protobuf:"bytes,3,opt,name=message,proto3" json:"message,omitempty"`                                     // Human-readable message about what happened
	DeletedAt      int64                  `protobuf:"varint,4,opt,name=deleted_at,json=deletedAt,proto3" json:"deleted_at,omitempty"`               // Unix timestamp when the task was deleted (if applicable)
	Id             string                 `protobuf:"bytes,5,opt,name=id,proto3" json:"id,omitempty"`                                               // ID of the task that was affected
	PreviousStatus string                 `protobuf:"bytes,6,opt,name=previous_status,json=previousStatus,proto3" json:"previous_status,omitempty"` // Previous status of the task before deletion
	unknownFields  protoimpl.UnknownFields
	sizeCache      protoimpl.SizeCache
}

func (x *DeleteTaskResp) Reset() {
	*x = DeleteTaskResp{}
	mi := &file_avs_proto_msgTypes[56]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *DeleteTaskResp) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*DeleteTaskResp) ProtoMessage() {}

func (x *DeleteTaskResp) ProtoReflect() protoreflect.Message {
	mi := &file_avs_proto_msgTypes[56]
	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 DeleteTaskResp.ProtoReflect.Descriptor instead.
func (*DeleteTaskResp) Descriptor() ([]byte, []int) {
	return file_avs_proto_rawDescGZIP(), []int{56}
}

func (x *DeleteTaskResp) GetSuccess() bool {
	if x != nil {
		return x.Success
	}
	return false
}

func (x *DeleteTaskResp) GetStatus() string {
	if x != nil {
		return x.Status
	}
	return ""
}

func (x *DeleteTaskResp) GetMessage() string {
	if x != nil {
		return x.Message
	}
	return ""
}

func (x *DeleteTaskResp) GetDeletedAt() int64 {
	if x != nil {
		return x.DeletedAt
	}
	return 0
}

func (x *DeleteTaskResp) GetId() string {
	if x != nil {
		return x.Id
	}
	return ""
}

func (x *DeleteTaskResp) GetPreviousStatus() string {
	if x != nil {
		return x.PreviousStatus
	}
	return ""
}

// Response message for CancelTask operation
type CancelTaskResp struct {
	state          protoimpl.MessageState `protogen:"open.v1"`
	Success        bool                   `protobuf:"varint,1,opt,name=success,proto3" json:"success,omitempty"`                                    // Whether the operation completed successfully
	Status         string                 `protobuf:"bytes,2,opt,name=status,proto3" json:"status,omitempty"`                                       // Status description: "cancelled", "not_found", "already_cancelled", "cannot_cancel"
	Message        string                 `protobuf:"bytes,3,opt,name=message,proto3" json:"message,omitempty"`                                     // Human-readable message about what happened
	CancelledAt    int64                  `protobuf:"varint,4,opt,name=cancelled_at,json=cancelledAt,proto3" json:"cancelled_at,omitempty"`         // Unix timestamp when the task was cancelled (if applicable)
	Id             string                 `protobuf:"bytes,5,opt,name=id,proto3" json:"id,omitempty"`                                               // ID of the task that was affected
	PreviousStatus string                 `protobuf:"bytes,6,opt,name=previous_status,json=previousStatus,proto3" json:"previous_status,omitempty"` // Previous status of the task before cancellation
	unknownFields  protoimpl.UnknownFields
	sizeCache      protoimpl.SizeCache
}

func (x *CancelTaskResp) Reset() {
	*x = CancelTaskResp{}
	mi := &file_avs_proto_msgTypes[57]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *CancelTaskResp) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*CancelTaskResp) ProtoMessage() {}

func (x *CancelTaskResp) ProtoReflect() protoreflect.Message {
	mi := &file_avs_proto_msgTypes[57]
	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 CancelTaskResp.ProtoReflect.Descriptor instead.
func (*CancelTaskResp) Descriptor() ([]byte, []int) {
	return file_avs_proto_rawDescGZIP(), []int{57}
}

func (x *CancelTaskResp) GetSuccess() bool {
	if x != nil {
		return x.Success
	}
	return false
}

func (x *CancelTaskResp) GetStatus() string {
	if x != nil {
		return x.Status
	}
	return ""
}

func (x *CancelTaskResp) GetMessage() string {
	if x != nil {
		return x.Message
	}
	return ""
}

func (x *CancelTaskResp) GetCancelledAt() int64 {
	if x != nil {
		return x.CancelledAt
	}
	return 0
}

func (x *CancelTaskResp) GetId() string {
	if x != nil {
		return x.Id
	}
	return ""
}

func (x *CancelTaskResp) GetPreviousStatus() string {
	if x != nil {
		return x.PreviousStatus
	}
	return ""
}

// Request message for GetWorkflowCount
type GetWorkflowCountReq struct {
	state         protoimpl.MessageState `protogen:"open.v1"`
	Addresses     []string               `protobuf:"bytes,1,rep,name=addresses,proto3" json:"addresses,omitempty"` // Optional array of smart wallet addresses
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *GetWorkflowCountReq) Reset() {
	*x = GetWorkflowCountReq{}
	mi := &file_avs_proto_msgTypes[58]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *GetWorkflowCountReq) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*GetWorkflowCountReq) ProtoMessage() {}

func (x *GetWorkflowCountReq) ProtoReflect() protoreflect.Message {
	mi := &file_avs_proto_msgTypes[58]
	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 GetWorkflowCountReq.ProtoReflect.Descriptor instead.
func (*GetWorkflowCountReq) Descriptor() ([]byte, []int) {
	return file_avs_proto_rawDescGZIP(), []int{58}
}

func (x *GetWorkflowCountReq) GetAddresses() []string {
	if x != nil {
		return x.Addresses
	}
	return nil
}

// Response message for GetWorkflowCount
type GetWorkflowCountResp struct {
	state protoimpl.MessageState `protogen:"open.v1"`
	// TODO: eventually to support active, cancel and other metrics
	Total         int64 `protobuf:"varint,1,opt,name=total,proto3" json:"total,omitempty"` // the total count of workflow
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *GetWorkflowCountResp) Reset() {
	*x = GetWorkflowCountResp{}
	mi := &file_avs_proto_msgTypes[59]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *GetWorkflowCountResp) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*GetWorkflowCountResp) ProtoMessage() {}

func (x *GetWorkflowCountResp) ProtoReflect() protoreflect.Message {
	mi := &file_avs_proto_msgTypes[59]
	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 GetWorkflowCountResp.ProtoReflect.Descriptor instead.
func (*GetWorkflowCountResp) Descriptor() ([]byte, []int) {
	return file_avs_proto_rawDescGZIP(), []int{59}
}

func (x *GetWorkflowCountResp) GetTotal() int64 {
	if x != nil {
		return x.Total
	}
	return 0
}

type GetExecutionCountReq struct {
	state         protoimpl.MessageState `protogen:"open.v1"`
	WorkflowIds   []string               `protobuf:"bytes,1,rep,name=workflow_ids,json=workflowIds,proto3" json:"workflow_ids,omitempty"` // Optional array of workflow IDs, count all executions of the owner if not provided
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *GetExecutionCountReq) Reset() {
	*x = GetExecutionCountReq{}
	mi := &file_avs_proto_msgTypes[60]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *GetExecutionCountReq) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*GetExecutionCountReq) ProtoMessage() {}

func (x *GetExecutionCountReq) ProtoReflect() protoreflect.Message {
	mi := &file_avs_proto_msgTypes[60]
	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 GetExecutionCountReq.ProtoReflect.Descriptor instead.
func (*GetExecutionCountReq) Descriptor() ([]byte, []int) {
	return file_avs_proto_rawDescGZIP(), []int{60}
}

func (x *GetExecutionCountReq) GetWorkflowIds() []string {
	if x != nil {
		return x.WorkflowIds
	}
	return nil
}

// Response message for GetExecutionCount
type GetExecutionCountResp struct {
	state protoimpl.MessageState `protogen:"open.v1"`
	// TODO: eventually to support success, error count execution
	Total         int64 `protobuf:"varint,1,opt,name=total,proto3" json:"total,omitempty"` // The total count of executions
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *GetExecutionCountResp) Reset() {
	*x = GetExecutionCountResp{}
	mi := &file_avs_proto_msgTypes[61]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *GetExecutionCountResp) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*GetExecutionCountResp) ProtoMessage() {}

func (x *GetExecutionCountResp) ProtoReflect() protoreflect.Message {
	mi := &file_avs_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 GetExecutionCountResp.ProtoReflect.Descriptor instead.
func (*GetExecutionCountResp) Descriptor() ([]byte, []int) {
	return file_avs_proto_rawDescGZIP(), []int{61}
}

func (x *GetExecutionCountResp) GetTotal() int64 {
	if x != nil {
		return x.Total
	}
	return 0
}

// Request message for GetExecutionStats
type GetExecutionStatsReq struct {
	state         protoimpl.MessageState `protogen:"open.v1"`
	WorkflowIds   []string               `protobuf:"bytes,1,rep,name=workflow_ids,json=workflowIds,proto3" json:"workflow_ids,omitempty"` // Optional array of workflow IDs
	Days          int64                  `protobuf:"varint,2,opt,name=days,proto3" json:"days,omitempty"`                                 // Number of days to look back (default: 7)
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *GetExecutionStatsReq) Reset() {
	*x = GetExecutionStatsReq{}
	mi := &file_avs_proto_msgTypes[62]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *GetExecutionStatsReq) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*GetExecutionStatsReq) ProtoMessage() {}

func (x *GetExecutionStatsReq) ProtoReflect() protoreflect.Message {
	mi := &file_avs_proto_msgTypes[62]
	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 GetExecutionStatsReq.ProtoReflect.Descriptor instead.
func (*GetExecutionStatsReq) Descriptor() ([]byte, []int) {
	return file_avs_proto_rawDescGZIP(), []int{62}
}

func (x *GetExecutionStatsReq) GetWorkflowIds() []string {
	if x != nil {
		return x.WorkflowIds
	}
	return nil
}

func (x *GetExecutionStatsReq) GetDays() int64 {
	if x != nil {
		return x.Days
	}
	return 0
}

// Response message for GetExecutionStats
type GetExecutionStatsResp struct {
	state            protoimpl.MessageState `protogen:"open.v1"`
	Total            int64                  `protobuf:"varint,1,opt,name=total,proto3" json:"total,omitempty"`                                                  // Total number of executions
	Succeeded        int64                  `protobuf:"varint,2,opt,name=succeeded,proto3" json:"succeeded,omitempty"`                                          // Number of successful executions
	Failed           int64                  `protobuf:"varint,3,opt,name=failed,proto3" json:"failed,omitempty"`                                                // Number of failed executions
	AvgExecutionTime float64                `protobuf:"fixed64,4,opt,name=avg_execution_time,json=avgExecutionTime,proto3" json:"avg_execution_time,omitempty"` // Average execution time in milliseconds
	unknownFields    protoimpl.UnknownFields
	sizeCache        protoimpl.SizeCache
}

func (x *GetExecutionStatsResp) Reset() {
	*x = GetExecutionStatsResp{}
	mi := &file_avs_proto_msgTypes[63]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *GetExecutionStatsResp) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*GetExecutionStatsResp) ProtoMessage() {}

func (x *GetExecutionStatsResp) ProtoReflect() protoreflect.Message {
	mi := &file_avs_proto_msgTypes[63]
	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 GetExecutionStatsResp.ProtoReflect.Descriptor instead.
func (*GetExecutionStatsResp) Descriptor() ([]byte, []int) {
	return file_avs_proto_rawDescGZIP(), []int{63}
}

func (x *GetExecutionStatsResp) GetTotal() int64 {
	if x != nil {
		return x.Total
	}
	return 0
}

func (x *GetExecutionStatsResp) GetSucceeded() int64 {
	if x != nil {
		return x.Succeeded
	}
	return 0
}

func (x *GetExecutionStatsResp) GetFailed() int64 {
	if x != nil {
		return x.Failed
	}
	return 0
}

func (x *GetExecutionStatsResp) GetAvgExecutionTime() float64 {
	if x != nil {
		return x.AvgExecutionTime
	}
	return 0
}

// Request message for RunNodeWithInputs
type RunNodeWithInputsReq struct {
	state          protoimpl.MessageState     `protogen:"open.v1"`
	NodeType       NodeType                   `protobuf:"varint,1,opt,name=node_type,json=nodeType,proto3,enum=aggregator.NodeType" json:"node_type,omitempty"`                                                                   // Type of node to execute using the NodeType enum
	NodeConfig     map[string]*structpb.Value `protobuf:"bytes,2,rep,name=node_config,json=nodeConfig,proto3" json:"node_config,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"`             // Configuration for the node
	InputVariables map[string]*structpb.Value `protobuf:"bytes,3,rep,name=input_variables,json=inputVariables,proto3" json:"input_variables,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"` // Input variables for the node
	unknownFields  protoimpl.UnknownFields
	sizeCache      protoimpl.SizeCache
}

func (x *RunNodeWithInputsReq) Reset() {
	*x = RunNodeWithInputsReq{}
	mi := &file_avs_proto_msgTypes[64]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *RunNodeWithInputsReq) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*RunNodeWithInputsReq) ProtoMessage() {}

func (x *RunNodeWithInputsReq) ProtoReflect() protoreflect.Message {
	mi := &file_avs_proto_msgTypes[64]
	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 RunNodeWithInputsReq.ProtoReflect.Descriptor instead.
func (*RunNodeWithInputsReq) Descriptor() ([]byte, []int) {
	return file_avs_proto_rawDescGZIP(), []int{64}
}

func (x *RunNodeWithInputsReq) GetNodeType() NodeType {
	if x != nil {
		return x.NodeType
	}
	return NodeType_NODE_TYPE_UNSPECIFIED
}

func (x *RunNodeWithInputsReq) GetNodeConfig() map[string]*structpb.Value {
	if x != nil {
		return x.NodeConfig
	}
	return nil
}

func (x *RunNodeWithInputsReq) GetInputVariables() map[string]*structpb.Value {
	if x != nil {
		return x.InputVariables
	}
	return nil
}

// Response message for RunNodeWithInputs
type RunNodeWithInputsResp struct {
	state   protoimpl.MessageState `protogen:"open.v1"`
	Success bool                   `protobuf:"varint,1,opt,name=success,proto3" json:"success,omitempty"` // Whether the execution was successful
	Error   string                 `protobuf:"bytes,3,opt,name=error,proto3" json:"error,omitempty"`      // Error message if execution failed
	// Field 4 (node_id) was removed in Aug 2025 - do not reuse this field number
	Metadata *structpb.Value `protobuf:"bytes,5,opt,name=metadata,proto3" json:"metadata,omitempty"` // Optional structured metadata for testing/debugging
	// Optional execution context for runtime flags and extra info (e.g., is_simulated)
	ExecutionContext *structpb.Value `protobuf:"bytes,6,opt,name=execution_context,json=executionContext,proto3" json:"execution_context,omitempty"`
	ErrorCode        ErrorCode       `protobuf:"varint,7,opt,name=error_code,json=errorCode,proto3,enum=aggregator.ErrorCode" json:"error_code,omitempty"` // Structured error code for better client-side error handling
	// Use specific output types for nodes only
	//
	// Types that are valid to be assigned to OutputData:
	//
	//	*RunNodeWithInputsResp_EthTransfer
	//	*RunNodeWithInputsResp_Graphql
	//	*RunNodeWithInputsResp_ContractRead
	//	*RunNodeWithInputsResp_ContractWrite
	//	*RunNodeWithInputsResp_CustomCode
	//	*RunNodeWithInputsResp_RestApi
	//	*RunNodeWithInputsResp_Branch
	//	*RunNodeWithInputsResp_Filter
	//	*RunNodeWithInputsResp_Loop
	OutputData    isRunNodeWithInputsResp_OutputData `protobuf_oneof:"output_data"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *RunNodeWithInputsResp) Reset() {
	*x = RunNodeWithInputsResp{}
	mi := &file_avs_proto_msgTypes[65]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *RunNodeWithInputsResp) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*RunNodeWithInputsResp) ProtoMessage() {}

func (x *RunNodeWithInputsResp) ProtoReflect() protoreflect.Message {
	mi := &file_avs_proto_msgTypes[65]
	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 RunNodeWithInputsResp.ProtoReflect.Descriptor instead.
func (*RunNodeWithInputsResp) Descriptor() ([]byte, []int) {
	return file_avs_proto_rawDescGZIP(), []int{65}
}

func (x *RunNodeWithInputsResp) GetSuccess() bool {
	if x != nil {
		return x.Success
	}
	return false
}

func (x *RunNodeWithInputsResp) GetError() string {
	if x != nil {
		return x.Error
	}
	return ""
}

func (x *RunNodeWithInputsResp) GetMetadata() *structpb.Value {
	if x != nil {
		return x.Metadata
	}
	return nil
}

func (x *RunNodeWithInputsResp) GetExecutionContext() *structpb.Value {
	if x != nil {
		return x.ExecutionContext
	}
	return nil
}

func (x *RunNodeWithInputsResp) GetErrorCode() ErrorCode {
	if x != nil {
		return x.ErrorCode
	}
	return ErrorCode_ERROR_CODE_UNSPECIFIED
}

func (x *RunNodeWithInputsResp) GetOutputData() isRunNodeWithInputsResp_OutputData {
	if x != nil {
		return x.OutputData
	}
	return nil
}

func (x *RunNodeWithInputsResp) GetEthTransfer() *ETHTransferNode_Output {
	if x != nil {
		if x, ok := x.OutputData.(*RunNodeWithInputsResp_EthTransfer); ok {
			return x.EthTransfer
		}
	}
	return nil
}

func (x *RunNodeWithInputsResp) GetGraphql() *GraphQLQueryNode_Output {
	if x != nil {
		if x, ok := x.OutputData.(*RunNodeWithInputsResp_Graphql); ok {
			return x.Graphql
		}
	}
	return nil
}

func (x *RunNodeWithInputsResp) GetContractRead() *ContractReadNode_Output {
	if x != nil {
		if x, ok := x.OutputData.(*RunNodeWithInputsResp_ContractRead); ok {
			return x.ContractRead
		}
	}
	return nil
}

func (x *RunNodeWithInputsResp) GetContractWrite() *ContractWriteNode_Output {
	if x != nil {
		if x, ok := x.OutputData.(*RunNodeWithInputsResp_ContractWrite); ok {
			return x.ContractWrite
		}
	}
	return nil
}

func (x *RunNodeWithInputsResp) GetCustomCode() *CustomCodeNode_Output {
	if x != nil {
		if x, ok := x.OutputData.(*RunNodeWithInputsResp_CustomCode); ok {
			return x.CustomCode
		}
	}
	return nil
}

func (x *RunNodeWithInputsResp) GetRestApi() *RestAPINode_Output {
	if x != nil {
		if x, ok := x.OutputData.(*RunNodeWithInputsResp_RestApi); ok {
			return x.RestApi
		}
	}
	return nil
}

func (x *RunNodeWithInputsResp) GetBranch() *BranchNode_Output {
	if x != nil {
		if x, ok := x.OutputData.(*RunNodeWithInputsResp_Branch); ok {
			return x.Branch
		}
	}
	return nil
}

func (x *RunNodeWithInputsResp) GetFilter() *FilterNode_Output {
	if x != nil {
		if x, ok := x.OutputData.(*RunNodeWithInputsResp_Filter); ok {
			return x.Filter
		}
	}
	return nil
}

func (x *RunNodeWithInputsResp) GetLoop() *LoopNode_Output {
	if x != nil {
		if x, ok := x.OutputData.(*RunNodeWithInputsResp_Loop); ok {
			return x.Loop
		}
	}
	return nil
}

type isRunNodeWithInputsResp_OutputData interface {
	isRunNodeWithInputsResp_OutputData()
}

type RunNodeWithInputsResp_EthTransfer struct {
	// Node outputs
	EthTransfer *ETHTransferNode_Output `protobuf:"bytes,10,opt,name=eth_transfer,json=ethTransfer,proto3,oneof"`
}

type RunNodeWithInputsResp_Graphql struct {
	Graphql *GraphQLQueryNode_Output `protobuf:"bytes,11,opt,name=graphql,proto3,oneof"`
}

type RunNodeWithInputsResp_ContractRead struct {
	ContractRead *ContractReadNode_Output `protobuf:"bytes,12,opt,name=contract_read,json=contractRead,proto3,oneof"`
}

type RunNodeWithInputsResp_ContractWrite struct {
	ContractWrite *ContractWriteNode_Output `protobuf:"bytes,13,opt,name=contract_write,json=contractWrite,proto3,oneof"`
}

type RunNodeWithInputsResp_CustomCode struct {
	CustomCode *CustomCodeNode_Output `protobuf:"bytes,14,opt,name=custom_code,json=customCode,proto3,oneof"`
}

type RunNodeWithInputsResp_RestApi struct {
	RestApi *RestAPINode_Output `protobuf:"bytes,15,opt,name=rest_api,json=restApi,proto3,oneof"`
}

type RunNodeWithInputsResp_Branch struct {
	Branch *BranchNode_Output `protobuf:"bytes,16,opt,name=branch,proto3,oneof"`
}

type RunNodeWithInputsResp_Filter struct {
	Filter *FilterNode_Output `protobuf:"bytes,17,opt,name=filter,proto3,oneof"`
}

type RunNodeWithInputsResp_Loop struct {
	Loop *LoopNode_Output `protobuf:"bytes,18,opt,name=loop,proto3,oneof"`
}

func (*RunNodeWithInputsResp_EthTransfer) isRunNodeWithInputsResp_OutputData() {}

func (*RunNodeWithInputsResp_Graphql) isRunNodeWithInputsResp_OutputData() {}

func (*RunNodeWithInputsResp_ContractRead) isRunNodeWithInputsResp_OutputData() {}

func (*RunNodeWithInputsResp_ContractWrite) isRunNodeWithInputsResp_OutputData() {}

func (*RunNodeWithInputsResp_CustomCode) isRunNodeWithInputsResp_OutputData() {}

func (*RunNodeWithInputsResp_RestApi) isRunNodeWithInputsResp_OutputData() {}

func (*RunNodeWithInputsResp_Branch) isRunNodeWithInputsResp_OutputData() {}

func (*RunNodeWithInputsResp_Filter) isRunNodeWithInputsResp_OutputData() {}

func (*RunNodeWithInputsResp_Loop) isRunNodeWithInputsResp_OutputData() {}

// Request message for RunTrigger
type RunTriggerReq struct {
	state         protoimpl.MessageState     `protogen:"open.v1"`
	TriggerType   TriggerType                `protobuf:"varint,1,opt,name=trigger_type,json=triggerType,proto3,enum=aggregator.TriggerType" json:"trigger_type,omitempty"`                                                    // Type of trigger to execute using the TriggerType enum
	TriggerConfig map[string]*structpb.Value `protobuf:"bytes,2,rep,name=trigger_config,json=triggerConfig,proto3" json:"trigger_config,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"` // Configuration for the trigger
	TriggerInput  map[string]*structpb.Value `protobuf:"bytes,3,rep,name=trigger_input,json=triggerInput,proto3" json:"trigger_input,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"`    // Input data for the trigger
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *RunTriggerReq) Reset() {
	*x = RunTriggerReq{}
	mi := &file_avs_proto_msgTypes[66]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *RunTriggerReq) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*RunTriggerReq) ProtoMessage() {}

func (x *RunTriggerReq) ProtoReflect() protoreflect.Message {
	mi := &file_avs_proto_msgTypes[66]
	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 RunTriggerReq.ProtoReflect.Descriptor instead.
func (*RunTriggerReq) Descriptor() ([]byte, []int) {
	return file_avs_proto_rawDescGZIP(), []int{66}
}

func (x *RunTriggerReq) GetTriggerType() TriggerType {
	if x != nil {
		return x.TriggerType
	}
	return TriggerType_TRIGGER_TYPE_UNSPECIFIED
}

func (x *RunTriggerReq) GetTriggerConfig() map[string]*structpb.Value {
	if x != nil {
		return x.TriggerConfig
	}
	return nil
}

func (x *RunTriggerReq) GetTriggerInput() map[string]*structpb.Value {
	if x != nil {
		return x.TriggerInput
	}
	return nil
}

// Response message for RunTrigger
type RunTriggerResp struct {
	state   protoimpl.MessageState `protogen:"open.v1"`
	Success bool                   `protobuf:"varint,1,opt,name=success,proto3" json:"success,omitempty"` // Whether the execution was successful
	Error   string                 `protobuf:"bytes,2,opt,name=error,proto3" json:"error,omitempty"`      // Error message if execution failed
	// Field 3 (trigger_id) was removed in Aug 2025 - do not reuse this field number
	Metadata *structpb.Value `protobuf:"bytes,4,opt,name=metadata,proto3" json:"metadata,omitempty"` // Optional structured metadata for testing/debugging
	// Optional execution context for runtime flags and extra info (e.g., is_simulated)
	ExecutionContext *structpb.Value `protobuf:"bytes,5,opt,name=execution_context,json=executionContext,proto3" json:"execution_context,omitempty"`
	ErrorCode        ErrorCode       `protobuf:"varint,6,opt,name=error_code,json=errorCode,proto3,enum=aggregator.ErrorCode" json:"error_code,omitempty"` // Structured error code for better client-side error handling
	// Use specific output types for triggers
	//
	// Types that are valid to be assigned to OutputData:
	//
	//	*RunTriggerResp_BlockTrigger
	//	*RunTriggerResp_FixedTimeTrigger
	//	*RunTriggerResp_CronTrigger
	//	*RunTriggerResp_EventTrigger
	//	*RunTriggerResp_ManualTrigger
	OutputData    isRunTriggerResp_OutputData `protobuf_oneof:"output_data"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *RunTriggerResp) Reset() {
	*x = RunTriggerResp{}
	mi := &file_avs_proto_msgTypes[67]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *RunTriggerResp) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*RunTriggerResp) ProtoMessage() {}

func (x *RunTriggerResp) ProtoReflect() protoreflect.Message {
	mi := &file_avs_proto_msgTypes[67]
	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 RunTriggerResp.ProtoReflect.Descriptor instead.
func (*RunTriggerResp) Descriptor() ([]byte, []int) {
	return file_avs_proto_rawDescGZIP(), []int{67}
}

func (x *RunTriggerResp) GetSuccess() bool {
	if x != nil {
		return x.Success
	}
	return false
}

func (x *RunTriggerResp) GetError() string {
	if x != nil {
		return x.Error
	}
	return ""
}

func (x *RunTriggerResp) GetMetadata() *structpb.Value {
	if x != nil {
		return x.Metadata
	}
	return nil
}

func (x *RunTriggerResp) GetExecutionContext() *structpb.Value {
	if x != nil {
		return x.ExecutionContext
	}
	return nil
}

func (x *RunTriggerResp) GetErrorCode() ErrorCode {
	if x != nil {
		return x.ErrorCode
	}
	return ErrorCode_ERROR_CODE_UNSPECIFIED
}

func (x *RunTriggerResp) GetOutputData() isRunTriggerResp_OutputData {
	if x != nil {
		return x.OutputData
	}
	return nil
}

func (x *RunTriggerResp) GetBlockTrigger() *BlockTrigger_Output {
	if x != nil {
		if x, ok := x.OutputData.(*RunTriggerResp_BlockTrigger); ok {
			return x.BlockTrigger
		}
	}
	return nil
}

func (x *RunTriggerResp) GetFixedTimeTrigger() *FixedTimeTrigger_Output {
	if x != nil {
		if x, ok := x.OutputData.(*RunTriggerResp_FixedTimeTrigger); ok {
			return x.FixedTimeTrigger
		}
	}
	return nil
}

func (x *RunTriggerResp) GetCronTrigger() *CronTrigger_Output {
	if x != nil {
		if x, ok := x.OutputData.(*RunTriggerResp_CronTrigger); ok {
			return x.CronTrigger
		}
	}
	return nil
}

func (x *RunTriggerResp) GetEventTrigger() *EventTrigger_Output {
	if x != nil {
		if x, ok := x.OutputData.(*RunTriggerResp_EventTrigger); ok {
			return x.EventTrigger
		}
	}
	return nil
}

func (x *RunTriggerResp) GetManualTrigger() *ManualTrigger_Output {
	if x != nil {
		if x, ok := x.OutputData.(*RunTriggerResp_ManualTrigger); ok {
			return x.ManualTrigger
		}
	}
	return nil
}

type isRunTriggerResp_OutputData interface {
	isRunTriggerResp_OutputData()
}

type RunTriggerResp_BlockTrigger struct {
	BlockTrigger *BlockTrigger_Output `protobuf:"bytes,10,opt,name=block_trigger,json=blockTrigger,proto3,oneof"`
}

type RunTriggerResp_FixedTimeTrigger struct {
	FixedTimeTrigger *FixedTimeTrigger_Output `protobuf:"bytes,11,opt,name=fixed_time_trigger,json=fixedTimeTrigger,proto3,oneof"`
}

type RunTriggerResp_CronTrigger struct {
	CronTrigger *CronTrigger_Output `protobuf:"bytes,12,opt,name=cron_trigger,json=cronTrigger,proto3,oneof"`
}

type RunTriggerResp_EventTrigger struct {
	EventTrigger *EventTrigger_Output `protobuf:"bytes,13,opt,name=event_trigger,json=eventTrigger,proto3,oneof"`
}

type RunTriggerResp_ManualTrigger struct {
	ManualTrigger *ManualTrigger_Output `protobuf:"bytes,14,opt,name=manual_trigger,json=manualTrigger,proto3,oneof"`
}

func (*RunTriggerResp_BlockTrigger) isRunTriggerResp_OutputData() {}

func (*RunTriggerResp_FixedTimeTrigger) isRunTriggerResp_OutputData() {}

func (*RunTriggerResp_CronTrigger) isRunTriggerResp_OutputData() {}

func (*RunTriggerResp_EventTrigger) isRunTriggerResp_OutputData() {}

func (*RunTriggerResp_ManualTrigger) isRunTriggerResp_OutputData() {}

// Request message for SimulateTask
type SimulateTaskReq struct {
	state protoimpl.MessageState `protogen:"open.v1"`
	// Complete task definition for simulation (no need to save to storage first)
	Trigger        *TaskTrigger               `protobuf:"bytes,1,opt,name=trigger,proto3" json:"trigger,omitempty"`                                                                                                               // The trigger configuration
	Nodes          []*TaskNode                `protobuf:"bytes,2,rep,name=nodes,proto3" json:"nodes,omitempty"`                                                                                                                   // All workflow nodes
	Edges          []*TaskEdge                `protobuf:"bytes,3,rep,name=edges,proto3" json:"edges,omitempty"`                                                                                                                   // All edges connecting the nodes
	InputVariables map[string]*structpb.Value `protobuf:"bytes,6,rep,name=input_variables,json=inputVariables,proto3" json:"input_variables,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"` // Input variables for the simulation
	unknownFields  protoimpl.UnknownFields
	sizeCache      protoimpl.SizeCache
}

func (x *SimulateTaskReq) Reset() {
	*x = SimulateTaskReq{}
	mi := &file_avs_proto_msgTypes[68]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *SimulateTaskReq) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*SimulateTaskReq) ProtoMessage() {}

func (x *SimulateTaskReq) ProtoReflect() protoreflect.Message {
	mi := &file_avs_proto_msgTypes[68]
	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 SimulateTaskReq.ProtoReflect.Descriptor instead.
func (*SimulateTaskReq) Descriptor() ([]byte, []int) {
	return file_avs_proto_rawDescGZIP(), []int{68}
}

func (x *SimulateTaskReq) GetTrigger() *TaskTrigger {
	if x != nil {
		return x.Trigger
	}
	return nil
}

func (x *SimulateTaskReq) GetNodes() []*TaskNode {
	if x != nil {
		return x.Nodes
	}
	return nil
}

func (x *SimulateTaskReq) GetEdges() []*TaskEdge {
	if x != nil {
		return x.Edges
	}
	return nil
}

func (x *SimulateTaskReq) GetInputVariables() map[string]*structpb.Value {
	if x != nil {
		return x.InputVariables
	}
	return nil
}

// Request message for EstimateFees
type EstimateFeesReq struct {
	state protoimpl.MessageState `protogen:"open.v1"`
	// Complete workflow definition for fee estimation (similar to SimulateTaskReq)
	Trigger *TaskTrigger `protobuf:"bytes,1,opt,name=trigger,proto3" json:"trigger,omitempty"` // The trigger configuration
	Nodes   []*TaskNode  `protobuf:"bytes,2,rep,name=nodes,proto3" json:"nodes,omitempty"`     // All workflow nodes
	Edges   []*TaskEdge  `protobuf:"bytes,3,rep,name=edges,proto3" json:"edges,omitempty"`     // All edges connecting the nodes
	// Workflow lifecycle parameters
	CreatedAt    int64 `protobuf:"varint,4,opt,name=created_at,json=createdAt,proto3" json:"created_at,omitempty"`          // Timestamp when workflow will be created (milliseconds)
	ExpireAt     int64 `protobuf:"varint,5,opt,name=expire_at,json=expireAt,proto3" json:"expire_at,omitempty"`             // Timestamp when workflow will expire (milliseconds)
	MaxExecution int64 `protobuf:"varint,6,opt,name=max_execution,json=maxExecution,proto3" json:"max_execution,omitempty"` // Maximum number of executions allowed
	// Smart wallet runner (optional - if not provided, extracted from input_variables)
	// This is kept for backward compatibility, but input_variables.workflowContext.runner is preferred
	Runner string `protobuf:"bytes,7,opt,name=runner,proto3" json:"runner,omitempty"` // Smart wallet address to use for gas estimation
	// Input variables for workflow execution simulation
	// Expected to contain workflowContext with runner, chainId, and other execution context
	InputVariables map[string]*structpb.Value `protobuf:"bytes,8,rep,name=input_variables,json=inputVariables,proto3" json:"input_variables,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"`
	unknownFields  protoimpl.UnknownFields
	sizeCache      protoimpl.SizeCache
}

func (x *EstimateFeesReq) Reset() {
	*x = EstimateFeesReq{}
	mi := &file_avs_proto_msgTypes[69]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *EstimateFeesReq) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*EstimateFeesReq) ProtoMessage() {}

func (x *EstimateFeesReq) ProtoReflect() protoreflect.Message {
	mi := &file_avs_proto_msgTypes[69]
	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 EstimateFeesReq.ProtoReflect.Descriptor instead.
func (*EstimateFeesReq) Descriptor() ([]byte, []int) {
	return file_avs_proto_rawDescGZIP(), []int{69}
}

func (x *EstimateFeesReq) GetTrigger() *TaskTrigger {
	if x != nil {
		return x.Trigger
	}
	return nil
}

func (x *EstimateFeesReq) GetNodes() []*TaskNode {
	if x != nil {
		return x.Nodes
	}
	return nil
}

func (x *EstimateFeesReq) GetEdges() []*TaskEdge {
	if x != nil {
		return x.Edges
	}
	return nil
}

func (x *EstimateFeesReq) GetCreatedAt() int64 {
	if x != nil {
		return x.CreatedAt
	}
	return 0
}

func (x *EstimateFeesReq) GetExpireAt() int64 {
	if x != nil {
		return x.ExpireAt
	}
	return 0
}

func (x *EstimateFeesReq) GetMaxExecution() int64 {
	if x != nil {
		return x.MaxExecution
	}
	return 0
}

func (x *EstimateFeesReq) GetRunner() string {
	if x != nil {
		return x.Runner
	}
	return ""
}

func (x *EstimateFeesReq) GetInputVariables() map[string]*structpb.Value {
	if x != nil {
		return x.InputVariables
	}
	return nil
}

// Fee amount in both native token and USD
type FeeAmount struct {
	state             protoimpl.MessageState `protogen:"open.v1"`
	NativeTokenAmount string                 `protobuf:"bytes,1,opt,name=native_token_amount,json=nativeTokenAmount,proto3" json:"native_token_amount,omitempty"` // Amount in native token (wei for ETH)
	NativeTokenSymbol string                 `protobuf:"bytes,2,opt,name=native_token_symbol,json=nativeTokenSymbol,proto3" json:"native_token_symbol,omitempty"` // Native token symbol (e.g., "ETH", "BNB", "MATIC")
	UsdAmount         string                 `protobuf:"bytes,3,opt,name=usd_amount,json=usdAmount,proto3" json:"usd_amount,omitempty"`                           // Equivalent amount in USD (with 2 decimal places)
	ApTokenAmount     string                 `protobuf:"bytes,4,opt,name=ap_token_amount,json=apTokenAmount,proto3" json:"ap_token_amount,omitempty"`             // Future: Amount in AP tokens
	unknownFields     protoimpl.UnknownFields
	sizeCache         protoimpl.SizeCache
}

func (x *FeeAmount) Reset() {
	*x = FeeAmount{}
	mi := &file_avs_proto_msgTypes[70]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *FeeAmount) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*FeeAmount) ProtoMessage() {}

func (x *FeeAmount) ProtoReflect() protoreflect.Message {
	mi := &file_avs_proto_msgTypes[70]
	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 FeeAmount.ProtoReflect.Descriptor instead.
func (*FeeAmount) Descriptor() ([]byte, []int) {
	return file_avs_proto_rawDescGZIP(), []int{70}
}

func (x *FeeAmount) GetNativeTokenAmount() string {
	if x != nil {
		return x.NativeTokenAmount
	}
	return ""
}

func (x *FeeAmount) GetNativeTokenSymbol() string {
	if x != nil {
		return x.NativeTokenSymbol
	}
	return ""
}

func (x *FeeAmount) GetUsdAmount() string {
	if x != nil {
		return x.UsdAmount
	}
	return ""
}

func (x *FeeAmount) GetApTokenAmount() string {
	if x != nil {
		return x.ApTokenAmount
	}
	return ""
}

// Gas fee breakdown for blockchain operations
type GasFeeBreakdown struct {
	state        protoimpl.MessageState `protogen:"open.v1"`
	TotalGasFees *FeeAmount             `protobuf:"bytes,1,opt,name=total_gas_fees,json=totalGasFees,proto3" json:"total_gas_fees,omitempty"` // Total estimated gas costs
	// Per-operation breakdown
	Operations []*GasOperationFee `protobuf:"bytes,2,rep,name=operations,proto3" json:"operations,omitempty"`
	// Gas estimation metadata
	GasPriceGwei       string `protobuf:"bytes,3,opt,name=gas_price_gwei,json=gasPriceGwei,proto3" json:"gas_price_gwei,omitempty"`                  // Current gas price in Gwei
	TotalGasUnits      string `protobuf:"bytes,4,opt,name=total_gas_units,json=totalGasUnits,proto3" json:"total_gas_units,omitempty"`               // Total estimated gas units
	EstimationAccurate bool   `protobuf:"varint,5,opt,name=estimation_accurate,json=estimationAccurate,proto3" json:"estimation_accurate,omitempty"` // Whether estimation used real RPC or fallback
	EstimationMethod   string `protobuf:"bytes,6,opt,name=estimation_method,json=estimationMethod,proto3" json:"estimation_method,omitempty"`        // "rpc_estimate" or "tenderly_simulation" or "fallback"
	unknownFields      protoimpl.UnknownFields
	sizeCache          protoimpl.SizeCache
}

func (x *GasFeeBreakdown) Reset() {
	*x = GasFeeBreakdown{}
	mi := &file_avs_proto_msgTypes[71]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *GasFeeBreakdown) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*GasFeeBreakdown) ProtoMessage() {}

func (x *GasFeeBreakdown) ProtoReflect() protoreflect.Message {
	mi := &file_avs_proto_msgTypes[71]
	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 GasFeeBreakdown.ProtoReflect.Descriptor instead.
func (*GasFeeBreakdown) Descriptor() ([]byte, []int) {
	return file_avs_proto_rawDescGZIP(), []int{71}
}

func (x *GasFeeBreakdown) GetTotalGasFees() *FeeAmount {
	if x != nil {
		return x.TotalGasFees
	}
	return nil
}

func (x *GasFeeBreakdown) GetOperations() []*GasOperationFee {
	if x != nil {
		return x.Operations
	}
	return nil
}

func (x *GasFeeBreakdown) GetGasPriceGwei() string {
	if x != nil {
		return x.GasPriceGwei
	}
	return ""
}

func (x *GasFeeBreakdown) GetTotalGasUnits() string {
	if x != nil {
		return x.TotalGasUnits
	}
	return ""
}

func (x *GasFeeBreakdown) GetEstimationAccurate() bool {
	if x != nil {
		return x.EstimationAccurate
	}
	return false
}

func (x *GasFeeBreakdown) GetEstimationMethod() string {
	if x != nil {
		return x.EstimationMethod
	}
	return ""
}

// Individual gas operation fee
type GasOperationFee struct {
	state         protoimpl.MessageState `protogen:"open.v1"`
	OperationType string                 `protobuf:"bytes,1,opt,name=operation_type,json=operationType,proto3" json:"operation_type,omitempty"` // "contract_write", "eth_transfer", "smart_wallet_creation"
	NodeId        string                 `protobuf:"bytes,2,opt,name=node_id,json=nodeId,proto3" json:"node_id,omitempty"`                      // Associated node ID
	MethodName    string                 `protobuf:"bytes,3,opt,name=method_name,json=methodName,proto3" json:"method_name,omitempty"`          // Contract method name (for contract_write)
	Fee           *FeeAmount             `protobuf:"bytes,4,opt,name=fee,proto3" json:"fee,omitempty"`                                          // Fee for this operation
	GasUnits      string                 `protobuf:"bytes,5,opt,name=gas_units,json=gasUnits,proto3" json:"gas_units,omitempty"`                // Estimated gas units for this operation
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *GasOperationFee) Reset() {
	*x = GasOperationFee{}
	mi := &file_avs_proto_msgTypes[72]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *GasOperationFee) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*GasOperationFee) ProtoMessage() {}

func (x *GasOperationFee) ProtoReflect() protoreflect.Message {
	mi := &file_avs_proto_msgTypes[72]
	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 GasOperationFee.ProtoReflect.Descriptor instead.
func (*GasOperationFee) Descriptor() ([]byte, []int) {
	return file_avs_proto_rawDescGZIP(), []int{72}
}

func (x *GasOperationFee) GetOperationType() string {
	if x != nil {
		return x.OperationType
	}
	return ""
}

func (x *GasOperationFee) GetNodeId() string {
	if x != nil {
		return x.NodeId
	}
	return ""
}

func (x *GasOperationFee) GetMethodName() string {
	if x != nil {
		return x.MethodName
	}
	return ""
}

func (x *GasOperationFee) GetFee() *FeeAmount {
	if x != nil {
		return x.Fee
	}
	return nil
}

func (x *GasOperationFee) GetGasUnits() string {
	if x != nil {
		return x.GasUnits
	}
	return ""
}

// Smart wallet creation fees
type SmartWalletCreationFee struct {
	state            protoimpl.MessageState `protogen:"open.v1"`
	CreationRequired bool                   `protobuf:"varint,1,opt,name=creation_required,json=creationRequired,proto3" json:"creation_required,omitempty"` // Whether new smart wallet deployment is needed
	CreationFee      *FeeAmount             `protobuf:"bytes,2,opt,name=creation_fee,json=creationFee,proto3" json:"creation_fee,omitempty"`                 // Gas cost for factory.createAccount()
	InitialFunding   *FeeAmount             `protobuf:"bytes,3,opt,name=initial_funding,json=initialFunding,proto3" json:"initial_funding,omitempty"`        // Recommended initial funding amount
	WalletAddress    string                 `protobuf:"bytes,4,opt,name=wallet_address,json=walletAddress,proto3" json:"wallet_address,omitempty"`           // Predicted or existing wallet address
	unknownFields    protoimpl.UnknownFields
	sizeCache        protoimpl.SizeCache
}

func (x *SmartWalletCreationFee) Reset() {
	*x = SmartWalletCreationFee{}
	mi := &file_avs_proto_msgTypes[73]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *SmartWalletCreationFee) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*SmartWalletCreationFee) ProtoMessage() {}

func (x *SmartWalletCreationFee) ProtoReflect() protoreflect.Message {
	mi := &file_avs_proto_msgTypes[73]
	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 SmartWalletCreationFee.ProtoReflect.Descriptor instead.
func (*SmartWalletCreationFee) Descriptor() ([]byte, []int) {
	return file_avs_proto_rawDescGZIP(), []int{73}
}

func (x *SmartWalletCreationFee) GetCreationRequired() bool {
	if x != nil {
		return x.CreationRequired
	}
	return false
}

func (x *SmartWalletCreationFee) GetCreationFee() *FeeAmount {
	if x != nil {
		return x.CreationFee
	}
	return nil
}

func (x *SmartWalletCreationFee) GetInitialFunding() *FeeAmount {
	if x != nil {
		return x.InitialFunding
	}
	return nil
}

func (x *SmartWalletCreationFee) GetWalletAddress() string {
	if x != nil {
		return x.WalletAddress
	}
	return ""
}

// Automation fee structure based on trigger type and duration
type AutomationFee struct {
	state         protoimpl.MessageState `protogen:"open.v1"`
	BaseFee       *FeeAmount             `protobuf:"bytes,1,opt,name=base_fee,json=baseFee,proto3" json:"base_fee,omitempty"`                   // Base automation fee
	MonitoringFee *FeeAmount             `protobuf:"bytes,2,opt,name=monitoring_fee,json=monitoringFee,proto3" json:"monitoring_fee,omitempty"` // Ongoing monitoring cost (for time/event triggers)
	ExecutionFee  *FeeAmount             `protobuf:"bytes,3,opt,name=execution_fee,json=executionFee,proto3" json:"execution_fee,omitempty"`    // Per-execution fee
	// Fee calculation details
	TriggerType          string `protobuf:"bytes,4,opt,name=trigger_type,json=triggerType,proto3" json:"trigger_type,omitempty"`                              // "manual", "cron", "event", "block", "fixed_time"
	EstimatedExecutions  int64  `protobuf:"varint,5,opt,name=estimated_executions,json=estimatedExecutions,proto3" json:"estimated_executions,omitempty"`     // Estimated number of executions over workflow lifetime
	DurationMinutes      int64  `protobuf:"varint,6,opt,name=duration_minutes,json=durationMinutes,proto3" json:"duration_minutes,omitempty"`                 // How long monitoring will run (minutes)
	FeeCalculationMethod string `protobuf:"bytes,7,opt,name=fee_calculation_method,json=feeCalculationMethod,proto3" json:"fee_calculation_method,omitempty"` // Description of how fee was calculated
	unknownFields        protoimpl.UnknownFields
	sizeCache            protoimpl.SizeCache
}

func (x *AutomationFee) Reset() {
	*x = AutomationFee{}
	mi := &file_avs_proto_msgTypes[74]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *AutomationFee) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*AutomationFee) ProtoMessage() {}

func (x *AutomationFee) ProtoReflect() protoreflect.Message {
	mi := &file_avs_proto_msgTypes[74]
	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 AutomationFee.ProtoReflect.Descriptor instead.
func (*AutomationFee) Descriptor() ([]byte, []int) {
	return file_avs_proto_rawDescGZIP(), []int{74}
}

func (x *AutomationFee) GetBaseFee() *FeeAmount {
	if x != nil {
		return x.BaseFee
	}
	return nil
}

func (x *AutomationFee) GetMonitoringFee() *FeeAmount {
	if x != nil {
		return x.MonitoringFee
	}
	return nil
}

func (x *AutomationFee) GetExecutionFee() *FeeAmount {
	if x != nil {
		return x.ExecutionFee
	}
	return nil
}

func (x *AutomationFee) GetTriggerType() string {
	if x != nil {
		return x.TriggerType
	}
	return ""
}

func (x *AutomationFee) GetEstimatedExecutions() int64 {
	if x != nil {
		return x.EstimatedExecutions
	}
	return 0
}

func (x *AutomationFee) GetDurationMinutes() int64 {
	if x != nil {
		return x.DurationMinutes
	}
	return 0
}

func (x *AutomationFee) GetFeeCalculationMethod() string {
	if x != nil {
		return x.FeeCalculationMethod
	}
	return ""
}

// Promotional discounts and fee reductions
type FeeDiscount struct {
	state              protoimpl.MessageState `protogen:"open.v1"`
	DiscountType       string                 `protobuf:"bytes,1,opt,name=discount_type,json=discountType,proto3" json:"discount_type,omitempty"`                     // "new_user", "volume", "promotional", "beta_program"
	DiscountName       string                 `protobuf:"bytes,2,opt,name=discount_name,json=discountName,proto3" json:"discount_name,omitempty"`                     // Human-readable discount name
	AppliesTo          string                 `protobuf:"bytes,3,opt,name=applies_to,json=appliesTo,proto3" json:"applies_to,omitempty"`                              // "gas_fees", "automation_fees", "creation_fees", "all"
	DiscountPercentage float32                `protobuf:"fixed32,4,opt,name=discount_percentage,json=discountPercentage,proto3" json:"discount_percentage,omitempty"` // Discount percentage (0.0 to 100.0)
	DiscountAmount     *FeeAmount             `protobuf:"bytes,5,opt,name=discount_amount,json=discountAmount,proto3" json:"discount_amount,omitempty"`               // Absolute discount amount
	ExpiryDate         string                 `protobuf:"bytes,6,opt,name=expiry_date,json=expiryDate,proto3" json:"expiry_date,omitempty"`                           // When discount expires (ISO 8601 format)
	Terms              string                 `protobuf:"bytes,7,opt,name=terms,proto3" json:"terms,omitempty"`                                                       // Terms and conditions for discount
	unknownFields      protoimpl.UnknownFields
	sizeCache          protoimpl.SizeCache
}

func (x *FeeDiscount) Reset() {
	*x = FeeDiscount{}
	mi := &file_avs_proto_msgTypes[75]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *FeeDiscount) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*FeeDiscount) ProtoMessage() {}

func (x *FeeDiscount) ProtoReflect() protoreflect.Message {
	mi := &file_avs_proto_msgTypes[75]
	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 FeeDiscount.ProtoReflect.Descriptor instead.
func (*FeeDiscount) Descriptor() ([]byte, []int) {
	return file_avs_proto_rawDescGZIP(), []int{75}
}

func (x *FeeDiscount) GetDiscountType() string {
	if x != nil {
		return x.DiscountType
	}
	return ""
}

func (x *FeeDiscount) GetDiscountName() string {
	if x != nil {
		return x.DiscountName
	}
	return ""
}

func (x *FeeDiscount) GetAppliesTo() string {
	if x != nil {
		return x.AppliesTo
	}
	return ""
}

func (x *FeeDiscount) GetDiscountPercentage() float32 {
	if x != nil {
		return x.DiscountPercentage
	}
	return 0
}

func (x *FeeDiscount) GetDiscountAmount() *FeeAmount {
	if x != nil {
		return x.DiscountAmount
	}
	return nil
}

func (x *FeeDiscount) GetExpiryDate() string {
	if x != nil {
		return x.ExpiryDate
	}
	return ""
}

func (x *FeeDiscount) GetTerms() string {
	if x != nil {
		return x.Terms
	}
	return ""
}

// Response message for EstimateFees
type EstimateFeesResp struct {
	state     protoimpl.MessageState `protogen:"open.v1"`
	Success   bool                   `protobuf:"varint,1,opt,name=success,proto3" json:"success,omitempty"`                                                // Whether fee estimation was successful
	Error     string                 `protobuf:"bytes,2,opt,name=error,proto3" json:"error,omitempty"`                                                     // Error message if estimation failed
	ErrorCode ErrorCode              `protobuf:"varint,3,opt,name=error_code,json=errorCode,proto3,enum=aggregator.ErrorCode" json:"error_code,omitempty"` // Structured error code
	// Fee breakdown
	GasFees        *GasFeeBreakdown        `protobuf:"bytes,4,opt,name=gas_fees,json=gasFees,proto3" json:"gas_fees,omitempty"`                      // Estimated gas fees
	AutomationFees *AutomationFee          `protobuf:"bytes,5,opt,name=automation_fees,json=automationFees,proto3" json:"automation_fees,omitempty"` // Automation and monitoring fees
	CreationFees   *SmartWalletCreationFee `protobuf:"bytes,6,opt,name=creation_fees,json=creationFees,proto3" json:"creation_fees,omitempty"`       // Smart wallet creation fees (if needed)
	// Total fees
	TotalFees *FeeAmount `protobuf:"bytes,7,opt,name=total_fees,json=totalFees,proto3" json:"total_fees,omitempty"` // Sum of all fees
	// Discounts and promotions
	Discounts      []*FeeDiscount `protobuf:"bytes,8,rep,name=discounts,proto3" json:"discounts,omitempty"`                                 // Applied discounts
	TotalDiscounts *FeeAmount     `protobuf:"bytes,9,opt,name=total_discounts,json=totalDiscounts,proto3" json:"total_discounts,omitempty"` // Total discount amount
	FinalTotal     *FeeAmount     `protobuf:"bytes,10,opt,name=final_total,json=finalTotal,proto3" json:"final_total,omitempty"`            // Final total after discounts
	// Estimation metadata
	EstimatedAt         int64  `protobuf:"varint,11,opt,name=estimated_at,json=estimatedAt,proto3" json:"estimated_at,omitempty"`                             // Timestamp when estimation was performed
	ChainId             string `protobuf:"bytes,12,opt,name=chain_id,json=chainId,proto3" json:"chain_id,omitempty"`                                          // Blockchain chain ID
	PriceDataSource     string `protobuf:"bytes,13,opt,name=price_data_source,json=priceDataSource,proto3" json:"price_data_source,omitempty"`                // Source of price data ("coingecko", "chainlink", "cached")
	PriceDataAgeSeconds int64  `protobuf:"varint,14,opt,name=price_data_age_seconds,json=priceDataAgeSeconds,proto3" json:"price_data_age_seconds,omitempty"` // Age of price data in seconds
	// Warnings and recommendations
	Warnings        []string `protobuf:"bytes,15,rep,name=warnings,proto3" json:"warnings,omitempty"`               // Warnings about fee estimation
	Recommendations []string `protobuf:"bytes,16,rep,name=recommendations,proto3" json:"recommendations,omitempty"` // Recommendations for cost optimization
	unknownFields   protoimpl.UnknownFields
	sizeCache       protoimpl.SizeCache
}

func (x *EstimateFeesResp) Reset() {
	*x = EstimateFeesResp{}
	mi := &file_avs_proto_msgTypes[76]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *EstimateFeesResp) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*EstimateFeesResp) ProtoMessage() {}

func (x *EstimateFeesResp) ProtoReflect() protoreflect.Message {
	mi := &file_avs_proto_msgTypes[76]
	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 EstimateFeesResp.ProtoReflect.Descriptor instead.
func (*EstimateFeesResp) Descriptor() ([]byte, []int) {
	return file_avs_proto_rawDescGZIP(), []int{76}
}

func (x *EstimateFeesResp) GetSuccess() bool {
	if x != nil {
		return x.Success
	}
	return false
}

func (x *EstimateFeesResp) GetError() string {
	if x != nil {
		return x.Error
	}
	return ""
}

func (x *EstimateFeesResp) GetErrorCode() ErrorCode {
	if x != nil {
		return x.ErrorCode
	}
	return ErrorCode_ERROR_CODE_UNSPECIFIED
}

func (x *EstimateFeesResp) GetGasFees() *GasFeeBreakdown {
	if x != nil {
		return x.GasFees
	}
	return nil
}

func (x *EstimateFeesResp) GetAutomationFees() *AutomationFee {
	if x != nil {
		return x.AutomationFees
	}
	return nil
}

func (x *EstimateFeesResp) GetCreationFees() *SmartWalletCreationFee {
	if x != nil {
		return x.CreationFees
	}
	return nil
}

func (x *EstimateFeesResp) GetTotalFees() *FeeAmount {
	if x != nil {
		return x.TotalFees
	}
	return nil
}

func (x *EstimateFeesResp) GetDiscounts() []*FeeDiscount {
	if x != nil {
		return x.Discounts
	}
	return nil
}

func (x *EstimateFeesResp) GetTotalDiscounts() *FeeAmount {
	if x != nil {
		return x.TotalDiscounts
	}
	return nil
}

func (x *EstimateFeesResp) GetFinalTotal() *FeeAmount {
	if x != nil {
		return x.FinalTotal
	}
	return nil
}

func (x *EstimateFeesResp) GetEstimatedAt() int64 {
	if x != nil {
		return x.EstimatedAt
	}
	return 0
}

func (x *EstimateFeesResp) GetChainId() string {
	if x != nil {
		return x.ChainId
	}
	return ""
}

func (x *EstimateFeesResp) GetPriceDataSource() string {
	if x != nil {
		return x.PriceDataSource
	}
	return ""
}

func (x *EstimateFeesResp) GetPriceDataAgeSeconds() int64 {
	if x != nil {
		return x.PriceDataAgeSeconds
	}
	return 0
}

func (x *EstimateFeesResp) GetWarnings() []string {
	if x != nil {
		return x.Warnings
	}
	return nil
}

func (x *EstimateFeesResp) GetRecommendations() []string {
	if x != nil {
		return x.Recommendations
	}
	return nil
}

// EventCondition represents a condition to evaluate on decoded event data
type EventCondition struct {
	state         protoimpl.MessageState `protogen:"open.v1"`
	FieldName     string                 `protobuf:"bytes,1,opt,name=field_name,json=fieldName,proto3" json:"field_name,omitempty"` // Event field name (e.g., "answer", "roundId")
	Operator      string                 `protobuf:"bytes,2,opt,name=operator,proto3" json:"operator,omitempty"`                    // Comparison operator: "gt", "gte", "lt", "lte", "eq", "ne"
	Value         string                 `protobuf:"bytes,3,opt,name=value,proto3" json:"value,omitempty"`                          // Value to compare against (as string, parsed based on type)
	FieldType     string                 `protobuf:"bytes,4,opt,name=field_type,json=fieldType,proto3" json:"field_type,omitempty"` // Field type: "uint256", "int256", "address", "bool", "bytes32", etc.
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *EventCondition) Reset() {
	*x = EventCondition{}
	mi := &file_avs_proto_msgTypes[77]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *EventCondition) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*EventCondition) ProtoMessage() {}

func (x *EventCondition) ProtoReflect() protoreflect.Message {
	mi := &file_avs_proto_msgTypes[77]
	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 EventCondition.ProtoReflect.Descriptor instead.
func (*EventCondition) Descriptor() ([]byte, []int) {
	return file_avs_proto_rawDescGZIP(), []int{77}
}

func (x *EventCondition) GetFieldName() string {
	if x != nil {
		return x.FieldName
	}
	return ""
}

func (x *EventCondition) GetOperator() string {
	if x != nil {
		return x.Operator
	}
	return ""
}

func (x *EventCondition) GetValue() string {
	if x != nil {
		return x.Value
	}
	return ""
}

func (x *EventCondition) GetFieldType() string {
	if x != nil {
		return x.FieldType
	}
	return ""
}

type FixedTimeTrigger_Config struct {
	state         protoimpl.MessageState `protogen:"open.v1"`
	Epochs        []int64                `protobuf:"varint,1,rep,packed,name=epochs,proto3" json:"epochs,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *FixedTimeTrigger_Config) Reset() {
	*x = FixedTimeTrigger_Config{}
	mi := &file_avs_proto_msgTypes[78]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *FixedTimeTrigger_Config) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*FixedTimeTrigger_Config) ProtoMessage() {}

func (x *FixedTimeTrigger_Config) ProtoReflect() protoreflect.Message {
	mi := &file_avs_proto_msgTypes[78]
	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 FixedTimeTrigger_Config.ProtoReflect.Descriptor instead.
func (*FixedTimeTrigger_Config) Descriptor() ([]byte, []int) {
	return file_avs_proto_rawDescGZIP(), []int{4, 0}
}

func (x *FixedTimeTrigger_Config) GetEpochs() []int64 {
	if x != nil {
		return x.Epochs
	}
	return nil
}

type FixedTimeTrigger_Output struct {
	state         protoimpl.MessageState `protogen:"open.v1"`
	Data          *structpb.Value        `protobuf:"bytes,1,opt,name=data,proto3" json:"data,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *FixedTimeTrigger_Output) Reset() {
	*x = FixedTimeTrigger_Output{}
	mi := &file_avs_proto_msgTypes[79]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *FixedTimeTrigger_Output) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*FixedTimeTrigger_Output) ProtoMessage() {}

func (x *FixedTimeTrigger_Output) ProtoReflect() protoreflect.Message {
	mi := &file_avs_proto_msgTypes[79]
	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 FixedTimeTrigger_Output.ProtoReflect.Descriptor instead.
func (*FixedTimeTrigger_Output) Descriptor() ([]byte, []int) {
	return file_avs_proto_rawDescGZIP(), []int{4, 1}
}

func (x *FixedTimeTrigger_Output) GetData() *structpb.Value {
	if x != nil {
		return x.Data
	}
	return nil
}

type CronTrigger_Config struct {
	state         protoimpl.MessageState `protogen:"open.v1"`
	Schedules     []string               `protobuf:"bytes,1,rep,name=schedules,proto3" json:"schedules,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *CronTrigger_Config) Reset() {
	*x = CronTrigger_Config{}
	mi := &file_avs_proto_msgTypes[80]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *CronTrigger_Config) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*CronTrigger_Config) ProtoMessage() {}

func (x *CronTrigger_Config) ProtoReflect() protoreflect.Message {
	mi := &file_avs_proto_msgTypes[80]
	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 CronTrigger_Config.ProtoReflect.Descriptor instead.
func (*CronTrigger_Config) Descriptor() ([]byte, []int) {
	return file_avs_proto_rawDescGZIP(), []int{5, 0}
}

func (x *CronTrigger_Config) GetSchedules() []string {
	if x != nil {
		return x.Schedules
	}
	return nil
}

type CronTrigger_Output struct {
	state         protoimpl.MessageState `protogen:"open.v1"`
	Data          *structpb.Value        `protobuf:"bytes,1,opt,name=data,proto3" json:"data,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *CronTrigger_Output) Reset() {
	*x = CronTrigger_Output{}
	mi := &file_avs_proto_msgTypes[81]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *CronTrigger_Output) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*CronTrigger_Output) ProtoMessage() {}

func (x *CronTrigger_Output) ProtoReflect() protoreflect.Message {
	mi := &file_avs_proto_msgTypes[81]
	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 CronTrigger_Output.ProtoReflect.Descriptor instead.
func (*CronTrigger_Output) Descriptor() ([]byte, []int) {
	return file_avs_proto_rawDescGZIP(), []int{5, 1}
}

func (x *CronTrigger_Output) GetData() *structpb.Value {
	if x != nil {
		return x.Data
	}
	return nil
}

type BlockTrigger_Config struct {
	state         protoimpl.MessageState `protogen:"open.v1"`
	Interval      int64                  `protobuf:"varint,1,opt,name=interval,proto3" json:"interval,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *BlockTrigger_Config) Reset() {
	*x = BlockTrigger_Config{}
	mi := &file_avs_proto_msgTypes[82]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *BlockTrigger_Config) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*BlockTrigger_Config) ProtoMessage() {}

func (x *BlockTrigger_Config) ProtoReflect() protoreflect.Message {
	mi := &file_avs_proto_msgTypes[82]
	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 BlockTrigger_Config.ProtoReflect.Descriptor instead.
func (*BlockTrigger_Config) Descriptor() ([]byte, []int) {
	return file_avs_proto_rawDescGZIP(), []int{6, 0}
}

func (x *BlockTrigger_Config) GetInterval() int64 {
	if x != nil {
		return x.Interval
	}
	return 0
}

type BlockTrigger_Output struct {
	state         protoimpl.MessageState `protogen:"open.v1"`
	Data          *structpb.Value        `protobuf:"bytes,1,opt,name=data,proto3" json:"data,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *BlockTrigger_Output) Reset() {
	*x = BlockTrigger_Output{}
	mi := &file_avs_proto_msgTypes[83]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *BlockTrigger_Output) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*BlockTrigger_Output) ProtoMessage() {}

func (x *BlockTrigger_Output) ProtoReflect() protoreflect.Message {
	mi := &file_avs_proto_msgTypes[83]
	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 BlockTrigger_Output.ProtoReflect.Descriptor instead.
func (*BlockTrigger_Output) Descriptor() ([]byte, []int) {
	return file_avs_proto_rawDescGZIP(), []int{6, 1}
}

func (x *BlockTrigger_Output) GetData() *structpb.Value {
	if x != nil {
		return x.Data
	}
	return nil
}

// Query represents a single ethereum.FilterQuery for RPC filtering
type EventTrigger_Query struct {
	state protoimpl.MessageState `protogen:"open.v1"`
	// Contract addresses to filter events from. Empty means any contract.
	Addresses []string `protobuf:"bytes,1,rep,name=addresses,proto3" json:"addresses,omitempty"`
	// Topic filters structured as a 2D array matching ethereum.FilterQuery.Topics
	// Each inner array represents a topic position (topic[0], topic[1], topic[2], etc.)
	// Each string in the inner array represents a valid value for that topic position
	// Empty inner array means "any value" for that topic position
	//
	// Example for Transfer events FROM or TO a specific address:
	// [
	//
	//	["0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef"], // Transfer signature
	//	["0x000000000000000000000000fE66125343Aabda4A330DA667431eC1Acb7BbDA9"], // FROM address
	//	[]  // Any TO address
	//
	// ]
	Topics []*EventTrigger_Topics `protobuf:"bytes,2,rep,name=topics,proto3" json:"topics,omitempty"`
	// Maximum number of events this query should process per block/time window
	// Used for safety - if exceeded, operator notifies aggregator to cancel task
	MaxEventsPerBlock *uint32 `protobuf:"varint,3,opt,name=max_events_per_block,json=maxEventsPerBlock,proto3,oneof" json:"max_events_per_block,omitempty"`
	// Contract ABI as array of ABI elements
	ContractAbi []*structpb.Value `protobuf:"bytes,4,rep,name=contract_abi,json=contractAbi,proto3" json:"contract_abi,omitempty"`
	// Event conditions to evaluate on decoded event data
	Conditions []*EventCondition `protobuf:"bytes,5,rep,name=conditions,proto3" json:"conditions,omitempty"`
	// Method calls for enhanced event data formatting (e.g., decimals, description)
	MethodCalls   []*EventTrigger_MethodCall `protobuf:"bytes,6,rep,name=method_calls,json=methodCalls,proto3" json:"method_calls,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *EventTrigger_Query) Reset() {
	*x = EventTrigger_Query{}
	mi := &file_avs_proto_msgTypes[84]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *EventTrigger_Query) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*EventTrigger_Query) ProtoMessage() {}

func (x *EventTrigger_Query) ProtoReflect() protoreflect.Message {
	mi := &file_avs_proto_msgTypes[84]
	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 EventTrigger_Query.ProtoReflect.Descriptor instead.
func (*EventTrigger_Query) Descriptor() ([]byte, []int) {
	return file_avs_proto_rawDescGZIP(), []int{7, 0}
}

func (x *EventTrigger_Query) GetAddresses() []string {
	if x != nil {
		return x.Addresses
	}
	return nil
}

func (x *EventTrigger_Query) GetTopics() []*EventTrigger_Topics {
	if x != nil {
		return x.Topics
	}
	return nil
}

func (x *EventTrigger_Query) GetMaxEventsPerBlock() uint32 {
	if x != nil && x.MaxEventsPerBlock != nil {
		return *x.MaxEventsPerBlock
	}
	return 0
}

func (x *EventTrigger_Query) GetContractAbi() []*structpb.Value {
	if x != nil {
		return x.ContractAbi
	}
	return nil
}

func (x *EventTrigger_Query) GetConditions() []*EventCondition {
	if x != nil {
		return x.Conditions
	}
	return nil
}

func (x *EventTrigger_Query) GetMethodCalls() []*EventTrigger_MethodCall {
	if x != nil {
		return x.MethodCalls
	}
	return nil
}

// Method call configuration for enhanced formatting
type EventTrigger_MethodCall struct {
	state         protoimpl.MessageState `protogen:"open.v1"`
	MethodName    string                 `protobuf:"bytes,1,opt,name=method_name,json=methodName,proto3" json:"method_name,omitempty"`            // Method name (e.g., "decimals")
	CallData      *string                `protobuf:"bytes,2,opt,name=call_data,json=callData,proto3,oneof" json:"call_data,omitempty"`            // Hex-encoded calldata for the method (used when method_params is not provided)
	ApplyToFields []string               `protobuf:"bytes,3,rep,name=apply_to_fields,json=applyToFields,proto3" json:"apply_to_fields,omitempty"` // Fields to apply formatting to (e.g., ["current", "answer"])
	MethodParams  []string               `protobuf:"bytes,4,rep,name=method_params,json=methodParams,proto3" json:"method_params,omitempty"`      // Array of Handlebars templates for method parameters (e.g. ["{{value.sender}}", "{{value.recipient}}", "{{value.amount}}"])
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *EventTrigger_MethodCall) Reset() {
	*x = EventTrigger_MethodCall{}
	mi := &file_avs_proto_msgTypes[85]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *EventTrigger_MethodCall) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*EventTrigger_MethodCall) ProtoMessage() {}

func (x *EventTrigger_MethodCall) ProtoReflect() protoreflect.Message {
	mi := &file_avs_proto_msgTypes[85]
	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 EventTrigger_MethodCall.ProtoReflect.Descriptor instead.
func (*EventTrigger_MethodCall) Descriptor() ([]byte, []int) {
	return file_avs_proto_rawDescGZIP(), []int{7, 1}
}

func (x *EventTrigger_MethodCall) GetMethodName() string {
	if x != nil {
		return x.MethodName
	}
	return ""
}

func (x *EventTrigger_MethodCall) GetCallData() string {
	if x != nil && x.CallData != nil {
		return *x.CallData
	}
	return ""
}

func (x *EventTrigger_MethodCall) GetApplyToFields() []string {
	if x != nil {
		return x.ApplyToFields
	}
	return nil
}

func (x *EventTrigger_MethodCall) GetMethodParams() []string {
	if x != nil {
		return x.MethodParams
	}
	return nil
}

// Topics represents a single topic position filter (e.g., topic[0], topic[1], etc.)
type EventTrigger_Topics struct {
	state         protoimpl.MessageState `protogen:"open.v1"`
	Values        []string               `protobuf:"bytes,1,rep,name=values,proto3" json:"values,omitempty"` // Valid values for this topic position
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *EventTrigger_Topics) Reset() {
	*x = EventTrigger_Topics{}
	mi := &file_avs_proto_msgTypes[86]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *EventTrigger_Topics) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*EventTrigger_Topics) ProtoMessage() {}

func (x *EventTrigger_Topics) ProtoReflect() protoreflect.Message {
	mi := &file_avs_proto_msgTypes[86]
	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 EventTrigger_Topics.ProtoReflect.Descriptor instead.
func (*EventTrigger_Topics) Descriptor() ([]byte, []int) {
	return file_avs_proto_rawDescGZIP(), []int{7, 2}
}

func (x *EventTrigger_Topics) GetValues() []string {
	if x != nil {
		return x.Values
	}
	return nil
}

type EventTrigger_Config struct {
	state protoimpl.MessageState `protogen:"open.v1"`
	// Array of RPC filter queries. Each query creates a separate subscription.
	// For FROM-OR-TO scenarios, provide two queries: one for FROM, one for TO.
	Queries       []*EventTrigger_Query `protobuf:"bytes,1,rep,name=queries,proto3" json:"queries,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *EventTrigger_Config) Reset() {
	*x = EventTrigger_Config{}
	mi := &file_avs_proto_msgTypes[87]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *EventTrigger_Config) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*EventTrigger_Config) ProtoMessage() {}

func (x *EventTrigger_Config) ProtoReflect() protoreflect.Message {
	mi := &file_avs_proto_msgTypes[87]
	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 EventTrigger_Config.ProtoReflect.Descriptor instead.
func (*EventTrigger_Config) Descriptor() ([]byte, []int) {
	return file_avs_proto_rawDescGZIP(), []int{7, 3}
}

func (x *EventTrigger_Config) GetQueries() []*EventTrigger_Query {
	if x != nil {
		return x.Queries
	}
	return nil
}

type EventTrigger_Output struct {
	state         protoimpl.MessageState `protogen:"open.v1"`
	Data          *structpb.Value        `protobuf:"bytes,1,opt,name=data,proto3" json:"data,omitempty"` // Parsed event data as structured value
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *EventTrigger_Output) Reset() {
	*x = EventTrigger_Output{}
	mi := &file_avs_proto_msgTypes[88]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *EventTrigger_Output) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*EventTrigger_Output) ProtoMessage() {}

func (x *EventTrigger_Output) ProtoReflect() protoreflect.Message {
	mi := &file_avs_proto_msgTypes[88]
	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 EventTrigger_Output.ProtoReflect.Descriptor instead.
func (*EventTrigger_Output) Descriptor() ([]byte, []int) {
	return file_avs_proto_rawDescGZIP(), []int{7, 4}
}

func (x *EventTrigger_Output) GetData() *structpb.Value {
	if x != nil {
		return x.Data
	}
	return nil
}

type ManualTrigger_Config struct {
	state protoimpl.MessageState `protogen:"open.v1"`
	// User-defined data that will be returned in the Output
	Data *structpb.Value `protobuf:"bytes,1,opt,name=data,proto3" json:"data,omitempty"`
	// Headers for webhook testing - map format consistent with REST API nodes
	Headers map[string]string `protobuf:"bytes,2,rep,name=headers,proto3" json:"headers,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"`
	// Path parameters for webhook testing - map format consistent with REST API nodes
	PathParams    map[string]string `protobuf:"bytes,3,rep,name=pathParams,proto3" json:"pathParams,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *ManualTrigger_Config) Reset() {
	*x = ManualTrigger_Config{}
	mi := &file_avs_proto_msgTypes[89]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *ManualTrigger_Config) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*ManualTrigger_Config) ProtoMessage() {}

func (x *ManualTrigger_Config) ProtoReflect() protoreflect.Message {
	mi := &file_avs_proto_msgTypes[89]
	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 ManualTrigger_Config.ProtoReflect.Descriptor instead.
func (*ManualTrigger_Config) Descriptor() ([]byte, []int) {
	return file_avs_proto_rawDescGZIP(), []int{8, 0}
}

func (x *ManualTrigger_Config) GetData() *structpb.Value {
	if x != nil {
		return x.Data
	}
	return nil
}

func (x *ManualTrigger_Config) GetHeaders() map[string]string {
	if x != nil {
		return x.Headers
	}
	return nil
}

func (x *ManualTrigger_Config) GetPathParams() map[string]string {
	if x != nil {
		return x.PathParams
	}
	return nil
}

type ManualTrigger_Output struct {
	state protoimpl.MessageState `protogen:"open.v1"`
	// User-defined data from trigger config - this is the main payload for manual triggers
	Data          *structpb.Value `protobuf:"bytes,1,opt,name=data,proto3" json:"data,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *ManualTrigger_Output) Reset() {
	*x = ManualTrigger_Output{}
	mi := &file_avs_proto_msgTypes[90]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *ManualTrigger_Output) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*ManualTrigger_Output) ProtoMessage() {}

func (x *ManualTrigger_Output) ProtoReflect() protoreflect.Message {
	mi := &file_avs_proto_msgTypes[90]
	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 ManualTrigger_Output.ProtoReflect.Descriptor instead.
func (*ManualTrigger_Output) Descriptor() ([]byte, []int) {
	return file_avs_proto_rawDescGZIP(), []int{8, 1}
}

func (x *ManualTrigger_Output) GetData() *structpb.Value {
	if x != nil {
		return x.Data
	}
	return nil
}

type ETHTransferNode_Config struct {
	state         protoimpl.MessageState `protogen:"open.v1"`
	Destination   string                 `protobuf:"bytes,1,opt,name=destination,proto3" json:"destination,omitempty"`
	Amount        string                 `protobuf:"bytes,2,opt,name=amount,proto3" json:"amount,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *ETHTransferNode_Config) Reset() {
	*x = ETHTransferNode_Config{}
	mi := &file_avs_proto_msgTypes[93]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *ETHTransferNode_Config) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*ETHTransferNode_Config) ProtoMessage() {}

func (x *ETHTransferNode_Config) ProtoReflect() protoreflect.Message {
	mi := &file_avs_proto_msgTypes[93]
	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 ETHTransferNode_Config.ProtoReflect.Descriptor instead.
func (*ETHTransferNode_Config) Descriptor() ([]byte, []int) {
	return file_avs_proto_rawDescGZIP(), []int{10, 0}
}

func (x *ETHTransferNode_Config) GetDestination() string {
	if x != nil {
		return x.Destination
	}
	return ""
}

func (x *ETHTransferNode_Config) GetAmount() string {
	if x != nil {
		return x.Amount
	}
	return ""
}

type ETHTransferNode_Output struct {
	state         protoimpl.MessageState `protogen:"open.v1"`
	Data          *structpb.Value        `protobuf:"bytes,1,opt,name=data,proto3" json:"data,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *ETHTransferNode_Output) Reset() {
	*x = ETHTransferNode_Output{}
	mi := &file_avs_proto_msgTypes[94]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *ETHTransferNode_Output) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*ETHTransferNode_Output) ProtoMessage() {}

func (x *ETHTransferNode_Output) ProtoReflect() protoreflect.Message {
	mi := &file_avs_proto_msgTypes[94]
	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 ETHTransferNode_Output.ProtoReflect.Descriptor instead.
func (*ETHTransferNode_Output) Descriptor() ([]byte, []int) {
	return file_avs_proto_rawDescGZIP(), []int{10, 1}
}

func (x *ETHTransferNode_Output) GetData() *structpb.Value {
	if x != nil {
		return x.Data
	}
	return nil
}

type ContractWriteNode_Config struct {
	state           protoimpl.MessageState `protogen:"open.v1"`
	ContractAddress string                 `protobuf:"bytes,1,opt,name=contract_address,json=contractAddress,proto3" json:"contract_address,omitempty"`
	CallData        string                 `protobuf:"bytes,2,opt,name=call_data,json=callData,proto3" json:"call_data,omitempty"`
	// The ABI as array of ABI elements
	ContractAbi []*structpb.Value `protobuf:"bytes,3,rep,name=contract_abi,json=contractAbi,proto3" json:"contract_abi,omitempty"`
	// Support for multiple method calls in sequence (similar to ContractRead)
	MethodCalls   []*ContractWriteNode_MethodCall `protobuf:"bytes,4,rep,name=method_calls,json=methodCalls,proto3" json:"method_calls,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *ContractWriteNode_Config) Reset() {
	*x = ContractWriteNode_Config{}
	mi := &file_avs_proto_msgTypes[95]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *ContractWriteNode_Config) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*ContractWriteNode_Config) ProtoMessage() {}

func (x *ContractWriteNode_Config) ProtoReflect() protoreflect.Message {
	mi := &file_avs_proto_msgTypes[95]
	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 ContractWriteNode_Config.ProtoReflect.Descriptor instead.
func (*ContractWriteNode_Config) Descriptor() ([]byte, []int) {
	return file_avs_proto_rawDescGZIP(), []int{11, 0}
}

func (x *ContractWriteNode_Config) GetContractAddress() string {
	if x != nil {
		return x.ContractAddress
	}
	return ""
}

func (x *ContractWriteNode_Config) GetCallData() string {
	if x != nil {
		return x.CallData
	}
	return ""
}

func (x *ContractWriteNode_Config) GetContractAbi() []*structpb.Value {
	if x != nil {
		return x.ContractAbi
	}
	return nil
}

func (x *ContractWriteNode_Config) GetMethodCalls() []*ContractWriteNode_MethodCall {
	if x != nil {
		return x.MethodCalls
	}
	return nil
}

type ContractWriteNode_MethodCall struct {
	state         protoimpl.MessageState `protogen:"open.v1"`
	CallData      *string                `protobuf:"bytes,1,opt,name=call_data,json=callData,proto3,oneof" json:"call_data,omitempty"`            // Hex-encoded calldata for the method (used when methodParams is not provided)
	MethodName    string                 `protobuf:"bytes,2,opt,name=method_name,json=methodName,proto3" json:"method_name,omitempty"`            // Method name for clarity and response mapping
	ApplyToFields []string               `protobuf:"bytes,3,rep,name=apply_to_fields,json=applyToFields,proto3" json:"apply_to_fields,omitempty"` // Fields to apply formatting to (e.g., ["current", "answer"])
	MethodParams  []string               `protobuf:"bytes,4,rep,name=method_params,json=methodParams,proto3" json:"method_params,omitempty"`      // Array of Handlebars templates for method parameters (e.g. ["{{value.sender}}", "{{value.recipient}}", "{{value.amount}}"])
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *ContractWriteNode_MethodCall) Reset() {
	*x = ContractWriteNode_MethodCall{}
	mi := &file_avs_proto_msgTypes[96]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *ContractWriteNode_MethodCall) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*ContractWriteNode_MethodCall) ProtoMessage() {}

func (x *ContractWriteNode_MethodCall) ProtoReflect() protoreflect.Message {
	mi := &file_avs_proto_msgTypes[96]
	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 ContractWriteNode_MethodCall.ProtoReflect.Descriptor instead.
func (*ContractWriteNode_MethodCall) Descriptor() ([]byte, []int) {
	return file_avs_proto_rawDescGZIP(), []int{11, 1}
}

func (x *ContractWriteNode_MethodCall) GetCallData() string {
	if x != nil && x.CallData != nil {
		return *x.CallData
	}
	return ""
}

func (x *ContractWriteNode_MethodCall) GetMethodName() string {
	if x != nil {
		return x.MethodName
	}
	return ""
}

func (x *ContractWriteNode_MethodCall) GetApplyToFields() []string {
	if x != nil {
		return x.ApplyToFields
	}
	return nil
}

func (x *ContractWriteNode_MethodCall) GetMethodParams() []string {
	if x != nil {
		return x.MethodParams
	}
	return nil
}

type ContractWriteNode_Output struct {
	state protoimpl.MessageState `protogen:"open.v1"`
	// Changed from repeated MethodResult to google.protobuf.Value for better JavaScript native type support
	// Data will be a flattened JSON object with decoded event logs (user-facing results)
	Data          *structpb.Value `protobuf:"bytes,1,opt,name=data,proto3" json:"data,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *ContractWriteNode_Output) Reset() {
	*x = ContractWriteNode_Output{}
	mi := &file_avs_proto_msgTypes[97]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *ContractWriteNode_Output) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*ContractWriteNode_Output) ProtoMessage() {}

func (x *ContractWriteNode_Output) ProtoReflect() protoreflect.Message {
	mi := &file_avs_proto_msgTypes[97]
	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 ContractWriteNode_Output.ProtoReflect.Descriptor instead.
func (*ContractWriteNode_Output) Descriptor() ([]byte, []int) {
	return file_avs_proto_rawDescGZIP(), []int{11, 2}
}

func (x *ContractWriteNode_Output) GetData() *structpb.Value {
	if x != nil {
		return x.Data
	}
	return nil
}

type ContractWriteNode_MethodResult struct {
	state         protoimpl.MessageState `protogen:"open.v1"`
	MethodName    string                 `protobuf:"bytes,1,opt,name=method_name,json=methodName,proto3" json:"method_name,omitempty"`           // The name of the method called
	MethodAbi     *structpb.Value        `protobuf:"bytes,2,opt,name=method_abi,json=methodAbi,proto3" json:"method_abi,omitempty"`              // Complete ABI entry for this method
	Success       bool                   `protobuf:"varint,3,opt,name=success,proto3" json:"success,omitempty"`                                  // Whether this specific method call succeeded
	Error         string                 `protobuf:"bytes,4,opt,name=error,proto3" json:"error,omitempty"`                                       // Error message if failed (empty if success)
	Receipt       *structpb.Value        `protobuf:"bytes,5,opt,name=receipt,proto3" json:"receipt,omitempty"`                                   // Flexible receipt as JSON object
	BlockNumber   *uint64                `protobuf:"varint,6,opt,name=block_number,json=blockNumber,proto3,oneof" json:"block_number,omitempty"` // Block number (duplicate from receipt for convenience)
	Value         *structpb.Value        `protobuf:"bytes,7,opt,name=value,proto3" json:"value,omitempty"`                                       // Return value from contract method (null if no return)
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *ContractWriteNode_MethodResult) Reset() {
	*x = ContractWriteNode_MethodResult{}
	mi := &file_avs_proto_msgTypes[98]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *ContractWriteNode_MethodResult) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*ContractWriteNode_MethodResult) ProtoMessage() {}

func (x *ContractWriteNode_MethodResult) ProtoReflect() protoreflect.Message {
	mi := &file_avs_proto_msgTypes[98]
	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 ContractWriteNode_MethodResult.ProtoReflect.Descriptor instead.
func (*ContractWriteNode_MethodResult) Descriptor() ([]byte, []int) {
	return file_avs_proto_rawDescGZIP(), []int{11, 3}
}

func (x *ContractWriteNode_MethodResult) GetMethodName() string {
	if x != nil {
		return x.MethodName
	}
	return ""
}

func (x *ContractWriteNode_MethodResult) GetMethodAbi() *structpb.Value {
	if x != nil {
		return x.MethodAbi
	}
	return nil
}

func (x *ContractWriteNode_MethodResult) GetSuccess() bool {
	if x != nil {
		return x.Success
	}
	return false
}

func (x *ContractWriteNode_MethodResult) GetError() string {
	if x != nil {
		return x.Error
	}
	return ""
}

func (x *ContractWriteNode_MethodResult) GetReceipt() *structpb.Value {
	if x != nil {
		return x.Receipt
	}
	return nil
}

func (x *ContractWriteNode_MethodResult) GetBlockNumber() uint64 {
	if x != nil && x.BlockNumber != nil {
		return *x.BlockNumber
	}
	return 0
}

func (x *ContractWriteNode_MethodResult) GetValue() *structpb.Value {
	if x != nil {
		return x.Value
	}
	return nil
}

type ContractReadNode_MethodCall struct {
	state         protoimpl.MessageState `protogen:"open.v1"`
	CallData      *string                `protobuf:"bytes,1,opt,name=call_data,json=callData,proto3,oneof" json:"call_data,omitempty"`            // Hex-encoded calldata for the method (used when methodParams is not provided)
	MethodName    string                 `protobuf:"bytes,2,opt,name=method_name,json=methodName,proto3" json:"method_name,omitempty"`            // Optional: method name for clarity (e.g. "latestRoundData")
	ApplyToFields []string               `protobuf:"bytes,3,rep,name=apply_to_fields,json=applyToFields,proto3" json:"apply_to_fields,omitempty"` // Fields to apply decimal formatting to (e.g. ["answer"])
	MethodParams  []string               `protobuf:"bytes,4,rep,name=method_params,json=methodParams,proto3" json:"method_params,omitempty"`      // Handlebars template for method parameters (e.g. "{{value.address}}")
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *ContractReadNode_MethodCall) Reset() {
	*x = ContractReadNode_MethodCall{}
	mi := &file_avs_proto_msgTypes[99]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *ContractReadNode_MethodCall) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*ContractReadNode_MethodCall) ProtoMessage() {}

func (x *ContractReadNode_MethodCall) ProtoReflect() protoreflect.Message {
	mi := &file_avs_proto_msgTypes[99]
	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 ContractReadNode_MethodCall.ProtoReflect.Descriptor instead.
func (*ContractReadNode_MethodCall) Descriptor() ([]byte, []int) {
	return file_avs_proto_rawDescGZIP(), []int{12, 0}
}

func (x *ContractReadNode_MethodCall) GetCallData() string {
	if x != nil && x.CallData != nil {
		return *x.CallData
	}
	return ""
}

func (x *ContractReadNode_MethodCall) GetMethodName() string {
	if x != nil {
		return x.MethodName
	}
	return ""
}

func (x *ContractReadNode_MethodCall) GetApplyToFields() []string {
	if x != nil {
		return x.ApplyToFields
	}
	return nil
}

func (x *ContractReadNode_MethodCall) GetMethodParams() []string {
	if x != nil {
		return x.MethodParams
	}
	return nil
}

type ContractReadNode_Config struct {
	state           protoimpl.MessageState `protogen:"open.v1"`
	ContractAddress string                 `protobuf:"bytes,1,opt,name=contract_address,json=contractAddress,proto3" json:"contract_address,omitempty"`
	// The ABI as array of ABI elements
	ContractAbi []*structpb.Value `protobuf:"bytes,2,rep,name=contract_abi,json=contractAbi,proto3" json:"contract_abi,omitempty"`
	// Array of method calls to execute serially
	MethodCalls   []*ContractReadNode_MethodCall `protobuf:"bytes,3,rep,name=method_calls,json=methodCalls,proto3" json:"method_calls,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *ContractReadNode_Config) Reset() {
	*x = ContractReadNode_Config{}
	mi := &file_avs_proto_msgTypes[100]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *ContractReadNode_Config) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*ContractReadNode_Config) ProtoMessage() {}

func (x *ContractReadNode_Config) ProtoReflect() protoreflect.Message {
	mi := &file_avs_proto_msgTypes[100]
	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 ContractReadNode_Config.ProtoReflect.Descriptor instead.
func (*ContractReadNode_Config) Descriptor() ([]byte, []int) {
	return file_avs_proto_rawDescGZIP(), []int{12, 1}
}

func (x *ContractReadNode_Config) GetContractAddress() string {
	if x != nil {
		return x.ContractAddress
	}
	return ""
}

func (x *ContractReadNode_Config) GetContractAbi() []*structpb.Value {
	if x != nil {
		return x.ContractAbi
	}
	return nil
}

func (x *ContractReadNode_Config) GetMethodCalls() []*ContractReadNode_MethodCall {
	if x != nil {
		return x.MethodCalls
	}
	return nil
}

type ContractReadNode_MethodResult struct {
	state protoimpl.MessageState                           `protogen:"open.v1"`
	Data  []*ContractReadNode_MethodResult_StructuredField `protobuf:"bytes,1,rep,name=data,proto3" json:"data,omitempty"`
	// Method metadata
	MethodName    string `protobuf:"bytes,2,opt,name=method_name,json=methodName,proto3" json:"method_name,omitempty"` // The name of the method called
	Success       bool   `protobuf:"varint,3,opt,name=success,proto3" json:"success,omitempty"`                        // Whether this specific method call succeeded
	Error         string `protobuf:"bytes,4,opt,name=error,proto3" json:"error,omitempty"`                             // Error message if the method call failed
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *ContractReadNode_MethodResult) Reset() {
	*x = ContractReadNode_MethodResult{}
	mi := &file_avs_proto_msgTypes[101]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *ContractReadNode_MethodResult) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*ContractReadNode_MethodResult) ProtoMessage() {}

func (x *ContractReadNode_MethodResult) ProtoReflect() protoreflect.Message {
	mi := &file_avs_proto_msgTypes[101]
	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 ContractReadNode_MethodResult.ProtoReflect.Descriptor instead.
func (*ContractReadNode_MethodResult) Descriptor() ([]byte, []int) {
	return file_avs_proto_rawDescGZIP(), []int{12, 2}
}

func (x *ContractReadNode_MethodResult) GetData() []*ContractReadNode_MethodResult_StructuredField {
	if x != nil {
		return x.Data
	}
	return nil
}

func (x *ContractReadNode_MethodResult) GetMethodName() string {
	if x != nil {
		return x.MethodName
	}
	return ""
}

func (x *ContractReadNode_MethodResult) GetSuccess() bool {
	if x != nil {
		return x.Success
	}
	return false
}

func (x *ContractReadNode_MethodResult) GetError() string {
	if x != nil {
		return x.Error
	}
	return ""
}

type ContractReadNode_Output struct {
	state protoimpl.MessageState `protogen:"open.v1"`
	// Changed from repeated MethodResult to google.protobuf.Value for better JavaScript native type support
	// Data will be a JSON array of method results with flattened key-value structure
	Data          *structpb.Value `protobuf:"bytes,1,opt,name=data,proto3" json:"data,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *ContractReadNode_Output) Reset() {
	*x = ContractReadNode_Output{}
	mi := &file_avs_proto_msgTypes[102]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *ContractReadNode_Output) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*ContractReadNode_Output) ProtoMessage() {}

func (x *ContractReadNode_Output) ProtoReflect() protoreflect.Message {
	mi := &file_avs_proto_msgTypes[102]
	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 ContractReadNode_Output.ProtoReflect.Descriptor instead.
func (*ContractReadNode_Output) Descriptor() ([]byte, []int) {
	return file_avs_proto_rawDescGZIP(), []int{12, 3}
}

func (x *ContractReadNode_Output) GetData() *structpb.Value {
	if x != nil {
		return x.Data
	}
	return nil
}

// Structured data with named fields based on method signature
type ContractReadNode_MethodResult_StructuredField struct {
	state         protoimpl.MessageState `protogen:"open.v1"`
	Name          string                 `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"`   // Field name from ABI (e.g. "roundId", "answer", "startedAt")
	Type          string                 `protobuf:"bytes,2,opt,name=type,proto3" json:"type,omitempty"`   // Solidity type (e.g. "uint80", "int256", "uint256")
	Value         string                 `protobuf:"bytes,3,opt,name=value,proto3" json:"value,omitempty"` // The actual value as string, client parses based on type
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *ContractReadNode_MethodResult_StructuredField) Reset() {
	*x = ContractReadNode_MethodResult_StructuredField{}
	mi := &file_avs_proto_msgTypes[103]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *ContractReadNode_MethodResult_StructuredField) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*ContractReadNode_MethodResult_StructuredField) ProtoMessage() {}

func (x *ContractReadNode_MethodResult_StructuredField) ProtoReflect() protoreflect.Message {
	mi := &file_avs_proto_msgTypes[103]
	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 ContractReadNode_MethodResult_StructuredField.ProtoReflect.Descriptor instead.
func (*ContractReadNode_MethodResult_StructuredField) Descriptor() ([]byte, []int) {
	return file_avs_proto_rawDescGZIP(), []int{12, 2, 0}
}

func (x *ContractReadNode_MethodResult_StructuredField) GetName() string {
	if x != nil {
		return x.Name
	}
	return ""
}

func (x *ContractReadNode_MethodResult_StructuredField) GetType() string {
	if x != nil {
		return x.Type
	}
	return ""
}

func (x *ContractReadNode_MethodResult_StructuredField) GetValue() string {
	if x != nil {
		return x.Value
	}
	return ""
}

type GraphQLQueryNode_Config struct {
	state protoimpl.MessageState `protogen:"open.v1"`
	// Static configuration set at node creation time
	Url           string            `protobuf:"bytes,1,opt,name=url,proto3" json:"url,omitempty"`
	Query         string            `protobuf:"bytes,2,opt,name=query,proto3" json:"query,omitempty"`
	Variables     map[string]string `protobuf:"bytes,3,rep,name=variables,proto3" json:"variables,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *GraphQLQueryNode_Config) Reset() {
	*x = GraphQLQueryNode_Config{}
	mi := &file_avs_proto_msgTypes[104]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *GraphQLQueryNode_Config) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*GraphQLQueryNode_Config) ProtoMessage() {}

func (x *GraphQLQueryNode_Config) ProtoReflect() protoreflect.Message {
	mi := &file_avs_proto_msgTypes[104]
	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 GraphQLQueryNode_Config.ProtoReflect.Descriptor instead.
func (*GraphQLQueryNode_Config) Descriptor() ([]byte, []int) {
	return file_avs_proto_rawDescGZIP(), []int{13, 0}
}

func (x *GraphQLQueryNode_Config) GetUrl() string {
	if x != nil {
		return x.Url
	}
	return ""
}

func (x *GraphQLQueryNode_Config) GetQuery() string {
	if x != nil {
		return x.Query
	}
	return ""
}

func (x *GraphQLQueryNode_Config) GetVariables() map[string]string {
	if x != nil {
		return x.Variables
	}
	return nil
}

type GraphQLQueryNode_Output struct {
	state protoimpl.MessageState `protogen:"open.v1"`
	// The data is the result of the graphql query. Because this is GraphQL, the data is a json object
	// The field of the json object is unknown, it depends on the query
	Data          *structpb.Value `protobuf:"bytes,1,opt,name=data,proto3" json:"data,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *GraphQLQueryNode_Output) Reset() {
	*x = GraphQLQueryNode_Output{}
	mi := &file_avs_proto_msgTypes[105]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *GraphQLQueryNode_Output) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*GraphQLQueryNode_Output) ProtoMessage() {}

func (x *GraphQLQueryNode_Output) ProtoReflect() protoreflect.Message {
	mi := &file_avs_proto_msgTypes[105]
	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 GraphQLQueryNode_Output.ProtoReflect.Descriptor instead.
func (*GraphQLQueryNode_Output) Descriptor() ([]byte, []int) {
	return file_avs_proto_rawDescGZIP(), []int{13, 1}
}

func (x *GraphQLQueryNode_Output) GetData() *structpb.Value {
	if x != nil {
		return x.Data
	}
	return nil
}

type RestAPINode_Config struct {
	state         protoimpl.MessageState `protogen:"open.v1"`
	Url           string                 `protobuf:"bytes,1,opt,name=url,proto3" json:"url,omitempty"`
	Headers       map[string]string      `protobuf:"bytes,2,rep,name=headers,proto3" json:"headers,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"`
	Body          string                 `protobuf:"bytes,3,opt,name=body,proto3" json:"body,omitempty"`
	Method        string                 `protobuf:"bytes,4,opt,name=method,proto3" json:"method,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *RestAPINode_Config) Reset() {
	*x = RestAPINode_Config{}
	mi := &file_avs_proto_msgTypes[107]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *RestAPINode_Config) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*RestAPINode_Config) ProtoMessage() {}

func (x *RestAPINode_Config) ProtoReflect() protoreflect.Message {
	mi := &file_avs_proto_msgTypes[107]
	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 RestAPINode_Config.ProtoReflect.Descriptor instead.
func (*RestAPINode_Config) Descriptor() ([]byte, []int) {
	return file_avs_proto_rawDescGZIP(), []int{14, 0}
}

func (x *RestAPINode_Config) GetUrl() string {
	if x != nil {
		return x.Url
	}
	return ""
}

func (x *RestAPINode_Config) GetHeaders() map[string]string {
	if x != nil {
		return x.Headers
	}
	return nil
}

func (x *RestAPINode_Config) GetBody() string {
	if x != nil {
		return x.Body
	}
	return ""
}

func (x *RestAPINode_Config) GetMethod() string {
	if x != nil {
		return x.Method
	}
	return ""
}

type RestAPINode_Output struct {
	state protoimpl.MessageState `protogen:"open.v1"`
	// Changed from google.protobuf.Any to google.protobuf.Value for better JavaScript native type support
	Data          *structpb.Value `protobuf:"bytes,1,opt,name=data,proto3" json:"data,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *RestAPINode_Output) Reset() {
	*x = RestAPINode_Output{}
	mi := &file_avs_proto_msgTypes[108]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *RestAPINode_Output) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*RestAPINode_Output) ProtoMessage() {}

func (x *RestAPINode_Output) ProtoReflect() protoreflect.Message {
	mi := &file_avs_proto_msgTypes[108]
	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 RestAPINode_Output.ProtoReflect.Descriptor instead.
func (*RestAPINode_Output) Descriptor() ([]byte, []int) {
	return file_avs_proto_rawDescGZIP(), []int{14, 1}
}

func (x *RestAPINode_Output) GetData() *structpb.Value {
	if x != nil {
		return x.Data
	}
	return nil
}

type CustomCodeNode_Config struct {
	state         protoimpl.MessageState `protogen:"open.v1"`
	Lang          Lang                   `protobuf:"varint,1,opt,name=lang,proto3,enum=aggregator.Lang" json:"lang,omitempty"` // Language is static config set at creation time
	Source        string                 `protobuf:"bytes,2,opt,name=source,proto3" json:"source,omitempty"`                   // Source code
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *CustomCodeNode_Config) Reset() {
	*x = CustomCodeNode_Config{}
	mi := &file_avs_proto_msgTypes[110]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *CustomCodeNode_Config) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*CustomCodeNode_Config) ProtoMessage() {}

func (x *CustomCodeNode_Config) ProtoReflect() protoreflect.Message {
	mi := &file_avs_proto_msgTypes[110]
	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 CustomCodeNode_Config.ProtoReflect.Descriptor instead.
func (*CustomCodeNode_Config) Descriptor() ([]byte, []int) {
	return file_avs_proto_rawDescGZIP(), []int{15, 0}
}

func (x *CustomCodeNode_Config) GetLang() Lang {
	if x != nil {
		return x.Lang
	}
	return Lang_JavaScript
}

func (x *CustomCodeNode_Config) GetSource() string {
	if x != nil {
		return x.Source
	}
	return ""
}

type CustomCodeNode_Output struct {
	state protoimpl.MessageState `protogen:"open.v1"`
	// Changed from google.protobuf.Any to google.protobuf.Value for better JavaScript native type support
	Data          *structpb.Value `protobuf:"bytes,1,opt,name=data,proto3" json:"data,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *CustomCodeNode_Output) Reset() {
	*x = CustomCodeNode_Output{}
	mi := &file_avs_proto_msgTypes[111]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *CustomCodeNode_Output) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*CustomCodeNode_Output) ProtoMessage() {}

func (x *CustomCodeNode_Output) ProtoReflect() protoreflect.Message {
	mi := &file_avs_proto_msgTypes[111]
	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 CustomCodeNode_Output.ProtoReflect.Descriptor instead.
func (*CustomCodeNode_Output) Descriptor() ([]byte, []int) {
	return file_avs_proto_rawDescGZIP(), []int{15, 1}
}

func (x *CustomCodeNode_Output) GetData() *structpb.Value {
	if x != nil {
		return x.Data
	}
	return nil
}

type BranchNode_Condition struct {
	state         protoimpl.MessageState `protogen:"open.v1"`
	Id            string                 `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"`
	Type          string                 `protobuf:"bytes,2,opt,name=type,proto3" json:"type,omitempty"`
	Expression    string                 `protobuf:"bytes,3,opt,name=expression,proto3" json:"expression,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *BranchNode_Condition) Reset() {
	*x = BranchNode_Condition{}
	mi := &file_avs_proto_msgTypes[112]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *BranchNode_Condition) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*BranchNode_Condition) ProtoMessage() {}

func (x *BranchNode_Condition) ProtoReflect() protoreflect.Message {
	mi := &file_avs_proto_msgTypes[112]
	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 BranchNode_Condition.ProtoReflect.Descriptor instead.
func (*BranchNode_Condition) Descriptor() ([]byte, []int) {
	return file_avs_proto_rawDescGZIP(), []int{16, 0}
}

func (x *BranchNode_Condition) GetId() string {
	if x != nil {
		return x.Id
	}
	return ""
}

func (x *BranchNode_Condition) GetType() string {
	if x != nil {
		return x.Type
	}
	return ""
}

func (x *BranchNode_Condition) GetExpression() string {
	if x != nil {
		return x.Expression
	}
	return ""
}

type BranchNode_Config struct {
	state         protoimpl.MessageState  `protogen:"open.v1"`
	Conditions    []*BranchNode_Condition `protobuf:"bytes,1,rep,name=conditions,proto3" json:"conditions,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *BranchNode_Config) Reset() {
	*x = BranchNode_Config{}
	mi := &file_avs_proto_msgTypes[113]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *BranchNode_Config) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*BranchNode_Config) ProtoMessage() {}

func (x *BranchNode_Config) ProtoReflect() protoreflect.Message {
	mi := &file_avs_proto_msgTypes[113]
	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 BranchNode_Config.ProtoReflect.Descriptor instead.
func (*BranchNode_Config) Descriptor() ([]byte, []int) {
	return file_avs_proto_rawDescGZIP(), []int{16, 1}
}

func (x *BranchNode_Config) GetConditions() []*BranchNode_Condition {
	if x != nil {
		return x.Conditions
	}
	return nil
}

type BranchNode_Output struct {
	state protoimpl.MessageState `protogen:"open.v1"`
	// the output of the branch node contains the condition evaluation results
	// the execution will continue to the next node belong to this condition
	// In front-end, when rendering the historical execution, we can draw the relationship coming out of the condition that match this id
	Data          *structpb.Value `protobuf:"bytes,1,opt,name=data,proto3" json:"data,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *BranchNode_Output) Reset() {
	*x = BranchNode_Output{}
	mi := &file_avs_proto_msgTypes[114]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *BranchNode_Output) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*BranchNode_Output) ProtoMessage() {}

func (x *BranchNode_Output) ProtoReflect() protoreflect.Message {
	mi := &file_avs_proto_msgTypes[114]
	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 BranchNode_Output.ProtoReflect.Descriptor instead.
func (*BranchNode_Output) Descriptor() ([]byte, []int) {
	return file_avs_proto_rawDescGZIP(), []int{16, 2}
}

func (x *BranchNode_Output) GetData() *structpb.Value {
	if x != nil {
		return x.Data
	}
	return nil
}

type FilterNode_Config struct {
	state protoimpl.MessageState `protogen:"open.v1"`
	// Filter node acts like .select or .filter to pluck out element in an array that evaluate the expression to true
	Expression string `protobuf:"bytes,1,opt,name=expression,proto3" json:"expression,omitempty"`
	// The name of the input node whose output data will be filtered.
	// The data should be iterable (array, object, etc.). Runtime validation will check compatibility.
	InputNodeName string `protobuf:"bytes,2,opt,name=input_node_name,json=inputNodeName,proto3" json:"input_node_name,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *FilterNode_Config) Reset() {
	*x = FilterNode_Config{}
	mi := &file_avs_proto_msgTypes[115]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *FilterNode_Config) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*FilterNode_Config) ProtoMessage() {}

func (x *FilterNode_Config) ProtoReflect() protoreflect.Message {
	mi := &file_avs_proto_msgTypes[115]
	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 FilterNode_Config.ProtoReflect.Descriptor instead.
func (*FilterNode_Config) Descriptor() ([]byte, []int) {
	return file_avs_proto_rawDescGZIP(), []int{17, 0}
}

func (x *FilterNode_Config) GetExpression() string {
	if x != nil {
		return x.Expression
	}
	return ""
}

func (x *FilterNode_Config) GetInputNodeName() string {
	if x != nil {
		return x.InputNodeName
	}
	return ""
}

type FilterNode_Output struct {
	state protoimpl.MessageState `protogen:"open.v1"`
	// the output of the filter node is the filtered array after apply the filter expression. It works similar to filter of javascript
	Data          *structpb.Value `protobuf:"bytes,1,opt,name=data,proto3" json:"data,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *FilterNode_Output) Reset() {
	*x = FilterNode_Output{}
	mi := &file_avs_proto_msgTypes[116]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *FilterNode_Output) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*FilterNode_Output) ProtoMessage() {}

func (x *FilterNode_Output) ProtoReflect() protoreflect.Message {
	mi := &file_avs_proto_msgTypes[116]
	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 FilterNode_Output.ProtoReflect.Descriptor instead.
func (*FilterNode_Output) Descriptor() ([]byte, []int) {
	return file_avs_proto_rawDescGZIP(), []int{17, 1}
}

func (x *FilterNode_Output) GetData() *structpb.Value {
	if x != nil {
		return x.Data
	}
	return nil
}

type LoopNode_Config struct {
	state protoimpl.MessageState `protogen:"open.v1"`
	// The name of the input node whose output data will be iterated over.
	InputNodeName string `protobuf:"bytes,1,opt,name=input_node_name,json=inputNodeName,proto3" json:"input_node_name,omitempty"`
	// iter_val is the variable name that will hold the current value during each iteration
	IterVal string `protobuf:"bytes,2,opt,name=iter_val,json=iterVal,proto3" json:"iter_val,omitempty"`
	// iter_key is the variable name that will hold the current key/index during each iteration
	IterKey string `protobuf:"bytes,3,opt,name=iter_key,json=iterKey,proto3" json:"iter_key,omitempty"`
	// execution_mode determines whether iterations run in parallel or sequentially
	// Note: ContractWrite operations always run sequentially regardless of this setting
	ExecutionMode ExecutionMode `protobuf:"varint,4,opt,name=execution_mode,json=executionMode,proto3,enum=aggregator.ExecutionMode" json:"execution_mode,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *LoopNode_Config) Reset() {
	*x = LoopNode_Config{}
	mi := &file_avs_proto_msgTypes[117]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *LoopNode_Config) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*LoopNode_Config) ProtoMessage() {}

func (x *LoopNode_Config) ProtoReflect() protoreflect.Message {
	mi := &file_avs_proto_msgTypes[117]
	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 LoopNode_Config.ProtoReflect.Descriptor instead.
func (*LoopNode_Config) Descriptor() ([]byte, []int) {
	return file_avs_proto_rawDescGZIP(), []int{18, 0}
}

func (x *LoopNode_Config) GetInputNodeName() string {
	if x != nil {
		return x.InputNodeName
	}
	return ""
}

func (x *LoopNode_Config) GetIterVal() string {
	if x != nil {
		return x.IterVal
	}
	return ""
}

func (x *LoopNode_Config) GetIterKey() string {
	if x != nil {
		return x.IterKey
	}
	return ""
}

func (x *LoopNode_Config) GetExecutionMode() ExecutionMode {
	if x != nil {
		return x.ExecutionMode
	}
	return ExecutionMode_EXECUTION_MODE_SEQUENTIAL
}

type LoopNode_Output struct {
	state         protoimpl.MessageState `protogen:"open.v1"`
	Data          *structpb.Value        `protobuf:"bytes,1,opt,name=data,proto3" json:"data,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *LoopNode_Output) Reset() {
	*x = LoopNode_Output{}
	mi := &file_avs_proto_msgTypes[118]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *LoopNode_Output) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*LoopNode_Output) ProtoMessage() {}

func (x *LoopNode_Output) ProtoReflect() protoreflect.Message {
	mi := &file_avs_proto_msgTypes[118]
	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 LoopNode_Output.ProtoReflect.Descriptor instead.
func (*LoopNode_Output) Descriptor() ([]byte, []int) {
	return file_avs_proto_rawDescGZIP(), []int{18, 1}
}

func (x *LoopNode_Output) GetData() *structpb.Value {
	if x != nil {
		return x.Data
	}
	return nil
}

type Execution_Step struct {
	state protoimpl.MessageState `protogen:"open.v1"`
	Id    string                 `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"`
	// Unified type field - can be trigger type (MANUAL, BLOCK, etc) or node type (CUSTOM_CODE, REST_API, etc)
	Type      string    `protobuf:"bytes,17,opt,name=type,proto3" json:"type,omitempty"`
	Name      string    `protobuf:"bytes,18,opt,name=name,proto3" json:"name,omitempty"`
	Success   bool      `protobuf:"varint,2,opt,name=success,proto3" json:"success,omitempty"`
	Error     string    `protobuf:"bytes,13,opt,name=error,proto3" json:"error,omitempty"`
	ErrorCode ErrorCode `protobuf:"varint,31,opt,name=error_code,json=errorCode,proto3,enum=aggregator.ErrorCode" json:"error_code,omitempty"`
	Log       string    `protobuf:"bytes,12,opt,name=log,proto3" json:"log,omitempty"`
	Inputs    []string  `protobuf:"bytes,16,rep,name=inputs,proto3" json:"inputs,omitempty"`
	// Configuration data that was set on this trigger/node
	Config *structpb.Value `protobuf:"bytes,19,opt,name=config,proto3" json:"config,omitempty"`
	// Optional structured metadata for testing/debugging; not consumed by subsequent nodes
	Metadata *structpb.Value `protobuf:"bytes,25,opt,name=metadata,proto3" json:"metadata,omitempty"`
	// Optional execution context for runtime flags and extra info (e.g., is_simulated)
	ExecutionContext *structpb.Value `protobuf:"bytes,26,opt,name=execution_context,json=executionContext,proto3" json:"execution_context,omitempty"`
	// Gas cost tracking fields for blockchain operations (contract_write, eth_transfer)
	// Units are in wei for precision. Use string for large numbers to avoid overflow.
	GasUsed      string `protobuf:"bytes,27,opt,name=gas_used,json=gasUsed,proto3" json:"gas_used,omitempty"`                  // Amount of gas consumed by the transaction
	GasPrice     string `protobuf:"bytes,28,opt,name=gas_price,json=gasPrice,proto3" json:"gas_price,omitempty"`               // Gas price in wei per gas unit
	TotalGasCost string `protobuf:"bytes,29,opt,name=total_gas_cost,json=totalGasCost,proto3" json:"total_gas_cost,omitempty"` // Total cost (gas_used * gas_price) in wei
	// Types that are valid to be assigned to OutputData:
	//
	//	*Execution_Step_BlockTrigger
	//	*Execution_Step_FixedTimeTrigger
	//	*Execution_Step_CronTrigger
	//	*Execution_Step_EventTrigger
	//	*Execution_Step_ManualTrigger
	//	*Execution_Step_EthTransfer
	//	*Execution_Step_Graphql
	//	*Execution_Step_ContractRead
	//	*Execution_Step_ContractWrite
	//	*Execution_Step_CustomCode
	//	*Execution_Step_RestApi
	//	*Execution_Step_Branch
	//	*Execution_Step_Filter
	//	*Execution_Step_Loop
	OutputData isExecution_Step_OutputData `protobuf_oneof:"output_data"`
	// timestamp when step started (in milliseconds)
	StartAt int64 `protobuf:"varint,14,opt,name=start_at,json=startAt,proto3" json:"start_at,omitempty"`
	// timestamp when step ended (in milliseconds)
	EndAt         int64 `protobuf:"varint,15,opt,name=end_at,json=endAt,proto3" json:"end_at,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *Execution_Step) Reset() {
	*x = Execution_Step{}
	mi := &file_avs_proto_msgTypes[119]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *Execution_Step) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*Execution_Step) ProtoMessage() {}

func (x *Execution_Step) ProtoReflect() protoreflect.Message {
	mi := &file_avs_proto_msgTypes[119]
	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 Execution_Step.ProtoReflect.Descriptor instead.
func (*Execution_Step) Descriptor() ([]byte, []int) {
	return file_avs_proto_rawDescGZIP(), []int{21, 0}
}

func (x *Execution_Step) GetId() string {
	if x != nil {
		return x.Id
	}
	return ""
}

func (x *Execution_Step) GetType() string {
	if x != nil {
		return x.Type
	}
	return ""
}

func (x *Execution_Step) GetName() string {
	if x != nil {
		return x.Name
	}
	return ""
}

func (x *Execution_Step) GetSuccess() bool {
	if x != nil {
		return x.Success
	}
	return false
}

func (x *Execution_Step) GetError() string {
	if x != nil {
		return x.Error
	}
	return ""
}

func (x *Execution_Step) GetErrorCode() ErrorCode {
	if x != nil {
		return x.ErrorCode
	}
	return ErrorCode_ERROR_CODE_UNSPECIFIED
}

func (x *Execution_Step) GetLog() string {
	if x != nil {
		return x.Log
	}
	return ""
}

func (x *Execution_Step) GetInputs() []string {
	if x != nil {
		return x.Inputs
	}
	return nil
}

func (x *Execution_Step) GetConfig() *structpb.Value {
	if x != nil {
		return x.Config
	}
	return nil
}

func (x *Execution_Step) GetMetadata() *structpb.Value {
	if x != nil {
		return x.Metadata
	}
	return nil
}

func (x *Execution_Step) GetExecutionContext() *structpb.Value {
	if x != nil {
		return x.ExecutionContext
	}
	return nil
}

func (x *Execution_Step) GetGasUsed() string {
	if x != nil {
		return x.GasUsed
	}
	return ""
}

func (x *Execution_Step) GetGasPrice() string {
	if x != nil {
		return x.GasPrice
	}
	return ""
}

func (x *Execution_Step) GetTotalGasCost() string {
	if x != nil {
		return x.TotalGasCost
	}
	return ""
}

func (x *Execution_Step) GetOutputData() isExecution_Step_OutputData {
	if x != nil {
		return x.OutputData
	}
	return nil
}

func (x *Execution_Step) GetBlockTrigger() *BlockTrigger_Output {
	if x != nil {
		if x, ok := x.OutputData.(*Execution_Step_BlockTrigger); ok {
			return x.BlockTrigger
		}
	}
	return nil
}

func (x *Execution_Step) GetFixedTimeTrigger() *FixedTimeTrigger_Output {
	if x != nil {
		if x, ok := x.OutputData.(*Execution_Step_FixedTimeTrigger); ok {
			return x.FixedTimeTrigger
		}
	}
	return nil
}

func (x *Execution_Step) GetCronTrigger() *CronTrigger_Output {
	if x != nil {
		if x, ok := x.OutputData.(*Execution_Step_CronTrigger); ok {
			return x.CronTrigger
		}
	}
	return nil
}

func (x *Execution_Step) GetEventTrigger() *EventTrigger_Output {
	if x != nil {
		if x, ok := x.OutputData.(*Execution_Step_EventTrigger); ok {
			return x.EventTrigger
		}
	}
	return nil
}

func (x *Execution_Step) GetManualTrigger() *ManualTrigger_Output {
	if x != nil {
		if x, ok := x.OutputData.(*Execution_Step_ManualTrigger); ok {
			return x.ManualTrigger
		}
	}
	return nil
}

func (x *Execution_Step) GetEthTransfer() *ETHTransferNode_Output {
	if x != nil {
		if x, ok := x.OutputData.(*Execution_Step_EthTransfer); ok {
			return x.EthTransfer
		}
	}
	return nil
}

func (x *Execution_Step) GetGraphql() *GraphQLQueryNode_Output {
	if x != nil {
		if x, ok := x.OutputData.(*Execution_Step_Graphql); ok {
			return x.Graphql
		}
	}
	return nil
}

func (x *Execution_Step) GetContractRead() *ContractReadNode_Output {
	if x != nil {
		if x, ok := x.OutputData.(*Execution_Step_ContractRead); ok {
			return x.ContractRead
		}
	}
	return nil
}

func (x *Execution_Step) GetContractWrite() *ContractWriteNode_Output {
	if x != nil {
		if x, ok := x.OutputData.(*Execution_Step_ContractWrite); ok {
			return x.ContractWrite
		}
	}
	return nil
}

func (x *Execution_Step) GetCustomCode() *CustomCodeNode_Output {
	if x != nil {
		if x, ok := x.OutputData.(*Execution_Step_CustomCode); ok {
			return x.CustomCode
		}
	}
	return nil
}

func (x *Execution_Step) GetRestApi() *RestAPINode_Output {
	if x != nil {
		if x, ok := x.OutputData.(*Execution_Step_RestApi); ok {
			return x.RestApi
		}
	}
	return nil
}

func (x *Execution_Step) GetBranch() *BranchNode_Output {
	if x != nil {
		if x, ok := x.OutputData.(*Execution_Step_Branch); ok {
			return x.Branch
		}
	}
	return nil
}

func (x *Execution_Step) GetFilter() *FilterNode_Output {
	if x != nil {
		if x, ok := x.OutputData.(*Execution_Step_Filter); ok {
			return x.Filter
		}
	}
	return nil
}

func (x *Execution_Step) GetLoop() *LoopNode_Output {
	if x != nil {
		if x, ok := x.OutputData.(*Execution_Step_Loop); ok {
			return x.Loop
		}
	}
	return nil
}

func (x *Execution_Step) GetStartAt() int64 {
	if x != nil {
		return x.StartAt
	}
	return 0
}

func (x *Execution_Step) GetEndAt() int64 {
	if x != nil {
		return x.EndAt
	}
	return 0
}

type isExecution_Step_OutputData interface {
	isExecution_Step_OutputData()
}

type Execution_Step_BlockTrigger struct {
	// Trigger outputs
	BlockTrigger *BlockTrigger_Output `protobuf:"bytes,20,opt,name=block_trigger,json=blockTrigger,proto3,oneof"`
}

type Execution_Step_FixedTimeTrigger struct {
	FixedTimeTrigger *FixedTimeTrigger_Output `protobuf:"bytes,21,opt,name=fixed_time_trigger,json=fixedTimeTrigger,proto3,oneof"`
}

type Execution_Step_CronTrigger struct {
	CronTrigger *CronTrigger_Output `protobuf:"bytes,22,opt,name=cron_trigger,json=cronTrigger,proto3,oneof"`
}

type Execution_Step_EventTrigger struct {
	EventTrigger *EventTrigger_Output `protobuf:"bytes,23,opt,name=event_trigger,json=eventTrigger,proto3,oneof"`
}

type Execution_Step_ManualTrigger struct {
	ManualTrigger *ManualTrigger_Output `protobuf:"bytes,24,opt,name=manual_trigger,json=manualTrigger,proto3,oneof"`
}

type Execution_Step_EthTransfer struct {
	// Node outputs
	EthTransfer *ETHTransferNode_Output `protobuf:"bytes,3,opt,name=eth_transfer,json=ethTransfer,proto3,oneof"`
}

type Execution_Step_Graphql struct {
	Graphql *GraphQLQueryNode_Output `protobuf:"bytes,4,opt,name=graphql,proto3,oneof"`
}

type Execution_Step_ContractRead struct {
	ContractRead *ContractReadNode_Output `protobuf:"bytes,5,opt,name=contract_read,json=contractRead,proto3,oneof"`
}

type Execution_Step_ContractWrite struct {
	ContractWrite *ContractWriteNode_Output `protobuf:"bytes,6,opt,name=contract_write,json=contractWrite,proto3,oneof"`
}

type Execution_Step_CustomCode struct {
	CustomCode *CustomCodeNode_Output `protobuf:"bytes,7,opt,name=custom_code,json=customCode,proto3,oneof"`
}

type Execution_Step_RestApi struct {
	RestApi *RestAPINode_Output `protobuf:"bytes,8,opt,name=rest_api,json=restApi,proto3,oneof"`
}

type Execution_Step_Branch struct {
	Branch *BranchNode_Output `protobuf:"bytes,9,opt,name=branch,proto3,oneof"`
}

type Execution_Step_Filter struct {
	Filter *FilterNode_Output `protobuf:"bytes,10,opt,name=filter,proto3,oneof"`
}

type Execution_Step_Loop struct {
	Loop *LoopNode_Output `protobuf:"bytes,11,opt,name=loop,proto3,oneof"`
}

func (*Execution_Step_BlockTrigger) isExecution_Step_OutputData() {}

func (*Execution_Step_FixedTimeTrigger) isExecution_Step_OutputData() {}

func (*Execution_Step_CronTrigger) isExecution_Step_OutputData() {}

func (*Execution_Step_EventTrigger) isExecution_Step_OutputData() {}

func (*Execution_Step_ManualTrigger) isExecution_Step_OutputData() {}

func (*Execution_Step_EthTransfer) isExecution_Step_OutputData() {}

func (*Execution_Step_Graphql) isExecution_Step_OutputData() {}

func (*Execution_Step_ContractRead) isExecution_Step_OutputData() {}

func (*Execution_Step_ContractWrite) isExecution_Step_OutputData() {}

func (*Execution_Step_CustomCode) isExecution_Step_OutputData() {}

func (*Execution_Step_RestApi) isExecution_Step_OutputData() {}

func (*Execution_Step_Branch) isExecution_Step_OutputData() {}

func (*Execution_Step_Filter) isExecution_Step_OutputData() {}

func (*Execution_Step_Loop) isExecution_Step_OutputData() {}

var File_avs_proto protoreflect.FileDescriptor

const file_avs_proto_rawDesc = "" +
	"\n" +
	"\tavs.proto\x12\n" +
	"aggregator\x1a\x1cgoogle/protobuf/struct.proto\"q\n" +
	"\rTokenMetadata\x12\x18\n" +
	"\aaddress\x18\x01 \x01(\tR\aaddress\x12\x12\n" +
	"\x04name\x18\x02 \x01(\tR\x04name\x12\x16\n" +
	"\x06symbol\x18\x03 \x01(\tR\x06symbol\x12\x1a\n" +
	"\bdecimals\x18\x04 \x01(\rR\bdecimals\"/\n" +
	"\x13GetTokenMetadataReq\x12\x18\n" +
	"\aaddress\x18\x01 \x01(\tR\aaddress\"u\n" +
	"\x14GetTokenMetadataResp\x12/\n" +
	"\x05token\x18\x01 \x01(\v2\x19.aggregator.TokenMetadataR\x05token\x12\x14\n" +
	"\x05found\x18\x02 \x01(\bR\x05found\x12\x16\n" +
	"\x06source\x18\x03 \x01(\tR\x06source\"\x17\n" +
	"\x05IdReq\x12\x0e\n" +
	"\x02id\x18\x01 \x01(\tR\x02id\"\xa7\x01\n" +
	"\x10FixedTimeTrigger\x12;\n" +
	"\x06config\x18\x01 \x01(\v2#.aggregator.FixedTimeTrigger.ConfigR\x06config\x1a \n" +
	"\x06Config\x12\x16\n" +
	"\x06epochs\x18\x01 \x03(\x03R\x06epochs\x1a4\n" +
	"\x06Output\x12*\n" +
	"\x04data\x18\x01 \x01(\v2\x16.google.protobuf.ValueR\x04data\"\xa3\x01\n" +
	"\vCronTrigger\x126\n" +
	"\x06config\x18\x01 \x01(\v2\x1e.aggregator.CronTrigger.ConfigR\x06config\x1a&\n" +
	"\x06Config\x12\x1c\n" +
	"\tschedules\x18\x01 \x03(\tR\tschedules\x1a4\n" +
	"\x06Output\x12*\n" +
	"\x04data\x18\x01 \x01(\v2\x16.google.protobuf.ValueR\x04data\"\xa3\x01\n" +
	"\fBlockTrigger\x127\n" +
	"\x06config\x18\x01 \x01(\v2\x1f.aggregator.BlockTrigger.ConfigR\x06config\x1a$\n" +
	"\x06Config\x12\x1a\n" +
	"\binterval\x18\x01 \x01(\x03R\binterval\x1a4\n" +
	"\x06Output\x12*\n" +
	"\x04data\x18\x01 \x01(\v2\x16.google.protobuf.ValueR\x04data\"\xff\x05\n" +
	"\fEventTrigger\x127\n" +
	"\x06config\x18\x01 \x01(\v2\x1f.aggregator.EventTrigger.ConfigR\x06config\x1a\xec\x02\n" +
	"\x05Query\x12\x1c\n" +
	"\taddresses\x18\x01 \x03(\tR\taddresses\x127\n" +
	"\x06topics\x18\x02 \x03(\v2\x1f.aggregator.EventTrigger.TopicsR\x06topics\x124\n" +
	"\x14max_events_per_block\x18\x03 \x01(\rH\x00R\x11maxEventsPerBlock\x88\x01\x01\x129\n" +
	"\fcontract_abi\x18\x04 \x03(\v2\x16.google.protobuf.ValueR\vcontractAbi\x12:\n" +
	"\n" +
	"conditions\x18\x05 \x03(\v2\x1a.aggregator.EventConditionR\n" +
	"conditions\x12F\n" +
	"\fmethod_calls\x18\x06 \x03(\v2#.aggregator.EventTrigger.MethodCallR\vmethodCallsB\x17\n" +
	"\x15_max_events_per_block\x1a\xaa\x01\n" +
	"\n" +
	"MethodCall\x12\x1f\n" +
	"\vmethod_name\x18\x01 \x01(\tR\n" +
	"methodName\x12 \n" +
	"\tcall_data\x18\x02 \x01(\tH\x00R\bcallData\x88\x01\x01\x12&\n" +
	"\x0fapply_to_fields\x18\x03 \x03(\tR\rapplyToFields\x12#\n" +
	"\rmethod_params\x18\x04 \x03(\tR\fmethodParamsB\f\n" +
	"\n" +
	"_call_data\x1a \n" +
	"\x06Topics\x12\x16\n" +
	"\x06values\x18\x01 \x03(\tR\x06values\x1aB\n" +
	"\x06Config\x128\n" +
	"\aqueries\x18\x01 \x03(\v2\x1e.aggregator.EventTrigger.QueryR\aqueries\x1a4\n" +
	"\x06Output\x12*\n" +
	"\x04data\x18\x01 \x01(\v2\x16.google.protobuf.ValueR\x04data\"\xcc\x03\n" +
	"\rManualTrigger\x128\n" +
	"\x06config\x18\x01 \x01(\v2 .aggregator.ManualTrigger.ConfigR\x06config\x1a\xca\x02\n" +
	"\x06Config\x12*\n" +
	"\x04data\x18\x01 \x01(\v2\x16.google.protobuf.ValueR\x04data\x12G\n" +
	"\aheaders\x18\x02 \x03(\v2-.aggregator.ManualTrigger.Config.HeadersEntryR\aheaders\x12P\n" +
	"\n" +
	"pathParams\x18\x03 \x03(\v20.aggregator.ManualTrigger.Config.PathParamsEntryR\n" +
	"pathParams\x1a:\n" +
	"\fHeadersEntry\x12\x10\n" +
	"\x03key\x18\x01 \x01(\tR\x03key\x12\x14\n" +
	"\x05value\x18\x02 \x01(\tR\x05value:\x028\x01\x1a=\n" +
	"\x0fPathParamsEntry\x12\x10\n" +
	"\x03key\x18\x01 \x01(\tR\x03key\x12\x14\n" +
	"\x05value\x18\x02 \x01(\tR\x05value:\x028\x01\x1a4\n" +
	"\x06Output\x12*\n" +
	"\x04data\x18\x01 \x01(\v2\x16.google.protobuf.ValueR\x04data\"\xf5\x02\n" +
	"\vTaskTrigger\x12\x12\n" +
	"\x04name\x18\x01 \x01(\tR\x04name\x12+\n" +
	"\x04type\x18\b \x01(\x0e2\x17.aggregator.TriggerTypeR\x04type\x123\n" +
	"\x06manual\x18\x02 \x01(\v2\x19.aggregator.ManualTriggerH\x00R\x06manual\x12=\n" +
	"\n" +
	"fixed_time\x18\x03 \x01(\v2\x1c.aggregator.FixedTimeTriggerH\x00R\tfixedTime\x12-\n" +
	"\x04cron\x18\x04 \x01(\v2\x17.aggregator.CronTriggerH\x00R\x04cron\x120\n" +
	"\x05block\x18\x05 \x01(\v2\x18.aggregator.BlockTriggerH\x00R\x05block\x120\n" +
	"\x05event\x18\x06 \x01(\v2\x18.aggregator.EventTriggerH\x00R\x05event\x12\x0e\n" +
	"\x02id\x18\a \x01(\tR\x02idB\x0e\n" +
	"\ftrigger_type\"\xc7\x01\n" +
	"\x0fETHTransferNode\x12:\n" +
	"\x06config\x18\x01 \x01(\v2\".aggregator.ETHTransferNode.ConfigR\x06config\x1aB\n" +
	"\x06Config\x12 \n" +
	"\vdestination\x18\x01 \x01(\tR\vdestination\x12\x16\n" +
	"\x06amount\x18\x02 \x01(\tR\x06amount\x1a4\n" +
	"\x06Output\x12*\n" +
	"\x04data\x18\x01 \x01(\v2\x16.google.protobuf.ValueR\x04data\"\xc1\x06\n" +
	"\x11ContractWriteNode\x12<\n" +
	"\x06config\x18\x01 \x01(\v2$.aggregator.ContractWriteNode.ConfigR\x06config\x1a\xd8\x01\n" +
	"\x06Config\x12)\n" +
	"\x10contract_address\x18\x01 \x01(\tR\x0fcontractAddress\x12\x1b\n" +
	"\tcall_data\x18\x02 \x01(\tR\bcallData\x129\n" +
	"\fcontract_abi\x18\x03 \x03(\v2\x16.google.protobuf.ValueR\vcontractAbi\x12K\n" +
	"\fmethod_calls\x18\x04 \x03(\v2(.aggregator.ContractWriteNode.MethodCallR\vmethodCalls\x1a\xaa\x01\n" +
	"\n" +
	"MethodCall\x12 \n" +
	"\tcall_data\x18\x01 \x01(\tH\x00R\bcallData\x88\x01\x01\x12\x1f\n" +
	"\vmethod_name\x18\x02 \x01(\tR\n" +
	"methodName\x12&\n" +
	"\x0fapply_to_fields\x18\x03 \x03(\tR\rapplyToFields\x12#\n" +
	"\rmethod_params\x18\x04 \x03(\tR\fmethodParamsB\f\n" +
	"\n" +
	"_call_data\x1a4\n" +
	"\x06Output\x12*\n" +
	"\x04data\x18\x01 \x01(\v2\x16.google.protobuf.ValueR\x04data\x1a\xaf\x02\n" +
	"\fMethodResult\x12\x1f\n" +
	"\vmethod_name\x18\x01 \x01(\tR\n" +
	"methodName\x125\n" +
	"\n" +
	"method_abi\x18\x02 \x01(\v2\x16.google.protobuf.ValueR\tmethodAbi\x12\x18\n" +
	"\asuccess\x18\x03 \x01(\bR\asuccess\x12\x14\n" +
	"\x05error\x18\x04 \x01(\tR\x05error\x120\n" +
	"\areceipt\x18\x05 \x01(\v2\x16.google.protobuf.ValueR\areceipt\x12&\n" +
	"\fblock_number\x18\x06 \x01(\x04H\x00R\vblockNumber\x88\x01\x01\x12,\n" +
	"\x05value\x18\a \x01(\v2\x16.google.protobuf.ValueR\x05valueB\x0f\n" +
	"\r_block_number\"\xf1\x05\n" +
	"\x10ContractReadNode\x12;\n" +
	"\x06config\x18\x01 \x01(\v2#.aggregator.ContractReadNode.ConfigR\x06config\x1a\xaa\x01\n" +
	"\n" +
	"MethodCall\x12 \n" +
	"\tcall_data\x18\x01 \x01(\tH\x00R\bcallData\x88\x01\x01\x12\x1f\n" +
	"\vmethod_name\x18\x02 \x01(\tR\n" +
	"methodName\x12&\n" +
	"\x0fapply_to_fields\x18\x03 \x03(\tR\rapplyToFields\x12#\n" +
	"\rmethod_params\x18\x04 \x03(\tR\fmethodParamsB\f\n" +
	"\n" +
	"_call_data\x1a\xba\x01\n" +
	"\x06Config\x12)\n" +
	"\x10contract_address\x18\x01 \x01(\tR\x0fcontractAddress\x129\n" +
	"\fcontract_abi\x18\x02 \x03(\v2\x16.google.protobuf.ValueR\vcontractAbi\x12J\n" +
	"\fmethod_calls\x18\x03 \x03(\v2'.aggregator.ContractReadNode.MethodCallR\vmethodCalls\x1a\xff\x01\n" +
	"\fMethodResult\x12M\n" +
	"\x04data\x18\x01 \x03(\v29.aggregator.ContractReadNode.MethodResult.StructuredFieldR\x04data\x12\x1f\n" +
	"\vmethod_name\x18\x02 \x01(\tR\n" +
	"methodName\x12\x18\n" +
	"\asuccess\x18\x03 \x01(\bR\asuccess\x12\x14\n" +
	"\x05error\x18\x04 \x01(\tR\x05error\x1aO\n" +
	"\x0fStructuredField\x12\x12\n" +
	"\x04name\x18\x01 \x01(\tR\x04name\x12\x12\n" +
	"\x04type\x18\x02 \x01(\tR\x04type\x12\x14\n" +
	"\x05value\x18\x03 \x01(\tR\x05value\x1a4\n" +
	"\x06Output\x12*\n" +
	"\x04data\x18\x01 \x01(\v2\x16.google.protobuf.ValueR\x04data\"\xc8\x02\n" +
	"\x10GraphQLQueryNode\x12;\n" +
	"\x06config\x18\x01 \x01(\v2#.aggregator.GraphQLQueryNode.ConfigR\x06config\x1a\xc0\x01\n" +
	"\x06Config\x12\x10\n" +
	"\x03url\x18\x01 \x01(\tR\x03url\x12\x14\n" +
	"\x05query\x18\x02 \x01(\tR\x05query\x12P\n" +
	"\tvariables\x18\x03 \x03(\v22.aggregator.GraphQLQueryNode.Config.VariablesEntryR\tvariables\x1a<\n" +
	"\x0eVariablesEntry\x12\x10\n" +
	"\x03key\x18\x01 \x01(\tR\x03key\x12\x14\n" +
	"\x05value\x18\x02 \x01(\tR\x05value:\x028\x01\x1a4\n" +
	"\x06Output\x12*\n" +
	"\x04data\x18\x01 \x01(\v2\x16.google.protobuf.ValueR\x04data\"\xc7\x02\n" +
	"\vRestAPINode\x126\n" +
	"\x06config\x18\x01 \x01(\v2\x1e.aggregator.RestAPINode.ConfigR\x06config\x1a\xc9\x01\n" +
	"\x06Config\x12\x10\n" +
	"\x03url\x18\x01 \x01(\tR\x03url\x12E\n" +
	"\aheaders\x18\x02 \x03(\v2+.aggregator.RestAPINode.Config.HeadersEntryR\aheaders\x12\x12\n" +
	"\x04body\x18\x03 \x01(\tR\x04body\x12\x16\n" +
	"\x06method\x18\x04 \x01(\tR\x06method\x1a:\n" +
	"\fHeadersEntry\x12\x10\n" +
	"\x03key\x18\x01 \x01(\tR\x03key\x12\x14\n" +
	"\x05value\x18\x02 \x01(\tR\x05value:\x028\x01\x1a4\n" +
	"\x06Output\x12*\n" +
	"\x04data\x18\x01 \x01(\v2\x16.google.protobuf.ValueR\x04data\"\xc9\x01\n" +
	"\x0eCustomCodeNode\x129\n" +
	"\x06config\x18\x01 \x01(\v2!.aggregator.CustomCodeNode.ConfigR\x06config\x1aF\n" +
	"\x06Config\x12$\n" +
	"\x04lang\x18\x01 \x01(\x0e2\x10.aggregator.LangR\x04lang\x12\x16\n" +
	"\x06source\x18\x02 \x01(\tR\x06source\x1a4\n" +
	"\x06Output\x12*\n" +
	"\x04data\x18\x01 \x01(\v2\x16.google.protobuf.ValueR\x04data\"\x96\x02\n" +
	"\n" +
	"BranchNode\x125\n" +
	"\x06config\x18\x01 \x01(\v2\x1d.aggregator.BranchNode.ConfigR\x06config\x1aO\n" +
	"\tCondition\x12\x0e\n" +
	"\x02id\x18\x01 \x01(\tR\x02id\x12\x12\n" +
	"\x04type\x18\x02 \x01(\tR\x04type\x12\x1e\n" +
	"\n" +
	"expression\x18\x03 \x01(\tR\n" +
	"expression\x1aJ\n" +
	"\x06Config\x12@\n" +
	"\n" +
	"conditions\x18\x01 \x03(\v2 .aggregator.BranchNode.ConditionR\n" +
	"conditions\x1a4\n" +
	"\x06Output\x12*\n" +
	"\x04data\x18\x01 \x01(\v2\x16.google.protobuf.ValueR\x04data\"\xcb\x01\n" +
	"\n" +
	"FilterNode\x125\n" +
	"\x06config\x18\x01 \x01(\v2\x1d.aggregator.FilterNode.ConfigR\x06config\x1aP\n" +
	"\x06Config\x12\x1e\n" +
	"\n" +
	"expression\x18\x01 \x01(\tR\n" +
	"expression\x12&\n" +
	"\x0finput_node_name\x18\x02 \x01(\tR\rinputNodeName\x1a4\n" +
	"\x06Output\x12*\n" +
	"\x04data\x18\x01 \x01(\v2\x16.google.protobuf.ValueR\x04data\"\xbc\x05\n" +
	"\bLoopNode\x12@\n" +
	"\feth_transfer\x18\n" +
	" \x01(\v2\x1b.aggregator.ETHTransferNodeH\x00R\vethTransfer\x12F\n" +
	"\x0econtract_write\x18\v \x01(\v2\x1d.aggregator.ContractWriteNodeH\x00R\rcontractWrite\x12C\n" +
	"\rcontract_read\x18\f \x01(\v2\x1c.aggregator.ContractReadNodeH\x00R\fcontractRead\x12L\n" +
	"\x12graphql_data_query\x18\r \x01(\v2\x1c.aggregator.GraphQLQueryNodeH\x00R\x10graphqlDataQuery\x124\n" +
	"\brest_api\x18\x0e \x01(\v2\x17.aggregator.RestAPINodeH\x00R\arestApi\x12=\n" +
	"\vcustom_code\x18\x0f \x01(\v2\x1a.aggregator.CustomCodeNodeH\x00R\n" +
	"customCode\x123\n" +
	"\x06config\x18\x01 \x01(\v2\x1b.aggregator.LoopNode.ConfigR\x06config\x1a\xa8\x01\n" +
	"\x06Config\x12&\n" +
	"\x0finput_node_name\x18\x01 \x01(\tR\rinputNodeName\x12\x19\n" +
	"\biter_val\x18\x02 \x01(\tR\aiterVal\x12\x19\n" +
	"\biter_key\x18\x03 \x01(\tR\aiterKey\x12@\n" +
	"\x0eexecution_mode\x18\x04 \x01(\x0e2\x19.aggregator.ExecutionModeR\rexecutionMode\x1a4\n" +
	"\x06Output\x12*\n" +
	"\x04data\x18\x01 \x01(\v2\x16.google.protobuf.ValueR\x04dataB\b\n" +
	"\x06runner\"J\n" +
	"\bTaskEdge\x12\x0e\n" +
	"\x02id\x18\x01 \x01(\tR\x02id\x12\x16\n" +
	"\x06source\x18\x02 \x01(\tR\x06source\x12\x16\n" +
	"\x06target\x18\x03 \x01(\tR\x06target\"\xfe\x04\n" +
	"\bTaskNode\x12\x0e\n" +
	"\x02id\x18\x02 \x01(\tR\x02id\x12\x12\n" +
	"\x04name\x18\x03 \x01(\tR\x04name\x12(\n" +
	"\x04type\x18\x01 \x01(\x0e2\x14.aggregator.NodeTypeR\x04type\x12@\n" +
	"\feth_transfer\x18\n" +
	" \x01(\v2\x1b.aggregator.ETHTransferNodeH\x00R\vethTransfer\x12F\n" +
	"\x0econtract_write\x18\v \x01(\v2\x1d.aggregator.ContractWriteNodeH\x00R\rcontractWrite\x12C\n" +
	"\rcontract_read\x18\f \x01(\v2\x1c.aggregator.ContractReadNodeH\x00R\fcontractRead\x12C\n" +
	"\rgraphql_query\x18\r \x01(\v2\x1c.aggregator.GraphQLQueryNodeH\x00R\fgraphqlQuery\x124\n" +
	"\brest_api\x18\x0e \x01(\v2\x17.aggregator.RestAPINodeH\x00R\arestApi\x120\n" +
	"\x06branch\x18\x0f \x01(\v2\x16.aggregator.BranchNodeH\x00R\x06branch\x120\n" +
	"\x06filter\x18\x10 \x01(\v2\x16.aggregator.FilterNodeH\x00R\x06filter\x12*\n" +
	"\x04loop\x18\x11 \x01(\v2\x14.aggregator.LoopNodeH\x00R\x04loop\x12=\n" +
	"\vcustom_code\x18\x12 \x01(\v2\x1a.aggregator.CustomCodeNodeH\x00R\n" +
	"customCodeB\v\n" +
	"\ttask_type\"\xe1\r\n" +
	"\tExecution\x12\x0e\n" +
	"\x02id\x18\x01 \x01(\tR\x02id\x12\x19\n" +
	"\bstart_at\x18\x02 \x01(\x03R\astartAt\x12\x15\n" +
	"\x06end_at\x18\x03 \x01(\x03R\x05endAt\x123\n" +
	"\x06status\x18\x04 \x01(\x0e2\x1b.aggregator.ExecutionStatusR\x06status\x12\x14\n" +
	"\x05error\x18\x05 \x01(\tR\x05error\x12\x14\n" +
	"\x05index\x18\x06 \x01(\x03R\x05index\x12$\n" +
	"\x0etotal_gas_cost\x18\a \x01(\tR\ftotalGasCost\x120\n" +
	"\x05steps\x18\b \x03(\v2\x1a.aggregator.Execution.StepR\x05steps\x1a\xd8\v\n" +
	"\x04Step\x12\x0e\n" +
	"\x02id\x18\x01 \x01(\tR\x02id\x12\x12\n" +
	"\x04type\x18\x11 \x01(\tR\x04type\x12\x12\n" +
	"\x04name\x18\x12 \x01(\tR\x04name\x12\x18\n" +
	"\asuccess\x18\x02 \x01(\bR\asuccess\x12\x14\n" +
	"\x05error\x18\r \x01(\tR\x05error\x124\n" +
	"\n" +
	"error_code\x18\x1f \x01(\x0e2\x15.aggregator.ErrorCodeR\terrorCode\x12\x10\n" +
	"\x03log\x18\f \x01(\tR\x03log\x12\x16\n" +
	"\x06inputs\x18\x10 \x03(\tR\x06inputs\x12.\n" +
	"\x06config\x18\x13 \x01(\v2\x16.google.protobuf.ValueR\x06config\x122\n" +
	"\bmetadata\x18\x19 \x01(\v2\x16.google.protobuf.ValueR\bmetadata\x12C\n" +
	"\x11execution_context\x18\x1a \x01(\v2\x16.google.protobuf.ValueR\x10executionContext\x12\x19\n" +
	"\bgas_used\x18\x1b \x01(\tR\agasUsed\x12\x1b\n" +
	"\tgas_price\x18\x1c \x01(\tR\bgasPrice\x12$\n" +
	"\x0etotal_gas_cost\x18\x1d \x01(\tR\ftotalGasCost\x12F\n" +
	"\rblock_trigger\x18\x14 \x01(\v2\x1f.aggregator.BlockTrigger.OutputH\x00R\fblockTrigger\x12S\n" +
	"\x12fixed_time_trigger\x18\x15 \x01(\v2#.aggregator.FixedTimeTrigger.OutputH\x00R\x10fixedTimeTrigger\x12C\n" +
	"\fcron_trigger\x18\x16 \x01(\v2\x1e.aggregator.CronTrigger.OutputH\x00R\vcronTrigger\x12F\n" +
	"\revent_trigger\x18\x17 \x01(\v2\x1f.aggregator.EventTrigger.OutputH\x00R\feventTrigger\x12I\n" +
	"\x0emanual_trigger\x18\x18 \x01(\v2 .aggregator.ManualTrigger.OutputH\x00R\rmanualTrigger\x12G\n" +
	"\feth_transfer\x18\x03 \x01(\v2\".aggregator.ETHTransferNode.OutputH\x00R\vethTransfer\x12?\n" +
	"\agraphql\x18\x04 \x01(\v2#.aggregator.GraphQLQueryNode.OutputH\x00R\agraphql\x12J\n" +
	"\rcontract_read\x18\x05 \x01(\v2#.aggregator.ContractReadNode.OutputH\x00R\fcontractRead\x12M\n" +
	"\x0econtract_write\x18\x06 \x01(\v2$.aggregator.ContractWriteNode.OutputH\x00R\rcontractWrite\x12D\n" +
	"\vcustom_code\x18\a \x01(\v2!.aggregator.CustomCodeNode.OutputH\x00R\n" +
	"customCode\x12;\n" +
	"\brest_api\x18\b \x01(\v2\x1e.aggregator.RestAPINode.OutputH\x00R\arestApi\x127\n" +
	"\x06branch\x18\t \x01(\v2\x1d.aggregator.BranchNode.OutputH\x00R\x06branch\x127\n" +
	"\x06filter\x18\n" +
	" \x01(\v2\x1d.aggregator.FilterNode.OutputH\x00R\x06filter\x121\n" +
	"\x04loop\x18\v \x01(\v2\x1b.aggregator.LoopNode.OutputH\x00R\x04loop\x12\x19\n" +
	"\bstart_at\x18\x0e \x01(\x03R\astartAt\x12\x15\n" +
	"\x06end_at\x18\x0f \x01(\x03R\x05endAtB\r\n" +
	"\voutput_data\"\xa2\x05\n" +
	"\x04Task\x12\x0e\n" +
	"\x02id\x18\x01 \x01(\tR\x02id\x12\x14\n" +
	"\x05owner\x18\x02 \x01(\tR\x05owner\x120\n" +
	"\x14smart_wallet_address\x18\x03 \x01(\tR\x12smartWalletAddress\x12\x19\n" +
	"\bstart_at\x18\x04 \x01(\x03R\astartAt\x12\x1d\n" +
	"\n" +
	"expired_at\x18\x05 \x01(\x03R\texpiredAt\x12\x12\n" +
	"\x04name\x18\x06 \x01(\tR\x04name\x12!\n" +
	"\fcompleted_at\x18\a \x01(\x03R\vcompletedAt\x12#\n" +
	"\rmax_execution\x18\b \x01(\x03R\fmaxExecution\x12'\n" +
	"\x0fexecution_count\x18\t \x01(\x03R\x0eexecutionCount\x12\x1e\n" +
	"\vlast_ran_at\x18\n" +
	" \x01(\x03R\tlastRanAt\x12.\n" +
	"\x06status\x18\v \x01(\x0e2\x16.aggregator.TaskStatusR\x06status\x121\n" +
	"\atrigger\x18\f \x01(\v2\x17.aggregator.TaskTriggerR\atrigger\x12*\n" +
	"\x05nodes\x18\r \x03(\v2\x14.aggregator.TaskNodeR\x05nodes\x12*\n" +
	"\x05edges\x18\x0e \x03(\v2\x14.aggregator.TaskEdgeR\x05edges\x12M\n" +
	"\x0finput_variables\x18\x0f \x03(\v2$.aggregator.Task.InputVariablesEntryR\x0einputVariables\x1aY\n" +
	"\x13InputVariablesEntry\x12\x10\n" +
	"\x03key\x18\x01 \x01(\tR\x03key\x12,\n" +
	"\x05value\x18\x02 \x01(\v2\x16.google.protobuf.ValueR\x05value:\x028\x01\"\xf2\x03\n" +
	"\rCreateTaskReq\x121\n" +
	"\atrigger\x18\x01 \x01(\v2\x17.aggregator.TaskTriggerR\atrigger\x12\x19\n" +
	"\bstart_at\x18\x02 \x01(\x03R\astartAt\x12\x1d\n" +
	"\n" +
	"expired_at\x18\x03 \x01(\x03R\texpiredAt\x12#\n" +
	"\rmax_execution\x18\x04 \x01(\x03R\fmaxExecution\x120\n" +
	"\x14smart_wallet_address\x18\x05 \x01(\tR\x12smartWalletAddress\x12\x12\n" +
	"\x04name\x18\x06 \x01(\tR\x04name\x12*\n" +
	"\x05nodes\x18\a \x03(\v2\x14.aggregator.TaskNodeR\x05nodes\x12*\n" +
	"\x05edges\x18\b \x03(\v2\x14.aggregator.TaskEdgeR\x05edges\x12V\n" +
	"\x0finput_variables\x18\t \x03(\v2-.aggregator.CreateTaskReq.InputVariablesEntryR\x0einputVariables\x1aY\n" +
	"\x13InputVariablesEntry\x12\x10\n" +
	"\x03key\x18\x01 \x01(\tR\x03key\x12,\n" +
	"\x05value\x18\x02 \x01(\v2\x16.google.protobuf.ValueR\x05value:\x028\x01\" \n" +
	"\x0eCreateTaskResp\x12\x0e\n" +
	"\x02id\x18\x01 \x01(\tR\x02id\"$\n" +
	"\fNonceRequest\x12\x14\n" +
	"\x05owner\x18\x01 \x01(\tR\x05owner\"!\n" +
	"\tNonceResp\x12\x14\n" +
	"\x05nonce\x18\x01 \x01(\tR\x05nonce\"L\n" +
	"\rListWalletReq\x12'\n" +
	"\x0ffactory_address\x18\x01 \x01(\tR\x0efactoryAddress\x12\x12\n" +
	"\x04salt\x18\x02 \x01(\tR\x04salt\"r\n" +
	"\vSmartWallet\x12\x18\n" +
	"\aaddress\x18\x01 \x01(\tR\aaddress\x12\x12\n" +
	"\x04salt\x18\x02 \x01(\tR\x04salt\x12\x18\n" +
	"\afactory\x18\x03 \x01(\tR\afactory\x12\x1b\n" +
	"\tis_hidden\x18\x04 \x01(\bR\bisHidden\"?\n" +
	"\x0eListWalletResp\x12-\n" +
	"\x05items\x18\x01 \x03(\v2\x17.aggregator.SmartWalletR\x05items\"\xce\x01\n" +
	"\fListTasksReq\x120\n" +
	"\x14smart_wallet_address\x18\x01 \x03(\tR\x12smartWalletAddress\x12\x16\n" +
	"\x06before\x18\x02 \x01(\tR\x06before\x12\x14\n" +
	"\x05after\x18\x03 \x01(\tR\x05after\x12\x14\n" +
	"\x05limit\x18\x04 \x01(\x03R\x05limit\x12#\n" +
	"\rinclude_nodes\x18\x05 \x01(\bR\fincludeNodes\x12#\n" +
	"\rinclude_edges\x18\x06 \x01(\bR\fincludeEdges\"j\n" +
	"\rListTasksResp\x12&\n" +
	"\x05items\x18\x01 \x03(\v2\x10.aggregator.TaskR\x05items\x121\n" +
	"\tpage_info\x18\x02 \x01(\v2\x14.aggregator.PageInfoR\bpageInfo\"r\n" +
	"\x11ListExecutionsReq\x12\x19\n" +
	"\btask_ids\x18\x01 \x03(\tR\ataskIds\x12\x16\n" +
	"\x06before\x18\x02 \x01(\tR\x06before\x12\x14\n" +
	"\x05after\x18\x03 \x01(\tR\x05after\x12\x14\n" +
	"\x05limit\x18\x04 \x01(\x03R\x05limit\"t\n" +
	"\x12ListExecutionsResp\x12+\n" +
	"\x05items\x18\x01 \x03(\v2\x15.aggregator.ExecutionR\x05items\x121\n" +
	"\tpage_info\x18\x02 \x01(\v2\x14.aggregator.PageInfoR\bpageInfo\"J\n" +
	"\fExecutionReq\x12\x17\n" +
	"\atask_id\x18\x01 \x01(\tR\x06taskId\x12!\n" +
	"\fexecution_id\x18\x02 \x01(\tR\vexecutionId\"J\n" +
	"\x13ExecutionStatusResp\x123\n" +
	"\x06status\x18\x01 \x01(\x0e2\x1b.aggregator.ExecutionStatusR\x06status\"C\n" +
	"\tGetKeyReq\x12\x18\n" +
	"\amessage\x18\x01 \x01(\tR\amessage\x12\x1c\n" +
	"\tsignature\x18\x02 \x01(\tR\tsignature\"g\n" +
	"\aKeyResp\x12\x18\n" +
	"\aaddress\x18\x01 \x01(\tR\aaddress\x12\x10\n" +
	"\x03key\x18\x02 \x01(\tR\x03key\x12\x18\n" +
	"\amessage\x18\x03 \x01(\tR\amessage\x12\x16\n" +
	"\x06expiry\x18\x04 \x01(\x04R\x06expiry\"K\n" +
	"\fGetWalletReq\x12\x12\n" +
	"\x04salt\x18\x01 \x01(\tR\x04salt\x12'\n" +
	"\x0ffactory_address\x18\x02 \x01(\tR\x0efactoryAddress\"\xe7\x02\n" +
	"\rGetWalletResp\x12\x18\n" +
	"\aaddress\x18\x01 \x01(\tR\aaddress\x12\x12\n" +
	"\x04salt\x18\x02 \x01(\tR\x04salt\x12'\n" +
	"\x0ffactory_address\x18\x03 \x01(\tR\x0efactoryAddress\x12\x1b\n" +
	"\tis_hidden\x18\x04 \x01(\bR\bisHidden\x12(\n" +
	"\x10total_task_count\x18\x05 \x01(\x04R\x0etotalTaskCount\x12*\n" +
	"\x11active_task_count\x18\x06 \x01(\x04R\x0factiveTaskCount\x120\n" +
	"\x14completed_task_count\x18\a \x01(\x04R\x12completedTaskCount\x12*\n" +
	"\x11failed_task_count\x18\b \x01(\x04R\x0ffailedTaskCount\x12.\n" +
	"\x13canceled_task_count\x18\t \x01(\x04R\x11canceledTaskCount\"h\n" +
	"\fSetWalletReq\x12\x12\n" +
	"\x04salt\x18\x01 \x01(\tR\x04salt\x12'\n" +
	"\x0ffactory_address\x18\x02 \x01(\tR\x0efactoryAddress\x12\x1b\n" +
	"\tis_hidden\x18\x03 \x01(\bR\bisHidden\"\x9f\x01\n" +
	"\x10WithdrawFundsReq\x12+\n" +
	"\x11recipient_address\x18\x01 \x01(\tR\x10recipientAddress\x12\x16\n" +
	"\x06amount\x18\x02 \x01(\tR\x06amount\x12\x14\n" +
	"\x05token\x18\x03 \x01(\tR\x05token\x120\n" +
	"\x14smart_wallet_address\x18\x04 \x01(\tR\x12smartWalletAddress\"\xdc\x02\n" +
	"\x11WithdrawFundsResp\x12\x18\n" +
	"\asuccess\x18\x01 \x01(\bR\asuccess\x12\x16\n" +
	"\x06status\x18\x02 \x01(\tR\x06status\x12\x18\n" +
	"\amessage\x18\x03 \x01(\tR\amessage\x12 \n" +
	"\fuser_op_hash\x18\x04 \x01(\tR\n" +
	"userOpHash\x12)\n" +
	"\x10transaction_hash\x18\x05 \x01(\tR\x0ftransactionHash\x12!\n" +
	"\fsubmitted_at\x18\x06 \x01(\x03R\vsubmittedAt\x120\n" +
	"\x14smart_wallet_address\x18\a \x01(\tR\x12smartWalletAddress\x12+\n" +
	"\x11recipient_address\x18\b \x01(\tR\x10recipientAddress\x12\x16\n" +
	"\x06amount\x18\t \x01(\tR\x06amount\x12\x14\n" +
	"\x05token\x18\n" +
	" \x01(\tR\x05token\"\x8d\x04\n" +
	"\x0eTriggerTaskReq\x12\x17\n" +
	"\atask_id\x18\x01 \x01(\tR\x06taskId\x12:\n" +
	"\ftrigger_type\x18\x02 \x01(\x0e2\x17.aggregator.TriggerTypeR\vtriggerType\x12F\n" +
	"\rblock_trigger\x18\x03 \x01(\v2\x1f.aggregator.BlockTrigger.OutputH\x00R\fblockTrigger\x12S\n" +
	"\x12fixed_time_trigger\x18\x04 \x01(\v2#.aggregator.FixedTimeTrigger.OutputH\x00R\x10fixedTimeTrigger\x12C\n" +
	"\fcron_trigger\x18\x05 \x01(\v2\x1e.aggregator.CronTrigger.OutputH\x00R\vcronTrigger\x12F\n" +
	"\revent_trigger\x18\x06 \x01(\v2\x1f.aggregator.EventTrigger.OutputH\x00R\feventTrigger\x12I\n" +
	"\x0emanual_trigger\x18\a \x01(\v2 .aggregator.ManualTrigger.OutputH\x00R\rmanualTrigger\x12\x1f\n" +
	"\vis_blocking\x18\b \x01(\bR\n" +
	"isBlockingB\x10\n" +
	"\x0etrigger_output\"\xb5\x02\n" +
	"\x0fTriggerTaskResp\x12!\n" +
	"\fexecution_id\x18\x01 \x01(\tR\vexecutionId\x123\n" +
	"\x06status\x18\x02 \x01(\x0e2\x1b.aggregator.ExecutionStatusR\x06status\x12\x1f\n" +
	"\vworkflow_id\x18\x03 \x01(\tR\n" +
	"workflowId\x12\x1e\n" +
	"\bstart_at\x18\x04 \x01(\x03H\x00R\astartAt\x88\x01\x01\x12\x1a\n" +
	"\x06end_at\x18\x05 \x01(\x03H\x01R\x05endAt\x88\x01\x01\x12\x19\n" +
	"\x05error\x18\a \x01(\tH\x02R\x05error\x88\x01\x01\x120\n" +
	"\x05steps\x18\b \x03(\v2\x1a.aggregator.Execution.StepR\x05stepsB\v\n" +
	"\t_start_atB\t\n" +
	"\a_end_atB\b\n" +
	"\x06_error\"}\n" +
	"\x17CreateOrUpdateSecretReq\x12\x12\n" +
	"\x04name\x18\x01 \x01(\tR\x04name\x12\x16\n" +
	"\x06secret\x18\x02 \x01(\tR\x06secret\x12\x1f\n" +
	"\vworkflow_id\x18\x03 \x01(\tR\n" +
	"workflowId\x12\x15\n" +
	"\x06org_id\x18\x04 \x01(\tR\x05orgId\"\x83\x02\n" +
	"\x0eListSecretsReq\x12\x1f\n" +
	"\vworkflow_id\x18\x01 \x01(\tR\n" +
	"workflowId\x12\x16\n" +
	"\x06before\x18\x02 \x01(\tR\x06before\x12\x14\n" +
	"\x05after\x18\x03 \x01(\tR\x05after\x12\x14\n" +
	"\x05limit\x18\x04 \x01(\x03R\x05limit\x12-\n" +
	"\x12include_timestamps\x18\x05 \x01(\bR\x11includeTimestamps\x12,\n" +
	"\x12include_created_by\x18\x06 \x01(\bR\x10includeCreatedBy\x12/\n" +
	"\x13include_description\x18\a \x01(\bR\x12includeDescription\"\x9c\x01\n" +
	"\bPageInfo\x12!\n" +
	"\fstart_cursor\x18\x01 \x01(\tR\vstartCursor\x12\x1d\n" +
	"\n" +
	"end_cursor\x18\x02 \x01(\tR\tendCursor\x12*\n" +
	"\x11has_previous_page\x18\x03 \x01(\bR\x0fhasPreviousPage\x12\"\n" +
	"\rhas_next_page\x18\x04 \x01(\bR\vhasNextPage\"\xe9\x01\n" +
	"\x06Secret\x12\x12\n" +
	"\x04name\x18\x01 \x01(\tR\x04name\x12\x14\n" +
	"\x05scope\x18\x02 \x01(\tR\x05scope\x12\x1f\n" +
	"\vworkflow_id\x18\x03 \x01(\tR\n" +
	"workflowId\x12\x15\n" +
	"\x06org_id\x18\x04 \x01(\tR\x05orgId\x12\x1d\n" +
	"\n" +
	"created_at\x18\x05 \x01(\x03R\tcreatedAt\x12\x1d\n" +
	"\n" +
	"updated_at\x18\x06 \x01(\x03R\tupdatedAt\x12\x1d\n" +
	"\n" +
	"created_by\x18\a \x01(\tR\tcreatedBy\x12 \n" +
	"\vdescription\x18\b \x01(\tR\vdescription\"n\n" +
	"\x0fListSecretsResp\x12(\n" +
	"\x05items\x18\x01 \x03(\v2\x12.aggregator.SecretR\x05items\x121\n" +
	"\tpage_info\x18\x02 \x01(\v2\x14.aggregator.PageInfoR\bpageInfo\"]\n" +
	"\x0fDeleteSecretReq\x12\x12\n" +
	"\x04name\x18\x01 \x01(\tR\x04name\x12\x1f\n" +
	"\vworkflow_id\x18\x02 \x01(\tR\n" +
	"workflowId\x12\x15\n" +
	"\x06org_id\x18\x03 \x01(\tR\x05orgId\"\xb4\x01\n" +
	"\x10DeleteSecretResp\x12\x18\n" +
	"\asuccess\x18\x01 \x01(\bR\asuccess\x12\x16\n" +
	"\x06status\x18\x02 \x01(\tR\x06status\x12\x18\n" +
	"\amessage\x18\x03 \x01(\tR\amessage\x12\x1d\n" +
	"\n" +
	"deleted_at\x18\x04 \x01(\x03R\tdeletedAt\x12\x1f\n" +
	"\vsecret_name\x18\x05 \x01(\tR\n" +
	"secretName\x12\x14\n" +
	"\x05scope\x18\x06 \x01(\tR\x05scope\"/\n" +
	"\x15GetSignatureFormatReq\x12\x16\n" +
	"\x06wallet\x18\x01 \x01(\tR\x06wallet\"2\n" +
	"\x16GetSignatureFormatResp\x12\x18\n" +
	"\amessage\x18\x01 \x01(\tR\amessage\"\xb4\x01\n" +
	"\x10CreateSecretResp\x12\x18\n" +
	"\asuccess\x18\x01 \x01(\bR\asuccess\x12\x16\n" +
	"\x06status\x18\x02 \x01(\tR\x06status\x12\x18\n" +
	"\amessage\x18\x03 \x01(\tR\amessage\x12\x1d\n" +
	"\n" +
	"created_at\x18\x04 \x01(\x03R\tcreatedAt\x12\x1f\n" +
	"\vsecret_name\x18\x05 \x01(\tR\n" +
	"secretName\x12\x14\n" +
	"\x05scope\x18\x06 \x01(\tR\x05scope\"\xb4\x01\n" +
	"\x10UpdateSecretResp\x12\x18\n" +
	"\asuccess\x18\x01 \x01(\bR\asuccess\x12\x16\n" +
	"\x06status\x18\x02 \x01(\tR\x06status\x12\x18\n" +
	"\amessage\x18\x03 \x01(\tR\amessage\x12\x1d\n" +
	"\n" +
	"updated_at\x18\x04 \x01(\x03R\tupdatedAt\x12\x1f\n" +
	"\vsecret_name\x18\x05 \x01(\tR\n" +
	"secretName\x12\x14\n" +
	"\x05scope\x18\x06 \x01(\tR\x05scope\"\xb4\x01\n" +
	"\x0eDeleteTaskResp\x12\x18\n" +
	"\asuccess\x18\x01 \x01(\bR\asuccess\x12\x16\n" +
	"\x06status\x18\x02 \x01(\tR\x06status\x12\x18\n" +
	"\amessage\x18\x03 \x01(\tR\amessage\x12\x1d\n" +
	"\n" +
	"deleted_at\x18\x04 \x01(\x03R\tdeletedAt\x12\x0e\n" +
	"\x02id\x18\x05 \x01(\tR\x02id\x12'\n" +
	"\x0fprevious_status\x18\x06 \x01(\tR\x0epreviousStatus\"\xb8\x01\n" +
	"\x0eCancelTaskResp\x12\x18\n" +
	"\asuccess\x18\x01 \x01(\bR\asuccess\x12\x16\n" +
	"\x06status\x18\x02 \x01(\tR\x06status\x12\x18\n" +
	"\amessage\x18\x03 \x01(\tR\amessage\x12!\n" +
	"\fcancelled_at\x18\x04 \x01(\x03R\vcancelledAt\x12\x0e\n" +
	"\x02id\x18\x05 \x01(\tR\x02id\x12'\n" +
	"\x0fprevious_status\x18\x06 \x01(\tR\x0epreviousStatus\"3\n" +
	"\x13GetWorkflowCountReq\x12\x1c\n" +
	"\taddresses\x18\x01 \x03(\tR\taddresses\",\n" +
	"\x14GetWorkflowCountResp\x12\x14\n" +
	"\x05total\x18\x01 \x01(\x03R\x05total\"9\n" +
	"\x14GetExecutionCountReq\x12!\n" +
	"\fworkflow_ids\x18\x01 \x03(\tR\vworkflowIds\"-\n" +
	"\x15GetExecutionCountResp\x12\x14\n" +
	"\x05total\x18\x01 \x01(\x03R\x05total\"M\n" +
	"\x14GetExecutionStatsReq\x12!\n" +
	"\fworkflow_ids\x18\x01 \x03(\tR\vworkflowIds\x12\x12\n" +
	"\x04days\x18\x02 \x01(\x03R\x04days\"\x91\x01\n" +
	"\x15GetExecutionStatsResp\x12\x14\n" +
	"\x05total\x18\x01 \x01(\x03R\x05total\x12\x1c\n" +
	"\tsucceeded\x18\x02 \x01(\x03R\tsucceeded\x12\x16\n" +
	"\x06failed\x18\x03 \x01(\x03R\x06failed\x12,\n" +
	"\x12avg_execution_time\x18\x04 \x01(\x01R\x10avgExecutionTime\"\xad\x03\n" +
	"\x14RunNodeWithInputsReq\x121\n" +
	"\tnode_type\x18\x01 \x01(\x0e2\x14.aggregator.NodeTypeR\bnodeType\x12Q\n" +
	"\vnode_config\x18\x02 \x03(\v20.aggregator.RunNodeWithInputsReq.NodeConfigEntryR\n" +
	"nodeConfig\x12]\n" +
	"\x0finput_variables\x18\x03 \x03(\v24.aggregator.RunNodeWithInputsReq.InputVariablesEntryR\x0einputVariables\x1aU\n" +
	"\x0fNodeConfigEntry\x12\x10\n" +
	"\x03key\x18\x01 \x01(\tR\x03key\x12,\n" +
	"\x05value\x18\x02 \x01(\v2\x16.google.protobuf.ValueR\x05value:\x028\x01\x1aY\n" +
	"\x13InputVariablesEntry\x12\x10\n" +
	"\x03key\x18\x01 \x01(\tR\x03key\x12,\n" +
	"\x05value\x18\x02 \x01(\v2\x16.google.protobuf.ValueR\x05value:\x028\x01\"\xd2\x06\n" +
	"\x15RunNodeWithInputsResp\x12\x18\n" +
	"\asuccess\x18\x01 \x01(\bR\asuccess\x12\x14\n" +
	"\x05error\x18\x03 \x01(\tR\x05error\x122\n" +
	"\bmetadata\x18\x05 \x01(\v2\x16.google.protobuf.ValueR\bmetadata\x12C\n" +
	"\x11execution_context\x18\x06 \x01(\v2\x16.google.protobuf.ValueR\x10executionContext\x124\n" +
	"\n" +
	"error_code\x18\a \x01(\x0e2\x15.aggregator.ErrorCodeR\terrorCode\x12G\n" +
	"\feth_transfer\x18\n" +
	" \x01(\v2\".aggregator.ETHTransferNode.OutputH\x00R\vethTransfer\x12?\n" +
	"\agraphql\x18\v \x01(\v2#.aggregator.GraphQLQueryNode.OutputH\x00R\agraphql\x12J\n" +
	"\rcontract_read\x18\f \x01(\v2#.aggregator.ContractReadNode.OutputH\x00R\fcontractRead\x12M\n" +
	"\x0econtract_write\x18\r \x01(\v2$.aggregator.ContractWriteNode.OutputH\x00R\rcontractWrite\x12D\n" +
	"\vcustom_code\x18\x0e \x01(\v2!.aggregator.CustomCodeNode.OutputH\x00R\n" +
	"customCode\x12;\n" +
	"\brest_api\x18\x0f \x01(\v2\x1e.aggregator.RestAPINode.OutputH\x00R\arestApi\x127\n" +
	"\x06branch\x18\x10 \x01(\v2\x1d.aggregator.BranchNode.OutputH\x00R\x06branch\x127\n" +
	"\x06filter\x18\x11 \x01(\v2\x1d.aggregator.FilterNode.OutputH\x00R\x06filter\x121\n" +
	"\x04loop\x18\x12 \x01(\v2\x1b.aggregator.LoopNode.OutputH\x00R\x04loopB\r\n" +
	"\voutput_data\"\xa5\x03\n" +
	"\rRunTriggerReq\x12:\n" +
	"\ftrigger_type\x18\x01 \x01(\x0e2\x17.aggregator.TriggerTypeR\vtriggerType\x12S\n" +
	"\x0etrigger_config\x18\x02 \x03(\v2,.aggregator.RunTriggerReq.TriggerConfigEntryR\rtriggerConfig\x12P\n" +
	"\rtrigger_input\x18\x03 \x03(\v2+.aggregator.RunTriggerReq.TriggerInputEntryR\ftriggerInput\x1aX\n" +
	"\x12TriggerConfigEntry\x12\x10\n" +
	"\x03key\x18\x01 \x01(\tR\x03key\x12,\n" +
	"\x05value\x18\x02 \x01(\v2\x16.google.protobuf.ValueR\x05value:\x028\x01\x1aW\n" +
	"\x11TriggerInputEntry\x12\x10\n" +
	"\x03key\x18\x01 \x01(\tR\x03key\x12,\n" +
	"\x05value\x18\x02 \x01(\v2\x16.google.protobuf.ValueR\x05value:\x028\x01\"\xf3\x04\n" +
	"\x0eRunTriggerResp\x12\x18\n" +
	"\asuccess\x18\x01 \x01(\bR\asuccess\x12\x14\n" +
	"\x05error\x18\x02 \x01(\tR\x05error\x122\n" +
	"\bmetadata\x18\x04 \x01(\v2\x16.google.protobuf.ValueR\bmetadata\x12C\n" +
	"\x11execution_context\x18\x05 \x01(\v2\x16.google.protobuf.ValueR\x10executionContext\x124\n" +
	"\n" +
	"error_code\x18\x06 \x01(\x0e2\x15.aggregator.ErrorCodeR\terrorCode\x12F\n" +
	"\rblock_trigger\x18\n" +
	" \x01(\v2\x1f.aggregator.BlockTrigger.OutputH\x00R\fblockTrigger\x12S\n" +
	"\x12fixed_time_trigger\x18\v \x01(\v2#.aggregator.FixedTimeTrigger.OutputH\x00R\x10fixedTimeTrigger\x12C\n" +
	"\fcron_trigger\x18\f \x01(\v2\x1e.aggregator.CronTrigger.OutputH\x00R\vcronTrigger\x12F\n" +
	"\revent_trigger\x18\r \x01(\v2\x1f.aggregator.EventTrigger.OutputH\x00R\feventTrigger\x12I\n" +
	"\x0emanual_trigger\x18\x0e \x01(\v2 .aggregator.ManualTrigger.OutputH\x00R\rmanualTriggerB\r\n" +
	"\voutput_data\"\xd1\x02\n" +
	"\x0fSimulateTaskReq\x121\n" +
	"\atrigger\x18\x01 \x01(\v2\x17.aggregator.TaskTriggerR\atrigger\x12*\n" +
	"\x05nodes\x18\x02 \x03(\v2\x14.aggregator.TaskNodeR\x05nodes\x12*\n" +
	"\x05edges\x18\x03 \x03(\v2\x14.aggregator.TaskEdgeR\x05edges\x12X\n" +
	"\x0finput_variables\x18\x06 \x03(\v2/.aggregator.SimulateTaskReq.InputVariablesEntryR\x0einputVariables\x1aY\n" +
	"\x13InputVariablesEntry\x12\x10\n" +
	"\x03key\x18\x01 \x01(\tR\x03key\x12,\n" +
	"\x05value\x18\x02 \x01(\v2\x16.google.protobuf.ValueR\x05value:\x028\x01\"\xca\x03\n" +
	"\x0fEstimateFeesReq\x121\n" +
	"\atrigger\x18\x01 \x01(\v2\x17.aggregator.TaskTriggerR\atrigger\x12*\n" +
	"\x05nodes\x18\x02 \x03(\v2\x14.aggregator.TaskNodeR\x05nodes\x12*\n" +
	"\x05edges\x18\x03 \x03(\v2\x14.aggregator.TaskEdgeR\x05edges\x12\x1d\n" +
	"\n" +
	"created_at\x18\x04 \x01(\x03R\tcreatedAt\x12\x1b\n" +
	"\texpire_at\x18\x05 \x01(\x03R\bexpireAt\x12#\n" +
	"\rmax_execution\x18\x06 \x01(\x03R\fmaxExecution\x12\x16\n" +
	"\x06runner\x18\a \x01(\tR\x06runner\x12X\n" +
	"\x0finput_variables\x18\b \x03(\v2/.aggregator.EstimateFeesReq.InputVariablesEntryR\x0einputVariables\x1aY\n" +
	"\x13InputVariablesEntry\x12\x10\n" +
	"\x03key\x18\x01 \x01(\tR\x03key\x12,\n" +
	"\x05value\x18\x02 \x01(\v2\x16.google.protobuf.ValueR\x05value:\x028\x01\"\xb2\x01\n" +
	"\tFeeAmount\x12.\n" +
	"\x13native_token_amount\x18\x01 \x01(\tR\x11nativeTokenAmount\x12.\n" +
	"\x13native_token_symbol\x18\x02 \x01(\tR\x11nativeTokenSymbol\x12\x1d\n" +
	"\n" +
	"usd_amount\x18\x03 \x01(\tR\tusdAmount\x12&\n" +
	"\x0fap_token_amount\x18\x04 \x01(\tR\rapTokenAmount\"\xb7\x02\n" +
	"\x0fGasFeeBreakdown\x12;\n" +
	"\x0etotal_gas_fees\x18\x01 \x01(\v2\x15.aggregator.FeeAmountR\ftotalGasFees\x12;\n" +
	"\n" +
	"operations\x18\x02 \x03(\v2\x1b.aggregator.GasOperationFeeR\n" +
	"operations\x12$\n" +
	"\x0egas_price_gwei\x18\x03 \x01(\tR\fgasPriceGwei\x12&\n" +
	"\x0ftotal_gas_units\x18\x04 \x01(\tR\rtotalGasUnits\x12/\n" +
	"\x13estimation_accurate\x18\x05 \x01(\bR\x12estimationAccurate\x12+\n" +
	"\x11estimation_method\x18\x06 \x01(\tR\x10estimationMethod\"\xb8\x01\n" +
	"\x0fGasOperationFee\x12%\n" +
	"\x0eoperation_type\x18\x01 \x01(\tR\roperationType\x12\x17\n" +
	"\anode_id\x18\x02 \x01(\tR\x06nodeId\x12\x1f\n" +
	"\vmethod_name\x18\x03 \x01(\tR\n" +
	"methodName\x12'\n" +
	"\x03fee\x18\x04 \x01(\v2\x15.aggregator.FeeAmountR\x03fee\x12\x1b\n" +
	"\tgas_units\x18\x05 \x01(\tR\bgasUnits\"\xe6\x01\n" +
	"\x16SmartWalletCreationFee\x12+\n" +
	"\x11creation_required\x18\x01 \x01(\bR\x10creationRequired\x128\n" +
	"\fcreation_fee\x18\x02 \x01(\v2\x15.aggregator.FeeAmountR\vcreationFee\x12>\n" +
	"\x0finitial_funding\x18\x03 \x01(\v2\x15.aggregator.FeeAmountR\x0einitialFunding\x12%\n" +
	"\x0ewallet_address\x18\x04 \x01(\tR\rwalletAddress\"\xf2\x02\n" +
	"\rAutomationFee\x120\n" +
	"\bbase_fee\x18\x01 \x01(\v2\x15.aggregator.FeeAmountR\abaseFee\x12<\n" +
	"\x0emonitoring_fee\x18\x02 \x01(\v2\x15.aggregator.FeeAmountR\rmonitoringFee\x12:\n" +
	"\rexecution_fee\x18\x03 \x01(\v2\x15.aggregator.FeeAmountR\fexecutionFee\x12!\n" +
	"\ftrigger_type\x18\x04 \x01(\tR\vtriggerType\x121\n" +
	"\x14estimated_executions\x18\x05 \x01(\x03R\x13estimatedExecutions\x12)\n" +
	"\x10duration_minutes\x18\x06 \x01(\x03R\x0fdurationMinutes\x124\n" +
	"\x16fee_calculation_method\x18\a \x01(\tR\x14feeCalculationMethod\"\x9e\x02\n" +
	"\vFeeDiscount\x12#\n" +
	"\rdiscount_type\x18\x01 \x01(\tR\fdiscountType\x12#\n" +
	"\rdiscount_name\x18\x02 \x01(\tR\fdiscountName\x12\x1d\n" +
	"\n" +
	"applies_to\x18\x03 \x01(\tR\tappliesTo\x12/\n" +
	"\x13discount_percentage\x18\x04 \x01(\x02R\x12discountPercentage\x12>\n" +
	"\x0fdiscount_amount\x18\x05 \x01(\v2\x15.aggregator.FeeAmountR\x0ediscountAmount\x12\x1f\n" +
	"\vexpiry_date\x18\x06 \x01(\tR\n" +
	"expiryDate\x12\x14\n" +
	"\x05terms\x18\a \x01(\tR\x05terms\"\x87\x06\n" +
	"\x10EstimateFeesResp\x12\x18\n" +
	"\asuccess\x18\x01 \x01(\bR\asuccess\x12\x14\n" +
	"\x05error\x18\x02 \x01(\tR\x05error\x124\n" +
	"\n" +
	"error_code\x18\x03 \x01(\x0e2\x15.aggregator.ErrorCodeR\terrorCode\x126\n" +
	"\bgas_fees\x18\x04 \x01(\v2\x1b.aggregator.GasFeeBreakdownR\agasFees\x12B\n" +
	"\x0fautomation_fees\x18\x05 \x01(\v2\x19.aggregator.AutomationFeeR\x0eautomationFees\x12G\n" +
	"\rcreation_fees\x18\x06 \x01(\v2\".aggregator.SmartWalletCreationFeeR\fcreationFees\x124\n" +
	"\n" +
	"total_fees\x18\a \x01(\v2\x15.aggregator.FeeAmountR\ttotalFees\x125\n" +
	"\tdiscounts\x18\b \x03(\v2\x17.aggregator.FeeDiscountR\tdiscounts\x12>\n" +
	"\x0ftotal_discounts\x18\t \x01(\v2\x15.aggregator.FeeAmountR\x0etotalDiscounts\x126\n" +
	"\vfinal_total\x18\n" +
	" \x01(\v2\x15.aggregator.FeeAmountR\n" +
	"finalTotal\x12!\n" +
	"\festimated_at\x18\v \x01(\x03R\vestimatedAt\x12\x19\n" +
	"\bchain_id\x18\f \x01(\tR\achainId\x12*\n" +
	"\x11price_data_source\x18\r \x01(\tR\x0fpriceDataSource\x123\n" +
	"\x16price_data_age_seconds\x18\x0e \x01(\x03R\x13priceDataAgeSeconds\x12\x1a\n" +
	"\bwarnings\x18\x0f \x03(\tR\bwarnings\x12(\n" +
	"\x0frecommendations\x18\x10 \x03(\tR\x0frecommendations\"\x80\x01\n" +
	"\x0eEventCondition\x12\x1d\n" +
	"\n" +
	"field_name\x18\x01 \x01(\tR\tfieldName\x12\x1a\n" +
	"\boperator\x18\x02 \x01(\tR\boperator\x12\x14\n" +
	"\x05value\x18\x03 \x01(\tR\x05value\x12\x1d\n" +
	"\n" +
	"field_type\x18\x04 \x01(\tR\tfieldType*\xa8\x01\n" +
	"\vTriggerType\x12\x1c\n" +
	"\x18TRIGGER_TYPE_UNSPECIFIED\x10\x00\x12\x17\n" +
	"\x13TRIGGER_TYPE_MANUAL\x10\x01\x12\x1b\n" +
	"\x17TRIGGER_TYPE_FIXED_TIME\x10\x02\x12\x15\n" +
	"\x11TRIGGER_TYPE_CRON\x10\x03\x12\x16\n" +
	"\x12TRIGGER_TYPE_BLOCK\x10\x04\x12\x16\n" +
	"\x12TRIGGER_TYPE_EVENT\x10\x05*\x8c\x02\n" +
	"\bNodeType\x12\x19\n" +
	"\x15NODE_TYPE_UNSPECIFIED\x10\x00\x12\x1a\n" +
	"\x16NODE_TYPE_ETH_TRANSFER\x10\x01\x12\x1c\n" +
	"\x18NODE_TYPE_CONTRACT_WRITE\x10\x02\x12\x1b\n" +
	"\x17NODE_TYPE_CONTRACT_READ\x10\x03\x12\x1b\n" +
	"\x17NODE_TYPE_GRAPHQL_QUERY\x10\x04\x12\x16\n" +
	"\x12NODE_TYPE_REST_API\x10\x05\x12\x19\n" +
	"\x15NODE_TYPE_CUSTOM_CODE\x10\x06\x12\x14\n" +
	"\x10NODE_TYPE_BRANCH\x10\a\x12\x14\n" +
	"\x10NODE_TYPE_FILTER\x10\b\x12\x12\n" +
	"\x0eNODE_TYPE_LOOP\x10\t*K\n" +
	"\rExecutionMode\x12\x1d\n" +
	"\x19EXECUTION_MODE_SEQUENTIAL\x10\x00\x12\x1b\n" +
	"\x17EXECUTION_MODE_PARALLEL\x10\x01*\x16\n" +
	"\x04Lang\x12\x0e\n" +
	"\n" +
	"JavaScript\x10\x00*\xf2\a\n" +
	"\tErrorCode\x12\x1a\n" +
	"\x16ERROR_CODE_UNSPECIFIED\x10\x00\x12\x11\n" +
	"\fUNAUTHORIZED\x10\xe8\a\x12\x0e\n" +
	"\tFORBIDDEN\x10\xe9\a\x12\x16\n" +
	"\x11INVALID_SIGNATURE\x10\xea\a\x12\x12\n" +
	"\rEXPIRED_TOKEN\x10\xeb\a\x12\x13\n" +
	"\x0eTASK_NOT_FOUND\x10\xd0\x0f\x12\x18\n" +
	"\x13EXECUTION_NOT_FOUND\x10\xd1\x0f\x12\x15\n" +
	"\x10WALLET_NOT_FOUND\x10\xd2\x0f\x12\x15\n" +
	"\x10SECRET_NOT_FOUND\x10\xd3\x0f\x12\x1d\n" +
	"\x18TOKEN_METADATA_NOT_FOUND\x10\xd4\x0f\x12\x14\n" +
	"\x0fINVALID_REQUEST\x10\xb8\x17\x12\x1b\n" +
	"\x16INVALID_TRIGGER_CONFIG\x10\xb9\x17\x12\x18\n" +
	"\x13INVALID_NODE_CONFIG\x10\xba\x17\x12\x15\n" +
	"\x10INVALID_WORKFLOW\x10\xbb\x17\x12\x14\n" +
	"\x0fINVALID_ADDRESS\x10\xbc\x17\x12\x1d\n" +
	"\x18INVALID_SIGNATURE_FORMAT\x10\xbd\x17\x12\x1b\n" +
	"\x16MISSING_REQUIRED_FIELD\x10\xbe\x17\x12\x18\n" +
	"\x13TASK_ALREADY_EXISTS\x10\xa0\x1f\x12\x1b\n" +
	"\x16TASK_ALREADY_COMPLETED\x10\xa1\x1f\x12\x1b\n" +
	"\x16TASK_ALREADY_CANCELLED\x10\xa2\x1f\x12\x1a\n" +
	"\x15EXECUTION_IN_PROGRESS\x10\xa3\x1f\x12\x1a\n" +
	"\x15WALLET_ALREADY_EXISTS\x10\xa4\x1f\x12\x1a\n" +
	"\x15SECRET_ALREADY_EXISTS\x10\xa5\x1f\x12\x13\n" +
	"\x0eRPC_NODE_ERROR\x10\x88'\x12\x17\n" +
	"\x12TENDERLY_API_ERROR\x10\x89'\x12\x17\n" +
	"\x12TOKEN_LOOKUP_ERROR\x10\x8a'\x12\x15\n" +
	"\x10SIMULATION_ERROR\x10\x8b'\x12\x18\n" +
	"\x13STORAGE_UNAVAILABLE\x10\xf0.\x12\x18\n" +
	"\x13STORAGE_WRITE_ERROR\x10\xf1.\x12\x17\n" +
	"\x12STORAGE_READ_ERROR\x10\xf2.\x12\x18\n" +
	"\x13TASK_DATA_CORRUPTED\x10\xf3.\x12\x1b\n" +
	"\x16EXECUTION_ENGINE_ERROR\x10\xf4.\x12\x18\n" +
	"\x13RATE_LIMIT_EXCEEDED\x10\xd86\x12\x13\n" +
	"\x0eQUOTA_EXCEEDED\x10\xd96\x12\x16\n" +
	"\x11TOO_MANY_REQUESTS\x10\xda6\x12\x1b\n" +
	"\x16SMART_WALLET_RPC_ERROR\x10\xc0>\x12\x1b\n" +
	"\x16SMART_WALLET_NOT_FOUND\x10\xc1>\x12\"\n" +
	"\x1dSMART_WALLET_DEPLOYMENT_ERROR\x10\xc2>\x12\x19\n" +
	"\x14INSUFFICIENT_BALANCE\x10\xc3>*P\n" +
	"\n" +
	"TaskStatus\x12\n" +
	"\n" +
	"\x06Active\x10\x00\x12\r\n" +
	"\tCompleted\x10\x01\x12\n" +
	"\n" +
	"\x06Failed\x10\x02\x12\f\n" +
	"\bCanceled\x10\x03\x12\r\n" +
	"\tExecuting\x10\x04*\xb2\x01\n" +
	"\x0fExecutionStatus\x12 \n" +
	"\x1cEXECUTION_STATUS_UNSPECIFIED\x10\x00\x12\x1c\n" +
	"\x18EXECUTION_STATUS_PENDING\x10\x01\x12\x1c\n" +
	"\x18EXECUTION_STATUS_SUCCESS\x10\x02\x12\x1b\n" +
	"\x17EXECUTION_STATUS_FAILED\x10\x03\x12$\n" +
	" EXECUTION_STATUS_PARTIAL_SUCCESS\x10\x042\xc1\x10\n" +
	"\n" +
	"Aggregator\x126\n" +
	"\x06GetKey\x12\x15.aggregator.GetKeyReq\x1a\x13.aggregator.KeyResp\"\x00\x12]\n" +
	"\x12GetSignatureFormat\x12!.aggregator.GetSignatureFormatReq\x1a\".aggregator.GetSignatureFormatResp\"\x00\x12=\n" +
	"\bGetNonce\x12\x18.aggregator.NonceRequest\x1a\x15.aggregator.NonceResp\"\x00\x12B\n" +
	"\tGetWallet\x12\x18.aggregator.GetWalletReq\x1a\x19.aggregator.GetWalletResp\"\x00\x12B\n" +
	"\tSetWallet\x12\x18.aggregator.SetWalletReq\x1a\x19.aggregator.GetWalletResp\"\x00\x12F\n" +
	"\vListWallets\x12\x19.aggregator.ListWalletReq\x1a\x1a.aggregator.ListWalletResp\"\x00\x12N\n" +
	"\rWithdrawFunds\x12\x1c.aggregator.WithdrawFundsReq\x1a\x1d.aggregator.WithdrawFundsResp\"\x00\x12E\n" +
	"\n" +
	"CreateTask\x12\x19.aggregator.CreateTaskReq\x1a\x1a.aggregator.CreateTaskResp\"\x00\x12B\n" +
	"\tListTasks\x12\x18.aggregator.ListTasksReq\x1a\x19.aggregator.ListTasksResp\"\x00\x120\n" +
	"\aGetTask\x12\x11.aggregator.IdReq\x1a\x10.aggregator.Task\"\x00\x12Q\n" +
	"\x0eListExecutions\x12\x1d.aggregator.ListExecutionsReq\x1a\x1e.aggregator.ListExecutionsResp\"\x00\x12A\n" +
	"\fGetExecution\x12\x18.aggregator.ExecutionReq\x1a\x15.aggregator.Execution\"\x00\x12Q\n" +
	"\x12GetExecutionStatus\x12\x18.aggregator.ExecutionReq\x1a\x1f.aggregator.ExecutionStatusResp\"\x00\x12=\n" +
	"\n" +
	"CancelTask\x12\x11.aggregator.IdReq\x1a\x1a.aggregator.CancelTaskResp\"\x00\x12=\n" +
	"\n" +
	"DeleteTask\x12\x11.aggregator.IdReq\x1a\x1a.aggregator.DeleteTaskResp\"\x00\x12H\n" +
	"\vTriggerTask\x12\x1a.aggregator.TriggerTaskReq\x1a\x1b.aggregator.TriggerTaskResp\"\x00\x12S\n" +
	"\fCreateSecret\x12#.aggregator.CreateOrUpdateSecretReq\x1a\x1c.aggregator.CreateSecretResp\"\x00\x12K\n" +
	"\fDeleteSecret\x12\x1b.aggregator.DeleteSecretReq\x1a\x1c.aggregator.DeleteSecretResp\"\x00\x12H\n" +
	"\vListSecrets\x12\x1a.aggregator.ListSecretsReq\x1a\x1b.aggregator.ListSecretsResp\"\x00\x12S\n" +
	"\fUpdateSecret\x12#.aggregator.CreateOrUpdateSecretReq\x1a\x1c.aggregator.UpdateSecretResp\"\x00\x12U\n" +
	"\x10GetWorkflowCount\x12\x1f.aggregator.GetWorkflowCountReq\x1a .aggregator.GetWorkflowCountResp\x12X\n" +
	"\x11GetExecutionCount\x12 .aggregator.GetExecutionCountReq\x1a!.aggregator.GetExecutionCountResp\x12X\n" +
	"\x11GetExecutionStats\x12 .aggregator.GetExecutionStatsReq\x1a!.aggregator.GetExecutionStatsResp\x12X\n" +
	"\x11RunNodeWithInputs\x12 .aggregator.RunNodeWithInputsReq\x1a!.aggregator.RunNodeWithInputsResp\x12C\n" +
	"\n" +
	"RunTrigger\x12\x19.aggregator.RunTriggerReq\x1a\x1a.aggregator.RunTriggerResp\x12B\n" +
	"\fSimulateTask\x12\x1b.aggregator.SimulateTaskReq\x1a\x15.aggregator.Execution\x12U\n" +
	"\x10GetTokenMetadata\x12\x1f.aggregator.GetTokenMetadataReq\x1a .aggregator.GetTokenMetadataResp\x12I\n" +
	"\fEstimateFees\x12\x1b.aggregator.EstimateFeesReq\x1a\x1c.aggregator.EstimateFeesRespB\fZ\n" +
	"./avsprotob\x06proto3"

var (
	file_avs_proto_rawDescOnce sync.Once
	file_avs_proto_rawDescData []byte
)

func file_avs_proto_rawDescGZIP() []byte {
	file_avs_proto_rawDescOnce.Do(func() {
		file_avs_proto_rawDescData = protoimpl.X.CompressGZIP(unsafe.Slice(unsafe.StringData(file_avs_proto_rawDesc), len(file_avs_proto_rawDesc)))
	})
	return file_avs_proto_rawDescData
}

var file_avs_proto_enumTypes = make([]protoimpl.EnumInfo, 7)
var file_avs_proto_msgTypes = make([]protoimpl.MessageInfo, 128)
var file_avs_proto_goTypes = []any{
	(TriggerType)(0),                                      // 0: aggregator.TriggerType
	(NodeType)(0),                                         // 1: aggregator.NodeType
	(ExecutionMode)(0),                                    // 2: aggregator.ExecutionMode
	(Lang)(0),                                             // 3: aggregator.Lang
	(ErrorCode)(0),                                        // 4: aggregator.ErrorCode
	(TaskStatus)(0),                                       // 5: aggregator.TaskStatus
	(ExecutionStatus)(0),                                  // 6: aggregator.ExecutionStatus
	(*TokenMetadata)(nil),                                 // 7: aggregator.TokenMetadata
	(*GetTokenMetadataReq)(nil),                           // 8: aggregator.GetTokenMetadataReq
	(*GetTokenMetadataResp)(nil),                          // 9: aggregator.GetTokenMetadataResp
	(*IdReq)(nil),                                         // 10: aggregator.IdReq
	(*FixedTimeTrigger)(nil),                              // 11: aggregator.FixedTimeTrigger
	(*CronTrigger)(nil),                                   // 12: aggregator.CronTrigger
	(*BlockTrigger)(nil),                                  // 13: aggregator.BlockTrigger
	(*EventTrigger)(nil),                                  // 14: aggregator.EventTrigger
	(*ManualTrigger)(nil),                                 // 15: aggregator.ManualTrigger
	(*TaskTrigger)(nil),                                   // 16: aggregator.TaskTrigger
	(*ETHTransferNode)(nil),                               // 17: aggregator.ETHTransferNode
	(*ContractWriteNode)(nil),                             // 18: aggregator.ContractWriteNode
	(*ContractReadNode)(nil),                              // 19: aggregator.ContractReadNode
	(*GraphQLQueryNode)(nil),                              // 20: aggregator.GraphQLQueryNode
	(*RestAPINode)(nil),                                   // 21: aggregator.RestAPINode
	(*CustomCodeNode)(nil),                                // 22: aggregator.CustomCodeNode
	(*BranchNode)(nil),                                    // 23: aggregator.BranchNode
	(*FilterNode)(nil),                                    // 24: aggregator.FilterNode
	(*LoopNode)(nil),                                      // 25: aggregator.LoopNode
	(*TaskEdge)(nil),                                      // 26: aggregator.TaskEdge
	(*TaskNode)(nil),                                      // 27: aggregator.TaskNode
	(*Execution)(nil),                                     // 28: aggregator.Execution
	(*Task)(nil),                                          // 29: aggregator.Task
	(*CreateTaskReq)(nil),                                 // 30: aggregator.CreateTaskReq
	(*CreateTaskResp)(nil),                                // 31: aggregator.CreateTaskResp
	(*NonceRequest)(nil),                                  // 32: aggregator.NonceRequest
	(*NonceResp)(nil),                                     // 33: aggregator.NonceResp
	(*ListWalletReq)(nil),                                 // 34: aggregator.ListWalletReq
	(*SmartWallet)(nil),                                   // 35: aggregator.SmartWallet
	(*ListWalletResp)(nil),                                // 36: aggregator.ListWalletResp
	(*ListTasksReq)(nil),                                  // 37: aggregator.ListTasksReq
	(*ListTasksResp)(nil),                                 // 38: aggregator.ListTasksResp
	(*ListExecutionsReq)(nil),                             // 39: aggregator.ListExecutionsReq
	(*ListExecutionsResp)(nil),                            // 40: aggregator.ListExecutionsResp
	(*ExecutionReq)(nil),                                  // 41: aggregator.ExecutionReq
	(*ExecutionStatusResp)(nil),                           // 42: aggregator.ExecutionStatusResp
	(*GetKeyReq)(nil),                                     // 43: aggregator.GetKeyReq
	(*KeyResp)(nil),                                       // 44: aggregator.KeyResp
	(*GetWalletReq)(nil),                                  // 45: aggregator.GetWalletReq
	(*GetWalletResp)(nil),                                 // 46: aggregator.GetWalletResp
	(*SetWalletReq)(nil),                                  // 47: aggregator.SetWalletReq
	(*WithdrawFundsReq)(nil),                              // 48: aggregator.WithdrawFundsReq
	(*WithdrawFundsResp)(nil),                             // 49: aggregator.WithdrawFundsResp
	(*TriggerTaskReq)(nil),                                // 50: aggregator.TriggerTaskReq
	(*TriggerTaskResp)(nil),                               // 51: aggregator.TriggerTaskResp
	(*CreateOrUpdateSecretReq)(nil),                       // 52: aggregator.CreateOrUpdateSecretReq
	(*ListSecretsReq)(nil),                                // 53: aggregator.ListSecretsReq
	(*PageInfo)(nil),                                      // 54: aggregator.PageInfo
	(*Secret)(nil),                                        // 55: aggregator.Secret
	(*ListSecretsResp)(nil),                               // 56: aggregator.ListSecretsResp
	(*DeleteSecretReq)(nil),                               // 57: aggregator.DeleteSecretReq
	(*DeleteSecretResp)(nil),                              // 58: aggregator.DeleteSecretResp
	(*GetSignatureFormatReq)(nil),                         // 59: aggregator.GetSignatureFormatReq
	(*GetSignatureFormatResp)(nil),                        // 60: aggregator.GetSignatureFormatResp
	(*CreateSecretResp)(nil),                              // 61: aggregator.CreateSecretResp
	(*UpdateSecretResp)(nil),                              // 62: aggregator.UpdateSecretResp
	(*DeleteTaskResp)(nil),                                // 63: aggregator.DeleteTaskResp
	(*CancelTaskResp)(nil),                                // 64: aggregator.CancelTaskResp
	(*GetWorkflowCountReq)(nil),                           // 65: aggregator.GetWorkflowCountReq
	(*GetWorkflowCountResp)(nil),                          // 66: aggregator.GetWorkflowCountResp
	(*GetExecutionCountReq)(nil),                          // 67: aggregator.GetExecutionCountReq
	(*GetExecutionCountResp)(nil),                         // 68: aggregator.GetExecutionCountResp
	(*GetExecutionStatsReq)(nil),                          // 69: aggregator.GetExecutionStatsReq
	(*GetExecutionStatsResp)(nil),                         // 70: aggregator.GetExecutionStatsResp
	(*RunNodeWithInputsReq)(nil),                          // 71: aggregator.RunNodeWithInputsReq
	(*RunNodeWithInputsResp)(nil),                         // 72: aggregator.RunNodeWithInputsResp
	(*RunTriggerReq)(nil),                                 // 73: aggregator.RunTriggerReq
	(*RunTriggerResp)(nil),                                // 74: aggregator.RunTriggerResp
	(*SimulateTaskReq)(nil),                               // 75: aggregator.SimulateTaskReq
	(*EstimateFeesReq)(nil),                               // 76: aggregator.EstimateFeesReq
	(*FeeAmount)(nil),                                     // 77: aggregator.FeeAmount
	(*GasFeeBreakdown)(nil),                               // 78: aggregator.GasFeeBreakdown
	(*GasOperationFee)(nil),                               // 79: aggregator.GasOperationFee
	(*SmartWalletCreationFee)(nil),                        // 80: aggregator.SmartWalletCreationFee
	(*AutomationFee)(nil),                                 // 81: aggregator.AutomationFee
	(*FeeDiscount)(nil),                                   // 82: aggregator.FeeDiscount
	(*EstimateFeesResp)(nil),                              // 83: aggregator.EstimateFeesResp
	(*EventCondition)(nil),                                // 84: aggregator.EventCondition
	(*FixedTimeTrigger_Config)(nil),                       // 85: aggregator.FixedTimeTrigger.Config
	(*FixedTimeTrigger_Output)(nil),                       // 86: aggregator.FixedTimeTrigger.Output
	(*CronTrigger_Config)(nil),                            // 87: aggregator.CronTrigger.Config
	(*CronTrigger_Output)(nil),                            // 88: aggregator.CronTrigger.Output
	(*BlockTrigger_Config)(nil),                           // 89: aggregator.BlockTrigger.Config
	(*BlockTrigger_Output)(nil),                           // 90: aggregator.BlockTrigger.Output
	(*EventTrigger_Query)(nil),                            // 91: aggregator.EventTrigger.Query
	(*EventTrigger_MethodCall)(nil),                       // 92: aggregator.EventTrigger.MethodCall
	(*EventTrigger_Topics)(nil),                           // 93: aggregator.EventTrigger.Topics
	(*EventTrigger_Config)(nil),                           // 94: aggregator.EventTrigger.Config
	(*EventTrigger_Output)(nil),                           // 95: aggregator.EventTrigger.Output
	(*ManualTrigger_Config)(nil),                          // 96: aggregator.ManualTrigger.Config
	(*ManualTrigger_Output)(nil),                          // 97: aggregator.ManualTrigger.Output
	nil,                                                   // 98: aggregator.ManualTrigger.Config.HeadersEntry
	nil,                                                   // 99: aggregator.ManualTrigger.Config.PathParamsEntry
	(*ETHTransferNode_Config)(nil),                        // 100: aggregator.ETHTransferNode.Config
	(*ETHTransferNode_Output)(nil),                        // 101: aggregator.ETHTransferNode.Output
	(*ContractWriteNode_Config)(nil),                      // 102: aggregator.ContractWriteNode.Config
	(*ContractWriteNode_MethodCall)(nil),                  // 103: aggregator.ContractWriteNode.MethodCall
	(*ContractWriteNode_Output)(nil),                      // 104: aggregator.ContractWriteNode.Output
	(*ContractWriteNode_MethodResult)(nil),                // 105: aggregator.ContractWriteNode.MethodResult
	(*ContractReadNode_MethodCall)(nil),                   // 106: aggregator.ContractReadNode.MethodCall
	(*ContractReadNode_Config)(nil),                       // 107: aggregator.ContractReadNode.Config
	(*ContractReadNode_MethodResult)(nil),                 // 108: aggregator.ContractReadNode.MethodResult
	(*ContractReadNode_Output)(nil),                       // 109: aggregator.ContractReadNode.Output
	(*ContractReadNode_MethodResult_StructuredField)(nil), // 110: aggregator.ContractReadNode.MethodResult.StructuredField
	(*GraphQLQueryNode_Config)(nil),                       // 111: aggregator.GraphQLQueryNode.Config
	(*GraphQLQueryNode_Output)(nil),                       // 112: aggregator.GraphQLQueryNode.Output
	nil,                                                   // 113: aggregator.GraphQLQueryNode.Config.VariablesEntry
	(*RestAPINode_Config)(nil),                            // 114: aggregator.RestAPINode.Config
	(*RestAPINode_Output)(nil),                            // 115: aggregator.RestAPINode.Output
	nil,                                                   // 116: aggregator.RestAPINode.Config.HeadersEntry
	(*CustomCodeNode_Config)(nil),                         // 117: aggregator.CustomCodeNode.Config
	(*CustomCodeNode_Output)(nil),                         // 118: aggregator.CustomCodeNode.Output
	(*BranchNode_Condition)(nil),                          // 119: aggregator.BranchNode.Condition
	(*BranchNode_Config)(nil),                             // 120: aggregator.BranchNode.Config
	(*BranchNode_Output)(nil),                             // 121: aggregator.BranchNode.Output
	(*FilterNode_Config)(nil),                             // 122: aggregator.FilterNode.Config
	(*FilterNode_Output)(nil),                             // 123: aggregator.FilterNode.Output
	(*LoopNode_Config)(nil),                               // 124: aggregator.LoopNode.Config
	(*LoopNode_Output)(nil),                               // 125: aggregator.LoopNode.Output
	(*Execution_Step)(nil),                                // 126: aggregator.Execution.Step
	nil,                                                   // 127: aggregator.Task.InputVariablesEntry
	nil,                                                   // 128: aggregator.CreateTaskReq.InputVariablesEntry
	nil,                                                   // 129: aggregator.RunNodeWithInputsReq.NodeConfigEntry
	nil,                                                   // 130: aggregator.RunNodeWithInputsReq.InputVariablesEntry
	nil,                                                   // 131: aggregator.RunTriggerReq.TriggerConfigEntry
	nil,                                                   // 132: aggregator.RunTriggerReq.TriggerInputEntry
	nil,                                                   // 133: aggregator.SimulateTaskReq.InputVariablesEntry
	nil,                                                   // 134: aggregator.EstimateFeesReq.InputVariablesEntry
	(*structpb.Value)(nil),                                // 135: google.protobuf.Value
}
var file_avs_proto_depIdxs = []int32{
	7,   // 0: aggregator.GetTokenMetadataResp.token:type_name -> aggregator.TokenMetadata
	85,  // 1: aggregator.FixedTimeTrigger.config:type_name -> aggregator.FixedTimeTrigger.Config
	87,  // 2: aggregator.CronTrigger.config:type_name -> aggregator.CronTrigger.Config
	89,  // 3: aggregator.BlockTrigger.config:type_name -> aggregator.BlockTrigger.Config
	94,  // 4: aggregator.EventTrigger.config:type_name -> aggregator.EventTrigger.Config
	96,  // 5: aggregator.ManualTrigger.config:type_name -> aggregator.ManualTrigger.Config
	0,   // 6: aggregator.TaskTrigger.type:type_name -> aggregator.TriggerType
	15,  // 7: aggregator.TaskTrigger.manual:type_name -> aggregator.ManualTrigger
	11,  // 8: aggregator.TaskTrigger.fixed_time:type_name -> aggregator.FixedTimeTrigger
	12,  // 9: aggregator.TaskTrigger.cron:type_name -> aggregator.CronTrigger
	13,  // 10: aggregator.TaskTrigger.block:type_name -> aggregator.BlockTrigger
	14,  // 11: aggregator.TaskTrigger.event:type_name -> aggregator.EventTrigger
	100, // 12: aggregator.ETHTransferNode.config:type_name -> aggregator.ETHTransferNode.Config
	102, // 13: aggregator.ContractWriteNode.config:type_name -> aggregator.ContractWriteNode.Config
	107, // 14: aggregator.ContractReadNode.config:type_name -> aggregator.ContractReadNode.Config
	111, // 15: aggregator.GraphQLQueryNode.config:type_name -> aggregator.GraphQLQueryNode.Config
	114, // 16: aggregator.RestAPINode.config:type_name -> aggregator.RestAPINode.Config
	117, // 17: aggregator.CustomCodeNode.config:type_name -> aggregator.CustomCodeNode.Config
	120, // 18: aggregator.BranchNode.config:type_name -> aggregator.BranchNode.Config
	122, // 19: aggregator.FilterNode.config:type_name -> aggregator.FilterNode.Config
	17,  // 20: aggregator.LoopNode.eth_transfer:type_name -> aggregator.ETHTransferNode
	18,  // 21: aggregator.LoopNode.contract_write:type_name -> aggregator.ContractWriteNode
	19,  // 22: aggregator.LoopNode.contract_read:type_name -> aggregator.ContractReadNode
	20,  // 23: aggregator.LoopNode.graphql_data_query:type_name -> aggregator.GraphQLQueryNode
	21,  // 24: aggregator.LoopNode.rest_api:type_name -> aggregator.RestAPINode
	22,  // 25: aggregator.LoopNode.custom_code:type_name -> aggregator.CustomCodeNode
	124, // 26: aggregator.LoopNode.config:type_name -> aggregator.LoopNode.Config
	1,   // 27: aggregator.TaskNode.type:type_name -> aggregator.NodeType
	17,  // 28: aggregator.TaskNode.eth_transfer:type_name -> aggregator.ETHTransferNode
	18,  // 29: aggregator.TaskNode.contract_write:type_name -> aggregator.ContractWriteNode
	19,  // 30: aggregator.TaskNode.contract_read:type_name -> aggregator.ContractReadNode
	20,  // 31: aggregator.TaskNode.graphql_query:type_name -> aggregator.GraphQLQueryNode
	21,  // 32: aggregator.TaskNode.rest_api:type_name -> aggregator.RestAPINode
	23,  // 33: aggregator.TaskNode.branch:type_name -> aggregator.BranchNode
	24,  // 34: aggregator.TaskNode.filter:type_name -> aggregator.FilterNode
	25,  // 35: aggregator.TaskNode.loop:type_name -> aggregator.LoopNode
	22,  // 36: aggregator.TaskNode.custom_code:type_name -> aggregator.CustomCodeNode
	6,   // 37: aggregator.Execution.status:type_name -> aggregator.ExecutionStatus
	126, // 38: aggregator.Execution.steps:type_name -> aggregator.Execution.Step
	5,   // 39: aggregator.Task.status:type_name -> aggregator.TaskStatus
	16,  // 40: aggregator.Task.trigger:type_name -> aggregator.TaskTrigger
	27,  // 41: aggregator.Task.nodes:type_name -> aggregator.TaskNode
	26,  // 42: aggregator.Task.edges:type_name -> aggregator.TaskEdge
	127, // 43: aggregator.Task.input_variables:type_name -> aggregator.Task.InputVariablesEntry
	16,  // 44: aggregator.CreateTaskReq.trigger:type_name -> aggregator.TaskTrigger
	27,  // 45: aggregator.CreateTaskReq.nodes:type_name -> aggregator.TaskNode
	26,  // 46: aggregator.CreateTaskReq.edges:type_name -> aggregator.TaskEdge
	128, // 47: aggregator.CreateTaskReq.input_variables:type_name -> aggregator.CreateTaskReq.InputVariablesEntry
	35,  // 48: aggregator.ListWalletResp.items:type_name -> aggregator.SmartWallet
	29,  // 49: aggregator.ListTasksResp.items:type_name -> aggregator.Task
	54,  // 50: aggregator.ListTasksResp.page_info:type_name -> aggregator.PageInfo
	28,  // 51: aggregator.ListExecutionsResp.items:type_name -> aggregator.Execution
	54,  // 52: aggregator.ListExecutionsResp.page_info:type_name -> aggregator.PageInfo
	6,   // 53: aggregator.ExecutionStatusResp.status:type_name -> aggregator.ExecutionStatus
	0,   // 54: aggregator.TriggerTaskReq.trigger_type:type_name -> aggregator.TriggerType
	90,  // 55: aggregator.TriggerTaskReq.block_trigger:type_name -> aggregator.BlockTrigger.Output
	86,  // 56: aggregator.TriggerTaskReq.fixed_time_trigger:type_name -> aggregator.FixedTimeTrigger.Output
	88,  // 57: aggregator.TriggerTaskReq.cron_trigger:type_name -> aggregator.CronTrigger.Output
	95,  // 58: aggregator.TriggerTaskReq.event_trigger:type_name -> aggregator.EventTrigger.Output
	97,  // 59: aggregator.TriggerTaskReq.manual_trigger:type_name -> aggregator.ManualTrigger.Output
	6,   // 60: aggregator.TriggerTaskResp.status:type_name -> aggregator.ExecutionStatus
	126, // 61: aggregator.TriggerTaskResp.steps:type_name -> aggregator.Execution.Step
	55,  // 62: aggregator.ListSecretsResp.items:type_name -> aggregator.Secret
	54,  // 63: aggregator.ListSecretsResp.page_info:type_name -> aggregator.PageInfo
	1,   // 64: aggregator.RunNodeWithInputsReq.node_type:type_name -> aggregator.NodeType
	129, // 65: aggregator.RunNodeWithInputsReq.node_config:type_name -> aggregator.RunNodeWithInputsReq.NodeConfigEntry
	130, // 66: aggregator.RunNodeWithInputsReq.input_variables:type_name -> aggregator.RunNodeWithInputsReq.InputVariablesEntry
	135, // 67: aggregator.RunNodeWithInputsResp.metadata:type_name -> google.protobuf.Value
	135, // 68: aggregator.RunNodeWithInputsResp.execution_context:type_name -> google.protobuf.Value
	4,   // 69: aggregator.RunNodeWithInputsResp.error_code:type_name -> aggregator.ErrorCode
	101, // 70: aggregator.RunNodeWithInputsResp.eth_transfer:type_name -> aggregator.ETHTransferNode.Output
	112, // 71: aggregator.RunNodeWithInputsResp.graphql:type_name -> aggregator.GraphQLQueryNode.Output
	109, // 72: aggregator.RunNodeWithInputsResp.contract_read:type_name -> aggregator.ContractReadNode.Output
	104, // 73: aggregator.RunNodeWithInputsResp.contract_write:type_name -> aggregator.ContractWriteNode.Output
	118, // 74: aggregator.RunNodeWithInputsResp.custom_code:type_name -> aggregator.CustomCodeNode.Output
	115, // 75: aggregator.RunNodeWithInputsResp.rest_api:type_name -> aggregator.RestAPINode.Output
	121, // 76: aggregator.RunNodeWithInputsResp.branch:type_name -> aggregator.BranchNode.Output
	123, // 77: aggregator.RunNodeWithInputsResp.filter:type_name -> aggregator.FilterNode.Output
	125, // 78: aggregator.RunNodeWithInputsResp.loop:type_name -> aggregator.LoopNode.Output
	0,   // 79: aggregator.RunTriggerReq.trigger_type:type_name -> aggregator.TriggerType
	131, // 80: aggregator.RunTriggerReq.trigger_config:type_name -> aggregator.RunTriggerReq.TriggerConfigEntry
	132, // 81: aggregator.RunTriggerReq.trigger_input:type_name -> aggregator.RunTriggerReq.TriggerInputEntry
	135, // 82: aggregator.RunTriggerResp.metadata:type_name -> google.protobuf.Value
	135, // 83: aggregator.RunTriggerResp.execution_context:type_name -> google.protobuf.Value
	4,   // 84: aggregator.RunTriggerResp.error_code:type_name -> aggregator.ErrorCode
	90,  // 85: aggregator.RunTriggerResp.block_trigger:type_name -> aggregator.BlockTrigger.Output
	86,  // 86: aggregator.RunTriggerResp.fixed_time_trigger:type_name -> aggregator.FixedTimeTrigger.Output
	88,  // 87: aggregator.RunTriggerResp.cron_trigger:type_name -> aggregator.CronTrigger.Output
	95,  // 88: aggregator.RunTriggerResp.event_trigger:type_name -> aggregator.EventTrigger.Output
	97,  // 89: aggregator.RunTriggerResp.manual_trigger:type_name -> aggregator.ManualTrigger.Output
	16,  // 90: aggregator.SimulateTaskReq.trigger:type_name -> aggregator.TaskTrigger
	27,  // 91: aggregator.SimulateTaskReq.nodes:type_name -> aggregator.TaskNode
	26,  // 92: aggregator.SimulateTaskReq.edges:type_name -> aggregator.TaskEdge
	133, // 93: aggregator.SimulateTaskReq.input_variables:type_name -> aggregator.SimulateTaskReq.InputVariablesEntry
	16,  // 94: aggregator.EstimateFeesReq.trigger:type_name -> aggregator.TaskTrigger
	27,  // 95: aggregator.EstimateFeesReq.nodes:type_name -> aggregator.TaskNode
	26,  // 96: aggregator.EstimateFeesReq.edges:type_name -> aggregator.TaskEdge
	134, // 97: aggregator.EstimateFeesReq.input_variables:type_name -> aggregator.EstimateFeesReq.InputVariablesEntry
	77,  // 98: aggregator.GasFeeBreakdown.total_gas_fees:type_name -> aggregator.FeeAmount
	79,  // 99: aggregator.GasFeeBreakdown.operations:type_name -> aggregator.GasOperationFee
	77,  // 100: aggregator.GasOperationFee.fee:type_name -> aggregator.FeeAmount
	77,  // 101: aggregator.SmartWalletCreationFee.creation_fee:type_name -> aggregator.FeeAmount
	77,  // 102: aggregator.SmartWalletCreationFee.initial_funding:type_name -> aggregator.FeeAmount
	77,  // 103: aggregator.AutomationFee.base_fee:type_name -> aggregator.FeeAmount
	77,  // 104: aggregator.AutomationFee.monitoring_fee:type_name -> aggregator.FeeAmount
	77,  // 105: aggregator.AutomationFee.execution_fee:type_name -> aggregator.FeeAmount
	77,  // 106: aggregator.FeeDiscount.discount_amount:type_name -> aggregator.FeeAmount
	4,   // 107: aggregator.EstimateFeesResp.error_code:type_name -> aggregator.ErrorCode
	78,  // 108: aggregator.EstimateFeesResp.gas_fees:type_name -> aggregator.GasFeeBreakdown
	81,  // 109: aggregator.EstimateFeesResp.automation_fees:type_name -> aggregator.AutomationFee
	80,  // 110: aggregator.EstimateFeesResp.creation_fees:type_name -> aggregator.SmartWalletCreationFee
	77,  // 111: aggregator.EstimateFeesResp.total_fees:type_name -> aggregator.FeeAmount
	82,  // 112: aggregator.EstimateFeesResp.discounts:type_name -> aggregator.FeeDiscount
	77,  // 113: aggregator.EstimateFeesResp.total_discounts:type_name -> aggregator.FeeAmount
	77,  // 114: aggregator.EstimateFeesResp.final_total:type_name -> aggregator.FeeAmount
	135, // 115: aggregator.FixedTimeTrigger.Output.data:type_name -> google.protobuf.Value
	135, // 116: aggregator.CronTrigger.Output.data:type_name -> google.protobuf.Value
	135, // 117: aggregator.BlockTrigger.Output.data:type_name -> google.protobuf.Value
	93,  // 118: aggregator.EventTrigger.Query.topics:type_name -> aggregator.EventTrigger.Topics
	135, // 119: aggregator.EventTrigger.Query.contract_abi:type_name -> google.protobuf.Value
	84,  // 120: aggregator.EventTrigger.Query.conditions:type_name -> aggregator.EventCondition
	92,  // 121: aggregator.EventTrigger.Query.method_calls:type_name -> aggregator.EventTrigger.MethodCall
	91,  // 122: aggregator.EventTrigger.Config.queries:type_name -> aggregator.EventTrigger.Query
	135, // 123: aggregator.EventTrigger.Output.data:type_name -> google.protobuf.Value
	135, // 124: aggregator.ManualTrigger.Config.data:type_name -> google.protobuf.Value
	98,  // 125: aggregator.ManualTrigger.Config.headers:type_name -> aggregator.ManualTrigger.Config.HeadersEntry
	99,  // 126: aggregator.ManualTrigger.Config.pathParams:type_name -> aggregator.ManualTrigger.Config.PathParamsEntry
	135, // 127: aggregator.ManualTrigger.Output.data:type_name -> google.protobuf.Value
	135, // 128: aggregator.ETHTransferNode.Output.data:type_name -> google.protobuf.Value
	135, // 129: aggregator.ContractWriteNode.Config.contract_abi:type_name -> google.protobuf.Value
	103, // 130: aggregator.ContractWriteNode.Config.method_calls:type_name -> aggregator.ContractWriteNode.MethodCall
	135, // 131: aggregator.ContractWriteNode.Output.data:type_name -> google.protobuf.Value
	135, // 132: aggregator.ContractWriteNode.MethodResult.method_abi:type_name -> google.protobuf.Value
	135, // 133: aggregator.ContractWriteNode.MethodResult.receipt:type_name -> google.protobuf.Value
	135, // 134: aggregator.ContractWriteNode.MethodResult.value:type_name -> google.protobuf.Value
	135, // 135: aggregator.ContractReadNode.Config.contract_abi:type_name -> google.protobuf.Value
	106, // 136: aggregator.ContractReadNode.Config.method_calls:type_name -> aggregator.ContractReadNode.MethodCall
	110, // 137: aggregator.ContractReadNode.MethodResult.data:type_name -> aggregator.ContractReadNode.MethodResult.StructuredField
	135, // 138: aggregator.ContractReadNode.Output.data:type_name -> google.protobuf.Value
	113, // 139: aggregator.GraphQLQueryNode.Config.variables:type_name -> aggregator.GraphQLQueryNode.Config.VariablesEntry
	135, // 140: aggregator.GraphQLQueryNode.Output.data:type_name -> google.protobuf.Value
	116, // 141: aggregator.RestAPINode.Config.headers:type_name -> aggregator.RestAPINode.Config.HeadersEntry
	135, // 142: aggregator.RestAPINode.Output.data:type_name -> google.protobuf.Value
	3,   // 143: aggregator.CustomCodeNode.Config.lang:type_name -> aggregator.Lang
	135, // 144: aggregator.CustomCodeNode.Output.data:type_name -> google.protobuf.Value
	119, // 145: aggregator.BranchNode.Config.conditions:type_name -> aggregator.BranchNode.Condition
	135, // 146: aggregator.BranchNode.Output.data:type_name -> google.protobuf.Value
	135, // 147: aggregator.FilterNode.Output.data:type_name -> google.protobuf.Value
	2,   // 148: aggregator.LoopNode.Config.execution_mode:type_name -> aggregator.ExecutionMode
	135, // 149: aggregator.LoopNode.Output.data:type_name -> google.protobuf.Value
	4,   // 150: aggregator.Execution.Step.error_code:type_name -> aggregator.ErrorCode
	135, // 151: aggregator.Execution.Step.config:type_name -> google.protobuf.Value
	135, // 152: aggregator.Execution.Step.metadata:type_name -> google.protobuf.Value
	135, // 153: aggregator.Execution.Step.execution_context:type_name -> google.protobuf.Value
	90,  // 154: aggregator.Execution.Step.block_trigger:type_name -> aggregator.BlockTrigger.Output
	86,  // 155: aggregator.Execution.Step.fixed_time_trigger:type_name -> aggregator.FixedTimeTrigger.Output
	88,  // 156: aggregator.Execution.Step.cron_trigger:type_name -> aggregator.CronTrigger.Output
	95,  // 157: aggregator.Execution.Step.event_trigger:type_name -> aggregator.EventTrigger.Output
	97,  // 158: aggregator.Execution.Step.manual_trigger:type_name -> aggregator.ManualTrigger.Output
	101, // 159: aggregator.Execution.Step.eth_transfer:type_name -> aggregator.ETHTransferNode.Output
	112, // 160: aggregator.Execution.Step.graphql:type_name -> aggregator.GraphQLQueryNode.Output
	109, // 161: aggregator.Execution.Step.contract_read:type_name -> aggregator.ContractReadNode.Output
	104, // 162: aggregator.Execution.Step.contract_write:type_name -> aggregator.ContractWriteNode.Output
	118, // 163: aggregator.Execution.Step.custom_code:type_name -> aggregator.CustomCodeNode.Output
	115, // 164: aggregator.Execution.Step.rest_api:type_name -> aggregator.RestAPINode.Output
	121, // 165: aggregator.Execution.Step.branch:type_name -> aggregator.BranchNode.Output
	123, // 166: aggregator.Execution.Step.filter:type_name -> aggregator.FilterNode.Output
	125, // 167: aggregator.Execution.Step.loop:type_name -> aggregator.LoopNode.Output
	135, // 168: aggregator.Task.InputVariablesEntry.value:type_name -> google.protobuf.Value
	135, // 169: aggregator.CreateTaskReq.InputVariablesEntry.value:type_name -> google.protobuf.Value
	135, // 170: aggregator.RunNodeWithInputsReq.NodeConfigEntry.value:type_name -> google.protobuf.Value
	135, // 171: aggregator.RunNodeWithInputsReq.InputVariablesEntry.value:type_name -> google.protobuf.Value
	135, // 172: aggregator.RunTriggerReq.TriggerConfigEntry.value:type_name -> google.protobuf.Value
	135, // 173: aggregator.RunTriggerReq.TriggerInputEntry.value:type_name -> google.protobuf.Value
	135, // 174: aggregator.SimulateTaskReq.InputVariablesEntry.value:type_name -> google.protobuf.Value
	135, // 175: aggregator.EstimateFeesReq.InputVariablesEntry.value:type_name -> google.protobuf.Value
	43,  // 176: aggregator.Aggregator.GetKey:input_type -> aggregator.GetKeyReq
	59,  // 177: aggregator.Aggregator.GetSignatureFormat:input_type -> aggregator.GetSignatureFormatReq
	32,  // 178: aggregator.Aggregator.GetNonce:input_type -> aggregator.NonceRequest
	45,  // 179: aggregator.Aggregator.GetWallet:input_type -> aggregator.GetWalletReq
	47,  // 180: aggregator.Aggregator.SetWallet:input_type -> aggregator.SetWalletReq
	34,  // 181: aggregator.Aggregator.ListWallets:input_type -> aggregator.ListWalletReq
	48,  // 182: aggregator.Aggregator.WithdrawFunds:input_type -> aggregator.WithdrawFundsReq
	30,  // 183: aggregator.Aggregator.CreateTask:input_type -> aggregator.CreateTaskReq
	37,  // 184: aggregator.Aggregator.ListTasks:input_type -> aggregator.ListTasksReq
	10,  // 185: aggregator.Aggregator.GetTask:input_type -> aggregator.IdReq
	39,  // 186: aggregator.Aggregator.ListExecutions:input_type -> aggregator.ListExecutionsReq
	41,  // 187: aggregator.Aggregator.GetExecution:input_type -> aggregator.ExecutionReq
	41,  // 188: aggregator.Aggregator.GetExecutionStatus:input_type -> aggregator.ExecutionReq
	10,  // 189: aggregator.Aggregator.CancelTask:input_type -> aggregator.IdReq
	10,  // 190: aggregator.Aggregator.DeleteTask:input_type -> aggregator.IdReq
	50,  // 191: aggregator.Aggregator.TriggerTask:input_type -> aggregator.TriggerTaskReq
	52,  // 192: aggregator.Aggregator.CreateSecret:input_type -> aggregator.CreateOrUpdateSecretReq
	57,  // 193: aggregator.Aggregator.DeleteSecret:input_type -> aggregator.DeleteSecretReq
	53,  // 194: aggregator.Aggregator.ListSecrets:input_type -> aggregator.ListSecretsReq
	52,  // 195: aggregator.Aggregator.UpdateSecret:input_type -> aggregator.CreateOrUpdateSecretReq
	65,  // 196: aggregator.Aggregator.GetWorkflowCount:input_type -> aggregator.GetWorkflowCountReq
	67,  // 197: aggregator.Aggregator.GetExecutionCount:input_type -> aggregator.GetExecutionCountReq
	69,  // 198: aggregator.Aggregator.GetExecutionStats:input_type -> aggregator.GetExecutionStatsReq
	71,  // 199: aggregator.Aggregator.RunNodeWithInputs:input_type -> aggregator.RunNodeWithInputsReq
	73,  // 200: aggregator.Aggregator.RunTrigger:input_type -> aggregator.RunTriggerReq
	75,  // 201: aggregator.Aggregator.SimulateTask:input_type -> aggregator.SimulateTaskReq
	8,   // 202: aggregator.Aggregator.GetTokenMetadata:input_type -> aggregator.GetTokenMetadataReq
	76,  // 203: aggregator.Aggregator.EstimateFees:input_type -> aggregator.EstimateFeesReq
	44,  // 204: aggregator.Aggregator.GetKey:output_type -> aggregator.KeyResp
	60,  // 205: aggregator.Aggregator.GetSignatureFormat:output_type -> aggregator.GetSignatureFormatResp
	33,  // 206: aggregator.Aggregator.GetNonce:output_type -> aggregator.NonceResp
	46,  // 207: aggregator.Aggregator.GetWallet:output_type -> aggregator.GetWalletResp
	46,  // 208: aggregator.Aggregator.SetWallet:output_type -> aggregator.GetWalletResp
	36,  // 209: aggregator.Aggregator.ListWallets:output_type -> aggregator.ListWalletResp
	49,  // 210: aggregator.Aggregator.WithdrawFunds:output_type -> aggregator.WithdrawFundsResp
	31,  // 211: aggregator.Aggregator.CreateTask:output_type -> aggregator.CreateTaskResp
	38,  // 212: aggregator.Aggregator.ListTasks:output_type -> aggregator.ListTasksResp
	29,  // 213: aggregator.Aggregator.GetTask:output_type -> aggregator.Task
	40,  // 214: aggregator.Aggregator.ListExecutions:output_type -> aggregator.ListExecutionsResp
	28,  // 215: aggregator.Aggregator.GetExecution:output_type -> aggregator.Execution
	42,  // 216: aggregator.Aggregator.GetExecutionStatus:output_type -> aggregator.ExecutionStatusResp
	64,  // 217: aggregator.Aggregator.CancelTask:output_type -> aggregator.CancelTaskResp
	63,  // 218: aggregator.Aggregator.DeleteTask:output_type -> aggregator.DeleteTaskResp
	51,  // 219: aggregator.Aggregator.TriggerTask:output_type -> aggregator.TriggerTaskResp
	61,  // 220: aggregator.Aggregator.CreateSecret:output_type -> aggregator.CreateSecretResp
	58,  // 221: aggregator.Aggregator.DeleteSecret:output_type -> aggregator.DeleteSecretResp
	56,  // 222: aggregator.Aggregator.ListSecrets:output_type -> aggregator.ListSecretsResp
	62,  // 223: aggregator.Aggregator.UpdateSecret:output_type -> aggregator.UpdateSecretResp
	66,  // 224: aggregator.Aggregator.GetWorkflowCount:output_type -> aggregator.GetWorkflowCountResp
	68,  // 225: aggregator.Aggregator.GetExecutionCount:output_type -> aggregator.GetExecutionCountResp
	70,  // 226: aggregator.Aggregator.GetExecutionStats:output_type -> aggregator.GetExecutionStatsResp
	72,  // 227: aggregator.Aggregator.RunNodeWithInputs:output_type -> aggregator.RunNodeWithInputsResp
	74,  // 228: aggregator.Aggregator.RunTrigger:output_type -> aggregator.RunTriggerResp
	28,  // 229: aggregator.Aggregator.SimulateTask:output_type -> aggregator.Execution
	9,   // 230: aggregator.Aggregator.GetTokenMetadata:output_type -> aggregator.GetTokenMetadataResp
	83,  // 231: aggregator.Aggregator.EstimateFees:output_type -> aggregator.EstimateFeesResp
	204, // [204:232] is the sub-list for method output_type
	176, // [176:204] is the sub-list for method input_type
	176, // [176:176] is the sub-list for extension type_name
	176, // [176:176] is the sub-list for extension extendee
	0,   // [0:176] is the sub-list for field type_name
}

func init() { file_avs_proto_init() }
func file_avs_proto_init() {
	if File_avs_proto != nil {
		return
	}
	file_avs_proto_msgTypes[9].OneofWrappers = []any{
		(*TaskTrigger_Manual)(nil),
		(*TaskTrigger_FixedTime)(nil),
		(*TaskTrigger_Cron)(nil),
		(*TaskTrigger_Block)(nil),
		(*TaskTrigger_Event)(nil),
	}
	file_avs_proto_msgTypes[18].OneofWrappers = []any{
		(*LoopNode_EthTransfer)(nil),
		(*LoopNode_ContractWrite)(nil),
		(*LoopNode_ContractRead)(nil),
		(*LoopNode_GraphqlDataQuery)(nil),
		(*LoopNode_RestApi)(nil),
		(*LoopNode_CustomCode)(nil),
	}
	file_avs_proto_msgTypes[20].OneofWrappers = []any{
		(*TaskNode_EthTransfer)(nil),
		(*TaskNode_ContractWrite)(nil),
		(*TaskNode_ContractRead)(nil),
		(*TaskNode_GraphqlQuery)(nil),
		(*TaskNode_RestApi)(nil),
		(*TaskNode_Branch)(nil),
		(*TaskNode_Filter)(nil),
		(*TaskNode_Loop)(nil),
		(*TaskNode_CustomCode)(nil),
	}
	file_avs_proto_msgTypes[43].OneofWrappers = []any{
		(*TriggerTaskReq_BlockTrigger)(nil),
		(*TriggerTaskReq_FixedTimeTrigger)(nil),
		(*TriggerTaskReq_CronTrigger)(nil),
		(*TriggerTaskReq_EventTrigger)(nil),
		(*TriggerTaskReq_ManualTrigger)(nil),
	}
	file_avs_proto_msgTypes[44].OneofWrappers = []any{}
	file_avs_proto_msgTypes[65].OneofWrappers = []any{
		(*RunNodeWithInputsResp_EthTransfer)(nil),
		(*RunNodeWithInputsResp_Graphql)(nil),
		(*RunNodeWithInputsResp_ContractRead)(nil),
		(*RunNodeWithInputsResp_ContractWrite)(nil),
		(*RunNodeWithInputsResp_CustomCode)(nil),
		(*RunNodeWithInputsResp_RestApi)(nil),
		(*RunNodeWithInputsResp_Branch)(nil),
		(*RunNodeWithInputsResp_Filter)(nil),
		(*RunNodeWithInputsResp_Loop)(nil),
	}
	file_avs_proto_msgTypes[67].OneofWrappers = []any{
		(*RunTriggerResp_BlockTrigger)(nil),
		(*RunTriggerResp_FixedTimeTrigger)(nil),
		(*RunTriggerResp_CronTrigger)(nil),
		(*RunTriggerResp_EventTrigger)(nil),
		(*RunTriggerResp_ManualTrigger)(nil),
	}
	file_avs_proto_msgTypes[84].OneofWrappers = []any{}
	file_avs_proto_msgTypes[85].OneofWrappers = []any{}
	file_avs_proto_msgTypes[96].OneofWrappers = []any{}
	file_avs_proto_msgTypes[98].OneofWrappers = []any{}
	file_avs_proto_msgTypes[99].OneofWrappers = []any{}
	file_avs_proto_msgTypes[119].OneofWrappers = []any{
		(*Execution_Step_BlockTrigger)(nil),
		(*Execution_Step_FixedTimeTrigger)(nil),
		(*Execution_Step_CronTrigger)(nil),
		(*Execution_Step_EventTrigger)(nil),
		(*Execution_Step_ManualTrigger)(nil),
		(*Execution_Step_EthTransfer)(nil),
		(*Execution_Step_Graphql)(nil),
		(*Execution_Step_ContractRead)(nil),
		(*Execution_Step_ContractWrite)(nil),
		(*Execution_Step_CustomCode)(nil),
		(*Execution_Step_RestApi)(nil),
		(*Execution_Step_Branch)(nil),
		(*Execution_Step_Filter)(nil),
		(*Execution_Step_Loop)(nil),
	}
	type x struct{}
	out := protoimpl.TypeBuilder{
		File: protoimpl.DescBuilder{
			GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
			RawDescriptor: unsafe.Slice(unsafe.StringData(file_avs_proto_rawDesc), len(file_avs_proto_rawDesc)),
			NumEnums:      7,
			NumMessages:   128,
			NumExtensions: 0,
			NumServices:   1,
		},
		GoTypes:           file_avs_proto_goTypes,
		DependencyIndexes: file_avs_proto_depIdxs,
		EnumInfos:         file_avs_proto_enumTypes,
		MessageInfos:      file_avs_proto_msgTypes,
	}.Build()
	File_avs_proto = out.File
	file_avs_proto_goTypes = nil
	file_avs_proto_depIdxs = nil
}
