// @generated by protoc-gen-es v2.12.0 with parameter "target=ts"
// @generated from file api/v1/memo_service.proto (package memos.api.v1, syntax proto3)
/* eslint-disable */

import type { GenEnum, GenFile, GenMessage, GenService } from "@bufbuild/protobuf/codegenv2";
import { enumDesc, fileDesc, messageDesc, serviceDesc } from "@bufbuild/protobuf/codegenv2";
import type { Attachment } from "./attachment_service_pb";
import { file_api_v1_attachment_service } from "./attachment_service_pb";
import type { State } from "./common_pb";
import { file_api_v1_common } from "./common_pb";
import { file_google_api_annotations } from "../../google/api/annotations_pb";
import { file_google_api_client } from "../../google/api/client_pb";
import { file_google_api_field_behavior } from "../../google/api/field_behavior_pb";
import { file_google_api_resource } from "../../google/api/resource_pb";
import type { EmptySchema, FieldMask, Timestamp } from "@bufbuild/protobuf/wkt";
import { file_google_protobuf_empty, file_google_protobuf_field_mask, file_google_protobuf_timestamp } from "@bufbuild/protobuf/wkt";
import type { Message } from "@bufbuild/protobuf";

/**
 * Describes the file api/v1/memo_service.proto.
 */
export const file_api_v1_memo_service: GenFile = /*@__PURE__*/
  fileDesc(" ", [file_api_v1_attachment_service, file_api_v1_common, file_google_api_annotations, file_google_api_client, file_google_api_field_behavior, file_google_api_resource, file_google_protobuf_empty, file_google_protobuf_field_mask, file_google_protobuf_timestamp]);

/**
 * @generated from message memos.api.v1.Reaction
 */
export type Reaction = Message<"memos.api.v1.Reaction"> & {
  /**
   * The resource name of the reaction.
   * Format: memos/{memo}/reactions/{reaction}
   *
   * @generated from field: string name = 1;
   */
  name: string;

  /**
   * The resource name of the creator.
   * Format: users/{user}
   *
   * @generated from field: string creator = 2;
   */
  creator: string;

  /**
   * The resource name of the content.
   * For memo reactions, this should be the memo's resource name.
   * Format: memos/{memo}
   *
   * @generated from field: string content_id = 3;
   */
  contentId: string;

  /**
   * Required. The type of reaction (e.g., "👍", "❤️", "😄").
   *
   * @generated from field: string reaction_type = 4;
   */
  reactionType: string;

  /**
   * Output only. The creation timestamp.
   *
   * @generated from field: google.protobuf.Timestamp create_time = 5;
   */
  createTime?: Timestamp | undefined;
};

/**
 * Describes the message memos.api.v1.Reaction.
 * Use `create(ReactionSchema)` to create a new message.
 */
export const ReactionSchema: GenMessage<Reaction> = /*@__PURE__*/
  messageDesc(file_api_v1_memo_service, 0);

/**
 * @generated from message memos.api.v1.Memo
 */
export type Memo = Message<"memos.api.v1.Memo"> & {
  /**
   * The resource name of the memo.
   * Format: memos/{memo}, memo is the user defined id or uuid.
   *
   * @generated from field: string name = 1;
   */
  name: string;

  /**
   * The state of the memo.
   *
   * @generated from field: memos.api.v1.State state = 2;
   */
  state: State;

  /**
   * The name of the creator.
   * Format: users/{user}
   *
   * @generated from field: string creator = 3;
   */
  creator: string;

  /**
   * The creation timestamp.
   * If not set on creation, the server will set it to the current time.
   *
   * @generated from field: google.protobuf.Timestamp create_time = 4;
   */
  createTime?: Timestamp | undefined;

  /**
   * The last update timestamp.
   * If not set on creation, the server will set it to the current time.
   *
   * @generated from field: google.protobuf.Timestamp update_time = 5;
   */
  updateTime?: Timestamp | undefined;

  /**
   * Required. The content of the memo in Markdown format.
   *
   * @generated from field: string content = 7;
   */
  content: string;

  /**
   * The visibility of the memo.
   *
   * @generated from field: memos.api.v1.Visibility visibility = 9;
   */
  visibility: Visibility;

  /**
   * Output only. The tags extracted from the content.
   *
   * @generated from field: repeated string tags = 10;
   */
  tags: string[];

  /**
   * Whether the memo is pinned.
   *
   * @generated from field: bool pinned = 11;
   */
  pinned: boolean;

  /**
   * Optional. The attachments of the memo.
   *
   * @generated from field: repeated memos.api.v1.Attachment attachments = 12;
   */
  attachments: Attachment[];

  /**
   * Optional. The relations of the memo.
   *
   * @generated from field: repeated memos.api.v1.MemoRelation relations = 13;
   */
  relations: MemoRelation[];

  /**
   * Output only. The reactions to the memo.
   *
   * @generated from field: repeated memos.api.v1.Reaction reactions = 14;
   */
  reactions: Reaction[];

  /**
   * Output only. The computed properties of the memo.
   *
   * @generated from field: memos.api.v1.Memo.Property property = 15;
   */
  property?: Memo_Property | undefined;

  /**
   * Output only. The name of the parent memo.
   * Format: memos/{memo}
   *
   * @generated from field: optional string parent = 16;
   */
  parent?: string | undefined;

  /**
   * Output only. The snippet of the memo content. Plain text only.
   *
   * @generated from field: string snippet = 17;
   */
  snippet: string;

  /**
   * Optional. The location of the memo.
   *
   * @generated from field: optional memos.api.v1.Location location = 18;
   */
  location?: Location | undefined;
};

