UNPKG

tinkoff-invest-api

Version:
1,735 lines 66.8 kB
"use strict";
var __importDefault = (this && this.__importDefault) || function (mod) {
    return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.UsersServiceDefinition = exports.InstrumentParameter = exports.AccountValuesWithParameters = exports.GetAccountValuesResponse = exports.GetAccountValuesRequest = exports.PayInResponse = exports.PayInRequest = exports.CurrencyTransferResponse = exports.CurrencyTransferRequest = exports.BankAccount = exports.GetBankAccountsResponse = exports.GetBankAccountsRequest = exports.GetInfoResponse = exports.GetInfoRequest = exports.StreamLimit = exports.UnaryLimit = exports.GetUserTariffResponse = exports.GetUserTariffRequest = exports.GetMarginAttributesResponse = exports.GetMarginAttributesRequest = exports.Account = exports.GetAccountsResponse = exports.GetAccountsRequest = exports.accountValueToJSON = exports.accountValueFromJSON = exports.AccountValue = exports.accessLevelToJSON = exports.accessLevelFromJSON = exports.AccessLevel = exports.accountStatusToJSON = exports.accountStatusFromJSON = exports.AccountStatus = exports.accountTypeToJSON = exports.accountTypeFromJSON = exports.AccountType = exports.protobufPackage = void 0;
const minimal_js_1 = __importDefault(require("protobufjs/minimal.js"));
const common_js_1 = require("./common.js");
const timestamp_js_1 = require("./google/protobuf/timestamp.js");
exports.protobufPackage = "tinkoff.public.invest.api.contract.v1";
/** Тип счeта. */
var AccountType;
(function (AccountType) {
    /** ACCOUNT_TYPE_UNSPECIFIED - Тип аккаунта не определeн. */
    AccountType[AccountType["ACCOUNT_TYPE_UNSPECIFIED"] = 0] = "ACCOUNT_TYPE_UNSPECIFIED";
    /** ACCOUNT_TYPE_TINKOFF - Брокерский счeт Т-Инвестиций. */
    AccountType[AccountType["ACCOUNT_TYPE_TINKOFF"] = 1] = "ACCOUNT_TYPE_TINKOFF";
    /** ACCOUNT_TYPE_TINKOFF_IIS - ИИС. */
    AccountType[AccountType["ACCOUNT_TYPE_TINKOFF_IIS"] = 2] = "ACCOUNT_TYPE_TINKOFF_IIS";
    /** ACCOUNT_TYPE_INVEST_BOX - Инвесткопилка. */
    AccountType[AccountType["ACCOUNT_TYPE_INVEST_BOX"] = 3] = "ACCOUNT_TYPE_INVEST_BOX";
    /** ACCOUNT_TYPE_INVEST_FUND - Фонд денежного рынка. */
    AccountType[AccountType["ACCOUNT_TYPE_INVEST_FUND"] = 4] = "ACCOUNT_TYPE_INVEST_FUND";
    /** ACCOUNT_TYPE_DEBIT - Дебетовый карточный счeт. */
    AccountType[AccountType["ACCOUNT_TYPE_DEBIT"] = 5] = "ACCOUNT_TYPE_DEBIT";
    /** ACCOUNT_TYPE_SAVING - Накопительный счeт. */
    AccountType[AccountType["ACCOUNT_TYPE_SAVING"] = 6] = "ACCOUNT_TYPE_SAVING";
    /** ACCOUNT_TYPE_DFA - Смарт-счет. */
    AccountType[AccountType["ACCOUNT_TYPE_DFA"] = 7] = "ACCOUNT_TYPE_DFA";
    AccountType[AccountType["UNRECOGNIZED"] = -1] = "UNRECOGNIZED";
})(AccountType || (exports.AccountType = AccountType = {}));
function accountTypeFromJSON(object) {
    switch (object) {
        case 0:
        case "ACCOUNT_TYPE_UNSPECIFIED":
            return AccountType.ACCOUNT_TYPE_UNSPECIFIED;
        case 1:
        case "ACCOUNT_TYPE_TINKOFF":
            return AccountType.ACCOUNT_TYPE_TINKOFF;
        case 2:
        case "ACCOUNT_TYPE_TINKOFF_IIS":
            return AccountType.ACCOUNT_TYPE_TINKOFF_IIS;
        case 3:
        case "ACCOUNT_TYPE_INVEST_BOX":
            return AccountType.ACCOUNT_TYPE_INVEST_BOX;
        case 4:
        case "ACCOUNT_TYPE_INVEST_FUND":
            return AccountType.ACCOUNT_TYPE_INVEST_FUND;
        case 5:
        case "ACCOUNT_TYPE_DEBIT":
            return AccountType.ACCOUNT_TYPE_DEBIT;
        case 6:
        case "ACCOUNT_TYPE_SAVING":
            return AccountType.ACCOUNT_TYPE_SAVING;
        case 7:
        case "ACCOUNT_TYPE_DFA":
            return AccountType.ACCOUNT_TYPE_DFA;
        case -1:
        case "UNRECOGNIZED":
        default:
            return AccountType.UNRECOGNIZED;
    }
}
exports.accountTypeFromJSON = accountTypeFromJSON;
function accountTypeToJSON(object) {
    switch (object) {
        case AccountType.ACCOUNT_TYPE_UNSPECIFIED:
            return "ACCOUNT_TYPE_UNSPECIFIED";
        case AccountType.ACCOUNT_TYPE_TINKOFF:
            return "ACCOUNT_TYPE_TINKOFF";
        case AccountType.ACCOUNT_TYPE_TINKOFF_IIS:
            return "ACCOUNT_TYPE_TINKOFF_IIS";
        case AccountType.ACCOUNT_TYPE_INVEST_BOX:
            return "ACCOUNT_TYPE_INVEST_BOX";
        case AccountType.ACCOUNT_TYPE_INVEST_FUND:
            return "ACCOUNT_TYPE_INVEST_FUND";
        case AccountType.ACCOUNT_TYPE_DEBIT:
            return "ACCOUNT_TYPE_DEBIT";
        case AccountType.ACCOUNT_TYPE_SAVING:
            return "ACCOUNT_TYPE_SAVING";
        case AccountType.ACCOUNT_TYPE_DFA:
            return "ACCOUNT_TYPE_DFA";
        case AccountType.UNRECOGNIZED:
        default:
            return "UNRECOGNIZED";
    }
}
exports.accountTypeToJSON = accountTypeToJSON;
/** Статус счeта. */
var AccountStatus;
(function (AccountStatus) {
    /** ACCOUNT_STATUS_UNSPECIFIED - Статус счeта не определeн. */
    AccountStatus[AccountStatus["ACCOUNT_STATUS_UNSPECIFIED"] = 0] = "ACCOUNT_STATUS_UNSPECIFIED";
    /** ACCOUNT_STATUS_NEW - Новый, в процессе открытия. */
    AccountStatus[AccountStatus["ACCOUNT_STATUS_NEW"] = 1] = "ACCOUNT_STATUS_NEW";
    /** ACCOUNT_STATUS_OPEN - Открытый и активный счeт. */
    AccountStatus[AccountStatus["ACCOUNT_STATUS_OPEN"] = 2] = "ACCOUNT_STATUS_OPEN";
    /** ACCOUNT_STATUS_CLOSED - Закрытый счeт. */
    AccountStatus[AccountStatus["ACCOUNT_STATUS_CLOSED"] = 3] = "ACCOUNT_STATUS_CLOSED";
    /** ACCOUNT_STATUS_ALL - Все счета. */
    AccountStatus[AccountStatus["ACCOUNT_STATUS_ALL"] = 4] = "ACCOUNT_STATUS_ALL";
    AccountStatus[AccountStatus["UNRECOGNIZED"] = -1] = "UNRECOGNIZED";
})(AccountStatus || (exports.AccountStatus = AccountStatus = {}));
function accountStatusFromJSON(object) {
    switch (object) {
        case 0:
        case "ACCOUNT_STATUS_UNSPECIFIED":
            return AccountStatus.ACCOUNT_STATUS_UNSPECIFIED;
        case 1:
        case "ACCOUNT_STATUS_NEW":
            return AccountStatus.ACCOUNT_STATUS_NEW;
        case 2:
        case "ACCOUNT_STATUS_OPEN":
            return AccountStatus.ACCOUNT_STATUS_OPEN;
        case 3:
        case "ACCOUNT_STATUS_CLOSED":
            return AccountStatus.ACCOUNT_STATUS_CLOSED;
        case 4:
        case "ACCOUNT_STATUS_ALL":
            return AccountStatus.ACCOUNT_STATUS_ALL;
        case -1:
        case "UNRECOGNIZED":
        default:
            return AccountStatus.UNRECOGNIZED;
    }
}
exports.accountStatusFromJSON = accountStatusFromJSON;
function accountStatusToJSON(object) {
    switch (object) {
        case AccountStatus.ACCOUNT_STATUS_UNSPECIFIED:
            return "ACCOUNT_STATUS_UNSPECIFIED";
        case AccountStatus.ACCOUNT_STATUS_NEW:
            return "ACCOUNT_STATUS_NEW";
        case AccountStatus.ACCOUNT_STATUS_OPEN:
            return "ACCOUNT_STATUS_OPEN";
        case AccountStatus.ACCOUNT_STATUS_CLOSED:
            return "ACCOUNT_STATUS_CLOSED";
        case AccountStatus.ACCOUNT_STATUS_ALL:
            return "ACCOUNT_STATUS_ALL";
        case AccountStatus.UNRECOGNIZED:
        default:
            return "UNRECOGNIZED";
    }
}
exports.accountStatusToJSON = accountStatusToJSON;
/** Уровень доступа к счeту. */
var AccessLevel;
(function (AccessLevel) {
    /** ACCOUNT_ACCESS_LEVEL_UNSPECIFIED - Уровень доступа не определeн. */
    AccessLevel[AccessLevel["ACCOUNT_ACCESS_LEVEL_UNSPECIFIED"] = 0] = "ACCOUNT_ACCESS_LEVEL_UNSPECIFIED";
    /** ACCOUNT_ACCESS_LEVEL_FULL_ACCESS - Полный доступ к счeту. */
    AccessLevel[AccessLevel["ACCOUNT_ACCESS_LEVEL_FULL_ACCESS"] = 1] = "ACCOUNT_ACCESS_LEVEL_FULL_ACCESS";
    /** ACCOUNT_ACCESS_LEVEL_READ_ONLY - Доступ с уровнем прав «только чтение». */
    AccessLevel[AccessLevel["ACCOUNT_ACCESS_LEVEL_READ_ONLY"] = 2] = "ACCOUNT_ACCESS_LEVEL_READ_ONLY";
    /** ACCOUNT_ACCESS_LEVEL_NO_ACCESS - Доступа нет. */
    AccessLevel[AccessLevel["ACCOUNT_ACCESS_LEVEL_NO_ACCESS"] = 3] = "ACCOUNT_ACCESS_LEVEL_NO_ACCESS";
    AccessLevel[AccessLevel["UNRECOGNIZED"] = -1] = "UNRECOGNIZED";
})(AccessLevel || (exports.AccessLevel = AccessLevel = {}));
function accessLevelFromJSON(object) {
    switch (object) {
        case 0:
        case "ACCOUNT_ACCESS_LEVEL_UNSPECIFIED":
            return AccessLevel.ACCOUNT_ACCESS_LEVEL_UNSPECIFIED;
        case 1:
        case "ACCOUNT_ACCESS_LEVEL_FULL_ACCESS":
            return AccessLevel.ACCOUNT_ACCESS_LEVEL_FULL_ACCESS;
        case 2:
        case "ACCOUNT_ACCESS_LEVEL_READ_ONLY":
            return AccessLevel.ACCOUNT_ACCESS_LEVEL_READ_ONLY;
        case 3:
        case "ACCOUNT_ACCESS_LEVEL_NO_ACCESS":
            return AccessLevel.ACCOUNT_ACCESS_LEVEL_NO_ACCESS;
        case -1:
        case "UNRECOGNIZED":
        default:
            return AccessLevel.UNRECOGNIZED;
    }
}
exports.accessLevelFromJSON = accessLevelFromJSON;
function accessLevelToJSON(object) {
    switch (object) {
        case AccessLevel.ACCOUNT_ACCESS_LEVEL_UNSPECIFIED:
            return "ACCOUNT_ACCESS_LEVEL_UNSPECIFIED";
        case AccessLevel.ACCOUNT_ACCESS_LEVEL_FULL_ACCESS:
            return "ACCOUNT_ACCESS_LEVEL_FULL_ACCESS";
        case AccessLevel.ACCOUNT_ACCESS_LEVEL_READ_ONLY:
            return "ACCOUNT_ACCESS_LEVEL_READ_ONLY";
        case AccessLevel.ACCOUNT_ACCESS_LEVEL_NO_ACCESS:
            return "ACCOUNT_ACCESS_LEVEL_NO_ACCESS";
        case AccessLevel.UNRECOGNIZED:
        default:
            return "UNRECOGNIZED";
    }
}
exports.accessLevelToJSON = accessLevelToJSON;
var AccountValue;
(function (AccountValue) {
    /** ACCOUNT_VALUE_UNSPECIFIED - Не определён. */
    AccountValue[AccountValue["ACCOUNT_VALUE_UNSPECIFIED"] = 0] = "ACCOUNT_VALUE_UNSPECIFIED";
    /** ACCOUNT_VALUE_MARGIN_FEE - Размер комиссии за маржинальное кредитование. */
    AccountValue[AccountValue["ACCOUNT_VALUE_MARGIN_FEE"] = 1] = "ACCOUNT_VALUE_MARGIN_FEE";
    /** ACCOUNT_VALUE_AMOUNT_WITHOUT_EXTRA_FEE - Остаток доступного лимита с текущей комиссией. */
    AccountValue[AccountValue["ACCOUNT_VALUE_AMOUNT_WITHOUT_EXTRA_FEE"] = 2] = "ACCOUNT_VALUE_AMOUNT_WITHOUT_EXTRA_FEE";
    AccountValue[AccountValue["UNRECOGNIZED"] = -1] = "UNRECOGNIZED";
})(AccountValue || (exports.AccountValue = AccountValue = {}));
function accountValueFromJSON(object) {
    switch (object) {
        case 0:
        case "ACCOUNT_VALUE_UNSPECIFIED":
            return AccountValue.ACCOUNT_VALUE_UNSPECIFIED;
        case 1:
        case "ACCOUNT_VALUE_MARGIN_FEE":
            return AccountValue.ACCOUNT_VALUE_MARGIN_FEE;
        case 2:
        case "ACCOUNT_VALUE_AMOUNT_WITHOUT_EXTRA_FEE":
            return AccountValue.ACCOUNT_VALUE_AMOUNT_WITHOUT_EXTRA_FEE;
        case -1:
        case "UNRECOGNIZED":
        default:
            return AccountValue.UNRECOGNIZED;
    }
}
exports.accountValueFromJSON = accountValueFromJSON;
function accountValueToJSON(object) {
    switch (object) {
        case AccountValue.ACCOUNT_VALUE_UNSPECIFIED:
            return "ACCOUNT_VALUE_UNSPECIFIED";
        case AccountValue.ACCOUNT_VALUE_MARGIN_FEE:
            return "ACCOUNT_VALUE_MARGIN_FEE";
        case AccountValue.ACCOUNT_VALUE_AMOUNT_WITHOUT_EXTRA_FEE:
            return "ACCOUNT_VALUE_AMOUNT_WITHOUT_EXTRA_FEE";
        case AccountValue.UNRECOGNIZED:
        default:
            return "UNRECOGNIZED";
    }
}
exports.accountValueToJSON = accountValueToJSON;
function createBaseGetAccountsRequest() {
    return { status: undefined };
}
exports.GetAccountsRequest = {
    encode(message, writer = minimal_js_1.default.Writer.create()) {
        if (message.status !== undefined) {
            writer.uint32(8).int32(message.status);
        }
        return writer;
    },
    decode(input, length) {
        const reader = input instanceof minimal_js_1.default.Reader ? input : minimal_js_1.default.Reader.create(input);
        let end = length === undefined ? reader.len : reader.pos + length;
        const message = createBaseGetAccountsRequest();
        while (reader.pos < end) {
            const tag = reader.uint32();
            switch (tag >>> 3) {
                case 1:
                    if (tag !== 8) {
                        break;
                    }
                    message.status = reader.int32();
                    continue;
            }
            if ((tag & 7) === 4 || tag === 0) {
                break;
            }
            reader.skipType(tag & 7);
        }
        return message;
    },
    fromJSON(object) {
        return { status: isSet(object.status) ? accountStatusFromJSON(object.status) : undefined };
    },
    toJSON(message) {
        const obj = {};
        if (message.status !== undefined) {
            obj.status = accountStatusToJSON(message.status);
        }
        return obj;
    },
};
function createBaseGetAccountsResponse() {
    return { accounts: [] };
}
exports.GetAccountsResponse = {
    encode(message, writer = minimal_js_1.default.Writer.create()) {
        for (const v of message.accounts) {
            exports.Account.encode(v, writer.uint32(10).fork()).ldelim();
        }
        return writer;
    },
    decode(input, length) {
        const reader = input instanceof minimal_js_1.default.Reader ? input : minimal_js_1.default.Reader.create(input);
        let end = length === undefined ? reader.len : reader.pos + length;
        const message = createBaseGetAccountsResponse();
        while (reader.pos < end) {
            const tag = reader.uint32();
            switch (tag >>> 3) {
                case 1:
                    if (tag !== 10) {
                        break;
                    }
                    message.accounts.push(exports.Account.decode(reader, reader.uint32()));
                    continue;
            }
            if ((tag & 7) === 4 || tag === 0) {
                break;
            }
            reader.skipType(tag & 7);
        }
        return message;
    },
    fromJSON(object) {
        return {
            accounts: globalThis.Array.isArray(object?.accounts) ? object.accounts.map((e) => exports.Account.fromJSON(e)) : [],
        };
    },
    toJSON(message) {
        const obj = {};
        if (message.accounts?.length) {
            obj.accounts = message.accounts.map((e) => exports.Account.toJSON(e));
        }
        return obj;
    },
};
function createBaseAccount() {
    return { id: "", type: 0, name: "", status: 0, openedDate: undefined, closedDate: undefined, accessLevel: 0 };
}
exports.Account = {
    encode(message, writer = minimal_js_1.default.Writer.create()) {
        if (message.id !== "") {
            writer.uint32(10).string(message.id);
        }
        if (message.type !== 0) {
            writer.uint32(16).int32(message.type);
        }
        if (message.name !== "") {
            writer.uint32(26).string(message.name);
        }
        if (message.status !== 0) {
            writer.uint32(32).int32(message.status);
        }
        if (message.openedDate !== undefined) {
            timestamp_js_1.Timestamp.encode(toTimestamp(message.openedDate), writer.uint32(42).fork()).ldelim();
        }
        if (message.closedDate !== undefined) {
            timestamp_js_1.Timestamp.encode(toTimestamp(message.closedDate), writer.uint32(50).fork()).ldelim();
        }
        if (message.accessLevel !== 0) {
            writer.uint32(56).int32(message.accessLevel);
        }
        return writer;
    },
    decode(input, length) {
        const reader = input instanceof minimal_js_1.default.Reader ? input : minimal_js_1.default.Reader.create(input);
        let end = length === undefined ? reader.len : reader.pos + length;
        const message = createBaseAccount();
        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 !== 16) {
                        break;
                    }
                    message.type = reader.int32();
                    continue;
                case 3:
                    if (tag !== 26) {
                        break;
                    }
                    message.name = reader.string();
                    continue;
                case 4:
                    if (tag !== 32) {
                        break;
                    }
                    message.status = reader.int32();
                    continue;
                case 5:
                    if (tag !== 42) {
                        break;
                    }
                    message.openedDate = fromTimestamp(timestamp_js_1.Timestamp.decode(reader, reader.uint32()));
                    continue;
                case 6:
                    if (tag !== 50) {
                        break;
                    }
                    message.closedDate = fromTimestamp(timestamp_js_1.Timestamp.decode(reader, reader.uint32()));
                    continue;
                case 7:
                    if (tag !== 56) {
                        break;
                    }
                    message.accessLevel = reader.int32();
                    continue;
            }
            if ((tag & 7) === 4 || tag === 0) {
                break;
            }
            reader.skipType(tag & 7);
        }
        return message;
    },
    fromJSON(object) {
        return {
            id: isSet(object.id) ? globalThis.String(object.id) : "",
            type: isSet(object.type) ? accountTypeFromJSON(object.type) : 0,
            name: isSet(object.name) ? globalThis.String(object.name) : "",
            status: isSet(object.status) ? accountStatusFromJSON(object.status) : 0,
            openedDate: isSet(object.openedDate) ? fromJsonTimestamp(object.openedDate) : undefined,
            closedDate: isSet(object.closedDate) ? fromJsonTimestamp(object.closedDate) : undefined,
            accessLevel: isSet(object.accessLevel) ? accessLevelFromJSON(object.accessLevel) : 0,
        };
    },
    toJSON(message) {
        const obj = {};
        if (message.id !== "") {
            obj.id = message.id;
        }
        if (message.type !== 0) {
            obj.type = accountTypeToJSON(message.type);
        }
        if (message.name !== "") {
            obj.name = message.name;
        }
        if (message.status !== 0) {
            obj.status = accountStatusToJSON(message.status);
        }
        if (message.openedDate !== undefined) {
            obj.openedDate = message.openedDate.toISOString();
        }
        if (message.closedDate !== undefined) {
            obj.closedDate = message.closedDate.toISOString();
        }
        if (message.accessLevel !== 0) {
            obj.accessLevel = accessLevelToJSON(message.accessLevel);
        }
        return obj;
    },
};
function createBaseGetMarginAttributesRequest() {
    return { accountId: "" };
}
exports.GetMarginAttributesRequest = {
    encode(message, writer = minimal_js_1.default.Writer.create()) {
        if (message.accountId !== "") {
            writer.uint32(10).string(message.accountId);
        }
        return writer;
    },
    decode(input, length) {
        const reader = input instanceof minimal_js_1.default.Reader ? input : minimal_js_1.default.Reader.create(input);
        let end = length === undefined ? reader.len : reader.pos + length;
        const message = createBaseGetMarginAttributesRequest();
        while (reader.pos < end) {
            const tag = reader.uint32();
            switch (tag >>> 3) {
                case 1:
                    if (tag !== 10) {
                        break;
                    }
                    message.accountId = reader.string();
                    continue;
            }
            if ((tag & 7) === 4 || tag === 0) {
                break;
            }
            reader.skipType(tag & 7);
        }
        return message;
    },
    fromJSON(object) {
        return { accountId: isSet(object.accountId) ? globalThis.String(object.accountId) : "" };
    },
    toJSON(message) {
        const obj = {};
        if (message.accountId !== "") {
            obj.accountId = message.accountId;
        }
        return obj;
    },
};
function createBaseGetMarginAttributesResponse() {
    return {
        liquidPortfolio: undefined,
        startingMargin: undefined,
        minimalMargin: undefined,
        fundsSufficiencyLevel: undefined,
        amountOfMissingFunds: undefined,
        correctedMargin: undefined,
        guaranteeForFutures: undefined,
    };
}
exports.GetMarginAttributesResponse = {
    encode(message, writer = minimal_js_1.default.Writer.create()) {
        if (message.liquidPortfolio !== undefined) {
            common_js_1.MoneyValue.encode(message.liquidPortfolio, writer.uint32(10).fork()).ldelim();
        }
        if (message.startingMargin !== undefined) {
            common_js_1.MoneyValue.encode(message.startingMargin, writer.uint32(18).fork()).ldelim();
        }
        if (message.minimalMargin !== undefined) {
            common_js_1.MoneyValue.encode(message.minimalMargin, writer.uint32(26).fork()).ldelim();
        }
        if (message.fundsSufficiencyLevel !== undefined) {
            common_js_1.Quotation.encode(message.fundsSufficiencyLevel, writer.uint32(34).fork()).ldelim();
        }
        if (message.amountOfMissingFunds !== undefined) {
            common_js_1.MoneyValue.encode(message.amountOfMissingFunds, writer.uint32(42).fork()).ldelim();
        }
        if (message.correctedMargin !== undefined) {
            common_js_1.MoneyValue.encode(message.correctedMargin, writer.uint32(50).fork()).ldelim();
        }
        if (message.guaranteeForFutures !== undefined) {
            common_js_1.MoneyValue.encode(message.guaranteeForFutures, writer.uint32(58).fork()).ldelim();
        }
        return writer;
    },
    decode(input, length) {
        const reader = input instanceof minimal_js_1.default.Reader ? input : minimal_js_1.default.Reader.create(input);
        let end = length === undefined ? reader.len : reader.pos + length;
        const message = createBaseGetMarginAttributesResponse();
        while (reader.pos < end) {
            const tag = reader.uint32();
            switch (tag >>> 3) {
                case 1:
                    if (tag !== 10) {
                        break;
                    }
                    message.liquidPortfolio = common_js_1.MoneyValue.decode(reader, reader.uint32());
                    continue;
                case 2:
                    if (tag !== 18) {
                        break;
                    }
                    message.startingMargin = common_js_1.MoneyValue.decode(reader, reader.uint32());
                    continue;
                case 3:
                    if (tag !== 26) {
                        break;
                    }
                    message.minimalMargin = common_js_1.MoneyValue.decode(reader, reader.uint32());
                    continue;
                case 4:
                    if (tag !== 34) {
                        break;
                    }
                    message.fundsSufficiencyLevel = common_js_1.Quotation.decode(reader, reader.uint32());
                    continue;
                case 5:
                    if (tag !== 42) {
                        break;
                    }
                    message.amountOfMissingFunds = common_js_1.MoneyValue.decode(reader, reader.uint32());
                    continue;
                case 6:
                    if (tag !== 50) {
                        break;
                    }
                    message.correctedMargin = common_js_1.MoneyValue.decode(reader, reader.uint32());
                    continue;
                case 7:
                    if (tag !== 58) {
                        break;
                    }
                    message.guaranteeForFutures = common_js_1.MoneyValue.decode(reader, reader.uint32());
                    continue;
            }
            if ((tag & 7) === 4 || tag === 0) {
                break;
            }
            reader.skipType(tag & 7);
        }
        return message;
    },
    fromJSON(object) {
        return {
            liquidPortfolio: isSet(object.liquidPortfolio) ? common_js_1.MoneyValue.fromJSON(object.liquidPortfolio) : undefined,
            startingMargin: isSet(object.startingMargin) ? common_js_1.MoneyValue.fromJSON(object.startingMargin) : undefined,
            minimalMargin: isSet(object.minimalMargin) ? common_js_1.MoneyValue.fromJSON(object.minimalMargin) : undefined,
            fundsSufficiencyLevel: isSet(object.fundsSufficiencyLevel)
                ? common_js_1.Quotation.fromJSON(object.fundsSufficiencyLevel)
                : undefined,
            amountOfMissingFunds: isSet(object.amountOfMissingFunds)
                ? common_js_1.MoneyValue.fromJSON(object.amountOfMissingFunds)
                : undefined,
            correctedMargin: isSet(object.correctedMargin) ? common_js_1.MoneyValue.fromJSON(object.correctedMargin) : undefined,
            guaranteeForFutures: isSet(object.guaranteeForFutures)
                ? common_js_1.MoneyValue.fromJSON(object.guaranteeForFutures)
                : undefined,
        };
    },
    toJSON(message) {
        const obj = {};
        if (message.liquidPortfolio !== undefined) {
            obj.liquidPortfolio = common_js_1.MoneyValue.toJSON(message.liquidPortfolio);
        }
        if (message.startingMargin !== undefined) {
            obj.startingMargin = common_js_1.MoneyValue.toJSON(message.startingMargin);
        }
        if (message.minimalMargin !== undefined) {
            obj.minimalMargin = common_js_1.MoneyValue.toJSON(message.minimalMargin);
        }
        if (message.fundsSufficiencyLevel !== undefined) {
            obj.fundsSufficiencyLevel = common_js_1.Quotation.toJSON(message.fundsSufficiencyLevel);
        }
        if (message.amountOfMissingFunds !== undefined) {
            obj.amountOfMissingFunds = common_js_1.MoneyValue.toJSON(message.amountOfMissingFunds);
        }
        if (message.correctedMargin !== undefined) {
            obj.correctedMargin = common_js_1.MoneyValue.toJSON(message.correctedMargin);
        }
        if (message.guaranteeForFutures !== undefined) {
            obj.guaranteeForFutures = common_js_1.MoneyValue.toJSON(message.guaranteeForFutures);
        }
        return obj;
    },
};
function createBaseGetUserTariffRequest() {
    return {};
}
exports.GetUserTariffRequest = {
    encode(_, writer = minimal_js_1.default.Writer.create()) {
        return writer;
    },
    decode(input, length) {
        const reader = input instanceof minimal_js_1.default.Reader ? input : minimal_js_1.default.Reader.create(input);
        let end = length === undefined ? reader.len : reader.pos + length;
        const message = createBaseGetUserTariffRequest();
        while (reader.pos < end) {
            const tag = reader.uint32();
            switch (tag >>> 3) {
            }
            if ((tag & 7) === 4 || tag === 0) {
                break;
            }
            reader.skipType(tag & 7);
        }
        return message;
    },
    fromJSON(_) {
        return {};
    },
    toJSON(_) {
        const obj = {};
        return obj;
    },
};
function createBaseGetUserTariffResponse() {
    return { unaryLimits: [], streamLimits: [] };
}
exports.GetUserTariffResponse = {
    encode(message, writer = minimal_js_1.default.Writer.create()) {
        for (const v of message.unaryLimits) {
            exports.UnaryLimit.encode(v, writer.uint32(10).fork()).ldelim();
        }
        for (const v of message.streamLimits) {
            exports.StreamLimit.encode(v, writer.uint32(18).fork()).ldelim();
        }
        return writer;
    },
    decode(input, length) {
        const reader = input instanceof minimal_js_1.default.Reader ? input : minimal_js_1.default.Reader.create(input);
        let end = length === undefined ? reader.len : reader.pos + length;
        const message = createBaseGetUserTariffResponse();
        while (reader.pos < end) {
            const tag = reader.uint32();
            switch (tag >>> 3) {
                case 1:
                    if (tag !== 10) {
                        break;
                    }
                    message.unaryLimits.push(exports.UnaryLimit.decode(reader, reader.uint32()));
                    continue;
                case 2:
                    if (tag !== 18) {
                        break;
                    }
                    message.streamLimits.push(exports.StreamLimit.decode(reader, reader.uint32()));
                    continue;
            }
            if ((tag & 7) === 4 || tag === 0) {
                break;
            }
            reader.skipType(tag & 7);
        }
        return message;
    },
    fromJSON(object) {
        return {
            unaryLimits: globalThis.Array.isArray(object?.unaryLimits)
                ? object.unaryLimits.map((e) => exports.UnaryLimit.fromJSON(e))
                : [],
            streamLimits: globalThis.Array.isArray(object?.streamLimits)
                ? object.streamLimits.map((e) => exports.StreamLimit.fromJSON(e))
                : [],
        };
    },
    toJSON(message) {
        const obj = {};
        if (message.unaryLimits?.length) {
            obj.unaryLimits = message.unaryLimits.map((e) => exports.UnaryLimit.toJSON(e));
        }
        if (message.streamLimits?.length) {
            obj.streamLimits = message.streamLimits.map((e) => exports.StreamLimit.toJSON(e));
        }
        return obj;
    },
};
function createBaseUnaryLimit() {
    return { limitPerMinute: 0, methods: [], limitPerSecond: undefined };
}
exports.UnaryLimit = {
    encode(message, writer = minimal_js_1.default.Writer.create()) {
        if (message.limitPerMinute !== 0) {
            writer.uint32(8).int32(message.limitPerMinute);
        }
        for (const v of message.methods) {
            writer.uint32(18).string(v);
        }
        if (message.limitPerSecond !== undefined) {
            writer.uint32(24).int32(message.limitPerSecond);
        }
        return writer;
    },
    decode(input, length) {
        const reader = input instanceof minimal_js_1.default.Reader ? input : minimal_js_1.default.Reader.create(input);
        let end = length === undefined ? reader.len : reader.pos + length;
        const message = createBaseUnaryLimit();
        while (reader.pos < end) {
            const tag = reader.uint32();
            switch (tag >>> 3) {
                case 1:
                    if (tag !== 8) {
                        break;
                    }
                    message.limitPerMinute = reader.int32();
                    continue;
                case 2:
                    if (tag !== 18) {
                        break;
                    }
                    message.methods.push(reader.string());
                    continue;
                case 3:
                    if (tag !== 24) {
                        break;
                    }
                    message.limitPerSecond = reader.int32();
                    continue;
            }
            if ((tag & 7) === 4 || tag === 0) {
                break;
            }
            reader.skipType(tag & 7);
        }
        return message;
    },
    fromJSON(object) {
        return {
            limitPerMinute: isSet(object.limitPerMinute) ? globalThis.Number(object.limitPerMinute) : 0,
            methods: globalThis.Array.isArray(object?.methods) ? object.methods.map((e) => globalThis.String(e)) : [],
            limitPerSecond: isSet(object.limitPerSecond) ? globalThis.Number(object.limitPerSecond) : undefined,
        };
    },
    toJSON(message) {
        const obj = {};
        if (message.limitPerMinute !== 0) {
            obj.limitPerMinute = Math.round(message.limitPerMinute);
        }
        if (message.methods?.length) {
            obj.methods = message.methods;
        }
        if (message.limitPerSecond !== undefined) {
            obj.limitPerSecond = Math.round(message.limitPerSecond);
        }
        return obj;
    },
};
function createBaseStreamLimit() {
    return { limit: 0, streams: [], open: 0 };
}
exports.StreamLimit = {
    encode(message, writer = minimal_js_1.default.Writer.create()) {
        if (message.limit !== 0) {
            writer.uint32(8).int32(message.limit);
        }
        for (const v of message.streams) {
            writer.uint32(18).string(v);
        }
        if (message.open !== 0) {
            writer.uint32(24).int32(message.open);
        }
        return writer;
    },
    decode(input, length) {
        const reader = input instanceof minimal_js_1.default.Reader ? input : minimal_js_1.default.Reader.create(input);
        let end = length === undefined ? reader.len : reader.pos + length;
        const message = createBaseStreamLimit();
        while (reader.pos < end) {
            const tag = reader.uint32();
            switch (tag >>> 3) {
                case 1:
                    if (tag !== 8) {
                        break;
                    }
                    message.limit = reader.int32();
                    continue;
                case 2:
                    if (tag !== 18) {
                        break;
                    }
                    message.streams.push(reader.string());
                    continue;
                case 3:
                    if (tag !== 24) {
                        break;
                    }
                    message.open = reader.int32();
                    continue;
            }
            if ((tag & 7) === 4 || tag === 0) {
                break;
            }
            reader.skipType(tag & 7);
        }
        return message;
    },
    fromJSON(object) {
        return {
            limit: isSet(object.limit) ? globalThis.Number(object.limit) : 0,
            streams: globalThis.Array.isArray(object?.streams) ? object.streams.map((e) => globalThis.String(e)) : [],
            open: isSet(object.open) ? globalThis.Number(object.open) : 0,
        };
    },
    toJSON(message) {
        const obj = {};
        if (message.limit !== 0) {
            obj.limit = Math.round(message.limit);
        }
        if (message.streams?.length) {
            obj.streams = message.streams;
        }
        if (message.open !== 0) {
            obj.open = Math.round(message.open);
        }
        return obj;
    },
};
function createBaseGetInfoRequest() {
    return {};
}
exports.GetInfoRequest = {
    encode(_, writer = minimal_js_1.default.Writer.create()) {
        return writer;
    },
    decode(input, length) {
        const reader = input instanceof minimal_js_1.default.Reader ? input : minimal_js_1.default.Reader.create(input);
        let end = length === undefined ? reader.len : reader.pos + length;
        const message = createBaseGetInfoRequest();
        while (reader.pos < end) {
            const tag = reader.uint32();
            switch (tag >>> 3) {
            }
            if ((tag & 7) === 4 || tag === 0) {
                break;
            }
            reader.skipType(tag & 7);
        }
        return message;
    },
    fromJSON(_) {
        return {};
    },
    toJSON(_) {
        const obj = {};
        return obj;
    },
};
function createBaseGetInfoResponse() {
    return { premStatus: false, qualStatus: false, qualifiedForWorkWith: [], tariff: "", userId: "", riskLevelCode: "" };
}
exports.GetInfoResponse = {
    encode(message, writer = minimal_js_1.default.Writer.create()) {
        if (message.premStatus === true) {
            writer.uint32(8).bool(message.premStatus);
        }
        if (message.qualStatus === true) {
            writer.uint32(16).bool(message.qualStatus);
        }
        for (const v of message.qualifiedForWorkWith) {
            writer.uint32(26).string(v);
        }
        if (message.tariff !== "") {
            writer.uint32(34).string(message.tariff);
        }
        if (message.userId !== "") {
            writer.uint32(74).string(message.userId);
        }
        if (message.riskLevelCode !== "") {
            writer.uint32(98).string(message.riskLevelCode);
        }
        return writer;
    },
    decode(input, length) {
        const reader = input instanceof minimal_js_1.default.Reader ? input : minimal_js_1.default.Reader.create(input);
        let end = length === undefined ? reader.len : reader.pos + length;
        const message = createBaseGetInfoResponse();
        while (reader.pos < end) {
            const tag = reader.uint32();
            switch (tag >>> 3) {
                case 1:
                    if (tag !== 8) {
                        break;
                    }
                    message.premStatus = reader.bool();
                    continue;
                case 2:
                    if (tag !== 16) {
                        break;
                    }
                    message.qualStatus = reader.bool();
                    continue;
                case 3:
                    if (tag !== 26) {
                        break;
                    }
                    message.qualifiedForWorkWith.push(reader.string());
                    continue;
                case 4:
                    if (tag !== 34) {
                        break;
                    }
                    message.tariff = reader.string();
                    continue;
                case 9:
                    if (tag !== 74) {
                        break;
                    }
                    message.userId = reader.string();
                    continue;
                case 12:
                    if (tag !== 98) {
                        break;
                    }
                    message.riskLevelCode = reader.string();
                    continue;
            }
            if ((tag & 7) === 4 || tag === 0) {
                break;
            }
            reader.skipType(tag & 7);
        }
        return message;
    },
    fromJSON(object) {
        return {
            premStatus: isSet(object.premStatus) ? globalThis.Boolean(object.premStatus) : false,
            qualStatus: isSet(object.qualStatus) ? globalThis.Boolean(object.qualStatus) : false,
            qualifiedForWorkWith: globalThis.Array.isArray(object?.qualifiedForWorkWith)
                ? object.qualifiedForWorkWith.map((e) => globalThis.String(e))
                : [],
            tariff: isSet(object.tariff) ? globalThis.String(object.tariff) : "",
            userId: isSet(object.userId) ? globalThis.String(object.userId) : "",
            riskLevelCode: isSet(object.riskLevelCode) ? globalThis.String(object.riskLevelCode) : "",
        };
    },
    toJSON(message) {
        const obj = {};
        if (message.premStatus === true) {
            obj.premStatus = message.premStatus;
        }
        if (message.qualStatus === true) {
            obj.qualStatus = message.qualStatus;
        }
        if (message.qualifiedForWorkWith?.length) {
            obj.qualifiedForWorkWith = message.qualifiedForWorkWith;
        }
        if (message.tariff !== "") {
            obj.tariff = message.tariff;
        }
        if (message.userId !== "") {
            obj.userId = message.userId;
        }
        if (message.riskLevelCode !== "") {
            obj.riskLevelCode = message.riskLevelCode;
        }
        return obj;
    },
};
function createBaseGetBankAccountsRequest() {
    return {};
}
exports.GetBankAccountsRequest = {
    encode(_, writer = minimal_js_1.default.Writer.create()) {
        return writer;
    },
    decode(input, length) {
        const reader = input instanceof minimal_js_1.default.Reader ? input : minimal_js_1.default.Reader.create(input);
        let end = length === undefined ? reader.len : reader.pos + length;
        const message = createBaseGetBankAccountsRequest();
        while (reader.pos < end) {
            const tag = reader.uint32();
            switch (tag >>> 3) {
            }
            if ((tag & 7) === 4 || tag === 0) {
                break;
            }
            reader.skipType(tag & 7);
        }
        return message;
    },
    fromJSON(_) {
        return {};
    },
    toJSON(_) {
        const obj = {};
        return obj;
    },
};
function createBaseGetBankAccountsResponse() {
    return { bankAccounts: [] };
}
exports.GetBankAccountsResponse = {
    encode(message, writer = minimal_js_1.default.Writer.create()) {
        for (const v of message.bankAccounts) {
            exports.BankAccount.encode(v, writer.uint32(10).fork()).ldelim();
        }
        return writer;
    },
    decode(input, length) {
        const reader = input instanceof minimal_js_1.default.Reader ? input : minimal_js_1.default.Reader.create(input);
        let end = length === undefined ? reader.len : reader.pos + length;
        const message = createBaseGetBankAccountsResponse();
        while (reader.pos < end) {
            const tag = reader.uint32();
            switch (tag >>> 3) {
                case 1:
                    if (tag !== 10) {
                        break;
                    }
                    message.bankAccounts.push(exports.BankAccount.decode(reader, reader.uint32()));
                    continue;
            }
            if ((tag & 7) === 4 || tag === 0) {
                break;
            }
            reader.skipType(tag & 7);
        }
        return message;
    },
    fromJSON(object) {
        return {
            bankAccounts: globalThis.Array.isArray(object?.bankAccounts)
                ? object.bankAccounts.map((e) => exports.BankAccount.fromJSON(e))
                : [],
        };
    },
    toJSON(message) {
        const obj = {};
        if (message.bankAccounts?.length) {
            obj.bankAccounts = message.bankAccounts.map((e) => exports.BankAccount.toJSON(e));
        }
        return obj;
    },
};
function createBaseBankAccount() {
    return { id: "", name: "", money: [], openedDate: undefined, type: 0 };
}
exports.BankAccount = {
    encode(message, writer = minimal_js_1.default.Writer.create()) {
        if (message.id !== "") {
            writer.uint32(10).string(message.id);
        }
        if (message.name !== "") {
            writer.uint32(18).string(message.name);
        }
        for (const v of message.money) {
            common_js_1.MoneyValue.encode(v, writer.uint32(26).fork()).ldelim();
        }
        if (message.openedDate !== undefined) {
            timestamp_js_1.Timestamp.encode(toTimestamp(message.openedDate), writer.uint32(34).fork()).ldelim();
        }
        if (message.type !== 0) {
            writer.uint32(40).int32(message.type);
        }
        return writer;
    },
    decode(input, length) {
        const reader = input instanceof minimal_js_1.default.Reader ? input : minimal_js_1.default.Reader.create(input);
        let end = length === undefined ? reader.len : reader.pos + length;
        const message = createBaseBankAccount();
        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.name = reader.string();
                    continue;
                case 3:
                    if (tag !== 26) {
                        break;
                    }
                    message.money.push(common_js_1.MoneyValue.decode(reader, reader.uint32()));
                    continue;
                case 4:
                    if (tag !== 34) {
                        break;
                    }
                    message.openedDate = fromTimestamp(timestamp_js_1.Timestamp.decode(reader, reader.uint32()));
                    continue;
                case 5:
                    if (tag !== 40) {
                        break;
                    }
                    message.type = reader.int32();
                    continue;
            }
            if ((tag & 7) === 4 || tag === 0) {
                break;
            }
            reader.skipType(tag & 7);
        }
        return message;
    },
    fromJSON(object) {
        return {
            id: isSet(object.id) ? globalThis.String(object.id) : "",
            name: isSet(object.name) ? globalThis.String(object.name) : "",
            money: globalThis.Array.isArray(object?.money) ? object.money.map((e) => common_js_1.MoneyValue.fromJSON(e)) : [],
            openedDate: isSet(object.openedDate) ? fromJsonTimestamp(object.openedDate) : undefined,
            type: isSet(object.type) ? accountTypeFromJSON(object.type) : 0,
        };
    },
    toJSON(message) {
        const obj = {};
        if (message.id !== "") {
            obj.id = message.id;
        }
        if (message.name !== "") {
            obj.name = message.name;
        }
        if (message.money?.length) {
            obj.money = message.money.map((e) => common_js_1.MoneyValue.toJSON(e));
        }
        if (message.openedDate !== undefined) {
            obj.openedDate = message.openedDate.toISOString();
        }
        if (message.type !== 0) {
            obj.type = accountTypeToJSON(message.type);
        }
        return obj;
    },
};
function createBaseCurrencyTransferRequest() {
    return { fromAccountId: "", toAccountId: "", amount: undefined, transactionId: "" };
}
exports.CurrencyTransferRequest = {
    encode(message, writer = minimal_js_1.default.Writer.create()) {
        if (message.fromAccountId !== "") {
            writer.uint32(10).string(message.fromAccountId);
        }
        if (message.toAccountId !== "") {
            writer.uint32(18).string(message.toAccountId);
        }
        if (message.amount !== undefined) {
            common_js_1.MoneyValue.encode(message.amount, writer.uint32(26).fork()).ldelim();
        }
        if (message.transactionId !== "") {
            writer.uint32(34).string(message.transactionId);
        }
        return writer;
    },
    decode(input, length) {
        const reader = input instanceof minimal_js_1.default.Reader ? input : minimal_js_1.default.Reader.create(input);
        let end = length === undefined ? reader.len : reader.pos + length;
        const message = createBaseCurrencyTransferRequest();
        while (reader.pos < end) {
            const tag = reader.uint32();
            switch (tag >>> 3) {
                case 1:
                    if (tag !== 10) {
                        break;
                    }
                    message.fromAccountId = reader.string();
                    continue;
                case 2:
                    if (tag !== 18) {
                        break;
                    }
                    message.toAccountId = reader.string();
                    continue;
                case 3:
                    if (tag !== 26) {
                        break;
                    }
                    message.amount = common_js_1.MoneyValue.decode(reader, reader.uint32());
                    continue;
                case 4:
                    if (tag !== 34) {
                        break;
                    }
                    message.transactionId = reader.string();
                    continue;
            }
            if ((tag & 7) === 4 || tag === 0) {
                break;
            }
            reader.skipType(tag & 7);
        }
        return message;
    },
    fromJSON(object) {
        return {
            fromAccountId: isSet(object.fromAccountId) ? globalThis.String(object.fromAccountId) : "",
            toAccountId: isSet(object.toAccountId) ? globalThis.String(object.toAccountId) : "",
            amount: isSet(object.amount) ? common_js_1.MoneyValue.fromJSON(object.amount) : undefined,
            transactionId: isSet(object.transactionId) ? globalThis.String(object.transactionId) : "",
        };
    },
    toJSON(message) {
        const obj = {};
        if (message.fromAccountId !== "") {
            obj.fromAccountId = message.fromAccountId;
        }
        if (message.toAccountId !== "") {
            obj.toAccountId = message.toAccountId;
        }
        if (message.amount !== undefined) {
            obj.amount = common_js_1.MoneyValue.toJSON(message.amount);
        }
        if (message.transactionId !== "") {
            obj.transactionId = message.transactionId;
        }
        return obj;
    },
};
function createBaseCurrencyTransferResponse() {
    return {};
}
exports.CurrencyTransferResponse = {
    encode(_, writer = minimal_js_1.default.Writer.create()) {
        return writer;
    },
    decode(input, length) {
        const reader = input instanceof minimal_js_1.default.Reader ? input : minimal_js_1.default.Reader.create(input);
        let end = length === undefined ? reader.len : reader.pos + length;
        const message = createBaseCurrencyTransferResponse();
        while (reader.pos < end) {
            const tag = reader.uint32();
            switch (tag >>> 3) {
            }
            if ((tag & 7) === 4 || tag === 0) {
                break;
            }
            reader.skipType(tag & 7);
        }
        return message;
    },
    fromJSON(_) {
        return {};
    },
    toJSON(_) {
        const obj = {};
        return obj;
    },
};
function createBasePayInRequest() {
    return { fromAccountId: "", toAccountId: "", amount: undefined };
}
exports.PayInRequest = {
    encode(message, writer = minimal_js_1.default.Writer.create()) {
        if (message.fromAccountId !== "") {
            writer.uint32(10).string(message.fromAccountId);
        }
        if (message.toAccountId !== "") {
            writer.uint32(18).string(message.toAccountId);
        }
        if (message.amount !== undefined) {
            common_js_1.MoneyValue.encode(message.amount, writer.uint32(26).fork()).ldelim();
        }
        return writer;
    },
    decode(input, length) {
        const reader = input instanceof minimal_js_1.default.Reader ? input : minimal_js_1.default.Reader.create(input);
        let end = length === undefined ? reader.len : reader.pos + length;
        const message = createBasePayInRequest();
        while (reader.pos < end) {
            const tag = reader.uint32();
            switch (tag >>> 3) {
                case 1:
                    if (tag !== 10) {
                        break;
                    }
                    message.fromAccountId = reader.string();
                    continue;
                case 2:
                    if (tag !== 18) {
                        break;
                    }
                    message.toAccountId = reader.string();
                    continue;
                case 3:
                    if (tag !== 26) {
                        break;
                    }
                    message.amount = common_js_1.MoneyValue.decode(reader, reader.uint32());
                    continue;
            }
            if ((tag & 7) === 4 || tag === 0) {
                break;
            }
            reader.skipType(tag & 7);
        }
        return message;
    },
    fromJSON(object) {
        return {
            fromAccountId: isSet(object.fromAccountId) ? globalThis.String(object.fromAccountId) : "",
            toAccountId: isSet(object.toAccountId) ? globalThis.String(object.toAccountId) : "",
            amount: isSet(object.amount) ? common_js_1.MoneyValue.fromJSON(object.amount) : undefined,
        };
    },
    toJSON(message) {
        const obj = {};
        if (message.fromAccountId !== "") {
            obj.fromAccountId = message.fromAccountId;
        }
        if (message.toAccountId !== "") {
            obj.toAccountId = message.toAccountId;
        }
        if (message.amount !== undefined) {
            obj.amount = common_js_1.MoneyValue.toJSON(message.amount);
        }
        return obj;
    },
};
function createBasePayInResponse() {
    return {};
}
exports.PayInResponse = {
    encode(_, writer = minimal_js_1.default.Writer.create()) {
        return writer;
    },
    decode(input, length) {
        const reader = input instanceof minimal_js_1.default.Reader ? input : minimal_js_1.default.Reader.create(input);
        let end = length === undefined ? reader.len : reader.pos + length;
        const message = createBasePayInResponse();
        while (reader.pos < end) {
            const tag = reader.uint32();
            switch (tag >>> 3) {
            }
            if ((tag & 7) === 4 || tag === 0) {
                break;
            }
            reader.skipType(tag & 7);
        }
        return message;
    },
    fromJSON(_) {
        return {};
    },
    toJSON(_) {
        const obj = {};
        return obj;
    },
};
function createBaseGetAccountValuesRequest() {
    return { accounts: [], values: [] };
}
exports.GetAccountValuesRequest = {
    encode(message, writer = minimal_js_1.default.Writer.create()) {
        for (const v of message.accounts) {
            writer.uint32(10).string(v);
        }
        writer.uint32(18).fork();
        for (const v of message.values) {
            writer.int32(v);
        }
        writer.ldelim();
        return writer;
    },
    decode(input, length) {
        const reader = input instanceof minimal_js_1.default.Reader ? input : minimal_js_1.default.Reader.create(input);
        let end = length === undefined ? reader.len : reader.pos + length;
        const message = createBaseGetAccountValuesRequest();
        while (reader.pos < end) {
            const tag = reader.uint32();
            switch (tag >>> 3) {
                case 1:
                    if (tag !== 10) {
                        break;
                    }
                    message.accounts.push(reader.string());
                    continue;
                case 2:
                    if (tag === 16) {
                        message.values.push(reader.int32());
                        continue;
                    }
                    if (tag === 18) {
                        const end2 = reader.uint32() + reader.pos;
                        while (reader.pos < end2) {
                            message.values.push(reader.int32());
                        }
                        continue;
                    }
                    break;
            }
            if ((tag & 7) === 4 || tag === 0) {
                break;
            }
            reader.skipType(tag & 7);
        }
        return message;
    },
    fromJSON(object) {
        return {
            accounts: globalThis.Array.isArray(object?.accounts) ? object.accounts.map((e) => globalThis.String(e)) : [],
            values: globalThis.Array.isArray(object?.values) ? object.values.map((e) => accountValueFromJSON(e)) : [],
        };
    },
    toJSON(message) {
        const obj = {};
        if (message.accounts?.length) {
            obj.accounts = message.accounts;
        }
        if (message.values?.length) {
            obj.values = message.values.map((e) => accountValueToJSON(e));
        }
        return obj;
    },
};
function createBaseGetAccountValuesResponse() {
    return { accounts: [] };
}
exports.GetAccountValuesResponse = {
    encode(message, writer = minimal_js_1.default.Writer.create()) {
        for (const v of message.accounts) {
            exports.AccountValuesWithParameters.encode(v, writer.uint32(10).fork()).ldelim();
        }
        return writer;
    },
    decode(input, length) {
        const reader = input instanceof minimal_js_1.default.Reader ? input : minimal_js_1.default.Reader.create(input);
        let end = length === undefined ? reader.len : reader.pos + length;
        const message = createBaseGetAccountValuesResponse();
        while (reader.pos < end) {
            const tag = reader.uint32();
            switch (tag >>> 3) {
                case 1:
                    if (tag !== 10) {
                        break;
                    }
                    message.accounts.push(exports.AccountValuesWithParameters.decode(reader, reader.uint32()));
                    continue;
            }
            if ((tag & 7) === 4 || tag === 0) {
                break;
            }
            reader.skipType(tag & 7);
        }
        return message;
    },
    fromJSON(object) {
        return {
            accounts: globalThis.Array.isArray(object?.accounts)
                ? object.accounts.map((e) => exports.AccountValuesWithParameters.fromJSON(e))
                : [],
        };
    },
    toJSON(message) {
        const obj = {};
        if (message.accounts?.length) {
            obj.accounts = message.accounts.map((e) => exports.AccountValuesWithParameters.toJSON(e));
        }
        return obj;
    },
};
function createBaseAccountValuesWithParameters() {
    return { accountId: "", values: [] };
}
exports.AccountValuesWithParameters = {
    encode(message, writer = minimal_js_1.default.Writer.create()) {
        if (message.accountId !== "") {
            writer.uint32(10).string(message.accountId);
        }
        for (const v of message.values) {
            exports.InstrumentParameter.encode(v, writer.uint32(18).fork()).ldelim();
        }
        return writer;
    },
    decode(input, length) {
        const reader = input instanceof minimal_js_1.default.Reader ? input : minimal_js_1.default.Reader.create(input);
        let end = length === undefined ? reader.len : reader.pos + length;
        const message = createBaseAccountValuesWithParameters();
        while (reader.pos < end) {
            const tag = reader.uint32();
            switch (tag >>> 3) {
                case 1:
                    if (tag !== 10) {
                        break;
                    }
                    message.accountId = reader.string();
                    continue;
                case 2:
                    if (tag !== 18) {
                        break;
                    }
                    message.values.push(exports.InstrumentParameter.decode(reader, reader.uint32()));
                    continue;
            }
            if ((tag & 7) === 4 || tag === 0) {
                break;
            }
            reader.skipType(tag & 7);
        }
        return message;
    },
    fromJSON(object) {
        return {
            accountId: isSet(object.accountId) ? globalThis.String(object.accountId) : "",
            values: globalThis.Array.isArray(object?.values)
                ? object.values.map((e) => exports.InstrumentParameter.fromJSON(e))
                : [],
        };
    },
    toJSON(message) {
        const obj = {};
        if (message.accountId !== "") {
            obj.accountId = message.accountId;
        }
        if (message.values?.length) {
            obj.values = message.values.map((e) => exports.InstrumentParameter.toJSON(e));
        }
        return obj;
    },
};
function createBaseInstrumentParameter() {
    return { name: 0, value: undefined };
}
exports.InstrumentParameter = {
    encode(message, writer = minimal_js_1.default.Writer.create()) {
        if (message.name !== 0) {
            writer.uint32(8).int32(message.name);
        }
        if (message.value !== undefined) {
            common_js_1.MoneyValue.encode(message.value, writer.uint32(18).fork()).ldelim();
        }
        return writer;
    },
    decode(input, length) {
        const reader = input instanceof minimal_js_1.default.Reader ? input : minimal_js_1.default.Reader.create(input);
        let end = length === undefined ? reader.len : reader.pos + length;
        const message = createBaseInstrumentParameter();
        while (reader.pos < end) {
            const tag = reader.uint32();
            switch (tag >>> 3) {
                case 1:
                    if (tag !== 8) {
                        break;
                    }
                    message.name = reader.int32();
                    continue;
                case 2:
                    if (tag !== 18) {
                        break;
                    }
                    message.value = common_js_1.MoneyValue.decode(reader, reader.uint32());
                    continue;
            }
            if ((tag & 7) === 4 || tag === 0) {
                break;
            }
            reader.skipType(tag & 7);
        }
        return message;
    },
    fromJSON(object) {
        return {
            name: isSet(object.name) ? accountValueFromJSON(object.name) : 0,
            value: isSet(object.value) ? common_js_1.MoneyValue.fromJSON(object.value) : undefined,
        };
    },
    toJSON(message) {
        const obj = {};
        if (message.name !== 0) {
            obj.name = accountValueToJSON(message.name);
        }
        if (message.value !== undefined) {
            obj.value = common_js_1.MoneyValue.toJSON(message.value);
        }
        return obj;
    },
};
exports.UsersServiceDefinition = {
    name: "UsersService",
    fullName: "tinkoff.public.invest.api.contract.v1.UsersService",
    methods: {
        /**
         * GetAccounts — счета пользователя
         * Получить список счетов.
         */
        getAccounts: {
            name: "GetAccounts",
            requestType: exports.GetAccountsRequest,
            requestStream: false,
            responseType: exports.GetAccountsResponse,
            responseStream: false,
            options: {},
        },
        /**
         * GetMarginAttributes — маржинальные показатели по счeту
         * Метод позволяет получить маржинальные показатели и ликвидность по заданному счeту.
         */
        getMarginAttributes: {
            name: "GetMarginAttributes",
            requestType: exports.GetMarginAttributesRequest,
            requestStream: false,
            responseType: exports.GetMarginAttributesResponse,
            responseStream: false,
            options: {},
        },
        /**
         * GetUserTariff — тариф пользователя
         * Получить информацию о текущих лимитах на подклчение, согласно текущему тарифу пользователя.
         */
        getUserTariff: {
            name: "GetUserTariff",
            requestType: exports.GetUserTariffRequest,
            requestStream: false,
            responseType: exports.GetUserTariffResponse,
            responseStream: false,
            options: {},
        },
        /**
         * GetInfo — информация о пользователе
         * Получить информацию о пользователе: тариф, признак квалификации, пройденные тесты и др.
         */
        getInfo: {
            name: "GetInfo",
            requestType: exports.GetInfoRequest,
            requestStream: false,
            responseType: exports.GetInfoResponse,
            responseStream: false,
            options: {},
        },
        /**
         * GetBankAccounts — банковские счета пользователя
         * Получить список счетов пользователя, в том числе и банковских.
         */
        getBankAccounts: {
            name: "GetBankAccounts",
            requestType: exports.GetBankAccountsRequest,
            requestStream: false,
            responseType: exports.GetBankAccountsResponse,
            responseStream: false,
            options: {},
        },
        /**
         * CurrencyTransfer — перевод денежных средств между счетами
         * Перевести денежные средства между брокерскими счетами
         */
        currencyTransfer: {
            name: "CurrencyTransfer",
            requestType: exports.CurrencyTransferRequest,
            requestStream: false,
            responseType: exports.CurrencyTransferResponse,
            responseStream: false,
            options: {},
        },
        /**
         * PayIn — пополнение брокерского счета
         * Пополнить брокерский счёт с банковского
         */
        payIn: {
            name: "PayIn",
            requestType: exports.PayInRequest,
            requestStream: false,
            responseType: exports.PayInResponse,
            responseStream: false,
            options: {},
        },
        /**
         * GetAccountValues — дополнительные показатели счетов
         * Метод предназначен для получения дополнительных показателей счетов
         */
        getAccountValues: {
            name: "GetAccountValues",
            requestType: exports.GetAccountValuesRequest,
            requestStream: false,
            responseType: exports.GetAccountValuesResponse,
            responseStream: false,
            options: {},
        },
    },
};
function toTimestamp(date) {
    const seconds = date.getTime() / 1000;
    const nanos = (date.getTime() % 1000) * 1000000;
    return { seconds, nanos };
}
function fromTimestamp(t) {
    let millis = (t.seconds || 0) * 1000;
    millis += (t.nanos || 0) / 1000000;
    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_js_1.Timestamp.fromJSON(o));
    }
}
function isSet(value) {
    return value !== null && value !== undefined;
}
//# sourceMappingURL=users.js.map