// @generated by protobuf-ts 2.9.6
// @generated from protobuf file "role.proto" (package "api", syntax proto3)
// tslint:disable
import { ServiceType } from "@protobuf-ts/runtime-rpc";
import type { BinaryWriteOptions } from "@protobuf-ts/runtime";
import type { IBinaryWriter } from "@protobuf-ts/runtime";
import { WireType } from "@protobuf-ts/runtime";
import type { BinaryReadOptions } from "@protobuf-ts/runtime";
import type { IBinaryReader } from "@protobuf-ts/runtime";
import { UnknownFieldHandler } from "@protobuf-ts/runtime";
import type { PartialMessage } from "@protobuf-ts/runtime";
import { reflectionMergePartial } from "@protobuf-ts/runtime";
import { MessageType } from "@protobuf-ts/runtime";
import { Paging } from "./base";
import { RequestProjectHeader } from "./shared";
import { RequestOrganisationHeader } from "./shared";
import { Permission } from "./shared";
import { ResourceType } from "./shared";
/**
 * @generated from protobuf message api.Role
 */
export interface Role {
    /**
     * @generated from protobuf field: string ID = 1 [json_name = "ID"];
     */
    iD: string;
    /**
     * @generated from protobuf field: string Name = 2 [json_name = "Name"];
     */
    name: string;
    /**
     * @generated from protobuf field: string ResourceID = 3 [json_name = "ResourceID"];
     */
    resourceID: string;
    /**
     * @generated from protobuf field: api.ResourceType ResourceType = 4 [json_name = "ResourceType"];
     */
    resourceType: ResourceType;
    /**
     * @generated from protobuf field: repeated api.Permission Permissions = 5 [json_name = "Permissions"];
     */
    permissions: Permission[];
    /**
     * @generated from protobuf field: api.RoleType Type = 6 [json_name = "Type"];
     */
    type: RoleType;
    /**
     * @generated from protobuf field: bool ReadOnly = 7 [json_name = "ReadOnly"];
     */
    readOnly: boolean;
    /**
     * @generated from protobuf field: api.ApplicationType ApplicationType = 8 [json_name = "ApplicationType"];
     */
    applicationType: ApplicationType;
    /**
     * @generated from protobuf field: string CreatedAt = 11 [json_name = "CreatedAt"];
     */
    createdAt: string;
    /**
     * @generated from protobuf field: string CreatedBy = 12 [json_name = "CreatedBy"];
     */
    createdBy: string;
    /**
     * @generated from protobuf field: string Description = 13 [json_name = "Description"];
     */
    description: string;
    /**
     * @generated from protobuf field: repeated api.ExternalPermission ExternalPermissions = 14 [json_name = "ExternalPermissions"];
     */
    externalPermissions: ExternalPermission[];
}
/**
 * @generated from protobuf message api.ExternalPermission
 */
export interface ExternalPermission {
    /**
     * @generated from protobuf field: string Key = 1 [json_name = "Key"];
     */
    key: string; // 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 protobuf field: repeated string Values = 2 [json_name = "Values"];
     */
    values: string[]; // The values of the external permission.
}
/**
 * @generated from protobuf message api.CreatePlatformRoleRequest
 */
export interface CreatePlatformRoleRequest {
    /**
     * @generated from protobuf field: string Name = 2 [json_name = "Name"];
     */
    name: string;
    /**
     * @generated from protobuf field: api.ResourceType ResourceType = 4 [json_name = "ResourceType"];
     */
    resourceType: ResourceType;
    /**
     * @generated from protobuf field: repeated api.Permission Permissions = 5 [json_name = "Permissions"];
     */
    permissions: Permission[];
    /**
     * @generated from protobuf field: api.RoleType Type = 6 [json_name = "Type"];
     */
    type: RoleType;
    /**
     * @generated from protobuf field: api.ApplicationType ApplicationType = 7 [json_name = "ApplicationType"];
     */
    applicationType: ApplicationType;
    /**
     * @generated from protobuf field: string Description = 8 [json_name = "Description"];
     */
    description: string;
}
/**
 * @generated from protobuf message api.CreatePlatformRoleResult
 */
export interface CreatePlatformRoleResult {
    /**
     * @generated from protobuf field: api.Role Result = 1 [json_name = "Result"];
     */
    result?: Role;
}
/**
 * @generated from protobuf message api.CreateOrganisationRoleRequest
 */
export interface CreateOrganisationRoleRequest {
    /**
     * @generated from protobuf field: api.RequestOrganisationHeader Header = 1 [json_name = "Header"];
     */
    header?: RequestOrganisationHeader;
    /**
     * @generated from protobuf field: string Name = 2 [json_name = "Name"];
     */
    name: string;
    /**
     * @generated from protobuf field: api.ResourceType ResourceType = 4 [json_name = "ResourceType"];
     */
    resourceType: ResourceType;
    /**
     * @generated from protobuf field: repeated api.Permission Permissions = 5 [json_name = "Permissions"];
     */
    permissions: Permission[];
    /**
     * @generated from protobuf field: api.RoleType Type = 6 [json_name = "Type"];
     */
    type: RoleType;
    /**
     * @generated from protobuf field: string Description = 7 [json_name = "Description"];
     */
    description: string;
}
/**
 * @generated from protobuf message api.CreateOrganisationRoleResult
 */
export interface CreateOrganisationRoleResult {
    /**
     * @generated from protobuf field: api.Role Result = 1 [json_name = "Result"];
     */
    result?: Role;
}
/**
 * @generated from protobuf message api.CreateProjectRoleRequest
 */
export interface CreateProjectRoleRequest {
    /**
     * @generated from protobuf field: api.RequestProjectHeader Header = 1 [json_name = "Header"];
     */
    header?: RequestProjectHeader;
    /**
     * @generated from protobuf field: string Name = 2 [json_name = "Name"];
     */
    name: string;
    /**
     * @generated from protobuf field: api.ResourceType ResourceType = 4 [json_name = "ResourceType"];
     */
    resourceType: ResourceType;
    /**
     * @generated from protobuf field: repeated api.Permission Permissions = 5 [json_name = "Permissions"];
     */
    permissions: Permission[];
    /**
     * @generated from protobuf field: api.RoleType Type = 6 [json_name = "Type"];
     */
    type: RoleType;
    /**
     * @generated from protobuf field: string Description = 7 [json_name = "Description"];
     */
    description: string;
}
/**
 * @generated from protobuf message api.CreateProjectRoleResult
 */
export interface CreateProjectRoleResult {
    /**
     * @generated from protobuf field: api.Role Result = 1 [json_name = "Result"];
     */
    result?: Role;
}
/**
 * @generated from protobuf message api.UpdatePlatformRoleRequest
 */
export interface UpdatePlatformRoleRequest {
    /**
     * @generated from protobuf field: string Name = 2 [json_name = "Name"];
     */
    name: string;
    /**
     * @generated from protobuf field: api.ResourceType ResourceType = 4 [json_name = "ResourceType"];
     */
    resourceType: ResourceType;
    /**
     * @generated from protobuf field: repeated api.Permission Permissions = 5 [json_name = "Permissions"];
     */
    permissions: Permission[];
    /**
     * @generated from protobuf field: api.RoleType Type = 6 [json_name = "Type"];
     */
    type: RoleType;
    /**
     * @generated from protobuf field: api.ApplicationType ApplicationType = 7 [json_name = "ApplicationType"];
     */
    applicationType: ApplicationType;
    /**
     * @generated from protobuf field: string Description = 8 [json_name = "Description"];
     */
    description: string;
}
/**
 * @generated from protobuf message api.UpdatePlatformRoleResult
 */
export interface UpdatePlatformRoleResult {
    /**
     * @generated from protobuf field: api.Role Result = 1 [json_name = "Result"];
     */
    result?: Role;
}
/**
 * @generated from protobuf message api.UpdateOrganisationRoleRequest
 */
export interface UpdateOrganisationRoleRequest {
    /**
     * @generated from protobuf field: api.RequestOrganisationHeader Header = 1 [json_name = "Header"];
     */
    header?: RequestOrganisationHeader;
    /**
     * @generated from protobuf field: string Name = 2 [json_name = "Name"];
     */
    name: string;
    /**
     * @generated from protobuf field: api.ResourceType ResourceType = 4 [json_name = "ResourceType"];
     */
    resourceType: ResourceType;
    /**
     * @generated from protobuf field: repeated api.Permission Permissions = 5 [json_name = "Permissions"];
     */
    permissions: Permission[];
    /**
     * @generated from protobuf field: api.RoleType Type = 6 [json_name = "Type"];
     */
    type: RoleType;
    /**
     * @generated from protobuf field: string Description = 7 [json_name = "Description"];
     */
    description: string;
}
/**
 * @generated from protobuf message api.UpdateOrganisationRoleResult
 */
export interface UpdateOrganisationRoleResult {
    /**
     * @generated from protobuf field: api.Role Result = 1 [json_name = "Result"];
     */
    result?: Role;
}
/**
 * @generated from protobuf message api.UpdateProjectRoleRequest
 */
export interface UpdateProjectRoleRequest {
    /**
     * @generated from protobuf field: api.RequestProjectHeader Header = 1 [json_name = "Header"];
     */
    header?: RequestProjectHeader;
    /**
     * @generated from protobuf field: string Name = 2 [json_name = "Name"];
     */
    name: string;
    /**
     * @generated from protobuf field: api.ResourceType ResourceType = 4 [json_name = "ResourceType"];
     */
    resourceType: ResourceType;
    /**
     * @generated from protobuf field: repeated api.Permission Permissions = 5 [json_name = "Permissions"];
     */
    permissions: Permission[];
    /**
     * @generated from protobuf field: api.RoleType Type = 6 [json_name = "Type"];
     */
    type: RoleType;
    /**
     * @generated from protobuf field: string Description = 7 [json_name = "Description"];
     */
    description: string;
}
/**
 * @generated from protobuf message api.UpdateProjectRoleResult
 */
export interface UpdateProjectRoleResult {
    /**
     * @generated from protobuf field: api.Role Result = 1 [json_name = "Result"];
     */
    result?: Role;
}
/**
 * @generated from protobuf message api.GetPlatformRoleRequest
 */
export interface GetPlatformRoleRequest {
    /**
     * @generated from protobuf field: string Name = 1 [json_name = "Name"];
     */
    name: string;
    /**
     * @generated from protobuf field: api.ResourceType ResourceType = 2 [json_name = "ResourceType"];
     */
    resourceType: ResourceType;
}
/**
 * @generated from protobuf message api.GetPlatformRoleResult
 */
export interface GetPlatformRoleResult {
    /**
     * @generated from protobuf field: api.Role Result = 1 [json_name = "Result"];
     */
    result?: Role;
}
/**
 * @generated from protobuf message api.GetOrganisationRoleRequest
 */
export interface GetOrganisationRoleRequest {
    /**
     * @generated from protobuf field: api.RequestOrganisationHeader Header = 1 [json_name = "Header"];
     */
    header?: RequestOrganisationHeader;
    /**
     * @generated from protobuf field: string Name = 2 [json_name = "Name"];
     */
    name: string;
    /**
     * @generated from protobuf field: api.ResourceType ResourceType = 3 [json_name = "ResourceType"];
     */
    resourceType: ResourceType;
}
/**
 * @generated from protobuf message api.GetOrganisationRoleResult
 */
export interface GetOrganisationRoleResult {
    /**
     * @generated from protobuf field: api.Role Result = 1 [json_name = "Result"];
     */
    result?: Role;
}
/**
 * @generated from protobuf message api.GetProjectRoleRequest
 */
export interface GetProjectRoleRequest {
    /**
     * @generated from protobuf field: api.RequestProjectHeader Header = 1 [json_name = "Header"];
     */
    header?: RequestProjectHeader;
    /**
     * @generated from protobuf field: string Name = 2 [json_name = "Name"];
     */
    name: string;
    /**
     * @generated from protobuf field: api.ResourceType ResourceType = 3 [json_name = "ResourceType"];
     */
    resourceType: ResourceType;
}
/**
 * @generated from protobuf message api.GetProjectRoleResult
 */
export interface GetProjectRoleResult {
    /**
     * @generated from protobuf field: api.Role Result = 1 [json_name = "Result"];
     */
    result?: Role;
}
/**
 * @generated from protobuf message api.ListPlatformRolesRequest
 */
export interface ListPlatformRolesRequest {
    /**
     * @generated from protobuf field: api.ResourceType ResourceType = 2 [json_name = "ResourceType"];
     */
    resourceType: ResourceType;
    /**
     * @generated from protobuf field: api.Paging Paging = 3 [json_name = "Paging"];
     */
    paging?: Paging;
    /**
     * @generated from protobuf field: api.RoleType Type = 4 [json_name = "Type"];
     */
    type: RoleType;
    /**
     * @generated from protobuf field: api.ApplicationType ApplicationType = 5 [json_name = "ApplicationType"];
     */
    applicationType: ApplicationType;
}
/**
 * @generated from protobuf message api.ListPlatformRolesResult
 */
export interface ListPlatformRolesResult {
    /**
     * @generated from protobuf field: repeated api.Role Results = 1 [json_name = "Results"];
     */
    results: Role[];
}
/**
 * @generated from protobuf message api.ListOrganisationRolesRequest
 */
export interface ListOrganisationRolesRequest {
    /**
     * @generated from protobuf field: api.RequestOrganisationHeader Header = 1 [json_name = "Header"];
     */
    header?: RequestOrganisationHeader;
    /**
     * @generated from protobuf field: api.ResourceType ResourceType = 2 [json_name = "ResourceType"];
     */
    resourceType: ResourceType;
    /**
     * @generated from protobuf field: api.Paging Paging = 3 [json_name = "Paging"];
     */
    paging?: Paging;
    /**
     * @generated from protobuf field: api.RoleType Type = 4 [json_name = "Type"];
     */
    type: RoleType;
}
/**
 * @generated from protobuf message api.ListOrganisationRolesResult
 */
export interface ListOrganisationRolesResult {
    /**
     * @generated from protobuf field: repeated api.Role Results = 1 [json_name = "Results"];
     */
    results: Role[];
}
/**
 * @generated from protobuf message api.ListProjectRolesRequest
 */
export interface ListProjectRolesRequest {
    /**
     * @generated from protobuf field: api.RequestProjectHeader Header = 1 [json_name = "Header"];
     */
    header?: RequestProjectHeader;
    /**
     * @generated from protobuf field: api.ResourceType ResourceType = 2 [json_name = "ResourceType"];
     */
    resourceType: ResourceType;
    /**
     * @generated from protobuf field: api.Paging Paging = 3 [json_name = "Paging"];
     */
    paging?: Paging;
    /**
     * @generated from protobuf field: api.RoleType Type = 4 [json_name = "Type"];
     */
    type: RoleType;
}
/**
 * @generated from protobuf message api.ListProjectRolesResult
 */
export interface ListProjectRolesResult {
    /**
     * @generated from protobuf field: repeated api.Role Results = 1 [json_name = "Results"];
     */
    results: Role[];
}
/**
 * @generated from protobuf message api.PutRoleExternalPermissionsRequest
 */
export interface PutRoleExternalPermissionsRequest {
    /**
     * @generated from protobuf field: string ID = 1 [json_name = "ID"];
     */
    iD: string;
    /**
     * @generated from protobuf field: repeated api.ExternalPermission ExternalPermissions = 2 [json_name = "ExternalPermissions"];
     */
    externalPermissions: ExternalPermission[];
}
/**
 * @generated from protobuf message api.PutRoleExternalPermissionsResult
 */
export interface PutRoleExternalPermissionsResult {
    /**
     * @generated from protobuf field: api.Role Result = 1 [json_name = "Result"];
     */
    result?: Role;
}
/**
 * @generated from protobuf message api.DeleteRoleExternalPermissionsRequest
 */
export interface DeleteRoleExternalPermissionsRequest {
    /**
     * @generated from protobuf field: string ID = 1 [json_name = "ID"];
     */
    iD: string; // Role ID
    /**
     * @generated from protobuf field: repeated api.ExternalPermission ExternalPermissions = 2 [json_name = "ExternalPermissions"];
     */
    externalPermissions: ExternalPermission[];
}
/**
 * @generated from protobuf message api.DeleteRoleExternalPermissionsResult
 */
export interface DeleteRoleExternalPermissionsResult {
    /**
     * @generated from protobuf field: api.Role Result = 1 [json_name = "Result"];
     */
    result?: Role;
}
/**
 * @generated from protobuf message api.DeleteAllPlatformRolesRequest
 */
export interface DeleteAllPlatformRolesRequest {
    /**
     * @generated from protobuf field: api.ResourceType ResourceType = 4 [json_name = "ResourceType"];
     */
    resourceType: ResourceType;
}
/**
 * @generated from protobuf message api.DeleteAllPlatformRolesResult
 */
export interface DeleteAllPlatformRolesResult {
}
/**
 * @generated from protobuf message api.DeletePlatformRoleRequest
 */
export interface DeletePlatformRoleRequest {
    /**
     * @generated from protobuf field: string Name = 2 [json_name = "Name"];
     */
    name: string;
    /**
     * @generated from protobuf field: api.ResourceType ResourceType = 4 [json_name = "ResourceType"];
     */
    resourceType: ResourceType;
}
/**
 * @generated from protobuf message api.DeletePlatformRoleResult
 */
export interface DeletePlatformRoleResult {
}
/**
 * @generated from protobuf message api.DeleteOrganisationRoleRequest
 */
export interface DeleteOrganisationRoleRequest {
    /**
     * @generated from protobuf field: api.RequestOrganisationHeader Header = 1 [json_name = "Header"];
     */
    header?: RequestOrganisationHeader;
    /**
     * @generated from protobuf field: string Name = 2 [json_name = "Name"];
     */
    name: string;
    /**
     * @generated from protobuf field: api.ResourceType ResourceType = 4 [json_name = "ResourceType"];
     */
    resourceType: ResourceType;
}
/**
 * @generated from protobuf message api.DeleteOrganisationRoleResult
 */
export interface DeleteOrganisationRoleResult {
}
/**
 * @generated from protobuf message api.DeleteProjectRoleRequest
 */
export interface DeleteProjectRoleRequest {
    /**
     * @generated from protobuf field: api.RequestProjectHeader Header = 1 [json_name = "Header"];
     */
    header?: RequestProjectHeader;
    /**
     * @generated from protobuf field: string Name = 2 [json_name = "Name"];
     */
    name: string;
    /**
     * @generated from protobuf field: api.ResourceType ResourceType = 4 [json_name = "ResourceType"];
     */
    resourceType: ResourceType;
}
/**
 * @generated from protobuf message api.DeleteProjectRoleResult
 */
export interface DeleteProjectRoleResult {
}
/**
 * @generated from protobuf message api.PropagateRolesOnResourceRequest
 */
export interface PropagateRolesOnResourceRequest {
    /**
     * @generated from protobuf field: api.ResourceType ResourceType = 1 [json_name = "ResourceType"];
     */
    resourceType: ResourceType;
    /**
     * @generated from protobuf field: string ResourceId = 2 [json_name = "ResourceId"];
     */
    resourceId: string;
    /**
     * @generated from protobuf field: string ParentRscId = 3 [json_name = "ParentRscId"];
     */
    parentRscId: string;
}
/**
 * @generated from protobuf message api.PropagateRolesOnResourceResult
 */
export interface PropagateRolesOnResourceResult {
}
/**
 * @generated from protobuf message api.DeleteRolesOnResourceRequest
 */
export interface DeleteRolesOnResourceRequest {
    /**
     * @generated from protobuf field: api.ResourceType ResourceType = 1 [json_name = "ResourceType"];
     */
    resourceType: ResourceType;
    /**
     * @generated from protobuf field: string ResourceId = 2 [json_name = "ResourceId"];
     */
    resourceId: string;
}
/**
 * @generated from protobuf message api.DeleteRolesOnResourceResult
 */
export interface DeleteRolesOnResourceResult {
}
/**
 * @generated from protobuf message api.GetRoleResourceTypesRequest
 */
export interface GetRoleResourceTypesRequest {
}
/**
 * @generated from protobuf message api.GetRoleResourceTypesResult
 */
export interface GetRoleResourceTypesResult {
    /**
     * @generated from protobuf field: repeated api.ResourceType ResourceTypes = 1 [json_name = "ResourceTypes"];
     */
    resourceTypes: ResourceType[];
}
/**
 * @generated from protobuf enum api.ApplicationType
 */
export enum ApplicationType {
    /**
     * @generated from protobuf enum value: PROPAGATE = 0;
     */
    PROPAGATE = 0,
    /**
     * @generated from protobuf enum value: ORGANISATION_CLONE = 1;
     */
    ORGANISATION_CLONE = 1
}
/**
 * @generated from protobuf enum api.RoleType
 */