/**
 * Describes the message memos.api.v1.Memo.
 * Use `create(MemoSchema)` to create a new message.
 */
export const MemoSchema: GenMessage<Memo> = /*@__PURE__*/
  messageDesc(file_api_v1_memo_service, 1);

/**
 * Computed properties of a memo.
 *
 * @generated from message memos.api.v1.Memo.Property
 */
export type Memo_Property = Message<"memos.api.v1.Memo.Property"> & {
  /**
   * @generated from field: bool has_link = 1;
   */
  hasLink: boolean;

  /**
   * @generated from field: bool has_task_list = 2;
   */
  hasTaskList: boolean;

  /**
   * @generated from field: bool has_code = 3;
   */
  hasCode: boolean;

  /**
   * @generated from field: bool has_incomplete_tasks = 4;
   */
  hasIncompleteTasks: boolean;

  /**
   * The title extracted from the first H1 heading, if present.
   *
   * @generated from field: string title = 5;
   */
  title: string;
};

/**
 * Describes the message memos.api.v1.Memo.Property.
 * Use `create(Memo_PropertySchema)` to create a new message.
 */
export const Memo_PropertySchema: GenMessage<Memo_Property> = /*@__PURE__*/
  messageDesc(file_api_v1_memo_service, 1, 0);

/**
 * @generated from message memos.api.v1.Location
 */
export type Location = Message<"memos.api.v1.Location"> & {
  /**
   * A placeholder text for the location.
   *
   * @generated from field: string placeholder = 1;
   */
  placeholder: string;

  /**
   * The latitude of the location.
   *
   * @generated from field: double latitude = 2;
   */
  latitude: number;

  /**
   * The longitude of the location.
   *
   * @generated from field: double longitude = 3;
   */
  longitude: number;
};

/**
 * Describes the message memos.api.v1.Location.
 * Use `create(LocationSchema)` to create a new message.
 */
export const LocationSchema: GenMessage<Location> = /*@__PURE__*/
  messageDesc(file_api_v1_memo_service, 2);

/**
 * @generated from message memos.api.v1.CreateMemoRequest
 */
export type CreateMemoRequest = Message<"memos.api.v1.CreateMemoRequest"> & {
  /**
   * Required. The memo to create.
   *
   * @generated from field: memos.api.v1.Memo memo = 1;
   */
  memo?: Memo | undefined;

  /**
   * Optional. The memo ID to use for this memo.
   * If empty, a unique ID will be generated.
   *
   * @generated from field: string memo_id = 2;
   */
  memoId: string;
};

/**
 * Describes the message memos.api.v1.CreateMemoRequest.
 * Use `create(CreateMemoRequestSchema)` to create a new message.
 */
export const CreateMemoRequestSchema: GenMessage<CreateMemoRequest> = /*@__PURE__*/
  messageDesc(file_api_v1_memo_service, 3);

/**
 * @generated from message memos.api.v1.ListMemosRequest
 */
export type ListMemosRequest = Message<"memos.api.v1.ListMemosRequest"> & {
  /**
   * Optional. The maximum number of memos to return.
   * The service may return fewer than this value.
   * If unspecified, at most 50 memos will be returned.
   * The maximum value is 1000; values above 1000 will be coerced to 1000.
   *
   * @generated from field: int32 page_size = 1;
   */
  pageSize: number;

  /**
   * Optional. A page token, received from a previous `ListMemos` call.
   * Provide this to retrieve the subsequent page.
   *
   * @generated from field: string page_token = 2;
   */
  pageToken: string;

  /**
   * Optional. The state of the memos to list.
   * Default to `NORMAL`. Set to `ARCHIVED` to list archived memos.
   *
   * @generated from field: memos.api.v1.State state = 3;
   */
  state: State;

  /**
   * Optional. The order to sort results by.
   * Default to "create_time desc".
   * Supports comma-separated list of fields following AIP-132.
   * Example: "pinned desc, create_time desc" or "update_time asc"
   * Supported fields: pinned, create_time, update_time, name
   *
   * @generated from field: string order_by = 4;
   */
  orderBy: string;

  /**
   * Optional. Filter to apply to the list results.
   * Filter is a CEL expression to filter memos.
   * Refer to `Shortcut.filter`.
   *
   * @generated from field: string filter = 5;
   */
  filter: string;

  /**
   * Optional. If true, show deleted memos in the response.
   *
   * @generated from field: bool show_deleted = 6;
   */
  showDeleted: boolean;
};

