From e63f4af2a7f9a875e2e1e1929d5b5e2d24c7eb3b Mon Sep 17 00:00:00 2001 From: Shane O'Brien <32044819+ProfMoo@users.noreply.github.com> Date: Fri, 10 May 2024 09:58:09 -0400 Subject: [PATCH] Update gen file with portfolio (#22) ## Description Of Change The generation process was broken due to a new proto file in the source protos at `buf.build/cdp/rewards`. This PR fixes the generation process. ## Testing Procedure N/A --- docs/openapi/orchestration.swagger.json | 35 ++ docs/openapi/rewards.swagger.json | 199 +++++- examples/ethereum/create-workflow/main.go | 3 +- examples/solana/create-workflow/main.go | 5 +- .../staking/rewards/v1/reward_client.go | 219 ++++++- .../staking/orchestration/v1/action.pb.go | 7 +- .../staking/orchestration/v1/api.pb.go | 9 +- .../staking/orchestration/v1/common.pb.go | 5 +- .../staking/orchestration/v1/ethereum.pb.go | 7 +- .../orchestration/v1/ethereum_kiln.pb.go | 7 +- .../staking/orchestration/v1/network.pb.go | 7 +- .../staking/orchestration/v1/protocol.pb.go | 7 +- .../staking/orchestration/v1/solana.pb.go | 7 +- .../orchestration/v1/staking_context.pb.go | 7 +- .../orchestration/v1/staking_target.pb.go | 7 +- .../staking/orchestration/v1/workflow.pb.go | 592 +++++++++++------- .../staking/rewards/v1/portfolio.pb.go | 470 ++++++++++++++ .../staking/rewards/v1/portfolio_aip.go | 54 ++ .../coinbase/staking/rewards/v1/reward.pb.go | 250 +++++--- .../staking/rewards/v1/reward_service.pb.go | 395 +++++++----- .../rewards/v1/reward_service.pb.gw.go | 190 ++++++ .../rewards/v1/reward_service_grpc.pb.go | 90 ++- .../coinbase/staking/rewards/v1/stake.pb.go | 2 +- protos/buf.gen.rewards.yaml | 8 +- 24 files changed, 2063 insertions(+), 519 deletions(-) create mode 100644 gen/go/coinbase/staking/rewards/v1/portfolio.pb.go create mode 100644 gen/go/coinbase/staking/rewards/v1/portfolio_aip.go diff --git a/docs/openapi/orchestration.swagger.json b/docs/openapi/orchestration.swagger.json index 80bb3cb..3a0deb1 100644 --- a/docs/openapi/orchestration.swagger.json +++ b/docs/openapi/orchestration.swagger.json @@ -812,6 +812,36 @@ }, "description": "The amount of a token you wish to perform an action\nwith." }, + "v1BulkTxStepOutput": { + "type": "object", + "properties": { + "unsignedTxs": { + "type": "array", + "items": { + "type": "string" + }, + "description": "The unsigned transactions that must be signed and broadcasted.", + "readOnly": true + }, + "state": { + "$ref": "#/definitions/v1BulkTxStepOutputState", + "description": "The state of the bulk tx step.", + "readOnly": true + } + }, + "description": "The details of multiple transactions being constructed and broadcasted to the network." + }, + "v1BulkTxStepOutputState": { + "type": "string", + "enum": [ + "STATE_UNSPECIFIED", + "STATE_IN_PROGRESS", + "STATE_FAILED", + "STATE_COMPLETED" + ], + "default": "STATE_UNSPECIFIED", + "description": "State defines an enumeration of states for a staking transaction.\n\n - STATE_UNSPECIFIED: Unspecified transaction state.\n - STATE_IN_PROGRESS: Txs construction in progress.\n - STATE_FAILED: Tx construction failed.\n - STATE_COMPLETED: Tx construction completed." + }, "v1Contract": { "type": "object", "properties": { @@ -1527,6 +1557,11 @@ "$ref": "#/definitions/v1ProvisionInfraStepOutput", "description": "The details for provisioned infrastructure.", "readOnly": true + }, + "bulkTxStepOutput": { + "$ref": "#/definitions/v1BulkTxStepOutput", + "description": "The bulk tx step output (e.g. transaction metadata such as unsigned tx, signed tx etc).", + "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 c23e879..59a869f 100644 --- a/docs/openapi/rewards.swagger.json +++ b/docs/openapi/rewards.swagger.json @@ -12,7 +12,7 @@ }, { "name": "Stake", - "description": "A snapshot of an address's staking-related balance at a particular point in time. Feature coming soon." + "description": "A snapshot of an address's staking-related balance at a particular point in time." }, { "name": "RewardService" @@ -30,9 +30,134 @@ "application/json" ], "paths": { + "/v1/portfolios": { + "get": { + "summary": "List all portfolios available to you.", + "operationId": "RewardService_ListPortfolios", + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/v1ListPortfoliosResponse" + } + }, + "400": { + "description": "The request attempted has invalid parameters", + "schema": { + "example": { + "code": 3, + "message": "Couldn't find portfolio. \u003cRemediation assistance here\u003e.", + "details": [] + } + } + }, + "401": { + "description": "Returned if authentication information is invalid", + "schema": { + "example": "Unauthorized" + } + }, + "500": { + "description": "Returned when an internal server error happens.", + "schema": { + "example": { + "code": 3, + "message": "Internal server error.", + "details": [] + } + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/rpcStatus" + } + } + }, + "parameters": [ + { + "name": "pageSize", + "description": "The maximum number of items to return.", + "in": "query", + "required": false, + "type": "integer", + "format": "int32" + }, + { + "name": "pageToken", + "description": "A page token as part of the response of a previous call.\nProvide this to retrieve the next page.\n\nWhen paginating, all other parameters must match the previous\nrequest to list resources.", + "in": "query", + "required": false, + "type": "string" + } + ], + "tags": [ + "Portfolio" + ] + } + }, + "/v1/{name}": { + "get": { + "summary": "Get a portfolio based on the name.", + "operationId": "RewardService_GetPortfolio", + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/v1Portfolio" + } + }, + "400": { + "description": "The request attempted has invalid parameters", + "schema": { + "example": { + "code": 3, + "message": "Couldn't get portfolio. \u003cRemediation assistance here\u003e.", + "details": [] + } + } + }, + "401": { + "description": "Returned if authentication information is invalid", + "schema": { + "example": "Unauthorized" + } + }, + "500": { + "description": "Returned when an internal server error happens.", + "schema": { + "example": { + "code": 3, + "message": "Internal server error.", + "details": [] + } + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/rpcStatus" + } + } + }, + "parameters": [ + { + "name": "name", + "description": "The resource name of the stake to retrieve.\nFormat: portfolios/{portfolio}", + "in": "path", + "required": true, + "type": "string", + "pattern": "portfolios/[^/]+" + } + ], + "tags": [ + "Portfolio" + ] + } + }, "/v1/{parent}/rewards": { "get": { - "summary": "List and filter rewards", + "summary": "List rewards", "description": "Lists onchain rewards of an address for a specific protocol, with optional filters for time range, aggregation period, and more.", "operationId": "RewardService_ListRewards", "responses": { @@ -251,6 +376,16 @@ "default": "CALCULATION_METHODS_UNSPECIFIED", "description": "Representing the different methods of calculating yield.\n\n - CALCULATION_METHODS_UNSPECIFIED: Calculation method is unknown or unspecified.\n - SOLO_STAKER: A single Ethereum validator acting in isolation is currently not able to compound earned rewards because\nEthereum only allows validators to stake 32 ETH precisely.\nThis percentage yield is assuming that the rewards never compound, mimicking the behavior of a solo staker.\n - POOLED_STAKER: A pool of Ethereum validators of sufficient size is able to compound rewards almost immediately.\nThis percentage yield is assuming rewards compound immediately, mimicking the behavior of a sufficiently large pool.\n - EPOCH_AUTO_COMPOUNDING: A Solana delegator's staking rewards are staked (and therefore auto-compound) when rewards are paid out between epochs.\nThis percentage yield is assuming the rewards are auto-compounded on that schedule, mimicking a Solana delegator.\n - NO_AUTO_COMPOUNDING: A Solana validator's rewards accumulate in a separate account from the validator's active stake.\nThis percentage yield is assuming the rewards are not auto-compounded at any point, mimicking a Solana validator who never staked their rewards." }, + "RewardState": { + "type": "string", + "enum": [ + "STATE_UNSPECIFIED", + "PENDING_CLAIMABLE", + "MATERIALIZED" + ], + "default": "STATE_UNSPECIFIED", + "description": "The state that a reward can potentially be in.\nNot all rewards are immediately usable and accessible which is\nprotocol dependent.\n\n - STATE_UNSPECIFIED: The reward state is in an unspecified state.\n - PENDING_CLAIMABLE: Indicates a reward that is not liquid and not on a users wallet address.\nTypically the user would need to perform a transaction to claim their reward.\ne.g. For Ethereum Partial Staking, the user must unstake then claim their rewards, each\nbeing it's own transaction on-chain to ultimately receive their rewards.\n - MATERIALIZED: Indicates a reward that is liquid and has been paid out to the users wallet address which\nis usually done by an explicit blockchain transaction.\ne.g. Solana rewards are paid out per epoch directly to the stake account address." + }, "StakeDelegation": { "type": "object", "properties": { @@ -306,6 +441,17 @@ } } }, + "v1Address": { + "type": "object", + "properties": { + "address": { + "type": "string", + "title": "The onchain address", + "readOnly": true + } + }, + "description": "Represents an address on any protocol." + }, "v1AggregationUnit": { "type": "string", "enum": [ @@ -343,6 +489,26 @@ }, "description": "Amount encapsulation for a given asset." }, + "v1ListPortfoliosResponse": { + "type": "object", + "properties": { + "portfolios": { + "type": "array", + "items": { + "type": "object", + "$ref": "#/definitions/v1Portfolio" + }, + "description": "The portfolios returned in this response.", + "readOnly": true + }, + "nextPageToken": { + "type": "string", + "description": "The page token the user must use in the next request if the next page is desired.", + "readOnly": true + } + }, + "description": "The response message for ListPortfolios." + }, "v1ListRewardsResponse": { "type": "object", "properties": { @@ -393,6 +559,26 @@ "default": "PARTICIPANT_TYPE_UNSPECIFIED", "description": "The participant type of a staking-related address.\n\n - PARTICIPANT_TYPE_UNSPECIFIED: The participant type is unknown.\n - DELEGATOR: Used when the onchain participant type is a delegator\n(i.e. someone who delegates the responsibilities of validating blocks to another address in return for a share of the rewards).\n - VALIDATOR: Used when the onchain participant type is a validator\n(i.e. an address that is directly responsible for performing validation of blocks)." }, + "v1Portfolio": { + "type": "object", + "properties": { + "name": { + "type": "string", + "description": "A unique identifier for the portfolio.", + "readOnly": true + }, + "addresses": { + "type": "array", + "items": { + "type": "object", + "$ref": "#/definitions/v1Address" + }, + "title": "The addresses that make up the portfolio", + "readOnly": true + } + }, + "description": "A portfolio represents an arbitrary collection of addresses. A portfolio doesn't necessarily\nimply that the underlying addresses are linked onchain in any manner.\nA portfolio is a convenient way for users to group addresses together for reporting purposes.\nFor now, project and portfolio are synonymous, 1-to-1." + }, "v1Reward": { "type": "object", "properties": { @@ -452,9 +638,14 @@ "type": "string", "description": "The protocol on which this reward was earned.", "readOnly": true + }, + "rewardState": { + "$ref": "#/definitions/RewardState", + "description": "The state that the reward is in when calculated.", + "readOnly": true } }, - "description": "Rewards earned within a particular period of time." + "description": "Rewards earned via onchain staking-related activites.\nA reward may be a particular event or a rollup of multiple events (ex: rewards earned in a day)." }, "v1RewardRate": { "type": "object", @@ -537,7 +728,7 @@ "readOnly": true } }, - "description": "The representation of a staking activity at a particular point in time." + "description": "The representation of a staking balance at a particular point in time." }, "v1USDValue": { "type": "object", diff --git a/examples/ethereum/create-workflow/main.go b/examples/ethereum/create-workflow/main.go index eb48f6b..86b32ed 100644 --- a/examples/ethereum/create-workflow/main.go +++ b/examples/ethereum/create-workflow/main.go @@ -8,12 +8,11 @@ import ( "context" "log" - "google.golang.org/protobuf/encoding/protojson" - "github.com/coinbase/staking-client-library-go/auth" "github.com/coinbase/staking-client-library-go/client" "github.com/coinbase/staking-client-library-go/client/options" api "github.com/coinbase/staking-client-library-go/gen/go/coinbase/staking/orchestration/v1" + "google.golang.org/protobuf/encoding/protojson" ) func main() { diff --git a/examples/solana/create-workflow/main.go b/examples/solana/create-workflow/main.go index da39e6d..b9e9c5f 100644 --- a/examples/solana/create-workflow/main.go +++ b/examples/solana/create-workflow/main.go @@ -7,15 +7,14 @@ package main import ( "context" "log" - - "google.golang.org/protobuf/encoding/protojson" + "os" "github.com/coinbase/staking-client-library-go/auth" "github.com/coinbase/staking-client-library-go/client" stakingerrors "github.com/coinbase/staking-client-library-go/client/errors" "github.com/coinbase/staking-client-library-go/client/options" api "github.com/coinbase/staking-client-library-go/gen/go/coinbase/staking/orchestration/v1" - "os" + "google.golang.org/protobuf/encoding/protojson" ) const ( diff --git a/gen/client/coinbase/staking/rewards/v1/reward_client.go b/gen/client/coinbase/staking/rewards/v1/reward_client.go index 0eb6239..1d5d4a6 100644 --- a/gen/client/coinbase/staking/rewards/v1/reward_client.go +++ b/gen/client/coinbase/staking/rewards/v1/reward_client.go @@ -41,14 +41,18 @@ var newRewardClientHook clientHook // RewardCallOptions contains the retry settings for each method of RewardClient. type RewardCallOptions struct { - ListRewards []gax.CallOption - ListStakes []gax.CallOption + ListRewards []gax.CallOption + ListStakes []gax.CallOption + GetPortfolio []gax.CallOption + ListPortfolios []gax.CallOption } func defaultRewardRESTCallOptions() *RewardCallOptions { return &RewardCallOptions{ - ListRewards: []gax.CallOption{}, - ListStakes: []gax.CallOption{}, + ListRewards: []gax.CallOption{}, + ListStakes: []gax.CallOption{}, + GetPortfolio: []gax.CallOption{}, + ListPortfolios: []gax.CallOption{}, } } @@ -59,6 +63,8 @@ type internalRewardClient interface { Connection() *grpc.ClientConn ListRewards(context.Context, *rewardpb.ListRewardsRequest, ...gax.CallOption) *RewardIterator ListStakes(context.Context, *rewardpb.ListStakesRequest, ...gax.CallOption) *StakeIterator + GetPortfolio(context.Context, *rewardpb.GetPortfolioRequest, ...gax.CallOption) (*rewardpb.Portfolio, error) + ListPortfolios(context.Context, *rewardpb.ListPortfoliosRequest, ...gax.CallOption) *PortfolioIterator } // RewardClient is a client for interacting with . @@ -96,16 +102,26 @@ func (c *RewardClient) Connection() *grpc.ClientConn { return c.internalClient.Connection() } -// ListRewards list rewards for a given protocol. +// ListRewards list all rewards of an address and augment those requests with helpful filters. func (c *RewardClient) ListRewards(ctx context.Context, req *rewardpb.ListRewardsRequest, opts ...gax.CallOption) *RewardIterator { return c.internalClient.ListRewards(ctx, req, opts...) } -// ListStakes list staking activities for a given protocol. +// ListStakes list all staking balances based on protocol and address func (c *RewardClient) ListStakes(ctx context.Context, req *rewardpb.ListStakesRequest, opts ...gax.CallOption) *StakeIterator { return c.internalClient.ListStakes(ctx, req, opts...) } +// GetPortfolio get a portfolio based on the name. +func (c *RewardClient) GetPortfolio(ctx context.Context, req *rewardpb.GetPortfolioRequest, opts ...gax.CallOption) (*rewardpb.Portfolio, error) { + return c.internalClient.GetPortfolio(ctx, req, opts...) +} + +// ListPortfolios list all portfolios available to you. +func (c *RewardClient) ListPortfolios(ctx context.Context, req *rewardpb.ListPortfoliosRequest, opts ...gax.CallOption) *PortfolioIterator { + return c.internalClient.ListPortfolios(ctx, req, opts...) +} + // Methods, except Close, may be called concurrently. However, fields must not be modified concurrently with method calls. type rewardRESTClient struct { // The http endpoint to connect to. @@ -175,7 +191,7 @@ func (c *rewardRESTClient) Connection() *grpc.ClientConn { return nil } -// ListRewards list rewards for a given protocol. +// ListRewards list all rewards of an address and augment those requests with helpful filters. func (c *rewardRESTClient) ListRewards(ctx context.Context, req *rewardpb.ListRewardsRequest, opts ...gax.CallOption) *RewardIterator { it := &RewardIterator{} req = proto.Clone(req).(*rewardpb.ListRewardsRequest) @@ -265,7 +281,7 @@ func (c *rewardRESTClient) ListRewards(ctx context.Context, req *rewardpb.ListRe return it } -// ListStakes list staking activities for a given protocol. +// ListStakes list all staking balances based on protocol and address func (c *rewardRESTClient) ListStakes(ctx context.Context, req *rewardpb.ListStakesRequest, opts ...gax.CallOption) *StakeIterator { it := &StakeIterator{} req = proto.Clone(req).(*rewardpb.ListStakesRequest) @@ -358,6 +374,193 @@ func (c *rewardRESTClient) ListStakes(ctx context.Context, req *rewardpb.ListSta return it } +// GetPortfolio get a portfolio based on the name. +func (c *rewardRESTClient) GetPortfolio(ctx context.Context, req *rewardpb.GetPortfolioRequest, opts ...gax.CallOption) (*rewardpb.Portfolio, error) { + baseUrl, err := url.Parse(c.endpoint) + if err != nil { + return nil, err + } + baseUrl.Path += fmt.Sprintf("/v1/%v", req.GetName()) + + // Build HTTP headers from client and context metadata. + md := metadata.Pairs("x-goog-request-params", fmt.Sprintf("%s=%v", "name", url.QueryEscape(req.GetName()))) + + headers := buildHeaders(ctx, c.xGoogMetadata, md, metadata.Pairs("Content-Type", "application/json")) + opts = append((*c.CallOptions).GetPortfolio[0:len((*c.CallOptions).GetPortfolio):len((*c.CallOptions).GetPortfolio)], opts...) + unm := protojson.UnmarshalOptions{AllowPartial: true, DiscardUnknown: true} + resp := &rewardpb.Portfolio{} + e := gax.Invoke(ctx, func(ctx context.Context, settings gax.CallSettings) error { + if settings.Path != "" { + baseUrl.Path = settings.Path + } + httpReq, err := http.NewRequest("GET", baseUrl.String(), nil) + if err != nil { + return err + } + httpReq = httpReq.WithContext(ctx) + httpReq.Header = headers + + httpRsp, err := c.httpClient.Do(httpReq) + if err != nil { + return err + } + defer httpRsp.Body.Close() + + if err = googleapi.CheckResponse(httpRsp); err != nil { + return err + } + + buf, err := ioutil.ReadAll(httpRsp.Body) + if err != nil { + return err + } + + if err := unm.Unmarshal(buf, resp); err != nil { + return maybeUnknownEnum(err) + } + + return nil + }, opts...) + if e != nil { + return nil, e + } + return resp, nil +} + +// ListPortfolios list all portfolios available to you. +func (c *rewardRESTClient) ListPortfolios(ctx context.Context, req *rewardpb.ListPortfoliosRequest, opts ...gax.CallOption) *PortfolioIterator { + it := &PortfolioIterator{} + req = proto.Clone(req).(*rewardpb.ListPortfoliosRequest) + unm := protojson.UnmarshalOptions{AllowPartial: true, DiscardUnknown: true} + it.InternalFetch = func(pageSize int, pageToken string) ([]*rewardpb.Portfolio, string, error) { + resp := &rewardpb.ListPortfoliosResponse{} + if pageToken != "" { + req.PageToken = pageToken + } + if pageSize > math.MaxInt32 { + req.PageSize = math.MaxInt32 + } else if pageSize != 0 { + req.PageSize = int32(pageSize) + } + baseUrl, err := url.Parse(c.endpoint) + if err != nil { + return nil, "", err + } + baseUrl.Path += fmt.Sprintf("/v1/portfolios") + + params := url.Values{} + if req.GetPageSize() != 0 { + params.Add("pageSize", fmt.Sprintf("%v", req.GetPageSize())) + } + if req.GetPageToken() != "" { + params.Add("pageToken", fmt.Sprintf("%v", req.GetPageToken())) + } + + baseUrl.RawQuery = params.Encode() + + // Build HTTP headers from client and context metadata. + headers := buildHeaders(ctx, c.xGoogMetadata, metadata.Pairs("Content-Type", "application/json")) + e := gax.Invoke(ctx, func(ctx context.Context, settings gax.CallSettings) error { + if settings.Path != "" { + baseUrl.Path = settings.Path + } + httpReq, err := http.NewRequest("GET", baseUrl.String(), nil) + if err != nil { + return err + } + httpReq.Header = headers + + httpRsp, err := c.httpClient.Do(httpReq) + if err != nil { + return err + } + defer httpRsp.Body.Close() + + if err = googleapi.CheckResponse(httpRsp); err != nil { + return err + } + + buf, err := ioutil.ReadAll(httpRsp.Body) + if err != nil { + return err + } + + if err := unm.Unmarshal(buf, resp); err != nil { + return maybeUnknownEnum(err) + } + + return nil + }, opts...) + if e != nil { + return nil, "", e + } + it.Response = resp + return resp.GetPortfolios(), resp.GetNextPageToken(), nil + } + + fetch := func(pageSize int, pageToken string) (string, error) { + items, nextPageToken, err := it.InternalFetch(pageSize, pageToken) + if err != nil { + return "", err + } + it.items = append(it.items, items...) + return nextPageToken, nil + } + + it.pageInfo, it.nextFunc = iterator.NewPageInfo(fetch, it.bufLen, it.takeBuf) + it.pageInfo.MaxSize = int(req.GetPageSize()) + it.pageInfo.Token = req.GetPageToken() + + return it +} + +// PortfolioIterator manages a stream of *rewardpb.Portfolio. +type PortfolioIterator struct { + items []*rewardpb.Portfolio + pageInfo *iterator.PageInfo + nextFunc func() error + + // Response is the raw response for the current page. + // It must be cast to the RPC response type. + // Calling Next() or InternalFetch() updates this value. + Response interface{} + + // InternalFetch is for use by the Google Cloud Libraries only. + // It is not part of the stable interface of this package. + // + // InternalFetch returns results from a single call to the underlying RPC. + // The number of results is no greater than pageSize. + // If there are no more results, nextPageToken is empty and err is nil. + InternalFetch func(pageSize int, pageToken string) (results []*rewardpb.Portfolio, nextPageToken string, err error) +} + +// PageInfo supports pagination. See the google.golang.org/api/iterator package for details. +func (it *PortfolioIterator) PageInfo() *iterator.PageInfo { + return it.pageInfo +} + +// Next returns the next result. Its second return value is iterator.Done if there are no more +// results. Once Next returns Done, all subsequent calls will return Done. +func (it *PortfolioIterator) Next() (*rewardpb.Portfolio, error) { + var item *rewardpb.Portfolio + if err := it.nextFunc(); err != nil { + return item, err + } + item = it.items[0] + it.items = it.items[1:] + return item, nil +} + +func (it *PortfolioIterator) bufLen() int { + return len(it.items) +} + +func (it *PortfolioIterator) takeBuf() interface{} { + b := it.items + it.items = nil + return b +} + // RewardIterator manages a stream of *rewardpb.Reward. type RewardIterator struct { items []*rewardpb.Reward diff --git a/gen/go/coinbase/staking/orchestration/v1/action.pb.go b/gen/go/coinbase/staking/orchestration/v1/action.pb.go index e1bbb2a..3d4a2c8 100644 --- a/gen/go/coinbase/staking/orchestration/v1/action.pb.go +++ b/gen/go/coinbase/staking/orchestration/v1/action.pb.go @@ -203,9 +203,10 @@ 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, 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, + 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, 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 9543116..e707f71 100644 --- a/gen/go/coinbase/staking/orchestration/v1/api.pb.go +++ b/gen/go/coinbase/staking/orchestration/v1/api.pb.go @@ -210,7 +210,7 @@ var file_coinbase_staking_orchestration_v1_api_proto_rawDesc = []byte{ 0x2f, 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, 0xe5, 0x07, 0x92, 0x41, 0x99, 0x07, 0x12, 0x65, + 0x61, 0x73, 0x65, 0x2e, 0x63, 0x6f, 0x6d, 0x42, 0xf5, 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, @@ -268,9 +268,10 @@ var file_coinbase_staking_orchestration_v1_api_proto_rawDesc = []byte{ 0x6f, 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, 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, + 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, 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 adc42ff..cf91781 100644 --- a/gen/go/coinbase/staking/orchestration/v1/common.pb.go +++ b/gen/go/coinbase/staking/orchestration/v1/common.pb.go @@ -97,8 +97,9 @@ 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, - 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, + 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, diff --git a/gen/go/coinbase/staking/orchestration/v1/ethereum.pb.go b/gen/go/coinbase/staking/orchestration/v1/ethereum.pb.go index 8ea6b25..512c2b7 100644 --- a/gen/go/coinbase/staking/orchestration/v1/ethereum.pb.go +++ b/gen/go/coinbase/staking/orchestration/v1/ethereum.pb.go @@ -204,9 +204,10 @@ var file_coinbase_staking_orchestration_v1_ethereum_proto_rawDesc = []byte{ 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, + 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, 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/ethereum_kiln.pb.go b/gen/go/coinbase/staking/orchestration/v1/ethereum_kiln.pb.go index 90c3380..2d79b55 100644 --- a/gen/go/coinbase/staking/orchestration/v1/ethereum_kiln.pb.go +++ b/gen/go/coinbase/staking/orchestration/v1/ethereum_kiln.pb.go @@ -605,9 +605,10 @@ 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, 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, + 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, 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 472adb0..0150098 100644 --- a/gen/go/coinbase/staking/orchestration/v1/network.pb.go +++ b/gen/go/coinbase/staking/orchestration/v1/network.pb.go @@ -203,9 +203,10 @@ 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, 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, + 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, 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 0d92de0..b1e8add 100644 --- a/gen/go/coinbase/staking/orchestration/v1/protocol.pb.go +++ b/gen/go/coinbase/staking/orchestration/v1/protocol.pb.go @@ -184,9 +184,10 @@ 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, 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, + 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, 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 5ac721d..24b9d04 100644 --- a/gen/go/coinbase/staking/orchestration/v1/solana.pb.go +++ b/gen/go/coinbase/staking/orchestration/v1/solana.pb.go @@ -851,9 +851,10 @@ 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, 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, + 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, 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 2384cc3..4373746 100644 --- a/gen/go/coinbase/staking/orchestration/v1/staking_context.pb.go +++ b/gen/go/coinbase/staking/orchestration/v1/staking_context.pb.go @@ -293,9 +293,10 @@ 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, 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, + 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, 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 7d1276e..fdcb476 100644 --- a/gen/go/coinbase/staking/orchestration/v1/staking_target.pb.go +++ b/gen/go/coinbase/staking/orchestration/v1/staking_target.pb.go @@ -442,9 +442,10 @@ 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, 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, + 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, 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 b39a500..f4e4292 100644 --- a/gen/go/coinbase/staking/orchestration/v1/workflow.pb.go +++ b/gen/go/coinbase/staking/orchestration/v1/workflow.pb.go @@ -283,6 +283,63 @@ func (ProvisionInfraStepOutput_State) EnumDescriptor() ([]byte, []int) { return file_coinbase_staking_orchestration_v1_workflow_proto_rawDescGZIP(), []int{2, 0} } +// State defines an enumeration of states for a staking transaction. +type BulkTxStepOutput_State int32 + +const ( + // Unspecified transaction state. + BulkTxStepOutput_STATE_UNSPECIFIED BulkTxStepOutput_State = 0 + // Txs construction in progress. + BulkTxStepOutput_STATE_IN_PROGRESS BulkTxStepOutput_State = 1 + // Tx construction failed. + BulkTxStepOutput_STATE_FAILED BulkTxStepOutput_State = 2 + // Tx construction completed. + BulkTxStepOutput_STATE_COMPLETED BulkTxStepOutput_State = 3 +) + +// Enum value maps for BulkTxStepOutput_State. +var ( + BulkTxStepOutput_State_name = map[int32]string{ + 0: "STATE_UNSPECIFIED", + 1: "STATE_IN_PROGRESS", + 2: "STATE_FAILED", + 3: "STATE_COMPLETED", + } + BulkTxStepOutput_State_value = map[string]int32{ + "STATE_UNSPECIFIED": 0, + "STATE_IN_PROGRESS": 1, + "STATE_FAILED": 2, + "STATE_COMPLETED": 3, + } +) + +func (x BulkTxStepOutput_State) Enum() *BulkTxStepOutput_State { + p := new(BulkTxStepOutput_State) + *p = x + return p +} + +func (x BulkTxStepOutput_State) String() string { + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) +} + +func (BulkTxStepOutput_State) Descriptor() protoreflect.EnumDescriptor { + return file_coinbase_staking_orchestration_v1_workflow_proto_enumTypes[4].Descriptor() +} + +func (BulkTxStepOutput_State) Type() protoreflect.EnumType { + return &file_coinbase_staking_orchestration_v1_workflow_proto_enumTypes[4] +} + +func (x BulkTxStepOutput_State) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) +} + +// Deprecated: Use BulkTxStepOutput_State.Descriptor instead. +func (BulkTxStepOutput_State) EnumDescriptor() ([]byte, []int) { + return file_coinbase_staking_orchestration_v1_workflow_proto_rawDescGZIP(), []int{3, 0} +} + // The state of a workflow type Workflow_State int32 @@ -328,11 +385,11 @@ func (x Workflow_State) String() string { } func (Workflow_State) Descriptor() protoreflect.EnumDescriptor { - return file_coinbase_staking_orchestration_v1_workflow_proto_enumTypes[4].Descriptor() + return file_coinbase_staking_orchestration_v1_workflow_proto_enumTypes[5].Descriptor() } func (Workflow_State) Type() protoreflect.EnumType { - return &file_coinbase_staking_orchestration_v1_workflow_proto_enumTypes[4] + return &file_coinbase_staking_orchestration_v1_workflow_proto_enumTypes[5] } func (x Workflow_State) Number() protoreflect.EnumNumber { @@ -341,7 +398,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{4, 0} + return file_coinbase_staking_orchestration_v1_workflow_proto_rawDescGZIP(), []int{5, 0} } // The details of a transaction being constructed and broadcasted to the network. @@ -563,6 +620,64 @@ func (x *ProvisionInfraStepOutput) GetState() ProvisionInfraStepOutput_State { return ProvisionInfraStepOutput_STATE_UNSPECIFIED } +// The details of multiple transactions being constructed and broadcasted to the network. +type BulkTxStepOutput struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // The unsigned transactions that must be signed and broadcasted. + UnsignedTxs []string `protobuf:"bytes,1,rep,name=unsigned_txs,json=unsignedTxs,proto3" json:"unsigned_txs,omitempty"` + // The state of the bulk tx step. + State BulkTxStepOutput_State `protobuf:"varint,2,opt,name=state,proto3,enum=coinbase.staking.orchestration.v1.BulkTxStepOutput_State" json:"state,omitempty"` +} + +func (x *BulkTxStepOutput) Reset() { + *x = BulkTxStepOutput{} + if protoimpl.UnsafeEnabled { + mi := &file_coinbase_staking_orchestration_v1_workflow_proto_msgTypes[3] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *BulkTxStepOutput) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*BulkTxStepOutput) ProtoMessage() {} + +func (x *BulkTxStepOutput) ProtoReflect() protoreflect.Message { + 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 { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use BulkTxStepOutput.ProtoReflect.Descriptor instead. +func (*BulkTxStepOutput) Descriptor() ([]byte, []int) { + return file_coinbase_staking_orchestration_v1_workflow_proto_rawDescGZIP(), []int{3} +} + +func (x *BulkTxStepOutput) GetUnsignedTxs() []string { + if x != nil { + return x.UnsignedTxs + } + return nil +} + +func (x *BulkTxStepOutput) GetState() BulkTxStepOutput_State { + if x != nil { + return x.State + } + return BulkTxStepOutput_STATE_UNSPECIFIED +} + // The information for a step in the workflow. type WorkflowStep struct { state protoimpl.MessageState @@ -578,13 +693,14 @@ type WorkflowStep struct { // *WorkflowStep_TxStepOutput // *WorkflowStep_WaitStepOutput // *WorkflowStep_ProvisionInfraStepOutput + // *WorkflowStep_BulkTxStepOutput Output isWorkflowStep_Output `protobuf_oneof:"output"` } func (x *WorkflowStep) Reset() { *x = WorkflowStep{} 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) } @@ -597,7 +713,7 @@ func (x *WorkflowStep) String() string { func (*WorkflowStep) ProtoMessage() {} func (x *WorkflowStep) 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 { @@ -610,7 +726,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{3} + return file_coinbase_staking_orchestration_v1_workflow_proto_rawDescGZIP(), []int{4} } func (x *WorkflowStep) GetName() string { @@ -648,6 +764,13 @@ func (x *WorkflowStep) GetProvisionInfraStepOutput() *ProvisionInfraStepOutput { return nil } +func (x *WorkflowStep) GetBulkTxStepOutput() *BulkTxStepOutput { + if x, ok := x.GetOutput().(*WorkflowStep_BulkTxStepOutput); ok { + return x.BulkTxStepOutput + } + return nil +} + type isWorkflowStep_Output interface { isWorkflowStep_Output() } @@ -667,12 +790,19 @@ type WorkflowStep_ProvisionInfraStepOutput struct { ProvisionInfraStepOutput *ProvisionInfraStepOutput `protobuf:"bytes,4,opt,name=provision_infra_step_output,json=provisionInfraStepOutput,proto3,oneof"` } +type WorkflowStep_BulkTxStepOutput struct { + // The bulk tx step output (e.g. transaction metadata such as unsigned tx, signed tx etc). + BulkTxStepOutput *BulkTxStepOutput `protobuf:"bytes,5,opt,name=bulk_tx_step_output,json=bulkTxStepOutput,proto3,oneof"` +} + func (*WorkflowStep_TxStepOutput) isWorkflowStep_Output() {} func (*WorkflowStep_WaitStepOutput) isWorkflowStep_Output() {} func (*WorkflowStep_ProvisionInfraStepOutput) isWorkflowStep_Output() {} +func (*WorkflowStep_BulkTxStepOutput) isWorkflowStep_Output() {} + // A Workflow resource. type Workflow struct { state protoimpl.MessageState @@ -712,7 +842,7 @@ type Workflow struct { func (x *Workflow) Reset() { *x = Workflow{} 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) } @@ -725,7 +855,7 @@ func (x *Workflow) String() string { func (*Workflow) ProtoMessage() {} func (x *Workflow) 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 { @@ -738,7 +868,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{4} + return file_coinbase_staking_orchestration_v1_workflow_proto_rawDescGZIP(), []int{5} } func (x *Workflow) GetName() string { @@ -863,7 +993,7 @@ type CreateWorkflowRequest struct { func (x *CreateWorkflowRequest) Reset() { *x = CreateWorkflowRequest{} 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) } @@ -876,7 +1006,7 @@ func (x *CreateWorkflowRequest) String() string { func (*CreateWorkflowRequest) ProtoMessage() {} func (x *CreateWorkflowRequest) 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 { @@ -889,7 +1019,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{5} + return file_coinbase_staking_orchestration_v1_workflow_proto_rawDescGZIP(), []int{6} } func (x *CreateWorkflowRequest) GetWorkflow() *Workflow { @@ -913,7 +1043,7 @@ type GetWorkflowRequest struct { func (x *GetWorkflowRequest) Reset() { *x = GetWorkflowRequest{} 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) } @@ -926,7 +1056,7 @@ func (x *GetWorkflowRequest) String() string { func (*GetWorkflowRequest) ProtoMessage() {} func (x *GetWorkflowRequest) 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 { @@ -939,7 +1069,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{6} + return file_coinbase_staking_orchestration_v1_workflow_proto_rawDescGZIP(), []int{7} } func (x *GetWorkflowRequest) GetName() string { @@ -979,7 +1109,7 @@ type ListWorkflowsRequest struct { func (x *ListWorkflowsRequest) Reset() { *x = ListWorkflowsRequest{} 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) } @@ -992,7 +1122,7 @@ func (x *ListWorkflowsRequest) String() string { func (*ListWorkflowsRequest) ProtoMessage() {} func (x *ListWorkflowsRequest) 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 { @@ -1005,7 +1135,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{7} + return file_coinbase_staking_orchestration_v1_workflow_proto_rawDescGZIP(), []int{8} } func (x *ListWorkflowsRequest) GetFilter() string { @@ -1045,7 +1175,7 @@ type ListWorkflowsResponse struct { func (x *ListWorkflowsResponse) Reset() { *x = ListWorkflowsResponse{} 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) } @@ -1058,7 +1188,7 @@ func (x *ListWorkflowsResponse) String() string { func (*ListWorkflowsResponse) ProtoMessage() {} func (x *ListWorkflowsResponse) 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 { @@ -1071,7 +1201,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{8} + return file_coinbase_staking_orchestration_v1_workflow_proto_rawDescGZIP(), []int{9} } func (x *ListWorkflowsResponse) GetWorkflows() []*Workflow { @@ -1106,7 +1236,7 @@ type PerformWorkflowStepRequest struct { func (x *PerformWorkflowStepRequest) Reset() { *x = PerformWorkflowStepRequest{} if protoimpl.UnsafeEnabled { - mi := &file_coinbase_staking_orchestration_v1_workflow_proto_msgTypes[9] + mi := &file_coinbase_staking_orchestration_v1_workflow_proto_msgTypes[10] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1119,7 +1249,7 @@ func (x *PerformWorkflowStepRequest) String() string { func (*PerformWorkflowStepRequest) ProtoMessage() {} func (x *PerformWorkflowStepRequest) ProtoReflect() protoreflect.Message { - mi := &file_coinbase_staking_orchestration_v1_workflow_proto_msgTypes[9] + mi := &file_coinbase_staking_orchestration_v1_workflow_proto_msgTypes[10] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1132,7 +1262,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{9} + return file_coinbase_staking_orchestration_v1_workflow_proto_rawDescGZIP(), []int{10} } func (x *PerformWorkflowStepRequest) GetName() string { @@ -1267,152 +1397,175 @@ var file_coinbase_staking_orchestration_v1_workflow_proto_rawDesc = []byte{ 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, 0xd5, 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, + 0x54, 0x45, 0x5f, 0x46, 0x41, 0x49, 0x4c, 0x45, 0x44, 0x10, 0x04, 0x22, 0xee, 0x01, 0x0a, 0x10, + 0x42, 0x75, 0x6c, 0x6b, 0x54, 0x78, 0x53, 0x74, 0x65, 0x70, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, + 0x12, 0x26, 0x0a, 0x0c, 0x75, 0x6e, 0x73, 0x69, 0x67, 0x6e, 0x65, 0x64, 0x5f, 0x74, 0x78, 0x73, + 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x03, 0x52, 0x0b, 0x75, 0x6e, 0x73, + 0x69, 0x67, 0x6e, 0x65, 0x64, 0x54, 0x78, 0x73, 0x12, 0x54, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x74, + 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x39, 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, 0x42, 0x75, 0x6c, 0x6b, + 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, 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, 0x49, 0x4e, 0x5f, 0x50, 0x52, 0x4f, 0x47, 0x52, + 0x45, 0x53, 0x53, 0x10, 0x01, 0x12, 0x10, 0x0a, 0x0c, 0x53, 0x54, 0x41, 0x54, 0x45, 0x5f, 0x46, + 0x41, 0x49, 0x4c, 0x45, 0x44, 0x10, 0x02, 0x12, 0x13, 0x0a, 0x0f, 0x53, 0x54, 0x41, 0x54, 0x45, + 0x5f, 0x43, 0x4f, 0x4d, 0x50, 0x4c, 0x45, 0x54, 0x45, 0x44, 0x10, 0x03, 0x22, 0x95, 0x04, 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, 0x12, 0x69, 0x0a, 0x13, + 0x62, 0x75, 0x6c, 0x6b, 0x5f, 0x74, 0x78, 0x5f, 0x73, 0x74, 0x65, 0x70, 0x5f, 0x6f, 0x75, 0x74, + 0x70, 0x75, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x33, 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, 0x42, 0x75, + 0x6c, 0x6b, 0x54, 0x78, 0x53, 0x74, 0x65, 0x70, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x42, 0x03, + 0xe0, 0x41, 0x03, 0x48, 0x00, 0x52, 0x10, 0x62, 0x75, 0x6c, 0x6b, 0x54, 0x78, 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, 0xd5, 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, 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, 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, + 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, 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, - 0x4d, 0xea, 0x41, 0x4a, 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, 0x14, 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, 0x6b, 0x0a, 0x15, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x57, 0x6f, 0x72, 0x6b, 0x66, 0x6c, - 0x6f, 0x77, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 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, 0x4a, 0x04, 0x08, 0x01, 0x10, 0x02, 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, 0x7f, - 0x0a, 0x14, 0x4c, 0x69, 0x73, 0x74, 0x57, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x73, 0x52, - 0x65, 0x71, 0x75, 0x65, 0x73, 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, 0x4a, 0x04, 0x08, 0x01, 0x10, 0x02, 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, + 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, 0x4d, 0xea, 0x41, 0x4a, + 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, + 0x14, 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, 0x6b, 0x0a, 0x15, + 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x57, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x52, 0x65, + 0x71, 0x75, 0x65, 0x73, 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, 0x4a, 0x04, 0x08, 0x01, 0x10, 0x02, 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, 0x7f, 0x0a, 0x14, 0x4c, 0x69, + 0x73, 0x74, 0x57, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, + 0x73, 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, 0x4a, 0x04, 0x08, 0x01, 0x10, 0x02, 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, 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, } var ( @@ -1427,52 +1580,56 @@ 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, 5) -var file_coinbase_staking_orchestration_v1_workflow_proto_msgTypes = make([]protoimpl.MessageInfo, 10) +var file_coinbase_staking_orchestration_v1_workflow_proto_enumTypes = make([]protoimpl.EnumInfo, 6) +var file_coinbase_staking_orchestration_v1_workflow_proto_msgTypes = make([]protoimpl.MessageInfo, 11) 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 (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 + (BulkTxStepOutput_State)(0), // 4: coinbase.staking.orchestration.v1.BulkTxStepOutput.State + (Workflow_State)(0), // 5: coinbase.staking.orchestration.v1.Workflow.State + (*TxStepOutput)(nil), // 6: coinbase.staking.orchestration.v1.TxStepOutput + (*WaitStepOutput)(nil), // 7: coinbase.staking.orchestration.v1.WaitStepOutput + (*ProvisionInfraStepOutput)(nil), // 8: coinbase.staking.orchestration.v1.ProvisionInfraStepOutput + (*BulkTxStepOutput)(nil), // 9: coinbase.staking.orchestration.v1.BulkTxStepOutput + (*WorkflowStep)(nil), // 10: coinbase.staking.orchestration.v1.WorkflowStep + (*Workflow)(nil), // 11: coinbase.staking.orchestration.v1.Workflow + (*CreateWorkflowRequest)(nil), // 12: coinbase.staking.orchestration.v1.CreateWorkflowRequest + (*GetWorkflowRequest)(nil), // 13: coinbase.staking.orchestration.v1.GetWorkflowRequest + (*ListWorkflowsRequest)(nil), // 14: coinbase.staking.orchestration.v1.ListWorkflowsRequest + (*ListWorkflowsResponse)(nil), // 15: coinbase.staking.orchestration.v1.ListWorkflowsResponse + (*PerformWorkflowStepRequest)(nil), // 16: coinbase.staking.orchestration.v1.PerformWorkflowStepRequest + (*SolanaStakingParameters)(nil), // 17: coinbase.staking.orchestration.v1.SolanaStakingParameters + (*EthereumKilnStakingParameters)(nil), // 18: coinbase.staking.orchestration.v1.EthereumKilnStakingParameters + (*EthereumStakingParameters)(nil), // 19: coinbase.staking.orchestration.v1.EthereumStakingParameters + (*timestamppb.Timestamp)(nil), // 20: 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 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 + 4, // 4: coinbase.staking.orchestration.v1.BulkTxStepOutput.state:type_name -> coinbase.staking.orchestration.v1.BulkTxStepOutput.State + 6, // 5: coinbase.staking.orchestration.v1.WorkflowStep.tx_step_output:type_name -> coinbase.staking.orchestration.v1.TxStepOutput + 7, // 6: coinbase.staking.orchestration.v1.WorkflowStep.wait_step_output:type_name -> coinbase.staking.orchestration.v1.WaitStepOutput + 8, // 7: coinbase.staking.orchestration.v1.WorkflowStep.provision_infra_step_output:type_name -> coinbase.staking.orchestration.v1.ProvisionInfraStepOutput + 9, // 8: coinbase.staking.orchestration.v1.WorkflowStep.bulk_tx_step_output:type_name -> coinbase.staking.orchestration.v1.BulkTxStepOutput + 17, // 9: coinbase.staking.orchestration.v1.Workflow.solana_staking_parameters:type_name -> coinbase.staking.orchestration.v1.SolanaStakingParameters + 18, // 10: coinbase.staking.orchestration.v1.Workflow.ethereum_kiln_staking_parameters:type_name -> coinbase.staking.orchestration.v1.EthereumKilnStakingParameters + 19, // 11: coinbase.staking.orchestration.v1.Workflow.ethereum_staking_parameters:type_name -> coinbase.staking.orchestration.v1.EthereumStakingParameters + 5, // 12: coinbase.staking.orchestration.v1.Workflow.state:type_name -> coinbase.staking.orchestration.v1.Workflow.State + 10, // 13: coinbase.staking.orchestration.v1.Workflow.steps:type_name -> coinbase.staking.orchestration.v1.WorkflowStep + 20, // 14: coinbase.staking.orchestration.v1.Workflow.create_time:type_name -> google.protobuf.Timestamp + 20, // 15: coinbase.staking.orchestration.v1.Workflow.update_time:type_name -> google.protobuf.Timestamp + 20, // 16: coinbase.staking.orchestration.v1.Workflow.complete_time:type_name -> google.protobuf.Timestamp + 11, // 17: coinbase.staking.orchestration.v1.CreateWorkflowRequest.workflow:type_name -> coinbase.staking.orchestration.v1.Workflow + 11, // 18: coinbase.staking.orchestration.v1.ListWorkflowsResponse.workflows:type_name -> coinbase.staking.orchestration.v1.Workflow + 19, // [19:19] is the sub-list for method output_type + 19, // [19:19] is the sub-list for method input_type + 19, // [19:19] is the sub-list for extension type_name + 19, // [19:19] is the sub-list for extension extendee + 0, // [0:19] is the sub-list for field type_name } func init() { file_coinbase_staking_orchestration_v1_workflow_proto_init() } @@ -1521,7 +1678,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.(*WorkflowStep); i { + switch v := v.(*BulkTxStepOutput); i { case 0: return &v.state case 1: @@ -1533,7 +1690,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.(*Workflow); i { + switch v := v.(*WorkflowStep); i { case 0: return &v.state case 1: @@ -1545,7 +1702,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.(*CreateWorkflowRequest); i { + switch v := v.(*Workflow); i { case 0: return &v.state case 1: @@ -1557,7 +1714,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.(*GetWorkflowRequest); i { + switch v := v.(*CreateWorkflowRequest); i { case 0: return &v.state case 1: @@ -1569,7 +1726,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.(*ListWorkflowsRequest); i { + switch v := v.(*GetWorkflowRequest); i { case 0: return &v.state case 1: @@ -1581,7 +1738,7 @@ 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 { + switch v := v.(*ListWorkflowsRequest); i { case 0: return &v.state case 1: @@ -1593,6 +1750,18 @@ func file_coinbase_staking_orchestration_v1_workflow_proto_init() { } } file_coinbase_staking_orchestration_v1_workflow_proto_msgTypes[9].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[10].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*PerformWorkflowStepRequest); i { case 0: return &v.state @@ -1605,12 +1774,13 @@ func file_coinbase_staking_orchestration_v1_workflow_proto_init() { } } } - file_coinbase_staking_orchestration_v1_workflow_proto_msgTypes[3].OneofWrappers = []interface{}{ + file_coinbase_staking_orchestration_v1_workflow_proto_msgTypes[4].OneofWrappers = []interface{}{ (*WorkflowStep_TxStepOutput)(nil), (*WorkflowStep_WaitStepOutput)(nil), (*WorkflowStep_ProvisionInfraStepOutput)(nil), + (*WorkflowStep_BulkTxStepOutput)(nil), } - file_coinbase_staking_orchestration_v1_workflow_proto_msgTypes[4].OneofWrappers = []interface{}{ + file_coinbase_staking_orchestration_v1_workflow_proto_msgTypes[5].OneofWrappers = []interface{}{ (*Workflow_SolanaStakingParameters)(nil), (*Workflow_EthereumKilnStakingParameters)(nil), (*Workflow_EthereumStakingParameters)(nil), @@ -1620,8 +1790,8 @@ func file_coinbase_staking_orchestration_v1_workflow_proto_init() { File: protoimpl.DescBuilder{ GoPackagePath: reflect.TypeOf(x{}).PkgPath(), RawDescriptor: file_coinbase_staking_orchestration_v1_workflow_proto_rawDesc, - NumEnums: 5, - NumMessages: 10, + NumEnums: 6, + NumMessages: 11, NumExtensions: 0, NumServices: 0, }, diff --git a/gen/go/coinbase/staking/rewards/v1/portfolio.pb.go b/gen/go/coinbase/staking/rewards/v1/portfolio.pb.go new file mode 100644 index 0000000..6c3c393 --- /dev/null +++ b/gen/go/coinbase/staking/rewards/v1/portfolio.pb.go @@ -0,0 +1,470 @@ +// Code generated by protoc-gen-go. DO NOT EDIT. +// versions: +// protoc-gen-go v1.30.0 +// protoc (unknown) +// source: coinbase/staking/rewards/v1/portfolio.proto + +package v1 + +import ( + _ "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) +) + +// A portfolio represents an arbitrary collection of addresses. A portfolio doesn't necessarily +// imply that the underlying addresses are linked onchain in any manner. +// A portfolio is a convenient way for users to group addresses together for reporting purposes. +// For now, project and portfolio are synonymous, 1-to-1. +type Portfolio struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // A unique identifier for the portfolio. + Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` + // The addresses that make up the portfolio + Addresses []*Address `protobuf:"bytes,2,rep,name=addresses,proto3" json:"addresses,omitempty"` +} + +func (x *Portfolio) Reset() { + *x = Portfolio{} + if protoimpl.UnsafeEnabled { + mi := &file_coinbase_staking_rewards_v1_portfolio_proto_msgTypes[0] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *Portfolio) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*Portfolio) ProtoMessage() {} + +func (x *Portfolio) ProtoReflect() protoreflect.Message { + mi := &file_coinbase_staking_rewards_v1_portfolio_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 Portfolio.ProtoReflect.Descriptor instead. +func (*Portfolio) Descriptor() ([]byte, []int) { + return file_coinbase_staking_rewards_v1_portfolio_proto_rawDescGZIP(), []int{0} +} + +func (x *Portfolio) GetName() string { + if x != nil { + return x.Name + } + return "" +} + +func (x *Portfolio) GetAddresses() []*Address { + if x != nil { + return x.Addresses + } + return nil +} + +// Represents an address on any protocol. +type Address struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // The onchain address + Address string `protobuf:"bytes,1,opt,name=address,proto3" json:"address,omitempty"` +} + +func (x *Address) Reset() { + *x = Address{} + if protoimpl.UnsafeEnabled { + mi := &file_coinbase_staking_rewards_v1_portfolio_proto_msgTypes[1] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *Address) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*Address) ProtoMessage() {} + +func (x *Address) ProtoReflect() protoreflect.Message { + mi := &file_coinbase_staking_rewards_v1_portfolio_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 Address.ProtoReflect.Descriptor instead. +func (*Address) Descriptor() ([]byte, []int) { + return file_coinbase_staking_rewards_v1_portfolio_proto_rawDescGZIP(), []int{1} +} + +func (x *Address) GetAddress() string { + if x != nil { + return x.Address + } + return "" +} + +// Get a portfolio based on its resource name. +type GetPortfolioRequest struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // The resource name of the stake to retrieve. + // Format: portfolios/{portfolio} + Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` +} + +func (x *GetPortfolioRequest) Reset() { + *x = GetPortfolioRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_coinbase_staking_rewards_v1_portfolio_proto_msgTypes[2] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *GetPortfolioRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*GetPortfolioRequest) ProtoMessage() {} + +func (x *GetPortfolioRequest) ProtoReflect() protoreflect.Message { + mi := &file_coinbase_staking_rewards_v1_portfolio_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 GetPortfolioRequest.ProtoReflect.Descriptor instead. +func (*GetPortfolioRequest) Descriptor() ([]byte, []int) { + return file_coinbase_staking_rewards_v1_portfolio_proto_rawDescGZIP(), []int{2} +} + +func (x *GetPortfolioRequest) GetName() string { + if x != nil { + return x.Name + } + return "" +} + +// The request message for ListPortfolios. +type ListPortfoliosRequest struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // The maximum number of items to return. + PageSize int32 `protobuf:"varint,2,opt,name=page_size,json=pageSize,proto3" json:"page_size,omitempty"` + // 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. + PageToken string `protobuf:"bytes,3,opt,name=page_token,json=pageToken,proto3" json:"page_token,omitempty"` +} + +func (x *ListPortfoliosRequest) Reset() { + *x = ListPortfoliosRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_coinbase_staking_rewards_v1_portfolio_proto_msgTypes[3] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *ListPortfoliosRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ListPortfoliosRequest) ProtoMessage() {} + +func (x *ListPortfoliosRequest) ProtoReflect() protoreflect.Message { + mi := &file_coinbase_staking_rewards_v1_portfolio_proto_msgTypes[3] + 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 ListPortfoliosRequest.ProtoReflect.Descriptor instead. +func (*ListPortfoliosRequest) Descriptor() ([]byte, []int) { + return file_coinbase_staking_rewards_v1_portfolio_proto_rawDescGZIP(), []int{3} +} + +func (x *ListPortfoliosRequest) GetPageSize() int32 { + if x != nil { + return x.PageSize + } + return 0 +} + +func (x *ListPortfoliosRequest) GetPageToken() string { + if x != nil { + return x.PageToken + } + return "" +} + +// The response message for ListPortfolios. +type ListPortfoliosResponse struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // The portfolios returned in this response. + Portfolios []*Portfolio `protobuf:"bytes,1,rep,name=portfolios,proto3" json:"portfolios,omitempty"` + // The page token the user must use in the next request if the next page is desired. + NextPageToken string `protobuf:"bytes,2,opt,name=next_page_token,json=nextPageToken,proto3" json:"next_page_token,omitempty"` +} + +func (x *ListPortfoliosResponse) Reset() { + *x = ListPortfoliosResponse{} + if protoimpl.UnsafeEnabled { + mi := &file_coinbase_staking_rewards_v1_portfolio_proto_msgTypes[4] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *ListPortfoliosResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ListPortfoliosResponse) ProtoMessage() {} + +func (x *ListPortfoliosResponse) ProtoReflect() protoreflect.Message { + mi := &file_coinbase_staking_rewards_v1_portfolio_proto_msgTypes[4] + 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 ListPortfoliosResponse.ProtoReflect.Descriptor instead. +func (*ListPortfoliosResponse) Descriptor() ([]byte, []int) { + return file_coinbase_staking_rewards_v1_portfolio_proto_rawDescGZIP(), []int{4} +} + +func (x *ListPortfoliosResponse) GetPortfolios() []*Portfolio { + if x != nil { + return x.Portfolios + } + return nil +} + +func (x *ListPortfoliosResponse) GetNextPageToken() string { + if x != nil { + return x.NextPageToken + } + return "" +} + +var File_coinbase_staking_rewards_v1_portfolio_proto protoreflect.FileDescriptor + +var file_coinbase_staking_rewards_v1_portfolio_proto_rawDesc = []byte{ + 0x0a, 0x2b, 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, 0x2f, 0x70, 0x6f, + 0x72, 0x74, 0x66, 0x6f, 0x6c, 0x69, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x1b, 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, 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, 0x22, 0xc5, 0x01, 0x0a, 0x09, 0x50, 0x6f, 0x72, 0x74, 0x66, + 0x6f, 0x6c, 0x69, 0x6f, 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, 0x47, 0x0a, + 0x09, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x65, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, + 0x32, 0x24, 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, + 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x42, 0x03, 0xe0, 0x41, 0x03, 0x52, 0x09, 0x61, 0x64, 0x64, + 0x72, 0x65, 0x73, 0x73, 0x65, 0x73, 0x3a, 0x56, 0xea, 0x41, 0x53, 0x0a, 0x22, 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, 0x6f, 0x72, 0x74, 0x66, 0x6f, 0x6c, 0x69, 0x6f, 0x12, + 0x16, 0x70, 0x6f, 0x72, 0x74, 0x66, 0x6f, 0x6c, 0x69, 0x6f, 0x73, 0x2f, 0x7b, 0x70, 0x6f, 0x72, + 0x74, 0x66, 0x6f, 0x6c, 0x69, 0x6f, 0x7d, 0x2a, 0x0a, 0x70, 0x6f, 0x72, 0x74, 0x66, 0x6f, 0x6c, + 0x69, 0x6f, 0x73, 0x32, 0x09, 0x70, 0x6f, 0x72, 0x74, 0x66, 0x6f, 0x6c, 0x69, 0x6f, 0x22, 0x28, + 0x0a, 0x07, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x12, 0x1d, 0x0a, 0x07, 0x61, 0x64, 0x64, + 0x72, 0x65, 0x73, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x03, 0x52, + 0x07, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x22, 0x55, 0x0a, 0x13, 0x47, 0x65, 0x74, 0x50, + 0x6f, 0x72, 0x74, 0x66, 0x6f, 0x6c, 0x69, 0x6f, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, + 0x3e, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x2a, 0xe0, + 0x41, 0x02, 0xfa, 0x41, 0x24, 0x0a, 0x22, 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, 0x6f, 0x72, 0x74, 0x66, 0x6f, 0x6c, 0x69, 0x6f, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x22, + 0x6b, 0x0a, 0x15, 0x4c, 0x69, 0x73, 0x74, 0x50, 0x6f, 0x72, 0x74, 0x66, 0x6f, 0x6c, 0x69, 0x6f, + 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 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, 0x4a, 0x04, + 0x08, 0x01, 0x10, 0x02, 0x52, 0x06, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x22, 0x92, 0x01, 0x0a, + 0x16, 0x4c, 0x69, 0x73, 0x74, 0x50, 0x6f, 0x72, 0x74, 0x66, 0x6f, 0x6c, 0x69, 0x6f, 0x73, 0x52, + 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x4b, 0x0a, 0x0a, 0x70, 0x6f, 0x72, 0x74, 0x66, + 0x6f, 0x6c, 0x69, 0x6f, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x26, 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, 0x6f, 0x72, 0x74, 0x66, 0x6f, + 0x6c, 0x69, 0x6f, 0x42, 0x03, 0xe0, 0x41, 0x03, 0x52, 0x0a, 0x70, 0x6f, 0x72, 0x74, 0x66, 0x6f, + 0x6c, 0x69, 0x6f, 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, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, +} + +var ( + file_coinbase_staking_rewards_v1_portfolio_proto_rawDescOnce sync.Once + file_coinbase_staking_rewards_v1_portfolio_proto_rawDescData = file_coinbase_staking_rewards_v1_portfolio_proto_rawDesc +) + +func file_coinbase_staking_rewards_v1_portfolio_proto_rawDescGZIP() []byte { + file_coinbase_staking_rewards_v1_portfolio_proto_rawDescOnce.Do(func() { + file_coinbase_staking_rewards_v1_portfolio_proto_rawDescData = protoimpl.X.CompressGZIP(file_coinbase_staking_rewards_v1_portfolio_proto_rawDescData) + }) + return file_coinbase_staking_rewards_v1_portfolio_proto_rawDescData +} + +var file_coinbase_staking_rewards_v1_portfolio_proto_msgTypes = make([]protoimpl.MessageInfo, 5) +var file_coinbase_staking_rewards_v1_portfolio_proto_goTypes = []interface{}{ + (*Portfolio)(nil), // 0: coinbase.staking.rewards.v1.Portfolio + (*Address)(nil), // 1: coinbase.staking.rewards.v1.Address + (*GetPortfolioRequest)(nil), // 2: coinbase.staking.rewards.v1.GetPortfolioRequest + (*ListPortfoliosRequest)(nil), // 3: coinbase.staking.rewards.v1.ListPortfoliosRequest + (*ListPortfoliosResponse)(nil), // 4: coinbase.staking.rewards.v1.ListPortfoliosResponse +} +var file_coinbase_staking_rewards_v1_portfolio_proto_depIdxs = []int32{ + 1, // 0: coinbase.staking.rewards.v1.Portfolio.addresses:type_name -> coinbase.staking.rewards.v1.Address + 0, // 1: coinbase.staking.rewards.v1.ListPortfoliosResponse.portfolios:type_name -> coinbase.staking.rewards.v1.Portfolio + 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_rewards_v1_portfolio_proto_init() } +func file_coinbase_staking_rewards_v1_portfolio_proto_init() { + if File_coinbase_staking_rewards_v1_portfolio_proto != nil { + return + } + if !protoimpl.UnsafeEnabled { + file_coinbase_staking_rewards_v1_portfolio_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*Portfolio); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_coinbase_staking_rewards_v1_portfolio_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*Address); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_coinbase_staking_rewards_v1_portfolio_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*GetPortfolioRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_coinbase_staking_rewards_v1_portfolio_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*ListPortfoliosRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_coinbase_staking_rewards_v1_portfolio_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*ListPortfoliosResponse); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + } + type x struct{} + out := protoimpl.TypeBuilder{ + File: protoimpl.DescBuilder{ + GoPackagePath: reflect.TypeOf(x{}).PkgPath(), + RawDescriptor: file_coinbase_staking_rewards_v1_portfolio_proto_rawDesc, + NumEnums: 0, + NumMessages: 5, + NumExtensions: 0, + NumServices: 0, + }, + GoTypes: file_coinbase_staking_rewards_v1_portfolio_proto_goTypes, + DependencyIndexes: file_coinbase_staking_rewards_v1_portfolio_proto_depIdxs, + MessageInfos: file_coinbase_staking_rewards_v1_portfolio_proto_msgTypes, + }.Build() + File_coinbase_staking_rewards_v1_portfolio_proto = out.File + file_coinbase_staking_rewards_v1_portfolio_proto_rawDesc = nil + file_coinbase_staking_rewards_v1_portfolio_proto_goTypes = nil + file_coinbase_staking_rewards_v1_portfolio_proto_depIdxs = nil +} diff --git a/gen/go/coinbase/staking/rewards/v1/portfolio_aip.go b/gen/go/coinbase/staking/rewards/v1/portfolio_aip.go new file mode 100644 index 0000000..34c4105 --- /dev/null +++ b/gen/go/coinbase/staking/rewards/v1/portfolio_aip.go @@ -0,0 +1,54 @@ +// Code generated by protoc-gen-go-aip. DO NOT EDIT. +// +// versions: +// protoc-gen-go-aip development +// protoc (unknown) +// source: coinbase/staking/rewards/v1/portfolio.proto + +package v1 + +import ( + fmt "fmt" + resourcename "go.einride.tech/aip/resourcename" + strings "strings" +) + +type PortfolioResourceName struct { + Portfolio string +} + +func (n PortfolioResourceName) Validate() error { + if n.Portfolio == "" { + return fmt.Errorf("portfolio: empty") + } + if strings.IndexByte(n.Portfolio, '/') != -1 { + return fmt.Errorf("portfolio: contains illegal character '/'") + } + return nil +} + +func (n PortfolioResourceName) ContainsWildcard() bool { + return false || n.Portfolio == "-" +} + +func (n PortfolioResourceName) String() string { + return resourcename.Sprint( + "portfolios/{portfolio}", + n.Portfolio, + ) +} + +func (n PortfolioResourceName) MarshalString() (string, error) { + if err := n.Validate(); err != nil { + return "", err + } + return n.String(), nil +} + +func (n *PortfolioResourceName) UnmarshalString(name string) error { + return resourcename.Sscan( + name, + "portfolios/{portfolio}", + &n.Portfolio, + ) +} diff --git a/gen/go/coinbase/staking/rewards/v1/reward.pb.go b/gen/go/coinbase/staking/rewards/v1/reward.pb.go index f0dcb45..9468fd1 100644 --- a/gen/go/coinbase/staking/rewards/v1/reward.pb.go +++ b/gen/go/coinbase/staking/rewards/v1/reward.pb.go @@ -75,6 +75,66 @@ func (AggregationUnit) EnumDescriptor() ([]byte, []int) { return file_coinbase_staking_rewards_v1_reward_proto_rawDescGZIP(), []int{0} } +// The state that a reward can potentially be in. +// Not all rewards are immediately usable and accessible which is +// protocol dependent. +type Reward_State int32 + +const ( + // The reward state is in an unspecified state. + Reward_STATE_UNSPECIFIED Reward_State = 0 + // Indicates a reward that is not liquid and not on a users wallet address. + // Typically the user would need to perform a transaction to claim their reward. + // e.g. For Ethereum Partial Staking, the user must unstake then claim their rewards, each + // being it's own transaction on-chain to ultimately receive their rewards. + Reward_PENDING_CLAIMABLE Reward_State = 1 + // Indicates a reward that is liquid and has been paid out to the users wallet address which + // is usually done by an explicit blockchain transaction. + // e.g. Solana rewards are paid out per epoch directly to the stake account address. + Reward_MATERIALIZED Reward_State = 2 +) + +// Enum value maps for Reward_State. +var ( + Reward_State_name = map[int32]string{ + 0: "STATE_UNSPECIFIED", + 1: "PENDING_CLAIMABLE", + 2: "MATERIALIZED", + } + Reward_State_value = map[string]int32{ + "STATE_UNSPECIFIED": 0, + "PENDING_CLAIMABLE": 1, + "MATERIALIZED": 2, + } +) + +func (x Reward_State) Enum() *Reward_State { + p := new(Reward_State) + *p = x + return p +} + +func (x Reward_State) String() string { + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) +} + +func (Reward_State) Descriptor() protoreflect.EnumDescriptor { + return file_coinbase_staking_rewards_v1_reward_proto_enumTypes[1].Descriptor() +} + +func (Reward_State) Type() protoreflect.EnumType { + return &file_coinbase_staking_rewards_v1_reward_proto_enumTypes[1] +} + +func (x Reward_State) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) +} + +// Deprecated: Use Reward_State.Descriptor instead. +func (Reward_State) EnumDescriptor() ([]byte, []int) { + return file_coinbase_staking_rewards_v1_reward_proto_rawDescGZIP(), []int{0, 0} +} + // The source of the USD price conversion. type USDValue_Source int32 @@ -108,11 +168,11 @@ func (x USDValue_Source) String() string { } func (USDValue_Source) Descriptor() protoreflect.EnumDescriptor { - return file_coinbase_staking_rewards_v1_reward_proto_enumTypes[1].Descriptor() + return file_coinbase_staking_rewards_v1_reward_proto_enumTypes[2].Descriptor() } func (USDValue_Source) Type() protoreflect.EnumType { - return &file_coinbase_staking_rewards_v1_reward_proto_enumTypes[1] + return &file_coinbase_staking_rewards_v1_reward_proto_enumTypes[2] } func (x USDValue_Source) Number() protoreflect.EnumNumber { @@ -124,7 +184,8 @@ func (USDValue_Source) EnumDescriptor() ([]byte, []int) { return file_coinbase_staking_rewards_v1_reward_proto_rawDescGZIP(), []int{1, 0} } -// Rewards earned within a particular period of time. +// Rewards earned via onchain staking-related activites. +// A reward may be a particular event or a rollup of multiple events (ex: rewards earned in a day). // (-- 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 --) @@ -163,6 +224,8 @@ type Reward struct { EndingBalance *Stake `protobuf:"bytes,9,opt,name=ending_balance,json=endingBalance,proto3" json:"ending_balance,omitempty"` // The protocol on which this reward was earned. Protocol string `protobuf:"bytes,11,opt,name=protocol,proto3" json:"protocol,omitempty"` + // The state that the reward is in when calculated. + RewardState Reward_State `protobuf:"varint,12,opt,name=reward_state,json=rewardState,proto3,enum=coinbase.staking.rewards.v1.Reward_State" json:"reward_state,omitempty"` } func (x *Reward) Reset() { @@ -274,6 +337,13 @@ func (x *Reward) GetProtocol() string { return "" } +func (x *Reward) GetRewardState() Reward_State { + if x != nil { + return x.RewardState + } + return Reward_STATE_UNSPECIFIED +} + type isReward_PeriodIdentifier interface { isReward_PeriodIdentifier() } @@ -559,7 +629,7 @@ var file_coinbase_staking_rewards_v1_reward_proto_rawDesc = []byte{ 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, 0x22, 0x83, 0x06, 0x0a, 0x06, 0x52, 0x65, 0x77, 0x61, + 0x70, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0x9f, 0x07, 0x0a, 0x06, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, 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, 0x1b, 0x0a, 0x05, 0x65, 0x70, 0x6f, 0x63, 0x68, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x03, @@ -599,62 +669,72 @@ var file_coinbase_staking_rewards_v1_reward_proto_rawDesc = []byte{ 0x31, 0x2e, 0x53, 0x74, 0x61, 0x6b, 0x65, 0x42, 0x03, 0xe0, 0x41, 0x03, 0x52, 0x0d, 0x65, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x42, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x12, 0x1f, 0x0a, 0x08, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, - 0x41, 0x03, 0x52, 0x08, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x3a, 0x5c, 0xea, 0x41, - 0x59, 0x0a, 0x1f, 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, 0x52, 0x65, 0x77, 0x61, - 0x72, 0x64, 0x12, 0x25, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x73, 0x2f, 0x7b, 0x70, - 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x7d, 0x2f, 0x72, 0x65, 0x77, 0x61, 0x72, 0x64, 0x73, - 0x2f, 0x7b, 0x72, 0x65, 0x77, 0x61, 0x72, 0x64, 0x7d, 0x2a, 0x07, 0x72, 0x65, 0x77, 0x61, 0x72, - 0x64, 0x73, 0x32, 0x06, 0x72, 0x65, 0x77, 0x61, 0x72, 0x64, 0x42, 0x13, 0x0a, 0x11, 0x70, 0x65, - 0x72, 0x69, 0x6f, 0x64, 0x5f, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x4a, - 0x04, 0x08, 0x03, 0x10, 0x04, 0x52, 0x06, 0x70, 0x65, 0x72, 0x69, 0x6f, 0x64, 0x22, 0xcf, 0x02, - 0x0a, 0x08, 0x55, 0x53, 0x44, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x49, 0x0a, 0x06, 0x73, 0x6f, - 0x75, 0x72, 0x63, 0x65, 0x18, 0x01, 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, 0x55, 0x53, 0x44, 0x56, 0x61, 0x6c, 0x75, - 0x65, 0x2e, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x42, 0x03, 0xe0, 0x41, 0x03, 0x52, 0x06, 0x73, - 0x6f, 0x75, 0x72, 0x63, 0x65, 0x12, 0x48, 0x0a, 0x0f, 0x63, 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x73, - 0x69, 0x6f, 0x6e, 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, 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x54, 0x69, 0x6d, 0x65, 0x12, - 0x45, 0x0a, 0x06, 0x61, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x03, 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, 0x06, - 0x61, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x2e, 0x0a, 0x10, 0x63, 0x6f, 0x6e, 0x76, 0x65, 0x72, - 0x73, 0x69, 0x6f, 0x6e, 0x5f, 0x70, 0x72, 0x69, 0x63, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, - 0x42, 0x03, 0xe0, 0x41, 0x03, 0x52, 0x0f, 0x63, 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, - 0x6e, 0x50, 0x72, 0x69, 0x63, 0x65, 0x22, 0x37, 0x0a, 0x06, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, - 0x12, 0x16, 0x0a, 0x12, 0x53, 0x4f, 0x55, 0x52, 0x43, 0x45, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, - 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x15, 0x0a, 0x11, 0x43, 0x4f, 0x49, 0x4e, - 0x42, 0x41, 0x53, 0x45, 0x5f, 0x45, 0x58, 0x43, 0x48, 0x41, 0x4e, 0x47, 0x45, 0x10, 0x01, 0x22, - 0xba, 0x01, 0x0a, 0x12, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, 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, 0x86, 0x01, 0x0a, - 0x13, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, 0x73, 0x52, 0x65, 0x73, 0x70, - 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x42, 0x0a, 0x07, 0x72, 0x65, 0x77, 0x61, 0x72, 0x64, 0x73, 0x18, - 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x23, 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, 0x42, 0x03, 0xe0, 0x41, 0x03, 0x52, - 0x07, 0x72, 0x65, 0x77, 0x61, 0x72, 0x64, 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, 0x47, 0x0a, 0x0f, 0x41, 0x67, 0x67, 0x72, 0x65, 0x67, 0x61, - 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, 0x62, 0x06, - 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, + 0x41, 0x03, 0x52, 0x08, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x12, 0x51, 0x0a, 0x0c, + 0x72, 0x65, 0x77, 0x61, 0x72, 0x64, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x65, 0x18, 0x0c, 0x20, 0x01, + 0x28, 0x0e, 0x32, 0x29, 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, 0x2e, 0x53, 0x74, 0x61, 0x74, 0x65, 0x42, 0x03, 0xe0, + 0x41, 0x03, 0x52, 0x0b, 0x72, 0x65, 0x77, 0x61, 0x72, 0x64, 0x53, 0x74, 0x61, 0x74, 0x65, 0x22, + 0x47, 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, 0x50, 0x45, 0x4e, 0x44, 0x49, 0x4e, 0x47, 0x5f, 0x43, 0x4c, 0x41, 0x49, 0x4d, + 0x41, 0x42, 0x4c, 0x45, 0x10, 0x01, 0x12, 0x10, 0x0a, 0x0c, 0x4d, 0x41, 0x54, 0x45, 0x52, 0x49, + 0x41, 0x4c, 0x49, 0x5a, 0x45, 0x44, 0x10, 0x02, 0x3a, 0x5c, 0xea, 0x41, 0x59, 0x0a, 0x1f, 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, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, 0x12, 0x25, + 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x73, 0x2f, 0x7b, 0x70, 0x72, 0x6f, 0x74, 0x6f, + 0x63, 0x6f, 0x6c, 0x7d, 0x2f, 0x72, 0x65, 0x77, 0x61, 0x72, 0x64, 0x73, 0x2f, 0x7b, 0x72, 0x65, + 0x77, 0x61, 0x72, 0x64, 0x7d, 0x2a, 0x07, 0x72, 0x65, 0x77, 0x61, 0x72, 0x64, 0x73, 0x32, 0x06, + 0x72, 0x65, 0x77, 0x61, 0x72, 0x64, 0x42, 0x13, 0x0a, 0x11, 0x70, 0x65, 0x72, 0x69, 0x6f, 0x64, + 0x5f, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x4a, 0x04, 0x08, 0x03, 0x10, + 0x04, 0x52, 0x06, 0x70, 0x65, 0x72, 0x69, 0x6f, 0x64, 0x22, 0xcf, 0x02, 0x0a, 0x08, 0x55, 0x53, + 0x44, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x49, 0x0a, 0x06, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, + 0x18, 0x01, 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, 0x55, 0x53, 0x44, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x2e, 0x53, 0x6f, + 0x75, 0x72, 0x63, 0x65, 0x42, 0x03, 0xe0, 0x41, 0x03, 0x52, 0x06, 0x73, 0x6f, 0x75, 0x72, 0x63, + 0x65, 0x12, 0x48, 0x0a, 0x0f, 0x63, 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 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, 0x6f, 0x6e, + 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x45, 0x0a, 0x06, 0x61, + 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x03, 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, 0x06, 0x61, 0x6d, 0x6f, 0x75, + 0x6e, 0x74, 0x12, 0x2e, 0x0a, 0x10, 0x63, 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, + 0x5f, 0x70, 0x72, 0x69, 0x63, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, + 0x03, 0x52, 0x0f, 0x63, 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x50, 0x72, 0x69, + 0x63, 0x65, 0x22, 0x37, 0x0a, 0x06, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x12, 0x16, 0x0a, 0x12, + 0x53, 0x4f, 0x55, 0x52, 0x43, 0x45, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, + 0x45, 0x44, 0x10, 0x00, 0x12, 0x15, 0x0a, 0x11, 0x43, 0x4f, 0x49, 0x4e, 0x42, 0x41, 0x53, 0x45, + 0x5f, 0x45, 0x58, 0x43, 0x48, 0x41, 0x4e, 0x47, 0x45, 0x10, 0x01, 0x22, 0xba, 0x01, 0x0a, 0x12, + 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, 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, 0x86, 0x01, 0x0a, 0x13, 0x4c, 0x69, 0x73, + 0x74, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, + 0x12, 0x42, 0x0a, 0x07, 0x72, 0x65, 0x77, 0x61, 0x72, 0x64, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, + 0x0b, 0x32, 0x23, 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, 0x42, 0x03, 0xe0, 0x41, 0x03, 0x52, 0x07, 0x72, 0x65, 0x77, + 0x61, 0x72, 0x64, 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, 0x47, 0x0a, 0x0f, 0x41, 0x67, 0x67, 0x72, 0x65, 0x67, 0x61, 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, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, + 0x6f, 0x33, } var ( @@ -669,35 +749,37 @@ func file_coinbase_staking_rewards_v1_reward_proto_rawDescGZIP() []byte { return file_coinbase_staking_rewards_v1_reward_proto_rawDescData } -var file_coinbase_staking_rewards_v1_reward_proto_enumTypes = make([]protoimpl.EnumInfo, 2) +var file_coinbase_staking_rewards_v1_reward_proto_enumTypes = make([]protoimpl.EnumInfo, 3) var file_coinbase_staking_rewards_v1_reward_proto_msgTypes = make([]protoimpl.MessageInfo, 4) var file_coinbase_staking_rewards_v1_reward_proto_goTypes = []interface{}{ (AggregationUnit)(0), // 0: coinbase.staking.rewards.v1.AggregationUnit - (USDValue_Source)(0), // 1: coinbase.staking.rewards.v1.USDValue.Source - (*Reward)(nil), // 2: coinbase.staking.rewards.v1.Reward - (*USDValue)(nil), // 3: coinbase.staking.rewards.v1.USDValue - (*ListRewardsRequest)(nil), // 4: coinbase.staking.rewards.v1.ListRewardsRequest - (*ListRewardsResponse)(nil), // 5: coinbase.staking.rewards.v1.ListRewardsResponse - (*timestamppb.Timestamp)(nil), // 6: google.protobuf.Timestamp - (*AssetAmount)(nil), // 7: coinbase.staking.rewards.v1.AssetAmount - (*Stake)(nil), // 8: coinbase.staking.rewards.v1.Stake + (Reward_State)(0), // 1: coinbase.staking.rewards.v1.Reward.State + (USDValue_Source)(0), // 2: coinbase.staking.rewards.v1.USDValue.Source + (*Reward)(nil), // 3: coinbase.staking.rewards.v1.Reward + (*USDValue)(nil), // 4: coinbase.staking.rewards.v1.USDValue + (*ListRewardsRequest)(nil), // 5: coinbase.staking.rewards.v1.ListRewardsRequest + (*ListRewardsResponse)(nil), // 6: coinbase.staking.rewards.v1.ListRewardsResponse + (*timestamppb.Timestamp)(nil), // 7: google.protobuf.Timestamp + (*AssetAmount)(nil), // 8: coinbase.staking.rewards.v1.AssetAmount + (*Stake)(nil), // 9: coinbase.staking.rewards.v1.Stake } var file_coinbase_staking_rewards_v1_reward_proto_depIdxs = []int32{ 0, // 0: coinbase.staking.rewards.v1.Reward.aggregation_unit:type_name -> coinbase.staking.rewards.v1.AggregationUnit - 6, // 1: coinbase.staking.rewards.v1.Reward.period_start_time:type_name -> google.protobuf.Timestamp - 6, // 2: coinbase.staking.rewards.v1.Reward.period_end_time:type_name -> google.protobuf.Timestamp - 7, // 3: coinbase.staking.rewards.v1.Reward.total_earned_native_unit:type_name -> coinbase.staking.rewards.v1.AssetAmount - 3, // 4: coinbase.staking.rewards.v1.Reward.total_earned_usd:type_name -> coinbase.staking.rewards.v1.USDValue - 8, // 5: coinbase.staking.rewards.v1.Reward.ending_balance:type_name -> coinbase.staking.rewards.v1.Stake - 1, // 6: coinbase.staking.rewards.v1.USDValue.source:type_name -> coinbase.staking.rewards.v1.USDValue.Source - 6, // 7: coinbase.staking.rewards.v1.USDValue.conversion_time:type_name -> google.protobuf.Timestamp - 7, // 8: coinbase.staking.rewards.v1.USDValue.amount:type_name -> coinbase.staking.rewards.v1.AssetAmount - 2, // 9: coinbase.staking.rewards.v1.ListRewardsResponse.rewards:type_name -> coinbase.staking.rewards.v1.Reward - 10, // [10:10] is the sub-list for method output_type - 10, // [10:10] is the sub-list for method input_type - 10, // [10:10] is the sub-list for extension type_name - 10, // [10:10] is the sub-list for extension extendee - 0, // [0:10] is the sub-list for field type_name + 7, // 1: coinbase.staking.rewards.v1.Reward.period_start_time:type_name -> google.protobuf.Timestamp + 7, // 2: coinbase.staking.rewards.v1.Reward.period_end_time:type_name -> google.protobuf.Timestamp + 8, // 3: coinbase.staking.rewards.v1.Reward.total_earned_native_unit:type_name -> coinbase.staking.rewards.v1.AssetAmount + 4, // 4: coinbase.staking.rewards.v1.Reward.total_earned_usd:type_name -> coinbase.staking.rewards.v1.USDValue + 9, // 5: coinbase.staking.rewards.v1.Reward.ending_balance:type_name -> coinbase.staking.rewards.v1.Stake + 1, // 6: coinbase.staking.rewards.v1.Reward.reward_state:type_name -> coinbase.staking.rewards.v1.Reward.State + 2, // 7: coinbase.staking.rewards.v1.USDValue.source:type_name -> coinbase.staking.rewards.v1.USDValue.Source + 7, // 8: coinbase.staking.rewards.v1.USDValue.conversion_time:type_name -> google.protobuf.Timestamp + 8, // 9: coinbase.staking.rewards.v1.USDValue.amount:type_name -> coinbase.staking.rewards.v1.AssetAmount + 3, // 10: coinbase.staking.rewards.v1.ListRewardsResponse.rewards:type_name -> coinbase.staking.rewards.v1.Reward + 11, // [11:11] is the sub-list for method output_type + 11, // [11:11] is the sub-list for method input_type + 11, // [11:11] is the sub-list for extension type_name + 11, // [11:11] is the sub-list for extension extendee + 0, // [0:11] is the sub-list for field type_name } func init() { file_coinbase_staking_rewards_v1_reward_proto_init() } @@ -766,7 +848,7 @@ func file_coinbase_staking_rewards_v1_reward_proto_init() { File: protoimpl.DescBuilder{ GoPackagePath: reflect.TypeOf(x{}).PkgPath(), RawDescriptor: file_coinbase_staking_rewards_v1_reward_proto_rawDesc, - NumEnums: 2, + NumEnums: 3, NumMessages: 4, NumExtensions: 0, NumServices: 0, 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 4e65b81..22301b2 100644 --- a/gen/go/coinbase/staking/rewards/v1/reward_service.pb.go +++ b/gen/go/coinbase/staking/rewards/v1/reward_service.pb.go @@ -29,183 +29,239 @@ var file_coinbase_staking_rewards_v1_reward_service_proto_rawDesc = []byte{ 0x77, 0x61, 0x72, 0x64, 0x5f, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x1b, 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, 0x1a, - 0x28, 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, 0x2f, 0x72, 0x65, 0x77, - 0x61, 0x72, 0x64, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x27, 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, 0x2f, 0x73, 0x74, 0x61, 0x6b, 0x65, 0x2e, 0x70, 0x72, 0x6f, - 0x74, 0x6f, 0x1a, 0x1c, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x61, - 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, - 0x1a, 0x17, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x63, 0x6c, 0x69, - 0x65, 0x6e, 0x74, 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, 0x32, 0x84, 0x0e, 0x0a, 0x0d, 0x52, 0x65, - 0x77, 0x61, 0x72, 0x64, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x12, 0xdd, 0x09, 0x0a, 0x0b, - 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, 0x73, 0x12, 0x2f, 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, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, - 0x77, 0x61, 0x72, 0x64, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x30, 0x2e, 0x63, + 0x2b, 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, 0x2f, 0x70, 0x6f, 0x72, + 0x74, 0x66, 0x6f, 0x6c, 0x69, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x28, 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, 0x2f, 0x72, 0x65, 0x77, 0x61, 0x72, 0x64, + 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x27, 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, 0x2f, 0x73, 0x74, 0x61, 0x6b, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, + 0x1c, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x61, 0x6e, 0x6e, 0x6f, + 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x17, 0x67, + 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, + 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, 0x32, 0xdd, 0x13, 0x0a, 0x0d, 0x52, 0x65, 0x77, 0x61, 0x72, + 0x64, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x12, 0xd2, 0x09, 0x0a, 0x0b, 0x4c, 0x69, 0x73, + 0x74, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, 0x73, 0x12, 0x2f, 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, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x77, 0x61, 0x72, + 0x64, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x30, 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, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x77, 0x61, + 0x72, 0x64, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0xdf, 0x08, 0x92, 0x41, + 0xaa, 0x08, 0x0a, 0x06, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, 0x12, 0x0c, 0x4c, 0x69, 0x73, 0x74, + 0x20, 0x72, 0x65, 0x77, 0x61, 0x72, 0x64, 0x73, 0x1a, 0x80, 0x01, 0x4c, 0x69, 0x73, 0x74, 0x73, + 0x20, 0x6f, 0x6e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x20, 0x72, 0x65, 0x77, 0x61, 0x72, 0x64, 0x73, + 0x20, 0x6f, 0x66, 0x20, 0x61, 0x6e, 0x20, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x20, 0x66, + 0x6f, 0x72, 0x20, 0x61, 0x20, 0x73, 0x70, 0x65, 0x63, 0x69, 0x66, 0x69, 0x63, 0x20, 0x70, 0x72, + 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x2c, 0x20, 0x77, 0x69, 0x74, 0x68, 0x20, 0x6f, 0x70, 0x74, + 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x20, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x73, 0x20, 0x66, 0x6f, + 0x72, 0x20, 0x74, 0x69, 0x6d, 0x65, 0x20, 0x72, 0x61, 0x6e, 0x67, 0x65, 0x2c, 0x20, 0x61, 0x67, + 0x67, 0x72, 0x65, 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x70, 0x65, 0x72, 0x69, 0x6f, 0x64, + 0x2c, 0x20, 0x61, 0x6e, 0x64, 0x20, 0x6d, 0x6f, 0x72, 0x65, 0x2e, 0x4a, 0xf5, 0x05, 0x0a, 0x03, + 0x32, 0x30, 0x30, 0x12, 0xed, 0x05, 0x0a, 0x02, 0x4f, 0x4b, 0x12, 0xe6, 0x05, 0x32, 0xe3, 0x05, + 0x7b, 0x22, 0x72, 0x65, 0x77, 0x61, 0x72, 0x64, 0x73, 0x22, 0x3a, 0x5b, 0x7b, 0x22, 0x61, 0x64, + 0x64, 0x72, 0x65, 0x73, 0x73, 0x22, 0x3a, 0x22, 0x62, 0x65, 0x65, 0x66, 0x4b, 0x47, 0x42, 0x57, + 0x65, 0x53, 0x70, 0x48, 0x7a, 0x59, 0x42, 0x48, 0x5a, 0x58, 0x77, 0x70, 0x35, 0x53, 0x6f, 0x37, + 0x77, 0x64, 0x51, 0x47, 0x58, 0x36, 0x6d, 0x75, 0x34, 0x5a, 0x48, 0x43, 0x73, 0x48, 0x33, 0x75, + 0x54, 0x61, 0x72, 0x22, 0x2c, 0x22, 0x65, 0x70, 0x6f, 0x63, 0x68, 0x22, 0x3a, 0x22, 0x35, 0x33, + 0x33, 0x22, 0x2c, 0x22, 0x61, 0x67, 0x67, 0x72, 0x65, 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x55, + 0x6e, 0x69, 0x74, 0x22, 0x3a, 0x22, 0x65, 0x70, 0x6f, 0x63, 0x68, 0x22, 0x2c, 0x22, 0x70, 0x65, + 0x72, 0x69, 0x6f, 0x64, 0x53, 0x74, 0x61, 0x72, 0x74, 0x54, 0x69, 0x6d, 0x65, 0x22, 0x3a, 0x6e, + 0x75, 0x6c, 0x6c, 0x2c, 0x22, 0x70, 0x65, 0x72, 0x69, 0x6f, 0x64, 0x45, 0x6e, 0x64, 0x54, 0x69, + 0x6d, 0x65, 0x22, 0x3a, 0x22, 0x32, 0x30, 0x32, 0x33, 0x2d, 0x31, 0x31, 0x2d, 0x31, 0x36, 0x54, + 0x30, 0x30, 0x3a, 0x31, 0x33, 0x3a, 0x34, 0x34, 0x5a, 0x22, 0x2c, 0x22, 0x74, 0x6f, 0x74, 0x61, + 0x6c, 0x45, 0x61, 0x72, 0x6e, 0x65, 0x64, 0x4e, 0x61, 0x74, 0x69, 0x76, 0x65, 0x55, 0x6e, 0x69, + 0x74, 0x22, 0x3a, 0x7b, 0x22, 0x61, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x22, 0x3a, 0x22, 0x32, 0x32, + 0x34, 0x2e, 0x37, 0x30, 0x39, 0x38, 0x31, 0x34, 0x35, 0x22, 0x2c, 0x22, 0x65, 0x78, 0x70, 0x22, + 0x3a, 0x22, 0x39, 0x22, 0x2c, 0x22, 0x74, 0x69, 0x63, 0x6b, 0x65, 0x72, 0x22, 0x3a, 0x22, 0x53, + 0x4f, 0x4c, 0x22, 0x2c, 0x22, 0x72, 0x61, 0x77, 0x4e, 0x75, 0x6d, 0x65, 0x72, 0x69, 0x63, 0x22, + 0x3a, 0x22, 0x32, 0x32, 0x34, 0x37, 0x30, 0x39, 0x38, 0x31, 0x34, 0x35, 0x30, 0x39, 0x22, 0x7d, + 0x2c, 0x22, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x45, 0x61, 0x72, 0x6e, 0x65, 0x64, 0x55, 0x73, 0x64, + 0x22, 0x3a, 0x6e, 0x75, 0x6c, 0x6c, 0x2c, 0x22, 0x65, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x42, 0x61, + 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x22, 0x3a, 0x6e, 0x75, 0x6c, 0x6c, 0x2c, 0x22, 0x70, 0x72, 0x6f, + 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x22, 0x3a, 0x22, 0x73, 0x6f, 0x6c, 0x61, 0x6e, 0x61, 0x22, 0x7d, + 0x2c, 0x7b, 0x22, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x22, 0x3a, 0x22, 0x62, 0x65, 0x65, + 0x66, 0x4b, 0x47, 0x42, 0x57, 0x65, 0x53, 0x70, 0x48, 0x7a, 0x59, 0x42, 0x48, 0x5a, 0x58, 0x77, + 0x70, 0x35, 0x53, 0x6f, 0x37, 0x77, 0x64, 0x51, 0x47, 0x58, 0x36, 0x6d, 0x75, 0x34, 0x5a, 0x48, + 0x43, 0x73, 0x48, 0x33, 0x75, 0x54, 0x61, 0x72, 0x22, 0x2c, 0x22, 0x65, 0x70, 0x6f, 0x63, 0x68, + 0x22, 0x3a, 0x22, 0x35, 0x33, 0x32, 0x22, 0x2c, 0x22, 0x61, 0x67, 0x67, 0x72, 0x65, 0x67, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x55, 0x6e, 0x69, 0x74, 0x22, 0x3a, 0x22, 0x65, 0x70, 0x6f, 0x63, 0x68, + 0x22, 0x2c, 0x22, 0x70, 0x65, 0x72, 0x69, 0x6f, 0x64, 0x53, 0x74, 0x61, 0x72, 0x74, 0x54, 0x69, + 0x6d, 0x65, 0x22, 0x3a, 0x6e, 0x75, 0x6c, 0x6c, 0x2c, 0x22, 0x70, 0x65, 0x72, 0x69, 0x6f, 0x64, + 0x45, 0x6e, 0x64, 0x54, 0x69, 0x6d, 0x65, 0x22, 0x3a, 0x22, 0x32, 0x30, 0x32, 0x33, 0x2d, 0x31, + 0x31, 0x2d, 0x31, 0x33, 0x54, 0x31, 0x39, 0x3a, 0x33, 0x38, 0x3a, 0x33, 0x36, 0x5a, 0x22, 0x2c, + 0x22, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x45, 0x61, 0x72, 0x6e, 0x65, 0x64, 0x4e, 0x61, 0x74, 0x69, + 0x76, 0x65, 0x55, 0x6e, 0x69, 0x74, 0x22, 0x3a, 0x7b, 0x22, 0x61, 0x6d, 0x6f, 0x75, 0x6e, 0x74, + 0x22, 0x3a, 0x22, 0x32, 0x32, 0x35, 0x2e, 0x30, 0x37, 0x39, 0x34, 0x32, 0x34, 0x31, 0x22, 0x2c, + 0x22, 0x65, 0x78, 0x70, 0x22, 0x3a, 0x22, 0x39, 0x22, 0x2c, 0x22, 0x74, 0x69, 0x63, 0x6b, 0x65, + 0x72, 0x22, 0x3a, 0x22, 0x53, 0x4f, 0x4c, 0x22, 0x2c, 0x22, 0x72, 0x61, 0x77, 0x4e, 0x75, 0x6d, + 0x65, 0x72, 0x69, 0x63, 0x22, 0x3a, 0x22, 0x32, 0x32, 0x35, 0x30, 0x37, 0x39, 0x34, 0x32, 0x34, + 0x30, 0x39, 0x34, 0x22, 0x7d, 0x2c, 0x22, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x45, 0x61, 0x72, 0x6e, + 0x65, 0x64, 0x55, 0x73, 0x64, 0x22, 0x3a, 0x6e, 0x75, 0x6c, 0x6c, 0x2c, 0x22, 0x65, 0x6e, 0x64, + 0x69, 0x6e, 0x67, 0x42, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x22, 0x3a, 0x6e, 0x75, 0x6c, 0x6c, + 0x2c, 0x22, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x22, 0x3a, 0x22, 0x73, 0x6f, 0x6c, + 0x61, 0x6e, 0x61, 0x22, 0x7d, 0x5d, 0x2c, 0x22, 0x6e, 0x65, 0x78, 0x74, 0x50, 0x61, 0x67, 0x65, + 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x22, 0x3a, 0x22, 0x56, 0x41, 0x71, 0x6c, 0x2d, 0x77, 0x74, 0x64, + 0x69, 0x4a, 0x57, 0x6b, 0x57, 0x49, 0x49, 0x39, 0x62, 0x4a, 0x42, 0x44, 0x6e, 0x45, 0x39, 0x6f, + 0x45, 0x63, 0x2d, 0x38, 0x49, 0x6c, 0x67, 0x55, 0x30, 0x44, 0x74, 0x4b, 0x62, 0x78, 0x53, 0x44, + 0x74, 0x42, 0x67, 0x3d, 0x3a, 0x31, 0x3a, 0x31, 0x37, 0x30, 0x30, 0x32, 0x34, 0x31, 0x32, 0x37, + 0x37, 0x22, 0x7d, 0x4a, 0x96, 0x01, 0x0a, 0x03, 0x34, 0x30, 0x30, 0x12, 0x8e, 0x01, 0x0a, 0x2c, + 0x54, 0x68, 0x65, 0x20, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x20, 0x61, 0x74, 0x74, 0x65, + 0x6d, 0x70, 0x74, 0x65, 0x64, 0x20, 0x68, 0x61, 0x73, 0x20, 0x69, 0x6e, 0x76, 0x61, 0x6c, 0x69, + 0x64, 0x20, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x73, 0x12, 0x5e, 0x32, 0x5c, + 0x7b, 0x22, 0x63, 0x6f, 0x64, 0x65, 0x22, 0x3a, 0x33, 0x2c, 0x22, 0x6d, 0x65, 0x73, 0x73, 0x61, + 0x67, 0x65, 0x22, 0x3a, 0x22, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x20, 0x76, 0x61, 0x6c, 0x69, + 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x66, 0x61, 0x69, 0x6c, 0x65, 0x64, 0x2e, 0x20, 0x3c, + 0x52, 0x65, 0x6d, 0x65, 0x64, 0x69, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x61, 0x73, 0x73, 0x69, + 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x20, 0x68, 0x65, 0x72, 0x65, 0x3e, 0x2e, 0x22, 0x2c, 0x22, + 0x64, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x22, 0x3a, 0x5b, 0x5d, 0x7d, 0xda, 0x41, 0x06, 0x70, + 0x61, 0x72, 0x65, 0x6e, 0x74, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x22, 0x12, 0x20, 0x2f, 0x76, 0x31, + 0x2f, 0x7b, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x3d, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, + 0x6c, 0x73, 0x2f, 0x2a, 0x7d, 0x2f, 0x72, 0x65, 0x77, 0x61, 0x72, 0x64, 0x73, 0x12, 0xf3, 0x03, + 0x0a, 0x0a, 0x4c, 0x69, 0x73, 0x74, 0x53, 0x74, 0x61, 0x6b, 0x65, 0x73, 0x12, 0x2e, 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, 0x4c, 0x69, 0x73, 0x74, 0x52, - 0x65, 0x77, 0x61, 0x72, 0x64, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0xea, - 0x08, 0x92, 0x41, 0xb5, 0x08, 0x0a, 0x06, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, 0x12, 0x17, 0x4c, - 0x69, 0x73, 0x74, 0x20, 0x61, 0x6e, 0x64, 0x20, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x20, 0x72, - 0x65, 0x77, 0x61, 0x72, 0x64, 0x73, 0x1a, 0x80, 0x01, 0x4c, 0x69, 0x73, 0x74, 0x73, 0x20, 0x6f, - 0x6e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x20, 0x72, 0x65, 0x77, 0x61, 0x72, 0x64, 0x73, 0x20, 0x6f, - 0x66, 0x20, 0x61, 0x6e, 0x20, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x20, 0x66, 0x6f, 0x72, - 0x20, 0x61, 0x20, 0x73, 0x70, 0x65, 0x63, 0x69, 0x66, 0x69, 0x63, 0x20, 0x70, 0x72, 0x6f, 0x74, - 0x6f, 0x63, 0x6f, 0x6c, 0x2c, 0x20, 0x77, 0x69, 0x74, 0x68, 0x20, 0x6f, 0x70, 0x74, 0x69, 0x6f, - 0x6e, 0x61, 0x6c, 0x20, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x73, 0x20, 0x66, 0x6f, 0x72, 0x20, - 0x74, 0x69, 0x6d, 0x65, 0x20, 0x72, 0x61, 0x6e, 0x67, 0x65, 0x2c, 0x20, 0x61, 0x67, 0x67, 0x72, - 0x65, 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x70, 0x65, 0x72, 0x69, 0x6f, 0x64, 0x2c, 0x20, - 0x61, 0x6e, 0x64, 0x20, 0x6d, 0x6f, 0x72, 0x65, 0x2e, 0x4a, 0xf5, 0x05, 0x0a, 0x03, 0x32, 0x30, - 0x30, 0x12, 0xed, 0x05, 0x0a, 0x02, 0x4f, 0x4b, 0x12, 0xe6, 0x05, 0x32, 0xe3, 0x05, 0x7b, 0x22, - 0x72, 0x65, 0x77, 0x61, 0x72, 0x64, 0x73, 0x22, 0x3a, 0x5b, 0x7b, 0x22, 0x61, 0x64, 0x64, 0x72, - 0x65, 0x73, 0x73, 0x22, 0x3a, 0x22, 0x62, 0x65, 0x65, 0x66, 0x4b, 0x47, 0x42, 0x57, 0x65, 0x53, - 0x70, 0x48, 0x7a, 0x59, 0x42, 0x48, 0x5a, 0x58, 0x77, 0x70, 0x35, 0x53, 0x6f, 0x37, 0x77, 0x64, - 0x51, 0x47, 0x58, 0x36, 0x6d, 0x75, 0x34, 0x5a, 0x48, 0x43, 0x73, 0x48, 0x33, 0x75, 0x54, 0x61, - 0x72, 0x22, 0x2c, 0x22, 0x65, 0x70, 0x6f, 0x63, 0x68, 0x22, 0x3a, 0x22, 0x35, 0x33, 0x33, 0x22, - 0x2c, 0x22, 0x61, 0x67, 0x67, 0x72, 0x65, 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x55, 0x6e, 0x69, - 0x74, 0x22, 0x3a, 0x22, 0x65, 0x70, 0x6f, 0x63, 0x68, 0x22, 0x2c, 0x22, 0x70, 0x65, 0x72, 0x69, - 0x6f, 0x64, 0x53, 0x74, 0x61, 0x72, 0x74, 0x54, 0x69, 0x6d, 0x65, 0x22, 0x3a, 0x6e, 0x75, 0x6c, - 0x6c, 0x2c, 0x22, 0x70, 0x65, 0x72, 0x69, 0x6f, 0x64, 0x45, 0x6e, 0x64, 0x54, 0x69, 0x6d, 0x65, - 0x22, 0x3a, 0x22, 0x32, 0x30, 0x32, 0x33, 0x2d, 0x31, 0x31, 0x2d, 0x31, 0x36, 0x54, 0x30, 0x30, - 0x3a, 0x31, 0x33, 0x3a, 0x34, 0x34, 0x5a, 0x22, 0x2c, 0x22, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x45, - 0x61, 0x72, 0x6e, 0x65, 0x64, 0x4e, 0x61, 0x74, 0x69, 0x76, 0x65, 0x55, 0x6e, 0x69, 0x74, 0x22, - 0x3a, 0x7b, 0x22, 0x61, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x22, 0x3a, 0x22, 0x32, 0x32, 0x34, 0x2e, - 0x37, 0x30, 0x39, 0x38, 0x31, 0x34, 0x35, 0x22, 0x2c, 0x22, 0x65, 0x78, 0x70, 0x22, 0x3a, 0x22, - 0x39, 0x22, 0x2c, 0x22, 0x74, 0x69, 0x63, 0x6b, 0x65, 0x72, 0x22, 0x3a, 0x22, 0x53, 0x4f, 0x4c, - 0x22, 0x2c, 0x22, 0x72, 0x61, 0x77, 0x4e, 0x75, 0x6d, 0x65, 0x72, 0x69, 0x63, 0x22, 0x3a, 0x22, - 0x32, 0x32, 0x34, 0x37, 0x30, 0x39, 0x38, 0x31, 0x34, 0x35, 0x30, 0x39, 0x22, 0x7d, 0x2c, 0x22, - 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x45, 0x61, 0x72, 0x6e, 0x65, 0x64, 0x55, 0x73, 0x64, 0x22, 0x3a, - 0x6e, 0x75, 0x6c, 0x6c, 0x2c, 0x22, 0x65, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x42, 0x61, 0x6c, 0x61, - 0x6e, 0x63, 0x65, 0x22, 0x3a, 0x6e, 0x75, 0x6c, 0x6c, 0x2c, 0x22, 0x70, 0x72, 0x6f, 0x74, 0x6f, - 0x63, 0x6f, 0x6c, 0x22, 0x3a, 0x22, 0x73, 0x6f, 0x6c, 0x61, 0x6e, 0x61, 0x22, 0x7d, 0x2c, 0x7b, - 0x22, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x22, 0x3a, 0x22, 0x62, 0x65, 0x65, 0x66, 0x4b, - 0x47, 0x42, 0x57, 0x65, 0x53, 0x70, 0x48, 0x7a, 0x59, 0x42, 0x48, 0x5a, 0x58, 0x77, 0x70, 0x35, - 0x53, 0x6f, 0x37, 0x77, 0x64, 0x51, 0x47, 0x58, 0x36, 0x6d, 0x75, 0x34, 0x5a, 0x48, 0x43, 0x73, - 0x48, 0x33, 0x75, 0x54, 0x61, 0x72, 0x22, 0x2c, 0x22, 0x65, 0x70, 0x6f, 0x63, 0x68, 0x22, 0x3a, - 0x22, 0x35, 0x33, 0x32, 0x22, 0x2c, 0x22, 0x61, 0x67, 0x67, 0x72, 0x65, 0x67, 0x61, 0x74, 0x69, - 0x6f, 0x6e, 0x55, 0x6e, 0x69, 0x74, 0x22, 0x3a, 0x22, 0x65, 0x70, 0x6f, 0x63, 0x68, 0x22, 0x2c, - 0x22, 0x70, 0x65, 0x72, 0x69, 0x6f, 0x64, 0x53, 0x74, 0x61, 0x72, 0x74, 0x54, 0x69, 0x6d, 0x65, - 0x22, 0x3a, 0x6e, 0x75, 0x6c, 0x6c, 0x2c, 0x22, 0x70, 0x65, 0x72, 0x69, 0x6f, 0x64, 0x45, 0x6e, - 0x64, 0x54, 0x69, 0x6d, 0x65, 0x22, 0x3a, 0x22, 0x32, 0x30, 0x32, 0x33, 0x2d, 0x31, 0x31, 0x2d, - 0x31, 0x33, 0x54, 0x31, 0x39, 0x3a, 0x33, 0x38, 0x3a, 0x33, 0x36, 0x5a, 0x22, 0x2c, 0x22, 0x74, - 0x6f, 0x74, 0x61, 0x6c, 0x45, 0x61, 0x72, 0x6e, 0x65, 0x64, 0x4e, 0x61, 0x74, 0x69, 0x76, 0x65, - 0x55, 0x6e, 0x69, 0x74, 0x22, 0x3a, 0x7b, 0x22, 0x61, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x22, 0x3a, - 0x22, 0x32, 0x32, 0x35, 0x2e, 0x30, 0x37, 0x39, 0x34, 0x32, 0x34, 0x31, 0x22, 0x2c, 0x22, 0x65, - 0x78, 0x70, 0x22, 0x3a, 0x22, 0x39, 0x22, 0x2c, 0x22, 0x74, 0x69, 0x63, 0x6b, 0x65, 0x72, 0x22, - 0x3a, 0x22, 0x53, 0x4f, 0x4c, 0x22, 0x2c, 0x22, 0x72, 0x61, 0x77, 0x4e, 0x75, 0x6d, 0x65, 0x72, - 0x69, 0x63, 0x22, 0x3a, 0x22, 0x32, 0x32, 0x35, 0x30, 0x37, 0x39, 0x34, 0x32, 0x34, 0x30, 0x39, - 0x34, 0x22, 0x7d, 0x2c, 0x22, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x45, 0x61, 0x72, 0x6e, 0x65, 0x64, - 0x55, 0x73, 0x64, 0x22, 0x3a, 0x6e, 0x75, 0x6c, 0x6c, 0x2c, 0x22, 0x65, 0x6e, 0x64, 0x69, 0x6e, - 0x67, 0x42, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x22, 0x3a, 0x6e, 0x75, 0x6c, 0x6c, 0x2c, 0x22, - 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x22, 0x3a, 0x22, 0x73, 0x6f, 0x6c, 0x61, 0x6e, - 0x61, 0x22, 0x7d, 0x5d, 0x2c, 0x22, 0x6e, 0x65, 0x78, 0x74, 0x50, 0x61, 0x67, 0x65, 0x54, 0x6f, - 0x6b, 0x65, 0x6e, 0x22, 0x3a, 0x22, 0x56, 0x41, 0x71, 0x6c, 0x2d, 0x77, 0x74, 0x64, 0x69, 0x4a, - 0x57, 0x6b, 0x57, 0x49, 0x49, 0x39, 0x62, 0x4a, 0x42, 0x44, 0x6e, 0x45, 0x39, 0x6f, 0x45, 0x63, - 0x2d, 0x38, 0x49, 0x6c, 0x67, 0x55, 0x30, 0x44, 0x74, 0x4b, 0x62, 0x78, 0x53, 0x44, 0x74, 0x42, - 0x67, 0x3d, 0x3a, 0x31, 0x3a, 0x31, 0x37, 0x30, 0x30, 0x32, 0x34, 0x31, 0x32, 0x37, 0x37, 0x22, - 0x7d, 0x4a, 0x96, 0x01, 0x0a, 0x03, 0x34, 0x30, 0x30, 0x12, 0x8e, 0x01, 0x0a, 0x2c, 0x54, 0x68, - 0x65, 0x20, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x20, 0x61, 0x74, 0x74, 0x65, 0x6d, 0x70, - 0x74, 0x65, 0x64, 0x20, 0x68, 0x61, 0x73, 0x20, 0x69, 0x6e, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x20, - 0x70, 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x73, 0x12, 0x5e, 0x32, 0x5c, 0x7b, 0x22, - 0x63, 0x6f, 0x64, 0x65, 0x22, 0x3a, 0x33, 0x2c, 0x22, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, - 0x22, 0x3a, 0x22, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x20, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, - 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x66, 0x61, 0x69, 0x6c, 0x65, 0x64, 0x2e, 0x20, 0x3c, 0x52, 0x65, - 0x6d, 0x65, 0x64, 0x69, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x61, 0x73, 0x73, 0x69, 0x73, 0x74, - 0x61, 0x6e, 0x63, 0x65, 0x20, 0x68, 0x65, 0x72, 0x65, 0x3e, 0x2e, 0x22, 0x2c, 0x22, 0x64, 0x65, - 0x74, 0x61, 0x69, 0x6c, 0x73, 0x22, 0x3a, 0x5b, 0x5d, 0x7d, 0xda, 0x41, 0x06, 0x70, 0x61, 0x72, - 0x65, 0x6e, 0x74, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x22, 0x12, 0x20, 0x2f, 0x76, 0x31, 0x2f, 0x7b, - 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x3d, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x73, - 0x2f, 0x2a, 0x7d, 0x2f, 0x72, 0x65, 0x77, 0x61, 0x72, 0x64, 0x73, 0x12, 0xf3, 0x03, 0x0a, 0x0a, - 0x4c, 0x69, 0x73, 0x74, 0x53, 0x74, 0x61, 0x6b, 0x65, 0x73, 0x12, 0x2e, 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, 0x4c, 0x69, 0x73, 0x74, 0x53, 0x74, 0x61, - 0x6b, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2f, 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, 0x4c, 0x69, 0x73, 0x74, 0x53, 0x74, 0x61, - 0x6b, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x83, 0x03, 0x92, 0x41, - 0xcf, 0x02, 0x0a, 0x05, 0x53, 0x74, 0x61, 0x6b, 0x65, 0x12, 0x20, 0x4c, 0x69, 0x73, 0x74, 0x20, - 0x61, 0x6e, 0x64, 0x20, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x20, 0x73, 0x74, 0x61, 0x6b, 0x69, - 0x6e, 0x67, 0x20, 0x62, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x73, 0x1a, 0x56, 0x4c, 0x69, 0x73, - 0x74, 0x73, 0x20, 0x73, 0x74, 0x61, 0x6b, 0x69, 0x6e, 0x67, 0x20, 0x62, 0x61, 0x6c, 0x61, 0x6e, - 0x63, 0x65, 0x20, 0x6f, 0x66, 0x20, 0x61, 0x20, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, - 0x2c, 0x20, 0x77, 0x69, 0x74, 0x68, 0x20, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x20, - 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x73, 0x20, 0x66, 0x6f, 0x72, 0x20, 0x74, 0x69, 0x6d, 0x65, - 0x20, 0x72, 0x61, 0x6e, 0x67, 0x65, 0x20, 0x61, 0x6e, 0x64, 0x20, 0x61, 0x64, 0x64, 0x72, 0x65, - 0x73, 0x73, 0x2e, 0x4a, 0x33, 0x0a, 0x03, 0x32, 0x30, 0x30, 0x12, 0x2c, 0x0a, 0x02, 0x4f, 0x4b, - 0x12, 0x26, 0x0a, 0x24, 0x1a, 0x22, 0x23, 0x2f, 0x64, 0x65, 0x66, 0x69, 0x6e, 0x69, 0x74, 0x69, - 0x6f, 0x6e, 0x73, 0x2f, 0x76, 0x31, 0x4c, 0x69, 0x73, 0x74, 0x53, 0x74, 0x61, 0x6b, 0x65, 0x73, - 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x4a, 0x96, 0x01, 0x0a, 0x03, 0x34, 0x30, 0x30, - 0x12, 0x8e, 0x01, 0x0a, 0x2c, 0x54, 0x68, 0x65, 0x20, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, - 0x20, 0x61, 0x74, 0x74, 0x65, 0x6d, 0x70, 0x74, 0x65, 0x64, 0x20, 0x68, 0x61, 0x73, 0x20, 0x69, - 0x6e, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x20, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, - 0x73, 0x12, 0x5e, 0x32, 0x5c, 0x7b, 0x22, 0x63, 0x6f, 0x64, 0x65, 0x22, 0x3a, 0x33, 0x2c, 0x22, - 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x22, 0x3a, 0x22, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, - 0x20, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x66, 0x61, 0x69, 0x6c, - 0x65, 0x64, 0x2e, 0x20, 0x3c, 0x52, 0x65, 0x6d, 0x65, 0x64, 0x69, 0x61, 0x74, 0x69, 0x6f, 0x6e, - 0x20, 0x61, 0x73, 0x73, 0x69, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x20, 0x68, 0x65, 0x72, 0x65, - 0x3e, 0x2e, 0x22, 0x2c, 0x22, 0x64, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x22, 0x3a, 0x5b, 0x5d, - 0x7d, 0xda, 0x41, 0x06, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x21, - 0x12, 0x1f, 0x2f, 0x76, 0x31, 0x2f, 0x7b, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x3d, 0x70, 0x72, - 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, 0xd5, 0x04, 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, - 0x61, 0x69, 0x6e, 0x2c, 0x20, 0x73, 0x74, 0x61, 0x6b, 0x69, 0x6e, 0x67, 0x2d, 0x72, 0x65, 0x6c, - 0x61, 0x74, 0x65, 0x64, 0x20, 0x72, 0x65, 0x77, 0x61, 0x72, 0x64, 0x73, 0x20, 0x64, 0x61, 0x74, - 0x61, 0x2e, 0x32, 0x02, 0x76, 0x31, 0x1a, 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, 0x22, 0x08, 0x2f, 0x72, 0x65, 0x77, 0x61, 0x72, 0x64, 0x73, 0x2a, 0x01, 0x02, 0x32, - 0x10, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2f, 0x6a, 0x73, 0x6f, - 0x6e, 0x3a, 0x10, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2f, 0x6a, - 0x73, 0x6f, 0x6e, 0x52, 0x4c, 0x0a, 0x03, 0x34, 0x30, 0x31, 0x12, 0x45, 0x0a, 0x31, 0x52, 0x65, - 0x74, 0x75, 0x72, 0x6e, 0x65, 0x64, 0x20, 0x69, 0x66, 0x20, 0x61, 0x75, 0x74, 0x68, 0x65, 0x6e, - 0x74, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x69, 0x6e, 0x66, 0x6f, 0x72, 0x6d, 0x61, - 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x69, 0x73, 0x20, 0x69, 0x6e, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x12, - 0x10, 0x32, 0x0e, 0x22, 0x55, 0x6e, 0x61, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x7a, 0x65, 0x64, - 0x22, 0x52, 0x76, 0x0a, 0x03, 0x35, 0x30, 0x30, 0x12, 0x6f, 0x0a, 0x2f, 0x52, 0x65, 0x74, 0x75, - 0x72, 0x6e, 0x65, 0x64, 0x20, 0x77, 0x68, 0x65, 0x6e, 0x20, 0x61, 0x6e, 0x20, 0x69, 0x6e, 0x74, - 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x20, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x20, 0x65, 0x72, 0x72, - 0x6f, 0x72, 0x20, 0x68, 0x61, 0x70, 0x70, 0x65, 0x6e, 0x73, 0x2e, 0x12, 0x3c, 0x32, 0x3a, 0x7b, - 0x22, 0x63, 0x6f, 0x64, 0x65, 0x22, 0x3a, 0x33, 0x2c, 0x22, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, - 0x65, 0x22, 0x3a, 0x22, 0x49, 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x20, 0x73, 0x65, 0x72, - 0x76, 0x65, 0x72, 0x20, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x2e, 0x22, 0x2c, 0x22, 0x64, 0x65, 0x74, - 0x61, 0x69, 0x6c, 0x73, 0x22, 0x3a, 0x5b, 0x5d, 0x7d, 0x6a, 0x6c, 0x0a, 0x06, 0x52, 0x65, 0x77, - 0x61, 0x72, 0x64, 0x12, 0x62, 0x41, 0x20, 0x68, 0x69, 0x67, 0x68, 0x2d, 0x6c, 0x65, 0x76, 0x65, - 0x6c, 0x20, 0x76, 0x69, 0x65, 0x77, 0x20, 0x6f, 0x66, 0x20, 0x61, 0x6e, 0x20, 0x61, 0x64, 0x64, - 0x72, 0x65, 0x73, 0x73, 0x27, 0x73, 0x20, 0x72, 0x65, 0x77, 0x61, 0x72, 0x64, 0x73, 0x20, 0x61, - 0x67, 0x67, 0x72, 0x65, 0x67, 0x61, 0x74, 0x65, 0x64, 0x20, 0x6f, 0x76, 0x65, 0x72, 0x20, 0x73, - 0x6f, 0x6d, 0x65, 0x20, 0x70, 0x65, 0x72, 0x69, 0x6f, 0x64, 0x20, 0x6f, 0x66, 0x20, 0x74, 0x69, - 0x6d, 0x65, 0x20, 0x28, 0x65, 0x78, 0x3a, 0x20, 0x6f, 0x76, 0x65, 0x72, 0x20, 0x61, 0x6e, 0x20, - 0x45, 0x70, 0x6f, 0x63, 0x68, 0x29, 0x2e, 0x6a, 0x6f, 0x0a, 0x05, 0x53, 0x74, 0x61, 0x6b, 0x65, - 0x12, 0x66, 0x41, 0x20, 0x73, 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, 0x20, 0x6f, 0x66, 0x20, - 0x61, 0x6e, 0x20, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x27, 0x73, 0x20, 0x73, 0x74, 0x61, - 0x6b, 0x69, 0x6e, 0x67, 0x2d, 0x72, 0x65, 0x6c, 0x61, 0x74, 0x65, 0x64, 0x20, 0x62, 0x61, 0x6c, - 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, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, + 0x72, 0x65, 0x77, 0x61, 0x72, 0x64, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x53, + 0x74, 0x61, 0x6b, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2f, 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, 0x4c, 0x69, 0x73, 0x74, 0x53, + 0x74, 0x61, 0x6b, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x83, 0x03, + 0x92, 0x41, 0xcf, 0x02, 0x0a, 0x05, 0x53, 0x74, 0x61, 0x6b, 0x65, 0x12, 0x20, 0x4c, 0x69, 0x73, + 0x74, 0x20, 0x61, 0x6e, 0x64, 0x20, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x20, 0x73, 0x74, 0x61, + 0x6b, 0x69, 0x6e, 0x67, 0x20, 0x62, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x73, 0x1a, 0x56, 0x4c, + 0x69, 0x73, 0x74, 0x73, 0x20, 0x73, 0x74, 0x61, 0x6b, 0x69, 0x6e, 0x67, 0x20, 0x62, 0x61, 0x6c, + 0x61, 0x6e, 0x63, 0x65, 0x20, 0x6f, 0x66, 0x20, 0x61, 0x20, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, + 0x6f, 0x6c, 0x2c, 0x20, 0x77, 0x69, 0x74, 0x68, 0x20, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61, + 0x6c, 0x20, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x73, 0x20, 0x66, 0x6f, 0x72, 0x20, 0x74, 0x69, + 0x6d, 0x65, 0x20, 0x72, 0x61, 0x6e, 0x67, 0x65, 0x20, 0x61, 0x6e, 0x64, 0x20, 0x61, 0x64, 0x64, + 0x72, 0x65, 0x73, 0x73, 0x2e, 0x4a, 0x33, 0x0a, 0x03, 0x32, 0x30, 0x30, 0x12, 0x2c, 0x0a, 0x02, + 0x4f, 0x4b, 0x12, 0x26, 0x0a, 0x24, 0x1a, 0x22, 0x23, 0x2f, 0x64, 0x65, 0x66, 0x69, 0x6e, 0x69, + 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x76, 0x31, 0x4c, 0x69, 0x73, 0x74, 0x53, 0x74, 0x61, 0x6b, + 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x4a, 0x96, 0x01, 0x0a, 0x03, 0x34, + 0x30, 0x30, 0x12, 0x8e, 0x01, 0x0a, 0x2c, 0x54, 0x68, 0x65, 0x20, 0x72, 0x65, 0x71, 0x75, 0x65, + 0x73, 0x74, 0x20, 0x61, 0x74, 0x74, 0x65, 0x6d, 0x70, 0x74, 0x65, 0x64, 0x20, 0x68, 0x61, 0x73, + 0x20, 0x69, 0x6e, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x20, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, + 0x65, 0x72, 0x73, 0x12, 0x5e, 0x32, 0x5c, 0x7b, 0x22, 0x63, 0x6f, 0x64, 0x65, 0x22, 0x3a, 0x33, + 0x2c, 0x22, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x22, 0x3a, 0x22, 0x46, 0x69, 0x6c, 0x74, + 0x65, 0x72, 0x20, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x66, 0x61, + 0x69, 0x6c, 0x65, 0x64, 0x2e, 0x20, 0x3c, 0x52, 0x65, 0x6d, 0x65, 0x64, 0x69, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x20, 0x61, 0x73, 0x73, 0x69, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x20, 0x68, 0x65, + 0x72, 0x65, 0x3e, 0x2e, 0x22, 0x2c, 0x22, 0x64, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x22, 0x3a, + 0x5b, 0x5d, 0x7d, 0xda, 0x41, 0x06, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x82, 0xd3, 0xe4, 0x93, + 0x02, 0x21, 0x12, 0x1f, 0x2f, 0x76, 0x31, 0x2f, 0x7b, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x3d, + 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x73, 0x2f, 0x2a, 0x7d, 0x2f, 0x73, 0x74, 0x61, + 0x6b, 0x65, 0x73, 0x12, 0xe3, 0x02, 0x0a, 0x0c, 0x47, 0x65, 0x74, 0x50, 0x6f, 0x72, 0x74, 0x66, + 0x6f, 0x6c, 0x69, 0x6f, 0x12, 0x30, 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, 0x47, 0x65, 0x74, 0x50, 0x6f, 0x72, 0x74, 0x66, 0x6f, 0x6c, 0x69, 0x6f, 0x52, + 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x26, 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, 0x6f, 0x72, 0x74, 0x66, 0x6f, 0x6c, 0x69, 0x6f, 0x22, 0xf8, + 0x01, 0x92, 0x41, 0xce, 0x01, 0x0a, 0x09, 0x50, 0x6f, 0x72, 0x74, 0x66, 0x6f, 0x6c, 0x69, 0x6f, + 0x4a, 0x2a, 0x0a, 0x03, 0x32, 0x30, 0x30, 0x12, 0x23, 0x0a, 0x02, 0x4f, 0x4b, 0x12, 0x1d, 0x0a, + 0x1b, 0x1a, 0x19, 0x23, 0x2f, 0x64, 0x65, 0x66, 0x69, 0x6e, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, + 0x2f, 0x76, 0x31, 0x50, 0x6f, 0x72, 0x74, 0x66, 0x6f, 0x6c, 0x69, 0x6f, 0x4a, 0x94, 0x01, 0x0a, + 0x03, 0x34, 0x30, 0x30, 0x12, 0x8c, 0x01, 0x0a, 0x2c, 0x54, 0x68, 0x65, 0x20, 0x72, 0x65, 0x71, + 0x75, 0x65, 0x73, 0x74, 0x20, 0x61, 0x74, 0x74, 0x65, 0x6d, 0x70, 0x74, 0x65, 0x64, 0x20, 0x68, + 0x61, 0x73, 0x20, 0x69, 0x6e, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x20, 0x70, 0x61, 0x72, 0x61, 0x6d, + 0x65, 0x74, 0x65, 0x72, 0x73, 0x12, 0x5c, 0x32, 0x5a, 0x7b, 0x22, 0x63, 0x6f, 0x64, 0x65, 0x22, + 0x3a, 0x33, 0x2c, 0x22, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x22, 0x3a, 0x22, 0x43, 0x6f, + 0x75, 0x6c, 0x64, 0x6e, 0x27, 0x74, 0x20, 0x67, 0x65, 0x74, 0x20, 0x70, 0x6f, 0x72, 0x74, 0x66, + 0x6f, 0x6c, 0x69, 0x6f, 0x2e, 0x20, 0x3c, 0x52, 0x65, 0x6d, 0x65, 0x64, 0x69, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x20, 0x61, 0x73, 0x73, 0x69, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x20, 0x68, 0x65, + 0x72, 0x65, 0x3e, 0x2e, 0x22, 0x2c, 0x22, 0x64, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x22, 0x3a, + 0x5b, 0x5d, 0x7d, 0xda, 0x41, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x19, + 0x12, 0x17, 0x2f, 0x76, 0x31, 0x2f, 0x7b, 0x6e, 0x61, 0x6d, 0x65, 0x3d, 0x70, 0x6f, 0x72, 0x74, + 0x66, 0x6f, 0x6c, 0x69, 0x6f, 0x73, 0x2f, 0x2a, 0x7d, 0x12, 0xfb, 0x02, 0x0a, 0x0e, 0x4c, 0x69, + 0x73, 0x74, 0x50, 0x6f, 0x72, 0x74, 0x66, 0x6f, 0x6c, 0x69, 0x6f, 0x73, 0x12, 0x32, 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, 0x4c, 0x69, 0x73, 0x74, 0x50, + 0x6f, 0x72, 0x74, 0x66, 0x6f, 0x6c, 0x69, 0x6f, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, + 0x1a, 0x33, 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, 0x4c, + 0x69, 0x73, 0x74, 0x50, 0x6f, 0x72, 0x74, 0x66, 0x6f, 0x6c, 0x69, 0x6f, 0x73, 0x52, 0x65, 0x73, + 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0xff, 0x01, 0x92, 0x41, 0xdc, 0x01, 0x0a, 0x09, 0x50, 0x6f, + 0x72, 0x74, 0x66, 0x6f, 0x6c, 0x69, 0x6f, 0x4a, 0x37, 0x0a, 0x03, 0x32, 0x30, 0x30, 0x12, 0x30, + 0x0a, 0x02, 0x4f, 0x4b, 0x12, 0x2a, 0x0a, 0x28, 0x1a, 0x26, 0x23, 0x2f, 0x64, 0x65, 0x66, 0x69, + 0x6e, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x76, 0x31, 0x4c, 0x69, 0x73, 0x74, 0x50, 0x6f, + 0x72, 0x74, 0x66, 0x6f, 0x6c, 0x69, 0x6f, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, + 0x4a, 0x95, 0x01, 0x0a, 0x03, 0x34, 0x30, 0x30, 0x12, 0x8d, 0x01, 0x0a, 0x2c, 0x54, 0x68, 0x65, + 0x20, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x20, 0x61, 0x74, 0x74, 0x65, 0x6d, 0x70, 0x74, + 0x65, 0x64, 0x20, 0x68, 0x61, 0x73, 0x20, 0x69, 0x6e, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x20, 0x70, + 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x73, 0x12, 0x5d, 0x32, 0x5b, 0x7b, 0x22, 0x63, + 0x6f, 0x64, 0x65, 0x22, 0x3a, 0x33, 0x2c, 0x22, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x22, + 0x3a, 0x22, 0x43, 0x6f, 0x75, 0x6c, 0x64, 0x6e, 0x27, 0x74, 0x20, 0x66, 0x69, 0x6e, 0x64, 0x20, + 0x70, 0x6f, 0x72, 0x74, 0x66, 0x6f, 0x6c, 0x69, 0x6f, 0x2e, 0x20, 0x3c, 0x52, 0x65, 0x6d, 0x65, + 0x64, 0x69, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x61, 0x73, 0x73, 0x69, 0x73, 0x74, 0x61, 0x6e, + 0x63, 0x65, 0x20, 0x68, 0x65, 0x72, 0x65, 0x3e, 0x2e, 0x22, 0x2c, 0x22, 0x64, 0x65, 0x74, 0x61, + 0x69, 0x6c, 0x73, 0x22, 0x3a, 0x5b, 0x5d, 0x7d, 0xda, 0x41, 0x06, 0x70, 0x61, 0x72, 0x65, 0x6e, + 0x74, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x10, 0x12, 0x0e, 0x2f, 0x76, 0x31, 0x2f, 0x70, 0x6f, 0x72, + 0x74, 0x66, 0x6f, 0x6c, 0x69, 0x6f, 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, 0xc0, 0x04, 0x92, 0x41, 0xbc, 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, 0x61, 0x69, 0x6e, 0x2c, 0x20, 0x73, 0x74, 0x61, 0x6b, 0x69, + 0x6e, 0x67, 0x2d, 0x72, 0x65, 0x6c, 0x61, 0x74, 0x65, 0x64, 0x20, 0x72, 0x65, 0x77, 0x61, 0x72, + 0x64, 0x73, 0x20, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x32, 0x02, 0x76, 0x31, 0x1a, 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, 0x22, 0x08, 0x2f, 0x72, 0x65, 0x77, 0x61, 0x72, + 0x64, 0x73, 0x2a, 0x01, 0x02, 0x32, 0x10, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x2f, 0x6a, 0x73, 0x6f, 0x6e, 0x3a, 0x10, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x2f, 0x6a, 0x73, 0x6f, 0x6e, 0x52, 0x4c, 0x0a, 0x03, 0x34, 0x30, 0x31, + 0x12, 0x45, 0x0a, 0x31, 0x52, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x65, 0x64, 0x20, 0x69, 0x66, 0x20, + 0x61, 0x75, 0x74, 0x68, 0x65, 0x6e, 0x74, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x69, + 0x6e, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x69, 0x73, 0x20, 0x69, 0x6e, + 0x76, 0x61, 0x6c, 0x69, 0x64, 0x12, 0x10, 0x32, 0x0e, 0x22, 0x55, 0x6e, 0x61, 0x75, 0x74, 0x68, + 0x6f, 0x72, 0x69, 0x7a, 0x65, 0x64, 0x22, 0x52, 0x76, 0x0a, 0x03, 0x35, 0x30, 0x30, 0x12, 0x6f, + 0x0a, 0x2f, 0x52, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x65, 0x64, 0x20, 0x77, 0x68, 0x65, 0x6e, 0x20, + 0x61, 0x6e, 0x20, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x20, 0x73, 0x65, 0x72, 0x76, + 0x65, 0x72, 0x20, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x20, 0x68, 0x61, 0x70, 0x70, 0x65, 0x6e, 0x73, + 0x2e, 0x12, 0x3c, 0x32, 0x3a, 0x7b, 0x22, 0x63, 0x6f, 0x64, 0x65, 0x22, 0x3a, 0x33, 0x2c, 0x22, + 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x22, 0x3a, 0x22, 0x49, 0x6e, 0x74, 0x65, 0x72, 0x6e, + 0x61, 0x6c, 0x20, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x20, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x2e, + 0x22, 0x2c, 0x22, 0x64, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x22, 0x3a, 0x5b, 0x5d, 0x7d, 0x6a, + 0x6c, 0x0a, 0x06, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, 0x12, 0x62, 0x41, 0x20, 0x68, 0x69, 0x67, + 0x68, 0x2d, 0x6c, 0x65, 0x76, 0x65, 0x6c, 0x20, 0x76, 0x69, 0x65, 0x77, 0x20, 0x6f, 0x66, 0x20, + 0x61, 0x6e, 0x20, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x27, 0x73, 0x20, 0x72, 0x65, 0x77, + 0x61, 0x72, 0x64, 0x73, 0x20, 0x61, 0x67, 0x67, 0x72, 0x65, 0x67, 0x61, 0x74, 0x65, 0x64, 0x20, + 0x6f, 0x76, 0x65, 0x72, 0x20, 0x73, 0x6f, 0x6d, 0x65, 0x20, 0x70, 0x65, 0x72, 0x69, 0x6f, 0x64, + 0x20, 0x6f, 0x66, 0x20, 0x74, 0x69, 0x6d, 0x65, 0x20, 0x28, 0x65, 0x78, 0x3a, 0x20, 0x6f, 0x76, + 0x65, 0x72, 0x20, 0x61, 0x6e, 0x20, 0x45, 0x70, 0x6f, 0x63, 0x68, 0x29, 0x2e, 0x6a, 0x5a, 0x0a, + 0x05, 0x53, 0x74, 0x61, 0x6b, 0x65, 0x12, 0x51, 0x41, 0x20, 0x73, 0x6e, 0x61, 0x70, 0x73, 0x68, + 0x6f, 0x74, 0x20, 0x6f, 0x66, 0x20, 0x61, 0x6e, 0x20, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, + 0x27, 0x73, 0x20, 0x73, 0x74, 0x61, 0x6b, 0x69, 0x6e, 0x67, 0x2d, 0x72, 0x65, 0x6c, 0x61, 0x74, + 0x65, 0x64, 0x20, 0x62, 0x61, 0x6c, 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, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, + 0x33, } var file_coinbase_staking_rewards_v1_reward_service_proto_goTypes = []interface{}{ - (*ListRewardsRequest)(nil), // 0: coinbase.staking.rewards.v1.ListRewardsRequest - (*ListStakesRequest)(nil), // 1: coinbase.staking.rewards.v1.ListStakesRequest - (*ListRewardsResponse)(nil), // 2: coinbase.staking.rewards.v1.ListRewardsResponse - (*ListStakesResponse)(nil), // 3: coinbase.staking.rewards.v1.ListStakesResponse + (*ListRewardsRequest)(nil), // 0: coinbase.staking.rewards.v1.ListRewardsRequest + (*ListStakesRequest)(nil), // 1: coinbase.staking.rewards.v1.ListStakesRequest + (*GetPortfolioRequest)(nil), // 2: coinbase.staking.rewards.v1.GetPortfolioRequest + (*ListPortfoliosRequest)(nil), // 3: coinbase.staking.rewards.v1.ListPortfoliosRequest + (*ListRewardsResponse)(nil), // 4: coinbase.staking.rewards.v1.ListRewardsResponse + (*ListStakesResponse)(nil), // 5: coinbase.staking.rewards.v1.ListStakesResponse + (*Portfolio)(nil), // 6: coinbase.staking.rewards.v1.Portfolio + (*ListPortfoliosResponse)(nil), // 7: coinbase.staking.rewards.v1.ListPortfoliosResponse } var file_coinbase_staking_rewards_v1_reward_service_proto_depIdxs = []int32{ 0, // 0: coinbase.staking.rewards.v1.RewardService.ListRewards:input_type -> coinbase.staking.rewards.v1.ListRewardsRequest 1, // 1: coinbase.staking.rewards.v1.RewardService.ListStakes:input_type -> coinbase.staking.rewards.v1.ListStakesRequest - 2, // 2: coinbase.staking.rewards.v1.RewardService.ListRewards:output_type -> coinbase.staking.rewards.v1.ListRewardsResponse - 3, // 3: coinbase.staking.rewards.v1.RewardService.ListStakes:output_type -> coinbase.staking.rewards.v1.ListStakesResponse - 2, // [2:4] is the sub-list for method output_type - 0, // [0:2] is the sub-list for method input_type + 2, // 2: coinbase.staking.rewards.v1.RewardService.GetPortfolio:input_type -> coinbase.staking.rewards.v1.GetPortfolioRequest + 3, // 3: coinbase.staking.rewards.v1.RewardService.ListPortfolios:input_type -> coinbase.staking.rewards.v1.ListPortfoliosRequest + 4, // 4: coinbase.staking.rewards.v1.RewardService.ListRewards:output_type -> coinbase.staking.rewards.v1.ListRewardsResponse + 5, // 5: coinbase.staking.rewards.v1.RewardService.ListStakes:output_type -> coinbase.staking.rewards.v1.ListStakesResponse + 6, // 6: coinbase.staking.rewards.v1.RewardService.GetPortfolio:output_type -> coinbase.staking.rewards.v1.Portfolio + 7, // 7: coinbase.staking.rewards.v1.RewardService.ListPortfolios:output_type -> coinbase.staking.rewards.v1.ListPortfoliosResponse + 4, // [4:8] is the sub-list for method output_type + 0, // [0:4] is the sub-list for method input_type 0, // [0:0] is the sub-list for extension type_name 0, // [0:0] is the sub-list for extension extendee 0, // [0:0] is the sub-list for field type_name @@ -216,6 +272,7 @@ func file_coinbase_staking_rewards_v1_reward_service_proto_init() { if File_coinbase_staking_rewards_v1_reward_service_proto != nil { return } + file_coinbase_staking_rewards_v1_portfolio_proto_init() file_coinbase_staking_rewards_v1_reward_proto_init() file_coinbase_staking_rewards_v1_stake_proto_init() type x struct{} diff --git a/gen/go/coinbase/staking/rewards/v1/reward_service.pb.gw.go b/gen/go/coinbase/staking/rewards/v1/reward_service.pb.gw.go index 8922b61..ec95999 100644 --- a/gen/go/coinbase/staking/rewards/v1/reward_service.pb.gw.go +++ b/gen/go/coinbase/staking/rewards/v1/reward_service.pb.gw.go @@ -171,6 +171,94 @@ func local_request_RewardService_ListStakes_0(ctx context.Context, marshaler run } +func request_RewardService_GetPortfolio_0(ctx context.Context, marshaler runtime.Marshaler, client RewardServiceClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { + var protoReq GetPortfolioRequest + var metadata runtime.ServerMetadata + + var ( + val string + ok bool + err error + _ = err + ) + + val, ok = pathParams["name"] + if !ok { + return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "name") + } + + protoReq.Name, err = runtime.String(val) + if err != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "name", err) + } + + msg, err := client.GetPortfolio(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) + return msg, metadata, err + +} + +func local_request_RewardService_GetPortfolio_0(ctx context.Context, marshaler runtime.Marshaler, server RewardServiceServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { + var protoReq GetPortfolioRequest + var metadata runtime.ServerMetadata + + var ( + val string + ok bool + err error + _ = err + ) + + val, ok = pathParams["name"] + if !ok { + return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "name") + } + + protoReq.Name, err = runtime.String(val) + if err != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "name", err) + } + + msg, err := server.GetPortfolio(ctx, &protoReq) + return msg, metadata, err + +} + +var ( + filter_RewardService_ListPortfolios_0 = &utilities.DoubleArray{Encoding: map[string]int{}, Base: []int(nil), Check: []int(nil)} +) + +func request_RewardService_ListPortfolios_0(ctx context.Context, marshaler runtime.Marshaler, client RewardServiceClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { + var protoReq ListPortfoliosRequest + var metadata runtime.ServerMetadata + + if err := req.ParseForm(); err != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) + } + if err := runtime.PopulateQueryParameters(&protoReq, req.Form, filter_RewardService_ListPortfolios_0); err != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) + } + + msg, err := client.ListPortfolios(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) + return msg, metadata, err + +} + +func local_request_RewardService_ListPortfolios_0(ctx context.Context, marshaler runtime.Marshaler, server RewardServiceServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { + var protoReq ListPortfoliosRequest + var metadata runtime.ServerMetadata + + if err := req.ParseForm(); err != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) + } + if err := runtime.PopulateQueryParameters(&protoReq, req.Form, filter_RewardService_ListPortfolios_0); err != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) + } + + msg, err := server.ListPortfolios(ctx, &protoReq) + return msg, metadata, err + +} + // RegisterRewardServiceHandlerServer registers the http handlers for service RewardService to "mux". // UnaryRPC :call RewardServiceServer directly. // StreamingRPC :currently unsupported pending https://github.com/grpc/grpc-go/issues/906. @@ -227,6 +315,56 @@ func RegisterRewardServiceHandlerServer(ctx context.Context, mux *runtime.ServeM }) + mux.Handle("GET", pattern_RewardService_GetPortfolio_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { + ctx, cancel := context.WithCancel(req.Context()) + defer cancel() + var stream runtime.ServerTransportStream + ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) + inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) + var err error + var annotatedContext context.Context + annotatedContext, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/coinbase.staking.rewards.v1.RewardService/GetPortfolio", runtime.WithHTTPPathPattern("/v1/{name=portfolios/*}")) + if err != nil { + runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + return + } + resp, md, err := local_request_RewardService_GetPortfolio_0(annotatedContext, inboundMarshaler, server, req, pathParams) + md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) + if err != nil { + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) + return + } + + forward_RewardService_GetPortfolio_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + + }) + + mux.Handle("GET", pattern_RewardService_ListPortfolios_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { + ctx, cancel := context.WithCancel(req.Context()) + defer cancel() + var stream runtime.ServerTransportStream + ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) + inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) + var err error + var annotatedContext context.Context + annotatedContext, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/coinbase.staking.rewards.v1.RewardService/ListPortfolios", runtime.WithHTTPPathPattern("/v1/portfolios")) + if err != nil { + runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + return + } + resp, md, err := local_request_RewardService_ListPortfolios_0(annotatedContext, inboundMarshaler, server, req, pathParams) + md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) + if err != nil { + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) + return + } + + forward_RewardService_ListPortfolios_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + + }) + return nil } @@ -312,6 +450,50 @@ func RegisterRewardServiceHandlerClient(ctx context.Context, mux *runtime.ServeM }) + mux.Handle("GET", pattern_RewardService_GetPortfolio_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { + ctx, cancel := context.WithCancel(req.Context()) + defer cancel() + inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) + var err error + var annotatedContext context.Context + annotatedContext, err = runtime.AnnotateContext(ctx, mux, req, "/coinbase.staking.rewards.v1.RewardService/GetPortfolio", runtime.WithHTTPPathPattern("/v1/{name=portfolios/*}")) + if err != nil { + runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + return + } + resp, md, err := request_RewardService_GetPortfolio_0(annotatedContext, inboundMarshaler, client, req, pathParams) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) + if err != nil { + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) + return + } + + forward_RewardService_GetPortfolio_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + + }) + + mux.Handle("GET", pattern_RewardService_ListPortfolios_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { + ctx, cancel := context.WithCancel(req.Context()) + defer cancel() + inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) + var err error + var annotatedContext context.Context + annotatedContext, err = runtime.AnnotateContext(ctx, mux, req, "/coinbase.staking.rewards.v1.RewardService/ListPortfolios", runtime.WithHTTPPathPattern("/v1/portfolios")) + if err != nil { + runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + return + } + resp, md, err := request_RewardService_ListPortfolios_0(annotatedContext, inboundMarshaler, client, req, pathParams) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) + if err != nil { + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) + return + } + + forward_RewardService_ListPortfolios_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + + }) + return nil } @@ -319,10 +501,18 @@ var ( pattern_RewardService_ListRewards_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 1, 0, 4, 2, 5, 2, 2, 3}, []string{"v1", "protocols", "parent", "rewards"}, "")) pattern_RewardService_ListStakes_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 1, 0, 4, 2, 5, 2, 2, 3}, []string{"v1", "protocols", "parent", "stakes"}, "")) + + pattern_RewardService_GetPortfolio_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 1, 0, 4, 2, 5, 2}, []string{"v1", "portfolios", "name"}, "")) + + pattern_RewardService_ListPortfolios_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1}, []string{"v1", "portfolios"}, "")) ) var ( forward_RewardService_ListRewards_0 = runtime.ForwardResponseMessage forward_RewardService_ListStakes_0 = runtime.ForwardResponseMessage + + forward_RewardService_GetPortfolio_0 = runtime.ForwardResponseMessage + + forward_RewardService_ListPortfolios_0 = runtime.ForwardResponseMessage ) diff --git a/gen/go/coinbase/staking/rewards/v1/reward_service_grpc.pb.go b/gen/go/coinbase/staking/rewards/v1/reward_service_grpc.pb.go index 2204c99..5ec1bc4 100644 --- a/gen/go/coinbase/staking/rewards/v1/reward_service_grpc.pb.go +++ b/gen/go/coinbase/staking/rewards/v1/reward_service_grpc.pb.go @@ -19,18 +19,24 @@ import ( const _ = grpc.SupportPackageIsVersion7 const ( - RewardService_ListRewards_FullMethodName = "/coinbase.staking.rewards.v1.RewardService/ListRewards" - RewardService_ListStakes_FullMethodName = "/coinbase.staking.rewards.v1.RewardService/ListStakes" + RewardService_ListRewards_FullMethodName = "/coinbase.staking.rewards.v1.RewardService/ListRewards" + RewardService_ListStakes_FullMethodName = "/coinbase.staking.rewards.v1.RewardService/ListStakes" + RewardService_GetPortfolio_FullMethodName = "/coinbase.staking.rewards.v1.RewardService/GetPortfolio" + RewardService_ListPortfolios_FullMethodName = "/coinbase.staking.rewards.v1.RewardService/ListPortfolios" ) // RewardServiceClient is the client API for RewardService service. // // For semantics around ctx use and closing/ending streaming RPCs, please refer to https://pkg.go.dev/google.golang.org/grpc/?tab=doc#ClientConn.NewStream. type RewardServiceClient interface { - // List rewards for a given protocol. + // List all rewards of an address and augment those requests with helpful filters. ListRewards(ctx context.Context, in *ListRewardsRequest, opts ...grpc.CallOption) (*ListRewardsResponse, error) - // List staking activities for a given protocol. + // List all staking balances based on protocol and address ListStakes(ctx context.Context, in *ListStakesRequest, opts ...grpc.CallOption) (*ListStakesResponse, error) + // Get a portfolio based on the name. + GetPortfolio(ctx context.Context, in *GetPortfolioRequest, opts ...grpc.CallOption) (*Portfolio, error) + // List all portfolios available to you. + ListPortfolios(ctx context.Context, in *ListPortfoliosRequest, opts ...grpc.CallOption) (*ListPortfoliosResponse, error) } type rewardServiceClient struct { @@ -59,14 +65,36 @@ func (c *rewardServiceClient) ListStakes(ctx context.Context, in *ListStakesRequ return out, nil } +func (c *rewardServiceClient) GetPortfolio(ctx context.Context, in *GetPortfolioRequest, opts ...grpc.CallOption) (*Portfolio, error) { + out := new(Portfolio) + err := c.cc.Invoke(ctx, RewardService_GetPortfolio_FullMethodName, in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *rewardServiceClient) ListPortfolios(ctx context.Context, in *ListPortfoliosRequest, opts ...grpc.CallOption) (*ListPortfoliosResponse, error) { + out := new(ListPortfoliosResponse) + err := c.cc.Invoke(ctx, RewardService_ListPortfolios_FullMethodName, in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + // RewardServiceServer is the server API for RewardService service. // All implementations must embed UnimplementedRewardServiceServer // for forward compatibility type RewardServiceServer interface { - // List rewards for a given protocol. + // List all rewards of an address and augment those requests with helpful filters. ListRewards(context.Context, *ListRewardsRequest) (*ListRewardsResponse, error) - // List staking activities for a given protocol. + // List all staking balances based on protocol and address ListStakes(context.Context, *ListStakesRequest) (*ListStakesResponse, error) + // Get a portfolio based on the name. + GetPortfolio(context.Context, *GetPortfolioRequest) (*Portfolio, error) + // List all portfolios available to you. + ListPortfolios(context.Context, *ListPortfoliosRequest) (*ListPortfoliosResponse, error) mustEmbedUnimplementedRewardServiceServer() } @@ -80,6 +108,12 @@ func (UnimplementedRewardServiceServer) ListRewards(context.Context, *ListReward func (UnimplementedRewardServiceServer) ListStakes(context.Context, *ListStakesRequest) (*ListStakesResponse, error) { return nil, status.Errorf(codes.Unimplemented, "method ListStakes not implemented") } +func (UnimplementedRewardServiceServer) GetPortfolio(context.Context, *GetPortfolioRequest) (*Portfolio, error) { + return nil, status.Errorf(codes.Unimplemented, "method GetPortfolio not implemented") +} +func (UnimplementedRewardServiceServer) ListPortfolios(context.Context, *ListPortfoliosRequest) (*ListPortfoliosResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method ListPortfolios not implemented") +} func (UnimplementedRewardServiceServer) mustEmbedUnimplementedRewardServiceServer() {} // UnsafeRewardServiceServer may be embedded to opt out of forward compatibility for this service. @@ -129,6 +163,42 @@ func _RewardService_ListStakes_Handler(srv interface{}, ctx context.Context, dec return interceptor(ctx, in, info, handler) } +func _RewardService_GetPortfolio_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(GetPortfolioRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(RewardServiceServer).GetPortfolio(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: RewardService_GetPortfolio_FullMethodName, + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(RewardServiceServer).GetPortfolio(ctx, req.(*GetPortfolioRequest)) + } + return interceptor(ctx, in, info, handler) +} + +func _RewardService_ListPortfolios_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(ListPortfoliosRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(RewardServiceServer).ListPortfolios(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: RewardService_ListPortfolios_FullMethodName, + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(RewardServiceServer).ListPortfolios(ctx, req.(*ListPortfoliosRequest)) + } + return interceptor(ctx, in, info, handler) +} + // RewardService_ServiceDesc is the grpc.ServiceDesc for RewardService service. // It's only intended for direct use with grpc.RegisterService, // and not to be introspected or modified (even as a copy) @@ -144,6 +214,14 @@ var RewardService_ServiceDesc = grpc.ServiceDesc{ MethodName: "ListStakes", Handler: _RewardService_ListStakes_Handler, }, + { + MethodName: "GetPortfolio", + Handler: _RewardService_GetPortfolio_Handler, + }, + { + MethodName: "ListPortfolios", + Handler: _RewardService_ListPortfolios_Handler, + }, }, Streams: []grpc.StreamDesc{}, Metadata: "coinbase/staking/rewards/v1/reward_service.proto", diff --git a/gen/go/coinbase/staking/rewards/v1/stake.pb.go b/gen/go/coinbase/staking/rewards/v1/stake.pb.go index 84545a8..8520c96 100644 --- a/gen/go/coinbase/staking/rewards/v1/stake.pb.go +++ b/gen/go/coinbase/staking/rewards/v1/stake.pb.go @@ -144,7 +144,7 @@ func (RewardRate_CalculationMethods) EnumDescriptor() ([]byte, []int) { return file_coinbase_staking_rewards_v1_stake_proto_rawDescGZIP(), []int{1, 0} } -// The representation of a staking activity at a particular point in time. +// The representation of a staking balance 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 --) diff --git a/protos/buf.gen.rewards.yaml b/protos/buf.gen.rewards.yaml index 5179e5f..4ed2274 100644 --- a/protos/buf.gen.rewards.yaml +++ b/protos/buf.gen.rewards.yaml @@ -9,6 +9,7 @@ plugins: - Mcoinbase/staking/rewards/v1/stake.proto=github.com/coinbase/staking-client-library-go/gen/go/coinbase/staking/rewards/v1;v1 - Mcoinbase/staking/rewards/v1/common.proto=github.com/coinbase/staking-client-library-go/gen/go/coinbase/staking/rewards/v1;v1 - Mcoinbase/staking/rewards/v1/protocol.proto=github.com/coinbase/staking-client-library-go/gen/go/coinbase/staking/rewards/v1;v1 + - Mcoinbase/staking/rewards/v1/portfolio.proto=github.com/coinbase/staking-client-library-go/gen/go/coinbase/staking/rewards/v1;v1 # NOTE: This generates gRPC boilerplate in golang - name: go-grpc out: ./gen/go @@ -19,6 +20,7 @@ plugins: - Mcoinbase/staking/rewards/v1/stake.proto=github.com/coinbase/staking-client-library-go/gen/go/coinbase/staking/rewards/v1;v1 - Mcoinbase/staking/rewards/v1/common.proto=github.com/coinbase/staking-client-library-go/gen/go/coinbase/staking/rewards/v1;v1 - Mcoinbase/staking/rewards/v1/protocol.proto=github.com/coinbase/staking-client-library-go/gen/go/coinbase/staking/rewards/v1;v1 + - Mcoinbase/staking/rewards/v1/portfolio.proto=github.com/coinbase/staking-client-library-go/gen/go/coinbase/staking/rewards/v1;v1 # NOTE: This generates a REST reverse proxy from protobuf definitions - name: grpc-gateway out: ./gen/go @@ -29,6 +31,7 @@ plugins: - Mcoinbase/staking/rewards/v1/stake.proto=github.com/coinbase/staking-client-library-go/gen/go/coinbase/staking/rewards/v1;v1 - Mcoinbase/staking/rewards/v1/common.proto=github.com/coinbase/staking-client-library-go/gen/go/coinbase/staking/rewards/v1;v1 - Mcoinbase/staking/rewards/v1/protocol.proto=github.com/coinbase/staking-client-library-go/gen/go/coinbase/staking/rewards/v1;v1 + - Mcoinbase/staking/rewards/v1/portfolio.proto=github.com/coinbase/staking-client-library-go/gen/go/coinbase/staking/rewards/v1;v1 - name: go-aip out: ./gen/go opt: @@ -38,6 +41,7 @@ plugins: - Mcoinbase/staking/rewards/v1/stake.proto=github.com/coinbase/staking-client-library-go/gen/go/coinbase/staking/rewards/v1;v1 - Mcoinbase/staking/rewards/v1/common.proto=github.com/coinbase/staking-client-library-go/gen/go/coinbase/staking/rewards/v1;v1 - Mcoinbase/staking/rewards/v1/protocol.proto=github.com/coinbase/staking-client-library-go/gen/go/coinbase/staking/rewards/v1;v1 + - Mcoinbase/staking/rewards/v1/portfolio.proto=github.com/coinbase/staking-client-library-go/gen/go/coinbase/staking/rewards/v1;v1 # NOTE: This generates the OpenAPI v2 spec (aka Swagger spec) based on protobuf definitions - name: openapiv2 out: ./docs/openapi @@ -49,6 +53,7 @@ plugins: - Mcoinbase/staking/rewards/v1/stake.proto=github.com/coinbase/staking-client-library-go/gen/go/coinbase/staking/rewards/v1;v1 - Mcoinbase/staking/rewards/v1/common.proto=github.com/coinbase/staking-client-library-go/gen/go/coinbase/staking/rewards/v1;v1 - Mcoinbase/staking/rewards/v1/protocol.proto=github.com/coinbase/staking-client-library-go/gen/go/coinbase/staking/rewards/v1;v1 + - Mcoinbase/staking/rewards/v1/portfolio.proto=github.com/coinbase/staking-client-library-go/gen/go/coinbase/staking/rewards/v1;v1 - name: go_gapic out: ./gen/client opt: @@ -60,7 +65,8 @@ plugins: # Prefix to be stripped from the go-gapic-package used in the generated filenames. - module=github.com/coinbase/staking-client-library-go/gen/client - Mcoinbase/staking/rewards/v1/reward_service.proto=github.com/coinbase/staking-client-library-go/gen/go/coinbase/staking/rewards/v1;rewardpb - - Mcoinbase/staking/rewards/v1/protocol.proto=github.com/coinbase/staking-client-library-go/gen/go/coinbase/staking/rewards/v1;rewardpb - Mcoinbase/staking/rewards/v1/reward.proto=github.com/coinbase/staking-client-library-go/gen/go/coinbase/staking/rewards/v1;rewardpb - Mcoinbase/staking/rewards/v1/stake.proto=github.com/coinbase/staking-client-library-go/gen/go/coinbase/staking/rewards/v1;rewardpb - Mcoinbase/staking/rewards/v1/common.proto=github.com/coinbase/staking-client-library-go/gen/go/coinbase/staking/rewards/v1;rewardpb + - Mcoinbase/staking/rewards/v1/protocol.proto=github.com/coinbase/staking-client-library-go/gen/go/coinbase/staking/rewards/v1;rewardpb + - Mcoinbase/staking/rewards/v1/portfolio.proto=github.com/coinbase/staking-client-library-go/gen/go/coinbase/staking/rewards/v1;rewardpb