tinkoff-invest-api
Version:
Node.js SDK for Tinkoff Invest API
1,596 lines (1,493 loc) • 156 kB
text/typescript
/* 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 !