/**
 * Describes the message memos.api.v1.ListMemosRequest.
 * Use `create(ListMemosRequestSchema)` to create a new message.
 */
export const ListMemosRequestSchema: GenMessage<ListMemosRequest> = /*@__PURE__*/
  messageDesc(file_api_v1_memo_service, 4);

/**
 * @generated from message memos.api.v1.ListMemosResponse
 */
export type ListMemosResponse = Message<"memos.api.v1.ListMemosResponse"> & {
  /**
   * The list of memos.
   *
   * @generated from field: repeated memos.api.v1.Memo memos = 1;
   */
  memos: Memo[];

  /**
   * A token that can be sent as `page_token` to retrieve the next page.
   * If this field is omitted, there are no subsequent pages.
   *
   * @generated from field: string next_page_token = 2;
   */
  nextPageToken: string;
};

/**
 * Describes the message memos.api.v1.ListMemosResponse.
 * Use `create(ListMemosResponseSchema)` to create a new message.
 */
export const ListMemosResponseSchema: GenMessage<ListMemosResponse> = /*@__PURE__*/
  messageDesc(file_api_v1_memo_service, 5);

/**
 * @generated from message memos.api.v1.GetMemoRequest
 */
export type GetMemoRequest = Message<"memos.api.v1.GetMemoRequest"> & {
  /**
   * Required. The resource name of the memo.
   * Format: memos/{memo}
   *
   * @generated from field: string name = 1;
   */
  name: string;
};

/**
 * Describes the message memos.api.v1.GetMemoRequest.
 * Use `create(GetMemoRequestSchema)` to create a new message.
 */
export const GetMemoRequestSchema: GenMessage<GetMemoRequest> = /*@__PURE__*/
  messageDesc(file_api_v1_memo_service, 6);

/**
 * @generated from message memos.api.v1.UpdateMemoRequest
 */
export type UpdateMemoRequest = Message<"memos.api.v1.UpdateMemoRequest"> & {
  /**
   * Required. The memo to update.
   * The `name` field is required.
   *
   * @generated from field: memos.api.v1.Memo memo = 1;
   */
  memo?: Memo | undefined;

  /**
   * Required. The list of fields to update.
   *
   * @generated from field: google.protobuf.FieldMask update_mask = 2;
   */
  updateMask?: FieldMask | undefined;
};

/**
 * Describes the message memos.api.v1.UpdateMemoRequest.
 * Use `create(UpdateMemoRequestSchema)` to create a new message.
 */
export const UpdateMemoRequestSchema: GenMessage<UpdateMemoRequest> = /*@__PURE__*/
  messageDesc(file_api_v1_memo_service, 7);

/**
 * @generated from message memos.api.v1.DeleteMemoRequest
 */
export type DeleteMemoRequest = Message<"memos.api.v1.DeleteMemoRequest"> & {
  /**
   * Required. The resource name of the memo to delete.
   * Format: memos/{memo}
   *
   * @generated from field: string name = 1;
   */
  name: string;

  /**
   * Optional. If set to true, the memo will be deleted even if it has associated data.
   *
   * @generated from field: bool force = 2;
   */
  force: boolean;
};

/**
 * Describes the message memos.api.v1.DeleteMemoRequest.
 * Use `create(DeleteMemoRequestSchema)` to create a new message.
 */
export const DeleteMemoRequestSchema: GenMessage<DeleteMemoRequest> = /*@__PURE__*/
  messageDesc(file_api_v1_memo_service, 8);

/**
 * @generated from message memos.api.v1.SetMemoAttachmentsRequest
 */
export type SetMemoAttachmentsRequest = Message<"memos.api.v1.SetMemoAttachmentsRequest"> & {
  /**
   * Required. The resource name of the memo.
   * Format: memos/{memo}
   *
   * @generated from field: string name = 1;
   */
  name: string;

  /**
   * Required. The attachments to set for the memo.
   *
   * @generated from field: repeated memos.api.v1.Attachment attachments = 2;
   */
  attachments: Attachment[];
};

/**
 * Describes the message memos.api.v1.SetMemoAttachmentsRequest.
 * Use `create(SetMemoAttachmentsRequestSchema)` to create a new message.
 */
export const SetMemoAttachmentsRequestSchema: GenMessage<SetMemoAttachmentsRequest> = /*@__PURE__*/
  messageDesc(file_api_v1_memo_service, 9);

/**
 * @generated from message memos.api.v1.ListMemoAttachmentsRequest
 */
export type ListMemoAttachmentsRequest = Message<"memos.api.v1.ListMemoAttachmentsRequest"> & {
  /**
   * Required. The resource name of the memo.
   * Format: memos/{memo}
   *
   * @generated from field: string name = 1;
   */
  name: string;

  /**
   * Optional. The maximum number of attachments to return.
   *
   * @generated from field: int32 page_size = 2;
   */
  pageSize: number;

  /**
   * Optional. A page token for pagination.
   *
   * @generated from field: string page_token = 3;
   */
  pageToken: string;
};

