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

import type { BinaryReadOptions, FieldList, JsonReadOptions, JsonValue, PartialMessage, PlainMessage } from "@bufbuild/protobuf";
import { Message, proto3, protoInt64 } from "@bufbuild/protobuf";
import { MetadatasToApply } from "./metadata_pb.js";
import { Executionflow } from "./executionflow_pb.js";
import { Stock } from "./stock_pb.js";
import { Handlingunit } from "./handlingunit_pb.js";
import { Movement } from "./movement_pb.js";
import { Item } from "./item_pb.js";
import { Actor } from "./actor_pb.js";

/**
 * ClickHouseInput Proto message for clickhouse streaming process
 *
 * @generated from message api.TradeClickHouseInput
 */
export class TradeClickHouseInput extends Message<TradeClickHouseInput> {
  /**
   * @generated from field: api.TradeClickhouseElements ClickhouseElements = 1;
   */
  ClickhouseElements?: TradeClickhouseElements;

  /**
   * @generated from field: repeated api.MetadatasToApply MetadatasToApply = 2;
   */
  MetadatasToApply: MetadatasToApply[] = [];

  constructor(data?: PartialMessage<TradeClickHouseInput>) {
    super();
    proto3.util.initPartial(data, this);
  }

  static readonly runtime: typeof proto3 = proto3;
  static readonly typeName = "api.TradeClickHouseInput";
  static readonly fields: FieldList = proto3.util.newFieldList(() => [
    { no: 1, name: "ClickhouseElements", kind: "message", T: TradeClickhouseElements },
    { no: 2, name: "MetadatasToApply", kind: "message", T: MetadatasToApply, repeated: true },
  ]);

  static fromBinary(bytes: Uint8Array, options?: Partial<BinaryReadOptions>): TradeClickHouseInput {
    return new TradeClickHouseInput().fromBinary(bytes, options);
  }

  static fromJson(jsonValue: JsonValue, options?: Partial<JsonReadOptions>): TradeClickHouseInput {
    return new TradeClickHouseInput().fromJson(jsonValue, options);
  }

  static fromJsonString(jsonString: string, options?: Partial<JsonReadOptions>): TradeClickHouseInput {
    return new TradeClickHouseInput().fromJsonString(jsonString, options);
  }

  static equals(a: TradeClickHouseInput | PlainMessage<TradeClickHouseInput> | undefined, b: TradeClickHouseInput | PlainMessage<TradeClickHouseInput> | undefined): boolean {
    return proto3.util.equals(TradeClickHouseInput, a, b);
  }
}

/**
 * @generated from message api.TradeClickhouseElement
 */
export class TradeClickhouseElement extends Message<TradeClickhouseElement> {
  /**
   * @generated from oneof api.TradeClickhouseElement.Content
   */
  Content: {
    /**
     * @generated from field: api.Executionflow Executionflow = 1;
     */
    value: Executionflow;
    case: "Executionflow";
  } | {
    /**
     * @generated from field: api.Stock Stock = 2;
     */
    value: Stock;
    case: "Stock";
  } | {
    /**
     * @generated from field: api.Handlingunit Handlingunit = 3;
     */
    value: Handlingunit;
    case: "Handlingunit";
  } | {
    /**
     * @generated from field: api.Movement Movement = 4;
     */
    value: Movement;
    case: "Movement";
  } | {
    /**
     * @generated from field: api.Item Item = 5;
     */
    value: Item;
    case: "Item";
  } | {
    /**
     * @generated from field: api.Actor Actor = 6;
     */
    value: Actor;
    case: "Actor";
  } | { case: undefined; value?: undefined } = { case: undefined };

  constructor(data?: PartialMessage<TradeClickhouseElement>) {
    super();
    proto3.util.initPartial(data, this);
  }

  static readonly runtime: typeof proto3 = proto3;
  static readonly typeName = "api.TradeClickhouseElement";
  static readonly fields: FieldList = proto3.util.newFieldList(() => [
    { no: 1, name: "Executionflow", kind: "message", T: Executionflow, oneof: "Content" },
    { no: 2, name: "Stock", kind: "message", T: Stock, oneof: "Content" },
    { no: 3, name: "Handlingunit", kind: "message", T: Handlingunit, oneof: "Content" },
    { no: 4, name: "Movement", kind: "message", T: Movement, oneof: "Content" },
    { no: 5, name: "Item", kind: "message", T: Item, oneof: "Content" },
    { no: 6, name: "Actor", kind: "message", T: Actor, oneof: "Content" },
  ]);

