Source

grpc/auth.js

// Code generated by protoc-gen-ts_proto. DO NOT EDIT.
// versions:
//   protoc-gen-ts_proto  v2.7.7
//   protoc               v4.24.4
// source: auth.proto
/* eslint-disable */
import { BinaryReader, BinaryWriter } from "@bufbuild/protobuf/wire";
import { makeGenericClientConstructor, } from "@grpc/grpc-js";
import { Empty } from "./google/protobuf/empty";
import { Timestamp } from "./google/protobuf/timestamp";
export const protobufPackage = "auth";
/** User role enumeration - only admin and sme */
export var UserRole;
(function (UserRole) {
    UserRole[UserRole["admin"] = 0] = "admin";
    /** sme - Subject Matter Expert */
    UserRole[UserRole["sme"] = 1] = "sme";
    UserRole[UserRole["UNRECOGNIZED"] = -1] = "UNRECOGNIZED";
})(UserRole || (UserRole = {}));
export function userRoleFromJSON(object) {
    switch (object) {
        case 0:
        case "admin":
            return UserRole.admin;
        case 1:
        case "sme":
            return UserRole.sme;
        case -1:
        case "UNRECOGNIZED":
        default:
            return UserRole.UNRECOGNIZED;
    }
}
export function userRoleToJSON(object) {
    switch (object) {
        case UserRole.admin:
            return "admin";
        case UserRole.sme:
            return "sme";
        case UserRole.UNRECOGNIZED:
        default:
            return "UNRECOGNIZED";
    }
}
export var ApiResponseStatus;
(function (ApiResponseStatus) {
    ApiResponseStatus[ApiResponseStatus["SUCCESS"] = 0] = "SUCCESS";
    ApiResponseStatus[ApiResponseStatus["ERROR"] = 1] = "ERROR";
    ApiResponseStatus[ApiResponseStatus["UNRECOGNIZED"] = -1] = "UNRECOGNIZED";
})(ApiResponseStatus || (ApiResponseStatus = {}));
export function apiResponseStatusFromJSON(object) {
    switch (object) {
        case 0:
        case "SUCCESS":
            return ApiResponseStatus.SUCCESS;
        case 1:
        case "ERROR":
            return ApiResponseStatus.ERROR;
        case -1:
        case "UNRECOGNIZED":
        default:
            return ApiResponseStatus.UNRECOGNIZED;
    }
}
export function apiResponseStatusToJSON(object) {
    switch (object) {
        case ApiResponseStatus.SUCCESS:
            return "SUCCESS";
        case ApiResponseStatus.ERROR:
            return "ERROR";
        case ApiResponseStatus.UNRECOGNIZED:
        default:
            return "UNRECOGNIZED";
    }
}
function createBaseUser() {
    return { id: "", email: "", name: "", avatar: undefined, role: 0 };
}
export const User = {
    encode(message, writer = new BinaryWriter()) {
        if (message.id !== "") {
            writer.uint32(10).string(message.id);
        }
        if (message.email !== "") {
            writer.uint32(18).string(message.email);
        }
        if (message.name !== "") {
            writer.uint32(26).string(message.name);
        }
        if (message.avatar !== undefined) {
            writer.uint32(34).string(message.avatar);
        }
        if (message.role !== 0) {
            writer.uint32(40).int32(message.role);
        }
        return writer;
    },
    decode(input, length) {
        const reader = input instanceof BinaryReader ? input : new BinaryReader(input);
        const end = length === undefined ? reader.len : reader.pos + length;
        const message = createBaseUser();
        while (reader.pos < end) {
            const tag = reader.uint32();
            switch (tag >>> 3) {
                case 1: {
                    if (tag !== 10) {
                        break;
                    }
                    message.id = reader.string();
                    continue;
                }
                case 2: {
                    if (tag !== 18) {
                        break;
                    }
                    message.email = reader.string();
                    continue;
                }
                case 3: {
                    if (tag !== 26) {
                        break;
                    }
                    message.name = reader.string();
                    continue;
                }
                case 4: {
                    if (tag !== 34) {
                        break;
                    }
                    message.avatar = reader.string();
                    continue;
                }
                case 5: {
                    if (tag !== 40) {
                        break;
                    }
                    message.role = reader.int32();
                    continue;
                }
            }
            if ((tag & 7) === 4 || tag === 0) {
                break;
            }
            reader.skip(tag & 7);
        }
        return message;
    },
    fromJSON(object) {
        return {
            id: isSet(object.id) ? globalThis.String(object.id) : "",
            email: isSet(object.email) ? globalThis.String(object.email) : "",
            name: isSet(object.name) ? globalThis.String(object.name) : "",
            avatar: isSet(object.avatar) ? globalThis.String(object.avatar) : undefined,
            role: isSet(object.role) ? userRoleFromJSON(object.role) : 0,
        };
    },
    toJSON(message) {
        const obj = {};
        if (message.id !== "") {
            obj.id = message.id;
        }
        if (message.email !== "") {
            obj.email = message.email;
        }
        if (message.name !== "") {
            obj.name = message.name;
        }
        if (message.avatar !== undefined) {
            obj.avatar = message.avatar;
        }
        if (message.role !== 0) {
            obj.role = userRoleToJSON(message.role);
        }
        return obj;
    },
    create(base) {
        return User.fromPartial(base ?? {});
    },
    fromPartial(object) {
        const message = createBaseUser();
        message.id = object.id ?? "";
        message.email = object.email ?? "";
        message.name = object.name ?? "";
        message.avatar = object.avatar ?? undefined;
        message.role = object.role ?? 0;
        return message;
    },
};
function createBaseLoginRequest() {
    return { email: "", password: "" };
}
export const LoginRequest = {
    encode(message, writer = new BinaryWriter()) {
        if (message.email !== "") {
            writer.uint32(10).string(message.email);
        }
        if (message.password !== "") {
            writer.uint32(18).string(message.password);
        }
        return writer;
    },
    decode(input, length) {
        const reader = input instanceof BinaryReader ? input : new BinaryReader(input);
        const end = length === undefined ? reader.len : reader.pos + length;
        const message = createBaseLoginRequest();
        while (reader.pos < end) {
            const tag = reader.uint32();
            switch (tag >>> 3) {
                case 1: {
                    if (tag !== 10) {
                        break;
                    }
                    message.email = reader.string();
                    continue;
                }
                case 2: {
                    if (tag !== 18) {
                        break;
                    }
                    message.password = reader.string();
                    continue;
                }
            }
            if ((tag & 7) === 4 || tag === 0) {
                break;
            }
            reader.skip(tag & 7);
        }
        return message;
    },
    fromJSON(object) {
        return {
            email: isSet(object.email) ? globalThis.String(object.email) : "",
            password: isSet(object.password) ? globalThis.String(object.password) : "",
        };
    },
    toJSON(message) {
        const obj = {};
        if (message.email !== "") {
            obj.email = message.email;
        }
        if (message.password !== "") {
            obj.password = message.password;
        }
        return obj;
    },
    create(base) {
        return LoginRequest.fromPartial(base ?? {});
    },
    fromPartial(object) {
        const message = createBaseLoginRequest();
        message.email = object.email ?? "";
        message.password = object.password ?? "";
        return message;
    },
};
function createBaseTokenResponse() {
    return { accessToken: "", refreshToken: "" };
}
export const TokenResponse = {
    encode(message, writer = new BinaryWriter()) {
        if (message.accessToken !== "") {
            writer.uint32(10).string(message.accessToken);
        }
        if (message.refreshToken !== "") {
            writer.uint32(18).string(message.refreshToken);
        }
        return writer;
    },
    decode(input, length) {
        const reader = input instanceof BinaryReader ? input : new BinaryReader(input);
        const end = length === undefined ? reader.len : reader.pos + length;
        const message = createBaseTokenResponse();
        while (reader.pos < end) {
            const tag = reader.uint32();
            switch (tag >>> 3) {
                case 1: {
                    if (tag !== 10) {
                        break;
                    }
                    message.accessToken = reader.string();
                    continue;
                }
                case 2: {
                    if (tag !== 18) {
                        break;
                    }
                    message.refreshToken = reader.string();
                    continue;
                }
            }
            if ((tag & 7) === 4 || tag === 0) {
                break;
            }
            reader.skip(tag & 7);
        }
        return message;
    },
    fromJSON(object) {
        return {
            accessToken: isSet(object.accessToken) ? globalThis.String(object.accessToken) : "",
            refreshToken: isSet(object.refreshToken) ? globalThis.String(object.refreshToken) : "",
        };
    },
    toJSON(message) {
        const obj = {};
        if (message.accessToken !== "") {
            obj.accessToken = message.accessToken;
        }
        if (message.refreshToken !== "") {
            obj.refreshToken = message.refreshToken;
        }
        return obj;
    },
    create(base) {
        return TokenResponse.fromPartial(base ?? {});
    },
    fromPartial(object) {
        const message = createBaseTokenResponse();
        message.accessToken = object.accessToken ?? "";
        message.refreshToken = object.refreshToken ?? "";
        return message;
    },
};
function createBaseChangePasswordRequest() {
    return { currentPassword: "", newPassword: "" };
}
export const ChangePasswordRequest = {
    encode(message, writer = new BinaryWriter()) {
        if (message.currentPassword !== "") {
            writer.uint32(10).string(message.currentPassword);
        }
        if (message.newPassword !== "") {
            writer.uint32(18).string(message.newPassword);
        }
        return writer;
    },
    decode(input, length) {
        const reader = input instanceof BinaryReader ? input : new BinaryReader(input);
        const end = length === undefined ? reader.len : reader.pos + length;
        const message = createBaseChangePasswordRequest();
        while (reader.pos < end) {
            const tag = reader.uint32();
            switch (tag >>> 3) {
                case 1: {
                    if (tag !== 10) {
                        break;
                    }
                    message.currentPassword = reader.string();
                    continue;
                }
                case 2: {
                    if (tag !== 18) {
                        break;
                    }
                    message.newPassword = reader.string();
                    continue;
                }
            }
            if ((tag & 7) === 4 || tag === 0) {
                break;
            }
            reader.skip(tag & 7);
        }
        return message;
    },
    fromJSON(object) {
        return {
            currentPassword: isSet(object.currentPassword) ? globalThis.String(object.currentPassword) : "",
            newPassword: isSet(object.newPassword) ? globalThis.String(object.newPassword) : "",
        };
    },
    toJSON(message) {
        const obj = {};
        if (message.currentPassword !== "") {
            obj.currentPassword = message.currentPassword;
        }
        if (message.newPassword !== "") {
            obj.newPassword = message.newPassword;
        }
        return obj;
    },
    create(base) {
        return ChangePasswordRequest.fromPartial(base ?? {});
    },
    fromPartial(object) {
        const message = createBaseChangePasswordRequest();
        message.currentPassword = object.currentPassword ?? "";
        message.newPassword = object.newPassword ?? "";
        return message;
    },
};
function createBaseChangeAvatarRequest() {
    return { avatar: "" };
}
export const ChangeAvatarRequest = {
    encode(message, writer = new BinaryWriter()) {
        if (message.avatar !== "") {
            writer.uint32(10).string(message.avatar);
        }
        return writer;
    },
    decode(input, length) {
        const reader = input instanceof BinaryReader ? input : new BinaryReader(input);
        const end = length === undefined ? reader.len : reader.pos + length;
        const message = createBaseChangeAvatarRequest();
        while (reader.pos < end) {
            const tag = reader.uint32();
            switch (tag >>> 3) {
                case 1: {
                    if (tag !== 10) {
                        break;
                    }
                    message.avatar = reader.string();
                    continue;
                }
            }
            if ((tag & 7) === 4 || tag === 0) {
                break;
            }
            reader.skip(tag & 7);
        }
        return message;
    },
    fromJSON(object) {
        return { avatar: isSet(object.avatar) ? globalThis.String(object.avatar) : "" };
    },
    toJSON(message) {
        const obj = {};
        if (message.avatar !== "") {
            obj.avatar = message.avatar;
        }
        return obj;
    },
    create(base) {
        return ChangeAvatarRequest.fromPartial(base ?? {});
    },
    fromPartial(object) {
        const message = createBaseChangeAvatarRequest();
        message.avatar = object.avatar ?? "";
        return message;
    },
};
function createBaseChangeAvatarResponse() {
    return { avatarUrl: "" };
}
export const ChangeAvatarResponse = {
    encode(message, writer = new BinaryWriter()) {
        if (message.avatarUrl !== "") {
            writer.uint32(10).string(message.avatarUrl);
        }
        return writer;
    },
    decode(input, length) {
        const reader = input instanceof BinaryReader ? input : new BinaryReader(input);
        const end = length === undefined ? reader.len : reader.pos + length;
        const message = createBaseChangeAvatarResponse();
        while (reader.pos < end) {
            const tag = reader.uint32();
            switch (tag >>> 3) {
                case 1: {
                    if (tag !== 10) {
                        break;
                    }
                    message.avatarUrl = reader.string();
                    continue;
                }
            }
            if ((tag & 7) === 4 || tag === 0) {
                break;
            }
            reader.skip(tag & 7);
        }
        return message;
    },
    fromJSON(object) {
        return { avatarUrl: isSet(object.avatarUrl) ? globalThis.String(object.avatarUrl) : "" };
    },
    toJSON(message) {
        const obj = {};
        if (message.avatarUrl !== "") {
            obj.avatarUrl = message.avatarUrl;
        }
        return obj;
    },
    create(base) {
        return ChangeAvatarResponse.fromPartial(base ?? {});
    },
    fromPartial(object) {
        const message = createBaseChangeAvatarResponse();
        message.avatarUrl = object.avatarUrl ?? "";
        return message;
    },
};
function createBaseGetMeResponse() {
    return { user: undefined };
}
export const GetMeResponse = {
    encode(message, writer = new BinaryWriter()) {
        if (message.user !== undefined) {
            User.encode(message.user, writer.uint32(10).fork()).join();
        }
        return writer;
    },
    decode(input, length) {
        const reader = input instanceof BinaryReader ? input : new BinaryReader(input);
        const end = length === undefined ? reader.len : reader.pos + length;
        const message = createBaseGetMeResponse();
        while (reader.pos < end) {
            const tag = reader.uint32();
            switch (tag >>> 3) {
                case 1: {
                    if (tag !== 10) {
                        break;
                    }
                    message.user = User.decode(reader, reader.uint32());
                    continue;
                }
            }
            if ((tag & 7) === 4 || tag === 0) {
                break;
            }
            reader.skip(tag & 7);
        }
        return message;
    },
    fromJSON(object) {
        return { user: isSet(object.user) ? User.fromJSON(object.user) : undefined };
    },
    toJSON(message) {
        const obj = {};
        if (message.user !== undefined) {
            obj.user = User.toJSON(message.user);
        }
        return obj;
    },
    create(base) {
        return GetMeResponse.fromPartial(base ?? {});
    },
    fromPartial(object) {
        const message = createBaseGetMeResponse();
        message.user = (object.user !== undefined && object.user !== null) ? User.fromPartial(object.user) : undefined;
        return message;
    },
};
function createBaseRefreshTokenRequest() {
    return { refreshToken: "" };
}
export const RefreshTokenRequest = {
    encode(message, writer = new BinaryWriter()) {
        if (message.refreshToken !== "") {
            writer.uint32(10).string(message.refreshToken);
        }
        return writer;
    },
    decode(input, length) {
        const reader = input instanceof BinaryReader ? input : new BinaryReader(input);
        const end = length === undefined ? reader.len : reader.pos + length;
        const message = createBaseRefreshTokenRequest();
        while (reader.pos < end) {
            const tag = reader.uint32();
            switch (tag >>> 3) {
                case 1: {
                    if (tag !== 10) {
                        break;
                    }
                    message.refreshToken = reader.string();
                    continue;
                }
            }
            if ((tag & 7) === 4 || tag === 0) {
                break;
            }
            reader.skip(tag & 7);
        }
        return message;
    },
    fromJSON(object) {
        return { refreshToken: isSet(object.refreshToken) ? globalThis.String(object.refreshToken) : "" };
    },
    toJSON(message) {
        const obj = {};
        if (message.refreshToken !== "") {
            obj.refreshToken = message.refreshToken;
        }
        return obj;
    },
    create(base) {
        return RefreshTokenRequest.fromPartial(base ?? {});
    },
    fromPartial(object) {
        const message = createBaseRefreshTokenRequest();
        message.refreshToken = object.refreshToken ?? "";
        return message;
    },
};
function createBaseRefreshTokenResponse() {
    return { accessToken: "", refreshToken: "", accessExpiresAt: undefined, refreshExpiresAt: undefined };
}
export const RefreshTokenResponse = {
    encode(message, writer = new BinaryWriter()) {
        if (message.accessToken !== "") {
            writer.uint32(10).string(message.accessToken);
        }
        if (message.refreshToken !== "") {
            writer.uint32(18).string(message.refreshToken);
        }
        if (message.accessExpiresAt !== undefined) {
            Timestamp.encode(toTimestamp(message.accessExpiresAt), writer.uint32(26).fork()).join();
        }
        if (message.refreshExpiresAt !== undefined) {
            Timestamp.encode(toTimestamp(message.refreshExpiresAt), writer.uint32(34).fork()).join();
        }
        return writer;
    },
    decode(input, length) {
        const reader = input instanceof BinaryReader ? input : new BinaryReader(input);
        const end = length === undefined ? reader.len : reader.pos + length;
        const message = createBaseRefreshTokenResponse();
        while (reader.pos < end) {
            const tag = reader.uint32();
            switch (tag >>> 3) {
                case 1: {
                    if (tag !== 10) {
                        break;
                    }
                    message.accessToken = reader.string();
                    continue;
                }
                case 2: {
                    if (tag !== 18) {
                        break;
                    }
                    message.refreshToken = reader.string();
                    continue;
                }
                case 3: {
                    if (tag !== 26) {
                        break;
                    }
                    message.accessExpiresAt = fromTimestamp(Timestamp.decode(reader, reader.uint32()));
                    continue;
                }
                case 4: {
                    if (tag !== 34) {
                        break;
                    }
                    message.refreshExpiresAt = fromTimestamp(Timestamp.decode(reader, reader.uint32()));
                    continue;
                }
            }
            if ((tag & 7) === 4 || tag === 0) {
                break;
            }
            reader.skip(tag & 7);
        }
        return message;
    },
    fromJSON(object) {
        return {
            accessToken: isSet(object.accessToken) ? globalThis.String(object.accessToken) : "",
            refreshToken: isSet(object.refreshToken) ? globalThis.String(object.refreshToken) : "",
            accessExpiresAt: isSet(object.accessExpiresAt) ? fromJsonTimestamp(object.accessExpiresAt) : undefined,
            refreshExpiresAt: isSet(object.refreshExpiresAt) ? fromJsonTimestamp(object.refreshExpiresAt) : undefined,
        };
    },
    toJSON(message) {
        const obj = {};
        if (message.accessToken !== "") {
            obj.accessToken = message.accessToken;
        }
        if (message.refreshToken !== "") {
            obj.refreshToken = message.refreshToken;
        }
        if (message.accessExpiresAt !== undefined) {
            obj.accessExpiresAt = message.accessExpiresAt.toISOString();
        }
        if (message.refreshExpiresAt !== undefined) {
            obj.refreshExpiresAt = message.refreshExpiresAt.toISOString();
        }
        return obj;
    },
    create(base) {
        return RefreshTokenResponse.fromPartial(base ?? {});
    },
    fromPartial(object) {
        const message = createBaseRefreshTokenResponse();
        message.accessToken = object.accessToken ?? "";
        message.refreshToken = object.refreshToken ?? "";
        message.accessExpiresAt = object.accessExpiresAt ?? undefined;
        message.refreshExpiresAt = object.refreshExpiresAt ?? undefined;
        return message;
    },
};
function createBaseValidateTokenRequest() {
    return { accessToken: "" };
}
export const ValidateTokenRequest = {
    encode(message, writer = new BinaryWriter()) {
        if (message.accessToken !== "") {
            writer.uint32(10).string(message.accessToken);
        }
        return writer;
    },
    decode(input, length) {
        const reader = input instanceof BinaryReader ? input : new BinaryReader(input);
        const end = length === undefined ? reader.len : reader.pos + length;
        const message = createBaseValidateTokenRequest();
        while (reader.pos < end) {
            const tag = reader.uint32();
            switch (tag >>> 3) {
                case 1: {
                    if (tag !== 10) {
                        break;
                    }
                    message.accessToken = reader.string();
                    continue;
                }
            }
            if ((tag & 7) === 4 || tag === 0) {
                break;
            }
            reader.skip(tag & 7);
        }
        return message;
    },
    fromJSON(object) {
        return { accessToken: isSet(object.accessToken) ? globalThis.String(object.accessToken) : "" };
    },
    toJSON(message) {
        const obj = {};
        if (message.accessToken !== "") {
            obj.accessToken = message.accessToken;
        }
        return obj;
    },
    create(base) {
        return ValidateTokenRequest.fromPartial(base ?? {});
    },
    fromPartial(object) {
        const message = createBaseValidateTokenRequest();
        message.accessToken = object.accessToken ?? "";
        return message;
    },
};
function createBaseValidateTokenResponse() {
    return { isValid: false, userId: "", role: 0, name: "", avatar: undefined, expiresAt: undefined };
}
export const ValidateTokenResponse = {
    encode(message, writer = new BinaryWriter()) {
        if (message.isValid !== false) {
            writer.uint32(8).bool(message.isValid);
        }
        if (message.userId !== "") {
            writer.uint32(18).string(message.userId);
        }
        if (message.role !== 0) {
            writer.uint32(24).int32(message.role);
        }
        if (message.name !== "") {
            writer.uint32(34).string(message.name);
        }
        if (message.avatar !== undefined) {
            writer.uint32(42).string(message.avatar);
        }
        if (message.expiresAt !== undefined) {
            Timestamp.encode(toTimestamp(message.expiresAt), writer.uint32(50).fork()).join();
        }
        return writer;
    },
    decode(input, length) {
        const reader = input instanceof BinaryReader ? input : new BinaryReader(input);
        const end = length === undefined ? reader.len : reader.pos + length;
        const message = createBaseValidateTokenResponse();
        while (reader.pos < end) {
            const tag = reader.uint32();
            switch (tag >>> 3) {
                case 1: {
                    if (tag !== 8) {
                        break;
                    }
                    message.isValid = reader.bool();
                    continue;
                }
                case 2: {
                    if (tag !== 18) {
                        break;
                    }
                    message.userId = reader.string();
                    continue;
                }
                case 3: {
                    if (tag !== 24) {
                        break;
                    }
                    message.role = reader.int32();
                    continue;
                }
                case 4: {
                    if (tag !== 34) {
                        break;
                    }
                    message.name = reader.string();
                    continue;
                }
                case 5: {
                    if (tag !== 42) {
                        break;
                    }
                    message.avatar = reader.string();
                    continue;
                }
                case 6: {
                    if (tag !== 50) {
                        break;
                    }
                    message.expiresAt = fromTimestamp(Timestamp.decode(reader, reader.uint32()));
                    continue;
                }
            }
            if ((tag & 7) === 4 || tag === 0) {
                break;
            }
            reader.skip(tag & 7);
        }
        return message;
    },
    fromJSON(object) {
        return {
            isValid: isSet(object.isValid) ? globalThis.Boolean(object.isValid) : false,
            userId: isSet(object.userId) ? globalThis.String(object.userId) : "",
            role: isSet(object.role) ? userRoleFromJSON(object.role) : 0,
            name: isSet(object.name) ? globalThis.String(object.name) : "",
            avatar: isSet(object.avatar) ? globalThis.String(object.avatar) : undefined,
            expiresAt: isSet(object.expiresAt) ? fromJsonTimestamp(object.expiresAt) : undefined,
        };
    },
    toJSON(message) {
        const obj = {};
        if (message.isValid !== false) {
            obj.isValid = message.isValid;
        }
        if (message.userId !== "") {
            obj.userId = message.userId;
        }
        if (message.role !== 0) {
            obj.role = userRoleToJSON(message.role);
        }
        if (message.name !== "") {
            obj.name = message.name;
        }
        if (message.avatar !== undefined) {
            obj.avatar = message.avatar;
        }
        if (message.expiresAt !== undefined) {
            obj.expiresAt = message.expiresAt.toISOString();
        }
        return obj;
    },
    create(base) {
        return ValidateTokenResponse.fromPartial(base ?? {});
    },
    fromPartial(object) {
        const message = createBaseValidateTokenResponse();
        message.isValid = object.isValid ?? false;
        message.userId = object.userId ?? "";
        message.role = object.role ?? 0;
        message.name = object.name ?? "";
        message.avatar = object.avatar ?? undefined;
        message.expiresAt = object.expiresAt ?? undefined;
        return message;
    },
};
function createBaseCreateUserRequest() {
    return { email: "", name: "", password: "", role: 0 };
}
export const CreateUserRequest = {
    encode(message, writer = new BinaryWriter()) {
        if (message.email !== "") {
            writer.uint32(10).string(message.email);
        }
        if (message.name !== "") {
            writer.uint32(18).string(message.name);
        }
        if (message.password !== "") {
            writer.uint32(26).string(message.password);
        }
        if (message.role !== 0) {
            writer.uint32(32).int32(message.role);
        }
        return writer;
    },
    decode(input, length) {
        const reader = input instanceof BinaryReader ? input : new BinaryReader(input);
        const end = length === undefined ? reader.len : reader.pos + length;
        const message = createBaseCreateUserRequest();
        while (reader.pos < end) {
            const tag = reader.uint32();
            switch (tag >>> 3) {
                case 1: {
                    if (tag !== 10) {
                        break;
                    }
                    message.email = reader.string();
                    continue;
                }
                case 2: {
                    if (tag !== 18) {
                        break;
                    }
                    message.name = reader.string();
                    continue;
                }
                case 3: {
                    if (tag !== 26) {
                        break;
                    }
                    message.password = reader.string();
                    continue;
                }
                case 4: {
                    if (tag !== 32) {
                        break;
                    }
                    message.role = reader.int32();
                    continue;
                }
            }
            if ((tag & 7) === 4 || tag === 0) {
                break;
            }
            reader.skip(tag & 7);
        }
        return message;
    },
    fromJSON(object) {
        return {
            email: isSet(object.email) ? globalThis.String(object.email) : "",
            name: isSet(object.name) ? globalThis.String(object.name) : "",
            password: isSet(object.password) ? globalThis.String(object.password) : "",
            role: isSet(object.role) ? userRoleFromJSON(object.role) : 0,
        };
    },
    toJSON(message) {
        const obj = {};
        if (message.email !== "") {
            obj.email = message.email;
        }
        if (message.name !== "") {
            obj.name = message.name;
        }
        if (message.password !== "") {
            obj.password = message.password;
        }
        if (message.role !== 0) {
            obj.role = userRoleToJSON(message.role);
        }
        return obj;
    },
    create(base) {
        return CreateUserRequest.fromPartial(base ?? {});
    },
    fromPartial(object) {
        const message = createBaseCreateUserRequest();
        message.email = object.email ?? "";
        message.name = object.name ?? "";
        message.password = object.password ?? "";
        message.role = object.role ?? 0;
        return message;
    },
};
function createBaseUserResponse() {
    return { user: undefined, message: "" };
}
export const UserResponse = {
    encode(message, writer = new BinaryWriter()) {
        if (message.user !== undefined) {
            User.encode(message.user, writer.uint32(10).fork()).join();
        }
        if (message.message !== "") {
            writer.uint32(18).string(message.message);
        }
        return writer;
    },
    decode(input, length) {
        const reader = input instanceof BinaryReader ? input : new BinaryReader(input);
        const end = length === undefined ? reader.len : reader.pos + length;
        const message = createBaseUserResponse();
        while (reader.pos < end) {
            const tag = reader.uint32();
            switch (tag >>> 3) {
                case 1: {
                    if (tag !== 10) {
                        break;
                    }
                    message.user = User.decode(reader, reader.uint32());
                    continue;
                }
                case 2: {
                    if (tag !== 18) {
                        break;
                    }
                    message.message = reader.string();
                    continue;
                }
            }
            if ((tag & 7) === 4 || tag === 0) {
                break;
            }
            reader.skip(tag & 7);
        }
        return message;
    },
    fromJSON(object) {
        return {
            user: isSet(object.user) ? User.fromJSON(object.user) : undefined,
            message: isSet(object.message) ? globalThis.String(object.message) : "",
        };
    },
    toJSON(message) {
        const obj = {};
        if (message.user !== undefined) {
            obj.user = User.toJSON(message.user);
        }
        if (message.message !== "") {
            obj.message = message.message;
        }
        return obj;
    },
    create(base) {
        return UserResponse.fromPartial(base ?? {});
    },
    fromPartial(object) {
        const message = createBaseUserResponse();
        message.user = (object.user !== undefined && object.user !== null) ? User.fromPartial(object.user) : undefined;
        message.message = object.message ?? "";
        return message;
    },
};
function createBaseUserByIdRequest() {
    return { id: "" };
}
export const UserByIdRequest = {
    encode(message, writer = new BinaryWriter()) {
        if (message.id !== "") {
            writer.uint32(10).string(message.id);
        }
        return writer;
    },
    decode(input, length) {
        const reader = input instanceof BinaryReader ? input : new BinaryReader(input);
        const end = length === undefined ? reader.len : reader.pos + length;
        const message = createBaseUserByIdRequest();
        while (reader.pos < end) {
            const tag = reader.uint32();
            switch (tag >>> 3) {
                case 1: {
                    if (tag !== 10) {
                        break;
                    }
                    message.id = reader.string();
                    continue;
                }
            }
            if ((tag & 7) === 4 || tag === 0) {
                break;
            }
            reader.skip(tag & 7);
        }
        return message;
    },
    fromJSON(object) {
        return { id: isSet(object.id) ? globalThis.String(object.id) : "" };
    },
    toJSON(message) {
        const obj = {};
        if (message.id !== "") {
            obj.id = message.id;
        }
        return obj;
    },
    create(base) {
        return UserByIdRequest.fromPartial(base ?? {});
    },
    fromPartial(object) {
        const message = createBaseUserByIdRequest();
        message.id = object.id ?? "";
        return message;
    },
};
function createBaseResetUserPasswordRequest() {
    return { email: "", newPassword: "" };
}
export const ResetUserPasswordRequest = {
    encode(message, writer = new BinaryWriter()) {
        if (message.email !== "") {
            writer.uint32(10).string(message.email);
        }
        if (message.newPassword !== "") {
            writer.uint32(18).string(message.newPassword);
        }
        return writer;
    },
    decode(input, length) {
        const reader = input instanceof BinaryReader ? input : new BinaryReader(input);
        const end = length === undefined ? reader.len : reader.pos + length;
        const message = createBaseResetUserPasswordRequest();
        while (reader.pos < end) {
            const tag = reader.uint32();
            switch (tag >>> 3) {
                case 1: {
                    if (tag !== 10) {
                        break;
                    }
                    message.email = reader.string();
                    continue;
                }
                case 2: {
                    if (tag !== 18) {
                        break;
                    }
                    message.newPassword = reader.string();
                    continue;
                }
            }
            if ((tag & 7) === 4 || tag === 0) {
                break;
            }
            reader.skip(tag & 7);
        }
        return message;
    },
    fromJSON(object) {
        return {
            email: isSet(object.email) ? globalThis.String(object.email) : "",
            newPassword: isSet(object.newPassword) ? globalThis.String(object.newPassword) : "",
        };
    },
    toJSON(message) {
        const obj = {};
        if (message.email !== "") {
            obj.email = message.email;
        }
        if (message.newPassword !== "") {
            obj.newPassword = message.newPassword;
        }
        return obj;
    },
    create(base) {
        return ResetUserPasswordRequest.fromPartial(base ?? {});
    },
    fromPartial(object) {
        const message = createBaseResetUserPasswordRequest();
        message.email = object.email ?? "";
        message.newPassword = object.newPassword ?? "";
        return message;
    },
};
function createBaseDeleteUserRequest() {
    return { email: "" };
}
export const DeleteUserRequest = {
    encode(message, writer = new BinaryWriter()) {
        if (message.email !== "") {
            writer.uint32(10).string(message.email);
        }
        return writer;
    },
    decode(input, length) {
        const reader = input instanceof BinaryReader ? input : new BinaryReader(input);
        const end = length === undefined ? reader.len : reader.pos + length;
        const message = createBaseDeleteUserRequest();
        while (reader.pos < end) {
            const tag = reader.uint32();
            switch (tag >>> 3) {
                case 1: {
                    if (tag !== 10) {
                        break;
                    }
                    message.email = reader.string();
                    continue;
                }
            }
            if ((tag & 7) === 4 || tag === 0) {
                break;
            }
            reader.skip(tag & 7);
        }
        return message;
    },
    fromJSON(object) {
        return { email: isSet(object.email) ? globalThis.String(object.email) : "" };
    },
    toJSON(message) {
        const obj = {};
        if (message.email !== "") {
            obj.email = message.email;
        }
        return obj;
    },
    create(base) {
        return DeleteUserRequest.fromPartial(base ?? {});
    },
    fromPartial(object) {
        const message = createBaseDeleteUserRequest();
        message.email = object.email ?? "";
        return message;
    },
};
function createBaseStatusResponse() {
    return { message: "", status: 0 };
}
export const StatusResponse = {
    encode(message, writer = new BinaryWriter()) {
        if (message.message !== "") {
            writer.uint32(10).string(message.message);
        }
        if (message.status !== 0) {
            writer.uint32(16).int32(message.status);
        }
        return writer;
    },
    decode(input, length) {
        const reader = input instanceof BinaryReader ? input : new BinaryReader(input);
        const end = length === undefined ? reader.len : reader.pos + length;
        const message = createBaseStatusResponse();
        while (reader.pos < end) {
            const tag = reader.uint32();
            switch (tag >>> 3) {
                case 1: {
                    if (tag !== 10) {
                        break;
                    }
                    message.message = reader.string();
                    continue;
                }
                case 2: {
                    if (tag !== 16) {
                        break;
                    }
                    message.status = reader.int32();
                    continue;
                }
            }
            if ((tag & 7) === 4 || tag === 0) {
                break;
            }
            reader.skip(tag & 7);
        }
        return message;
    },
    fromJSON(object) {
        return {
            message: isSet(object.message) ? globalThis.String(object.message) : "",
            status: isSet(object.status) ? apiResponseStatusFromJSON(object.status) : 0,
        };
    },
    toJSON(message) {
        const obj = {};
        if (message.message !== "") {
            obj.message = message.message;
        }
        if (message.status !== 0) {
            obj.status = apiResponseStatusToJSON(message.status);
        }
        return obj;
    },
    create(base) {
        return StatusResponse.fromPartial(base ?? {});
    },
    fromPartial(object) {
        const message = createBaseStatusResponse();
        message.message = object.message ?? "";
        message.status = object.status ?? 0;
        return message;
    },
};
export const AuthService = {
    /** Public authentication endpoint - anyone with valid credentials */
    login: {
        path: "/auth.Auth/Login",
        requestStream: false,
        responseStream: false,
        requestSerialize: (value) => Buffer.from(LoginRequest.encode(value).finish()),
        requestDeserialize: (value) => LoginRequest.decode(value),
        responseSerialize: (value) => Buffer.from(TokenResponse.encode(value).finish()),
        responseDeserialize: (value) => TokenResponse.decode(value),
    },
    /** Self-service endpoints - authenticated users only */
    changePassword: {
        path: "/auth.Auth/ChangePassword",
        requestStream: false,
        responseStream: false,
        requestSerialize: (value) => Buffer.from(ChangePasswordRequest.encode(value).finish()),
        requestDeserialize: (value) => ChangePasswordRequest.decode(value),
        responseSerialize: (value) => Buffer.from(StatusResponse.encode(value).finish()),
        responseDeserialize: (value) => StatusResponse.decode(value),
    },
    changeAvatar: {
        path: "/auth.Auth/ChangeAvatar",
        requestStream: false,
        responseStream: false,
        requestSerialize: (value) => Buffer.from(ChangeAvatarRequest.encode(value).finish()),
        requestDeserialize: (value) => ChangeAvatarRequest.decode(value),
        responseSerialize: (value) => Buffer.from(ChangeAvatarResponse.encode(value).finish()),
        responseDeserialize: (value) => ChangeAvatarResponse.decode(value),
    },
    getMe: {
        path: "/auth.Auth/GetMe",
        requestStream: false,
        responseStream: false,
        requestSerialize: (value) => Buffer.from(Empty.encode(value).finish()),
        requestDeserialize: (value) => Empty.decode(value),
        responseSerialize: (value) => Buffer.from(GetMeResponse.encode(value).finish()),
        responseDeserialize: (value) => GetMeResponse.decode(value),
    },
    /** Token management */
    refreshToken: {
        path: "/auth.Auth/RefreshToken",
        requestStream: false,
        responseStream: false,
        requestSerialize: (value) => Buffer.from(RefreshTokenRequest.encode(value).finish()),
        requestDeserialize: (value) => RefreshTokenRequest.decode(value),
        responseSerialize: (value) => Buffer.from(RefreshTokenResponse.encode(value).finish()),
        responseDeserialize: (value) => RefreshTokenResponse.decode(value),
    },
    validateToken: {
        path: "/auth.Auth/ValidateToken",
        requestStream: false,
        responseStream: false,
        requestSerialize: (value) => Buffer.from(ValidateTokenRequest.encode(value).finish()),
        requestDeserialize: (value) => ValidateTokenRequest.decode(value),
        responseSerialize: (value) => Buffer.from(ValidateTokenResponse.encode(value).finish()),
        responseDeserialize: (value) => ValidateTokenResponse.decode(value),
    },
    /** Admin-only endpoints */
    createUser: {
        path: "/auth.Auth/CreateUser",
        requestStream: false,
        responseStream: false,
        requestSerialize: (value) => Buffer.from(CreateUserRequest.encode(value).finish()),
        requestDeserialize: (value) => CreateUserRequest.decode(value),
        responseSerialize: (value) => Buffer.from(UserResponse.encode(value).finish()),
        responseDeserialize: (value) => UserResponse.decode(value),
    },
    /** Retrieve user by id (Admin only) */
    getUserById: {
        path: "/auth.Auth/GetUserById",
        requestStream: false,
        responseStream: false,
        requestSerialize: (value) => Buffer.from(UserByIdRequest.encode(value).finish()),
        requestDeserialize: (value) => UserByIdRequest.decode(value),
        responseSerialize: (value) => Buffer.from(UserResponse.encode(value).finish()),
        responseDeserialize: (value) => UserResponse.decode(value),
    },
    resetUserPassword: {
        path: "/auth.Auth/ResetUserPassword",
        requestStream: false,
        responseStream: false,
        requestSerialize: (value) => Buffer.from(ResetUserPasswordRequest.encode(value).finish()),
        requestDeserialize: (value) => ResetUserPasswordRequest.decode(value),
        responseSerialize: (value) => Buffer.from(StatusResponse.encode(value).finish()),
        responseDeserialize: (value) => StatusResponse.decode(value),
    },
    deleteUser: {
        path: "/auth.Auth/DeleteUser",
        requestStream: false,
        responseStream: false,
        requestSerialize: (value) => Buffer.from(DeleteUserRequest.encode(value).finish()),
        requestDeserialize: (value) => DeleteUserRequest.decode(value),
        responseSerialize: (value) => Buffer.from(StatusResponse.encode(value).finish()),
        responseDeserialize: (value) => StatusResponse.decode(value),
    },
};
export const AuthClient = makeGenericClientConstructor(AuthService, "auth.Auth");
function toTimestamp(date) {
    const seconds = Math.trunc(date.getTime() / 1_000);
    const nanos = (date.getTime() % 1_000) * 1_000_000;
    return { seconds, nanos };
}
function fromTimestamp(t) {
    let millis = (t.seconds || 0) * 1_000;
    millis += (t.nanos || 0) / 1_000_000;
    return new globalThis.Date(millis);
}
function fromJsonTimestamp(o) {
    if (o instanceof globalThis.Date) {
        return o;
    }
    else if (typeof o === "string") {
        return new globalThis.Date(o);
    }
    else {
        return fromTimestamp(Timestamp.fromJSON(o));
    }
}
function isSet(value) {
    return value !== null && value !== undefined;
}