/**
 * Describes the message memos.api.v1.ListMemoAttachmentsRequest.
 * Use `create(ListMemoAttachmentsRequestSchema)` to create a new message.
 */
export const ListMemoAttachmentsRequestSchema: GenMessage<ListMemoAttachmentsRequest> = /*@__PURE__*/
  messageDesc(file_api_v1_memo_service, 10);

/**
 * @generated from message memos.api.v1.ListMemoAttachmentsResponse
 */
export type ListMemoAttachmentsResponse = Message<"memos.api.v1.ListMemoAttachmentsResponse"> & {
  /**
   * The list of attachments.
   *
   * @generated from field: repeated memos.api.v1.Attachment attachments = 1;
   */
  attachments: Attachment[];

  /**
   * A token for the next page of results.
   *
   * @generated from field: string next_page_token = 2;
   */
  nextPageToken: string;
};

/**
 * Describes the message memos.api.v1.ListMemoAttachmentsResponse.
 * Use `create(ListMemoAttachmentsResponseSchema)` to create a new message.
 */
export const ListMemoAttachmentsResponseSchema: GenMessage<ListMemoAttachmentsResponse> = /*@__PURE__*/
  messageDesc(file_api_v1_memo_service, 11);

/**
 * @generated from message memos.api.v1.MemoRelation
 */
export type MemoRelation = Message<"memos.api.v1.MemoRelation"> & {
  /**
   * The memo in the relation.
   *
   * @generated from field: memos.api.v1.MemoRelation.Memo memo = 1;
   */
  memo?: MemoRelation_Memo | undefined;

  /**
   * The related memo.
   *
   * @generated from field: memos.api.v1.MemoRelation.Memo related_memo = 2;
   */
  relatedMemo?: MemoRelation_Memo | undefined;

  /**
   * @generated from field: memos.api.v1.MemoRelation.Type type = 3;
   */
  type: MemoRelation_Type;
};

/**
 * Describes the message memos.api.v1.MemoRelation.
 * Use `create(MemoRelationSchema)` to create a new message.
 */
export const MemoRelationSchema: GenMessage<MemoRelation> = /*@__PURE__*/
  messageDesc(file_api_v1_memo_service, 12);

/**
 * Memo reference in relations.
 *
 * @generated from message memos.api.v1.MemoRelation.Memo
 */
export type MemoRelation_Memo = Message<"memos.api.v1.MemoRelation.Memo"> & {
  /**
   * The resource name of the memo.
   * Format: memos/{memo}
   *
   * @generated from field: string name = 1;
   */
  name: string;

  /**
   * Output only. The snippet of the memo content. Plain text only.
   *
   * @generated from field: string snippet = 2;
   */
  snippet: string;
};

/**
 * Describes the message memos.api.v1.MemoRelation.Memo.
 * Use `create(MemoRelation_MemoSchema)` to create a new message.
 */
export const MemoRelation_MemoSchema: GenMessage<MemoRelation_Memo> = /*@__PURE__*/
  messageDesc(file_api_v1_memo_service, 12, 0);

/**
 * The type of the relation.
 *
 * @generated from enum memos.api.v1.MemoRelation.Type
 */
export enum MemoRelation_Type {
  /**
   * @generated from enum value: TYPE_UNSPECIFIED = 0;
   */
  TYPE_UNSPECIFIED = 0,

  /**
   * @generated from enum value: REFERENCE = 1;
   */
  REFERENCE = 1,

  /**
   * @generated from enum value: COMMENT = 2;
   */
  COMMENT = 2,
}

/**
 * Describes the enum memos.api.v1.MemoRelation.Type.
 */
export const MemoRelation_TypeSchema: GenEnum<MemoRelation_Type> = /*@__PURE__*/
  enumDesc(file_api_v1_memo_service, 12, 0);

/**
 * @generated from message memos.api.v1.SetMemoRelationsRequest
 */
export type SetMemoRelationsRequest = Message<"memos.api.v1.SetMemoRelationsRequest"> & {
  /**
   * Required. The resource name of the memo.
   * Format: memos/{memo}
   *
   * @generated from field: string name = 1;
   */
  name: string;

  /**
   * Required. The relations to set for the memo.
   *
   * @generated from field: repeated memos.api.v1.MemoRelation relations = 2;
   */
  relations: MemoRelation[];
};

/**
 * Describes the message memos.api.v1.SetMemoRelationsRequest.
 * Use `create(SetMemoRelationsRequestSchema)` to create a new message.
 */
export const SetMemoRelationsRequestSchema: GenMessage<SetMemoRelationsRequest> = /*@__PURE__*/
  messageDesc(file_api_v1_memo_service, 13);

/**
 * @generated from message memos.api.v1.ListMemoRelationsRequest
 */