  static fromBinary(bytes: Uint8Array, options?: Partial<BinaryReadOptions>): TradeClickhouseElement {
    return new TradeClickhouseElement().fromBinary(bytes, options);
  }

  static fromJson(jsonValue: JsonValue, options?: Partial<JsonReadOptions>): TradeClickhouseElement {
    return new TradeClickhouseElement().fromJson(jsonValue, options);
  }

  static fromJsonString(jsonString: string, options?: Partial<JsonReadOptions>): TradeClickhouseElement {
    return new TradeClickhouseElement().fromJsonString(jsonString, options);
  }

  static equals(a: TradeClickhouseElement | PlainMessage<TradeClickhouseElement> | undefined, b: TradeClickhouseElement | PlainMessage<TradeClickhouseElement> | undefined): boolean {
    return proto3.util.equals(TradeClickhouseElement, a, b);
  }
}

/**
 * @generated from message api.TradeClickhouseElements
 */
export class TradeClickhouseElements extends Message<TradeClickhouseElements> {
  /**
   * @generated from field: repeated api.TradeClickhouseElement ClickhouseElements = 1;
   */
  ClickhouseElements: TradeClickhouseElement[] = [];

  constructor(data?: PartialMessage<TradeClickhouseElements>) {
    super();
    proto3.util.initPartial(data, this);
  }

  static readonly runtime: typeof proto3 = proto3;
  static readonly typeName = "api.TradeClickhouseElements";
  static readonly fields: FieldList = proto3.util.newFieldList(() => [
    { no: 1, name: "ClickhouseElements", kind: "message", T: TradeClickhouseElement, repeated: true },
  ]);

  static fromBinary(bytes: Uint8Array, options?: Partial<BinaryReadOptions>): TradeClickhouseElements {
    return new TradeClickhouseElements().fromBinary(bytes, options);
  }

  static fromJson(jsonValue: JsonValue, options?: Partial<JsonReadOptions>): TradeClickhouseElements {
    return new TradeClickhouseElements().fromJson(jsonValue, options);
  }

  static fromJsonString(jsonString: string, options?: Partial<JsonReadOptions>): TradeClickhouseElements {
    return new TradeClickhouseElements().fromJsonString(jsonString, options);
  }

  static equals(a: TradeClickhouseElements | PlainMessage<TradeClickhouseElements> | undefined, b: TradeClickhouseElements | PlainMessage<TradeClickhouseElements> | undefined): boolean {
    return proto3.util.equals(TradeClickhouseElements, a, b);
  }
}

/**
 * TradeCheckpointData  Proto message for clickhouse streaming process
 *
 * @generated from message api.TradeCheckpointData
 */
export class TradeCheckpointData extends Message<TradeCheckpointData> {
  /**
   * @generated from field: int64 IdCheckpoint = 1;
   */
  IdCheckpoint = protoInt64.zero;

  /**
   * @generated from field: string Project = 2;
   */
  Project = "";

  /**
   * @generated from field: repeated api.TradeClickHouseInput ClickHouseInput = 3;
   */
  ClickHouseInput: TradeClickHouseInput[] = [];

  constructor(data?: PartialMessage<TradeCheckpointData>) {
    super();
    proto3.util.initPartial(data, this);
  }

  static readonly runtime: typeof proto3 = proto3;
  static readonly typeName = "api.TradeCheckpointData";
  static readonly fields: FieldList = proto3.util.newFieldList(() => [
    { no: 1, name: "IdCheckpoint", kind: "scalar", T: 3 /* ScalarType.INT64 */ },
    { no: 2, name: "Project", kind: "scalar", T: 9 /* ScalarType.STRING */ },
    { no: 3, name: "ClickHouseInput", kind: "message", T: TradeClickHouseInput, repeated: true },
  ]);

  static fromBinary(bytes: Uint8Array, options?: Partial<BinaryReadOptions>): TradeCheckpointData {
    return new TradeCheckpointData().fromBinary(bytes, options);
  }

  static fromJson(jsonValue: JsonValue, options?: Partial<JsonReadOptions>): TradeCheckpointData {
    return new TradeCheckpointData().fromJson(jsonValue, options);
  }

  static fromJsonString(jsonString: string, options?: Partial<JsonReadOptions>): TradeCheckpointData {
    return new TradeCheckpointData().fromJsonString(jsonString, options);
  }

  static equals(a: TradeCheckpointData | PlainMessage<TradeCheckpointData> | undefined, b: TradeCheckpointData | PlainMessage<TradeCheckpointData> | undefined): boolean {
    return proto3.util.equals(TradeCheckpointData, a, b);
  }
}

