// @generated by protoc-gen-es v1.10.0 with parameter "target=ts"
// @generated from file role.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 { Permission, RequestOrganisationHeader, RequestProjectHeader, ResourceType } from "./shared_pb.js";
import { Paging } from "./base_pb.js";

/**
 * @generated from enum api.ApplicationType
 */
export enum ApplicationType {
  /**
   * @generated from enum value: PROPAGATE = 0;
   */
  PROPAGATE = 0,

  /**
   * @generated from enum value: ORGANISATION_CLONE = 1;
   */
  ORGANISATION_CLONE = 1,
}
// Retrieve enum metadata with: proto3.getEnumType(ApplicationType)
proto3.util.setEnumType(ApplicationType, "api.ApplicationType", [
  { no: 0, name: "PROPAGATE" },
  { no: 1, name: "ORGANISATION_CLONE" },
]);

/**
 * @generated from enum api.RoleType
 */
export enum RoleType {
  /**
   * @generated from enum value: ROLE_TYPE_UNKNOWN = 0;
   */
  UNKNOWN = 0,

  /**
   * @generated from enum value: ROLE_TYPE_PERMISSION = 10;
   */
  PERMISSION = 10,

  /**
   * @generated from enum value: ROLE_TYPE_COMPOSITE = 20;
   */
  COMPOSITE = 20,
}
// Retrieve enum metadata with: proto3.getEnumType(RoleType)
proto3.util.setEnumType(RoleType, "api.RoleType", [
  { no: 0, name: "ROLE_TYPE_UNKNOWN" },
  { no: 10, name: "ROLE_TYPE_PERMISSION" },
  { no: 20, name: "ROLE_TYPE_COMPOSITE" },
]);

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

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

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

  /**
   * @generated from field: api.ResourceType ResourceType = 4;
   */
  ResourceType = ResourceType.UNKNOWN;

  /**
   * @generated from field: repeated api.Permission Permissions = 5;
   */
  Permissions: Permission[] = [];

  /**
   * @generated from field: api.RoleType Type = 6;
   */
  Type = RoleType.UNKNOWN;

  /**
   * @generated from field: bool ReadOnly = 7;
   */
  ReadOnly = false;

  /**
   * @generated from field: api.ApplicationType ApplicationType = 8;
   */
  ApplicationType = ApplicationType.PROPAGATE;

  /**
   * @generated from field: string CreatedAt = 11;
   */
  CreatedAt = "";

  /**
   * @generated from field: string CreatedBy = 12;
   */
  CreatedBy = "";

  /**
   * @generated from field: string Description = 13;
   */
  Description = "";

  /**
   * @generated from field: repeated api.ExternalPermission ExternalPermissions = 14;
   */
  ExternalPermissions: ExternalPermission[] = [];

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

  static readonly runtime: typeof proto3 = proto3;
  static readonly typeName = "api.Role";
  static readonly fields: FieldList = proto3.util.newFieldList(() => [
    { no: 1, name: "ID", kind: "scalar", T: 9 /* ScalarType.STRING */ },
    { no: 2, name: "Name", kind: "scalar", T: 9 /* ScalarType.STRING */ },
    { no: 3, name: "ResourceID", kind: "scalar", T: 9 /* ScalarType.STRING */ },
    { no: 4, name: "ResourceType", kind: "enum", T: proto3.getEnumType(ResourceType) },
    { no: 5, name: "Permissions", kind: "message", T: Permission, repeated: true },
    { no: 6, name: "Type", kind: "enum", T: proto3.getEnumType(RoleType) },
    { no: 7, name: "ReadOnly", kind: "scalar", T: 8 /* ScalarType.BOOL */ },
    { no: 8, name: "ApplicationType", kind: "enum", T: proto3.getEnumType(ApplicationType) },
    { no: 11, name: "CreatedAt", kind: "scalar", T: 9 /* ScalarType.STRING */ },
    { no: 12, name: "CreatedBy", kind: "scalar", T: 9 /* ScalarType.STRING */ },
    { no: 13, name: "Description", kind: "scalar", T: 9 /* ScalarType.STRING */ },
    { no: 14, name: "ExternalPermissions", kind: "message", T: ExternalPermission, repeated: true },
  ]);

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

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

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

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