export type ListMemoRelationsRequest = Message<"memos.api.v1.ListMemoRelationsRequest"> & {
  /**
   * Required. The resource name of the memo.
   * Format: memos/{memo}
   *
   * @generated from field: string name = 1;
   */
  name: string;

  /**
   * Optional. The maximum number of relations to return.
   *
   * @generated from field: int32 page_size = 2;
   */
  pageSize: number;

  /**
   * Optional. A page token for pagination.
   *
   * @generated from field: string page_token = 3;
   */
  pageToken: string;
};

/**
 * Describes the message memos.api.v1.ListMemoRelationsRequest.
 * Use `create(ListMemoRelationsRequestSchema)` to create a new message.
 */
export const ListMemoRelationsRequestSchema: GenMessage<ListMemoRelationsRequest> = /*@__PURE__*/
  messageDesc(file_api_v1_memo_service, 14);

/**
 * @generated from message memos.api.v1.ListMemoRelationsResponse
 */
export type ListMemoRelationsResponse = Message<"memos.api.v1.ListMemoRelationsResponse"> & {
  /**
   * The list of relations.
   *
   * @generated from field: repeated memos.api.v1.MemoRelation relations = 1;
   */
  relations: MemoRelation[];

  /**
   * A token for the next page of results.
   *
   * @generated from field: string next_page_token = 2;
   */
  nextPageToken: string;
};

/**
 * Describes the message memos.api.v1.ListMemoRelationsResponse.
 * Use `create(ListMemoRelationsResponseSchema)` to create a new message.
 */
export const ListMemoRelationsResponseSchema: GenMessage<ListMemoRelationsResponse> = /*@__PURE__*/
  messageDesc(file_api_v1_memo_service, 15);

/**
 * @generated from message memos.api.v1.CreateMemoCommentRequest
 */
export type CreateMemoCommentRequest = Message<"memos.api.v1.CreateMemoCommentRequest"> & {
  /**
   * Required. The resource name of the memo.
   * Format: memos/{memo}
   *
   * @generated from field: string name = 1;
   */
  name: string;

  /**
   * Required. The comment to create.
   *
   * @generated from field: memos.api.v1.Memo comment = 2;
   */
  comment?: Memo | undefined;

  /**
   * Optional. The comment ID to use.
   *
   * @generated from field: string comment_id = 3;
   */
  commentId: string;
};

/**
 * Describes the message memos.api.v1.CreateMemoCommentRequest.
 * Use `create(CreateMemoCommentRequestSchema)` to create a new message.
 */
export const CreateMemoCommentRequestSchema: GenMessage<CreateMemoCommentRequest> = /*@__PURE__*/
  messageDesc(file_api_v1_memo_service, 16);

/**
 * @generated from message memos.api.v1.ListMemoCommentsRequest
 */
export type ListMemoCommentsRequest = Message<"memos.api.v1.ListMemoCommentsRequest"> & {
  /**
   * Required. The resource name of the memo.
   * Format: memos/{memo}
   *
   * @generated from field: string name = 1;
   */
  name: string;

  /**
   * Optional. The maximum number of comments to return.
   *
   * @generated from field: int32 page_size = 2;
   */
  pageSize: number;

  /**
   * Optional. A page token for pagination.
   *
   * @generated from field: string page_token = 3;
   */
  pageToken: string;

  /**
   * Optional. The order to sort results by.
   *
   * @generated from field: string order_by = 4;
   */
  orderBy: string;
};

/**
 * Describes the message memos.api.v1.ListMemoCommentsRequest.
 * Use `create(ListMemoCommentsRequestSchema)` to create a new message.
 */
export const ListMemoCommentsRequestSchema: GenMessage<ListMemoCommentsRequest> = /*@__PURE__*/
  messageDesc(file_api_v1_memo_service, 17);

/**
 * @generated from message memos.api.v1.ListMemoCommentsResponse
 */
export type ListMemoCommentsResponse = Message<"memos.api.v1.ListMemoCommentsResponse"> & {
  /**
   * The list of comment memos.
   *
   * @generated from field: repeated memos.api.v1.Memo memos = 1;
   */
  memos: Memo[];

  /**
   * A token for the next page of results.
   *
   * @generated from field: string next_page_token = 2;
   */
  nextPageToken: string;

  /**
   * The total count of comments.
   *
   * @generated from field: int32 total_size = 3;
   */
  totalSize: number;
};

/**
 * Describes the message memos.api.v1.ListMemoCommentsResponse.
 * Use `create(ListMemoCommentsResponseSchema)` to create a new message.
 */
export const ListMemoCommentsResponseSchema: GenMessage<ListMemoCommentsResponse> = /*@__PURE__*/
  messageDesc(file_api_v1_memo_service, 18);

/**
 * @generated from message memos.api.v1.ListMemoReactionsRequest
 */