export enum RoleType {
    /**
     * @generated from protobuf enum value: ROLE_TYPE_UNKNOWN = 0;
     */
    UNKNOWN = 0,
    /**
     * @generated from protobuf enum value: ROLE_TYPE_PERMISSION = 10;
     */
    PERMISSION = 10,
    /**
     * @generated from protobuf enum value: ROLE_TYPE_COMPOSITE = 20;
     */
    COMPOSITE = 20
}
// @generated message type with reflection information, may provide speed optimized methods
class Role$Type extends MessageType<Role> {
    constructor() {
        super("api.Role", [
            { no: 1, name: "ID", kind: "scalar", jsonName: "ID", T: 9 /*ScalarType.STRING*/ },
            { no: 2, name: "Name", kind: "scalar", jsonName: "Name", T: 9 /*ScalarType.STRING*/ },
            { no: 3, name: "ResourceID", kind: "scalar", jsonName: "ResourceID", T: 9 /*ScalarType.STRING*/ },
            { no: 4, name: "ResourceType", kind: "enum", jsonName: "ResourceType", T: () => ["api.ResourceType", ResourceType, "RESOURCE_TYPE_"] },
            { no: 5, name: "Permissions", kind: "message", jsonName: "Permissions", repeat: 1 /*RepeatType.PACKED*/, T: () => Permission },
            { no: 6, name: "Type", kind: "enum", jsonName: "Type", T: () => ["api.RoleType", RoleType, "ROLE_TYPE_"] },
            { no: 7, name: "ReadOnly", kind: "scalar", jsonName: "ReadOnly", T: 8 /*ScalarType.BOOL*/ },
            { no: 8, name: "ApplicationType", kind: "enum", jsonName: "ApplicationType", T: () => ["api.ApplicationType", ApplicationType] },
            { no: 11, name: "CreatedAt", kind: "scalar", jsonName: "CreatedAt", T: 9 /*ScalarType.STRING*/, options: { "grpc.gateway.protoc_gen_openapiv2.options.openapiv2_field": { description: "UTC date/time in <a href='https://en.wikipedia.org/wiki/ISO_8601'>ISO 8601</a> format" }, "api.kpi": true } },
            { no: 12, name: "CreatedBy", kind: "scalar", jsonName: "CreatedBy", T: 9 /*ScalarType.STRING*/ },
            { no: 13, name: "Description", kind: "scalar", jsonName: "Description", T: 9 /*ScalarType.STRING*/ },
            { no: 14, name: "ExternalPermissions", kind: "message", jsonName: "ExternalPermissions", repeat: 1 /*RepeatType.PACKED*/, T: () => ExternalPermission }
        ]);
    }
    create(value?: PartialMessage<Role>): Role {
        const message = globalThis.Object.create((this.messagePrototype!));
        message.iD = "";
        message.name = "";
        message.resourceID = "";
        message.resourceType = 0;
        message.permissions = [];
        message.type = 0;
        message.readOnly = false;
        message.applicationType = 0;
        message.createdAt = "";
        message.createdBy = "";
        message.description = "";
        message.externalPermissions = [];
        if (value !== undefined)
            reflectionMergePartial<Role>(this, message, value);
        return message;
    }
    internalBinaryRead(reader: IBinaryReader, length: number, options: BinaryReadOptions, target?: Role): Role {
        let message = target ?? this.create(), end = reader.pos + length;
        while (reader.pos < end) {
            let [fieldNo, wireType] = reader.tag();
            switch (fieldNo) {
                case /* string ID = 1 [json_name = "ID"];*/ 1:
                    message.iD = reader.string();
                    break;
                case /* string Name = 2 [json_name = "Name"];*/ 2:
                    message.name = reader.string();
                    break;
                case /* string ResourceID = 3 [json_name = "ResourceID"];*/ 3:
                    message.resourceID = reader.string();
                    break;
                case /* api.ResourceType ResourceType = 4 [json_name = "ResourceType"];*/ 4:
                    message.resourceType = reader.int32();
                    break;
                case /* repeated api.Permission Permissions = 5 [json_name = "Permissions"];*/ 5:
                    message.permissions.push(Permission.internalBinaryRead(reader, reader.uint32(), options));
                    break;
                case /* api.RoleType Type = 6 [json_name = "Type"];*/ 6:
                    message.type = reader.int32();
                    break;
                case /* bool ReadOnly = 7 [json_name = "ReadOnly"];*/ 7:
                    message.readOnly = reader.bool();
                    break;
                case /* api.ApplicationType ApplicationType = 8 [json_name = "ApplicationType"];*/ 8:
                    message.applicationType = reader.int32();
                    break;
                case /* string CreatedAt = 11 [json_name = "CreatedAt"];*/ 11:
                    message.createdAt = reader.string();
                    break;
                case /* string CreatedBy = 12 [json_name = "CreatedBy"];*/ 12:
                    message.createdBy = reader.string();
                    break;
                case /* string Description = 13 [json_name = "Description"];*/ 13:
                    message.description = reader.string();
                    break;
                case /* repeated api.ExternalPermission ExternalPermissions = 14 [json_name = "ExternalPermissions"];*/ 14:
                    message.externalPermissions.push(ExternalPermission.internalBinaryRead(reader, reader.uint32(), options));
                    break;
                default:
                    let u = options.readUnknownField;
                    if (u === "throw")
                        throw new globalThis.Error(`Unknown field ${fieldNo} (wire type ${wireType}) for ${this.typeName}`);
                    let d = reader.skip(wireType);
                    if (u !== false)
                        (u === true ? UnknownFieldHandler.onRead : u)(this.typeName, message, fieldNo, wireType, d);
            }
        }
        return message;
    }
    internalBinaryWrite(message: Role, writer: IBinaryWriter, options: BinaryWriteOptions): IBinaryWriter {
        /* string ID = 1 [json_name = "ID"]; */
        if (message.iD !== "")
            writer.tag(1, WireType.LengthDelimited).string(message.iD);
        /* string Name = 2 [json_name = "Name"]; */
        if (message.name !== "")
            writer.tag(2, WireType.LengthDelimited).string(message.name);
        /* string ResourceID = 3 [json_name = "ResourceID"]; */
        if (message.resourceID !== "")
            writer.tag(3, WireType.LengthDelimited).string(message.resourceID);
        /* api.ResourceType ResourceType = 4 [json_name = "ResourceType"]; */
        if (message.resourceType !== 0)
            writer.tag(4, WireType.Varint).int32(message.resourceType);
        /* repeated api.Permission Permissions = 5 [json_name = "Permissions"]; */
        for (let i = 0; i < message.permissions.length; i++)
            Permission.internalBinaryWrite(message.permissions[i], writer.tag(5, WireType.LengthDelimited).fork(), options).join();
        /* api.RoleType Type = 6 [json_name = "Type"]; */
        if (message.type !== 0)
            writer.tag(6, WireType.Varint).int32(message.type);
        /* bool ReadOnly = 7 [json_name = "ReadOnly"]; */
        if (message.readOnly !== false)
            writer.tag(7, WireType.Varint).bool(message.readOnly);
        /* api.ApplicationType ApplicationType = 8 [json_name = "ApplicationType"]; */
        if (message.applicationType !== 0)
            writer.tag(8, WireType.Varint).int32(message.applicationType);
        /* string CreatedAt = 11 [json_name = "CreatedAt"]; */
        if (message.createdAt !== "")
            writer.tag(11, WireType.LengthDelimited).string(message.createdAt);
        /* string CreatedBy = 12 [json_name = "CreatedBy"]; */
        if (message.createdBy !== "")
            writer.tag(12, WireType.LengthDelimited).string(message.createdBy);
        /* string Description = 13 [json_name = "Description"]; */
        if (message.description !== "")
            writer.tag(13, WireType.LengthDelimited).string(message.description);
        /* repeated api.ExternalPermission ExternalPermissions = 14 [json_name = "ExternalPermissions"]; */
        for (let i = 0; i < message.externalPermissions.length; i++)
            ExternalPermission.internalBinaryWrite(message.externalPermissions[i], writer.tag(14, WireType.LengthDelimited).fork(), options).join();
        let u = options.writeUnknownFields;
        if (u !== false)
            (u == true ? UnknownFieldHandler.onWrite : u)(this.typeName, message, writer);
        return writer;
    }
}
/**
 * @generated MessageType for protobuf message api.Role
 */
export const Role = new Role$Type();
// @generated message type with reflection information, may provide speed optimized methods
class ExternalPermission$Type extends MessageType<ExternalPermission> {
    constructor() {
        super("api.ExternalPermission", [
            { no: 1, name: "Key", kind: "scalar", jsonName: "Key", T: 9 /*ScalarType.STRING*/ },
            { no: 2, name: "Values", kind: "scalar", jsonName: "Values", repeat: 2 /*RepeatType.UNPACKED*/, T: 9 /*ScalarType.STRING*/ }
        ]);
    }
    create(value?: PartialMessage<ExternalPermission>): ExternalPermission {
        const message = globalThis.Object.create((this.messagePrototype!));
        message.key = "";
        message.values = [];
        if (value !== undefined)
            reflectionMergePartial<ExternalPermission>(this, message, value);
        return message;
    }
    internalBinaryRead(reader: IBinaryReader, length: number, options: BinaryReadOptions, target?: ExternalPermission): ExternalPermission {
        let message = target ?? this.create(), end = reader.pos + length;
        while (reader.pos < end) {
            let [fieldNo, wireType] = reader.tag();
            switch (fieldNo) {
                case /* string Key = 1 [json_name = "Key"];*/ 1:
                    message.key = reader.string();
                    break;
                case /* repeated string Values = 2 [json_name = "Values"];*/ 2:
                    message.values.push(reader.string());
                    break;
                default:
                    let u = options.readUnknownField;
                    if (u === "throw")
                        throw new globalThis.Error(`Unknown field ${fieldNo} (wire type ${wireType}) for ${this.typeName}`);
                    let d = reader.skip(wireType);
                    if (u !== false)
                        (u === true ? UnknownFieldHandler.onRead : u)(this.typeName, message, fieldNo, wireType, d);
            }
        }
        return message;
    }
    internalBinaryWrite(message: ExternalPermission, writer: IBinaryWriter, options: BinaryWriteOptions): IBinaryWriter {
        /* string Key = 1 [json_name = "Key"]; */
        if (message.key !== "")
            writer.tag(1, WireType.LengthDelimited).string(message.key);
        /* repeated string Values = 2 [json_name = "Values"]; */
        for (let i = 0; i < message.values.length; i++)
            writer.tag(2, WireType.LengthDelimited).string(message.values[i]);
        let u = options.writeUnknownFields;
        if (u !== false)
            (u == true ? UnknownFieldHandler.onWrite : u)(this.typeName, message, writer);
        return writer;
    }
}
/**
 * @generated MessageType for protobuf message api.ExternalPermission
 */
export const ExternalPermission = new ExternalPermission$Type();
// @generated message type with reflection information, may provide speed optimized methods
class CreatePlatformRoleRequest$Type extends MessageType<CreatePlatformRoleRequest> {
    constructor() {
        super("api.CreatePlatformRoleRequest", [
            { no: 2, name: "Name", kind: "scalar", jsonName: "Name", T: 9 /*ScalarType.STRING*/, options: { "validate.rules": { string: { minLen: "1", pattern: "^[.a-zA-Z0-9]+(?:-[.a-zA-Z0-9]+)*$" } }, "grpc.gateway.protoc_gen_openapiv2.options.openapiv2_field": { pattern: "^[.a-zA-Z0-9]+(?:-[.a-zA-Z0-9]+)*$" } } },
            { no: 4, name: "ResourceType", kind: "enum", jsonName: "ResourceType", T: () => ["api.ResourceType", ResourceType, "RESOURCE_TYPE_"], options: { "validate.rules": { enum: { definedOnly: true } } } },
            { no: 5, name: "Permissions", kind: "message", jsonName: "Permissions", repeat: 1 /*RepeatType.PACKED*/, T: () => Permission },
            { no: 6, name: "Type", kind: "enum", jsonName: "Type", T: () => ["api.RoleType", RoleType, "ROLE_TYPE_"], options: { "validate.rules": { enum: { definedOnly: true } } } },
            { no: 7, name: "ApplicationType", kind: "enum", jsonName: "ApplicationType", T: () => ["api.ApplicationType", ApplicationType], options: { "validate.rules": { enum: { definedOnly: true } } } },
            { no: 8, name: "Description", kind: "scalar", jsonName: "Description", T: 9 /*ScalarType.STRING*/ }
        ]);
    }
    create(value?: PartialMessage<CreatePlatformRoleRequest>): CreatePlatformRoleRequest {
        const message = globalThis.Object.create((this.messagePrototype!));
        message.name = "";
        message.resourceType = 0;
        message.permissions = [];
        message.type = 0;
        message.applicationType = 0;
        message.description = "";
        if (value !== undefined)
            reflectionMergePartial<CreatePlatformRoleRequest>(this, message, value);
        return message;
    }
    internalBinaryRead(reader: IBinaryReader, length: number, options: BinaryReadOptions, target?: CreatePlatformRoleRequest): CreatePlatformRoleRequest {
        let message = target ?? this.create(), end = reader.pos + length;
        while (reader.pos < end) {
            let [fieldNo, wireType] = reader.tag();
            switch (fieldNo) {
                case /* string Name = 2 [json_name = "Name"];*/ 2:
                    message.name = reader.string();
                    break;
                case /* api.ResourceType ResourceType = 4 [json_name = "ResourceType"];*/ 4:
                    message.resourceType = reader.int32();
                    break;
                case /* repeated api.Permission Permissions = 5 [json_name = "Permissions"];*/ 5:
                    message.permissions.push(Permission.internalBinaryRead(reader, reader.uint32(), options));
                    break;
                case /* api.RoleType Type = 6 [json_name = "Type"];*/ 6:
                    message.type = reader.int32();
                    break;
                case /* api.ApplicationType ApplicationType = 7 [json_name = "ApplicationType"];*/ 7:
                    message.applicationType = reader.int32();
                    break;
                case /* string Description = 8 [json_name = "Description"];*/ 8:
                    message.description = reader.string();
                    break;
                default:
                    let u = options.readUnknownField;
                    if (u === "throw")
                        throw new globalThis.Error(`Unknown field ${fieldNo} (wire type ${wireType}) for ${this.typeName}`);
                    let d = reader.skip(wireType);
                    if (u !== false)
                        (u === true ? UnknownFieldHandler.onRead : u)(this.typeName, message, fieldNo, wireType, d);
            }
        }
        return message;
    }
    internalBinaryWrite(message: CreatePlatformRoleRequest, writer: IBinaryWriter, options: BinaryWriteOptions): IBinaryWriter {
        /* string Name = 2 [json_name = "Name"]; */
        if (message.name !== "")
            writer.tag(2, WireType.LengthDelimited).string(message.name);
        /* api.ResourceType ResourceType = 4 [json_name = "ResourceType"]; */
        if (message.resourceType !== 0)
            writer.tag(4, WireType.Varint).int32(message.resourceType);
        /* repeated api.Permission Permissions = 5 [json_name = "Permissions"]; */
        for (let i = 0; i < message.permissions.length; i++)
            Permission.internalBinaryWrite(message.permissions[i], writer.tag(5, WireType.LengthDelimited).fork(), options).join();
        /* api.RoleType Type = 6 [json_name = "Type"]; */
        if (message.type !== 0)
            writer.tag(6, WireType.Varint).int32(message.type);
        /* api.ApplicationType ApplicationType = 7 [json_name = "ApplicationType"]; */
        if (message.applicationType !== 0)
            writer.tag(7, WireType.Varint).int32(message.applicationType);
        /* string Description = 8 [json_name = "Description"]; */
        if (message.description !== "")
            writer.tag(8, WireType.LengthDelimited).string(message.description);
        let u = options.writeUnknownFields;
        if (u !== false)
            (u == true ? UnknownFieldHandler.onWrite : u)(this.typeName, message, writer);
        return writer;
    }
}
/**
 * @generated MessageType for protobuf message api.CreatePlatformRoleRequest
 */
export const CreatePlatformRoleRequest = new CreatePlatformRoleRequest$Type();
// @generated message type with reflection information, may provide speed optimized methods
class CreatePlatformRoleResult$Type extends MessageType<CreatePlatformRoleResult> {
    constructor() {
        super("api.CreatePlatformRoleResult", [
            { no: 1, name: "Result", kind: "message", jsonName: "Result", T: () => Role }
        ]);
    }
    create(value?: PartialMessage<CreatePlatformRoleResult>): CreatePlatformRoleResult {
        const message = globalThis.Object.create((this.messagePrototype!));
        if (value !== undefined)
            reflectionMergePartial<CreatePlatformRoleResult>(this, message, value);
        return message;
    }
    internalBinaryRead(reader: IBinaryReader, length: number, options: BinaryReadOptions, target?: CreatePlatformRoleResult): CreatePlatformRoleResult {
        let message = target ?? this.create(), end = reader.pos + length;
        while (reader.pos < end) {
            let [fieldNo, wireType] = reader.tag();
            switch (fieldNo) {
                case /* api.Role Result = 1 [json_name = "Result"];*/ 1:
                    message.result = Role.internalBinaryRead(reader, reader.uint32(), options, message.result);
                    break;
                default:
                    let u = options.readUnknownField;
                    if (u === "throw")
                        throw new globalThis.Error(`Unknown field ${fieldNo} (wire type ${wireType}) for ${this.typeName}`);
                    let d = reader.skip(wireType);
                    if (u !== false)
                        (u === true ? UnknownFieldHandler.onRead : u)(this.typeName, message, fieldNo, wireType, d);
            }
        }
        return message;
    }
    internalBinaryWrite(message: CreatePlatformRoleResult, writer: IBinaryWriter, options: BinaryWriteOptions): IBinaryWriter {
        /* api.Role Result = 1 [json_name = "Result"]; */
        if (message.result)
            Role.internalBinaryWrite(message.result, writer.tag(1, WireType.LengthDelimited).fork(), options).join();
        let u = options.writeUnknownFields;
        if (u !== false)
            (u == true ? UnknownFieldHandler.onWrite : u)(this.typeName, message, writer);
        return writer;
    }
}
/**
 * @generated MessageType for protobuf message api.CreatePlatformRoleResult
 */
export const CreatePlatformRoleResult = new CreatePlatformRoleResult$Type();
// @generated message type with reflection information, may provide speed optimized methods
class CreateOrganisationRoleRequest$Type extends MessageType<CreateOrganisationRoleRequest> {
    constructor() {
        super("api.CreateOrganisationRoleRequest", [
            { no: 1, name: "Header", kind: "message", jsonName: "Header", T: () => RequestOrganisationHeader, options: { "validate.rules": { message: { required: true } } } },
            { no: 2, name: "Name", kind: "scalar", jsonName: "Name", T: 9 /*ScalarType.STRING*/, options: { "validate.rules": { string: { minLen: "1", pattern: "^[.a-zA-Z0-9]+(?:-[.a-zA-Z0-9]+)*$" } }, "grpc.gateway.protoc_gen_openapiv2.options.openapiv2_field": { pattern: "^[.a-zA-Z0-9]+(?:-[.a-zA-Z0-9]+)*$" } } },
            { no: 4, name: "ResourceType", kind: "enum", jsonName: "ResourceType", T: () => ["api.ResourceType", ResourceType, "RESOURCE_TYPE_"], options: { "validate.rules": { enum: { definedOnly: true } } } },
            { no: 5, name: "Permissions", kind: "message", jsonName: "Permissions", repeat: 1 /*RepeatType.PACKED*/, T: () => Permission },
            { no: 6, name: "Type", kind: "enum", jsonName: "Type", T: () => ["api.RoleType", RoleType, "ROLE_TYPE_"], options: { "validate.rules": { enum: { definedOnly: true } } } },
            { no: 7, name: "Description", kind: "scalar", jsonName: "Description", T: 9 /*ScalarType.STRING*/ }
        ]);
    }
    create(value?: PartialMessage<CreateOrganisationRoleRequest>): CreateOrganisationRoleRequest {
        const message = globalThis.Object.create((this.messagePrototype!));
        message.name = "";
        message.resourceType = 0;
        message.permissions = [];
        message.type = 0;
        message.description = "";
        if (value !== undefined)
            reflectionMergePartial<CreateOrganisationRoleRequest>(this, message, value);
        return message;
    }
    internalBinaryRead(reader: IBinaryReader, length: number, options: BinaryReadOptions, target?: CreateOrganisationRoleRequest): CreateOrganisationRoleRequest {
        let message = target ?? this.create(), end = reader.pos + length;
        while (reader.pos < end) {
            let [fieldNo, wireType] = reader.tag();
            switch (fieldNo) {
                case /* api.RequestOrganisationHeader Header = 1 [json_name = "Header"];*/ 1:
                    message.header = RequestOrganisationHeader.internalBinaryRead(reader, reader.uint32(), options, message.header);
                    break;
                case /* string Name = 2 [json_name = "Name"];*/ 2:
                    message.name = reader.string();
                    break;
                case /* api.ResourceType ResourceType = 4 [json_name = "ResourceType"];*/ 4:
                    message.resourceType = reader.int32();
                    break;
                case /* repeated api.Permission Permissions = 5 [json_name = "Permissions"];*/ 5:
                    message.permissions.push(Permission.internalBinaryRead(reader, reader.uint32(), options));
                    break;
                case /* api.RoleType Type = 6 [json_name = "Type"];*/ 6:
                    message.type = reader.int32();
                    break;
                case /* string Description = 7 [json_name = "Description"];*/ 7:
                    message.description = reader.string();
                    break;
                default:
                    let u = options.readUnknownField;
                    if (u === "throw")
                        throw new globalThis.Error(`Unknown field ${fieldNo} (wire type ${wireType}) for ${this.typeName}`);
                    let d = reader.skip(wireType);
                    if (u !== false)
                        (u === true ? UnknownFieldHandler.onRead : u)(this.typeName, message, fieldNo, wireType, d);
            }
        }
        return message;
    }
    internalBinaryWrite(message: CreateOrganisationRoleRequest, writer: IBinaryWriter, options: BinaryWriteOptions): IBinaryWriter {
        /* api.RequestOrganisationHeader Header = 1 [json_name = "Header"]; */
        if (message.header)
            RequestOrganisationHeader.internalBinaryWrite(message.header, writer.tag(1, WireType.LengthDelimited).fork(), options).join();
        /* string Name = 2 [json_name = "Name"]; */
        if (message.name !== "")
            writer.tag(2, WireType.LengthDelimited).string(message.name);
        /* api.ResourceType ResourceType = 4 [json_name = "ResourceType"]; */
        if (message.resourceType !== 0)
            writer.tag(4, WireType.Varint).int32(message.resourceType);
        /* repeated api.Permission Permissions = 5 [json_name = "Permissions"]; */
        for (let i = 0; i < message.permissions.length; i++)
            Permission.internalBinaryWrite(message.permissions[i], writer.tag(5, WireType.LengthDelimited).fork(), options).join();
        /* api.RoleType Type = 6 [json_name = "Type"]; */
        if (message.type !== 0)
            writer.tag(6, WireType.Varint).int32(message.type);
        /* string Description = 7 [json_name = "Description"]; */
        if (message.description !== "")
            writer.tag(7, WireType.LengthDelimited).string(message.description);
        let u = options.writeUnknownFields;
        if (u !== false)
            (u == true ? UnknownFieldHandler.onWrite : u)(this.typeName, message, writer);
        return writer;
    }
}
/**
 * @generated MessageType for protobuf message api.CreateOrganisationRoleRequest
 */