/**
 * @generated from message api.ExternalPermission
 */
export class ExternalPermission extends Message<ExternalPermission> {
  /**
   * The key of the external permission. Can be prefixed by a resource id (e.g. "resourceId#permissionKey") to specify a resource-specific permission. If no resource id is specified, the permission will be applied to all eligible resources.
   *
   * @generated from field: string Key = 1;
   */
  Key = "";

  /**
   * The values of the external permission.
   *
   * @generated from field: repeated string Values = 2;
   */
  Values: string[] = [];

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

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

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

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

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

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

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

  /**
   * @generated from field: api.ResourceType ResourceType = 4;
   */
  ResourceType = ResourceType.UNKNOWN;

  /**
   * @generated from field: repeated api.Permission Permissions = 5;
   */
  Permissions: Permission[] = [];

  /**
   * @generated from field: api.RoleType Type = 6;
   */
  Type = RoleType.UNKNOWN;

  /**
   * @generated from field: api.ApplicationType ApplicationType = 7;
   */
  ApplicationType = ApplicationType.PROPAGATE;

  /**
   * @generated from field: string Description = 8;
   */
  Description = "";

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

  static readonly runtime: typeof proto3 = proto3;
  static readonly typeName = "api.CreatePlatformRoleRequest";
  static readonly fields: FieldList = proto3.util.newFieldList(() => [
    { no: 2, name: "Name", kind: "scalar", T: 9 /* ScalarType.STRING */ },
    { no: 4, name: "ResourceType", kind: "enum", T: proto3.getEnumType(ResourceType) },
    { no: 5, name: "Permissions", kind: "message", T: Permission, repeated: true },
    { no: 6, name: "Type", kind: "enum", T: proto3.getEnumType(RoleType) },
    { no: 7, name: "ApplicationType", kind: "enum", T: proto3.getEnumType(ApplicationType) },
    { no: 8, name: "Description", kind: "scalar", T: 9 /* ScalarType.STRING */ },
  ]);

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

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

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

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

/**
 * @generated from message api.CreatePlatformRoleResult
 */
export class CreatePlatformRoleResult extends Message<CreatePlatformRoleResult> {
  /**
   * @generated from field: api.Role Result = 1;
   */
  Result?: Role;

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

  static readonly runtime: typeof proto3 = proto3;
  static readonly typeName = "api.CreatePlatformRoleResult";
  static readonly fields: FieldList = proto3.util.newFieldList(() => [
    { no: 1, name: "Result", kind: "message", T: Role },
  ]);

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

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

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

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

/**
 * @generated from message api.CreateOrganisationRoleRequest
 */
export class CreateOrganisationRoleRequest extends Message<CreateOrganisationRoleRequest> {
  /**
   * @generated from field: api.RequestOrganisationHeader Header = 1;
   */
  Header?: RequestOrganisationHeader;

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

  /**
   * @generated from field: api.ResourceType ResourceType = 4;
   */
  ResourceType = ResourceType.UNKNOWN;

  /**
   * @generated from field: repeated api.Permission Permissions = 5;
   */
  Permissions: Permission[] = [];

  /**
   * @generated from field: api.RoleType Type = 6;
   */
  Type = RoleType.UNKNOWN;

  /**
   * @generated from field: string Description = 7;
   */
  Description = "";

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

  static readonly runtime: typeof proto3 = proto3;
  static readonly typeName = "api.CreateOrganisationRoleRequest";
  static readonly fields: FieldList = proto3.util.newFieldList(() => [
    { no: 1, name: "Header", kind: "message", T: RequestOrganisationHeader },
    { no: 2, name: "Name", kind: "scalar", T: 9 /* ScalarType.STRING */ },
    { no: 4, name: "ResourceType", kind: "enum", T: proto3.getEnumType(ResourceType) },
    { no: 5, name: "Permissions", kind: "message", T: Permission, repeated: true },
    { no: 6, name: "Type", kind: "enum", T: proto3.getEnumType(RoleType) },
    { no: 7, name: "Description", kind: "scalar", T: 9 /* ScalarType.STRING */ },
  ]);

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

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

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

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

/**
 * @generated from message api.CreateOrganisationRoleResult
 */
export class CreateOrganisationRoleResult extends Message<CreateOrganisationRoleResult> {
  /**
   * @generated from field: api.Role Result = 1;
   */
  Result?: Role;

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

