UNPKG

tinkoff-invest-api

Version:
1,596 lines (1,493 loc) 156 kB
/* eslint-disable */ import Long from "long"; import type { CallContext, CallOptions } from "nice-grpc-common"; import _m0 from "protobufjs/minimal.js"; import { ErrorDetail, MoneyValue, Ping, PriceType, priceTypeFromJSON, priceTypeToJSON, Quotation, ResponseMetadata, ResultSubscriptionStatus, resultSubscriptionStatusFromJSON, resultSubscriptionStatusToJSON, } from "./common.js"; import { Timestamp } from "./google/protobuf/timestamp.js"; export const protobufPackage = "tinkoff.public.invest.api.contract.v1"; /** Направление операции. */ export enum OrderDirection { /** ORDER_DIRECTION_UNSPECIFIED - Значение не указано */ ORDER_DIRECTION_UNSPECIFIED = 0, /** ORDER_DIRECTION_BUY - Покупка */ ORDER_DIRECTION_BUY = 1, /** ORDER_DIRECTION_SELL - Продажа */ ORDER_DIRECTION_SELL = 2, UNRECOGNIZED = -1, } export function orderDirectionFromJSON(object: any): OrderDirection { switch (object) { case 0: case "ORDER_DIRECTION_UNSPECIFIED": return OrderDirection.ORDER_DIRECTION_UNSPECIFIED; case 1: case "ORDER_DIRECTION_BUY": return OrderDirection.ORDER_DIRECTION_BUY; case 2: case "ORDER_DIRECTION_SELL": return OrderDirection.ORDER_DIRECTION_SELL; case -1: case "UNRECOGNIZED": default: return OrderDirection.UNRECOGNIZED; } } export function orderDirectionToJSON(object: OrderDirection): string { switch (object) { case OrderDirection.ORDER_DIRECTION_UNSPECIFIED: return "ORDER_DIRECTION_UNSPECIFIED"; case OrderDirection.ORDER_DIRECTION_BUY: return "ORDER_DIRECTION_BUY"; case OrderDirection.ORDER_DIRECTION_SELL: return "ORDER_DIRECTION_SELL"; case OrderDirection.UNRECOGNIZED: default: return "UNRECOGNIZED"; } } /** Тип заявки. */ export enum OrderType { /** ORDER_TYPE_UNSPECIFIED - Значение не указано */ ORDER_TYPE_UNSPECIFIED = 0, /** ORDER_TYPE_LIMIT - Лимитная */ ORDER_TYPE_LIMIT = 1, /** ORDER_TYPE_MARKET - Рыночная */ ORDER_TYPE_MARKET = 2, /** ORDER_TYPE_BESTPRICE - Лучшая цена */ ORDER_TYPE_BESTPRICE = 3, UNRECOGNIZED = -1, } export function orderTypeFromJSON(object: any): OrderType { switch (object) { case 0: case "ORDER_TYPE_UNSPECIFIED": return OrderType.ORDER_TYPE_UNSPECIFIED; case 1: case "ORDER_TYPE_LIMIT": return OrderType.ORDER_TYPE_LIMIT; case 2: case "ORDER_TYPE_MARKET": return OrderType.ORDER_TYPE_MARKET; case 3: case "ORDER_TYPE_BESTPRICE": return OrderType.ORDER_TYPE_BESTPRICE; case -1: case "UNRECOGNIZED": default: return OrderType.UNRECOGNIZED; } } export function orderTypeToJSON(object: OrderType): string { switch (object) { case OrderType.ORDER_TYPE_UNSPECIFIED: return "ORDER_TYPE_UNSPECIFIED"; case OrderType.ORDER_TYPE_LIMIT: return "ORDER_TYPE_LIMIT"; case OrderType.ORDER_TYPE_MARKET: return "ORDER_TYPE_MARKET"; case OrderType.ORDER_TYPE_BESTPRICE: return "ORDER_TYPE_BESTPRICE"; case OrderType.UNRECOGNIZED: default: return "UNRECOGNIZED"; } } /** Текущий статус заявки (поручения) */ export enum OrderExecutionReportStatus { EXECUTION_REPORT_STATUS_UNSPECIFIED = 0, /** EXECUTION_REPORT_STATUS_FILL - Исполнена */ EXECUTION_REPORT_STATUS_FILL = 1, /** EXECUTION_REPORT_STATUS_REJECTED - Отклонена */ EXECUTION_REPORT_STATUS_REJECTED = 2, /** EXECUTION_REPORT_STATUS_CANCELLED - Отменена пользователем */ EXECUTION_REPORT_STATUS_CANCELLED = 3, /** EXECUTION_REPORT_STATUS_NEW - Новая */ EXECUTION_REPORT_STATUS_NEW = 4, /** EXECUTION_REPORT_STATUS_PARTIALLYFILL - Частично исполнена */ EXECUTION_REPORT_STATUS_PARTIALLYFILL = 5, UNRECOGNIZED = -1, } export function orderExecutionReportStatusFromJSON(object: any): OrderExecutionReportStatus { switch (object) { case 0: case "EXECUTION_REPORT_STATUS_UNSPECIFIED": return OrderExecutionReportStatus.EXECUTION_REPORT_STATUS_UNSPECIFIED; case 1: case "EXECUTION_REPORT_STATUS_FILL": return OrderExecutionReportStatus.EXECUTION_REPORT_STATUS_FILL; case 2: case "EXECUTION_REPORT_STATUS_REJECTED": return OrderExecutionReportStatus.EXECUTION_REPORT_STATUS_REJECTED; case 3: case "EXECUTION_REPORT_STATUS_CANCELLED": return OrderExecutionReportStatus.EXECUTION_REPORT_STATUS_CANCELLED; case 4: case "EXECUTION_REPORT_STATUS_NEW": return OrderExecutionReportStatus.EXECUTION_REPORT_STATUS_NEW; case 5: case "EXECUTION_REPORT_STATUS_PARTIALLYFILL": return OrderExecutionReportStatus.EXECUTION_REPORT_STATUS_PARTIALLYFILL; case -1: case "UNRECOGNIZED": default: return OrderExecutionReportStatus.UNRECOGNIZED; } } export function orderExecutionReportStatusToJSON(object: OrderExecutionReportStatus): string { switch (object) { case OrderExecutionReportStatus.EXECUTION_REPORT_STATUS_UNSPECIFIED: return "EXECUTION_REPORT_STATUS_UNSPECIFIED"; case OrderExecutionReportStatus.EXECUTION_REPORT_STATUS_FILL: return "EXECUTION_REPORT_STATUS_FILL"; case OrderExecutionReportStatus.EXECUTION_REPORT_STATUS_REJECTED: return "EXECUTION_REPORT_STATUS_REJECTED"; case OrderExecutionReportStatus.EXECUTION_REPORT_STATUS_CANCELLED: return "EXECUTION_REPORT_STATUS_CANCELLED"; case OrderExecutionReportStatus.EXECUTION_REPORT_STATUS_NEW: return "EXECUTION_REPORT_STATUS_NEW"; case OrderExecutionReportStatus.EXECUTION_REPORT_STATUS_PARTIALLYFILL: return "EXECUTION_REPORT_STATUS_PARTIALLYFILL"; case OrderExecutionReportStatus.UNRECOGNIZED: default: return "UNRECOGNIZED"; } } /** Алгоритм исполнения заявки */ export enum TimeInForceType { /** TIME_IN_FORCE_UNSPECIFIED - Значение не определено см. TIME_IN_FORCE_DAY */ TIME_IN_FORCE_UNSPECIFIED = 0, /** TIME_IN_FORCE_DAY - Заявка действует до конца торгового дня. Значение по умолчанию */ TIME_IN_FORCE_DAY = 1, /** TIME_IN_FORCE_FILL_AND_KILL - Если в момент выставления возможно исполнение заявки(в т.ч. частичное), заявка будет исполнена или отменена сразу после выставления */ TIME_IN_FORCE_FILL_AND_KILL = 2, /** TIME_IN_FORCE_FILL_OR_KILL - Если в момент выставления возможно полное исполнение заявки, заявка будет исполнена или отменена сразу после выставления, недоступно для срочного рынка и торговли по выходным */ TIME_IN_FORCE_FILL_OR_KILL = 3, UNRECOGNIZED = -1, } export function timeInForceTypeFromJSON(object: any): TimeInForceType { switch (object) { case 0: case "TIME_IN_FORCE_UNSPECIFIED": return TimeInForceType.TIME_IN_FORCE_UNSPECIFIED; case 1: case "TIME_IN_FORCE_DAY": return TimeInForceType.TIME_IN_FORCE_DAY; case 2: case "TIME_IN_FORCE_FILL_AND_KILL": return TimeInForceType.TIME_IN_FORCE_FILL_AND_KILL; case 3: case "TIME_IN_FORCE_FILL_OR_KILL": return TimeInForceType.TIME_IN_FORCE_FILL_OR_KILL; case -1: case "UNRECOGNIZED": default: return TimeInForceType.UNRECOGNIZED; } } export function timeInForceTypeToJSON(object: TimeInForceType): string { switch (object) { case TimeInForceType.TIME_IN_FORCE_UNSPECIFIED: return "TIME_IN_FORCE_UNSPECIFIED"; case TimeInForceType.TIME_IN_FORCE_DAY: return "TIME_IN_FORCE_DAY"; case TimeInForceType.TIME_IN_FORCE_FILL_AND_KILL: return "TIME_IN_FORCE_FILL_AND_KILL"; case TimeInForceType.TIME_IN_FORCE_FILL_OR_KILL: return "TIME_IN_FORCE_FILL_OR_KILL"; case TimeInForceType.UNRECOGNIZED: default: return "UNRECOGNIZED"; } } /** Тип идентификатора заявки */ export enum OrderIdType { /** ORDER_ID_TYPE_UNSPECIFIED - Тип идентификатора не указан. */ ORDER_ID_TYPE_UNSPECIFIED = 0, /** ORDER_ID_TYPE_EXCHANGE - Биржевой идентификатор */ ORDER_ID_TYPE_EXCHANGE = 1, /** ORDER_ID_TYPE_REQUEST - Ключ идемпотентности, переданный клиентом */ ORDER_ID_TYPE_REQUEST = 2, UNRECOGNIZED = -1, } export function orderIdTypeFromJSON(object: any): OrderIdType { switch (object) { case 0: case "ORDER_ID_TYPE_UNSPECIFIED": return OrderIdType.ORDER_ID_TYPE_UNSPECIFIED; case 1: case "ORDER_ID_TYPE_EXCHANGE": return OrderIdType.ORDER_ID_TYPE_EXCHANGE; case 2: case "ORDER_ID_TYPE_REQUEST": return OrderIdType.ORDER_ID_TYPE_REQUEST; case -1: case "UNRECOGNIZED": default: return OrderIdType.UNRECOGNIZED; } } export function orderIdTypeToJSON(object: OrderIdType): string { switch (object) { case OrderIdType.ORDER_ID_TYPE_UNSPECIFIED: return "ORDER_ID_TYPE_UNSPECIFIED"; case OrderIdType.ORDER_ID_TYPE_EXCHANGE: return "ORDER_ID_TYPE_EXCHANGE"; case OrderIdType.ORDER_ID_TYPE_REQUEST: return "ORDER_ID_TYPE_REQUEST"; case OrderIdType.UNRECOGNIZED: default: return "UNRECOGNIZED"; } } /** Запрос установки соединения. */ export interface TradesStreamRequest { /** Идентификаторы счетов. */ accounts: string[]; /** Задержка пинг сообщений milliseconds 5000-180000, default 120000 */ pingDelayMs?: number | undefined; } /** Информация о торговых поручениях. */ export interface TradesStreamResponse { /** Информация об исполнении торгового поручения. */ orderTrades?: | OrderTrades | undefined; /** Проверка активности стрима. */ ping?: | Ping | undefined; /** Ответ на запрос на подписку. */ subscription?: SubscriptionResponse | undefined; } /** Информация об исполнении торгового поручения. */ export interface OrderTrades { /** Идентификатор торгового поручения. */ orderId: string; /** Дата и время создания сообщения в часовом поясе UTC. */ createdAt?: | Date | undefined; /** Направление сделки. */ direction: OrderDirection; /** Figi-идентификатор инструмента. */ figi: string; /** Массив сделок. */ trades: OrderTrade[]; /** Идентификатор счёта. */ accountId: string; /** UID идентификатор инструмента. */ instrumentUid: string; } /** Информация о сделке. */ export interface OrderTrade { /** Дата и время совершения сделки в часовом поясе UTC. */ dateTime?: | Date | undefined; /** Цена за 1 инструмент, по которой совершена сделка. */ price?: | Quotation | undefined; /** Количество штук в сделке. */ quantity: number; /** Идентификатор сделки. */ tradeId: string; } /** Запрос выставления торгового поручения. */ export interface PostOrderRequest { /** * Deprecated Figi-идентификатор инструмента. Необходимо использовать instrument_id. * * @deprecated */ figi?: | string | undefined; /** Количество лотов. */ quantity: number; /** Цена за 1 инструмент. Для получения стоимости лота требуется умножить на лотность инструмента. Игнорируется для рыночных поручений. */ price?: | Quotation | undefined; /** Направление операции. */ direction: OrderDirection; /** Номер счёта. */ accountId: string; /** Тип заявки. */ orderType: OrderType; /** Идентификатор запроса выставления поручения для целей идемпотентности в формате UID. Максимальная длина 36 символов. */ orderId: string; /** Идентификатор инструмента, принимает значения Figi или Instrument_uid. */ instrumentId: string; /** Алгоритм исполнения поручения, применяется только к лимитной заявке. */ timeInForce: TimeInForceType; /** Тип цены. */ priceType: PriceType; } /** Информация о выставлении поручения. */ export interface PostOrderResponse { /** Биржевой идентификатор заявки. */ orderId: string; /** Текущий статус заявки. */ executionReportStatus: OrderExecutionReportStatus; /** Запрошено лотов. */ lotsRequested: number; /** Исполнено лотов. */ lotsExecuted: number; /** Начальная цена заявки. Произведение количества запрошенных лотов на цену. */ initialOrderPrice?: | MoneyValue | undefined; /** Исполненная средняя цена одного инструмента в заявке. */ executedOrderPrice?: | MoneyValue | undefined; /** Итоговая стоимость заявки, включающая все комиссии. */ totalOrderAmount?: | MoneyValue | undefined; /** Начальная комиссия. Комиссия рассчитанная при выставлении заявки. */ initialCommission?: | MoneyValue | undefined; /** Фактическая комиссия по итогам исполнения заявки. */ executedCommission?: | MoneyValue | undefined; /** Значение НКД (накопленного купонного дохода) на дату. Подробнее: [НКД при выставлении торговых поручений](https://russianinvestments.github.io/investAPI/head-orders#coupon) */ aciValue?: | MoneyValue | undefined; /** Figi-идентификатор инструмента. */ figi: string; /** Направление сделки. */ direction: OrderDirection; /** Начальная цена за 1 инструмент. Для получения стоимости лота требуется умножить на лотность инструмента. */ initialSecurityPrice?: | MoneyValue | undefined; /** Тип заявки. */ orderType: OrderType; /** Дополнительные данные об исполнении заявки. */ message: string; /** Начальная цена заявки в пунктах (для фьючерсов). */ initialOrderPricePt?: | Quotation | undefined; /** UID идентификатор инструмента. */ instrumentUid: string; /** Идентификатор ключа идемпотентности, переданный клиентом, в формате UID. Максимальная длина 36 символов. */ orderRequestId: string; /** Метадата */ responseMetadata?: ResponseMetadata | undefined; } /** Запрос выставления асинхронного торгового поручения. */ export interface PostOrderAsyncRequest { /** Идентификатор инструмента, принимает значения Figi или Instrument_uid. */ instrumentId: string; /** Количество лотов. */ quantity: number; /** Цена за 1 инструмент. Для получения стоимости лота требуется умножить на лотность инструмента. Игнорируется для рыночных поручений. */ price?: | Quotation | undefined; /** Направление операции. */ direction: OrderDirection; /** Номер счёта. */ accountId: string; /** Тип заявки. */ orderType: OrderType; /** Идентификатор запроса выставления поручения для целей идемпотентности в формате UID. Максимальная длина 36 символов. */ orderId: string; /** Алгоритм исполнения поручения, применяется только к лимитной заявке. */ timeInForce?: | TimeInForceType | undefined; /** Тип цены. */ priceType?: PriceType | undefined; } /** Результат выставления асинхронного торгового поручения. */ export interface PostOrderAsyncResponse { /** Идентификатор ключа идемпотентности, переданный клиентом, в формате UID. Максимальная длина 36 символов. */ orderRequestId: string; /** Текущий статус заявки. */ executionReportStatus: OrderExecutionReportStatus; /** Идентификатор торгового поручения. */ tradeIntentId?: string | undefined; } /** Запрос отмены торгового поручения. */ export interface CancelOrderRequest { /** Номер счёта. */ accountId: string; /** Идентификатор заявки. */ orderId: string; /** Тип идентификатора заявки. */ orderIdType?: OrderIdType | undefined; } /** Результат отмены торгового поручения. */ export interface CancelOrderResponse { /** Дата и время отмены заявки в часовом поясе UTC. */ time?: | Date | undefined; /** Метадата */ responseMetadata?: ResponseMetadata | undefined; } /** Запрос получения статуса торгового поручения. */ export interface GetOrderStateRequest { /** Номер счёта. */ accountId: string; /** Идентификатор заявки. */ orderId: string; /** Тип цены. */ priceType: PriceType; /** Тип идентификатора заявки. */ orderIdType?: OrderIdType | undefined; } /** Запрос получения списка активных торговых поручений. */ export interface GetOrdersRequest { /** Номер счёта. */ accountId: string; } /** Список активных торговых поручений. */ export interface GetOrdersResponse { /** Массив активных заявок. */ orders: OrderState[]; } /** Информация о торговом поручении. */ export interface OrderState { /** Биржевой идентификатор заявки. */ orderId: string; /** Текущий статус заявки. */ executionReportStatus: OrderExecutionReportStatus; /** Запрошено лотов. */ lotsRequested: number; /** Исполнено лотов. */ lotsExecuted: number; /** Начальная цена заявки. Произведение количества запрошенных лотов на цену. */ initialOrderPrice?: | MoneyValue | undefined; /** Исполненная цена заявки. Произведение средней цены покупки на количество лотов. */ executedOrderPrice?: | MoneyValue | undefined; /** Итоговая стоимость заявки, включающая все комиссии. */ totalOrderAmount?: | MoneyValue | undefined; /** Средняя цена позиции по сделке. */ averagePositionPrice?: | MoneyValue | undefined; /** Начальная комиссия. Комиссия, рассчитанная на момент подачи заявки. */ initialCommission?: | MoneyValue | undefined; /** Фактическая комиссия по итогам исполнения заявки. */ executedCommission?: | MoneyValue | undefined; /** Figi-идентификатор инструмента. */ figi: string; /** Направление заявки. */ direction: OrderDirection; /** Начальная цена за 1 инструмент. Для получения стоимости лота требуется умножить на лотность инструмента. */ initialSecurityPrice?: | MoneyValue | undefined; /** Стадии выполнения заявки. */ stages: OrderStage[]; /** Сервисная комиссия. */ serviceCommission?: | MoneyValue | undefined; /** Валюта заявки. */ currency: string; /** Тип заявки. */ orderType: OrderType; /** Дата и время выставления заявки в часовом поясе UTC. */ orderDate?: | Date | undefined; /** UID идентификатор инструмента. */ instrumentUid: string; /** Идентификатор ключа идемпотентности, переданный клиентом, в формате UID. Максимальная длина 36 символов. */ orderRequestId: string; } /** Сделки в рамках торгового поручения. */ export interface OrderStage { /** Цена за 1 инструмент. Для получения стоимости лота требуется умножить на лотность инструмента. */ price?: | MoneyValue | undefined; /** Количество лотов. */ quantity: number; /** Идентификатор сделки. */ tradeId: string; /** Время исполнения сделки */ executionTime?: Date | undefined; } /** Запрос изменения выставленной заявки. */ export interface ReplaceOrderRequest { /** Номер счета. */ accountId: string; /** Идентификатор заявки на бирже. */ orderId: string; /** Новый идентификатор запроса выставления поручения для целей идемпотентности. Максимальная длина 36 символов. Перезатирает старый ключ. */ idempotencyKey: string; /** Количество лотов. */ quantity: number; /** Цена за 1 инструмент. */ price?: | Quotation | undefined; /** Тип цены. */ priceType?: PriceType | undefined; } /** Запрос на расчет количества доступных для покупки/продажи лотов. Если не указывать цену инструмента, то расчет произведется по текущум ценам в стакане: по лучшему предложению для покупки и по лучшему спросу для продажи. */ export interface GetMaxLotsRequest { /** Номер счета */ accountId: string; /** Идентификатор инструмента, принимает значения Figi или instrument_uid */ instrumentId: string; /** Цена инструмента */ price?: Quotation | undefined; } /** Результат количество доступных для покупки/продажи лотов */ export interface GetMaxLotsResponse { /** Валюта инструмента */ currency: string; /** Лимиты для покупок на собственные деньги */ buyLimits?: | GetMaxLotsResponse_BuyLimitsView | undefined; /** Лимиты для покупок с учетом маржинального кредитования */ buyMarginLimits?: | GetMaxLotsResponse_BuyLimitsView | undefined; /** Лимиты для продаж по собственной позиции */ sellLimits?: | GetMaxLotsResponse_SellLimitsView | undefined; /** Лимиты для продаж с учетом маржинального кредитования */ sellMarginLimits?: GetMaxLotsResponse_SellLimitsView | undefined; } export interface GetMaxLotsResponse_BuyLimitsView { /** Количество доступной валюты для покупки */ buyMoneyAmount?: | Quotation | undefined; /** Максимальное доступное количество лотов для покупки */ buyMaxLots: number; /** Максимальное доступное количество лотов для покупки для заявки по рыночной цене на текущий момент */ buyMaxMarketLots: number; } export interface GetMaxLotsResponse_SellLimitsView { /** Максимальное доступное количество лотов для продажи */ sellMaxLots: number; } /** Запрос получения предварительной стоимости заявки */ export interface GetOrderPriceRequest { /** Номер счета */ accountId: string; /** Идентификатор инструмента, принимает значения Figi или instrument_uid */ instrumentId: string; /** Цена инструмента */ price?: | Quotation | undefined; /** Направление заявки */ direction: OrderDirection; /** Количество лотов */ quantity: number; } /** Предварительная стоимость заявки */ export interface GetOrderPriceResponse { /** Итоговая стоимость заявки */ totalOrderAmount?: | MoneyValue | undefined; /** Стоимость заявки без комиссий, НКД, ГО (для фьючерсов — стоимость контрактов) */ initialOrderAmount?: | MoneyValue | undefined; /** Запрошено лотов */ lotsRequested: number; /** Общая комиссия */ executedCommission?: | MoneyValue | undefined; /** Общая комиссия в рублях */ executedCommissionRub?: | MoneyValue | undefined; /** Сервисная комиссия */ serviceCommission?: | MoneyValue | undefined; /** Комиссия за проведение сделки */ dealCommission?: | MoneyValue | undefined; /** Дополнительная информация по облигациям */ extraBond?: | GetOrderPriceResponse_ExtraBond | undefined; /** Дополнительная информация по фьючерсам */ extraFuture?: GetOrderPriceResponse_ExtraFuture | undefined; } export interface GetOrderPriceResponse_ExtraBond { /** Значение НКД (накопленного купонного дохода) на дату */ aciValue?: | MoneyValue | undefined; /** Курс конвертации для замещающих облигаций */ nominalConversionRate?: Quotation | undefined; } export interface GetOrderPriceResponse_ExtraFuture { /** Гарантийное обеспечение для фьючерса */ initialMargin?: MoneyValue | undefined; } /** Запрос установки стрим-соединения торговых поручений */ export interface OrderStateStreamRequest { /** Идентификаторы счетов. */ accounts: string[]; /** Задержка пинг сообщений milliseconds 5000-180000, default 120000 */ pingDelayMs?: number | undefined; } /** Информация по подпискам */ export interface SubscriptionResponse { /** Уникальный идентификатор запроса, подробнее: [tracking_id](https://russianinvestments.github.io/investAPI/grpc#tracking-id). */ trackingId: string; /** Статус подписки. */ status: ResultSubscriptionStatus; /** Идентификатор открытого соединения */ streamId: string; /** Идентификаторы счетов. */ accounts: string[]; error?: ErrorDetail | undefined; } /** Информация по заявкам */ export interface OrderStateStreamResponse { /** Информация об исполнении торгового поручения. */ orderState?: | OrderStateStreamResponse_OrderState | undefined; /** Проверка активности стрима. */ ping?: | Ping | undefined; /** Ответ на запрос на подписку. */ subscription?: SubscriptionResponse | undefined; } /** Маркер */ export enum OrderStateStreamResponse_MarkerType { /** MARKER_UNKNOWN - не определено */ MARKER_UNKNOWN = 0, /** MARKER_BROKER - сделки брокера */ MARKER_BROKER = 1, /** MARKER_CHAT - исполнение поручение, полученного от клиента через каналы связи */ MARKER_CHAT = 2, /** MARKER_PAPER - исполнение поручение, полученного от клиента в бумажной форме */ MARKER_PAPER = 3, /** MARKER_MARGIN - принудительное закрытие позиций */ MARKER_MARGIN = 4, /** MARKER_TKBNM - сделки по управлению ликвидностью */ MARKER_TKBNM = 5, /** MARKER_SHORT - сделки РЕПО по привлечению у клиентов бумаг */ MARKER_SHORT = 6, /** MARKER_SPECMM - перенос временно непокрытых позиций */ MARKER_SPECMM = 7, MARKER_PO = 8, UNRECOGNIZED = -1, } export function orderStateStreamResponse_MarkerTypeFromJSON(object: any): OrderStateStreamResponse_MarkerType { switch (object) { case 0: case "MARKER_UNKNOWN": return OrderStateStreamResponse_MarkerType.MARKER_UNKNOWN; case 1: case "MARKER_BROKER": return OrderStateStreamResponse_MarkerType.MARKER_BROKER; case 2: case "MARKER_CHAT": return OrderStateStreamResponse_MarkerType.MARKER_CHAT; case 3: case "MARKER_PAPER": return OrderStateStreamResponse_MarkerType.MARKER_PAPER; case 4: case "MARKER_MARGIN": return OrderStateStreamResponse_MarkerType.MARKER_MARGIN; case 5: case "MARKER_TKBNM": return OrderStateStreamResponse_MarkerType.MARKER_TKBNM; case 6: case "MARKER_SHORT": return OrderStateStreamResponse_MarkerType.MARKER_SHORT; case 7: case "MARKER_SPECMM": return OrderStateStreamResponse_MarkerType.MARKER_SPECMM; case 8: case "MARKER_PO": return OrderStateStreamResponse_MarkerType.MARKER_PO; case -1: case "UNRECOGNIZED": default: return OrderStateStreamResponse_MarkerType.UNRECOGNIZED; } } export function orderStateStreamResponse_MarkerTypeToJSON(object: OrderStateStreamResponse_MarkerType): string { switch (object) { case OrderStateStreamResponse_MarkerType.MARKER_UNKNOWN: return "MARKER_UNKNOWN"; case OrderStateStreamResponse_MarkerType.MARKER_BROKER: return "MARKER_BROKER"; case OrderStateStreamResponse_MarkerType.MARKER_CHAT: return "MARKER_CHAT"; case OrderStateStreamResponse_MarkerType.MARKER_PAPER: return "MARKER_PAPER"; case OrderStateStreamResponse_MarkerType.MARKER_MARGIN: return "MARKER_MARGIN"; case OrderStateStreamResponse_MarkerType.MARKER_TKBNM: return "MARKER_TKBNM"; case OrderStateStreamResponse_MarkerType.MARKER_SHORT: return "MARKER_SHORT"; case OrderStateStreamResponse_MarkerType.MARKER_SPECMM: return "MARKER_SPECMM"; case OrderStateStreamResponse_MarkerType.MARKER_PO: return "MARKER_PO"; case OrderStateStreamResponse_MarkerType.UNRECOGNIZED: default: return "UNRECOGNIZED"; } } /** Дополнительная информация по статусу заявки */ export enum OrderStateStreamResponse_StatusCauseInfo { /** CAUSE_UNSPECIFIED - Не определено */ CAUSE_UNSPECIFIED = 0, /** CAUSE_CANCELLED_BY_CLIENT - Отменено клиентом */ CAUSE_CANCELLED_BY_CLIENT = 15, /** CAUSE_CANCELLED_BY_EXCHANGE - Отменено биржей */ CAUSE_CANCELLED_BY_EXCHANGE = 1, /** CAUSE_CANCELLED_NOT_ENOUGH_POSITION - Заявка не выставлена из-за нехватки средств */ CAUSE_CANCELLED_NOT_ENOUGH_POSITION = 2, /** CAUSE_CANCELLED_BY_CLIENT_BLOCK - Отменено из-за блокировки клиента */ CAUSE_CANCELLED_BY_CLIENT_BLOCK = 3, /** CAUSE_REJECTED_BY_BROKER - Отклонено брокером */ CAUSE_REJECTED_BY_BROKER = 4, /** CAUSE_REJECTED_BY_EXCHANGE - Отклонено биржей */ CAUSE_REJECTED_BY_EXCHANGE = 5, /** CAUSE_CANCELLED_BY_BROKER - Отменено брокером */ CAUSE_CANCELLED_BY_BROKER = 6, UNRECOGNIZED = -1, } export function orderStateStreamResponse_StatusCauseInfoFromJSON( object: any, ): OrderStateStreamResponse_StatusCauseInfo { switch (object) { case 0: case "CAUSE_UNSPECIFIED": return OrderStateStreamResponse_StatusCauseInfo.CAUSE_UNSPECIFIED; case 15: case "CAUSE_CANCELLED_BY_CLIENT": return OrderStateStreamResponse_StatusCauseInfo.CAUSE_CANCELLED_BY_CLIENT; case 1: case "CAUSE_CANCELLED_BY_EXCHANGE": return OrderStateStreamResponse_StatusCauseInfo.CAUSE_CANCELLED_BY_EXCHANGE; case 2: case "CAUSE_CANCELLED_NOT_ENOUGH_POSITION": return OrderStateStreamResponse_StatusCauseInfo.CAUSE_CANCELLED_NOT_ENOUGH_POSITION; case 3: case "CAUSE_CANCELLED_BY_CLIENT_BLOCK": return OrderStateStreamResponse_StatusCauseInfo.CAUSE_CANCELLED_BY_CLIENT_BLOCK; case 4: case "CAUSE_REJECTED_BY_BROKER": return OrderStateStreamResponse_StatusCauseInfo.CAUSE_REJECTED_BY_BROKER; case 5: case "CAUSE_REJECTED_BY_EXCHANGE": return OrderStateStreamResponse_StatusCauseInfo.CAUSE_REJECTED_BY_EXCHANGE; case 6: case "CAUSE_CANCELLED_BY_BROKER": return OrderStateStreamResponse_StatusCauseInfo.CAUSE_CANCELLED_BY_BROKER; case -1: case "UNRECOGNIZED": default: return OrderStateStreamResponse_StatusCauseInfo.UNRECOGNIZED; } } export function orderStateStreamResponse_StatusCauseInfoToJSON( object: OrderStateStreamResponse_StatusCauseInfo, ): string { switch (object) { case OrderStateStreamResponse_StatusCauseInfo.CAUSE_UNSPECIFIED: return "CAUSE_UNSPECIFIED"; case OrderStateStreamResponse_StatusCauseInfo.CAUSE_CANCELLED_BY_CLIENT: return "CAUSE_CANCELLED_BY_CLIENT"; case OrderStateStreamResponse_StatusCauseInfo.CAUSE_CANCELLED_BY_EXCHANGE: return "CAUSE_CANCELLED_BY_EXCHANGE"; case OrderStateStreamResponse_StatusCauseInfo.CAUSE_CANCELLED_NOT_ENOUGH_POSITION: return "CAUSE_CANCELLED_NOT_ENOUGH_POSITION"; case OrderStateStreamResponse_StatusCauseInfo.CAUSE_CANCELLED_BY_CLIENT_BLOCK: return "CAUSE_CANCELLED_BY_CLIENT_BLOCK"; case OrderStateStreamResponse_StatusCauseInfo.CAUSE_REJECTED_BY_BROKER: return "CAUSE_REJECTED_BY_BROKER"; case OrderStateStreamResponse_StatusCauseInfo.CAUSE_REJECTED_BY_EXCHANGE: return "CAUSE_REJECTED_BY_EXCHANGE"; case OrderStateStreamResponse_StatusCauseInfo.CAUSE_CANCELLED_BY_BROKER: return "CAUSE_CANCELLED_BY_BROKER"; case OrderStateStreamResponse_StatusCauseInfo.UNRECOGNIZED: default: return "UNRECOGNIZED"; } } /** Заявка */ export interface OrderStateStreamResponse_OrderState { /** Биржевой идентификатор заявки */ orderId: string; /** Идентификатор ключа идемпотентности, переданный клиентом, в формате UID. Максимальная длина 36 символов. */ orderRequestId?: | string | undefined; /** Код клиента на бирже */ clientCode: string; /** Дата создания заявки */ createdAt?: | Date | undefined; /** Статус заявки */ executionReportStatus: OrderExecutionReportStatus; /** Дополнительная информация по статусу */ statusInfo?: | OrderStateStreamResponse_StatusCauseInfo | undefined; /** Тикер инструмента */ ticker: string; /** Класс-код (секция торгов) */ classCode: string; /** Лотность инструмента заявки */ lotSize: number; /** Направление заявки */ direction: OrderDirection; /** Алгоритм исполнения поручения */ timeInForce: TimeInForceType; /** Тип заявки */ orderType: OrderType; /** Номер счета */ accountId: string; /** Начальная цена заявки */ initialOrderPrice?: | MoneyValue | undefined; /** Цена выставления заявки */ orderPrice?: | MoneyValue | undefined; /** Предрассчитанная стоимость полной заявки */ amount?: | MoneyValue | undefined; /** Исполненная средняя цена одного инструмента в заявке */ executedOrderPrice?: | MoneyValue | undefined; /** Валюта исполнения */ currency: string; /** Запрошено лотов */ lotsRequested: number; /** Исполнено лотов */ lotsExecuted: number; /** Число неисполненных лотов по заявке */ lotsLeft: number; /** Отмененные лоты */ lotsCancelled: number; /** Спецсимвол */ marker?: | OrderStateStreamResponse_MarkerType | undefined; /** Список сделок */ trades: OrderTrade[]; /** Время исполнения заявки */ completionTime?: | Date | undefined; /** Код биржи */ exchange: string; /** UID идентификатор инструмента */ instrumentUid: string; } function createBaseTradesStreamRequest(): TradesStreamRequest { return { accounts: [], pingDelayMs: undefined }; } export const TradesStreamRequest = { encode(message: TradesStreamRequest, writer: _m0.Writer = _m0.Writer.create()): _m0.Writer { for (const v of message.accounts) { writer.uint32(10).string(v!); } if (message.pingDelayMs !== undefined) { writer.uint32(120).int32(message.pingDelayMs); } return writer; }, decode(input: _m0.Reader | Uint8Array, length?: number): TradesStreamRequest { const reader = input instanceof _m0.Reader ? input : _m0.Reader.create(input); let end = length === undefined ? reader.len : reader.pos + length; const message = createBaseTradesStreamRequest(); while (reader.pos < end) { const tag = reader.uint32(); switch (tag >>> 3) { case 1: if (tag !== 10) { break; } message.accounts.push(reader.string()); continue; case 15: if (tag !== 120) { break; } message.pingDelayMs = reader.int32(); continue; } if ((tag & 7) === 4 || tag === 0) { break; } reader.skipType(tag & 7); } return message; }, fromJSON(object: any): TradesStreamRequest { return { accounts: globalThis.Array.isArray(object?.accounts) ? object.accounts.map((e: any) => globalThis.String(e)) : [], pingDelayMs: isSet(object.pingDelayMs) ? globalThis.Number(object.pingDelayMs) : undefined, }; }, toJSON(message: TradesStreamRequest): unknown { const obj: any = {}; if (message.accounts?.length) { obj.accounts = message.accounts; } if (message.pingDelayMs !== undefined) { obj.pingDelayMs = Math.round(message.pingDelayMs); } return obj; }, }; function createBaseTradesStreamResponse(): TradesStreamResponse { return { orderTrades: undefined, ping: undefined, subscription: undefined }; } export const TradesStreamResponse = { encode(message: TradesStreamResponse, writer: _m0.Writer = _m0.Writer.create()): _m0.Writer { if (message.orderTrades !== undefined) { OrderTrades.encode(message.orderTrades, writer.uint32(10).fork()).ldelim(); } if (message.ping !== undefined) { Ping.encode(message.ping, writer.uint32(18).fork()).ldelim(); } if (message.subscription !== undefined) { SubscriptionResponse.encode(message.subscription, writer.uint32(26).fork()).ldelim(); } return writer; }, decode(input: _m0.Reader | Uint8Array, length?: number): TradesStreamResponse { const reader = input instanceof _m0.Reader ? input : _m0.Reader.create(input); let end = length === undefined ? reader.len : reader.pos + length; const message = createBaseTradesStreamResponse(); while (reader.pos < end) { const tag = reader.uint32(); switch (tag >>> 3) { case 1: if (tag !== 10) { break; } message.orderTrades = OrderTrades.decode(reader, reader.uint32()); continue; case 2: if (tag !== 18) { break; } message.ping = Ping.decode(reader, reader.uint32()); continue; case 3: if (tag !== 26) { break; } message.subscription = SubscriptionResponse.decode(reader, reader.uint32()); continue; } if ((tag & 7) === 4 || tag === 0) { break; } reader.skipType(tag & 7); } return message; }, fromJSON(object: any): TradesStreamResponse { return { orderTrades: isSet(object.orderTrades) ? OrderTrades.fromJSON(object.orderTrades) : undefined, ping: isSet(object.ping) ? Ping.fromJSON(object.ping) : undefined, subscription: isSet(object.subscription) ? SubscriptionResponse.fromJSON(object.subscription) : undefined, }; }, toJSON(message: TradesStreamResponse): unknown { const obj: any = {}; if (message.orderTrades !== undefined) { obj.orderTrades = OrderTrades.toJSON(message.orderTrades); } if (message.ping !== undefined) { obj.ping = Ping.toJSON(message.ping); } if (message.subscription !== undefined) { obj.subscription = SubscriptionResponse.toJSON(message.subscription); } return obj; }, }; function createBaseOrderTrades(): OrderTrades { return { orderId: "", createdAt: undefined, direction: 0, figi: "", trades: [], accountId: "", instrumentUid: "" }; } export const OrderTrades = { encode(message: OrderTrades, writer: _m0.Writer = _m0.Writer.create()): _m0.Writer { if (message.orderId !== "") { writer.uint32(10).string(message.orderId); } if (message.createdAt !== undefined) { Timestamp.encode(toTimestamp(message.createdAt), writer.uint32(18).fork()).ldelim(); } if (message.direction !== 0) { writer.uint32(24).int32(message.direction); } if (message.figi !== "") { writer.uint32(34).string(message.figi); } for (const v of message.trades) { OrderTrade.encode(v!, writer.uint32(42).fork()).ldelim(); } if (message.accountId !== "") { writer.uint32(50).string(message.accountId); } if (message.instrumentUid !== "") { writer.uint32(58).string(message.instrumentUid); } return writer; }, decode(input: _m0.Reader | Uint8Array, length?: number): OrderTrades { const reader = input instanceof _m0.Reader ? input : _m0.Reader.create(input); let end = length === undefined ? reader.len : reader.pos + length; const message = createBaseOrderTrades(); while (reader.pos < end) { const tag = reader.uint32(); switch (tag >>> 3) { case 1: if (tag !== 10) { break; } message.orderId = reader.string(); continue; case 2: if (tag !== 18) { break; } message.createdAt = fromTimestamp(Timestamp.decode(reader, reader.uint32())); continue; case 3: if (tag !== 24) { break; } message.direction = reader.int32() as any; continue; case 4: if (tag !== 34) { break; } message.figi = reader.string(); continue; case 5: if (tag !== 42) { break; } message.trades.push(OrderTrade.decode(reader, reader.uint32())); continue; case 6: if (tag !== 50) { break; } message.accountId = reader.string(); continue; case 7: if (tag !== 58) { break; } message.instrumentUid = reader.string(); continue; } if ((tag & 7) === 4 || tag === 0) { break; } reader.skipType(tag & 7); } return message; }, fromJSON(object: any): OrderTrades { return { orderId: isSet(object.orderId) ? globalThis.String(object.orderId) : "", createdAt: isSet(object.createdAt) ? fromJsonTimestamp(object.createdAt) : undefined, direction: isSet(object.direction) ? orderDirectionFromJSON(object.direction) : 0, figi: isSet(object.figi) ? globalThis.String(object.figi) : "", trades: globalThis.Array.isArray(object?.trades) ? object.trades.map((e: any) => OrderTrade.fromJSON(e)) : [], accountId: isSet(object.accountId) ? globalThis.String(object.accountId) : "", instrumentUid: isSet(object.instrumentUid) ? globalThis.String(object.instrumentUid) : "", }; }, toJSON(message: OrderTrades): unknown { const obj: any = {}; if (message.orderId !== "") { obj.orderId = message.orderId; } if (message.createdAt !== undefined) { obj.createdAt = message.createdAt.toISOString(); } if (message.direction !== 0) { obj.direction = orderDirectionToJSON(message.direction); } if (message.figi !== "") { obj.figi = message.figi; } if (message.trades?.length) { obj.trades = message.trades.map((e) => OrderTrade.toJSON(e)); } if (message.accountId !== "") { obj.accountId = message.accountId; } if (message.instrumentUid !== "") { obj.instrumentUid = message.instrumentUid; } return obj; }, }; function createBaseOrderTrade(): OrderTrade { return { dateTime: undefined, price: undefined, quantity: 0, tradeId: "" }; } export const OrderTrade = { encode(message: OrderTrade, writer: _m0.Writer = _m0.Writer.create()): _m0.Writer { if (message.dateTime !== undefined) { Timestamp.encode(toTimestamp(message.dateTime), writer.uint32(10).fork()).ldelim(); } if (message.price !== undefined) { Quotation.encode(message.price, writer.uint32(18).fork()).ldelim(); } if (message.quantity !== 0) { writer.uint32(24).int64(message.quantity); } if (message.tradeId !== "") { writer.uint32(34).string(message.tradeId); } return writer; }, decode(input: _m0.Reader | Uint8Array, length?: number): OrderTrade { const reader = input instanceof _m0.Reader ? input : _m0.Reader.create(input); let end = length === undefined ? reader.len : reader.pos + length; const message = createBaseOrderTrade(); while (reader.pos < end) { const tag = reader.uint32(); switch (tag >>> 3) { case 1: if (tag !== 10) { break; } message.dateTime = fromTimestamp(Timestamp.decode(reader, reader.uint32())); continue; case 2: if (tag !== 18) { break; } message.price = Quotation.decode(reader, reader.uint32()); continue; case 3: if (tag !== 24) { break; } message.quantity = longToNumber(reader.int64() as Long); continue; case 4: if (tag !== 34) { break; } message.tradeId = reader.string(); continue; } if ((tag & 7) === 4 || tag === 0) { break; } reader.skipType(tag & 7); } return message; }, fromJSON(object: any): OrderTrade { return { dateTime: isSet(object.dateTime) ? fromJsonTimestamp(object.dateTime) : undefined, price: isSet(object.price) ? Quotation.fromJSON(object.price) : undefined, quantity: isSet(object.quantity) ? globalThis.Number(object.quantity) : 0, tradeId: isSet(object.tradeId) ? globalThis.String(object.tradeId) : "", }; }, toJSON(message: OrderTrade): unknown { const obj: any = {}; if (message.dateTime !== undefined) { obj.dateTime = message.dateTime.toISOString(); } if (message.price !== undefined) { obj.price = Quotation.toJSON(message.price); } if (message.quantity !== 0) { obj.quantity = Math.round(message.quantity); } if (message.tradeId !== "") { obj.tradeId = message.tradeId; } return obj; }, }; function createBasePostOrderRequest(): PostOrderRequest { return { figi: undefined, quantity: 0, price: undefined, direction: 0, accountId: "", orderType: 0, orderId: "", instrumentId: "", timeInForce: 0, priceType: 0, }; } export const PostOrderRequest = { encode(message: PostOrderRequest, writer: _m0.Writer = _m0.Writer.create()): _m0.Writer { if (message.figi !== undefined) { writer.uint32(10).string(message.figi); } if (message.quantity !== 0) { writer.uint32(16).int64(message.quantity); } if (message.price !== undefined) { Quotation.encode(message.price, writer.uint32(26).fork()).ldelim(); } if (message.direction !== 0) { writer.uint32(32).int32(message.direction); } if (message.accountId !== "") { writer.uint32(42).string(message.accountId); } if (message.orderType !== 0) { writer.uint32(48).int32(message.orderType); } if (message.orderId !== "") { writer.uint32(58).string(message.orderId); } if (message.instrumentId !== "") { writer.uint32(66).string(message.instrumentId); } if (message.timeInForce !== 0) { writer.uint32(72).int32(message.timeInForce); } if (message.priceType !== 0) { writer.uint32(80).int32(message.priceType); } return writer; }, decode(input: _m0.Reader | Uint8Array, length?: number): PostOrderRequest { const reader = input instanceof _m0.Reader ? input : _m0.Reader.create(input); let end = length === undefined ? reader.len : reader.pos + length; const message = createBasePostOrderRequest(); while (reader.pos < end) { const tag = reader.uint32(); switch (tag >>> 3) { case 1: if (tag !== 10) { break; } message.figi = reader.string(); continue; case 2: if (tag !== 16) { break; } message.quantity = longToNumber(reader.int64() as Long); continue; case 3: if (tag !== 26) { break; } message.price = Quotation.decode(reader, reader.uint32()); continue; case 4: if (tag !== 32) { break; } message.direction = reader.int32() as any; continue; case 5: if (tag !== 42) { break; } message.accountId = reader.string(); continue; case 6: if (tag !== 48) { break; } message.orderType = reader.int32() as any; continue; case 7: if (tag !== 58) { break; } message.orderId = reader.string(); continue; case 8: if (tag !== 66) { break; } message.instrumentId = reader.string(); continue; case 9: if (tag !== 72) { break; } message.timeInForce = reader.int32() as any; continue; case 10: if (tag !== 80) { break; } message.priceType = reader.int32() as any; continue; } if ((tag & 7) === 4 || tag === 0) { break; } reader.skipType(tag & 7); } return message; }, fromJSON(object: any): PostOrderRequest { return { figi: isSet(object.figi) ? globalThis.String(object.figi) : undefined, quantity: isSet(object.quantity) ? globalThis.Number(object.quantity) : 0, price: isSet(object.price) ? Quotation.fromJSON(object.price) : undefined, direction: isSet(object.direction) ? orderDirectionFromJSON(object.direction) : 0, accountId: isSet(object.accountId) ? globalThis.String(object.accountId) : "", orderType: isSet(object.orderType) ? orderTypeFromJSON(object.orderType) : 0, orderId: isSet(object.orderId) ? globalThis.String(object.orderId) : "", instrumentId: isSet(object.instrumentId) ? globalThis.String(object.instrumentId) : "", timeInForce: isSet(object.timeInForce) ? timeInForceTypeFromJSON(object.timeInForce) : 0, priceType: isSet(object.priceType) ? priceTypeFromJSON(object.priceType) : 0, }; }, toJSON(message: PostOrderRequest): unknown { const obj: any = {}; if (message.figi !== undefined) { obj.figi = message.figi; } if (message.quantity !== 0) { obj.quantity = Math.round(message.quantity); } if (message.price !== undefined) { obj.price = Quotation.toJSON(message.price); } if (message.direction !== 0) { obj.direction = orderDirectionToJSON(message.direction); } if (message.accountId !== "") { obj.accountId = message.accountId; } if (message.orderType !== 0) { obj.orderType = orderTypeToJSON(message.orderType); } if (message.orderId !== "") { obj.orderId = message.orderId; } if (message.instrumentId !== "") { obj.instrumentId = message.instrumentId; } if (message.timeInForce !== 0) { obj.timeInForce = timeInForceTypeToJSON(message.timeInForce); } if (message.priceType !== 0) { obj.priceType = priceTypeToJSON(message.priceType); } return obj; }, }; function createBasePostOrderResponse(): PostOrderResponse { return { orderId: "", executionReportStatus: 0, lotsRequested: 0, lotsExecuted: 0, initialOrderPrice: undefined, executedOrderPrice: undefined, totalOrderAmount: undefined, initialCommission: undefined, executedCommission: undefined, aciValue: undefined, figi: "", direction: 0, initialSecurityPrice: undefined, orderType: 0, message: "", initialOrderPricePt: undefined, instrumentUid: "", orderRequestId: "", responseMetadata: undefined, }; } export const PostOrderResponse = { encode(message: PostOrderResponse, writer: _m0.Writer = _m0.Writer.create()): _m0.Writer { if (message.orderId !== "") { writer.uint32(10).string(message.orderId); } if (message.executionReportStatus !== 0) { writer.uint32(16).int32(message.executionReportStatus); } if (message.lotsRequested !== 0) { writer.uint32(24).int64(message.lotsRequested); } if (message.lotsExecuted !== 0) { writer.uint32(32).int64(message.lotsExecuted); } if (message.initialOrderPrice !== undefined) { MoneyValue.encode(message.initialOrderPrice, writer.uint32(42).fork()).ldelim(); } if (message.executedOrderPrice !== undefined) { MoneyValue.encode(message.executedOrderPrice, writer.uint32(50).fork()).ldelim(); } if (message.totalOrderAmount !== undefined) { MoneyValue.encode(message.totalOrderAmount, writer.uint32(58).fork()).ldelim(); } if (message.initialCommission !== undefined) { MoneyValue.encode(message.initialCommission, writer.uint32(66).fork()).ldelim(); } if (message.executedCommission !== undefined) { MoneyValue.encode(message.executedCommission, writer.uint32(74).fork()).ldelim(); } if (message.aciValue !== undefined) { MoneyValue.encode(message.aciValue, writer.uint32(82).fork()).ldelim(); } if (message.figi !== "") { writer.uint32(90).string(message.figi); } if (message.direction !