export const CreateOrganisationRoleRequest = new CreateOrganisationRoleRequest$Type();
// @generated message type with reflection information, may provide speed optimized methods
class CreateOrganisationRoleResult$Type extends MessageType<CreateOrganisationRoleResult> {
    constructor() {
        super("api.CreateOrganisationRoleResult", [
            { no: 1, name: "Result", kind: "message", jsonName: "Result", T: () => Role }
        ]);
    }
    create(value?: PartialMessage<CreateOrganisationRoleResult>): CreateOrganisationRoleResult {
        const message = globalThis.Object.create((this.messagePrototype!));
        if (value !== undefined)
            reflectionMergePartial<CreateOrganisationRoleResult>(this, message, value);
        return message;
    }
    internalBinaryRead(reader: IBinaryReader, length: number, options: BinaryReadOptions, target?: CreateOrganisationRoleResult): CreateOrganisationRoleResult {
        let message = target ?? this.create(), end = reader.pos + length;
        while (reader.pos < end) {
            let [fieldNo, wireType] = reader.tag();
            switch (fieldNo) {
                case /* api.Role Result = 1 [json_name = "Result"];*/ 1:
                    message.result = Role.internalBinaryRead(reader, reader.uint32(), options, message.result);
                    break;
                default:
                    let u = options.readUnknownField;
                    if (u === "throw")
                        throw new globalThis.Error(`Unknown field ${fieldNo} (wire type ${wireType}) for ${this.typeName}`);
                    let d = reader.skip(wireType);
                    if (u !== false)
                        (u === true ? UnknownFieldHandler.onRead : u)(this.typeName, message, fieldNo, wireType, d);
            }
        }
        return message;
    }
    internalBinaryWrite(message: CreateOrganisationRoleResult, writer: IBinaryWriter, options: BinaryWriteOptions): IBinaryWriter {
        /* api.Role Result = 1 [json_name = "Result"]; */
        if (message.result)
            Role.internalBinaryWrite(message.result, writer.tag(1, WireType.LengthDelimited).fork(), options).join();
        let u = options.writeUnknownFields;
        if (u !== false)
            (u == true ? UnknownFieldHandler.onWrite : u)(this.typeName, message, writer);
        return writer;
    }
}
/**
 * @generated MessageType for protobuf message api.CreateOrganisationRoleResult
 */
export const CreateOrganisationRoleResult = new CreateOrganisationRoleResult$Type();
// @generated message type with reflection information, may provide speed optimized methods
class CreateProjectRoleRequest$Type extends MessageType<CreateProjectRoleRequest> {
    constructor() {
        super("api.CreateProjectRoleRequest", [
            { no: 1, name: "Header", kind: "message", jsonName: "Header", T: () => RequestProjectHeader, options: { "validate.rules": { message: { required: true } } } },
            { no: 2, name: "Name", kind: "scalar", jsonName: "Name", T: 9 /*ScalarType.STRING*/, options: { "validate.rules": { string: { minLen: "1", pattern: "^[.a-zA-Z0-9]+(?:-[.a-zA-Z0-9]+)*$" } }, "grpc.gateway.protoc_gen_openapiv2.options.openapiv2_field": { pattern: "^[.a-zA-Z0-9]+(?:-[.a-zA-Z0-9]+)*$" } } },
            { no: 4, name: "ResourceType", kind: "enum", jsonName: "ResourceType", T: () => ["api.ResourceType", ResourceType, "RESOURCE_TYPE_"], options: { "validate.rules": { enum: { definedOnly: true } } } },
            { no: 5, name: "Permissions", kind: "message", jsonName: "Permissions", repeat: 1 /*RepeatType.PACKED*/, T: () => Permission },
            { no: 6, name: "Type", kind: "enum", jsonName: "Type", T: () => ["api.RoleType", RoleType, "ROLE_TYPE_"], options: { "validate.rules": { enum: { definedOnly: true } } } },
            { no: 7, name: "Description", kind: "scalar", jsonName: "Description", T: 9 /*ScalarType.STRING*/ }
        ]);
    }
    create(value?: PartialMessage<CreateProjectRoleRequest>): CreateProjectRoleRequest {
        const message = globalThis.Object.create((this.messagePrototype!));
        message.name = "";
        message.resourceType = 0;
        message.permissions = [];
        message.type = 0;
        message.description = "";
        if (value !== undefined)
            reflectionMergePartial<CreateProjectRoleRequest>(this, message, value);
        return message;
    }
    internalBinaryRead(reader: IBinaryReader, length: number, options: BinaryReadOptions, target?: CreateProjectRoleRequest): CreateProjectRoleRequest {
        let message = target ?? this.create(), end = reader.pos + length;
        while (reader.pos < end) {
            let [fieldNo, wireType] = reader.tag();
            switch (fieldNo) {
                case /* api.RequestProjectHeader Header = 1 [json_name = "Header"];*/ 1:
                    message.header = RequestProjectHeader.internalBinaryRead(reader, reader.uint32(), options, message.header);
                    break;
                case /* string Name = 2 [json_name = "Name"];*/ 2:
                    message.name = reader.string();
                    break;
                case /* api.ResourceType ResourceType = 4 [json_name = "ResourceType"];*/ 4:
                    message.resourceType = reader.int32();
                    break;
                case /* repeated api.Permission Permissions = 5 [json_name = "Permissions"];*/ 5:
                    message.permissions.push(Permission.internalBinaryRead(reader, reader.uint32(), options));
                    break;
                case /* api.RoleType Type = 6 [json_name = "Type"];*/ 6:
                    message.type = reader.int32();
                    break;
                case /* string Description = 7 [json_name = "Description"];*/ 7:
                    message.description = reader.string();
                    break;
                default:
                    let u = options.readUnknownField;
                    if (u === "throw")
                        throw new globalThis.Error(`Unknown field ${fieldNo} (wire type ${wireType}) for ${this.typeName}`);
                    let d = reader.skip(wireType);
                    if (u !== false)
                        (u === true ? UnknownFieldHandler.onRead : u)(this.typeName, message, fieldNo, wireType, d);
            }
        }
        return message;
    }
    internalBinaryWrite(message: CreateProjectRoleRequest, writer: IBinaryWriter, options: BinaryWriteOptions): IBinaryWriter {
        /* api.RequestProjectHeader Header = 1 [json_name = "Header"]; */
        if (message.header)
            RequestProjectHeader.internalBinaryWrite(message.header, writer.tag(1, WireType.LengthDelimited).fork(), options).join();
        /* string Name = 2 [json_name = "Name"]; */
        if (message.name !== "")
            writer.tag(2, WireType.LengthDelimited).string(message.name);
        /* api.ResourceType ResourceType = 4 [json_name = "ResourceType"]; */
        if (message.resourceType !== 0)
            writer.tag(4, WireType.Varint).int32(message.resourceType);
        /* repeated api.Permission Permissions = 5 [json_name = "Permissions"]; */
        for (let i = 0; i < message.permissions.length; i++)
            Permission.internalBinaryWrite(message.permissions[i], writer.tag(5, WireType.LengthDelimited).fork(), options).join();
        /* api.RoleType Type = 6 [json_name = "Type"]; */
        if (message.type !== 0)
            writer.tag(6, WireType.Varint).int32(message.type);
        /* string Description = 7 [json_name = "Description"]; */
        if (message.description !== "")
            writer.tag(7, WireType.LengthDelimited).string(message.description);
        let u = options.writeUnknownFields;
        if (u !== false)
            (u == true ? UnknownFieldHandler.onWrite : u)(this.typeName, message, writer);
        return writer;
    }
}
/**
 * @generated MessageType for protobuf message api.CreateProjectRoleRequest
 */
export const CreateProjectRoleRequest = new CreateProjectRoleRequest$Type();
// @generated message type with reflection information, may provide speed optimized methods
class CreateProjectRoleResult$Type extends MessageType<CreateProjectRoleResult> {
    constructor() {
        super("api.CreateProjectRoleResult", [
            { no: 1, name: "Result", kind: "message", jsonName: "Result", T: () => Role }
        ]);
    }
    create(value?: PartialMessage<CreateProjectRoleResult>): CreateProjectRoleResult {
        const message = globalThis.Object.create((this.messagePrototype!));
        if (value !== undefined)
            reflectionMergePartial<CreateProjectRoleResult>(this, message, value);
        return message;
    }
    internalBinaryRead(reader: IBinaryReader, length: number, options: BinaryReadOptions, target?: CreateProjectRoleResult): CreateProjectRoleResult {
        let message = target ?? this.create(), end = reader.pos + length;
        while (reader.pos < end) {
            let [fieldNo, wireType] = reader.tag();
            switch (fieldNo) {
                case /* api.Role Result = 1 [json_name = "Result"];*/ 1:
                    message.result = Role.internalBinaryRead(reader, reader.uint32(), options, message.result);
                    break;
                default:
                    let u = options.readUnknownField;
                    if (u === "throw")
                        throw new globalThis.Error(`Unknown field ${fieldNo} (wire type ${wireType}) for ${this.typeName}`);
                    let d = reader.skip(wireType);
                    if (u !== false)
                        (u === true ? UnknownFieldHandler.onRead : u)(this.typeName, message, fieldNo, wireType, d);
            }
        }
        return message;
    }
    internalBinaryWrite(message: CreateProjectRoleResult, writer: IBinaryWriter, options: BinaryWriteOptions): IBinaryWriter {
        /* api.Role Result = 1 [json_name = "Result"]; */
        if (message.result)
            Role.internalBinaryWrite(message.result, writer.tag(1, WireType.LengthDelimited).fork(), options).join();
        let u = options.writeUnknownFields;
        if (u !== false)
            (u == true ? UnknownFieldHandler.onWrite : u)(this.typeName, message, writer);
        return writer;
    }
}
/**
 * @generated MessageType for protobuf message api.CreateProjectRoleResult
 */
export const CreateProjectRoleResult = new CreateProjectRoleResult$Type();
// @generated message type with reflection information, may provide speed optimized methods
class UpdatePlatformRoleRequest$Type extends MessageType<UpdatePlatformRoleRequest> {
    constructor() {
        super("api.UpdatePlatformRoleRequest", [
            { no: 2, name: "Name", kind: "scalar", jsonName: "Name", T: 9 /*ScalarType.STRING*/, options: { "validate.rules": { string: { minLen: "1", pattern: "^[.a-zA-Z0-9]+(?:-[.a-zA-Z0-9]+)*$" } }, "grpc.gateway.protoc_gen_openapiv2.options.openapiv2_field": { pattern: "^[.a-zA-Z0-9]+(?:-[.a-zA-Z0-9]+)*$" } } },
            { no: 4, name: "ResourceType", kind: "enum", jsonName: "ResourceType", T: () => ["api.ResourceType", ResourceType, "RESOURCE_TYPE_"], options: { "validate.rules": { enum: { definedOnly: true } } } },
            { no: 5, name: "Permissions", kind: "message", jsonName: "Permissions", repeat: 1 /*RepeatType.PACKED*/, T: () => Permission },
            { no: 6, name: "Type", kind: "enum", jsonName: "Type", T: () => ["api.RoleType", RoleType, "ROLE_TYPE_"], options: { "validate.rules": { enum: { definedOnly: true } } } },
            { no: 7, name: "ApplicationType", kind: "enum", jsonName: "ApplicationType", T: () => ["api.ApplicationType", ApplicationType], options: { "validate.rules": { enum: { definedOnly: true } } } },
            { no: 8, name: "Description", kind: "scalar", jsonName: "Description", T: 9 /*ScalarType.STRING*/ }
        ]);
    }
    create(value?: PartialMessage<UpdatePlatformRoleRequest>): UpdatePlatformRoleRequest {
        const message = globalThis.Object.create((this.messagePrototype!));
        message.name = "";
        message.resourceType = 0;
        message.permissions = [];
        message.type = 0;
        message.applicationType = 0;
        message.description = "";
        if (value !== undefined)
            reflectionMergePartial<UpdatePlatformRoleRequest>(this, message, value);
        return message;
    }
    internalBinaryRead(reader: IBinaryReader, length: number, options: BinaryReadOptions, target?: UpdatePlatformRoleRequest): UpdatePlatformRoleRequest {
        let message = target ?? this.create(), end = reader.pos + length;
        while (reader.pos < end) {
            let [fieldNo, wireType] = reader.tag();
            switch (fieldNo) {
                case /* string Name = 2 [json_name = "Name"];*/ 2:
                    message.name = reader.string();
                    break;
                case /* api.ResourceType ResourceType = 4 [json_name = "ResourceType"];*/ 4:
                    message.resourceType = reader.int32();
                    break;
                case /* repeated api.Permission Permissions = 5 [json_name = "Permissions"];*/ 5:
                    message.permissions.push(Permission.internalBinaryRead(reader, reader.uint32(), options));
                    break;
                case /* api.RoleType Type = 6 [json_name = "Type"];*/ 6:
                    message.type = reader.int32();
                    break;
                case /* api.ApplicationType ApplicationType = 7 [json_name = "ApplicationType"];*/ 7:
                    message.applicationType = reader.int32();
                    break;
                case /* string Description = 8 [json_name = "Description"];*/ 8:
                    message.description = reader.string();
                    break;
                default:
                    let u = options.readUnknownField;
                    if (u === "throw")
                        throw new globalThis.Error(`Unknown field ${fieldNo} (wire type ${wireType}) for ${this.typeName}`);
                    let d = reader.skip(wireType);
                    if (u !== false)
                        (u === true ? UnknownFieldHandler.onRead : u)(this.typeName, message, fieldNo, wireType, d);
            }
        }
        return message;
    }
    internalBinaryWrite(message: UpdatePlatformRoleRequest, writer: IBinaryWriter, options: BinaryWriteOptions): IBinaryWriter {
        /* string Name = 2 [json_name = "Name"]; */
        if (message.name !== "")
            writer.tag(2, WireType.LengthDelimited).string(message.name);
        /* api.ResourceType ResourceType = 4 [json_name = "ResourceType"]; */
        if (message.resourceType !== 0)
            writer.tag(4, WireType.Varint).int32(message.resourceType);
        /* repeated api.Permission Permissions = 5 [json_name = "Permissions"]; */
        for (let i = 0; i < message.permissions.length; i++)
            Permission.internalBinaryWrite(message.permissions[i], writer.tag(5, WireType.LengthDelimited).fork(), options).join();
        /* api.RoleType Type = 6 [json_name = "Type"]; */
        if (message.type !== 0)
            writer.tag(6, WireType.Varint).int32(message.type);
        /* api.ApplicationType ApplicationType = 7 [json_name = "ApplicationType"]; */
        if (message.applicationType !== 0)
            writer.tag(7, WireType.Varint).int32(message.applicationType);
        /* string Description = 8 [json_name = "Description"]; */
        if (message.description !== "")
            writer.tag(8, WireType.LengthDelimited).string(message.description);
        let u = options.writeUnknownFields;
        if (u !== false)
            (u == true ? UnknownFieldHandler.onWrite : u)(this.typeName, message, writer);
        return writer;
    }
}
/**
 * @generated MessageType for protobuf message api.UpdatePlatformRoleRequest
 */
export const UpdatePlatformRoleRequest = new UpdatePlatformRoleRequest$Type();
// @generated message type with reflection information, may provide speed optimized methods
class UpdatePlatformRoleResult$Type extends MessageType<UpdatePlatformRoleResult> {
    constructor() {
        super("api.UpdatePlatformRoleResult", [
            { no: 1, name: "Result", kind: "message", jsonName: "Result", T: () => Role }
        ]);
    }
    create(value?: PartialMessage<UpdatePlatformRoleResult>): UpdatePlatformRoleResult {
        const message = globalThis.Object.create((this.messagePrototype!));
        if (value !== undefined)
            reflectionMergePartial<UpdatePlatformRoleResult>(this, message, value);
        return message;
    }
    internalBinaryRead(reader: IBinaryReader, length: number, options: BinaryReadOptions, target?: UpdatePlatformRoleResult): UpdatePlatformRoleResult {
        let message = target ?? this.create(), end = reader.pos + length;
        while (reader.pos < end) {
            let [fieldNo, wireType] = reader.tag();
            switch (fieldNo) {
                case /* api.Role Result = 1 [json_name = "Result"];*/ 1:
                    message.result = Role.internalBinaryRead(reader, reader.uint32(), options, message.result);
                    break;
                default:
                    let u = options.readUnknownField;
                    if (u === "throw")
                        throw new globalThis.Error(`Unknown field ${fieldNo} (wire type ${wireType}) for ${this.typeName}`);
                    let d = reader.skip(wireType);
                    if (u !== false)
                        (u === true ? UnknownFieldHandler.onRead : u)(this.typeName, message, fieldNo, wireType, d);
            }
        }
        return message;
    }
    internalBinaryWrite(message: UpdatePlatformRoleResult, writer: IBinaryWriter, options: BinaryWriteOptions): IBinaryWriter {
        /* api.Role Result = 1 [json_name = "Result"]; */
        if (message.result)
            Role.internalBinaryWrite(message.result, writer.tag(1, WireType.LengthDelimited).fork(), options).join();
        let u = options.writeUnknownFields;
        if (u !== false)
            (u == true ? UnknownFieldHandler.onWrite : u)(this.typeName, message, writer);
        return writer;
    }
}
/**
 * @generated MessageType for protobuf message api.UpdatePlatformRoleResult
 */
