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

import type { BinaryReadOptions, FieldList, JsonReadOptions, JsonValue, PartialMessage, PlainMessage } from "@bufbuild/protobuf";
import { Message, proto3 } from "@bufbuild/protobuf";
import { ClientAPI, ModuleRegistration, Permission, ResourceType, Scope, UserUIPermissions } from "./shared_pb.js";
import { Role } from "./role_pb.js";
import { Module } from "./module_pb.js";

/**
 * @generated from message api.GetPermissionsRequest
 */
export class GetPermissionsRequest extends Message<GetPermissionsRequest> {
  /**
   * @generated from field: api.ResourceType RscType = 1;
   */
  RscType = ResourceType.UNKNOWN;

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

  /**
   * @generated from field: string Service = 3;
   */
  Service = "";

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

  static readonly runtime: typeof proto3 = proto3;
  static readonly typeName = "api.GetPermissionsRequest";
  static readonly fields: FieldList = proto3.util.newFieldList(() => [
    { no: 1, name: "RscType", kind: "enum", T: proto3.getEnumType(ResourceType) },
    { no: 2, name: "Client", kind: "scalar", T: 9 /* ScalarType.STRING */ },
    { no: 3, name: "Service", kind: "scalar", T: 9 /* ScalarType.STRING */ },
  ]);

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

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

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

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

/**
 * @generated from message api.GetPermissionsResult
 */
export class GetPermissionsResult extends Message<GetPermissionsResult> {
  /**
   * @generated from field: repeated api.Permission Permissions = 5;
   */
  Permissions: Permission[] = [];

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

  static readonly runtime: typeof proto3 = proto3;
  static readonly typeName = "api.GetPermissionsResult";
  static readonly fields: FieldList = proto3.util.newFieldList(() => [
    { no: 5, name: "Permissions", kind: "message", T: Permission, repeated: true },
  ]);

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

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

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

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

/**
 * @generated from message api.GetUIPermissionsRequest
 */
export class GetUIPermissionsRequest extends Message<GetUIPermissionsRequest> {
  /**
   * @generated from field: api.ResourceType RscType = 1;
   */
  RscType = ResourceType.UNKNOWN;

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

  /**
   * @generated from field: string Service = 3;
   */
  Service = "";

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

  static readonly runtime: typeof proto3 = proto3;
  static readonly typeName = "api.GetUIPermissionsRequest";
  static readonly fields: FieldList = proto3.util.newFieldList(() => [
    { no: 1, name: "RscType", kind: "enum", T: proto3.getEnumType(ResourceType) },
    { no: 2, name: "Client", kind: "scalar", T: 9 /* ScalarType.STRING */ },
    { no: 3, name: "Service", kind: "scalar", T: 9 /* ScalarType.STRING */ },
  ]);

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

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

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

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

/**
 * @generated from message api.GetUIPermissionsResult
 */
export class GetUIPermissionsResult extends Message<GetUIPermissionsResult> {
  /**
   * @generated from field: repeated api.Permission Permissions = 1;
   */
  Permissions: Permission[] = [];

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

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

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

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

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

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

/**
 * @generated from message api.ListUserUIPermissionsRequest
 */
export class ListUserUIPermissionsRequest extends Message<ListUserUIPermissionsRequest> {
  /**
   * @generated from field: string Client = 2;
   */
  Client = "";

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

  static readonly runtime: typeof proto3 = proto3;
  static readonly typeName = "api.ListUserUIPermissionsRequest";
  static readonly fields: FieldList = proto3.util.newFieldList(() => [
    { no: 2, name: "Client", kind: "scalar", T: 9 /* ScalarType.STRING */ },
  ]);

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

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

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

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

/**
 * @generated from message api.ListUserUIPermissionsResult
 */
export class ListUserUIPermissionsResult extends Message<ListUserUIPermissionsResult> {
  /**
   * @generated from field: repeated api.UserUIPermissions Permissions = 2;
   */
  Permissions: UserUIPermissions[] = [];

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

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

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

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

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

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

/**
 * @generated from message api.RegisterPackageRequest
 */
export class RegisterPackageRequest extends Message<RegisterPackageRequest> {
  /**
   * @generated from field: string PackageName = 1;
   */
  PackageName = "";

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

  /**
   * @generated from field: bool ForceFullScopeCreation = 3;
   */
  ForceFullScopeCreation = false;