  static readonly runtime: typeof proto3 = proto3;
  static readonly typeName = "api.CreateOrganisationRoleResult";
  static readonly fields: FieldList = proto3.util.newFieldList(() => [
    { no: 1, name: "Result", kind: "message", T: Role },
  ]);

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

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

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

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

/**
 * @generated from message api.CreateProjectRoleRequest
 */
export class CreateProjectRoleRequest extends Message<CreateProjectRoleRequest> {
  /**
   * @generated from field: api.RequestProjectHeader Header = 1;
   */
  Header?: RequestProjectHeader;

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

  /**
   * @generated from field: api.ResourceType ResourceType = 4;
   */
  ResourceType = ResourceType.UNKNOWN;

  /**
   * @generated from field: repeated api.Permission Permissions = 5;
   */
  Permissions: Permission[] = [];

  /**
   * @generated from field: api.RoleType Type = 6;
   */
  Type = RoleType.UNKNOWN;

  /**
   * @generated from field: string Description = 7;
   */
  Description = "";

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

  static readonly runtime: typeof proto3 = proto3;
  static readonly typeName = "api.CreateProjectRoleRequest";
  static readonly fields: FieldList = proto3.util.newFieldList(() => [
    { no: 1, name: "Header", kind: "message", T: RequestProjectHeader },
    { no: 2, name: "Name", kind: "scalar", T: 9 /* ScalarType.STRING */ },
    { no: 4, name: "ResourceType", kind: "enum", T: proto3.getEnumType(ResourceType) },
    { no: 5, name: "Permissions", kind: "message", T: Permission, repeated: true },
    { no: 6, name: "Type", kind: "enum", T: proto3.getEnumType(RoleType) },
    { no: 7, name: "Description", kind: "scalar", T: 9 /* ScalarType.STRING */ },
  ]);

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

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

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

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

/**
 * @generated from message api.CreateProjectRoleResult
 */
export class CreateProjectRoleResult extends Message<CreateProjectRoleResult> {
  /**
   * @generated from field: api.Role Result = 1;
   */
  Result?: Role;

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

  static readonly runtime: typeof proto3 = proto3;
  static readonly typeName = "api.CreateProjectRoleResult";
  static readonly fields: FieldList = proto3.util.newFieldList(() => [
    { no: 1, name: "Result", kind: "message", T: Role },
  ]);

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

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

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

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

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

  /**
   * @generated from field: api.ResourceType ResourceType = 4;
   */
  ResourceType = ResourceType.UNKNOWN;

  /**
   * @generated from field: repeated api.Permission Permissions = 5;
   */
  Permissions: Permission[] = [];

  /**
   * @generated from field: api.RoleType Type = 6;
   */
  Type = RoleType.UNKNOWN;

  /**
   * @generated from field: api.ApplicationType ApplicationType = 7;
   */
  ApplicationType = ApplicationType.PROPAGATE;

  /**
   * @generated from field: string Description = 8;
   */
  Description = "";

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

  static readonly runtime: typeof proto3 = proto3;
  static readonly typeName = "api.UpdatePlatformRoleRequest";
  static readonly fields: FieldList = proto3.util.newFieldList(() => [
    { no: 2, name: "Name", kind: "scalar", T: 9 /* ScalarType.STRING */ },
    { no: 4, name: "ResourceType", kind: "enum", T: proto3.getEnumType(ResourceType) },
    { no: 5, name: "Permissions", kind: "message", T: Permission, repeated: true },
    { no: 6, name: "Type", kind: "enum", T: proto3.getEnumType(RoleType) },
    { no: 7, name: "ApplicationType", kind: "enum", T: proto3.getEnumType(ApplicationType) },
    { no: 8, name: "Description", kind: "scalar", T: 9 /* ScalarType.STRING */ },
  ]);

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

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

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

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

/**
 * @generated from message api.UpdatePlatformRoleResult
 */
export class UpdatePlatformRoleResult extends Message<UpdatePlatformRoleResult> {
  /**
   * @generated from field: api.Role Result = 1;
   */
  Result?: Role;

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