export const UpdatePlatformRoleResult = new UpdatePlatformRoleResult$Type();
// @generated message type with reflection information, may provide speed optimized methods
class UpdateOrganisationRoleRequest$Type extends MessageType<UpdateOrganisationRoleRequest> {
    constructor() {
        super("api.UpdateOrganisationRoleRequest", [
            { no: 1, name: "Header", kind: "message", jsonName: "Header", T: () => RequestOrganisationHeader, options: { "validate.rules": { message: { required: true } } } },
            { no: 2, name: "Name", kind: "scalar", jsonName: "Name", T: 9 /*ScalarType.STRING*/, options: { "validate.rules": { string: { minLen: "1", pattern: "^[.a-zA-Z0-9]+(?:-[.a-zA-Z0-9]+)*$" } }, "grpc.gateway.protoc_gen_openapiv2.options.openapiv2_field": { pattern: "^[.a-zA-Z0-9]+(?:-[.a-zA-Z0-9]+)*$" } } },
            { no: 4, name: "ResourceType", kind: "enum", jsonName: "ResourceType", T: () => ["api.ResourceType", ResourceType, "RESOURCE_TYPE_"], options: { "validate.rules": { enum: { definedOnly: true } } } },
            { no: 5, name: "Permissions", kind: "message", jsonName: "Permissions", repeat: 1 /*RepeatType.PACKED*/, T: () => Permission, options: { "validate.rules": { repeated: { minItems: "1" } } } },
            { no: 6, name: "Type", kind: "enum", jsonName: "Type", T: () => ["api.RoleType", RoleType, "ROLE_TYPE_"], options: { "validate.rules": { enum: { definedOnly: true } } } },
            { no: 7, name: "Description", kind: "scalar", jsonName: "Description", T: 9 /*ScalarType.STRING*/ }
        ]);
    }
    create(value?: PartialMessage<UpdateOrganisationRoleRequest>): UpdateOrganisationRoleRequest {
        const message = globalThis.Object.create((this.messagePrototype!));
        message.name = "";
        message.resourceType = 0;
        message.permissions = [];
        message.type = 0;
        message.description = "";
        if (value !== undefined)
            reflectionMergePartial<UpdateOrganisationRoleRequest>(this, message, value);
        return message;
    }
    internalBinaryRead(reader: IBinaryReader, length: number, options: BinaryReadOptions, target?: UpdateOrganisationRoleRequest): UpdateOrganisationRoleRequest {
        let message = target ?? this.create(), end = reader.pos + length;
        while (reader.pos < end) {
            let [fieldNo, wireType] = reader.tag();
            switch (fieldNo) {
                case /* api.RequestOrganisationHeader Header = 1 [json_name = "Header"];*/ 1:
                    message.header = RequestOrganisationHeader.internalBinaryRead(reader, reader.uint32(), options, message.header);
                    break;
                case /* string Name = 2 [json_name = "Name"];*/ 2:
                    message.name = reader.string();
                    break;
                case /* api.ResourceType ResourceType = 4 [json_name = "ResourceType"];*/ 4:
                    message.resourceType = reader.int32();
                    break;
                case /* repeated api.Permission Permissions = 5 [json_name = "Permissions"];*/ 5:
                    message.permissions.push(Permission.internalBinaryRead(reader, reader.uint32(), options));
                    break;
                case /* api.RoleType Type = 6 [json_name = "Type"];*/ 6:
                    message.type = reader.int32();
                    break;
                case /* string Description = 7 [json_name = "Description"];*/ 7:
                    message.description = reader.string();
                    break;
                default:
                    let u = options.readUnknownField;
                    if (u === "throw")
                        throw new globalThis.Error(`Unknown field ${fieldNo} (wire type ${wireType}) for ${this.typeName}`);
                    let d = reader.skip(wireType);
                    if (u !== false)
                        (u === true ? UnknownFieldHandler.onRead : u)(this.typeName, message, fieldNo, wireType, d);
            }
        }
        return message;
    }
    internalBinaryWrite(message: UpdateOrganisationRoleRequest, writer: IBinaryWriter, options: BinaryWriteOptions): IBinaryWriter {
        /* api.RequestOrganisationHeader Header = 1 [json_name = "Header"]; */
        if (message.header)
            RequestOrganisationHeader.internalBinaryWrite(message.header, writer.tag(1, WireType.LengthDelimited).fork(), options).join();
        /* string Name = 2 [json_name = "Name"]; */
        if (message.name !== "")
            writer.tag(2, WireType.LengthDelimited).string(message.name);
        /* api.ResourceType ResourceType = 4 [json_name = "ResourceType"]; */
        if (message.resourceType !== 0)
            writer.tag(4, WireType.Varint).int32(message.resourceType);
        /* repeated api.Permission Permissions = 5 [json_name = "Permissions"]; */
        for (let i = 0; i < message.permissions.length; i++)
            Permission.internalBinaryWrite(message.permissions[i], writer.tag(5, WireType.LengthDelimited).fork(), options).join();
        /* api.RoleType Type = 6 [json_name = "Type"]; */
        if (message.type !== 0)
            writer.tag(6, WireType.Varint).int32(message.type);
        /* string Description = 7 [json_name = "Description"]; */
        if (message.description !== "")
            writer.tag(7, WireType.LengthDelimited).string(message.description);
        let u = options.writeUnknownFields;
        if (u !== false)
            (u == true ? UnknownFieldHandler.onWrite : u)(this.typeName, message, writer);
        return writer;
    }
}
/**
 * @generated MessageType for protobuf message api.UpdateOrganisationRoleRequest
 */
export const UpdateOrganisationRoleRequest = new UpdateOrganisationRoleRequest$Type();
// @generated message type with reflection information, may provide speed optimized methods
class UpdateOrganisationRoleResult$Type extends MessageType<UpdateOrganisationRoleResult> {
    constructor() {
        super("api.UpdateOrganisationRoleResult", [
            { no: 1, name: "Result", kind: "message", jsonName: "Result", T: () => Role }
        ]);
    }
    create(value?: PartialMessage<UpdateOrganisationRoleResult>): UpdateOrganisationRoleResult {
        const message = globalThis.Object.create((this.messagePrototype!));
        if (value !== undefined)
            reflectionMergePartial<UpdateOrganisationRoleResult>(this, message, value);
        return message;
    }
    internalBinaryRead(reader: IBinaryReader, length: number, options: BinaryReadOptions, target?: UpdateOrganisationRoleResult): UpdateOrganisationRoleResult {
        let message = target ?? this.create(), end = reader.pos + length;
        while (reader.pos < end) {
            let [fieldNo, wireType] = reader.tag();
            switch (fieldNo) {
                case /* api.Role Result = 1 [json_name = "Result"];*/ 1:
                    message.result = Role.internalBinaryRead(reader, reader.uint32(), options, message.result);
                    break;
                default:
                    let u = options.readUnknownField;
                    if (u === "throw")
                        throw new globalThis.Error(`Unknown field ${fieldNo} (wire type ${wireType}) for ${this.typeName}`);
                    let d = reader.skip(wireType);
                    if (u !== false)
                        (u === true ? UnknownFieldHandler.onRead : u)(this.typeName, message, fieldNo, wireType, d);
            }
        }
        return message;
    }
    internalBinaryWrite(message: UpdateOrganisationRoleResult, writer: IBinaryWriter, options: BinaryWriteOptions): IBinaryWriter {
        /* api.Role Result = 1 [json_name = "Result"]; */
        if (message.result)
            Role.internalBinaryWrite(message.result, writer.tag(1, WireType.LengthDelimited).fork(), options).join();
        let u = options.writeUnknownFields;
        if (u !== false)
            (u == true ? UnknownFieldHandler.onWrite : u)(this.typeName, message, writer);
        return writer;
    }
}
/**
 * @generated MessageType for protobuf message api.UpdateOrganisationRoleResult
 */
export const UpdateOrganisationRoleResult = new UpdateOrganisationRoleResult$Type();
// @generated message type with reflection information, may provide speed optimized methods
class UpdateProjectRoleRequest$Type extends MessageType<UpdateProjectRoleRequest> {
    constructor() {
        super("api.UpdateProjectRoleRequest", [
            { no: 1, name: "Header", kind: "message", jsonName: "Header", T: () => RequestProjectHeader, options: { "validate.rules": { message: { required: true } } } },
            { no: 2, name: "Name", kind: "scalar", jsonName: "Name", T: 9 /*ScalarType.STRING*/, options: { "validate.rules": { string: { minLen: "1", pattern: "^[.a-zA-Z0-9]+(?:-[.a-zA-Z0-9]+)*$" } }, "grpc.gateway.protoc_gen_openapiv2.options.openapiv2_field": { pattern: "^[.a-zA-Z0-9]+(?:-[.a-zA-Z0-9]+)*$" } } },
            { no: 4, name: "ResourceType", kind: "enum", jsonName: "ResourceType", T: () => ["api.ResourceType", ResourceType, "RESOURCE_TYPE_"], options: { "validate.rules": { enum: { definedOnly: true } } } },
            { no: 5, name: "Permissions", kind: "message", jsonName: "Permissions", repeat: 1 /*RepeatType.PACKED*/, T: () => Permission },
            { no: 6, name: "Type", kind: "enum", jsonName: "Type", T: () => ["api.RoleType", RoleType, "ROLE_TYPE_"], options: { "validate.rules": { enum: { definedOnly: true } } } },
            { no: 7, name: "Description", kind: "scalar", jsonName: "Description", T: 9 /*ScalarType.STRING*/ }
        ]);
    }
    create(value?: PartialMessage<UpdateProjectRoleRequest>): UpdateProjectRoleRequest {
        const message = globalThis.Object.create((this.messagePrototype!));
        message.name = "";
        message.resourceType = 0;
        message.permissions = [];
        message.type = 0;
        message.description = "";
        if (value !== undefined)
            reflectionMergePartial<UpdateProjectRoleRequest>(this, message, value);
        return message;
    }
    internalBinaryRead(reader: IBinaryReader, length: number, options: BinaryReadOptions, target?: UpdateProjectRoleRequest): UpdateProjectRoleRequest {
        let message = target ?? this.create(), end = reader.pos + length;
        while (reader.pos < end) {
            let [fieldNo, wireType] = reader.tag();
            switch (fieldNo) {
                case /* api.RequestProjectHeader Header = 1 [json_name = "Header"];*/ 1:
                    message.header = RequestProjectHeader.internalBinaryRead(reader, reader.uint32(), options, message.header);
                    break;
                case /* string Name = 2 [json_name = "Name"];*/ 2:
                    message.name = reader.string();
                    break;
                case /* api.ResourceType ResourceType = 4 [json_name = "ResourceType"];*/ 4:
                    message.resourceType = reader.int32();
                    break;
                case /* repeated api.Permission Permissions = 5 [json_name = "Permissions"];*/ 5:
                    message.permissions.push(Permission.internalBinaryRead(reader, reader.uint32(), options));
                    break;
                case /* api.RoleType Type = 6 [json_name = "Type"];*/ 6:
                    message.type = reader.int32();
                    break;
                case /* string Description = 7 [json_name = "Description"];*/ 7:
                    message.description = reader.string();
                    break;
                default:
                    let u = options.readUnknownField;
                    if (u === "throw")
                        throw new globalThis.Error(`Unknown field ${fieldNo} (wire type ${wireType}) for ${this.typeName}`);
                    let d = reader.skip(wireType);
                    if (u !== false)
                        (u === true ? UnknownFieldHandler.onRead : u)(this.typeName, message, fieldNo, wireType, d);
            }
        }
        return message;
    }
    internalBinaryWrite(message: UpdateProjectRoleRequest, writer: IBinaryWriter, options: BinaryWriteOptions): IBinaryWriter {
        /* api.RequestProjectHeader Header = 1 [json_name = "Header"]; */
        if (message.header)
            RequestProjectHeader.internalBinaryWrite(message.header, writer.tag(1, WireType.LengthDelimited).fork(), options).join();
        /* string Name = 2 [json_name = "Name"]; */
        if (message.name !== "")
            writer.tag(2, WireType.LengthDelimited).string(message.name);
        /* api.ResourceType ResourceType = 4 [json_name = "ResourceType"]; */
        if (message.resourceType !== 0)
            writer.tag(4, WireType.Varint).int32(message.resourceType);
        /* repeated api.Permission Permissions = 5 [json_name = "Permissions"]; */
        for (let i = 0; i < message.permissions.length; i++)
            Permission.internalBinaryWrite(message.permissions[i], writer.tag(5, WireType.LengthDelimited).fork(), options).join();
        /* api.RoleType Type = 6 [json_name = "Type"]; */
        if (message.type !== 0)
            writer.tag(6, WireType.Varint).int32(message.type);
        /* string Description = 7 [json_name = "Description"]; */
        if (message.description !== "")
            writer.tag(7, WireType.LengthDelimited).string(message.description);
        let u = options.writeUnknownFields;
        if (u !== false)
            (u == true ? UnknownFieldHandler.onWrite : u)(this.typeName, message, writer);
        return writer;
    }
}
/**
 * @generated MessageType for protobuf message api.UpdateProjectRoleRequest
 */
export const UpdateProjectRoleRequest = new UpdateProjectRoleRequest$Type();
// @generated message type with reflection information, may provide speed optimized methods
class UpdateProjectRoleResult$Type extends MessageType<UpdateProjectRoleResult> {
    constructor() {
        super("api.UpdateProjectRoleResult", [
            { no: 1, name: "Result", kind: "message", jsonName: "Result", T: () => Role }
        ]);
    }
    create(value?: PartialMessage<UpdateProjectRoleResult>): UpdateProjectRoleResult {
        const message = globalThis.Object.create((this.messagePrototype!));
        if (value !== undefined)
            reflectionMergePartial<UpdateProjectRoleResult>(this, message, value);
        return message;
    }
    internalBinaryRead(reader: IBinaryReader, length: number, options: BinaryReadOptions, target?: UpdateProjectRoleResult): UpdateProjectRoleResult {
        let message = target ?? this.create(), end = reader.pos + length;
        while (reader.pos < end) {
            let [fieldNo, wireType] = reader.tag();
            switch (fieldNo) {
                case /* api.Role Result = 1 [json_name = "Result"];*/ 1:
                    message.result = Role.internalBinaryRead(reader, reader.uint32(), options, message.result);
                    break;
                default:
                    let u = options.readUnknownField;
                    if (u === "throw")
                        throw new globalThis.Error(`Unknown field ${fieldNo} (wire type ${wireType}) for ${this.typeName}`);
                    let d = reader.skip(wireType);
                    if (u !== false)
                        (u === true ? UnknownFieldHandler.onRead : u)(this.typeName, message, fieldNo, wireType, d);
            }
        }
        return message;
    }
    internalBinaryWrite(message: UpdateProjectRoleResult, writer: IBinaryWriter, options: BinaryWriteOptions): IBinaryWriter {
        /* api.Role Result = 1 [json_name = "Result"]; */
        if (message.result)
            Role.internalBinaryWrite(message.result, writer.tag(1, WireType.LengthDelimited).fork(), options).join();
        let u = options.writeUnknownFields;
        if (u !== false)
            (u == true ? UnknownFieldHandler.onWrite : u)(this.typeName, message, writer);
        return writer;
    }
}
/**
 * @generated MessageType for protobuf message api.UpdateProjectRoleResult
 */
export const UpdateProjectRoleResult = new UpdateProjectRoleResult$Type();
// @generated message type with reflection information, may provide speed optimized methods
class GetPlatformRoleRequest$Type extends MessageType<GetPlatformRoleRequest> {
    constructor() {
        super("api.GetPlatformRoleRequest", [
            { no: 1, name: "Name", kind: "scalar", jsonName: "Name", T: 9 /*ScalarType.STRING*/, options: { "validate.rules": { string: { minLen: "1" } } } },
            { no: 2, name: "ResourceType", kind: "enum", jsonName: "ResourceType", T: () => ["api.ResourceType", ResourceType, "RESOURCE_TYPE_"], options: { "validate.rules": { enum: { definedOnly: true } } } }
        ]);
    }
    create(value?: PartialMessage<GetPlatformRoleRequest>): GetPlatformRoleRequest {
        const message = globalThis.Object.create((this.messagePrototype!));
        message.name = "";
        message.resourceType = 0;
        if (value !== undefined)
            reflectionMergePartial<GetPlatformRoleRequest>(this, message, value);
        return message;
    }
    internalBinaryRead(reader: IBinaryReader, length: number, options: BinaryReadOptions, target?: GetPlatformRoleRequest): GetPlatformRoleRequest {
        let message = target ?? this.create(), end = reader.pos + length;
        while (reader.pos < end) {
            let [fieldNo, wireType] = reader.tag();
            switch (fieldNo) {
                case /* string Name = 1 [json_name = "Name"];*/ 1:
                    message.name = reader.string();
                    break;
                case /* api.ResourceType ResourceType = 2 [json_name = "ResourceType"];*/ 2:
                    message.resourceType = reader.int32();
                    break;
                default:
                    let u = options.readUnknownField;
                    if (u === "throw")
                        throw new globalThis.Error(`Unknown field ${fieldNo} (wire type ${wireType}) for ${this.typeName}`);
                    let d = reader.skip(wireType);
                    if (u !== false)
                        (u === true ? UnknownFieldHandler.onRead : u)(this.typeName, message, fieldNo, wireType, d);
            }
        }
        return message;
    }
    internalBinaryWrite(message: GetPlatformRoleRequest, writer: IBinaryWriter, options: BinaryWriteOptions): IBinaryWriter {
        /* string Name = 1 [json_name = "Name"]; */
        if (message.name !== "")
            writer.tag(1, WireType.LengthDelimited).string(message.name);
        /* api.ResourceType ResourceType = 2 [json_name = "ResourceType"]; */
        if (message.resourceType !== 0)
            writer.tag(2, WireType.Varint).int32(message.resourceType);
        let u = options.writeUnknownFields;
        if (u !== false)
            (u == true ? UnknownFieldHandler.onWrite : u)(this.typeName, message, writer);
        return writer;
    }
}
/**
 * @generated MessageType for protobuf message api.GetPlatformRoleRequest
 */
export const GetPlatformRoleRequest = new GetPlatformRoleRequest$Type();
// @generated message type with reflection information, may provide speed optimized methods
class GetPlatformRoleResult$Type extends MessageType<GetPlatformRoleResult> {
    constructor() {
        super("api.GetPlatformRoleResult", [
            { no: 1, name: "Result", kind: "message", jsonName: "Result", T: () => Role }
        ]);
    }
    create(value?: PartialMessage<GetPlatformRoleResult>): GetPlatformRoleResult {
        const message = globalThis.Object.create((this.messagePrototype!));
        if (value !== undefined)
            reflectionMergePartial<GetPlatformRoleResult>(this, message, value);
        return message;
    }
    internalBinaryRead(reader: IBinaryReader, length: number, options: BinaryReadOptions, target?: GetPlatformRoleResult): GetPlatformRoleResult {
        let message = target ?? this.create(), end = reader.pos + length;
        while (reader.pos < end) {
            let [fieldNo, wireType] = reader.tag();
            switch (fieldNo) {
                case /* api.Role Result = 1 [json_name = "Result"];*/ 1:
                    message.result = Role.internalBinaryRead(reader, reader.uint32(), options, message.result);
                    break;
                default:
                    let u = options.readUnknownField;
                    if (u === "throw")
                        throw new globalThis.Error(`Unknown field ${fieldNo} (wire type ${wireType}) for ${this.typeName}`);
                    let d = reader.skip(wireType);
                    if (u !== false)
                        (u === true ? UnknownFieldHandler.onRead : u)(this.typeName, message, fieldNo, wireType, d);
            }
        }
        return message;
    }
    internalBinaryWrite(message: GetPlatformRoleResult, writer: IBinaryWriter, options: BinaryWriteOptions): IBinaryWriter {
        /* api.Role Result = 1 [json_name = "Result"]; */
        if (message.result)
            Role.internalBinaryWrite(message.result, writer.tag(1, WireType.LengthDelimited).fork(), options).join();
        let u = options.writeUnknownFields;
        if (u !== false)
            (u == true ? UnknownFieldHandler.onWrite : u)(this.typeName, message, writer);
        return writer;
    }
}
/**
 * @generated MessageType for protobuf message api.GetPlatformRoleResult
 */
