// @generated by protobuf-ts 2.9.6
// @generated from protobuf file "user-attributes.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 { RequestProjectHeader } from "./shared";
/**
 * @generated from protobuf message api.UserAttribute
 */
export interface UserAttribute {
    /**
     * @generated from protobuf field: string ProjectID = 1 [json_name = "ProjectID"];
     */
    projectID: string;
    /**
     * @generated from protobuf field: string UserID = 2 [json_name = "UserID"];
     */
    userID: string;
    /**
     * @generated from protobuf field: string PartnerID = 3 [json_name = "PartnerID"];
     */
    partnerID: string;
    /**
     * @generated from protobuf field: repeated api.RestrictionActorIDs RestrictionActorIDs = 4 [json_name = "RestrictionActorIDs"];
     */
    restrictionActorIDs: RestrictionActorIDs[];
}
/**
 * @generated from protobuf message api.RestrictionActorIDs
 */
export interface RestrictionActorIDs {
    /**
     * @generated from protobuf field: string RestrictionID = 1 [json_name = "RestrictionID"];
     */
    restrictionID: string;
    /**
     * @generated from protobuf field: repeated string ActorIDs = 2 [json_name = "ActorIDs"];
     */
    actorIDs: string[];
}
/**
 * @generated from protobuf message api.GetUserAttributesRequest
 */
export interface GetUserAttributesRequest {
    /**
     * @generated from protobuf field: api.RequestProjectHeader Header = 1 [json_name = "Header"];
     */
    header?: RequestProjectHeader;
    /**
     * @generated from protobuf field: string UserID = 2 [json_name = "UserID"];
     */
    userID: string;
}
/**
 * @generated from protobuf message api.GetUserAttributesResult
 */
export interface GetUserAttributesResult {
    /**
     * @generated from protobuf field: api.UserAttribute UserAttribute = 1 [json_name = "UserAttribute"];
     */
    userAttribute?: UserAttribute;
}
/**
 * @generated from protobuf message api.PutUserAttributesRequest
 */
export interface PutUserAttributesRequest {
    /**
     * @generated from protobuf field: api.RequestProjectHeader Header = 1 [json_name = "Header"];
     */
    header?: RequestProjectHeader;
    /**
     * @generated from protobuf field: string UserID = 2 [json_name = "UserID"];
     */
    userID: string;
    /**
     * @generated from protobuf field: string PartnerID = 3 [json_name = "PartnerID"];
     */
    partnerID: string;
    /**
     * @generated from protobuf field: repeated api.RestrictionActorIDs RestrictionActorIDs = 4 [json_name = "RestrictionActorIDs"];
     */
    restrictionActorIDs: RestrictionActorIDs[];
}
/**
 * @generated from protobuf message api.PutUserAttributesResult
 */
export interface PutUserAttributesResult {
    /**
     * @generated from protobuf field: api.UserAttribute UserAttribute = 1 [json_name = "UserAttribute"];
     */
    userAttribute?: UserAttribute;
}
/**
 * @generated from protobuf message api.DeleteUserAttributesRequest
 */
export interface DeleteUserAttributesRequest {
    /**
     * @generated from protobuf field: api.RequestProjectHeader Header = 1 [json_name = "Header"];
     */
    header?: RequestProjectHeader;
    /**
     * @generated from protobuf field: string UserID = 2 [json_name = "UserID"];
     */
    userID: string;
}
/**
 * @generated from protobuf message api.DeleteUserAttributesResult
 */
export interface DeleteUserAttributesResult {
}
/**
 * @generated from protobuf message api.ListUserAttributesRequest
 */
export interface ListUserAttributesRequest {
    /**
     * @generated from protobuf field: api.RequestProjectHeader Header = 1 [json_name = "Header"];
     */
    header?: RequestProjectHeader;
    /**
     * @generated from protobuf field: string PartnerID = 2 [json_name = "PartnerID"];
     */
    partnerID: string;
}
/**
 * @generated from protobuf message api.ListUserAttributesResult
 */