  static readonly runtime: typeof proto3 = proto3;
  static readonly typeName = "api.UpdatePlatformRoleResult";
  static readonly fields: FieldList = proto3.util.newFieldList(() => [
    { no: 1, name: "Result", kind: "message", T: Role },
  ]);

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

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

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

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

/**
 * @generated from message api.UpdateOrganisationRoleRequest
 */
export class UpdateOrganisationRoleRequest extends Message<UpdateOrganisationRoleRequest> {
  /**
   * @generated from field: api.RequestOrganisationHeader Header = 1;
   */
  Header?: RequestOrganisationHeader;

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

  /**
   * @generated from field: api.ResourceType ResourceType = 4;
   */
  ResourceType = ResourceType.UNKNOWN;

  /**
   * @generated from field: repeated api.Permission Permissions = 5;
   */
  Permissions: Permission[] = [];

  /**
   * @generated from field: api.RoleType Type = 6;
   */
  Type = RoleType.UNKNOWN;

  /**
   * @generated from field: string Description = 7;
   */
  Description = "";

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

  static readonly runtime: typeof proto3 = proto3;
  static readonly typeName = "api.UpdateOrganisationRoleRequest";
  static readonly fields: FieldList = proto3.util.newFieldList(() => [
    { no: 1, name: "Header", kind: "message", T: RequestOrganisationHeader },
    { no: 2, name: "Name", kind: "scalar", T: 9 /* ScalarType.STRING */ },
    { no: 4, name: "ResourceType", kind: "enum", T: proto3.getEnumType(ResourceType) },
    { no: 5, name: "Permissions", kind: "message", T: Permission, repeated: true },
    { no: 6, name: "Type", kind: "enum", T: proto3.getEnumType(RoleType) },
    { no: 7, name: "Description", kind: "scalar", T: 9 /* ScalarType.STRING */ },
  ]);

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

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

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

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

/**
 * @generated from message api.UpdateOrganisationRoleResult
 */
export class UpdateOrganisationRoleResult extends Message<UpdateOrganisationRoleResult> {
  /**
   * @generated from field: api.Role Result = 1;
   */
  Result?: Role;

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

  static readonly runtime: typeof proto3 = proto3;
  static readonly typeName = "api.UpdateOrganisationRoleResult";
  static readonly fields: FieldList = proto3.util.newFieldList(() => [
    { no: 1, name: "Result", kind: "message", T: Role },
  ]);

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

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

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

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

/**
 * @generated from message api.UpdateProjectRoleRequest
 */
export class UpdateProjectRoleRequest extends Message<UpdateProjectRoleRequest> {
  /**
   * @generated from field: api.RequestProjectHeader Header = 1;
   */
  Header?: RequestProjectHeader;

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

  /**
   * @generated from field: api.ResourceType ResourceType = 4;
   */
  ResourceType = ResourceType.UNKNOWN;

  /**
   * @generated from field: repeated api.Permission Permissions = 5;
   */
  Permissions: Permission[] = [];

  /**
   * @generated from field: api.RoleType Type = 6;
   */
  Type = RoleType.UNKNOWN;

  /**
   * @generated from field: string Description = 7;
   */
  Description = "";

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

