/* eslint-disable */ import Long from 'long'; import * as _m0 from 'protobufjs/minimal'; import { Timestamp } from './google/protobuf/timestamp'; import { MoneyValue, Quotation } from './common'; export const protobufPackage = 'tinkoff.public.invest.api.contract.v1'; /** Тип счeта. */ export enum AccountType { /** ACCOUNT_TYPE_UNSPECIFIED - Тип аккаунта не определeн. */ ACCOUNT_TYPE_UNSPECIFIED = 0, /** ACCOUNT_TYPE_TINKOFF - Брокерский счeт Т-Инвестиций. */ ACCOUNT_TYPE_TINKOFF = 1, /** ACCOUNT_TYPE_TINKOFF_IIS - ИИС. */ ACCOUNT_TYPE_TINKOFF_IIS = 2, /** ACCOUNT_TYPE_INVEST_BOX - Инвесткопилка. */ ACCOUNT_TYPE_INVEST_BOX = 3, /** ACCOUNT_TYPE_INVEST_FUND - Фонд денежного рынка. */ ACCOUNT_TYPE_INVEST_FUND = 4, /** ACCOUNT_TYPE_DEBIT - Дебетовый карточный счeт. */ ACCOUNT_TYPE_DEBIT = 5, /** ACCOUNT_TYPE_SAVING - Накопительный счeт. */ ACCOUNT_TYPE_SAVING = 6, /** ACCOUNT_TYPE_DFA - Смарт-счет. */ ACCOUNT_TYPE_DFA = 7, UNRECOGNIZED = -1, } export function accountTypeFromJSON(object: any): AccountType { 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; } } export function accountTypeToJSON(object: AccountType): string { 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'; default: return 'UNKNOWN'; } } /** Статус счeта. */ export enum AccountStatus { /** ACCOUNT_STATUS_UNSPECIFIED - Статус счeта не определeн. */ ACCOUNT_STATUS_UNSPECIFIED = 0, /** ACCOUNT_STATUS_NEW - Новый, в процессе открытия. */ ACCOUNT_STATUS_NEW = 1, /** ACCOUNT_STATUS_OPEN - Открытый и активный счeт. */ ACCOUNT_STATUS_OPEN = 2, /** ACCOUNT_STATUS_CLOSED - Закрытый счeт. */ ACCOUNT_STATUS_CLOSED = 3, /** ACCOUNT_STATUS_ALL - Все счета. */ ACCOUNT_STATUS_ALL = 4, UNRECOGNIZED = -1, } export function accountStatusFromJSON(object: any): AccountStatus { 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; } } export function accountStatusToJSON(object: AccountStatus): string { 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'; default: return 'UNKNOWN'; } } /** Уровень доступа к счeту. */ export enum AccessLevel { /** ACCOUNT_ACCESS_LEVEL_UNSPECIFIED - Уровень доступа не определeн. */ ACCOUNT_ACCESS_LEVEL_UNSPECIFIED = 0, /** ACCOUNT_ACCESS_LEVEL_FULL_ACCESS - Полный доступ к счeту. */ ACCOUNT_ACCESS_LEVEL_FULL_ACCESS = 1, /** ACCOUNT_ACCESS_LEVEL_READ_ONLY - Доступ с уровнем прав «только чтение». */ ACCOUNT_ACCESS_LEVEL_READ_ONLY = 2, /** ACCOUNT_ACCESS_LEVEL_NO_ACCESS - Доступа нет. */ ACCOUNT_ACCESS_LEVEL_NO_ACCESS = 3, UNRECOGNIZED = -1, } export function accessLevelFromJSON(object: any): AccessLevel { 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; } } export function accessLevelToJSON(object: AccessLevel): string { 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'; default: return 'UNKNOWN'; } } export enum AccountValue { /** ACCOUNT_VALUE_UNSPECIFIED - Не определён. */ ACCOUNT_VALUE_UNSPECIFIED = 0, /** ACCOUNT_VALUE_MARGIN_FEE - Размер комиссии за маржинальное кредитование. */ ACCOUNT_VALUE_MARGIN_FEE = 1, /** ACCOUNT_VALUE_AMOUNT_WITHOUT_EXTRA_FEE - Остаток доступного лимита с текущей комиссией. */ ACCOUNT_VALUE_AMOUNT_WITHOUT_EXTRA_FEE = 2, UNRECOGNIZED = -1, } export function accountValueFromJSON(object: any): AccountValue { 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; } } export function accountValueToJSON(object: AccountValue): string { 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'; default: return 'UNKNOWN'; } } /** Запрос получения счетов пользователя. */ export interface GetAccountsRequest { /** Статус счета. */ status?: AccountStatus | undefined; } /** Список счетов пользователя. */ export interface GetAccountsResponse { /** Массив счетов клиента. */ accounts: Account[]; } /** Информация о счeте. */ export interface Account { /** Идентификатор счeта. */ id: string; /** Тип счeта. */ type: AccountType; /** Название счeта. */ name: string; /** Статус счeта. */ status: AccountStatus; /** Дата открытия счeта в часовом поясе UTC. */ openedDate: Date | undefined; /** Дата закрытия счeта в часовом поясе UTC. */ closedDate: Date | undefined; /** Уровень доступа к текущему счeту (определяется токеном). */ accessLevel: AccessLevel; } /** Запрос маржинальных показателей по счeту. */ export interface GetMarginAttributesRequest { /** Идентификатор счeта пользователя. */ accountId: string; } /** Маржинальные показатели по счeту. */ export interface GetMarginAttributesResponse { /** Ликвидная стоимость портфеля. [Подробнее про ликвидный портфель](https://www.tbank.ru/invest/help/brokerage/account/margin/about/#q4). */ liquidPortfolio: MoneyValue | undefined; /** Начальная маржа — начальное обеспечение для совершения новой сделки. [Подробнее про начальную и минимальную маржу](https://www.tbank.ru/invest/help/brokerage/account/margin/about/#q6). */ startingMargin: MoneyValue | undefined; /** Минимальная маржа — это минимальное обеспечение для поддержания позиции, которую вы уже открыли. [Подробнее про начальную и минимальную маржу](https://www.tbank.ru/invest/help/brokerage/account/margin/about/#q6). */ minimalMargin: MoneyValue | undefined; /** Уровень достаточности средств. Соотношение стоимости ликвидного портфеля к начальной марже. */ fundsSufficiencyLevel: Quotation | undefined; /** Объем недостающих средств. Разница между стартовой маржой и ликвидной стоимости портфеля. */ amountOfMissingFunds: MoneyValue | undefined; /** Скорректированная маржа. Начальная маржа, в которой плановые позиции рассчитываются с учeтом активных заявок на покупку позиций лонг или продажу позиций шорт. */ correctedMargin: MoneyValue | undefined; /** Размер гарантийного обеспечения, заблокированного под фьючерсы. */ guaranteeForFutures: MoneyValue | undefined; } /** Запрос текущих лимитов пользователя. */ export interface GetUserTariffRequest {} /** Текущие лимиты пользователя. */ export interface GetUserTariffResponse { /** Массив лимитов пользователя по unary-запросам. */ unaryLimits: UnaryLimit[]; /** Массив лимитов пользователей для stream-соединений. */ streamLimits: StreamLimit[]; } /** Лимит unary-методов. */ export interface UnaryLimit { /** Количество unary-запросов в минуту. */ limitPerMinute: number; /** Названия методов. */ methods: string[]; /** Количество unary-запросов в секунду. */ limitPerSecond?: number | undefined; } /** Лимит stream-соединений. */ export interface StreamLimit { /** Максимальное количество stream-соединений. */ limit: number; /** Названия stream-методов. */ streams: string[]; /** Текущее количество открытых stream-соединений. */ open: number; } /** Запрос информации о пользователе. */ export interface GetInfoRequest {} /** Информация о пользователе. */ export interface GetInfoResponse { /** Признак премиум клиента. */ premStatus: boolean; /** Признак квалифицированного инвестора. */ qualStatus: boolean; /** Набор требующих тестирования инструментов и возможностей, с которыми может работать пользователь. [Подробнее](/invest/services/accounts/faq_users). */ qualifiedForWorkWith: string[]; /** Наименование тарифа пользователя. */ tariff: string; /** Идентификатор пользователя. */ userId: string; /** Категория риска. */ riskLevelCode: string; } /** Запрос списка банковских счетов пользователя. */ export interface GetBankAccountsRequest {} /** Список банковских счетов пользователя. */ export interface GetBankAccountsResponse { /** Массив банковских счетов. */ bankAccounts: BankAccount[]; } /** Банковский счeт. */ export interface BankAccount { /** Идентификатор счeта. */ id: string; /** Название счeта. */ name: string; /** Список валютных позиций на счeте. */ money: MoneyValue[]; /** Дата открытия счeта в часовом поясе UTC. */ openedDate: Date | undefined; /** Тип счeта. */ type: AccountType; } export interface CurrencyTransferRequest { /** Номер счета списания. */ fromAccountId: string; /** Номер счета зачисления. */ toAccountId: string; /** Сумма перевода с указанием валюты. */ amount: MoneyValue | undefined; /** Идентификатор запроса выставления поручения для целей идемпотентности в формате UUID. */ transactionId: string; } export interface CurrencyTransferResponse {} export interface PayInRequest { /** Номер счета списания. */ fromAccountId: string; /** Номер брокерского счета зачисления. */ toAccountId: string; /** Сумма перевода с указанием валюты. */ amount: MoneyValue | undefined; } export interface PayInResponse {} export interface GetAccountValuesRequest { /** Массив счетов пользователя. */ accounts: string[]; /** Массив запрашиваемых параметров. */ values: AccountValue[]; } export interface GetAccountValuesResponse { /** Массив счетов с параметрами. */ accounts: AccountValuesWithParameters[]; } export interface AccountValuesWithParameters { /** Номер счета. */ accountId: string; /** Массив параметров инструмента. */ values: InstrumentParameter[]; } export interface InstrumentParameter { /** Тип запрашиваемого параметра. */ name: AccountValue; /** Значение запрашиваемого параметра. */ value: MoneyValue | undefined; } function createBaseGetAccountsRequest(): GetAccountsRequest { return { status: undefined }; } export const GetAccountsRequest = { encode(message: GetAccountsRequest, writer: _m0.Writer = _m0.Writer.create()): _m0.Writer { if (message.status !== undefined) { writer.uint32(8).int32(message.status); } return writer; }, decode(input: _m0.Reader | Uint8Array, length?: number): GetAccountsRequest { const reader = input instanceof _m0.Reader ? input : new _m0.Reader(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: message.status = reader.int32() as any; break; default: reader.skipType(tag & 7); break; } } return message; }, fromJSON(object: any): GetAccountsRequest { return { status: isSet(object.status) ? accountStatusFromJSON(object.status) : undefined, }; }, toJSON(message: GetAccountsRequest): unknown { const obj: any = {}; message.status !== undefined && (obj.status = message.status !== undefined ? accountStatusToJSON(message.status) : undefined); return obj; }, fromPartial(object: DeepPartial): GetAccountsRequest { const message = createBaseGetAccountsRequest(); message.status = object.status ?? undefined; return message; }, }; function createBaseGetAccountsResponse(): GetAccountsResponse { return { accounts: [] }; } export const GetAccountsResponse = { encode(message: GetAccountsResponse, writer: _m0.Writer = _m0.Writer.create()): _m0.Writer { for (const v of message.accounts) { Account.encode(v!, writer.uint32(10).fork()).ldelim(); } return writer; }, decode(input: _m0.Reader | Uint8Array, length?: number): GetAccountsResponse { const reader = input instanceof _m0.Reader ? input : new _m0.Reader(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: message.accounts.push(Account.decode(reader, reader.uint32())); break; default: reader.skipType(tag & 7); break; } } return message; }, fromJSON(object: any): GetAccountsResponse { return { accounts: Array.isArray(object?.accounts) ? object.accounts.map((e: any) => Account.fromJSON(e)) : [], }; }, toJSON(message: GetAccountsResponse): unknown { const obj: any = {}; if (message.accounts) { obj.accounts = message.accounts.map(e => (e ? Account.toJSON(e) : undefined)); } else { obj.accounts = []; } return obj; }, fromPartial(object: DeepPartial): GetAccountsResponse { const message = createBaseGetAccountsResponse(); message.accounts = object.accounts?.map(e => Account.fromPartial(e)) || []; return message; }, }; function createBaseAccount(): Account { return { id: '', type: 0, name: '', status: 0, openedDate: undefined, closedDate: undefined, accessLevel: 0 }; } export const Account = { encode(message: Account, writer: _m0.Writer = _m0.Writer.create()): _m0.Writer { 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.encode(toTimestamp(message.openedDate), writer.uint32(42).fork()).ldelim(); } if (message.closedDate !== undefined) { Timestamp.encode(toTimestamp(message.closedDate), writer.uint32(50).fork()).ldelim(); } if (message.accessLevel !== 0) { writer.uint32(56).int32(message.accessLevel); } return writer; }, decode(input: _m0.Reader | Uint8Array, length?: number): Account { const reader = input instanceof _m0.Reader ? input : new _m0.Reader(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: message.id = reader.string(); break; case 2: message.type = reader.int32() as any; break; case 3: message.name = reader.string(); break; case 4: message.status = reader.int32() as any; break; case 5: message.openedDate = fromTimestamp(Timestamp.decode(reader, reader.uint32())); break; case 6: message.closedDate = fromTimestamp(Timestamp.decode(reader, reader.uint32())); break; case 7: message.accessLevel = reader.int32() as any; break; default: reader.skipType(tag & 7); break; } } return message; }, fromJSON(object: any): Account { return { id: isSet(object.id) ? String(object.id) : '', type: isSet(object.type) ? accountTypeFromJSON(object.type) : 0, name: isSet(object.name) ? 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: Account): unknown { const obj: any = {}; message.id !== undefined && (obj.id = message.id); message.type !== undefined && (obj.type = accountTypeToJSON(message.type)); message.name !== undefined && (obj.name = message.name); message.status !== undefined && (obj.status = accountStatusToJSON(message.status)); message.openedDate !== undefined && (obj.openedDate = message.openedDate.toISOString()); message.closedDate !== undefined && (obj.closedDate = message.closedDate.toISOString()); message.accessLevel !== undefined && (obj.accessLevel = accessLevelToJSON(message.accessLevel)); return obj; }, fromPartial(object: DeepPartial): Account { const message = createBaseAccount(); message.id = object.id ?? ''; message.type = object.type ?? 0; message.name = object.name ?? ''; message.status = object.status ?? 0; message.openedDate = object.openedDate ?? undefined; message.closedDate = object.closedDate ?? undefined; message.accessLevel = object.accessLevel ?? 0; return message; }, }; function createBaseGetMarginAttributesRequest(): GetMarginAttributesRequest { return { accountId: '' }; } export const GetMarginAttributesRequest = { encode(message: GetMarginAttributesRequest, writer: _m0.Writer = _m0.Writer.create()): _m0.Writer { if (message.accountId !== '') { writer.uint32(10).string(message.accountId); } return writer; }, decode(input: _m0.Reader | Uint8Array, length?: number): GetMarginAttributesRequest { const reader = input instanceof _m0.Reader ? input : new _m0.Reader(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: message.accountId = reader.string(); break; default: reader.skipType(tag & 7); break; } } return message; }, fromJSON(object: any): GetMarginAttributesRequest { return { accountId: isSet(object.accountId) ? String(object.accountId) : '', }; }, toJSON(message: GetMarginAttributesRequest): unknown { const obj: any = {}; message.accountId !== undefined && (obj.accountId = message.accountId); return obj; }, fromPartial(object: DeepPartial): GetMarginAttributesRequest { const message = createBaseGetMarginAttributesRequest(); message.accountId = object.accountId ?? ''; return message; }, }; function createBaseGetMarginAttributesResponse(): GetMarginAttributesResponse { return { liquidPortfolio: undefined, startingMargin: undefined, minimalMargin: undefined, fundsSufficiencyLevel: undefined, amountOfMissingFunds: undefined, correctedMargin: undefined, guaranteeForFutures: undefined, }; } export const GetMarginAttributesResponse = { encode(message: GetMarginAttributesResponse, writer: _m0.Writer = _m0.Writer.create()): _m0.Writer { if (message.liquidPortfolio !== undefined) { MoneyValue.encode(message.liquidPortfolio, writer.uint32(10).fork()).ldelim(); } if (message.startingMargin !== undefined) { MoneyValue.encode(message.startingMargin, writer.uint32(18).fork()).ldelim(); } if (message.minimalMargin !== undefined) { MoneyValue.encode(message.minimalMargin, writer.uint32(26).fork()).ldelim(); } if (message.fundsSufficiencyLevel !== undefined) { Quotation.encode(message.fundsSufficiencyLevel, writer.uint32(34).fork()).ldelim(); } if (message.amountOfMissingFunds !== undefined) { MoneyValue.encode(message.amountOfMissingFunds, writer.uint32(42).fork()).ldelim(); } if (message.correctedMargin !== undefined) { MoneyValue.encode(message.correctedMargin, writer.uint32(50).fork()).ldelim(); } if (message.guaranteeForFutures !== undefined) { MoneyValue.encode(message.guaranteeForFutures, writer.uint32(58).fork()).ldelim(); } return writer; }, decode(input: _m0.Reader | Uint8Array, length?: number): GetMarginAttributesResponse { const reader = input instanceof _m0.Reader ? input : new _m0.Reader(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: message.liquidPortfolio = MoneyValue.decode(reader, reader.uint32()); break; case 2: message.startingMargin = MoneyValue.decode(reader, reader.uint32()); break; case 3: message.minimalMargin = MoneyValue.decode(reader, reader.uint32()); break; case 4: message.fundsSufficiencyLevel = Quotation.decode(reader, reader.uint32()); break; case 5: message.amountOfMissingFunds = MoneyValue.decode(reader, reader.uint32()); break; case 6: message.correctedMargin = MoneyValue.decode(reader, reader.uint32()); break; case 7: message.guaranteeForFutures = MoneyValue.decode(reader, reader.uint32()); break; default: reader.skipType(tag & 7); break; } } return message; }, fromJSON(object: any): GetMarginAttributesResponse { return { liquidPortfolio: isSet(object.liquidPortfolio) ? MoneyValue.fromJSON(object.liquidPortfolio) : undefined, startingMargin: isSet(object.startingMargin) ? MoneyValue.fromJSON(object.startingMargin) : undefined, minimalMargin: isSet(object.minimalMargin) ? MoneyValue.fromJSON(object.minimalMargin) : undefined, fundsSufficiencyLevel: isSet(object.fundsSufficiencyLevel) ? Quotation.fromJSON(object.fundsSufficiencyLevel) : undefined, amountOfMissingFunds: isSet(object.amountOfMissingFunds) ? MoneyValue.fromJSON(object.amountOfMissingFunds) : undefined, correctedMargin: isSet(object.correctedMargin) ? MoneyValue.fromJSON(object.correctedMargin) : undefined, guaranteeForFutures: isSet(object.guaranteeForFutures) ? MoneyValue.fromJSON(object.guaranteeForFutures) : undefined, }; }, toJSON(message: GetMarginAttributesResponse): unknown { const obj: any = {}; message.liquidPortfolio !== undefined && (obj.liquidPortfolio = message.liquidPortfolio ? MoneyValue.toJSON(message.liquidPortfolio) : undefined); message.startingMargin !== undefined && (obj.startingMargin = message.startingMargin ? MoneyValue.toJSON(message.startingMargin) : undefined); message.minimalMargin !== undefined && (obj.minimalMargin = message.minimalMargin ? MoneyValue.toJSON(message.minimalMargin) : undefined); message.fundsSufficiencyLevel !== undefined && (obj.fundsSufficiencyLevel = message.fundsSufficiencyLevel ? Quotation.toJSON(message.fundsSufficiencyLevel) : undefined); message.amountOfMissingFunds !== undefined && (obj.amountOfMissingFunds = message.amountOfMissingFunds ? MoneyValue.toJSON(message.amountOfMissingFunds) : undefined); message.correctedMargin !== undefined && (obj.correctedMargin = message.correctedMargin ? MoneyValue.toJSON(message.correctedMargin) : undefined); message.guaranteeForFutures !== undefined && (obj.guaranteeForFutures = message.guaranteeForFutures ? MoneyValue.toJSON(message.guaranteeForFutures) : undefined); return obj; }, fromPartial(object: DeepPartial): GetMarginAttributesResponse { const message = createBaseGetMarginAttributesResponse(); message.liquidPortfolio = object.liquidPortfolio !== undefined && object.liquidPortfolio !== null ? MoneyValue.fromPartial(object.liquidPortfolio) : undefined; message.startingMargin = object.startingMargin !== undefined && object.startingMargin !== null ? MoneyValue.fromPartial(object.startingMargin) : undefined; message.minimalMargin = object.minimalMargin !== undefined && object.minimalMargin !== null ? MoneyValue.fromPartial(object.minimalMargin) : undefined; message.fundsSufficiencyLevel = object.fundsSufficiencyLevel !== undefined && object.fundsSufficiencyLevel !== null ? Quotation.fromPartial(object.fundsSufficiencyLevel) : undefined; message.amountOfMissingFunds = object.amountOfMissingFunds !== undefined && object.amountOfMissingFunds !== null ? MoneyValue.fromPartial(object.amountOfMissingFunds) : undefined; message.correctedMargin = object.correctedMargin !== undefined && object.correctedMargin !== null ? MoneyValue.fromPartial(object.correctedMargin) : undefined; message.guaranteeForFutures = object.guaranteeForFutures !== undefined && object.guaranteeForFutures !== null ? MoneyValue.fromPartial(object.guaranteeForFutures) : undefined; return message; }, }; function createBaseGetUserTariffRequest(): GetUserTariffRequest { return {}; } export const GetUserTariffRequest = { encode(_: GetUserTariffRequest, writer: _m0.Writer = _m0.Writer.create()): _m0.Writer { return writer; }, decode(input: _m0.Reader | Uint8Array, length?: number): GetUserTariffRequest { const reader = input instanceof _m0.Reader ? input : new _m0.Reader(input); let end = length === undefined ? reader.len : reader.pos + length; const message = createBaseGetUserTariffRequest(); while (reader.pos < end) { const tag = reader.uint32(); switch (tag >>> 3) { default: reader.skipType(tag & 7); break; } } return message; }, fromJSON(_: any): GetUserTariffRequest { return {}; }, toJSON(_: GetUserTariffRequest): unknown { const obj: any = {}; return obj; }, fromPartial(_: DeepPartial): GetUserTariffRequest { const message = createBaseGetUserTariffRequest(); return message; }, }; function createBaseGetUserTariffResponse(): GetUserTariffResponse { return { unaryLimits: [], streamLimits: [] }; } export const GetUserTariffResponse = { encode(message: GetUserTariffResponse, writer: _m0.Writer = _m0.Writer.create()): _m0.Writer { for (const v of message.unaryLimits) { UnaryLimit.encode(v!, writer.uint32(10).fork()).ldelim(); } for (const v of message.streamLimits) { StreamLimit.encode(v!, writer.uint32(18).fork()).ldelim(); } return writer; }, decode(input: _m0.Reader | Uint8Array, length?: number): GetUserTariffResponse { const reader = input instanceof _m0.Reader ? input : new _m0.Reader(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: message.unaryLimits.push(UnaryLimit.decode(reader, reader.uint32())); break; case 2: message.streamLimits.push(StreamLimit.decode(reader, reader.uint32())); break; default: reader.skipType(tag & 7); break; } } return message; }, fromJSON(object: any): GetUserTariffResponse { return { unaryLimits: Array.isArray(object?.unaryLimits) ? object.unaryLimits.map((e: any) => UnaryLimit.fromJSON(e)) : [], streamLimits: Array.isArray(object?.streamLimits) ? object.streamLimits.map((e: any) => StreamLimit.fromJSON(e)) : [], }; }, toJSON(message: GetUserTariffResponse): unknown { const obj: any = {}; if (message.unaryLimits) { obj.unaryLimits = message.unaryLimits.map(e => (e ? UnaryLimit.toJSON(e) : undefined)); } else { obj.unaryLimits = []; } if (message.streamLimits) { obj.streamLimits = message.streamLimits.map(e => (e ? StreamLimit.toJSON(e) : undefined)); } else { obj.streamLimits = []; } return obj; }, fromPartial(object: DeepPartial): GetUserTariffResponse { const message = createBaseGetUserTariffResponse(); message.unaryLimits = object.unaryLimits?.map(e => UnaryLimit.fromPartial(e)) || []; message.streamLimits = object.streamLimits?.map(e => StreamLimit.fromPartial(e)) || []; return message; }, }; function createBaseUnaryLimit(): UnaryLimit { return { limitPerMinute: 0, methods: [], limitPerSecond: undefined }; } export const UnaryLimit = { encode(message: UnaryLimit, writer: _m0.Writer = _m0.Writer.create()): _m0.Writer { 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: _m0.Reader | Uint8Array, length?: number): UnaryLimit { const reader = input instanceof _m0.Reader ? input : new _m0.Reader(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: message.limitPerMinute = reader.int32(); break; case 2: message.methods.push(reader.string()); break; case 3: message.limitPerSecond = reader.int32(); break; default: reader.skipType(tag & 7); break; } } return message; }, fromJSON(object: any): UnaryLimit { return { limitPerMinute: isSet(object.limitPerMinute) ? Number(object.limitPerMinute) : 0, methods: Array.isArray(object?.methods) ? object.methods.map((e: any) => String(e)) : [], limitPerSecond: isSet(object.limitPerSecond) ? Number(object.limitPerSecond) : undefined, }; }, toJSON(message: UnaryLimit): unknown { const obj: any = {}; message.limitPerMinute !== undefined && (obj.limitPerMinute = Math.round(message.limitPerMinute)); if (message.methods) { obj.methods = message.methods.map(e => e); } else { obj.methods = []; } message.limitPerSecond !== undefined && (obj.limitPerSecond = Math.round(message.limitPerSecond)); return obj; }, fromPartial(object: DeepPartial): UnaryLimit { const message = createBaseUnaryLimit(); message.limitPerMinute = object.limitPerMinute ?? 0; message.methods = object.methods?.map(e => e) || []; message.limitPerSecond = object.limitPerSecond ?? undefined; return message; }, }; function createBaseStreamLimit(): StreamLimit { return { limit: 0, streams: [], open: 0 }; } export const StreamLimit = { encode(message: StreamLimit, writer: _m0.Writer = _m0.Writer.create()): _m0.Writer { 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: _m0.Reader | Uint8Array, length?: number): StreamLimit { const reader = input instanceof _m0.Reader ? input : new _m0.Reader(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: message.limit = reader.int32(); break; case 2: message.streams.push(reader.string()); break; case 3: message.open = reader.int32(); break; default: reader.skipType(tag & 7); break; } } return message; }, fromJSON(object: any): StreamLimit { return { limit: isSet(object.limit) ? Number(object.limit) : 0, streams: Array.isArray(object?.streams) ? object.streams.map((e: any) => String(e)) : [], open: isSet(object.open) ? Number(object.open) : 0, }; }, toJSON(message: StreamLimit): unknown { const obj: any = {}; message.limit !== undefined && (obj.limit = Math.round(message.limit)); if (message.streams) { obj.streams = message.streams.map(e => e); } else { obj.streams = []; } message.open !== undefined && (obj.open = Math.round(message.open)); return obj; }, fromPartial(object: DeepPartial): StreamLimit { const message = createBaseStreamLimit(); message.limit = object.limit ?? 0; message.streams = object.streams?.map(e => e) || []; message.open = object.open ?? 0; return message; }, }; function createBaseGetInfoRequest(): GetInfoRequest { return {}; } export const GetInfoRequest = { encode(_: GetInfoRequest, writer: _m0.Writer = _m0.Writer.create()): _m0.Writer { return writer; }, decode(input: _m0.Reader | Uint8Array, length?: number): GetInfoRequest { const reader = input instanceof _m0.Reader ? input : new _m0.Reader(input); let end = length === undefined ? reader.len : reader.pos + length; const message = createBaseGetInfoRequest(); while (reader.pos < end) { const tag = reader.uint32(); switch (tag >>> 3) { default: reader.skipType(tag & 7); break; } } return message; }, fromJSON(_: any): GetInfoRequest { return {}; }, toJSON(_: GetInfoRequest): unknown { const obj: any = {}; return obj; }, fromPartial(_: DeepPartial): GetInfoRequest { const message = createBaseGetInfoRequest(); return message; }, }; function createBaseGetInfoResponse(): GetInfoResponse { return { premStatus: false, qualStatus: false, qualifiedForWorkWith: [], tariff: '', userId: '', riskLevelCode: '' }; } export const GetInfoResponse = { encode(message: GetInfoResponse, writer: _m0.Writer = _m0.Writer.create()): _m0.Writer { 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: _m0.Reader | Uint8Array, length?: number): GetInfoResponse { const reader = input instanceof _m0.Reader ? input : new _m0.Reader(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: message.premStatus = reader.bool(); break; case 2: message.qualStatus = reader.bool(); break; case 3: message.qualifiedForWorkWith.push(reader.string()); break; case 4: message.tariff = reader.string(); break; case 9: message.userId = reader.string(); break; case 12: message.riskLevelCode = reader.string(); break; default: reader.skipType(tag & 7); break; } } return message; }, fromJSON(object: any): GetInfoResponse { return { premStatus: isSet(object.premStatus) ? Boolean(object.premStatus) : false, qualStatus: isSet(object.qualStatus) ? Boolean(object.qualStatus) : false, qualifiedForWorkWith: Array.isArray(object?.qualifiedForWorkWith) ? object.qualifiedForWorkWith.map((e: any) => String(e)) : [], tariff: isSet(object.tariff) ? String(object.tariff) : '', userId: isSet(object.userId) ? String(object.userId) : '', riskLevelCode: isSet(object.riskLevelCode) ? String(object.riskLevelCode) : '', }; }, toJSON(message: GetInfoResponse): unknown { const obj: any = {}; message.premStatus !== undefined && (obj.premStatus = message.premStatus); message.qualStatus !== undefined && (obj.qualStatus = message.qualStatus); if (message.qualifiedForWorkWith) { obj.qualifiedForWorkWith = message.qualifiedForWorkWith.map(e => e); } else { obj.qualifiedForWorkWith = []; } message.tariff !== undefined && (obj.tariff = message.tariff); message.userId !== undefined && (obj.userId = message.userId); message.riskLevelCode !== undefined && (obj.riskLevelCode = message.riskLevelCode); return obj; }, fromPartial(object: DeepPartial): GetInfoResponse { const message = createBaseGetInfoResponse(); message.premStatus = object.premStatus ?? false; message.qualStatus = object.qualStatus ?? false; message.qualifiedForWorkWith = object.qualifiedForWorkWith?.map(e => e) || []; message.tariff = object.tariff ?? ''; message.userId = object.userId ?? ''; message.riskLevelCode = object.riskLevelCode ?? ''; return message; }, }; function createBaseGetBankAccountsRequest(): GetBankAccountsRequest { return {}; } export const GetBankAccountsRequest = { encode(_: GetBankAccountsRequest, writer: _m0.Writer = _m0.Writer.create()): _m0.Writer { return writer; }, decode(input: _m0.Reader | Uint8Array, length?: number): GetBankAccountsRequest { const reader = input instanceof _m0.Reader ? input : new _m0.Reader(input); let end = length === undefined ? reader.len : reader.pos + length; const message = createBaseGetBankAccountsRequest(); while (reader.pos < end) { const tag = reader.uint32(); switch (tag >>> 3) { default: reader.skipType(tag & 7); break; } } return message; }, fromJSON(_: any): GetBankAccountsRequest { return {}; }, toJSON(_: GetBankAccountsRequest): unknown { const obj: any = {}; return obj; }, fromPartial(_: DeepPartial): GetBankAccountsRequest { const message = createBaseGetBankAccountsRequest(); return message; }, }; function createBaseGetBankAccountsResponse(): GetBankAccountsResponse { return { bankAccounts: [] }; } export const GetBankAccountsResponse = { encode(message: GetBankAccountsResponse, writer: _m0.Writer = _m0.Writer.create()): _m0.Writer { for (const v of message.bankAccounts) { BankAccount.encode(v!, writer.uint32(10).fork()).ldelim(); } return writer; }, decode(input: _m0.Reader | Uint8Array, length?: number): GetBankAccountsResponse { const reader = input instanceof _m0.Reader ? input : new _m0.Reader(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: message.bankAccounts.push(BankAccount.decode(reader, reader.uint32())); break; default: reader.skipType(tag & 7); break; } } return message; }, fromJSON(object: any): GetBankAccountsResponse { return { bankAccounts: Array.isArray(object?.bankAccounts) ? object.bankAccounts.map((e: any) => BankAccount.fromJSON(e)) : [], }; }, toJSON(message: GetBankAccountsResponse): unknown { const obj: any = {}; if (message.bankAccounts) { obj.bankAccounts = message.bankAccounts.map(e => (e ? BankAccount.toJSON(e) : undefined)); } else { obj.bankAccounts = []; } return obj; }, fromPartial(object: DeepPartial): GetBankAccountsResponse { const message = createBaseGetBankAccountsResponse(); message.bankAccounts = object.bankAccounts?.map(e => BankAccount.fromPartial(e)) || []; return message; }, }; function createBaseBankAccount(): BankAccount { return { id: '', name: '', money: [], openedDate: undefined, type: 0 }; } export const BankAccount = { encode(message: BankAccount, writer: _m0.Writer = _m0.Writer.create()): _m0.Writer { if (message.id !== '') { writer.uint32(10).string(message.id); } if (message.name !== '') { writer.uint32(18).string(message.name); } for (const v of message.money) { MoneyValue.encode(v!, writer.uint32(26).fork()).ldelim(); } if (message.openedDate !== undefined) { Timestamp.encode(toTimestamp(message.openedDate), writer.uint32(34).fork()).ldelim(); } if (message.type !== 0) { writer.uint32(40).int32(message.type); } return writer; }, decode(input: _m0.Reader | Uint8Array, length?: number): BankAccount { const reader = input instanceof _m0.Reader ? input : new _m0.Reader(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: message.id = reader.string(); break; case 2: message.name = reader.string(); break; case 3: message.money.push(MoneyValue.decode(reader, reader.uint32())); break; case 4: message.openedDate = fromTimestamp(Timestamp.decode(reader, reader.uint32())); break; case 5: message.type = reader.int32() as any; break; default: reader.skipType(tag & 7); break; } } return message; }, fromJSON(object: any): BankAccount { return { id: isSet(object.id) ? String(object.id) : '', name: isSet(object.name) ? String(object.name) : '', money: Array.isArray(object?.money) ? object.money.map((e: any) => MoneyValue.fromJSON(e)) : [], openedDate: isSet(object.openedDate) ? fromJsonTimestamp(object.openedDate) : undefined, type: isSet(object.type) ? accountTypeFromJSON(object.type) : 0, }; }, toJSON(message: BankAccount): unknown { const obj: any = {}; message.id !== undefined && (obj.id = message.id); message.name !== undefined && (obj.name = message.name); if (message.money) { obj.money = message.money.map(e => (e ? MoneyValue.toJSON(e) : undefined)); } else { obj.money = []; } message.openedDate !== undefined && (obj.openedDate = message.openedDate.toISOString()); message.type !== undefined && (obj.type = accountTypeToJSON(message.type)); return obj; }, fromPartial(object: DeepPartial): BankAccount { const message = createBaseBankAccount(); message.id = object.id ?? ''; message.name = object.name ?? ''; message.money = object.money?.map(e => MoneyValue.fromPartial(e)) || []; message.openedDate = object.openedDate ?? undefined; message.type = object.type ?? 0; return message; }, }; function createBaseCurrencyTransferRequest(): CurrencyTransferRequest { return { fromAccountId: '', toAccountId: '', amount: undefined, transactionId: '' }; } export const CurrencyTransferRequest = { encode(message: CurrencyTransferRequest, writer: _m0.Writer = _m0.Writer.create()): _m0.Writer { if (message.fromAccountId !== '') { writer.uint32(10).string(message.fromAccountId); } if (message.toAccountId !== '') { writer.uint32(18).string(message.toAccountId); } if (message.amount !== undefined) { MoneyValue.encode(message.amount, writer.uint32(26).fork()).ldelim(); } if (message.transactionId !== '') { writer.uint32(34).string(message.transactionId); } return writer; }, decode(input: _m0.Reader | Uint8Array, length?: number): CurrencyTransferRequest { const reader = input instanceof _m0.Reader ? input : new _m0.Reader(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: message.fromAccountId = reader.string(); break; case 2: message.toAccountId = reader.string(); break; case 3: message.amount = MoneyValue.decode(reader, reader.uint32()); break; case 4: message.transactionId = reader.string(); break; default: reader.skipType(tag & 7); break; } } return message; }, fromJSON(object: any): CurrencyTransferRequest { return { fromAccountId: isSet(object.fromAccountId) ? String(object.fromAccountId) : '', toAccountId: isSet(object.toAccountId) ? String(object.toAccountId) : '', amount: isSet(object.amount) ? MoneyValue.fromJSON(object.amount) : undefined, transactionId: isSet(object.transactionId) ? String(object.transactionId) : '', }; }, toJSON(message: CurrencyTransferRequest): unknown { const obj: any = {}; message.fromAccountId !== undefined && (obj.fromAccountId = message.fromAccountId); message.toAccountId !== undefined && (obj.toAccountId = message.toAccountId); message.amount !== undefined && (obj.amount = message.amount ? MoneyValue.toJSON(message.amount) : undefined); message.transactionId !== undefined && (obj.transactionId = message.transactionId); return obj; }, fromPartial(object: DeepPartial): CurrencyTransferRequest { const message = createBaseCurrencyTransferRequest(); message.fromAccountId = object.fromAccountId ?? ''; message.toAccountId = object.toAccountId ?? ''; message.amount = object.amount !== undefined && object.amount !== null ? MoneyValue.fromPartial(object.amount) : undefined; message.transactionId = object.transactionId ?? ''; return message; }, }; function createBaseCurrencyTransferResponse(): CurrencyTransferResponse { return {}; } export const CurrencyTransferResponse = { encode(_: CurrencyTransferResponse, writer: _m0.Writer = _m0.Writer.create()): _m0.Writer { return writer; }, decode(input: _m0.Reader | Uint8Array, length?: number): CurrencyTransferResponse { const reader = input instanceof _m0.Reader ? input : new _m0.Reader(input); let end = length === undefined ? reader.len : reader.pos + length; const message = createBaseCurrencyTransferResponse(); while (reader.pos < end) { const tag = reader.uint32(); switch (tag >>> 3) { default: reader.skipType(tag & 7); break; } } return message; }, fromJSON(_: any): CurrencyTransferResponse { return {}; }, toJSON(_: CurrencyTransferResponse): unknown { const obj: any = {}; return obj; }, fromPartial(_: DeepPartial): CurrencyTransferResponse { const message = createBaseCurrencyTransferResponse(); return message; }, }; function createBasePayInRequest(): PayInRequest { return { fromAccountId: '', toAccountId: '', amount: undefined }; } export const PayInRequest = { encode(message: PayInRequest, writer: _m0.Writer = _m0.Writer.create()): _m0.Writer { if (message.fromAccountId !== '') { writer.uint32(10).string(message.fromAccountId); } if (message.toAccountId !== '') { writer.uint32(18).string(message.toAccountId); } if (message.amount !== undefined) { MoneyValue.encode(message.amount, writer.uint32(26).fork()).ldelim(); } return writer; }, decode(input: _m0.Reader | Uint8Array, length?: number): PayInRequest { const reader = input instanceof _m0.Reader ? input : new _m0.Reader(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: message.fromAccountId = reader.string(); break; case 2: message.toAccountId = reader.string(); break; case 3: message.amount = MoneyValue.decode(reader, reader.uint32()); break; default: reader.skipType(tag & 7); break; } } return message; }, fromJSON(object: any): PayInRequest { return { fromAccountId: isSet(object.fromAccountId) ? String(object.fromAccountId) : '', toAccountId: isSet(object.toAccountId) ? String(object.toAccountId) : '', amount: isSet(object.amount) ? MoneyValue.fromJSON(object.amount) : undefined, }; }, toJSON(message: PayInRequest): unknown { const obj: any = {}; message.fromAccountId !== undefined && (obj.fromAccountId = message.fromAccountId); message.toAccountId !== undefined && (obj.toAccountId = message.toAccountId); message.amount !== undefined && (obj.amount = message.amount ? MoneyValue.toJSON(message.amount) : undefined); return obj; }, fromPartial(object: DeepPartial): PayInRequest { const message = createBasePayInRequest(); message.fromAccountId = object.fromAccountId ?? ''; message.toAccountId = object.toAccountId ?? ''; message.amount = object.amount !== undefined && object.amount !== null ? MoneyValue.fromPartial(object.amount) : undefined; return message; }, }; function createBasePayInResponse(): PayInResponse { return {}; } export const PayInResponse = { encode(_: PayInResponse, writer: _m0.Writer = _m0.Writer.create()): _m0.Writer { return writer; }, decode(input: _m0.Reader | Uint8Array, length?: number): PayInResponse { const reader = input instanceof _m0.Reader ? input : new _m0.Reader(input); let end = length === undefined ? reader.len : reader.pos + length; const message = createBasePayInResponse(); while (reader.pos < end) { const tag = reader.uint32(); switch (tag >>> 3) { default: reader.skipType(tag & 7); break; } } return message; }, fromJSON(_: any): PayInResponse { return {}; }, toJSON(_: PayInResponse): unknown { const obj: any = {}; return obj; }, fromPartial(_: DeepPartial): PayInResponse { const message = createBasePayInResponse(); return message; }, }; function createBaseGetAccountValuesRequest(): GetAccountValuesRequest { return { accounts: [], values: [] }; } export const GetAccountValuesRequest = { encode(message: GetAccountValuesRequest, writer: _m0.Writer = _m0.Writer.create()): _m0.Writer { 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: _m0.Reader | Uint8Array, length?: number): GetAccountValuesRequest { const reader = input instanceof _m0.Reader ? input : new _m0.Reader(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: message.accounts.push(reader.string()); break; case 2: if ((tag & 7) === 2) { const end2 = reader.uint32() + reader.pos; while (reader.pos < end2) { message.values.push(reader.int32() as any); } } else { message.values.push(reader.int32() as any); } break; default: reader.skipType(tag & 7); break; } } return message; }, fromJSON(object: any): GetAccountValuesRequest { return { accounts: Array.isArray(object?.accounts) ? object.accounts.map((e: any) => String(e)) : [], values: Array.isArray(object?.values) ? object.values.map((e: any) => accountValueFromJSON(e)) : [], }; }, toJSON(message: GetAccountValuesRequest): unknown { const obj: any = {}; if (message.accounts) { obj.accounts = message.accounts.map(e => e); } else { obj.accounts = []; } if (message.values) { obj.values = message.values.map(e => accountValueToJSON(e)); } else { obj.values = []; } return obj; }, fromPartial(object: DeepPartial): GetAccountValuesRequest { const message = createBaseGetAccountValuesRequest(); message.accounts = object.accounts?.map(e => e) || []; message.values = object.values?.map(e => e) || []; return message; }, }; function createBaseGetAccountValuesResponse(): GetAccountValuesResponse { return { accounts: [] }; } export const GetAccountValuesResponse = { encode(message: GetAccountValuesResponse, writer: _m0.Writer = _m0.Writer.create()): _m0.Writer { for (const v of message.accounts) { AccountValuesWithParameters.encode(v!, writer.uint32(10).fork()).ldelim(); } return writer; }, decode(input: _m0.Reader | Uint8Array, length?: number): GetAccountValuesResponse { const reader = input instanceof _m0.Reader ? input : new _m0.Reader(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: message.accounts.push(AccountValuesWithParameters.decode(reader, reader.uint32())); break; default: reader.skipType(tag & 7); break; } } return message; }, fromJSON(object: any): GetAccountValuesResponse { return { accounts: Array.isArray(object?.accounts) ? object.accounts.map((e: any) => AccountValuesWithParameters.fromJSON(e)) : [], }; }, toJSON(message: GetAccountValuesResponse): unknown { const obj: any = {}; if (message.accounts) { obj.accounts = message.accounts.map(e => (e ? AccountValuesWithParameters.toJSON(e) : undefined)); } else { obj.accounts = []; } return obj; }, fromPartial(object: DeepPartial): GetAccountValuesResponse { const message = createBaseGetAccountValuesResponse(); message.accounts = object.accounts?.map(e => AccountValuesWithParameters.fromPartial(e)) || []; return message; }, }; function createBaseAccountValuesWithParameters(): AccountValuesWithParameters { return { accountId: '', values: [] }; } export const AccountValuesWithParameters = { encode(message: AccountValuesWithParameters, writer: _m0.Writer = _m0.Writer.create()): _m0.Writer { if (message.accountId !== '') { writer.uint32(10).string(message.accountId); } for (const v of message.values) { InstrumentParameter.encode(v!, writer.uint32(18).fork()).ldelim(); } return writer; }, decode(input: _m0.Reader | Uint8Array, length?: number): AccountValuesWithParameters { const reader = input instanceof _m0.Reader ? input : new _m0.Reader(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: message.accountId = reader.string(); break; case 2: message.values.push(InstrumentParameter.decode(reader, reader.uint32())); break; default: reader.skipType(tag & 7); break; } } return message; }, fromJSON(object: any): AccountValuesWithParameters { return { accountId: isSet(object.accountId) ? String(object.accountId) : '', values: Array.isArray(object?.values) ? object.values.map((e: any) => InstrumentParameter.fromJSON(e)) : [], }; }, toJSON(message: AccountValuesWithParameters): unknown { const obj: any = {}; message.accountId !== undefined && (obj.accountId = message.accountId); if (message.values) { obj.values = message.values.map(e => (e ? InstrumentParameter.toJSON(e) : undefined)); } else { obj.values = []; } return obj; }, fromPartial(object: DeepPartial): AccountValuesWithParameters { const message = createBaseAccountValuesWithParameters(); message.accountId = object.accountId ?? ''; message.values = object.values?.map(e => InstrumentParameter.fromPartial(e)) || []; return message; }, }; function createBaseInstrumentParameter(): InstrumentParameter { return { name: 0, value: undefined }; } export const InstrumentParameter = { encode(message: InstrumentParameter, writer: _m0.Writer = _m0.Writer.create()): _m0.Writer { if (message.name !== 0) { writer.uint32(8).int32(message.name); } if (message.value !== undefined) { MoneyValue.encode(message.value, writer.uint32(18).fork()).ldelim(); } return writer; }, decode(input: _m0.Reader | Uint8Array, length?: number): InstrumentParameter { const reader = input instanceof _m0.Reader ? input : new _m0.Reader(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: message.name = reader.int32() as any; break; case 2: message.value = MoneyValue.decode(reader, reader.uint32()); break; default: reader.skipType(tag & 7); break; } } return message; }, fromJSON(object: any): InstrumentParameter { return { name: isSet(object.name) ? accountValueFromJSON(object.name) : 0, value: isSet(object.value) ? MoneyValue.fromJSON(object.value) : undefined, }; }, toJSON(message: InstrumentParameter): unknown { const obj: any = {}; message.name !== undefined && (obj.name = accountValueToJSON(message.name)); message.value !== undefined && (obj.value = message.value ? MoneyValue.toJSON(message.value) : undefined); return obj; }, fromPartial(object: DeepPartial): InstrumentParameter { const message = createBaseInstrumentParameter(); message.name = object.name ?? 0; message.value = object.value !== undefined && object.value !== null ? MoneyValue.fromPartial(object.value) : undefined; return message; }, }; /** * С помощью сервиса можно получить:
1. * список счетов пользователя;
2. маржинальные показатели по счeту. */ export type UsersServiceDefinition = typeof UsersServiceDefinition; export const UsersServiceDefinition = { name: 'UsersService', fullName: 'tinkoff.public.invest.api.contract.v1.UsersService', methods: { /** * GetAccounts — счета пользователя * Получить список счетов. */ getAccounts: { name: 'GetAccounts', requestType: GetAccountsRequest, requestStream: false, responseType: GetAccountsResponse, responseStream: false, options: {}, }, /** * GetMarginAttributes — маржинальные показатели по счeту * Метод позволяет получить маржинальные показатели и ликвидность по заданному счeту. */ getMarginAttributes: { name: 'GetMarginAttributes', requestType: GetMarginAttributesRequest, requestStream: false, responseType: GetMarginAttributesResponse, responseStream: false, options: {}, }, /** * GetUserTariff — тариф пользователя * Получить информацию о текущих лимитах на подклчение, согласно текущему тарифу пользователя. */ getUserTariff: { name: 'GetUserTariff', requestType: GetUserTariffRequest, requestStream: false, responseType: GetUserTariffResponse, responseStream: false, options: {}, }, /** * GetInfo — информация о пользователе * Получить информацию о пользователе: тариф, признак квалификации, пройденные тесты и др. */ getInfo: { name: 'GetInfo', requestType: GetInfoRequest, requestStream: false, responseType: GetInfoResponse, responseStream: false, options: {}, }, /** * GetBankAccounts — банковские счета пользователя * Получить список счетов пользователя, в том числе и банковских. */ getBankAccounts: { name: 'GetBankAccounts', requestType: GetBankAccountsRequest, requestStream: false, responseType: GetBankAccountsResponse, responseStream: false, options: {}, }, /** * CurrencyTransfer — перевод денежных средств между счетами * Перевести денежные средства между брокерскими счетами */ currencyTransfer: { name: 'CurrencyTransfer', requestType: CurrencyTransferRequest, requestStream: false, responseType: CurrencyTransferResponse, responseStream: false, options: {}, }, /** * PayIn — пополнение брокерского счета * Пополнить брокерский счёт с банковского */ payIn: { name: 'PayIn', requestType: PayInRequest, requestStream: false, responseType: PayInResponse, responseStream: false, options: {}, }, /** * GetAccountValues — дополнительные показатели счетов * Метод предназначен для получения дополнительных показателей счетов */ getAccountValues: { name: 'GetAccountValues', requestType: GetAccountValuesRequest, requestStream: false, responseType: GetAccountValuesResponse, responseStream: false, options: {}, }, }, } as const; type Builtin = Date | Function | Uint8Array | string | number | boolean | undefined; export type DeepPartial = T extends Builtin ? T : T extends Array ? Array> : T extends ReadonlyArray ? ReadonlyArray> : T extends {} ? { [K in keyof T]?: DeepPartial } : Partial; function toTimestamp(date: Date): Timestamp { const seconds = date.getTime() / 1_000; const nanos = (date.getTime() % 1_000) * 1_000_000; return { seconds, nanos }; } function fromTimestamp(t: Timestamp): Date { let millis = t.seconds * 1_000; millis += t.nanos / 1_000_000; return new Date(millis); } function fromJsonTimestamp(o: any): Date { if (o instanceof Date) { return o; } else if (typeof o === 'string') { return new Date(o); } else { return fromTimestamp(Timestamp.fromJSON(o)); } } if (_m0.util.Long !== Long) { _m0.util.Long = Long as any; _m0.configure(); } function isSet(value: any): boolean { return value !== null && value !== undefined; }