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

import type { BinaryReadOptions, FieldList, JsonReadOptions, JsonValue, PartialMessage, PlainMessage } from "@bufbuild/protobuf";
import { Message, proto3 } from "@bufbuild/protobuf";
import { Feature } from "../../../types/v1/feature_pb";

/**
 * @generated from message svc.feature.v1.HasFeatureRequest
 */
export class HasFeatureRequest extends Message<HasFeatureRequest> {
  /**
   * @generated from field: string feature = 1;
   */
  feature = "";

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

  static readonly runtime: typeof proto3 = proto3;
  static readonly typeName = "svc.feature.v1.HasFeatureRequest";
  static readonly fields: FieldList = proto3.util.newFieldList(() => [
    { no: 1, name: "feature", kind: "scalar", T: 9 /* ScalarType.STRING */ },
  ]);

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

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

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

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

/**
 * @generated from message svc.feature.v1.HasFeatureResponse
 */
export class HasFeatureResponse extends Message<HasFeatureResponse> {
  /**
   * @generated from field: bool available = 1;
   */
  available = false;

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

  static readonly runtime: typeof proto3 = proto3;
  static readonly typeName = "svc.feature.v1.HasFeatureResponse";
  static readonly fields: FieldList = proto3.util.newFieldList(() => [
    { no: 1, name: "available", kind: "scalar", T: 8 /* ScalarType.BOOL */ },
  ]);

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

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

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

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

/**
 * @generated from message svc.feature.v1.ListFeatureRequest
 */
export class ListFeatureRequest extends Message<ListFeatureRequest> {
  constructor(data?: PartialMessage<ListFeatureRequest>) {
    super();
    proto3.util.initPartial(data, this);
  }

  static readonly runtime: typeof proto3 = proto3;
  static readonly typeName = "svc.feature.v1.ListFeatureRequest";
  static readonly fields: FieldList = proto3.util.newFieldList(() => [
  ]);

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

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

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

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

/**
 * @generated from message svc.feature.v1.ListFeatureResponse
 */
export class ListFeatureResponse extends Message<ListFeatureResponse> {
  /**
   * @generated from field: repeated types.v1.Feature features = 1;
   */
  features: Feature[] = [];

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

  static readonly runtime: typeof proto3 = proto3;
  static readonly typeName = "svc.feature.v1.ListFeatureResponse";
  static readonly fields: FieldList = proto3.util.newFieldList(() => [
    { no: 1, name: "features", kind: "message", T: Feature, repeated: true },
  ]);

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

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

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

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

/**
 * @generated from message svc.feature.v1.AllowedUsageRequest
 */
export class AllowedUsageRequest extends Message<AllowedUsageRequest> {
  constructor(data?: PartialMessage<AllowedUsageRequest>) {
    super();
    proto3.util.initPartial(data, this);
  }

  static readonly runtime: typeof proto3 = proto3;
  static readonly typeName = "svc.feature.v1.AllowedUsageRequest";
  static readonly fields: FieldList = proto3.util.newFieldList(() => [
  ]);

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

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

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

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

/**
 * @generated from message svc.feature.v1.AllowedUsageResponse
 */
export class AllowedUsageResponse extends Message<AllowedUsageResponse> {
  /**
   * @generated from field: svc.feature.v1.AllowedUsageResponse.LocalhostUsage localhost_usage = 1;
   */
  localhostUsage = AllowedUsageResponse_LocalhostUsage.NO_USAGE;

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

  static readonly runtime: typeof proto3 = proto3;
  static readonly typeName = "svc.feature.v1.AllowedUsageResponse";
  static readonly fields: FieldList = proto3.util.newFieldList(() => [
    { no: 1, name: "localhost_usage", kind: "enum", T: proto3.getEnumType(AllowedUsageResponse_LocalhostUsage) },
  ]);

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

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

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

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

/**
 * @generated from enum svc.feature.v1.AllowedUsageResponse.LocalhostUsage
 */
export enum AllowedUsageResponse_LocalhostUsage {
  /**
   * @generated from enum value: NO_USAGE = 0;
   */
  NO_USAGE = 0,

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

  /**
   * @generated from enum value: COMMERCIAL_USE = 2;
   */
  COMMERCIAL_USE = 2,
}
// Retrieve enum metadata with: proto3.getEnumType(AllowedUsageResponse_LocalhostUsage)
proto3.util.setEnumType(AllowedUsageResponse_LocalhostUsage, "svc.feature.v1.AllowedUsageResponse.LocalhostUsage", [
  { no: 0, name: "NO_USAGE" },
  { no: 1, name: "PERSONAL_USE" },
  { no: 2, name: "COMMERCIAL_USE" },
]);