export type ListMemoReactionsRequest = Message<"memos.api.v1.ListMemoReactionsRequest"> & {
  /**
   * Required. The resource name of the memo.
   * Format: memos/{memo}
   *
   * @generated from field: string name = 1;
   */
  name: string;

  /**
   * Optional. The maximum number of reactions to return.
   *
   * @generated from field: int32 page_size = 2;
   */
  pageSize: number;

  /**
   * Optional. A page token for pagination.
   *
   * @generated from field: string page_token = 3;
   */
  pageToken: string;
};

/**
 * Describes the message memos.api.v1.ListMemoReactionsRequest.
 * Use `create(ListMemoReactionsRequestSchema)` to create a new message.
 */
export const ListMemoReactionsRequestSchema: GenMessage<ListMemoReactionsRequest> = /*@__PURE__*/
  messageDesc(file_api_v1_memo_service, 19);

/**
 * @generated from message memos.api.v1.ListMemoReactionsResponse
 */
export type ListMemoReactionsResponse = Message<"memos.api.v1.ListMemoReactionsResponse"> & {
  /**
   * The list of reactions.
   *
   * @generated from field: repeated memos.api.v1.Reaction reactions = 1;
   */
  reactions: Reaction[];

  /**
   * A token for the next page of results.
   *
   * @generated from field: string next_page_token = 2;
   */
  nextPageToken: string;

  /**
   * The total count of reactions.
   *
   * @generated from field: int32 total_size = 3;
   */
  totalSize: number;
};

/**
 * Describes the message memos.api.v1.ListMemoReactionsResponse.
 * Use `create(ListMemoReactionsResponseSchema)` to create a new message.
 */
export const ListMemoReactionsResponseSchema: GenMessage<ListMemoReactionsResponse> = /*@__PURE__*/
  messageDesc(file_api_v1_memo_service, 20);

/**
 * @generated from message memos.api.v1.UpsertMemoReactionRequest
 */
export type UpsertMemoReactionRequest = Message<"memos.api.v1.UpsertMemoReactionRequest"> & {
  /**
   * Required. The resource name of the memo.
   * Format: memos/{memo}
   *
   * @generated from field: string name = 1;
   */
  name: string;

  /**
   * Required. The reaction to upsert.
   *
   * @generated from field: memos.api.v1.Reaction reaction = 2;
   */
  reaction?: Reaction | undefined;
};

/**
 * Describes the message memos.api.v1.UpsertMemoReactionRequest.
 * Use `create(UpsertMemoReactionRequestSchema)` to create a new message.
 */
export const UpsertMemoReactionRequestSchema: GenMessage<UpsertMemoReactionRequest> = /*@__PURE__*/
  messageDesc(file_api_v1_memo_service, 21);

/**
 * @generated from message memos.api.v1.DeleteMemoReactionRequest
 */
export type DeleteMemoReactionRequest = Message<"memos.api.v1.DeleteMemoReactionRequest"> & {
  /**
   * Required. The resource name of the reaction to delete.
   * Format: memos/{memo}/reactions/{reaction}
   *
   * @generated from field: string name = 1;
   */
  name: string;
};

/**
 * Describes the message memos.api.v1.DeleteMemoReactionRequest.
 * Use `create(DeleteMemoReactionRequestSchema)` to create a new message.
 */
export const DeleteMemoReactionRequestSchema: GenMessage<DeleteMemoReactionRequest> = /*@__PURE__*/
  messageDesc(file_api_v1_memo_service, 22);

/**
 * MemoShare is an access grant that permits read-only access to a memo via an opaque bearer token.
 *
 * @generated from message memos.api.v1.MemoShare
 */
export type MemoShare = Message<"memos.api.v1.MemoShare"> & {
  /**
   * The resource name of the share. Format: memos/{memo}/shares/{share}
   * The {share} segment is the opaque token used in the share URL.
   *
   * @generated from field: string name = 1;
   */
  name: string;

  /**
   * Output only. When this share link was created.
   *
   * @generated from field: google.protobuf.Timestamp create_time = 2;
   */
  createTime?: Timestamp | undefined;

  /**
   * Optional. When set, the share link stops working after this time.
   * If unset, the link never expires.
   *
   * @generated from field: optional google.protobuf.Timestamp expire_time = 3;
   */
  expireTime?: Timestamp | undefined;
};

/**
 * Describes the message memos.api.v1.MemoShare.
 * Use `create(MemoShareSchema)` to create a new message.
 */
export const MemoShareSchema: GenMessage<MemoShare> = /*@__PURE__*/
  messageDesc(file_api_v1_memo_service, 23);

/**
 * @generated from message memos.api.v1.CreateMemoShareRequest
 */
export type CreateMemoShareRequest = Message<"memos.api.v1.CreateMemoShareRequest"> & {
  /**
   * Required. The resource name of the memo to share.
   * Format: memos/{memo}
   *
   * @generated from field: string parent = 1;
   */
  parent: string;

  /**
   * Required. The share to create.
   *
   * @generated from field: memos.api.v1.MemoShare memo_share = 2;
   */
  memoShare?: MemoShare | undefined;
};