  static readonly runtime: typeof proto3 = proto3;
  static readonly typeName = "api.UpdateProjectRoleRequest";
  static readonly fields: FieldList = proto3.util.newFieldList(() => [
    { no: 1, name: "Header", kind: "message", T: RequestProjectHeader },
    { no: 2, name: "Name", kind: "scalar", T: 9 /* ScalarType.STRING */ },
    { no: 4, name: "ResourceType", kind: "enum", T: proto3.getEnumType(ResourceType) },
    { no: 5, name: "Permissions", kind: "message", T: Permission, repeated: true },
    { no: 6, name: "Type", kind: "enum", T: proto3.getEnumType(RoleType) },
    { no: 7, name: "Description", kind: "scalar", T: 9 /* ScalarType.STRING */ },
  ]);

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

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

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

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

/**
 * @generated from message api.UpdateProjectRoleResult
 */
export class UpdateProjectRoleResult extends Message<UpdateProjectRoleResult> {
  /**
   * @generated from field: api.Role Result = 1;
   */
  Result?: Role;

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

  static readonly runtime: typeof proto3 = proto3;
  static readonly typeName = "api.UpdateProjectRoleResult";
  static readonly fields: FieldList = proto3.util.newFieldList(() => [
    { no: 1, name: "Result", kind: "message", T: Role },
  ]);

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

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

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

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

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

  /**
   * @generated from field: api.ResourceType ResourceType = 2;
   */
  ResourceType = ResourceType.UNKNOWN;

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

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

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

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

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

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

/**
 * @generated from message api.GetPlatformRoleResult
 */
export class GetPlatformRoleResult extends Message<GetPlatformRoleResult> {
  /**
   * @generated from field: api.Role Result = 1;
   */
  Result?: Role;

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

  static readonly runtime: typeof proto3 = proto3;
  static readonly typeName = "api.GetPlatformRoleResult";
  static readonly fields: FieldList = proto3.util.newFieldList(() => [
    { no: 1, name: "Result", kind: "message", T: Role },
  ]);

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

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

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

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

/**
 * @generated from message api.GetOrganisationRoleRequest
 */
export class GetOrganisationRoleRequest extends Message<GetOrganisationRoleRequest> {
  /**
   * @generated from field: api.RequestOrganisationHeader Header = 1;
   */
  Header?: RequestOrganisationHeader;

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

  /**
   * @generated from field: api.ResourceType ResourceType = 3;
   */
  ResourceType = ResourceType.UNKNOWN;

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

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

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

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

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

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

/**
 * @generated from message api.GetOrganisationRoleResult
 */
export class GetOrganisationRoleResult extends Message<GetOrganisationRoleResult> {
  /**
   * @generated from field: api.Role Result = 1;
   */
  Result?: Role;

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

  static readonly runtime: typeof proto3 = proto3;
  static readonly typeName = "api.GetOrganisationRoleResult";
  static readonly fields: FieldList = proto3.util.newFieldList(() => [
    { no: 1, name: "Result", kind: "message", T: Role },
  ]);

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

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

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

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

/**
 * @generated from message api.GetProjectRoleRequest
 */
export class GetProjectRoleRequest extends Message<GetProjectRoleRequest> {
  /**
   * @generated from field: api.RequestProjectHeader Header = 1;
   */
  Header?: RequestProjectHeader;

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

  /**
   * @generated from field: api.ResourceType ResourceType = 3;
   */
  ResourceType = ResourceType.UNKNOWN;

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

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

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

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

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

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

/**
 * @generated from message api.GetProjectRoleResult
 */
export class GetProjectRoleResult extends Message<GetProjectRoleResult> {
  /**
   * @generated from field: api.Role Result = 1;
   */
  Result?: Role;

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

  static readonly runtime: typeof proto3 = proto3;
  static readonly typeName = "api.GetProjectRoleResult";
  static readonly fields: FieldList = proto3.util.newFieldList(() => [
    { no: 1, name: "Result", kind: "message", T: Role },
  ]);

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

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

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

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

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

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

  /**
   * @generated from field: api.RoleType Type = 4;
   */
  Type = RoleType.UNKNOWN;

  /**
   * @generated from field: api.ApplicationType ApplicationType = 5;
   */
  ApplicationType = ApplicationType.PROPAGATE;

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

