// @generated by protoc-gen-es v2.2.2 with parameter "target=ts,import_extension=.js"
// @generated from file gfxcafe/oku/account/v1/preferences.proto (package gfxcafe.oku.account.v1, syntax proto3)
/* eslint-disable */

import type { GenFile, GenMessage, GenService } from "@bufbuild/protobuf/codegenv1";
import { fileDesc, messageDesc, serviceDesc } from "@bufbuild/protobuf/codegenv1";
import { file_buf_validate_validate } from "../../../../buf/validate/validate_pb.js";
import type { Timestamp } from "@bufbuild/protobuf/wkt";
import { file_google_protobuf_struct, file_google_protobuf_timestamp } from "@bufbuild/protobuf/wkt";
import type { JsonObject, Message } from "@bufbuild/protobuf";

/**
 * Describes the file gfxcafe/oku/account/v1/preferences.proto.
 */
export const file_gfxcafe_oku_account_v1_preferences: GenFile = /*@__PURE__*/
  fileDesc("CihnZnhjYWZlL29rdS9hY2NvdW50L3YxL3ByZWZlcmVuY2VzLnByb3RvEhZnZnhjYWZlLm9rdS5hY2NvdW50LnYxIisKElByZWZlcmVuY2VzUmVxdWVzdBIVCg1pZl9ub25lX21hdGNoGAEgASgJIoQBChNQcmVmZXJlbmNlc1Jlc3BvbnNlEiwKC3ByZWZlcmVuY2VzGAEgASgLMhcuZ29vZ2xlLnByb3RvYnVmLlN0cnVjdBIMCgRldGFnGAIgASgJEjEKDWxhc3RfbW9kaWZpZWQYAyABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wImcKGFByZWZlcmVuY2VzVXBkYXRlUmVxdWVzdBIoCgd1cGRhdGVzGAEgASgLMhcuZ29vZ2xlLnByb3RvYnVmLlN0cnVjdBIPCgdyZW1vdmVzGAIgAygJEhAKCGlmX21hdGNoGAMgASgJIooBChlQcmVmZXJlbmNlc1VwZGF0ZVJlc3BvbnNlEiwKC3ByZWZlcmVuY2VzGAEgASgLMhcuZ29vZ2xlLnByb3RvYnVmLlN0cnVjdBIMCgRldGFnGAIgASgJEjEKDWxhc3RfbW9kaWZpZWQYAyABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wMvYBChJQcmVmZXJlbmNlc1NlcnZpY2USZgoLUHJlZmVyZW5jZXMSKi5nZnhjYWZlLm9rdS5hY2NvdW50LnYxLlByZWZlcmVuY2VzUmVxdWVzdBorLmdmeGNhZmUub2t1LmFjY291bnQudjEuUHJlZmVyZW5jZXNSZXNwb25zZRJ4ChFQcmVmZXJlbmNlc1VwZGF0ZRIwLmdmeGNhZmUub2t1LmFjY291bnQudjEuUHJlZmVyZW5jZXNVcGRhdGVSZXF1ZXN0GjEuZ2Z4Y2FmZS5va3UuYWNjb3VudC52MS5QcmVmZXJlbmNlc1VwZGF0ZVJlc3BvbnNlQjdaNWdmeC5jYWZlL29rdS9hY2NvdW50L2dlbi9nby9nZnhjYWZlL29rdS9hY2NvdW50L3YxO3YxYgZwcm90bzM", [file_buf_validate_validate, file_google_protobuf_struct, file_google_protobuf_timestamp]);

/**
 * PreferencesRequest for getting preferences
 *
 * @generated from message gfxcafe.oku.account.v1.PreferencesRequest
 */
export type PreferencesRequest = Message<"gfxcafe.oku.account.v1.PreferencesRequest"> & {
  /**
   * Optional ETag for conditional requests
   *
   * @generated from field: string if_none_match = 1;
   */
  ifNoneMatch: string;
};

/**
 * Describes the message gfxcafe.oku.account.v1.PreferencesRequest.
 * Use `create(PreferencesRequestSchema)` to create a new message.
 */
export const PreferencesRequestSchema: GenMessage<PreferencesRequest> = /*@__PURE__*/
  messageDesc(file_gfxcafe_oku_account_v1_preferences, 0);