export const GetPlatformRoleResult = new GetPlatformRoleResult$Type();
// @generated message type with reflection information, may provide speed optimized methods
class GetOrganisationRoleRequest$Type extends MessageType<GetOrganisationRoleRequest> {
    constructor() {
        super("api.GetOrganisationRoleRequest", [
            { no: 1, name: "Header", kind: "message", jsonName: "Header", T: () => RequestOrganisationHeader, options: { "validate.rules": { message: { required: true } } } },
            { no: 2, name: "Name", kind: "scalar", jsonName: "Name", T: 9 /*ScalarType.STRING*/, options: { "validate.rules": { string: { minLen: "1", pattern: "^[.a-zA-Z0-9]+(?:-[.a-zA-Z0-9]+)*$" } }, "grpc.gateway.protoc_gen_openapiv2.options.openapiv2_field": { pattern: "^[.a-zA-Z0-9]+(?:-[.a-zA-Z0-9]+)*$" } } },
            { no: 3, name: "ResourceType", kind: "enum", jsonName: "ResourceType", T: () => ["api.ResourceType", ResourceType, "RESOURCE_TYPE_"], options: { "validate.rules": { enum: { definedOnly: true } } } }
        ]);
    }
    create(value?: PartialMessage<GetOrganisationRoleRequest>): GetOrganisationRoleRequest {
        const message = globalThis.Object.create((this.messagePrototype!));
        message.name = "";
        message.resourceType = 0;
        if (value !== undefined)
            reflectionMergePartial<GetOrganisationRoleRequest>(this, message, value);
        return message;
    }
    internalBinaryRead(reader: IBinaryReader, length: number, options: BinaryReadOptions, target?: GetOrganisationRoleRequest): GetOrganisationRoleRequest {
        let message = target ?? this.create(), end = reader.pos + length;
        while (reader.pos < end) {
            let [fieldNo, wireType] = reader.tag();
            switch (fieldNo) {
                case /* api.RequestOrganisationHeader Header = 1 [json_name = "Header"];*/ 1:
                    message.header = RequestOrganisationHeader.internalBinaryRead(reader, reader.uint32(), options, message.header);
                    break;
                case /* string Name = 2 [json_name = "Name"];*/ 2:
                    message.name = reader.string();
                    break;
                case /* api.ResourceType ResourceType = 3 [json_name = "ResourceType"];*/ 3:
                    message.resourceType = reader.int32();
                    break;
                default:
                    let u = options.readUnknownField;
                    if (u === "throw")
                        throw new globalThis.Error(`Unknown field ${fieldNo} (wire type ${wireType}) for ${this.typeName}`);
                    let d = reader.skip(wireType);
                    if (u !== false)
                        (u === true ? UnknownFieldHandler.onRead : u)(this.typeName, message, fieldNo, wireType, d);
            }
        }
        return message;
    }
    internalBinaryWrite(message: GetOrganisationRoleRequest, writer: IBinaryWriter, options: BinaryWriteOptions): IBinaryWriter {
        /* api.RequestOrganisationHeader Header = 1 [json_name = "Header"]; */
        if (message.header)
            RequestOrganisationHeader.internalBinaryWrite(message.header, writer.tag(1, WireType.LengthDelimited).fork(), options).join();
        /* string Name = 2 [json_name = "Name"]; */
        if (message.name !== "")
            writer.tag(2, WireType.LengthDelimited).string(message.name);
        /* api.ResourceType ResourceType = 3 [json_name = "ResourceType"]; */
        if (message.resourceType !== 0)
            writer.tag(3, WireType.Varint).int32(message.resourceType);
        let u = options.writeUnknownFields;
        if (u !== false)
            (u == true ? UnknownFieldHandler.onWrite : u)(this.typeName, message, writer);
        return writer;
    }
}
/**
 * @generated MessageType for protobuf message api.GetOrganisationRoleRequest
 */
export const GetOrganisationRoleRequest = new GetOrganisationRoleRequest$Type();
// @generated message type with reflection information, may provide speed optimized methods
class GetOrganisationRoleResult$Type extends MessageType<GetOrganisationRoleResult> {
    constructor() {
        super("api.GetOrganisationRoleResult", [
            { no: 1, name: "Result", kind: "message", jsonName: "Result", T: () => Role }
        ]);
    }
    create(value?: PartialMessage<GetOrganisationRoleResult>): GetOrganisationRoleResult {
        const message = globalThis.Object.create((this.messagePrototype!));
        if (value !== undefined)
            reflectionMergePartial<GetOrganisationRoleResult>(this, message, value);
        return message;
    }
    internalBinaryRead(reader: IBinaryReader, length: number, options: BinaryReadOptions, target?: GetOrganisationRoleResult): GetOrganisationRoleResult {
        let message = target ?? this.create(), end = reader.pos + length;
        while (reader.pos < end) {
            let [fieldNo, wireType] = reader.tag();
            switch (fieldNo) {
                case /* api.Role Result = 1 [json_name = "Result"];*/ 1:
                    message.result = Role.internalBinaryRead(reader, reader.uint32(), options, message.result);
                    break;
                default:
                    let u = options.readUnknownField;
                    if (u === "throw")
                        throw new globalThis.Error(`Unknown field ${fieldNo} (wire type ${wireType}) for ${this.typeName}`);
                    let d = reader.skip(wireType);
                    if (u !== false)
                        (u === true ? UnknownFieldHandler.onRead : u)(this.typeName, message, fieldNo, wireType, d);
            }
        }
        return message;
    }
    internalBinaryWrite(message: GetOrganisationRoleResult, writer: IBinaryWriter, options: BinaryWriteOptions): IBinaryWriter {
        /* api.Role Result = 1 [json_name = "Result"]; */
        if (message.result)
            Role.internalBinaryWrite(message.result, writer.tag(1, WireType.LengthDelimited).fork(), options).join();
        let u = options.writeUnknownFields;
        if (u !== false)
            (u == true ? UnknownFieldHandler.onWrite : u)(this.typeName, message, writer);
        return writer;
    }
}
/**
 * @generated MessageType for protobuf message api.GetOrganisationRoleResult
 */
export const GetOrganisationRoleResult = new GetOrganisationRoleResult$Type();
// @generated message type with reflection information, may provide speed optimized methods
class GetProjectRoleRequest$Type extends MessageType<GetProjectRoleRequest> {
    constructor() {
        super("api.GetProjectRoleRequest", [
            { no: 1, name: "Header", kind: "message", jsonName: "Header", T: () => RequestProjectHeader, options: { "validate.rules": { message: { required: true } } } },
            { no: 2, name: "Name", kind: "scalar", jsonName: "Name", T: 9 /*ScalarType.STRING*/, options: { "validate.rules": { string: { minLen: "1", pattern: "^[.a-zA-Z0-9]+(?:-[.a-zA-Z0-9]+)*$" } }, "grpc.gateway.protoc_gen_openapiv2.options.openapiv2_field": { pattern: "^[.a-zA-Z0-9]+(?:-[.a-zA-Z0-9]+)*$" } } },
            { no: 3, name: "ResourceType", kind: "enum", jsonName: "ResourceType", T: () => ["api.ResourceType", ResourceType, "RESOURCE_TYPE_"], options: { "validate.rules": { enum: { definedOnly: true } } } }
        ]);
    }
    create(value?: PartialMessage<GetProjectRoleRequest>): GetProjectRoleRequest {
        const message = globalThis.Object.create((this.messagePrototype!));
        message.name = "";
        message.resourceType = 0;
        if (value !== undefined)
            reflectionMergePartial<GetProjectRoleRequest>(this, message, value);
        return message;
    }
    internalBinaryRead(reader: IBinaryReader, length: number, options: BinaryReadOptions, target?: GetProjectRoleRequest): GetProjectRoleRequest {
        let message = target ?? this.create(), end = reader.pos + length;
        while (reader.pos < end) {
            let [fieldNo, wireType] = reader.tag();
            switch (fieldNo) {
                case /* api.RequestProjectHeader Header = 1 [json_name = "Header"];*/ 1:
                    message.header = RequestProjectHeader.internalBinaryRead(reader, reader.uint32(), options, message.header);
                    break;
                case /* string Name = 2 [json_name = "Name"];*/ 2:
                    message.name = reader.string();
                    break;
                case /* api.ResourceType ResourceType = 3 [json_name = "ResourceType"];*/ 3:
                    message.resourceType = reader.int32();
                    break;
                default:
                    let u = options.readUnknownField;
                    if (u === "throw")
                        throw new globalThis.Error(`Unknown field ${fieldNo} (wire type ${wireType}) for ${this.typeName}`);
                    let d = reader.skip(wireType);
                    if (u !== false)
                        (u === true ? UnknownFieldHandler.onRead : u)(this.typeName, message, fieldNo, wireType, d);
            }
        }
        return message;
    }
    internalBinaryWrite(message: GetProjectRoleRequest, writer: IBinaryWriter, options: BinaryWriteOptions): IBinaryWriter {
        /* api.RequestProjectHeader Header = 1 [json_name = "Header"]; */
        if (message.header)
            RequestProjectHeader.internalBinaryWrite(message.header, writer.tag(1, WireType.LengthDelimited).fork(), options).join();
        /* string Name = 2 [json_name = "Name"]; */
        if (message.name !== "")
            writer.tag(2, WireType.LengthDelimited).string(message.name);
        /* api.ResourceType ResourceType = 3 [json_name = "ResourceType"]; */
        if (message.resourceType !== 0)
            writer.tag(3, WireType.Varint).int32(message.resourceType);
        let u = options.writeUnknownFields;
        if (u !== false)
            (u == true ? UnknownFieldHandler.onWrite : u)(this.typeName, message, writer);
        return writer;
    }
}
/**
 * @generated MessageType for protobuf message api.GetProjectRoleRequest
 */
export const GetProjectRoleRequest = new GetProjectRoleRequest$Type();
// @generated message type with reflection information, may provide speed optimized methods
class GetProjectRoleResult$Type extends MessageType<GetProjectRoleResult> {
    constructor() {
        super("api.GetProjectRoleResult", [
            { no: 1, name: "Result", kind: "message", jsonName: "Result", T: () => Role }
        ]);
    }
    create(value?: PartialMessage<GetProjectRoleResult>): GetProjectRoleResult {
        const message = globalThis.Object.create((this.messagePrototype!));
        if (value !== undefined)
            reflectionMergePartial<GetProjectRoleResult>(this, message, value);
        return message;
    }
    internalBinaryRead(reader: IBinaryReader, length: number, options: BinaryReadOptions, target?: GetProjectRoleResult): GetProjectRoleResult {
        let message = target ?? this.create(), end = reader.pos + length;
        while (reader.pos < end) {
            let [fieldNo, wireType] = reader.tag();
            switch (fieldNo) {
                case /* api.Role Result = 1 [json_name = "Result"];*/ 1:
                    message.result = Role.internalBinaryRead(reader, reader.uint32(), options, message.result);
                    break;
                default:
                    let u = options.readUnknownField;
                    if (u === "throw")
                        throw new globalThis.Error(`Unknown field ${fieldNo} (wire type ${wireType}) for ${this.typeName}`);
                    let d = reader.skip(wireType);
                    if (u !== false)
                        (u === true ? UnknownFieldHandler.onRead : u)(this.typeName, message, fieldNo, wireType, d);
            }
        }
        return message;
    }
    internalBinaryWrite(message: GetProjectRoleResult, writer: IBinaryWriter, options: BinaryWriteOptions): IBinaryWriter {
        /* api.Role Result = 1 [json_name = "Result"]; */
        if (message.result)
            Role.internalBinaryWrite(message.result, writer.tag(1, WireType.LengthDelimited).fork(), options).join();
        let u = options.writeUnknownFields;
        if (u !== false)
            (u == true ? UnknownFieldHandler.onWrite : u)(this.typeName, message, writer);
        return writer;
    }
}
/**
 * @generated MessageType for protobuf message api.GetProjectRoleResult
 */
export const GetProjectRoleResult = new GetProjectRoleResult$Type();
// @generated message type with reflection information, may provide speed optimized methods
class ListPlatformRolesRequest$Type extends MessageType<ListPlatformRolesRequest> {
    constructor() {
        super("api.ListPlatformRolesRequest", [
            { no: 2, name: "ResourceType", kind: "enum", jsonName: "ResourceType", T: () => ["api.ResourceType", ResourceType, "RESOURCE_TYPE_"] },
            { no: 3, name: "Paging", kind: "message", jsonName: "Paging", T: () => Paging },
            { no: 4, name: "Type", kind: "enum", jsonName: "Type", T: () => ["api.RoleType", RoleType, "ROLE_TYPE_"] },
            { no: 5, name: "ApplicationType", kind: "enum", jsonName: "ApplicationType", T: () => ["api.ApplicationType", ApplicationType] }
        ]);
    }
    create(value?: PartialMessage<ListPlatformRolesRequest>): ListPlatformRolesRequest {
        const message = globalThis.Object.create((this.messagePrototype!));
        message.resourceType = 0;
        message.type = 0;
        message.applicationType = 0;
        if (value !== undefined)
            reflectionMergePartial<ListPlatformRolesRequest>(this, message, value);
        return message;
    }
    internalBinaryRead(reader: IBinaryReader, length: number, options: BinaryReadOptions, target?: ListPlatformRolesRequest): ListPlatformRolesRequest {
        let message = target ?? this.create(), end = reader.pos + length;
        while (reader.pos < end) {
            let [fieldNo, wireType] = reader.tag();
            switch (fieldNo) {
                case /* api.ResourceType ResourceType = 2 [json_name = "ResourceType"];*/ 2:
                    message.resourceType = reader.int32();
                    break;
                case /* api.Paging Paging = 3 [json_name = "Paging"];*/ 3:
                    message.paging = Paging.internalBinaryRead(reader, reader.uint32(), options, message.paging);
                    break;
                case /* api.RoleType Type = 4 [json_name = "Type"];*/ 4:
                    message.type = reader.int32();
                    break;
                case /* api.ApplicationType ApplicationType = 5 [json_name = "ApplicationType"];*/ 5:
                    message.applicationType = reader.int32();
                    break;
                default:
                    let u = options.readUnknownField;
                    if (u === "throw")
                        throw new globalThis.Error(`Unknown field ${fieldNo} (wire type ${wireType}) for ${this.typeName}`);
                    let d = reader.skip(wireType);
                    if (u !== false)
                        (u === true ? UnknownFieldHandler.onRead : u)(this.typeName, message, fieldNo, wireType, d);
            }
        }
        return message;
    }
    internalBinaryWrite(message: ListPlatformRolesRequest, writer: IBinaryWriter, options: BinaryWriteOptions): IBinaryWriter {
        /* api.ResourceType ResourceType = 2 [json_name = "ResourceType"]; */
        if (message.resourceType !== 0)
            writer.tag(2, WireType.Varint).int32(message.resourceType);
        /* api.Paging Paging = 3 [json_name = "Paging"]; */
        if (message.paging)
            Paging.internalBinaryWrite(message.paging, writer.tag(3, WireType.LengthDelimited).fork(), options).join();
        /* api.RoleType Type = 4 [json_name = "Type"]; */
        if (message.type !== 0)
            writer.tag(4, WireType.Varint).int32(message.type);
        /* api.ApplicationType ApplicationType = 5 [json_name = "ApplicationType"]; */
        if (message.applicationType !== 0)
            writer.tag(5, WireType.Varint).int32(message.applicationType);
        let u = options.writeUnknownFields;
        if (u !== false)
            (u == true ? UnknownFieldHandler.onWrite : u)(this.typeName, message, writer);
        return writer;
    }
}
/**
 * @generated MessageType for protobuf message api.ListPlatformRolesRequest
 */
export const ListPlatformRolesRequest = new ListPlatformRolesRequest$Type();
// @generated message type with reflection information, may provide speed optimized methods
class ListPlatformRolesResult$Type extends MessageType<ListPlatformRolesResult> {
    constructor() {
        super("api.ListPlatformRolesResult", [
            { no: 1, name: "Results", kind: "message", jsonName: "Results", repeat: 1 /*RepeatType.PACKED*/, T: () => Role }
        ]);
    }
    create(value?: PartialMessage<ListPlatformRolesResult>): ListPlatformRolesResult {
        const message = globalThis.Object.create((this.messagePrototype!));
        message.results = [];
        if (value !== undefined)
            reflectionMergePartial<ListPlatformRolesResult>(this, message, value);
        return message;
    }
    internalBinaryRead(reader: IBinaryReader, length: number, options: BinaryReadOptions, target?: ListPlatformRolesResult): ListPlatformRolesResult {
        let message = target ?? this.create(), end = reader.pos + length;
        while (reader.pos < end) {
            let [fieldNo, wireType] = reader.tag();
            switch (fieldNo) {
                case /* repeated api.Role Results = 1 [json_name = "Results"];*/ 1:
                    message.results.push(Role.internalBinaryRead(reader, reader.uint32(), options));
                    break;
                default:
                    let u = options.readUnknownField;
                    if (u === "throw")
                        throw new globalThis.Error(`Unknown field ${fieldNo} (wire type ${wireType}) for ${this.typeName}`);
                    let d = reader.skip(wireType);
                    if (u !== false)
                        (u === true ? UnknownFieldHandler.onRead : u)(this.typeName, message, fieldNo, wireType, d);
            }
        }
        return message;
    }
    internalBinaryWrite(message: ListPlatformRolesResult, writer: IBinaryWriter, options: BinaryWriteOptions): IBinaryWriter {
        /* repeated api.Role Results = 1 [json_name = "Results"]; */
        for (let i = 0; i < message.results.length; i++)
            Role.internalBinaryWrite(message.results[i], writer.tag(1, WireType.LengthDelimited).fork(), options).join();
        let u = options.writeUnknownFields;
        if (u !== false)
            (u == true ? UnknownFieldHandler.onWrite : u)(this.typeName, message, writer);
        return writer;
    }
}
/**
 * @generated MessageType for protobuf message api.ListPlatformRolesResult
 */
export const ListPlatformRolesResult = new ListPlatformRolesResult$Type();
// @generated message type with reflection information, may provide speed optimized methods
class ListOrganisationRolesRequest$Type extends MessageType<ListOrganisationRolesRequest> {
    constructor() {
        super("api.ListOrganisationRolesRequest", [
            { no: 1, name: "Header", kind: "message", jsonName: "Header", T: () => RequestOrganisationHeader, options: { "validate.rules": { message: { required: true } } } },
            { no: 2, name: "ResourceType", kind: "enum", jsonName: "ResourceType", T: () => ["api.ResourceType", ResourceType, "RESOURCE_TYPE_"] },
            { no: 3, name: "Paging", kind: "message", jsonName: "Paging", T: () => Paging },
            { no: 4, name: "Type", kind: "enum", jsonName: "Type", T: () => ["api.RoleType", RoleType, "ROLE_TYPE_"] }
        ]);
    }
    create(value?: PartialMessage<ListOrganisationRolesRequest>): ListOrganisationRolesRequest {
        const message = globalThis.Object.create((this.messagePrototype!));
        message.resourceType = 0;
        message.type = 0;
        if (value !== undefined)
            reflectionMergePartial<ListOrganisationRolesRequest>(this, message, value);
        return message;
    }
    internalBinaryRead(reader: IBinaryReader, length: number, options: BinaryReadOptions, target?: ListOrganisationRolesRequest): ListOrganisationRolesRequest {
        let message = target ?? this.create(), end = reader.pos + length;
        while (reader.pos < end) {
            let [fieldNo, wireType] = reader.tag();
            switch (fieldNo) {
                case /* api.RequestOrganisationHeader Header = 1 [json_name = "Header"];*/ 1:
                    message.header = RequestOrganisationHeader.internalBinaryRead(reader, reader.uint32(), options, message.header);
                    break;
                case /* api.ResourceType ResourceType = 2 [json_name = "ResourceType"];*/ 2:
                    message.resourceType = reader.int32();
                    break;
                case /* api.Paging Paging = 3 [json_name = "Paging"];*/ 3:
                    message.paging = Paging.internalBinaryRead(reader, reader.uint32(), options, message.paging);
                    break;
                case /* api.RoleType Type = 4 [json_name = "Type"];*/ 4:
                    message.type = reader.int32();
                    break;
                default:
                    let u = options.readUnknownField;
                    if (u === "throw")
                        throw new globalThis.Error(`Unknown field ${fieldNo} (wire type ${wireType}) for ${this.typeName}`);
                    let d = reader.skip(wireType);
                    if (u !== false)
                        (u === true ? UnknownFieldHandler.onRead : u)(this.typeName, message, fieldNo, wireType, d);
            }
        }
        return message;
    }
    internalBinaryWrite(message: ListOrganisationRolesRequest, writer: IBinaryWriter, options: BinaryWriteOptions): IBinaryWriter {
        /* api.RequestOrganisationHeader Header = 1 [json_name = "Header"]; */
        if (message.header)
            RequestOrganisationHeader.internalBinaryWrite(message.header, writer.tag(1, WireType.LengthDelimited).fork(), options).join();
        /* api.ResourceType ResourceType = 2 [json_name = "ResourceType"]; */
        if (message.resourceType !== 0)
            writer.tag(2, WireType.Varint).int32(message.resourceType);
        /* api.Paging Paging = 3 [json_name = "Paging"]; */
        if (message.paging)
            Paging.internalBinaryWrite(message.paging, writer.tag(3, WireType.LengthDelimited).fork(), options).join();
        /* api.RoleType Type = 4 [json_name = "Type"]; */
        if (message.type !== 0)
            writer.tag(4, WireType.Varint).int32(message.type);
        let u = options.writeUnknownFields;
        if (u !== false)
            (u == true ? UnknownFieldHandler.onWrite : u)(this.typeName, message, writer);
        return writer;
    }
}
/**
 * @generated MessageType for protobuf message api.ListOrganisationRolesRequest
 */