/**
 * Describes the message memos.api.v1.CreateMemoShareRequest.
 * Use `create(CreateMemoShareRequestSchema)` to create a new message.
 */
export const CreateMemoShareRequestSchema: GenMessage<CreateMemoShareRequest> = /*@__PURE__*/
  messageDesc(file_api_v1_memo_service, 24);

/**
 * @generated from message memos.api.v1.ListMemoSharesRequest
 */
export type ListMemoSharesRequest = Message<"memos.api.v1.ListMemoSharesRequest"> & {
  /**
   * Required. The resource name of the memo.
   * Format: memos/{memo}
   *
   * @generated from field: string parent = 1;
   */
  parent: string;
};

/**
 * Describes the message memos.api.v1.ListMemoSharesRequest.
 * Use `create(ListMemoSharesRequestSchema)` to create a new message.
 */
export const ListMemoSharesRequestSchema: GenMessage<ListMemoSharesRequest> = /*@__PURE__*/
  messageDesc(file_api_v1_memo_service, 25);

/**
 * @generated from message memos.api.v1.ListMemoSharesResponse
 */
export type ListMemoSharesResponse = Message<"memos.api.v1.ListMemoSharesResponse"> & {
  /**
   * The list of share links.
   *
   * @generated from field: repeated memos.api.v1.MemoShare memo_shares = 1;
   */
  memoShares: MemoShare[];
};

/**
 * Describes the message memos.api.v1.ListMemoSharesResponse.
 * Use `create(ListMemoSharesResponseSchema)` to create a new message.
 */
export const ListMemoSharesResponseSchema: GenMessage<ListMemoSharesResponse> = /*@__PURE__*/
  messageDesc(file_api_v1_memo_service, 26);

/**
 * @generated from message memos.api.v1.DeleteMemoShareRequest
 */
export type DeleteMemoShareRequest = Message<"memos.api.v1.DeleteMemoShareRequest"> & {
  /**
   * Required. The resource name of the share to delete.
   * Format: memos/{memo}/shares/{share}
   *
   * @generated from field: string name = 1;
   */
  name: string;
};

/**
 * Describes the message memos.api.v1.DeleteMemoShareRequest.
 * Use `create(DeleteMemoShareRequestSchema)` to create a new message.
 */
export const DeleteMemoShareRequestSchema: GenMessage<DeleteMemoShareRequest> = /*@__PURE__*/
  messageDesc(file_api_v1_memo_service, 27);

/**
 * @generated from message memos.api.v1.GetMemoByShareRequest
 */
export type GetMemoByShareRequest = Message<"memos.api.v1.GetMemoByShareRequest"> & {
  /**
   * Required. The share token extracted from the share URL (/s/{share_id}).
   *
   * @generated from field: string share_id = 1;
   */
  shareId: string;
};

/**
 * Describes the message memos.api.v1.GetMemoByShareRequest.
 * Use `create(GetMemoByShareRequestSchema)` to create a new message.
 */
export const GetMemoByShareRequestSchema: GenMessage<GetMemoByShareRequest> = /*@__PURE__*/
  messageDesc(file_api_v1_memo_service, 28);

/**
 * @generated from enum memos.api.v1.Visibility
 */
export enum Visibility {
  /**
   * @generated from enum value: VISIBILITY_UNSPECIFIED = 0;
   */
  VISIBILITY_UNSPECIFIED = 0,

  /**
   * @generated from enum value: PRIVATE = 1;
   */
  PRIVATE = 1,

  /**
   * @generated from enum value: PROTECTED = 2;
   */
  PROTECTED = 2,

  /**
   * @generated from enum value: PUBLIC = 3;
   */
  PUBLIC = 3,
}

/**
 * Describes the enum memos.api.v1.Visibility.
 */
export const VisibilitySchema: GenEnum<Visibility> = /*@__PURE__*/
  enumDesc(file_api_v1_memo_service, 0);

/**
 * @generated from service memos.api.v1.MemoService
 */