  /**
   * @generated from field: repeated api.Role Roles = 4;
   */
  Roles: Role[] = [];

  /**
   * @generated from field: repeated api.ModuleRegistration Workflows = 5;
   */
  Workflows: ModuleRegistration[] = [];

  /**
   * @generated from field: repeated api.Module Modules = 6;
   */
  Modules: Module[] = [];

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

  static readonly runtime: typeof proto3 = proto3;
  static readonly typeName = "api.RegisterPackageRequest";
  static readonly fields: FieldList = proto3.util.newFieldList(() => [
    { no: 1, name: "PackageName", kind: "scalar", T: 9 /* ScalarType.STRING */ },
    { no: 2, name: "Clients", kind: "message", T: ClientAPI, repeated: true },
    { no: 3, name: "ForceFullScopeCreation", kind: "scalar", T: 8 /* ScalarType.BOOL */ },
    { no: 4, name: "Roles", kind: "message", T: Role, repeated: true },
    { no: 5, name: "Workflows", kind: "message", T: ModuleRegistration, repeated: true },
    { no: 6, name: "Modules", kind: "message", T: Module, repeated: true },
  ]);

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

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

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

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

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

  static readonly runtime: typeof proto3 = proto3;
  static readonly typeName = "api.RegisterPackageResult";
  static readonly fields: FieldList = proto3.util.newFieldList(() => [
  ]);

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

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

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

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

/**
 * @generated from message api.CreateScopeRequest
 */
export class CreateScopeRequest extends Message<CreateScopeRequest> {
  /**
   * @generated from field: string ModuleName = 1;
   */
  ModuleName = "";

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

  /**
   * @generated from field: api.Scope Scope = 3;
   */
  Scope?: Scope;

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

  static readonly runtime: typeof proto3 = proto3;
  static readonly typeName = "api.CreateScopeRequest";
  static readonly fields: FieldList = proto3.util.newFieldList(() => [
    { no: 1, name: "ModuleName", kind: "scalar", T: 9 /* ScalarType.STRING */ },
    { no: 2, name: "Client", kind: "scalar", T: 9 /* ScalarType.STRING */ },
    { no: 3, name: "Scope", kind: "message", T: Scope },
  ]);

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

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

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

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

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

  static readonly runtime: typeof proto3 = proto3;
  static readonly typeName = "api.CreateScopeResult";
  static readonly fields: FieldList = proto3.util.newFieldList(() => [
  ]);

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

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

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

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

/**
 * @generated from message api.DeleteScopeRequest
 */
export class DeleteScopeRequest extends Message<DeleteScopeRequest> {
  /**
   * @generated from field: string ModuleName = 1;
   */
  ModuleName = "";

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

  /**
   * @generated from field: api.Scope Scope = 3;
   */
  Scope?: Scope;

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

  static readonly runtime: typeof proto3 = proto3;
  static readonly typeName = "api.DeleteScopeRequest";
  static readonly fields: FieldList = proto3.util.newFieldList(() => [
    { no: 1, name: "ModuleName", kind: "scalar", T: 9 /* ScalarType.STRING */ },
    { no: 2, name: "Client", kind: "scalar", T: 9 /* ScalarType.STRING */ },
    { no: 3, name: "Scope", kind: "message", T: Scope },
  ]);

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

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

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

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

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

  static readonly runtime: typeof proto3 = proto3;
  static readonly typeName = "api.DeleteScopeResult";
  static readonly fields: FieldList = proto3.util.newFieldList(() => [
  ]);

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

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

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

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

/**
 * @generated from message api.CleanScopeRequest
 */
export class CleanScopeRequest extends Message<CleanScopeRequest> {
  /**
   * @generated from field: string Client = 1;
   */
  Client = "";

  /**
   * @generated from field: api.Scope Scope = 2;
   */
  Scope?: Scope;

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

  static readonly runtime: typeof proto3 = proto3;
  static readonly typeName = "api.CleanScopeRequest";
  static readonly fields: FieldList = proto3.util.newFieldList(() => [
    { no: 1, name: "Client", kind: "scalar", T: 9 /* ScalarType.STRING */ },
    { no: 2, name: "Scope", kind: "message", T: Scope },
  ]);

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

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

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

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

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

  static readonly runtime: typeof proto3 = proto3;
  static readonly typeName = "api.CleanScopeResult";
  static readonly fields: FieldList = proto3.util.newFieldList(() => [
  ]);

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

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

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

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