export const ListOrganisationRolesRequest = new ListOrganisationRolesRequest$Type();
// @generated message type with reflection information, may provide speed optimized methods
class ListOrganisationRolesResult$Type extends MessageType<ListOrganisationRolesResult> {
    constructor() {
        super("api.ListOrganisationRolesResult", [
            { no: 1, name: "Results", kind: "message", jsonName: "Results", repeat: 1 /*RepeatType.PACKED*/, T: () => Role }
        ]);
    }
    create(value?: PartialMessage<ListOrganisationRolesResult>): ListOrganisationRolesResult {
        const message = globalThis.Object.create((this.messagePrototype!));
        message.results = [];
        if (value !== undefined)
            reflectionMergePartial<ListOrganisationRolesResult>(this, message, value);
        return message;
    }
    internalBinaryRead(reader: IBinaryReader, length: number, options: BinaryReadOptions, target?: ListOrganisationRolesResult): ListOrganisationRolesResult {
        let message = target ?? this.create(), end = reader.pos + length;
        while (reader.pos < end) {
            let [fieldNo, wireType] = reader.tag();
            switch (fieldNo) {
                case /* repeated api.Role Results = 1 [json_name = "Results"];*/ 1:
                    message.results.push(Role.internalBinaryRead(reader, reader.uint32(), options));
                    break;
                default:
                    let u = options.readUnknownField;
                    if (u === "throw")
                        throw new globalThis.Error(`Unknown field ${fieldNo} (wire type ${wireType}) for ${this.typeName}`);
                    let d = reader.skip(wireType);
                    if (u !== false)
                        (u === true ? UnknownFieldHandler.onRead : u)(this.typeName, message, fieldNo, wireType, d);
            }
        }
        return message;
    }
    internalBinaryWrite(message: ListOrganisationRolesResult, writer: IBinaryWriter, options: BinaryWriteOptions): IBinaryWriter {
        /* repeated api.Role Results = 1 [json_name = "Results"]; */
        for (let i = 0; i < message.results.length; i++)
            Role.internalBinaryWrite(message.results[i], writer.tag(1, WireType.LengthDelimited).fork(), options).join();
        let u = options.writeUnknownFields;
        if (u !== false)
            (u == true ? UnknownFieldHandler.onWrite : u)(this.typeName, message, writer);
        return writer;
    }
}
/**
 * @generated MessageType for protobuf message api.ListOrganisationRolesResult
 */
export const ListOrganisationRolesResult = new ListOrganisationRolesResult$Type();
// @generated message type with reflection information, may provide speed optimized methods
class ListProjectRolesRequest$Type extends MessageType<ListProjectRolesRequest> {
    constructor() {
        super("api.ListProjectRolesRequest", [
            { no: 1, name: "Header", kind: "message", jsonName: "Header", T: () => RequestProjectHeader, options: { "validate.rules": { message: { required: true } } } },
            { no: 2, name: "ResourceType", kind: "enum", jsonName: "ResourceType", T: () => ["api.ResourceType", ResourceType, "RESOURCE_TYPE_"] },
            { no: 3, name: "Paging", kind: "message", jsonName: "Paging", T: () => Paging },
            { no: 4, name: "Type", kind: "enum", jsonName: "Type", T: () => ["api.RoleType", RoleType, "ROLE_TYPE_"] }
        ]);
    }
    create(value?: PartialMessage<ListProjectRolesRequest>): ListProjectRolesRequest {
        const message = globalThis.Object.create((this.messagePrototype!));
        message.resourceType = 0;
        message.type = 0;
        if (value !== undefined)
            reflectionMergePartial<ListProjectRolesRequest>(this, message, value);
        return message;
    }
    internalBinaryRead(reader: IBinaryReader, length: number, options: BinaryReadOptions, target?: ListProjectRolesRequest): ListProjectRolesRequest {
        let message = target ?? this.create(), end = reader.pos + length;
        while (reader.pos < end) {
            let [fieldNo, wireType] = reader.tag();
            switch (fieldNo) {
                case /* api.RequestProjectHeader Header = 1 [json_name = "Header"];*/ 1:
                    message.header = RequestProjectHeader.internalBinaryRead(reader, reader.uint32(), options, message.header);
                    break;
                case /* api.ResourceType ResourceType = 2 [json_name = "ResourceType"];*/ 2:
                    message.resourceType = reader.int32();
                    break;
                case /* api.Paging Paging = 3 [json_name = "Paging"];*/ 3:
                    message.paging = Paging.internalBinaryRead(reader, reader.uint32(), options, message.paging);
                    break;
                case /* api.RoleType Type = 4 [json_name = "Type"];*/ 4:
                    message.type = reader.int32();
                    break;
                default:
                    let u = options.readUnknownField;
                    if (u === "throw")
                        throw new globalThis.Error(`Unknown field ${fieldNo} (wire type ${wireType}) for ${this.typeName}`);
                    let d = reader.skip(wireType);
                    if (u !== false)
                        (u === true ? UnknownFieldHandler.onRead : u)(this.typeName, message, fieldNo, wireType, d);
            }
        }
        return message;
    }
    internalBinaryWrite(message: ListProjectRolesRequest, writer: IBinaryWriter, options: BinaryWriteOptions): IBinaryWriter {
        /* api.RequestProjectHeader Header = 1 [json_name = "Header"]; */
        if (message.header)
            RequestProjectHeader.internalBinaryWrite(message.header, writer.tag(1, WireType.LengthDelimited).fork(), options).join();
        /* api.ResourceType ResourceType = 2 [json_name = "ResourceType"]; */
        if (message.resourceType !== 0)
            writer.tag(2, WireType.Varint).int32(message.resourceType);
        /* api.Paging Paging = 3 [json_name = "Paging"]; */
        if (message.paging)
            Paging.internalBinaryWrite(message.paging, writer.tag(3, WireType.LengthDelimited).fork(), options).join();
        /* api.RoleType Type = 4 [json_name = "Type"]; */
        if (message.type !== 0)
            writer.tag(4, WireType.Varint).int32(message.type);
        let u = options.writeUnknownFields;
        if (u !== false)
            (u == true ? UnknownFieldHandler.onWrite : u)(this.typeName, message, writer);
        return writer;
    }
}
/**
 * @generated MessageType for protobuf message api.ListProjectRolesRequest
 */
export const ListProjectRolesRequest = new ListProjectRolesRequest$Type();
// @generated message type with reflection information, may provide speed optimized methods
class ListProjectRolesResult$Type extends MessageType<ListProjectRolesResult> {
    constructor() {
        super("api.ListProjectRolesResult", [
            { no: 1, name: "Results", kind: "message", jsonName: "Results", repeat: 1 /*RepeatType.PACKED*/, T: () => Role }
        ]);
    }
    create(value?: PartialMessage<ListProjectRolesResult>): ListProjectRolesResult {
        const message = globalThis.Object.create((this.messagePrototype!));
        message.results = [];
        if (value !== undefined)
            reflectionMergePartial<ListProjectRolesResult>(this, message, value);
        return message;
    }
    internalBinaryRead(reader: IBinaryReader, length: number, options: BinaryReadOptions, target?: ListProjectRolesResult): ListProjectRolesResult {
        let message = target ?? this.create(), end = reader.pos + length;
        while (reader.pos < end) {
            let [fieldNo, wireType] = reader.tag();
            switch (fieldNo) {
                case /* repeated api.Role Results = 1 [json_name = "Results"];*/ 1:
                    message.results.push(Role.internalBinaryRead(reader, reader.uint32(), options));
                    break;
                default:
                    let u = options.readUnknownField;
                    if (u === "throw")
                        throw new globalThis.Error(`Unknown field ${fieldNo} (wire type ${wireType}) for ${this.typeName}`);
                    let d = reader.skip(wireType);
                    if (u !== false)
                        (u === true ? UnknownFieldHandler.onRead : u)(this.typeName, message, fieldNo, wireType, d);
            }
        }
        return message;
    }
    internalBinaryWrite(message: ListProjectRolesResult, writer: IBinaryWriter, options: BinaryWriteOptions): IBinaryWriter {
        /* repeated api.Role Results = 1 [json_name = "Results"]; */
        for (let i = 0; i < message.results.length; i++)
            Role.internalBinaryWrite(message.results[i], writer.tag(1, WireType.LengthDelimited).fork(), options).join();
        let u = options.writeUnknownFields;
        if (u !== false)
            (u == true ? UnknownFieldHandler.onWrite : u)(this.typeName, message, writer);
        return writer;
    }
}
/**
 * @generated MessageType for protobuf message api.ListProjectRolesResult
 */
export const ListProjectRolesResult = new ListProjectRolesResult$Type();
// @generated message type with reflection information, may provide speed optimized methods
class PutRoleExternalPermissionsRequest$Type extends MessageType<PutRoleExternalPermissionsRequest> {
    constructor() {
        super("api.PutRoleExternalPermissionsRequest", [
            { no: 1, name: "ID", kind: "scalar", jsonName: "ID", T: 9 /*ScalarType.STRING*/, options: { "validate.rules": { string: { minLen: "1" } } } },
            { no: 2, name: "ExternalPermissions", kind: "message", jsonName: "ExternalPermissions", repeat: 1 /*RepeatType.PACKED*/, T: () => ExternalPermission }
        ]);
    }
    create(value?: PartialMessage<PutRoleExternalPermissionsRequest>): PutRoleExternalPermissionsRequest {
        const message = globalThis.Object.create((this.messagePrototype!));
        message.iD = "";
        message.externalPermissions = [];
        if (value !== undefined)
            reflectionMergePartial<PutRoleExternalPermissionsRequest>(this, message, value);
        return message;
    }
    internalBinaryRead(reader: IBinaryReader, length: number, options: BinaryReadOptions, target?: PutRoleExternalPermissionsRequest): PutRoleExternalPermissionsRequest {
        let message = target ?? this.create(), end = reader.pos + length;
        while (reader.pos < end) {
            let [fieldNo, wireType] = reader.tag();
            switch (fieldNo) {
                case /* string ID = 1 [json_name = "ID"];*/ 1:
                    message.iD = reader.string();
                    break;
                case /* repeated api.ExternalPermission ExternalPermissions = 2 [json_name = "ExternalPermissions"];*/ 2:
                    message.externalPermissions.push(ExternalPermission.internalBinaryRead(reader, reader.uint32(), options));
                    break;
                default:
                    let u = options.readUnknownField;
                    if (u === "throw")
                        throw new globalThis.Error(`Unknown field ${fieldNo} (wire type ${wireType}) for ${this.typeName}`);
                    let d = reader.skip(wireType);
                    if (u !== false)
                        (u === true ? UnknownFieldHandler.onRead : u)(this.typeName, message, fieldNo, wireType, d);
            }
        }
        return message;
    }
    internalBinaryWrite(message: PutRoleExternalPermissionsRequest, writer: IBinaryWriter, options: BinaryWriteOptions): IBinaryWriter {
        /* string ID = 1 [json_name = "ID"]; */
        if (message.iD !== "")
            writer.tag(1, WireType.LengthDelimited).string(message.iD);
        /* repeated api.ExternalPermission ExternalPermissions = 2 [json_name = "ExternalPermissions"]; */
        for (let i = 0; i < message.externalPermissions.length; i++)
            ExternalPermission.internalBinaryWrite(message.externalPermissions[i], writer.tag(2, WireType.LengthDelimited).fork(), options).join();
        let u = options.writeUnknownFields;
        if (u !== false)
            (u == true ? UnknownFieldHandler.onWrite : u)(this.typeName, message, writer);
        return writer;
    }
}
/**
 * @generated MessageType for protobuf message api.PutRoleExternalPermissionsRequest
 */
export const PutRoleExternalPermissionsRequest = new PutRoleExternalPermissionsRequest$Type();
// @generated message type with reflection information, may provide speed optimized methods
class PutRoleExternalPermissionsResult$Type extends MessageType<PutRoleExternalPermissionsResult> {
    constructor() {
        super("api.PutRoleExternalPermissionsResult", [
            { no: 1, name: "Result", kind: "message", jsonName: "Result", T: () => Role }
        ]);
    }
    create(value?: PartialMessage<PutRoleExternalPermissionsResult>): PutRoleExternalPermissionsResult {
        const message = globalThis.Object.create((this.messagePrototype!));
        if (value !== undefined)
            reflectionMergePartial<PutRoleExternalPermissionsResult>(this, message, value);
        return message;
    }
    internalBinaryRead(reader: IBinaryReader, length: number, options: BinaryReadOptions, target?: PutRoleExternalPermissionsResult): PutRoleExternalPermissionsResult {
        let message = target ?? this.create(), end = reader.pos + length;
        while (reader.pos < end) {
            let [fieldNo, wireType] = reader.tag();
            switch (fieldNo) {
                case /* api.Role Result = 1 [json_name = "Result"];*/ 1:
                    message.result = Role.internalBinaryRead(reader, reader.uint32(), options, message.result);
                    break;
                default:
                    let u = options.readUnknownField;
                    if (u === "throw")
                        throw new globalThis.Error(`Unknown field ${fieldNo} (wire type ${wireType}) for ${this.typeName}`);
                    let d = reader.skip(wireType);
                    if (u !== false)
                        (u === true ? UnknownFieldHandler.onRead : u)(this.typeName, message, fieldNo, wireType, d);
            }
        }
        return message;
    }
    internalBinaryWrite(message: PutRoleExternalPermissionsResult, writer: IBinaryWriter, options: BinaryWriteOptions): IBinaryWriter {
        /* api.Role Result = 1 [json_name = "Result"]; */
        if (message.result)
            Role.internalBinaryWrite(message.result, writer.tag(1, WireType.LengthDelimited).fork(), options).join();
        let u = options.writeUnknownFields;
        if (u !== false)
            (u == true ? UnknownFieldHandler.onWrite : u)(this.typeName, message, writer);
        return writer;
    }
}
/**
 * @generated MessageType for protobuf message api.PutRoleExternalPermissionsResult
 */
export const PutRoleExternalPermissionsResult = new PutRoleExternalPermissionsResult$Type();
// @generated message type with reflection information, may provide speed optimized methods
class DeleteRoleExternalPermissionsRequest$Type extends MessageType<DeleteRoleExternalPermissionsRequest> {
    constructor() {
        super("api.DeleteRoleExternalPermissionsRequest", [
            { no: 1, name: "ID", kind: "scalar", jsonName: "ID", T: 9 /*ScalarType.STRING*/, options: { "validate.rules": { string: { minLen: "1" } } } },
            { no: 2, name: "ExternalPermissions", kind: "message", jsonName: "ExternalPermissions", repeat: 1 /*RepeatType.PACKED*/, T: () => ExternalPermission }
        ]);
    }
    create(value?: PartialMessage<DeleteRoleExternalPermissionsRequest>): DeleteRoleExternalPermissionsRequest {
        const message = globalThis.Object.create((this.messagePrototype!));
        message.iD = "";
        message.externalPermissions = [];
        if (value !== undefined)
            reflectionMergePartial<DeleteRoleExternalPermissionsRequest>(this, message, value);
        return message;
    }
    internalBinaryRead(reader: IBinaryReader, length: number, options: BinaryReadOptions, target?: DeleteRoleExternalPermissionsRequest): DeleteRoleExternalPermissionsRequest {
        let message = target ?? this.create(), end = reader.pos + length;
        while (reader.pos < end) {
            let [fieldNo, wireType] = reader.tag();
            switch (fieldNo) {
                case /* string ID = 1 [json_name = "ID"];*/ 1:
                    message.iD = reader.string();
                    break;
                case /* repeated api.ExternalPermission ExternalPermissions = 2 [json_name = "ExternalPermissions"];*/ 2:
                    message.externalPermissions.push(ExternalPermission.internalBinaryRead(reader, reader.uint32(), options));
                    break;
                default:
                    let u = options.readUnknownField;
                    if (u === "throw")
                        throw new globalThis.Error(`Unknown field ${fieldNo} (wire type ${wireType}) for ${this.typeName}`);
                    let d = reader.skip(wireType);
                    if (u !== false)
                        (u === true ? UnknownFieldHandler.onRead : u)(this.typeName, message, fieldNo, wireType, d);
            }
        }
        return message;
    }
    internalBinaryWrite(message: DeleteRoleExternalPermissionsRequest, writer: IBinaryWriter, options: BinaryWriteOptions): IBinaryWriter {
        /* string ID = 1 [json_name = "ID"]; */
        if (message.iD !== "")
            writer.tag(1, WireType.LengthDelimited).string(message.iD);
        /* repeated api.ExternalPermission ExternalPermissions = 2 [json_name = "ExternalPermissions"]; */
        for (let i = 0; i < message.externalPermissions.length; i++)
            ExternalPermission.internalBinaryWrite(message.externalPermissions[i], writer.tag(2, WireType.LengthDelimited).fork(), options).join();
        let u = options.writeUnknownFields;
        if (u !== false)
            (u == true ? UnknownFieldHandler.onWrite : u)(this.typeName, message, writer);
        return writer;
    }
}
/**
 * @generated MessageType for protobuf message api.DeleteRoleExternalPermissionsRequest
 */
export const DeleteRoleExternalPermissionsRequest = new DeleteRoleExternalPermissionsRequest$Type();
// @generated message type with reflection information, may provide speed optimized methods
class DeleteRoleExternalPermissionsResult$Type extends MessageType<DeleteRoleExternalPermissionsResult> {
    constructor() {
        super("api.DeleteRoleExternalPermissionsResult", [
            { no: 1, name: "Result", kind: "message", jsonName: "Result", T: () => Role }
        ]);
    }
    create(value?: PartialMessage<DeleteRoleExternalPermissionsResult>): DeleteRoleExternalPermissionsResult {
        const message = globalThis.Object.create((this.messagePrototype!));
        if (value !== undefined)
            reflectionMergePartial<DeleteRoleExternalPermissionsResult>(this, message, value);
        return message;
    }
    internalBinaryRead(reader: IBinaryReader, length: number, options: BinaryReadOptions, target?: DeleteRoleExternalPermissionsResult): DeleteRoleExternalPermissionsResult {
        let message = target ?? this.create(), end = reader.pos + length;
        while (reader.pos < end) {
            let [fieldNo, wireType] = reader.tag();
            switch (fieldNo) {
                case /* api.Role Result = 1 [json_name = "Result"];*/ 1:
                    message.result = Role.internalBinaryRead(reader, reader.uint32(), options, message.result);
                    break;
                default:
                    let u = options.readUnknownField;
                    if (u === "throw")
                        throw new globalThis.Error(`Unknown field ${fieldNo} (wire type ${wireType}) for ${this.typeName}`);
                    let d = reader.skip(wireType);
                    if (u !== false)
                        (u === true ? UnknownFieldHandler.onRead : u)(this.typeName, message, fieldNo, wireType, d);
            }
        }
        return message;
    }
    internalBinaryWrite(message: DeleteRoleExternalPermissionsResult, writer: IBinaryWriter, options: BinaryWriteOptions): IBinaryWriter {
        /* api.Role Result = 1 [json_name = "Result"]; */
        if (message.result)
            Role.internalBinaryWrite(message.result, writer.tag(1, WireType.LengthDelimited).fork(), options).join();
        let u = options.writeUnknownFields;
        if (u !== false)
            (u == true ? UnknownFieldHandler.onWrite : u)(this.typeName, message, writer);
        return writer;
    }
}
/**
 * @generated MessageType for protobuf message api.DeleteRoleExternalPermissionsResult
 */
export const DeleteRoleExternalPermissionsResult = new DeleteRoleExternalPermissionsResult$Type();
// @generated message type with reflection information, may provide speed optimized methods
class DeleteAllPlatformRolesRequest$Type extends MessageType<DeleteAllPlatformRolesRequest> {
    constructor() {
        super("api.DeleteAllPlatformRolesRequest", [
            { no: 4, name: "ResourceType", kind: "enum", jsonName: "ResourceType", T: () => ["api.ResourceType", ResourceType, "RESOURCE_TYPE_"], options: { "validate.rules": { enum: { definedOnly: true } } } }
        ]);
    }
    create(value?: PartialMessage<DeleteAllPlatformRolesRequest>): DeleteAllPlatformRolesRequest {
        const message = globalThis.Object.create((this.messagePrototype!));
        message.resourceType = 0;
        if (value !== undefined)
            reflectionMergePartial<DeleteAllPlatformRolesRequest>(this, message, value);
        return message;
    }
    internalBinaryRead(reader: IBinaryReader, length: number, options: BinaryReadOptions, target?: DeleteAllPlatformRolesRequest): DeleteAllPlatformRolesRequest {
        let message = target ?? this.create(), end = reader.pos + length;
        while (reader.pos < end) {
            let [fieldNo, wireType] = reader.tag();
            switch (fieldNo) {
                case /* api.ResourceType ResourceType = 4 [json_name = "ResourceType"];*/ 4:
                    message.resourceType = reader.int32();
                    break;
                default:
                    let u = options.readUnknownField;
                    if (u === "throw")
                        throw new globalThis.Error(`Unknown field ${fieldNo} (wire type ${wireType}) for ${this.typeName}`);
                    let d = reader.skip(wireType);
                    if (u !== false)
                        (u === true ? UnknownFieldHandler.onRead : u)(this.typeName, message, fieldNo, wireType, d);
            }
        }
        return message;
    }
    internalBinaryWrite(message: DeleteAllPlatformRolesRequest, writer: IBinaryWriter, options: BinaryWriteOptions): IBinaryWriter {
        /* api.ResourceType ResourceType = 4 [json_name = "ResourceType"]; */
        if (message.resourceType !== 0)
            writer.tag(4, WireType.Varint).int32(message.resourceType);
        let u = options.writeUnknownFields;
        if (u !== false)
            (u == true ? UnknownFieldHandler.onWrite : u)(this.typeName, message, writer);
        return writer;
    }
}
/**
 * @generated MessageType for protobuf message api.DeleteAllPlatformRolesRequest
 */
