import type { CallContext, CallOptions } from "nice-grpc-common";
import _m0 from "protobufjs/minimal.js";
import { MoneyValue, PriceType, Quotation, ResponseMetadata } from "./common.js";
export declare const protobufPackage = "tinkoff.public.invest.api.contract.v1";
/** Направление сделки стоп-заявки. */
export declare enum StopOrderDirection {
    /** STOP_ORDER_DIRECTION_UNSPECIFIED - Значение не указано. */
    STOP_ORDER_DIRECTION_UNSPECIFIED = 0,
    /** STOP_ORDER_DIRECTION_BUY - Покупка. */
    STOP_ORDER_DIRECTION_BUY = 1,
    /** STOP_ORDER_DIRECTION_SELL - Продажа. */
    STOP_ORDER_DIRECTION_SELL = 2,
    UNRECOGNIZED = -1
}
export declare function stopOrderDirectionFromJSON(object: any): StopOrderDirection;
export declare function stopOrderDirectionToJSON(object: StopOrderDirection): string;
/** Тип экспирации стоп-заявке. */
export declare enum StopOrderExpirationType {
    /** STOP_ORDER_EXPIRATION_TYPE_UNSPECIFIED - Значение не указано. */
    STOP_ORDER_EXPIRATION_TYPE_UNSPECIFIED = 0,
    /** STOP_ORDER_EXPIRATION_TYPE_GOOD_TILL_CANCEL - Действительно до отмены. */
    STOP_ORDER_EXPIRATION_TYPE_GOOD_TILL_CANCEL = 1,
    /** STOP_ORDER_EXPIRATION_TYPE_GOOD_TILL_DATE - Действительно до даты снятия. */
    STOP_ORDER_EXPIRATION_TYPE_GOOD_TILL_DATE = 2,
    UNRECOGNIZED = -1
}
export declare function stopOrderExpirationTypeFromJSON(object: any): StopOrderExpirationType;
export declare function stopOrderExpirationTypeToJSON(object: StopOrderExpirationType): string;
/** Тип стоп-заявки. */
export declare enum StopOrderType {
    /** STOP_ORDER_TYPE_UNSPECIFIED - Значение не указано. */
    STOP_ORDER_TYPE_UNSPECIFIED = 0,
    /** STOP_ORDER_TYPE_TAKE_PROFIT - `Take-profit`-заявка. */
    STOP_ORDER_TYPE_TAKE_PROFIT = 1,
    /** STOP_ORDER_TYPE_STOP_LOSS - `Stop-loss`-заявка. */
    STOP_ORDER_TYPE_STOP_LOSS = 2,
    /** STOP_ORDER_TYPE_STOP_LIMIT - `Stop-limit`-заявка. */
    STOP_ORDER_TYPE_STOP_LIMIT = 3,
    UNRECOGNIZED = -1
}
export declare function stopOrderTypeFromJSON(object: any): StopOrderType;
export declare function stopOrderTypeToJSON(object: StopOrderType): string;
/** Статус стоп-заяки. */
export declare enum StopOrderStatusOption {
    /** STOP_ORDER_STATUS_UNSPECIFIED - Значение не указано. */
    STOP_ORDER_STATUS_UNSPECIFIED = 0,
    /** STOP_ORDER_STATUS_ALL - Все заявки. */
    STOP_ORDER_STATUS_ALL = 1,
    /** STOP_ORDER_STATUS_ACTIVE - Активные заявки. */
    STOP_ORDER_STATUS_ACTIVE = 2,
    /** STOP_ORDER_STATUS_EXECUTED - Исполненные заявки. */
    STOP_ORDER_STATUS_EXECUTED = 3,
    /** STOP_ORDER_STATUS_CANCELED - Отменённые заявки. */
    STOP_ORDER_STATUS_CANCELED = 4,
    /** STOP_ORDER_STATUS_EXPIRED - Истёкшие заявки. */
    STOP_ORDER_STATUS_EXPIRED = 5,
    UNRECOGNIZED = -1
}
export declare function stopOrderStatusOptionFromJSON(object: any): StopOrderStatusOption;
export declare function stopOrderStatusOptionToJSON(object: StopOrderStatusOption): string;
/** Тип выставляемой заявки. */
export declare enum ExchangeOrderType {
    /** EXCHANGE_ORDER_TYPE_UNSPECIFIED - Значение не указано. */
    EXCHANGE_ORDER_TYPE_UNSPECIFIED = 0,
    /** EXCHANGE_ORDER_TYPE_MARKET - Заявка по рыночной цене. */
    EXCHANGE_ORDER_TYPE_MARKET = 1,
    /** EXCHANGE_ORDER_TYPE_LIMIT - Лимитная заявка. */
    EXCHANGE_ORDER_TYPE_LIMIT = 2,
    UNRECOGNIZED = -1
}
export declare function exchangeOrderTypeFromJSON(object: any): ExchangeOrderType;
export declare function exchangeOrderTypeToJSON(object: ExchangeOrderType): string;
/** Тип TakeProfit-заявки. */
export declare enum TakeProfitType {
    /** TAKE_PROFIT_TYPE_UNSPECIFIED - Значение не указано. */
    TAKE_PROFIT_TYPE_UNSPECIFIED = 0,
    /** TAKE_PROFIT_TYPE_REGULAR - Обычная заявка, значение по умолчанию. */
    TAKE_PROFIT_TYPE_REGULAR = 1,
    /** TAKE_PROFIT_TYPE_TRAILING - Трейлинг-стоп. */
    TAKE_PROFIT_TYPE_TRAILING = 2,
    UNRECOGNIZED = -1
}
export declare function takeProfitTypeFromJSON(object: any): TakeProfitType;
export declare function takeProfitTypeToJSON(object: TakeProfitType): string;
/** Тип параметров значений трейлинг-стопа. */
export declare enum TrailingValueType {
    /** TRAILING_VALUE_UNSPECIFIED - Значение не указано. */
    TRAILING_VALUE_UNSPECIFIED = 0,
    /** TRAILING_VALUE_ABSOLUTE - Абсолютное значение в единицах цены. */
    TRAILING_VALUE_ABSOLUTE = 1,
    /** TRAILING_VALUE_RELATIVE - Относительное значение в процентах. */
    TRAILING_VALUE_RELATIVE = 2,
    UNRECOGNIZED = -1
}
export declare function trailingValueTypeFromJSON(object: any): TrailingValueType;
export declare function trailingValueTypeToJSON(object: TrailingValueType): string;
/** Статус трейлинг-стопа. */
export declare enum TrailingStopStatus {
    /** TRAILING_STOP_UNSPECIFIED - Значение не указано. */
    TRAILING_STOP_UNSPECIFIED = 0,
    /** TRAILING_STOP_ACTIVE - Активный. */
    TRAILING_STOP_ACTIVE = 1,
    /** TRAILING_STOP_ACTIVATED - Активированный. */
    TRAILING_STOP_ACTIVATED = 2,
    UNRECOGNIZED = -1
}
export declare function trailingStopStatusFromJSON(object: any): TrailingStopStatus;
export declare function trailingStopStatusToJSON(object: TrailingStopStatus): string;
/** Запрос выставления стоп-заявки. */
export interface PostStopOrderRequest {
    /**
     * Deprecated FIGI-идентификатор инструмента. Используйте `instrument_id`.
     *
     * @deprecated
     */
    figi?: string | undefined;
    /** Количество лотов. */
    quantity: number;
    /** Цена за 1 инструмент биржевой заявки, которая будет выставлена при срабатывании по достижению `stop_price`. Чтобы получить стоимость лота, нужно умножить на лотность инструмента. */
    price?: Quotation | undefined;
    /** Стоп-цена заявки за 1 инструмент. При достижении стоп-цены происходит активация стоп-заявки, в результате чего выставляется биржевая заявка. Чтобы получить стоимость лота, нужно умножить на лотность инструмента. */
    stopPrice?: Quotation | undefined;
    /** Направление операции. */
    direction: StopOrderDirection;
    /** Номер счёта. */
    accountId: string;
    /** Тип экспирации заявки. */
    expirationType: StopOrderExpirationType;
    /** Тип заявки. */
    stopOrderType: StopOrderType;
    /** Дата и время окончания действия стоп-заявки по UTC. Для `ExpirationType = GoodTillDate` заполнение обязательно, для `GoodTillCancel` игнорируется. */
    expireDate?: Date | undefined;
    /** Идентификатор инструмента. Принимает значение `figi` или `instrument_uid`. */
    instrumentId: string;
    /** Тип дочерней биржевой заявки для тейкпрофита. */
    exchangeOrderType: ExchangeOrderType;
    /** Подтип стоп-заявки — `TakeProfit`. */
    takeProfitType: TakeProfitType;
    /** Массив с параметрами трейлинг-стопа. */
    trailingData?: PostStopOrderRequest_TrailingData | undefined;
    /** Тип цены. */
    priceType: PriceType;
    /** Идентификатор запроса выставления поручения для целей идемпотентности в формате `UID`. Максимальная длина — 36 символов. */
    orderId: string;
}
export interface PostStopOrderRequest_TrailingData {
    /** Отступ. */
    indent?: Quotation | undefined;
    /** Тип величины отступа. */
    indentType: TrailingValueType;
    /** Размер защитного спреда. */
    spread?: Quotation | undefined;
    /** Тип величины защитного спреда. */
    spreadType: TrailingValueType;
}
/** Результат выставления стоп-заявки. */
export interface PostStopOrderResponse {
    /** Уникальный идентификатор стоп-заявки. */
    stopOrderId: string;
    /** Идентификатор ключа идемпотентности, переданный клиентом, в формате `UID`. Максимальная длина 36 — символов. */
    orderRequestId: string;
    /** Метадата. */
    responseMetadata?: ResponseMetadata | undefined;
}
/** Запрос получения списка активных стоп-заявок. */
export interface GetStopOrdersRequest {
    /** Идентификатор счёта клиента. */
    accountId: string;
    /** Статус заявок. */
    status: StopOrderStatusOption;
    /** Левая граница. */
    from?: Date | undefined;
    /** Правая граница. */
    to?: Date | undefined;
}
/** Список активных стоп-заявок. */
export interface GetStopOrdersResponse {
    /** Массив стоп-заявок по счёту. */
    stopOrders: StopOrder[];
}
/** Запрос отмены выставленной стоп-заявки. */
export interface CancelStopOrderRequest {
    /** Идентификатор счёта клиента. */
    accountId: string;
    /** Уникальный идентификатор стоп-заявки. */
    stopOrderId: string;
}
/** Результат отмены выставленной стоп-заявки. */
export interface CancelStopOrderResponse {
    /** Время отмены заявки по UTC. */
    time?: Date | undefined;
}
/** Информация о стоп-заявке. */
export interface StopOrder {
    /** Уникальный идентификатор стоп-заявки. */
    stopOrderId: string;
    /** Запрошено лотов. */
    lotsRequested: number;
    /** FIGI-идентификатор инструмента. */
    figi: string;
    /** Направление операции. */
    direction: StopOrderDirection;
    /** Валюта стоп-заявки. */
    currency: string;
    /** Тип стоп-заявки. */
    orderType: StopOrderType;
    /** Дата и время выставления заявки по UTC. */
    createDate?: Date | undefined;
    /** Дата и время конвертации стоп-заявки в биржевую по UTC. */
    activationDateTime?: Date | undefined;
    /** Дата и время снятия заявки по UTC. */
    expirationTime?: Date | undefined;
    /** Цена заявки за 1 инструмент. Чтобы получить стоимость лота, нужно умножить на лотность инструмента. */
    price?: MoneyValue | undefined;
    /** Цена активации стоп-заявки за 1 инструмент. Чтобы получить стоимость лота, нужно умножить на лотность инструмента. */
    stopPrice?: MoneyValue | undefined;
    /** `instrument_uid`-идентификатор инструмента. */
    instrumentUid: string;
    /** Подтип стоп-заявки — `TakeProfit`. */
    takeProfitType: TakeProfitType;
    /** Параметры трейлинг-стопа. */
    trailingData?: StopOrder_TrailingData | undefined;
    /** Статус заявки. */
    status: StopOrderStatusOption;
    /** Тип дочерней биржевой заявки для тейкпрофита. */
    exchangeOrderType: ExchangeOrderType;
    /** Идентификатор биржевой заявки. */
    exchangeOrderId?: string | undefined;
}
export interface StopOrder_TrailingData {
    /** Отступ. */
    indent?: Quotation | undefined;
    /** Тип величины отступа. */
    indentType: TrailingValueType;
    /** Размер защитного спреда. */
    spread?: Quotation | undefined;
    /** Тип величины защитного спреда. */
    spreadType: TrailingValueType;
    /** Статус трейлинг-стопа. */
    status: TrailingStopStatus;
    /** Цена исполнения. */
    price?: Quotation | undefined;
    /** Локальный экстремум. */
    extr?: Quotation | undefined;
}
export declare const PostStopOrderRequest: {
    encode(message: PostStopOrderRequest, writer?: _m0.Writer): _m0.Writer;
    decode(input: _m0.Reader | Uint8Array, length?: number): PostStopOrderRequest;
    fromJSON(object: any): PostStopOrderRequest;
    toJSON(message: PostStopOrderRequest): unknown;
};
export declare const PostStopOrderRequest_TrailingData: {
    encode(message: PostStopOrderRequest_TrailingData, writer?: _m0.Writer): _m0.Writer;
    decode(input: _m0.Reader | Uint8Array, length?: number): PostStopOrderRequest_TrailingData;
    fromJSON(object: any): PostStopOrderRequest_TrailingData;
    toJSON(message: PostStopOrderRequest_TrailingData): unknown;
};
export declare const PostStopOrderResponse: {
    encode(message: PostStopOrderResponse, writer?: _m0.Writer): _m0.Writer;
    decode(input: _m0.Reader | Uint8Array, length?: number): PostStopOrderResponse;
    fromJSON(object: any): PostStopOrderResponse;
    toJSON(message: PostStopOrderResponse): unknown;
};
export declare const GetStopOrdersRequest: {
    encode(message: GetStopOrdersRequest, writer?: _m0.Writer): _m0.Writer;
    decode(input: _m0.Reader | Uint8Array, length?: number): GetStopOrdersRequest;
    fromJSON(object: any): GetStopOrdersRequest;
    toJSON(message: GetStopOrdersRequest): unknown;
};
export declare const GetStopOrdersResponse: {
    encode(message: GetStopOrdersResponse, writer?: _m0.Writer): _m0.Writer;
    decode(input: _m0.Reader | Uint8Array, length?: number): GetStopOrdersResponse;
    fromJSON(object: any): GetStopOrdersResponse;
    toJSON(message: GetStopOrdersResponse): unknown;
};
export declare const CancelStopOrderRequest: {
    encode(message: CancelStopOrderRequest, writer?: _m0.Writer): _m0.Writer;
    decode(input: _m0.Reader | Uint8Array, length?: number): CancelStopOrderRequest;
    fromJSON(object: any): CancelStopOrderRequest;
    toJSON(message: CancelStopOrderRequest): unknown;
};
export declare const CancelStopOrderResponse: {
    encode(message: CancelStopOrderResponse, writer?: _m0.Writer): _m0.Writer;
    decode(input: _m0.Reader | Uint8Array, length?: number): CancelStopOrderResponse;
    fromJSON(object: any): CancelStopOrderResponse;
    toJSON(message: CancelStopOrderResponse): unknown;
};
export declare const StopOrder: {
    encode(message: StopOrder, writer?: _m0.Writer): _m0.Writer;
    decode(input: _m0.Reader | Uint8Array, length?: number): StopOrder;
    fromJSON(object: any): StopOrder;
    toJSON(message: StopOrder): unknown;
};
export declare const StopOrder_TrailingData: {
    encode(message: StopOrder_TrailingData, writer?: _m0.Writer): _m0.Writer;
    decode(input: _m0.Reader | Uint8Array, length?: number): StopOrder_TrailingData;
    fromJSON(object: any): StopOrder_TrailingData;
    toJSON(message: StopOrder_TrailingData): unknown;
};
/** Сервис для работы со стоп-заявками: выставление, отмена, получение списка стоп-заявок. */
export type StopOrdersServiceDefinition = typeof StopOrdersServiceDefinition;
export declare const StopOrdersServiceDefinition: {
    readonly name: "StopOrdersService";
    readonly fullName: "tinkoff.public.invest.api.contract.v1.StopOrdersService";
    readonly methods: {
        /** Выставить стоп-заявку. */
        readonly postStopOrder: {
            readonly name: "PostStopOrder";
            readonly requestType: {
                encode(message: PostStopOrderRequest, writer?: _m0.Writer): _m0.Writer;
                decode(input: _m0.Reader | Uint8Array, length?: number): PostStopOrderRequest;
                fromJSON(object: any): PostStopOrderRequest;
                toJSON(message: PostStopOrderRequest): unknown;
            };
            readonly requestStream: false;
            readonly responseType: {
                encode(message: PostStopOrderResponse, writer?: _m0.Writer): _m0.Writer;
                decode(input: _m0.Reader | Uint8Array, length?: number): PostStopOrderResponse;
                fromJSON(object: any): PostStopOrderResponse;
                toJSON(message: PostStopOrderResponse): unknown;
            };
            readonly responseStream: false;
            readonly options: {};
        };
        /** Получить список активных стоп-заявок по счёту. */
        readonly getStopOrders: {
            readonly name: "GetStopOrders";
            readonly requestType: {
                encode(message: GetStopOrdersRequest, writer?: _m0.Writer): _m0.Writer;
                decode(input: _m0.Reader | Uint8Array, length?: number): GetStopOrdersRequest;
                fromJSON(object: any): GetStopOrdersRequest;
                toJSON(message: GetStopOrdersRequest): unknown;
            };
            readonly requestStream: false;
            readonly responseType: {
                encode(message: GetStopOrdersResponse, writer?: _m0.Writer): _m0.Writer;
                decode(input: _m0.Reader | Uint8Array, length?: number): GetStopOrdersResponse;
                fromJSON(object: any): GetStopOrdersResponse;
                toJSON(message: GetStopOrdersResponse): unknown;
            };
            readonly responseStream: false;
            readonly options: {};
        };
        /** Отменить стоп-заявку. */
        readonly cancelStopOrder: {
            readonly name: "CancelStopOrder";
            readonly requestType: {
                encode(message: CancelStopOrderRequest, writer?: _m0.Writer): _m0.Writer;
                decode(input: _m0.Reader | Uint8Array, length?: number): CancelStopOrderRequest;
                fromJSON(object: any): CancelStopOrderRequest;
                toJSON(message: CancelStopOrderRequest): unknown;
            };
            readonly requestStream: false;
            readonly responseType: {
                encode(message: CancelStopOrderResponse, writer?: _m0.Writer): _m0.Writer;
                decode(input: _m0.Reader | Uint8Array, length?: number): CancelStopOrderResponse;
                fromJSON(object: any): CancelStopOrderResponse;
                toJSON(message: CancelStopOrderResponse): unknown;
            };
            readonly responseStream: false;
            readonly options: {};
        };
    };
};
export interface StopOrdersServiceImplementation<CallContextExt = {}> {
    /** Выставить стоп-заявку. */
    postStopOrder(request: PostStopOrderRequest, context: CallContext & CallContextExt): Promise<PostStopOrderResponse>;
    /** Получить список активных стоп-заявок по счёту. */
    getStopOrders(request: GetStopOrdersRequest, context: CallContext & CallContextExt): Promise<GetStopOrdersResponse>;
    /** Отменить стоп-заявку. */
    cancelStopOrder(request: CancelStopOrderRequest, context: CallContext & CallContextExt): Promise<CancelStopOrderResponse>;
}
export interface StopOrdersServiceClient<CallOptionsExt = {}> {
    /** Выставить стоп-заявку. */
    postStopOrder(request: PostStopOrderRequest, options?: CallOptions & CallOptionsExt): Promise<PostStopOrderResponse>;
    /** Получить список активных стоп-заявок по счёту. */
    getStopOrders(request: GetStopOrdersRequest, options?: CallOptions & CallOptionsExt): Promise<GetStopOrdersResponse>;
    /** Отменить стоп-заявку. */
    cancelStopOrder(request: CancelStopOrderRequest, options?: CallOptions & CallOptionsExt): Promise<CancelStopOrderResponse>;
}
//# sourceMappingURL=stoporders.d.ts.map