  static readonly runtime: typeof proto3 = proto3;
  static readonly typeName = "api.ListPlatformRolesRequest";
  static readonly fields: FieldList = proto3.util.newFieldList(() => [
    { no: 2, name: "ResourceType", kind: "enum", T: proto3.getEnumType(ResourceType) },
    { no: 3, name: "Paging", kind: "message", T: Paging },
    { no: 4, name: "Type", kind: "enum", T: proto3.getEnumType(RoleType) },
    { no: 5, name: "ApplicationType", kind: "enum", T: proto3.getEnumType(ApplicationType) },
  ]);

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

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

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

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

/**
 * @generated from message api.ListPlatformRolesResult
 */
export class ListPlatformRolesResult extends Message<ListPlatformRolesResult> {
  /**
   * @generated from field: repeated api.Role Results = 1;
   */
  Results: Role[] = [];

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

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

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

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

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

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

/**
 * @generated from message api.ListOrganisationRolesRequest
 */
export class ListOrganisationRolesRequest extends Message<ListOrganisationRolesRequest> {
  /**
   * @generated from field: api.RequestOrganisationHeader Header = 1;
   */
  Header?: RequestOrganisationHeader;

  /**
   * @generated from field: api.ResourceType ResourceType = 2;
   */
  ResourceType = ResourceType.UNKNOWN;

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

  /**
   * @generated from field: api.RoleType Type = 4;
   */
  Type = RoleType.UNKNOWN;

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

  static readonly runtime: typeof proto3 = proto3;
  static readonly typeName = "api.ListOrganisationRolesRequest";
  static readonly fields: FieldList = proto3.util.newFieldList(() => [
    { no: 1, name: "Header", kind: "message", T: RequestOrganisationHeader },
    { no: 2, name: "ResourceType", kind: "enum", T: proto3.getEnumType(ResourceType) },
    { no: 3, name: "Paging", kind: "message", T: Paging },
    { no: 4, name: "Type", kind: "enum", T: proto3.getEnumType(RoleType) },
  ]);

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

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

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

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

/**
 * @generated from message api.ListOrganisationRolesResult
 */
export class ListOrganisationRolesResult extends Message<ListOrganisationRolesResult> {
  /**
   * @generated from field: repeated api.Role Results = 1;
   */
  Results: Role[] = [];

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

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

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

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

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

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

/**
 * @generated from message api.ListProjectRolesRequest
 */
export class ListProjectRolesRequest extends Message<ListProjectRolesRequest> {
  /**
   * @generated from field: api.RequestProjectHeader Header = 1;
   */
  Header?: RequestProjectHeader;

  /**
   * @generated from field: api.ResourceType ResourceType = 2;
   */
  ResourceType = ResourceType.UNKNOWN;

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

  /**
   * @generated from field: api.RoleType Type = 4;
   */
  Type = RoleType.UNKNOWN;

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

  static readonly runtime: typeof proto3 = proto3;
  static readonly typeName = "api.ListProjectRolesRequest";
  static readonly fields: FieldList = proto3.util.newFieldList(() => [
    { no: 1, name: "Header", kind: "message", T: RequestProjectHeader },
    { no: 2, name: "ResourceType", kind: "enum", T: proto3.getEnumType(ResourceType) },
    { no: 3, name: "Paging", kind: "message", T: Paging },
    { no: 4, name: "Type", kind: "enum", T: proto3.getEnumType(RoleType) },
  ]);

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

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

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

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

/**
 * @generated from message api.ListProjectRolesResult
 */
export class ListProjectRolesResult extends Message<ListProjectRolesResult> {
  /**
   * @generated from field: repeated api.Role Results = 1;
   */
  Results: Role[] = [];

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

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

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

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

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

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

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

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

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

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

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

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

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

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

/**
 * @generated from message api.PutRoleExternalPermissionsResult
 */
export class PutRoleExternalPermissionsResult extends Message<PutRoleExternalPermissionsResult> {
  /**
   * @generated from field: api.Role Result = 1;
   */
  Result?: Role;

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