export const DeleteAllPlatformRolesRequest = new DeleteAllPlatformRolesRequest$Type();
// @generated message type with reflection information, may provide speed optimized methods
class DeleteAllPlatformRolesResult$Type extends MessageType<DeleteAllPlatformRolesResult> {
    constructor() {
        super("api.DeleteAllPlatformRolesResult", []);
    }
    create(value?: PartialMessage<DeleteAllPlatformRolesResult>): DeleteAllPlatformRolesResult {
        const message = globalThis.Object.create((this.messagePrototype!));
        if (value !== undefined)
            reflectionMergePartial<DeleteAllPlatformRolesResult>(this, message, value);
        return message;
    }
    internalBinaryRead(reader: IBinaryReader, length: number, options: BinaryReadOptions, target?: DeleteAllPlatformRolesResult): DeleteAllPlatformRolesResult {
        let message = target ?? this.create(), end = reader.pos + length;
        while (reader.pos < end) {
            let [fieldNo, wireType] = reader.tag();
            switch (fieldNo) {
                default:
                    let u = options.readUnknownField;
                    if (u === "throw")
                        throw new globalThis.Error(`Unknown field ${fieldNo} (wire type ${wireType}) for ${this.typeName}`);
                    let d = reader.skip(wireType);
                    if (u !== false)
                        (u === true ? UnknownFieldHandler.onRead : u)(this.typeName, message, fieldNo, wireType, d);
            }
        }
        return message;
    }
    internalBinaryWrite(message: DeleteAllPlatformRolesResult, writer: IBinaryWriter, options: BinaryWriteOptions): IBinaryWriter {
        let u = options.writeUnknownFields;
        if (u !== false)
            (u == true ? UnknownFieldHandler.onWrite : u)(this.typeName, message, writer);
        return writer;
    }
}
/**
 * @generated MessageType for protobuf message api.DeleteAllPlatformRolesResult
 */
export const DeleteAllPlatformRolesResult = new DeleteAllPlatformRolesResult$Type();
// @generated message type with reflection information, may provide speed optimized methods
class DeletePlatformRoleRequest$Type extends MessageType<DeletePlatformRoleRequest> {
    constructor() {
        super("api.DeletePlatformRoleRequest", [
            { no: 2, name: "Name", kind: "scalar", jsonName: "Name", T: 9 /*ScalarType.STRING*/, options: { "validate.rules": { string: { minLen: "1", pattern: "^[.a-zA-Z0-9]+(?:-[.a-zA-Z0-9]+)*$" } }, "grpc.gateway.protoc_gen_openapiv2.options.openapiv2_field": { pattern: "^[.a-zA-Z0-9]+(?:-[.a-zA-Z0-9]+)*$" } } },
            { no: 4, name: "ResourceType", kind: "enum", jsonName: "ResourceType", T: () => ["api.ResourceType", ResourceType, "RESOURCE_TYPE_"], options: { "validate.rules": { enum: { definedOnly: true } } } }
        ]);
    }
    create(value?: PartialMessage<DeletePlatformRoleRequest>): DeletePlatformRoleRequest {
        const message = globalThis.Object.create((this.messagePrototype!));
        message.name = "";
        message.resourceType = 0;
        if (value !== undefined)
            reflectionMergePartial<DeletePlatformRoleRequest>(this, message, value);
        return message;
    }
    internalBinaryRead(reader: IBinaryReader, length: number, options: BinaryReadOptions, target?: DeletePlatformRoleRequest): DeletePlatformRoleRequest {
        let message = target ?? this.create(), end = reader.pos + length;
        while (reader.pos < end) {
            let [fieldNo, wireType] = reader.tag();
            switch (fieldNo) {
                case /* string Name = 2 [json_name = "Name"];*/ 2:
                    message.name = reader.string();
                    break;
                case /* api.ResourceType ResourceType = 4 [json_name = "ResourceType"];*/ 4:
                    message.resourceType = reader.int32();
                    break;
                default:
                    let u = options.readUnknownField;
                    if (u === "throw")
                        throw new globalThis.Error(`Unknown field ${fieldNo} (wire type ${wireType}) for ${this.typeName}`);
                    let d = reader.skip(wireType);
                    if (u !== false)
                        (u === true ? UnknownFieldHandler.onRead : u)(this.typeName, message, fieldNo, wireType, d);
            }
        }
        return message;
    }
    internalBinaryWrite(message: DeletePlatformRoleRequest, writer: IBinaryWriter, options: BinaryWriteOptions): IBinaryWriter {
        /* string Name = 2 [json_name = "Name"]; */
        if (message.name !== "")
            writer.tag(2, WireType.LengthDelimited).string(message.name);
        /* api.ResourceType ResourceType = 4 [json_name = "ResourceType"]; */
        if (message.resourceType !== 0)
            writer.tag(4, WireType.Varint).int32(message.resourceType);
        let u = options.writeUnknownFields;
        if (u !== false)
            (u == true ? UnknownFieldHandler.onWrite : u)(this.typeName, message, writer);
        return writer;
    }
}
/**
 * @generated MessageType for protobuf message api.DeletePlatformRoleRequest
 */
export const DeletePlatformRoleRequest = new DeletePlatformRoleRequest$Type();
// @generated message type with reflection information, may provide speed optimized methods
class DeletePlatformRoleResult$Type extends MessageType<DeletePlatformRoleResult> {
    constructor() {
        super("api.DeletePlatformRoleResult", []);
    }
    create(value?: PartialMessage<DeletePlatformRoleResult>): DeletePlatformRoleResult {
        const message = globalThis.Object.create((this.messagePrototype!));
        if (value !== undefined)
            reflectionMergePartial<DeletePlatformRoleResult>(this, message, value);
        return message;
    }
    internalBinaryRead(reader: IBinaryReader, length: number, options: BinaryReadOptions, target?: DeletePlatformRoleResult): DeletePlatformRoleResult {
        let message = target ?? this.create(), end = reader.pos + length;
        while (reader.pos < end) {
            let [fieldNo, wireType] = reader.tag();
            switch (fieldNo) {
                default:
                    let u = options.readUnknownField;
                    if (u === "throw")
                        throw new globalThis.Error(`Unknown field ${fieldNo} (wire type ${wireType}) for ${this.typeName}`);
                    let d = reader.skip(wireType);
                    if (u !== false)
                        (u === true ? UnknownFieldHandler.onRead : u)(this.typeName, message, fieldNo, wireType, d);
            }
        }
        return message;
    }
    internalBinaryWrite(message: DeletePlatformRoleResult, writer: IBinaryWriter, options: BinaryWriteOptions): IBinaryWriter {
        let u = options.writeUnknownFields;
        if (u !== false)
            (u == true ? UnknownFieldHandler.onWrite : u)(this.typeName, message, writer);
        return writer;
    }
}
/**
 * @generated MessageType for protobuf message api.DeletePlatformRoleResult
 */
export const DeletePlatformRoleResult = new DeletePlatformRoleResult$Type();
// @generated message type with reflection information, may provide speed optimized methods
class DeleteOrganisationRoleRequest$Type extends MessageType<DeleteOrganisationRoleRequest> {
    constructor() {
        super("api.DeleteOrganisationRoleRequest", [
            { no: 1, name: "Header", kind: "message", jsonName: "Header", T: () => RequestOrganisationHeader, options: { "validate.rules": { message: { required: true } } } },
            { no: 2, name: "Name", kind: "scalar", jsonName: "Name", T: 9 /*ScalarType.STRING*/, options: { "validate.rules": { string: { minLen: "1", pattern: "^[.a-zA-Z0-9]+(?:-[.a-zA-Z0-9]+)*$" } }, "grpc.gateway.protoc_gen_openapiv2.options.openapiv2_field": { pattern: "^[.a-zA-Z0-9]+(?:-[.a-zA-Z0-9]+)*$" } } },
            { no: 4, name: "ResourceType", kind: "enum", jsonName: "ResourceType", T: () => ["api.ResourceType", ResourceType, "RESOURCE_TYPE_"], options: { "validate.rules": { enum: { definedOnly: true } } } }
        ]);
    }
    create(value?: PartialMessage<DeleteOrganisationRoleRequest>): DeleteOrganisationRoleRequest {
        const message = globalThis.Object.create((this.messagePrototype!));
        message.name = "";
        message.resourceType = 0;
        if (value !== undefined)
            reflectionMergePartial<DeleteOrganisationRoleRequest>(this, message, value);
        return message;
    }
    internalBinaryRead(reader: IBinaryReader, length: number, options: BinaryReadOptions, target?: DeleteOrganisationRoleRequest): DeleteOrganisationRoleRequest {
        let message = target ?? this.create(), end = reader.pos + length;
        while (reader.pos < end) {
            let [fieldNo, wireType] = reader.tag();
            switch (fieldNo) {
                case /* api.RequestOrganisationHeader Header = 1 [json_name = "Header"];*/ 1:
                    message.header = RequestOrganisationHeader.internalBinaryRead(reader, reader.uint32(), options, message.header);
                    break;
                case /* string Name = 2 [json_name = "Name"];*/ 2:
                    message.name = reader.string();
                    break;
                case /* api.ResourceType ResourceType = 4 [json_name = "ResourceType"];*/ 4:
                    message.resourceType = reader.int32();
                    break;
                default:
                    let u = options.readUnknownField;
                    if (u === "throw")
                        throw new globalThis.Error(`Unknown field ${fieldNo} (wire type ${wireType}) for ${this.typeName}`);
                    let d = reader.skip(wireType);
                    if (u !== false)
                        (u === true ? UnknownFieldHandler.onRead : u)(this.typeName, message, fieldNo, wireType, d);
            }
        }
        return message;
    }
    internalBinaryWrite(message: DeleteOrganisationRoleRequest, writer: IBinaryWriter, options: BinaryWriteOptions): IBinaryWriter {
        /* api.RequestOrganisationHeader Header = 1 [json_name = "Header"]; */
        if (message.header)
            RequestOrganisationHeader.internalBinaryWrite(message.header, writer.tag(1, WireType.LengthDelimited).fork(), options).join();
        /* string Name = 2 [json_name = "Name"]; */
        if (message.name !== "")
            writer.tag(2, WireType.LengthDelimited).string(message.name);
        /* api.ResourceType ResourceType = 4 [json_name = "ResourceType"]; */
        if (message.resourceType !== 0)
            writer.tag(4, WireType.Varint).int32(message.resourceType);
        let u = options.writeUnknownFields;
        if (u !== false)
            (u == true ? UnknownFieldHandler.onWrite : u)(this.typeName, message, writer);
        return writer;
    }
}
/**
 * @generated MessageType for protobuf message api.DeleteOrganisationRoleRequest
 */
export const DeleteOrganisationRoleRequest = new DeleteOrganisationRoleRequest$Type();
// @generated message type with reflection information, may provide speed optimized methods
class DeleteOrganisationRoleResult$Type extends MessageType<DeleteOrganisationRoleResult> {
    constructor() {
        super("api.DeleteOrganisationRoleResult", []);
    }
    create(value?: PartialMessage<DeleteOrganisationRoleResult>): DeleteOrganisationRoleResult {
        const message = globalThis.Object.create((this.messagePrototype!));
        if (value !== undefined)
            reflectionMergePartial<DeleteOrganisationRoleResult>(this, message, value);
        return message;
    }
    internalBinaryRead(reader: IBinaryReader, length: number, options: BinaryReadOptions, target?: DeleteOrganisationRoleResult): DeleteOrganisationRoleResult {
        let message = target ?? this.create(), end = reader.pos + length;
        while (reader.pos < end) {
            let [fieldNo, wireType] = reader.tag();
            switch (fieldNo) {
                default:
                    let u = options.readUnknownField;
                    if (u === "throw")
                        throw new globalThis.Error(`Unknown field ${fieldNo} (wire type ${wireType}) for ${this.typeName}`);
                    let d = reader.skip(wireType);
                    if (u !== false)
                        (u === true ? UnknownFieldHandler.onRead : u)(this.typeName, message, fieldNo, wireType, d);
            }
        }
        return message;
    }
    internalBinaryWrite(message: DeleteOrganisationRoleResult, writer: IBinaryWriter, options: BinaryWriteOptions): IBinaryWriter {
        let u = options.writeUnknownFields;
        if (u !== false)
            (u == true ? UnknownFieldHandler.onWrite : u)(this.typeName, message, writer);
        return writer;
    }
}
/**
 * @generated MessageType for protobuf message api.DeleteOrganisationRoleResult
 */
export const DeleteOrganisationRoleResult = new DeleteOrganisationRoleResult$Type();
// @generated message type with reflection information, may provide speed optimized methods
class DeleteProjectRoleRequest$Type extends MessageType<DeleteProjectRoleRequest> {
    constructor() {
        super("api.DeleteProjectRoleRequest", [
            { no: 1, name: "Header", kind: "message", jsonName: "Header", T: () => RequestProjectHeader, options: { "validate.rules": { message: { required: true } } } },
            { no: 2, name: "Name", kind: "scalar", jsonName: "Name", T: 9 /*ScalarType.STRING*/, options: { "validate.rules": { string: { minLen: "1", pattern: "^[.a-zA-Z0-9]+(?:-[.a-zA-Z0-9]+)*$" } }, "grpc.gateway.protoc_gen_openapiv2.options.openapiv2_field": { pattern: "^[.a-zA-Z0-9]+(?:-[.a-zA-Z0-9]+)*$" } } },
            { no: 4, name: "ResourceType", kind: "enum", jsonName: "ResourceType", T: () => ["api.ResourceType", ResourceType, "RESOURCE_TYPE_"], options: { "validate.rules": { enum: { definedOnly: true } } } }
        ]);
    }
    create(value?: PartialMessage<DeleteProjectRoleRequest>): DeleteProjectRoleRequest {
        const message = globalThis.Object.create((this.messagePrototype!));
        message.name = "";
        message.resourceType = 0;
        if (value !== undefined)
            reflectionMergePartial<DeleteProjectRoleRequest>(this, message, value);
        return message;
    }
    internalBinaryRead(reader: IBinaryReader, length: number, options: BinaryReadOptions, target?: DeleteProjectRoleRequest): DeleteProjectRoleRequest {
        let message = target ?? this.create(), end = reader.pos + length;
        while (reader.pos < end) {
            let [fieldNo, wireType] = reader.tag();
            switch (fieldNo) {
                case /* api.RequestProjectHeader Header = 1 [json_name = "Header"];*/ 1:
                    message.header = RequestProjectHeader.internalBinaryRead(reader, reader.uint32(), options, message.header);
                    break;
                case /* string Name = 2 [json_name = "Name"];*/ 2:
                    message.name = reader.string();
                    break;
                case /* api.ResourceType ResourceType = 4 [json_name = "ResourceType"];*/ 4:
                    message.resourceType = reader.int32();
                    break;
                default:
                    let u = options.readUnknownField;
                    if (u === "throw")
                        throw new globalThis.Error(`Unknown field ${fieldNo} (wire type ${wireType}) for ${this.typeName}`);
                    let d = reader.skip(wireType);
                    if (u !== false)
                        (u === true ? UnknownFieldHandler.onRead : u)(this.typeName, message, fieldNo, wireType, d);
            }
        }
        return message;
    }
    internalBinaryWrite(message: DeleteProjectRoleRequest, writer: IBinaryWriter, options: BinaryWriteOptions): IBinaryWriter {
        /* api.RequestProjectHeader Header = 1 [json_name = "Header"]; */
        if (message.header)
            RequestProjectHeader.internalBinaryWrite(message.header, writer.tag(1, WireType.LengthDelimited).fork(), options).join();
        /* string Name = 2 [json_name = "Name"]; */
        if (message.name !== "")
            writer.tag(2, WireType.LengthDelimited).string(message.name);
        /* api.ResourceType ResourceType = 4 [json_name = "ResourceType"]; */
        if (message.resourceType !== 0)
            writer.tag(4, WireType.Varint).int32(message.resourceType);
        let u = options.writeUnknownFields;
        if (u !== false)
            (u == true ? UnknownFieldHandler.onWrite : u)(this.typeName, message, writer);
        return writer;
    }
}
/**
 * @generated MessageType for protobuf message api.DeleteProjectRoleRequest
 */
export const DeleteProjectRoleRequest = new DeleteProjectRoleRequest$Type();
// @generated message type with reflection information, may provide speed optimized methods
class DeleteProjectRoleResult$Type extends MessageType<DeleteProjectRoleResult> {
    constructor() {
        super("api.DeleteProjectRoleResult", []);
    }
    create(value?: PartialMessage<DeleteProjectRoleResult>): DeleteProjectRoleResult {
        const message = globalThis.Object.create((this.messagePrototype!));
        if (value !== undefined)
            reflectionMergePartial<DeleteProjectRoleResult>(this, message, value);
        return message;
    }
    internalBinaryRead(reader: IBinaryReader, length: number, options: BinaryReadOptions, target?: DeleteProjectRoleResult): DeleteProjectRoleResult {
        let message = target ?? this.create(), end = reader.pos + length;
        while (reader.pos < end) {
            let [fieldNo, wireType] = reader.tag();
            switch (fieldNo) {
                default:
                    let u = options.readUnknownField;
                    if (u === "throw")
                        throw new globalThis.Error(`Unknown field ${fieldNo} (wire type ${wireType}) for ${this.typeName}`);
                    let d = reader.skip(wireType);
                    if (u !== false)
                        (u === true ? UnknownFieldHandler.onRead : u)(this.typeName, message, fieldNo, wireType, d);
            }
        }
        return message;
    }
    internalBinaryWrite(message: DeleteProjectRoleResult, writer: IBinaryWriter, options: BinaryWriteOptions): IBinaryWriter {
        let u = options.writeUnknownFields;
        if (u !== false)
            (u == true ? UnknownFieldHandler.onWrite : u)(this.typeName, message, writer);
        return writer;
    }
}
/**
 * @generated MessageType for protobuf message api.DeleteProjectRoleResult
 */
export const DeleteProjectRoleResult = new DeleteProjectRoleResult$Type();
// @generated message type with reflection information, may provide speed optimized methods
class PropagateRolesOnResourceRequest$Type extends MessageType<PropagateRolesOnResourceRequest> {
    constructor() {
        super("api.PropagateRolesOnResourceRequest", [
            { no: 1, name: "ResourceType", kind: "enum", jsonName: "ResourceType", T: () => ["api.ResourceType", ResourceType, "RESOURCE_TYPE_"], options: { "validate.rules": { enum: { definedOnly: true } } } },
            { no: 2, name: "ResourceId", kind: "scalar", jsonName: "ResourceId", T: 9 /*ScalarType.STRING*/, options: { "validate.rules": { string: { minLen: "1" } } } },
            { no: 3, name: "ParentRscId", kind: "scalar", jsonName: "ParentRscId", T: 9 /*ScalarType.STRING*/, options: { "validate.rules": { string: { minLen: "1" } } } }
        ]);
    }
    create(value?: PartialMessage<PropagateRolesOnResourceRequest>): PropagateRolesOnResourceRequest {
        const message = globalThis.Object.create((this.messagePrototype!));
        message.resourceType = 0;
        message.resourceId = "";
        message.parentRscId = "";
        if (value !== undefined)
            reflectionMergePartial<PropagateRolesOnResourceRequest>(this, message, value);
        return message;
    }
    internalBinaryRead(reader: IBinaryReader, length: number, options: BinaryReadOptions, target?: PropagateRolesOnResourceRequest): PropagateRolesOnResourceRequest {
        let message = target ?? this.create(), end = reader.pos + length;
        while (reader.pos < end) {
            let [fieldNo, wireType] = reader.tag();
            switch (fieldNo) {
                case /* api.ResourceType ResourceType = 1 [json_name = "ResourceType"];*/ 1:
                    message.resourceType = reader.int32();
                    break;
                case /* string ResourceId = 2 [json_name = "ResourceId"];*/ 2:
                    message.resourceId = reader.string();
                    break;
                case /* string ParentRscId = 3 [json_name = "ParentRscId"];*/ 3:
                    message.parentRscId = reader.string();
                    break;
                default:
                    let u = options.readUnknownField;
                    if (u === "throw")
                        throw new globalThis.Error(`Unknown field ${fieldNo} (wire type ${wireType}) for ${this.typeName}`);
                    let d = reader.skip(wireType);
                    if (u !== false)
                        (u === true ? UnknownFieldHandler.onRead : u)(this.typeName, message, fieldNo, wireType, d);
            }
        }
        return message;
    }
    internalBinaryWrite(message: PropagateRolesOnResourceRequest, writer: IBinaryWriter, options: BinaryWriteOptions): IBinaryWriter {
        /* api.ResourceType ResourceType = 1 [json_name = "ResourceType"]; */
        if (message.resourceType !== 0)
            writer.tag(1, WireType.Varint).int32(message.resourceType);
        /* string ResourceId = 2 [json_name = "ResourceId"]; */
        if (message.resourceId !== "")
            writer.tag(2, WireType.LengthDelimited).string(message.resourceId);
        /* string ParentRscId = 3 [json_name = "ParentRscId"]; */
        if (message.parentRscId !== "")
            writer.tag(3, WireType.LengthDelimited).string(message.parentRscId);
        let u = options.writeUnknownFields;
        if (u !== false)
            (u == true ? UnknownFieldHandler.onWrite : u)(this.typeName, message, writer);
        return writer;
    }
}
/**
 * @generated MessageType for protobuf message api.PropagateRolesOnResourceRequest
 */