export const MemoService: GenService<{
  /**
   * CreateMemo creates a memo.
   *
   * @generated from rpc memos.api.v1.MemoService.CreateMemo
   */
  createMemo: {
    methodKind: "unary";
    input: typeof CreateMemoRequestSchema;
    output: typeof MemoSchema;
  },
  /**
   * ListMemos lists memos with pagination and filter.
   *
   * @generated from rpc memos.api.v1.MemoService.ListMemos
   */
  listMemos: {
    methodKind: "unary";
    input: typeof ListMemosRequestSchema;
    output: typeof ListMemosResponseSchema;
  },
  /**
   * GetMemo gets a memo.
   *
   * @generated from rpc memos.api.v1.MemoService.GetMemo
   */
  getMemo: {
    methodKind: "unary";
    input: typeof GetMemoRequestSchema;
    output: typeof MemoSchema;
  },
  /**
   * UpdateMemo updates a memo.
   *
   * @generated from rpc memos.api.v1.MemoService.UpdateMemo
   */
  updateMemo: {
    methodKind: "unary";
    input: typeof UpdateMemoRequestSchema;
    output: typeof MemoSchema;
  },
  /**
   * DeleteMemo deletes a memo.
   *
   * @generated from rpc memos.api.v1.MemoService.DeleteMemo
   */
  deleteMemo: {
    methodKind: "unary";
    input: typeof DeleteMemoRequestSchema;
    output: typeof EmptySchema;
  },
  /**
   * SetMemoAttachments sets attachments for a memo.
   *
   * @generated from rpc memos.api.v1.MemoService.SetMemoAttachments
   */
  setMemoAttachments: {
    methodKind: "unary";
    input: typeof SetMemoAttachmentsRequestSchema;
    output: typeof EmptySchema;
  },
  /**
   * ListMemoAttachments lists attachments for a memo.
   *
   * @generated from rpc memos.api.v1.MemoService.ListMemoAttachments
   */
  listMemoAttachments: {
    methodKind: "unary";
    input: typeof ListMemoAttachmentsRequestSchema;
    output: typeof ListMemoAttachmentsResponseSchema;
  },
  /**
   * SetMemoRelations sets relations for a memo.
   *
   * @generated from rpc memos.api.v1.MemoService.SetMemoRelations
   */
  setMemoRelations: {
    methodKind: "unary";
    input: typeof SetMemoRelationsRequestSchema;
    output: typeof EmptySchema;
  },
  /**
   * ListMemoRelations lists relations for a memo.
   *
   * @generated from rpc memos.api.v1.MemoService.ListMemoRelations
   */
  listMemoRelations: {
    methodKind: "unary";
    input: typeof ListMemoRelationsRequestSchema;
    output: typeof ListMemoRelationsResponseSchema;
  },
  /**
   * CreateMemoComment creates a comment for a memo.
   *
   * @generated from rpc memos.api.v1.MemoService.CreateMemoComment
   */
  createMemoComment: {
    methodKind: "unary";
    input: typeof CreateMemoCommentRequestSchema;
    output: typeof MemoSchema;
  },
  /**
   * ListMemoComments lists comments for a memo.
   *
   * @generated from rpc memos.api.v1.MemoService.ListMemoComments
   */
  listMemoComments: {
    methodKind: "unary";
    input: typeof ListMemoCommentsRequestSchema;
    output: typeof ListMemoCommentsResponseSchema;
  },
  /**
   * ListMemoReactions lists reactions for a memo.
   *
   * @generated from rpc memos.api.v1.MemoService.ListMemoReactions
   */
  listMemoReactions: {
    methodKind: "unary";
    input: typeof ListMemoReactionsRequestSchema;
    output: typeof ListMemoReactionsResponseSchema;
  },
  /**
   * UpsertMemoReaction upserts a reaction for a memo.
   *
   * @generated from rpc memos.api.v1.MemoService.UpsertMemoReaction
   */
  upsertMemoReaction: {
    methodKind: "unary";
    input: typeof UpsertMemoReactionRequestSchema;
    output: typeof ReactionSchema;
  },
  /**
   * DeleteMemoReaction deletes a reaction for a memo.
   *
   * @generated from rpc memos.api.v1.MemoService.DeleteMemoReaction
   */
  deleteMemoReaction: {
    methodKind: "unary";
    input: typeof DeleteMemoReactionRequestSchema;
    output: typeof EmptySchema;
  },
  /**
   * CreateMemoShare creates a share link for a memo. Requires authentication as the memo creator.
   *
   * @generated from rpc memos.api.v1.MemoService.CreateMemoShare
   */
  createMemoShare: {
    methodKind: "unary";
    input: typeof CreateMemoShareRequestSchema;
    output: typeof MemoShareSchema;
  },
  /**
   * ListMemoShares lists all share links for a memo. Requires authentication as the memo creator.
   *
   * @generated from rpc memos.api.v1.MemoService.ListMemoShares
   */
  listMemoShares: {
    methodKind: "unary";
    input: typeof ListMemoSharesRequestSchema;
    output: typeof ListMemoSharesResponseSchema;
  },
  /**
   * DeleteMemoShare revokes a share link. Requires authentication as the memo creator.
   *
   * @generated from rpc memos.api.v1.MemoService.DeleteMemoShare
   */
  deleteMemoShare: {
    methodKind: "unary";
    input: typeof DeleteMemoShareRequestSchema;
    output: typeof EmptySchema;
  },
  /**
   * GetMemoByShare resolves a share token to its memo. No authentication required.
   * Returns NOT_FOUND if the token is invalid or expired.
   *
   * @generated from rpc memos.api.v1.MemoService.GetMemoByShare
   */
  getMemoByShare: {
    methodKind: "unary";
    input: typeof GetMemoByShareRequestSchema;
    output: typeof MemoSchema;
  },
}> = /*@__PURE__*/
  serviceDesc(file_api_v1_memo_service, 0);