  static readonly runtime: typeof proto3 = proto3;
  static readonly typeName = "api.PutRoleExternalPermissionsResult";
  static readonly fields: FieldList = proto3.util.newFieldList(() => [
    { no: 1, name: "Result", kind: "message", T: Role },
  ]);

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

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

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

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

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

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

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

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

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

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

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

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

/**
 * @generated from message api.DeleteRoleExternalPermissionsResult
 */
export class DeleteRoleExternalPermissionsResult extends Message<DeleteRoleExternalPermissionsResult> {
  /**
   * @generated from field: api.Role Result = 1;
   */
  Result?: Role;

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

  static readonly runtime: typeof proto3 = proto3;
  static readonly typeName = "api.DeleteRoleExternalPermissionsResult";
  static readonly fields: FieldList = proto3.util.newFieldList(() => [
    { no: 1, name: "Result", kind: "message", T: Role },
  ]);

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

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

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

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

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

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

  static readonly runtime: typeof proto3 = proto3;
  static readonly typeName = "api.DeleteAllPlatformRolesRequest";
  static readonly fields: FieldList = proto3.util.newFieldList(() => [
    { no: 4, name: "ResourceType", kind: "enum", T: proto3.getEnumType(ResourceType) },
  ]);

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

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

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

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

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

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

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

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

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

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

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

  /**
   * @generated from field: api.ResourceType ResourceType = 4;
   */
  ResourceType = ResourceType.UNKNOWN;

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

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

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

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

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

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

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

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

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

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

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

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

/**
 * @generated from message api.DeleteOrganisationRoleRequest
 */
export class DeleteOrganisationRoleRequest extends Message<DeleteOrganisationRoleRequest> {
  /**
   * @generated from field: api.RequestOrganisationHeader Header = 1;
   */
  Header?: RequestOrganisationHeader;

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

  /**
   * @generated from field: api.ResourceType ResourceType = 4;
   */
  ResourceType = ResourceType.UNKNOWN;

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

  static readonly runtime: typeof proto3 = proto3;
  static readonly typeName = "api.DeleteOrganisationRoleRequest";
  static readonly fields: FieldList = proto3.util.newFieldList(() => [
    { no: 1, name: "Header", kind: "message", T: RequestOrganisationHeader },
    { no: 2, name: "Name", kind: "scalar", T: 9 /* ScalarType.STRING */ },
    { no: 4, name: "ResourceType", kind: "enum", T: proto3.getEnumType(ResourceType) },
  ]);

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

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

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

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

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

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

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

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

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

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

/**
 * @generated from message api.DeleteProjectRoleRequest
 */
export class DeleteProjectRoleRequest extends Message<DeleteProjectRoleRequest> {
  /**
   * @generated from field: api.RequestProjectHeader Header = 1;
   */
  Header?: RequestProjectHeader;

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

  /**
   * @generated from field: api.ResourceType ResourceType = 4;
   */
  ResourceType = ResourceType.UNKNOWN;

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

  static readonly runtime: typeof proto3 = proto3;
  static readonly typeName = "api.DeleteProjectRoleRequest";
  static readonly fields: FieldList = proto3.util.newFieldList(() => [
    { no: 1, name: "Header", kind: "message", T: RequestProjectHeader },
    { no: 2, name: "Name", kind: "scalar", T: 9 /* ScalarType.STRING */ },
    { no: 4, name: "ResourceType", kind: "enum", T: proto3.getEnumType(ResourceType) },
  ]);

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

/**
 * @generated from message api.GetRoleResourceTypesResult
 */
export class GetRoleResourceTypesResult extends Message<GetRoleResourceTypesResult> {
  /**
   * @generated from field: repeated api.ResourceType ResourceTypes = 1;
   */
  ResourceTypes: ResourceType[] = [];

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

  static readonly runtime: typeof proto3 = proto3;
  static readonly typeName = "api.GetRoleResourceTypesResult";
  static readonly fields: FieldList = proto3.util.newFieldList(() => [
    { no: 1, name: "ResourceTypes", kind: "enum", T: proto3.getEnumType(ResourceType), repeated: true },
  ]);

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

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

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

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