export const PropagateRolesOnResourceRequest = new PropagateRolesOnResourceRequest$Type();
// @generated message type with reflection information, may provide speed optimized methods
class PropagateRolesOnResourceResult$Type extends MessageType<PropagateRolesOnResourceResult> {
    constructor() {
        super("api.PropagateRolesOnResourceResult", []);
    }
    create(value?: PartialMessage<PropagateRolesOnResourceResult>): PropagateRolesOnResourceResult {
        const message = globalThis.Object.create((this.messagePrototype!));
        if (value !== undefined)
            reflectionMergePartial<PropagateRolesOnResourceResult>(this, message, value);
        return message;
    }
    internalBinaryRead(reader: IBinaryReader, length: number, options: BinaryReadOptions, target?: PropagateRolesOnResourceResult): PropagateRolesOnResourceResult {
        let message = target ?? this.create(), end = reader.pos + length;
        while (reader.pos < end) {
            let [fieldNo, wireType] = reader.tag();
            switch (fieldNo) {
                default:
                    let u = options.readUnknownField;
                    if (u === "throw")
                        throw new globalThis.Error(`Unknown field ${fieldNo} (wire type ${wireType}) for ${this.typeName}`);
                    let d = reader.skip(wireType);
                    if (u !== false)
                        (u === true ? UnknownFieldHandler.onRead : u)(this.typeName, message, fieldNo, wireType, d);
            }
        }
        return message;
    }
    internalBinaryWrite(message: PropagateRolesOnResourceResult, writer: IBinaryWriter, options: BinaryWriteOptions): IBinaryWriter {
        let u = options.writeUnknownFields;
        if (u !== false)
            (u == true ? UnknownFieldHandler.onWrite : u)(this.typeName, message, writer);
        return writer;
    }
}
/**
 * @generated MessageType for protobuf message api.PropagateRolesOnResourceResult
 */
export const PropagateRolesOnResourceResult = new PropagateRolesOnResourceResult$Type();
// @generated message type with reflection information, may provide speed optimized methods
class DeleteRolesOnResourceRequest$Type extends MessageType<DeleteRolesOnResourceRequest> {
    constructor() {
        super("api.DeleteRolesOnResourceRequest", [
            { no: 1, name: "ResourceType", kind: "enum", jsonName: "ResourceType", T: () => ["api.ResourceType", ResourceType, "RESOURCE_TYPE_"], options: { "validate.rules": { enum: { definedOnly: true } } } },
            { no: 2, name: "ResourceId", kind: "scalar", jsonName: "ResourceId", T: 9 /*ScalarType.STRING*/, options: { "validate.rules": { string: { minLen: "1" } } } }
        ]);
    }
    create(value?: PartialMessage<DeleteRolesOnResourceRequest>): DeleteRolesOnResourceRequest {
        const message = globalThis.Object.create((this.messagePrototype!));
        message.resourceType = 0;
        message.resourceId = "";
        if (value !== undefined)
            reflectionMergePartial<DeleteRolesOnResourceRequest>(this, message, value);
        return message;
    }
    internalBinaryRead(reader: IBinaryReader, length: number, options: BinaryReadOptions, target?: DeleteRolesOnResourceRequest): DeleteRolesOnResourceRequest {
        let message = target ?? this.create(), end = reader.pos + length;
        while (reader.pos < end) {
            let [fieldNo, wireType] = reader.tag();
            switch (fieldNo) {
                case /* api.ResourceType ResourceType = 1 [json_name = "ResourceType"];*/ 1:
                    message.resourceType = reader.int32();
                    break;
                case /* string ResourceId = 2 [json_name = "ResourceId"];*/ 2:
                    message.resourceId = reader.string();
                    break;
                default:
                    let u = options.readUnknownField;
                    if (u === "throw")
                        throw new globalThis.Error(`Unknown field ${fieldNo} (wire type ${wireType}) for ${this.typeName}`);
                    let d = reader.skip(wireType);
                    if (u !== false)
                        (u === true ? UnknownFieldHandler.onRead : u)(this.typeName, message, fieldNo, wireType, d);
            }
        }
        return message;
    }
    internalBinaryWrite(message: DeleteRolesOnResourceRequest, writer: IBinaryWriter, options: BinaryWriteOptions): IBinaryWriter {
        /* api.ResourceType ResourceType = 1 [json_name = "ResourceType"]; */
        if (message.resourceType !== 0)
            writer.tag(1, WireType.Varint).int32(message.resourceType);
        /* string ResourceId = 2 [json_name = "ResourceId"]; */
        if (message.resourceId !== "")
            writer.tag(2, WireType.LengthDelimited).string(message.resourceId);
        let u = options.writeUnknownFields;
        if (u !== false)
            (u == true ? UnknownFieldHandler.onWrite : u)(this.typeName, message, writer);
        return writer;
    }
}
/**
 * @generated MessageType for protobuf message api.DeleteRolesOnResourceRequest
 */
export const DeleteRolesOnResourceRequest = new DeleteRolesOnResourceRequest$Type();
// @generated message type with reflection information, may provide speed optimized methods
class DeleteRolesOnResourceResult$Type extends MessageType<DeleteRolesOnResourceResult> {
    constructor() {
        super("api.DeleteRolesOnResourceResult", []);
    }
    create(value?: PartialMessage<DeleteRolesOnResourceResult>): DeleteRolesOnResourceResult {
        const message = globalThis.Object.create((this.messagePrototype!));
        if (value !== undefined)
            reflectionMergePartial<DeleteRolesOnResourceResult>(this, message, value);
        return message;
    }
    internalBinaryRead(reader: IBinaryReader, length: number, options: BinaryReadOptions, target?: DeleteRolesOnResourceResult): DeleteRolesOnResourceResult {
        let message = target ?? this.create(), end = reader.pos + length;
        while (reader.pos < end) {
            let [fieldNo, wireType] = reader.tag();
            switch (fieldNo) {
                default:
                    let u = options.readUnknownField;
                    if (u === "throw")
                        throw new globalThis.Error(`Unknown field ${fieldNo} (wire type ${wireType}) for ${this.typeName}`);
                    let d = reader.skip(wireType);
                    if (u !== false)
                        (u === true ? UnknownFieldHandler.onRead : u)(this.typeName, message, fieldNo, wireType, d);
            }
        }
        return message;
    }
    internalBinaryWrite(message: DeleteRolesOnResourceResult, writer: IBinaryWriter, options: BinaryWriteOptions): IBinaryWriter {
        let u = options.writeUnknownFields;
        if (u !== false)
            (u == true ? UnknownFieldHandler.onWrite : u)(this.typeName, message, writer);
        return writer;
    }
}
/**
 * @generated MessageType for protobuf message api.DeleteRolesOnResourceResult
 */
export const DeleteRolesOnResourceResult = new DeleteRolesOnResourceResult$Type();
// @generated message type with reflection information, may provide speed optimized methods
class GetRoleResourceTypesRequest$Type extends MessageType<GetRoleResourceTypesRequest> {
    constructor() {
        super("api.GetRoleResourceTypesRequest", []);
    }
    create(value?: PartialMessage<GetRoleResourceTypesRequest>): GetRoleResourceTypesRequest {
        const message = globalThis.Object.create((this.messagePrototype!));
        if (value !== undefined)
            reflectionMergePartial<GetRoleResourceTypesRequest>(this, message, value);
        return message;
    }
    internalBinaryRead(reader: IBinaryReader, length: number, options: BinaryReadOptions, target?: GetRoleResourceTypesRequest): GetRoleResourceTypesRequest {
        let message = target ?? this.create(), end = reader.pos + length;
        while (reader.pos < end) {
            let [fieldNo, wireType] = reader.tag();
            switch (fieldNo) {
                default:
                    let u = options.readUnknownField;
                    if (u === "throw")
                        throw new globalThis.Error(`Unknown field ${fieldNo} (wire type ${wireType}) for ${this.typeName}`);
                    let d = reader.skip(wireType);
                    if (u !== false)
                        (u === true ? UnknownFieldHandler.onRead : u)(this.typeName, message, fieldNo, wireType, d);
            }
        }
        return message;
    }
    internalBinaryWrite(message: GetRoleResourceTypesRequest, writer: IBinaryWriter, options: BinaryWriteOptions): IBinaryWriter {
        let u = options.writeUnknownFields;
        if (u !== false)
            (u == true ? UnknownFieldHandler.onWrite : u)(this.typeName, message, writer);
        return writer;
    }
}
/**
 * @generated MessageType for protobuf message api.GetRoleResourceTypesRequest
 */
export const GetRoleResourceTypesRequest = new GetRoleResourceTypesRequest$Type();
// @generated message type with reflection information, may provide speed optimized methods
class GetRoleResourceTypesResult$Type extends MessageType<GetRoleResourceTypesResult> {
    constructor() {
        super("api.GetRoleResourceTypesResult", [
            { no: 1, name: "ResourceTypes", kind: "enum", jsonName: "ResourceTypes", repeat: 1 /*RepeatType.PACKED*/, T: () => ["api.ResourceType", ResourceType, "RESOURCE_TYPE_"] }
        ]);
    }
    create(value?: PartialMessage<GetRoleResourceTypesResult>): GetRoleResourceTypesResult {
        const message = globalThis.Object.create((this.messagePrototype!));
        message.resourceTypes = [];
        if (value !== undefined)
            reflectionMergePartial<GetRoleResourceTypesResult>(this, message, value);
        return message;
    }
    internalBinaryRead(reader: IBinaryReader, length: number, options: BinaryReadOptions, target?: GetRoleResourceTypesResult): GetRoleResourceTypesResult {
        let message = target ?? this.create(), end = reader.pos + length;
        while (reader.pos < end) {
            let [fieldNo, wireType] = reader.tag();
            switch (fieldNo) {
                case /* repeated api.ResourceType ResourceTypes = 1 [json_name = "ResourceTypes"];*/ 1:
                    if (wireType === WireType.LengthDelimited)
                        for (let e = reader.int32() + reader.pos; reader.pos < e;)
                            message.resourceTypes.push(reader.int32());
                    else
                        message.resourceTypes.push(reader.int32());
                    break;
                default:
                    let u = options.readUnknownField;
                    if (u === "throw")
                        throw new globalThis.Error(`Unknown field ${fieldNo} (wire type ${wireType}) for ${this.typeName}`);
                    let d = reader.skip(wireType);
                    if (u !== false)
                        (u === true ? UnknownFieldHandler.onRead : u)(this.typeName, message, fieldNo, wireType, d);
            }
        }
        return message;
    }
    internalBinaryWrite(message: GetRoleResourceTypesResult, writer: IBinaryWriter, options: BinaryWriteOptions): IBinaryWriter {
        /* repeated api.ResourceType ResourceTypes = 1 [json_name = "ResourceTypes"]; */
        if (message.resourceTypes.length) {
            writer.tag(1, WireType.LengthDelimited).fork();
            for (let i = 0; i < message.resourceTypes.length; i++)
                writer.int32(message.resourceTypes[i]);
            writer.join();
        }
        let u = options.writeUnknownFields;
        if (u !== false)
            (u == true ? UnknownFieldHandler.onWrite : u)(this.typeName, message, writer);
        return writer;
    }
}
/**
 * @generated MessageType for protobuf message api.GetRoleResourceTypesResult
 */
export const GetRoleResourceTypesResult = new GetRoleResourceTypesResult$Type();
/**
 * @generated ServiceType for protobuf service api.RoleService
 */
export const RoleService = new ServiceType("api.RoleService", [
    { name: "CreatePlatformRole", options: { "grpc.gateway.protoc_gen_openapiv2.options.openapiv2_operation": { tags: ["Roles"], description: "Create Platform role" }, "api.rscType": "Platform", "api.roles": "Platform.Role", "google.api.method_visibility": { restriction: "SDK" } }, I: CreatePlatformRoleRequest, O: CreatePlatformRoleResult },
    { name: "CreateOrganisationRole", options: { "grpc.gateway.protoc_gen_openapiv2.options.openapiv2_operation": { tags: ["Roles"], description: "Create Organisation role" }, "api.rscType": "Organisation", "api.roles": "Platform.Organisation-Role", "google.api.method_visibility": { restriction: "SDK" } }, I: CreateOrganisationRoleRequest, O: CreateOrganisationRoleResult },
    { name: "CreateProjectRole", options: { "grpc.gateway.protoc_gen_openapiv2.options.openapiv2_operation": { tags: ["Roles"], description: "Create Project role" }, "api.rscType": "Project", "api.roles": "Platform.Project-Role", "google.api.method_visibility": { restriction: "SDK" } }, I: CreateProjectRoleRequest, O: CreateProjectRoleResult },
    { name: "UpdatePlatformRole", options: { "grpc.gateway.protoc_gen_openapiv2.options.openapiv2_operation": { tags: ["Roles"], description: "Update Platform role" }, "api.rscType": "Platform", "api.roles": "Platform.Role", "google.api.method_visibility": { restriction: "SDK" } }, I: UpdatePlatformRoleRequest, O: UpdatePlatformRoleResult },
    { name: "UpdateOrganisationRole", options: { "grpc.gateway.protoc_gen_openapiv2.options.openapiv2_operation": { tags: ["Roles"], description: "Update Organisation role" }, "api.rscType": "Organisation", "api.roles": "Platform.Organisation-Role", "google.api.method_visibility": { restriction: "SDK" } }, I: UpdateOrganisationRoleRequest, O: UpdateOrganisationRoleResult },
    { name: "UpdateProjectRole", options: { "grpc.gateway.protoc_gen_openapiv2.options.openapiv2_operation": { tags: ["Roles"], description: "Update Project role" }, "api.rscType": "Project", "api.roles": "Platform.Project-Role", "google.api.method_visibility": { restriction: "SDK" } }, I: UpdateProjectRoleRequest, O: UpdateProjectRoleResult },
    { name: "DeleteAllPlatformRoles", options: { "grpc.gateway.protoc_gen_openapiv2.options.openapiv2_operation": { tags: ["Roles"], description: "Delete all Platform roles" }, "api.rscType": "Platform", "api.roles": "Platform.Role", "google.api.method_visibility": { restriction: "INTERNAL" } }, I: DeleteAllPlatformRolesRequest, O: DeleteAllPlatformRolesResult },
    { name: "DeletePlatformRole", options: { "grpc.gateway.protoc_gen_openapiv2.options.openapiv2_operation": { tags: ["Roles"], description: "Delete Platform role" }, "api.rscType": "Platform", "api.roles": "Platform.Role", "google.api.method_visibility": { restriction: "SDK" } }, I: DeletePlatformRoleRequest, O: DeletePlatformRoleResult },
    { name: "DeleteOrganisationRole", options: { "grpc.gateway.protoc_gen_openapiv2.options.openapiv2_operation": { tags: ["Roles"], description: "Delete Organisation role" }, "api.rscType": "Organisation", "api.roles": "Platform.Organisation-Role", "google.api.method_visibility": { restriction: "SDK" } }, I: DeleteOrganisationRoleRequest, O: DeleteOrganisationRoleResult },
    { name: "DeleteProjectRole", options: { "grpc.gateway.protoc_gen_openapiv2.options.openapiv2_operation": { tags: ["Roles"], description: "Delete Project role" }, "api.rscType": "Project", "api.roles": "Platform.Project-Role", "google.api.method_visibility": { restriction: "SDK" } }, I: DeleteProjectRoleRequest, O: DeleteProjectRoleResult },
    { name: "GetPlatformRole", options: { "grpc.gateway.protoc_gen_openapiv2.options.openapiv2_operation": { tags: ["Roles"], description: "Get Platform role" }, "api.rscType": "Platform", "api.roles": "Platform.Role", "google.api.method_visibility": { restriction: "SDK" } }, I: GetPlatformRoleRequest, O: GetPlatformRoleResult },
    { name: "GetOrganisationRole", options: { "grpc.gateway.protoc_gen_openapiv2.options.openapiv2_operation": { tags: ["Roles"], description: "Get Organisation role" }, "api.rscType": "Organisation", "api.roles": "Platform.Organisation-Role", "google.api.method_visibility": { restriction: "SDK" } }, I: GetOrganisationRoleRequest, O: GetOrganisationRoleResult },
    { name: "GetProjectRole", options: { "grpc.gateway.protoc_gen_openapiv2.options.openapiv2_operation": { tags: ["Roles"], description: "Get Project role" }, "api.rscType": "Project", "api.roles": "Platform.Project-Role", "google.api.method_visibility": { restriction: "SDK" } }, I: GetProjectRoleRequest, O: GetProjectRoleResult },
    { name: "ListPlatformRoles", options: { "grpc.gateway.protoc_gen_openapiv2.options.openapiv2_operation": { tags: ["Roles"], description: "List Platform role" }, "api.rscType": "Platform", "api.roles": "Platform.Role", "google.api.method_visibility": { restriction: "SDK" } }, I: ListPlatformRolesRequest, O: ListPlatformRolesResult },
    { name: "ListOrganisationRoles", options: { "grpc.gateway.protoc_gen_openapiv2.options.openapiv2_operation": { tags: ["Roles"], description: "List Organisation role" }, "api.rscType": "Organisation", "api.roles": "Platform.Organisation-Role", "google.api.method_visibility": { restriction: "SDK" } }, I: ListOrganisationRolesRequest, O: ListOrganisationRolesResult },
    { name: "ListProjectRoles", options: { "grpc.gateway.protoc_gen_openapiv2.options.openapiv2_operation": { tags: ["Roles"], description: "List Project role" }, "api.rscType": "Project", "api.roles": "Platform.Project-Role", "google.api.method_visibility": { restriction: "SDK" } }, I: ListProjectRolesRequest, O: ListProjectRolesResult },
    { name: "PutRoleExternalPermissions", options: { "grpc.gateway.protoc_gen_openapiv2.options.openapiv2_operation": { tags: ["Roles"], description: "Put external permissions on role" }, "api.rscType": "Platform", "api.roles": "Platform.Role", "google.api.method_visibility": { restriction: "INTERNAL" } }, I: PutRoleExternalPermissionsRequest, O: PutRoleExternalPermissionsResult },
    { name: "DeleteRoleExternalPermissions", options: { "grpc.gateway.protoc_gen_openapiv2.options.openapiv2_operation": { tags: ["Roles"], description: "Delete external permissions on role" }, "api.rscType": "Platform", "api.roles": "Platform.Role", "google.api.method_visibility": { restriction: "INTERNAL" } }, I: DeleteRoleExternalPermissionsRequest, O: DeleteRoleExternalPermissionsResult },
    { name: "PropagateRolesOnResource", options: { "grpc.gateway.protoc_gen_openapiv2.options.openapiv2_operation": { tags: ["Roles"], description: "Propagate roles on resource" }, "api.rscType": "Platform", "api.roles": "Platform.Role", "google.api.method_visibility": { restriction: "INTERNAL" } }, I: PropagateRolesOnResourceRequest, O: PropagateRolesOnResourceResult },
    { name: "DeleteRolesOnResource", options: { "grpc.gateway.protoc_gen_openapiv2.options.openapiv2_operation": { tags: ["Roles"], description: "Delete roles on resource" }, "api.rscType": "Platform", "api.roles": "Platform.Role", "google.api.method_visibility": { restriction: "INTERNAL" } }, I: DeleteRolesOnResourceRequest, O: DeleteRolesOnResourceResult },
    { name: "GetRoleResourceTypes", options: { "grpc.gateway.protoc_gen_openapiv2.options.openapiv2_operation": { tags: ["Roles"], description: "Get available role resource types" }, "api.rscType": "Platform", "api.roles": "", "google.api.method_visibility": { restriction: "INTERNAL" } }, I: GetRoleResourceTypesRequest, O: GetRoleResourceTypesResult }
], { "api.k8sService": "authorization-server", "api.roleManager": true, "api.resourceManager": true });