export interface ListUserAttributesResult {
    /**
     * @generated from protobuf field: repeated api.UserAttribute UserAttributes = 1 [json_name = "UserAttributes"];
     */
    userAttributes: UserAttribute[];
}
/**
 * @generated from protobuf message api.DeleteForProjectUserAttributesRequest
 */
export interface DeleteForProjectUserAttributesRequest {
    /**
     * @generated from protobuf field: api.RequestProjectHeader Header = 1 [json_name = "Header"];
     */
    header?: RequestProjectHeader;
}
/**
 * @generated from protobuf message api.DeleteForProjectUserAttributesResult
 */
export interface DeleteForProjectUserAttributesResult {
}
// @generated message type with reflection information, may provide speed optimized methods
class UserAttribute$Type extends MessageType<UserAttribute> {
    constructor() {
        super("api.UserAttribute", [
            { no: 1, name: "ProjectID", kind: "scalar", jsonName: "ProjectID", T: 9 /*ScalarType.STRING*/ },
            { no: 2, name: "UserID", kind: "scalar", jsonName: "UserID", T: 9 /*ScalarType.STRING*/ },
            { no: 3, name: "PartnerID", kind: "scalar", jsonName: "PartnerID", T: 9 /*ScalarType.STRING*/ },
            { no: 4, name: "RestrictionActorIDs", kind: "message", jsonName: "RestrictionActorIDs", repeat: 1 /*RepeatType.PACKED*/, T: () => RestrictionActorIDs }
        ]);
    }
    create(value?: PartialMessage<UserAttribute>): UserAttribute {
        const message = globalThis.Object.create((this.messagePrototype!));
        message.projectID = "";
        message.userID = "";
        message.partnerID = "";
        message.restrictionActorIDs = [];
        if (value !== undefined)
            reflectionMergePartial<UserAttribute>(this, message, value);
        return message;
    }
    internalBinaryRead(reader: IBinaryReader, length: number, options: BinaryReadOptions, target?: UserAttribute): UserAttribute {
        let message = target ?? this.create(), end = reader.pos + length;
        while (reader.pos < end) {
            let [fieldNo, wireType] = reader.tag();
            switch (fieldNo) {
                case /* string ProjectID = 1 [json_name = "ProjectID"];*/ 1:
                    message.projectID = reader.string();
                    break;
                case /* string UserID = 2 [json_name = "UserID"];*/ 2:
                    message.userID = reader.string();
                    break;
                case /* string PartnerID = 3 [json_name = "PartnerID"];*/ 3:
                    message.partnerID = reader.string();
                    break;
                case /* repeated api.RestrictionActorIDs RestrictionActorIDs = 4 [json_name = "RestrictionActorIDs"];*/ 4:
                    message.restrictionActorIDs.push(RestrictionActorIDs.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: UserAttribute, writer: IBinaryWriter, options: BinaryWriteOptions): IBinaryWriter {
        /* string ProjectID = 1 [json_name = "ProjectID"]; */
        if (message.projectID !== "")
            writer.tag(1, WireType.LengthDelimited).string(message.projectID);
        /* string UserID = 2 [json_name = "UserID"]; */
        if (message.userID !== "")
            writer.tag(2, WireType.LengthDelimited).string(message.userID);
        /* string PartnerID = 3 [json_name = "PartnerID"]; */
        if (message.partnerID !== "")
            writer.tag(3, WireType.LengthDelimited).string(message.partnerID);
        /* repeated api.RestrictionActorIDs RestrictionActorIDs = 4 [json_name = "RestrictionActorIDs"]; */
        for (let i = 0; i < message.restrictionActorIDs.length; i++)
            RestrictionActorIDs.internalBinaryWrite(message.restrictionActorIDs[i], writer.tag(4, 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.UserAttribute
 */
export const UserAttribute = new UserAttribute$Type();
// @generated message type with reflection information, may provide speed optimized methods
class RestrictionActorIDs$Type extends MessageType<RestrictionActorIDs> {
    constructor() {
        super("api.RestrictionActorIDs", [
            { no: 1, name: "RestrictionID", kind: "scalar", jsonName: "RestrictionID", T: 9 /*ScalarType.STRING*/ },
            { no: 2, name: "ActorIDs", kind: "scalar", jsonName: "ActorIDs", repeat: 2 /*RepeatType.UNPACKED*/, T: 9 /*ScalarType.STRING*/ }
        ]);
    }
    create(value?: PartialMessage<RestrictionActorIDs>): RestrictionActorIDs {
        const message = globalThis.Object.create((this.messagePrototype!));
        message.restrictionID = "";
        message.actorIDs = [];
        if (value !== undefined)
            reflectionMergePartial<RestrictionActorIDs>(this, message, value);
        return message;
    }
    internalBinaryRead(reader: IBinaryReader, length: number, options: BinaryReadOptions, target?: RestrictionActorIDs): RestrictionActorIDs {
        let message = target ?? this.create(), end = reader.pos + length;
        while (reader.pos < end) {
            let [fieldNo, wireType] = reader.tag();
            switch (fieldNo) {
                case /* string RestrictionID = 1 [json_name = "RestrictionID"];*/ 1:
                    message.restrictionID = reader.string();
                    break;
                case /* repeated string ActorIDs = 2 [json_name = "ActorIDs"];*/ 2:
                    message.actorIDs.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: RestrictionActorIDs, writer: IBinaryWriter, options: BinaryWriteOptions): IBinaryWriter {
        /* string RestrictionID = 1 [json_name = "RestrictionID"]; */
        if (message.restrictionID !== "")
            writer.tag(1, WireType.LengthDelimited).string(message.restrictionID);
        /* repeated string ActorIDs = 2 [json_name = "ActorIDs"]; */
        for (let i = 0; i < message.actorIDs.length; i++)
            writer.tag(2, WireType.LengthDelimited).string(message.actorIDs[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.RestrictionActorIDs
 */
export const RestrictionActorIDs = new RestrictionActorIDs$Type();
// @generated message type with reflection information, may provide speed optimized methods
class GetUserAttributesRequest$Type extends MessageType<GetUserAttributesRequest> {
    constructor() {
        super("api.GetUserAttributesRequest", [
            { no: 1, name: "Header", kind: "message", jsonName: "Header", T: () => RequestProjectHeader, options: { "validate.rules": { message: { required: true } } } },
            { no: 2, name: "UserID", kind: "scalar", jsonName: "UserID", T: 9 /*ScalarType.STRING*/, options: { "validate.rules": { string: { minLen: "1" } } } }
        ], { "grpc.gateway.protoc_gen_openapiv2.options.openapiv2_schema": { jsonSchema: { required: ["Header", "UserID"] } } });
    }
    create(value?: PartialMessage<GetUserAttributesRequest>): GetUserAttributesRequest {
        const message = globalThis.Object.create((this.messagePrototype!));
        message.userID = "";
        if (value !== undefined)
            reflectionMergePartial<GetUserAttributesRequest>(this, message, value);
        return message;
    }
    internalBinaryRead(reader: IBinaryReader, length: number, options: BinaryReadOptions, target?: GetUserAttributesRequest): GetUserAttributesRequest {
        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 UserID = 2 [json_name = "UserID"];*/ 2:
                    message.userID = 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: GetUserAttributesRequest, 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 UserID = 2 [json_name = "UserID"]; */
        if (message.userID !== "")
            writer.tag(2, WireType.LengthDelimited).string(message.userID);
        let u = options.writeUnknownFields;
        if (u !== false)
            (u == true ? UnknownFieldHandler.onWrite : u)(this.typeName, message, writer);
        return writer;
    }
}
/**
 * @generated MessageType for protobuf message api.GetUserAttributesRequest
 */
export const GetUserAttributesRequest = new GetUserAttributesRequest$Type();
// @generated message type with reflection information, may provide speed optimized methods
class GetUserAttributesResult$Type extends MessageType<GetUserAttributesResult> {
    constructor() {
        super("api.GetUserAttributesResult", [
            { no: 1, name: "UserAttribute", kind: "message", jsonName: "UserAttribute", T: () => UserAttribute }
        ]);
    }
    create(value?: PartialMessage<GetUserAttributesResult>): GetUserAttributesResult {
        const message = globalThis.Object.create((this.messagePrototype!));
        if (value !== undefined)
            reflectionMergePartial<GetUserAttributesResult>(this, message, value);
        return message;
    }
    internalBinaryRead(reader: IBinaryReader, length: number, options: BinaryReadOptions, target?: GetUserAttributesResult): GetUserAttributesResult {
        let message = target ?? this.create(), end = reader.pos + length;
        while (reader.pos < end) {
            let [fieldNo, wireType] = reader.tag();
            switch (fieldNo) {
                case /* api.UserAttribute UserAttribute = 1 [json_name = "UserAttribute"];*/ 1:
                    message.userAttribute = UserAttribute.internalBinaryRead(reader, reader.uint32(), options, message.userAttribute);
                    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: GetUserAttributesResult, writer: IBinaryWriter, options: BinaryWriteOptions): IBinaryWriter {
        /* api.UserAttribute UserAttribute = 1 [json_name = "UserAttribute"]; */
        if (message.userAttribute)
            UserAttribute.internalBinaryWrite(message.userAttribute, 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.GetUserAttributesResult
 */
export const GetUserAttributesResult = new GetUserAttributesResult$Type();
// @generated message type with reflection information, may provide speed optimized methods
class PutUserAttributesRequest$Type extends MessageType<PutUserAttributesRequest> {
    constructor() {
        super("api.PutUserAttributesRequest", [
            { no: 1, name: "Header", kind: "message", jsonName: "Header", T: () => RequestProjectHeader, options: { "validate.rules": { message: { required: true } } } },
            { no: 2, name: "UserID", kind: "scalar", jsonName: "UserID", T: 9 /*ScalarType.STRING*/, options: { "validate.rules": { string: { minLen: "1" } } } },
            { no: 3, name: "PartnerID", kind: "scalar", jsonName: "PartnerID", T: 9 /*ScalarType.STRING*/ },
            { no: 4, name: "RestrictionActorIDs", kind: "message", jsonName: "RestrictionActorIDs", repeat: 1 /*RepeatType.PACKED*/, T: () => RestrictionActorIDs }
        ], { "grpc.gateway.protoc_gen_openapiv2.options.openapiv2_schema": { jsonSchema: { required: ["Header", "UserID", "PartnerID"] } } });
    }
    create(value?: PartialMessage<PutUserAttributesRequest>): PutUserAttributesRequest {
        const message = globalThis.Object.create((this.messagePrototype!));
        message.userID = "";
        message.partnerID = "";
        message.restrictionActorIDs = [];
        if (value !== undefined)
            reflectionMergePartial<PutUserAttributesRequest>(this, message, value);
        return message;
    }
    internalBinaryRead(reader: IBinaryReader, length: number, options: BinaryReadOptions, target?: PutUserAttributesRequest): PutUserAttributesRequest {
        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 UserID = 2 [json_name = "UserID"];*/ 2:
                    message.userID = reader.string();
                    break;
                case /* string PartnerID = 3 [json_name = "PartnerID"];*/ 3:
                    message.partnerID = reader.string();
                    break;
                case /* repeated api.RestrictionActorIDs RestrictionActorIDs = 4 [json_name = "RestrictionActorIDs"];*/ 4:
                    message.restrictionActorIDs.push(RestrictionActorIDs.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: PutUserAttributesRequest, 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 UserID = 2 [json_name = "UserID"]; */
        if (message.userID !== "")
            writer.tag(2, WireType.LengthDelimited).string(message.userID);
        /* string PartnerID = 3 [json_name = "PartnerID"]; */
        if (message.partnerID !== "")
            writer.tag(3, WireType.LengthDelimited).string(message.partnerID);
        /* repeated api.RestrictionActorIDs RestrictionActorIDs = 4 [json_name = "RestrictionActorIDs"]; */
        for (let i = 0; i < message.restrictionActorIDs.length; i++)
            RestrictionActorIDs.internalBinaryWrite(message.restrictionActorIDs[i], writer.tag(4, 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.PutUserAttributesRequest
 */
export const PutUserAttributesRequest = new PutUserAttributesRequest$Type();
// @generated message type with reflection information, may provide speed optimized methods
class PutUserAttributesResult$Type extends MessageType<PutUserAttributesResult> {
    constructor() {
        super("api.PutUserAttributesResult", [
            { no: 1, name: "UserAttribute", kind: "message", jsonName: "UserAttribute", T: () => UserAttribute }
        ]);
    }
    create(value?: PartialMessage<PutUserAttributesResult>): PutUserAttributesResult {
        const message = globalThis.Object.create((this.messagePrototype!));
        if (value !== undefined)
            reflectionMergePartial<PutUserAttributesResult>(this, message, value);
        return message;
    }
    internalBinaryRead(reader: IBinaryReader, length: number, options: BinaryReadOptions, target?: PutUserAttributesResult): PutUserAttributesResult {
        let message = target ?? this.create(), end = reader.pos + length;
        while (reader.pos < end) {
            let [fieldNo, wireType] = reader.tag();
            switch (fieldNo) {
                case /* api.UserAttribute UserAttribute = 1 [json_name = "UserAttribute"];*/ 1:
                    message.userAttribute = UserAttribute.internalBinaryRead(reader, reader.uint32(), options, message.userAttribute);
                    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: PutUserAttributesResult, writer: IBinaryWriter, options: BinaryWriteOptions): IBinaryWriter {
        /* api.UserAttribute UserAttribute = 1 [json_name = "UserAttribute"]; */
        if (message.userAttribute)
            UserAttribute.internalBinaryWrite(message.userAttribute, 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.PutUserAttributesResult
 */
export const PutUserAttributesResult = new PutUserAttributesResult$Type();
// @generated message type with reflection information, may provide speed optimized methods
class DeleteUserAttributesRequest$Type extends MessageType<DeleteUserAttributesRequest> {
    constructor() {
        super("api.DeleteUserAttributesRequest", [
            { no: 1, name: "Header", kind: "message", jsonName: "Header", T: () => RequestProjectHeader, options: { "validate.rules": { message: { required: true } } } },
            { no: 2, name: "UserID", kind: "scalar", jsonName: "UserID", T: 9 /*ScalarType.STRING*/, options: { "validate.rules": { string: { minLen: "1" } } } }
        ], { "grpc.gateway.protoc_gen_openapiv2.options.openapiv2_schema": { jsonSchema: { required: ["Header", "UserID"] } } });
    }
    create(value?: PartialMessage<DeleteUserAttributesRequest>): DeleteUserAttributesRequest {
        const message = globalThis.Object.create((this.messagePrototype!));
        message.userID = "";
        if (value !== undefined)
            reflectionMergePartial<DeleteUserAttributesRequest>(this, message, value);
        return message;
    }
    internalBinaryRead(reader: IBinaryReader, length: number, options: BinaryReadOptions, target?: DeleteUserAttributesRequest): DeleteUserAttributesRequest {
        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 UserID = 2 [json_name = "UserID"];*/ 2:
                    message.userID = 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: DeleteUserAttributesRequest, 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 UserID = 2 [json_name = "UserID"]; */
        if (message.userID !== "")
            writer.tag(2, WireType.LengthDelimited).string(message.userID);
        let u = options.writeUnknownFields;
        if (u !== false)
            (u == true ? UnknownFieldHandler.onWrite : u)(this.typeName, message, writer);
        return writer;
    }
}
/**
 * @generated MessageType for protobuf message api.DeleteUserAttributesRequest
 */
export const DeleteUserAttributesRequest = new DeleteUserAttributesRequest$Type();
// @generated message type with reflection information, may provide speed optimized methods
class DeleteUserAttributesResult$Type extends MessageType<DeleteUserAttributesResult> {
    constructor() {
        super("api.DeleteUserAttributesResult", []);
    }
    create(value?: PartialMessage<DeleteUserAttributesResult>): DeleteUserAttributesResult {
        const message = globalThis.Object.create((this.messagePrototype!));
        if (value !== undefined)
            reflectionMergePartial<DeleteUserAttributesResult>(this, message, value);
        return message;
    }
    internalBinaryRead(reader: IBinaryReader, length: number, options: BinaryReadOptions, target?: DeleteUserAttributesResult): DeleteUserAttributesResult {
        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: DeleteUserAttributesResult, 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.DeleteUserAttributesResult
 */
export const DeleteUserAttributesResult = new DeleteUserAttributesResult$Type();
// @generated message type with reflection information, may provide speed optimized methods
class ListUserAttributesRequest$Type extends MessageType<ListUserAttributesRequest> {
    constructor() {
        super("api.ListUserAttributesRequest", [
            { no: 1, name: "Header", kind: "message", jsonName: "Header", T: () => RequestProjectHeader, options: { "validate.rules": { message: { required: true } } } },
            { no: 2, name: "PartnerID", kind: "scalar", jsonName: "PartnerID", T: 9 /*ScalarType.STRING*/ }
        ], { "grpc.gateway.protoc_gen_openapiv2.options.openapiv2_schema": { jsonSchema: { required: ["Header"] } } });
    }
    create(value?: PartialMessage<ListUserAttributesRequest>): ListUserAttributesRequest {
        const message = globalThis.Object.create((this.messagePrototype!));
        message.partnerID = "";
        if (value !== undefined)
            reflectionMergePartial<ListUserAttributesRequest>(this, message, value);
        return message;
    }
    internalBinaryRead(reader: IBinaryReader, length: number, options: BinaryReadOptions, target?: ListUserAttributesRequest): ListUserAttributesRequest {
        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 PartnerID = 2 [json_name = "PartnerID"];*/ 2:
                    message.partnerID = 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: ListUserAttributesRequest, 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 PartnerID = 2 [json_name = "PartnerID"]; */
        if (message.partnerID !== "")
            writer.tag(2, WireType.LengthDelimited).string(message.partnerID);
        let u = options.writeUnknownFields;
        if (u !== false)
            (u == true ? UnknownFieldHandler.onWrite : u)(this.typeName, message, writer);
        return writer;
    }
}
/**
 * @generated MessageType for protobuf message api.ListUserAttributesRequest
 */
export const ListUserAttributesRequest = new ListUserAttributesRequest$Type();
// @generated message type with reflection information, may provide speed optimized methods
class ListUserAttributesResult$Type extends MessageType<ListUserAttributesResult> {
    constructor() {
        super("api.ListUserAttributesResult", [
            { no: 1, name: "UserAttributes", kind: "message", jsonName: "UserAttributes", repeat: 1 /*RepeatType.PACKED*/, T: () => UserAttribute }
        ]);
    }
    create(value?: PartialMessage<ListUserAttributesResult>): ListUserAttributesResult {
        const message = globalThis.Object.create((this.messagePrototype!));
        message.userAttributes = [];
        if (value !== undefined)
            reflectionMergePartial<ListUserAttributesResult>(this, message, value);
        return message;
    }
    internalBinaryRead(reader: IBinaryReader, length: number, options: BinaryReadOptions, target?: ListUserAttributesResult): ListUserAttributesResult {
        let message = target ?? this.create(), end = reader.pos + length;
        while (reader.pos < end) {
            let [fieldNo, wireType] = reader.tag();
            switch (fieldNo) {
                case /* repeated api.UserAttribute UserAttributes = 1 [json_name = "UserAttributes"];*/ 1:
                    message.userAttributes.push(UserAttribute.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: ListUserAttributesResult, writer: IBinaryWriter, options: BinaryWriteOptions): IBinaryWriter {
        /* repeated api.UserAttribute UserAttributes = 1 [json_name = "UserAttributes"]; */
        for (let i = 0; i < message.userAttributes.length; i++)
            UserAttribute.internalBinaryWrite(message.userAttributes[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.ListUserAttributesResult
 */
export const ListUserAttributesResult = new ListUserAttributesResult$Type();
// @generated message type with reflection information, may provide speed optimized methods
class DeleteForProjectUserAttributesRequest$Type extends MessageType<DeleteForProjectUserAttributesRequest> {
    constructor() {
        super("api.DeleteForProjectUserAttributesRequest", [
            { no: 1, name: "Header", kind: "message", jsonName: "Header", T: () => RequestProjectHeader, options: { "validate.rules": { message: { required: true } } } }
        ], { "grpc.gateway.protoc_gen_openapiv2.options.openapiv2_schema": { jsonSchema: { required: ["Header"] } } });
    }
    create(value?: PartialMessage<DeleteForProjectUserAttributesRequest>): DeleteForProjectUserAttributesRequest {
        const message = globalThis.Object.create((this.messagePrototype!));
        if (value !== undefined)
            reflectionMergePartial<DeleteForProjectUserAttributesRequest>(this, message, value);
        return message;
    }
    internalBinaryRead(reader: IBinaryReader, length: number, options: BinaryReadOptions, target?: DeleteForProjectUserAttributesRequest): DeleteForProjectUserAttributesRequest {
        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;
                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: DeleteForProjectUserAttributesRequest, 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();
        let u = options.writeUnknownFields;
        if (u !== false)
            (u == true ? UnknownFieldHandler.onWrite : u)(this.typeName, message, writer);
        return writer;
    }
}
/**
 * @generated MessageType for protobuf message api.DeleteForProjectUserAttributesRequest
 */
export const DeleteForProjectUserAttributesRequest = new DeleteForProjectUserAttributesRequest$Type();
// @generated message type with reflection information, may provide speed optimized methods
class DeleteForProjectUserAttributesResult$Type extends MessageType<DeleteForProjectUserAttributesResult> {
    constructor() {
        super("api.DeleteForProjectUserAttributesResult", []);
    }
    create(value?: PartialMessage<DeleteForProjectUserAttributesResult>): DeleteForProjectUserAttributesResult {
        const message = globalThis.Object.create((this.messagePrototype!));
        if (value !== undefined)
            reflectionMergePartial<DeleteForProjectUserAttributesResult>(this, message, value);
        return message;
    }
    internalBinaryRead(reader: IBinaryReader, length: number, options: BinaryReadOptions, target?: DeleteForProjectUserAttributesResult): DeleteForProjectUserAttributesResult {
        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: DeleteForProjectUserAttributesResult, 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.DeleteForProjectUserAttributesResult
 */
export const DeleteForProjectUserAttributesResult = new DeleteForProjectUserAttributesResult$Type();
/**
 * @generated ServiceType for protobuf service api.UserAttributesService
 */
export const UserAttributesService = new ServiceType("api.UserAttributesService", [
    { name: "Get", options: { "grpc.gateway.protoc_gen_openapiv2.options.openapiv2_operation": { tags: ["User Attributes"], description: "Get" }, "api.rscType": "Project", "api.roles": "Platform.UserAttributes", "google.api.method_visibility": { restriction: "SDK" } }, I: GetUserAttributesRequest, O: GetUserAttributesResult },
    { name: "Put", options: { "grpc.gateway.protoc_gen_openapiv2.options.openapiv2_operation": { tags: ["User Attributes"], description: "Update or create a UserAttribute" }, "api.rscType": "Project", "api.roles": "Platform.UserAttributes", "google.api.method_visibility": { restriction: "SDK" } }, I: PutUserAttributesRequest, O: PutUserAttributesResult },
    { name: "Delete", options: { "grpc.gateway.protoc_gen_openapiv2.options.openapiv2_operation": { tags: ["User Attributes"], description: "Delete" }, "api.rscType": "Project", "api.roles": "Platform.UserAttributes", "google.api.method_visibility": { restriction: "SDK" } }, I: DeleteUserAttributesRequest, O: DeleteUserAttributesResult },
    { name: "List", options: { "grpc.gateway.protoc_gen_openapiv2.options.openapiv2_operation": { tags: ["User Attributes"], description: "List" }, "api.rscType": "Project", "api.roles": "Platform.UserAttributes", "google.api.method_visibility": { restriction: "SDK" } }, I: ListUserAttributesRequest, O: ListUserAttributesResult },
    { name: "DeleteForProject", options: { "grpc.gateway.protoc_gen_openapiv2.options.openapiv2_operation": { tags: ["User Attributes"], description: "DeleteForProject" }, "api.rscType": "Project", "api.roles": "Platform.UserAttributes", "google.api.method_visibility": { restriction: "SDK" } }, I: DeleteForProjectUserAttributesRequest, O: DeleteForProjectUserAttributesResult }
], { "api.k8sService": "organisation-server", "api.roleManager": true, "api.resourceManager": true });
