diff --git a/.golangci.yaml b/.golangci.yaml new file mode 100644 index 0000000..c7ffca7 --- /dev/null +++ b/.golangci.yaml @@ -0,0 +1,126 @@ +# Options for analysis running. +run: + # Which dirs to skip: issues from them won't be reported. + # Can use regexp here: `generated.*`, regexp is applied on full path, + # including the path prefix if one is set. + # Default value is empty list, + # but default dirs are skipped independently of this option's value (see skip-dirs-use-default). + # "/" will be replaced by current OS file path separator to properly work on Windows. + skip-dirs: + - vendor + - gen + +linters: + enable-all: true + + # Disable specific linter + # https://golangci-lint.run/usage/linters/#disabled-by-default + disable: + - dupl + - lll + - interfacer + - exhaustivestruct + - nosnakecase + - scopelint + - ifshort + - golint + - deadcode + - varcheck + - structcheck + - maligned + - wrapcheck + - varnamelen + - funlen + - gomoddirectives + - gocognit + - testpackage + - paralleltest + - nestif + - cyclop + - maintidx + - gomnd + - gochecknoglobals + - gocritic + - godox + - forbidigo + - exhaustruct + - contextcheck + - ireturn + - goerr113 + - depguard + +linters-settings: + exhaustive: + # Program elements to check for exhaustiveness. + # Default: [ switch ] + check: + - switch + - map + godot: + # Comments to be checked: `declarations`, `toplevel`, or `all`. + # Default: declarations + scope: declarations + # Check that each sentence starts with a capital letter. + # Default: false + capital: true + misspell: + # Correct spellings using locale preferences for US or UK. + # Setting locale to US will correct the British spelling of 'colour' to 'color'. + # Default is to use a neutral variety of English. + locale: US + nolintlint: + # Enable to require an explanation of nonzero length after each nolint directive. + # Default: false + require-explanation: true + # Enable to require nolint directives to mention the specific linter being suppressed. + # Default: false + require-specific: true + predeclared: + # Include method names and field names (i.e., qualified names) in checks. + # Default: false + q: true + tagliatelle: + # Check the struct tag name case. + case: + # Use the struct field name to check the name of the struct tag. + # Default: false + use-field-name: true + # `camel` is used for `json` and `yaml`, and `header` is used for `header` (can be overridden) + # Default: {} + rules: + # Any struct tag type can be used. + # Support string case: `camel`, `pascal`, `kebab`, `snake`, `goCamel`, `goPascal`, `goKebab`, `goSnake`, `upper`, `lower`, `header` + json: camel + yaml: camel + xml: camel + bson: camel + avro: snake + mapstructure: kebab + gci: + # Section configuration to compare against. + # Section names are case-insensitive and may contain parameters in (). + # The default order of sections is `standard > default > custom > blank > dot`, + # If `custom-order` is `true`, it follows the order of `sections` option. + # Default: ["standard", "default"] + sections: + - standard # Standard section: captures all standard packages. + - default # Default section: contains all imports that could not be matched to another section type. + - prefix(go.mongodb.org) + - prefix(google.golang.org) + - prefix(gopkg.in) + - blank # Blank section: contains all blank imports. This section is not present unless explicitly enabled. + - dot # Dot section: contains all dot imports. This section is not present unless explicitly enabled. + # Skip generated files. + # Default: true + skip-generated: true + # Enable custom order of sections. + # If `true`, make the section order the same as the order of `sections`. + # Default: false + custom-order: true + gofumpt: + # Module path which contains the source code being formatted. + # Default: "" + module-path: github.com/coinbase/staking-client-library-go + # Choose whether to use the extra rules. + # Default: false + extra-rules: true diff --git a/Makefile b/Makefile new file mode 100644 index 0000000..806f4ff --- /dev/null +++ b/Makefile @@ -0,0 +1,83 @@ +# +# Tool Prerequisites Check +# This ensures that you have the necessary executables installed to run this makefile. +# + +BUILD_PREREQUISITES = git go buf protoc-gen-go protoc-gen-go-grpc protoc-gen-csf protoc-gen-grpc-gateway protoc-gen-go-aip mockery +VALIDATION_PREREQUISITES = golangci-lint + +# +# Informational Targets +# These rarely change, and only serve to print out helpful details about this makefile. +# + +.PHONY: usage +usage: + @ echo "Usage: make [`cat Makefile | grep "^[A-z\%\-]*:" | awk '{print $$1}' | sed "s/://g" | sed "s/%/[1-3]/g" | xargs`]" + +# +# Functional Targets +# These serve specific purposes for the build/release of this client. +# + +.PHONY: install_prerequisites +install_prerequisites: # Install build prerequisites + @ scripts/install-go-tools.sh + @ scripts/install-go-validation-tools.sh + +.PHONY: clean +clean: + @ rm -rf gen/* + @ rm -rf docs/openapi/* + +.PHONY: build_deps +build_deps: + @ printf $(foreach exec,$(BUILD_PREREQUISITES), \ + $(if $(shell which $(exec)),"", \ + $(error "No $(exec) in PATH. Prerequisites are: $(BUILD_PREREQUISITES)"))) + +.PHONY: validation_deps +validation_deps: + @ printf $(foreach exec,$(VALIDATION_PREREQUISITES), \ + $(if $(shell which $(exec)),"", \ + $(error "No $(exec) in PATH. Prerequisites are: $(VALIDATION_PREREQUISITES)"))) + +.PHONY: buf_gen +buf_gen: + @ buf generate --template protos/buf.gen.orchestration.yaml buf.build/cdp/orchestration --path coinbase/staking/orchestration/v1 + @ buf generate --template protos/buf.gen.rewards.yaml buf.build/cdp/rewards --path coinbase/staking/rewards/v1 + + # We don't need internal snippets and test files generated by gapic plugin. + # w.r.t the internal/snippets folder, gapic provides an option to supply an option to omit generating them here: + # https://github.com/googleapis/gapic-generator-go?tab=readme-ov-file#invocation + # but unfortunately, the option doesn't work and is likely to be removed, per this issue: + # https://github.com/googleapis/gapic-generator-go/issues/1332 + @ rm -rf gen/client/coinbase/staking/orchestration/v1/internal + @ rm -rf gen/client/coinbase/staking/rewards/v1/internal + @ rm -rf gen/client/coinbase/staking/orchestration/v1/*test.go + @ rm -rf gen/client/coinbase/staking/rewards/v1/*test.go + +.PHONY: gen +gen: install_prerequisites build_deps clean buf_gen + +.PHONY: build +build: + @ go build -o bin/cosmos_list_rewards examples/cosmos/list-rewards/main.go + @ go build -o bin/ethereum/create_and_process_workflow examples/ethereum/create-and-process-workflow/main.go + @ go build -o bin/ethereum/create_workflow examples/ethereum/create-workflow/main.go + @ go build -o bin/ethereum/list_rewards examples/ethereum/list-rewards/main.go + @ go build -o bin/ethereum/list_stakes examples/ethereum/list-stakes/main.go + @ go build -o bin/example examples/hello-world/main.go + @ go build -o bin/list_workflows examples/list-workflows/main.go + @ go build -o bin/solana/solana_list_rewards examples/solana/list-rewards/main.go + @ go build -o bin/solana/solana_create_workflow examples/solana/create-workflow/main.go + +.PHONY: lint +lint: validation_deps + @ printf "\nLint App\n" + @ golangci-lint run --timeout 3m ./... + +.PHONY: lintfix +lintfix: validation_deps + @ printf "\nFixing Lint Issues\n" + @ golangci-lint run --timeout 3m --fix ./... diff --git a/docs/openapi/orchestration.swagger.json b/docs/openapi/orchestration.swagger.json index a7e0b19..4c65091 100644 --- a/docs/openapi/orchestration.swagger.json +++ b/docs/openapi/orchestration.swagger.json @@ -970,6 +970,39 @@ "amount" ] }, + "v1EthereumNativeStakeParameters": { + "type": "object", + "properties": { + "withdrawalAddress": { + "type": "string", + "title": "Ethereum address used to withdrawal funds" + }, + "feeRecipient": { + "type": "string", + "title": "Ethereum address used to accumulate fees" + }, + "amount": { + "$ref": "#/definitions/v1Amount", + "title": "Amount of ETH to stake in increments of 32" + } + }, + "title": "Ethereum: Native Stake Parameters", + "required": [ + "withdrawalAddress", + "feeRecipient", + "amount" + ] + }, + "v1EthereumStakingParameters": { + "type": "object", + "properties": { + "nativeStakeParameters": { + "$ref": "#/definitions/v1EthereumNativeStakeParameters", + "title": "Native staking parameters" + } + }, + "title": "Ethereum: Staking Parameters" + }, "v1ListActionsResponse": { "type": "object", "properties": { @@ -1084,6 +1117,28 @@ }, "description": "A Protocol resource (e.g. ethereum_kiln, solana etc.)." }, + "v1ProvisionInfraStepOutput": { + "type": "object", + "properties": { + "state": { + "$ref": "#/definitions/v1ProvisionInfraStepOutputState", + "description": "The state of the provision infra step.", + "readOnly": true + } + }, + "description": "The details for an infrastructure provision request." + }, + "v1ProvisionInfraStepOutputState": { + "type": "string", + "enum": [ + "STATE_UNSPECIFIED", + "STATE_IN_PROGRESS", + "STATE_COMPLETED", + "STATE_FAILED" + ], + "default": "STATE_UNSPECIFIED", + "description": "State defines an enumeration of states for provisioning infra.\n\n - STATE_UNSPECIFIED: Unspecified step state.\n - STATE_IN_PROGRESS: Provision step is in-progress.\n - STATE_COMPLETED: Provision step completed.\n - STATE_FAILED: Provision step failed." + }, "v1SolanaClaimStakeParameters": { "type": "object", "properties": { @@ -1402,6 +1457,10 @@ "$ref": "#/definitions/v1EthereumKilnStakingParameters", "description": "EthereumKiln staking parameters." }, + "ethereumStakingParameters": { + "$ref": "#/definitions/v1EthereumStakingParameters", + "description": "Ethereum staking parameters." + }, "state": { "$ref": "#/definitions/v1WorkflowState", "description": "The current state of the workflow.", @@ -1445,7 +1504,8 @@ "required": [ "action", "solanaStakingParameters", - "ethereumKilnStakingParameters" + "ethereumKilnStakingParameters", + "ethereumStakingParameters" ] }, "v1WorkflowState": { @@ -1478,6 +1538,11 @@ "$ref": "#/definitions/v1WaitStepOutput", "description": "The waiting details for any kind like how many checkpoints away for unbonding etc.", "readOnly": true + }, + "provisionInfraStepOutput": { + "$ref": "#/definitions/v1ProvisionInfraStepOutput", + "description": "The details for provisioned infrastructure.", + "readOnly": true } }, "description": "The information for a step in the workflow.", diff --git a/docs/openapi/rewards.swagger.json b/docs/openapi/rewards.swagger.json index 3073621..c23e879 100644 --- a/docs/openapi/rewards.swagger.json +++ b/docs/openapi/rewards.swagger.json @@ -223,6 +223,13 @@ "in": "query", "required": false, "type": "string" + }, + { + "name": "orderBy", + "description": "The order in which to sort the results.\n[AIP-132](https://google.aip.dev/132) compliant order_by field.\nThe default behavior, if not supplied, is 'evaluation_time desc'.\nExample(s):\n* 'evaluation_time desc', which returns Stakes starting with the most recent.\n* 'evaluation_time asc', which returns Stakes starting with the oldest available.\n* 'evaluation_time', which returns Stakes starting with the oldest available.", + "in": "query", + "required": false, + "type": "string" } ], "tags": [ diff --git a/gen/client/coinbase/staking/rewards/v1/reward_client.go b/gen/client/coinbase/staking/rewards/v1/reward_client.go index 283ace1..fbad391 100644 --- a/gen/client/coinbase/staking/rewards/v1/reward_client.go +++ b/gen/client/coinbase/staking/rewards/v1/reward_client.go @@ -291,6 +291,9 @@ func (c *rewardRESTClient) ListStakes(ctx context.Context, req *rewardpb.ListSta if req.GetFilter() != "" { params.Add("filter", fmt.Sprintf("%v", req.GetFilter())) } + if req.GetOrderBy() != "" { + params.Add("orderBy", fmt.Sprintf("%v", req.GetOrderBy())) + } if req.GetPageSize() != 0 { params.Add("pageSize", fmt.Sprintf("%v", req.GetPageSize())) } diff --git a/gen/go/coinbase/staking/orchestration/v1/action.pb.go b/gen/go/coinbase/staking/orchestration/v1/action.pb.go index 3d4a2c8..e1bbb2a 100644 --- a/gen/go/coinbase/staking/orchestration/v1/action.pb.go +++ b/gen/go/coinbase/staking/orchestration/v1/action.pb.go @@ -203,10 +203,9 @@ var file_coinbase_staking_orchestration_v1_action_proto_rawDesc = []byte{ 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x29, 0x2e, 0x63, 0x6f, 0x69, 0x6e, 0x62, 0x61, 0x73, 0x65, 0x2e, 0x73, 0x74, 0x61, 0x6b, 0x69, 0x6e, 0x67, 0x2e, 0x6f, 0x72, 0x63, 0x68, 0x65, 0x73, 0x74, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x41, 0x63, 0x74, 0x69, 0x6f, - 0x6e, 0x52, 0x07, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x42, 0x58, 0x5a, 0x56, 0x67, 0x69, - 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x63, 0x6f, 0x69, 0x6e, 0x62, 0x61, 0x73, - 0x65, 0x2f, 0x73, 0x74, 0x61, 0x6b, 0x69, 0x6e, 0x67, 0x2d, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, - 0x2d, 0x6c, 0x69, 0x62, 0x72, 0x61, 0x72, 0x79, 0x2d, 0x67, 0x6f, 0x2f, 0x67, 0x65, 0x6e, 0x2f, + 0x6e, 0x52, 0x07, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x42, 0x48, 0x5a, 0x46, 0x67, 0x69, + 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x62, 0x68, 0x71, 0x2e, 0x6e, 0x65, 0x74, 0x2f, 0x63, 0x6c, + 0x6f, 0x75, 0x64, 0x2f, 0x73, 0x74, 0x61, 0x6b, 0x69, 0x6e, 0x67, 0x2f, 0x67, 0x65, 0x6e, 0x2f, 0x67, 0x6f, 0x2f, 0x63, 0x6f, 0x69, 0x6e, 0x62, 0x61, 0x73, 0x65, 0x2f, 0x73, 0x74, 0x61, 0x6b, 0x69, 0x6e, 0x67, 0x2f, 0x6f, 0x72, 0x63, 0x68, 0x65, 0x73, 0x74, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2f, 0x76, 0x31, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, diff --git a/gen/go/coinbase/staking/orchestration/v1/api.pb.go b/gen/go/coinbase/staking/orchestration/v1/api.pb.go index dd37ceb..9508c1d 100644 --- a/gen/go/coinbase/staking/orchestration/v1/api.pb.go +++ b/gen/go/coinbase/staking/orchestration/v1/api.pb.go @@ -215,7 +215,7 @@ var file_coinbase_staking_orchestration_v1_api_proto_rawDesc = []byte{ 0x76, 0x69, 0x65, 0x77, 0x53, 0x74, 0x61, 0x6b, 0x69, 0x6e, 0x67, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, 0x3a, 0x76, 0x69, 0x65, 0x77, 0x1a, 0x1d, 0xca, 0x41, 0x1a, 0x61, 0x70, 0x69, 0x2e, 0x64, 0x65, 0x76, 0x65, 0x6c, 0x6f, 0x70, 0x65, 0x72, 0x2e, 0x63, 0x6f, 0x69, 0x6e, 0x62, 0x61, - 0x73, 0x65, 0x2e, 0x63, 0x6f, 0x6d, 0x42, 0xf5, 0x07, 0x92, 0x41, 0x99, 0x07, 0x12, 0x65, 0x0a, + 0x73, 0x65, 0x2e, 0x63, 0x6f, 0x6d, 0x42, 0xe5, 0x07, 0x92, 0x41, 0x99, 0x07, 0x12, 0x65, 0x0a, 0x15, 0x4f, 0x72, 0x63, 0x68, 0x65, 0x73, 0x74, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x12, 0x48, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x20, 0x74, 0x68, 0x61, 0x74, 0x20, 0x63, 0x61, 0x6e, 0x20, 0x70, 0x6f, 0x77, 0x65, 0x72, 0x20, 0x6e, @@ -273,10 +273,9 @@ var file_coinbase_staking_orchestration_v1_api_proto_rawDesc = []byte{ 0x6e, 0x74, 0x65, 0x78, 0x74, 0x20, 0x64, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x6a, 0x27, 0x0a, 0x08, 0x57, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x12, 0x1b, 0x57, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x20, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x20, 0x64, - 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x5a, 0x56, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, - 0x6f, 0x6d, 0x2f, 0x63, 0x6f, 0x69, 0x6e, 0x62, 0x61, 0x73, 0x65, 0x2f, 0x73, 0x74, 0x61, 0x6b, - 0x69, 0x6e, 0x67, 0x2d, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x2d, 0x6c, 0x69, 0x62, 0x72, 0x61, - 0x72, 0x79, 0x2d, 0x67, 0x6f, 0x2f, 0x67, 0x65, 0x6e, 0x2f, 0x67, 0x6f, 0x2f, 0x63, 0x6f, 0x69, + 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x5a, 0x46, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, + 0x62, 0x68, 0x71, 0x2e, 0x6e, 0x65, 0x74, 0x2f, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2f, 0x73, 0x74, + 0x61, 0x6b, 0x69, 0x6e, 0x67, 0x2f, 0x67, 0x65, 0x6e, 0x2f, 0x67, 0x6f, 0x2f, 0x63, 0x6f, 0x69, 0x6e, 0x62, 0x61, 0x73, 0x65, 0x2f, 0x73, 0x74, 0x61, 0x6b, 0x69, 0x6e, 0x67, 0x2f, 0x6f, 0x72, 0x63, 0x68, 0x65, 0x73, 0x74, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2f, 0x76, 0x31, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, diff --git a/gen/go/coinbase/staking/orchestration/v1/common.pb.go b/gen/go/coinbase/staking/orchestration/v1/common.pb.go index cf91781..adc42ff 100644 --- a/gen/go/coinbase/staking/orchestration/v1/common.pb.go +++ b/gen/go/coinbase/staking/orchestration/v1/common.pb.go @@ -97,9 +97,8 @@ var file_coinbase_staking_orchestration_v1_common_proto_rawDesc = []byte{ 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x1e, 0x92, 0x41, 0x1b, 0x32, 0x19, 0x54, 0x68, 0x65, 0x20, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x63, 0x79, 0x20, 0x6f, 0x66, 0x20, 0x74, 0x68, 0x65, 0x20, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x52, 0x08, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x63, 0x79, 0x42, - 0x58, 0x5a, 0x56, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x63, 0x6f, - 0x69, 0x6e, 0x62, 0x61, 0x73, 0x65, 0x2f, 0x73, 0x74, 0x61, 0x6b, 0x69, 0x6e, 0x67, 0x2d, 0x63, - 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x2d, 0x6c, 0x69, 0x62, 0x72, 0x61, 0x72, 0x79, 0x2d, 0x67, 0x6f, + 0x48, 0x5a, 0x46, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x62, 0x68, 0x71, 0x2e, 0x6e, + 0x65, 0x74, 0x2f, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2f, 0x73, 0x74, 0x61, 0x6b, 0x69, 0x6e, 0x67, 0x2f, 0x67, 0x65, 0x6e, 0x2f, 0x67, 0x6f, 0x2f, 0x63, 0x6f, 0x69, 0x6e, 0x62, 0x61, 0x73, 0x65, 0x2f, 0x73, 0x74, 0x61, 0x6b, 0x69, 0x6e, 0x67, 0x2f, 0x6f, 0x72, 0x63, 0x68, 0x65, 0x73, 0x74, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2f, 0x76, 0x31, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, diff --git a/gen/go/coinbase/staking/orchestration/v1/ethereum.pb.go b/gen/go/coinbase/staking/orchestration/v1/ethereum.pb.go new file mode 100644 index 0000000..8ea6b25 --- /dev/null +++ b/gen/go/coinbase/staking/orchestration/v1/ethereum.pb.go @@ -0,0 +1,296 @@ +// Code generated by protoc-gen-go. DO NOT EDIT. +// versions: +// protoc-gen-go v1.30.0 +// protoc (unknown) +// source: coinbase/staking/orchestration/v1/ethereum.proto + +package v1 + +import ( + _ "github.com/grpc-ecosystem/grpc-gateway/v2/protoc-gen-openapiv2/options" + _ "google.golang.org/genproto/googleapis/api/annotations" + protoreflect "google.golang.org/protobuf/reflect/protoreflect" + protoimpl "google.golang.org/protobuf/runtime/protoimpl" + reflect "reflect" + sync "sync" +) + +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) +) + +// Parameters required for ethereum staking +type EthereumStakingParameters struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // Parameters used for staking - dependant on type + // + // Types that are assignable to Parameters: + // + // *EthereumStakingParameters_NativeStakeParameters + Parameters isEthereumStakingParameters_Parameters `protobuf_oneof:"parameters"` +} + +func (x *EthereumStakingParameters) Reset() { + *x = EthereumStakingParameters{} + if protoimpl.UnsafeEnabled { + mi := &file_coinbase_staking_orchestration_v1_ethereum_proto_msgTypes[0] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *EthereumStakingParameters) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*EthereumStakingParameters) ProtoMessage() {} + +func (x *EthereumStakingParameters) ProtoReflect() protoreflect.Message { + mi := &file_coinbase_staking_orchestration_v1_ethereum_proto_msgTypes[0] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use EthereumStakingParameters.ProtoReflect.Descriptor instead. +func (*EthereumStakingParameters) Descriptor() ([]byte, []int) { + return file_coinbase_staking_orchestration_v1_ethereum_proto_rawDescGZIP(), []int{0} +} + +func (m *EthereumStakingParameters) GetParameters() isEthereumStakingParameters_Parameters { + if m != nil { + return m.Parameters + } + return nil +} + +func (x *EthereumStakingParameters) GetNativeStakeParameters() *EthereumNativeStakeParameters { + if x, ok := x.GetParameters().(*EthereumStakingParameters_NativeStakeParameters); ok { + return x.NativeStakeParameters + } + return nil +} + +type isEthereumStakingParameters_Parameters interface { + isEthereumStakingParameters_Parameters() +} + +type EthereumStakingParameters_NativeStakeParameters struct { + // Native staking parameters + NativeStakeParameters *EthereumNativeStakeParameters `protobuf:"bytes,2,opt,name=native_stake_parameters,json=nativeStakeParameters,proto3,oneof"` +} + +func (*EthereumStakingParameters_NativeStakeParameters) isEthereumStakingParameters_Parameters() {} + +// Parameters used for Native ethereum staking +type EthereumNativeStakeParameters struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // Ethereum address used to withdrawal funds + WithdrawalAddress string `protobuf:"bytes,1,opt,name=withdrawal_address,json=withdrawalAddress,proto3" json:"withdrawal_address,omitempty"` + // Ethereum address used to accumulate fees + FeeRecipient string `protobuf:"bytes,2,opt,name=fee_recipient,json=feeRecipient,proto3" json:"fee_recipient,omitempty"` + // Amount of ETH to stake in increments of 32 + Amount *Amount `protobuf:"bytes,3,opt,name=amount,proto3" json:"amount,omitempty"` +} + +func (x *EthereumNativeStakeParameters) Reset() { + *x = EthereumNativeStakeParameters{} + if protoimpl.UnsafeEnabled { + mi := &file_coinbase_staking_orchestration_v1_ethereum_proto_msgTypes[1] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *EthereumNativeStakeParameters) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*EthereumNativeStakeParameters) ProtoMessage() {} + +func (x *EthereumNativeStakeParameters) ProtoReflect() protoreflect.Message { + mi := &file_coinbase_staking_orchestration_v1_ethereum_proto_msgTypes[1] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use EthereumNativeStakeParameters.ProtoReflect.Descriptor instead. +func (*EthereumNativeStakeParameters) Descriptor() ([]byte, []int) { + return file_coinbase_staking_orchestration_v1_ethereum_proto_rawDescGZIP(), []int{1} +} + +func (x *EthereumNativeStakeParameters) GetWithdrawalAddress() string { + if x != nil { + return x.WithdrawalAddress + } + return "" +} + +func (x *EthereumNativeStakeParameters) GetFeeRecipient() string { + if x != nil { + return x.FeeRecipient + } + return "" +} + +func (x *EthereumNativeStakeParameters) GetAmount() *Amount { + if x != nil { + return x.Amount + } + return nil +} + +var File_coinbase_staking_orchestration_v1_ethereum_proto protoreflect.FileDescriptor + +var file_coinbase_staking_orchestration_v1_ethereum_proto_rawDesc = []byte{ + 0x0a, 0x30, 0x63, 0x6f, 0x69, 0x6e, 0x62, 0x61, 0x73, 0x65, 0x2f, 0x73, 0x74, 0x61, 0x6b, 0x69, + 0x6e, 0x67, 0x2f, 0x6f, 0x72, 0x63, 0x68, 0x65, 0x73, 0x74, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x2f, 0x76, 0x31, 0x2f, 0x65, 0x74, 0x68, 0x65, 0x72, 0x65, 0x75, 0x6d, 0x2e, 0x70, 0x72, 0x6f, + 0x74, 0x6f, 0x12, 0x21, 0x63, 0x6f, 0x69, 0x6e, 0x62, 0x61, 0x73, 0x65, 0x2e, 0x73, 0x74, 0x61, + 0x6b, 0x69, 0x6e, 0x67, 0x2e, 0x6f, 0x72, 0x63, 0x68, 0x65, 0x73, 0x74, 0x72, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x2e, 0x76, 0x31, 0x1a, 0x2e, 0x63, 0x6f, 0x69, 0x6e, 0x62, 0x61, 0x73, 0x65, 0x2f, + 0x73, 0x74, 0x61, 0x6b, 0x69, 0x6e, 0x67, 0x2f, 0x6f, 0x72, 0x63, 0x68, 0x65, 0x73, 0x74, 0x72, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2f, 0x76, 0x31, 0x2f, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, + 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1f, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x61, 0x70, + 0x69, 0x2f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x62, 0x65, 0x68, 0x61, 0x76, 0x69, 0x6f, 0x72, + 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x2d, 0x67, + 0x65, 0x6e, 0x2d, 0x6f, 0x70, 0x65, 0x6e, 0x61, 0x70, 0x69, 0x76, 0x32, 0x2f, 0x6f, 0x70, 0x74, + 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, + 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0xca, 0x01, 0x0a, 0x19, 0x45, 0x74, 0x68, 0x65, 0x72, + 0x65, 0x75, 0x6d, 0x53, 0x74, 0x61, 0x6b, 0x69, 0x6e, 0x67, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x65, + 0x74, 0x65, 0x72, 0x73, 0x12, 0x7a, 0x0a, 0x17, 0x6e, 0x61, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x73, + 0x74, 0x61, 0x6b, 0x65, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x73, 0x18, + 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x40, 0x2e, 0x63, 0x6f, 0x69, 0x6e, 0x62, 0x61, 0x73, 0x65, + 0x2e, 0x73, 0x74, 0x61, 0x6b, 0x69, 0x6e, 0x67, 0x2e, 0x6f, 0x72, 0x63, 0x68, 0x65, 0x73, 0x74, + 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x45, 0x74, 0x68, 0x65, 0x72, 0x65, + 0x75, 0x6d, 0x4e, 0x61, 0x74, 0x69, 0x76, 0x65, 0x53, 0x74, 0x61, 0x6b, 0x65, 0x50, 0x61, 0x72, + 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x73, 0x48, 0x00, 0x52, 0x15, 0x6e, 0x61, 0x74, 0x69, 0x76, + 0x65, 0x53, 0x74, 0x61, 0x6b, 0x65, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x73, + 0x3a, 0x23, 0x92, 0x41, 0x20, 0x0a, 0x1e, 0x2a, 0x1c, 0x45, 0x74, 0x68, 0x65, 0x72, 0x65, 0x75, + 0x6d, 0x3a, 0x20, 0x53, 0x74, 0x61, 0x6b, 0x69, 0x6e, 0x67, 0x20, 0x50, 0x61, 0x72, 0x61, 0x6d, + 0x65, 0x74, 0x65, 0x72, 0x73, 0x42, 0x0c, 0x0a, 0x0a, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, + 0x65, 0x72, 0x73, 0x22, 0xef, 0x01, 0x0a, 0x1d, 0x45, 0x74, 0x68, 0x65, 0x72, 0x65, 0x75, 0x6d, + 0x4e, 0x61, 0x74, 0x69, 0x76, 0x65, 0x53, 0x74, 0x61, 0x6b, 0x65, 0x50, 0x61, 0x72, 0x61, 0x6d, + 0x65, 0x74, 0x65, 0x72, 0x73, 0x12, 0x32, 0x0a, 0x12, 0x77, 0x69, 0x74, 0x68, 0x64, 0x72, 0x61, + 0x77, 0x61, 0x6c, 0x5f, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x09, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, 0x11, 0x77, 0x69, 0x74, 0x68, 0x64, 0x72, 0x61, 0x77, + 0x61, 0x6c, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x12, 0x28, 0x0a, 0x0d, 0x66, 0x65, 0x65, + 0x5f, 0x72, 0x65, 0x63, 0x69, 0x70, 0x69, 0x65, 0x6e, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, + 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, 0x0c, 0x66, 0x65, 0x65, 0x52, 0x65, 0x63, 0x69, 0x70, 0x69, + 0x65, 0x6e, 0x74, 0x12, 0x46, 0x0a, 0x06, 0x61, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x03, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x29, 0x2e, 0x63, 0x6f, 0x69, 0x6e, 0x62, 0x61, 0x73, 0x65, 0x2e, 0x73, + 0x74, 0x61, 0x6b, 0x69, 0x6e, 0x67, 0x2e, 0x6f, 0x72, 0x63, 0x68, 0x65, 0x73, 0x74, 0x72, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x41, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x42, 0x03, + 0xe0, 0x41, 0x02, 0x52, 0x06, 0x61, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x3a, 0x28, 0x92, 0x41, 0x25, + 0x0a, 0x23, 0x2a, 0x21, 0x45, 0x74, 0x68, 0x65, 0x72, 0x65, 0x75, 0x6d, 0x3a, 0x20, 0x4e, 0x61, + 0x74, 0x69, 0x76, 0x65, 0x20, 0x53, 0x74, 0x61, 0x6b, 0x65, 0x20, 0x50, 0x61, 0x72, 0x61, 0x6d, + 0x65, 0x74, 0x65, 0x72, 0x73, 0x42, 0x48, 0x5a, 0x46, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, + 0x63, 0x62, 0x68, 0x71, 0x2e, 0x6e, 0x65, 0x74, 0x2f, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2f, 0x73, + 0x74, 0x61, 0x6b, 0x69, 0x6e, 0x67, 0x2f, 0x67, 0x65, 0x6e, 0x2f, 0x67, 0x6f, 0x2f, 0x63, 0x6f, + 0x69, 0x6e, 0x62, 0x61, 0x73, 0x65, 0x2f, 0x73, 0x74, 0x61, 0x6b, 0x69, 0x6e, 0x67, 0x2f, 0x6f, + 0x72, 0x63, 0x68, 0x65, 0x73, 0x74, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2f, 0x76, 0x31, 0x62, + 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, +} + +var ( + file_coinbase_staking_orchestration_v1_ethereum_proto_rawDescOnce sync.Once + file_coinbase_staking_orchestration_v1_ethereum_proto_rawDescData = file_coinbase_staking_orchestration_v1_ethereum_proto_rawDesc +) + +func file_coinbase_staking_orchestration_v1_ethereum_proto_rawDescGZIP() []byte { + file_coinbase_staking_orchestration_v1_ethereum_proto_rawDescOnce.Do(func() { + file_coinbase_staking_orchestration_v1_ethereum_proto_rawDescData = protoimpl.X.CompressGZIP(file_coinbase_staking_orchestration_v1_ethereum_proto_rawDescData) + }) + return file_coinbase_staking_orchestration_v1_ethereum_proto_rawDescData +} + +var file_coinbase_staking_orchestration_v1_ethereum_proto_msgTypes = make([]protoimpl.MessageInfo, 2) +var file_coinbase_staking_orchestration_v1_ethereum_proto_goTypes = []interface{}{ + (*EthereumStakingParameters)(nil), // 0: coinbase.staking.orchestration.v1.EthereumStakingParameters + (*EthereumNativeStakeParameters)(nil), // 1: coinbase.staking.orchestration.v1.EthereumNativeStakeParameters + (*Amount)(nil), // 2: coinbase.staking.orchestration.v1.Amount +} +var file_coinbase_staking_orchestration_v1_ethereum_proto_depIdxs = []int32{ + 1, // 0: coinbase.staking.orchestration.v1.EthereumStakingParameters.native_stake_parameters:type_name -> coinbase.staking.orchestration.v1.EthereumNativeStakeParameters + 2, // 1: coinbase.staking.orchestration.v1.EthereumNativeStakeParameters.amount:type_name -> coinbase.staking.orchestration.v1.Amount + 2, // [2:2] is the sub-list for method output_type + 2, // [2:2] is the sub-list for method input_type + 2, // [2:2] is the sub-list for extension type_name + 2, // [2:2] is the sub-list for extension extendee + 0, // [0:2] is the sub-list for field type_name +} + +func init() { file_coinbase_staking_orchestration_v1_ethereum_proto_init() } +func file_coinbase_staking_orchestration_v1_ethereum_proto_init() { + if File_coinbase_staking_orchestration_v1_ethereum_proto != nil { + return + } + file_coinbase_staking_orchestration_v1_common_proto_init() + if !protoimpl.UnsafeEnabled { + file_coinbase_staking_orchestration_v1_ethereum_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*EthereumStakingParameters); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_coinbase_staking_orchestration_v1_ethereum_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*EthereumNativeStakeParameters); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + } + file_coinbase_staking_orchestration_v1_ethereum_proto_msgTypes[0].OneofWrappers = []interface{}{ + (*EthereumStakingParameters_NativeStakeParameters)(nil), + } + type x struct{} + out := protoimpl.TypeBuilder{ + File: protoimpl.DescBuilder{ + GoPackagePath: reflect.TypeOf(x{}).PkgPath(), + RawDescriptor: file_coinbase_staking_orchestration_v1_ethereum_proto_rawDesc, + NumEnums: 0, + NumMessages: 2, + NumExtensions: 0, + NumServices: 0, + }, + GoTypes: file_coinbase_staking_orchestration_v1_ethereum_proto_goTypes, + DependencyIndexes: file_coinbase_staking_orchestration_v1_ethereum_proto_depIdxs, + MessageInfos: file_coinbase_staking_orchestration_v1_ethereum_proto_msgTypes, + }.Build() + File_coinbase_staking_orchestration_v1_ethereum_proto = out.File + file_coinbase_staking_orchestration_v1_ethereum_proto_rawDesc = nil + file_coinbase_staking_orchestration_v1_ethereum_proto_goTypes = nil + file_coinbase_staking_orchestration_v1_ethereum_proto_depIdxs = nil +} diff --git a/gen/go/coinbase/staking/orchestration/v1/ethereum_kiln.pb.go b/gen/go/coinbase/staking/orchestration/v1/ethereum_kiln.pb.go index 2d79b55..90c3380 100644 --- a/gen/go/coinbase/staking/orchestration/v1/ethereum_kiln.pb.go +++ b/gen/go/coinbase/staking/orchestration/v1/ethereum_kiln.pb.go @@ -605,10 +605,9 @@ var file_coinbase_staking_orchestration_v1_ethereum_kiln_proto_rawDesc = []byte{ 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x3a, 0x2c, 0x92, 0x41, 0x29, 0x0a, 0x27, 0x2a, 0x25, 0x45, 0x74, 0x68, 0x65, 0x72, 0x65, 0x75, 0x6d, 0x4b, 0x69, 0x6c, 0x6e, 0x3a, 0x20, 0x53, 0x74, 0x61, 0x6b, 0x69, 0x6e, 0x67, 0x20, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, 0x20, 0x64, 0x65, 0x74, 0x61, - 0x69, 0x6c, 0x73, 0x42, 0x58, 0x5a, 0x56, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, - 0x6d, 0x2f, 0x63, 0x6f, 0x69, 0x6e, 0x62, 0x61, 0x73, 0x65, 0x2f, 0x73, 0x74, 0x61, 0x6b, 0x69, - 0x6e, 0x67, 0x2d, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x2d, 0x6c, 0x69, 0x62, 0x72, 0x61, 0x72, - 0x79, 0x2d, 0x67, 0x6f, 0x2f, 0x67, 0x65, 0x6e, 0x2f, 0x67, 0x6f, 0x2f, 0x63, 0x6f, 0x69, 0x6e, + 0x69, 0x6c, 0x73, 0x42, 0x48, 0x5a, 0x46, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x62, + 0x68, 0x71, 0x2e, 0x6e, 0x65, 0x74, 0x2f, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2f, 0x73, 0x74, 0x61, + 0x6b, 0x69, 0x6e, 0x67, 0x2f, 0x67, 0x65, 0x6e, 0x2f, 0x67, 0x6f, 0x2f, 0x63, 0x6f, 0x69, 0x6e, 0x62, 0x61, 0x73, 0x65, 0x2f, 0x73, 0x74, 0x61, 0x6b, 0x69, 0x6e, 0x67, 0x2f, 0x6f, 0x72, 0x63, 0x68, 0x65, 0x73, 0x74, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2f, 0x76, 0x31, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, diff --git a/gen/go/coinbase/staking/orchestration/v1/network.pb.go b/gen/go/coinbase/staking/orchestration/v1/network.pb.go index 0150098..472adb0 100644 --- a/gen/go/coinbase/staking/orchestration/v1/network.pb.go +++ b/gen/go/coinbase/staking/orchestration/v1/network.pb.go @@ -203,10 +203,9 @@ var file_coinbase_staking_orchestration_v1_network_proto_rawDesc = []byte{ 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2a, 0x2e, 0x63, 0x6f, 0x69, 0x6e, 0x62, 0x61, 0x73, 0x65, 0x2e, 0x73, 0x74, 0x61, 0x6b, 0x69, 0x6e, 0x67, 0x2e, 0x6f, 0x72, 0x63, 0x68, 0x65, 0x73, 0x74, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x4e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, - 0x52, 0x08, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x73, 0x42, 0x58, 0x5a, 0x56, 0x67, 0x69, - 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x63, 0x6f, 0x69, 0x6e, 0x62, 0x61, 0x73, - 0x65, 0x2f, 0x73, 0x74, 0x61, 0x6b, 0x69, 0x6e, 0x67, 0x2d, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, - 0x2d, 0x6c, 0x69, 0x62, 0x72, 0x61, 0x72, 0x79, 0x2d, 0x67, 0x6f, 0x2f, 0x67, 0x65, 0x6e, 0x2f, + 0x52, 0x08, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x73, 0x42, 0x48, 0x5a, 0x46, 0x67, 0x69, + 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x62, 0x68, 0x71, 0x2e, 0x6e, 0x65, 0x74, 0x2f, 0x63, 0x6c, + 0x6f, 0x75, 0x64, 0x2f, 0x73, 0x74, 0x61, 0x6b, 0x69, 0x6e, 0x67, 0x2f, 0x67, 0x65, 0x6e, 0x2f, 0x67, 0x6f, 0x2f, 0x63, 0x6f, 0x69, 0x6e, 0x62, 0x61, 0x73, 0x65, 0x2f, 0x73, 0x74, 0x61, 0x6b, 0x69, 0x6e, 0x67, 0x2f, 0x6f, 0x72, 0x63, 0x68, 0x65, 0x73, 0x74, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2f, 0x76, 0x31, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, diff --git a/gen/go/coinbase/staking/orchestration/v1/protocol.pb.go b/gen/go/coinbase/staking/orchestration/v1/protocol.pb.go index b1e8add..0d92de0 100644 --- a/gen/go/coinbase/staking/orchestration/v1/protocol.pb.go +++ b/gen/go/coinbase/staking/orchestration/v1/protocol.pb.go @@ -184,10 +184,9 @@ var file_coinbase_staking_orchestration_v1_protocol_proto_rawDesc = []byte{ 0x03, 0x28, 0x0b, 0x32, 0x2b, 0x2e, 0x63, 0x6f, 0x69, 0x6e, 0x62, 0x61, 0x73, 0x65, 0x2e, 0x73, 0x74, 0x61, 0x6b, 0x69, 0x6e, 0x67, 0x2e, 0x6f, 0x72, 0x63, 0x68, 0x65, 0x73, 0x74, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, - 0x52, 0x09, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x73, 0x42, 0x58, 0x5a, 0x56, 0x67, - 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x63, 0x6f, 0x69, 0x6e, 0x62, 0x61, - 0x73, 0x65, 0x2f, 0x73, 0x74, 0x61, 0x6b, 0x69, 0x6e, 0x67, 0x2d, 0x63, 0x6c, 0x69, 0x65, 0x6e, - 0x74, 0x2d, 0x6c, 0x69, 0x62, 0x72, 0x61, 0x72, 0x79, 0x2d, 0x67, 0x6f, 0x2f, 0x67, 0x65, 0x6e, + 0x52, 0x09, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x73, 0x42, 0x48, 0x5a, 0x46, 0x67, + 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x62, 0x68, 0x71, 0x2e, 0x6e, 0x65, 0x74, 0x2f, 0x63, + 0x6c, 0x6f, 0x75, 0x64, 0x2f, 0x73, 0x74, 0x61, 0x6b, 0x69, 0x6e, 0x67, 0x2f, 0x67, 0x65, 0x6e, 0x2f, 0x67, 0x6f, 0x2f, 0x63, 0x6f, 0x69, 0x6e, 0x62, 0x61, 0x73, 0x65, 0x2f, 0x73, 0x74, 0x61, 0x6b, 0x69, 0x6e, 0x67, 0x2f, 0x6f, 0x72, 0x63, 0x68, 0x65, 0x73, 0x74, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2f, 0x76, 0x31, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, diff --git a/gen/go/coinbase/staking/orchestration/v1/solana.pb.go b/gen/go/coinbase/staking/orchestration/v1/solana.pb.go index 24b9d04..5ac721d 100644 --- a/gen/go/coinbase/staking/orchestration/v1/solana.pb.go +++ b/gen/go/coinbase/staking/orchestration/v1/solana.pb.go @@ -851,10 +851,9 @@ var file_coinbase_staking_orchestration_v1_solana_proto_rawDesc = []byte{ 0x52, 0x16, 0x73, 0x70, 0x6c, 0x69, 0x74, 0x5f, 0x73, 0x74, 0x61, 0x6b, 0x65, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x73, 0x52, 0x16, 0x6d, 0x65, 0x72, 0x67, 0x65, 0x5f, 0x73, 0x74, 0x61, 0x6b, 0x65, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x73, - 0x42, 0x58, 0x5a, 0x56, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x63, - 0x6f, 0x69, 0x6e, 0x62, 0x61, 0x73, 0x65, 0x2f, 0x73, 0x74, 0x61, 0x6b, 0x69, 0x6e, 0x67, 0x2d, - 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x2d, 0x6c, 0x69, 0x62, 0x72, 0x61, 0x72, 0x79, 0x2d, 0x67, - 0x6f, 0x2f, 0x67, 0x65, 0x6e, 0x2f, 0x67, 0x6f, 0x2f, 0x63, 0x6f, 0x69, 0x6e, 0x62, 0x61, 0x73, + 0x42, 0x48, 0x5a, 0x46, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x62, 0x68, 0x71, 0x2e, + 0x6e, 0x65, 0x74, 0x2f, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2f, 0x73, 0x74, 0x61, 0x6b, 0x69, 0x6e, + 0x67, 0x2f, 0x67, 0x65, 0x6e, 0x2f, 0x67, 0x6f, 0x2f, 0x63, 0x6f, 0x69, 0x6e, 0x62, 0x61, 0x73, 0x65, 0x2f, 0x73, 0x74, 0x61, 0x6b, 0x69, 0x6e, 0x67, 0x2f, 0x6f, 0x72, 0x63, 0x68, 0x65, 0x73, 0x74, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2f, 0x76, 0x31, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, diff --git a/gen/go/coinbase/staking/orchestration/v1/staking_context.pb.go b/gen/go/coinbase/staking/orchestration/v1/staking_context.pb.go index 4373746..2384cc3 100644 --- a/gen/go/coinbase/staking/orchestration/v1/staking_context.pb.go +++ b/gen/go/coinbase/staking/orchestration/v1/staking_context.pb.go @@ -293,10 +293,9 @@ var file_coinbase_staking_orchestration_v1_staking_context_proto_rawDesc = []byt 0x61, 0x6e, 0x61, 0x53, 0x74, 0x61, 0x6b, 0x69, 0x6e, 0x67, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x42, 0x19, 0x0a, 0x17, 0x73, 0x74, 0x61, 0x6b, 0x69, 0x6e, 0x67, 0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, 0x5f, 0x64, 0x65, 0x74, 0x61, - 0x69, 0x6c, 0x73, 0x42, 0x58, 0x5a, 0x56, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, - 0x6d, 0x2f, 0x63, 0x6f, 0x69, 0x6e, 0x62, 0x61, 0x73, 0x65, 0x2f, 0x73, 0x74, 0x61, 0x6b, 0x69, - 0x6e, 0x67, 0x2d, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x2d, 0x6c, 0x69, 0x62, 0x72, 0x61, 0x72, - 0x79, 0x2d, 0x67, 0x6f, 0x2f, 0x67, 0x65, 0x6e, 0x2f, 0x67, 0x6f, 0x2f, 0x63, 0x6f, 0x69, 0x6e, + 0x69, 0x6c, 0x73, 0x42, 0x48, 0x5a, 0x46, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x62, + 0x68, 0x71, 0x2e, 0x6e, 0x65, 0x74, 0x2f, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2f, 0x73, 0x74, 0x61, + 0x6b, 0x69, 0x6e, 0x67, 0x2f, 0x67, 0x65, 0x6e, 0x2f, 0x67, 0x6f, 0x2f, 0x63, 0x6f, 0x69, 0x6e, 0x62, 0x61, 0x73, 0x65, 0x2f, 0x73, 0x74, 0x61, 0x6b, 0x69, 0x6e, 0x67, 0x2f, 0x6f, 0x72, 0x63, 0x68, 0x65, 0x73, 0x74, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2f, 0x76, 0x31, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, diff --git a/gen/go/coinbase/staking/orchestration/v1/staking_target.pb.go b/gen/go/coinbase/staking/orchestration/v1/staking_target.pb.go index fdcb476..7d1276e 100644 --- a/gen/go/coinbase/staking/orchestration/v1/staking_target.pb.go +++ b/gen/go/coinbase/staking/orchestration/v1/staking_target.pb.go @@ -442,10 +442,9 @@ var file_coinbase_staking_orchestration_v1_staking_target_proto_rawDesc = []byte 0x67, 0x65, 0x74, 0x52, 0x0e, 0x73, 0x74, 0x61, 0x6b, 0x69, 0x6e, 0x67, 0x54, 0x61, 0x72, 0x67, 0x65, 0x74, 0x73, 0x12, 0x26, 0x0a, 0x0f, 0x6e, 0x65, 0x78, 0x74, 0x5f, 0x70, 0x61, 0x67, 0x65, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x6e, 0x65, - 0x78, 0x74, 0x50, 0x61, 0x67, 0x65, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x42, 0x58, 0x5a, 0x56, 0x67, - 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x63, 0x6f, 0x69, 0x6e, 0x62, 0x61, - 0x73, 0x65, 0x2f, 0x73, 0x74, 0x61, 0x6b, 0x69, 0x6e, 0x67, 0x2d, 0x63, 0x6c, 0x69, 0x65, 0x6e, - 0x74, 0x2d, 0x6c, 0x69, 0x62, 0x72, 0x61, 0x72, 0x79, 0x2d, 0x67, 0x6f, 0x2f, 0x67, 0x65, 0x6e, + 0x78, 0x74, 0x50, 0x61, 0x67, 0x65, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x42, 0x48, 0x5a, 0x46, 0x67, + 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x62, 0x68, 0x71, 0x2e, 0x6e, 0x65, 0x74, 0x2f, 0x63, + 0x6c, 0x6f, 0x75, 0x64, 0x2f, 0x73, 0x74, 0x61, 0x6b, 0x69, 0x6e, 0x67, 0x2f, 0x67, 0x65, 0x6e, 0x2f, 0x67, 0x6f, 0x2f, 0x63, 0x6f, 0x69, 0x6e, 0x62, 0x61, 0x73, 0x65, 0x2f, 0x73, 0x74, 0x61, 0x6b, 0x69, 0x6e, 0x67, 0x2f, 0x6f, 0x72, 0x63, 0x68, 0x65, 0x73, 0x74, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2f, 0x76, 0x31, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, diff --git a/gen/go/coinbase/staking/orchestration/v1/workflow.pb.go b/gen/go/coinbase/staking/orchestration/v1/workflow.pb.go index 71252af..972338f 100644 --- a/gen/go/coinbase/staking/orchestration/v1/workflow.pb.go +++ b/gen/go/coinbase/staking/orchestration/v1/workflow.pb.go @@ -226,6 +226,63 @@ func (WaitStepOutput_State) EnumDescriptor() ([]byte, []int) { return file_coinbase_staking_orchestration_v1_workflow_proto_rawDescGZIP(), []int{1, 1} } +// State defines an enumeration of states for provisioning infra. +type ProvisionInfraStepOutput_State int32 + +const ( + // Unspecified step state. + ProvisionInfraStepOutput_STATE_UNSPECIFIED ProvisionInfraStepOutput_State = 0 + // Provision step is in-progress. + ProvisionInfraStepOutput_STATE_IN_PROGRESS ProvisionInfraStepOutput_State = 2 + // Provision step completed. + ProvisionInfraStepOutput_STATE_COMPLETED ProvisionInfraStepOutput_State = 3 + // Provision step failed. + ProvisionInfraStepOutput_STATE_FAILED ProvisionInfraStepOutput_State = 4 +) + +// Enum value maps for ProvisionInfraStepOutput_State. +var ( + ProvisionInfraStepOutput_State_name = map[int32]string{ + 0: "STATE_UNSPECIFIED", + 2: "STATE_IN_PROGRESS", + 3: "STATE_COMPLETED", + 4: "STATE_FAILED", + } + ProvisionInfraStepOutput_State_value = map[string]int32{ + "STATE_UNSPECIFIED": 0, + "STATE_IN_PROGRESS": 2, + "STATE_COMPLETED": 3, + "STATE_FAILED": 4, + } +) + +func (x ProvisionInfraStepOutput_State) Enum() *ProvisionInfraStepOutput_State { + p := new(ProvisionInfraStepOutput_State) + *p = x + return p +} + +func (x ProvisionInfraStepOutput_State) String() string { + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) +} + +func (ProvisionInfraStepOutput_State) Descriptor() protoreflect.EnumDescriptor { + return file_coinbase_staking_orchestration_v1_workflow_proto_enumTypes[3].Descriptor() +} + +func (ProvisionInfraStepOutput_State) Type() protoreflect.EnumType { + return &file_coinbase_staking_orchestration_v1_workflow_proto_enumTypes[3] +} + +func (x ProvisionInfraStepOutput_State) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) +} + +// Deprecated: Use ProvisionInfraStepOutput_State.Descriptor instead. +func (ProvisionInfraStepOutput_State) EnumDescriptor() ([]byte, []int) { + return file_coinbase_staking_orchestration_v1_workflow_proto_rawDescGZIP(), []int{2, 0} +} + // The state of a workflow type Workflow_State int32 @@ -271,11 +328,11 @@ func (x Workflow_State) String() string { } func (Workflow_State) Descriptor() protoreflect.EnumDescriptor { - return file_coinbase_staking_orchestration_v1_workflow_proto_enumTypes[3].Descriptor() + return file_coinbase_staking_orchestration_v1_workflow_proto_enumTypes[4].Descriptor() } func (Workflow_State) Type() protoreflect.EnumType { - return &file_coinbase_staking_orchestration_v1_workflow_proto_enumTypes[3] + return &file_coinbase_staking_orchestration_v1_workflow_proto_enumTypes[4] } func (x Workflow_State) Number() protoreflect.EnumNumber { @@ -284,7 +341,7 @@ func (x Workflow_State) Number() protoreflect.EnumNumber { // Deprecated: Use Workflow_State.Descriptor instead. func (Workflow_State) EnumDescriptor() ([]byte, []int) { - return file_coinbase_staking_orchestration_v1_workflow_proto_rawDescGZIP(), []int{3, 0} + return file_coinbase_staking_orchestration_v1_workflow_proto_rawDescGZIP(), []int{4, 0} } // The details of a transaction being constructed and broadcasted to the network. @@ -457,6 +514,55 @@ func (x *WaitStepOutput) GetState() WaitStepOutput_State { return WaitStepOutput_STATE_UNSPECIFIED } +// The details for an infrastructure provision request. +type ProvisionInfraStepOutput struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // The state of the provision infra step. + State ProvisionInfraStepOutput_State `protobuf:"varint,1,opt,name=state,proto3,enum=coinbase.staking.orchestration.v1.ProvisionInfraStepOutput_State" json:"state,omitempty"` +} + +func (x *ProvisionInfraStepOutput) Reset() { + *x = ProvisionInfraStepOutput{} + if protoimpl.UnsafeEnabled { + mi := &file_coinbase_staking_orchestration_v1_workflow_proto_msgTypes[2] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *ProvisionInfraStepOutput) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ProvisionInfraStepOutput) ProtoMessage() {} + +func (x *ProvisionInfraStepOutput) ProtoReflect() protoreflect.Message { + mi := &file_coinbase_staking_orchestration_v1_workflow_proto_msgTypes[2] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use ProvisionInfraStepOutput.ProtoReflect.Descriptor instead. +func (*ProvisionInfraStepOutput) Descriptor() ([]byte, []int) { + return file_coinbase_staking_orchestration_v1_workflow_proto_rawDescGZIP(), []int{2} +} + +func (x *ProvisionInfraStepOutput) GetState() ProvisionInfraStepOutput_State { + if x != nil { + return x.State + } + return ProvisionInfraStepOutput_STATE_UNSPECIFIED +} + // The information for a step in the workflow. type WorkflowStep struct { state protoimpl.MessageState @@ -471,13 +577,14 @@ type WorkflowStep struct { // // *WorkflowStep_TxStepOutput // *WorkflowStep_WaitStepOutput + // *WorkflowStep_ProvisionInfraStepOutput Output isWorkflowStep_Output `protobuf_oneof:"output"` } func (x *WorkflowStep) Reset() { *x = WorkflowStep{} if protoimpl.UnsafeEnabled { - mi := &file_coinbase_staking_orchestration_v1_workflow_proto_msgTypes[2] + mi := &file_coinbase_staking_orchestration_v1_workflow_proto_msgTypes[3] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -490,7 +597,7 @@ func (x *WorkflowStep) String() string { func (*WorkflowStep) ProtoMessage() {} func (x *WorkflowStep) ProtoReflect() protoreflect.Message { - mi := &file_coinbase_staking_orchestration_v1_workflow_proto_msgTypes[2] + mi := &file_coinbase_staking_orchestration_v1_workflow_proto_msgTypes[3] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -503,7 +610,7 @@ func (x *WorkflowStep) ProtoReflect() protoreflect.Message { // Deprecated: Use WorkflowStep.ProtoReflect.Descriptor instead. func (*WorkflowStep) Descriptor() ([]byte, []int) { - return file_coinbase_staking_orchestration_v1_workflow_proto_rawDescGZIP(), []int{2} + return file_coinbase_staking_orchestration_v1_workflow_proto_rawDescGZIP(), []int{3} } func (x *WorkflowStep) GetName() string { @@ -534,6 +641,13 @@ func (x *WorkflowStep) GetWaitStepOutput() *WaitStepOutput { return nil } +func (x *WorkflowStep) GetProvisionInfraStepOutput() *ProvisionInfraStepOutput { + if x, ok := x.GetOutput().(*WorkflowStep_ProvisionInfraStepOutput); ok { + return x.ProvisionInfraStepOutput + } + return nil +} + type isWorkflowStep_Output interface { isWorkflowStep_Output() } @@ -548,10 +662,17 @@ type WorkflowStep_WaitStepOutput struct { WaitStepOutput *WaitStepOutput `protobuf:"bytes,3,opt,name=wait_step_output,json=waitStepOutput,proto3,oneof"` } +type WorkflowStep_ProvisionInfraStepOutput struct { + // The details for provisioned infrastructure. + ProvisionInfraStepOutput *ProvisionInfraStepOutput `protobuf:"bytes,4,opt,name=provision_infra_step_output,json=provisionInfraStepOutput,proto3,oneof"` +} + func (*WorkflowStep_TxStepOutput) isWorkflowStep_Output() {} func (*WorkflowStep_WaitStepOutput) isWorkflowStep_Output() {} +func (*WorkflowStep_ProvisionInfraStepOutput) isWorkflowStep_Output() {} + // A Workflow resource. type Workflow struct { state protoimpl.MessageState @@ -572,6 +693,7 @@ type Workflow struct { // // *Workflow_SolanaStakingParameters // *Workflow_EthereumKilnStakingParameters + // *Workflow_EthereumStakingParameters StakingParameters isWorkflow_StakingParameters `protobuf_oneof:"staking_parameters"` // The current state of the workflow. State Workflow_State `protobuf:"varint,4,opt,name=state,proto3,enum=coinbase.staking.orchestration.v1.Workflow_State" json:"state,omitempty"` @@ -590,7 +712,7 @@ type Workflow struct { func (x *Workflow) Reset() { *x = Workflow{} if protoimpl.UnsafeEnabled { - mi := &file_coinbase_staking_orchestration_v1_workflow_proto_msgTypes[3] + mi := &file_coinbase_staking_orchestration_v1_workflow_proto_msgTypes[4] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -603,7 +725,7 @@ func (x *Workflow) String() string { func (*Workflow) ProtoMessage() {} func (x *Workflow) ProtoReflect() protoreflect.Message { - mi := &file_coinbase_staking_orchestration_v1_workflow_proto_msgTypes[3] + mi := &file_coinbase_staking_orchestration_v1_workflow_proto_msgTypes[4] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -616,7 +738,7 @@ func (x *Workflow) ProtoReflect() protoreflect.Message { // Deprecated: Use Workflow.ProtoReflect.Descriptor instead. func (*Workflow) Descriptor() ([]byte, []int) { - return file_coinbase_staking_orchestration_v1_workflow_proto_rawDescGZIP(), []int{3} + return file_coinbase_staking_orchestration_v1_workflow_proto_rawDescGZIP(), []int{4} } func (x *Workflow) GetName() string { @@ -654,6 +776,13 @@ func (x *Workflow) GetEthereumKilnStakingParameters() *EthereumKilnStakingParame return nil } +func (x *Workflow) GetEthereumStakingParameters() *EthereumStakingParameters { + if x, ok := x.GetStakingParameters().(*Workflow_EthereumStakingParameters); ok { + return x.EthereumStakingParameters + } + return nil +} + func (x *Workflow) GetState() Workflow_State { if x != nil { return x.State @@ -710,10 +839,17 @@ type Workflow_EthereumKilnStakingParameters struct { EthereumKilnStakingParameters *EthereumKilnStakingParameters `protobuf:"bytes,10,opt,name=ethereum_kiln_staking_parameters,json=ethereumKilnStakingParameters,proto3,oneof"` } +type Workflow_EthereumStakingParameters struct { + // Ethereum staking parameters. + EthereumStakingParameters *EthereumStakingParameters `protobuf:"bytes,13,opt,name=ethereum_staking_parameters,json=ethereumStakingParameters,proto3,oneof"` +} + func (*Workflow_SolanaStakingParameters) isWorkflow_StakingParameters() {} func (*Workflow_EthereumKilnStakingParameters) isWorkflow_StakingParameters() {} +func (*Workflow_EthereumStakingParameters) isWorkflow_StakingParameters() {} + // The request message for CreateWorkflow. type CreateWorkflowRequest struct { state protoimpl.MessageState @@ -731,7 +867,7 @@ type CreateWorkflowRequest struct { func (x *CreateWorkflowRequest) Reset() { *x = CreateWorkflowRequest{} if protoimpl.UnsafeEnabled { - mi := &file_coinbase_staking_orchestration_v1_workflow_proto_msgTypes[4] + mi := &file_coinbase_staking_orchestration_v1_workflow_proto_msgTypes[5] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -744,7 +880,7 @@ func (x *CreateWorkflowRequest) String() string { func (*CreateWorkflowRequest) ProtoMessage() {} func (x *CreateWorkflowRequest) ProtoReflect() protoreflect.Message { - mi := &file_coinbase_staking_orchestration_v1_workflow_proto_msgTypes[4] + mi := &file_coinbase_staking_orchestration_v1_workflow_proto_msgTypes[5] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -757,7 +893,7 @@ func (x *CreateWorkflowRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use CreateWorkflowRequest.ProtoReflect.Descriptor instead. func (*CreateWorkflowRequest) Descriptor() ([]byte, []int) { - return file_coinbase_staking_orchestration_v1_workflow_proto_rawDescGZIP(), []int{4} + return file_coinbase_staking_orchestration_v1_workflow_proto_rawDescGZIP(), []int{5} } func (x *CreateWorkflowRequest) GetParent() string { @@ -788,7 +924,7 @@ type GetWorkflowRequest struct { func (x *GetWorkflowRequest) Reset() { *x = GetWorkflowRequest{} if protoimpl.UnsafeEnabled { - mi := &file_coinbase_staking_orchestration_v1_workflow_proto_msgTypes[5] + mi := &file_coinbase_staking_orchestration_v1_workflow_proto_msgTypes[6] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -801,7 +937,7 @@ func (x *GetWorkflowRequest) String() string { func (*GetWorkflowRequest) ProtoMessage() {} func (x *GetWorkflowRequest) ProtoReflect() protoreflect.Message { - mi := &file_coinbase_staking_orchestration_v1_workflow_proto_msgTypes[5] + mi := &file_coinbase_staking_orchestration_v1_workflow_proto_msgTypes[6] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -814,7 +950,7 @@ func (x *GetWorkflowRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use GetWorkflowRequest.ProtoReflect.Descriptor instead. func (*GetWorkflowRequest) Descriptor() ([]byte, []int) { - return file_coinbase_staking_orchestration_v1_workflow_proto_rawDescGZIP(), []int{5} + return file_coinbase_staking_orchestration_v1_workflow_proto_rawDescGZIP(), []int{6} } func (x *GetWorkflowRequest) GetName() string { @@ -858,7 +994,7 @@ type ListWorkflowsRequest struct { func (x *ListWorkflowsRequest) Reset() { *x = ListWorkflowsRequest{} if protoimpl.UnsafeEnabled { - mi := &file_coinbase_staking_orchestration_v1_workflow_proto_msgTypes[6] + mi := &file_coinbase_staking_orchestration_v1_workflow_proto_msgTypes[7] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -871,7 +1007,7 @@ func (x *ListWorkflowsRequest) String() string { func (*ListWorkflowsRequest) ProtoMessage() {} func (x *ListWorkflowsRequest) ProtoReflect() protoreflect.Message { - mi := &file_coinbase_staking_orchestration_v1_workflow_proto_msgTypes[6] + mi := &file_coinbase_staking_orchestration_v1_workflow_proto_msgTypes[7] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -884,7 +1020,7 @@ func (x *ListWorkflowsRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use ListWorkflowsRequest.ProtoReflect.Descriptor instead. func (*ListWorkflowsRequest) Descriptor() ([]byte, []int) { - return file_coinbase_staking_orchestration_v1_workflow_proto_rawDescGZIP(), []int{6} + return file_coinbase_staking_orchestration_v1_workflow_proto_rawDescGZIP(), []int{7} } func (x *ListWorkflowsRequest) GetParent() string { @@ -931,7 +1067,7 @@ type ListWorkflowsResponse struct { func (x *ListWorkflowsResponse) Reset() { *x = ListWorkflowsResponse{} if protoimpl.UnsafeEnabled { - mi := &file_coinbase_staking_orchestration_v1_workflow_proto_msgTypes[7] + mi := &file_coinbase_staking_orchestration_v1_workflow_proto_msgTypes[8] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -944,7 +1080,7 @@ func (x *ListWorkflowsResponse) String() string { func (*ListWorkflowsResponse) ProtoMessage() {} func (x *ListWorkflowsResponse) ProtoReflect() protoreflect.Message { - mi := &file_coinbase_staking_orchestration_v1_workflow_proto_msgTypes[7] + mi := &file_coinbase_staking_orchestration_v1_workflow_proto_msgTypes[8] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -957,7 +1093,7 @@ func (x *ListWorkflowsResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use ListWorkflowsResponse.ProtoReflect.Descriptor instead. func (*ListWorkflowsResponse) Descriptor() ([]byte, []int) { - return file_coinbase_staking_orchestration_v1_workflow_proto_rawDescGZIP(), []int{7} + return file_coinbase_staking_orchestration_v1_workflow_proto_rawDescGZIP(), []int{8} } func (x *ListWorkflowsResponse) GetWorkflows() []*Workflow { @@ -992,7 +1128,7 @@ type PerformWorkflowStepRequest struct { func (x *PerformWorkflowStepRequest) Reset() { *x = PerformWorkflowStepRequest{} if protoimpl.UnsafeEnabled { - mi := &file_coinbase_staking_orchestration_v1_workflow_proto_msgTypes[8] + mi := &file_coinbase_staking_orchestration_v1_workflow_proto_msgTypes[9] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1005,7 +1141,7 @@ func (x *PerformWorkflowStepRequest) String() string { func (*PerformWorkflowStepRequest) ProtoMessage() {} func (x *PerformWorkflowStepRequest) ProtoReflect() protoreflect.Message { - mi := &file_coinbase_staking_orchestration_v1_workflow_proto_msgTypes[8] + mi := &file_coinbase_staking_orchestration_v1_workflow_proto_msgTypes[9] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1018,7 +1154,7 @@ func (x *PerformWorkflowStepRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use PerformWorkflowStepRequest.ProtoReflect.Descriptor instead. func (*PerformWorkflowStepRequest) Descriptor() ([]byte, []int) { - return file_coinbase_staking_orchestration_v1_workflow_proto_rawDescGZIP(), []int{8} + return file_coinbase_staking_orchestration_v1_workflow_proto_rawDescGZIP(), []int{9} } func (x *PerformWorkflowStepRequest) GetName() string { @@ -1050,231 +1186,263 @@ var file_coinbase_staking_orchestration_v1_workflow_proto_rawDesc = []byte{ 0x2f, 0x76, 0x31, 0x2f, 0x77, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x21, 0x63, 0x6f, 0x69, 0x6e, 0x62, 0x61, 0x73, 0x65, 0x2e, 0x73, 0x74, 0x61, 0x6b, 0x69, 0x6e, 0x67, 0x2e, 0x6f, 0x72, 0x63, 0x68, 0x65, 0x73, 0x74, 0x72, 0x61, 0x74, 0x69, - 0x6f, 0x6e, 0x2e, 0x76, 0x31, 0x1a, 0x35, 0x63, 0x6f, 0x69, 0x6e, 0x62, 0x61, 0x73, 0x65, 0x2f, + 0x6f, 0x6e, 0x2e, 0x76, 0x31, 0x1a, 0x30, 0x63, 0x6f, 0x69, 0x6e, 0x62, 0x61, 0x73, 0x65, 0x2f, 0x73, 0x74, 0x61, 0x6b, 0x69, 0x6e, 0x67, 0x2f, 0x6f, 0x72, 0x63, 0x68, 0x65, 0x73, 0x74, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2f, 0x76, 0x31, 0x2f, 0x65, 0x74, 0x68, 0x65, 0x72, 0x65, 0x75, - 0x6d, 0x5f, 0x6b, 0x69, 0x6c, 0x6e, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x2e, 0x63, 0x6f, - 0x69, 0x6e, 0x62, 0x61, 0x73, 0x65, 0x2f, 0x73, 0x74, 0x61, 0x6b, 0x69, 0x6e, 0x67, 0x2f, 0x6f, - 0x72, 0x63, 0x68, 0x65, 0x73, 0x74, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2f, 0x76, 0x31, 0x2f, - 0x73, 0x6f, 0x6c, 0x61, 0x6e, 0x61, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1f, 0x67, 0x6f, - 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x62, - 0x65, 0x68, 0x61, 0x76, 0x69, 0x6f, 0x72, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x19, 0x67, - 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, - 0x63, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1f, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, - 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, - 0x61, 0x6d, 0x70, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, - 0x63, 0x2d, 0x67, 0x65, 0x6e, 0x2d, 0x6f, 0x70, 0x65, 0x6e, 0x61, 0x70, 0x69, 0x76, 0x32, 0x2f, - 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, - 0x6f, 0x6e, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0xf8, 0x04, 0x0a, 0x0c, 0x54, 0x78, - 0x53, 0x74, 0x65, 0x70, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x12, 0x24, 0x0a, 0x0b, 0x75, 0x6e, - 0x73, 0x69, 0x67, 0x6e, 0x65, 0x64, 0x5f, 0x74, 0x78, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, - 0x03, 0xe0, 0x41, 0x03, 0x52, 0x0a, 0x75, 0x6e, 0x73, 0x69, 0x67, 0x6e, 0x65, 0x64, 0x54, 0x78, - 0x12, 0x20, 0x0a, 0x09, 0x73, 0x69, 0x67, 0x6e, 0x65, 0x64, 0x5f, 0x74, 0x78, 0x18, 0x02, 0x20, - 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x03, 0x52, 0x08, 0x73, 0x69, 0x67, 0x6e, 0x65, 0x64, - 0x54, 0x78, 0x12, 0x1c, 0x0a, 0x07, 0x74, 0x78, 0x5f, 0x68, 0x61, 0x73, 0x68, 0x18, 0x03, 0x20, - 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x03, 0x52, 0x06, 0x74, 0x78, 0x48, 0x61, 0x73, 0x68, - 0x12, 0x50, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0e, 0x32, - 0x35, 0x2e, 0x63, 0x6f, 0x69, 0x6e, 0x62, 0x61, 0x73, 0x65, 0x2e, 0x73, 0x74, 0x61, 0x6b, 0x69, - 0x6e, 0x67, 0x2e, 0x6f, 0x72, 0x63, 0x68, 0x65, 0x73, 0x74, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, - 0x2e, 0x76, 0x31, 0x2e, 0x54, 0x78, 0x53, 0x74, 0x65, 0x70, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, - 0x2e, 0x53, 0x74, 0x61, 0x74, 0x65, 0x42, 0x03, 0xe0, 0x41, 0x03, 0x52, 0x05, 0x73, 0x74, 0x61, - 0x74, 0x65, 0x12, 0x28, 0x0a, 0x0d, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x5f, 0x6d, 0x65, 0x73, 0x73, - 0x61, 0x67, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x03, 0x52, 0x0c, - 0x65, 0x72, 0x72, 0x6f, 0x72, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x22, 0x85, 0x03, 0x0a, - 0x05, 0x53, 0x74, 0x61, 0x74, 0x65, 0x12, 0x15, 0x0a, 0x11, 0x53, 0x54, 0x41, 0x54, 0x45, 0x5f, - 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x19, 0x0a, - 0x15, 0x53, 0x54, 0x41, 0x54, 0x45, 0x5f, 0x4e, 0x4f, 0x54, 0x5f, 0x43, 0x4f, 0x4e, 0x53, 0x54, - 0x52, 0x55, 0x43, 0x54, 0x45, 0x44, 0x10, 0x01, 0x12, 0x15, 0x0a, 0x11, 0x53, 0x54, 0x41, 0x54, - 0x45, 0x5f, 0x43, 0x4f, 0x4e, 0x53, 0x54, 0x52, 0x55, 0x43, 0x54, 0x45, 0x44, 0x10, 0x02, 0x12, - 0x1f, 0x0a, 0x1b, 0x53, 0x54, 0x41, 0x54, 0x45, 0x5f, 0x50, 0x45, 0x4e, 0x44, 0x49, 0x4e, 0x47, - 0x5f, 0x45, 0x58, 0x54, 0x5f, 0x42, 0x52, 0x4f, 0x41, 0x44, 0x43, 0x41, 0x53, 0x54, 0x10, 0x10, - 0x12, 0x10, 0x0a, 0x0c, 0x53, 0x54, 0x41, 0x54, 0x45, 0x5f, 0x53, 0x49, 0x47, 0x4e, 0x45, 0x44, - 0x10, 0x04, 0x12, 0x16, 0x0a, 0x12, 0x53, 0x54, 0x41, 0x54, 0x45, 0x5f, 0x42, 0x52, 0x4f, 0x41, - 0x44, 0x43, 0x41, 0x53, 0x54, 0x49, 0x4e, 0x47, 0x10, 0x05, 0x12, 0x14, 0x0a, 0x10, 0x53, 0x54, - 0x41, 0x54, 0x45, 0x5f, 0x43, 0x4f, 0x4e, 0x46, 0x49, 0x52, 0x4d, 0x49, 0x4e, 0x47, 0x10, 0x06, - 0x12, 0x13, 0x0a, 0x0f, 0x53, 0x54, 0x41, 0x54, 0x45, 0x5f, 0x43, 0x4f, 0x4e, 0x46, 0x49, 0x52, - 0x4d, 0x45, 0x44, 0x10, 0x07, 0x12, 0x13, 0x0a, 0x0f, 0x53, 0x54, 0x41, 0x54, 0x45, 0x5f, 0x46, - 0x49, 0x4e, 0x41, 0x4c, 0x49, 0x5a, 0x45, 0x44, 0x10, 0x08, 0x12, 0x10, 0x0a, 0x0c, 0x53, 0x54, - 0x41, 0x54, 0x45, 0x5f, 0x46, 0x41, 0x49, 0x4c, 0x45, 0x44, 0x10, 0x09, 0x12, 0x11, 0x0a, 0x0d, - 0x53, 0x54, 0x41, 0x54, 0x45, 0x5f, 0x53, 0x55, 0x43, 0x43, 0x45, 0x53, 0x53, 0x10, 0x0a, 0x22, - 0x04, 0x08, 0x03, 0x10, 0x03, 0x22, 0x04, 0x08, 0x0b, 0x10, 0x0f, 0x2a, 0x15, 0x53, 0x54, 0x41, - 0x54, 0x45, 0x5f, 0x50, 0x45, 0x4e, 0x44, 0x49, 0x4e, 0x47, 0x5f, 0x53, 0x49, 0x47, 0x4e, 0x49, - 0x4e, 0x47, 0x2a, 0x0f, 0x53, 0x54, 0x41, 0x54, 0x45, 0x5f, 0x43, 0x41, 0x4e, 0x43, 0x45, 0x4c, - 0x49, 0x4e, 0x47, 0x2a, 0x0e, 0x53, 0x54, 0x41, 0x54, 0x45, 0x5f, 0x43, 0x41, 0x4e, 0x43, 0x45, - 0x4c, 0x45, 0x44, 0x2a, 0x13, 0x53, 0x54, 0x41, 0x54, 0x45, 0x5f, 0x43, 0x41, 0x4e, 0x43, 0x45, - 0x4c, 0x5f, 0x46, 0x41, 0x49, 0x4c, 0x45, 0x44, 0x2a, 0x18, 0x53, 0x54, 0x41, 0x54, 0x45, 0x5f, - 0x46, 0x41, 0x49, 0x4c, 0x45, 0x44, 0x5f, 0x52, 0x45, 0x46, 0x52, 0x45, 0x53, 0x48, 0x41, 0x42, - 0x4c, 0x45, 0x2a, 0x10, 0x53, 0x54, 0x41, 0x54, 0x45, 0x5f, 0x52, 0x45, 0x46, 0x52, 0x45, 0x53, - 0x48, 0x49, 0x4e, 0x47, 0x22, 0xf9, 0x03, 0x0a, 0x0e, 0x57, 0x61, 0x69, 0x74, 0x53, 0x74, 0x65, - 0x70, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x12, 0x19, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x72, 0x74, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x42, 0x03, 0xe0, 0x41, 0x03, 0x52, 0x05, 0x73, 0x74, 0x61, - 0x72, 0x74, 0x12, 0x1d, 0x0a, 0x07, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x18, 0x02, 0x20, - 0x01, 0x28, 0x03, 0x42, 0x03, 0xe0, 0x41, 0x03, 0x52, 0x07, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, - 0x74, 0x12, 0x1b, 0x0a, 0x06, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, - 0x03, 0x42, 0x03, 0xe0, 0x41, 0x03, 0x52, 0x06, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x12, 0x53, - 0x0a, 0x04, 0x75, 0x6e, 0x69, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x3a, 0x2e, 0x63, - 0x6f, 0x69, 0x6e, 0x62, 0x61, 0x73, 0x65, 0x2e, 0x73, 0x74, 0x61, 0x6b, 0x69, 0x6e, 0x67, 0x2e, - 0x6f, 0x72, 0x63, 0x68, 0x65, 0x73, 0x74, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x76, 0x31, - 0x2e, 0x57, 0x61, 0x69, 0x74, 0x53, 0x74, 0x65, 0x70, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x2e, - 0x57, 0x61, 0x69, 0x74, 0x55, 0x6e, 0x69, 0x74, 0x42, 0x03, 0xe0, 0x41, 0x03, 0x52, 0x04, 0x75, - 0x6e, 0x69, 0x74, 0x12, 0x52, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, 0x18, 0x05, 0x20, 0x01, - 0x28, 0x0e, 0x32, 0x37, 0x2e, 0x63, 0x6f, 0x69, 0x6e, 0x62, 0x61, 0x73, 0x65, 0x2e, 0x73, 0x74, - 0x61, 0x6b, 0x69, 0x6e, 0x67, 0x2e, 0x6f, 0x72, 0x63, 0x68, 0x65, 0x73, 0x74, 0x72, 0x61, 0x74, - 0x69, 0x6f, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x57, 0x61, 0x69, 0x74, 0x53, 0x74, 0x65, 0x70, 0x4f, - 0x75, 0x74, 0x70, 0x75, 0x74, 0x2e, 0x53, 0x74, 0x61, 0x74, 0x65, 0x42, 0x03, 0xe0, 0x41, 0x03, - 0x52, 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, 0x22, 0x83, 0x01, 0x0a, 0x08, 0x57, 0x61, 0x69, 0x74, - 0x55, 0x6e, 0x69, 0x74, 0x12, 0x19, 0x0a, 0x15, 0x57, 0x41, 0x49, 0x54, 0x5f, 0x55, 0x4e, 0x49, - 0x54, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, - 0x15, 0x0a, 0x11, 0x57, 0x41, 0x49, 0x54, 0x5f, 0x55, 0x4e, 0x49, 0x54, 0x5f, 0x53, 0x45, 0x43, - 0x4f, 0x4e, 0x44, 0x53, 0x10, 0x01, 0x12, 0x14, 0x0a, 0x10, 0x57, 0x41, 0x49, 0x54, 0x5f, 0x55, - 0x4e, 0x49, 0x54, 0x5f, 0x42, 0x4c, 0x4f, 0x43, 0x4b, 0x53, 0x10, 0x02, 0x12, 0x14, 0x0a, 0x10, - 0x57, 0x41, 0x49, 0x54, 0x5f, 0x55, 0x4e, 0x49, 0x54, 0x5f, 0x45, 0x50, 0x4f, 0x43, 0x48, 0x53, - 0x10, 0x03, 0x12, 0x19, 0x0a, 0x15, 0x57, 0x41, 0x49, 0x54, 0x5f, 0x55, 0x4e, 0x49, 0x54, 0x5f, - 0x43, 0x48, 0x45, 0x43, 0x4b, 0x50, 0x4f, 0x49, 0x4e, 0x54, 0x53, 0x10, 0x04, 0x22, 0x61, 0x0a, + 0x6d, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x35, 0x63, 0x6f, 0x69, 0x6e, 0x62, 0x61, 0x73, + 0x65, 0x2f, 0x73, 0x74, 0x61, 0x6b, 0x69, 0x6e, 0x67, 0x2f, 0x6f, 0x72, 0x63, 0x68, 0x65, 0x73, + 0x74, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2f, 0x76, 0x31, 0x2f, 0x65, 0x74, 0x68, 0x65, 0x72, + 0x65, 0x75, 0x6d, 0x5f, 0x6b, 0x69, 0x6c, 0x6e, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x2e, + 0x63, 0x6f, 0x69, 0x6e, 0x62, 0x61, 0x73, 0x65, 0x2f, 0x73, 0x74, 0x61, 0x6b, 0x69, 0x6e, 0x67, + 0x2f, 0x6f, 0x72, 0x63, 0x68, 0x65, 0x73, 0x74, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2f, 0x76, + 0x31, 0x2f, 0x73, 0x6f, 0x6c, 0x61, 0x6e, 0x61, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1f, + 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x66, 0x69, 0x65, 0x6c, 0x64, + 0x5f, 0x62, 0x65, 0x68, 0x61, 0x76, 0x69, 0x6f, 0x72, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, + 0x19, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x72, 0x65, 0x73, 0x6f, + 0x75, 0x72, 0x63, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1f, 0x67, 0x6f, 0x6f, 0x67, + 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x74, 0x69, 0x6d, 0x65, + 0x73, 0x74, 0x61, 0x6d, 0x70, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x2e, 0x70, 0x72, 0x6f, + 0x74, 0x6f, 0x63, 0x2d, 0x67, 0x65, 0x6e, 0x2d, 0x6f, 0x70, 0x65, 0x6e, 0x61, 0x70, 0x69, 0x76, + 0x32, 0x2f, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0xf8, 0x04, 0x0a, 0x0c, + 0x54, 0x78, 0x53, 0x74, 0x65, 0x70, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x12, 0x24, 0x0a, 0x0b, + 0x75, 0x6e, 0x73, 0x69, 0x67, 0x6e, 0x65, 0x64, 0x5f, 0x74, 0x78, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x09, 0x42, 0x03, 0xe0, 0x41, 0x03, 0x52, 0x0a, 0x75, 0x6e, 0x73, 0x69, 0x67, 0x6e, 0x65, 0x64, + 0x54, 0x78, 0x12, 0x20, 0x0a, 0x09, 0x73, 0x69, 0x67, 0x6e, 0x65, 0x64, 0x5f, 0x74, 0x78, 0x18, + 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x03, 0x52, 0x08, 0x73, 0x69, 0x67, 0x6e, + 0x65, 0x64, 0x54, 0x78, 0x12, 0x1c, 0x0a, 0x07, 0x74, 0x78, 0x5f, 0x68, 0x61, 0x73, 0x68, 0x18, + 0x03, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x03, 0x52, 0x06, 0x74, 0x78, 0x48, 0x61, + 0x73, 0x68, 0x12, 0x50, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, + 0x0e, 0x32, 0x35, 0x2e, 0x63, 0x6f, 0x69, 0x6e, 0x62, 0x61, 0x73, 0x65, 0x2e, 0x73, 0x74, 0x61, + 0x6b, 0x69, 0x6e, 0x67, 0x2e, 0x6f, 0x72, 0x63, 0x68, 0x65, 0x73, 0x74, 0x72, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x54, 0x78, 0x53, 0x74, 0x65, 0x70, 0x4f, 0x75, 0x74, 0x70, + 0x75, 0x74, 0x2e, 0x53, 0x74, 0x61, 0x74, 0x65, 0x42, 0x03, 0xe0, 0x41, 0x03, 0x52, 0x05, 0x73, + 0x74, 0x61, 0x74, 0x65, 0x12, 0x28, 0x0a, 0x0d, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x5f, 0x6d, 0x65, + 0x73, 0x73, 0x61, 0x67, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x03, + 0x52, 0x0c, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x22, 0x85, + 0x03, 0x0a, 0x05, 0x53, 0x74, 0x61, 0x74, 0x65, 0x12, 0x15, 0x0a, 0x11, 0x53, 0x54, 0x41, 0x54, + 0x45, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, + 0x19, 0x0a, 0x15, 0x53, 0x54, 0x41, 0x54, 0x45, 0x5f, 0x4e, 0x4f, 0x54, 0x5f, 0x43, 0x4f, 0x4e, + 0x53, 0x54, 0x52, 0x55, 0x43, 0x54, 0x45, 0x44, 0x10, 0x01, 0x12, 0x15, 0x0a, 0x11, 0x53, 0x54, + 0x41, 0x54, 0x45, 0x5f, 0x43, 0x4f, 0x4e, 0x53, 0x54, 0x52, 0x55, 0x43, 0x54, 0x45, 0x44, 0x10, + 0x02, 0x12, 0x1f, 0x0a, 0x1b, 0x53, 0x54, 0x41, 0x54, 0x45, 0x5f, 0x50, 0x45, 0x4e, 0x44, 0x49, + 0x4e, 0x47, 0x5f, 0x45, 0x58, 0x54, 0x5f, 0x42, 0x52, 0x4f, 0x41, 0x44, 0x43, 0x41, 0x53, 0x54, + 0x10, 0x10, 0x12, 0x10, 0x0a, 0x0c, 0x53, 0x54, 0x41, 0x54, 0x45, 0x5f, 0x53, 0x49, 0x47, 0x4e, + 0x45, 0x44, 0x10, 0x04, 0x12, 0x16, 0x0a, 0x12, 0x53, 0x54, 0x41, 0x54, 0x45, 0x5f, 0x42, 0x52, + 0x4f, 0x41, 0x44, 0x43, 0x41, 0x53, 0x54, 0x49, 0x4e, 0x47, 0x10, 0x05, 0x12, 0x14, 0x0a, 0x10, + 0x53, 0x54, 0x41, 0x54, 0x45, 0x5f, 0x43, 0x4f, 0x4e, 0x46, 0x49, 0x52, 0x4d, 0x49, 0x4e, 0x47, + 0x10, 0x06, 0x12, 0x13, 0x0a, 0x0f, 0x53, 0x54, 0x41, 0x54, 0x45, 0x5f, 0x43, 0x4f, 0x4e, 0x46, + 0x49, 0x52, 0x4d, 0x45, 0x44, 0x10, 0x07, 0x12, 0x13, 0x0a, 0x0f, 0x53, 0x54, 0x41, 0x54, 0x45, + 0x5f, 0x46, 0x49, 0x4e, 0x41, 0x4c, 0x49, 0x5a, 0x45, 0x44, 0x10, 0x08, 0x12, 0x10, 0x0a, 0x0c, + 0x53, 0x54, 0x41, 0x54, 0x45, 0x5f, 0x46, 0x41, 0x49, 0x4c, 0x45, 0x44, 0x10, 0x09, 0x12, 0x11, + 0x0a, 0x0d, 0x53, 0x54, 0x41, 0x54, 0x45, 0x5f, 0x53, 0x55, 0x43, 0x43, 0x45, 0x53, 0x53, 0x10, + 0x0a, 0x22, 0x04, 0x08, 0x03, 0x10, 0x03, 0x22, 0x04, 0x08, 0x0b, 0x10, 0x0f, 0x2a, 0x15, 0x53, + 0x54, 0x41, 0x54, 0x45, 0x5f, 0x50, 0x45, 0x4e, 0x44, 0x49, 0x4e, 0x47, 0x5f, 0x53, 0x49, 0x47, + 0x4e, 0x49, 0x4e, 0x47, 0x2a, 0x0f, 0x53, 0x54, 0x41, 0x54, 0x45, 0x5f, 0x43, 0x41, 0x4e, 0x43, + 0x45, 0x4c, 0x49, 0x4e, 0x47, 0x2a, 0x0e, 0x53, 0x54, 0x41, 0x54, 0x45, 0x5f, 0x43, 0x41, 0x4e, + 0x43, 0x45, 0x4c, 0x45, 0x44, 0x2a, 0x13, 0x53, 0x54, 0x41, 0x54, 0x45, 0x5f, 0x43, 0x41, 0x4e, + 0x43, 0x45, 0x4c, 0x5f, 0x46, 0x41, 0x49, 0x4c, 0x45, 0x44, 0x2a, 0x18, 0x53, 0x54, 0x41, 0x54, + 0x45, 0x5f, 0x46, 0x41, 0x49, 0x4c, 0x45, 0x44, 0x5f, 0x52, 0x45, 0x46, 0x52, 0x45, 0x53, 0x48, + 0x41, 0x42, 0x4c, 0x45, 0x2a, 0x10, 0x53, 0x54, 0x41, 0x54, 0x45, 0x5f, 0x52, 0x45, 0x46, 0x52, + 0x45, 0x53, 0x48, 0x49, 0x4e, 0x47, 0x22, 0xf9, 0x03, 0x0a, 0x0e, 0x57, 0x61, 0x69, 0x74, 0x53, + 0x74, 0x65, 0x70, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x12, 0x19, 0x0a, 0x05, 0x73, 0x74, 0x61, + 0x72, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x42, 0x03, 0xe0, 0x41, 0x03, 0x52, 0x05, 0x73, + 0x74, 0x61, 0x72, 0x74, 0x12, 0x1d, 0x0a, 0x07, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x18, + 0x02, 0x20, 0x01, 0x28, 0x03, 0x42, 0x03, 0xe0, 0x41, 0x03, 0x52, 0x07, 0x63, 0x75, 0x72, 0x72, + 0x65, 0x6e, 0x74, 0x12, 0x1b, 0x0a, 0x06, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x18, 0x03, 0x20, + 0x01, 0x28, 0x03, 0x42, 0x03, 0xe0, 0x41, 0x03, 0x52, 0x06, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, + 0x12, 0x53, 0x0a, 0x04, 0x75, 0x6e, 0x69, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x3a, + 0x2e, 0x63, 0x6f, 0x69, 0x6e, 0x62, 0x61, 0x73, 0x65, 0x2e, 0x73, 0x74, 0x61, 0x6b, 0x69, 0x6e, + 0x67, 0x2e, 0x6f, 0x72, 0x63, 0x68, 0x65, 0x73, 0x74, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, + 0x76, 0x31, 0x2e, 0x57, 0x61, 0x69, 0x74, 0x53, 0x74, 0x65, 0x70, 0x4f, 0x75, 0x74, 0x70, 0x75, + 0x74, 0x2e, 0x57, 0x61, 0x69, 0x74, 0x55, 0x6e, 0x69, 0x74, 0x42, 0x03, 0xe0, 0x41, 0x03, 0x52, + 0x04, 0x75, 0x6e, 0x69, 0x74, 0x12, 0x52, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, 0x18, 0x05, + 0x20, 0x01, 0x28, 0x0e, 0x32, 0x37, 0x2e, 0x63, 0x6f, 0x69, 0x6e, 0x62, 0x61, 0x73, 0x65, 0x2e, + 0x73, 0x74, 0x61, 0x6b, 0x69, 0x6e, 0x67, 0x2e, 0x6f, 0x72, 0x63, 0x68, 0x65, 0x73, 0x74, 0x72, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x57, 0x61, 0x69, 0x74, 0x53, 0x74, 0x65, + 0x70, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x2e, 0x53, 0x74, 0x61, 0x74, 0x65, 0x42, 0x03, 0xe0, + 0x41, 0x03, 0x52, 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, 0x22, 0x83, 0x01, 0x0a, 0x08, 0x57, 0x61, + 0x69, 0x74, 0x55, 0x6e, 0x69, 0x74, 0x12, 0x19, 0x0a, 0x15, 0x57, 0x41, 0x49, 0x54, 0x5f, 0x55, + 0x4e, 0x49, 0x54, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, + 0x00, 0x12, 0x15, 0x0a, 0x11, 0x57, 0x41, 0x49, 0x54, 0x5f, 0x55, 0x4e, 0x49, 0x54, 0x5f, 0x53, + 0x45, 0x43, 0x4f, 0x4e, 0x44, 0x53, 0x10, 0x01, 0x12, 0x14, 0x0a, 0x10, 0x57, 0x41, 0x49, 0x54, + 0x5f, 0x55, 0x4e, 0x49, 0x54, 0x5f, 0x42, 0x4c, 0x4f, 0x43, 0x4b, 0x53, 0x10, 0x02, 0x12, 0x14, + 0x0a, 0x10, 0x57, 0x41, 0x49, 0x54, 0x5f, 0x55, 0x4e, 0x49, 0x54, 0x5f, 0x45, 0x50, 0x4f, 0x43, + 0x48, 0x53, 0x10, 0x03, 0x12, 0x19, 0x0a, 0x15, 0x57, 0x41, 0x49, 0x54, 0x5f, 0x55, 0x4e, 0x49, + 0x54, 0x5f, 0x43, 0x48, 0x45, 0x43, 0x4b, 0x50, 0x4f, 0x49, 0x4e, 0x54, 0x53, 0x10, 0x04, 0x22, + 0x61, 0x0a, 0x05, 0x53, 0x74, 0x61, 0x74, 0x65, 0x12, 0x15, 0x0a, 0x11, 0x53, 0x54, 0x41, 0x54, + 0x45, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, + 0x15, 0x0a, 0x11, 0x53, 0x54, 0x41, 0x54, 0x45, 0x5f, 0x4e, 0x4f, 0x54, 0x5f, 0x53, 0x54, 0x41, + 0x52, 0x54, 0x45, 0x44, 0x10, 0x01, 0x12, 0x15, 0x0a, 0x11, 0x53, 0x54, 0x41, 0x54, 0x45, 0x5f, + 0x49, 0x4e, 0x5f, 0x50, 0x52, 0x4f, 0x47, 0x52, 0x45, 0x53, 0x53, 0x10, 0x02, 0x12, 0x13, 0x0a, + 0x0f, 0x53, 0x54, 0x41, 0x54, 0x45, 0x5f, 0x43, 0x4f, 0x4d, 0x50, 0x4c, 0x45, 0x54, 0x45, 0x44, + 0x10, 0x03, 0x22, 0xd6, 0x01, 0x0a, 0x18, 0x50, 0x72, 0x6f, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, + 0x49, 0x6e, 0x66, 0x72, 0x61, 0x53, 0x74, 0x65, 0x70, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x12, + 0x5c, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x41, + 0x2e, 0x63, 0x6f, 0x69, 0x6e, 0x62, 0x61, 0x73, 0x65, 0x2e, 0x73, 0x74, 0x61, 0x6b, 0x69, 0x6e, + 0x67, 0x2e, 0x6f, 0x72, 0x63, 0x68, 0x65, 0x73, 0x74, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, + 0x76, 0x31, 0x2e, 0x50, 0x72, 0x6f, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x49, 0x6e, 0x66, 0x72, + 0x61, 0x53, 0x74, 0x65, 0x70, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x2e, 0x53, 0x74, 0x61, 0x74, + 0x65, 0x42, 0x03, 0xe0, 0x41, 0x03, 0x52, 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, 0x22, 0x5c, 0x0a, 0x05, 0x53, 0x74, 0x61, 0x74, 0x65, 0x12, 0x15, 0x0a, 0x11, 0x53, 0x54, 0x41, 0x54, 0x45, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x15, 0x0a, - 0x11, 0x53, 0x54, 0x41, 0x54, 0x45, 0x5f, 0x4e, 0x4f, 0x54, 0x5f, 0x53, 0x54, 0x41, 0x52, 0x54, - 0x45, 0x44, 0x10, 0x01, 0x12, 0x15, 0x0a, 0x11, 0x53, 0x54, 0x41, 0x54, 0x45, 0x5f, 0x49, 0x4e, - 0x5f, 0x50, 0x52, 0x4f, 0x47, 0x52, 0x45, 0x53, 0x53, 0x10, 0x02, 0x12, 0x13, 0x0a, 0x0f, 0x53, - 0x54, 0x41, 0x54, 0x45, 0x5f, 0x43, 0x4f, 0x4d, 0x50, 0x4c, 0x45, 0x54, 0x45, 0x44, 0x10, 0x03, - 0x22, 0xa6, 0x02, 0x0a, 0x0c, 0x57, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x53, 0x74, 0x65, - 0x70, 0x12, 0x17, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, - 0x03, 0xe0, 0x41, 0x03, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x5c, 0x0a, 0x0e, 0x74, 0x78, - 0x5f, 0x73, 0x74, 0x65, 0x70, 0x5f, 0x6f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x18, 0x02, 0x20, 0x01, - 0x28, 0x0b, 0x32, 0x2f, 0x2e, 0x63, 0x6f, 0x69, 0x6e, 0x62, 0x61, 0x73, 0x65, 0x2e, 0x73, 0x74, - 0x61, 0x6b, 0x69, 0x6e, 0x67, 0x2e, 0x6f, 0x72, 0x63, 0x68, 0x65, 0x73, 0x74, 0x72, 0x61, 0x74, - 0x69, 0x6f, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x54, 0x78, 0x53, 0x74, 0x65, 0x70, 0x4f, 0x75, 0x74, - 0x70, 0x75, 0x74, 0x42, 0x03, 0xe0, 0x41, 0x03, 0x48, 0x00, 0x52, 0x0c, 0x74, 0x78, 0x53, 0x74, - 0x65, 0x70, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x12, 0x62, 0x0a, 0x10, 0x77, 0x61, 0x69, 0x74, - 0x5f, 0x73, 0x74, 0x65, 0x70, 0x5f, 0x6f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x18, 0x03, 0x20, 0x01, - 0x28, 0x0b, 0x32, 0x31, 0x2e, 0x63, 0x6f, 0x69, 0x6e, 0x62, 0x61, 0x73, 0x65, 0x2e, 0x73, 0x74, + 0x11, 0x53, 0x54, 0x41, 0x54, 0x45, 0x5f, 0x49, 0x4e, 0x5f, 0x50, 0x52, 0x4f, 0x47, 0x52, 0x45, + 0x53, 0x53, 0x10, 0x02, 0x12, 0x13, 0x0a, 0x0f, 0x53, 0x54, 0x41, 0x54, 0x45, 0x5f, 0x43, 0x4f, + 0x4d, 0x50, 0x4c, 0x45, 0x54, 0x45, 0x44, 0x10, 0x03, 0x12, 0x10, 0x0a, 0x0c, 0x53, 0x54, 0x41, + 0x54, 0x45, 0x5f, 0x46, 0x41, 0x49, 0x4c, 0x45, 0x44, 0x10, 0x04, 0x22, 0xaa, 0x03, 0x0a, 0x0c, + 0x57, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x53, 0x74, 0x65, 0x70, 0x12, 0x17, 0x0a, 0x04, + 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x03, 0x52, + 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x5c, 0x0a, 0x0e, 0x74, 0x78, 0x5f, 0x73, 0x74, 0x65, 0x70, + 0x5f, 0x6f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2f, 0x2e, + 0x63, 0x6f, 0x69, 0x6e, 0x62, 0x61, 0x73, 0x65, 0x2e, 0x73, 0x74, 0x61, 0x6b, 0x69, 0x6e, 0x67, + 0x2e, 0x6f, 0x72, 0x63, 0x68, 0x65, 0x73, 0x74, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x76, + 0x31, 0x2e, 0x54, 0x78, 0x53, 0x74, 0x65, 0x70, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x42, 0x03, + 0xe0, 0x41, 0x03, 0x48, 0x00, 0x52, 0x0c, 0x74, 0x78, 0x53, 0x74, 0x65, 0x70, 0x4f, 0x75, 0x74, + 0x70, 0x75, 0x74, 0x12, 0x62, 0x0a, 0x10, 0x77, 0x61, 0x69, 0x74, 0x5f, 0x73, 0x74, 0x65, 0x70, + 0x5f, 0x6f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x31, 0x2e, + 0x63, 0x6f, 0x69, 0x6e, 0x62, 0x61, 0x73, 0x65, 0x2e, 0x73, 0x74, 0x61, 0x6b, 0x69, 0x6e, 0x67, + 0x2e, 0x6f, 0x72, 0x63, 0x68, 0x65, 0x73, 0x74, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x76, + 0x31, 0x2e, 0x57, 0x61, 0x69, 0x74, 0x53, 0x74, 0x65, 0x70, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, + 0x42, 0x03, 0xe0, 0x41, 0x03, 0x48, 0x00, 0x52, 0x0e, 0x77, 0x61, 0x69, 0x74, 0x53, 0x74, 0x65, + 0x70, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x12, 0x81, 0x01, 0x0a, 0x1b, 0x70, 0x72, 0x6f, 0x76, + 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x6e, 0x66, 0x72, 0x61, 0x5f, 0x73, 0x74, 0x65, 0x70, + 0x5f, 0x6f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x3b, 0x2e, + 0x63, 0x6f, 0x69, 0x6e, 0x62, 0x61, 0x73, 0x65, 0x2e, 0x73, 0x74, 0x61, 0x6b, 0x69, 0x6e, 0x67, + 0x2e, 0x6f, 0x72, 0x63, 0x68, 0x65, 0x73, 0x74, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x76, + 0x31, 0x2e, 0x50, 0x72, 0x6f, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x49, 0x6e, 0x66, 0x72, 0x61, + 0x53, 0x74, 0x65, 0x70, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x42, 0x03, 0xe0, 0x41, 0x03, 0x48, + 0x00, 0x52, 0x18, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x49, 0x6e, 0x66, 0x72, + 0x61, 0x53, 0x74, 0x65, 0x70, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x3a, 0x31, 0x92, 0x41, 0x2e, + 0x0a, 0x2c, 0x2a, 0x2a, 0x54, 0x68, 0x65, 0x20, 0x69, 0x6e, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x20, 0x66, 0x6f, 0x72, 0x20, 0x61, 0x20, 0x73, 0x74, 0x65, 0x70, 0x20, 0x69, + 0x6e, 0x20, 0x74, 0x68, 0x65, 0x20, 0x77, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x42, 0x08, + 0x0a, 0x06, 0x6f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x22, 0xe8, 0x09, 0x0a, 0x08, 0x57, 0x6f, 0x72, + 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x12, 0x17, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x03, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x1b, + 0x0a, 0x06, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, + 0xe0, 0x41, 0x02, 0x52, 0x06, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x7d, 0x0a, 0x19, 0x73, + 0x6f, 0x6c, 0x61, 0x6e, 0x61, 0x5f, 0x73, 0x74, 0x61, 0x6b, 0x69, 0x6e, 0x67, 0x5f, 0x70, 0x61, + 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x73, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x3a, + 0x2e, 0x63, 0x6f, 0x69, 0x6e, 0x62, 0x61, 0x73, 0x65, 0x2e, 0x73, 0x74, 0x61, 0x6b, 0x69, 0x6e, + 0x67, 0x2e, 0x6f, 0x72, 0x63, 0x68, 0x65, 0x73, 0x74, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, + 0x76, 0x31, 0x2e, 0x53, 0x6f, 0x6c, 0x61, 0x6e, 0x61, 0x53, 0x74, 0x61, 0x6b, 0x69, 0x6e, 0x67, + 0x50, 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x73, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x48, + 0x00, 0x52, 0x17, 0x73, 0x6f, 0x6c, 0x61, 0x6e, 0x61, 0x53, 0x74, 0x61, 0x6b, 0x69, 0x6e, 0x67, + 0x50, 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x73, 0x12, 0x90, 0x01, 0x0a, 0x20, 0x65, + 0x74, 0x68, 0x65, 0x72, 0x65, 0x75, 0x6d, 0x5f, 0x6b, 0x69, 0x6c, 0x6e, 0x5f, 0x73, 0x74, 0x61, + 0x6b, 0x69, 0x6e, 0x67, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x73, 0x18, + 0x0a, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x40, 0x2e, 0x63, 0x6f, 0x69, 0x6e, 0x62, 0x61, 0x73, 0x65, + 0x2e, 0x73, 0x74, 0x61, 0x6b, 0x69, 0x6e, 0x67, 0x2e, 0x6f, 0x72, 0x63, 0x68, 0x65, 0x73, 0x74, + 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x45, 0x74, 0x68, 0x65, 0x72, 0x65, + 0x75, 0x6d, 0x4b, 0x69, 0x6c, 0x6e, 0x53, 0x74, 0x61, 0x6b, 0x69, 0x6e, 0x67, 0x50, 0x61, 0x72, + 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x73, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x48, 0x00, 0x52, 0x1d, + 0x65, 0x74, 0x68, 0x65, 0x72, 0x65, 0x75, 0x6d, 0x4b, 0x69, 0x6c, 0x6e, 0x53, 0x74, 0x61, 0x6b, + 0x69, 0x6e, 0x67, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x73, 0x12, 0x83, 0x01, + 0x0a, 0x1b, 0x65, 0x74, 0x68, 0x65, 0x72, 0x65, 0x75, 0x6d, 0x5f, 0x73, 0x74, 0x61, 0x6b, 0x69, + 0x6e, 0x67, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x73, 0x18, 0x0d, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x3c, 0x2e, 0x63, 0x6f, 0x69, 0x6e, 0x62, 0x61, 0x73, 0x65, 0x2e, 0x73, + 0x74, 0x61, 0x6b, 0x69, 0x6e, 0x67, 0x2e, 0x6f, 0x72, 0x63, 0x68, 0x65, 0x73, 0x74, 0x72, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x45, 0x74, 0x68, 0x65, 0x72, 0x65, 0x75, 0x6d, + 0x53, 0x74, 0x61, 0x6b, 0x69, 0x6e, 0x67, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, + 0x73, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x48, 0x00, 0x52, 0x19, 0x65, 0x74, 0x68, 0x65, 0x72, 0x65, + 0x75, 0x6d, 0x53, 0x74, 0x61, 0x6b, 0x69, 0x6e, 0x67, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, + 0x65, 0x72, 0x73, 0x12, 0x4c, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, 0x18, 0x04, 0x20, 0x01, + 0x28, 0x0e, 0x32, 0x31, 0x2e, 0x63, 0x6f, 0x69, 0x6e, 0x62, 0x61, 0x73, 0x65, 0x2e, 0x73, 0x74, 0x61, 0x6b, 0x69, 0x6e, 0x67, 0x2e, 0x6f, 0x72, 0x63, 0x68, 0x65, 0x73, 0x74, 0x72, 0x61, 0x74, - 0x69, 0x6f, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x57, 0x61, 0x69, 0x74, 0x53, 0x74, 0x65, 0x70, 0x4f, - 0x75, 0x74, 0x70, 0x75, 0x74, 0x42, 0x03, 0xe0, 0x41, 0x03, 0x48, 0x00, 0x52, 0x0e, 0x77, 0x61, - 0x69, 0x74, 0x53, 0x74, 0x65, 0x70, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x3a, 0x31, 0x92, 0x41, - 0x2e, 0x0a, 0x2c, 0x2a, 0x2a, 0x54, 0x68, 0x65, 0x20, 0x69, 0x6e, 0x66, 0x6f, 0x72, 0x6d, 0x61, - 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x66, 0x6f, 0x72, 0x20, 0x61, 0x20, 0x73, 0x74, 0x65, 0x70, 0x20, - 0x69, 0x6e, 0x20, 0x74, 0x68, 0x65, 0x20, 0x77, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x42, - 0x08, 0x0a, 0x06, 0x6f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x22, 0xe2, 0x08, 0x0a, 0x08, 0x57, 0x6f, - 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x12, 0x17, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x03, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, - 0x1b, 0x0a, 0x06, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, - 0x03, 0xe0, 0x41, 0x02, 0x52, 0x06, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x7d, 0x0a, 0x19, - 0x73, 0x6f, 0x6c, 0x61, 0x6e, 0x61, 0x5f, 0x73, 0x74, 0x61, 0x6b, 0x69, 0x6e, 0x67, 0x5f, 0x70, - 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x73, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0b, 0x32, - 0x3a, 0x2e, 0x63, 0x6f, 0x69, 0x6e, 0x62, 0x61, 0x73, 0x65, 0x2e, 0x73, 0x74, 0x61, 0x6b, 0x69, - 0x6e, 0x67, 0x2e, 0x6f, 0x72, 0x63, 0x68, 0x65, 0x73, 0x74, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, - 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x6f, 0x6c, 0x61, 0x6e, 0x61, 0x53, 0x74, 0x61, 0x6b, 0x69, 0x6e, - 0x67, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x73, 0x42, 0x03, 0xe0, 0x41, 0x02, - 0x48, 0x00, 0x52, 0x17, 0x73, 0x6f, 0x6c, 0x61, 0x6e, 0x61, 0x53, 0x74, 0x61, 0x6b, 0x69, 0x6e, - 0x67, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x73, 0x12, 0x90, 0x01, 0x0a, 0x20, - 0x65, 0x74, 0x68, 0x65, 0x72, 0x65, 0x75, 0x6d, 0x5f, 0x6b, 0x69, 0x6c, 0x6e, 0x5f, 0x73, 0x74, - 0x61, 0x6b, 0x69, 0x6e, 0x67, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x73, - 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x40, 0x2e, 0x63, 0x6f, 0x69, 0x6e, 0x62, 0x61, 0x73, - 0x65, 0x2e, 0x73, 0x74, 0x61, 0x6b, 0x69, 0x6e, 0x67, 0x2e, 0x6f, 0x72, 0x63, 0x68, 0x65, 0x73, - 0x74, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x45, 0x74, 0x68, 0x65, 0x72, - 0x65, 0x75, 0x6d, 0x4b, 0x69, 0x6c, 0x6e, 0x53, 0x74, 0x61, 0x6b, 0x69, 0x6e, 0x67, 0x50, 0x61, - 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x73, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x48, 0x00, 0x52, - 0x1d, 0x65, 0x74, 0x68, 0x65, 0x72, 0x65, 0x75, 0x6d, 0x4b, 0x69, 0x6c, 0x6e, 0x53, 0x74, 0x61, - 0x6b, 0x69, 0x6e, 0x67, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x73, 0x12, 0x4c, - 0x0a, 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x31, 0x2e, + 0x69, 0x6f, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x57, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x2e, + 0x53, 0x74, 0x61, 0x74, 0x65, 0x42, 0x03, 0xe0, 0x41, 0x03, 0x52, 0x05, 0x73, 0x74, 0x61, 0x74, + 0x65, 0x12, 0x2b, 0x0a, 0x0f, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x5f, 0x73, 0x74, 0x65, + 0x70, 0x5f, 0x69, 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x42, 0x03, 0xe0, 0x41, 0x03, 0x52, + 0x0d, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x53, 0x74, 0x65, 0x70, 0x49, 0x64, 0x12, 0x4a, + 0x0a, 0x05, 0x73, 0x74, 0x65, 0x70, 0x73, 0x18, 0x06, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2f, 0x2e, 0x63, 0x6f, 0x69, 0x6e, 0x62, 0x61, 0x73, 0x65, 0x2e, 0x73, 0x74, 0x61, 0x6b, 0x69, 0x6e, 0x67, 0x2e, 0x6f, 0x72, 0x63, 0x68, 0x65, 0x73, 0x74, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x76, - 0x31, 0x2e, 0x57, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x2e, 0x53, 0x74, 0x61, 0x74, 0x65, - 0x42, 0x03, 0xe0, 0x41, 0x03, 0x52, 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, 0x12, 0x2b, 0x0a, 0x0f, - 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x5f, 0x73, 0x74, 0x65, 0x70, 0x5f, 0x69, 0x64, 0x18, - 0x05, 0x20, 0x01, 0x28, 0x05, 0x42, 0x03, 0xe0, 0x41, 0x03, 0x52, 0x0d, 0x63, 0x75, 0x72, 0x72, - 0x65, 0x6e, 0x74, 0x53, 0x74, 0x65, 0x70, 0x49, 0x64, 0x12, 0x4a, 0x0a, 0x05, 0x73, 0x74, 0x65, - 0x70, 0x73, 0x18, 0x06, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2f, 0x2e, 0x63, 0x6f, 0x69, 0x6e, 0x62, - 0x61, 0x73, 0x65, 0x2e, 0x73, 0x74, 0x61, 0x6b, 0x69, 0x6e, 0x67, 0x2e, 0x6f, 0x72, 0x63, 0x68, - 0x65, 0x73, 0x74, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x57, 0x6f, 0x72, - 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x53, 0x74, 0x65, 0x70, 0x42, 0x03, 0xe0, 0x41, 0x03, 0x52, 0x05, - 0x73, 0x74, 0x65, 0x70, 0x73, 0x12, 0x40, 0x0a, 0x0b, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x5f, - 0x74, 0x69, 0x6d, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, - 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, - 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x42, 0x03, 0xe0, 0x41, 0x03, 0x52, 0x0a, 0x63, 0x72, 0x65, - 0x61, 0x74, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x40, 0x0a, 0x0b, 0x75, 0x70, 0x64, 0x61, 0x74, - 0x65, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, - 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, - 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x42, 0x03, 0xe0, 0x41, 0x03, 0x52, 0x0a, 0x75, - 0x70, 0x64, 0x61, 0x74, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x44, 0x0a, 0x0d, 0x63, 0x6f, 0x6d, - 0x70, 0x6c, 0x65, 0x74, 0x65, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x0b, - 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, - 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x42, 0x03, 0xe0, 0x41, - 0x03, 0x52, 0x0c, 0x63, 0x6f, 0x6d, 0x70, 0x6c, 0x65, 0x74, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x22, - 0xf8, 0x01, 0x0a, 0x05, 0x53, 0x74, 0x61, 0x74, 0x65, 0x12, 0x15, 0x0a, 0x11, 0x53, 0x54, 0x41, - 0x54, 0x45, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, - 0x12, 0x15, 0x0a, 0x11, 0x53, 0x54, 0x41, 0x54, 0x45, 0x5f, 0x49, 0x4e, 0x5f, 0x50, 0x52, 0x4f, - 0x47, 0x52, 0x45, 0x53, 0x53, 0x10, 0x01, 0x12, 0x23, 0x0a, 0x1f, 0x53, 0x54, 0x41, 0x54, 0x45, - 0x5f, 0x57, 0x41, 0x49, 0x54, 0x49, 0x4e, 0x47, 0x5f, 0x46, 0x4f, 0x52, 0x5f, 0x45, 0x58, 0x54, - 0x5f, 0x42, 0x52, 0x4f, 0x41, 0x44, 0x43, 0x41, 0x53, 0x54, 0x10, 0x09, 0x12, 0x13, 0x0a, 0x0f, - 0x53, 0x54, 0x41, 0x54, 0x45, 0x5f, 0x43, 0x4f, 0x4d, 0x50, 0x4c, 0x45, 0x54, 0x45, 0x44, 0x10, - 0x03, 0x12, 0x10, 0x0a, 0x0c, 0x53, 0x54, 0x41, 0x54, 0x45, 0x5f, 0x46, 0x41, 0x49, 0x4c, 0x45, - 0x44, 0x10, 0x04, 0x22, 0x04, 0x08, 0x02, 0x10, 0x02, 0x22, 0x04, 0x08, 0x05, 0x10, 0x08, 0x2a, - 0x19, 0x53, 0x54, 0x41, 0x54, 0x45, 0x5f, 0x57, 0x41, 0x49, 0x54, 0x49, 0x4e, 0x47, 0x5f, 0x46, - 0x4f, 0x52, 0x5f, 0x53, 0x49, 0x47, 0x4e, 0x49, 0x4e, 0x47, 0x2a, 0x0f, 0x53, 0x54, 0x41, 0x54, - 0x45, 0x5f, 0x43, 0x41, 0x4e, 0x43, 0x45, 0x4c, 0x49, 0x4e, 0x47, 0x2a, 0x0e, 0x53, 0x54, 0x41, - 0x54, 0x45, 0x5f, 0x43, 0x41, 0x4e, 0x43, 0x45, 0x4c, 0x45, 0x44, 0x2a, 0x13, 0x53, 0x54, 0x41, - 0x54, 0x45, 0x5f, 0x43, 0x41, 0x4e, 0x43, 0x45, 0x4c, 0x5f, 0x46, 0x41, 0x49, 0x4c, 0x45, 0x44, - 0x2a, 0x18, 0x53, 0x54, 0x41, 0x54, 0x45, 0x5f, 0x46, 0x41, 0x49, 0x4c, 0x45, 0x44, 0x5f, 0x52, - 0x45, 0x46, 0x52, 0x45, 0x53, 0x48, 0x41, 0x42, 0x4c, 0x45, 0x3a, 0x60, 0xea, 0x41, 0x5d, 0x0a, - 0x1d, 0x73, 0x74, 0x61, 0x6b, 0x69, 0x6e, 0x67, 0x2e, 0x63, 0x6f, 0x69, 0x6e, 0x62, 0x61, 0x73, - 0x65, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x57, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x12, 0x27, - 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x7b, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, - 0x74, 0x7d, 0x2f, 0x77, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x73, 0x2f, 0x7b, 0x77, 0x6f, - 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x7d, 0x2a, 0x09, 0x77, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, - 0x77, 0x73, 0x32, 0x08, 0x77, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x42, 0x14, 0x0a, 0x12, - 0x73, 0x74, 0x61, 0x6b, 0x69, 0x6e, 0x67, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, - 0x72, 0x73, 0x4a, 0x04, 0x08, 0x03, 0x10, 0x04, 0x4a, 0x04, 0x08, 0x0b, 0x10, 0x0c, 0x22, 0xa4, - 0x01, 0x0a, 0x15, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x57, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, - 0x77, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x3d, 0x0a, 0x06, 0x70, 0x61, 0x72, 0x65, - 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x25, 0xe0, 0x41, 0x02, 0xfa, 0x41, 0x1f, - 0x12, 0x1d, 0x73, 0x74, 0x61, 0x6b, 0x69, 0x6e, 0x67, 0x2e, 0x63, 0x6f, 0x69, 0x6e, 0x62, 0x61, - 0x73, 0x65, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x57, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x52, - 0x06, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x12, 0x4c, 0x0a, 0x08, 0x77, 0x6f, 0x72, 0x6b, 0x66, - 0x6c, 0x6f, 0x77, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2b, 0x2e, 0x63, 0x6f, 0x69, 0x6e, - 0x62, 0x61, 0x73, 0x65, 0x2e, 0x73, 0x74, 0x61, 0x6b, 0x69, 0x6e, 0x67, 0x2e, 0x6f, 0x72, 0x63, - 0x68, 0x65, 0x73, 0x74, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x57, 0x6f, - 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, 0x08, 0x77, 0x6f, 0x72, - 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x22, 0x4f, 0x0a, 0x12, 0x47, 0x65, 0x74, 0x57, 0x6f, 0x72, 0x6b, - 0x66, 0x6c, 0x6f, 0x77, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x39, 0x0a, 0x04, 0x6e, - 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x25, 0xe0, 0x41, 0x02, 0xfa, 0x41, - 0x1f, 0x0a, 0x1d, 0x73, 0x74, 0x61, 0x6b, 0x69, 0x6e, 0x67, 0x2e, 0x63, 0x6f, 0x69, 0x6e, 0x62, - 0x61, 0x73, 0x65, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x57, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, - 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x22, 0xb8, 0x01, 0x0a, 0x14, 0x4c, 0x69, 0x73, 0x74, 0x57, - 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, - 0x3d, 0x0a, 0x06, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, - 0x25, 0xe0, 0x41, 0x02, 0xfa, 0x41, 0x1f, 0x12, 0x1d, 0x73, 0x74, 0x61, 0x6b, 0x69, 0x6e, 0x67, - 0x2e, 0x63, 0x6f, 0x69, 0x6e, 0x62, 0x61, 0x73, 0x65, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x57, 0x6f, - 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x52, 0x06, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x12, 0x1b, - 0x0a, 0x06, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, - 0xe0, 0x41, 0x01, 0x52, 0x06, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x12, 0x20, 0x0a, 0x09, 0x70, - 0x61, 0x67, 0x65, 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x42, 0x03, - 0xe0, 0x41, 0x01, 0x52, 0x08, 0x70, 0x61, 0x67, 0x65, 0x53, 0x69, 0x7a, 0x65, 0x12, 0x22, 0x0a, - 0x0a, 0x70, 0x61, 0x67, 0x65, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, - 0x09, 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, 0x09, 0x70, 0x61, 0x67, 0x65, 0x54, 0x6f, 0x6b, 0x65, - 0x6e, 0x22, 0x8a, 0x01, 0x0a, 0x15, 0x4c, 0x69, 0x73, 0x74, 0x57, 0x6f, 0x72, 0x6b, 0x66, 0x6c, - 0x6f, 0x77, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x49, 0x0a, 0x09, 0x77, - 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2b, + 0x31, 0x2e, 0x57, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x53, 0x74, 0x65, 0x70, 0x42, 0x03, + 0xe0, 0x41, 0x03, 0x52, 0x05, 0x73, 0x74, 0x65, 0x70, 0x73, 0x12, 0x40, 0x0a, 0x0b, 0x63, 0x72, + 0x65, 0x61, 0x74, 0x65, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, + 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x42, 0x03, 0xe0, 0x41, 0x03, + 0x52, 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x40, 0x0a, 0x0b, + 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x08, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, + 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x42, 0x03, 0xe0, + 0x41, 0x03, 0x52, 0x0a, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x44, + 0x0a, 0x0d, 0x63, 0x6f, 0x6d, 0x70, 0x6c, 0x65, 0x74, 0x65, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, + 0x0c, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, + 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, + 0x70, 0x42, 0x03, 0xe0, 0x41, 0x03, 0x52, 0x0c, 0x63, 0x6f, 0x6d, 0x70, 0x6c, 0x65, 0x74, 0x65, + 0x54, 0x69, 0x6d, 0x65, 0x22, 0xf8, 0x01, 0x0a, 0x05, 0x53, 0x74, 0x61, 0x74, 0x65, 0x12, 0x15, + 0x0a, 0x11, 0x53, 0x54, 0x41, 0x54, 0x45, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, + 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x15, 0x0a, 0x11, 0x53, 0x54, 0x41, 0x54, 0x45, 0x5f, 0x49, + 0x4e, 0x5f, 0x50, 0x52, 0x4f, 0x47, 0x52, 0x45, 0x53, 0x53, 0x10, 0x01, 0x12, 0x23, 0x0a, 0x1f, + 0x53, 0x54, 0x41, 0x54, 0x45, 0x5f, 0x57, 0x41, 0x49, 0x54, 0x49, 0x4e, 0x47, 0x5f, 0x46, 0x4f, + 0x52, 0x5f, 0x45, 0x58, 0x54, 0x5f, 0x42, 0x52, 0x4f, 0x41, 0x44, 0x43, 0x41, 0x53, 0x54, 0x10, + 0x09, 0x12, 0x13, 0x0a, 0x0f, 0x53, 0x54, 0x41, 0x54, 0x45, 0x5f, 0x43, 0x4f, 0x4d, 0x50, 0x4c, + 0x45, 0x54, 0x45, 0x44, 0x10, 0x03, 0x12, 0x10, 0x0a, 0x0c, 0x53, 0x54, 0x41, 0x54, 0x45, 0x5f, + 0x46, 0x41, 0x49, 0x4c, 0x45, 0x44, 0x10, 0x04, 0x22, 0x04, 0x08, 0x02, 0x10, 0x02, 0x22, 0x04, + 0x08, 0x05, 0x10, 0x08, 0x2a, 0x19, 0x53, 0x54, 0x41, 0x54, 0x45, 0x5f, 0x57, 0x41, 0x49, 0x54, + 0x49, 0x4e, 0x47, 0x5f, 0x46, 0x4f, 0x52, 0x5f, 0x53, 0x49, 0x47, 0x4e, 0x49, 0x4e, 0x47, 0x2a, + 0x0f, 0x53, 0x54, 0x41, 0x54, 0x45, 0x5f, 0x43, 0x41, 0x4e, 0x43, 0x45, 0x4c, 0x49, 0x4e, 0x47, + 0x2a, 0x0e, 0x53, 0x54, 0x41, 0x54, 0x45, 0x5f, 0x43, 0x41, 0x4e, 0x43, 0x45, 0x4c, 0x45, 0x44, + 0x2a, 0x13, 0x53, 0x54, 0x41, 0x54, 0x45, 0x5f, 0x43, 0x41, 0x4e, 0x43, 0x45, 0x4c, 0x5f, 0x46, + 0x41, 0x49, 0x4c, 0x45, 0x44, 0x2a, 0x18, 0x53, 0x54, 0x41, 0x54, 0x45, 0x5f, 0x46, 0x41, 0x49, + 0x4c, 0x45, 0x44, 0x5f, 0x52, 0x45, 0x46, 0x52, 0x45, 0x53, 0x48, 0x41, 0x42, 0x4c, 0x45, 0x3a, + 0x60, 0xea, 0x41, 0x5d, 0x0a, 0x1d, 0x73, 0x74, 0x61, 0x6b, 0x69, 0x6e, 0x67, 0x2e, 0x63, 0x6f, + 0x69, 0x6e, 0x62, 0x61, 0x73, 0x65, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x57, 0x6f, 0x72, 0x6b, 0x66, + 0x6c, 0x6f, 0x77, 0x12, 0x27, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x7b, 0x70, + 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x7d, 0x2f, 0x77, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, + 0x73, 0x2f, 0x7b, 0x77, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x7d, 0x2a, 0x09, 0x77, 0x6f, + 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x73, 0x32, 0x08, 0x77, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, + 0x77, 0x42, 0x14, 0x0a, 0x12, 0x73, 0x74, 0x61, 0x6b, 0x69, 0x6e, 0x67, 0x5f, 0x70, 0x61, 0x72, + 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x73, 0x4a, 0x04, 0x08, 0x03, 0x10, 0x04, 0x4a, 0x04, 0x08, + 0x0b, 0x10, 0x0c, 0x22, 0xa4, 0x01, 0x0a, 0x15, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x57, 0x6f, + 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x3d, 0x0a, + 0x06, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x25, 0xe0, + 0x41, 0x02, 0xfa, 0x41, 0x1f, 0x12, 0x1d, 0x73, 0x74, 0x61, 0x6b, 0x69, 0x6e, 0x67, 0x2e, 0x63, + 0x6f, 0x69, 0x6e, 0x62, 0x61, 0x73, 0x65, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x57, 0x6f, 0x72, 0x6b, + 0x66, 0x6c, 0x6f, 0x77, 0x52, 0x06, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x12, 0x4c, 0x0a, 0x08, + 0x77, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2b, 0x2e, 0x63, 0x6f, 0x69, 0x6e, 0x62, 0x61, 0x73, 0x65, 0x2e, 0x73, 0x74, 0x61, 0x6b, 0x69, 0x6e, 0x67, 0x2e, 0x6f, 0x72, 0x63, 0x68, 0x65, 0x73, 0x74, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, - 0x76, 0x31, 0x2e, 0x57, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x52, 0x09, 0x77, 0x6f, 0x72, - 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x73, 0x12, 0x26, 0x0a, 0x0f, 0x6e, 0x65, 0x78, 0x74, 0x5f, 0x70, - 0x61, 0x67, 0x65, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x0d, 0x6e, 0x65, 0x78, 0x74, 0x50, 0x61, 0x67, 0x65, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x22, 0x67, - 0x0a, 0x1a, 0x50, 0x65, 0x72, 0x66, 0x6f, 0x72, 0x6d, 0x57, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, - 0x77, 0x53, 0x74, 0x65, 0x70, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x17, 0x0a, 0x04, - 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, - 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x17, 0x0a, 0x04, 0x73, 0x74, 0x65, 0x70, 0x18, 0x02, 0x20, - 0x01, 0x28, 0x05, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, 0x04, 0x73, 0x74, 0x65, 0x70, 0x12, 0x17, - 0x0a, 0x04, 0x64, 0x61, 0x74, 0x61, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, - 0x02, 0x52, 0x04, 0x64, 0x61, 0x74, 0x61, 0x42, 0x58, 0x5a, 0x56, 0x67, 0x69, 0x74, 0x68, 0x75, - 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x63, 0x6f, 0x69, 0x6e, 0x62, 0x61, 0x73, 0x65, 0x2f, 0x73, - 0x74, 0x61, 0x6b, 0x69, 0x6e, 0x67, 0x2d, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x2d, 0x6c, 0x69, - 0x62, 0x72, 0x61, 0x72, 0x79, 0x2d, 0x67, 0x6f, 0x2f, 0x67, 0x65, 0x6e, 0x2f, 0x67, 0x6f, 0x2f, - 0x63, 0x6f, 0x69, 0x6e, 0x62, 0x61, 0x73, 0x65, 0x2f, 0x73, 0x74, 0x61, 0x6b, 0x69, 0x6e, 0x67, - 0x2f, 0x6f, 0x72, 0x63, 0x68, 0x65, 0x73, 0x74, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2f, 0x76, - 0x31, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, + 0x76, 0x31, 0x2e, 0x57, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x42, 0x03, 0xe0, 0x41, 0x02, + 0x52, 0x08, 0x77, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x22, 0x4f, 0x0a, 0x12, 0x47, 0x65, + 0x74, 0x57, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, + 0x12, 0x39, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x25, + 0xe0, 0x41, 0x02, 0xfa, 0x41, 0x1f, 0x0a, 0x1d, 0x73, 0x74, 0x61, 0x6b, 0x69, 0x6e, 0x67, 0x2e, + 0x63, 0x6f, 0x69, 0x6e, 0x62, 0x61, 0x73, 0x65, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x57, 0x6f, 0x72, + 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x22, 0xb8, 0x01, 0x0a, 0x14, + 0x4c, 0x69, 0x73, 0x74, 0x57, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x73, 0x52, 0x65, 0x71, + 0x75, 0x65, 0x73, 0x74, 0x12, 0x3d, 0x0a, 0x06, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x09, 0x42, 0x25, 0xe0, 0x41, 0x02, 0xfa, 0x41, 0x1f, 0x12, 0x1d, 0x73, 0x74, + 0x61, 0x6b, 0x69, 0x6e, 0x67, 0x2e, 0x63, 0x6f, 0x69, 0x6e, 0x62, 0x61, 0x73, 0x65, 0x2e, 0x63, + 0x6f, 0x6d, 0x2f, 0x57, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x52, 0x06, 0x70, 0x61, 0x72, + 0x65, 0x6e, 0x74, 0x12, 0x1b, 0x0a, 0x06, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x18, 0x02, 0x20, + 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, 0x06, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, + 0x12, 0x20, 0x0a, 0x09, 0x70, 0x61, 0x67, 0x65, 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x18, 0x03, 0x20, + 0x01, 0x28, 0x05, 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, 0x08, 0x70, 0x61, 0x67, 0x65, 0x53, 0x69, + 0x7a, 0x65, 0x12, 0x22, 0x0a, 0x0a, 0x70, 0x61, 0x67, 0x65, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, + 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, 0x09, 0x70, 0x61, 0x67, + 0x65, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x22, 0x8a, 0x01, 0x0a, 0x15, 0x4c, 0x69, 0x73, 0x74, 0x57, + 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, + 0x12, 0x49, 0x0a, 0x09, 0x77, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x73, 0x18, 0x01, 0x20, + 0x03, 0x28, 0x0b, 0x32, 0x2b, 0x2e, 0x63, 0x6f, 0x69, 0x6e, 0x62, 0x61, 0x73, 0x65, 0x2e, 0x73, + 0x74, 0x61, 0x6b, 0x69, 0x6e, 0x67, 0x2e, 0x6f, 0x72, 0x63, 0x68, 0x65, 0x73, 0x74, 0x72, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x57, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, + 0x52, 0x09, 0x77, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x73, 0x12, 0x26, 0x0a, 0x0f, 0x6e, + 0x65, 0x78, 0x74, 0x5f, 0x70, 0x61, 0x67, 0x65, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x6e, 0x65, 0x78, 0x74, 0x50, 0x61, 0x67, 0x65, 0x54, 0x6f, + 0x6b, 0x65, 0x6e, 0x22, 0x67, 0x0a, 0x1a, 0x50, 0x65, 0x72, 0x66, 0x6f, 0x72, 0x6d, 0x57, 0x6f, + 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x53, 0x74, 0x65, 0x70, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, + 0x74, 0x12, 0x17, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, + 0x03, 0xe0, 0x41, 0x02, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x17, 0x0a, 0x04, 0x73, 0x74, + 0x65, 0x70, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, 0x04, 0x73, + 0x74, 0x65, 0x70, 0x12, 0x17, 0x0a, 0x04, 0x64, 0x61, 0x74, 0x61, 0x18, 0x03, 0x20, 0x01, 0x28, + 0x09, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, 0x04, 0x64, 0x61, 0x74, 0x61, 0x42, 0x48, 0x5a, 0x46, + 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x62, 0x68, 0x71, 0x2e, 0x6e, 0x65, 0x74, 0x2f, + 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2f, 0x73, 0x74, 0x61, 0x6b, 0x69, 0x6e, 0x67, 0x2f, 0x67, 0x65, + 0x6e, 0x2f, 0x67, 0x6f, 0x2f, 0x63, 0x6f, 0x69, 0x6e, 0x62, 0x61, 0x73, 0x65, 0x2f, 0x73, 0x74, + 0x61, 0x6b, 0x69, 0x6e, 0x67, 0x2f, 0x6f, 0x72, 0x63, 0x68, 0x65, 0x73, 0x74, 0x72, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x2f, 0x76, 0x31, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, } var ( @@ -1289,46 +1457,52 @@ func file_coinbase_staking_orchestration_v1_workflow_proto_rawDescGZIP() []byte return file_coinbase_staking_orchestration_v1_workflow_proto_rawDescData } -var file_coinbase_staking_orchestration_v1_workflow_proto_enumTypes = make([]protoimpl.EnumInfo, 4) -var file_coinbase_staking_orchestration_v1_workflow_proto_msgTypes = make([]protoimpl.MessageInfo, 9) +var file_coinbase_staking_orchestration_v1_workflow_proto_enumTypes = make([]protoimpl.EnumInfo, 5) +var file_coinbase_staking_orchestration_v1_workflow_proto_msgTypes = make([]protoimpl.MessageInfo, 10) var file_coinbase_staking_orchestration_v1_workflow_proto_goTypes = []interface{}{ (TxStepOutput_State)(0), // 0: coinbase.staking.orchestration.v1.TxStepOutput.State (WaitStepOutput_WaitUnit)(0), // 1: coinbase.staking.orchestration.v1.WaitStepOutput.WaitUnit (WaitStepOutput_State)(0), // 2: coinbase.staking.orchestration.v1.WaitStepOutput.State - (Workflow_State)(0), // 3: coinbase.staking.orchestration.v1.Workflow.State - (*TxStepOutput)(nil), // 4: coinbase.staking.orchestration.v1.TxStepOutput - (*WaitStepOutput)(nil), // 5: coinbase.staking.orchestration.v1.WaitStepOutput - (*WorkflowStep)(nil), // 6: coinbase.staking.orchestration.v1.WorkflowStep - (*Workflow)(nil), // 7: coinbase.staking.orchestration.v1.Workflow - (*CreateWorkflowRequest)(nil), // 8: coinbase.staking.orchestration.v1.CreateWorkflowRequest - (*GetWorkflowRequest)(nil), // 9: coinbase.staking.orchestration.v1.GetWorkflowRequest - (*ListWorkflowsRequest)(nil), // 10: coinbase.staking.orchestration.v1.ListWorkflowsRequest - (*ListWorkflowsResponse)(nil), // 11: coinbase.staking.orchestration.v1.ListWorkflowsResponse - (*PerformWorkflowStepRequest)(nil), // 12: coinbase.staking.orchestration.v1.PerformWorkflowStepRequest - (*SolanaStakingParameters)(nil), // 13: coinbase.staking.orchestration.v1.SolanaStakingParameters - (*EthereumKilnStakingParameters)(nil), // 14: coinbase.staking.orchestration.v1.EthereumKilnStakingParameters - (*timestamppb.Timestamp)(nil), // 15: google.protobuf.Timestamp + (ProvisionInfraStepOutput_State)(0), // 3: coinbase.staking.orchestration.v1.ProvisionInfraStepOutput.State + (Workflow_State)(0), // 4: coinbase.staking.orchestration.v1.Workflow.State + (*TxStepOutput)(nil), // 5: coinbase.staking.orchestration.v1.TxStepOutput + (*WaitStepOutput)(nil), // 6: coinbase.staking.orchestration.v1.WaitStepOutput + (*ProvisionInfraStepOutput)(nil), // 7: coinbase.staking.orchestration.v1.ProvisionInfraStepOutput + (*WorkflowStep)(nil), // 8: coinbase.staking.orchestration.v1.WorkflowStep + (*Workflow)(nil), // 9: coinbase.staking.orchestration.v1.Workflow + (*CreateWorkflowRequest)(nil), // 10: coinbase.staking.orchestration.v1.CreateWorkflowRequest + (*GetWorkflowRequest)(nil), // 11: coinbase.staking.orchestration.v1.GetWorkflowRequest + (*ListWorkflowsRequest)(nil), // 12: coinbase.staking.orchestration.v1.ListWorkflowsRequest + (*ListWorkflowsResponse)(nil), // 13: coinbase.staking.orchestration.v1.ListWorkflowsResponse + (*PerformWorkflowStepRequest)(nil), // 14: coinbase.staking.orchestration.v1.PerformWorkflowStepRequest + (*SolanaStakingParameters)(nil), // 15: coinbase.staking.orchestration.v1.SolanaStakingParameters + (*EthereumKilnStakingParameters)(nil), // 16: coinbase.staking.orchestration.v1.EthereumKilnStakingParameters + (*EthereumStakingParameters)(nil), // 17: coinbase.staking.orchestration.v1.EthereumStakingParameters + (*timestamppb.Timestamp)(nil), // 18: google.protobuf.Timestamp } var file_coinbase_staking_orchestration_v1_workflow_proto_depIdxs = []int32{ 0, // 0: coinbase.staking.orchestration.v1.TxStepOutput.state:type_name -> coinbase.staking.orchestration.v1.TxStepOutput.State 1, // 1: coinbase.staking.orchestration.v1.WaitStepOutput.unit:type_name -> coinbase.staking.orchestration.v1.WaitStepOutput.WaitUnit 2, // 2: coinbase.staking.orchestration.v1.WaitStepOutput.state:type_name -> coinbase.staking.orchestration.v1.WaitStepOutput.State - 4, // 3: coinbase.staking.orchestration.v1.WorkflowStep.tx_step_output:type_name -> coinbase.staking.orchestration.v1.TxStepOutput - 5, // 4: coinbase.staking.orchestration.v1.WorkflowStep.wait_step_output:type_name -> coinbase.staking.orchestration.v1.WaitStepOutput - 13, // 5: coinbase.staking.orchestration.v1.Workflow.solana_staking_parameters:type_name -> coinbase.staking.orchestration.v1.SolanaStakingParameters - 14, // 6: coinbase.staking.orchestration.v1.Workflow.ethereum_kiln_staking_parameters:type_name -> coinbase.staking.orchestration.v1.EthereumKilnStakingParameters - 3, // 7: coinbase.staking.orchestration.v1.Workflow.state:type_name -> coinbase.staking.orchestration.v1.Workflow.State - 6, // 8: coinbase.staking.orchestration.v1.Workflow.steps:type_name -> coinbase.staking.orchestration.v1.WorkflowStep - 15, // 9: coinbase.staking.orchestration.v1.Workflow.create_time:type_name -> google.protobuf.Timestamp - 15, // 10: coinbase.staking.orchestration.v1.Workflow.update_time:type_name -> google.protobuf.Timestamp - 15, // 11: coinbase.staking.orchestration.v1.Workflow.complete_time:type_name -> google.protobuf.Timestamp - 7, // 12: coinbase.staking.orchestration.v1.CreateWorkflowRequest.workflow:type_name -> coinbase.staking.orchestration.v1.Workflow - 7, // 13: coinbase.staking.orchestration.v1.ListWorkflowsResponse.workflows:type_name -> coinbase.staking.orchestration.v1.Workflow - 14, // [14:14] is the sub-list for method output_type - 14, // [14:14] is the sub-list for method input_type - 14, // [14:14] is the sub-list for extension type_name - 14, // [14:14] is the sub-list for extension extendee - 0, // [0:14] is the sub-list for field type_name + 3, // 3: coinbase.staking.orchestration.v1.ProvisionInfraStepOutput.state:type_name -> coinbase.staking.orchestration.v1.ProvisionInfraStepOutput.State + 5, // 4: coinbase.staking.orchestration.v1.WorkflowStep.tx_step_output:type_name -> coinbase.staking.orchestration.v1.TxStepOutput + 6, // 5: coinbase.staking.orchestration.v1.WorkflowStep.wait_step_output:type_name -> coinbase.staking.orchestration.v1.WaitStepOutput + 7, // 6: coinbase.staking.orchestration.v1.WorkflowStep.provision_infra_step_output:type_name -> coinbase.staking.orchestration.v1.ProvisionInfraStepOutput + 15, // 7: coinbase.staking.orchestration.v1.Workflow.solana_staking_parameters:type_name -> coinbase.staking.orchestration.v1.SolanaStakingParameters + 16, // 8: coinbase.staking.orchestration.v1.Workflow.ethereum_kiln_staking_parameters:type_name -> coinbase.staking.orchestration.v1.EthereumKilnStakingParameters + 17, // 9: coinbase.staking.orchestration.v1.Workflow.ethereum_staking_parameters:type_name -> coinbase.staking.orchestration.v1.EthereumStakingParameters + 4, // 10: coinbase.staking.orchestration.v1.Workflow.state:type_name -> coinbase.staking.orchestration.v1.Workflow.State + 8, // 11: coinbase.staking.orchestration.v1.Workflow.steps:type_name -> coinbase.staking.orchestration.v1.WorkflowStep + 18, // 12: coinbase.staking.orchestration.v1.Workflow.create_time:type_name -> google.protobuf.Timestamp + 18, // 13: coinbase.staking.orchestration.v1.Workflow.update_time:type_name -> google.protobuf.Timestamp + 18, // 14: coinbase.staking.orchestration.v1.Workflow.complete_time:type_name -> google.protobuf.Timestamp + 9, // 15: coinbase.staking.orchestration.v1.CreateWorkflowRequest.workflow:type_name -> coinbase.staking.orchestration.v1.Workflow + 9, // 16: coinbase.staking.orchestration.v1.ListWorkflowsResponse.workflows:type_name -> coinbase.staking.orchestration.v1.Workflow + 17, // [17:17] is the sub-list for method output_type + 17, // [17:17] is the sub-list for method input_type + 17, // [17:17] is the sub-list for extension type_name + 17, // [17:17] is the sub-list for extension extendee + 0, // [0:17] is the sub-list for field type_name } func init() { file_coinbase_staking_orchestration_v1_workflow_proto_init() } @@ -1336,6 +1510,7 @@ func file_coinbase_staking_orchestration_v1_workflow_proto_init() { if File_coinbase_staking_orchestration_v1_workflow_proto != nil { return } + file_coinbase_staking_orchestration_v1_ethereum_proto_init() file_coinbase_staking_orchestration_v1_ethereum_kiln_proto_init() file_coinbase_staking_orchestration_v1_solana_proto_init() if !protoimpl.UnsafeEnabled { @@ -1364,7 +1539,7 @@ func file_coinbase_staking_orchestration_v1_workflow_proto_init() { } } file_coinbase_staking_orchestration_v1_workflow_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*WorkflowStep); i { + switch v := v.(*ProvisionInfraStepOutput); i { case 0: return &v.state case 1: @@ -1376,7 +1551,7 @@ func file_coinbase_staking_orchestration_v1_workflow_proto_init() { } } file_coinbase_staking_orchestration_v1_workflow_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*Workflow); i { + switch v := v.(*WorkflowStep); i { case 0: return &v.state case 1: @@ -1388,7 +1563,7 @@ func file_coinbase_staking_orchestration_v1_workflow_proto_init() { } } file_coinbase_staking_orchestration_v1_workflow_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*CreateWorkflowRequest); i { + switch v := v.(*Workflow); i { case 0: return &v.state case 1: @@ -1400,7 +1575,7 @@ func file_coinbase_staking_orchestration_v1_workflow_proto_init() { } } file_coinbase_staking_orchestration_v1_workflow_proto_msgTypes[5].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*GetWorkflowRequest); i { + switch v := v.(*CreateWorkflowRequest); i { case 0: return &v.state case 1: @@ -1412,7 +1587,7 @@ func file_coinbase_staking_orchestration_v1_workflow_proto_init() { } } file_coinbase_staking_orchestration_v1_workflow_proto_msgTypes[6].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ListWorkflowsRequest); i { + switch v := v.(*GetWorkflowRequest); i { case 0: return &v.state case 1: @@ -1424,7 +1599,7 @@ func file_coinbase_staking_orchestration_v1_workflow_proto_init() { } } file_coinbase_staking_orchestration_v1_workflow_proto_msgTypes[7].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ListWorkflowsResponse); i { + switch v := v.(*ListWorkflowsRequest); i { case 0: return &v.state case 1: @@ -1436,6 +1611,18 @@ func file_coinbase_staking_orchestration_v1_workflow_proto_init() { } } file_coinbase_staking_orchestration_v1_workflow_proto_msgTypes[8].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*ListWorkflowsResponse); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_coinbase_staking_orchestration_v1_workflow_proto_msgTypes[9].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*PerformWorkflowStepRequest); i { case 0: return &v.state @@ -1448,21 +1635,23 @@ func file_coinbase_staking_orchestration_v1_workflow_proto_init() { } } } - file_coinbase_staking_orchestration_v1_workflow_proto_msgTypes[2].OneofWrappers = []interface{}{ + file_coinbase_staking_orchestration_v1_workflow_proto_msgTypes[3].OneofWrappers = []interface{}{ (*WorkflowStep_TxStepOutput)(nil), (*WorkflowStep_WaitStepOutput)(nil), + (*WorkflowStep_ProvisionInfraStepOutput)(nil), } - file_coinbase_staking_orchestration_v1_workflow_proto_msgTypes[3].OneofWrappers = []interface{}{ + file_coinbase_staking_orchestration_v1_workflow_proto_msgTypes[4].OneofWrappers = []interface{}{ (*Workflow_SolanaStakingParameters)(nil), (*Workflow_EthereumKilnStakingParameters)(nil), + (*Workflow_EthereumStakingParameters)(nil), } type x struct{} out := protoimpl.TypeBuilder{ File: protoimpl.DescBuilder{ GoPackagePath: reflect.TypeOf(x{}).PkgPath(), RawDescriptor: file_coinbase_staking_orchestration_v1_workflow_proto_rawDesc, - NumEnums: 4, - NumMessages: 9, + NumEnums: 5, + NumMessages: 10, NumExtensions: 0, NumServices: 0, }, diff --git a/gen/go/coinbase/staking/rewards/v1/common.pb.go b/gen/go/coinbase/staking/rewards/v1/common.pb.go index ca2c108..6773621 100644 --- a/gen/go/coinbase/staking/rewards/v1/common.pb.go +++ b/gen/go/coinbase/staking/rewards/v1/common.pb.go @@ -119,12 +119,12 @@ var file_coinbase_staking_rewards_v1_common_proto_rawDesc = []byte{ 0x03, 0x52, 0x06, 0x74, 0x69, 0x63, 0x6b, 0x65, 0x72, 0x12, 0x24, 0x0a, 0x0b, 0x72, 0x61, 0x77, 0x5f, 0x6e, 0x75, 0x6d, 0x65, 0x72, 0x69, 0x63, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x03, 0x52, 0x0a, 0x72, 0x61, 0x77, 0x4e, 0x75, 0x6d, 0x65, 0x72, 0x69, 0x63, 0x42, - 0x52, 0x5a, 0x50, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x63, 0x6f, - 0x69, 0x6e, 0x62, 0x61, 0x73, 0x65, 0x2f, 0x73, 0x74, 0x61, 0x6b, 0x69, 0x6e, 0x67, 0x2d, 0x63, - 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x2d, 0x6c, 0x69, 0x62, 0x72, 0x61, 0x72, 0x79, 0x2d, 0x67, 0x6f, - 0x2f, 0x67, 0x65, 0x6e, 0x2f, 0x67, 0x6f, 0x2f, 0x63, 0x6f, 0x69, 0x6e, 0x62, 0x61, 0x73, 0x65, - 0x2f, 0x73, 0x74, 0x61, 0x6b, 0x69, 0x6e, 0x67, 0x2f, 0x72, 0x65, 0x77, 0x61, 0x72, 0x64, 0x73, - 0x2f, 0x76, 0x31, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, + 0x4c, 0x5a, 0x4a, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x62, 0x68, 0x71, 0x2e, 0x6e, + 0x65, 0x74, 0x2f, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2f, 0x72, 0x65, 0x77, 0x61, 0x72, 0x64, 0x73, + 0x2d, 0x72, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x69, 0x6e, 0x67, 0x2f, 0x67, 0x65, 0x6e, 0x2f, 0x67, + 0x6f, 0x2f, 0x63, 0x6f, 0x69, 0x6e, 0x62, 0x61, 0x73, 0x65, 0x2f, 0x73, 0x74, 0x61, 0x6b, 0x69, + 0x6e, 0x67, 0x2f, 0x72, 0x65, 0x77, 0x61, 0x72, 0x64, 0x73, 0x2f, 0x76, 0x31, 0x62, 0x06, 0x70, + 0x72, 0x6f, 0x74, 0x6f, 0x33, } var ( diff --git a/gen/go/coinbase/staking/rewards/v1/protocol.pb.go b/gen/go/coinbase/staking/rewards/v1/protocol.pb.go index 259dcb4..ef842be 100644 --- a/gen/go/coinbase/staking/rewards/v1/protocol.pb.go +++ b/gen/go/coinbase/staking/rewards/v1/protocol.pb.go @@ -88,13 +88,13 @@ var file_coinbase_staking_rewards_v1_protocol_proto_rawDesc = []byte{ 0x67, 0x2e, 0x72, 0x65, 0x77, 0x61, 0x72, 0x64, 0x73, 0x2f, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x12, 0x14, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x73, 0x2f, 0x7b, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x7d, 0x2a, 0x09, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, - 0x6f, 0x6c, 0x73, 0x32, 0x08, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x42, 0x52, 0x5a, - 0x50, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x63, 0x6f, 0x69, 0x6e, - 0x62, 0x61, 0x73, 0x65, 0x2f, 0x73, 0x74, 0x61, 0x6b, 0x69, 0x6e, 0x67, 0x2d, 0x63, 0x6c, 0x69, - 0x65, 0x6e, 0x74, 0x2d, 0x6c, 0x69, 0x62, 0x72, 0x61, 0x72, 0x79, 0x2d, 0x67, 0x6f, 0x2f, 0x67, - 0x65, 0x6e, 0x2f, 0x67, 0x6f, 0x2f, 0x63, 0x6f, 0x69, 0x6e, 0x62, 0x61, 0x73, 0x65, 0x2f, 0x73, - 0x74, 0x61, 0x6b, 0x69, 0x6e, 0x67, 0x2f, 0x72, 0x65, 0x77, 0x61, 0x72, 0x64, 0x73, 0x2f, 0x76, - 0x31, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, + 0x6f, 0x6c, 0x73, 0x32, 0x08, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x42, 0x4c, 0x5a, + 0x4a, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x62, 0x68, 0x71, 0x2e, 0x6e, 0x65, 0x74, + 0x2f, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2f, 0x72, 0x65, 0x77, 0x61, 0x72, 0x64, 0x73, 0x2d, 0x72, + 0x65, 0x70, 0x6f, 0x72, 0x74, 0x69, 0x6e, 0x67, 0x2f, 0x67, 0x65, 0x6e, 0x2f, 0x67, 0x6f, 0x2f, + 0x63, 0x6f, 0x69, 0x6e, 0x62, 0x61, 0x73, 0x65, 0x2f, 0x73, 0x74, 0x61, 0x6b, 0x69, 0x6e, 0x67, + 0x2f, 0x72, 0x65, 0x77, 0x61, 0x72, 0x64, 0x73, 0x2f, 0x76, 0x31, 0x62, 0x06, 0x70, 0x72, 0x6f, + 0x74, 0x6f, 0x33, } var ( diff --git a/gen/go/coinbase/staking/rewards/v1/reward.pb.go b/gen/go/coinbase/staking/rewards/v1/reward.pb.go index 5d0e614..e6d9bf6 100644 --- a/gen/go/coinbase/staking/rewards/v1/reward.pb.go +++ b/gen/go/coinbase/staking/rewards/v1/reward.pb.go @@ -653,13 +653,13 @@ var file_coinbase_staking_rewards_v1_reward_proto_rawDesc = []byte{ 0x74, 0x69, 0x6f, 0x6e, 0x55, 0x6e, 0x69, 0x74, 0x12, 0x20, 0x0a, 0x1c, 0x41, 0x47, 0x47, 0x52, 0x45, 0x47, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x55, 0x4e, 0x49, 0x54, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x09, 0x0a, 0x05, 0x45, 0x50, - 0x4f, 0x43, 0x48, 0x10, 0x01, 0x12, 0x07, 0x0a, 0x03, 0x44, 0x41, 0x59, 0x10, 0x02, 0x42, 0x52, - 0x5a, 0x50, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x63, 0x6f, 0x69, - 0x6e, 0x62, 0x61, 0x73, 0x65, 0x2f, 0x73, 0x74, 0x61, 0x6b, 0x69, 0x6e, 0x67, 0x2d, 0x63, 0x6c, - 0x69, 0x65, 0x6e, 0x74, 0x2d, 0x6c, 0x69, 0x62, 0x72, 0x61, 0x72, 0x79, 0x2d, 0x67, 0x6f, 0x2f, - 0x67, 0x65, 0x6e, 0x2f, 0x67, 0x6f, 0x2f, 0x63, 0x6f, 0x69, 0x6e, 0x62, 0x61, 0x73, 0x65, 0x2f, - 0x73, 0x74, 0x61, 0x6b, 0x69, 0x6e, 0x67, 0x2f, 0x72, 0x65, 0x77, 0x61, 0x72, 0x64, 0x73, 0x2f, - 0x76, 0x31, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, + 0x4f, 0x43, 0x48, 0x10, 0x01, 0x12, 0x07, 0x0a, 0x03, 0x44, 0x41, 0x59, 0x10, 0x02, 0x42, 0x4c, + 0x5a, 0x4a, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x62, 0x68, 0x71, 0x2e, 0x6e, 0x65, + 0x74, 0x2f, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2f, 0x72, 0x65, 0x77, 0x61, 0x72, 0x64, 0x73, 0x2d, + 0x72, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x69, 0x6e, 0x67, 0x2f, 0x67, 0x65, 0x6e, 0x2f, 0x67, 0x6f, + 0x2f, 0x63, 0x6f, 0x69, 0x6e, 0x62, 0x61, 0x73, 0x65, 0x2f, 0x73, 0x74, 0x61, 0x6b, 0x69, 0x6e, + 0x67, 0x2f, 0x72, 0x65, 0x77, 0x61, 0x72, 0x64, 0x73, 0x2f, 0x76, 0x31, 0x62, 0x06, 0x70, 0x72, + 0x6f, 0x74, 0x6f, 0x33, } var ( diff --git a/gen/go/coinbase/staking/rewards/v1/reward_service.pb.go b/gen/go/coinbase/staking/rewards/v1/reward_service.pb.go index 69de992..986e094 100644 --- a/gen/go/coinbase/staking/rewards/v1/reward_service.pb.go +++ b/gen/go/coinbase/staking/rewards/v1/reward_service.pb.go @@ -153,7 +153,7 @@ var file_coinbase_staking_rewards_v1_reward_service_proto_rawDesc = []byte{ 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x73, 0x2f, 0x2a, 0x7d, 0x2f, 0x73, 0x74, 0x61, 0x6b, 0x65, 0x73, 0x1a, 0x1d, 0xca, 0x41, 0x1a, 0x61, 0x70, 0x69, 0x2e, 0x64, 0x65, 0x76, 0x65, 0x6c, 0x6f, 0x70, 0x65, 0x72, 0x2e, 0x63, 0x6f, 0x69, 0x6e, 0x62, 0x61, 0x73, 0x65, 0x2e, 0x63, 0x6f, 0x6d, - 0x42, 0xa7, 0x05, 0x92, 0x41, 0xd1, 0x04, 0x12, 0x5d, 0x0a, 0x0f, 0x52, 0x65, 0x77, 0x61, 0x72, + 0x42, 0xa1, 0x05, 0x92, 0x41, 0xd1, 0x04, 0x12, 0x5d, 0x0a, 0x0f, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, 0x73, 0x20, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x12, 0x46, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x20, 0x74, 0x68, 0x61, 0x74, 0x20, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x73, 0x20, 0x61, 0x63, 0x63, 0x65, 0x73, 0x73, 0x20, 0x74, 0x6f, 0x20, 0x6f, 0x6e, 0x63, 0x68, @@ -190,13 +190,12 @@ var file_coinbase_staking_rewards_v1_reward_service_proto_rawDesc = []byte{ 0x61, 0x6e, 0x63, 0x65, 0x20, 0x61, 0x74, 0x20, 0x61, 0x20, 0x70, 0x61, 0x72, 0x74, 0x69, 0x63, 0x75, 0x6c, 0x61, 0x72, 0x20, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x20, 0x69, 0x6e, 0x20, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x20, 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x20, 0x63, 0x6f, 0x6d, 0x69, - 0x6e, 0x67, 0x20, 0x73, 0x6f, 0x6f, 0x6e, 0x2e, 0x5a, 0x50, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, - 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x63, 0x6f, 0x69, 0x6e, 0x62, 0x61, 0x73, 0x65, 0x2f, 0x73, 0x74, - 0x61, 0x6b, 0x69, 0x6e, 0x67, 0x2d, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x2d, 0x6c, 0x69, 0x62, - 0x72, 0x61, 0x72, 0x79, 0x2d, 0x67, 0x6f, 0x2f, 0x67, 0x65, 0x6e, 0x2f, 0x67, 0x6f, 0x2f, 0x63, - 0x6f, 0x69, 0x6e, 0x62, 0x61, 0x73, 0x65, 0x2f, 0x73, 0x74, 0x61, 0x6b, 0x69, 0x6e, 0x67, 0x2f, - 0x72, 0x65, 0x77, 0x61, 0x72, 0x64, 0x73, 0x2f, 0x76, 0x31, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, - 0x6f, 0x33, + 0x6e, 0x67, 0x20, 0x73, 0x6f, 0x6f, 0x6e, 0x2e, 0x5a, 0x4a, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, + 0x2e, 0x63, 0x62, 0x68, 0x71, 0x2e, 0x6e, 0x65, 0x74, 0x2f, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2f, + 0x72, 0x65, 0x77, 0x61, 0x72, 0x64, 0x73, 0x2d, 0x72, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x69, 0x6e, + 0x67, 0x2f, 0x67, 0x65, 0x6e, 0x2f, 0x67, 0x6f, 0x2f, 0x63, 0x6f, 0x69, 0x6e, 0x62, 0x61, 0x73, + 0x65, 0x2f, 0x73, 0x74, 0x61, 0x6b, 0x69, 0x6e, 0x67, 0x2f, 0x72, 0x65, 0x77, 0x61, 0x72, 0x64, + 0x73, 0x2f, 0x76, 0x31, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, } var file_coinbase_staking_rewards_v1_reward_service_proto_goTypes = []interface{}{ diff --git a/gen/go/coinbase/staking/rewards/v1/stake.pb.go b/gen/go/coinbase/staking/rewards/v1/stake.pb.go index 901bba3..cc3708c 100644 --- a/gen/go/coinbase/staking/rewards/v1/stake.pb.go +++ b/gen/go/coinbase/staking/rewards/v1/stake.pb.go @@ -169,7 +169,7 @@ type Stake struct { BondedStake *AssetAmount `protobuf:"bytes,4,opt,name=bonded_stake,json=bondedStake,proto3" json:"bonded_stake,omitempty"` // The amount of stake that this address receives from other addresses. // For most delegators, this will be 0. - TotalDelegationReceived *AssetAmount `protobuf:"bytes,5,opt,name=total_delegation_received,json=totalDelegationReceived,proto3" json:"total_delegation_received,omitempty"` + TotalDelegationReceived *AssetAmount `protobuf:"bytes,5,opt,name=total_delegation_received,json=totalDelegationReceived,proto3,oneof" json:"total_delegation_received,omitempty"` // The list of individual delegations this address has received from other addresses DelegationsReceived *Stake_Delegation `protobuf:"bytes,6,opt,name=delegations_received,json=delegationsReceived,proto3,oneof" json:"delegations_received,omitempty"` // The amount that this address stakes to another address. @@ -394,6 +394,14 @@ type ListStakesRequest struct { // - `"address='beefKGBWeSpHzYBHZXwp5So7wdQGX6mu4ZHCsH3uTar'"` // - `"address='beefKGBWeSpHzYBHZXwp5So7wdQGX6mu4ZHCsH3uTar' AND evaluation_time >= '2024-01-01T00:00:00Z' AND evaluation_time < '2024-01-15T00:00:00Z'"` Filter string `protobuf:"bytes,4,opt,name=filter,proto3" json:"filter,omitempty"` + // The order in which to sort the results. + // [AIP-132](https://google.aip.dev/132) compliant order_by field. + // The default behavior, if not supplied, is 'evaluation_time desc'. + // Example(s): + // * 'evaluation_time desc', which returns Stakes starting with the most recent. + // * 'evaluation_time asc', which returns Stakes starting with the oldest available. + // * 'evaluation_time', which returns Stakes starting with the oldest available. + OrderBy string `protobuf:"bytes,5,opt,name=order_by,json=orderBy,proto3" json:"order_by,omitempty"` } func (x *ListStakesRequest) Reset() { @@ -456,6 +464,13 @@ func (x *ListStakesRequest) GetFilter() string { return "" } +func (x *ListStakesRequest) GetOrderBy() string { + if x != nil { + return x.OrderBy + } + return "" +} + // The response message for ListStakes. type ListStakesResponse struct { state protoimpl.MessageState @@ -599,7 +614,7 @@ var file_coinbase_staking_rewards_v1_stake_proto_rawDesc = []byte{ 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x6f, 0x72, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1f, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, - 0x8b, 0x09, 0x0a, 0x05, 0x53, 0x74, 0x61, 0x6b, 0x65, 0x12, 0x1d, 0x0a, 0x07, 0x61, 0x64, 0x64, + 0xae, 0x09, 0x0a, 0x05, 0x53, 0x74, 0x61, 0x6b, 0x65, 0x12, 0x1d, 0x0a, 0x07, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x03, 0x52, 0x07, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x12, 0x48, 0x0a, 0x0f, 0x65, 0x76, 0x61, 0x6c, 0x75, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, @@ -611,122 +626,126 @@ var file_coinbase_staking_rewards_v1_stake_proto_rawDesc = []byte{ 0x61, 0x73, 0x65, 0x2e, 0x73, 0x74, 0x61, 0x6b, 0x69, 0x6e, 0x67, 0x2e, 0x72, 0x65, 0x77, 0x61, 0x72, 0x64, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x41, 0x73, 0x73, 0x65, 0x74, 0x41, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x42, 0x03, 0xe0, 0x41, 0x03, 0x52, 0x0b, 0x62, 0x6f, 0x6e, 0x64, 0x65, 0x64, 0x53, - 0x74, 0x61, 0x6b, 0x65, 0x12, 0x69, 0x0a, 0x19, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x5f, 0x64, 0x65, + 0x74, 0x61, 0x6b, 0x65, 0x12, 0x6e, 0x0a, 0x19, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x5f, 0x64, 0x65, 0x6c, 0x65, 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x72, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x63, 0x6f, 0x69, 0x6e, 0x62, 0x61, 0x73, 0x65, 0x2e, 0x73, 0x74, 0x61, 0x6b, 0x69, 0x6e, 0x67, 0x2e, 0x72, 0x65, 0x77, 0x61, 0x72, 0x64, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x41, 0x73, 0x73, 0x65, 0x74, 0x41, 0x6d, 0x6f, 0x75, 0x6e, - 0x74, 0x42, 0x03, 0xe0, 0x41, 0x03, 0x52, 0x17, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x44, 0x65, 0x6c, - 0x65, 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, 0x64, 0x12, - 0x6a, 0x0a, 0x14, 0x64, 0x65, 0x6c, 0x65, 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x5f, 0x72, - 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, 0x64, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2d, 0x2e, - 0x63, 0x6f, 0x69, 0x6e, 0x62, 0x61, 0x73, 0x65, 0x2e, 0x73, 0x74, 0x61, 0x6b, 0x69, 0x6e, 0x67, - 0x2e, 0x72, 0x65, 0x77, 0x61, 0x72, 0x64, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x74, 0x61, 0x6b, - 0x65, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x03, 0xe0, 0x41, - 0x03, 0x48, 0x00, 0x52, 0x13, 0x64, 0x65, 0x6c, 0x65, 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, - 0x52, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, 0x64, 0x88, 0x01, 0x01, 0x12, 0x64, 0x0a, 0x11, 0x64, - 0x65, 0x6c, 0x65, 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x5f, 0x67, 0x69, 0x76, 0x65, 0x6e, - 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2d, 0x2e, 0x63, 0x6f, 0x69, 0x6e, 0x62, 0x61, 0x73, - 0x65, 0x2e, 0x73, 0x74, 0x61, 0x6b, 0x69, 0x6e, 0x67, 0x2e, 0x72, 0x65, 0x77, 0x61, 0x72, 0x64, - 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x74, 0x61, 0x6b, 0x65, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x67, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x03, 0xe0, 0x41, 0x03, 0x48, 0x01, 0x52, 0x10, 0x64, 0x65, - 0x6c, 0x65, 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x47, 0x69, 0x76, 0x65, 0x6e, 0x88, 0x01, - 0x01, 0x12, 0x66, 0x0a, 0x18, 0x72, 0x65, 0x77, 0x61, 0x72, 0x64, 0x5f, 0x72, 0x61, 0x74, 0x65, - 0x5f, 0x63, 0x61, 0x6c, 0x63, 0x75, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x09, 0x20, - 0x03, 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x63, 0x6f, 0x69, 0x6e, 0x62, 0x61, 0x73, 0x65, 0x2e, 0x73, - 0x74, 0x61, 0x6b, 0x69, 0x6e, 0x67, 0x2e, 0x72, 0x65, 0x77, 0x61, 0x72, 0x64, 0x73, 0x2e, 0x76, - 0x31, 0x2e, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, 0x52, 0x61, 0x74, 0x65, 0x42, 0x03, 0xe0, 0x41, - 0x03, 0x52, 0x16, 0x72, 0x65, 0x77, 0x61, 0x72, 0x64, 0x52, 0x61, 0x74, 0x65, 0x43, 0x61, 0x6c, - 0x63, 0x75, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x5c, 0x0a, 0x10, 0x70, 0x61, 0x72, - 0x74, 0x69, 0x63, 0x69, 0x70, 0x61, 0x6e, 0x74, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x0a, 0x20, - 0x01, 0x28, 0x0e, 0x32, 0x2c, 0x2e, 0x63, 0x6f, 0x69, 0x6e, 0x62, 0x61, 0x73, 0x65, 0x2e, 0x73, - 0x74, 0x61, 0x6b, 0x69, 0x6e, 0x67, 0x2e, 0x72, 0x65, 0x77, 0x61, 0x72, 0x64, 0x73, 0x2e, 0x76, - 0x31, 0x2e, 0x50, 0x61, 0x72, 0x74, 0x69, 0x63, 0x69, 0x70, 0x61, 0x6e, 0x74, 0x54, 0x79, 0x70, - 0x65, 0x42, 0x03, 0xe0, 0x41, 0x03, 0x52, 0x0f, 0x70, 0x61, 0x72, 0x74, 0x69, 0x63, 0x69, 0x70, - 0x61, 0x6e, 0x74, 0x54, 0x79, 0x70, 0x65, 0x12, 0x1f, 0x0a, 0x08, 0x70, 0x72, 0x6f, 0x74, 0x6f, - 0x63, 0x6f, 0x6c, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x03, 0x52, 0x08, - 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x12, 0x58, 0x0a, 0x10, 0x75, 0x6e, 0x62, 0x6f, - 0x6e, 0x64, 0x65, 0x64, 0x5f, 0x62, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x18, 0x0d, 0x20, 0x01, - 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x63, 0x6f, 0x69, 0x6e, 0x62, 0x61, 0x73, 0x65, 0x2e, 0x73, 0x74, + 0x74, 0x42, 0x03, 0xe0, 0x41, 0x03, 0x48, 0x00, 0x52, 0x17, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x44, + 0x65, 0x6c, 0x65, 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, + 0x64, 0x88, 0x01, 0x01, 0x12, 0x6a, 0x0a, 0x14, 0x64, 0x65, 0x6c, 0x65, 0x67, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x73, 0x5f, 0x72, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, 0x64, 0x18, 0x06, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x2d, 0x2e, 0x63, 0x6f, 0x69, 0x6e, 0x62, 0x61, 0x73, 0x65, 0x2e, 0x73, 0x74, 0x61, 0x6b, 0x69, 0x6e, 0x67, 0x2e, 0x72, 0x65, 0x77, 0x61, 0x72, 0x64, 0x73, 0x2e, 0x76, 0x31, - 0x2e, 0x41, 0x73, 0x73, 0x65, 0x74, 0x41, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x42, 0x03, 0xe0, 0x41, - 0x03, 0x52, 0x0f, 0x75, 0x6e, 0x62, 0x6f, 0x6e, 0x64, 0x65, 0x64, 0x42, 0x61, 0x6c, 0x61, 0x6e, - 0x63, 0x65, 0x1a, 0x91, 0x01, 0x0a, 0x0a, 0x44, 0x65, 0x6c, 0x65, 0x67, 0x61, 0x74, 0x69, 0x6f, - 0x6e, 0x12, 0x18, 0x0a, 0x07, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x07, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x12, 0x40, 0x0a, 0x06, 0x61, - 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x63, 0x6f, + 0x2e, 0x53, 0x74, 0x61, 0x6b, 0x65, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x67, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x42, 0x03, 0xe0, 0x41, 0x03, 0x48, 0x01, 0x52, 0x13, 0x64, 0x65, 0x6c, 0x65, 0x67, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, 0x64, 0x88, 0x01, 0x01, + 0x12, 0x64, 0x0a, 0x11, 0x64, 0x65, 0x6c, 0x65, 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x5f, + 0x67, 0x69, 0x76, 0x65, 0x6e, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2d, 0x2e, 0x63, 0x6f, 0x69, 0x6e, 0x62, 0x61, 0x73, 0x65, 0x2e, 0x73, 0x74, 0x61, 0x6b, 0x69, 0x6e, 0x67, 0x2e, 0x72, - 0x65, 0x77, 0x61, 0x72, 0x64, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x41, 0x73, 0x73, 0x65, 0x74, 0x41, - 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x52, 0x06, 0x61, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x27, 0x0a, - 0x0f, 0x63, 0x6f, 0x6d, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x5f, 0x72, 0x61, 0x74, 0x65, - 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x63, 0x6f, 0x6d, 0x6d, 0x69, 0x73, 0x73, 0x69, - 0x6f, 0x6e, 0x52, 0x61, 0x74, 0x65, 0x3a, 0x57, 0xea, 0x41, 0x54, 0x0a, 0x1e, 0x63, 0x6f, 0x69, - 0x6e, 0x62, 0x61, 0x73, 0x65, 0x2e, 0x73, 0x74, 0x61, 0x6b, 0x69, 0x6e, 0x67, 0x2e, 0x72, 0x65, - 0x77, 0x61, 0x72, 0x64, 0x73, 0x2f, 0x53, 0x74, 0x61, 0x6b, 0x65, 0x12, 0x23, 0x70, 0x72, 0x6f, - 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x73, 0x2f, 0x7b, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, - 0x7d, 0x2f, 0x73, 0x74, 0x61, 0x6b, 0x65, 0x73, 0x2f, 0x7b, 0x73, 0x74, 0x61, 0x6b, 0x65, 0x7d, - 0x2a, 0x06, 0x73, 0x74, 0x61, 0x6b, 0x65, 0x73, 0x32, 0x05, 0x73, 0x74, 0x61, 0x6b, 0x65, 0x42, - 0x17, 0x0a, 0x15, 0x5f, 0x64, 0x65, 0x6c, 0x65, 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x5f, - 0x72, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, 0x64, 0x42, 0x14, 0x0a, 0x12, 0x5f, 0x64, 0x65, 0x6c, - 0x65, 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x5f, 0x67, 0x69, 0x76, 0x65, 0x6e, 0x4a, 0x04, - 0x08, 0x01, 0x10, 0x02, 0x4a, 0x04, 0x08, 0x08, 0x10, 0x09, 0x4a, 0x04, 0x08, 0x0b, 0x10, 0x0c, - 0x52, 0x02, 0x69, 0x64, 0x52, 0x06, 0x61, 0x63, 0x74, 0x69, 0x76, 0x65, 0x52, 0x0f, 0x70, 0x65, - 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x5f, 0x72, 0x65, 0x77, 0x61, 0x72, 0x64, 0x73, 0x22, 0x80, 0x03, - 0x0a, 0x0a, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, 0x52, 0x61, 0x74, 0x65, 0x12, 0x23, 0x0a, 0x0a, - 0x70, 0x65, 0x72, 0x63, 0x65, 0x6e, 0x74, 0x61, 0x67, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, - 0x42, 0x03, 0xe0, 0x41, 0x03, 0x52, 0x0a, 0x70, 0x65, 0x72, 0x63, 0x65, 0x6e, 0x74, 0x61, 0x67, - 0x65, 0x12, 0x48, 0x0a, 0x0f, 0x63, 0x61, 0x6c, 0x63, 0x75, 0x6c, 0x61, 0x74, 0x65, 0x64, 0x5f, - 0x74, 0x69, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, - 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, - 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x42, 0x03, 0xe0, 0x41, 0x03, 0x52, 0x0e, 0x63, 0x61, 0x6c, - 0x63, 0x75, 0x6c, 0x61, 0x74, 0x65, 0x64, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x6e, 0x0a, 0x12, 0x63, - 0x61, 0x6c, 0x63, 0x75, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6d, 0x65, 0x74, 0x68, 0x6f, - 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x3a, 0x2e, 0x63, 0x6f, 0x69, 0x6e, 0x62, 0x61, + 0x65, 0x77, 0x61, 0x72, 0x64, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x74, 0x61, 0x6b, 0x65, 0x2e, + 0x44, 0x65, 0x6c, 0x65, 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x03, 0xe0, 0x41, 0x03, 0x48, + 0x02, 0x52, 0x10, 0x64, 0x65, 0x6c, 0x65, 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x47, 0x69, + 0x76, 0x65, 0x6e, 0x88, 0x01, 0x01, 0x12, 0x66, 0x0a, 0x18, 0x72, 0x65, 0x77, 0x61, 0x72, 0x64, + 0x5f, 0x72, 0x61, 0x74, 0x65, 0x5f, 0x63, 0x61, 0x6c, 0x63, 0x75, 0x6c, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x73, 0x18, 0x09, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x63, 0x6f, 0x69, 0x6e, 0x62, + 0x61, 0x73, 0x65, 0x2e, 0x73, 0x74, 0x61, 0x6b, 0x69, 0x6e, 0x67, 0x2e, 0x72, 0x65, 0x77, 0x61, + 0x72, 0x64, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, 0x52, 0x61, 0x74, + 0x65, 0x42, 0x03, 0xe0, 0x41, 0x03, 0x52, 0x16, 0x72, 0x65, 0x77, 0x61, 0x72, 0x64, 0x52, 0x61, + 0x74, 0x65, 0x43, 0x61, 0x6c, 0x63, 0x75, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x5c, + 0x0a, 0x10, 0x70, 0x61, 0x72, 0x74, 0x69, 0x63, 0x69, 0x70, 0x61, 0x6e, 0x74, 0x5f, 0x74, 0x79, + 0x70, 0x65, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x2c, 0x2e, 0x63, 0x6f, 0x69, 0x6e, 0x62, + 0x61, 0x73, 0x65, 0x2e, 0x73, 0x74, 0x61, 0x6b, 0x69, 0x6e, 0x67, 0x2e, 0x72, 0x65, 0x77, 0x61, + 0x72, 0x64, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x61, 0x72, 0x74, 0x69, 0x63, 0x69, 0x70, 0x61, + 0x6e, 0x74, 0x54, 0x79, 0x70, 0x65, 0x42, 0x03, 0xe0, 0x41, 0x03, 0x52, 0x0f, 0x70, 0x61, 0x72, + 0x74, 0x69, 0x63, 0x69, 0x70, 0x61, 0x6e, 0x74, 0x54, 0x79, 0x70, 0x65, 0x12, 0x1f, 0x0a, 0x08, + 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, + 0xe0, 0x41, 0x03, 0x52, 0x08, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x12, 0x58, 0x0a, + 0x10, 0x75, 0x6e, 0x62, 0x6f, 0x6e, 0x64, 0x65, 0x64, 0x5f, 0x62, 0x61, 0x6c, 0x61, 0x6e, 0x63, + 0x65, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x63, 0x6f, 0x69, 0x6e, 0x62, 0x61, 0x73, 0x65, 0x2e, 0x73, 0x74, 0x61, 0x6b, 0x69, 0x6e, 0x67, 0x2e, 0x72, 0x65, 0x77, 0x61, 0x72, - 0x64, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, 0x52, 0x61, 0x74, 0x65, - 0x2e, 0x43, 0x61, 0x6c, 0x63, 0x75, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4d, 0x65, 0x74, 0x68, - 0x6f, 0x64, 0x73, 0x42, 0x03, 0xe0, 0x41, 0x03, 0x52, 0x11, 0x63, 0x61, 0x6c, 0x63, 0x75, 0x6c, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x22, 0x92, 0x01, 0x0a, 0x12, - 0x43, 0x61, 0x6c, 0x63, 0x75, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4d, 0x65, 0x74, 0x68, 0x6f, - 0x64, 0x73, 0x12, 0x23, 0x0a, 0x1f, 0x43, 0x41, 0x4c, 0x43, 0x55, 0x4c, 0x41, 0x54, 0x49, 0x4f, - 0x4e, 0x5f, 0x4d, 0x45, 0x54, 0x48, 0x4f, 0x44, 0x53, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, - 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x0f, 0x0a, 0x0b, 0x53, 0x4f, 0x4c, 0x4f, 0x5f, - 0x53, 0x54, 0x41, 0x4b, 0x45, 0x52, 0x10, 0x01, 0x12, 0x11, 0x0a, 0x0d, 0x50, 0x4f, 0x4f, 0x4c, - 0x45, 0x44, 0x5f, 0x53, 0x54, 0x41, 0x4b, 0x45, 0x52, 0x10, 0x02, 0x12, 0x1a, 0x0a, 0x16, 0x45, - 0x50, 0x4f, 0x43, 0x48, 0x5f, 0x41, 0x55, 0x54, 0x4f, 0x5f, 0x43, 0x4f, 0x4d, 0x50, 0x4f, 0x55, - 0x4e, 0x44, 0x49, 0x4e, 0x47, 0x10, 0x03, 0x12, 0x17, 0x0a, 0x13, 0x4e, 0x4f, 0x5f, 0x41, 0x55, - 0x54, 0x4f, 0x5f, 0x43, 0x4f, 0x4d, 0x50, 0x4f, 0x55, 0x4e, 0x44, 0x49, 0x4e, 0x47, 0x10, 0x04, - 0x22, 0xb9, 0x01, 0x0a, 0x11, 0x4c, 0x69, 0x73, 0x74, 0x53, 0x74, 0x61, 0x6b, 0x65, 0x73, 0x52, - 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x41, 0x0a, 0x06, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x29, 0xe0, 0x41, 0x02, 0xfa, 0x41, 0x23, 0x0a, 0x21, - 0x63, 0x6f, 0x69, 0x6e, 0x62, 0x61, 0x73, 0x65, 0x2e, 0x73, 0x74, 0x61, 0x6b, 0x69, 0x6e, 0x67, - 0x2e, 0x72, 0x65, 0x77, 0x61, 0x72, 0x64, 0x73, 0x2f, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, - 0x6c, 0x52, 0x06, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x12, 0x20, 0x0a, 0x09, 0x70, 0x61, 0x67, - 0x65, 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x42, 0x03, 0xe0, 0x41, - 0x01, 0x52, 0x08, 0x70, 0x61, 0x67, 0x65, 0x53, 0x69, 0x7a, 0x65, 0x12, 0x22, 0x0a, 0x0a, 0x70, - 0x61, 0x67, 0x65, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x42, - 0x03, 0xe0, 0x41, 0x01, 0x52, 0x09, 0x70, 0x61, 0x67, 0x65, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x12, - 0x1b, 0x0a, 0x06, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x42, - 0x03, 0xe0, 0x41, 0x01, 0x52, 0x06, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x22, 0x82, 0x01, 0x0a, - 0x12, 0x4c, 0x69, 0x73, 0x74, 0x53, 0x74, 0x61, 0x6b, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, - 0x6e, 0x73, 0x65, 0x12, 0x3f, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x6b, 0x65, 0x73, 0x18, 0x01, 0x20, - 0x03, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x63, 0x6f, 0x69, 0x6e, 0x62, 0x61, 0x73, 0x65, 0x2e, 0x73, - 0x74, 0x61, 0x6b, 0x69, 0x6e, 0x67, 0x2e, 0x72, 0x65, 0x77, 0x61, 0x72, 0x64, 0x73, 0x2e, 0x76, - 0x31, 0x2e, 0x53, 0x74, 0x61, 0x6b, 0x65, 0x42, 0x03, 0xe0, 0x41, 0x03, 0x52, 0x06, 0x73, 0x74, - 0x61, 0x6b, 0x65, 0x73, 0x12, 0x2b, 0x0a, 0x0f, 0x6e, 0x65, 0x78, 0x74, 0x5f, 0x70, 0x61, 0x67, - 0x65, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, - 0x41, 0x03, 0x52, 0x0d, 0x6e, 0x65, 0x78, 0x74, 0x50, 0x61, 0x67, 0x65, 0x54, 0x6f, 0x6b, 0x65, - 0x6e, 0x2a, 0x51, 0x0a, 0x0f, 0x50, 0x61, 0x72, 0x74, 0x69, 0x63, 0x69, 0x70, 0x61, 0x6e, 0x74, - 0x54, 0x79, 0x70, 0x65, 0x12, 0x20, 0x0a, 0x1c, 0x50, 0x41, 0x52, 0x54, 0x49, 0x43, 0x49, 0x50, - 0x41, 0x4e, 0x54, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, - 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x0d, 0x0a, 0x09, 0x44, 0x45, 0x4c, 0x45, 0x47, 0x41, - 0x54, 0x4f, 0x52, 0x10, 0x01, 0x12, 0x0d, 0x0a, 0x09, 0x56, 0x41, 0x4c, 0x49, 0x44, 0x41, 0x54, - 0x4f, 0x52, 0x10, 0x02, 0x42, 0x52, 0x5a, 0x50, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, - 0x6f, 0x6d, 0x2f, 0x63, 0x6f, 0x69, 0x6e, 0x62, 0x61, 0x73, 0x65, 0x2f, 0x73, 0x74, 0x61, 0x6b, - 0x69, 0x6e, 0x67, 0x2d, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x2d, 0x6c, 0x69, 0x62, 0x72, 0x61, - 0x72, 0x79, 0x2d, 0x67, 0x6f, 0x2f, 0x67, 0x65, 0x6e, 0x2f, 0x67, 0x6f, 0x2f, 0x63, 0x6f, 0x69, - 0x6e, 0x62, 0x61, 0x73, 0x65, 0x2f, 0x73, 0x74, 0x61, 0x6b, 0x69, 0x6e, 0x67, 0x2f, 0x72, 0x65, - 0x77, 0x61, 0x72, 0x64, 0x73, 0x2f, 0x76, 0x31, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, + 0x64, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x41, 0x73, 0x73, 0x65, 0x74, 0x41, 0x6d, 0x6f, 0x75, 0x6e, + 0x74, 0x42, 0x03, 0xe0, 0x41, 0x03, 0x52, 0x0f, 0x75, 0x6e, 0x62, 0x6f, 0x6e, 0x64, 0x65, 0x64, + 0x42, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x1a, 0x91, 0x01, 0x0a, 0x0a, 0x44, 0x65, 0x6c, 0x65, + 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x18, 0x0a, 0x07, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, + 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, + 0x12, 0x40, 0x0a, 0x06, 0x61, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x28, 0x2e, 0x63, 0x6f, 0x69, 0x6e, 0x62, 0x61, 0x73, 0x65, 0x2e, 0x73, 0x74, 0x61, 0x6b, + 0x69, 0x6e, 0x67, 0x2e, 0x72, 0x65, 0x77, 0x61, 0x72, 0x64, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x41, + 0x73, 0x73, 0x65, 0x74, 0x41, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x52, 0x06, 0x61, 0x6d, 0x6f, 0x75, + 0x6e, 0x74, 0x12, 0x27, 0x0a, 0x0f, 0x63, 0x6f, 0x6d, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, + 0x5f, 0x72, 0x61, 0x74, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x63, 0x6f, 0x6d, + 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x61, 0x74, 0x65, 0x3a, 0x57, 0xea, 0x41, 0x54, + 0x0a, 0x1e, 0x63, 0x6f, 0x69, 0x6e, 0x62, 0x61, 0x73, 0x65, 0x2e, 0x73, 0x74, 0x61, 0x6b, 0x69, + 0x6e, 0x67, 0x2e, 0x72, 0x65, 0x77, 0x61, 0x72, 0x64, 0x73, 0x2f, 0x53, 0x74, 0x61, 0x6b, 0x65, + 0x12, 0x23, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x73, 0x2f, 0x7b, 0x70, 0x72, 0x6f, + 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x7d, 0x2f, 0x73, 0x74, 0x61, 0x6b, 0x65, 0x73, 0x2f, 0x7b, 0x73, + 0x74, 0x61, 0x6b, 0x65, 0x7d, 0x2a, 0x06, 0x73, 0x74, 0x61, 0x6b, 0x65, 0x73, 0x32, 0x05, 0x73, + 0x74, 0x61, 0x6b, 0x65, 0x42, 0x1c, 0x0a, 0x1a, 0x5f, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x5f, 0x64, + 0x65, 0x6c, 0x65, 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x72, 0x65, 0x63, 0x65, 0x69, 0x76, + 0x65, 0x64, 0x42, 0x17, 0x0a, 0x15, 0x5f, 0x64, 0x65, 0x6c, 0x65, 0x67, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x73, 0x5f, 0x72, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, 0x64, 0x42, 0x14, 0x0a, 0x12, 0x5f, + 0x64, 0x65, 0x6c, 0x65, 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x5f, 0x67, 0x69, 0x76, 0x65, + 0x6e, 0x4a, 0x04, 0x08, 0x01, 0x10, 0x02, 0x4a, 0x04, 0x08, 0x08, 0x10, 0x09, 0x4a, 0x04, 0x08, + 0x0b, 0x10, 0x0c, 0x52, 0x02, 0x69, 0x64, 0x52, 0x06, 0x61, 0x63, 0x74, 0x69, 0x76, 0x65, 0x52, + 0x0f, 0x70, 0x65, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x5f, 0x72, 0x65, 0x77, 0x61, 0x72, 0x64, 0x73, + 0x22, 0x80, 0x03, 0x0a, 0x0a, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, 0x52, 0x61, 0x74, 0x65, 0x12, + 0x23, 0x0a, 0x0a, 0x70, 0x65, 0x72, 0x63, 0x65, 0x6e, 0x74, 0x61, 0x67, 0x65, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x03, 0x52, 0x0a, 0x70, 0x65, 0x72, 0x63, 0x65, 0x6e, + 0x74, 0x61, 0x67, 0x65, 0x12, 0x48, 0x0a, 0x0f, 0x63, 0x61, 0x6c, 0x63, 0x75, 0x6c, 0x61, 0x74, + 0x65, 0x64, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, + 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, + 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x42, 0x03, 0xe0, 0x41, 0x03, 0x52, 0x0e, + 0x63, 0x61, 0x6c, 0x63, 0x75, 0x6c, 0x61, 0x74, 0x65, 0x64, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x6e, + 0x0a, 0x12, 0x63, 0x61, 0x6c, 0x63, 0x75, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6d, 0x65, + 0x74, 0x68, 0x6f, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x3a, 0x2e, 0x63, 0x6f, 0x69, + 0x6e, 0x62, 0x61, 0x73, 0x65, 0x2e, 0x73, 0x74, 0x61, 0x6b, 0x69, 0x6e, 0x67, 0x2e, 0x72, 0x65, + 0x77, 0x61, 0x72, 0x64, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, 0x52, + 0x61, 0x74, 0x65, 0x2e, 0x43, 0x61, 0x6c, 0x63, 0x75, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4d, + 0x65, 0x74, 0x68, 0x6f, 0x64, 0x73, 0x42, 0x03, 0xe0, 0x41, 0x03, 0x52, 0x11, 0x63, 0x61, 0x6c, + 0x63, 0x75, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x22, 0x92, + 0x01, 0x0a, 0x12, 0x43, 0x61, 0x6c, 0x63, 0x75, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4d, 0x65, + 0x74, 0x68, 0x6f, 0x64, 0x73, 0x12, 0x23, 0x0a, 0x1f, 0x43, 0x41, 0x4c, 0x43, 0x55, 0x4c, 0x41, + 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x4d, 0x45, 0x54, 0x48, 0x4f, 0x44, 0x53, 0x5f, 0x55, 0x4e, 0x53, + 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x0f, 0x0a, 0x0b, 0x53, 0x4f, + 0x4c, 0x4f, 0x5f, 0x53, 0x54, 0x41, 0x4b, 0x45, 0x52, 0x10, 0x01, 0x12, 0x11, 0x0a, 0x0d, 0x50, + 0x4f, 0x4f, 0x4c, 0x45, 0x44, 0x5f, 0x53, 0x54, 0x41, 0x4b, 0x45, 0x52, 0x10, 0x02, 0x12, 0x1a, + 0x0a, 0x16, 0x45, 0x50, 0x4f, 0x43, 0x48, 0x5f, 0x41, 0x55, 0x54, 0x4f, 0x5f, 0x43, 0x4f, 0x4d, + 0x50, 0x4f, 0x55, 0x4e, 0x44, 0x49, 0x4e, 0x47, 0x10, 0x03, 0x12, 0x17, 0x0a, 0x13, 0x4e, 0x4f, + 0x5f, 0x41, 0x55, 0x54, 0x4f, 0x5f, 0x43, 0x4f, 0x4d, 0x50, 0x4f, 0x55, 0x4e, 0x44, 0x49, 0x4e, + 0x47, 0x10, 0x04, 0x22, 0xd9, 0x01, 0x0a, 0x11, 0x4c, 0x69, 0x73, 0x74, 0x53, 0x74, 0x61, 0x6b, + 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x41, 0x0a, 0x06, 0x70, 0x61, 0x72, + 0x65, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x29, 0xe0, 0x41, 0x02, 0xfa, 0x41, + 0x23, 0x0a, 0x21, 0x63, 0x6f, 0x69, 0x6e, 0x62, 0x61, 0x73, 0x65, 0x2e, 0x73, 0x74, 0x61, 0x6b, + 0x69, 0x6e, 0x67, 0x2e, 0x72, 0x65, 0x77, 0x61, 0x72, 0x64, 0x73, 0x2f, 0x50, 0x72, 0x6f, 0x74, + 0x6f, 0x63, 0x6f, 0x6c, 0x52, 0x06, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x12, 0x20, 0x0a, 0x09, + 0x70, 0x61, 0x67, 0x65, 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x42, + 0x03, 0xe0, 0x41, 0x01, 0x52, 0x08, 0x70, 0x61, 0x67, 0x65, 0x53, 0x69, 0x7a, 0x65, 0x12, 0x22, + 0x0a, 0x0a, 0x70, 0x61, 0x67, 0x65, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x03, 0x20, 0x01, + 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, 0x09, 0x70, 0x61, 0x67, 0x65, 0x54, 0x6f, 0x6b, + 0x65, 0x6e, 0x12, 0x1b, 0x0a, 0x06, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x18, 0x04, 0x20, 0x01, + 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, 0x06, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x12, + 0x1e, 0x0a, 0x08, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x5f, 0x62, 0x79, 0x18, 0x05, 0x20, 0x01, 0x28, + 0x09, 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, 0x07, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x42, 0x79, 0x22, + 0x82, 0x01, 0x0a, 0x12, 0x4c, 0x69, 0x73, 0x74, 0x53, 0x74, 0x61, 0x6b, 0x65, 0x73, 0x52, 0x65, + 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x3f, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x6b, 0x65, 0x73, + 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x63, 0x6f, 0x69, 0x6e, 0x62, 0x61, 0x73, + 0x65, 0x2e, 0x73, 0x74, 0x61, 0x6b, 0x69, 0x6e, 0x67, 0x2e, 0x72, 0x65, 0x77, 0x61, 0x72, 0x64, + 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x74, 0x61, 0x6b, 0x65, 0x42, 0x03, 0xe0, 0x41, 0x03, 0x52, + 0x06, 0x73, 0x74, 0x61, 0x6b, 0x65, 0x73, 0x12, 0x2b, 0x0a, 0x0f, 0x6e, 0x65, 0x78, 0x74, 0x5f, + 0x70, 0x61, 0x67, 0x65, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, + 0x42, 0x03, 0xe0, 0x41, 0x03, 0x52, 0x0d, 0x6e, 0x65, 0x78, 0x74, 0x50, 0x61, 0x67, 0x65, 0x54, + 0x6f, 0x6b, 0x65, 0x6e, 0x2a, 0x51, 0x0a, 0x0f, 0x50, 0x61, 0x72, 0x74, 0x69, 0x63, 0x69, 0x70, + 0x61, 0x6e, 0x74, 0x54, 0x79, 0x70, 0x65, 0x12, 0x20, 0x0a, 0x1c, 0x50, 0x41, 0x52, 0x54, 0x49, + 0x43, 0x49, 0x50, 0x41, 0x4e, 0x54, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x55, 0x4e, 0x53, 0x50, + 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x0d, 0x0a, 0x09, 0x44, 0x45, 0x4c, + 0x45, 0x47, 0x41, 0x54, 0x4f, 0x52, 0x10, 0x01, 0x12, 0x0d, 0x0a, 0x09, 0x56, 0x41, 0x4c, 0x49, + 0x44, 0x41, 0x54, 0x4f, 0x52, 0x10, 0x02, 0x42, 0x4c, 0x5a, 0x4a, 0x67, 0x69, 0x74, 0x68, 0x75, + 0x62, 0x2e, 0x63, 0x62, 0x68, 0x71, 0x2e, 0x6e, 0x65, 0x74, 0x2f, 0x63, 0x6c, 0x6f, 0x75, 0x64, + 0x2f, 0x72, 0x65, 0x77, 0x61, 0x72, 0x64, 0x73, 0x2d, 0x72, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x69, + 0x6e, 0x67, 0x2f, 0x67, 0x65, 0x6e, 0x2f, 0x67, 0x6f, 0x2f, 0x63, 0x6f, 0x69, 0x6e, 0x62, 0x61, + 0x73, 0x65, 0x2f, 0x73, 0x74, 0x61, 0x6b, 0x69, 0x6e, 0x67, 0x2f, 0x72, 0x65, 0x77, 0x61, 0x72, + 0x64, 0x73, 0x2f, 0x76, 0x31, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, } var ( diff --git a/protos/buf.lock b/protos/buf.lock deleted file mode 100644 index 4ffc27f..0000000 --- a/protos/buf.lock +++ /dev/null @@ -1,13 +0,0 @@ -# Generated by buf. DO NOT EDIT. -version: v1 -deps: - - remote: buf.build - owner: googleapis - repository: googleapis - commit: 7a6bc1e3207144b38e9066861e1de0ff - digest: shake256:d646836485c34192401253703c4e7ce899c826fceec060bf4b2a62c4749bd9976dc960833e134a1f814725e1ffd60b1bb3cf0335a7e99ef0e8cec34b070ffb66 - - remote: buf.build - owner: grpc-ecosystem - repository: grpc-gateway - commit: 3f42134f4c564983838425bc43c7a65f - digest: shake256:3d11d4c0fe5e05fda0131afefbce233940e27f0c31c5d4e385686aea58ccd30f72053f61af432fa83f1fc11cda57f5f18ca3da26a29064f73c5a0d076bba8d92 diff --git a/protos/buf.yaml b/protos/buf.yaml deleted file mode 100644 index 33390cd..0000000 --- a/protos/buf.yaml +++ /dev/null @@ -1,13 +0,0 @@ -version: v1 -breaking: - use: - - PACKAGE -lint: - use: - - DEFAULT - except: - - PACKAGE_VERSION_SUFFIX -deps: - # adding well known types by google - - buf.build/googleapis/googleapis - - buf.build/grpc-ecosystem/grpc-gateway diff --git a/protos/coinbase/staking/orchestration/v1/action.proto b/protos/coinbase/staking/orchestration/v1/action.proto deleted file mode 100644 index 7b4cf37..0000000 --- a/protos/coinbase/staking/orchestration/v1/action.proto +++ /dev/null @@ -1,41 +0,0 @@ -syntax = "proto3"; - -package coinbase.staking.orchestration.v1; - -option go_package = "github.com/coinbase/staking-client-library-go/gen/go/coinbase/staking/orchestration/v1"; - -import "google/api/field_behavior.proto"; -import "google/api/resource.proto"; - -// An Action resource represents an action you may take on a network (e.g. stake, unstake). -message Action { - option (google.api.resource) = { - type: "staking.coinbase.com/Action" - pattern: "protocols/{protocol}/networks/{network}/actions/{action}" - singular: "action" - plural: "actions" - }; - - // The resource name of the Action. - // Format: protocols/{protocolName}/networks/{networkName}/actions/{actionName} - // Ex: protocols/ethereum_kiln/networks/holesky/validators/stake - string name = 1; -} - -// The request message for ListActions. -message ListActionsRequest { - // The resource name of the parent that owns - // the collection of actions. - // Format: protocols/{protocol}/networks/{network} - string parent = 1 [ - (google.api.field_behavior) = REQUIRED, - (google.api.resource_reference) = { - child_type: "staking.coinbase.com/Action" - }]; -} - -// The response message for ListActions. -message ListActionsResponse { - // The list of actions. - repeated Action actions = 1; -} diff --git a/protos/coinbase/staking/orchestration/v1/api.proto b/protos/coinbase/staking/orchestration/v1/api.proto deleted file mode 100644 index 44b8bc3..0000000 --- a/protos/coinbase/staking/orchestration/v1/api.proto +++ /dev/null @@ -1,327 +0,0 @@ -syntax = "proto3"; - -package coinbase.staking.orchestration.v1; - -option go_package = "github.com/coinbase/staking-client-library-go/gen/go/coinbase/staking/orchestration/v1"; - -import "google/api/annotations.proto"; -import "google/api/client.proto"; -import "protoc-gen-openapiv2/options/annotations.proto"; - -import "coinbase/staking/orchestration/v1/protocol.proto"; -import "coinbase/staking/orchestration/v1/network.proto"; -import "coinbase/staking/orchestration/v1/action.proto"; -import "coinbase/staking/orchestration/v1/staking_target.proto"; -import "coinbase/staking/orchestration/v1/workflow.proto"; -import "coinbase/staking/orchestration/v1/staking_context.proto"; - -option (grpc.gateway.protoc_gen_openapiv2.options.openapiv2_swagger) = { - host: "api.developer.coinbase.com"; - base_path: "/staking"; - schemes: HTTPS - consumes: "application/json"; - produces: "application/json"; - info: { - title: "Orchestration Service"; - description: "Service that can power non-custodial staking experiences for your users."; - version: "v1"; - }; - responses: { - key: "400"; - value: { - description: "The request attempted has invalid parameters"; - schema: { - json_schema: { - ref: "#/definitions/rpcStatus"; - }; - }; - }; - }; - responses: { - key: "401"; - value: { - description: "Returned if authentication information is invalid"; - schema: { - json_schema: { - ref: "#/definitions/rpcStatus"; - }; - }; - }; - }; - responses: { - key: "403"; - value: { - description: "Returned when a user does not have permission to the resource."; - schema: { - json_schema: { - ref: "#/definitions/rpcStatus"; - }; - }; - }; - }; - responses: { - key: "404"; - value: { - description: "Returned when a resource is not found."; - schema: { - json_schema: { - ref: "#/definitions/rpcStatus"; - }; - }; - }; - }; - responses: { - key: "429"; - value: { - description: "Returned when a resource limit has been reached."; - schema: { - json_schema: { - ref: "#/definitions/rpcStatus"; - }; - }; - }; - }; - responses: { - key: "500"; - value: { - description: "Returned when an internal server error happens."; - schema: { - json_schema: { - ref: "#/definitions/rpcStatus"; - }; - }; - }; - }; - tags: [ - { - name: "Protocol"; - description: "Protocols details"; - }, - { - name: "Network"; - description: "Networks details"; - }, - { - name: "Action"; - description: "Actions details"; - }, - { - name: "StakingTarget"; - description: "Staking targets details"; - }, - { - name: "StakingContext"; - description: "Staking context details"; - }, - { - name: "Workflow"; - description: "Workflow management details"; - } - ]; -}; - -// StakingService manages staking related resources such as protocols, networks, validators and workflows. -service StakingService { - option (google.api.default_host) = "api.developer.coinbase.com"; - - // List supported protocols. - rpc ListProtocols(ListProtocolsRequest) returns (ListProtocolsResponse) { - option (google.api.http) = { - get: "/v1/protocols" - }; - - option (google.api.method_signature) = ""; - - option (grpc.gateway.protoc_gen_openapiv2.options.openapiv2_operation) = { - summary: "List supported protocols"; - description: "List supported protocols"; - operation_id: "listProtocols"; - tags: "Protocol"; - responses: { - key: "200" - value: { - description: "OK"; - } - } - }; - - }; - - // List supported staking networks for a given protocol. - rpc ListNetworks(ListNetworksRequest) returns (ListNetworksResponse) { - option (google.api.http) = { - get: "/v1/{parent=protocols/*}/networks" - }; - - option (google.api.method_signature) = "parent"; - - option (grpc.gateway.protoc_gen_openapiv2.options.openapiv2_operation) = { - summary: "List supported networks"; - description: "List supported networks"; - operation_id: "listNetworks"; - tags: "Network"; - responses: { - key: "200" - value: { - description: "OK"; - } - } - }; - - }; - - // List supported staking targets for a given protocol and network. - rpc ListStakingTargets(ListStakingTargetsRequest) returns (ListStakingTargetsResponse) { - option (google.api.http) = { - get: "/v1/{parent=protocols/*/networks/*}/stakingTargets" - }; - - option (google.api.method_signature) = "parent"; - - option (grpc.gateway.protoc_gen_openapiv2.options.openapiv2_operation) = { - summary: "List supported staking targets"; - description: "List supported staking targets"; - operation_id: "listStakingTargets"; - tags: "StakingTarget"; - responses: { - key: "200" - value: { - description: "OK"; - } - } - }; - - }; - - // List supported actions for a given protocol and network. - rpc ListActions(ListActionsRequest) returns (ListActionsResponse) { - option (google.api.http) = { - get: "/v1/{parent=protocols/*/networks/*}/actions" - }; - - option (google.api.method_signature) = "parent"; - - option (grpc.gateway.protoc_gen_openapiv2.options.openapiv2_operation) = { - summary: "List supported actions"; - description: "List supported actions"; - operation_id: "listActions"; - tags: "Action"; - responses: { - key: "200" - value: { - description: "OK"; - } - } - }; - - }; - - // Create a workflow to perform an action. - rpc CreateWorkflow(CreateWorkflowRequest) returns (Workflow) { - option (google.api.method_signature) = "parent,workflow"; - - option (google.api.http) = { - post: "/v1/{parent=projects/*}/workflows" - body: "workflow" - }; - - option (grpc.gateway.protoc_gen_openapiv2.options.openapiv2_operation) = { - summary: "Create workflow"; - operation_id: "createWorkflow"; - tags: "Workflow"; - responses: { - key: "200" - value: { - description: "OK"; - } - } - }; - - }; - - // Get the current state of an active workflow. - rpc GetWorkflow(GetWorkflowRequest) returns (Workflow) { - option (google.api.http) = { - get: "/v1/{name=projects/*/workflows/*}" - }; - - option (google.api.method_signature) = "name"; - - option (grpc.gateway.protoc_gen_openapiv2.options.openapiv2_operation) = { - summary: "Get workflow"; - operation_id: "getWorkflow"; - tags: "Workflow"; - responses: { - key: "200" - value: { - description: "OK"; - } - } - }; - - }; - - // List all workflows in a project. - rpc ListWorkflows(ListWorkflowsRequest) returns (ListWorkflowsResponse) { - option (google.api.http) = { - get: "/v1/{parent=projects/*}/workflows" - }; - - option (google.api.method_signature) = "parent"; - - option (grpc.gateway.protoc_gen_openapiv2.options.openapiv2_operation) = { - summary: "List supported workflows"; - operation_id: "listWorkflows"; - tags: "Workflow"; - responses: { - key: "200" - value: { - description: "OK"; - } - } - }; - - }; - - // Perform the next step in a workflow. - rpc PerformWorkflowStep(PerformWorkflowStepRequest) returns (Workflow) { - option (google.api.http) = { - post: "/v1/{name=projects/*/workflows/*}/step" - body: "*" - }; - - option (grpc.gateway.protoc_gen_openapiv2.options.openapiv2_operation) = { - summary: "Perform the next step in a workflow"; - description: "Perform the next step in a workflow"; - operation_id: "updateWorkflow"; - tags: "Workflow"; - responses: { - key: "200" - value: { - description: "OK"; - } - } - }; - - }; - - // View Staking context information given a specific network address. - rpc ViewStakingContext(ViewStakingContextRequest) returns (ViewStakingContextResponse) { - option (google.api.http) = { - get: "/v1/viewStakingContext:view" - }; - - option (grpc.gateway.protoc_gen_openapiv2.options.openapiv2_operation) = { - summary: "Returns point-in-time context of staking data for an address"; - description: "Returns point-in-time context of staking data for an address"; - operation_id: "ViewStakingContext"; - tags: "StakingContext"; - responses: { - key: "200" - value: { - description: "OK"; - } - } - }; - }; -} diff --git a/protos/coinbase/staking/orchestration/v1/common.proto b/protos/coinbase/staking/orchestration/v1/common.proto deleted file mode 100644 index 474dffa..0000000 --- a/protos/coinbase/staking/orchestration/v1/common.proto +++ /dev/null @@ -1,17 +0,0 @@ -syntax = "proto3"; - -package coinbase.staking.orchestration.v1; - -option go_package = "github.com/coinbase/staking-client-library-go/gen/go/coinbase/staking/orchestration/v1"; - -import "protoc-gen-openapiv2/options/annotations.proto"; - -// The amount of a token you wish to perform an action -// with. -message Amount { - // The total value of the token. - string value = 1; - - // The name of the token. - string currency = 2 [(grpc.gateway.protoc_gen_openapiv2.options.openapiv2_field) = {description: "The currency of the token"}]; -} diff --git a/protos/coinbase/staking/orchestration/v1/ethereum_kiln.proto b/protos/coinbase/staking/orchestration/v1/ethereum_kiln.proto deleted file mode 100644 index bc9cbdd..0000000 --- a/protos/coinbase/staking/orchestration/v1/ethereum_kiln.proto +++ /dev/null @@ -1,113 +0,0 @@ -syntax = "proto3"; - -package coinbase.staking.orchestration.v1; - -import "coinbase/staking/orchestration/v1/common.proto"; -import "protoc-gen-openapiv2/options/annotations.proto"; -import "google/api/field_behavior.proto"; - -option go_package = "github.com/coinbase/staking-client-library-go/gen/go/coinbase/staking/orchestration/v1"; - -// The parameters required for the stake action on Ethereum Kiln. -message EthereumKilnStakeParameters { - option (grpc.gateway.protoc_gen_openapiv2.options.openapiv2_schema) = { - json_schema: {title: "EthereumKiln: Stake Parameters"} - }; - - // The address you wish to stake from. - string staker_address = 1 [(google.api.field_behavior) = REQUIRED]; - - // The address of the integrator contract. - string integrator_contract_address = 2 [(google.api.field_behavior) = REQUIRED]; - - // The amount of Ethereum to stake in wei. - Amount amount = 3 [(google.api.field_behavior) = REQUIRED]; -} - -// The parameters required for the unstake action on Ethereum Kiln. -message EthereumKilnUnstakeParameters { - option (grpc.gateway.protoc_gen_openapiv2.options.openapiv2_schema) = { - json_schema: {title: "EthereumKiln: Unstake Parameters"} - }; - - // The address you wish to unstake from. - string staker_address = 1 [(google.api.field_behavior) = REQUIRED]; - - // The address of the integrator contract. - string integrator_contract_address = 2 [(google.api.field_behavior) = REQUIRED]; - - // The amount of Ethereum to unstake in wei. - Amount amount = 3 [(google.api.field_behavior) = REQUIRED]; -} - -// The parameters required for the claim stake action on Ethereum Kiln. -message EthereumKilnClaimStakeParameters { - option (grpc.gateway.protoc_gen_openapiv2.options.openapiv2_schema) = { - json_schema: {title: "EthereumKiln: Claim Stake Parameters"} - }; - - // The address you wish to claim stake for. - string staker_address = 1 [(google.api.field_behavior) = REQUIRED]; - - // The address of the integrator contract - string integrator_contract_address = 2 [(google.api.field_behavior) = REQUIRED]; -} - -// The parameters needed for staking on Ethereum via Kiln. -message EthereumKilnStakingParameters { - option (grpc.gateway.protoc_gen_openapiv2.options.openapiv2_schema) = { - json_schema: {title: "EthereumKiln: Staking Parameters"} - }; - - reserved 3; // reserved for EthereumKilnClaimRewardsParameters filed. - - oneof parameters { - // The parameters for stake action on Ethereum Kiln. - EthereumKilnStakeParameters stake_parameters = 1; - // The parameters for unstake action on Ethereum Kiln. - EthereumKilnUnstakeParameters unstake_parameters = 2; - // The parameters for claim stake action on Ethereum Kiln. - EthereumKilnClaimStakeParameters claim_stake_parameters = 4; - } -} - -// The protocol specific parameters required for fetching a staking context. -message EthereumKilnStakingContextParameters { - option (grpc.gateway.protoc_gen_openapiv2.options.openapiv2_schema) = { - json_schema: {title: "EthereumKiln: Staking Context Parameters"} - }; - - // Integrator contract address. - string integrator_contract_address = 1; -} - -// The protocol specific details for an Ethereum Kiln staking context. -message EthereumKilnStakingContextDetails { - option (grpc.gateway.protoc_gen_openapiv2.options.openapiv2_schema) = { - json_schema: {title: "EthereumKiln: Staking context details"} - }; - - // The Ethereum balance of the address. - // This can be used to gate the stake action to make sure the requested stake amount - // is less than ethereum_balance. - Amount ethereum_balance = 1; - - // The number of integrator shares owned by the address. - Amount integrator_share_balance = 2; - - // The total Ethereum you can exchange for your integrator shares. - // This can be used to gate the unstake action to make sure the requested unstake amount - // is less than integrator_share_underlying_balance - Amount integrator_share_underlying_balance = 3; - - // The total amount of Ethereum you can redeem for all non-claimed vPool shares. - // This along with the condition total_shares_pending_exit == fulfillable_share_count - // can be used to gate the claim_stake action. - Amount total_exitable_eth = 4; - - // The number of vPool shares are eligible to receive now or at a later point in time. - Amount total_shares_pending_exit = 5; - - // The number of vPool shares you are able to claim now. - Amount fulfillable_share_count = 6; -} diff --git a/protos/coinbase/staking/orchestration/v1/network.proto b/protos/coinbase/staking/orchestration/v1/network.proto deleted file mode 100644 index 87f61a3..0000000 --- a/protos/coinbase/staking/orchestration/v1/network.proto +++ /dev/null @@ -1,43 +0,0 @@ -syntax = "proto3"; - -package coinbase.staking.orchestration.v1; - -option go_package = "github.com/coinbase/staking-client-library-go/gen/go/coinbase/staking/orchestration/v1"; - -import "google/api/field_behavior.proto"; -import "google/api/resource.proto"; - -// A Network resource represents a blockchain network e.g. mainnet, testnet, etc. -message Network { - option (google.api.resource) = { - type: "staking.coinbase.com/Network" - pattern: "protocols/{protocol}/networks/{network}" - singular: "network" - plural: "networks" - }; - - // The resource name of the Network. - // Format: protocols/{protocolName}/networks/{networkName} - // Ex: protocols/ethereum_kiln/networks/holesky - string name = 1; - - reserved 2; // reserved for IsMainnet, represented if the network is the mainnet network for the given protocol. -} - -// The request message for ListNetworks. -message ListNetworksRequest { - // The resource name of the parent that owns - // the collection of networks. - // Format: protocols/{protocol} - string parent = 1 [ - (google.api.field_behavior) = REQUIRED, - (google.api.resource_reference) = { - child_type: "staking.coinbase.com/Network" - }]; -} - -// The response message for ListNetworks. -message ListNetworksResponse { - // The list of networks. - repeated Network networks = 1; -} diff --git a/protos/coinbase/staking/orchestration/v1/protocol.proto b/protos/coinbase/staking/orchestration/v1/protocol.proto deleted file mode 100644 index 06510f9..0000000 --- a/protos/coinbase/staking/orchestration/v1/protocol.proto +++ /dev/null @@ -1,31 +0,0 @@ -syntax = "proto3"; - -package coinbase.staking.orchestration.v1; - -option go_package = "github.com/coinbase/staking-client-library-go/gen/go/coinbase/staking/orchestration/v1"; - -import "google/api/resource.proto"; - -// A Protocol resource (e.g. ethereum_kiln, solana etc.). -message Protocol { - option (google.api.resource) = { - type: "staking.coinbase.com/Protocol" - pattern: "protocols/{protocol}" - singular: "protocol" - plural: "protocols" - }; - - // The resource name of the Protocol. - // Format: protocols/{protocolName} - // Ex: protocols/ethereum_kiln - string name = 1; -} - -// The request message for ListProtocols. -message ListProtocolsRequest { } - -// The response message for ListProtocols. -message ListProtocolsResponse { - // The list of protocols. - repeated Protocol protocols = 1; -} diff --git a/protos/coinbase/staking/orchestration/v1/solana.proto b/protos/coinbase/staking/orchestration/v1/solana.proto deleted file mode 100644 index abc9b72..0000000 --- a/protos/coinbase/staking/orchestration/v1/solana.proto +++ /dev/null @@ -1,168 +0,0 @@ -syntax = "proto3"; - -package coinbase.staking.orchestration.v1; - -import "coinbase/staking/orchestration/v1/common.proto"; -import "google/api/field_behavior.proto"; -import "protoc-gen-openapiv2/options/annotations.proto"; - -option go_package = "github.com/coinbase/staking-client-library-go/gen/go/coinbase/staking/orchestration/v1"; - -// A prioritization fee that can be added to a Solana transaction. -message PriorityFee { - // The maximum number of compute units a transaction is allowed to consume. - int64 compute_unit_limit = 1; - - // The price to pay per compute unit. - int64 unit_price = 2; -} - -// The parameters required to perform a stake operation on Solana. -message SolanaStakeParameters { - option (grpc.gateway.protoc_gen_openapiv2.options.openapiv2_schema) = { - json_schema: {title: "Solana: Stake Parameters"} - }; - - // The address where the funds are coming from to stake. - string wallet_address = 1; - - // The address of the validator. - string validator_address = 2; - - // The amount of Solana to stake in lamports. (1 lamport = 0.000000001 SOL) - Amount amount = 3; - - // The option to set a priority fee for the transaction. - PriorityFee priority_fee = 4; -} - -// The parameters required to perform a unstake operation on Solana. -message SolanaUnstakeParameters { - option (grpc.gateway.protoc_gen_openapiv2.options.openapiv2_schema) = { - json_schema: {title: "Solana: Unstake Parameters"} - }; - - // The address which is the signing authority to unstake. - string wallet_address = 1; - - // The address of the stake account to unstake from. - string stake_account_address = 2; - - // The amount of Solana to unstake in lamports. (1 lamport = 0.000000001 SOL) - Amount amount = 3; - - // The option to set a priority fee for the transaction. - PriorityFee priority_fee = 4; -} - -// The parameters required to perform a claim stake operation on Solana. -message SolanaClaimStakeParameters { - option (grpc.gateway.protoc_gen_openapiv2.options.openapiv2_schema) = { - json_schema: {title: "Solana: Claim Stake Parameters"} - }; - - // The address which is the signing authority to claim stake. - string wallet_address = 1; - - // The address of the stake account to claim stake from. - string stake_account_address = 2; - - // The option to set a priority fee for the transaction. - PriorityFee priority_fee = 3; -} - -// The protocol specific parameters required for fetching a staking context. -message SolanaStakingContextParameters { - option (grpc.gateway.protoc_gen_openapiv2.options.openapiv2_schema) = { - json_schema: {title: "Solana: Staking Context Parameters"} - }; -} - -// The protocol specific details for a Solana staking context. -message SolanaStakingContextDetails { - option (grpc.gateway.protoc_gen_openapiv2.options.openapiv2_schema) = { - json_schema: {title: "Solana: Staking Context Details"} - }; - - // The total balance of the main wallet address (system account). - // Used to check the balance for any future staking or transaction to send. - Amount balance = 1; - - // The current epoch that the Solana blockchain is in. - // Used as a frame of reference for future stake activations and deactivations. - int64 current_epoch = 2; - - // How much of the epoch has passed as a percentage. - // Used to inform how much time is left before a stake is activated or deactivated. - string epoch_completion_percentage = 3; - - // The list of staking accounts that are linked to the main wallet address (system account). - // Used to check for statuses and balances of all stake accounts related to the main wallet address that - // they're linked to. - repeated StakeAccount stake_accounts = 4; -} - -// The balance information for a stake account. -message StakeAccount { - // The address of the stake account. - // Used to hold the staked funds transferred over from the main wallet. - string address = 1; - - // The bonded balance in lamports on the stake account (rent is not included in bonded amount). - // Used to check the amount that is currently staked. - Amount bonded_stake = 2; - - // The rent amount for the stake account in lamports. - // Used to highlight the amount used as the rent to maintain the address on the Solana blockchain. - Amount rent_reserve = 3; - - // The total balance on the address in lamports. - // Used to check the total balance for the stake account. - Amount balance = 4; - - // Represents the different states a stake account balance can have. - // Used to check to see if stake is actively earning rewards or ready to be withdrawn. - enum BalanceState { - // The balance is not known. - BALANCE_STATE_UNSPECIFIED = 0; - - // The balance is not actively staking. - BALANCE_STATE_INACTIVE = 1; - - // The balance is in a warm up period and will activate in the next epoch. - BALANCE_STATE_ACTIVATING = 2; - - // The balance is actively staking and earning rewards. - BALANCE_STATE_ACTIVE = 3; - - // The balance is in a cool down period and will be deactivated in the next epoch. - BALANCE_STATE_DEACTIVATING = 4; - } - - // The balance state of the stake account. - // Used to show what state the currently staked funds are in. - BalanceState balance_state = 5 [(google.api.field_behavior) = OUTPUT_ONLY]; - - // The validator (vote account) that the stake account is assigned to stake to. - // Used to show where the staked funds are staked to. - string validator = 6; -} - -// The parameters needed for staking on Solana. -message SolanaStakingParameters { - option (grpc.gateway.protoc_gen_openapiv2.options.openapiv2_schema) = { - json_schema: {title: "Solana: Staking Parameters"} - }; - - reserved 1 to 6; - reserved "create_stake_parameters", "delegate_stake_parameters", "deactivate_stake_parameters", "withdraw_stake_parameters", "split_stake_parameters", "merge_stake_parameters"; - - oneof parameters { - // The parameters for stake action on Solana. - SolanaStakeParameters stake_parameters = 7; - // The parameters for unstake action on Solana. - SolanaUnstakeParameters unstake_parameters = 8; - // The parameters for claim stake action on Solana. - SolanaClaimStakeParameters claim_stake_parameters = 9; - } -} diff --git a/protos/coinbase/staking/orchestration/v1/staking_context.proto b/protos/coinbase/staking/orchestration/v1/staking_context.proto deleted file mode 100644 index e1fcf10..0000000 --- a/protos/coinbase/staking/orchestration/v1/staking_context.proto +++ /dev/null @@ -1,45 +0,0 @@ -syntax = "proto3"; - -package coinbase.staking.orchestration.v1; - -option go_package = "github.com/coinbase/staking-client-library-go/gen/go/coinbase/staking/orchestration/v1"; - -import "google/api/field_behavior.proto"; -import "coinbase/staking/orchestration/v1/ethereum_kiln.proto"; -import "coinbase/staking/orchestration/v1/solana.proto"; - -// The request message for the ViewStakingContext request. -message ViewStakingContextRequest { - // The address to fetch staking context for. - string address = 1 [(google.api.field_behavior) = REQUIRED]; - - // The network to fetch staking context for. - string network = 2 [(google.api.field_behavior) = REQUIRED]; - - // The protocol specific parameters needed to fetch a staking context. - oneof staking_context_parameters { - - // EthereumKiln staking context parameters. - EthereumKilnStakingContextParameters ethereum_kiln_staking_context_parameters = 3 [(google.api.field_behavior) = REQUIRED]; - - // Solana staking context parameters. - SolanaStakingContextParameters solana_staking_context_parameters = 4 [(google.api.field_behavior) = REQUIRED]; - - } -} - -// The response message for the ViewStakingContext request. -message ViewStakingContextResponse { - // The address you are getting a staking context for. - string address = 1 [(google.api.field_behavior) = REQUIRED]; - - // The protocol specific details of the staking context. - oneof staking_context_details { - - // EthereumKiln staking context details. - EthereumKilnStakingContextDetails ethereum_kiln_staking_context_details = 2 [(google.api.field_behavior) = REQUIRED]; - - // Solana staking context details. - SolanaStakingContextDetails solana_staking_context_details = 3 [(google.api.field_behavior) = REQUIRED]; - } -} diff --git a/protos/coinbase/staking/orchestration/v1/staking_target.proto b/protos/coinbase/staking/orchestration/v1/staking_target.proto deleted file mode 100644 index a85bd04..0000000 --- a/protos/coinbase/staking/orchestration/v1/staking_target.proto +++ /dev/null @@ -1,97 +0,0 @@ -syntax = "proto3"; - -package coinbase.staking.orchestration.v1; - -option go_package = "github.com/coinbase/staking-client-library-go/gen/go/coinbase/staking/orchestration/v1"; - -import "google/api/field_behavior.proto"; -import "google/api/resource.proto"; - -// A Validator resource represents an active validator for the given protocol network. -message Validator { - option (google.api.resource) = { - type: "staking.coinbase.com/Validator" - pattern: "protocols/{protocol}/networks/{network}/stakingTargets/{validator}" - singular: "validator" - plural: "validators" - }; - - // The resource name of the Validator. - // Format: protocols/{protocolName}/networks/{networkName}/stakingTargets/{validatorName} - // Ex: protocols/solana/networks/testnet/stakingTargets/GkqYQysEGmuL6V2AJoNnWZUz2ZBGWhzQXsJiXm2CLKAN - string name = 1; - - // The public address of the validator. - string address = 2; - - // The rate of commission for the validator - float commission_rate = 3; -} - -// A Contract resource, which represents an active contract -// for the given protocol network which you can submit an action -// to. -message Contract { - option (google.api.resource) = { - type: "staking.coinbase.com/Contract" - pattern: "protocols/{protocol}/networks/{network}/stakingTargets/{contract}" - singular: "contract" - plural: "contracts" - }; - - // The resource name of the Contract Address. - // Format: protocols/{protocolName}/networks/{networkName}/stakingTargets/{contractName} - // Ex: protocols/ethereum_kiln/networks/holesky/stakingTargets/0xA55416de5DE61A0AC1aa8970a280E04388B1dE4b - string name = 1; - - // The contract address you may submit actions to. - string address = 2; -} - -// A Staking Target represents a destination that you perform an action on related to staking. -message StakingTarget { - - oneof staking_targets { - // A validator to stake to. - Validator validator = 1; - - // A contract to send a staking action to. - Contract contract = 2; - } -} - -// The request message for ListStakingTargets. -message ListStakingTargetsRequest { - // The resource name of the parent that owns - // the collection of staking targets. - // Format: protocols/{protocol}/networks/{network} - string parent = 1 [ - (google.api.field_behavior) = REQUIRED, - (google.api.resource_reference) = { - child_type: "staking.coinbase.com/StakingTarget" - }]; - - // The maximum number of staking targets to return. The service may - // return fewer than this value. - // - // If unspecified, 100 staking targets will be returned. - // The maximum value is 1000; values over 1000 will be floored to 1000. - int32 page_size = 2 [(google.api.field_behavior) = OPTIONAL]; - - // A page token as part of the response of a previous call. - // Provide this to retrieve the next page. - // - // When paginating, all other parameters must match the previous - // request to list resources. - string page_token = 3 [(google.api.field_behavior) = OPTIONAL]; -} - -// The response message for ListStakingTargets. -message ListStakingTargetsResponse { - // The list of staking targets. - repeated StakingTarget staking_targets = 1; - - // A token which can be provided as `page_token` to retrieve the next page. - // If this field is omitted, there are no additional pages. - string next_page_token = 2; -} diff --git a/protos/coinbase/staking/orchestration/v1/workflow.proto b/protos/coinbase/staking/orchestration/v1/workflow.proto deleted file mode 100644 index 4a4ce73..0000000 --- a/protos/coinbase/staking/orchestration/v1/workflow.proto +++ /dev/null @@ -1,274 +0,0 @@ -syntax = "proto3"; - -package coinbase.staking.orchestration.v1; - -import "coinbase/staking/orchestration/v1/ethereum_kiln.proto"; -import "coinbase/staking/orchestration/v1/solana.proto"; -import "google/api/field_behavior.proto"; -import "google/api/resource.proto"; -import "google/protobuf/timestamp.proto"; -import "protoc-gen-openapiv2/options/annotations.proto"; - -option go_package = "github.com/coinbase/staking-client-library-go/gen/go/coinbase/staking/orchestration/v1"; - -// The details of a transaction being constructed and broadcasted to the network. -message TxStepOutput { - // The unsigned transaction which was signed in order to be broadcasted. - string unsigned_tx = 1 [(google.api.field_behavior) = OUTPUT_ONLY]; - - // The signed transaction which was asked to be broadcasted. - string signed_tx = 2 [(google.api.field_behavior) = OUTPUT_ONLY]; - - // The hash of the broadcasted transaction. - string tx_hash = 3 [(google.api.field_behavior) = OUTPUT_ONLY]; - - // State defines an enumeration of states for a staking transaction. - enum State { - reserved 3, 11 to 15; - reserved "STATE_PENDING_SIGNING", "STATE_CANCELING", "STATE_CANCELED", "STATE_CANCEL_FAILED", "STATE_FAILED_REFRESHABLE", "STATE_REFRESHING"; - - // Unspecified transaction state, this is for backwards compatibility. - STATE_UNSPECIFIED = 0; - // Tx has not yet been constructed in the backend. - STATE_NOT_CONSTRUCTED = 1; - // Tx construction is over in the backend. - STATE_CONSTRUCTED = 2; - // Tx is waiting to be externally broadcasted by the customer. - STATE_PENDING_EXT_BROADCAST = 16; - // Tx has been signed and returned to the backend. - STATE_SIGNED = 4; - // Tx is being broadcasted to the network. - STATE_BROADCASTING = 5; - // Tx is waiting for confirmation. - STATE_CONFIRMING = 6; - // Tx has been confirmed to be included in a block. - STATE_CONFIRMED = 7; - // Tx has been finalized. - STATE_FINALIZED = 8; - // Tx construction or broadcasting failed. - STATE_FAILED = 9; - // Tx has been successfully executed. - STATE_SUCCESS = 10; - } - - // The state of the transaction step. - State state = 4 [(google.api.field_behavior) = OUTPUT_ONLY]; - - // The error message if the transaction step failed. - string error_message = 5 [(google.api.field_behavior) = OUTPUT_ONLY]; -} - -// The output details of a step where we wait for some kind of on-chain activity to finish like reaching a certain checkpoint, epoch or block. -message WaitStepOutput { - // The beginning of wait period. - int64 start = 1 [(google.api.field_behavior) = OUTPUT_ONLY]; - - // The current wait progress. - int64 current = 2 [(google.api.field_behavior) = OUTPUT_ONLY]; - - // The target wait end point. - int64 target = 3 [(google.api.field_behavior) = OUTPUT_ONLY]; - - // The unit of wait time. - enum WaitUnit { - // Unspecified wait time. - WAIT_UNIT_UNSPECIFIED = 0; - // Wait time measured in seconds. - WAIT_UNIT_SECONDS = 1; - // Wait time measured in blocks. - WAIT_UNIT_BLOCKS = 2; - // Wait time measured in epochs. - WAIT_UNIT_EPOCHS = 3; - // Wait time measured in checkpoints. - WAIT_UNIT_CHECKPOINTS = 4; - } - - // The wait unit (like checkpoint, block, epoch etc). - WaitUnit unit = 4 [(google.api.field_behavior) = OUTPUT_ONLY]; - - // WaitStepState defines an enumeration of states for a wait step. - enum State { - // Unspecified wait step state. - STATE_UNSPECIFIED = 0; - // Wait step has not started. - STATE_NOT_STARTED = 1; - // Wait step is in-progress. - STATE_IN_PROGRESS = 2; - // Wait step completed. - STATE_COMPLETED = 3; - } - - // The state of the wait step. - State state = 5 [(google.api.field_behavior) = OUTPUT_ONLY]; -} - -// The information for a step in the workflow. -message WorkflowStep { - option (grpc.gateway.protoc_gen_openapiv2.options.openapiv2_schema) = { - json_schema: {title: "The information for a step in the workflow"} - }; - - // The human readable name of the step. - string name = 1 [(google.api.field_behavior) = OUTPUT_ONLY]; - - // The output of the current step. It can be of tx or wait type. - oneof output { - // The tx step output (e.g. transaction metadata such as unsigned tx, signed tx etc). - TxStepOutput tx_step_output = 2 [(google.api.field_behavior) = OUTPUT_ONLY]; - - // The waiting details for any kind like how many checkpoints away for unbonding etc. - WaitStepOutput wait_step_output = 3 [(google.api.field_behavior) = OUTPUT_ONLY]; - } -} - -// A Workflow resource. -message Workflow { - option (google.api.resource) = { - type: "staking.coinbase.com/Workflow" - pattern: "projects/{project}/workflows/{workflow}" - singular: "workflow" - plural: "workflows" - }; - - // The resource name of the workflow. - // Format: projects/{projectUUID}/workflows/{workflowUUID} - // Ex: projects/ 123e4567-e89b-12d3-a456-426614174000/workflows/123e4567-e89b-12d3-a456-426614174000 - string name = 1 [(google.api.field_behavior) = OUTPUT_ONLY]; - - // The resource name of the action being - // performed. - // Format: protocols/{protocol}/networks/{network}/actions/{action} - string action = 2 [(google.api.field_behavior) = REQUIRED]; - - reserved 3; - - // The parameters of the action to take. - oneof staking_parameters { - // Solana staking parameters. - SolanaStakingParameters solana_staking_parameters = 9 [(google.api.field_behavior) = REQUIRED]; - // EthereumKiln staking parameters. - EthereumKilnStakingParameters ethereum_kiln_staking_parameters = 10 [(google.api.field_behavior) = REQUIRED]; - } - - // The state of a workflow - enum State { - // Example flows: - // A workflow leading to a successful completion. - // IN_PROGRESS -> WAITING_FOR_EXT_BROADCAST -> IN_PROGRESS -> COMPLETED - // A workflow leading to a failure. - // IN_PROGRESS -> WAITING_FOR_EXT_BROADCAST -> IN_PROGRESS -> FAILED - - reserved 2, 5 to 8; - reserved "STATE_WAITING_FOR_SIGNING", "STATE_CANCELING", "STATE_CANCELED", "STATE_CANCEL_FAILED", "STATE_FAILED_REFRESHABLE"; - - // Unspecified workflow state, this is for backwards compatibility. - STATE_UNSPECIFIED = 0; - // In Progress represents a workflow that is currently in progress. - STATE_IN_PROGRESS = 1; - // Waiting for external broadcast represents the workflow is waiting for the customer to broadcast a tx and return its corresponding tx hash. - STATE_WAITING_FOR_EXT_BROADCAST = 9; - // Completed represents the workflow has completed. - STATE_COMPLETED = 3; - // Failed represents the workflow has failed. - STATE_FAILED = 4; - } - - // The current state of the workflow. - State state = 4 [(google.api.field_behavior) = OUTPUT_ONLY]; - - // The index of the current step. - int32 current_step_id = 5 [(google.api.field_behavior) = OUTPUT_ONLY]; - - // The list of steps for this workflow. - repeated WorkflowStep steps = 6 [(google.api.field_behavior) = OUTPUT_ONLY]; - - // The timestamp the workflow was created. - google.protobuf.Timestamp create_time = 7 [(google.api.field_behavior) = OUTPUT_ONLY]; - - // The timestamp the workflow was last updated. - google.protobuf.Timestamp update_time = 8 [(google.api.field_behavior) = OUTPUT_ONLY]; - - reserved 11; // We no longer support broadcasting txs for customers via the skip_broadcast=false path. - - // The timestamp the workflow completed. - google.protobuf.Timestamp complete_time = 12 [(google.api.field_behavior) = OUTPUT_ONLY]; -} - -// The request message for CreateWorkflow. -message CreateWorkflowRequest { - // The resource name of the parent that owns - // the workflow. - // Format: projects/{project} - string parent = 1 [ - (google.api.field_behavior) = REQUIRED, - (google.api.resource_reference) = {child_type: "staking.coinbase.com/Workflow"} - ]; - - // The workflow to create. - Workflow workflow = 2 [(google.api.field_behavior) = REQUIRED]; -} - -// The message for GetWorkflow. -message GetWorkflowRequest { - // The resource name of the workflow. - // Format: projects/{project}/workflows/{workflow} - string name = 1 [ - (google.api.field_behavior) = REQUIRED, - (google.api.resource_reference) = {type: "staking.coinbase.com/Workflow"} - ]; -} - -// The message for ListWorkflows. -message ListWorkflowsRequest { - // The resource name of the parent that owns - // the collection of networks. - // Format: projects/{project} - string parent = 1 [ - (google.api.field_behavior) = REQUIRED, - (google.api.resource_reference) = {child_type: "staking.coinbase.com/Workflow"} - ]; - - // [AIP-160](https://google.aip.dev/160) filter - // Supported fields: - // - string action: "stake", "unstake" - // - string protocol: "ethereum_kiln" - // - string network: "holesky", "mainnet" - string filter = 2 [(google.api.field_behavior) = OPTIONAL]; - - // The maximum number of workflows to return. The service may - // return fewer than this value. - // - // If unspecified, 100 workflows will be returned. - // The maximum value is 1000; values over 1000 will be floored to 1000. - int32 page_size = 3 [(google.api.field_behavior) = OPTIONAL]; - - // A page token as part of the response of a previous call. - // Provide this to retrieve the next page. - // - // When paginating, all other parameters must match the previous - // request to list resources. - string page_token = 4 [(google.api.field_behavior) = OPTIONAL]; -} - -// The response message for ListWorkflows. -message ListWorkflowsResponse { - // The list of workflows. - repeated Workflow workflows = 1; - - // A token which can be provided as `page_token` to retrieve the next page. - // If this field is omitted, there are no additional pages. - string next_page_token = 2; -} - -// The request message for PerformWorkflowStep. -message PerformWorkflowStepRequest { - // The resource name of the workflow. - // Format: projects/{project}/workflows/{workflow} - string name = 1 [(google.api.field_behavior) = REQUIRED]; - - // The index of the step to be performed. - int32 step = 2 [(google.api.field_behavior) = REQUIRED]; - - // Transaction metadata. This is either the signed transaction or transaction hash depending on the workflow's broadcast method. - string data = 3 [(google.api.field_behavior) = REQUIRED]; -} diff --git a/protos/coinbase/staking/rewards/v1/common.proto b/protos/coinbase/staking/rewards/v1/common.proto deleted file mode 100644 index 747c411..0000000 --- a/protos/coinbase/staking/rewards/v1/common.proto +++ /dev/null @@ -1,26 +0,0 @@ -syntax = "proto3"; - -package coinbase.staking.rewards.v1; - -import "google/api/field_behavior.proto"; - -option go_package = "github.com/coinbase/staking-client-library-go/gen/go/coinbase/staking/rewards/v1"; - -// Amount encapsulation for a given asset. -message AssetAmount { - // The amount of the asset in the most common denomination. - // Ex: ETH (converted from gwei) - // Ex: USD (converted from fractional pennies) - string amount = 1 [(google.api.field_behavior) = OUTPUT_ONLY]; - - // The number of decimals needed to convert from the raw numeric value to the most - // common denomination. - int64 exp = 2 [(google.api.field_behavior) = OUTPUT_ONLY]; - - // The ticker of this asset (ex: USD, ETH, SOL). - string ticker = 3 [(google.api.field_behavior) = OUTPUT_ONLY]; - - // The raw, unadulterated numeric value. - // Ex: Wei (in Ethereum) and Lamports (in Solana). - string raw_numeric = 4 [(google.api.field_behavior) = OUTPUT_ONLY]; -} \ No newline at end of file diff --git a/protos/coinbase/staking/rewards/v1/protocol.proto b/protos/coinbase/staking/rewards/v1/protocol.proto deleted file mode 100644 index df80145..0000000 --- a/protos/coinbase/staking/rewards/v1/protocol.proto +++ /dev/null @@ -1,21 +0,0 @@ -syntax = "proto3"; - -package coinbase.staking.rewards.v1; - -import "google/api/field_behavior.proto"; -import "google/api/resource.proto"; - -option go_package = "github.com/coinbase/staking-client-library-go/gen/go/coinbase/staking/rewards/v1"; - -// A resource for a protocol. -message Protocol { - option (google.api.resource) = { - type: "coinbase.staking.rewards/Protocol" - pattern: "protocols/{protocol}" - singular: "protocol" - plural: "protocols" - }; - - // Name of the protocol (eg. ethereum, solana, cosmos, etc.). - string name = 1 [(google.api.field_behavior) = OUTPUT_ONLY]; -} diff --git a/protos/coinbase/staking/rewards/v1/reward.proto b/protos/coinbase/staking/rewards/v1/reward.proto deleted file mode 100644 index fce2ce1..0000000 --- a/protos/coinbase/staking/rewards/v1/reward.proto +++ /dev/null @@ -1,164 +0,0 @@ -syntax = "proto3"; - -package coinbase.staking.rewards.v1; - -import "coinbase/staking/rewards/v1/common.proto"; -import "coinbase/staking/rewards/v1/stake.proto"; -import "google/api/field_behavior.proto"; -import "google/api/resource.proto"; -import "google/protobuf/timestamp.proto"; - -option go_package = "github.com/coinbase/staking-client-library-go/gen/go/coinbase/staking/rewards/v1"; - -// Rewards earned within a particular period of time. -// (-- api-linter: core::0123::resource-name-field=disabled -// aip.dev/not-precedent: Not including a 'name' field till our data sources support a unique identifier --) -message Reward { - option (google.api.resource) = { - type: "coinbase.staking.rewards/Reward" - pattern: "protocols/{protocol}/rewards/{reward}" - singular: "reward" - plural: "rewards" - }; - - // The address that earned this reward. - string address = 2 [(google.api.field_behavior) = OUTPUT_ONLY]; - - reserved 3; - reserved "period"; - - // The period identifier of this reward aggregation. ex: epoch number, date. - oneof period_identifier { - // A unique identifier for the consensus-cycle of the blockchain. - int64 epoch = 13 [(google.api.field_behavior) = OUTPUT_ONLY]; - // The date of the reward in format 'YYYY-MM-DD' in UTC. - // (-- api-linter: core::0142::time-field-type=disabled False positive. This isn't a timestamp, but a YYYY-MM-DD field --) - string date = 14 [(google.api.field_behavior) = OUTPUT_ONLY]; - } - - // The unit of time that the reward events were rolled up by. - // Can be either "epoch" or "daily". - AggregationUnit aggregation_unit = 4 [(google.api.field_behavior) = OUTPUT_ONLY]; - - // The starting time of this reward period. Returned when querying by epoch. - // Timestamps are in UTC, conforming to the RFC-3339 spec (e.g. 2024-11-13T19:38:36Z). - // Field currently unavailable. Coming soon. - google.protobuf.Timestamp period_start_time = 5 [(google.api.field_behavior) = OUTPUT_ONLY]; - - // The ending time of this reward period. Returned when querying by epoch. - // Timestamps are in UTC, conforming to the RFC-3339 spec (e.g. 2024-11-13T19:38:36Z). - google.protobuf.Timestamp period_end_time = 6 [(google.api.field_behavior) = OUTPUT_ONLY]; - - // The amount earned in this time period in the native unit of the protocol. - AssetAmount total_earned_native_unit = 7 [(google.api.field_behavior) = OUTPUT_ONLY]; - - // The amount earned in this time period in USD. Calculated by getting each individual reward of this - // time period and summing the USD value of each individual component. USD value is calculate at - // the time each component was earned. - repeated USDValue total_earned_usd = 8 [(google.api.field_behavior) = OUTPUT_ONLY]; - - // A snapshot of the staking balance the end of this period. - // Field currently unavailable. Coming soon. - Stake ending_balance = 9 [(google.api.field_behavior) = OUTPUT_ONLY]; - - // The protocol on which this reward was earned. - string protocol = 11 [(google.api.field_behavior) = OUTPUT_ONLY]; -} - -// Information regarding the USD value of a reward, with necessary context and metadata. -message USDValue { - // The source of the USD price conversion. Could be internal to Coinbase, and external source, or any other source. - Source source = 1 [(google.api.field_behavior) = OUTPUT_ONLY]; - - // The source of the USD price conversion. - enum Source { - // The USD value source is unknown or unspecified. - SOURCE_UNSPECIFIED = 0; - // The USD value source is the Coinbase exchange. - COINBASE_EXCHANGE = 1; - } - - // The timestamp at which the USD value was sourced to convert the value into USD. - // This value is as close to the time the reward was earned as possible. - // Timestamps are in UTC, conforming to the RFC-3339 spec (e.g. 2024-11-13T19:38:36Z). - google.protobuf.Timestamp conversion_time = 2 [(google.api.field_behavior) = OUTPUT_ONLY]; - - // The USD value of the reward at the conversion time. - AssetAmount amount = 3 [(google.api.field_behavior) = OUTPUT_ONLY]; - - // The price of the native unit at the conversion time. - string conversion_price = 4 [(google.api.field_behavior) = OUTPUT_ONLY]; -} - -// The request message for ListRewards. -message ListRewardsRequest { - // The protocol that the rewards were earned on. - // The response will only include rewards for the protocol specified here. - string parent = 1 [ - (google.api.field_behavior) = REQUIRED, - (google.api.resource_reference).type = "coinbase.staking.rewards/Protocol" - ]; - - // The maximum number of items to return. Maximum size of this value is 500. - // If user supplies a value > 500, the API will truncate to 500. - int32 page_size = 2 [(google.api.field_behavior) = OPTIONAL]; - - // A page token as part of the response of a previous call. - // Provide this to retrieve the next page. - // - // When paginating, all other parameters must match the previous - // request to list resources correctly. - string page_token = 3 [(google.api.field_behavior) = OPTIONAL]; - - // [AIP-160](https://google.aip.dev/160) format compliant filter. Supported protocols are 'ethereum', 'solana', and 'cosmos'. - // Supplying other protocols will return an error. - // * **Ethereum**: - // - Fields: - // - `address` - A ethereum validator public key. - // - `date` - A date in format 'YYYY-MM-DD'. Supports multiple comparisons (ex: '2024-01-15). - // - `period_end_time` - A timestamp in RFC-3339 format. Supports multiple comparisons (ex: '2024-01-01T00:00:00Z' and '2024-01-15T00:00:00Z'). - // - Example(s): - // - `"address='0xac53512c39d0081ca4437c285305eb423f474e6153693c12fbba4a3df78bcaa3422b31d800c5bea71c1b017168a60474' AND date >= '2024-01-01' AND date < '2024-01-15'"` - // - `"address='0xac53512c39d0081ca4437c285305eb423f474e6153693c12fbba4a3df78bcaa3422b31d800c5bea71c1b017168a60474' AND period_end_time >= '2024-01-01T00:00:00Z' AND period_end_time < '2024-01-15T00:00:00Z'"` - // - `"address='0xac53512c39d0081ca4437c285305eb423f474e6153693c12fbba4a3df78bcaa3422b31d800c5bea71c1b017168a60474' AND date = '2024-01-01'"` - // - // * **Solana**: - // - Fields: - // - `address` - A solana validator or delegator address. - // - `epoch` - A solana epoch. Supports epoch comparisons (ex: `epoch >= 1000 AND epoch <= 2000`). - // - `period_end_time` - A timestamp in RFC-3339 format. Supports multiple comparisons (ex: '2024-01-01T00:00:00Z' and '2024-01-15T00:00:00Z'). - // - Example(s): - // - `"address='beefKGBWeSpHzYBHZXwp5So7wdQGX6mu4ZHCsH3uTar' AND epoch >= 540 AND epoch < 550"` - // - `"address='beefKGBWeSpHzYBHZXwp5So7wdQGX6mu4ZHCsH3uTar' AND period_end_time >= '2024-01-01T00:00:00Z' AND period_end_time < '2024-01-15T00:00:00Z'"` - // - `"address='beefKGBWeSpHzYBHZXwp5So7wdQGX6mu4ZHCsH3uTar' AND epoch = 550"` - // - // * **Cosmos**: - // - Fields: - // - `address` - A cosmos validator or delegator address (ex: `cosmosvaloper1c4k24jzduc365kywrsvf5ujz4ya6mwympnc4en` and `cosmos1c4k24jzduc365kywrsvf5ujz4ya6mwymy8vq4q`) - // - `date` - A date in format 'YYYY-MM-DD'. Supports multiple comparisons (ex: '2024-01-15). - // - `period_end_time` - A timestamp in RFC-3339 format. Supports multiple comparisons (ex: '2024-01-01T00:00:00Z' and '2024-01-15T00:00:00Z'). - // - Example(s): - // - `"address='cosmos1mfduj0qax6ut8rd6cfc4j0ds06z0mwlhrljhqh' AND date = '2024-11-16'"` - // - `"address='cosmos1mfduj0qax6ut8rd6cfc4j0ds06z0mwlhrljhqh' AND period_end_time >= '2024-01-01T00:00:00Z' AND period_end_time < '2024-01-15T00:00:00Z'"` - // - `"address='cosmos1mfduj0qax6ut8rd6cfc4j0ds06z0mwlhrljhqh' AND date = '2024-01-01'"` - string filter = 4 [(google.api.field_behavior) = OPTIONAL]; -} - -// The response message for ListRewards. -message ListRewardsResponse { - // The rewards returned in this response. - repeated Reward rewards = 1 [(google.api.field_behavior) = OUTPUT_ONLY]; - - // The page token the user must use in the next request if the next page is desired. - string next_page_token = 2 [(google.api.field_behavior) = OUTPUT_ONLY]; -} - -// The unit of time that the reward events were aggregated by. -enum AggregationUnit { - // Aggregation unit is unknown or unspecified. - AGGREGATION_UNIT_UNSPECIFIED = 0; - // Indicates the rewards are aggregated by epoch. This means there will be a 'epoch' field displaying the epoch on this resource. - EPOCH = 1; - // Indicates the rewards are aggregated by day. This means there will be a 'date' field displaying the date on this resource. - DAY = 2; -} \ No newline at end of file diff --git a/protos/coinbase/staking/rewards/v1/reward_service.proto b/protos/coinbase/staking/rewards/v1/reward_service.proto deleted file mode 100644 index ad6e3fa..0000000 --- a/protos/coinbase/staking/rewards/v1/reward_service.proto +++ /dev/null @@ -1,110 +0,0 @@ -syntax = "proto3"; - -package coinbase.staking.rewards.v1; - -import "coinbase/staking/rewards/v1/reward.proto"; -import "coinbase/staking/rewards/v1/stake.proto"; -import "google/api/annotations.proto"; -import "google/api/client.proto"; -import "protoc-gen-openapiv2/options/annotations.proto"; - -option go_package = "github.com/coinbase/staking-client-library-go/gen/go/coinbase/staking/rewards/v1"; -option (grpc.gateway.protoc_gen_openapiv2.options.openapiv2_swagger) = { - host: "api.developer.coinbase.com"; - base_path: "/rewards"; - schemes: HTTPS - consumes: "application/json"; - produces: "application/json"; - info: { - title: "Rewards Service"; - description: "Service that provides access to onchain, staking-related rewards data."; - version: "v1"; - }; - - responses: { - key: "401"; - value: { - description: "Returned if authentication information is invalid"; - schema: {example: '"Unauthorized"'}; - }; - }; - - responses: { - key: "500"; - value: { - description: "Returned when an internal server error happens."; - schema: {example: '{"code":3,"message":"Internal server error.","details":[]}'}; - }; - }; - tags: [ - { - name: "Reward"; - description: "A high-level view of an address's rewards aggregated over some period of time (ex: over an Epoch)."; - }, - { - name: "Stake"; - description: "A snapshot of an address's staking-related balance at a particular point in time. Feature coming soon."; - } - ]; -}; - -// RewardService exposes publicly available onchain staking-related rewards data across all supported protocols. -service RewardService { - option (google.api.default_host) = "api.developer.coinbase.com"; - - // List rewards for a given protocol. - rpc ListRewards(ListRewardsRequest) returns (ListRewardsResponse) { - option (google.api.http) = {get: "/v1/{parent=protocols/*}/rewards"}; - - option (google.api.method_signature) = "parent"; - - option (grpc.gateway.protoc_gen_openapiv2.options.openapiv2_operation) = { - summary: "List and filter rewards"; - description: "Lists onchain rewards of an address for a specific protocol, with optional filters for time range, aggregation period, and more."; - tags: "Reward"; - responses: { - key: "200" - value: { - description: "OK" - schema: {example: '{"rewards":[{"address":"beefKGBWeSpHzYBHZXwp5So7wdQGX6mu4ZHCsH3uTar","epoch":"533","aggregationUnit":"epoch","periodStartTime":null,"periodEndTime":"2023-11-16T00:13:44Z","totalEarnedNativeUnit":{"amount":"224.7098145","exp":"9","ticker":"SOL","rawNumeric":"224709814509"},"totalEarnedUsd":null,"endingBalance":null,"protocol":"solana"},{"address":"beefKGBWeSpHzYBHZXwp5So7wdQGX6mu4ZHCsH3uTar","epoch":"532","aggregationUnit":"epoch","periodStartTime":null,"periodEndTime":"2023-11-13T19:38:36Z","totalEarnedNativeUnit":{"amount":"225.0794241","exp":"9","ticker":"SOL","rawNumeric":"225079424094"},"totalEarnedUsd":null,"endingBalance":null,"protocol":"solana"}],"nextPageToken":"VAql-wtdiJWkWII9bJBDnE9oEc-8IlgU0DtKbxSDtBg=:1:1700241277"}'}, - } - } - responses: { - key: "400"; - value: { - description: "The request attempted has invalid parameters"; - schema: {example: '{"code":3,"message":"Filter validation failed. .","details":[]}'}; - }; - }; - }; - } - - // List staking activities for a given protocol. - rpc ListStakes(ListStakesRequest) returns (ListStakesResponse) { - option (google.api.http) = {get: "/v1/{parent=protocols/*}/stakes"}; - - option (google.api.method_signature) = "parent"; - - option (grpc.gateway.protoc_gen_openapiv2.options.openapiv2_operation) = { - summary: "List and filter staking balances"; - description: "Lists staking balance of a protocol, with optional filters for time range and address."; - tags: "Stake"; - responses: { - key: "200" - value: { - description: "OK" - schema: { - json_schema: {ref: "#/definitions/v1ListStakesResponse"} - } - } - } - responses: { - key: "400"; - value: { - description: "The request attempted has invalid parameters"; - schema: {example: '{"code":3,"message":"Filter validation failed. .","details":[]}'}; - }; - }; - }; - } -} diff --git a/protos/coinbase/staking/rewards/v1/stake.proto b/protos/coinbase/staking/rewards/v1/stake.proto deleted file mode 100644 index 2dc5fc9..0000000 --- a/protos/coinbase/staking/rewards/v1/stake.proto +++ /dev/null @@ -1,190 +0,0 @@ -syntax = "proto3"; - -package coinbase.staking.rewards.v1; - -import "coinbase/staking/rewards/v1/common.proto"; -import "google/api/field_behavior.proto"; -import "google/api/resource.proto"; -import "google/protobuf/descriptor.proto"; -import "google/protobuf/timestamp.proto"; - -option go_package = "github.com/coinbase/staking-client-library-go/gen/go/coinbase/staking/rewards/v1"; - -// The representation of a staking activity at a particular point in time. -// (-- api-linter: core::0123::resource-name-field=disabled -// aip.dev/not-precedent: Not including a 'name' field till our data sources support a unique identifier --) -message Stake { - option (google.api.resource) = { - type: "coinbase.staking.rewards/Stake" - pattern: "protocols/{protocol}/stakes/{stake}" - singular: "stake" - plural: "stakes" - }; - - // The unique identifier for this staking balance. This is intended to be added in the future when GetStakes is implemented - // but as of now, we only support ListStakes and therefore don't need a unique identifier. It's been marked as reserved to ensure - // that the spot is available when we do implement GetStakes. This ensures that a field such as "id" is assigned a value - // within the first 15 spots, which takes just one byte to encode instead of two. This is a slight performance optimization. - reserved "id"; - reserved 1; - - // The address of the staking balance. - string address = 2 [(google.api.field_behavior) = OUTPUT_ONLY]; - - // The time at which this balance was evaluated. - // Timestamps are in UTC, conforming to the RFC-3339 spec (e.g. 2023-11-13T19:38:36Z). - google.protobuf.Timestamp evaluation_time = 3 [(google.api.field_behavior) = OUTPUT_ONLY]; - - // The total amount of stake that is actively earning rewards to this address. - // Includes any delegated stake and self-stake. - // For delegators, this would be only the amount delegated to a validator in most cases. - // Only includes stake that is *actively contributing to rewards and can't be reduced - // without affecting the rewards dynamics*. - // - // Pending inactive stake is included. - // Pending active stake is not included. - AssetAmount bonded_stake = 4 [(google.api.field_behavior) = OUTPUT_ONLY]; - - // The amount of stake that this address receives from other addresses. - // For most delegators, this will be 0. - AssetAmount total_delegation_received = 5 [(google.api.field_behavior) = OUTPUT_ONLY]; - - // The list of individual delegations this address has received from other addresses - optional Delegation delegations_received = 6 [(google.api.field_behavior) = OUTPUT_ONLY]; - - // The amount that this address stakes to another address. - optional Delegation delegations_given = 7 [(google.api.field_behavior) = OUTPUT_ONLY]; - - // A single delegation from one address to another. - message Delegation { - // Address associated to the delegation - string address = 1; - // Amount of delegation received or given - AssetAmount amount = 2; - // Commission rate for delegation - string commission_rate = 3; - } - - // If this staking-related address is active at evaluation_time. Can help inform the user if their staking-related address - // is active or not, such as in the case of DOT where an address can be staking but not in the active set. - // active(8) has been temporarily reserved because it's not something we want to implement for quite some time. - reserved "active"; - reserved 8; - - // An estimated yield of this address. - repeated RewardRate reward_rate_calculations = 9 [(google.api.field_behavior) = OUTPUT_ONLY]; - - // The participant type at the time of evaluation (i.e. validator, delegator). - ParticipantType participant_type = 10 [(google.api.field_behavior) = OUTPUT_ONLY]; - - // Any pending rewards to this address. We consider pending rewards those rewards which - // haven't been "earned" yet. - // pending_rewards(11) has been reserved until we reach consensus on the definition of pending rewards. - reserved "pending_rewards"; - reserved 11; - - // The protocol on which this staking balance exists. - string protocol = 12 [(google.api.field_behavior) = OUTPUT_ONLY]; - - // The amount of stake that is not actively earning rewards to this address. - // This amount includes any native token balance that is under the domain and control of the address in question, - // but is not actively staked. - // - // Pending active stake would be included here. - AssetAmount unbonded_balance = 13 [(google.api.field_behavior) = OUTPUT_ONLY]; -} - -// Reward yield calculation at a given point in time. -message RewardRate { - // The percentage rate of rewards calculation. Will include two digits after the decimal (ex: 3.05). - string percentage = 1 [(google.api.field_behavior) = OUTPUT_ONLY]; - - // The time at which this yield calculation was calculated. - // Timestamps are in UTC, conforming to the RFC-3339 spec (e.g. 2023-11-13T19:38:36Z). - google.protobuf.Timestamp calculated_time = 2 [(google.api.field_behavior) = OUTPUT_ONLY]; - - // The method used to calculate this yield. This could include information about which - // rewards we're including in the calculation, how we're estimating the compounding period, etc. - CalculationMethods calculation_method = 3 [(google.api.field_behavior) = OUTPUT_ONLY]; - - // Representing the different methods of calculating yield. - enum CalculationMethods { - // Calculation method is unknown or unspecified. - CALCULATION_METHODS_UNSPECIFIED = 0; - // A single Ethereum validator acting in isolation is currently not able to compound earned rewards because - // Ethereum only allows validators to stake 32 ETH precisely. - // This percentage yield is assuming that the rewards never compound, mimicking the behavior of a solo staker. - SOLO_STAKER = 1; - // A pool of Ethereum validators of sufficient size is able to compound rewards almost immediately. - // This percentage yield is assuming rewards compound immediately, mimicking the behavior of a sufficiently large pool. - POOLED_STAKER = 2; - // A Solana delegator's staking rewards are staked (and therefore auto-compound) when rewards are paid out between epochs. - // This percentage yield is assuming the rewards are auto-compounded on that schedule, mimicking a Solana delegator. - EPOCH_AUTO_COMPOUNDING = 3; - // A Solana validator's rewards accumulate in a separate account from the validator's active stake. - // This percentage yield is assuming the rewards are not auto-compounded at any point, mimicking a Solana validator who never staked their rewards. - NO_AUTO_COMPOUNDING = 4; - } -} - -// The request message for ListStakes. -message ListStakesRequest { - // The protocol that the staking balance exists on. - // The response will only include staking balances for the protocol specified here. - string parent = 1 [ - (google.api.field_behavior) = REQUIRED, - (google.api.resource_reference).type = "coinbase.staking.rewards/Protocol" - ]; - - // The maximum number of items to return. - int32 page_size = 2 [(google.api.field_behavior) = OPTIONAL]; - - // A page token as part of the response of a previous call. - // Provide this to retrieve the next page. - // - // When paginating, all other parameters must match the previous - // request to list resources. - string page_token = 3 [(google.api.field_behavior) = OPTIONAL]; - - // [AIP-160](https://google.aip.dev/160) format compliant filter. Supported protocols are 'ethereum', 'solana'. - // Supplying other protocols will return an error. - // * **Ethereum**: - // - Fields: - // - `address` - A ethereum validator public key. - // - `evaluation_time` - A timestamp in RFC-3339 format. Supports multiple comparisons (ex: '2024-01-01T00:00:00Z' and '2024-01-15T00:00:00Z'). - // - Example(s): - // - `"address='0xac53512c39d0081ca4437c285305eb423f474e6153693c12fbba4a3df78bcaa3422b31d800c5bea71c1b017168a60474'"` - // - `"address='0xac53512c39d0081ca4437c285305eb423f474e6153693c12fbba4a3df78bcaa3422b31d800c5bea71c1b017168a60474' AND evaluation_time >= '2024-01-01T00:00:00Z' AND evaluation_time < '2024-01-15T00:00:00Z'"` - // - // * **Solana**: - // - Fields: - // - `address` - A solana staking address. - // - `evaluation_time` - A timestamp in RFC-3339 format. Supports multiple comparisons (ex: '2024-01-01T00:00:00Z' and '2024-01-15T00:00:00Z'). - // - Example(s): - // - `"address='beefKGBWeSpHzYBHZXwp5So7wdQGX6mu4ZHCsH3uTar'"` - // - `"address='beefKGBWeSpHzYBHZXwp5So7wdQGX6mu4ZHCsH3uTar' AND evaluation_time >= '2024-01-01T00:00:00Z' AND evaluation_time < '2024-01-15T00:00:00Z'"` - string filter = 4 [(google.api.field_behavior) = OPTIONAL]; -} - -// The response message for ListStakes. -message ListStakesResponse { - // The staking balances returned in this response. - repeated Stake stakes = 1 [(google.api.field_behavior) = OUTPUT_ONLY]; - - // The page token the user must use in the next request if the next page is desired. - string next_page_token = 2 [(google.api.field_behavior) = OUTPUT_ONLY]; -} - -// The participant type of a staking-related address. -enum ParticipantType { - // The participant type is unknown. - PARTICIPANT_TYPE_UNSPECIFIED = 0; - - // Used when the onchain participant type is a delegator - // (i.e. someone who delegates the responsibilities of validating blocks to another address in return for a share of the rewards). - DELEGATOR = 1; - - // Used when the onchain participant type is a validator - // (i.e. an address that is directly responsible for performing validation of blocks). - VALIDATOR = 2; -} diff --git a/scripts/install-go-tools.sh b/scripts/install-go-tools.sh new file mode 100755 index 0000000..6632552 --- /dev/null +++ b/scripts/install-go-tools.sh @@ -0,0 +1,16 @@ +#!/usr/bin/env sh + +echo "Installing go tools ..." + +go install github.com/bufbuild/buf/cmd/buf@latest +go install google.golang.org/protobuf/cmd/protoc-gen-go@v1.30.0 +go install google.golang.org/grpc/cmd/protoc-gen-go-grpc@v1.3.0 +go install github.com/grpc-ecosystem/grpc-gateway/v2/protoc-gen-grpc-gateway@v2.16.0 +go install go.einride.tech/aip/cmd/protoc-gen-go-aip@v0.62.0 +go install github.com/googleapis/gapic-generator-go/cmd/protoc-gen-go_gapic@v0.37.0 +go install github.com/pseudomuto/protoc-gen-doc/cmd/protoc-gen-doc@v1.5.1 +# We currently use the OpenAPI v2 generator, because protoc-gen-openapiv3 is not yet released. +# We want to use v3 in future as it supports Bearer token authentication which our project makes use of. +go install github.com/grpc-ecosystem/grpc-gateway/v2/protoc-gen-openapiv2@v2.19.1 + +echo "Done installing go tools." diff --git a/scripts/install-go-validation-tools.sh b/scripts/install-go-validation-tools.sh new file mode 100755 index 0000000..84dbf2e --- /dev/null +++ b/scripts/install-go-validation-tools.sh @@ -0,0 +1,6 @@ +#!/usr/bin/env sh + +echo "Installing go validation tools ..." +go install github.com/bufbuild/buf/cmd/buf@latest +go install github.com/golangci/golangci-lint/cmd/golangci-lint@v1.54.2 +echo "Done installing go validation tools."