// Copyright 2018 The Feed Authors.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
//      http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.

syntax = "proto2";

import "src/main/proto/search/now/ui/piet/piet.proto";
import "src/main/proto/search/now/wire/feed/content_id.proto";

package search.now.wire.feed;

option optimize_for=LITE_RUNTIME;

option java_package = "com.google.search.now.wire.feed";
option java_outer_classname = "PietSharedStateItemProto";

// NOTE: This actually shouldn't be part of the wire protocol.  It should be
// pulled out into a separate package because it's created outside of the
// wire protocol and is used on clients outside of the processing of the
// wire protocol.

// This is a metadata payload containing a Piet Shared State.
message PietSharedStateItem {
  // ContentId identifying the shared state.
  optional ContentId content_id = 1;

  // A Piet Shared State which is used by a set of Piet cards.
  optional search.now.ui.piet.PietSharedState piet_shared_state = 2;
}