/**
 * PreferencesResponse contains user preferences
 *
 * @generated from message gfxcafe.oku.account.v1.PreferencesResponse
 */
export type PreferencesResponse = Message<"gfxcafe.oku.account.v1.PreferencesResponse"> & {
  /**
   * User preferences as a JSON object
   *
   * @generated from field: google.protobuf.Struct preferences = 1;
   */
  preferences?: JsonObject;

  /**
   * Version/ETag of the preferences
   *
   * @generated from field: string etag = 2;
   */
  etag: string;

  /**
   * Last modified timestamp
   *
   * @generated from field: google.protobuf.Timestamp last_modified = 3;
   */
  lastModified?: Timestamp;
};

/**
 * Describes the message gfxcafe.oku.account.v1.PreferencesResponse.
 * Use `create(PreferencesResponseSchema)` to create a new message.
 */
export const PreferencesResponseSchema: GenMessage<PreferencesResponse> = /*@__PURE__*/
  messageDesc(file_gfxcafe_oku_account_v1_preferences, 1);

/**
 * PreferencesUpdateRequest for updating preferences
 *
 * @generated from message gfxcafe.oku.account.v1.PreferencesUpdateRequest
 */
export type PreferencesUpdateRequest = Message<"gfxcafe.oku.account.v1.PreferencesUpdateRequest"> & {
  /**
   * Updates to apply (key-value pairs)
   *
   * @generated from field: google.protobuf.Struct updates = 1;
   */
  updates?: JsonObject;

  /**
   * Keys to remove
   *
   * @generated from field: repeated string removes = 2;
   */
  removes: string[];

  /**
   * Optional ETag for optimistic concurrency control
   *
   * @generated from field: string if_match = 3;
   */
  ifMatch: string;
};

/**
 * Describes the message gfxcafe.oku.account.v1.PreferencesUpdateRequest.
 * Use `create(PreferencesUpdateRequestSchema)` to create a new message.
 */
export const PreferencesUpdateRequestSchema: GenMessage<PreferencesUpdateRequest> = /*@__PURE__*/
  messageDesc(file_gfxcafe_oku_account_v1_preferences, 2);

/**
 * PreferencesUpdateResponse after updating preferences
 *
 * @generated from message gfxcafe.oku.account.v1.PreferencesUpdateResponse
 */
export type PreferencesUpdateResponse = Message<"gfxcafe.oku.account.v1.PreferencesUpdateResponse"> & {
  /**
   * Updated preferences
   *
   * @generated from field: google.protobuf.Struct preferences = 1;
   */
  preferences?: JsonObject;

  /**
   * New version/ETag
   *
   * @generated from field: string etag = 2;
   */
  etag: string;

  /**
   * Last modified timestamp
   *
   * @generated from field: google.protobuf.Timestamp last_modified = 3;
   */
  lastModified?: Timestamp;
};

/**
 * Describes the message gfxcafe.oku.account.v1.PreferencesUpdateResponse.
 * Use `create(PreferencesUpdateResponseSchema)` to create a new message.
 */
export const PreferencesUpdateResponseSchema: GenMessage<PreferencesUpdateResponse> = /*@__PURE__*/
  messageDesc(file_gfxcafe_oku_account_v1_preferences, 3);

/**
 * PreferencesService manages user preferences
 *
 * @generated from service gfxcafe.oku.account.v1.PreferencesService
 */
export const PreferencesService: GenService<{
  /**
   * Get user preferences (/preferences)
   *
   * @generated from rpc gfxcafe.oku.account.v1.PreferencesService.Preferences
   */
  preferences: {
    methodKind: "unary";
    input: typeof PreferencesRequestSchema;
    output: typeof PreferencesResponseSchema;
  },
  /**
   * Update user preferences (/preferences)
   *
   * @generated from rpc gfxcafe.oku.account.v1.PreferencesService.PreferencesUpdate
   */
  preferencesUpdate: {
    methodKind: "unary";
    input: typeof PreferencesUpdateRequestSchema;
    output: typeof PreferencesUpdateResponseSchema;
  },
}> = /*@__PURE__*/
  serviceDesc(file_gfxcafe_oku_account_v1_preferences, 0);

